From 6947303755a7a5dddf3222c22b6418c565ef7fa8 Mon Sep 17 00:00:00 2001 From: pelpanagiotis <31746675+pelpanagiotis@users.noreply.github.com> Date: Sun, 19 Apr 2026 23:39:59 +0300 Subject: [PATCH] Commit Needle production dist and nginx-only Docker image - Track Needle/MenuScene/dist and Needle/SampleScene/dist for container deploys - Dockerfile copies pre-built dist (no npm in image); rebuild with npm run build before commit - Fix Needle .gitignore: /assets/ so dist/assets is not ignored - Git LFS: track *.wasm; relax .dockerignore so dist is sent as build context Made-with: Cursor --- .dockerignore | 5 +- .gitattributes | 1 + .gitignore | 2 +- Dockerfile | 28 +- Needle/MenuScene/.gitignore | 4 +- .../assets/GenerateMeshBVHWorker.DMD7ZOpN.js | 1 + .../dist/assets/JsMaterialXCore.B97gKRq_.wasm | 3 + .../dist/assets/JsMaterialXCore.DGnKx6GJ.js | 1 + .../assets/JsMaterialXGenShader.DFP9U7Gu.js | 1 + .../assets/JsMaterialXGenShader.P2pWAaz9.wasm | 3 + .../JsMaterialXGenShader.data.DOxudtll.txt | 29044 ++++++++++++++++ .../JsMaterialXGenShader.data.vJnq-SJK.js | 1 + Needle/MenuScene/dist/assets/MenuScene.glb | 3 + Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js | 1 + .../MenuScene/dist/assets/N8AO.C2WXsanG.js.gz | Bin 0 -> 119 bytes .../dist/assets/favicon.DtN_Fmav.ico | Bin 0 -> 15086 bytes .../assets/generateMeshBVH.worker-BRfdalWV.js | 3574 ++ .../generateMeshBVH.worker-BRfdalWV.js.gz | Bin 0 -> 96965 bytes .../dist/assets/gltf-progressive.BBJGcb3s.js | 5 + .../assets/gltf-progressive.BBJGcb3s.js.gz | Bin 0 -> 13752 bytes .../gltf-progressive.worker-DbINgLUC.js | 3576 ++ .../gltf-progressive.worker-DbINgLUC.js.gz | Bin 0 -> 140931 bytes .../MenuScene/dist/assets/index-CkG2vTVa.js | 2 + .../dist/assets/index-CkG2vTVa.js.gz | Bin 0 -> 1733 bytes .../MenuScene/dist/assets/index.2XwOwFJz.css | 1 + .../dist/assets/index.2XwOwFJz.css.gz | Bin 0 -> 656 bytes .../dist/assets/materialx.CnHmG--Y.js | 150 + .../dist/assets/materialx.CnHmG--Y.js.gz | Bin 0 -> 42394 bytes .../dist/assets/materialx.eMaybKAQ.js | 1 + .../dist/assets/materialx.eMaybKAQ.js.gz | Bin 0 -> 168 bytes .../needle-engine-particles.Bw3zzNt3.js | 1 + .../needle-engine-particles.Bw3zzNt3.js.gz | Bin 0 -> 15291 bytes .../dist/assets/needle-engine-ui.BzyLX9fs.js | 949 + .../assets/needle-engine-ui.BzyLX9fs.js.gz | Bin 0 -> 156629 bytes .../assets/needle-engine-webxr.DQA26K-l.js | 325 + .../assets/needle-engine-webxr.DQA26K-l.js.gz | Bin 0 -> 95875 bytes .../dist/assets/needle-engine.BJP2NBoC.js | 1 + .../dist/assets/needle-engine.BJP2NBoC.js.gz | Bin 0 -> 2125 bytes .../dist/assets/needle-engine.CE4b2dOg.js | 1 + .../dist/assets/needle-engine.D6xdy26G.js | 1 + .../dist/assets/needle-engine.D6xdy26G.js.gz | Bin 0 -> 2824 bytes .../dist/assets/needle-engine.V_YEpsUE.js | 1 + .../dist/assets/needle-engine.V_YEpsUE.js.gz | Bin 0 -> 7318 bytes .../dist/assets/needle-engine.dep.B3nA4wQ5.js | 1 + .../assets/needle-engine.dep.B3nA4wQ5.js.gz | Bin 0 -> 146 bytes .../dist/assets/needle-engine.dep.BzZBR-mM.js | 1 + .../dist/assets/needle-engine.dep.DFJFZC0m.js | 1 + .../assets/needle-engine.dep.DFJFZC0m.js.gz | Bin 0 -> 1473 bytes .../assets/needle-engine.extras.CDv9-f43.js | 54 + .../needle-engine.extras.CDv9-f43.js.gz | Bin 0 -> 11721 bytes .../assets/needle-engine.extras.t1Dx-yNB.js | 80 + .../needle-engine.extras.t1Dx-yNB.js.gz | Bin 0 -> 77870 bytes .../dist/assets/needle-engine@5.0.3.js | 229 + .../dist/assets/needle-engine@5.0.3.js.gz | Bin 0 -> 32233 bytes .../MenuScene/dist/assets/peerjs.UdR1_Ath.js | 78 + .../dist/assets/peerjs.UdR1_Ath.js.gz | Bin 0 -> 35531 bytes .../dist/assets/postprocessing.Wy71DpiM.js | 947 + .../dist/assets/postprocessing.Wy71DpiM.js.gz | Bin 0 -> 111140 bytes .../dist/assets/postprocessing.ao.BRYreHJS.js | 842 + .../assets/postprocessing.ao.BRYreHJS.js.gz | Bin 0 -> 77949 bytes .../dist/assets/rapier3d.DBFmcAzL.js | 1 + .../dist/assets/rapier3d.DBFmcAzL.js.gz | Bin 0 -> 829360 bytes .../dist/assets/register_types.C910Zu9b.js | 41 + .../dist/assets/register_types.C910Zu9b.js.gz | Bin 0 -> 2818 bytes .../dist/assets/rolldown-runtime.CYVBeYYp.js | 1 + .../assets/rolldown-runtime.CYVBeYYp.js.gz | Bin 0 -> 417 bytes .../assets/three-examples.extras@0.169.19.js | 1 + .../three-examples.extras@0.169.19.js.gz | Bin 0 -> 312 bytes .../dist/assets/three-examples@0.169.19.js | 464 + .../dist/assets/three-examples@0.169.19.js.gz | Bin 0 -> 107289 bytes .../dist/assets/three-mesh-bvh.B-oXEGo2.js | 1 + .../dist/assets/three-mesh-bvh.B-oXEGo2.js.gz | Bin 0 -> 17657 bytes .../dist/assets/three-mesh-ui.CgGzZ3ml.js | 406 + .../dist/assets/three-mesh-ui.CgGzZ3ml.js.gz | Bin 0 -> 26682 bytes .../dist/assets/three-quarks.DALdLWPD.js | 1039 + .../dist/assets/three-quarks.DALdLWPD.js.gz | Bin 0 -> 34112 bytes .../MenuScene/dist/assets/three@0.169.19.js | 3864 ++ .../dist/assets/three@0.169.19.js.gz | Bin 0 -> 249564 bytes Needle/MenuScene/dist/include/poster.webp | 3 + Needle/MenuScene/dist/index.html | 69 + Needle/MenuScene/dist/index.html.gz | Bin 0 -> 2748 bytes Needle/MenuScene/dist/needle-app.js | 102 + Needle/MenuScene/dist/needle.buildinfo.json | 1 + Needle/SampleScene/.gitignore | 3 +- Needle/SampleScene/dist/assets/Box.glb | 3 + Needle/SampleScene/dist/assets/Duck.glb | 3 + .../assets/GenerateMeshBVHWorker.DMD7ZOpN.js | 1 + .../dist/assets/JsMaterialXCore.B97gKRq_.wasm | 3 + .../dist/assets/JsMaterialXCore.DGnKx6GJ.js | 1 + .../assets/JsMaterialXGenShader.DFP9U7Gu.js | 1 + .../assets/JsMaterialXGenShader.P2pWAaz9.wasm | 3 + .../JsMaterialXGenShader.data.DOxudtll.txt | 29044 ++++++++++++++++ .../JsMaterialXGenShader.data.vJnq-SJK.js | 1 + .../SampleScene/dist/assets/N8AO.BjEz-iDD.js | 1 + .../dist/assets/N8AO.BjEz-iDD.js.gz | Bin 0 -> 119 bytes .../SampleScene/dist/assets/SampleScene.glb | 3 + .../dist/assets/favicon.DtN_Fmav.ico | Bin 0 -> 15086 bytes .../assets/generateMeshBVH.worker-BRfdalWV.js | 3574 ++ .../generateMeshBVH.worker-BRfdalWV.js.gz | Bin 0 -> 96965 bytes .../dist/assets/gltf-progressive.U_EoiMHF.js | 5 + .../assets/gltf-progressive.U_EoiMHF.js.gz | Bin 0 -> 13752 bytes .../gltf-progressive.worker-DbINgLUC.js | 3576 ++ .../gltf-progressive.worker-DbINgLUC.js.gz | Bin 0 -> 140931 bytes ...0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb | 3 + ...1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb | 3 + .../SampleScene/dist/assets/index-Dng8tdEB.js | 2 + .../dist/assets/index-Dng8tdEB.js.gz | Bin 0 -> 1744 bytes .../dist/assets/index.2XwOwFJz.css | 1 + .../dist/assets/index.2XwOwFJz.css.gz | Bin 0 -> 656 bytes .../dist/assets/materialx.CnHmG--Y.js | 150 + .../dist/assets/materialx.CnHmG--Y.js.gz | Bin 0 -> 42394 bytes .../dist/assets/materialx.eMaybKAQ.js | 1 + .../dist/assets/materialx.eMaybKAQ.js.gz | Bin 0 -> 168 bytes ...0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb | 3 + ...3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb | 3 + ...4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb | 3 + ...5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb | 3 + .../needle-engine-particles.ByRryBGL.js | 1 + .../needle-engine-particles.ByRryBGL.js.gz | Bin 0 -> 15292 bytes .../dist/assets/needle-engine-ui.DC9_O2Mo.js | 949 + .../assets/needle-engine-ui.DC9_O2Mo.js.gz | Bin 0 -> 156633 bytes .../assets/needle-engine-webxr.Cp-vkXLP.js | 325 + .../assets/needle-engine-webxr.Cp-vkXLP.js.gz | Bin 0 -> 95878 bytes .../dist/assets/needle-engine.BJP2NBoC.js | 1 + .../dist/assets/needle-engine.BJP2NBoC.js.gz | Bin 0 -> 2125 bytes .../dist/assets/needle-engine.BlkazeHq.js | 1 + .../dist/assets/needle-engine.BlkazeHq.js.gz | Bin 0 -> 7317 bytes .../dist/assets/needle-engine.CE4b2dOg.js | 1 + .../dist/assets/needle-engine.D6xdy26G.js | 1 + .../dist/assets/needle-engine.D6xdy26G.js.gz | Bin 0 -> 2824 bytes .../dist/assets/needle-engine.dep.B3nA4wQ5.js | 1 + .../assets/needle-engine.dep.B3nA4wQ5.js.gz | Bin 0 -> 146 bytes .../dist/assets/needle-engine.dep.BzZBR-mM.js | 1 + .../dist/assets/needle-engine.dep.DFJFZC0m.js | 1 + .../assets/needle-engine.dep.DFJFZC0m.js.gz | Bin 0 -> 1473 bytes .../assets/needle-engine.extras.ChmId5tE.js | 80 + .../needle-engine.extras.ChmId5tE.js.gz | Bin 0 -> 77879 bytes .../assets/needle-engine.extras.X7Svjxj0.js | 54 + .../needle-engine.extras.X7Svjxj0.js.gz | Bin 0 -> 11720 bytes .../dist/assets/needle-engine@5.0.3.js | 229 + .../dist/assets/needle-engine@5.0.3.js.gz | Bin 0 -> 32242 bytes .../dist/assets/peerjs.UdR1_Ath.js | 78 + .../dist/assets/peerjs.UdR1_Ath.js.gz | Bin 0 -> 35531 bytes .../dist/assets/postprocessing.Wy71DpiM.js | 947 + .../dist/assets/postprocessing.Wy71DpiM.js.gz | Bin 0 -> 111140 bytes .../dist/assets/postprocessing.ao.CBPOoA3d.js | 842 + .../assets/postprocessing.ao.CBPOoA3d.js.gz | Bin 0 -> 77949 bytes .../dist/assets/rapier3d.DBFmcAzL.js | 1 + .../dist/assets/rapier3d.DBFmcAzL.js.gz | Bin 0 -> 829360 bytes .../dist/assets/register_types.OB5V_DGw.js | 41 + .../dist/assets/register_types.OB5V_DGw.js.gz | Bin 0 -> 2791 bytes .../dist/assets/rolldown-runtime.CYVBeYYp.js | 1 + .../assets/rolldown-runtime.CYVBeYYp.js.gz | Bin 0 -> 417 bytes .../assets/three-examples.extras@0.169.19.js | 388 + .../three-examples.extras@0.169.19.js.gz | Bin 0 -> 28538 bytes .../dist/assets/three-examples@0.169.19.js | 77 + .../dist/assets/three-examples@0.169.19.js.gz | Bin 0 -> 79588 bytes .../dist/assets/three-mesh-bvh.B-oXEGo2.js | 1 + .../dist/assets/three-mesh-bvh.B-oXEGo2.js.gz | Bin 0 -> 17657 bytes .../dist/assets/three-mesh-ui.CgGzZ3ml.js | 406 + .../dist/assets/three-mesh-ui.CgGzZ3ml.js.gz | Bin 0 -> 26682 bytes .../dist/assets/three-quarks.DALdLWPD.js | 1039 + .../dist/assets/three-quarks.DALdLWPD.js.gz | Bin 0 -> 34112 bytes .../SampleScene/dist/assets/three@0.169.19.js | 3864 ++ .../dist/assets/three@0.169.19.js.gz | Bin 0 -> 249564 bytes Needle/SampleScene/dist/index.html | 70 + Needle/SampleScene/dist/index.html.gz | Bin 0 -> 2761 bytes Needle/SampleScene/dist/needle-app.js | 102 + Needle/SampleScene/dist/needle.buildinfo.json | 1 + 169 files changed, 91778 insertions(+), 31 deletions(-) create mode 100644 Needle/MenuScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt create mode 100644 Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js create mode 100644 Needle/MenuScene/dist/assets/MenuScene.glb create mode 100644 Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js create mode 100644 Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js.gz create mode 100644 Needle/MenuScene/dist/assets/favicon.DtN_Fmav.ico create mode 100644 Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js create mode 100644 Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz create mode 100644 Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js create mode 100644 Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js.gz create mode 100644 Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js create mode 100644 Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz create mode 100644 Needle/MenuScene/dist/assets/index-CkG2vTVa.js create mode 100644 Needle/MenuScene/dist/assets/index-CkG2vTVa.js.gz create mode 100644 Needle/MenuScene/dist/assets/index.2XwOwFJz.css create mode 100644 Needle/MenuScene/dist/assets/index.2XwOwFJz.css.gz create mode 100644 Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js create mode 100644 Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js.gz create mode 100644 Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js create mode 100644 Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine-particles.Bw3zzNt3.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine-particles.Bw3zzNt3.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.BJP2NBoC.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.BJP2NBoC.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.CE4b2dOg.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.dep.BzZBR-mM.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.extras.CDv9-f43.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.extras.CDv9-f43.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js.gz create mode 100644 Needle/MenuScene/dist/assets/needle-engine@5.0.3.js create mode 100644 Needle/MenuScene/dist/assets/needle-engine@5.0.3.js.gz create mode 100644 Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js create mode 100644 Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js.gz create mode 100644 Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js create mode 100644 Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js.gz create mode 100644 Needle/MenuScene/dist/assets/postprocessing.ao.BRYreHJS.js create mode 100644 Needle/MenuScene/dist/assets/postprocessing.ao.BRYreHJS.js.gz create mode 100644 Needle/MenuScene/dist/assets/rapier3d.DBFmcAzL.js create mode 100644 Needle/MenuScene/dist/assets/rapier3d.DBFmcAzL.js.gz create mode 100644 Needle/MenuScene/dist/assets/register_types.C910Zu9b.js create mode 100644 Needle/MenuScene/dist/assets/register_types.C910Zu9b.js.gz create mode 100644 Needle/MenuScene/dist/assets/rolldown-runtime.CYVBeYYp.js create mode 100644 Needle/MenuScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz create mode 100644 Needle/MenuScene/dist/assets/three-examples.extras@0.169.19.js create mode 100644 Needle/MenuScene/dist/assets/three-examples.extras@0.169.19.js.gz create mode 100644 Needle/MenuScene/dist/assets/three-examples@0.169.19.js create mode 100644 Needle/MenuScene/dist/assets/three-examples@0.169.19.js.gz create mode 100644 Needle/MenuScene/dist/assets/three-mesh-bvh.B-oXEGo2.js create mode 100644 Needle/MenuScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz create mode 100644 Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js create mode 100644 Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz create mode 100644 Needle/MenuScene/dist/assets/three-quarks.DALdLWPD.js create mode 100644 Needle/MenuScene/dist/assets/three-quarks.DALdLWPD.js.gz create mode 100644 Needle/MenuScene/dist/assets/three@0.169.19.js create mode 100644 Needle/MenuScene/dist/assets/three@0.169.19.js.gz create mode 100644 Needle/MenuScene/dist/include/poster.webp create mode 100644 Needle/MenuScene/dist/index.html create mode 100644 Needle/MenuScene/dist/index.html.gz create mode 100644 Needle/MenuScene/dist/needle-app.js create mode 100644 Needle/MenuScene/dist/needle.buildinfo.json create mode 100644 Needle/SampleScene/dist/assets/Box.glb create mode 100644 Needle/SampleScene/dist/assets/Duck.glb create mode 100644 Needle/SampleScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt create mode 100644 Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js create mode 100644 Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js create mode 100644 Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js.gz create mode 100644 Needle/SampleScene/dist/assets/SampleScene.glb create mode 100644 Needle/SampleScene/dist/assets/favicon.DtN_Fmav.ico create mode 100644 Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js create mode 100644 Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz create mode 100644 Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js create mode 100644 Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js.gz create mode 100644 Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js create mode 100644 Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz create mode 100644 Needle/SampleScene/dist/assets/image_0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb create mode 100644 Needle/SampleScene/dist/assets/image_1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb create mode 100644 Needle/SampleScene/dist/assets/index-Dng8tdEB.js create mode 100644 Needle/SampleScene/dist/assets/index-Dng8tdEB.js.gz create mode 100644 Needle/SampleScene/dist/assets/index.2XwOwFJz.css create mode 100644 Needle/SampleScene/dist/assets/index.2XwOwFJz.css.gz create mode 100644 Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js create mode 100644 Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js.gz create mode 100644 Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js create mode 100644 Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js.gz create mode 100644 Needle/SampleScene/dist/assets/mesh_lod_0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb create mode 100644 Needle/SampleScene/dist/assets/mesh_lod_3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb create mode 100644 Needle/SampleScene/dist/assets/mesh_lod_4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb create mode 100644 Needle/SampleScene/dist/assets/mesh_lod_5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb create mode 100644 Needle/SampleScene/dist/assets/needle-engine-particles.ByRryBGL.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine-particles.ByRryBGL.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine-webxr.Cp-vkXLP.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine-webxr.Cp-vkXLP.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.CE4b2dOg.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.D6xdy26G.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.D6xdy26G.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.dep.BzZBR-mM.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.extras.ChmId5tE.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.extras.ChmId5tE.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine.extras.X7Svjxj0.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine.extras.X7Svjxj0.js.gz create mode 100644 Needle/SampleScene/dist/assets/needle-engine@5.0.3.js create mode 100644 Needle/SampleScene/dist/assets/needle-engine@5.0.3.js.gz create mode 100644 Needle/SampleScene/dist/assets/peerjs.UdR1_Ath.js create mode 100644 Needle/SampleScene/dist/assets/peerjs.UdR1_Ath.js.gz create mode 100644 Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js create mode 100644 Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js.gz create mode 100644 Needle/SampleScene/dist/assets/postprocessing.ao.CBPOoA3d.js create mode 100644 Needle/SampleScene/dist/assets/postprocessing.ao.CBPOoA3d.js.gz create mode 100644 Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js create mode 100644 Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js.gz create mode 100644 Needle/SampleScene/dist/assets/register_types.OB5V_DGw.js create mode 100644 Needle/SampleScene/dist/assets/register_types.OB5V_DGw.js.gz create mode 100644 Needle/SampleScene/dist/assets/rolldown-runtime.CYVBeYYp.js create mode 100644 Needle/SampleScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz create mode 100644 Needle/SampleScene/dist/assets/three-examples.extras@0.169.19.js create mode 100644 Needle/SampleScene/dist/assets/three-examples.extras@0.169.19.js.gz create mode 100644 Needle/SampleScene/dist/assets/three-examples@0.169.19.js create mode 100644 Needle/SampleScene/dist/assets/three-examples@0.169.19.js.gz create mode 100644 Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js create mode 100644 Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz create mode 100644 Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js create mode 100644 Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz create mode 100644 Needle/SampleScene/dist/assets/three-quarks.DALdLWPD.js create mode 100644 Needle/SampleScene/dist/assets/three-quarks.DALdLWPD.js.gz create mode 100644 Needle/SampleScene/dist/assets/three@0.169.19.js create mode 100644 Needle/SampleScene/dist/assets/three@0.169.19.js.gz create mode 100644 Needle/SampleScene/dist/index.html create mode 100644 Needle/SampleScene/dist/index.html.gz create mode 100644 Needle/SampleScene/dist/needle-app.js create mode 100644 Needle/SampleScene/dist/needle.buildinfo.json diff --git a/.dockerignore b/.dockerignore index 822395b..5c7bfad 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,12 +14,9 @@ MemoryCaptures/ Recordings/ obj/ -# Host-side Node (reinstalled in container) +# Host-side Node (not needed when image serves pre-built dist) **/node_modules/ -# Build output (rebuilt in container) -**/Needle/*/dist/ - # OS .DS_Store Thumbs.db diff --git a/.gitattributes b/.gitattributes index 40b64e5..d329233 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,3 +9,4 @@ *.wav filter=lfs diff=lfs merge=lfs -text *.mp3 filter=lfs diff=lfs merge=lfs -text *.ogg filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index a7000fb..b47e05b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,7 @@ # Node / Needle web builds **/node_modules/ -Needle/**/dist/ +# Needle/*/dist/ is committed for Docker (rebuild with npm run build before commit) # OS .DS_Store diff --git a/Dockerfile b/Dockerfile index e1a56fa..cd1dd86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,13 @@ -# Needle Engine web export (Vite) → static nginx -# -# Prerequisites before `docker build`: -# - Export your scene from Unity so Needle/MenuScene (or SampleScene) contains: -# - src/generated/ (gen.js, register_types, etc.) -# - assets/ with your .glb and any files the Vite build copies -# - `npm run build` should succeed locally for the same NEEDLE_APP. -# -# Build needs network: Needle's build may verify license against needle.tools. - -FROM node:22-alpine AS build -WORKDIR /build +# Serves pre-built Needle/Vite output from the repo (Needle//dist). +# Build locally first: cd Needle/MenuScene && npm run build +# Optional: Needle/SampleScene && npm run build (for compose profile "sample") ARG NEEDLE_APP=MenuScene -ENV NEEDLE_APP=${NEEDLE_APP} -COPY Needle/${NEEDLE_APP}/package.json Needle/${NEEDLE_APP}/package-lock.json ./ -RUN npm ci +FROM nginx:1.27-alpine -COPY Needle/${NEEDLE_APP}/ ./ - -RUN npm run build - -FROM nginx:1.27-alpine AS runtime - -COPY --from=build /build/dist /usr/share/nginx/html +ARG NEEDLE_APP +COPY Needle/${NEEDLE_APP}/dist /usr/share/nginx/html COPY docker/nginx-default.conf /etc/nginx/conf.d/default.conf EXPOSE 80 diff --git a/Needle/MenuScene/.gitignore b/Needle/MenuScene/.gitignore index edf636f..db2367c 100644 --- a/Needle/MenuScene/.gitignore +++ b/Needle/MenuScene/.gitignore @@ -1,7 +1,7 @@ **/node_modules -assets/ +# Only ignore exported Unity assets at project root, not dist/assets/ +/assets/ src/generated/ -dist/ include/draco/ include/ktx2/ include/three/ diff --git a/Needle/MenuScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js b/Needle/MenuScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js new file mode 100644 index 0000000..8c29bc6 --- /dev/null +++ b/Needle/MenuScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js @@ -0,0 +1 @@ +import{t as e}from"./needle-engine@5.0.3.js";export{e as GenerateMeshBVHWorker}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm b/Needle/MenuScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm new file mode 100644 index 0000000..10361d6 --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b0d149adcb290fac326c754c878a5d8389b2fe7e6c5dbaf22129b2e83673762 +size 1410873 diff --git a/Needle/MenuScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js b/Needle/MenuScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js new file mode 100644 index 0000000..217251c --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js @@ -0,0 +1 @@ +import{u as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js new file mode 100644 index 0000000..5fc3226 --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js @@ -0,0 +1 @@ +import{c as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm new file mode 100644 index 0000000..773dbb5 --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09adab7b142ea4dc768ac40b7947a5eac5c7556a50dbf60281db9c11d555a98e +size 2564784 diff --git a/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt new file mode 100644 index 0000000..6ce8341 --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt @@ -0,0 +1,29044 @@ +if(MATERIALX_BUILD_DATA_LIBRARY) + # Build generated products from the MaterialX data library. + # Initially, this step is a simple copy across folders, but our intent + # is for it to include meaningful work in the future. + + set(DATA_LIBRARY_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/DataLibraryBuild) + + file(GLOB_RECURSE MATERIALX_DATA_LIBRARY_SOURCE_FILES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + LIST_DIRECTORIES false + *.mtlx + *.md + *.glsl + *.osl + *.h + *.metal) + + foreach(SOURCE_FILE IN LISTS MATERIALX_DATA_LIBRARY_SOURCE_FILES) + set(SOURCE_FILEPATH ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}) + set(DEST_FILEPATH ${DATA_LIBRARY_BUILD_DIR}/${SOURCE_FILE}) + add_custom_command( + OUTPUT ${DEST_FILEPATH} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} + DEPENDS ${SOURCE_FILEPATH}) + list(APPEND MATERIALX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) + endforeach() + + add_custom_target(MaterialXBuildData ALL + DEPENDS ${MATERIALX_DATA_LIBRARY_BUILD_FILES}) + + set(DATA_LIBRARY_DIR ${DATA_LIBRARY_BUILD_DIR}) +else() + set(DATA_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +endif() + +if(NOT SKBUILD) + install(DIRECTORY ${DATA_LIBRARY_DIR}/ + DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}" + PATTERN "CMakeLists.txt" EXCLUDE) +endif() + +if(MATERIALX_BUILD_PYTHON) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${MATERIALX_PYTHON_FOLDER_NAME}/${MATERIALX_INSTALL_STDLIB_PATH}") + if(SKBUILD) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${SKBUILD_PLATLIB_DIR}/MaterialX/libraries") + endif() + + install(DIRECTORY ${DATA_LIBRARY_DIR}/ + DESTINATION "${MATERIALX_PYTHON_LIBRARIES_PATH}" + PATTERN "CMakeLists.txt" EXCLUDE) +endif() + +set(MATERIALX_DATA_LIBRARY_DIR ${DATA_LIBRARY_DIR} PARENT_SCOPE) +# MaterialX Data Libraries + +This folder contains the standard data libraries for MaterialX, providing declarations and graph definitions for the MaterialX nodes, and source code for all supported shader generators. + +## Standard Pattern Library +- [stdlib](stdlib) + - [stdlib_defs.mtlx](stdlib/stdlib_defs.mtlx) : Nodedef declarations. + - [stdlib_ng.mtlx](stdlib/stdlib_ng.mtlx) : Nodegraph definitions. + - [genglsl](stdlib/genglsl): GLSL language support. + - [lib](stdlib/genglsl/lib) : Shader utility files. + - [stdlib_genglsl_impl.mtlx](stdlib/genglsl/stdlib_genglsl_impl.mtlx) : Mapping from declarations to implementations. + - [genosl](stdlib/genosl): OSL language support. + - [lib](stdlib/genosl/lib) : Shader utility files. + - [stdlib_genosl_impl.mtlx](stdlib/genosl/stdlib_genosl_impl.mtlx) : Mapping from declarations to implementations. + - [genmdl](stdlib/genmdl): MDL language support. + - [stdlib_genmdl_impl.mtlx](stdlib/genmdl/stdlib_genmdl_impl.mtlx) : Mapping from declarations to implementations. + - Additional MaterialX support libraries for MDL are located in the [source/MaterialXGenMdl/mdl/materialx](../source/MaterialXGenMdl/mdl/materialx) package folder + - [genmsl](stdlib/genmsl): MSL language support. + - [lib](stdlib/genmsl/lib) : Shader utility files. + - [stdlib_genmsl_impl.mtlx](stdlib/genmsl/stdlib_genmsl_impl.mtlx) : Mapping from declarations to implementations. + +## Physically Based Shading Library +- [pbrlib](pbrlib) + - [pbrlib_defs.mtlx](pbrlib/pbrlib_defs.mtlx) : Nodedef declarations. + - [pbrlib_ng.mtlx](pbrlib/pbrlib_ng.mtlx) : Nodegraph definitions. + - [genglsl](pbrlib/genglsl) : GLSL language support + - [lib](pbrlib/genglsl/lib) : Shader utility files. + - [pbrlib_genglsl_impl.mtlx](pbrlib/genglsl/pbrlib_genglsl_impl.mtlx) : Mapping from declarations to implementations. + - [genosl](pbrlib/genosl) : OSL language support + - [lib](pbrlib/genosl/lib) : Shader utility files. + - [pbrlib_genosl_impl.mtlx](pbrlib/genosl/pbrlib_genosl_impl.mtlx) : Mapping from declarations to implementations. + - [genmdl](pbrlib/genmdl) : MDL language support + - [pbrlib_genmdl_impl.mtlx](pbrlib/genmdl/pbrlib_genmdl_impl.mtlx) : Mapping from declarations to implementations. + - [genmsl](pbrlib/genmsl) : MSL language support + - [pbrlib_genmsl_impl.mtlx](pbrlib/genmsl/pbrlib_genmsl_impl.mtlx) : Mapping from declarations to implementations. + +## BxDF Graph Library +- [bxdf](bxdf) + - [standard_surface.mtlx](bxdf/standard_surface.mtlx) : Graph definition of the [Autodesk Standard Surface](https://autodesk.github.io/standard-surface/) shading model. + - [gltf_pbr.mtlx](bxdf/gltf_pbr.mtlx) : Graph definition of the [glTF PBR](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#appendix-b-brdf-implementation) shading model. + - [usd_preview_surface.mtlx](bxdf/usd_preview_surface.mtlx) : Graph definition of the [UsdPreviewSurface](https://openusd.org/release/spec_usdpreviewsurface.html) shading model. + - [lama](bxdf/lama) : Graph definitions of the [MaterialX Lama](https://rmanwiki.pixar.com/display/REN24/MaterialX+Lama) node set. + +## Color Management Library +- MaterialX shader generation natively supports a small set of common spaces for input colors, with all color transforms implemented as language-independent MaterialX graphs.The canonical definitions of these color transforms may be found in the OpenColorIO configuration for [ACES 1.2](https://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.2-config/aces_1.2). + - lin_rec709 + - g18_rec709 + - g22_rec709 + - rec709_display + - acescg (lin_ap1) + - g22_ap1 + - srgb_texture + - lin_adobergb + - adobergb + - srgb_displayp3 + - lin_displayp3 +- [cmlib](cmlib) + - [cmlib_defs.mtlx](cmlib/cmlib_defs.mtlx) : Nodedef declarations. + - [cmlib_ng.mtlx](cmlib/cmlib_ng.mtlx) : Nodegraph definitions. + +## Target Definitions +- Each target implementation requires a target definition for declaration / implementation correspondence to work. +- The [targets](targets) folder contains definition files for the following core targets: + - GLSL : `genglsl` + - OSL : `genosl` + - MDL : `genmdl` + - MSL : `genmsl` +- Any additional target files should be added under this folder and loaded in as required. + +### Target Support +- GLSL target support is for version 4.0 or higher. +- OSL target support is for version 1.12.6 or higher. +- MDL target support is for version 1.6 or higher. +- Basic GLSL and MSL `lightshader` node definitions and implementations are provided for the following light types: + - point, directional, spot +- Shader generation does not currently support: + - `displacementshader` and `volumeshader` nodes for hardware shading targets (GLSL, MSL). + - `hextiledimage` and `hextilednormalmap` for OSL and MDL. + - `blur` the implementation passes through `in` unmodified in all shading languages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void mx_directional_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = -light.direction; + result.intensity = light.color * light.intensity; +} +void mx_point_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; +} +void mx_spot_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; + float low = min(light.inner_angle, light.outer_angle); + float high = light.inner_angle; + float cosDir = dot(result.direction, -light.direction); + float spotAttenuation = smoothstep(low, high, cosDir); + result.intensity *= spotAttenuation; +} + + + + + + + + + + + + + +void mx_directional_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = -light.direction; + result.intensity = light.color * light.intensity; +} +void mx_point_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; +} +void mx_spot_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; + float low = min(light.inner_angle, light.outer_angle); + float high = light.inner_angle; + float cosDir = dot(result.direction, -light.direction); + float spotAttenuation = smoothstep(low, high, cosDir); + result.intensity *= spotAttenuation; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// These are defined based on the HwShaderGenerator::ClosureContextType enum +// if that changes - these need to be updated accordingly. + +#define CLOSURE_TYPE_DEFAULT 0 +#define CLOSURE_TYPE_REFLECTION 1 +#define CLOSURE_TYPE_TRANSMISSION 2 +#define CLOSURE_TYPE_INDIRECT 3 +#define CLOSURE_TYPE_EMISSION 4 + +struct ClosureData { + int closureType; + vec3 L; + vec3 V; + vec3 N; + vec3 P; + float occlusion; +}; +#include "mx_microfacet_specular.glsl" + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd) +{ + // Generate tangent frame. + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + mat3 tangentToWorld = mat3(X, Y, N); + + // Transform the view vector to tangent space. + V = vec3(dot(V, X), dot(V, Y), dot(V, N)); + + // Compute derived properties. + float NdotV = clamp(V.z, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(alpha); + float G1V = mx_ggx_smith_G1(NdotV, avgAlpha); + + // Integrate outgoing radiance using filtered importance sampling. + // http://cgg.mff.cuni.cz/~jaroslav/papers/2008-egsr-fis/2008-egsr-fis-final-embedded.pdf + vec3 radiance = vec3(0.0); + int envRadianceSamples = $envRadianceSamples; + for (int i = 0; i < envRadianceSamples; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, envRadianceSamples); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, alpha); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, H, fd.ior.x) : -reflect(V, H); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + // Sample the environment light from the given direction. + vec3 Lw = tangentToWorld * L; + float pdf = mx_ggx_NDF(H, alpha) * G1V / (4.0 * NdotV); + float lod = mx_latlong_compute_lod(Lw, pdf, float($envRadianceMips - 1), envRadianceSamples); + vec3 sampleColor = mx_latlong_map_lookup(Lw, $envMatrix, lod, $envRadiance); + + // Compute the Fresnel term. + vec3 F = mx_compute_fresnel(VdotH, fd); + + // Compute the geometric term. + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + // Compute the combined FG term, which simplifies to inverted Fresnel for refraction. + vec3 FG = fd.refraction ? vec3(1.0) - F : F * G; + + // Add the radiance contribution of this sample. + // From https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf + // incidentLight = sampleColor * NdotL + // microfacetSpecular = D * F * G / (4 * NdotL * NdotV) + // pdf = D * G1V / (4 * NdotV); + // radiance = incidentLight * microfacetSpecular / pdf + radiance += sampleColor * FG; + } + + // Apply the global component of the geometric term and normalize. + radiance /= G1V * float(envRadianceSamples); + + // Return the final radiance. + return radiance * $envLightIntensity; +} + +vec3 mx_environment_irradiance(vec3 N) +{ + vec3 Li = mx_latlong_map_lookup(N, $envMatrix, 0.0, $envIrradiance); + return Li * $envLightIntensity; +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 roughness, int distribution, FresnelData fd) +{ + return vec3(0.0); +} + +vec3 mx_environment_irradiance(vec3 N) +{ + return vec3(0.0); +} +#include "mx_microfacet_specular.glsl" + +// Return the mip level associated with the given alpha in a prefiltered environment. +float mx_latlong_alpha_to_lod(float alpha) +{ + float lodBias = (alpha < 0.25) ? sqrt(alpha) : 0.5 * alpha + 0.375; + return lodBias * float($envRadianceMips - 1); +} + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd) +{ + N = mx_forward_facing_normal(N, V); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, N, fd.ior.x) : -reflect(V, N); + + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + float avgAlpha = mx_average_alpha(alpha); + vec3 F = mx_compute_fresnel(NdotV, fd); + float G = mx_ggx_smith_G2(NdotV, NdotV, avgAlpha); + vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G; + + vec3 Li = mx_latlong_map_lookup(L, $envMatrix, mx_latlong_alpha_to_lod(avgAlpha), $envRadiance); + return Li * FG * $envLightIntensity; +} + +vec3 mx_environment_irradiance(vec3 N) +{ + vec3 Li = mx_latlong_map_lookup(N, $envMatrix, 0.0, $envIrradiance); + return Li * $envLightIntensity; +} +#include "mx_microfacet_sheen.glsl" +#include "mx_microfacet_specular.glsl" + +vec3 mx_generate_dir_albedo_table() +{ + vec2 uv = gl_FragCoord.xy / $albedoTableSize; + vec2 ggxDirAlbedo = mx_ggx_dir_albedo(uv.x, uv.y, vec3(1, 0, 0), vec3(0, 1, 0)).xy; + float sheenDirAlbedo = mx_imageworks_sheen_dir_albedo(uv.x, uv.y); + return vec3(ggxDirAlbedo, sheenDirAlbedo); +} +#include "mx_microfacet_specular.glsl" + +// Return the alpha associated with the given mip level in a prefiltered environment. +float mx_latlong_lod_to_alpha(float lod) +{ + float lodBias = lod / float($envRadianceMips - 1); + return (lodBias < 0.5) ? mx_square(lodBias) : 2.0 * (lodBias - 0.375); +} + +// The inverse of mx_latlong_projection. +vec3 mx_latlong_map_projection_inverse(vec2 uv) +{ + float latitude = (uv.y - 0.5) * M_PI; + float longitude = (uv.x - 0.5) * M_PI * 2.0; + + float x = -mx_cos(latitude) * mx_sin(longitude); + float y = -mx_sin(latitude); + float z = mx_cos(latitude) * mx_cos(longitude); + + return vec3(x, y, z); +} + +vec3 mx_generate_prefilter_env() +{ + // The tangent view vector is aligned with the normal. + vec3 V = vec3(0.0, 0.0, 1.0); + float NdotV = 1.0; + + // Compute derived properties. + vec2 uv = gl_FragCoord.xy * pow(2.0, $envPrefilterMip) / vec2(textureSize($envRadianceSampler2D, 0)); + vec3 worldN = mx_latlong_map_projection_inverse(uv); + mat3 tangentToWorld = mx_orthonormal_basis(worldN); + float alpha = mx_latlong_lod_to_alpha(float($envPrefilterMip)); + float G1V = mx_ggx_smith_G1(NdotV, alpha); + + // Integrate the LD term for the given environment and alpha. + vec3 radiance = vec3(0.0, 0.0, 0.0); + float weight = 0.0; + int envRadianceSamples = 1024; + for (int i = 0; i < envRadianceSamples; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, envRadianceSamples); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, vec2(alpha)); + vec3 L = -V + 2.0 * H.z * H; + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + + // Compute the geometric term. + float G = mx_ggx_smith_G2(NdotL, NdotV, alpha); + + // Sample the environment light from the given direction. + vec3 Lw = tangentToWorld * L; + float pdf = mx_ggx_NDF(H, vec2(alpha)) * G1V / (4.0 * NdotV); + float lod = mx_latlong_compute_lod(Lw, pdf, float($envRadianceMips - 1), envRadianceSamples); + vec3 sampleColor = mx_latlong_map_lookup(Lw, $envMatrix, lod, $envRadiance); + + // Add the radiance contribution of this sample. + radiance += G * sampleColor; + weight += G; + } + + return radiance / weight; +} +#define M_PI 3.1415926535897932 +#define M_PI_INV (1.0 / M_PI) + +float mx_pow5(float x) +{ + return mx_square(mx_square(x)) * x; +} + +float mx_pow6(float x) +{ + float x2 = mx_square(x); + return mx_square(x2) * x2; +} + +// Standard Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} + +// Generalized Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0, float F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0, vec3 F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} + +// Generalized Schlick Fresnel with a variable exponent +float mx_fresnel_schlick(float cosTheta, float F0, float F90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(F0, F90, pow(x, exponent)); +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0, vec3 F90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(F0, F90, pow(x, exponent)); +} + +// Enforce that the given normal is forward-facing from the specified view direction. +vec3 mx_forward_facing_normal(vec3 N, vec3 V) +{ + return (dot(N, V) < 0.0) ? -N : N; +} + +// https://www.graphics.rwth-aachen.de/publication/2/jgt.pdf +float mx_golden_ratio_sequence(int i) +{ + const float GOLDEN_RATIO = 1.6180339887498948; + return fract((float(i) + 1.0) * GOLDEN_RATIO); +} + +// https://people.irisa.fr/Ricardo.Marques/articles/2013/SF_CGF.pdf +vec2 mx_spherical_fibonacci(int i, int numSamples) +{ + return vec2((float(i) + 0.5) / float(numSamples), mx_golden_ratio_sequence(i)); +} + +// Generate a uniform-weighted sample on the unit hemisphere. +vec3 mx_uniform_sample_hemisphere(vec2 Xi) +{ + float phi = 2.0 * M_PI * Xi.x; + float cosTheta = 1.0 - Xi.y; + float sinTheta = sqrt(1.0 - mx_square(cosTheta)); + return vec3(mx_cos(phi) * sinTheta, + mx_sin(phi) * sinTheta, + cosTheta); +} + +// Generate a cosine-weighted sample on the unit hemisphere. +vec3 mx_cosine_sample_hemisphere(vec2 Xi) +{ + float phi = 2.0 * M_PI * Xi.x; + float cosTheta = sqrt(Xi.y); + float sinTheta = sqrt(1.0 - Xi.y); + return vec3(mx_cos(phi) * sinTheta, + mx_sin(phi) * sinTheta, + cosTheta); +} + +// Construct an orthonormal basis from a unit vector. +// https://graphics.pixar.com/library/OrthonormalB/paper.pdf +mat3 mx_orthonormal_basis(vec3 N) +{ + float sign = (N.z < 0.0) ? -1.0 : 1.0; + float a = -1.0 / (sign + N.z); + float b = N.x * N.y * a; + vec3 X = vec3(1.0 + sign * N.x * N.x * a, sign * b, -sign * N.x); + vec3 Y = vec3(b, sign + N.y * N.y * a, -N.y); + return mat3(X, Y, N); +} +#include "mx_microfacet.glsl" + +const float FUJII_CONSTANT_1 = 0.5 - 2.0 / (3.0 * M_PI); +const float FUJII_CONSTANT_2 = 2.0 / 3.0 - 28.0 / (15.0 * M_PI); + +// Qualitative Oren-Nayar diffuse with simplified math: +// https://www1.cs.columbia.edu/CAVE/publications/pdfs/Oren_SIGGRAPH94.pdf +float mx_oren_nayar_diffuse(float NdotV, float NdotL, float LdotV, float roughness) +{ + float s = LdotV - NdotL * NdotV; + float stinv = (s > 0.0) ? s / max(NdotL, NdotV) : 0.0; + + float sigma2 = mx_square(roughness); + float A = 1.0 - 0.5 * (sigma2 / (sigma2 + 0.33)); + float B = 0.45 * sigma2 / (sigma2 + 0.09); + + return A + B * stinv; +} + +// Rational quadratic fit to Monte Carlo data for Oren-Nayar directional albedo. +float mx_oren_nayar_diffuse_dir_albedo_analytic(float NdotV, float roughness) +{ + vec2 r = vec2(1.0, 1.0) + + vec2(-0.4297, -0.6076) * roughness + + vec2(-0.7632, -0.4993) * NdotV * roughness + + vec2(1.4385, 2.0315) * mx_square(roughness); + return r.x / r.y; +} + +float mx_oren_nayar_diffuse_dir_albedo_table_lookup(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + return texture($albedoTable, vec2(NdotV, roughness)).b; + } +#endif + return 0.0; +} + +float mx_oren_nayar_diffuse_dir_albedo_monte_carlo(float NdotV, float roughness) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0 - mx_square(NdotV)), 0, NdotV); + + float radiance = 0.0; + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the incoming light direction. + vec3 L = mx_uniform_sample_hemisphere(Xi); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float LdotV = clamp(dot(L, V), M_FLOAT_EPS, 1.0); + + // Compute diffuse reflectance. + float reflectance = mx_oren_nayar_diffuse(NdotV, NdotL, LdotV, roughness); + + // Add the radiance contribution of this sample. + // uniform_pdf = 1 / (2 * PI) + // radiance = (reflectance * NdotL) / (uniform_pdf * PI); + radiance += reflectance * NdotL; + } + + // Apply global components and normalize. + radiance *= 2.0 / float(SAMPLE_COUNT); + + // Return the final directional albedo. + return radiance; +} + +float mx_oren_nayar_diffuse_dir_albedo(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 2 + float dirAlbedo = mx_oren_nayar_diffuse_dir_albedo_monte_carlo(NdotV, roughness); +#else + float dirAlbedo = mx_oren_nayar_diffuse_dir_albedo_analytic(NdotV, roughness); +#endif + return clamp(dirAlbedo, 0.0, 1.0); +} + +// Improved Oren-Nayar diffuse from Fujii: +// https://mimosa-pudica.net/improved-oren-nayar.html +float mx_oren_nayar_fujii_diffuse_dir_albedo(float cosTheta, float roughness) +{ + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + float B = roughness * A; + float Si = sqrt(max(0.0, 1.0 - mx_square(cosTheta))); + float G = Si * (mx_acos(clamp(cosTheta, -1.0, 1.0)) - Si * cosTheta) + + 2.0 * ((Si / cosTheta) * (1.0 - Si * Si * Si) - Si) / 3.0; + return A + (B * G * M_PI_INV); +} + +float mx_oren_nayar_fujii_diffuse_avg_albedo(float roughness) +{ + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + return A * (1.0 + FUJII_CONSTANT_2 * roughness); +} + +// Energy-compensated Oren-Nayar diffuse from OpenPBR Surface: +// https://academysoftwarefoundation.github.io/OpenPBR/ +vec3 mx_oren_nayar_compensated_diffuse(float NdotV, float NdotL, float LdotV, float roughness, vec3 color) +{ + float s = LdotV - NdotL * NdotV; + float stinv = (s > 0.0) ? s / max(NdotL, NdotV) : s; + + // Compute the single-scatter lobe. + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + vec3 lobeSingleScatter = color * A * (1.0 + roughness * stinv); + + // Compute the multi-scatter lobe. + float dirAlbedoV = mx_oren_nayar_fujii_diffuse_dir_albedo(NdotV, roughness); + float dirAlbedoL = mx_oren_nayar_fujii_diffuse_dir_albedo(NdotL, roughness); + float avgAlbedo = mx_oren_nayar_fujii_diffuse_avg_albedo(roughness); + vec3 colorMultiScatter = mx_square(color) * avgAlbedo / + (vec3(1.0) - color * max(0.0, 1.0 - avgAlbedo)); + vec3 lobeMultiScatter = colorMultiScatter * + max(M_FLOAT_EPS, 1.0 - dirAlbedoV) * + max(M_FLOAT_EPS, 1.0 - dirAlbedoL) / + max(M_FLOAT_EPS, 1.0 - avgAlbedo); + + // Return the sum. + return lobeSingleScatter + lobeMultiScatter; +} + +vec3 mx_oren_nayar_compensated_diffuse_dir_albedo(float cosTheta, float roughness, vec3 color) +{ + float dirAlbedo = mx_oren_nayar_fujii_diffuse_dir_albedo(cosTheta, roughness); + float avgAlbedo = mx_oren_nayar_fujii_diffuse_avg_albedo(roughness); + vec3 colorMultiScatter = mx_square(color) * avgAlbedo / + (vec3(1.0) - color * max(0.0, 1.0 - avgAlbedo)); + return mix(colorMultiScatter, color, dirAlbedo); +} + +// https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf +// Section 5.3 +float mx_burley_diffuse(float NdotV, float NdotL, float LdotH, float roughness) +{ + float F90 = 0.5 + (2.0 * roughness * mx_square(LdotH)); + float refL = mx_fresnel_schlick(NdotL, 1.0, F90); + float refV = mx_fresnel_schlick(NdotV, 1.0, F90); + return refL * refV; +} + +// Compute the directional albedo component of Burley diffuse for the given +// view angle and roughness. Curve fit provided by Stephen Hill. +float mx_burley_diffuse_dir_albedo(float NdotV, float roughness) +{ + float x = NdotV; + float fit0 = 0.97619 - 0.488095 * mx_pow5(1.0 - x); + float fit1 = 1.55754 + (-2.02221 + (2.56283 - 1.06244 * x) * x) * x; + return mix(fit0, fit1, roughness); +} + +// Evaluate the Burley diffusion profile for the given distance and diffusion shape. +// Based on https://graphics.pixar.com/library/ApproxBSSRDF/ +vec3 mx_burley_diffusion_profile(float dist, vec3 shape) +{ + vec3 num1 = exp(-shape * dist); + vec3 num2 = exp(-shape * dist / 3.0); + float denom = max(dist, M_FLOAT_EPS); + return (num1 + num2) / denom; +} + +// Integrate the Burley diffusion profile over a sphere of the given radius. +// Inspired by Eric Penner's presentation in http://advances.realtimerendering.com/s2011/ +vec3 mx_integrate_burley_diffusion(vec3 N, vec3 L, float radius, vec3 mfp) +{ + float theta = mx_acos(dot(N, L)); + + // Estimate the Burley diffusion shape from mean free path. + vec3 shape = vec3(1.0) / max(mfp, 0.1); + + // Integrate the profile over the sphere. + vec3 sumD = vec3(0.0); + vec3 sumR = vec3(0.0); + const int SAMPLE_COUNT = 32; + const float SAMPLE_WIDTH = (2.0 * M_PI) / float(SAMPLE_COUNT); + for (int i = 0; i < SAMPLE_COUNT; i++) + { + float x = -M_PI + (float(i) + 0.5) * SAMPLE_WIDTH; + float dist = radius * abs(2.0 * mx_sin(x * 0.5)); + vec3 R = mx_burley_diffusion_profile(dist, shape); + sumD += R * max(mx_cos(theta + x), 0.0); + sumR += R; + } + + return sumD / sumR; +} + +vec3 mx_subsurface_scattering_approx(vec3 N, vec3 L, vec3 P, vec3 albedo, vec3 mfp) +{ + float curvature = length(fwidth(N)) / length(fwidth(P)); + float radius = 1.0 / max(curvature, 0.01); + return albedo * mx_integrate_burley_diffusion(N, L, radius, mfp) / vec3(M_PI); +} +#include "mx_microfacet.glsl" + +// https://fpsunflower.github.io/ckulla/data/s2017_pbs_imageworks_sheen.pdf +// Equation 2 +float mx_imageworks_sheen_NDF(float NdotH, float roughness) +{ + float invRoughness = 1.0 / max(roughness, 0.005); + float cos2 = NdotH * NdotH; + float sin2 = 1.0 - cos2; + return (2.0 + invRoughness) * pow(sin2, invRoughness * 0.5) / (2.0 * M_PI); +} + +float mx_imageworks_sheen_brdf(float NdotL, float NdotV, float NdotH, float roughness) +{ + // Microfacet distribution. + float D = mx_imageworks_sheen_NDF(NdotH, roughness); + + // Fresnel and geometry terms are ignored. + float F = 1.0; + float G = 1.0; + + // We use a smoother denominator, as in: + // https://blog.selfshadow.com/publications/s2013-shading-course/rad/s2013_pbs_rad_notes.pdf + return D * F * G / (4.0 * (NdotL + NdotV - NdotL*NdotV)); +} + +// Rational quadratic fit to Monte Carlo data for Imageworks sheen directional albedo. +float mx_imageworks_sheen_dir_albedo_analytic(float NdotV, float roughness) +{ + vec2 r = vec2(13.67300, 1.0) + + vec2(-68.78018, 61.57746) * NdotV + + vec2(799.08825, 442.78211) * roughness + + vec2(-905.00061, 2597.49308) * NdotV * roughness + + vec2(60.28956, 121.81241) * mx_square(NdotV) + + vec2(1086.96473, 3045.55075) * mx_square(roughness); + return r.x / r.y; +} + +float mx_imageworks_sheen_dir_albedo_table_lookup(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + return texture($albedoTable, vec2(NdotV, roughness)).b; + } +#endif + return 0.0; +} + +float mx_imageworks_sheen_dir_albedo_monte_carlo(float NdotV, float roughness) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0f - mx_square(NdotV)), 0, NdotV); + + float radiance = 0.0; + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the incoming light direction and half vector. + vec3 L = mx_uniform_sample_hemisphere(Xi); + vec3 H = normalize(L + V); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float NdotH = clamp(H.z, M_FLOAT_EPS, 1.0); + + // Compute sheen reflectance. + float reflectance = mx_imageworks_sheen_brdf(NdotL, NdotV, NdotH, roughness); + + // Add the radiance contribution of this sample. + // uniform_pdf = 1 / (2 * PI) + // radiance = reflectance * NdotL / uniform_pdf; + radiance += reflectance * NdotL * 2.0 * M_PI; + } + + // Return the final directional albedo. + return radiance / float(SAMPLE_COUNT); +} + +float mx_imageworks_sheen_dir_albedo(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 0 + float dirAlbedo = mx_imageworks_sheen_dir_albedo_analytic(NdotV, roughness); +#elif DIRECTIONAL_ALBEDO_METHOD == 1 + float dirAlbedo = mx_imageworks_sheen_dir_albedo_table_lookup(NdotV, roughness); +#else + float dirAlbedo = mx_imageworks_sheen_dir_albedo_monte_carlo(NdotV, roughness); +#endif + return clamp(dirAlbedo, 0.0, 1.0); +} + +// The following functions are adapted from https://github.com/tizian/ltc-sheen. +// "Practical Multiple-Scattering Sheen Using Linearly Transformed Cosines", Zeltner et al. + +// Gaussian fit to directional albedo table. +float mx_zeltner_sheen_dir_albedo(float x, float y) +{ + float s = y*(0.0206607 + 1.58491*y)/(0.0379424 + y*(1.32227 + y)); + float m = y*(-0.193854 + y*(-1.14885 + y*(1.7932 - 0.95943*y*y)))/(0.046391 + y); + float o = y*(0.000654023 + (-0.0207818 + 0.119681*y)*y)/(1.26264 + y*(-1.92021 + y)); + return exp(-0.5*mx_square((x - m)/s))/(s*sqrt(2.0*M_PI)) + o; +} + +// Rational fits to LTC matrix coefficients. +float mx_zeltner_sheen_ltc_aInv(float x, float y) +{ + return (2.58126*x + 0.813703*y)*y/(1.0 + 0.310327*x*x + 2.60994*x*y); +} + +float mx_zeltner_sheen_ltc_bInv(float x, float y) +{ + return sqrt(1.0 - x)*(y - 1.0)*y*y*y/(0.0000254053 + 1.71228*x - 1.71506*x*y + 1.34174*y*y); +} + +// V and N are assumed to be unit vectors. +mat3 mx_orthonormal_basis_ltc(vec3 V, vec3 N, float NdotV) +{ + // Generate a tangent vector in the plane of V and N. + // This required to correctly orient the LTC lobe. + vec3 X = V - N*NdotV; + float lenSqr = dot(X, X); + if (lenSqr > 0.0) + { + X *= mx_inversesqrt(lenSqr); + vec3 Y = cross(N, X); + return mat3(X, Y, N); + } + + // If lenSqr == 0, then V == N, so any orthonormal basis will do. + return mx_orthonormal_basis(N); +} + +// Multiplication by directional albedo is handled by the calling function. +float mx_zeltner_sheen_brdf(vec3 L, vec3 V, vec3 N, float NdotV, float roughness) +{ + mat3 toLTC = transpose(mx_orthonormal_basis_ltc(V, N, NdotV)); + vec3 w = toLTC * L; + + float aInv = mx_zeltner_sheen_ltc_aInv(NdotV, roughness); + float bInv = mx_zeltner_sheen_ltc_bInv(NdotV, roughness); + + // Transform w to original configuration (clamped cosine). + // |aInv 0 bInv| + // wo = M^-1 . w = | 0 aInv 0| . w + // | 0 0 1| + vec3 wo = vec3(aInv*w.x + bInv*w.z, aInv * w.y, w.z); + float lenSqr = dot(wo, wo); + + // D(w) = Do(M^-1.w / ||M^-1.w||) . |M^-1| / ||M^-1.w||^3 + // = Do(M^-1.w) . |M^-1| / ||M^-1.w||^4 + // = Do(wo) . |M^-1| / dot(wo, wo)^2 + // = Do(wo) . aInv^2 / dot(wo, wo)^2 + // = Do(wo) . (aInv / dot(wo, wo))^2 + return max(wo.z, 0.0) * M_PI_INV * mx_square(aInv / lenSqr); +} + +vec3 mx_zeltner_sheen_importance_sample(vec2 Xi, vec3 V, vec3 N, float roughness, out float pdf) +{ + float NdotV = clamp(dot(N, V), 0.0, 1.0); + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + + vec3 wo = mx_cosine_sample_hemisphere(Xi); + + float aInv = mx_zeltner_sheen_ltc_aInv(NdotV, roughness); + float bInv = mx_zeltner_sheen_ltc_bInv(NdotV, roughness); + + // Transform wo from original configuration (clamped cosine). + // |1/aInv 0 -bInv/aInv| + // w = M . wo = | 0 1/aInv 0| . wo + // | 0 0 1| + vec3 w = vec3(wo.x/aInv - wo.z*bInv/aInv, wo.y / aInv, wo.z); + + float lenSqr = dot(w, w); + w *= mx_inversesqrt(lenSqr); + + // D(w) = Do(wo) . ||M.wo||^3 / |M| + // = Do(wo / ||M.wo||) . ||M.wo||^4 / |M| + // = Do(w) . ||M.wo||^4 / |M| (possible because M doesn't change z component) + // = Do(w) . dot(w, w)^2 * aInv^2 + // = Do(w) . (aInv * dot(w, w))^2 + pdf = max(w.z, 0.0) * M_PI_INV * mx_square(aInv * lenSqr); + + mat3 fromLTC = mx_orthonormal_basis_ltc(V, N, NdotV); + w = fromLTC * w; + + return w; +} +#include "mx_microfacet.glsl" + +const int FRESNEL_MODEL_DIELECTRIC = 0; +const int FRESNEL_MODEL_CONDUCTOR = 1; +const int FRESNEL_MODEL_SCHLICK = 2; + +// Parameters for Fresnel calculations +struct FresnelData +{ + // Fresnel model + int model; + bool airy; + + // Physical Fresnel + vec3 ior; + vec3 extinction; + + // Generalized Schlick Fresnel + vec3 F0; + vec3 F82; + vec3 F90; + float exponent; + + // Thin film + float tf_thickness; + float tf_ior; + + // Refraction + bool refraction; +}; + +// https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf +// Appendix B.2 Equation 13 +float mx_ggx_NDF(vec3 H, vec2 alpha) +{ + vec2 He = H.xy / alpha; + float denom = dot(He, He) + mx_square(H.z); + return 1.0 / (M_PI * alpha.x * alpha.y * mx_square(denom)); +} + +// https://ggx-research.github.io/publication/2023/06/09/publication-ggx.html +vec3 mx_ggx_importance_sample_VNDF(vec2 Xi, vec3 V, vec2 alpha) +{ + // Transform the view direction to the hemisphere configuration. + V = normalize(vec3(V.xy * alpha, V.z)); + + // Sample a spherical cap in (-V.z, 1]. + float phi = 2.0 * M_PI * Xi.x; + float z = (1.0 - Xi.y) * (1.0 + V.z) - V.z; + float sinTheta = sqrt(clamp(1.0 - z * z, 0.0, 1.0)); + float x = sinTheta * mx_cos(phi); + float y = sinTheta * mx_sin(phi); + vec3 c = vec3(x, y, z); + + // Compute the microfacet normal. + vec3 H = c + V; + + // Transform the microfacet normal back to the ellipsoid configuration. + H = normalize(vec3(H.xy * alpha, max(H.z, 0.0))); + + return H; +} + +// https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf +// Equation 34 +float mx_ggx_smith_G1(float cosTheta, float alpha) +{ + float cosTheta2 = mx_square(cosTheta); + float tanTheta2 = (1.0 - cosTheta2) / cosTheta2; + return 2.0 / (1.0 + sqrt(1.0 + mx_square(alpha) * tanTheta2)); +} + +// Height-correlated Smith masking-shadowing +// http://jcgt.org/published/0003/02/03/paper.pdf +// Equations 72 and 99 +float mx_ggx_smith_G2(float NdotL, float NdotV, float alpha) +{ + float alpha2 = mx_square(alpha); + float lambdaL = sqrt(alpha2 + (1.0 - alpha2) * mx_square(NdotL)); + float lambdaV = sqrt(alpha2 + (1.0 - alpha2) * mx_square(NdotV)); + return 2.0 * NdotL * NdotV / (lambdaL * NdotV + lambdaV * NdotL); +} + +// Rational quadratic fit to Monte Carlo data for GGX directional albedo. +vec3 mx_ggx_dir_albedo_analytic(float NdotV, float alpha, vec3 F0, vec3 F90) +{ + float x = NdotV; + float y = alpha; + float x2 = mx_square(x); + float y2 = mx_square(y); + vec4 r = vec4(0.1003, 0.9345, 1.0, 1.0) + + vec4(-0.6303, -2.323, -1.765, 0.2281) * x + + vec4(9.748, 2.229, 8.263, 15.94) * y + + vec4(-2.038, -3.748, 11.53, -55.83) * x * y + + vec4(29.34, 1.424, 28.96, 13.08) * x2 + + vec4(-8.245, -0.7684, -7.507, 41.26) * y2 + + vec4(-26.44, 1.436, -36.11, 54.9) * x2 * y + + vec4(19.99, 0.2913, 15.86, 300.2) * x * y2 + + vec4(-5.448, 0.6286, 33.37, -285.1) * x2 * y2; + vec2 AB = clamp(r.xy / r.zw, 0.0, 1.0); + return F0 * AB.x + F90 * AB.y; +} + +vec3 mx_ggx_dir_albedo_table_lookup(float NdotV, float alpha, vec3 F0, vec3 F90) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + vec2 AB = texture($albedoTable, vec2(NdotV, alpha)).rg; + return F0 * AB.x + F90 * AB.y; + } +#endif + return vec3(0.0); +} + +// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf +vec3 mx_ggx_dir_albedo_monte_carlo(float NdotV, float alpha, vec3 F0, vec3 F90) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0 - mx_square(NdotV)), 0, NdotV); + + vec2 AB = vec2(0.0); + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, vec2(alpha)); + vec3 L = -reflect(V, H); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + // Compute the Fresnel term. + float Fc = mx_fresnel_schlick(VdotH, 0.0, 1.0); + + // Compute the per-sample geometric term. + // https://hal.inria.fr/hal-00996995v2/document, Algorithm 2 + float G2 = mx_ggx_smith_G2(NdotL, NdotV, alpha); + + // Add the contribution of this sample. + AB += vec2(G2 * (1.0 - Fc), G2 * Fc); + } + + // Apply the global component of the geometric term and normalize. + AB /= mx_ggx_smith_G1(NdotV, alpha) * float(SAMPLE_COUNT); + + // Return the final directional albedo. + return F0 * AB.x + F90 * AB.y; +} + +vec3 mx_ggx_dir_albedo(float NdotV, float alpha, vec3 F0, vec3 F90) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 0 + return mx_ggx_dir_albedo_analytic(NdotV, alpha, F0, F90); +#elif DIRECTIONAL_ALBEDO_METHOD == 1 + return mx_ggx_dir_albedo_table_lookup(NdotV, alpha, F0, F90); +#else + return mx_ggx_dir_albedo_monte_carlo(NdotV, alpha, F0, F90); +#endif +} + +float mx_ggx_dir_albedo(float NdotV, float alpha, float F0, float F90) +{ + return mx_ggx_dir_albedo(NdotV, alpha, vec3(F0), vec3(F90)).x; +} + +// https://blog.selfshadow.com/publications/turquin/ms_comp_final.pdf +// Equations 14 and 16 +vec3 mx_ggx_energy_compensation(float NdotV, float alpha, vec3 Fss) +{ + float Ess = mx_ggx_dir_albedo(NdotV, alpha, 1.0, 1.0); + return 1.0 + Fss * (1.0 - Ess) / Ess; +} + +float mx_ggx_energy_compensation(float NdotV, float alpha, float Fss) +{ + return mx_ggx_energy_compensation(NdotV, alpha, vec3(Fss)).x; +} + +// Compute the average of an anisotropic alpha pair. +float mx_average_alpha(vec2 alpha) +{ + return sqrt(alpha.x * alpha.y); +} + +// Convert a real-valued index of refraction to normal-incidence reflectivity. +float mx_ior_to_f0(float ior) +{ + return mx_square((ior - 1.0) / (ior + 1.0)); +} + +// Convert normal-incidence reflectivity to real-valued index of refraction. +float mx_f0_to_ior(float F0) +{ + float sqrtF0 = sqrt(clamp(F0, 0.01, 0.99)); + return (1.0 + sqrtF0) / (1.0 - sqrtF0); +} +vec3 mx_f0_to_ior(vec3 F0) +{ + vec3 sqrtF0 = sqrt(clamp(F0, 0.01, 0.99)); + return (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0); +} + +// https://renderwonk.com/publications/wp-generalization-adobe/gen-adobe.pdf +vec3 mx_fresnel_hoffman_schlick(float cosTheta, FresnelData fd) +{ + const float COS_THETA_MAX = 1.0 / 7.0; + const float COS_THETA_FACTOR = 1.0 / (COS_THETA_MAX * pow(1.0 - COS_THETA_MAX, 6.0)); + + float x = clamp(cosTheta, 0.0, 1.0); + vec3 a = mix(fd.F0, fd.F90, pow(1.0 - COS_THETA_MAX, fd.exponent)) * (vec3(1.0) - fd.F82) * COS_THETA_FACTOR; + return mix(fd.F0, fd.F90, pow(1.0 - x, fd.exponent)) - a * x * mx_pow6(1.0 - x); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +float mx_fresnel_dielectric(float cosTheta, float ior) +{ + float c = cosTheta; + float g2 = ior*ior + c*c - 1.0; + if (g2 < 0.0) + { + // Total internal reflection + return 1.0; + } + + float g = sqrt(g2); + return 0.5 * mx_square((g - c) / (g + c)) * + (1.0 + mx_square(((g + c) * c - 1.0) / ((g - c) * c + 1.0))); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +vec2 mx_fresnel_dielectric_polarized(float cosTheta, float ior) +{ + float cosTheta2 = mx_square(clamp(cosTheta, 0.0, 1.0)); + float sinTheta2 = 1.0 - cosTheta2; + + float t0 = max(ior * ior - sinTheta2, 0.0); + float t1 = t0 + cosTheta2; + float t2 = 2.0 * sqrt(t0) * cosTheta; + float Rs = (t1 - t2) / (t1 + t2); + + float t3 = cosTheta2 * t0 + sinTheta2 * sinTheta2; + float t4 = t2 * sinTheta2; + float Rp = Rs * (t3 - t4) / (t3 + t4); + + return vec2(Rp, Rs); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +void mx_fresnel_conductor_polarized(float cosTheta, vec3 n, vec3 k, out vec3 Rp, out vec3 Rs) +{ + float cosTheta2 = mx_square(clamp(cosTheta, 0.0, 1.0)); + float sinTheta2 = 1.0 - cosTheta2; + vec3 n2 = n * n; + vec3 k2 = k * k; + + vec3 t0 = n2 - k2 - vec3(sinTheta2); + vec3 a2plusb2 = sqrt(t0 * t0 + 4.0 * n2 * k2); + vec3 t1 = a2plusb2 + vec3(cosTheta2); + vec3 a = sqrt(max(0.5 * (a2plusb2 + t0), 0.0)); + vec3 t2 = 2.0 * a * cosTheta; + Rs = (t1 - t2) / (t1 + t2); + + vec3 t3 = cosTheta2 * a2plusb2 + vec3(sinTheta2 * sinTheta2); + vec3 t4 = t2 * sinTheta2; + Rp = Rs * (t3 - t4) / (t3 + t4); +} + +vec3 mx_fresnel_conductor(float cosTheta, vec3 n, vec3 k) +{ + vec3 Rp, Rs; + mx_fresnel_conductor_polarized(cosTheta, n, k, Rp, Rs); + return 0.5 * (Rp + Rs); +} + +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +void mx_fresnel_conductor_phase_polarized(float cosTheta, float eta1, vec3 eta2, vec3 kappa2, out vec3 phiP, out vec3 phiS) +{ + vec3 k2 = kappa2 / eta2; + vec3 sinThetaSqr = vec3(1.0) - cosTheta * cosTheta; + vec3 A = eta2*eta2*(vec3(1.0)-k2*k2) - eta1*eta1*sinThetaSqr; + vec3 B = sqrt(A*A + mx_square(2.0*eta2*eta2*k2)); + vec3 U = sqrt((A+B)/2.0); + vec3 V = max(vec3(0.0), sqrt((B-A)/2.0)); + + phiS = mx_atan(2.0*eta1*V*cosTheta, U*U + V*V - mx_square(eta1*cosTheta)); + phiP = mx_atan(2.0*eta1*eta2*eta2*cosTheta * (2.0*k2*U - (vec3(1.0)-k2*k2) * V), + mx_square(eta2*eta2*(vec3(1.0)+k2*k2)*cosTheta) - eta1*eta1*(U*U+V*V)); +} + +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +vec3 mx_eval_sensitivity(float opd, vec3 shift) +{ + // Use Gaussian fits, given by 3 parameters: val, pos and var + float phase = 2.0*M_PI * opd; + vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13); + vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06); + vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09); + vec3 xyz = val * sqrt(2.0*M_PI * var) * mx_cos(pos * phase + shift) * exp(- var * phase*phase); + xyz.x += 9.7470e-14 * sqrt(2.0*M_PI * 4.5282e+09) * mx_cos(2.2399e+06 * phase + shift[0]) * exp(- 4.5282e+09 * phase*phase); + return xyz / 1.0685e-7; +} + +// A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +vec3 mx_fresnel_airy(float cosTheta, FresnelData fd) +{ + // XYZ to CIE 1931 RGB color space (using neutral E illuminant) + const mat3 XYZ_TO_RGB = mat3(2.3706743, -0.5138850, 0.0052982, -0.9000405, 1.4253036, -0.0146949, -0.4706338, 0.0885814, 1.0093968); + + // Assume vacuum on the outside + float eta1 = 1.0; + float eta2 = max(fd.tf_ior, eta1); + vec3 eta3 = (fd.model == FRESNEL_MODEL_SCHLICK) ? mx_f0_to_ior(fd.F0) : fd.ior; + vec3 kappa3 = (fd.model == FRESNEL_MODEL_SCHLICK) ? vec3(0.0) : fd.extinction; + float cosThetaT = sqrt(1.0 - (1.0 - mx_square(cosTheta)) * mx_square(eta1 / eta2)); + + // First interface + vec2 R12 = mx_fresnel_dielectric_polarized(cosTheta, eta2 / eta1); + if (cosThetaT <= 0.0) + { + // Total internal reflection + R12 = vec2(1.0); + } + vec2 T121 = vec2(1.0) - R12; + + // Second interface + vec3 R23p, R23s; + if (fd.model == FRESNEL_MODEL_SCHLICK) + { + vec3 f = mx_fresnel_hoffman_schlick(cosThetaT, fd); + R23p = 0.5 * f; + R23s = 0.5 * f; + } + else + { + mx_fresnel_conductor_polarized(cosThetaT, eta3 / eta2, kappa3 / eta2, R23p, R23s); + } + + // Phase shift + float cosB = mx_cos(mx_atan(eta2 / eta1)); + vec2 phi21 = vec2(cosTheta < cosB ? 0.0 : M_PI, M_PI); + vec3 phi23p, phi23s; + if (fd.model == FRESNEL_MODEL_SCHLICK) + { + phi23p = vec3((eta3[0] < eta2) ? M_PI : 0.0, + (eta3[1] < eta2) ? M_PI : 0.0, + (eta3[2] < eta2) ? M_PI : 0.0); + phi23s = phi23p; + } + else + { + mx_fresnel_conductor_phase_polarized(cosThetaT, eta2, eta3, kappa3, phi23p, phi23s); + } + vec3 r123p = max(sqrt(R12.x*R23p), 0.0); + vec3 r123s = max(sqrt(R12.y*R23s), 0.0); + + // Iridescence term + vec3 I = vec3(0.0); + vec3 Cm, Sm; + + // Optical path difference + float distMeters = fd.tf_thickness * 1.0e-9; + float opd = 2.0 * eta2 * cosThetaT * distMeters; + + // Iridescence term using spectral antialiasing for Parallel polarization + + // Reflectance term for m=0 (DC term amplitude) + vec3 Rs = (mx_square(T121.x) * R23p) / (vec3(1.0) - R12.x*R23p); + I += R12.x + Rs; + + // Reflectance term for m>0 (pairs of diracs) + Cm = Rs - T121.x; + for (int m=1; m<=2; m++) + { + Cm *= r123p; + Sm = 2.0 * mx_eval_sensitivity(float(m) * opd, float(m)*(phi23p+vec3(phi21.x))); + I += Cm*Sm; + } + + // Iridescence term using spectral antialiasing for Perpendicular polarization + + // Reflectance term for m=0 (DC term amplitude) + vec3 Rp = (mx_square(T121.y) * R23s) / (vec3(1.0) - R12.y*R23s); + I += R12.y + Rp; + + // Reflectance term for m>0 (pairs of diracs) + Cm = Rp - T121.y; + for (int m=1; m<=2; m++) + { + Cm *= r123s; + Sm = 2.0 * mx_eval_sensitivity(float(m) * opd, float(m)*(phi23s+vec3(phi21.y))); + I += Cm*Sm; + } + + // Average parallel and perpendicular polarization + I *= 0.5; + + // Convert back to RGB reflectance + I = clamp(XYZ_TO_RGB * I, 0.0, 1.0); + + return I; +} + +FresnelData mx_init_fresnel_dielectric(float ior, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_DIELECTRIC; + fd.airy = tf_thickness > 0.0; + fd.ior = vec3(ior); + fd.extinction = vec3(0.0); + fd.F0 = vec3(0.0); + fd.F82 = vec3(0.0); + fd.F90 = vec3(0.0); + fd.exponent = 0.0; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +FresnelData mx_init_fresnel_conductor(vec3 ior, vec3 extinction, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_CONDUCTOR; + fd.airy = tf_thickness > 0.0; + fd.ior = ior; + fd.extinction = extinction; + fd.F0 = vec3(0.0); + fd.F82 = vec3(0.0); + fd.F90 = vec3(0.0); + fd.exponent = 0.0; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +FresnelData mx_init_fresnel_schlick(vec3 F0, vec3 F82, vec3 F90, float exponent, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_SCHLICK; + fd.airy = tf_thickness > 0.0; + fd.ior = vec3(0.0); + fd.extinction = vec3(0.0); + fd.F0 = F0; + fd.F82 = F82; + fd.F90 = F90; + fd.exponent = exponent; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +vec3 mx_compute_fresnel(float cosTheta, FresnelData fd) +{ + if (fd.airy) + { + return mx_fresnel_airy(cosTheta, fd); + } + else if (fd.model == FRESNEL_MODEL_DIELECTRIC) + { + return vec3(mx_fresnel_dielectric(cosTheta, fd.ior.x)); + } + else if (fd.model == FRESNEL_MODEL_CONDUCTOR) + { + return mx_fresnel_conductor(cosTheta, fd.ior, fd.extinction); + } + else + { + return mx_fresnel_hoffman_schlick(cosTheta, fd); + } +} + +// Compute the refraction of a ray through a solid sphere. +vec3 mx_refraction_solid_sphere(vec3 R, vec3 N, float ior) +{ + R = refract(R, N, 1.0 / ior); + vec3 N1 = normalize(R * dot(R, N) - N * 0.5); + return refract(R, N1, ior); +} + +vec2 mx_latlong_projection(vec3 dir) +{ + float latitude = -mx_asin(dir.y) * M_PI_INV + 0.5; + float longitude = mx_atan(dir.x, -dir.z) * M_PI_INV * 0.5 + 0.5; + return vec2(longitude, latitude); +} + +vec3 mx_latlong_map_lookup(vec3 dir, mat4 transform, float lod, $texSamplerSignature) +{ + vec3 envDir = normalize((transform * vec4(dir,0.0)).xyz); + vec2 uv = mx_latlong_projection(envDir); + return textureLod($texSamplerSampler2D, uv, lod).rgb; +} + +// Return the mip level with the appropriate coverage for a filtered importance sample. +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch20.html +// Section 20.4 Equation 13 +float mx_latlong_compute_lod(vec3 dir, float pdf, float maxMipLevel, int envSamples) +{ + const float MIP_LEVEL_OFFSET = 1.5; + float effectiveMaxMipLevel = maxMipLevel - MIP_LEVEL_OFFSET; + float distortion = sqrt(1.0 - mx_square(dir.y)); + return max(effectiveMaxMipLevel - 0.5 * log2(float(envSamples) * pdf * distortion), 0.0); +} +// https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps +float mx_variance_shadow_occlusion(vec2 moments, float fragmentDepth) +{ + const float MIN_VARIANCE = 0.00001; + + // One-tailed inequality valid if fragmentDepth > moments.x. + float p = (fragmentDepth <= moments.x) ? 1.0 : 0.0; + + // Compute variance. + float variance = moments.y - mx_square(moments.x); + variance = max(variance, MIN_VARIANCE); + + // Compute probabilistic upper bound. + float d = fragmentDepth - moments.x; + float pMax = variance / (variance + mx_square(d)); + return max(p, pMax); +} + +vec2 mx_compute_depth_moments() +{ + float depth = gl_FragCoord.z; + return vec2(depth, mx_square(depth)); +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_surface_transmission(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd, vec3 tint) +{ + return tint; +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_surface_transmission(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd, vec3 tint) +{ + // Approximate the appearance of surface transmission as glossy + // environment map refraction, ignoring any scene geometry that might + // be visible through the surface. + fd.refraction = true; + if ($refractionTwoSided) + { + tint = mx_square(tint); + } + return mx_environment_radiance(N, V, X, alpha, distribution, fd) * tint; +} +#include "lib/mx_closure_type.glsl" + +void mx_add_bsdf(ClosureData closureData, BSDF in1, BSDF in2, out BSDF result) +{ + result.response = in1.response + in2.response; + + // We derive the throughput for closure addition as follows: + // throughput_1 = 1 - dir_albedo_1 + // throughput_2 = 1 - dir_albedo_2 + // throughput_sum = 1 - (dir_albedo_1 + dir_albedo_2) + // = 1 - ((1 - throughput_1) + (1 - throughput_2)) + // = throughput_1 + throughput_2 - 1 + result.throughput = max(in1.throughput + in2.throughput - 1.0, 0.0); +} +#include "lib/mx_closure_type.glsl" + +void mx_add_edf(ClosureData closureData, EDF in1, EDF in2, out EDF result) +{ + result = in1 + in2; +} +#include "lib/mx_closure_type.glsl" + +void mx_anisotropic_vdf(ClosureData closureData, vec3 absorption, vec3 scattering, float anisotropy, inout BSDF bsdf) +{ + // TODO: Add some approximation for volumetric light absorption. +} +void mx_artistic_ior(vec3 reflectivity, vec3 edge_color, out vec3 ior, out vec3 extinction) +{ + // "Artist Friendly Metallic Fresnel", Ole Gulbrandsen, 2014 + // http://jcgt.org/published/0003/04/03/paper.pdf + + vec3 r = clamp(reflectivity, 0.0, 0.99); + vec3 r_sqrt = sqrt(r); + vec3 n_min = (1.0 - r) / (1.0 + r); + vec3 n_max = (1.0 + r_sqrt) / (1.0 - r_sqrt); + ior = mix(n_max, n_min, edge_color); + + vec3 np1 = ior + 1.0; + vec3 nm1 = ior - 1.0; + vec3 k2 = (np1*np1 * r - nm1*nm1) / (1.0 - r); + k2 = max(k2, 0.0); + extinction = sqrt(k2); +} +/// XYZ to Rec.709 RGB colorspace conversion +const mat3 XYZ_to_RGB = mat3( 3.2406, -0.9689, 0.0557, + -1.5372, 1.8758, -0.2040, + -0.4986, 0.0415, 1.0570); + +void mx_blackbody(float temperatureKelvin, out vec3 colorValue) +{ + float xc, yc; + float t, t2, t3, xc2, xc3; + + // if value outside valid range of approximation clamp to accepted temperature range + temperatureKelvin = clamp(temperatureKelvin, 1667.0, 25000.0); + + t = 1000.0 / temperatureKelvin; + t2 = t * t; + t3 = t * t * t; + + // Cubic spline approximation for Kelvin temperature to sRGB conversion + // (https://en.wikipedia.org/wiki/Planckian_locus#Approximation) + if (temperatureKelvin < 4000.0) { // 1667K <= temperatureKelvin < 4000K + xc = -0.2661239 * t3 - 0.2343580 * t2 + 0.8776956 * t + 0.179910; + } + else { // 4000K <= temperatureKelvin <= 25000K + xc = -3.0258469 * t3 + 2.1070379 * t2 + 0.2226347 * t + 0.240390; + } + xc2 = xc * xc; + xc3 = xc * xc * xc; + + if (temperatureKelvin < 2222.0) { // 1667K <= temperatureKelvin < 2222K + yc = -1.1063814 * xc3 - 1.34811020 * xc2 + 2.18555832 * xc - 0.20219683; + } + else if (temperatureKelvin < 4000.0) { // 2222K <= temperatureKelvin < 4000K + yc = -0.9549476 * xc3 - 1.37418593 * xc2 + 2.09137015 * xc - 0.16748867; + } + else { // 4000K <= temperatureKelvin <= 25000K + yc = 3.0817580 * xc3 - 5.87338670 * xc2 + 3.75112997 * xc - 0.37001483; + } + + if (yc <= 0.0) { // avoid division by zero + colorValue = vec3(1.0); + return; + } + + vec3 XYZ = vec3(xc / yc, 1.0, (1.0 - xc - yc) / yc); + + colorValue = XYZ_to_RGB * XYZ; + colorValue = max(colorValue, vec3(0.0)); +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_burley_diffuse_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float LdotH = clamp(dot(L, normalize(L + V)), M_FLOAT_EPS, 1.0); + + bsdf.response = color * closureData.occlusion * weight * NdotL * M_PI_INV; + bsdf.response *= mx_burley_diffuse(NdotV, NdotL, LdotH, roughness); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 Li = mx_environment_irradiance(N) * + mx_burley_diffuse_dir_albedo(NdotV, roughness); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +// https://eugenedeon.com/pdfs/egsrhair.pdf +void mx_deon_hair_absorption_from_melanin( + float melanin_concentration, + float melanin_redness, + // constants converted to color via exp(-c). the defaults are lin_rec709 colors, they may be + // transformed to scene-linear rendering color space. + vec3 eumelanin_color, // default: (0.657704, 0.498077, 0.254106) == exp(-(0.419, 0.697, 1.37)) + vec3 pheomelanin_color, // default: (0.829443, 0.670320, 0.349937) == exp(-(0.187, 0.4, 1.05)) + out vec3 absorption) +{ + float melanin = -log(max(1.0 - melanin_concentration, 0.0001)); + float eumelanin = melanin * (1.0 - melanin_redness); + float pheomelanin = melanin * melanin_redness; + absorption = max( + eumelanin * -log(eumelanin_color) + pheomelanin * -log(pheomelanin_color), + vec3(0.0) + ); +} + +// https://media.disneyanimation.com/uploads/production/publication_asset/152/asset/eurographics2016Fur_Smaller.pdf +void mx_chiang_hair_absorption_from_color(vec3 color, float betaN, out vec3 absorption) +{ + float b2 = betaN* betaN; + float b4 = b2 * b2; + float b_fac = + 5.969 - + (0.215 * betaN) + + (2.532 * b2) - + (10.73 * b2 * betaN) + + (5.574 * b4) + + (0.245 * b4 * betaN); + vec3 sigma = log(min(max(color, 0.001), vec3(1.0))) / b_fac; + absorption = sigma * sigma; +} + +void mx_chiang_hair_roughness( + float longitudinal, + float azimuthal, + float scale_TT, // empirical roughness scale from Marschner et al. (2003). + float scale_TRT, // default: scale_TT = 0.5, scale_TRT = 2.0 + out vec2 roughness_R, + out vec2 roughness_TT, + out vec2 roughness_TRT +) +{ + float lr = clamp(longitudinal, 0.001, 1.0); + float ar = clamp(azimuthal, 0.001, 1.0); + + // longitudinal variance + float v = 0.726 * lr + 0.812 * lr * lr + 3.7 * pow(lr, 20.0); + v = v * v; + + float s = 0.265 * ar + 1.194 * ar * ar + 5.372 * pow(ar, 22.0); + + roughness_R = vec2(v, s); + roughness_TT = vec2(v * scale_TT * scale_TT, s); + roughness_TRT = vec2(v * scale_TRT * scale_TRT, s); +} + +float mx_hair_transform_sin_cos(float x) +{ + return sqrt(max(1.0 - x * x, 0.0)); +} + +float mx_hair_I0(float x) +{ + float v = 1.0; + float n = 1.0; + float d = 1.0; + float f = 1.0; + float x2 = x * x; + for (int i = 0; i < 9 ; ++i) + { + d *= 4.0 * (f * f); + n *= x2; + v += n / d; + f += 1.0; + } + return v; +} + +float mx_hair_log_I0(float x) +{ + if (x > 12.0) + return x + 0.5 * (-log(2.0 * M_PI) + log(1.0 / x) + 1.0 / (8.0 * x)); + else + return log(mx_hair_I0(x)); +} + +float mx_hair_logistic(float x, float s) +{ + if (x > 0.0) + x = -x; + float f = exp(x / s); + return f / (s * (1.0 + f) * (1.0 + f)); +} + +float mx_hair_logistic_cdf(float x, float s) +{ + return 1.0 / (1.0 + exp(-x / s)); +} + +float mx_hair_trimmed_logistic(float x, float s, float a, float b) +{ + // the constant can be found in Chiang et al. (2016) Appendix A, eq. (12) + s *= 0.626657; // sqrt(M_PI/8) + return mx_hair_logistic(x, s) / (mx_hair_logistic_cdf(b, s) - mx_hair_logistic_cdf(a, s)); +} + +float mx_hair_phi(int p, float gammaO, float gammaT) +{ + float fP = float(p); + return 2.0 * fP * gammaT - 2.0 * gammaO + fP * M_PI; +} + +float mx_hair_longitudinal_scattering( // Mp + float sinThetaI, + float cosThetaI, + float sinThetaO, + float cosThetaO, + float v +) +{ + float inv_v = 1.0 / v; + float a = cosThetaO * cosThetaI * inv_v; + float b = sinThetaO * sinThetaI * inv_v; + if (v < 0.1) + return exp(mx_hair_log_I0(a) - b - inv_v + 0.6931 + log(0.5 * inv_v)); + else + return ((exp(-b) * mx_hair_I0(a)) / (2.0 * v * sinh(inv_v))); +} + +float mx_hair_azimuthal_scattering( // Np + float phi, + int p, + float s, + float gammaO, + float gammaT +) +{ + if (p >= 3) + return float(0.5 / M_PI); + + float dphi = phi - mx_hair_phi(p, gammaO, gammaT); + if (isinf(dphi)) + return float(0.5 / M_PI); + + while (dphi > M_PI) dphi -= (2.0 * M_PI); + while (dphi < (-M_PI)) dphi += (2.0 * M_PI); + + return mx_hair_trimmed_logistic(dphi, s, -M_PI, M_PI); +} + +void mx_hair_alpha_angles( + float alpha, + float sinThetaI, + float cosThetaI, + out vec2 angles[4] +) +{ + // 0:R, 1:TT, 2:TRT, 3:TRRT+ + for (int i = 0; i <= 3; ++i) + { + if (alpha == 0.0 || i == 3) + angles[i] = vec2(sinThetaI, cosThetaI); + else + { + float m = 2.0 - float(i) * 3.0; + float sa = sin(m * alpha); + float ca = cos(m * alpha); + angles[i].x = sinThetaI * ca + cosThetaI * sa; + angles[i].y = cosThetaI * ca - sinThetaI * sa; + } + } +} + +void mx_hair_attenuation(float f, vec3 T, out vec3 Ap[4]) // Ap +{ + // 0:R, 1:TT, 2:TRT, 3:TRRT+ + Ap[0] = vec3(f); + Ap[1] = (1.0 - f) * (1.0 - f) * T; + Ap[2] = Ap[1] * T * f; + Ap[3] = Ap[2] * T * f / (vec3(1.0) - T * f); +} + +void mx_chiang_hair_bsdf(ClosureData closureData, vec3 tint_R, vec3 tint_TT, vec3 tint_TRT, float ior, + vec2 roughness_R, vec2 roughness_TT, vec2 roughness_TRT, float cuticle_angle, + vec3 absorption_coefficient, vec3 N, vec3 X, inout BSDF bsdf) +{ + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + + bsdf.throughput = vec3(0.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + + float sinThetaO = dot(V, X); + float sinThetaI = dot(L, X); + float cosThetaO = mx_hair_transform_sin_cos(sinThetaO); + float cosThetaI = mx_hair_transform_sin_cos(sinThetaI); + + float y1 = dot(L, N); + float x1 = dot(L, Y); + float y2 = dot(V, N); + float x2 = dot(V, Y); + float phi = mx_atan(y1 * x2 - y2 * x1, x1 * x2 + y1 * y2); + + vec3 k1_p = normalize(V - X * dot(V, X)); + float cosGammaO = dot(N, k1_p); + float sinGammaO = mx_hair_transform_sin_cos(cosGammaO); + if (dot(k1_p, Y) > 0.0) + sinGammaO = -sinGammaO; + float gammaO = asin(sinGammaO); + + float sinThetaT = sinThetaO / ior; + float cosThetaT = mx_hair_transform_sin_cos(sinThetaT); + float etaP = sqrt(max(ior * ior - sinThetaO * sinThetaO, 0.0)) / max(cosThetaO, M_FLOAT_EPS); + float sinGammaT = max(min(sinGammaO / etaP, 1.0), -1.0); + float cosGammaT = sqrt(1.0 - sinGammaT * sinGammaT); + float gammaT = asin(sinGammaT); + + // attenuation + vec3 Ap[4]; + float fresnel = mx_fresnel_dielectric(cosThetaO * cosGammaO, ior); + vec3 T = exp(-absorption_coefficient * (2.0 * cosGammaT / cosThetaT)); + mx_hair_attenuation(fresnel, T, Ap); + + // parameters for each lobe + vec2 angles[4]; + float alpha = cuticle_angle * M_PI - (M_PI / 2.0); // remap [0, 1] to [-PI/2, PI/2] + mx_hair_alpha_angles(alpha, sinThetaI, cosThetaI, angles); + + vec3 tint[4]; + tint[0] = tint_R; + tint[1] = tint_TT; + tint[2] = tint_TRT; + tint[3] = tint_TRT; + + roughness_R = clamp(roughness_R, 0.001, 1.0); + roughness_TT = clamp(roughness_TT, 0.001, 1.0); + roughness_TRT = clamp(roughness_TRT, 0.001, 1.0); + + vec2 vs[4]; + vs[0] = roughness_R; + vs[1] = roughness_TT; + vs[2] = roughness_TRT; + vs[3] = roughness_TRT; + + // R, TT, TRT, TRRT+ + vec3 F = vec3(0.0); + for (int i = 0; i <= 3; ++i) + { + tint[i] = max(tint[i], vec3(0.0)); + float Mp = mx_hair_longitudinal_scattering(angles[i].x, angles[i].y, sinThetaO, cosThetaO, vs[i].x); + float Np = (i == 3) ? (1.0 / 2.0 * M_PI) : mx_hair_azimuthal_scattering(phi, i, vs[i].y, gammaO, gammaT); + F += Mp * Np * tint[i] * Ap[i]; + } + + bsdf.response = F * closureData.occlusion * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + // This indirect term is a *very* rough approximation. + + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + FresnelData fd = mx_init_fresnel_dielectric(ior, 0.0, 1.0); + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec2 roughness = (roughness_R + roughness_TT + roughness_TRT) / vec2(3.0); // ? + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + // Use GGX to match the behavior of mx_environment_radiance. + float F0 = mx_ior_to_f0(ior); + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, 0, fd); + vec3 tint = (tint_R + tint_TT + tint_TRT) / vec3(3.0); // ? + + bsdf.response = Li * comp * tint; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_conductor_bsdf(ClosureData closureData, float weight, vec3 ior_n, vec3 ior_k, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + FresnelData fd = mx_init_fresnel_conductor(ior_n, ior_k, thinfilm_thickness, thinfilm_ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + + // Note: NdotL is cancelled out + bsdf.response = D * F * G * comp * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * comp * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_dielectric_bsdf(ClosureData closureData, float weight, vec3 tint, float ior, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, int scatter_mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + if (closureData.closureType != CLOSURE_TYPE_TRANSMISSION && scatter_mode == 1) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + FresnelData fd = mx_init_fresnel_dielectric(ior, thinfilm_thickness, thinfilm_ior); + float F0 = mx_ior_to_f0(ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + vec3 safeTint = max(tint, 0.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + bsdf.response = D * F * G * comp * safeTint * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_TRANSMISSION) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + if (scatter_mode != 0) + { + bsdf.response = mx_surface_transmission(N, V, X, safeAlpha, distribution, fd, safeTint) * weight; + } + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * safeTint * comp * weight; + } +} +void mx_displacement_float(float disp, float scale, out displacementshader result) +{ + result.offset = vec3(disp); + result.scale = scale; +} +void mx_displacement_vector3(vec3 disp, float scale, out displacementshader result) +{ + result.offset = disp; + result.scale = scale; +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_generalized_schlick_bsdf(ClosureData closureData, float weight, vec3 color0, vec3 color82, vec3 color90, float exponent, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, int scatter_mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + if (closureData.closureType != CLOSURE_TYPE_TRANSMISSION && scatter_mode == 1) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + vec3 safeColor0 = max(color0, 0.0); + vec3 safeColor82 = max(color82, 0.0); + vec3 safeColor90 = max(color90, 0.0); + FresnelData fd = mx_init_fresnel_schlick(safeColor0, safeColor82, safeColor90, exponent, thinfilm_thickness, thinfilm_ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + // Note: NdotL is cancelled out + bsdf.response = D * F * G * comp * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_TRANSMISSION) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + if (scatter_mode != 0) + { + float avgF0 = dot(safeColor0, vec3(1.0 / 3.0)); + fd.ior = vec3(mx_f0_to_ior(avgF0)); + bsdf.response = mx_surface_transmission(N, V, X, safeAlpha, distribution, fd, vec3(1.0)) * weight; + } + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * comp * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet.glsl" + +void mx_generalized_schlick_edf(ClosureData closureData, vec3 color0, vec3 color90, float exponent, EDF base, out EDF result) +{ + if (closureData.closureType == CLOSURE_TYPE_EMISSION) + { + vec3 N = mx_forward_facing_normal(closureData.N, closureData.V); + float NdotV = clamp(dot(N, closureData.V), M_FLOAT_EPS, 1.0); + vec3 f = mx_fresnel_schlick(NdotV, color0, color90, exponent); + result = base * f; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_layer_bsdf(ClosureData closureData, BSDF top, BSDF base, out BSDF result) +{ + result.response = top.response + base.response * top.throughput; + result.throughput = top.throughput * base.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_layer_vdf(ClosureData closureData, BSDF top, BSDF base, out BSDF result) +{ + result.response = top.response + base.response; + result.throughput = top.throughput + base.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_mix_bsdf(ClosureData closureData, BSDF fg, BSDF bg, float mixValue, out BSDF result) +{ + result.response = mix(bg.response, fg.response, mixValue); + result.throughput = mix(bg.throughput, fg.throughput, mixValue); +} +#include "lib/mx_closure_type.glsl" + +void mx_mix_edf(ClosureData closureData, EDF fg, EDF bg, float mixValue, out EDF result) +{ + result = mix(bg, fg, mixValue); +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_bsdf_color3(ClosureData closureData, BSDF in1, vec3 in2, out BSDF result) +{ + vec3 tint = clamp(in2, 0.0, 1.0); + result.response = in1.response * tint; + result.throughput = in1.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_bsdf_float(ClosureData closureData, BSDF in1, float in2, out BSDF result) +{ + float weight = clamp(in2, 0.0, 1.0); + result.response = in1.response * weight; + result.throughput = in1.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_edf_color3(ClosureData closureData, EDF in1, vec3 in2, out EDF result) +{ + result = in1 * in2; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_edf_float(ClosureData closureData, EDF in1, float in2, out EDF result) +{ + result = in1 * in2; +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_oren_nayar_diffuse_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, bool energy_compensation, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float LdotV = clamp(dot(L, V), M_FLOAT_EPS, 1.0); + + vec3 diffuse = energy_compensation ? + mx_oren_nayar_compensated_diffuse(NdotV, NdotL, LdotV, roughness, color) : + mx_oren_nayar_diffuse(NdotV, NdotL, LdotV, roughness) * color; + bsdf.response = diffuse * closureData.occlusion * weight * NdotL * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 diffuse = energy_compensation ? + mx_oren_nayar_compensated_diffuse_dir_albedo(NdotV, roughness, color) : + mx_oren_nayar_diffuse_dir_albedo(NdotV, roughness) * color; + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * diffuse * weight; + } +} +void mx_roughness_anisotropy(float roughness, float anisotropy, out vec2 result) +{ + float roughness_sqr = clamp(roughness*roughness, M_FLOAT_EPS, 1.0); + if (anisotropy > 0.0) + { + float aspect = sqrt(1.0 - clamp(anisotropy, 0.0, 0.98)); + result.x = min(roughness_sqr / aspect, 1.0); + result.y = roughness_sqr * aspect; + } + else + { + result.x = roughness_sqr; + result.y = roughness_sqr; + } +} +void mx_roughness_dual(vec2 roughness, out vec2 result) +{ + if (roughness.y < 0.0) + { + roughness.y = roughness.x; + } + result.x = clamp(roughness.x * roughness.x, M_FLOAT_EPS, 1.0); + result.y = clamp(roughness.y * roughness.y, M_FLOAT_EPS, 1.0); +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_sheen.glsl" + +void mx_sheen_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, int mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float dirAlbedo; + if (mode == 0) + { + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float NdotH = clamp(dot(N, H), M_FLOAT_EPS, 1.0); + + vec3 fr = color * mx_imageworks_sheen_brdf(NdotL, NdotV, NdotH, roughness); + dirAlbedo = mx_imageworks_sheen_dir_albedo(NdotV, roughness); + + // We need to include NdotL from the light integral here + // as in this case it's not cancelled out by the BRDF denominator. + bsdf.response = fr * NdotL * closureData.occlusion * weight; + } + else + { + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + + vec3 fr = color * mx_zeltner_sheen_brdf(L, V, N, NdotV, roughness); + dirAlbedo = mx_zeltner_sheen_dir_albedo(NdotV, roughness); + bsdf.response = dirAlbedo * fr * closureData.occlusion * weight; + } + bsdf.throughput = vec3(1.0 - dirAlbedo * weight); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + float dirAlbedo; + if (mode == 0) + { + dirAlbedo = mx_imageworks_sheen_dir_albedo(NdotV, roughness); + } + else + { + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + dirAlbedo = mx_zeltner_sheen_dir_albedo(NdotV, roughness); + } + + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * dirAlbedo * weight; + bsdf.throughput = vec3(1.0 - dirAlbedo * weight); + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_subsurface_bsdf(ClosureData closureData, float weight, vec3 color, vec3 radius, float anisotropy, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + vec3 P = closureData.P; + float occlusion = closureData.occlusion; + + N = mx_forward_facing_normal(N, V); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + vec3 sss = mx_subsurface_scattering_approx(N, L, P, color, radius); + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float visibleOcclusion = 1.0 - NdotL * (1.0 - occlusion); + bsdf.response = sss * visibleOcclusion * weight; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + // For now, we render indirect subsurface as simple indirect diffuse. + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_translucent_bsdf(ClosureData closureData, float weight, vec3 color, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + // Invert normal since we're transmitting light from the other side + N = -N; + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), 0.0, 1.0); + bsdf.response = color * weight * NdotL * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_uniform_edf(ClosureData closureData, vec3 color, out EDF result) +{ + if (closureData.closureType == CLOSURE_TYPE_EMISSION) + { + result = color; + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +float mx_square(float x) +{ + return x*x; +} + +vector2 mx_square(vector2 x) +{ + return x*x; +} + +vector mx_square(vector x) +{ + return x*x; +} + +vector4 mx_square(vector4 x) +{ + return x*x; +} + +float mx_pow5(float x) +{ + return mx_square(mx_square(x)) * x; +} + +color mx_fresnel_conductor(float cosTheta, vector n, vector k) +{ + float c2 = cosTheta*cosTheta; + vector n2_k2 = n*n + k*k; + vector nc2 = 2.0 * n * cosTheta; + + vector rs_a = n2_k2 + c2; + vector rp_a = n2_k2 * c2 + 1.0; + vector rs = (rs_a - nc2) / (rs_a + nc2); + vector rp = (rp_a - nc2) / (rp_a + nc2); + + return 0.5 * (rs + rp); +} + +// Standard Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} +color mx_fresnel_schlick(float cosTheta, color F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} + +// Generalized Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0, float F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} +color mx_fresnel_schlick(float cosTheta, color F0, color F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} + +// Generalized Schlick Fresnel with a variable exponent +color mx_fresnel_schlick(float cosTheta, float f0, float f90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(f0, f90, pow(x, exponent)); +} +color mx_fresnel_schlick(float cosTheta, color f0, color f90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(f0, f90, pow(x, exponent)); +} +void mx_anisotropic_vdf(color absorption, color scattering, float anisotropy, output VDF vdf) +{ + // Convert from absorption and scattering coefficients to + // extinction coefficient and single-scattering albedo. + color extinction = absorption + scattering; + color albedo = scattering / extinction; + vdf = anisotropic_vdf(albedo, extinction, anisotropy); +} +void mx_artistic_ior(color reflectivity, color edge_color, output vector ior, output vector extinction) +{ + // "Artist Friendly Metallic Fresnel", Ole Gulbrandsen, 2014 + // http://jcgt.org/published/0003/04/03/paper.pdf + + color r = clamp(reflectivity, 0.0, 0.99); + color r_sqrt = sqrt(r); + color n_min = (1.0 - r) / (1.0 + r); + color n_max = (1.0 + r_sqrt) / (1.0 - r_sqrt); + ior = mix(n_max, n_min, edge_color); + + color np1 = ior + 1.0; + color nm1 = ior - 1.0; + color k2 = (np1*np1 * r - nm1*nm1) / (1.0 - r); + k2 = max(k2, 0.0); + extinction = sqrt(k2); +} +void mx_blackbody(float temp, output color color_value) +{ + float xc, yc; + float t, t2, t3, xc2, xc3; + + // if value outside valid range of approximation clamp to accepted temperature range + float temperature = clamp(temp, 1667.0, 25000.0); + + t = 1000.0 / temperature; + t2 = t * t; + t3 = t * t * t; + + // Cubic spline approximation for Kelvin temperature to sRGB conversion + // (https://en.wikipedia.org/wiki/Planckian_locus#Approximation) + if (temperature < 4000.0) { // 1667K <= temperature < 4000K + xc = -0.2661239 * t3 - 0.2343580 * t2 + 0.8776956 * t + 0.179910; + } + else { // 4000K <= temperature <= 25000K + xc = -3.0258469 * t3 + 2.1070379 * t2 + 0.2226347 * t + 0.240390; + } + xc2 = xc * xc; + xc3 = xc * xc * xc; + + if (temperature < 2222.0) { // 1667K <= temperature < 2222K + yc = -1.1063814 * xc3 - 1.34811020 * xc2 + 2.18555832 * xc - 0.20219683; + } + else if (temperature < 4000.0) { // 2222K <= temperature < 4000K + yc = -0.9549476 * xc3 - 1.37418593 * xc2 + 2.09137015 * xc - 0.16748867; + } + else { // 4000K <= temperature <= 25000K + yc = 3.0817580 * xc3 - 5.87338670 * xc2 + 3.75112997 * xc - 0.37001483; + } + + if (yc <= 0.0) { // avoid division by zero + color_value = color(1.0); + return; + } + + vector XYZ = vector(xc / yc, 1.0, (1 - xc - yc) / yc); + + /// XYZ to Rec.709 RGB colorspace conversion + matrix XYZ_to_RGB = matrix( 3.2406, -0.9689, 0.0557, 0.0, + -1.5372, 1.8758, -0.2040, 0.0, + -0.4986, 0.0415, 1.0570, 0.0, + 0.0, 0.0, 0.0, 1.0); + + color_value = transform(XYZ_to_RGB, XYZ); + color_value = max(color_value, vector(0.0)); +} +void mx_chiang_hair_bsdf(color tint_R, color tint_TT, color tint_TRT, float ior, + vector2 roughness_R, vector2 roughness_TT, vector2 roughness_TRT, + float cuticle_angle, vector absorption_coefficient, normal N, vector U, output BSDF bsdf) +{ +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + bsdf = chiang_hair_bsdf(N, U, tint_R, tint_TT, tint_TRT, ior, + roughness_R.x, roughness_TT.x, roughness_TRT.x, roughness_R.y, roughness_TT.y, roughness_TRT.y, + cuticle_angle, absorption_coefficient); +#else + bsdf = dielectric_bsdf(N, U, color(1), color(0), 0.1, 0.1, ior, "ggx"); +#endif +} +void mx_chiang_hair_roughness(float longitudinal, float azimuthal, float scale_TT, float scale_TRT, output vector2 roughness_R, output vector2 roughness_TT, output vector2 roughness_TRT) +{ + // TODO: Write OSL implementation of this node. + roughness_R = vector2(0.0, 0.0); + roughness_TT = vector2(0.0, 0.0); + roughness_TRT = vector2(0.0, 0.0); +} +void mx_dielectric_bsdf(float weight, color tint, float ior, vector2 roughness, float thinfilm_thickness, float thinfilm_ior, normal N, vector U, string distribution, string scatter_mode, output BSDF bsdf) +{ + color reflection_tint = (scatter_mode == "T") ? color(0.0) : tint; + color transmission_tint = (scatter_mode == "R") ? color(0.0) : tint; + bsdf = weight * dielectric_bsdf(N, U, reflection_tint, transmission_tint, roughness.x, roughness.y, ior, distribution, "thinfilm_thickness", thinfilm_thickness, "thinfilm_ior", thinfilm_ior); +} +void mx_generalized_schlick_bsdf(float weight, color color0, color color82, color color90, float exponent, vector2 roughness, float thinfilm_thickness, float thinfilm_ior, normal N, vector U, string distribution, string scatter_mode, output BSDF bsdf) +{ + color reflection_tint = (scatter_mode == "T") ? color(0.0) : color(1.0); + color transmission_tint = (scatter_mode == "R") ? color(0.0) : color(1.0); + bsdf = weight * generalized_schlick_bsdf(N, U, reflection_tint, transmission_tint, roughness.x, roughness.y, color0, color90, exponent, distribution, "thinfilm_thickness", thinfilm_thickness, "thinfilm_ior", thinfilm_ior); +} +#include "lib/mx_microfacet.osl" + +void mx_generalized_schlick_edf(color color0, color color90, float exponent, EDF base, output EDF result) +{ + float NdotV = fabs(dot(N,-I)); + color f = mx_fresnel_schlick(NdotV, color0, color90, exponent); + result = base * f; +} +void mx_roughness_anisotropy(float roughness, float anisotropy, output vector2 result) +{ + float roughness_sqr = clamp(roughness*roughness, M_FLOAT_EPS, 1.0); + if (anisotropy > 0.0) + { + float aspect = sqrt(1.0 - clamp(anisotropy, 0.0, 0.98)); + result.x = min(roughness_sqr / aspect, 1.0); + result.y = roughness_sqr * aspect; + } + else + { + result.x = roughness_sqr; + result.y = roughness_sqr; + } +} +void mx_roughness_dual(vector2 roughness, output vector2 result) +{ + result.x = clamp(roughness.x * roughness.x, M_FLOAT_EPS, 1.0); + if (roughness.y < 0.0) + { + result.y = result.x; + } + else + { + result.y = clamp(roughness.y * roughness.y, M_FLOAT_EPS, 1.0); + } +} +void mx_subsurface_bsdf(float weight, color albedo, color radius, float anisotropy, normal N, output BSDF bsdf) +{ +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + bsdf = weight * subsurface_bssrdf(N, albedo, radius, anisotropy); +#else + bsdf = weight * subsurface_bssrdf(N, albedo, 1.0, radius, anisotropy); +#endif +} +void mx_surface(BSDF bsdf, EDF edf, float opacity, int thin_walled, output surfaceshader result) +{ + result.bsdf = bsdf; + result.edf = edf; + result.opacity = clamp(opacity, 0.0, 1.0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Blend 3 normals by blending the gradients +// Morten S. Mikkelsen, Surface Gradient–Based Bump Mapping Framework, Journal of +// Computer Graphics Techniques (JCGT), vol. 9, no. 3, 60–90, 2020 +// http://jcgt.org/published/0009/03/04/ +vec3 mx_normals_to_gradient(vec3 N, vec3 Np) +{ + float d = dot(N, Np); + vec3 g = (d * N - Np) / max(M_FLOAT_EPS, abs(d)); + return g; +} + +vec3 mx_gradient_blend_3_normals(vec3 N, vec3 N1, float N1_weight, vec3 N2, float N2_weight, vec3 N3, float N3_weight) +{ + float w1 = clamp(N1_weight, 0.0, 1.0); + float w2 = clamp(N2_weight, 0.0, 1.0); + float w3 = clamp(N3_weight, 0.0, 1.0); + + vec3 g1 = mx_normals_to_gradient(N, N1); + vec3 g2 = mx_normals_to_gradient(N, N2); + vec3 g3 = mx_normals_to_gradient(N, N3); + + // blend + vec3 gg = w1 * g1 + w2 * g2 + w3 * g3; + + // gradient to normal + return normalize(N - gg); +} + +// This function should be categorized in mx_math.glsl but it causes build errors in MSL +// so adding here for a workaround +mat3 mx_axis_rotation_matrix(vec3 a, float r) +{ + float s = sin(r); + float c = cos(r); + float omc = 1.0 - c; + return mat3( + a.x*a.x*omc + c, a.x*a.y*omc - a.z*s, a.x*a.z*omc + a.y*s, + a.y*a.x*omc + a.z*s, a.y*a.y*omc + c, a.y*a.z*omc - a.x*s, + a.z*a.x*omc - a.y*s, a.z*a.y*omc + a.x*s, a.z*a.z*omc + c + ); +} +// https://www.shadertoy.com/view/4djSRW +vec2 mx_hextile_hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.x, p.y, p.x) * vec3(0.1031, 0.1030, 0.0973)); + p3 += dot(p3, vec3(p3.y, p3.z, p3.x) + 33.33); + return fract((vec2(p3.x, p3.x) + vec2(p3.y, p3.z)) * vec2(p3.z, p3.y)); +} + +// Christophe Schlick. “Fast Alternatives to Perlin’s Bias and Gain Functions”. +// In Graphics Gems IV, Morgan Kaufmann, 1994, pages 401–403. +// https://dept-info.labri.fr/~schlick/DOC/gem2.html +float mx_schlick_gain(float x, float r) +{ + float rr = clamp(r, 0.001, 0.999); // to avoid glitch + float a = (1.0 / rr - 2.0) * (1.0 - 2.0 * x); + return (x < 0.5) ? x / (a + 1.0) : (a - x) / (a - 1.0); +} + +struct HextileData +{ + vec2 coord1; + vec2 coord2; + vec2 coord3; + vec3 weights; + float rot_radian1; + float rot_radian2; + float rot_radian3; + vec2 ddx1; + vec2 ddx2; + vec2 ddx3; + vec2 ddy1; + vec2 ddy2; + vec2 ddy3; +}; + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +HextileData mx_hextile_coord( + vec2 coord, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range) +{ + float sqrt3_2 = sqrt(3.0) * 2.0; + + // scale coord to maintain the original fit + vec2 st = coord * sqrt3_2; + + // skew input space into simplex triangle grid + // (1, 0, -tan(30), 2*tan(30)) + mat2 to_skewed = mat2(1.0, 0.0, -0.57735027, 1.15470054); + vec2 st_skewed = to_skewed * st; + + // barycentric weights + vec2 st_frac = fract(st_skewed); + vec3 temp = vec3(st_frac.x, st_frac.y, 0.0); + temp.z = 1.0 - temp.x - temp.y; + + float s = step(0.0, -temp.z); + float s2 = 2.0 * s - 1.0; + + float w1 = -temp.z * s2; + float w2 = s - temp.y * s2; + float w3 = s - temp.x * s2; + + // vertex IDs + ivec2 base_id = ivec2(floor(st_skewed)); + int si = int(s); + ivec2 id1 = base_id + ivec2(si, si); + ivec2 id2 = base_id + ivec2(si, 1 - si); + ivec2 id3 = base_id + ivec2(1 - si, si); + + // tile center + mat2 inv_skewed = mat2(1.0, 0.0, 0.5, 1.0 / 1.15470054); + vec2 ctr1 = inv_skewed * vec2(id1) / vec2(sqrt3_2); + vec2 ctr2 = inv_skewed * vec2(id2) / vec2(sqrt3_2); + vec2 ctr3 = inv_skewed * vec2(id3) / vec2(sqrt3_2); + + // reuse hash for performance + vec2 seed_offset = vec2(0.12345); // to avoid some zeros + vec2 rand1 = mx_hextile_hash(vec2(id1) + seed_offset); + vec2 rand2 = mx_hextile_hash(vec2(id2) + seed_offset); + vec2 rand3 = mx_hextile_hash(vec2(id3) + seed_offset); + + // randomized rotation matrix + vec2 rr = mx_radians(rotation_range); + float rv1 = mix(rr.x, rr.y, rand1.x * rotation); + float rv2 = mix(rr.x, rr.y, rand2.x * rotation); + float rv3 = mix(rr.x, rr.y, rand3.x * rotation); + float sin_r1 = sin(rv1); + float sin_r2 = sin(rv2); + float sin_r3 = sin(rv3); + float cos_r1 = cos(rv1); + float cos_r2 = cos(rv2); + float cos_r3 = cos(rv3); + mat2 rm1 = mat2(cos_r1, -sin_r1, sin_r1, cos_r1); + mat2 rm2 = mat2(cos_r2, -sin_r2, sin_r2, cos_r2); + mat2 rm3 = mat2(cos_r3, -sin_r3, sin_r3, cos_r3); + + // randomized scale + vec2 sr = scale_range; + vec2 scale1 = vec2(mix(1.0, mix(sr.x, sr.y, rand1.y), scale)); + vec2 scale2 = vec2(mix(1.0, mix(sr.x, sr.y, rand2.y), scale)); + vec2 scale3 = vec2(mix(1.0, mix(sr.x, sr.y, rand3.y), scale)); + + // randomized offset + vec2 offset1 = mix(vec2(offset_range.x), vec2(offset_range.y), rand1 * offset); + vec2 offset2 = mix(vec2(offset_range.x), vec2(offset_range.y), rand2 * offset); + vec2 offset3 = mix(vec2(offset_range.x), vec2(offset_range.y), rand3 * offset); + + HextileData tile_data; + tile_data.weights = vec3(w1, w2, w3); + tile_data.rot_radian1 = rv1; + tile_data.rot_radian2 = rv2; + tile_data.rot_radian3 = rv3; + + // get coord + tile_data.coord1 = ((coord - ctr1) * rm1 / scale1) + ctr1 + offset1; + tile_data.coord2 = ((coord - ctr2) * rm2 / scale2) + ctr2 + offset2; + tile_data.coord3 = ((coord - ctr3) * rm3 / scale3) + ctr3 + offset3; + + // derivatives + vec2 ddx = dFdx(coord); + vec2 ddy = dFdy(coord); + tile_data.ddx1 = ddx * rm1 / scale1; + tile_data.ddx2 = ddx * rm2 / scale2; + tile_data.ddx3 = ddx * rm3 / scale3; + tile_data.ddy1 = ddy * rm1 / scale1; + tile_data.ddy2 = ddy * rm2 / scale2; + tile_data.ddy3 = ddy * rm3 / scale3; + + return tile_data; +} +/* +Color transform functions. + +These functions are modified versions of the color operators found in Open Shading Language: +github.com/imageworks/OpenShadingLanguage/blob/master/src/liboslexec/opcolor.cpp + +It contains the subset of color operators needed to implement the MaterialX +standard library. The modifications are for conversions from C++ to GLSL. + +Original copyright notice: +------------------------------------------------------------------------ +Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------ +*/ + +vec3 mx_hsvtorgb(vec3 hsv) +{ + // Reference for this technique: Foley & van Dam + float h = hsv.x; float s = hsv.y; float v = hsv.z; + if (s < 0.0001f) { + return vec3 (v, v, v); + } else { + h = 6.0f * (h - floor(h)); // expand to [0..6) + int hi = int(trunc(h)); + float f = h - float(hi); + float p = v * (1.0f-s); + float q = v * (1.0f-s*f); + float t = v * (1.0f-s*(1.0f-f)); + if (hi == 0) + return vec3 (v, t, p); + else if (hi == 1) + return vec3 (q, v, p); + else if (hi == 2) + return vec3 (p, v, t); + else if (hi == 3) + return vec3 (p, q, v); + else if (hi == 4) + return vec3 (t, p, v); + return vec3 (v, p, q); + } +} + + +vec3 mx_rgbtohsv(vec3 c) +{ + // See Foley & van Dam + float r = c.x; float g = c.y; float b = c.z; + float mincomp = min (r, min(g, b)); + float maxcomp = max (r, max(g, b)); + float delta = maxcomp - mincomp; // chroma + float h, s, v; + v = maxcomp; + if (maxcomp > 0.0f) + s = delta / maxcomp; + else s = 0.0f; + if (s <= 0.0f) + h = 0.0f; + else { + if (r >= maxcomp) h = (g-b) / delta; + else if (g >= maxcomp) h = 2.0f + (b-r) / delta; + else h = 4.0f + (r-g) / delta; + h *= (1.0f/6.0f); + if (h < 0.0f) + h += 1.0f; + } + return vec3(h, s, v); +} +#define M_FLOAT_EPS 1e-8 + +#define mx_mod mod +#define mx_inverse inverse +#define mx_inversesqrt inversesqrt +#define mx_sin sin +#define mx_cos cos +#define mx_tan tan +#define mx_asin asin +#define mx_acos acos +#define mx_atan atan +#define mx_radians radians + +float mx_square(float x) +{ + return x*x; +} + +vec2 mx_square(vec2 x) +{ + return x*x; +} + +vec3 mx_square(vec3 x) +{ + return x*x; +} + +vec3 mx_srgb_encode(vec3 color) +{ + bvec3 isAbove = greaterThan(color, vec3(0.0031308)); + vec3 linSeg = color * 12.92; + vec3 powSeg = 1.055 * pow(max(color, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055; + return mix(linSeg, powSeg, isAbove); +} +/* +Noise Library. + +This library is a modified version of the noise library found in +Open Shading Language: +github.com/imageworks/OpenShadingLanguage/blob/master/src/include/OSL/oslnoise.h + +It contains the subset of noise types needed to implement the MaterialX +standard library. The modifications are mainly conversions from C++ to GLSL. +Produced results should be identical to the OSL noise functions. + +Original copyright notice: +------------------------------------------------------------------------ +Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------ +*/ + +float mx_select(bool b, float t, float f) +{ + return b ? t : f; +} + +float mx_negate_if(float val, bool b) +{ + return b ? -val : val; +} + +int mx_floor(float x) +{ + return int(floor(x)); +} + +// return mx_floor as well as the fractional remainder +float mx_floorfrac(float x, out int i) +{ + i = mx_floor(x); + return x - float(i); +} + +float mx_bilerp(float v0, float v1, float v2, float v3, float s, float t) +{ + float s1 = 1.0 - s; + return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s); +} +vec3 mx_bilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, float s, float t) +{ + float s1 = 1.0 - s; + return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s); +} +float mx_trilerp(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float s, float t, float r) +{ + float s1 = 1.0 - s; + float t1 = 1.0 - t; + float r1 = 1.0 - r; + return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) + + r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s))); +} +vec3 mx_trilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, vec3 v4, vec3 v5, vec3 v6, vec3 v7, float s, float t, float r) +{ + float s1 = 1.0 - s; + float t1 = 1.0 - t; + float r1 = 1.0 - r; + return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) + + r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s))); +} + +// 2 and 3 dimensional gradient functions - perform a dot product against a +// randomly chosen vector. Note that the gradient vector is not normalized, but +// this only affects the overall "scale" of the result, so we simply account for +// the scale by multiplying in the corresponding "perlin" function. +float mx_gradient_float(uint hash, float x, float y) +{ + // 8 possible directions (+-1,+-2) and (+-2,+-1) + uint h = hash & 7u; + float u = mx_select(h<4u, x, y); + float v = 2.0 * mx_select(h<4u, y, x); + // compute the dot product with (x,y). + return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u)); +} +float mx_gradient_float(uint hash, float x, float y, float z) +{ + // use vectors pointing to the edges of the cube + uint h = hash & 15u; + float u = mx_select(h<8u, x, y); + float v = mx_select(h<4u, y, mx_select((h==12u)||(h==14u), x, z)); + return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u)); +} +vec3 mx_gradient_vec3(uvec3 hash, float x, float y) +{ + return vec3(mx_gradient_float(hash.x, x, y), mx_gradient_float(hash.y, x, y), mx_gradient_float(hash.z, x, y)); +} +vec3 mx_gradient_vec3(uvec3 hash, float x, float y, float z) +{ + return vec3(mx_gradient_float(hash.x, x, y, z), mx_gradient_float(hash.y, x, y, z), mx_gradient_float(hash.z, x, y, z)); +} +// Scaling factors to normalize the result of gradients above. +// These factors were experimentally calculated to be: +// 2D: 0.6616 +// 3D: 0.9820 +float mx_gradient_scale2d(float v) { return 0.6616 * v; } +float mx_gradient_scale3d(float v) { return 0.9820 * v; } +vec3 mx_gradient_scale2d(vec3 v) { return 0.6616 * v; } +vec3 mx_gradient_scale3d(vec3 v) { return 0.9820 * v; } + +/// Bitwise circular rotation left by k bits (for 32 bit unsigned integers) +uint mx_rotl32(uint x, int k) +{ + return (x<>(32-k)); +} + +void mx_bjmix(inout uint a, inout uint b, inout uint c) +{ + a -= c; a ^= mx_rotl32(c, 4); c += b; + b -= a; b ^= mx_rotl32(a, 6); a += c; + c -= b; c ^= mx_rotl32(b, 8); b += a; + a -= c; a ^= mx_rotl32(c,16); c += b; + b -= a; b ^= mx_rotl32(a,19); a += c; + c -= b; c ^= mx_rotl32(b, 4); b += a; +} + +// Mix up and combine the bits of a, b, and c (doesn't change them, but +// returns a hash of those three original values). +uint mx_bjfinal(uint a, uint b, uint c) +{ + c ^= b; c -= mx_rotl32(b,14); + a ^= c; a -= mx_rotl32(c,11); + b ^= a; b -= mx_rotl32(a,25); + c ^= b; c -= mx_rotl32(b,16); + a ^= c; a -= mx_rotl32(c,4); + b ^= a; b -= mx_rotl32(a,14); + c ^= b; c -= mx_rotl32(b,24); + return c; +} + +// Convert a 32 bit integer into a floating point number in [0,1] +float mx_bits_to_01(uint bits) +{ + return float(bits) / float(uint(0xffffffff)); +} + +float mx_fade(float t) +{ + return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); +} + +uint mx_hash_int(int x) +{ + uint len = 1u; + uint seed = uint(0xdeadbeef) + (len << 2u) + 13u; + return mx_bjfinal(seed+uint(x), seed, seed); +} + +uint mx_hash_int(int x, int y) +{ + uint len = 2u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z) +{ + uint len = 3u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z, int xx) +{ + uint len = 4u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + mx_bjmix(a, b, c); + a += uint(xx); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z, int xx, int yy) +{ + uint len = 5u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + mx_bjmix(a, b, c); + a += uint(xx); + b += uint(yy); + return mx_bjfinal(a, b, c); +} + +uvec3 mx_hash_vec3(int x, int y) +{ + uint h = mx_hash_int(x, y); + // we only need the low-order bits to be random, so split out + // the 32 bit result into 3 parts for each channel + uvec3 result; + result.x = (h ) & 0xFFu; + result.y = (h >> 8 ) & 0xFFu; + result.z = (h >> 16) & 0xFFu; + return result; +} + +uvec3 mx_hash_vec3(int x, int y, int z) +{ + uint h = mx_hash_int(x, y, z); + // we only need the low-order bits to be random, so split out + // the 32 bit result into 3 parts for each channel + uvec3 result; + result.x = (h ) & 0xFFu; + result.y = (h >> 8 ) & 0xFFu; + result.z = (h >> 16) & 0xFFu; + return result; +} + +float mx_perlin_noise_float(vec2 p) +{ + int X, Y; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float u = mx_fade(fx); + float v = mx_fade(fy); + float result = mx_bilerp( + mx_gradient_float(mx_hash_int(X , Y ), fx , fy ), + mx_gradient_float(mx_hash_int(X+1, Y ), fx-1.0, fy ), + mx_gradient_float(mx_hash_int(X , Y+1), fx , fy-1.0), + mx_gradient_float(mx_hash_int(X+1, Y+1), fx-1.0, fy-1.0), + u, v); + return mx_gradient_scale2d(result); +} + +float mx_perlin_noise_float(vec3 p) +{ + int X, Y, Z; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float fz = mx_floorfrac(p.z, Z); + float u = mx_fade(fx); + float v = mx_fade(fy); + float w = mx_fade(fz); + float result = mx_trilerp( + mx_gradient_float(mx_hash_int(X , Y , Z ), fx , fy , fz ), + mx_gradient_float(mx_hash_int(X+1, Y , Z ), fx-1.0, fy , fz ), + mx_gradient_float(mx_hash_int(X , Y+1, Z ), fx , fy-1.0, fz ), + mx_gradient_float(mx_hash_int(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ), + mx_gradient_float(mx_hash_int(X , Y , Z+1), fx , fy , fz-1.0), + mx_gradient_float(mx_hash_int(X+1, Y , Z+1), fx-1.0, fy , fz-1.0), + mx_gradient_float(mx_hash_int(X , Y+1, Z+1), fx , fy-1.0, fz-1.0), + mx_gradient_float(mx_hash_int(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0), + u, v, w); + return mx_gradient_scale3d(result); +} + +vec3 mx_perlin_noise_vec3(vec2 p) +{ + int X, Y; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float u = mx_fade(fx); + float v = mx_fade(fy); + vec3 result = mx_bilerp( + mx_gradient_vec3(mx_hash_vec3(X , Y ), fx , fy ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y ), fx-1.0, fy ), + mx_gradient_vec3(mx_hash_vec3(X , Y+1), fx , fy-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1), fx-1.0, fy-1.0), + u, v); + return mx_gradient_scale2d(result); +} + +vec3 mx_perlin_noise_vec3(vec3 p) +{ + int X, Y, Z; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float fz = mx_floorfrac(p.z, Z); + float u = mx_fade(fx); + float v = mx_fade(fy); + float w = mx_fade(fz); + vec3 result = mx_trilerp( + mx_gradient_vec3(mx_hash_vec3(X , Y , Z ), fx , fy , fz ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z ), fx-1.0, fy , fz ), + mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z ), fx , fy-1.0, fz ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ), + mx_gradient_vec3(mx_hash_vec3(X , Y , Z+1), fx , fy , fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z+1), fx-1.0, fy , fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z+1), fx , fy-1.0, fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0), + u, v, w); + return mx_gradient_scale3d(result); +} + +float mx_cell_noise_float(float p) +{ + int ix = mx_floor(p); + return mx_bits_to_01(mx_hash_int(ix)); +} + +float mx_cell_noise_float(vec2 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + return mx_bits_to_01(mx_hash_int(ix, iy)); +} + +float mx_cell_noise_float(vec3 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + return mx_bits_to_01(mx_hash_int(ix, iy, iz)); +} + +float mx_cell_noise_float(vec4 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + int iw = mx_floor(p.w); + return mx_bits_to_01(mx_hash_int(ix, iy, iz, iw)); +} + +vec3 mx_cell_noise_vec3(float p) +{ + int ix = mx_floor(p); + return vec3( + mx_bits_to_01(mx_hash_int(ix, 0)), + mx_bits_to_01(mx_hash_int(ix, 1)), + mx_bits_to_01(mx_hash_int(ix, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec2 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec3 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, iz, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec4 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + int iw = mx_floor(p.w); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 2)) + ); +} + +float mx_fractal2d_noise_float(vec2 p, int octaves, float lacunarity, float diminish) +{ + float result = 0.0; + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_float(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec3 mx_fractal2d_noise_vec3(vec2 p, int octaves, float lacunarity, float diminish) +{ + vec3 result = vec3(0.0); + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_vec3(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec2 mx_fractal2d_noise_vec2(vec2 p, int octaves, float lacunarity, float diminish) +{ + return vec2(mx_fractal2d_noise_float(p, octaves, lacunarity, diminish), + mx_fractal2d_noise_float(p+vec2(19, 193), octaves, lacunarity, diminish)); +} + +vec4 mx_fractal2d_noise_vec4(vec2 p, int octaves, float lacunarity, float diminish) +{ + vec3 c = mx_fractal2d_noise_vec3(p, octaves, lacunarity, diminish); + float f = mx_fractal2d_noise_float(p+vec2(19, 193), octaves, lacunarity, diminish); + return vec4(c, f); +} + +float mx_fractal3d_noise_float(vec3 p, int octaves, float lacunarity, float diminish) +{ + float result = 0.0; + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_float(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec3 mx_fractal3d_noise_vec3(vec3 p, int octaves, float lacunarity, float diminish) +{ + vec3 result = vec3(0.0); + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_vec3(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec2 mx_fractal3d_noise_vec2(vec3 p, int octaves, float lacunarity, float diminish) +{ + return vec2(mx_fractal3d_noise_float(p, octaves, lacunarity, diminish), + mx_fractal3d_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish)); +} + +vec4 mx_fractal3d_noise_vec4(vec3 p, int octaves, float lacunarity, float diminish) +{ + vec3 c = mx_fractal3d_noise_vec3(p, octaves, lacunarity, diminish); + float f = mx_fractal3d_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish); + return vec4(c, f); +} + +vec2 mx_worley_cell_position(int x, int y, int xoff, int yoff, float jitter) +{ + vec3 tmp = mx_cell_noise_vec3(vec2(x+xoff, y+yoff)); + vec2 off = vec2(tmp.x, tmp.y); + + off -= 0.5f; + off *= jitter; + off += 0.5f; + + return vec2(float(x), float(y)) + off; +} + +vec3 mx_worley_cell_position(int x, int y, int z, int xoff, int yoff, int zoff, float jitter) +{ + vec3 off = mx_cell_noise_vec3(vec3(x+xoff, y+yoff, z+zoff)); + + off -= 0.5f; + off *= jitter; + off += 0.5f; + + return vec3(float(x), float(y), float(z)) + off; +} + +float mx_worley_distance(vec2 p, int x, int y, int xoff, int yoff, float jitter, int metric) +{ + vec2 cellpos = mx_worley_cell_position(x, y, xoff, yoff, jitter); + vec2 diff = cellpos - p; + if (metric == 2) + return abs(diff.x) + abs(diff.y); // Manhattan distance + if (metric == 3) + return max(abs(diff.x), abs(diff.y)); // Chebyshev distance + // Either Euclidean or Distance^2 + return dot(diff, diff); +} + +float mx_worley_distance(vec3 p, int x, int y, int z, int xoff, int yoff, int zoff, float jitter, int metric) +{ + vec3 cellpos = mx_worley_cell_position(x, y, z, xoff, yoff, zoff, jitter); + vec3 diff = cellpos - p; + if (metric == 2) + return abs(diff.x) + abs(diff.y) + abs(diff.z); // Manhattan distance + if (metric == 3) + return max(max(abs(diff.x), abs(diff.y)), abs(diff.z)); // Chebyshev distance + // Either Euclidean or Distance^2 + return dot(diff, diff); +} + +float mx_worley_noise_float(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + float dist; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + float sqdist = 1e6f; // Some big number for jitter > 1 (not all GPUs may be IEEE) + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + if (style == 1) + return mx_cell_noise_float(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec2 mx_worley_noise_vec2(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vec2 sqdist = vec2(1e6f, 1e6f); + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + if (style == 1) + { + vec3 tmp = mx_cell_noise_vec3(minpos + p); + return vec2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec3 mx_worley_noise_vec3(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vec3 sqdist = vec3(1e6f, 1e6f, 1e6f); + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + if (style == 1) + return mx_cell_noise_vec3(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +float mx_worley_noise_float(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + float sqdist = 1e6f; + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + } + if (style == 1) + return mx_cell_noise_float(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec2 mx_worley_noise_vec2(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vec2 sqdist = vec2(1e6f, 1e6f); + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + } + if (style == 1) + { + vec3 tmp = mx_cell_noise_vec3(minpos + p); + return vec2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec3 mx_worley_noise_vec3(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vec3 sqdist = vec3(1e6f, 1e6f, 1e6f); + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + } + if (style == 1) + return mx_cell_noise_vec3(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} +vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset) +{ + uv = uv * uv_scale + uv_offset; + return uv; +} +vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset) +{ + uv = uv * uv_scale + uv_offset; + return vec2(uv.x, 1.0 - uv.y); +} +float mx_aastep(float threshold, float value) +{ + float afwidth = length(vec2(dFdx(value), dFdy(value))) * 0.70710678118654757; + return smoothstep(threshold-afwidth, threshold+afwidth, value); +} +#include "mx_burn_float.glsl" + +void mx_burn_color3(vec3 fg, vec3 bg, float mixval, out vec3 result) +{ + float f; + mx_burn_float(fg.x, bg.x, mixval, f); result.x = f; + mx_burn_float(fg.y, bg.y, mixval, f); result.y = f; + mx_burn_float(fg.z, bg.z, mixval, f); result.z = f; +} +#include "mx_burn_float.glsl" + +void mx_burn_color4(vec4 fg, vec4 bg, float mixval, out vec4 result) +{ + float f; + mx_burn_float(fg.x, bg.x, mixval, f); result.x = f; + mx_burn_float(fg.y, bg.y, mixval, f); result.y = f; + mx_burn_float(fg.z, bg.z, mixval, f); result.z = f; + mx_burn_float(fg.w, bg.w, mixval, f); result.w = f; +} +void mx_burn_float(float fg, float bg, float mixval, out float result) +{ + if (abs(fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mixval*(1.0 - ((1.0 - bg) / fg)) + ((1.0-mixval)*bg); +} +#include "lib/mx_noise.glsl" + +void mx_cellnoise2d_float(vec2 texcoord, out float result) +{ + result = mx_cell_noise_float(texcoord); +} +#include "lib/mx_noise.glsl" + +void mx_cellnoise3d_float(vec3 position, out float result) +{ + result = mx_cell_noise_float(position); +} +void mx_creatematrix_vector3_matrix33(vec3 in1, vec3 in2, vec3 in3, out mat3 result) +{ + result = mat3(in1.x, in1.y, in1.z, + in2.x, in2.y, in2.z, + in3.x, in3.y, in3.z); +} +void mx_creatematrix_vector3_matrix44(vec3 in1, vec3 in2, vec3 in3, vec3 in4, out mat4 result) +{ + result = mat4(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + in4.x, in4.y, in4.z, 1.0); +} +void mx_creatematrix_vector4_matrix44(vec4 in1, vec4 in2, vec4 in3, vec4 in4, out mat4 result) +{ + result = mat4(in1.x, in1.y, in1.z, in1.w, + in2.x, in2.y, in2.z, in2.w, + in3.x, in3.y, in3.z, in3.w, + in4.x, in4.y, in4.z, in4.w); +} +void mx_disjointover_color4(vec4 fg, vec4 bg, float mixval, out vec4 result) +{ + float summedAlpha = fg.w + bg.w; + + if (summedAlpha <= 1.0) + { + result.xyz = fg.xyz + bg.xyz; + } + else + { + if (abs(bg.w) < M_FLOAT_EPS) + { + result.xyz = vec3(0.0); + } + else + { + float x = (1.0 - fg.w) / bg.w; + result.xyz = fg.xyz + bg.xyz * x; + } + } + result.w = min(summedAlpha, 1.0); + + result.xyz = result.xyz * mixval + (1.0 - mixval) * bg.xyz; + result.w = result.w * mixval + (1.0 - mixval) * bg.w; +} +#include "mx_dodge_float.glsl" + +void mx_dodge_color3(vec3 fg, vec3 bg, float mixval, out vec3 result) +{ + float f; + mx_dodge_float(fg.x, bg.x, mixval, f); result.x = f; + mx_dodge_float(fg.y, bg.y, mixval, f); result.y = f; + mx_dodge_float(fg.z, bg.z, mixval, f); result.z = f; +} +#include "mx_dodge_float.glsl" + +void mx_dodge_color4(vec4 fg , vec4 bg , float mixval, out vec4 result) +{ + float f; + mx_dodge_float(fg.x, bg.x, mixval, f); result.x = f; + mx_dodge_float(fg.y, bg.y, mixval, f); result.y = f; + mx_dodge_float(fg.z, bg.z, mixval, f); result.z = f; + mx_dodge_float(fg.w, bg.w, mixval, f); result.w = f; +} +void mx_dodge_float(float fg, float bg, float mixval, out float result) +{ + if (abs(1.0 - fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mixval*(bg / (1.0 - fg)) + ((1.0-mixval)*bg); +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_float(float amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out float result) +{ + float value = mx_fractal2d_noise_float(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector2(vec2 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec2 result) +{ + vec2 value = mx_fractal2d_noise_vec2(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector3(vec3 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec3 result) +{ + vec3 value = mx_fractal2d_noise_vec3(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector4(vec4 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec4 result) +{ + vec4 value = mx_fractal2d_noise_vec4(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_float(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out float result) +{ + float value = mx_fractal3d_noise_float(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector2(vec2 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec2 result) +{ + vec2 value = mx_fractal3d_noise_vec2(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector3(vec3 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec3 result) +{ + vec3 value = mx_fractal3d_noise_vec3(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector4(vec4 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec4 result) +{ + vec4 value = mx_fractal3d_noise_vec4(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +void mx_heighttonormal_vector3(float height, float scale, vec2 texcoord, out vec3 result) +{ + // Scale factor for parity with traditional Sobel filtering. + const float SOBEL_SCALE_FACTOR = 1.0 / 16.0; + + // Compute screen-space gradients of the heightfield and texture coordinates. + vec2 dHdS = vec2(dFdx(height), dFdy(height)) * scale * SOBEL_SCALE_FACTOR; + vec2 dUdS = vec2(dFdx(texcoord.x), dFdy(texcoord.x)); + vec2 dVdS = vec2(dFdx(texcoord.y), dFdy(texcoord.y)); + + // Construct a screen-space tangent frame. + vec3 tangent = vec3(dUdS.x, dVdS.x, dHdS.x); + vec3 bitangent = vec3(dUdS.y, dVdS.y, dHdS.y); + vec3 n = cross(tangent, bitangent); + + // Handle invalid and mirrored texture coordinates. + if (dot(n, n) < M_FLOAT_EPS * M_FLOAT_EPS) + { + n = vec3(0, 0, 1); + } + else if (n.z < 0.0) + { + n *= -1.0; + } + + // Normalize and encode the results. + result = normalize(n) * 0.5 + 0.5; +} +#include "lib/$fileTransformUv" +#include "lib/mx_hextile.glsl" + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +void mx_hextiledimage_color3( + $texSamplerSignature, + vec3 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float falloff_contrast, + vec3 lumacoeffs, + out vec3 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec3 c1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1).rgb; + vec3 c2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2).rgb; + vec3 c3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3).rgb; + + // luminance as weights + vec3 cw = vec3(dot(c1, lumacoeffs), dot(c2, lumacoeffs), dot(c3, lumacoeffs)); + cw = mix(vec3(1.0), cw, vec3(falloff_contrast)); + + // blend weights + vec3 w = cw * pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + } + + // blend + result = vec3(w.x * c1 + w.y * c2 + w.z * c3); +} + +void mx_hextiledimage_color4( + $texSamplerSignature, + vec4 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float falloff_contrast, + vec3 lumacoeffs, + out vec4 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec4 c1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1); + vec4 c2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2); + vec4 c3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3); + + // luminance as weights + vec3 cw = vec3(dot(c1.rgb, lumacoeffs), dot(c2.rgb, lumacoeffs), dot(c3.rgb, lumacoeffs)); + cw = mix(vec3(1.0), cw, vec3(falloff_contrast)); + + // blend weights + vec3 w = cw * pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // alpha + float a = (c1.a + c2.a + c3.a) / 3.0; + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + a = mx_schlick_gain(a, falloff); + } + + // blend + result.rgb = vec3(w.x * c1 + w.y * c2 + w.z * c3); + result.a = a; +} +#include "lib/$fileTransformUv" +#include "lib/mx_hextile.glsl" +#include "lib/mx_geometry.glsl" + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +void mx_hextilednormalmap_vector3( + $texSamplerSignature, + vec3 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float strength, + bool flip_g, + vec3 N, + vec3 T, + vec3 B, + out vec3 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec3 nm1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1).xyz; + vec3 nm2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2).xyz; + vec3 nm3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3).xyz; + + nm1.y = flip_g ? 1.0 - nm1.y : nm1.y; + nm2.y = flip_g ? 1.0 - nm2.y : nm2.y; + nm3.y = flip_g ? 1.0 - nm3.y : nm3.y; + + // normalmap to shading normal + nm1 = 2.0 * nm1 - 1.0; + nm2 = 2.0 * nm2 - 1.0; + nm3 = 2.0 * nm3 - 1.0; + mat3 tangent_rot_mat1 = mx_axis_rotation_matrix(N, -tile_data.rot_radian1); + mat3 tangent_rot_mat2 = mx_axis_rotation_matrix(N, -tile_data.rot_radian2); + mat3 tangent_rot_mat3 = mx_axis_rotation_matrix(N, -tile_data.rot_radian3); + vec3 T1 = tangent_rot_mat1 * T * strength; + vec3 T2 = tangent_rot_mat2 * T * strength; + vec3 T3 = tangent_rot_mat3 * T * strength; + vec3 B1 = tangent_rot_mat1 * B * strength; + vec3 B2 = tangent_rot_mat2 * B * strength; + vec3 B3 = tangent_rot_mat3 * B * strength; + vec3 N1 = normalize(T1 * nm1.x + B1 * nm1.y + N * nm1.z); + vec3 N2 = normalize(T2 * nm2.x + B2 * nm2.y + N * nm2.z); + vec3 N3 = normalize(T3 * nm3.x + B3 * nm3.y + N * nm3.z); + + // blend weights + vec3 w = pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + } + + // blend + result = mx_gradient_blend_3_normals(N, N1, w.x, N2, w.y, N3, w.z); +} +#include "lib/mx_hsv.glsl" + +void mx_hsvtorgb_color3(vec3 _in, out vec3 result) +{ + result = mx_hsvtorgb(_in); +} +#include "lib/mx_hsv.glsl" + +void mx_hsvtorgb_color4(vec4 _in, out vec4 result) +{ + result = vec4(mx_hsvtorgb(_in.rgb), 1.0); +} +#include "lib/$fileTransformUv" + +void mx_image_color3($texSamplerSignature, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rgb; +} +#include "lib/$fileTransformUv" + +void mx_image_color4($texSamplerSignature, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv); +} +#include "lib/$fileTransformUv" + +void mx_image_float($texSamplerSignature, int layer, float defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out float result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).r; +} +#include "lib/$fileTransformUv" + +void mx_image_vector2($texSamplerSignature, int layer, vec2 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec2 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rg; +} +#include "lib/$fileTransformUv" + +void mx_image_vector3($texSamplerSignature, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rgb; +} +#include "lib/$fileTransformUv" + +void mx_image_vector4($texSamplerSignature, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv); +} +void mx_luminance_color3(vec3 _in, vec3 lumacoeffs, out vec3 result) +{ + result = vec3(dot(_in, lumacoeffs)); +} +void mx_luminance_color4(vec4 _in, vec3 lumacoeffs, out vec4 result) +{ + result = vec4(vec3(dot(_in.rgb, lumacoeffs)), _in.a); +} +void mx_mix_surfaceshader(surfaceshader fg, surfaceshader bg, float w, out surfaceshader returnshader) +{ + returnshader.color = mix(bg.color, fg.color, w); + returnshader.transparency = mix(bg.transparency, fg.transparency, w); +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_float(float amplitude, float pivot, vec2 texcoord, out float result) +{ + float value = mx_perlin_noise_float(texcoord); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector2(vec2 amplitude, float pivot, vec2 texcoord, out vec2 result) +{ + vec3 value = mx_perlin_noise_vec3(texcoord); + result = value.xy * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector3(vec3 amplitude, float pivot, vec2 texcoord, out vec3 result) +{ + vec3 value = mx_perlin_noise_vec3(texcoord); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector4(vec4 amplitude, float pivot, vec2 texcoord, out vec4 result) +{ + vec3 xyz = mx_perlin_noise_vec3(texcoord); + float w = mx_perlin_noise_float(texcoord + vec2(19, 73)); + result = vec4(xyz, w) * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_float(float amplitude, float pivot, vec3 position, out float result) +{ + float value = mx_perlin_noise_float(position); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector2(vec2 amplitude, float pivot, vec3 position, out vec2 result) +{ + vec3 value = mx_perlin_noise_vec3(position); + result = value.xy * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector3(vec3 amplitude, float pivot, vec3 position, out vec3 result) +{ + vec3 value = mx_perlin_noise_vec3(position); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector4(vec4 amplitude, float pivot, vec3 position, out vec4 result) +{ + vec3 xyz = mx_perlin_noise_vec3(position); + float w = mx_perlin_noise_float(position + vec3(19, 73, 29)); + result = vec4(xyz, w) * amplitude + pivot; +} +void mx_normalmap_vector2(vec3 value, vec2 normal_scale, vec3 N, vec3 T, vec3 B, out vec3 result) +{ + value = (dot(value, value) == 0.0) ? vec3(0.0, 0.0, 1.0) : value * 2.0 - 1.0; + value = T * value.x * normal_scale.x + + B * value.y * normal_scale.y + + N * value.z; + result = normalize(value); +} + +void mx_normalmap_float(vec3 value, float normal_scale, vec3 N, vec3 T, vec3 B, out vec3 result) +{ + mx_normalmap_vector2(value, vec2(normal_scale), N, T, B, result); +} +void mx_premult_color4(vec4 _in, out vec4 result) +{ + result = vec4(_in.rgb * _in.a, _in.a); +} +void mx_ramplr_float(float valuel, float valuer, vec2 texcoord, out float result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector2(vec2 valuel, vec2 valuer, vec2 texcoord, out vec2 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector3(vec3 valuel, vec3 valuer, vec2 texcoord, out vec3 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector4(vec4 valuel, vec4 valuer, vec2 texcoord, out vec4 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramptb_float(float valuet, float valueb, vec2 texcoord, out float result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector2(vec2 valuet, vec2 valueb, vec2 texcoord, out vec2 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector3(vec3 valuet, vec3 valueb, vec2 texcoord, out vec3 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector4(vec4 valuet, vec4 valueb, vec2 texcoord, out vec4 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +#include "lib/mx_hsv.glsl" + +void mx_rgbtohsv_color3(vec3 _in, out vec3 result) +{ + result = mx_rgbtohsv(_in); +} +#include "lib/mx_hsv.glsl" + +void mx_rgbtohsv_color4(vec4 _in, out vec4 result) +{ + result = vec4(mx_rgbtohsv(_in.rgb), 1.0); +} +void mx_rotate_vector2(vec2 _in, float amount, out vec2 result) +{ + float rotationRadians = mx_radians(amount); + float sa = mx_sin(rotationRadians); + float ca = mx_cos(rotationRadians); + result = vec2(ca*_in.x + sa*_in.y, -sa*_in.x + ca*_in.y); +} +mat4 mx_rotationMatrix(vec3 axis, float angle) +{ + axis = normalize(axis); + float s = mx_sin(angle); + float c = mx_cos(angle); + float oc = 1.0 - c; + + return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_rotate_vector3(vec3 _in, float amount, vec3 axis, out vec3 result) +{ + float rotationRadians = mx_radians(amount); + mat4 m = mx_rotationMatrix(axis, rotationRadians); + result = (m * vec4(_in, 1.0)).xyz; +} +void mx_smoothstep_float(float val, float low, float high, out float result) +{ + if (val >= high) + result = 1.0; + else if (val <= low) + result = 0.0; + else + result = smoothstep(low, high, val); +} +#include "mx_aastep.glsl" + +void mx_splitlr_float(float valuel, float valuer, float center, vec2 texcoord, out float result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector2(vec2 valuel, vec2 valuer, float center, vec2 texcoord, out vec2 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector3(vec3 valuel, vec3 valuer, float center, vec2 texcoord, out vec3 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector4(vec4 valuel, vec4 valuer, float center, vec2 texcoord, out vec4 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splittb_float(float valuet, float valueb, float center, vec2 texcoord, out float result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector2(vec2 valuet, vec2 valueb, float center, vec2 texcoord, out vec2 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector3(vec3 valuet, vec3 valueb, float center, vec2 texcoord, out vec3 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector4(vec4 valuet, vec4 valueb, float center, vec2 texcoord, out vec4 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} + +void mx_surface_unlit(float emission, vec3 emission_color, float transmission, vec3 transmission_color, float opacity, out surfaceshader result) +{ + result.color = emission * emission_color * opacity; + result.transparency = mix(vec3(1.0), transmission * transmission_color, opacity); +} +void mx_transformmatrix_vector2M3(vec2 val, mat3 transform, out vec2 result) +{ + vec3 res = transform * vec3(val, 1.0); + result = res.xy; +} +void mx_transformmatrix_vector3M4(vec3 val, mat4 transform, out vec3 result) +{ + vec4 res = transform * vec4(val, 1.0); + result = res.xyz; +} +void mx_unpremult_color4(vec4 _in, out vec4 result) +{ + result = vec4(_in.rgb / _in.a, _in.a); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_float(vec2 texcoord, float jitter, int style, out float result) +{ + result = mx_worley_noise_float(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_vector2(vec2 texcoord, float jitter, int style, out vec2 result) +{ + result = mx_worley_noise_vec2(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_vector3(vec2 texcoord, float jitter, int style, out vec3 result) +{ + result = mx_worley_noise_vec3(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_float(vec3 position, float jitter, int style, out float result) +{ + result = mx_worley_noise_float(position, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_vector2(vec3 position, float jitter, int style, out vec2 result) +{ + result = mx_worley_noise_vec2(position, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_vector3(vec3 position, float jitter, int style, out vec3 result) +{ + result = mx_worley_noise_vec3(position, jitter, style, 0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#define M_FLOAT_EPS 1e-8 + +#define mx_sin metal::sin +#define mx_cos metal::cos +#define mx_tan metal::tan +#define mx_asin metal::asin +#define mx_acos metal::acos + +float mx_square(float x) +{ + return x*x; +} + +vec2 mx_square(vec2 x) +{ + return x*x; +} + +vec3 mx_square(vec3 x) +{ + return x*x; +} + +float mx_inversesqrt(float x) +{ + return metal::rsqrt(x); +} + +template +T1 mx_mod(T1 x, T2 y) +{ + return x - y * floor(x/y); +} + +float3x3 mx_inverse(float3x3 m) +{ + float n11 = m[0][0], n12 = m[1][0], n13 = m[2][0]; + float n21 = m[0][1], n22 = m[1][1], n23 = m[2][1]; + float n31 = m[0][2], n32 = m[1][2], n33 = m[2][2]; + + float det = metal::determinant(m); + float idet = 1.0f / det; + + float3x3 ret; + + ret[0][0] = idet * (n22 * n33 - n32 * n23); + ret[1][0] = idet * (n32 * n13 - n12 * n33); + ret[2][0] = idet * (n12 * n23 - n22 * n13); + + ret[0][1] = idet * (n31 * n23 - n21 * n33); + ret[1][1] = idet * (n11 * n33 - n31 * n13); + ret[2][1] = idet * (n21 * n13 - n11 * n23); + + ret[0][2] = idet * (n21 * n32 - n31 * n22); + ret[1][2] = idet * (n31 * n12 - n11 * n32); + ret[2][2] = idet * (n11 * n22 - n21 * n12); + + return ret; +} + +float4x4 mx_inverse(float4x4 m) +{ + float n11 = m[0][0], n12 = m[1][0], n13 = m[2][0], n14 = m[3][0]; + float n21 = m[0][1], n22 = m[1][1], n23 = m[2][1], n24 = m[3][1]; + float n31 = m[0][2], n32 = m[1][2], n33 = m[2][2], n34 = m[3][2]; + float n41 = m[0][3], n42 = m[1][3], n43 = m[2][3], n44 = m[3][3]; + + float t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44; + float t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44; + float t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44; + float t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + float det = metal::determinant(m); + float idet = 1.0f / det; + + float4x4 ret; + + ret[0][0] = t11 * idet; + ret[0][1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * idet; + ret[0][2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * idet; + ret[0][3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * idet; + + ret[1][0] = t12 * idet; + ret[1][1] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * idet; + ret[1][2] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * idet; + ret[1][3] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * idet; + + ret[2][0] = t13 * idet; + ret[2][1] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * idet; + ret[2][2] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * idet; + ret[2][3] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * idet; + + ret[3][0] = t14 * idet; + ret[3][1] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * idet; + ret[3][2] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * idet; + ret[3][3] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * idet; + + return ret; +} + +float mx_atan(float y_over_x) +{ + return metal::atan(y_over_x); +} + +float mx_atan(float y, float x) +{ + return metal::atan2(y, x); +} + +vec2 mx_atan(vec2 y, vec2 x) +{ + return metal::atan2(y, x); +} + +vec3 mx_atan(vec3 y, vec3 x) +{ + return metal::atan2(y, x); +} + +vec4 mx_atan(vec4 y, vec4 x) +{ + return metal::atan2(y, x); +} + +float mx_radians(float degree) +{ + return (degree * M_PI_F / 180.0f); +} + +vec2 mx_radians(vec2 degree) +{ + return (degree * M_PI_F / 180.0f); +} +float3x3 operator+(float3x3 a, float b) +{ + return a + float3x3(b,b,b,b,b,b,b,b,b); +} + +float4x4 operator+(float4x4 a, float b) +{ + return a + float4x4(b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b); +} + +float3x3 operator-(float3x3 a, float b) +{ + return a - float3x3(b,b,b,b,b,b,b,b,b); +} + +float4x4 operator-(float4x4 a, float b) +{ + return a - float4x4(b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b); +} + +float3x3 operator/(float3x3 a, float3x3 b) +{ + for(int i = 0; i < 3; ++i) + for(int j = 0; j < 3; ++j) + a[i][j] /= b[i][j]; + + return a; +} + +float4x4 operator/(float4x4 a, float4x4 b) +{ + for(int i = 0; i < 4; ++i) + for(int j = 0; j < 4; ++j) + a[i][j] /= b[i][j]; + + return a; +} + +float3x3 operator/(float3x3 a, float b) +{ + for(int i = 0; i < 3; ++i) + for(int j = 0; j < 3; ++j) + a[i][j] /= b; + + return a; +} + +float4x4 operator/(float4x4 a, float b) +{ + for(int i = 0; i < 4; ++i) + for(int j = 0; j < 4; ++j) + a[i][j] /= b; + + return a; +} +struct MetalTexture +{ + texture2d tex; + sampler s; + + // needed for Storm + int get_width() { return tex.get_width(); } + int get_height() { return tex.get_height(); } + int get_num_mip_levels() { return tex.get_num_mip_levels(); } +}; + +float4 texture(MetalTexture mtlTex, float2 uv) +{ + return mtlTex.tex.sample(mtlTex.s, uv); +} + +float4 textureLod(MetalTexture mtlTex, float2 uv, float lod) +{ + return mtlTex.tex.sample(mtlTex.s, uv, level(lod)); +} + +float4 textureGrad(MetalTexture mtlTex, float2 uv, float2 dx, float2 dy) +{ + return mtlTex.tex.sample(mtlTex.s, uv, gradient2d(dx, dy)); +} + +int2 textureSize(MetalTexture mtlTex, int mipLevel) +{ + return int2(mtlTex.tex.get_width(), mtlTex.tex.get_height()); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define COLOR4_H + + +// color4 is a color + alpha +struct color4 +{ + color rgb; + float a; +}; + + + +// +// For color4, define math operators to match color +// + +color4 __operator__neg__(color4 a) +{ + return color4(-a.rgb, -a.a); +} + +color4 __operator__add__(color4 a, color4 b) +{ + return color4(a.rgb + b.rgb, a.a + b.a); +} + +color4 __operator__add__(color4 a, int b) +{ + return a + color4(color(b), b); +} + +color4 __operator__add__(color4 a, float b) +{ + return a + color4(color(b), b); +} + +color4 __operator__add__(int a, color4 b) +{ + return color4(color(a), a) + b; +} + +color4 __operator__add__(float a, color4 b) +{ + return color4(color(a), a) + b; +} + +color4 __operator__sub__(color4 a, color4 b) +{ + return color4(a.rgb - b.rgb, a.a - b.a); +} + +color4 __operator__sub__(color4 a, int b) +{ + return a - color4(color(b), b); +} + +color4 __operator__sub__(color4 a, float b) +{ + return a - color4(color(b), b); +} + +color4 __operator__sub__(int a, color4 b) +{ + return color4(color(a), a) - b; +} + +color4 __operator__sub__(float a, color4 b) +{ + return color4(color(a), a) - b; +} + +color4 __operator__mul__(color4 a, color4 b) +{ + return color4(a.rgb * b.rgb, a.a * b.a); +} + +color4 __operator__mul__(color4 a, int b) +{ + return a * color4(color(b), b); +} + +color4 __operator__mul__(color4 a, float b) +{ + return a * color4(color(b), b); +} + +color4 __operator__mul__(int a, color4 b) +{ + return color4(color(a), a) * b; +} + +color4 __operator__mul__(float a, color4 b) +{ + return color4(color(a), a) * b; +} + +color4 __operator__div__(color4 a, color4 b) +{ + return color4(a.rgb / b.rgb, a.a / b.a); +} + +color4 __operator__div__(color4 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * color4(color(b_inv), b_inv); +} + +color4 __operator__div__(color4 a, float b) +{ + float b_inv = 1.0 / b; + return a * color4(color(b_inv), b_inv); +} + +color4 __operator_div__(int a, color4 b) +{ + return color4(color(a), a) / b; +} + +color4 __operator__div__(float a, color4 b) +{ + return color4(color(a), a) / b; +} + +int __operator__eq__(color4 a, color4 b) +{ + return (a.rgb == b.rgb) && (a.a == b.a); +} + +int __operator__neq__(color4 a, color4 b) +{ + return (a.rgb != b.rgb) || (a.a != b.a); +} + + + +// +// For color4, define most of the stdosl functions to match color +// + +color4 abs(color4 a) +{ + return color4(abs(a.rgb), abs(a.a)); +} + +color4 ceil(color4 a) +{ + return color4(ceil(a.rgb), ceil(a.a)); +} + +color4 round(color4 a) +{ + return color4(round(a.rgb), round(a.a)); +} + +color4 floor(color4 a) +{ + return color4(floor(a.rgb), floor(a.a)); +} + +color4 sqrt(color4 a) +{ + return color4(sqrt(a.rgb), sqrt(a.a)); +} + +color4 exp(color4 a) +{ + return color4(exp(a.rgb), exp(a.a)); +} + +color4 log(color4 a) +{ + return color4(log(a.rgb), log(a.a)); +} + +color4 log2(color4 a) +{ + return color4(log2(a.rgb), log2(a.a)); +} + +color4 mix(color4 a, color4 b, float x ) +{ + return color4(mix(a.rgb, b.rgb, x), + mix(a.a, b.a, x)); +} + +color4 mix(color4 a, color4 b, color4 x ) +{ + return color4(mix(a.rgb, b.rgb, x.rgb), + mix(a.a, b.a, x.a)); +} + +color4 smoothstep(color4 edge0, color4 edge1, color4 c) +{ + return color4(smoothstep(edge0.rgb, edge1.rgb, c.rgb), + smoothstep(edge0.a, edge1.a, c.a)); +} + +color4 smoothstep(float edge0, float edge1, color4 c) +{ + return smoothstep(color4(color(edge0), edge0), color4(color(edge1), edge1), c); +} + +color4 clamp(color4 c, color4 minval, color4 maxval) +{ + return color4(clamp(c.rgb, minval.rgb, maxval.rgb), + clamp(c.a, minval.a, maxval.a)); +} + +color4 clamp(color4 c, float minval, float maxval) +{ + return clamp(c, color4(color(minval), minval), color4(color(maxval), maxval)); +} + +color4 max(color4 a, color4 b) +{ + return color4(max(a.rgb, b.rgb), + max(a.a, b.a)); +} + +color4 max(color4 a, float b) +{ + return color4(max(a.rgb, b), + max(a.a, b)); +} + +color4 min(color4 a, color4 b) +{ + return color4(min(a.rgb, b.rgb), + min(a.a, b.a)); +} + +color4 min(color4 a, float b) +{ + return color4(min(a.rgb, b), + min(a.a, b)); +} + +color4 mod(color4 a, color4 b) +{ + return color4(mod(a.rgb, b.rgb), + mod(a.a, b.a)); +} + +color4 mod(color4 a, float b) +{ + return mod(a, color4(color(b), b)); +} + +color4 fmod(color4 a, color4 b) +{ + return color4(fmod(a.rgb, b.rgb), + fmod(a.a, b.a)); +} + +color4 fmod(color4 a, int b) +{ + return fmod(a, color4(color(b), b)); +} + +color4 fmod(color4 a, float b) +{ + return fmod(a, color4(color(b), b)); +} + +color4 pow(color4 base, color4 power) +{ + return color4(pow(base.rgb, power.rgb), pow(base.a, power.a)); +} + +color4 pow(color4 base, float power) +{ + return pow(base, color4(color(power), power)); +} + +color4 sign(color4 a) +{ + return color4(sign(a.rgb), + sign(a.a)); +} + +color4 sin(color4 a) +{ + return color4(sin(a.rgb), + sin(a.a)); +} + +color4 cos(color4 a) +{ + return color4(cos(a.rgb), + cos(a.a)); +} + +color4 tan(color4 a) +{ + return color4(tan(a.rgb), + tan(a.a)); +} + +color4 asin(color4 a) +{ + return color4(asin(a.rgb), + asin(a.a)); +} + +color4 acos(color4 a) +{ + return color4(acos(a.rgb), + acos(a.a)); +} + +color4 atan2(color4 a, float f) +{ + return color4(atan2(a.rgb, f), + atan2(a.a, f)); +} + +color4 atan2(color4 a, color4 b) +{ + return color4(atan2(a.rgb, b.rgb), + atan2(a.a, b.a)); +} + + +color4 transformc (string fromspace, string tospace, color4 C) +{ + return color4 (transformc (fromspace, tospace, C.rgb), C.a); +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + + +#pragma once +#define MATRIX33_H + + +struct matrix33 +{ + matrix m; +}; + +int isValidAs33(matrix m44) +{ + return m44[0][3] == 0 && + m44[1][3] == 0 && + m44[2][3] == 0 && + m44[3][0] == 0 && + m44[3][1] == 0 && + m44[3][2] == 0 && + m44[3][3] == 1; +} + +matrix matrix33To44 (matrix33 m33) +{ + return m33.m; +} + +// Convert an arbitrary m44 to m33 by removing the translation +//QUESTION: should we check if it's valid to represent the 4x4 as a 3x3? +matrix33 matrix44To33 (matrix m44) +{ + matrix33 m33; + m33.m = m44; + m33.m[0][3] = 0; + m33.m[1][3] = 0; + m33.m[2][3] = 0; + m33.m[3][0] = 0; + m33.m[3][1] = 0; + m33.m[3][2] = 0; + m33.m[3][3] = 1; + + return m33; +} + +matrix33 __operator__neg__(matrix33 a) +{ + matrix33 m33; + m33.m = -a.m; + return m33; +} + + +matrix33 __operator__mul__(int a, matrix33 b) +{ + matrix33 m33; + m33.m = a * b.m; + return m33; +} + +matrix33 __operator__mul__(float a, matrix33 b) +{ + matrix33 m33; + m33.m = a * b.m; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, int b) +{ + matrix33 m33; + m33.m = a.m * b; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, float b) +{ + matrix33 m33; + m33.m = a.m * b; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, matrix33 b) +{ + matrix33 m33; + m33.m = a.m * b.m; + return m33; +} + +matrix33 __operator__div__(int a, matrix33 b) +{ + matrix33 m33; + m33.m = a / b.m; + return m33; +} + +matrix33 __operator__div__(float a, matrix33 b) +{ + matrix33 m33; + m33.m = a / b.m; + return m33; +} + +matrix33 __operator__div__(matrix33 a, int b) +{ + matrix33 m33; + m33.m = a.m / b; + return m33; +} + +matrix33 __operator__div__(matrix33 a, float b) +{ + matrix33 m33; + m33.m = a.m / b; + return m33; +} + +matrix33 __operator__div__(matrix33 a, matrix33 b) +{ + matrix33 m33; + m33.m = a.m / b.m; + return m33; +} + +int __operator__eq__(matrix33 a, matrix33 b) +{ + return a.m == b.m; +} + +int __operator__ne__(matrix33 a, matrix33 b) +{ + return a.m != b.m; +} + +float determinant (matrix33 a) +{ + return determinant(a.m); +} + +matrix33 transpose(matrix33 a) +{ + matrix33 m33; + m33.m = transpose(a.m); + return m33; +} + +point transform(matrix33 a, point b) +{ + return transform(a.m, b); +} + +vector transform(matrix33 a, vector b) +{ + return transform(a.m, b); +} + +normal transform(matrix33 a, normal b) +{ + return transform(a.m, b); +} +// Open Shading Language : Copyright (c) 2009-2017 Sony Pictures Imageworks Inc., et al. +// https://github.com/imageworks/OpenShadingLanguage/blob/master/LICENSE +// +// MaterialX specification (c) 2017 Lucasfilm Ltd. +// http://www.materialx.org/ + +#pragma once + +#include "color4.h" +#include "vector2.h" +#include "vector4.h" +#include "matrix33.h" + +// +// Support functions for OSL implementations of the MaterialX nodes. +// + +float mx_ternary(int expr, float v1, float v2) { if (expr) return v1; else return v2; } +int mx_ternary(int expr, int v1, int v2) { if (expr) return v1; else return v2; } +color mx_ternary(int expr, color v1, color v2) { if (expr) return v1; else return v2; } +color4 mx_ternary(int expr, color4 v1, color4 v2) { if (expr) return v1; else return v2; } +vector mx_ternary(int expr, vector v1, vector v2) { if (expr) return v1; else return v2; } +vector2 mx_ternary(int expr, vector2 v1, vector2 v2) { if (expr) return v1; else return v2; } +vector4 mx_ternary(int expr, vector4 v1, vector4 v2) { if (expr) return v1; else return v2; } +matrix mx_ternary(int expr, matrix v1, matrix v2) { if (expr) return v1; else return v2; } +matrix33 mx_ternary(int expr, matrix33 v1, matrix33 v2) { if (expr) return v1; else return v2; } + + +matrix33 mx_add(matrix33 a, matrix33 b) +{ + return matrix33(matrix( + a.m[0][0]+b.m[0][0], a.m[0][1]+b.m[0][1], a.m[0][2]+b.m[0][2], 0.0, + a.m[1][0]+b.m[1][0], a.m[1][1]+b.m[1][1], a.m[1][2]+b.m[1][2], 0.0, + a.m[2][0]+b.m[2][0], a.m[2][1]+b.m[2][1], a.m[2][2]+b.m[2][2], 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix33 mx_add(matrix33 a, float b) +{ + return matrix33(matrix( + a.m[0][0]+b, a.m[0][1]+b, a.m[0][2]+b, 0.0, + a.m[1][0]+b, a.m[1][1]+b, a.m[1][2]+b, 0.0, + a.m[2][0]+b, a.m[2][1]+b, a.m[2][2]+b, 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix mx_add(matrix a, matrix b) +{ + return matrix( + a[0][0]+b[0][0], a[0][1]+b[0][1], a[0][2]+b[0][2], a[0][3]+b[0][3], + a[1][0]+b[1][0], a[1][1]+b[1][1], a[1][2]+b[1][2], a[1][3]+b[1][3], + a[2][0]+b[2][0], a[2][1]+b[2][1], a[2][2]+b[2][2], a[2][3]+b[2][3], + a[3][0]+b[3][0], a[3][1]+b[3][1], a[3][2]+b[3][2], a[3][3]+b[3][3]); +} + +matrix mx_add(matrix a, float b) +{ + return matrix( + a[0][0]+b, a[0][1]+b, a[0][2]+b, a[0][3]+b, + a[1][0]+b, a[1][1]+b, a[1][2]+b, a[1][3]+b, + a[2][0]+b, a[2][1]+b, a[2][2]+b, a[2][3]+b, + a[3][0]+b, a[3][1]+b, a[3][2]+b, a[3][3]+b); +} + + +matrix33 mx_subtract(matrix33 a, matrix33 b) +{ + return matrix33(matrix( + a.m[0][0]-b.m[0][0], a.m[0][1]-b.m[0][1], a.m[0][2]-b.m[0][2], 0.0, + a.m[1][0]-b.m[1][0], a.m[1][1]-b.m[1][1], a.m[1][2]-b.m[1][2], 0.0, + a.m[2][0]-b.m[2][0], a.m[2][1]-b.m[2][1], a.m[2][2]-b.m[2][2], 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix33 mx_subtract(matrix33 a, float b) +{ + return matrix33(matrix( + a.m[0][0]-b, a.m[0][1]-b, a.m[0][2]-b, 0.0, + a.m[1][0]-b, a.m[1][1]-b, a.m[1][2]-b, 0.0, + a.m[2][0]-b, a.m[2][1]-b, a.m[2][2]-b, 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix mx_subtract(matrix a, matrix b) +{ + return matrix( + a[0][0]-b[0][0], a[0][1]-b[0][1], a[0][2]-b[0][2], a[0][3]-b[0][3], + a[1][0]-b[1][0], a[1][1]-b[1][1], a[1][2]-b[1][2], a[1][3]-b[1][3], + a[2][0]-b[2][0], a[2][1]-b[2][1], a[2][2]-b[2][2], a[2][3]-b[2][3], + a[3][0]-b[3][0], a[3][1]-b[3][1], a[3][2]-b[3][2], a[3][3]-b[3][3]); +} + +matrix mx_subtract(matrix a, float b) +{ + return matrix( + a[0][0]-b, a[0][1]-b, a[0][2]-b, a[0][3]-b, + a[1][0]-b, a[1][1]-b, a[1][2]-b, a[1][3]-b, + a[2][0]-b, a[2][1]-b, a[2][2]-b, a[2][3]-b, + a[3][0]-b, a[3][1]-b, a[3][2]-b, a[3][3]-b); +} + + +float mx_extract(color in, int index) +{ + return in[index]; +} + +float mx_extract(color4 in, int index) +{ + if (index == 0) return in.rgb.r; + else if (index == 1) return in.rgb.g; + else if (index == 2) return in.rgb.b; + else return in.a; +} + +float mx_extract(vector2 in, int index) +{ + if (index == 0) return in.x; + else return in.y; +} + +float mx_extract(vector in, int index) +{ + return in[index]; +} + +float mx_extract(vector4 in, int index) +{ + if (index == 0) return in.x; + else if (index == 1) return in.y; + else if (index == 2) return in.z; + else return in.w; +} + + +float mx_remap(float in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + float x = (in - inLow)/(inHigh-inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color mx_remap(color in, color inLow, color inHigh, color outLow, color outHigh, int doClamp) +{ + color x = (in - inLow) / (inHigh - inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color mx_remap(color in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + color x = (in - inLow) / (inHigh - inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color4 mx_remap(color4 c, color4 inLow, color4 inHigh, color4 outLow, color4 outHigh, int doClamp) +{ + return color4(mx_remap(c.rgb, inLow.rgb, inHigh.rgb, outLow.rgb, outHigh.rgb, doClamp), + mx_remap(c.a, inLow.a, inHigh.a, outLow.a, outHigh.a, doClamp)); +} + +color4 mx_remap(color4 c, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + color4 c4_inLow = color4(color(inLow), inLow); + color4 c4_inHigh = color4(color(inHigh), inHigh); + color4 c4_outLow = color4(color(outLow), outLow); + color4 c4_outHigh = color4(color(outHigh), outHigh); + return mx_remap(c, c4_inLow, c4_inHigh, c4_outLow, c4_outHigh, doClamp); +} + +vector2 mx_remap(vector2 in, vector2 inLow, vector2 inHigh, vector2 outLow, vector2 outHigh, int doClamp) +{ + return vector2(mx_remap(in.x, inLow.x, inHigh.x, outLow.x, outHigh.x, doClamp), + mx_remap(in.y, inLow.y, inHigh.y, outLow.y, outHigh.y, doClamp)); +} + +vector2 mx_remap(vector2 in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + return vector2(mx_remap(in.x, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.y, inLow, inHigh, outLow, outHigh, doClamp)); +} + +vector4 mx_remap(vector4 in, vector4 inLow, vector4 inHigh, vector4 outLow, vector4 outHigh, int doClamp) +{ + return vector4(mx_remap(in.x, inLow.x, inHigh.x, outLow.x, outHigh.x, doClamp), + mx_remap(in.y, inLow.y, inHigh.y, outLow.y, outHigh.y, doClamp), + mx_remap(in.z, inLow.z, inHigh.z, outLow.z, outHigh.z, doClamp), + mx_remap(in.w, inLow.w, inHigh.w, outLow.w, outHigh.w, doClamp)); +} + +vector4 mx_remap(vector4 in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + return vector4(mx_remap(in.x, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.y, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.z, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.w, inLow, inHigh, outLow, outHigh, doClamp)); +} + + +float mx_contrast(float in, float amount, float pivot) +{ + float out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color mx_contrast(color in, color amount, color pivot) +{ + color out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color mx_contrast(color in, float amount, float pivot) +{ + color out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color4 mx_contrast(color4 c, color4 amount, color4 pivot) +{ + return color4(mx_contrast(c.rgb, amount.rgb, pivot.rgb), + mx_contrast(c.a, amount.a, pivot.a)); +} + +color4 mx_contrast(color4 c, float amount, float pivot) +{ + return mx_contrast(c, color4(color(amount), amount), color4(color(pivot), pivot)); +} + +vector2 mx_contrast(vector2 in, vector2 amount, vector2 pivot) +{ + return vector2 (mx_contrast(in.x, amount.x, pivot.x), + mx_contrast(in.y, amount.y, pivot.y)); +} + +vector2 mx_contrast(vector2 in, float amount, float pivot) +{ + return mx_contrast(in, vector2(amount, amount), vector2(pivot, pivot)); +} + +vector4 mx_contrast(vector4 in, vector4 amount, vector4 pivot) +{ + return vector4(mx_contrast(in.x, amount.x, pivot.x), + mx_contrast(in.y, amount.y, pivot.y), + mx_contrast(in.z, amount.z, pivot.z), + mx_contrast(in.w, amount.w, pivot.w)); +} + +vector4 mx_contrast(vector4 in, float amount, float pivot) +{ + return vector4(mx_contrast(in.x, amount, pivot), + mx_contrast(in.y, amount, pivot), + mx_contrast(in.z, amount, pivot), + mx_contrast(in.w, amount, pivot)); +} + + +vector2 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + return vector2 (cnoise[0], cnoise[1]); +} + +color4 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + float fnoise = (float) noise(noisetype, x + 19, y + 73); + return color4 (cnoise, fnoise); +} + +vector4 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + float fnoise = (float) noise(noisetype, x + 19, y + 73); + return vector4 (cnoise[0], cnoise[1], cnoise[2], fnoise); +} + +vector2 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + return vector2 (cnoise[0], cnoise[1]); +} + +color4 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + float fnoise = (float) noise(noisetype, position+vector(19,73,29)); + return color4 (cnoise, fnoise); +} + +vector4 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + float fnoise = (float) noise(noisetype, position+vector(19,73,29)); + return vector4 (cnoise[0], cnoise[1], cnoise[2], fnoise); +} + +float mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + float out = 0; + float amp = 1.0; + float xx = x; + float yy = y; + + for (int i = 0; i < octaves; i += 1) { + out += amp * noise(noisetype, xx, yy); + amp *= diminish; + xx *= lacunarity; + yy *= lacunarity; + } + return out; +} + +color mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color out = 0; + float amp = 1.0; + float xx = x; + float yy = y; + + for (int i = 0; i < octaves; i += 1) { + out += amp * (color)noise(noisetype, xx, yy); + amp *= diminish; + xx *= lacunarity; + yy *= lacunarity; + } + return out; +} + +vector2 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + return vector2((float) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype), + (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype)); +} + +color4 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype); + return color4 (c, f); +} + +vector4 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype); + return vector4 (c[0], c[1], c[2], f); +} + +float mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + float out = 0; + float amp = 1.0; + point p = position; + + for (int i = 0; i < octaves; i += 1) { + out += amp * noise(noisetype, p); + amp *= diminish; + p *= lacunarity; + } + return out; +} + +color mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color out = 0; + float amp = 1.0; + point p = position; + + for (int i = 0; i < octaves; i += 1) { + out += amp * (color)noise(noisetype, p); + amp *= diminish; + p *= lacunarity; + } + return out; +} + +vector2 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + return vector2((float) mx_fbm(position, octaves, lacunarity, diminish, noisetype), + (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype)); +} + +color4 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(position, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype); + return color4 (c, f); +} + +vector4 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(position, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype); + return vector4 (c[0], c[1], c[2], f); +} + +vector2 mx_worley_cell_position(int x, int y, int xoff, int yoff, float jitter) +{ + vector tmp = cellnoise(x+xoff, y+yoff); + vector2 off = vector2(tmp.x, tmp.y); + off -= 0.5; + off *= jitter; + off += 0.5; + return vector2(x, y) + off; +} + +vector mx_worley_cell_position(int x, int y, int z, int xoff, int yoff, int zoff, float jitter) +{ + vector off = cellnoise(vector(x+xoff, y+yoff, z+zoff)); + off -= 0.5; + off *= jitter; + off += 0.5; + return vector(x,y,z) + off; +} + +float mx_worley_distance(vector2 p, int x, int y, int X, int Y, float jitter, int metric) +{ + vector2 cellpos = mx_worley_cell_position(x,y,X,Y,jitter); + vector2 diff = cellpos - p; + + if (metric == 2) + return abs(diff.x) + abs(diff.y); // Manhattan distance + if (metric == 3) + return max(abs(diff.x), abs(diff.y)); // Chebyshev distance + return diff.x*diff.x + diff.y*diff.y; // Euclidean or distance^2 +} + +float mx_worley_distance(vector p, int x, int y, int z, int X, int Y, int Z, float jitter, int metric) +{ + vector cellpos = mx_worley_cell_position(x,y,z,X,Y,Z,jitter); + vector diff = cellpos - p; + if (metric == 2) + return abs(diff[0]) + abs(diff[1]); // Manhattan distance + if (metric == 3) + return max(abs(diff[0]), abs(diff[1])); // Chebyshev distance + return dot(diff, diff); // Eucldean or distance^2 +} + +void mx_sort_distance(float dist, output vector2 result) +{ + if (dist < result.x) + { + result.y = result.x; + result.x = dist; + } + else if (dist < result.y) + { + result.y = dist; + } +} + +void mx_sort_distance(float dist, output vector result) +{ + if (dist < result[0]) + { + result[2] = result[1]; + result[1] = result[0]; + result[0] = dist; + } + else if (dist < result[1]) + { + result[2] = result[1]; + result[1] = dist; + } + else if (dist < result[2]) + { + result[2] = dist; + } +} + +// return floor as well as the fractional remainder +float mx_floorfrac(float x, output int i) +{ + i = (int)floor(x); + return x - float(i); +} + +float mx_worley_noise_float(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + float sqdist = 1e6; + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + if (style == 1) + { + vector2 tmpP = minpos + p; + return cellnoise(tmpP.x, tmpP.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector2 mx_worley_noise_vector2(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + vector2 sqdist = vector2(1e6, 1e6); + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + + if (style == 1) + { + vector2 tmpP = minpos + p; + vector tmp = cellnoise(tmpP.x, tmpP.y); + return vector2(tmp.x, tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector mx_worley_noise_vector3(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + vector sqdist = vector(1e6, 1e6, 1e6); + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + if (style == 1) + { + vector2 tmpP = minpos + p; + return cellnoise(tmpP.x, tmpP.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +float mx_worley_noise_float(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector seed = p; + float sqdist = 1e6; + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + } + if (style == 1) + return cellnoise(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector2 mx_worley_noise_vector2(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector2 sqdist = vector2(1e6, 1e6); + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + } + if (style == 1) + { + vector tmp = cellnoise(minpos + p); + return vector2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector mx_worley_noise_vector3(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector sqdist = 1e6; + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + } + if (style == 1) + return cellnoise(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define VECTOR2_H + +// vector2 is a 2D vector +struct vector2 +{ + float x; + float y; +}; + + + +// +// For vector2, define math operators to match vector +// + +vector2 __operator__neg__(vector2 a) +{ + return vector2(-a.x, -a.y); +} + +vector2 __operator__add__(vector2 a, vector2 b) +{ + return vector2(a.x + b.x, a.y + b.y); +} + +vector2 __operator__add__(vector2 a, int b) +{ + return a + vector2(b, b); +} + +vector2 __operator__add__(vector2 a, float b) +{ + return a + vector2(b, b); +} + +vector2 __operator__add__(int a, vector2 b) +{ + return vector2(a, a) + b; +} + +vector2 __operator__add__(float a, vector2 b) +{ + return vector2(a, a) + b; +} + +vector2 __operator__sub__(vector2 a, vector2 b) +{ + return vector2(a.x - b.x, a.y - b.y); +} + +vector2 __operator__sub__(vector2 a, int b) +{ + return a - vector2(b, b); +} + +vector2 __operator__sub__(vector2 a, float b) +{ + return a - vector2(b, b); +} + +vector2 __operator__sub__(int a, vector2 b) +{ + return vector2(a, a) - b; +} + +vector2 __operator__sub__(float a, vector2 b) +{ + return vector2(a, a) - b; +} + +vector2 __operator__mul__(vector2 a, vector2 b) +{ + return vector2(a.x * b.x, a.y * b.y); +} + +vector2 __operator__mul__(vector2 a, int b) +{ + return a * vector2(b, b); +} + +vector2 __operator__mul__(vector2 a, float b) +{ + return a * vector2(b, b); +} + +vector2 __operator__mul__(int a, vector2 b) +{ + return b * vector2(a, a); +} + +vector2 __operator__mul__(float a, vector2 b) +{ + return b * vector2(a, a); +} + +vector2 __operator__div__(vector2 a, vector2 b) +{ + return vector2(a.x / b.x, a.y / b.y); +} + +vector2 __operator__div__(vector2 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * vector2(b_inv, b_inv); +} + +vector2 __operator__div__(vector2 a, float b) +{ + float b_inv = 1.0 / b; + return a * vector2(b_inv, b_inv); +} + +vector2 __operator__div__(int a, vector2 b) +{ + return vector2(a, a) / b; +} + +vector2 __operator__div__(float a, vector2 b) +{ + return vector2(a, a) / b; +} + +int __operator__eq__(vector2 a, vector2 b) +{ + return (a.x == b.x) && (a.y == b.y); +} + +int __operator__neq__(vector2 a, vector2 b) +{ + return (a.x != b.x) || (a.y != b.y); +} + + + + +// +// For vector2, define most of the stdosl functions to match vector +// + +vector2 abs(vector2 a) +{ + return vector2 (abs(a.x), abs(a.y)); +} + +vector2 ceil(vector2 a) +{ + return vector2 (ceil(a.x), ceil(a.y)); +} + +vector2 round(vector2 a) +{ + return vector2 (round(a.x), round(a.y)); +} + +vector2 floor(vector2 a) +{ + return vector2 (floor(a.x), floor(a.y)); +} + +vector2 sqrt(vector2 a) +{ + return vector2 (sqrt(a.x), sqrt(a.y)); +} + +vector2 exp(vector2 a) +{ + return vector2 (exp(a.x), exp(a.y)); +} + +vector2 log(vector2 a) +{ + return vector2 (log(a.x), log(a.y)); +} + +vector2 log2(vector2 a) +{ + return vector2 (log2(a.x), log2(a.y)); +} + +vector2 mix(vector2 a, vector2 b, float x ) +{ + return vector2 (mix(a.x, b.x, x), mix(a.y, b.y, x)); +} + +vector2 mix(vector2 a, vector2 b, vector2 x ) +{ + return vector2 (mix(a.x, b.x, x.x), mix(a.y, b.y, x.y)); +} + +float dot(vector2 a, vector2 b) +{ + return (a.x * b.x + a.y * b.y); +} + +float length (vector2 a) +{ + return hypot (a.x, a.y); +} + +vector2 smoothstep(vector2 low, vector2 high, vector2 in) +{ + return vector2 (smoothstep(low.x, high.x, in.x), + smoothstep(low.y, high.y, in.y)); +} + +vector2 smoothstep(float low, float high, vector2 in) +{ + return vector2 (smoothstep(low, high, in.x), + smoothstep(low, high, in.y)); +} + +vector2 clamp(vector2 in, vector2 low, vector2 high) +{ + return vector2 (clamp(in.x, low.x, high.x), + clamp(in.y, low.y, high.y)); +} + +vector2 clamp(vector2 in, float low, float high) +{ + return clamp(in, vector2(low, low), vector2(high, high)); +} + +vector2 max(vector2 a, vector2 b) +{ + return vector2 (max(a.x, b.x), + max(a.y, b.y)); +} + +vector2 min(vector2 a, vector2 b) +{ + return vector2 (min(a.x, b.x), + min(a.y, b.y)); +} + +vector2 min(vector2 a, float b) +{ + return min(a, vector2(b, b)); +} + +vector2 max(vector2 a, float b) +{ + return max(a, vector2(b, b)); +} + +vector2 normalize(vector2 a) +{ + return a / length(a); +} + +vector2 mod(vector2 a, vector2 b) +{ + return vector2(mod(a.x, b.x), + mod(a.y, b.y)); +} + +vector2 mod(vector2 a, float b) +{ + return mod(a, vector2(b, b)); +} + +vector2 fmod(vector2 a, vector2 b) +{ + return vector2 (fmod(a.x, b.x), + fmod(a.y, b.y)); +} + +vector2 fmod(vector2 a, float b) +{ + return fmod(a, vector2(b, b)); +} + +vector2 pow(vector2 in, vector2 amount) +{ + return vector2(pow(in.x, amount.x), pow(in.y, amount.y)); +} + +vector2 pow(vector2 in, float amount) +{ + return pow(in, vector2(amount, amount)); +} + +vector2 sign(vector2 a) +{ + return vector2(sign(a.x), + sign(a.y)); +} + +vector2 sin(vector2 a) +{ + return vector2(sin(a.x), + sin(a.y)); +} + +vector2 cos(vector2 a) +{ + return vector2(cos(a.x), + cos(a.y)); +} + +vector2 tan(vector2 a) +{ + return vector2(tan(a.x), + tan(a.y)); +} + +vector2 asin(vector2 a) +{ + return vector2(asin(a.x), + asin(a.y)); +} + +vector2 acos(vector2 a) +{ + return vector2(acos(a.x), + acos(a.y)); +} + +vector2 atan2(vector2 a, float f) +{ + return vector2(atan2(a.x, f), + atan2(a.y, f)); +} + +vector2 atan2(vector2 a, vector2 b) +{ + return vector2(atan2(a.x, b.x), + atan2(a.y, b.y)); +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define VECTOR4_H + + +// vector4 is a 4D vector +struct vector4 +{ + float x; + float y; + float z; + float w; +}; + + + +// +// For vector4, define math operators to match vector +// + +vector4 __operator__neg__(vector4 a) +{ + return vector4(-a.x, -a.y, -a.z, -a.w); +} + +vector4 __operator__add__(vector4 a, vector4 b) +{ + return vector4(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w); +} + +vector4 __operator__add__(vector4 a, int b) +{ + return a + vector4(b, b, b, b); +} + +vector4 __operator__add__(vector4 a, float b) +{ + return a + vector4(b, b, b, b); +} + +vector4 __operator__add__(int a, vector4 b) +{ + return vector4(a, a, a, a) + b; +} + +vector4 __operator__add__(float a, vector4 b) +{ + return vector4(a, a, a, a) + b; +} + +vector4 __operator__sub__(vector4 a, vector4 b) +{ + return vector4(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w); +} + +vector4 __operator__sub__(vector4 a, int b) +{ + return a - vector4(b, b, b, b); +} + +vector4 __operator__sub__(vector4 a, float b) +{ + return a - vector4(b, b, b, b); +} + +vector4 __operator__sub__(int a, vector4 b) +{ + return vector4(a, a, a, a) - b; +} + +vector4 __operator__sub__(float a, vector4 b) +{ + return vector4(a, a, a, a) - b; +} + +vector4 __operator__mul__(vector4 a, vector4 b) +{ + return vector4(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w); +} + +vector4 __operator__mul__(vector4 a, int b) +{ + return a * vector4(b, b, b, b); +} + +vector4 __operator__mul__(vector4 a, float b) +{ + return a * vector4(b, b, b, b); +} + +vector4 __operator__mul__(int a, vector4 b) +{ + return vector4(a, a, a, a) * b; +} + +vector4 __operator__mul__(float a, vector4 b) +{ + return vector4(a, a, a, a) * b; +} + +vector4 __operator__div__(vector4 a, vector4 b) +{ + return vector4(a.x / b.x, a.y / b.y, a.z / b.z, a.w / b.w); +} + +vector4 __operator__div__(vector4 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * vector4(b_inv, b_inv, b_inv, b_inv); +} + +vector4 __operator__div__(vector4 a, float b) +{ + float b_inv = 1.0 / b; + return a * vector4(b_inv, b_inv, b_inv, b_inv); +} + +vector4 __operator__div__(int a, vector4 b) +{ + return vector4(a, a, a, a) / b; +} + +vector4 __operator__div__(float a, vector4 b) +{ + return vector4(a, a, a, a) / b; +} + +int __operator__eq__(vector4 a, vector4 b) +{ + return (a.x == b.x) && (a.y == b.y) && (a.z == b.z) && (a.w == b.w); +} + +int __operator__neq__(vector4 a, vector4 b) +{ + return (a.x != b.x) || (a.y != b.y) || (a.z != b.z) || (a.w != b.w); +} + + + + +// +// For vector4, define most of the stdosl functions to match vector +// + +vector4 abs(vector4 in) +{ + return vector4 (abs(in.x), + abs(in.y), + abs(in.z), + abs(in.w)); +} + +vector4 ceil(vector4 in) +{ + return vector4 (ceil(in.x), + ceil(in.y), + ceil(in.z), + ceil(in.w)); +} + +vector4 round(vector4 in) +{ + return vector4 (round(in.x), + round(in.y), + round(in.z), + round(in.w)); +} + +vector4 floor(vector4 in) +{ + return vector4 (floor(in.x), + floor(in.y), + floor(in.z), + floor(in.w)); +} + +vector4 sqrt(vector4 in) +{ + return vector4 (sqrt(in.x), + sqrt(in.y), + sqrt(in.z), + sqrt(in.w)); +} + +vector4 exp(vector4 in) +{ + return vector4 (exp(in.x), + exp(in.y), + exp(in.z), + exp(in.w)); +} + +vector4 log(vector4 in) +{ + return vector4 (log(in.x), + log(in.y), + log(in.z), + log(in.w)); +} + +vector4 log2(vector4 in) +{ + return vector4 (log2(in.x), + log2(in.y), + log2(in.z), + log2(in.w)); +} + +vector4 mix(vector4 value1, vector4 value2, float x ) +{ + return vector4 (mix( value1.x, value2.x, x), + mix( value1.y, value2.y, x), + mix( value1.z, value2.z, x), + mix( value1.w, value2.w, x)); +} + +vector4 mix(vector4 value1, vector4 value2, vector4 x ) +{ + return vector4 (mix( value1.x, value2.x, x.x), + mix( value1.y, value2.y, x.y), + mix( value1.z, value2.z, x.z), + mix( value1.w, value2.w, x.w)); +} + +vector vec4ToVec3(vector4 v) +{ + return vector(v.x, v.y, v.z) / v.w; +} + +float dot(vector4 a, vector4 b) +{ + return ((a.x * b.x) + (a.y * b.y) + (a.z * b.z) + (a.w * b.w)); +} + +float length (vector4 a) +{ + return sqrt (a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w); +} + +vector4 smoothstep(vector4 low, vector4 high, vector4 in) +{ + return vector4 (smoothstep(low.x, high.x, in.x), + smoothstep(low.y, high.y, in.y), + smoothstep(low.z, high.z, in.z), + smoothstep(low.w, high.w, in.w)); +} + +vector4 smoothstep(float low, float high, vector4 in) +{ + return vector4 (smoothstep(low, high, in.x), + smoothstep(low, high, in.y), + smoothstep(low, high, in.z), + smoothstep(low, high, in.w)); +} + +vector4 clamp(vector4 in, vector4 low, vector4 high) +{ + return vector4 (clamp(in.x, low.x, high.x), + clamp(in.y, low.y, high.y), + clamp(in.z, low.z, high.z), + clamp(in.w, low.w, high.w)); +} + +vector4 clamp(vector4 in, float low, float high) +{ + return vector4 (clamp(in.x, low, high), + clamp(in.y, low, high), + clamp(in.z, low, high), + clamp(in.w, low, high)); +} + +vector4 max(vector4 a, vector4 b) +{ + return vector4 (max(a.x, b.x), + max(a.y, b.y), + max(a.z, b.z), + max(a.w, b.w)); +} + +vector4 max(vector4 a, float b) +{ + return max(a, vector4(b, b, b, b)); +} + +vector4 min(vector4 a, vector4 b) +{ + return vector4 (min(a.x, b.x), + min(a.y, b.y), + min(a.z, b.z), + min(a.w, b.w)); +} + +vector4 min(vector4 a, float b) +{ + return min(a, vector4(b, b, b, b)); +} + +vector4 normalize(vector4 a) +{ + return a / length(a); +} + +vector4 mod(vector4 a, vector4 b) +{ + return vector4(mod(a.x, b.x), + mod(a.y, b.y), + mod(a.z, b.z), + mod(a.w, b.w)); +} + +vector4 mod(vector4 a, float b) +{ + return mod(a, vector4(b, b, b, b)); +} + +vector4 fmod(vector4 a, vector4 b) +{ + return vector4 (fmod(a.x, b.x), + fmod(a.y, b.y), + fmod(a.z, b.z), + fmod(a.w, b.w)); +} + +vector4 fmod(vector4 a, float b) +{ + return fmod(a, vector4(b, b, b, b)); +} + +vector4 pow(vector4 in, vector4 amount) +{ + return vector4 (pow(in.x, amount.x), + pow(in.y, amount.y), + pow(in.z, amount.z), + pow(in.w, amount.w)); +} + +vector4 pow(vector4 in, float amount) +{ + return vector4 (pow(in.x, amount), + pow(in.y, amount), + pow(in.z, amount), + pow(in.w, amount)); +} + +vector4 sign(vector4 a) +{ + return vector4(sign(a.x), + sign(a.y), + sign(a.z), + sign(a.w)); +} + +vector4 sin(vector4 a) +{ + return vector4(sin(a.x), + sin(a.y), + sin(a.z), + sin(a.w)); +} + +vector4 cos(vector4 a) +{ + return vector4(cos(a.x), + cos(a.y), + cos(a.z), + cos(a.w)); +} + +vector4 tan(vector4 a) +{ + return vector4(tan(a.x), + tan(a.y), + tan(a.z), + tan(a.w)); +} + +vector4 asin(vector4 a) +{ + return vector4(asin(a.x), + asin(a.y), + asin(a.z), + asin(a.w)); +} + +vector4 acos(vector4 a) +{ + return vector4(acos(a.x), + acos(a.y), + acos(a.z), + acos(a.w)); +} + +vector4 atan2(vector4 a, float f) +{ + return vector4(atan2(a.x, f), + atan2(a.y, f), + atan2(a.z, f), + atan2(a.w, f)); +} + +vector4 atan2(vector4 a, vector4 b) +{ + return vector4(atan2(a.x, b.x), + atan2(a.y, b.y), + atan2(a.z, b.z), + atan2(a.w, b.w)); +} + + +vector4 transform (matrix M, vector4 p) +{ + return vector4 (M[0][0]*p.x + M[1][0]*p.y + M[2][0]*p.z + M[3][0]*p.w, + M[0][1]*p.x + M[1][1]*p.y + M[2][1]*p.z + M[3][1]*p.w, + M[0][2]*p.x + M[1][2]*p.y + M[2][2]*p.z + M[3][2]*p.w, + M[0][3]*p.x + M[1][3]*p.y + M[2][3]*p.z + M[3][3]*p.w); +} + +vector4 transform (string fromspace, string tospace, vector4 p) +{ + return transform (matrix(fromspace,tospace), p); +} +vector2 mx_transform_uv(vector2 texcoord) +{ + return texcoord; +} +vector2 mx_transform_uv(vector2 texcoord) +{ + return vector2(texcoord.x, 1.0 - texcoord.y); +} +// Adds some syntactic sugar allowing mixing vector4 and color4 as +// arguments of some binary operators used by OCIO transform code. + +vector4 __operator__mul__(matrix m, vector4 v) +{ + return transform(m, v); +} + +vector4 __operator__mul__(color4 c, vector4 v) +{ + return vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a) * v; +} + +vector4 __operator__mul__(vector4 v, color4 c) +{ + return c * v; +} + +vector4 __operator__sub__(color4 c, vector4 v) +{ + return vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a) - v; +} + +vector4 __operator__add__(vector4 v, color4 c) +{ + return v + vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a); +} + +vector4 __operator__add__(color4 c, vector4 v) +{ + return v + c; +} + +vector4 pow(color4 c, vector4 v) +{ + return pow(vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a), v); +} + +vector4 max(vector4 v, color4 c) +{ + return max(v, vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a)); +} +#include "mx_burn_float.osl" + +void mx_burn_color3(color fg, color bg, float mix, output color result) +{ + mx_burn_float(fg[0], bg[0], mix, result[0]); + mx_burn_float(fg[1], bg[1], mix, result[1]); + mx_burn_float(fg[2], bg[2], mix, result[2]); +} +#include "mx_burn_float.osl" + +void mx_burn_color4(color4 fg, color4 bg, float mix, output color4 result) +{ + mx_burn_float(fg.rgb[0], bg.rgb[0], mix, result.rgb[0]); + mx_burn_float(fg.rgb[1], bg.rgb[1], mix, result.rgb[1]); + mx_burn_float(fg.rgb[2], bg.rgb[2], mix, result.rgb[2]); + mx_burn_float(fg.a, bg.a, mix, result.a); +} +void mx_burn_float(float fg, float bg, float mix, output float result) +{ + if (abs(fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mix*(1.0 - ((1.0 - bg) / fg)) + ((1.0-mix)*bg); +} +void mx_cellnoise2d_float(vector2 texcoord, output float result) +{ + result = cellnoise(texcoord.x, texcoord.y); +} +void mx_cellnoise3d_float(vector position, output float result) +{ + result = cellnoise(position); +} +void mx_creatematrix_vector3_matrix33(vector in1, vector in2, vector in3, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_creatematrix_vector3_matrix44(vector in1, vector in2, vector in3, vector in4, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + in4.x, in4.y, in4.z, 1.0); +} + +void mx_creatematrix_vector4_matrix44(vector4 in1, vector4 in2, vector4 in3, vector4 in4, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, in1.w, + in2.x, in2.y, in2.z, in2.w, + in3.x, in3.y, in3.z, in3.w, + in4.x, in4.y, in4.z, in4.w); +} +void mx_disjointover_color4(color4 fg, color4 bg, float mix, output color4 result) +{ + float summedAlpha = fg.a + bg.a; + + if (summedAlpha <= 1) + { + result.rgb = fg.rgb + bg.rgb; + } + else + { + if (abs(bg.a) < M_FLOAT_EPS) + { + result.rgb = 0.0; + } + else + { + float x = (1 - fg.a) / bg.a; + result.rgb = fg.rgb + bg.rgb * x; + } + } + result.a = min(summedAlpha, 1.0); + + result.rgb = result.rgb * mix + (1.0 - mix) * bg.rgb; + result.a = result.a * mix + (1.0 - mix) * bg.a; +} +#include "mx_dodge_float.osl" + +void mx_dodge_color3(color fg, color bg, float mix, output color result) +{ + mx_dodge_float(fg[0], bg[0], mix, result[0]); + mx_dodge_float(fg[1], bg[1], mix, result[1]); + mx_dodge_float(fg[2], bg[2], mix, result[2]); +} +#include "mx_dodge_float.osl" + +void mx_dodge_color4(color4 fg , color4 bg , float mix , output color4 result) +{ + mx_dodge_float(fg.rgb[0], bg.rgb[0], mix, result.rgb[0]); + mx_dodge_float(fg.rgb[1], bg.rgb[1], mix, result.rgb[1]); + mx_dodge_float(fg.rgb[2], bg.rgb[2], mix, result.rgb[2]); + mx_dodge_float(fg.a, bg.a, mix, result.a); +} +void mx_dodge_float(float fg, float bg, float mix, output float out) +{ + if (abs(1.0 - fg) < M_FLOAT_EPS) + { + out = 0.0; + return; + } + out = mix*(bg / (1.0 - fg)) + ((1.0-mix)*bg); +} +void mx_fractal2d_float(float amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output float result) +{ + float f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector2(vector2 amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector2 result) +{ + vector2 f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector3(vector amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector result) +{ + vector f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector4 result) +{ + vector4 f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_float(float amplitude, int octaves, float lacunarity, float diminish, vector position, output float result) +{ + float f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector2(vector2 amplitude, int octaves, float lacunarity, float diminish, vector position, output vector2 result) +{ + vector2 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector3(vector amplitude, int octaves, float lacunarity, float diminish, vector position, output vector result) +{ + vector f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector position, output vector4 result) +{ + vector4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_frame_float(output float result) +{ + // Use the standard default value if the attribute is not present. + result = 1.0; + getattribute("frame", result); +} +void mx_geomcolor_color3(int index, output color result) +{ + getattribute("color", result); +} +void mx_geomcolor_color4(int index, output color4 result) +{ + float value[4]; + getattribute("color", value); + result.rgb[0] = value[0]; + result.rgb[1] = value[1]; + result.rgb[2] = value[2]; + result.a = value[3]; +} +void mx_geomcolor_float(int index, output float result) +{ + getattribute("color", result); +} +void mx_geompropvalue_boolean(string geomprop, int defaultVal, output int out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_color(string geomprop, color defaultVal, output color out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_color4(string geomprop, color4 defaultVal, output color4 out) +{ + float value[4]; + if (getattribute(geomprop, value) == 0) + { + out.rgb = defaultVal.rgb; + out.a = defaultVal.a; + } + else + { + out.rgb[0] = value[0]; + out.rgb[1] = value[1]; + out.rgb[2] = value[2]; + out.a = value[3]; + } +} +void mx_geompropvalue_float(string geomprop, float defaultVal, output float result) +{ + if (getattribute(geomprop, result) == 0) + { + result = defaultVal; + } +} +void mx_geompropvalue_integer(string geomprop, int defaultVal, output int out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_string(string geomprop, string defaultVal, output string out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_vector2(string geomprop, vector2 defaultVal, output vector2 out) +{ + float value[2]; + if (getattribute(geomprop, value) == 0) + { + out = defaultVal; + } + else + { + out.x = value[0]; + out.y = value[1]; + } +} +void mx_geompropvalue_vector(string geomprop, vector defaultVal, output vector out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_vector4(string geomprop, vector4 defaultVal, output vector4 out) +{ + float value[4]; + if (getattribute(geomprop, value) == 0) + { + out = defaultVal; + } + else + { + out.x = value[0]; + out.y = value[1]; + out.z = value[2]; + out.w = value[3]; + } +} +void mx_heighttonormal_vector3(float height, float scale, vector2 texcoord, output vector result) +{ + // Scale factor for parity with traditional Sobel filtering. + float SOBEL_SCALE_FACTOR = 1.0 / 16.0; + + // Compute screen-space gradients of the heightfield and texture coordinates. + vector2 dHdS = vector2(Dx(height), Dy(height)) * scale * SOBEL_SCALE_FACTOR; + vector2 dUdS = vector2(Dx(texcoord.x), Dy(texcoord.x)); + vector2 dVdS = vector2(Dx(texcoord.y), Dy(texcoord.y)); + + // Construct a screen-space tangent frame. + vector tangent = vector(dUdS.x, dVdS.x, dHdS.x); + vector bitangent = vector(dUdS.y, dVdS.y, dHdS.y); + vector n = cross(tangent, bitangent); + + // Handle invalid and mirrored texture coordinates. + if (dot(n, n) < M_FLOAT_EPS * M_FLOAT_EPS) + { + n = vector(0, 0, 1); + } + else if (n[2] < 0.0) + { + n *= -1.0; + } + + // Normalize and encode the results. + result = normalize(n) * 0.5 + 0.5; +} +void mx_hsvtorgb_color3(vector _in, output vector result) +{ + result = transformc("hsv","rgb", _in); +} +void mx_hsvtorgb_color4(color4 _in, output color4 result) +{ + result = color4(transformc("hsv","rgb", _in.rgb), 1.0); +} +#include "lib/$fileTransformUv" + +void mx_image_color3(textureresource file, string layer, color default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output color out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value; + vector2 st = mx_transform_uv(texcoord); + out = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + , "colorspace", file.colorspace +#endif + ); +} +#include "lib/$fileTransformUv" + +void mx_image_color4(textureresource file, string layer, color4 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output color4 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value.rgb; + float missingAlpha = default_value.a; + vector2 st = mx_transform_uv(texcoord); + float alpha; + color rgb = texture(file.filename, st.x, st.y, "alpha", alpha, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, "missingalpha", missingAlpha, + "swrap", uaddressmode, "twrap", vaddressmode +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + , "colorspace", file.colorspace +#endif + ); + + out = color4(rgb, alpha); +} +#include "lib/$fileTransformUv" + +void mx_image_float(textureresource file, string layer, float default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output float out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value); + vector2 st = mx_transform_uv(texcoord); + color rgb = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); + out = rgb[0]; +} +#include "lib/$fileTransformUv" + +void mx_image_vector2(textureresource file, string layer, vector2 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector2 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value.x, default_value.y, 0.0); + vector2 st = mx_transform_uv(texcoord); + color rgb = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); + out.x = rgb[0]; + out.y = rgb[1]; +} +#include "lib/$fileTransformUv" + +void mx_image_vector3(textureresource file, string layer, vector default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value; + vector2 st = mx_transform_uv(texcoord); + out = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); +} +#include "lib/$fileTransformUv" + +void mx_image_vector4(textureresource file, string layer, vector4 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector4 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value.x, default_value.y, default_value.z); + float missingAlpha = default_value.w; + vector2 st = mx_transform_uv(texcoord); + float alpha; + color rgb = texture(file.filename, st.x, st.y, "alpha", alpha, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, "missingalpha", missingAlpha, + "swrap", uaddressmode, "twrap", vaddressmode); + + out = vector4(rgb[0], rgb[1], rgb[2], alpha); +} +void mx_luminance_color3(color in, color lumacoeffs, output color result) +{ + result = dot(in, lumacoeffs); +} +void mx_luminance_color4(color4 in, color lumacoeffs, output color4 result) +{ + result = color4(dot(in.rgb, lumacoeffs), in.a); +} +void mx_mix_surfaceshader(surfaceshader fg, surfaceshader bg, float w, output surfaceshader result) +{ + result.bsdf = mix(bg.bsdf, fg.bsdf, w); + result.edf = mix(bg.edf, fg.edf, w); + result.opacity = mix(bg.opacity, fg.opacity, w); +} +void mx_noise2d_float(float amplitude, float pivot, vector2 texcoord, output float result) +{ + float value = noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector2(vector2 amplitude, float pivot, vector2 texcoord, output vector2 result) +{ + vector2 value = mx_noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector3(vector amplitude, float pivot, vector2 texcoord, output vector result) +{ + vector value = noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector4(vector4 amplitude, float pivot, vector2 texcoord, output vector4 result) +{ + vector4 value = mx_noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise3d_float(float amplitude, float pivot, vector position, output float result) +{ + float value = noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector2(vector2 amplitude, float pivot, vector position, output vector2 result) +{ + vector2 value = mx_noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector3(vector amplitude, float pivot, vector position, output vector result) +{ + vector value = noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector4(vector4 amplitude, float pivot, vector position, output vector4 result) +{ + vector4 value = mx_noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_normalmap_vector2(vector value, vector2 normal_scale, vector N, vector T, vector B, output vector result) +{ + if (value == vector(0.0)) + { + result = N; + } + else + { + // The OSL backend uses dPdu and dPdv for tangents and bitangents, but these vectors are not + // guaranteed to be orthonormal. + // + // Orthogonalize the tangent frame using Gram-Schmidt, unlike in the other backends. + // + vector v = value * 2.0 - 1.0; + vector Tn = normalize(T - dot(T, N) * N); + vector Bn = normalize(B - dot(B, N) * N - dot(B, Tn) * Tn); + result = normalize(Tn * v[0] * normal_scale.x + Bn * v[1] * normal_scale.y + N * v[2]); + } +} + +void mx_normalmap_float(vector value, float normal_scale, vector N, vector T, vector B, output vector result) +{ + mx_normalmap_vector2(value, vector2(normal_scale, normal_scale), N, T, B, result); +} +void mx_premult_color4(color4 in, output color4 result) +{ + result = color4(in.rgb * in.a, in.a); +} +void mx_rgbtohsv_color3(vector _in, output vector result) +{ + result = transformc("rgb","hsv", _in); +} +void mx_rgbtohsv_color4(color4 _in, output color4 result) +{ + result = color4(transformc("rgb","hsv", _in.rgb), 1.0); +} +void mx_rotate_vector2(vector2 _in, float amount, output vector2 result) +{ + float rotationRadians = radians(amount); + float sa = sin(rotationRadians); + float ca = cos(rotationRadians); + result = vector2(ca*_in.x + sa*_in.y, -sa*_in.x + ca*_in.y); +} +matrix rotationMatrix(vector axis, float angle) +{ + vector nAxis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return matrix(oc * nAxis[0] * nAxis[0] + c, oc * nAxis[0] * nAxis[1] - nAxis[2] * s, oc * nAxis[2] * nAxis[0] + nAxis[1] * s, 0.0, + oc * nAxis[0] * nAxis[1] + nAxis[2] * s, oc * nAxis[1] * nAxis[1] + c, oc * nAxis[1] * nAxis[2] - nAxis[0] * s, 0.0, + oc * nAxis[2] * nAxis[0] - nAxis[1] * s, oc * nAxis[1] * nAxis[2] + nAxis[0] * s, oc * nAxis[2] * nAxis[2] + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_rotate_vector3(vector _in, float amount, vector axis, output vector result) +{ + float rotationRadians = radians(amount); + matrix m = rotationMatrix(axis, rotationRadians); + vector4 trans = transform(m, vector4(_in[0], _in[1], _in[2], 1.0)); + result = vector(trans.x, trans.y, trans.z); +} +void mx_surface_unlit(float emission_weight, color emission_color, float transmission_weight, color transmission_color, float opacity, output surfaceshader result) +{ + float trans = clamp(transmission_weight, 0.0, 1.0); + result.bsdf = trans * transmission_color * transparent(); + result.edf = (1.0 - trans) * emission_weight * emission_color * emission(); + result.opacity = clamp(opacity, 0.0, 1.0); +} +void mx_surfacematerial(surfaceshader surface, surfaceshader back, displacementshader disp, output MATERIAL result) +{ + float opacity_weight = clamp(surface.opacity, 0.0, 1.0); + result = (surface.bsdf + surface.edf) * opacity_weight + transparent() * (1.0 - opacity_weight); +} +void mx_time_float(float fps, output float result) +{ + // Use the standard default value if the attribute is not present. + result = 0.0; + getattribute("time", result); +} +void mx_transformmatrix_vector2M3(vector2 val, matrix m, output vector2 result) +{ + point res = transform(m, point(val.x, val.y, 1.0)); + result.x = res[0]; + result.y = res[1]; +} +void mx_unpremult_color4(color4 in, output color4 result) +{ + result = color4(in.rgb / in.a, in.a); +} +void mx_worleynoise2d_float(vector2 texcoord, float jitter, int style, output float result) +{ + result = mx_worley_noise_float(texcoord, jitter, style, 0); +} +void mx_worleynoise2d_vector2(vector2 texcoord, float jitter, int style, output vector2 result) +{ + result = mx_worley_noise_vector2(texcoord, jitter, style, 0); +} +void mx_worleynoise2d_vector3(vector2 texcoord, float jitter, int style, output vector result) +{ + result = mx_worley_noise_vector3(texcoord, jitter, style, 0); +} +void mx_worleynoise3d_float(vector position, float jitter, int style, output float result) +{ + result = mx_worley_noise_float(position, jitter, style, 0); +} +void mx_worleynoise3d_vector2(vector position, float jitter, int style, output vector2 result) +{ + result = mx_worley_noise_vector2(position, jitter, style, 0); +} +void mx_worleynoise3d_vector3(vector position, float jitter, int style, output vector result) +{ + result = mx_worley_noise_vector3(position, jitter, style, 0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js new file mode 100644 index 0000000..f37f833 --- /dev/null +++ b/Needle/MenuScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js @@ -0,0 +1 @@ +import{l as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/MenuScene.glb b/Needle/MenuScene/dist/assets/MenuScene.glb new file mode 100644 index 0000000..5cd87fe --- /dev/null +++ b/Needle/MenuScene/dist/assets/MenuScene.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39a12ecb1de4059d0062999fefda3f23cc2d568ef1ebb8dcfe1c974a084bd7d4 +size 84700 diff --git a/Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js b/Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js new file mode 100644 index 0000000..e157149 --- /dev/null +++ b/Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js @@ -0,0 +1 @@ +import{n as e,r as t,t as n}from"./postprocessing.ao.BRYreHJS.js";export{e as DepthType,n as N8AOPass,t as N8AOPostPass}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js.gz b/Needle/MenuScene/dist/assets/N8AO.C2WXsanG.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..bdeed562108bd76678476f1aa1bc94d7ad2723b6 GIT binary patch literal 119 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 Pp!_U@7ZLm$jNbnMWu0|t literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js b/Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js new file mode 100644 index 0000000..d5e7fe3 --- /dev/null +++ b/Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js @@ -0,0 +1,3574 @@ +(function(){var e={url:self.location.href}; +/** +* @license +* Copyright 2010-2024 Three.js Authors +* SPDX-License-Identifier: MIT +*/ +let t=`169.19`,n=1e3,r=1001,i=1002,a=1003,o=1006,s=1008,c=2300,l=2301,u=2302,d=2400,f=2401,p=2402,m=`srgb`,h=`srgb-linear`,g=`display-p3-linear`,_=`linear`,v=`srgb`,y=`rec709`,b=35044,x=2e3;var S=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+C[e>>16&255]+C[e>>24&255]+`-`+C[t&255]+C[t>>8&255]+`-`+C[t>>16&15|64]+C[t>>24&255]+`-`+C[n&63|128]+C[n>>8&255]+`-`+C[n>>16&255]+C[n>>24&255]+C[r&255]+C[r>>8&255]+C[r>>16&255]+C[r>>24&255]).toLowerCase()}function w(e,t,n){return Math.max(t,Math.min(n,e))}function ie(e,t){return(e%t+t)%t}function ae(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function oe(e,t,n){return e===t?0:(n-e)/(t-e)}function se(e,t,n){return(1-n)*e+n*t}function ce(e,t,n,r){return se(e,t,1-Math.exp(-n*r))}function le(e,t=1){return t-Math.abs(ie(e,t*2)-t)}function ue(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function de(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function fe(e,t){return e+Math.floor(Math.random()*(t-e+1))}function pe(e,t){return e+Math.random()*(t-e)}function me(e){return e*(.5-Math.random())}function he(e){e!==void 0&&(ee=e);let t=ee+=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 ge(e){return e*te}function _e(e){return e*ne}function ve(e){return(e&e-1)==0&&e!==0}function ye(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function be(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function xe(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function Se(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 T(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.`)}}let Ce={DEG2RAD:te,RAD2DEG:ne,generateUUID:re,clamp:w,euclideanModulo:ie,mapLinear:ae,inverseLerp:oe,lerp:se,damp:ce,pingpong:le,smoothstep:ue,smootherstep:de,randInt:fe,randFloat:pe,randFloatSpread:me,seededRandom:he,degToRad:ge,radToDeg:_e,isPowerOfTwo:ve,ceilPowerOfTwo:ye,floorPowerOfTwo:be,setQuaternionFromProperEuler:xe,normalize:T,denormalize:Se};var E=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(w(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}},D=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(we.makeScale(e,t)),this}rotate(e){return this.premultiply(we.makeRotation(-e)),this}translate(e,t){return this.premultiply(we.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)}};let we=new D;function Te(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}function Ee(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}let De=new D().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Oe=new D().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),ke={[h]:{transfer:_,primaries:y,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[m]:{transfer:v,primaries:y,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[g]:{transfer:_,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Oe),fromReference:e=>e.applyMatrix3(De)},"display-p3":{transfer:v,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Oe),fromReference:e=>e.applyMatrix3(De).convertLinearToSRGB()}},Ae=new Set([h,g]),je={enabled:!0,_workingColorSpace:h,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!Ae.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=ke[t].toReference,i=ke[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return ke[e].primaries},getTransfer:function(e){return e===``?_:ke[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(ke[t].luminanceCoefficients)}};function Me(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Ne(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}let Pe;var Fe=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Pe===void 0&&(Pe=Ee(`canvas`)),Pe.width=e.width,Pe.height=e.height;let n=Pe.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Pe}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=Ee(`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;e0&&(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 n:e.x-=Math.floor(e.x);break;case r:e.x=e.x<0?0:1;break;case i: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 n:e.y-=Math.floor(e.y);break;case r:e.y=e.y<0?0:1;break;case i: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++}};Be.DEFAULT_IMAGE=null,Be.DEFAULT_MAPPING=300,Be.DEFAULT_ANISOTROPY=4;var Ve=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(w(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},O=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(Ge.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ge.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 We.copy(this).projectOnVector(e),this.sub(We)}reflect(e){return this.sub(We.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(w(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}};let We=new O,Ge=new Ue;var Ke=class{constructor(e=new O(1/0,1/0,1/0),t=new O(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Je),Je.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(nt),rt.subVectors(this.max,nt),Xe.subVectors(e.a,nt),Ze.subVectors(e.b,nt),Qe.subVectors(e.c,nt),$e.subVectors(Ze,Xe),et.subVectors(Qe,Ze),tt.subVectors(Xe,Qe);let t=[0,-$e.z,$e.y,0,-et.z,et.y,0,-tt.z,tt.y,$e.z,0,-$e.x,et.z,0,-et.x,tt.z,0,-tt.x,-$e.y,$e.x,0,-et.y,et.x,0,-tt.y,tt.x,0];return!ot(t,Xe,Ze,Qe,rt)||(t=[1,0,0,0,1,0,0,0,1],!ot(t,Xe,Ze,Qe,rt))?!1:(it.crossVectors($e,et),t=[it.x,it.y,it.z],ot(t,Xe,Ze,Qe,rt))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Je).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Je).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:(qe[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),qe[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),qe[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),qe[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),qe[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),qe[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),qe[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),qe[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(qe),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)}};let qe=[new O,new O,new O,new O,new O,new O,new O,new O],Je=new O,Ye=new Ke,Xe=new O,Ze=new O,Qe=new O,$e=new O,et=new O,tt=new O,nt=new O,rt=new O,it=new O,at=new O;function ot(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){at.fromArray(e,a);let o=i.x*Math.abs(at.x)+i.y*Math.abs(at.y)+i.z*Math.abs(at.z),s=t.dot(at),c=n.dot(at),l=r.dot(at);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}let st=new Ke,ct=new O,lt=new O;var ut=class{constructor(e=new O,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?st.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;ct.subVectors(e,this.center);let t=ct.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(ct,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):(lt.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ct.copy(e.center).add(lt)),this.expandByPoint(ct.copy(e.center).sub(lt))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};let dt=new O,ft=new O,pt=new O,mt=new O,ht=new O,gt=new O,_t=new O;var vt=class{constructor(e=new O,t=new O(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,dt)),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=dt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(dt.copy(this.origin).addScaledVector(this.direction,t),dt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){ft.copy(e).add(t).multiplyScalar(.5),pt.copy(t).sub(e).normalize(),mt.copy(this.origin).sub(ft);let i=e.distanceTo(t)*.5,a=-this.direction.dot(pt),o=mt.dot(this.direction),s=-mt.dot(pt),c=mt.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(ft).addScaledVector(pt,d),f}intersectSphere(e,t){dt.subVectors(e.center,this.origin);let n=dt.dot(this.direction),r=dt.dot(dt)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,dt)!==null}intersectTriangle(e,t,n,r,i){ht.subVectors(t,e),gt.subVectors(n,e),_t.crossVectors(ht,gt);let a=this.direction.dot(_t),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;mt.subVectors(this.origin,e);let s=o*this.direction.dot(gt.crossVectors(mt,gt));if(s<0)return null;let c=o*this.direction.dot(ht.cross(mt));if(c<0||s+c>a)return null;let l=-o*mt.dot(_t);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)}},yt=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/bt.setFromMatrixColumn(e,0).length(),i=1/bt.setFromMatrixColumn(e,1).length(),a=1/bt.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(St,e,Ct)}lookAt(e,t,n){let r=this.elements;return Et.subVectors(e,t),Et.lengthSq()===0&&(Et.z=1),Et.normalize(),wt.crossVectors(n,Et),wt.lengthSq()===0&&(Math.abs(n.z)===1?Et.x+=1e-4:Et.z+=1e-4,Et.normalize(),wt.crossVectors(n,Et)),wt.normalize(),Tt.crossVectors(Et,wt),r[0]=wt.x,r[4]=Tt.x,r[8]=Et.x,r[1]=wt.y,r[5]=Tt.y,r[9]=Et.y,r[2]=wt.z,r[6]=Tt.z,r[10]=Et.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],ee=r[12],te=r[1],ne=r[5],re=r[9],w=r[13],ie=r[2],ae=r[6],oe=r[10],se=r[14],ce=r[3],le=r[7],ue=r[11],de=r[15];return i[0]=a*x+o*te+s*ie+c*ce,i[4]=a*S+o*ne+s*ae+c*le,i[8]=a*C+o*re+s*oe+c*ue,i[12]=a*ee+o*w+s*se+c*de,i[1]=l*x+u*te+d*ie+f*ce,i[5]=l*S+u*ne+d*ae+f*le,i[9]=l*C+u*re+d*oe+f*ue,i[13]=l*ee+u*w+d*se+f*de,i[2]=p*x+m*te+h*ie+g*ce,i[6]=p*S+m*ne+h*ae+g*le,i[10]=p*C+m*re+h*oe+g*ue,i[14]=p*ee+m*w+h*se+g*de,i[3]=_*x+v*te+y*ie+b*ce,i[7]=_*S+v*ne+y*ae+b*le,i[11]=_*C+v*re+y*oe+b*ue,i[15]=_*ee+v*w+y*se+b*de,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=bt.set(r[0],r[1],r[2]).length(),a=bt.set(r[4],r[5],r[6]).length(),o=bt.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],xt.copy(this);let s=1/i,c=1/a,l=1/o;return xt.elements[0]*=s,xt.elements[1]*=s,xt.elements[2]*=s,xt.elements[4]*=c,xt.elements[5]*=c,xt.elements[6]*=c,xt.elements[8]*=l,xt.elements[9]*=l,xt.elements[10]*=l,t.setFromRotationMatrix(xt),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=x){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=x){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}};let bt=new O,xt=new yt,St=new O(0,0,0),Ct=new O(1,1,1),wt=new O,Tt=new O,Et=new O,Dt=new yt,Ot=new Ue;var kt=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(w(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(-w(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(w(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(-w(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(w(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(-w(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Dt.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Dt,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Ot.setFromEuler(this),this.setFromQuaternion(Ot,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}};kt.DEFAULT_ORDER=`XYZ`;var At=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){qt.subVectors(r,t),Jt.subVectors(n,t),Yt.subVectors(e,t);let a=qt.dot(qt),o=qt.dot(Jt),s=qt.dot(Yt),c=Jt.dot(Jt),l=Jt.dot(Yt),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,Xt)===null?!1:Xt.x>=0&&Xt.y>=0&&Xt.x+Xt.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Xt)===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,Xt.x),s.addScaledVector(a,Xt.y),s.addScaledVector(o,Xt.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return rn.setScalar(0),an.setScalar(0),on.setScalar(0),rn.fromBufferAttribute(e,t),an.fromBufferAttribute(e,n),on.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(rn,i.x),a.addScaledVector(an,i.y),a.addScaledVector(on,i.z),a}static isFrontFacing(e,t,n,r){return qt.subVectors(n,t),Jt.subVectors(e,t),qt.cross(Jt).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 qt.subVectors(this.c,this.b),Jt.subVectors(this.a,this.b),qt.cross(Jt).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;Zt.subVectors(r,n),Qt.subVectors(i,n),en.subVectors(e,n);let s=Zt.dot(en),c=Qt.dot(en);if(s<=0&&c<=0)return t.copy(n);tn.subVectors(e,r);let l=Zt.dot(tn),u=Qt.dot(tn);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(Zt,a);nn.subVectors(e,i);let f=Zt.dot(nn),p=Qt.dot(nn);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(Qt,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return $t.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector($t,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Zt,a).addScaledVector(Qt,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};let cn={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},ln={h:0,s:0,l:0},un={h:0,s:0,l:0};function dn(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 fn=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=m){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,je.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=je.workingColorSpace){return this.r=e,this.g=t,this.b=n,je.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=je.workingColorSpace){if(e=ie(e,1),t=w(t,0,1),n=w(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=dn(i,r,e+1/3),this.g=dn(i,r,e),this.b=dn(i,r,e-1/3)}return je.toWorkingColorSpace(this,r),this}setStyle(e,t=m){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=m){let n=cn[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=Me(e.r),this.g=Me(e.g),this.b=Me(e.b),this}copyLinearToSRGB(e){return this.r=Ne(e.r),this.g=Ne(e.g),this.b=Ne(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=m){return je.fromWorkingColorSpace(pn.copy(this),e),Math.round(w(pn.r*255,0,255))*65536+Math.round(w(pn.g*255,0,255))*256+Math.round(w(pn.b*255,0,255))}getHexString(e=m){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=je.workingColorSpace){je.fromWorkingColorSpace(pn.copy(this),t);let n=pn.r,r=pn.g,i=pn.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+(r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e1?null:t.copy(e.start).addScaledVector(n,i)}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||An.getNormalMatrix(e),r=this.coplanarPoint(On).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)}};let j={alphahash_fragment:`#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`,alphamap_fragment:`#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`,alphamap_pars_fragment:`#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,alphatest_fragment:`#ifdef USE_ALPHATEST + #ifdef ALPHA_TO_COVERAGE + diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); + if ( diffuseColor.a == 0.0 ) discard; + #else + if ( diffuseColor.a < alphaTest ) discard; + #endif +#endif`,alphatest_pars_fragment:`#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`,aomap_fragment:`#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`,aomap_pars_fragment:`#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`,batching_pars_vertex:`#ifdef USE_BATCHING + #if ! defined( GL_ANGLE_multi_draw ) + #define gl_DrawID _gl_DrawID + uniform int _gl_DrawID; + #endif + uniform highp sampler2D batchingTexture; + uniform highp usampler2D batchingIdTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } + float getIndirectIndex( const in int i ) { + int size = textureSize( batchingIdTexture, 0 ).x; + int x = i % size; + int y = i / size; + return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); + } +#endif +#ifdef USE_BATCHING_COLOR + uniform sampler2D batchingColorTexture; + vec3 getBatchingColor( const in float i ) { + int size = textureSize( batchingColorTexture, 0 ).x; + int j = int( i ); + int x = j % size; + int y = j / size; + return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; + } +#endif`,batching_vertex:`#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); +#endif`,begin_vertex:`vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`,beginnormal_vertex:`vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`,bsdfs:`float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`,iridescence_fragment:`#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`,bumpmap_pars_fragment:`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,clipping_planes_fragment:`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},M={common:{diffuse:{value:new fn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new D},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new D}},envmap:{envMap:{value:null},envMapRotation:{value:new D},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new D}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new D}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new D},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new D},normalScale:{value:new E(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new D},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new D}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new D}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new D}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new fn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0},uvTransform:{value:new D}},sprite:{diffuse:{value:new fn(16777215)},opacity:{value:1},center:{value:new E(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new D},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0}}},Mn={basic:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.fog]),vertexShader:j.meshbasic_vert,fragmentShader:j.meshbasic_frag},lambert:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.fog,M.lights,{emissive:{value:new fn(0)}}]),vertexShader:j.meshlambert_vert,fragmentShader:j.meshlambert_frag},phong:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.fog,M.lights,{emissive:{value:new fn(0)},specular:{value:new fn(1118481)},shininess:{value:30}}]),vertexShader:j.meshphong_vert,fragmentShader:j.meshphong_frag},standard:{uniforms:Dn([M.common,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.roughnessmap,M.metalnessmap,M.fog,M.lights,{emissive:{value:new fn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:j.meshphysical_vert,fragmentShader:j.meshphysical_frag},toon:{uniforms:Dn([M.common,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.gradientmap,M.fog,M.lights,{emissive:{value:new fn(0)}}]),vertexShader:j.meshtoon_vert,fragmentShader:j.meshtoon_frag},matcap:{uniforms:Dn([M.common,M.bumpmap,M.normalmap,M.displacementmap,M.fog,{matcap:{value:null}}]),vertexShader:j.meshmatcap_vert,fragmentShader:j.meshmatcap_frag},points:{uniforms:Dn([M.points,M.fog]),vertexShader:j.points_vert,fragmentShader:j.points_frag},dashed:{uniforms:Dn([M.common,M.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:j.linedashed_vert,fragmentShader:j.linedashed_frag},depth:{uniforms:Dn([M.common,M.displacementmap]),vertexShader:j.depth_vert,fragmentShader:j.depth_frag},normal:{uniforms:Dn([M.common,M.bumpmap,M.normalmap,M.displacementmap,{opacity:{value:1}}]),vertexShader:j.meshnormal_vert,fragmentShader:j.meshnormal_frag},sprite:{uniforms:Dn([M.sprite,M.fog]),vertexShader:j.sprite_vert,fragmentShader:j.sprite_frag},background:{uniforms:{uvTransform:{value:new D},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:j.background_vert,fragmentShader:j.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new D}},vertexShader:j.backgroundCube_vert,fragmentShader:j.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:j.cube_vert,fragmentShader:j.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:j.equirect_vert,fragmentShader:j.equirect_frag},distanceRGBA:{uniforms:Dn([M.common,M.displacementmap,{referencePosition:{value:new O},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:j.distanceRGBA_vert,fragmentShader:j.distanceRGBA_frag},shadow:{uniforms:Dn([M.lights,M.fog,{color:{value:new fn(0)},opacity:{value:1}}]),vertexShader:j.shadow_vert,fragmentShader:j.shadow_frag}};Mn.physical={uniforms:Dn([Mn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new D},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new D},clearcoatNormalScale:{value:new E(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new D},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new D},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new D},sheen:{value:0},sheenColor:{value:new fn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new D},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new D},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new D},transmissionSamplerSize:{value:new E},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new D},attenuationDistance:{value:0},attenuationColor:{value:new fn(0)},specularColor:{value:new fn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new D},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new D},anisotropyVector:{value:new E},anisotropyMap:{value:null},anisotropyMapTransform:{value:new D}}]),vertexShader:j.meshphysical_vert,fragmentShader:j.meshphysical_frag};let Nn=(1+Math.sqrt(5))/2,Pn=1/Nn;-Nn,-Pn,-Pn;var Fn=class extends Be{constructor(e,t,n,r,i,o,s,c,l,u=1026){if(u!==1026&&u!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);n===void 0&&u===1026&&(n=1014),n===void 0&&u===1027&&(n=1020),super(null,r,i,o,s,c,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=s===void 0?a:s,this.minFilter=c===void 0?a:c,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},In=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=b,this.updateRanges=[],this.version=0,this.uuid=re()}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)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Vn(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===u,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Kn.prototype.TimeBufferType=Float32Array,Kn.prototype.ValueBufferType=Float32Array,Kn.prototype.DefaultInterpolation=l;var qn=class extends Kn{constructor(e,t,n){super(e,t,n)}};qn.prototype.ValueTypeName=`bool`,qn.prototype.ValueBufferType=Array,qn.prototype.DefaultInterpolation=c,qn.prototype.InterpolantFactoryMethodLinear=void 0,qn.prototype.InterpolantFactoryMethodSmooth=void 0;var Jn=class extends Kn{};Jn.prototype.ValueTypeName=`color`;var Yn=class extends Kn{};Yn.prototype.ValueTypeName=`number`;var Xn=class extends Hn{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)Ue.slerpFlat(i,0,a,c-o,a,c,s);return i}},Zn=class extends Kn{InterpolantFactoryMethodLinear(e){return new Xn(this.times,this.values,this.getValueSize(),e)}};Zn.prototype.ValueTypeName=`quaternion`,Zn.prototype.InterpolantFactoryMethodSmooth=void 0;var Qn=class extends Kn{constructor(e,t,n){super(e,t,n)}};Qn.prototype.ValueTypeName=`string`,Qn.prototype.ValueBufferType=Array,Qn.prototype.DefaultInterpolation=c,Qn.prototype.InterpolantFactoryMethodLinear=void 0,Qn.prototype.InterpolantFactoryMethodSmooth=void 0;var $n=class extends Kn{};$n.prototype.ValueTypeName=`vector`;let er=new class{constructor(e,t,n){let r=this,i=!1,a=0,o=0,s,c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){o++,i===!1&&r.onStart!==void 0&&r.onStart(e,a,o),i=!0},this.itemEnd=function(e){a++,r.onProgress!==void 0&&r.onProgress(e,a,o),a===o&&(i=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(e){r.onError!==void 0&&r.onError(e)},this.resolveURL=function(e){return s?s(e):e},this.setURLModifier=function(e){return s=e,this},this.addHandler=function(e,t){return c.push(e,t),this},this.removeHandler=function(e){let t=c.indexOf(e);return t!==-1&&c.splice(t,2),this},this.getHandler=function(e){for(let t=0,n=c.length;t>>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)}let fr=(...e)=>dr(e);function pr(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of mr(e))n.push(n,dr(r.slice(0,-4)),i.getCacheKey(t));return dr(n)}function*mr(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}let yr={VERTEX:`vertex`,FRAGMENT:`fragment`},P={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},br=[`x`,`y`,`z`,`w`],xr=0;var F=class extends S{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=P.NONE,this.updateBeforeType=P.NONE,this.updateAfterType=P.NONE,this.uuid=Ce.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:xr++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,P.FRAME)}onRenderUpdate(e){return this.onUpdate(e,P.RENDER)}onObjectUpdate(e){return this.onUpdate(e,P.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of mr(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=pr(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return mr(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Sr=class extends F{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Cr=class extends F{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},wr=class extends F{static get type(){return`TempNode`}constructor(e){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)}},Tr=class extends wr{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}};let Er=br.join(``);var Dr=class extends F{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(br.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===Er.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}},Or=class extends wr{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Pr=e=>Nr(e).split(``).sort().join(``),Fr={setup(e,t){return e(ai(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(null.assign(n,...e),n);if(Mr.has(t)){let r=Mr.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Mr.has(t.slice(0,t.length-6))){let r=Mr.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Nr(t),R(new Dr(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Pr(t.slice(3).toLowerCase()),n=>R(new Or(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Pr(t.slice(4).toLowerCase()),()=>R(new kr(R(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),R(new Dr(e,t));else if(/^\d+$/.test(t)===!0)return R(new Sr(n,new jr(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},Ir=new WeakMap,Lr=new WeakMap,Rr=function(e,t=null){let n=hr(e);if(n===`node`){let t=Ir.get(e);return t===void 0&&(t=new Proxy(e,Fr),Ir.set(e,t),Ir.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return R(ti(e,t));else if(n===`shader`)return B(e);return e},zr=function(e,t=null){for(let n in e)e[n]=R(e[n],t);return e},Br=function(e,t=null){let n=e.length;for(let r=0;rR(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...oi(t))):n===null?(...n)=>i(new e(t,...oi(n))):(n=R(n),(...r)=>i(new e(t,...oi(r),n)))},Hr=function(e,...t){return R(new e(...oi(t)))};var Ur=class extends F{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=Lr.get(e.constructor);r===void 0&&(r=new WeakMap,Lr.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=R(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=R(a.call(n))}else{let r=t.jsFunc;i=R(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},Wr=class extends F{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return ai(e),R(new Ur(this,e))}setup(){return this.call()}};let Gr=[!1,!0],Kr=[0,1,2,3],qr=[-1,-2],Jr=[.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],Yr=new Map;for(let e of Gr)Yr.set(e,new jr(e));let Xr=new Map;for(let e of Kr)Xr.set(e,new jr(e,`uint`));let Zr=new Map([...Xr].map(e=>new jr(e.value,`int`)));for(let e of qr)Zr.set(e,new jr(e,`int`));let Qr=new Map([...Zr].map(e=>new jr(e.value)));for(let e of Jr)Qr.set(e,new jr(e));for(let e of Jr)Qr.set(-e,new jr(-e));let $r={bool:Yr,uint:Xr,ints:Zr,float:Qr},ei=new Map([...Yr,...Qr]),ti=(e,t)=>ei.has(e)?ei.get(e):e.isNode===!0?e:new jr(e,t),ni=e=>{try{return e.getNodeType()}catch{return}},L=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[gr(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return R(t.get(n[0]));if(n.length===1){let t=ti(n[0],e);return ni(t)===e?R(t):R(new Cr(t,e))}return R(new Tr(n.map(e=>ti(e)),e))}},ri=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function ii(e,t){return new Proxy(new Wr(e,t),Fr)}let R=(e,t=null)=>Rr(e,t),ai=(e,t=null)=>new zr(e,t),oi=(e,t=null)=>new Br(e,t),z=(...e)=>new Vr(...e),si=(...e)=>new Hr(...e),B=(e,t)=>{let n=new ii(e,t),r=(...e)=>{let t;return ai(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r};I(`toGlobal`,e=>(e.global=!0,e));let ci=(...e)=>null.If(...e);function li(e){return e}I(`append`,li);let ui=new L(`color`),V=new L(`float`,$r.float),di=new L(`int`,$r.ints),fi=new L(`uint`,$r.uint),pi=new L(`bool`,$r.bool),H=new L(`vec2`),mi=new L(`ivec2`),hi=new L(`uvec2`),gi=new L(`bvec2`),U=new L(`vec3`),_i=new L(`ivec3`),vi=new L(`uvec3`),yi=new L(`bvec3`),bi=new L(`vec4`),xi=new L(`ivec4`),Si=new L(`uvec4`),Ci=new L(`bvec4`),wi=new L(`mat2`),Ti=new L(`mat3`),Ei=new L(`mat4`);I(`toColor`,ui),I(`toFloat`,V),I(`toInt`,di),I(`toUint`,fi),I(`toBool`,pi),I(`toVec2`,H),I(`toIVec2`,mi),I(`toUVec2`,hi),I(`toBVec2`,gi),I(`toVec3`,U),I(`toIVec3`,_i),I(`toUVec3`,vi),I(`toBVec3`,yi),I(`toVec4`,bi),I(`toIVec4`,xi),I(`toUVec4`,Si),I(`toBVec4`,Ci),I(`toMat2`,wi),I(`toMat3`,Ti),I(`toMat4`,Ei),I(`element`,z(Sr)),I(`convert`,(e,t)=>R(new Cr(R(e),t)));var Di=class extends F{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}};let Oi=e=>new Di(e),ki=((e,t=0)=>new Di(e,!0,t))(`render`),Ai=Oi(`object`);var ji=class extends Ar{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=Ai}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};let Mi=(e,t)=>{let n=ri(t||e);return R(new ji(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))};var Ni=class extends F{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}};let Pi=(e,t)=>R(new Ni(e,t)),Fi=si(Ni,`vec4`,`DiffuseColor`);I(`assign`,z(class extends wr{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 br.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?oi(t):ai(t[0]),R(new Ii(R(e),t))));var W=class e extends wr{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}};let Li=z(W,`+`),Ri=z(W,`-`),zi=z(W,`*`),Bi=z(W,`/`),Vi=z(W,`%`),Hi=z(W,`==`),Ui=z(W,`!=`),Wi=z(W,`<`),Gi=z(W,`>`),Ki=z(W,`<=`),qi=z(W,`>=`),Ji=z(W,`&&`),Yi=z(W,`||`),Xi=z(W,`!`),Zi=z(W,`^^`),Qi=z(W,`&`),$i=z(W,`~`),ea=z(W,`|`),ta=z(W,`^`),na=z(W,`<<`),ra=z(W,`>>`);I(`add`,Li),I(`sub`,Ri),I(`mul`,zi),I(`div`,Bi),I(`modInt`,Vi),I(`equal`,Hi),I(`notEqual`,Ui),I(`lessThan`,Wi),I(`greaterThan`,Gi),I(`lessThanEqual`,Ki),I(`greaterThanEqual`,qi),I(`and`,Ji),I(`or`,Yi),I(`not`,Xi),I(`xor`,Zi),I(`bitAnd`,Qi),I(`bitNot`,$i),I(`bitOr`,ea),I(`bitXor`,ta),I(`shiftLeft`,na),I(`shiftRight`,ra),I(`remainder`,(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),Vi(...e)));var G=class e extends wr{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=bi(U(r),0):e=bi(U(e),0);let i=zi(e,r).xyz;return va(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return Ri(1,o).build(t,n);else if(r===e.RECIPROCAL)return Bi(1,o).build(t,n);else if(r===e.DIFFERENCE)return Ea(Ri(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};G.ALL=`all`,G.ANY=`any`,G.EQUALS=`equals`,G.RADIANS=`radians`,G.DEGREES=`degrees`,G.EXP=`exp`,G.EXP2=`exp2`,G.LOG=`log`,G.LOG2=`log2`,G.SQRT=`sqrt`,G.INVERSE_SQRT=`inversesqrt`,G.FLOOR=`floor`,G.CEIL=`ceil`,G.NORMALIZE=`normalize`,G.FRACT=`fract`,G.SIN=`sin`,G.COS=`cos`,G.TAN=`tan`,G.ASIN=`asin`,G.ACOS=`acos`,G.ATAN=`atan`,G.ABS=`abs`,G.SIGN=`sign`,G.LENGTH=`length`,G.NEGATE=`negate`,G.ONE_MINUS=`oneMinus`,G.DFDX=`dFdx`,G.DFDY=`dFdy`,G.ROUND=`round`,G.RECIPROCAL=`reciprocal`,G.TRUNC=`trunc`,G.FWIDTH=`fwidth`,G.BITCAST=`bitcast`,G.TRANSPOSE=`transpose`,G.ATAN2=`atan2`,G.MIN=`min`,G.MAX=`max`,G.MOD=`mod`,G.STEP=`step`,G.REFLECT=`reflect`,G.DISTANCE=`distance`,G.DIFFERENCE=`difference`,G.DOT=`dot`,G.CROSS=`cross`,G.POW=`pow`,G.TRANSFORM_DIRECTION=`transformDirection`,G.MIX=`mix`,G.CLAMP=`clamp`,G.REFRACT=`refract`,G.SMOOTHSTEP=`smoothstep`,G.FACEFORWARD=`faceforward`;let ia=V(Math.PI);Math.PI*2;let aa=z(G,G.ALL),oa=z(G,G.ANY),sa=z(G,G.EQUALS),ca=z(G,G.RADIANS),la=z(G,G.DEGREES),ua=z(G,G.EXP),da=z(G,G.EXP2),fa=z(G,G.LOG),pa=z(G,G.LOG2),ma=z(G,G.SQRT),ha=z(G,G.INVERSE_SQRT),ga=z(G,G.FLOOR),_a=z(G,G.CEIL),va=z(G,G.NORMALIZE),ya=z(G,G.FRACT),ba=z(G,G.SIN),xa=z(G,G.COS),Sa=z(G,G.TAN),Ca=z(G,G.ASIN),wa=z(G,G.ACOS),Ta=z(G,G.ATAN),Ea=z(G,G.ABS),Da=z(G,G.SIGN),Oa=z(G,G.LENGTH),ka=z(G,G.NEGATE),Aa=z(G,G.ONE_MINUS),ja=z(G,G.DFDX),Ma=z(G,G.DFDY),Na=z(G,G.ROUND),Pa=z(G,G.RECIPROCAL),Fa=z(G,G.TRUNC),Ia=z(G,G.FWIDTH);G.BITCAST;let La=z(G,G.TRANSPOSE),Ra=z(G,G.ATAN2),za=z(G,G.MIN),Ba=z(G,G.MAX),Va=z(G,G.MOD),Ha=z(G,G.STEP),Ua=z(G,G.REFLECT),Wa=z(G,G.DISTANCE),Ga=z(G,G.DIFFERENCE),Ka=z(G,G.DOT),qa=z(G,G.CROSS),Ja=z(G,G.POW),Ya=z(G,G.POW,2),Xa=z(G,G.POW,3),Za=z(G,G.POW,4),Qa=z(G,G.TRANSFORM_DIRECTION),$a=e=>zi(Da(e),Ja(Ea(e),1/3)),eo=e=>Ka(e,e),to=z(G,G.MIX),no=(e,t=0,n=1)=>R(new G(G.CLAMP,R(e),R(t),R(n))),ro=e=>no(e),io=z(G,G.REFRACT),ao=z(G,G.SMOOTHSTEP),oo=z(G,G.FACEFORWARD),so=B(([e])=>ya(ba(Va(Ka(e.xy,H(12.9898,78.233)),ia)).mul(43758.5453)));I(`all`,aa),I(`any`,oa),I(`equals`,sa),I(`radians`,ca),I(`degrees`,la),I(`exp`,ua),I(`exp2`,da),I(`log`,fa),I(`log2`,pa),I(`sqrt`,ma),I(`inverseSqrt`,ha),I(`floor`,ga),I(`ceil`,_a),I(`normalize`,va),I(`fract`,ya),I(`sin`,ba),I(`cos`,xa),I(`tan`,Sa),I(`asin`,Ca),I(`acos`,wa),I(`atan`,Ta),I(`abs`,Ea),I(`sign`,Da),I(`length`,Oa),I(`lengthSq`,eo),I(`negate`,ka),I(`oneMinus`,Aa),I(`dFdx`,ja),I(`dFdy`,Ma),I(`round`,Na),I(`reciprocal`,Pa),I(`trunc`,Fa),I(`fwidth`,Ia),I(`atan2`,Ra),I(`min`,za),I(`max`,Ba),I(`mod`,Va),I(`step`,Ha),I(`reflect`,Ua),I(`distance`,Wa),I(`dot`,Ka),I(`cross`,qa),I(`pow`,Ja),I(`pow2`,Ya),I(`pow3`,Xa),I(`pow4`,Za),I(`transformDirection`,Qa),I(`mix`,(e,t,n)=>to(t,n,e)),I(`clamp`,no),I(`refract`,io),I(`smoothstep`,(e,t,n)=>ao(t,n,e)),I(`faceForward`,oo),I(`difference`,Ga),I(`saturate`,ro),I(`cbrt`,$a),I(`transpose`,La),I(`rand`,so);let co=z(class extends F{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?Pi(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});I(`select`,co),I(`cond`,(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),co(...e)));let lo=z(class extends F{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}});I(`context`,lo),I(`label`,(e,t)=>lo(e,{label:t}));let uo=z(class extends F{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}});I(`temp`,uo),I(`toVar`,(...e)=>uo(...e).append());let fo=z(class extends F{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,yr.VERTEX);e.flowNodeFromShaderStage(yr.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}});I(`varying`,fo);let po=`WorkingColorSpace`,mo=`OutputColorSpace`;function ho(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function go(e,t){return ho(e)+`To`+ho(t)}var _o=class extends wr{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===po?je.workingColorSpace:t===mo?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=go(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=bi(s(n.rgb),n.a),o}};let vo=e=>R(new _o(R(e),po,mo)),yo=e=>R(new _o(R(e),mo,po)),bo=(e,t)=>R(new _o(R(e),po,t)),xo=(e,t)=>R(new _o(R(e),t,po));I(`toOutputColorSpace`,vo),I(`toWorkingColorSpace`,yo),I(`workingToColorSpace`,bo),I(`colorSpaceToWorking`,xo);let So=class extends Sr{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}};var Co=class extends F{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=P.OBJECT}setGroup(e){return this.group=e,this}element(e){return R(new So(this,R(e)))}setNodeType(e){let t=Mi(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eR(new wo(e,t,n));var Eo=class extends wr{static get type(){return`ToneMappingNode`}constructor(e,t=Oo,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return fr(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=bi(i(t.rgb,this.exposureNode),t.a),r}};let Do=(e,t,n)=>R(new Eo(e,R(t),R(n))),Oo=To(`toneMappingExposure`,`float`);I(`toneMapping`,(e,t,n)=>Do(t,n,e));var ko=class extends Ar{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=b,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new In(n,i),s=new Rn(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=fo(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}};let Ao=(e,t,n,r)=>R(new ko(e,t,n,r));I(`toAttribute`,e=>Ao(e.value));var jo=class extends F{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=P.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eR(new jo(R(e),t,n)));var Mo=class extends F{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}};I(`cache`,(e,...t)=>R(new Mo(R(e),...t))),I(`bypass`,z(class extends F{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}));var No=class extends F{static get type(){return`RemapNode`}constructor(e,t,n,r=V(0),i=V(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}};let Po=z(No,null,null,{doClamp:!1}),Fo=z(No);I(`remap`,Po),I(`remapClamp`,Fo);let Io=z(class extends F{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}});I(`discard`,e=>(e?co(e,Io(`discard`)):Io(`discard`)).append());var Lo=class extends wr{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==je.workingColorSpace&&(t=t.workingToColorSpace(r)),t}};I(`renderOutput`,(e,t=null,n=null)=>R(new Lo(R(e),t,n)));var Ro=class extends F{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):fo(this).build(e,n)}else return console.warn(`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}};let zo=(e,t)=>R(new Ro(e,t)),Bo=e=>zo(`uv`+(e>0?e:``),`vec2`),Vo=z(class extends F{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)}}),Ho=z(class extends ji{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=P.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))}}});var Uo=class extends ji{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=P.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return Bo(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Mi(this.value.matrix)),this._matrixUniform.mul(U(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?P.FRAME:P.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(di(Vo(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=xo(Io(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=R(e),t.referenceNode=this.getSelf(),R(t)}blur(e){let t=this.clone();return t.biasNode=R(e).mul(Ho(t)),t.referenceNode=this.getSelf(),R(t)}level(e){let t=this.clone();return t.levelNode=R(e),t.referenceNode=this.getSelf(),R(t)}size(e){return Vo(this,e)}bias(e){let t=this.clone();return t.biasNode=R(e),t.referenceNode=this.getSelf(),R(t)}compare(e){let t=this.clone();return t.compareNode=R(e),t.referenceNode=this.getSelf(),R(t)}grad(e,t){let n=this.clone();return n.gradNode=[R(e),R(t)],n.referenceNode=this.getSelf(),R(n)}depth(e){let t=this.clone();return t.depthNode=R(e),t.referenceNode=this.getSelf(),R(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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}};let Wo=z(Uo),Go=Mi(`float`).label(`cameraNear`).setGroup(ki).onRenderUpdate(({camera:e})=>e.near),Ko=Mi(`float`).label(`cameraFar`).setGroup(ki).onRenderUpdate(({camera:e})=>e.far),qo=Mi(`mat4`).label(`cameraViewMatrix`).setGroup(ki).onRenderUpdate(({camera:e})=>e.matrixWorldInverse);var Jo=class e extends F{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=P.OBJECT,this._uniformNode=new ji(null)}getNodeType(){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`}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 O,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new O,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new O,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new O,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Jo.WORLD_MATRIX=`worldMatrix`,Jo.POSITION=`position`,Jo.SCALE=`scale`,Jo.VIEW_POSITION=`viewPosition`,Jo.DIRECTION=`direction`,Jo.DIRECTION,Jo.WORLD_MATRIX,Jo.POSITION,Jo.SCALE,Jo.VIEW_POSITION;var Yo=class extends Jo{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}};Yo.DIRECTION;let Xo=si(Yo,Yo.WORLD_MATRIX);Yo.POSITION,Yo.SCALE,Yo.VIEW_POSITION;let Zo=Mi(new D).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Qo=qo.mul(Xo).toVar(`modelViewMatrix_2`),$o=zo(`position`,`vec3`).varying(`positionLocal`),es=Qo.mul($o).xyz.varying(`v_positionView`),ts=es.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),ns=V(si(class extends F{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}})).mul(2).sub(1),rs=zo(`normal`,`vec3`),is=B(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),U(0,1,0)):rs,`vec3`).once()().toVar(`normalLocal`),as=es.dFdx().cross(es.dFdy()).normalize().toVar(`normalFlat`),os=B(e=>{let t;return t=e.material.flatShading===!0?as:fo(cs(is),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),ss=B(e=>e.context.setupNormal(),`vec3`).once()().mul(ns).toVar(`transformedNormalView`),cs=B(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=Zo.mul(e);return qo.transformDirection(r)}),ls=Mi(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),us=ts.negate().reflect(ss),ds=ts.negate().refract(ss,ls),fs=us.transformDirection(qo).toVar(`reflectVector`),ps=ds.transformDirection(qo).toVar(`reflectVector`),ms=z(class extends Uo{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?fs:e.mapping===302?ps:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),U(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?U(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}});var hs=class extends ji{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}};let gs=(e,t,n)=>R(new hs(e,t,n));var _s=class extends Sr{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},vs=class extends hs{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=P.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nR(new vs(e,t));var bs=class extends Sr{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},xs=class extends F{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=P.OBJECT}element(e){return R(new bs(this,R(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?ys(null,e):e===`texture`?Wo(null):e===`cubeTexture`?ms(null):Mi(null,e):gs(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eR(new xs(e,t,n));var Cs=class extends xs{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}};let ws=(e,t,n)=>R(new Cs(e,t,n)),Ts=B(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),zo(`tangent`,`vec4`)))(),Es=Ts.xyz.toVar(`tangentLocal`),Ds=Qo.mul(bi(Es,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),Os=Ti(Ds,fo((e=>e.mul(Ts.w).xyz)(os.cross(Ds)),`v_bitangentView`).normalize().toVar(`bitangentView`),os),ks=B(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=ns.mul(m.inverseSqrt());return Li(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),As=z(class extends wr{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=U(r.xy.mul(n),r.z));let i=null;return t===1?i=cs(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?Os.mul(r).normalize():ks({eye_pos:es,surf_norm:os,mapN:r,uv:Bo()})),i}}),js=B(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||Bo()),forceUVContext:!0}),r=V(n(e=>e));return H(V(n(e=>e.add(e.dFdx()))).sub(r),V(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Ms=B(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(ns),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Ns=z(class extends wr{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 Ms({surf_pos:es,surf_norm:os,dHdxy:js({textureNode:this.textureNode,bumpScale:e})})}}),Ps=new Map;var K=class e extends F{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=Ps.get(e);return n===void 0&&(n=ws(e,t),Ps.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?U():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:V(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=As(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?Ns(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):os;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?As(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):os;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=wi(Fs.x,Fs.y,Fs.y.negate(),Fs.x).mul(e.rg.mul(2).sub(H(1)).normalize().mul(e.b))}else i=Fs;else if(r===e.IRIDESCENCE_THICKNESS){let e=Ss(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Ss(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};K.ALPHA_TEST=`alphaTest`,K.COLOR=`color`,K.OPACITY=`opacity`,K.SHININESS=`shininess`,K.SPECULAR=`specular`,K.SPECULAR_STRENGTH=`specularStrength`,K.SPECULAR_INTENSITY=`specularIntensity`,K.SPECULAR_COLOR=`specularColor`,K.REFLECTIVITY=`reflectivity`,K.ROUGHNESS=`roughness`,K.METALNESS=`metalness`,K.NORMAL=`normal`,K.CLEARCOAT=`clearcoat`,K.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,K.CLEARCOAT_NORMAL=`clearcoatNormal`,K.EMISSIVE=`emissive`,K.ROTATION=`rotation`,K.SHEEN=`sheen`,K.SHEEN_ROUGHNESS=`sheenRoughness`,K.ANISOTROPY=`anisotropy`,K.IRIDESCENCE=`iridescence`,K.IRIDESCENCE_IOR=`iridescenceIOR`,K.IRIDESCENCE_THICKNESS=`iridescenceThickness`,K.IOR=`ior`,K.TRANSMISSION=`transmission`,K.THICKNESS=`thickness`,K.ATTENUATION_DISTANCE=`attenuationDistance`,K.ATTENUATION_COLOR=`attenuationColor`,K.LINE_SCALE=`scale`,K.LINE_DASH_SIZE=`dashSize`,K.LINE_GAP_SIZE=`gapSize`,K.LINE_WIDTH=`linewidth`,K.LINE_DASH_OFFSET=`dashOffset`,K.POINT_WIDTH=`pointWidth`,K.DISPERSION=`dispersion`,K.LIGHT_MAP=`light`,K.AO_MAP=`ao`,K.ALPHA_TEST,K.COLOR,K.SHININESS,K.EMISSIVE,K.OPACITY,K.SPECULAR,K.SPECULAR_INTENSITY,K.SPECULAR_COLOR,K.SPECULAR_STRENGTH,K.REFLECTIVITY,K.ROUGHNESS,K.METALNESS,K.CLEARCOAT,K.CLEARCOAT_ROUGHNESS,K.ROTATION,K.SHEEN,K.SHEEN_ROUGHNESS,K.ANISOTROPY,K.IRIDESCENCE,K.IRIDESCENCE_IOR,K.IRIDESCENCE_THICKNESS,K.TRANSMISSION,K.THICKNESS,K.IOR,K.ATTENUATION_DISTANCE,K.ATTENUATION_COLOR,K.LINE_SCALE,K.LINE_DASH_SIZE,K.LINE_GAP_SIZE,K.LINE_WIDTH,K.LINE_DASH_OFFSET,K.POINT_WIDTH,K.DISPERSION,K.LIGHT_MAP,K.AO_MAP;let Fs=Mi(new E).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))});var Is=class e extends F{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:fo(this).build(t,n),a}};Is.VERTEX=`vertex`,Is.INSTANCE=`instance`,Is.SUBGROUP=`subgroup`,Is.INVOCATION_LOCAL=`invocationLocal`,Is.INVOCATION_SUBGROUP=`invocationSubgroup`,Is.DRAW=`draw`,Is.VERTEX,Is.INSTANCE,Is.SUBGROUP,Is.INVOCATION_SUBGROUP,Is.INVOCATION_LOCAL,Is.DRAW;var Ls=class extends F{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tR(new Ls(oi(e,`int`))).append(),zs,Bs;var Vs=class e extends F{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=P.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=P.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(Bs),Bs.multiplyScalar(t.getPixelRatio())):Bs.copy(n.viewport):n===null?t.getDrawingBufferSize(zs):(zs.width=n.width,zs.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Mi(zs||=new E):t===e.VIEWPORT?Mi(Bs||=new Ve):H(Ws.div(Us)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(Us).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};Vs.COORDINATE=`coordinate`,Vs.VIEWPORT=`viewport`,Vs.SIZE=`size`,Vs.UV=`uv`;let Hs=si(Vs,Vs.UV),Us=si(Vs,Vs.SIZE),Ws=si(Vs,Vs.COORDINATE),Gs=si(Vs,Vs.VIEWPORT);Gs.zw,Gs.xy;let Ks=new E;var qs=class extends Uo{static get type(){return`ViewportTextureNode`}constructor(e=Hs,t=null,n=null){n===null&&(n=new zn,n.minFilter=s),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=P.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(Ks);let n=this.value;(n.image.width!==Ks.width||n.image.height!==Ks.height)&&(n.image.width=Ks.width,n.image.height=Ks.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}};let Js=null,Ys=z(class extends qs{static get type(){return`ViewportDepthTextureNode`}constructor(e=Hs,t=null){Js===null&&(Js=new Fn),super(e,t,Js)}});var Xs=class e extends F{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=ec().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?Qs(es.z,Go,Ko):Zs(es.z,Go,Ko):n===e.LINEAR_DEPTH&&(i=r===null?Zs(es.z,Go,Ko):t.isPerspectiveCamera?Zs($s(r,Go,Ko),Go,Ko):r),i}};Xs.DEPTH_BASE=`depthBase`,Xs.DEPTH=`depth`,Xs.LINEAR_DEPTH=`linearDepth`;let Zs=(e,t,n)=>e.add(t).div(t.sub(n)),Qs=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),$s=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),ec=z(Xs,Xs.DEPTH_BASE),tc=si(Xs,Xs.DEPTH);Ys(),tc.assign=e=>ec(e);var nc=class e extends F{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return B(()=>{let r=ys(e),i=Pi(`float`,`distanceToPlane`),a=Pi(`float`,`distanceToGradient`),o=Pi(`float`,`clipOpacity`);o.assign(1);let s;if(Rs(n,({i:e})=>{s=r.element(e),i.assign(es.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(ao(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(es.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(ao(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}Fi.a.mulAssign(o),Fi.a.equal(0).discard()})()}setupDefault(e,t,n){return B(()=>{let r=ys(e),i;if(Rs(n,({i:e})=>{i=r.element(e),es.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(es.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};nc.ALPHA_TO_COVERAGE=`alphaToCoverage`,nc.DEFAULT=`default`,1/Math.PI,U(.04),V(1);let rc=B(([e,t])=>{let n=e.toVar();n.assign(zi(2,n).sub(1));let r=U(n,1).toVar();return ci(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`}]});B(({texture:e,uv:t})=>{let n=1e-4,r=U().toVar();return ci(t.x.lessThan(n),()=>{r.assign(U(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(U(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(U(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(U(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(U(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(U(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(U(-n,0,0))).r.sub(e.uv(t.add(U(n,0,0))).r),a=e.uv(t.add(U(0,-n,0))).r.sub(e.uv(t.add(U(0,n,0))).r),o=e.uv(t.add(U(0,0,-n))).r.sub(e.uv(t.add(U(0,0,n))).r);r.assign(U(i,a,o))}),r.normalize()});let ic=(1+Math.sqrt(5))/2,ac=1/ic;-ic,-ac,-ac;let oc=rc(Bo(),zo(`faceIndex`)).normalize();U(oc.x,oc.y.negate(),oc.z);var sc=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};sc.isNodeFunctionInput=!0;var cc=class e extends ji{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=P.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};cc.LOCAL=`local`,cc.GLOBAL=`global`,cc.DELTA=`delta`,cc.FRAME=`frame`;let lc=(e,t=0)=>R(new cc(cc.LOCAL,e,t));var uc=class e extends F{static get type(){return`OscNode`}constructor(t=e.SINE,n=lc()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=R(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};uc.SINE=`sine`,uc.SQUARE=`square`,uc.TRIANGLE=`triangle`,uc.SAWTOOTH=`sawtooth`,uc.SINE,uc.SQUARE,uc.TRIANGLE,uc.SAWTOOTH,new jn,new O,new O,new O,new yt,new O(0,0,-1),new Ve,new O,new O,new Ve,new E,new He,Hs.flipX();var dc=class e extends F{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Ss(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Ss(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};dc.BACKGROUND_BLURRINESS=`backgroundBlurriness`,dc.BACKGROUND_INTENSITY=`backgroundIntensity`,dc.BACKGROUND_BLURRINESS,dc.BACKGROUND_INTENSITY;let fc=new E;var pc=class extends Uo{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},mc=class extends pc{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},hc=class e extends wr{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 Fn;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new He(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:1016,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=P.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Mi(0),this._cameraFar=Mi(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=R(new mc(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=R(new mc(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=$s(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=Zs(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(fc);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};hc.COLOR=`color`,hc.DEPTH=`depth`,new class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},B(({depthTexture:e,shadowCoord:t})=>Wo(e,t.xy).compare(t.z)),B(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>Wo(e,t).compare(n),i=Ss(`mapSize`,`vec2`,n).setGroup(ki),a=Ss(`radius`,`float`,n).setGroup(ki),o=H(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return Li(r(t.xy.add(H(s,c)),t.z),r(t.xy.add(H(0,c)),t.z),r(t.xy.add(H(l,c)),t.z),r(t.xy.add(H(d,f)),t.z),r(t.xy.add(H(0,f)),t.z),r(t.xy.add(H(p,f)),t.z),r(t.xy.add(H(s,0)),t.z),r(t.xy.add(H(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(H(p,0)),t.z),r(t.xy.add(H(l,0)),t.z),r(t.xy.add(H(d,m)),t.z),r(t.xy.add(H(0,m)),t.z),r(t.xy.add(H(p,m)),t.z),r(t.xy.add(H(s,u)),t.z),r(t.xy.add(H(0,u)),t.z),r(t.xy.add(H(l,u)),t.z)).mul(1/17)}),B(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>Wo(e,t).compare(n),i=Ss(`mapSize`,`vec2`,n).setGroup(ki),a=H(1).div(i),o=a.x,s=a.y,c=t.xy,l=ya(c.mul(i).add(.5));return c.subAssign(l.mul(a)),Li(r(c,t.z),r(c.add(H(o,0)),t.z),r(c.add(H(0,s)),t.z),r(c.add(a),t.z),to(r(c.add(H(o.negate(),0)),t.z),r(c.add(H(o.mul(2),0)),t.z),l.x),to(r(c.add(H(o.negate(),s)),t.z),r(c.add(H(o.mul(2),s)),t.z),l.x),to(r(c.add(H(0,s.negate())),t.z),r(c.add(H(0,s.mul(2))),t.z),l.y),to(r(c.add(H(o,s.negate())),t.z),r(c.add(H(o,s.mul(2))),t.z),l.y),to(to(r(c.add(H(o.negate(),s.negate())),t.z),r(c.add(H(o.mul(2),s.negate())),t.z),l.x),to(r(c.add(H(o.negate(),s.mul(2))),t.z),r(c.add(H(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),B(({depthTexture:e,shadowCoord:t})=>{let n=V(1).toVar(),r=Wo(e).uv(t.xy).rg,i=Ha(t.z,r.x);return ci(i.notEqual(V(1)),()=>{let e=t.z.sub(r.x),a=Ba(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=no(Ri(o,.3).div(.6499999999999999)),n.assign(no(Ba(i,o)))}),n}),B(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=V(0).toVar(),a=V(0).toVar(),o=e.lessThanEqual(V(1)).select(V(0),V(2).div(e.sub(1))),s=e.lessThanEqual(V(1)).select(V(0),V(-1));return Rs({start:di(0),end:di(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(V(e).mul(o)),l=r.uv(Li(Ws.xy,H(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),H(i,ma(a.sub(i.mul(i))))}),B(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=V(0).toVar(),a=V(0).toVar(),o=e.lessThanEqual(V(1)).select(V(0),V(2).div(e.sub(1))),s=e.lessThanEqual(V(1)).select(V(0),V(-1));return Rs({start:di(0),end:di(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(V(e).mul(o)),l=r.uv(Li(Ws.xy,H(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(Li(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),H(i,ma(a.sub(i.mul(i))))}),U(1.6605,-.1246,-.0182),U(-.5876,1.1329,-.1006),U(-.0728,-.0083,1.1187),U(.6274,.0691,.0164),U(.3293,.9195,.088),U(.0433,.0113,.8956),z(class extends F{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}});var gc=class extends wr{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};gc.ATOMIC_LOAD=`atomicLoad`,gc.ATOMIC_STORE=`atomicStore`,gc.ATOMIC_ADD=`atomicAdd`,gc.ATOMIC_SUB=`atomicSub`,gc.ATOMIC_MAX=`atomicMax`,gc.ATOMIC_MIN=`atomicMin`,gc.ATOMIC_AND=`atomicAnd`,gc.ATOMIC_OR=`atomicOr`,gc.ATOMIC_XOR=`atomicXor`,z(gc);var _c=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};if(_c.isNodeFunction=!0,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`register`,{detail:{revision:t}})),typeof window<`u`){try{e&&(window.__THREE__IMPORTS__||(window.__THREE__IMPORTS__=[]),window.__THREE__IMPORTS__.push({url:self.location.href,revision:t}))}catch{}window.__THREE__?(console.warn(`WARNING: Multiple instances of Three.js being imported. Existing: `+window.__THREE__+`, new: 169.19`),console.warn(window.__THREE__IMPORTS__)):window.__THREE__=t}let vc=1.25,yc=65535;yc<<16;let bc=2**-24,xc=Symbol(`SKIP_GENERATION`),Sc={strategy:0,maxDepth:40,maxLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[xc]:!1};var Cc=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,r=-1/0;for(let i=0,a=e.length;ir?a:r}this.min=n,this.max=r}setFromPoints(e,t){let n=1/0,r=-1/0;for(let i=0,a=t.length;ir?o:r}this.min=n,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};Cc.prototype.setFromBox=(function(){let e=new O;return function(t,n){let r=n.min,i=n.max,a=1/0,o=-1/0;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let c=0;c<=1;c++){e.x=r.x*n+i.x*(1-n),e.y=r.y*s+i.y*(1-s),e.z=r.z*c+i.z*(1-c);let l=t.dot(e);a=Math.min(l,a),o=Math.max(l,o)}this.min=a,this.max=o}})(),(function(){let e=new Cc;return function(t,n){let r=t.points,i=t.satAxes,a=t.satBounds,o=n.points,s=n.satAxes,c=n.satBounds;for(let t=0;t<3;t++){let n=a[t],r=i[t];if(e.setFromPoints(r,o),n.isSeparated(e))return!1}for(let t=0;t<3;t++){let n=c[t],i=s[t];if(e.setFromPoints(i,r),n.isSeparated(e))return!1}}})();let wc=(function(){let e=new O,t=new O,n=new O;return function(r,i,a){let o=r.start,s=e,c=i.start,l=t;n.subVectors(o,c),e.subVectors(r.end,r.start),t.subVectors(i.end,i.start);let u=n.dot(l),d=l.dot(s),f=l.dot(l),p=n.dot(s),m=s.dot(s)*f-d*d,h,g;h=m===0?0:(u*d-p*f)/m,g=(u+h*d)/f,a.x=h,a.y=g}})(),Tc=(function(){let e=new E,t=new O,n=new O;return function(r,i,a,o){wc(r,i,e);let s=e.x,c=e.y;if(s>=0&&s<=1&&c>=0&&c<=1){r.at(s,a),i.at(c,o);return}else if(s>=0&&s<=1){c<0?i.at(0,o):i.at(1,o),r.closestPointToPoint(o,!0,a);return}else if(c>=0&&c<=1){s<0?r.at(0,a):r.at(1,a),i.closestPointToPoint(a,!0,o);return}else{let e;e=s<0?r.start:r.end;let l;l=c<0?i.start:i.end;let u=t,d=n;if(r.closestPointToPoint(l,!0,t),i.closestPointToPoint(e,!0,n),u.distanceToSquared(l)<=d.distanceToSquared(e)){a.copy(u),o.copy(l);return}else{a.copy(e),o.copy(d);return}}}})(),Ec=(function(){let e=new O,t=new O,n=new jn,r=new ur;return function(i,a){let{radius:o,center:s}=i,{a:c,b:l,c:u}=a;if(r.start=c,r.end=l,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o||(r.start=c,r.end=u,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o)||(r.start=l,r.end=u,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o))return!0;let d=a.getPlane(n);if(Math.abs(d.distanceToPoint(s))<=o){let e=d.projectPoint(s,t);if(a.containsPoint(e))return!0}return!1}})(),Dc=[`x`,`y`,`z`],Oc=1e-15,kc=Oc*Oc;function Ac(e){return Math.abs(e)new O),this.satBounds=[,,,,].fill().map(()=>new Cc),this.points=[this.a,this.b,this.c],this.plane=new jn,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new ur,this.needsUpdate=!0}intersectsSphere(e){return Ec(e,this)}update(){let e=this.a,t=this.b,n=this.c,r=this.points,i=this.satAxes,a=this.satBounds,o=i[0],s=a[0];this.getNormal(o),s.setFromPoints(o,r);let c=i[1],l=a[1];c.subVectors(e,t),l.setFromPoints(c,r);let u=i[2],d=a[2];u.subVectors(t,n),d.setFromPoints(u,r);let f=i[3],p=a[3];f.subVectors(n,e),p.setFromPoints(f,r);let m=c.length(),h=u.length(),g=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,m0)p(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else if(a>0)p(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(s*c>0||o!=0)p(e.a,e.b,e.c,t,n,r,o,s,c,l,u);else if(s!=0)p(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(c!=0)p(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else return!0;return!1}function h(e,t,n,i){let a=t.degenerateSegment,o=e.plane.distanceToPoint(a.start),s=e.plane.distanceToPoint(a.end);return Ac(o)?Ac(s)?f(e,t,n,i):(n&&(n.start.copy(a.start),n.end.copy(a.start)),e.containsPoint(a.start)):Ac(s)?(n&&(n.start.copy(a.end),n.end.copy(a.end)),e.containsPoint(a.end)):e.plane.intersectLine(a,r)==null?!1:(n&&(n.start.copy(r),n.end.copy(r)),e.containsPoint(r))}function g(e,t,n){let r=t.a;return Ac(e.plane.distanceToPoint(r))&&e.containsPoint(r)?(n&&(n.start.copy(r),n.end.copy(r)),!0):!1}function _(e,t,n){let i=e.degenerateSegment,a=t.a;return i.closestPointToPoint(a,!0,r),a.distanceToSquared(r)1||p<0||p>1?!1:Ac(o.start.z+c.z*f-(s.start.z+l.z*p))?(n&&(n.start.copy(o.start).addScaledVector(c,f),n.end.copy(o.start).addScaledVector(c,f)),!0):!1}else if(t.isDegenerateIntoPoint)return _(e,t,n);else return h(t,e,n,o);else if(e.isDegenerateIntoPoint)return t.isDegenerateIntoPoint?t.a.distanceToSquared(e.a)0&&x>0)return!1;let S=p.distanceToPoint(t.a),C=p.distanceToPoint(t.b),ee=p.distanceToPoint(t.c);Ac(S)&&(S=0),Ac(C)&&(C=0),Ac(ee)&&(ee=0);let te=S*C,ne=S*ee;if(te>0&&ne>0)return!1;i.copy(p.normal),a.copy(h.normal);let re=i.cross(a),w=0,ie=Math.abs(re.x),ae=Math.abs(re.y);ae>ie&&(ie=ae,w=1),Math.abs(re.z)>ie&&(w=2);let oe=Dc[w],se=this.a[oe],ce=this.b[oe],le=this.c[oe],ue=t.a[oe],de=t.b[oe],fe=t.c[oe];if(m(this,se,ce,le,b,x,g,_,y,u,s)||m(t,ue,de,fe,te,ne,S,C,ee,d,c))return f(this,t,n,r);if(u.yu.x?n.start.copy(c.start):n.start.copy(s.start),d.ynew O),this.satAxes=[,,,].fill().map(()=>new O),this.satBounds=[,,,].fill().map(()=>new Cc),this.alignedSatBounds=[,,,].fill().map(()=>new Cc),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};Mc.prototype.update=(function(){return function(){let e=this.matrix,t=this.min,n=this.max,r=this.points;for(let i=0;i<=1;i++)for(let a=0;a<=1;a++)for(let o=0;o<=1;o++){let s=r[1*i|2*a|4*o];s.x=i?n.x:t.x,s.y=a?n.y:t.y,s.z=o?n.z:t.z,s.applyMatrix4(e)}let i=this.satBounds,a=this.satAxes,o=r[0];for(let e=0;e<3;e++){let t=a[e],n=i[e],s=r[1<new ur),n=Array(12).fill().map(()=>new ur),r=new O,i=new O;return function(a,o=0,s=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(s||c)&&(a.getCenter(i),this.closestPointToPoint(i,r),a.closestPointToPoint(r,i),s&&s.copy(r),c&&c.copy(i)),0;let l=o*o,u=a.min,d=a.max,f=this.points,p=1/0;for(let e=0;e<8;e++){let t=f[e];i.copy(t).clamp(u,d);let n=t.distanceToSquared(i);if(nnew jc)}},Fc=new O,Ic=new O;function Lc(e,t,n={},r=0,i=1/0){let a=r*r,o=i*i,s=1/0,c=null;if(e.shapecast({boundsTraverseOrder:e=>(Fc.copy(t).clamp(e.min,e.max),Fc.distanceToSquared(t)),intersectsBounds:(e,t,n)=>n{e.closestPointToPoint(t,Fc);let r=t.distanceToSquared(Fc);return rs?null:{distance:l,point:i.clone()}}function Qc(e,t,n,r,i,a,o,s,c,l,u){Vc.fromBufferAttribute(t,a),Hc.fromBufferAttribute(t,o),Uc.fromBufferAttribute(t,s);let d=Zc(e,Vc,Hc,Uc,Xc,c,l,u);if(d){r&&(Wc.fromBufferAttribute(r,a),Gc.fromBufferAttribute(r,o),Kc.fromBufferAttribute(r,s),d.uv=new E,sn.getInterpolation(Xc,Vc,Hc,Uc,Wc,Gc,Kc,d.uv)),i&&(Wc.fromBufferAttribute(i,a),Gc.fromBufferAttribute(i,o),Kc.fromBufferAttribute(i,s),d.uv1=new E,sn.getInterpolation(Xc,Vc,Hc,Uc,Wc,Gc,Kc,d.uv1)),n&&(qc.fromBufferAttribute(n,a),Jc.fromBufferAttribute(n,o),Yc.fromBufferAttribute(n,s),d.normal=new O,sn.getInterpolation(Xc,Vc,Hc,Uc,qc,Jc,Yc,d.normal),d.normal.dot(e.direction)>0&&d.normal.multiplyScalar(-1));let t={a,b:o,c:s,normal:new O,materialIndex:0};sn.getNormal(Vc,Hc,Uc,t.normal),d.face=t,d.faceIndex=a;{let e=new O;sn.getBarycoord(Xc,Vc,Hc,Uc,e),d.barycoord=e}}return d}function $c(e){return e&&e.isMaterial?e.side:e}function el(e,t,n,r,i,a,o){let s=r*3,c=s+0,l=s+1,u=s+2,{index:d,groups:f}=e;e.index&&(c=d.getX(c),l=d.getX(l),u=d.getX(u));let{position:p,normal:m,uv:h,uv1:g}=e.attributes;if(Array.isArray(t)){let e=r*3;for(let s=0,d=f.length;s=d&&ef&&(f=n),op&&(p=o),sm&&(m=s)}return c[e+0]!==a||c[e+1]!==u||c[e+2]!==d||c[e+3]!==f||c[e+4]!==p||c[e+5]!==m?(c[e+0]=a,c[e+1]=u,c[e+2]=d,c[e+3]=f,c[e+4]=p,c[e+5]=m,!0):!1}else{let r=J(e),i=Y(e,o),s=a,l=!1,u=!1;if(t){if(!s){let e=r/8+n/32,a=i/8+n/32;l=t.has(e),u=t.has(a),s=!l&&!u}}else l=!0,u=!0;let f=s||l,p=s||u,m=!1;f&&(m=d(r,n,s));let h=!1;p&&(h=d(i,n,s));let g=m||h;if(g)for(let t=0;t<3;t++){let n=r+t,a=i+t,o=c[n],s=c[n+3],l=c[a],u=c[a+3];c[e+t]=ou?s:u}return g}}}function al(e,t,n,r,i){let a,o,s,c,l,u,d=1/n.direction.x,f=1/n.direction.y,p=1/n.direction.z,m=n.origin.x,h=n.origin.y,g=n.origin.z,_=t[e],v=t[e+3],y=t[e+1],b=t[e+3+1],x=t[e+2],S=t[e+3+2];return d>=0?(a=(_-m)*d,o=(v-m)*d):(a=(v-m)*d,o=(_-m)*d),f>=0?(s=(y-h)*f,c=(b-h)*f):(s=(b-h)*f,c=(y-h)*f),a>c||s>o||((s>a||isNaN(a))&&(a=s),(c=0?(l=(x-g)*p,u=(S-g)*p):(l=(S-g)*p,u=(x-g)*p),a>u||l>o)?!1:((l>a||a!==a)&&(a=l),(u=r)}let Q=new class{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;let e=[],t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}};function ol(e,t,n,r,i,a,o,s){let{geometry:c,_indirectBuffer:l}=e;for(let e=r,u=r+i;e=0,d,f;u?(d=J(e),f=Y(e,c)):(d=Y(e,c),f=J(e));let p=al(d,o,r,i,a)?pl(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=al(f,o,r,i,a)?pl(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}function $(e,t,n){return n.min.x=t[e],n.min.y=t[e+1],n.min.z=t[e+2],n.max.x=t[e+3],n.max.y=t[e+4],n.max.z=t[e+5],n}function ml(e){let t=-1,n=-1/0;for(let r=0;r<3;r++){let i=e[r+3]-e[r];i>n&&(n=i,t=r)}return t}function hl(e,t){t.set(e)}function gl(e,t,n){let r,i;for(let a=0;a<3;a++){let o=a+3;r=e[a],i=t[a],n[a]=ri?r:i}}function _l(e,t,n){for(let r=0;r<3;r++){let i=t[e+2*r],a=t[e+2*r+1],o=i-a,s=i+a;on[r+3]&&(n[r+3]=s)}}function vl(e){let t=e[3]-e[0],n=e[4]-e[1],r=e[5]-e[2];return 2*(t*n+n*r+r*t)}function yl(e){return e.index?e.index.count:e.attributes.position.count}function bl(e){return yl(e)/3}function xl(e,t=ArrayBuffer){return e>65535?new Uint32Array(new t(4*e)):new Uint16Array(new t(2*e))}function Sl(e,t){if(!e.index){let n=e.attributes.position.count,r=xl(n,t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);e.setIndex(new hn(r,1));for(let e=0;e({offset:e.start/t,count:e.count/t}))}function Tl(e,t,n){let r=Cl(e,t,n),i=wl(e,n);if(!i.length)return[r];let a=[],o=r.offset,s=r.offset+r.count,c=yl(e)/n,l=[];for(let e of i){let{offset:t,count:n}=e,r=t,i=t+(isFinite(n)?n:c-t);ro&&(l.push({pos:Math.max(o,r),isStart:!0}),l.push({pos:Math.min(s,i),isStart:!1}))}l.sort((e,t)=>e.pos===t.pos?e.type===`end`?-1:1:e.pos-t.pos);let u=0,d=null;for(let e of l){let t=e.pos;u!==0&&t!==d&&a.push({offset:d,count:t-d}),u+=e.isStart?1:-1,d=t}return a}let El=new Ke,Dl=new jc,Ol=new jc,kl=new yt,Al=new Mc,jl=new Mc;function Ml(e,t,n,r){Q.setBuffer(e._roots[t]);let i=Nl(0,e,n,r);return Q.clearBuffer(),i}function Nl(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=Q,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),Al.set(n.boundingBox.min,n.boundingBox.max,r),i=Al),q(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=Rc(e,s),m=zc(c,o);if(kl.copy(r).invert(),n.boundsTree)return $(X(e),a,jl),jl.matrix.copy(kl),jl.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>jl.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let t=p*3,n=(m+p)*3;tFl.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:e=>Il.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let o=t,s=t+i;op&&(p=a),om&&(m=o),sh&&(h=s)}}return c[n+0]!==l||c[n+1]!==d||c[n+2]!==f||c[n+3]!==p||c[n+4]!==m||c[n+5]!==h?(c[n+0]=l,c[n+1]=d,c[n+2]=f,c[n+3]=p,c[n+4]=m,c[n+5]=h,!0):!1}else{let e=J(n),r=Y(n,o),i=l,s=!1,u=!1;if(t){if(!i){let n=e/8+a/32,o=r/8+a/32;s=t.has(n),u=t.has(o),i=!s&&!u}}else s=!0,u=!0;let f=i||s,p=i||u,m=!1;f&&(m=d(e,a,i));let h=!1;p&&(h=d(r,a,i));let g=m||h;if(g)for(let t=0;t<3;t++){let i=e+t,a=r+t,o=c[i],s=c[i+3],l=c[a],u=c[a+3];c[n+t]=ou?s:u}return g}}}function Ul(e,t,n,r,i,a,o){Q.setBuffer(e._roots[t]),Wl(0,e,n,r,i,a,o),Q.clearBuffer()}function Wl(e,t,n,r,i,a,o){let{float32Array:s,uint16Array:c,uint32Array:l}=Q,u=e*2;if(q(u,c))ol(t,n,r,Rc(e,l),zc(u,c),i,a,o);else{let c=J(e);al(c,s,r,a,o)&&Wl(c,t,n,r,i,a,o);let u=Y(e,l);al(u,s,r,a,o)&&Wl(u,t,n,r,i,a,o)}}let Gl=[`x`,`y`,`z`];function Kl(e,t,n,r,i,a){Q.setBuffer(e._roots[t]);let o=ql(0,e,n,r,i,a);return Q.clearBuffer(),o}function ql(e,t,n,r,i,a){let{float32Array:o,uint16Array:s,uint32Array:c}=Q,l=e*2;if(q(l,s))return sl(t,n,r,Rc(e,c),zc(l,s),i,a);{let s=Bc(e,c),l=Gl[s],u=r.direction[l]>=0,d,f;u?(d=J(e),f=Y(e,c)):(d=Y(e,c),f=J(e));let p=al(d,o,r,i,a)?ql(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=al(f,o,r,i,a)?ql(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}let Jl=new Ke,Yl=new jc,Xl=new jc,Zl=new yt,Ql=new Mc,$l=new Mc;function eu(e,t,n,r){Q.setBuffer(e._roots[t]);let i=tu(0,e,n,r);return Q.clearBuffer(),i}function tu(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=Q,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),Ql.set(n.boundingBox.min,n.boundingBox.max,r),i=Ql),q(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=Rc(e,s),m=zc(c,o);if(Zl.copy(r).invert(),n.boundsTree)return $(X(e),a,$l),$l.matrix.copy(Zl),$l.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>$l.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let n=p,r=m+p;nru.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree){let s=t.boundsTree;return s.shapecast({boundsTraverseOrder:e=>iu.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let x=t,S=t+o;xc&&(c=_),tm&&(m=t);let v=e[r+2],y=e[r+3],b=v-y,x=v+y;bl&&(l=x),vh&&(h=v);let S=e[r+4],C=e[r+5],ee=S-C,te=S+C;eeu&&(u=te),Sg&&(g=S)}r[0]=a,r[1]=o,r[2]=s,r[3]=c,r[4]=l,r[5]=u,i[0]=d,i[1]=f,i[2]=p,i[3]=m,i[4]=h,i[5]=g}let pu=(e,t)=>e.candidate-t.candidate,mu=Array(32).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),hu=new Float32Array(6);function gu(e,t,n,r,i,a){let o=-1,s=0;if(a===0)o=ml(t),o!==-1&&(s=(t[o]+t[o+3])/2);else if(a===1)o=ml(e),o!==-1&&(s=_u(n,r,i,o));else if(a===2){let a=vl(e),c=vc*i,l=n.offset||0,u=(r-l)*6,d=(r+i-l)*6;for(let e=0;e<3;e++){let r=t[e],l=(t[e+3]-r)/32;if(i<32/4){let t=[...mu];t.length=i;let r=0;for(let i=u;i=a.candidate?_l(r,n,a.rightCacheBounds):(_l(r,n,a.leftCacheBounds),a.count++)}}for(let n=0;n=32&&(i=31);let a=mu[i];a.count++,_l(t,n,a.bounds)}let t=mu[31];hl(t.bounds,t.rightCacheBounds);for(let e=30;e>=0;e--){let t=mu[e],n=mu[e+1];gl(t.bounds,n.rightCacheBounds,t.rightCacheBounds)}let f=0;for(let t=0;t<31;t++){let n=mu[t],r=n.count,l=n.bounds,u=mu[t+1].rightCacheBounds;r!==0&&(f===0?hl(l,hu):gl(l,hu,hu)),f+=r;let d=0,p=0;f!==0&&(d=vl(hu)/a);let m=i-f;m!==0&&(p=vl(u)/a);let h=1+vc*(d*f+p*m);h=c;)s--;if(owu)throw Error(`MeshBVH: Cannot store relative child node offset greater than 32 bits.`);return xu[n+6]=c,xu[n+7]=a,Du(o,i)}}function Ou(e,t,n,r,i){let{maxDepth:a,verbose:o,maxLeafSize:s,strategy:c,onProgress:l}=i,u=e.primitiveBuffer,d=e.primitiveBufferStride,f=new Float32Array(6),p=!1,m=new vu;return fu(t,n,r,m.boundingData,f),g(m,n,r,f),m;function h(e){l&&l(e/r)}function g(e,n,r,i=null,l=0){if(!p&&l>=a&&(p=!0,o&&console.warn(`BVH: Max depth of ${a} reached when generating BVH. Consider increasing maxDepth.`)),r<=s||l>=a)return h(n+r),e.offset=n,e.count=r,e;let m=gu(e.boundingData,i,t,n,r,c);if(m.axis===-1)return h(n+r),e.offset=n,e.count=r,e;let _=yu(u,d,t,n,r,m);if(_===n||_===n+r)h(n+r),e.offset=n,e.count=r;else{e.splitAxis=m.axis;let i=new vu,a=n,o=_-n;e.left=i,fu(t,a,o,i.boundingData,f),g(i,a,o,f,l+1);let s=new vu,c=_,u=r-o;e.right=s,fu(t,c,u,s.boundingData,f),g(s,c,u,f,l+1)}return e}}function ku(e,t){let n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,r=e.getRootRanges(t.range),i=r[0],a=r[r.length-1],o={offset:i.offset,count:a.offset+a.count-i.offset},s=new Float32Array(6*o.count);s.offset=o.offset,e.computePrimitiveBounds(o.offset,o.count,s),e._roots=r.map(r=>{let i=Ou(e,s,r.offset,r.count,t),a=new n(32*Tu(i));return Eu(0,i,a),a})}let Au,ju,Mu=[],Nu=new Nc(()=>new Ke);function Pu(e,t,n,r,i,a){Au=Nu.getPrimitive(),ju=Nu.getPrimitive(),Mu.push(Au,ju),Q.setBuffer(e._roots[t]);let o=Fu(0,e.geometry,n,r,i,a);Q.clearBuffer(),Nu.releasePrimitive(Au),Nu.releasePrimitive(ju),Mu.pop(),Mu.pop();let s=Mu.length;return s>0&&(ju=Mu[s-1],Au=Mu[s-2]),o}function Fu(e,t,n,r,i=null,a=0,o=0){let{float32Array:s,uint16Array:c,uint32Array:l}=Q,u=e*2;if(q(u,c)){let t=Rc(e,l),n=zc(u,c);return $(X(e),s,Au),r(t,n,!1,o,a+e/8,Au)}else{let u=J(e),p=Y(e,l),m=u,h=p,g,_,v,y;if(i&&(v=Au,y=ju,$(X(m),s,v),$(X(h),s,y),g=i(v),_=i(y),_new Ke),zu=new Ke,Bu=new Ke,Vu=new Ke,Hu=new Ke,Uu=!1;function Wu(e,t,n,r){if(Uu)throw Error(`MeshBVH: Recursive calls to bvhcast not supported.`);Uu=!0;let i=e._roots,a=t._roots,o,s=0,c=0,l=new yt().copy(n).invert();for(let e=0,t=i.length;es&&(s=u),tc&&(c=d),rl&&(l=f)}return n[r+0]=i,n[r+1]=a,n[r+2]=o,n[r+3]=s,n[r+4]=c,n[r+5]=l,n}computePrimitiveBounds(e,t,n){let r=n.offset||0;for(let i=e,a=e+t;i=0;e--){let t=e*8,n=t*2;if(q(n,i)){let e=Rc(t,r),o=zc(n,i);this.writePrimitiveRangeBounds(e,o,qu,0),a.set(qu,t)}else{let e=J(t),n=Y(t,r);for(let r=0;r<3;r++){let i=a[e+r],o=a[e+r+3],s=a[n+r],c=a[n+r+3];a[t+r]=ic?o:c}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{$(0,new Float32Array(t),Ku),e.union(Ku)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:r,intersectsPrimitive:i,scratchPrimitive:a,iterate:o}=e;if(r&&i){let e=r;r=(t,n,r,s,c)=>e(t,n,r,s,c)?!0:o(t,n,this,i,r,s,a)}else r||=i?(e,t,n,r)=>o(e,t,this,i,n,r,a):(e,t,n)=>n;let s=!1,c=0,l=this._roots;for(let e=0,i=l.length;e2**16,i=e.reduce((e,t)=>e+t.count,0),a=r?4:2,o=t?new SharedArrayBuffer(i*a):new ArrayBuffer(i*a),s=r?new Uint32Array(o):new Uint16Array(o),c=0;for(let t=0;tthis._indirectBuffer[e]:e=>e,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...Sc,...t},t[xc]||this.init(t)}init(e){let{geometry:t,primitiveStride:n}=this;e.indirect?this._indirectBuffer=Yu(Tl(t,e.range,n),e.useSharedArrayBuffer):Sl(t,e),super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new Ke))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Tl(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw Error(`BVH: raycastObject3D() not implemented`)}};let Zu=new Mc,Qu=new vt,$u=new O,ed=new yt,td=new O,nd=[`getX`,`getY`,`getZ`];var rd=class e extends Xu{static serialize(e,t={}){t={cloneBuffers:!0,...t};let n=e.geometry,r=e._roots,i=e._indirectBuffer,a=n.getIndex(),o={version:1,roots:null,index:null,indirectBuffer:null};return t.cloneBuffers?(o.roots=r.map(e=>e.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=i?i.slice():null):(o.roots=r,o.index=a?a.array:null,o.indirectBuffer=i),o}static deserialize(t,n,r={}){r={setIndex:!0,indirect:!!t.indirectBuffer,...r};let{index:i,roots:a,indirectBuffer:o}=t;t.version||(console.warn(`MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data.`),c(a));let s=new e(n,{...r,[xc]:!0});if(s._roots=a,s._indirectBuffer=o||null,r.setIndex){let e=n.getIndex();if(e===null){let e=new hn(t.index,1,!1);n.setIndex(e)}else e.array!==i&&(e.array.set(i),e.needsUpdate=!0)}return s;function c(e){for(let t=0;td&&(d=i),o>d&&(d=o),t[n+e]=s,t[n+e+3]=d}return t}computePrimitiveBounds(e,t,n){let r=this.geometry,i=this._indirectBuffer,a=r.attributes.position,o=r.index?r.index.array:null,s=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw Error(`MeshBVH: compute triangle bounds range is invalid.`);let c=a.array,l=a.offset||0,u=3;a.isInterleavedBufferAttribute&&(u=a.data.stride);let d=[`getX`,`getY`,`getZ`],f=n.offset;for(let r=e,p=e+t;ru&&(u=i),o>u&&(u=o);let f=(u-l)/2,g=e*2;n[t+g+0]=l+f,n[t+g+1]=f+(Math.abs(l)+f)*bc}}return n}raycastObject3D(e,t,n=[]){let{material:r}=e;if(r===void 0)return;ed.copy(e.matrixWorld).invert(),Qu.copy(t.ray).applyMatrix4(ed),td.setFromMatrixScale(e.matrixWorld),$u.copy(Qu.direction).multiply(td);let i=$u.length(),a=t.near/i,o=t.far/i;if(t.firstHitOnly===!0){let i=this.raycastFirst(Qu,r,a,o);i=uu(i,e,t),i&&n.push(i)}else{let i=this.raycast(Qu,r,a,o);for(let r=0,a=i.length;r{Z(o,this.resolveTriangleIndex(e)*3,s,c)}:e=>{Z(o,e*3,s,c)},u=Pc.getPrimitive(),d=t.geometry.index,f=t.geometry.attributes.position,p=t.indirect?e=>{Z(u,t.resolveTriangleIndex(e)*3,d,f)}:e=>{Z(u,e*3,d,f)};if(a){if(!(t instanceof e))throw Error(`MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.`);let r=(e,t,r,i,s,c,d,f)=>{for(let m=r,h=r+i;mZu.intersectsBox(e),intersectsTriangle:e=>Zu.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},r={},i=0,a=1/0){return(this.indirect?lu:Vl)(this,e,t,n,r,i,a)}closestPointToPoint(e,t={},n=0,r=1/0){return Lc(this,e,t,n,r)}};self.onmessage=({data:e})=>{let t=performance.now();function n(e){e=Math.min(e,1);let n=performance.now();n-t>=10&&e!==1&&(self.postMessage({error:null,serialized:null,position:null,progress:e}),t=n)}let{index:r,position:i,options:a}=e;try{let e=new Tn;if(e.setAttribute(`position`,new hn(i,3,!1)),r&&e.setIndex(new hn(r,1,!1)),a.includedProgressCallback&&(a.onProgress=n),a.groups){let t=a.groups;for(let n in t){let r=t[n];e.addGroup(r.start,r.count,r.materialIndex)}}let t=new rd(e,a),o=rd.serialize(t,{copyIndexBuffer:!1}),s=[i.buffer,...o.roots];o.index&&s.push(o.index.buffer),s=s.filter(e=>typeof SharedArrayBuffer>`u`||!(e instanceof SharedArrayBuffer)),t._indirectBuffer&&s.push(o.indirectBuffer.buffer),self.postMessage({error:null,serialized:o,position:i,progress:1},s)}catch(e){self.postMessage({error:e,serialized:null,position:null,progress:1})}}})(); \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz b/Needle/MenuScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..08af977f7c7b3bb99ce6d83645a88cda928bd8ac GIT binary patch literal 96965 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 z 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 U)`G^8G&MA>0c9>;K9ThW07>++Q2+n{ literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js b/Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js new file mode 100644 index 0000000..703d6a1 --- /dev/null +++ b/Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js @@ -0,0 +1,5 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./three@0.169.19.js","./rolldown-runtime.CYVBeYYp.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{Ar as t,F as n,S as r,St as i,Xt as a,Yt as o,Zt as s,_ as c,_r as l,gr as u,in as d,k as f,lr as p,x as m,xt as h}from"./three@0.169.19.js";import{A as g,D as _,O as v,k as ee}from"./three-examples@0.169.19.js";var te=`3.4.0-beta.3`;globalThis.GLTF_PROGRESSIVE_VERSION=te,console.debug(`[gltf-progressive] version ${te}`);var y=`https://www.gstatic.com/draco/versioned/decoders/1.5.7/`,b=`https://cdn.needle.tools/static/three/0.179.1/basis2/`,ne=y,re=b,ie=new URL(y+`draco_decoder.js`);ie.searchParams.append(`range`,`true`),fetch(ie,{method:`GET`,headers:{Range:`bytes=0-1`}}).catch(e=>{console.debug(`Failed to fetch remote Draco decoder from ${y} (offline: ${typeof navigator<`u`?navigator.onLine:`unknown`})`),y===ne&&oe(`./include/draco/`),b===re&&se(`./include/ktx2/`)}).finally(()=>{ce()});var ae=()=>({dracoDecoderPath:y,ktx2TranscoderPath:b});function oe(e){y=e,w&&w[C]!=y?(console.debug(`Updating Draco decoder path to `+e),w[C]=y,w.setDecoderPath(y),w.preload()):console.debug(`Setting Draco decoder path to `+e)}function se(e){b=e,E&&E.transcoderPath!=b?(console.debug(`Updating KTX2 transcoder path to `+e),E.setTranscoderPath(b),E.init()):console.debug(`Setting KTX2 transcoder path to `+e)}function x(e){return ce(),e?E.detectSupport(e):e!==null&&console.warn(`No renderer provided to detect ktx2 support - loading KTX2 textures might fail`),{dracoLoader:w,ktx2Loader:E,meshoptDecoder:T}}function S(e){e.dracoLoader||e.setDRACOLoader(w),e.ktx2Loader||e.setKTX2Loader(E),e.meshoptDecoder||e.setMeshoptDecoder(T)}var C=Symbol(`dracoDecoderPath`),w,T,E;function ce(){w||(w=new v,w[C]=y,w.setDecoderPath(y),w.setDecoderConfig({type:`js`}),w.preload()),E||(E=new _,E.setTranscoderPath(b),E.init()),T||=ee}var D=new WeakMap;function O(e,t){let n=D.get(e);n=n?Object.assign(n,t):t,D.set(e,n)}var le=g.prototype.load;function ue(...e){let t=D.get(this),n=e[0],r=new URL(n,window.location.href);if(r.hostname.endsWith(`needle.tools`)){let e=t?.progressive===void 0?!0:t.progressive,i=t?.usecase?t.usecase:`default`;e?this.requestHeader.Accept=`*/*;progressive=allowed;usecase=${i}`:this.requestHeader.Accept=`*/*;usecase=${i}`,n=r.toString()}return e[0]=n,le?.call(this,...e)}g.prototype.load=ue,k(`debugprogressive`);function k(e){if(typeof window>`u`)return!1;let t=new URL(window.location.href).searchParams.get(e);return t==null||t===`0`||t===`false`?!1:t===``?!0:t}function de(e,t){if(t===void 0||e===void 0||t.startsWith(`./`)||t.startsWith(`http`)||t.startsWith(`data:`)||t.startsWith(`blob:`))return t;let n=e.lastIndexOf(`/`);if(n>=0){let r=e.substring(0,n+1);for(;r.endsWith(`/`)&&t.startsWith(`/`);)t=t.substring(1);return r+t}return t}function A(){return j===void 0?(j=/iPhone|iPad|iPod|Android|IEMobile/i.test(navigator.userAgent),k(`debugprogressive`)&&console.log(`[glTF Progressive]: isMobileDevice`,j),j):j}var j;function fe(){if(typeof window>`u`)return!1;let e=new URL(window.location.href),t=e.hostname===`localhost`||/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e.hostname);return e.hostname===`127.0.0.1`||t}var pe=class{maxConcurrent;_running=new Map;_queue=[];debug=!1;constructor(e,t={}){this.maxConcurrent=e,this.debug=t.debug??!1,window.requestAnimationFrame(this.tick)}tick=()=>{this.internalUpdate(),setTimeout(this.tick,10)};slot(e){return this.debug&&console.debug(`[PromiseQueue]: Requesting slot for key ${e}, running: ${this._running.size}, waiting: ${this._queue.length}`),new Promise(t=>{this._queue.push({key:e,resolve:t})})}add(e,t){this._running.has(e)||(this._running.set(e,t),t.finally(()=>{this._running.delete(e),this.debug&&console.debug(`[PromiseQueue]: Promise finished now running: ${this._running.size}, waiting: ${this._queue.length}. (finished ${e})`)}),this.debug&&console.debug(`[PromiseQueue]: Added new promise, now running: ${this._running.size}, waiting: ${this._queue.length}. (added ${e})`))}internalUpdate(){let e=this.maxConcurrent-this._running.size;for(let t=0;t0;t++){this.debug&&console.debug(`[PromiseQueue]: Running ${this._running.size} promises, waiting for ${this._queue.length} more.`);let{key:e,resolve:t}=this._queue.shift();t({use:t=>this.add(e,t)})}}};function me(e){let t=e.image?.width??0,n=e.image?.height??0,r=e.image?.depth??1,i=Math.floor(Math.log2(Math.max(t,n,r)))+1,a=he(e);return t*n*r*a*(1-.25**i)/.75}function he(e){let t=4,n=e.format;n===1024||n===1025?t=1:n===1026||n===1027?t=2:n===1022||n===1029?t=3:(n===1023||n===1033)&&(t=4);let r=1,i=e.type;return i===1009||i===1010?r=1:i===1011||i===1012?r=2:i===1013||i===1014||i===1015?r=4:i===1016&&(r=2),t*r}var ge=typeof window>`u`&&typeof document>`u`,M=Symbol(`needle:raycast-mesh`);function N(e){return e?.[M]instanceof r?e[M]:null}function _e(e,t){if((e.type===`Mesh`||e.type===`SkinnedMesh`)&&!N(e)){let n=ye(t);n.userData={isRaycastMesh:!0},e[M]=n}}function ve(e=!0){if(e){if(P)return;let e=P=s.prototype.raycast;s.prototype.raycast=function(t,n){let r=this,i=N(r),a;i&&r.isMesh&&(a=r.geometry,r.geometry=i),e.call(this,t,n),a&&(r.geometry=a)}}else{if(!P)return;s.prototype.raycast=P,P=null}}var P=null;function ye(e){let t=new r;for(let n in e.attributes)t.setAttribute(n,e.getAttribute(n));return t.setIndex(e.getIndex()),t}var F=[],I=k(`debugprogressive`),L=void 0,R=-1;if(I){function e(){R+=1,R>=6&&(R=-1),console.log(`Toggle LOD level [${R}]`)}window.addEventListener(`keyup`,t=>{t.key===`p`&&e(),t.key===`w`&&(L=!L,console.log(`Toggle wireframe [${L}]`));let n=parseInt(t.key);!isNaN(n)&&n>=0&&(R=n,console.log(`Set LOD level to [${R}]`))})}function be(e){if(I&&L!==void 0)if(Array.isArray(e))for(let t of e)be(t);else e&&`wireframe`in e&&(e.wireframe=L===!0)}var z=[],xe=0,Se=A()?2:10;function Ce(e){if(z.length{let{WebGLRenderer:t}=await e(async()=>{let{WebGLRenderer:e}=await import(`./three@0.169.19.js`).then(e=>e.Rr);return{WebGLRenderer:e}},__vite__mapDeps([0,1]),import.meta.url);return new t})(),await this._webglRenderer);let a=x(i).ktx2Loader.workerConfig;t instanceof URL?t=t.toString():t.startsWith(`file:`)?t=URL.createObjectURL(new Blob([t])):!t.startsWith(`blob:`)&&!t.startsWith(`http:`)&&!t.startsWith(`https:`)&&(t=new URL(t,window.location.href).toString());let o={type:`load`,url:t,dracoDecoderPath:r.dracoDecoderPath,ktx2TranscoderPath:r.ktx2TranscoderPath,ktx2LoaderConfig:a};return this._debug&&console.debug(`[Worker] Sending load request`,o),this.worker.postMessage(o),new Promise(e=>{this._running.push({url:t.toString(),resolve:e})})}_debug=!1;constructor(e,t){this.worker=e,this._debug=t.debug??!1,e.onmessage=e=>{let t=e.data;switch(this._debug&&console.log(`[Worker] EVENT`,t),t.type){case`loaded-gltf`:for(let e of this._running)if(e.url===t.result.url){Te(t.result),e.resolve(t.result);let n=e.url;n.startsWith(`blob:`)&&URL.revokeObjectURL(n)}}},e.onerror=e=>{console.error(`[Worker] Error in gltf-progressive worker:`,e)},e.postMessage({type:`init`})}};function Te(e){for(let n of e.geometries){let e=n.geometry,i=new r;if(i.name=e.name||``,e.index){let t=e.index;i.setIndex(B(t))}for(let t in e.attributes){let n=e.attributes[t],r=B(n);i.setAttribute(t,r)}if(e.morphAttributes)for(let t in e.morphAttributes){let n=e.morphAttributes[t].map(e=>B(e));i.morphAttributes[t]=n}if(i.morphTargetsRelative=e.morphTargetsRelative??!1,i.boundingBox=new c,i.boundingBox.min=new t(e.boundingBox?.min.x,e.boundingBox?.min.y,e.boundingBox?.min.z),i.boundingBox.max=new t(e.boundingBox?.max.x,e.boundingBox?.max.y,e.boundingBox?.max.z),i.boundingSphere=new p(new t(e.boundingSphere?.center.x,e.boundingSphere?.center.y,e.boundingSphere?.center.z),e.boundingSphere?.radius),e.groups)for(let t of e.groups)i.addGroup(t.start,t.count,t.materialIndex);e.userData&&(i.userData=e.userData),n.geometry=i}for(let t of e.textures){let e=t.texture,r=null;if(e.isCompressedTexture){let t=e.mipmaps;r=new n(t,e.image?.width||e.source?.data?.width||-1,e.image?.height||e.source?.data?.height||-1,e.format,e.type,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.anisotropy,e.colorSpace)}else r=new u(e.image,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),r.mipmaps=e.mipmaps,r.channel=e.channel,r.source.data=e.source.data,r.flipY=e.flipY,r.premultiplyAlpha=e.premultiplyAlpha,r.unpackAlignment=e.unpackAlignment,r.matrix=new o(...e.matrix.elements);if(!r){console.error(`[Worker] Failed to create new texture from received data. Texture is not a CompressedTexture or Texture.`);continue}t.texture=r}return e}function B(e){let t=e;if(`isInterleavedBufferAttribute`in e&&e.isInterleavedBufferAttribute){let n=e.data,r=n.array;t=new i(new h(r,n.stride),e.itemSize,r.byteOffset,e.normalized),t.offset=e.offset}else `isBufferAttribute`in e&&e.isBufferAttribute&&(t=new m(e.array,e.itemSize,e.normalized),t.usage=e.usage,t.gpuType=e.gpuType,t.updateRanges=e.updateRanges);return t}var Ee=k(`gltf-progressive-worker`);k(`gltf-progressive-reduce-mipmaps`);var V=k(`gltf-progressive-gc`),H=Symbol(`needle-progressive-texture`),U=`NEEDLE_progressive`,W=class e{get name(){return U}static getMeshLODExtension(e){let t=this.getAssignedLODInformation(e);return t?.key?this.lodInfos.get(t.key):null}static getPrimitiveIndex(e){return this.getAssignedLODInformation(e)?.index??-1}static getMaterialMinMaxLODsCount(e,t){let n=this,r=`LODS:minmax`,i=e[r];if(i!=null)return i;if(t||={min_count:1/0,max_count:0,lods:[]},Array.isArray(e)){for(let n of e)this.getMaterialMinMaxLODsCount(n,t);return e[r]=t,t}if(I===`verbose`&&console.log(`getMaterialMinMaxLODsCount`,e),e.type===`ShaderMaterial`||e.type===`RawShaderMaterial`){let n=e;for(let e of Object.keys(n.uniforms)){let r=n.uniforms[e].value;r?.isTexture===!0&&a(r,t)}}else if(e.isMaterial)for(let n of Object.keys(e)){let r=e[n];r?.isTexture===!0&&a(r,t)}else I&&console.warn(`[getMaterialMinMaxLODsCount] Unsupported material type: ${e.type}`);return e[r]=t,t;function a(e,t){let r=n.getAssignedLODInformation(e);if(r){let e=n.lodInfos.get(r.key);if(e&&e.lods){t.min_count=Math.min(t.min_count,e.lods.length),t.max_count=Math.max(t.max_count,e.lods.length);for(let n=0;n{if(Array.isArray(e)){let t=i.index||0;e=e[t]}return t[`LOD:requested level`]===n&&(delete t[`LOD:requested level`],e&&r!=e&&(e?.isBufferGeometry?t.geometry=e:I&&console.error(`Invalid LOD geometry`,e))),e}).catch(e=>(console.error(`Error loading mesh LOD`,t,e),null))}else I&&console.error(`Invalid call to assignMeshLOD: Request mesh LOD but the object is not a mesh`,t);return Promise.resolve(null)}static assignTextureLOD(e,t=0){if(!e)return Promise.resolve(null);if(e.isMesh===!0){let n=e;if(Array.isArray(n.material)){let e=[];for(let r of n.material){let n=this.assignTextureLOD(r,t);e.push(n)}return Promise.all(e).then(e=>{let t=[];for(let n of e)Array.isArray(n)&&t.push(...n);return t})}else return this.assignTextureLOD(n.material,t)}if(e.isMaterial===!0){let n=e,r=[],i=[];if(n.uniforms&&(n.isRawShaderMaterial||n.isShaderMaterial===!0)){let e=n;for(let a of Object.keys(e.uniforms)){let o=e.uniforms[a].value;if(o?.isTexture===!0){let s=this.assignTextureLODForSlot(o,t,n,a).then(t=>(t&&e.uniforms[a].value!=t&&(e.uniforms[a].value=t,e.uniformsNeedUpdate=!0),t));r.push(s),i.push(a)}}}else for(let e of Object.keys(n)){let a=n[e];if(a?.isTexture===!0){let o=this.assignTextureLODForSlot(a,t,n,e);r.push(o),i.push(e)}}return Promise.all(r).then(e=>{let r=[];for(let a=0;a{if(Array.isArray(e))return console.warn(`Progressive: Got an array of textures for a texture slot, this should not happen...`),null;if(e?.isTexture===!0){if(e!=t&&r&&i){let t=r[i];if(t&&!I){let i=this.getAssignedLODInformation(t);if(i&&i?.level(console.error(`Error loading LOD`,t,e),null)):Promise.resolve(null)}parser;url;constructor(e){let t=e.options.path;I&&console.log(`Progressive extension registered for`,t),this.parser=e,this.url=t}_isLoadingMesh;loadMesh=t=>{if(this._isLoadingMesh)return null;let n=this.parser.json.meshes[t]?.extensions?.[U];return n?(this._isLoadingMesh=!0,this.parser.getDependency(`mesh`,t).then(t=>(this._isLoadingMesh=!1,t&&e.registerMesh(this.url,n.guid,t,n.lods?.length,0,n),t))):null};afterRoot(t){return I&&console.log(`AFTER`,this.url,t),this.parser.json.textures?.forEach((t,n)=>{if(t?.extensions){let r=t?.extensions[U];if(r){if(!r.lods){I&&console.warn(`Texture has no LODs`,r);return}let t=!1;for(let i of this.parser.associations.keys())i.isTexture===!0&&this.parser.associations.get(i)?.textures===n&&(t=!0,e.registerTexture(this.url,i,r.lods?.length,n,r));t||this.parser.getDependency(`texture`,n).then(t=>{t&&e.registerTexture(this.url,t,r.lods?.length,n,r)})}}}),this.parser.json.meshes?.forEach((t,n)=>{if(t?.extensions){let r=t?.extensions[U];if(r&&r.lods){for(let t of this.parser.associations.keys())if(t.isMesh){let i=this.parser.associations.get(t);i?.meshes===n&&e.registerMesh(this.url,r.guid,t,r.lods.length,i.primitives,r)}}}}),null}static registerTexture=(t,n,r,i,a)=>{if(!n){I&&console.error(`!! gltf-progressive: Called register texture without texture`);return}if(I){let e=n.image?.width||n.source?.data?.width||0,t=n.image?.height||n.source?.data?.height||0;console.log(`> gltf-progressive: register texture[${i}] "${n.name||n.uuid}", Current: ${e}x${t}, Max: ${a.lods[0]?.width}x${a.lods[0]?.height}, uuid: ${n.uuid}`,a,n)}n.source&&(n.source[H]=a);let o=a.guid;e.assignLODInformation(t,n,o,r,i),e.lodInfos.set(o,a),e.lowresCache.set(o,new WeakRef(n))};static registerMesh=(t,n,r,i,a,o)=>{let s=r.geometry;if(!s){I&&console.warn(`gltf-progressive: Register mesh without geometry`);return}s.userData||={},I&&console.log(`> Progressive: register mesh `+r.name,{index:a,uuid:r.uuid},o,r),e.assignLODInformation(t,s,n,i,a),e.lodInfos.set(n,o);let c=e.lowresCache.get(n)?.deref();c?c.push(r.geometry):c=[r.geometry],e.lowresCache.set(n,new WeakRef(c)),i>0&&!N(r)&&_e(r,s);for(let e of F)e.onRegisteredNewMesh?.(r,o)};static dispose(e){if(e){this.lodInfos.delete(e);let t=this.lowresCache.get(e);if(t){let n=t.deref();if(n){if(n.isTexture){let e=n;this.textureRefCounts.delete(e.uuid),e.dispose()}else if(Array.isArray(n))for(let e of n)e.dispose()}this.lowresCache.delete(e)}for(let[t,n]of this.cache)t.includes(e)&&(this._disposeCacheEntry(n),this.cache.delete(t))}else{this.lodInfos.clear();for(let[,e]of this.lowresCache){let t=e.deref();if(t){if(t.isTexture){let e=t;this.textureRefCounts.delete(e.uuid),e.dispose()}else if(Array.isArray(t))for(let e of t)e.dispose()}}this.lowresCache.clear();for(let[,e]of this.cache)this._disposeCacheEntry(e);this.cache.clear(),this.textureRefCounts.clear()}}static _disposeCacheEntry(e){if(e instanceof WeakRef){let t=e.deref();t&&(t.isTexture&&this.textureRefCounts.delete(t.uuid),t.dispose())}else e.then(e=>{if(e)if(Array.isArray(e))for(let t of e)t.dispose();else e.isTexture&&this.textureRefCounts.delete(e.uuid),e.dispose()}).catch(()=>{})}static lodInfos=new Map;static cache=new Map;static lowresCache=new Map;static textureRefCounts=new Map;static _resourceRegistry=new FinalizationRegistry(t=>{let n=e.cache.get(t);(I||V)&&console.debug(`[gltf-progressive] Memory: Resource GC'd\n${t}`),n instanceof WeakRef&&(n.deref()||(e.cache.delete(t),(I||V)&&console.log(`[gltf-progressive] ↪ Cache entry deleted (GC)`)))});static trackTextureUsage(e){let t=e.uuid,n=this.textureRefCounts.get(t)||0;this.textureRefCounts.set(t,n+1),I===`verbose`&&console.log(`[gltf-progressive] Track texture ${t}, refCount: ${n} → ${n+1}`)}static untrackTextureUsage(e){let t=e.uuid,n=this.textureRefCounts.get(t);if(!n)return(I===`verbose`||V)&&i(`[gltf-progressive] Memory: Untrack untracked texture (dispose immediately)`,0),e.dispose(),!0;let r=n-1;if(r<=0)return this.textureRefCounts.delete(t),(I||V)&&i(`[gltf-progressive] Memory: Dispose texture`,r),e.dispose(),!0;return this.textureRefCounts.set(t,r),I===`verbose`&&i(`[gltf-progressive] Memory: Untrack texture`,r),!1;function i(r,i){let a=e.image?.width||e.source?.data?.width||0,o=e.image?.height||e.source?.data?.height||0,s=a&&o?`${a}x${o}`:`N/A`,c=`N/A`;a&&o&&(c=`~${(me(e)/(1024*1024)).toFixed(2)} MB`),console.log(`${r} — ${e.name} ${s} (${c}), refCount: ${n} → ${i}\n${t}`)}}static workers=[];static _workersIndex=0;static async getOrLoadLOD(t,n){let i=I==`verbose`,a=this.getAssignedLODInformation(t);if(!a)return I&&console.warn(`[gltf-progressive] No LOD information found: ${t.name}, uuid: ${t.uuid}, type: ${t.type}`,t),null;let o=a?.key,s;if(t.isTexture===!0){let e=t;e.source&&e.source[H]&&(s=e.source[H])}if(s||=e.lodInfos.get(o),!s)I&&console.warn(`Can not load LOD ${n}: no LOD info found for \"${o}\" ${t.name}`,t.type,e.lodInfos);else{if(n>0){let e=!1,t=Array.isArray(s.lods);if(t&&n>=s.lods.length?e=!0:t||(e=!0),e){let e=this.lowresCache.get(o);if(e){let t=e.deref();if(t)return t;this.lowresCache.delete(o),I&&console.log(`[gltf-progressive] Lowres cache entry was GC'd: ${o}`)}return null}}let c=Array.isArray(s.lods)?s.lods[n]?.path:s.lods;if(!c)return I&&!s[`missing:uri`]&&(s[`missing:uri`]=!0,console.warn(`Missing uri for progressive asset for LOD `+n,s)),null;let d=de(a.url,c);if(d.endsWith(`.glb`)||d.endsWith(`.gltf`)){if(!s.guid)return console.warn(`missing pointer for glb/gltf texture`,s),null;let c=d+`_`+s.guid,l=await this.queue.slot(d),f=this.cache.get(c);if(f!==void 0)if(i&&console.log(`LOD ${n} was already loading/loaded: ${c}`),f instanceof WeakRef){let e=f.deref();if(e){let n=e,i=!1;if(n instanceof u&&t instanceof u?n.image?.data||n.source?.data?n=this.copySettings(t,n):i=!0:n instanceof r&&t instanceof r&&(n.attributes.position?.array||(i=!0)),!i)return n}this.cache.delete(c),I&&console.log(`[gltf-progressive] Re-loading GC'd/disposed resource: ${c}`)}else{let e=await f.catch(e=>(console.error(`Error loading LOD ${n} from ${d}\n`,e),null)),i=!1;if(e==null||(e instanceof u&&t instanceof u?e.image?.data||e.source?.data?e=this.copySettings(t,e):(i=!0,this.cache.delete(c)):e instanceof r&&t instanceof r&&(e.attributes.position?.array||(i=!0,this.cache.delete(c)))),!i)return e}if(!l.use)return I&&console.log(`LOD ${n} was aborted: ${d}`),null;let p=s,m=new Promise(async(r,s)=>{if(Ee){let i=await(await Ce({})).load(d);if(i.textures.length>0)for(let s of i.textures){let i=s.texture;return e.assignLODInformation(a.url,i,o,n,void 0),t instanceof u&&(i=this.copySettings(t,i)),i&&(i.guid=p.guid),r(i)}if(i.geometries.length>0){let t=[];for(let r of i.geometries){let i=r.geometry;e.assignLODInformation(a.url,i,o,n,r.primitiveIndex),t.push(i)}return r(t)}return r(null)}let l=new g;S(l),I&&(await new Promise(e=>setTimeout(e,1e3)),i&&console.warn(`Start loading (delayed) `+d,p.guid));let f=d;if(p&&Array.isArray(p.lods)){let e=p.lods[n];e.hash&&(f+=`?v=`+e.hash)}let m=await l.loadAsync(f).catch(e=>(console.error(`Error loading LOD ${n} from ${d}\n`,e),r(null)));if(!m)return r(null);let h=m.parser;i&&console.log(`Loading finished `+d,p.guid);let _=0;if(m.parser.json.textures){let s=!1;for(let e of m.parser.json.textures){if(e?.extensions){let t=e?.extensions[U];if(t?.guid&&t.guid===p.guid){s=!0;break}}_++}if(s){let s=await h.getDependency(`texture`,_);return s&&e.assignLODInformation(a.url,s,o,n,void 0),i&&console.log(`change "`+t.name+`" → "`+s.name+`"`,d,_,s,c),t instanceof u&&(s=this.copySettings(t,s)),s&&(s.guid=p.guid),r(s)}else I&&console.warn(`Could not find texture with guid`,p.guid,m.parser.json)}if(_=0,m.parser.json.meshes){let t=!1;for(let e of m.parser.json.meshes){if(e?.extensions){let n=e?.extensions[U];if(n?.guid&&n.guid===p.guid){t=!0;break}}_++}if(t){let t=await h.getDependency(`mesh`,_);if(i&&console.log(`Loaded Mesh \"${t.name}\"`,d,_,t,c),t.isMesh===!0){let i=t.geometry;return e.assignLODInformation(a.url,i,o,n,0),r(i)}else{let i=[];for(let r=0;r{r.forEach(r=>{r.add(e,t,n)})};ready;get awaitedCount(){return this._addedCount}get resolvedCount(){return this._resolvedCount}get currentlyAwaiting(){return this._awaiting.length}_resolve;_signal;_frame_start;_frames_to_capture;_resolved=!1;_addedCount=0;_resolvedCount=0;_awaiting=[];_maxPromisesPerObject=1;constructor(e,t){let n=Math.max(t.frames??2,2);this._frame_start=t.waitForFirstCapture?void 0:e,this._frames_to_capture=n,this.ready=new Promise(e=>{this._resolve=e}),this.ready.finally(()=>{this._resolved=!0,this._awaiting.length=0}),this._signal=t.signal,this._signal?.addEventListener(`abort`,()=>{this.resolveNow()}),this._maxPromisesPerObject=Math.max(1,t.maxPromisesPerObject??1)}_currentFrame=0;update(e){this._currentFrame=e,this._frame_start===void 0&&this._addedCount>0&&(this._frame_start=e),(this._signal?.aborted||this._awaiting.length===0&&this._frame_start!==void 0&&e>this._frame_start+this._frames_to_capture)&&this.resolveNow()}_seen=new WeakMap;add(e,t,n){if(this._resolved){I&&console.warn(`PromiseGroup: Trying to add a promise to a resolved group, ignoring.`);return}if(!(this._frame_start!==void 0&&this._currentFrame>this._frame_start+this._frames_to_capture)){if(this._maxPromisesPerObject>=1)if(this._seen.has(t)){let e=this._seen.get(t);if(e>=this._maxPromisesPerObject){I&&console.warn(`PromiseGroup: Already awaiting object ignoring new promise for it.`);return}this._seen.set(t,e+1)}else this._seen.set(t,1);this._awaiting.push(n),this._addedCount++,n.finally(()=>{this._resolvedCount++,this._awaiting.splice(this._awaiting.indexOf(n),1)})}}resolveNow(){this._resolved||this._resolve?.({awaited_count:this._addedCount,resolved_count:this._resolvedCount,cancelled:this._signal?.aborted??!1})}},K=k(`debugprogressive`),Oe=k(`noprogressive`),q=Symbol(`Needle:LODSManager`),J=Symbol(`Needle:LODState`),Y=Symbol(`Needle:CurrentLOD`),X={mesh_lod:-1,texture_lod:-1},Z=class e{static debugDrawLine;static getObjectLODState(e){return e[J]}static addPlugin(e){F.push(e)}static removePlugin(e){let t=F.indexOf(e);t>=0&&F.splice(t,1)}static get(t,n){if(t[q])return console.debug(`[gltf-progressive] LODsManager already exists for this renderer`),t[q];let r=new e(t,{engine:`unknown`,...n});return t[q]=r,r}renderer;context;projectionScreenMatrix=new a;get plugins(){return F}overrideLodLevel=void 0;targetTriangleDensity=2e5;skinnedMeshAutoUpdateBoundsInterval=30;updateInterval=`auto`;#e=1;pause=!1;manual=!1;_newPromiseGroups=[];_promiseGroupIds=0;awaitLoading(e){let t=this._promiseGroupIds++,n=new G(this.#r,{...e});this._newPromiseGroups.push(n);let r=performance.now();return n.ready.finally(()=>{let i=this._newPromiseGroups.indexOf(n);i>=0&&(this._newPromiseGroups.splice(i,1),fe()&&performance.measure(`LODsManager:awaitLoading`,{start:r,detail:{id:t,name:e?.name,awaited:n.awaitedCount,resolved:n.resolvedCount}}))}),n.ready}_postprocessPromiseGroups(){if(this._newPromiseGroups.length!==0)for(let e=this._newPromiseGroups.length-1;e>=0;e--)this._newPromiseGroups[e].update(this.#r)}_lodchangedlisteners=[];addEventListener(e,t){e===`changed`&&this._lodchangedlisteners.push(t)}removeEventListener(e,t){if(e===`changed`){let e=this._lodchangedlisteners.indexOf(t);e>=0&&this._lodchangedlisteners.splice(e,1)}}constructor(e,t){this.renderer=e,this.context={...t}}#t;#n=new f;#r=0;#i=0;#a=0;#o=0;_fpsBuffer=[60,60,60,60,60];enable(){if(this.#t)return;console.debug(`[gltf-progressive] Enabling LODsManager for renderer`);let e=0;this.#t=this.renderer.render;let t=this;x(this.renderer),this.renderer.render=function(n,r){let i=t.renderer.getRenderTarget();(i==null||`isXRRenderTarget`in i&&i.isXRRenderTarget)&&(e=0,t.#r+=1,t.#i=t.#n.getDelta(),t.#a+=t.#i,t._fpsBuffer.shift(),t._fpsBuffer.push(1/t.#i),t.#o=t._fpsBuffer.reduce((e,t)=>e+t)/t._fpsBuffer.length,K&&t.#r%200==0&&console.log(`FPS`,Math.round(t.#o),`Interval:`,t.#e));let a=e++;t.#t.call(this,n,r),t.onAfterRender(n,r,a)}}disable(){this.#t&&=(console.debug(`[gltf-progressive] Disabling LODsManager for renderer`),this.renderer.render=this.#t,void 0)}update(e,t){this.internalUpdate(e,t)}onAfterRender(e,t,n){if(this.pause)return;let r=this.renderer.renderLists.get(e,0).opaque,i=!0;if(r.length===1){let e=r[0].material;(e.name===`EffectMaterial`||e.name===`CopyShader`)&&(i=!1)}if((t.parent&&t.parent.type===`CubeCamera`||n>=1&&t.type===`OrthographicCamera`)&&(i=!1),i){if(Oe||(this.updateInterval===`auto`?this.#o<40&&this.#e<10?(this.#e+=1,K&&console.warn(`↓ Reducing LOD updates`,this.#e,this.#o.toFixed(0))):this.#o>=60&&this.#e>1&&(--this.#e,K&&console.warn(`↑ Increasing LOD updates`,this.#e,this.#o.toFixed(0))):this.#e=this.updateInterval,this.#e>0&&this.#r%this.#e!=0))return;this.internalUpdate(e,t),this._postprocessPromiseGroups()}}internalUpdate(e,t){let n=this.renderer.renderLists.get(e,0),r=n.opaque;this.projectionScreenMatrix.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);let i=this.targetTriangleDensity;for(let n of r){if(n.material&&(n.geometry?.type===`BoxGeometry`||n.geometry?.type===`BufferGeometry`)&&(n.material.name===`SphericalGaussianBlur`||n.material.name==`BackgroundCubeMaterial`||n.material.name===`CubemapFromEquirect`||n.material.name===`EquirectangularToCubeUV`)){K&&(n.material[`NEEDLE_PROGRESSIVE:IGNORE-WARNING`]||(n.material[`NEEDLE_PROGRESSIVE:IGNORE-WARNING`]=!0,console.warn(`Ignoring skybox or BLIT object`,n,n.material.name,n.material.type)));continue}switch(n.material.type){case`LineBasicMaterial`:case`LineDashedMaterial`:case`PointsMaterial`:case`ShadowMaterial`:case`MeshDistanceMaterial`:case`MeshDepthMaterial`:continue}if(K===`color`&&n.material&&!n.object.progressive_debug_color){n.object.progressive_debug_color=!0;let e=new d({color:Math.random()*16777215});n.object.material=e}let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}let a=n.transparent;for(let n of a){let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}let o=n.transmissive;for(let n of o){let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}}updateLODs(e,t,n,r){n.userData||={};let i=n[J];if(i||(i=new ke,n[J]=i),i.frames++<2)return;for(let r of F)r.onBeforeUpdateLOD?.(this.renderer,e,t,n);let a=this.overrideLodLevel===void 0?R:this.overrideLodLevel;a>=0?(X.mesh_lod=a,X.texture_lod=a):(this.calculateLodLevel(t,n,i,r,X),X.mesh_lod=Math.round(X.mesh_lod),X.texture_lod=Math.round(X.texture_lod)),X.mesh_lod>=0&&this.loadProgressiveMeshes(n,X.mesh_lod),n.material&&X.texture_lod>=0&&this.loadProgressiveTextures(n.material,X.texture_lod,a),I&&n.material&&!n.isGizmo&&be(n.material);for(let r of F)r.onAfterUpdatedLOD?.(this.renderer,e,t,n,X);i.lastLodLevel_Mesh=X.mesh_lod,i.lastLodLevel_Texture=X.texture_lod}loadProgressiveTextures(e,t,n){if(!e)return;if(Array.isArray(e)){for(let n of e)this.loadProgressiveTextures(n,t);return}let r=!1;if((e[Y]===void 0||t=0&&(r=e[Y]!=n,t=n),r){e[Y]=t;let n=W.assignTextureLOD(e,t).then(n=>{this._lodchangedlisteners.forEach(n=>n({type:`texture`,level:t,object:e}))});G.addPromise(`texture`,e,n,this._newPromiseGroups)}}loadProgressiveMeshes(e,t){if(!e)return Promise.resolve(null);let n=e[Y]!==t,r=e[`DEBUG:LOD`];if(r!=null&&(n=e[Y]!=r,t=r),n){e[Y]=t;let n=e.geometry,r=W.assignMeshLOD(e,t).then(r=>(r&&e[Y]==t&&n!=e.geometry&&this._lodchangedlisteners.forEach(n=>n({type:`mesh`,level:t,object:e})),r));return G.addPromise(`mesh`,e,r,this._newPromiseGroups),r}return Promise.resolve(null)}_sphere=new p;_tempBox=new c;_tempBox2=new c;tempMatrix=new a;_tempWorldPosition=new t;_tempBoxSize=new t;_tempBox2Size=new t;static corner0=new t;static corner1=new t;static corner2=new t;static corner3=new t;static _tempPtInside=new t;static isInside(e,t){let n=e.min,r=e.max,i=(n.x+r.x)*.5,a=(n.y+r.y)*.5;return this._tempPtInside.set(i,a,n.z).applyMatrix4(t).z<0}static skinnedMeshBoundsFrameOffsetCounter=0;static $skinnedMeshBoundsOffset=Symbol(`gltf-progressive-skinnedMeshBoundsOffset`);calculateLodLevel(t,n,r,i,a){if(!n){a.mesh_lod=-1,a.texture_lod=-1;return}if(!t){a.mesh_lod=-1,a.texture_lod=-1;return}let o=11,s=!1;if(K&&n[`DEBUG:LOD`]!=null)return n[`DEBUG:LOD`];let c=W.getMeshLODExtension(n.geometry)?.lods,l=W.getPrimitiveIndex(n.geometry),u=c&&c.length>0,d=W.getMaterialMinMaxLODsCount(n.material),f=d.min_count!==1/0&&d.min_count>=0&&d.max_count>=0;if(!u&&!f){a.mesh_lod=0,a.texture_lod=0;return}u||(s=!0,o=0);let p=this.renderer.domElement.clientHeight||this.renderer.domElement.height,m=n.geometry.boundingBox;if(n.type===`SkinnedMesh`){let t=n;if(!t.boundingBox)t.computeBoundingBox();else if(this.skinnedMeshAutoUpdateBoundsInterval>0){if(!t[e.$skinnedMeshBoundsOffset]){let n=e.skinnedMeshBoundsFrameOffsetCounter++;t[e.$skinnedMeshBoundsOffset]=n}let n=t[e.$skinnedMeshBoundsOffset];if((r.frames+n)%this.skinnedMeshAutoUpdateBoundsInterval===0){let e=N(t),n=t.geometry;e&&(t.geometry=e),t.computeBoundingBox(),t.geometry=n}}m=t.boundingBox}if(m){let u=t;if(n.geometry.attributes.color&&n.geometry.attributes.color.count<100&&n.geometry.boundingSphere){this._sphere.copy(n.geometry.boundingSphere),this._sphere.applyMatrix4(n.matrixWorld);let e=t.getWorldPosition(this._tempWorldPosition);if(this._sphere.containsPoint(e)){a.mesh_lod=0,a.texture_lod=0;return}}if(this._tempBox.copy(m),this._tempBox.applyMatrix4(n.matrixWorld),u.isPerspectiveCamera&&e.isInside(this._tempBox,this.projectionScreenMatrix)){a.mesh_lod=0,a.texture_lod=0;return}if(this._tempBox.applyMatrix4(this.projectionScreenMatrix),this.renderer.xr.enabled&&u.isPerspectiveCamera&&u.fov>70){let e=this._tempBox.min,t=this._tempBox.max,n=e.x,i=e.y,a=t.x,o=t.y,s=1.5,c=(e.x+t.x)*.5,l=(e.y+t.y)*.5;n=(n-c)*2+c,i=(i-l)*2+l,a=(a-c)*2+c,o=(o-l)*2+l;let u=n<0&&a>0?0:Math.min(Math.abs(e.x),Math.abs(t.x)),d=i<0&&o>0?0:Math.min(Math.abs(e.y),Math.abs(t.y)),f=Math.max(u,d);r.lastCentrality=(s-f)*(s-f)*(s-f)}else r.lastCentrality=1;let d=this._tempBox.getSize(this._tempBoxSize);d.multiplyScalar(.5),screen.availHeight>0&&p>0&&d.multiplyScalar(p/screen.availHeight),t.isPerspectiveCamera?d.x*=t.aspect:t.isOrthographicCamera;let f=t.matrixWorldInverse,h=this._tempBox2;h.copy(m),h.applyMatrix4(n.matrixWorld),h.applyMatrix4(f);let g=h.getSize(this._tempBox2Size),_=Math.max(g.x,g.y);if(Math.max(d.x,d.y)!=0&&_!=0&&(d.z=g.z/Math.max(g.x,g.y)*Math.max(d.x,d.y)),r.lastScreenCoverage=Math.max(d.x,d.y,d.z),r.lastScreenspaceVolume.copy(d),r.lastScreenCoverage*=r.lastCentrality,K&&e.debugDrawLine){let t=this.tempMatrix.copy(this.projectionScreenMatrix);t.invert();let n=e.corner0,r=e.corner1,i=e.corner2,a=e.corner3;n.copy(this._tempBox.min),r.copy(this._tempBox.max),r.x=n.x,i.copy(this._tempBox.max),i.y=n.y,a.copy(this._tempBox.max),n.z=r.z=i.z=a.z=(n.z+a.z)*.5,n.applyMatrix4(t),r.applyMatrix4(t),i.applyMatrix4(t),a.applyMatrix4(t),e.debugDrawLine(n,r,255),e.debugDrawLine(n,i,255),e.debugDrawLine(r,a,255),e.debugDrawLine(i,a,255)}let v=999;if(c&&r.lastScreenCoverage>0)for(let e=0;e0&&fe()&&!t.densities&&!globalThis[`NEEDLE:MISSING_LOD_PRIMITIVE_DENSITIES`]&&(window[`NEEDLE:MISSING_LOD_PRIMITIVE_DENSITIES`]=!0,console.warn(`[Needle Progressive] Detected usage of mesh without primitive densities. This might cause incorrect LOD level selection: Consider re-optimizing your model by updating your Needle Integration, Needle glTF Pipeline or running optimization again on Needle Cloud.`)),n=0;i--){let c=d.lods[i];if(!(e&&c.max_height>=2048)&&!(A()&&c.max_height>4096)&&(c.max_height>o||!s&&i===0)){if(s=!0,a.texture_lod=i,K&&a.texture_lod{e.forEach(e=>{e.addedNodes.forEach(e=>{e instanceof HTMLElement&&e.tagName.toLowerCase()===`model-viewer`&&Ie(e)})})}),$.observe(document,{childList:!0,subtree:!0}))}function Me(){return typeof customElements>`u`?null:customElements.get(`model-viewer`)||(customElements.whenDefined(`model-viewer`).then(()=>{console.debug(`[gltf-progressive] model-viewer defined`),je()}),null)}function Ne(){typeof document>`u`||document.querySelectorAll(`model-viewer`).forEach(e=>{Ie(e)})}var Pe=new WeakSet,Fe=0;function Ie(e){if(!e||Pe.has(e))return null;Pe.add(e),console.debug(`[gltf-progressive] found new model-viewer...`+ ++Fe+` +`,e.getAttribute(`src`));let t=null,n=null,r=null;for(let i=e;i!=null;i=Object.getPrototypeOf(i)){let a=Object.getOwnPropertySymbols(i),o=a.find(e=>e.toString()==`Symbol(renderer)`),s=a.find(e=>e.toString()==`Symbol(scene)`),c=a.find(e=>e.toString()==`Symbol(needsRender)`);!t&&o!=null&&(t=e[o].threeRenderer),!n&&s!=null&&(n=e[s]),!r&&c!=null&&(r=e[c])}if(t&&n){console.debug(`[gltf-progressive] setup model-viewer`);let n=Z.get(t,{engine:`model-viewer`});Z.addPlugin(new Le),n.enable(),n.addEventListener(`changed`,()=>{r?.call(e)}),e.addEventListener(`model-visibility`,t=>{t.detail.visible&&r?.call(e)}),e.addEventListener(`load`,()=>{i()});function i(){if(r){let t=0,n=setInterval(()=>{if(t++>5){clearInterval(n);return}r?.call(e)},300)}}return()=>{n.disable()}}return null}var Le=class{_didWarnAboutMissingUrl=!1;onBeforeUpdateLOD(e,t,n,r){this.tryParseMeshLOD(t,r),this.tryParseTextureLOD(t,r)}getUrl(e){if(!e)return null;let t=e.getAttribute(`src`);return t||=e.src,t||(this._didWarnAboutMissingUrl||console.warn(`No url found in modelviewer`,e),this._didWarnAboutMissingUrl=!0),t}tryGetCurrentGLTF(e){return e._currentGLTF}tryGetCurrentModelViewer(e){return e.element}tryParseTextureLOD(e,t){if(t[Q]==1)return;t[Q]=!0;let n=this.tryGetCurrentGLTF(e),r=this.tryGetCurrentModelViewer(e),i=this.getUrl(r);if(i&&n&&t.material){let e=t.material;if(Array.isArray(e))for(let t of e)r(t);else r(e);function r(e){if(e[Q]==1)return;e[Q]=!0,e.userData&&(e.userData.LOD=-1);let t=Object.keys(e);for(let r=0;rnew W(e));let a=Z.get(n);return i?.enableLODsManager!==!1&&a.enable(),a}if(je(),!ge){let e={gltfProgressive:{useNeedleProgressive:Re,LODsManager:Z,configureLoader:O,getRaycastMesh:N,useRaycastMeshes:ve}};if(!globalThis.Needle)globalThis.Needle=e;else for(let t in e)globalThis.Needle[t]=e[t]}export{O as a,se as c,S as i,W as n,x as o,N as r,oe as s,Z as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js.gz b/Needle/MenuScene/dist/assets/gltf-progressive.BBJGcb3s.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c16472951726e4533129c4df6863b8e586c58dd5 GIT binary patch literal 13752 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js b/Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js new file mode 100644 index 0000000..b84431f --- /dev/null +++ b/Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js @@ -0,0 +1,3576 @@ +(function(){var e=(function(){"use strict";var e=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb`,t=`b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb`,n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=`object`)return{supported:!1};var i=WebAssembly.validate(n)?t:e,a,o=WebAssembly.instantiate(s(i),{}).then(function(e){a=e.instance,a.exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),n=0;n96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})(),t={url:self.location.href}; +/** +* @license +* Copyright 2010-2024 Three.js Authors +* SPDX-License-Identifier: MIT +*/ +let n=`169.19`,r=1e3,i=1001,a=1002,o=1003,s=1004,c=1006,l=1008,u=1009,d=1015,f=1016,p=1022,m=1023,h=1028,g=1030,_=33776,v=33777,y=33778,b=33779,x=37492,S=37496,ee=37808,te=37812,ne=36492,re=2300,ie=2301,ae=2302,oe=2400,se=2401,ce=2402,C=`srgb`,w=`srgb-linear`,le=`display-p3-linear`,ue=`linear`,de=`srgb`,fe=`rec709`,pe=7680,me=35044,he=2e3;var ge=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+T[e>>16&255]+T[e>>24&255]+`-`+T[t&255]+T[t>>8&255]+`-`+T[t>>16&15|64]+T[t>>24&255]+`-`+T[n&63|128]+T[n>>8&255]+`-`+T[n>>16&255]+T[n>>24&255]+T[r&255]+T[r>>8&255]+T[r>>16&255]+T[r>>24&255]).toLowerCase()}function xe(e,t,n){return Math.max(t,Math.min(n,e))}function Se(e,t){return(e%t+t)%t}function Ce(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function we(e,t,n){return e===t?0:(n-e)/(t-e)}function Te(e,t,n){return(1-n)*e+n*t}function Ee(e,t,n,r){return Te(e,t,1-Math.exp(-n*r))}function De(e,t=1){return t-Math.abs(Se(e,t*2)-t)}function Oe(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function ke(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function Ae(e,t){return e+Math.floor(Math.random()*(t-e+1))}function je(e,t){return e+Math.random()*(t-e)}function Me(e){return e*(.5-Math.random())}function Ne(e){e!==void 0&&(_e=e);let t=_e+=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 Pe(e){return e*ve}function Fe(e){return e*ye}function Ie(e){return(e&e-1)==0&&e!==0}function Le(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function Re(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ze(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function Be(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 E(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.`)}}let Ve={DEG2RAD:ve,RAD2DEG:ye,generateUUID:be,clamp:xe,euclideanModulo:Se,mapLinear:Ce,inverseLerp:we,lerp:Te,damp:Ee,pingpong:De,smoothstep:Oe,smootherstep:ke,randInt:Ae,randFloat:je,randFloatSpread:Me,seededRandom:Ne,degToRad:Pe,radToDeg:Fe,isPowerOfTwo:Ie,ceilPowerOfTwo:Le,floorPowerOfTwo:Re,setQuaternionFromProperEuler:ze,normalize:E,denormalize:Be};var D=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(xe(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}},O=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(He.makeScale(e,t)),this}rotate(e){return this.premultiply(He.makeRotation(-e)),this}translate(e,t){return this.premultiply(He.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)}};let He=new O;function Ue(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}function We(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}let Ge=new O().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Ke=new O().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),qe={[w]:{transfer:ue,primaries:fe,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[C]:{transfer:de,primaries:fe,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[le]:{transfer:ue,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Ke),fromReference:e=>e.applyMatrix3(Ge)},"display-p3":{transfer:de,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Ke),fromReference:e=>e.applyMatrix3(Ge).convertLinearToSRGB()}},Je=new Set([w,le]),Ye={enabled:!0,_workingColorSpace:w,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!Je.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=qe[t].toReference,i=qe[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return qe[e].primaries},getTransfer:function(e){return e===``?ue:qe[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(qe[t].luminanceCoefficients)}};function Xe(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Ze(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}let Qe;var $e=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Qe===void 0&&(Qe=We(`canvas`)),Qe.width=e.width,Qe.height=e.height;let n=Qe.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Qe}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=We(`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;e0&&(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 r:e.x-=Math.floor(e.x);break;case i:e.x=e.x<0?0:1;break;case a: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 r:e.y-=Math.floor(e.y);break;case i:e.y=e.y<0?0:1;break;case a: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++}};it.DEFAULT_IMAGE=null,it.DEFAULT_MAPPING=300,it.DEFAULT_ANISOTROPY=4;var k=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(xe(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},A=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(lt.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(lt.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 ct.copy(this).projectOnVector(e),this.sub(ct)}reflect(e){return this.sub(ct.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(xe(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}};let ct=new A,lt=new st;var ut=class{constructor(e=new A(1/0,1/0,1/0),t=new A(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,ft),ft.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(bt),xt.subVectors(this.max,bt),mt.subVectors(e.a,bt),ht.subVectors(e.b,bt),gt.subVectors(e.c,bt),_t.subVectors(ht,mt),vt.subVectors(gt,ht),yt.subVectors(mt,gt);let t=[0,-_t.z,_t.y,0,-vt.z,vt.y,0,-yt.z,yt.y,_t.z,0,-_t.x,vt.z,0,-vt.x,yt.z,0,-yt.x,-_t.y,_t.x,0,-vt.y,vt.x,0,-yt.y,yt.x,0];return!wt(t,mt,ht,gt,xt)||(t=[1,0,0,0,1,0,0,0,1],!wt(t,mt,ht,gt,xt))?!1:(St.crossVectors(_t,vt),t=[St.x,St.y,St.z],wt(t,mt,ht,gt,xt))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,ft).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(ft).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:(dt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),dt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),dt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),dt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),dt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),dt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),dt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),dt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(dt),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)}};let dt=[new A,new A,new A,new A,new A,new A,new A,new A],ft=new A,pt=new ut,mt=new A,ht=new A,gt=new A,_t=new A,vt=new A,yt=new A,bt=new A,xt=new A,St=new A,Ct=new A;function wt(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){Ct.fromArray(e,a);let o=i.x*Math.abs(Ct.x)+i.y*Math.abs(Ct.y)+i.z*Math.abs(Ct.z),s=t.dot(Ct),c=n.dot(Ct),l=r.dot(Ct);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}let Tt=new ut,Et=new A,Dt=new A;var Ot=class{constructor(e=new A,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?Tt.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;Et.subVectors(e,this.center);let t=Et.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(Et,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):(Dt.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Et.copy(e.center).add(Dt)),this.expandByPoint(Et.copy(e.center).sub(Dt))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};let kt=new A,At=new A,jt=new A,Mt=new A,Nt=new A,Pt=new A,Ft=new A;var It=class{constructor(e=new A,t=new A(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,kt)),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=kt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(kt.copy(this.origin).addScaledVector(this.direction,t),kt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){At.copy(e).add(t).multiplyScalar(.5),jt.copy(t).sub(e).normalize(),Mt.copy(this.origin).sub(At);let i=e.distanceTo(t)*.5,a=-this.direction.dot(jt),o=Mt.dot(this.direction),s=-Mt.dot(jt),c=Mt.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(At).addScaledVector(jt,d),f}intersectSphere(e,t){kt.subVectors(e.center,this.origin);let n=kt.dot(this.direction),r=kt.dot(kt)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,kt)!==null}intersectTriangle(e,t,n,r,i){Nt.subVectors(t,e),Pt.subVectors(n,e),Ft.crossVectors(Nt,Pt);let a=this.direction.dot(Ft),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Mt.subVectors(this.origin,e);let s=o*this.direction.dot(Pt.crossVectors(Mt,Pt));if(s<0)return null;let c=o*this.direction.dot(Nt.cross(Mt));if(c<0||s+c>a)return null;let l=-o*Mt.dot(Ft);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)}},j=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/Lt.setFromMatrixColumn(e,0).length(),i=1/Lt.setFromMatrixColumn(e,1).length(),a=1/Lt.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(zt,e,Bt)}lookAt(e,t,n){let r=this.elements;return Ut.subVectors(e,t),Ut.lengthSq()===0&&(Ut.z=1),Ut.normalize(),Vt.crossVectors(n,Ut),Vt.lengthSq()===0&&(Math.abs(n.z)===1?Ut.x+=1e-4:Ut.z+=1e-4,Ut.normalize(),Vt.crossVectors(n,Ut)),Vt.normalize(),Ht.crossVectors(Ut,Vt),r[0]=Vt.x,r[4]=Ht.x,r[8]=Ut.x,r[1]=Vt.y,r[5]=Ht.y,r[9]=Ut.y,r[2]=Vt.z,r[6]=Ht.z,r[10]=Ut.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],ee=r[8],te=r[12],ne=r[1],re=r[5],ie=r[9],ae=r[13],oe=r[2],se=r[6],ce=r[10],C=r[14],w=r[3],le=r[7],ue=r[11],de=r[15];return i[0]=a*x+o*ne+s*oe+c*w,i[4]=a*S+o*re+s*se+c*le,i[8]=a*ee+o*ie+s*ce+c*ue,i[12]=a*te+o*ae+s*C+c*de,i[1]=l*x+u*ne+d*oe+f*w,i[5]=l*S+u*re+d*se+f*le,i[9]=l*ee+u*ie+d*ce+f*ue,i[13]=l*te+u*ae+d*C+f*de,i[2]=p*x+m*ne+h*oe+g*w,i[6]=p*S+m*re+h*se+g*le,i[10]=p*ee+m*ie+h*ce+g*ue,i[14]=p*te+m*ae+h*C+g*de,i[3]=_*x+v*ne+y*oe+b*w,i[7]=_*S+v*re+y*se+b*le,i[11]=_*ee+v*ie+y*ce+b*ue,i[15]=_*te+v*ae+y*C+b*de,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=Lt.set(r[0],r[1],r[2]).length(),a=Lt.set(r[4],r[5],r[6]).length(),o=Lt.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],Rt.copy(this);let s=1/i,c=1/a,l=1/o;return Rt.elements[0]*=s,Rt.elements[1]*=s,Rt.elements[2]*=s,Rt.elements[4]*=c,Rt.elements[5]*=c,Rt.elements[6]*=c,Rt.elements[8]*=l,Rt.elements[9]*=l,Rt.elements[10]*=l,t.setFromRotationMatrix(Rt),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=he){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=he){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}};let Lt=new A,Rt=new j,zt=new A(0,0,0),Bt=new A(1,1,1),Vt=new A,Ht=new A,Ut=new A,Wt=new j,Gt=new st;var Kt=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(xe(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(-xe(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(xe(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(-xe(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(xe(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(-xe(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Wt.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Wt,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Gt.setFromEuler(this),this.setFromQuaternion(Gt,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}};Kt.DEFAULT_ORDER=`XYZ`;var qt=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){un.subVectors(r,t),dn.subVectors(n,t),fn.subVectors(e,t);let a=un.dot(un),o=un.dot(dn),s=un.dot(fn),c=dn.dot(dn),l=dn.dot(fn),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,pn)===null?!1:pn.x>=0&&pn.y>=0&&pn.x+pn.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,pn)===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,pn.x),s.addScaledVector(a,pn.y),s.addScaledVector(o,pn.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return bn.setScalar(0),xn.setScalar(0),Sn.setScalar(0),bn.fromBufferAttribute(e,t),xn.fromBufferAttribute(e,n),Sn.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(bn,i.x),a.addScaledVector(xn,i.y),a.addScaledVector(Sn,i.z),a}static isFrontFacing(e,t,n,r){return un.subVectors(n,t),dn.subVectors(e,t),un.cross(dn).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 un.subVectors(this.c,this.b),dn.subVectors(this.a,this.b),un.cross(dn).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;mn.subVectors(r,n),hn.subVectors(i,n),_n.subVectors(e,n);let s=mn.dot(_n),c=hn.dot(_n);if(s<=0&&c<=0)return t.copy(n);vn.subVectors(e,r);let l=mn.dot(vn),u=hn.dot(vn);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(mn,a);yn.subVectors(e,i);let f=mn.dot(yn),p=hn.dot(yn);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(hn,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return gn.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(gn,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(mn,a).addScaledVector(hn,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};let wn={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},Tn={h:0,s:0,l:0},En={h:0,s:0,l:0};function Dn(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 N=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=C){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ye.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Ye.workingColorSpace){return this.r=e,this.g=t,this.b=n,Ye.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Ye.workingColorSpace){if(e=Se(e,1),t=xe(t,0,1),n=xe(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=Dn(i,r,e+1/3),this.g=Dn(i,r,e),this.b=Dn(i,r,e-1/3)}return Ye.toWorkingColorSpace(this,r),this}setStyle(e,t=C){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=C){let n=wn[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=Xe(e.r),this.g=Xe(e.g),this.b=Xe(e.b),this}copyLinearToSRGB(e){return this.r=Ze(e.r),this.g=Ze(e.g),this.b=Ze(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=C){return Ye.fromWorkingColorSpace(P.copy(this),e),Math.round(xe(P.r*255,0,255))*65536+Math.round(xe(P.g*255,0,255))*256+Math.round(xe(P.b*255,0,255))}getHexString(e=C){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ye.workingColorSpace){Ye.fromWorkingColorSpace(P.copy(this),t);let n=P.r,r=P.g,i=P.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+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){console.warn(`THREE.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.6,type:`Material`,generator:`Material.toJSON`}};n.uuid=this.uuid,n.type=this.type,this.name!==``&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==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.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.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++}},An=class extends kn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new N(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 Kt,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}};let F=new A,jn=new D;var Mn=class{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=me,this.updateRanges=[],this.gpuType=d,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;r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2))&&(Un.copy(i).invert(),Wn.copy(e.ray).applyMatrix4(Un),!(n.boundingBox!==null&&Wn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Wn)))}_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;in.far?null:{distance:l,point:$n.clone(),object:e}}function nr(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,qn),e.getVertexPosition(c,Jn),e.getVertexPosition(l,Yn);let u=tr(e,t,n,r,qn,Jn,Yn,Qn);if(u){let e=new A;Cn.getBarycoord(Qn,qn,Jn,Yn,e),i&&(u.uv=Cn.getInterpolatedAttribute(i,s,c,l,e,new D)),a&&(u.uv1=Cn.getInterpolatedAttribute(a,s,c,l,e,new D)),o&&(u.normal=Cn.getInterpolatedAttribute(o,s,c,l,e,new A),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new A,materialIndex:0};Cn.getNormal(qn,Jn,Yn,t.normal),u.face=t,u.barycoord=e}return u}function rr(e){let t={};for(let n in e){t[n]={};for(let r in e[n]){let i=e[n][r];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn(`UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().`),t[n][r]=null):t[n][r]=i.clone():Array.isArray(i)?t[n][r]=i.slice():t[n][r]=i}}return t}function ir(e){let t={};for(let n=0;n1?null:t.copy(e.start).addScaledVector(n,i)}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||hr.getNormalMatrix(e),r=this.coplanarPoint(pr).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)}};let _r=new Ot,vr=new A;var yr=class{constructor(e=new gr,t=new gr,n=new gr,r=new gr,i=new gr,a=new gr){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=he){let n=this.planes,r=e.elements,i=r[0],a=r[1],o=r[2],s=r[3],c=r[4],l=r[5],u=r[6],d=r[7],f=r[8],p=r[9],m=r[10],h=r[11],g=r[12],_=r[13],v=r[14],y=r[15];if(n[0].setComponents(s-i,d-c,h-f,y-g).normalize(),n[1].setComponents(s+i,d+c,h+f,y+g).normalize(),n[2].setComponents(s+a,d+l,h+p,y+_).normalize(),n[3].setComponents(s-a,d-l,h-p,y-_).normalize(),n[4].setComponents(s-o,d-u,h-m,y-v).normalize(),t===2e3)n[5].setComponents(s+o,d+u,h+m,y+v).normalize();else if(t===2001)n[5].setComponents(o,u,m,v).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(),_r.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),_r.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(_r)}intersectsSprite(e){return _r.center.set(0,0,0),_r.radius=.7071067811865476,_r.applyMatrix4(e.matrixWorld),this.intersectsSphere(_r)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,vr.y=r.normal.y>0?e.max.y:e.min.y,vr.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(vr)<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)}};let L={alphahash_fragment:`#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`,alphamap_fragment:`#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`,alphamap_pars_fragment:`#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,alphatest_fragment:`#ifdef USE_ALPHATEST + #ifdef ALPHA_TO_COVERAGE + diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); + if ( diffuseColor.a == 0.0 ) discard; + #else + if ( diffuseColor.a < alphaTest ) discard; + #endif +#endif`,alphatest_pars_fragment:`#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`,aomap_fragment:`#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`,aomap_pars_fragment:`#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`,batching_pars_vertex:`#ifdef USE_BATCHING + #if ! defined( GL_ANGLE_multi_draw ) + #define gl_DrawID _gl_DrawID + uniform int _gl_DrawID; + #endif + uniform highp sampler2D batchingTexture; + uniform highp usampler2D batchingIdTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } + float getIndirectIndex( const in int i ) { + int size = textureSize( batchingIdTexture, 0 ).x; + int x = i % size; + int y = i / size; + return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); + } +#endif +#ifdef USE_BATCHING_COLOR + uniform sampler2D batchingColorTexture; + vec3 getBatchingColor( const in float i ) { + int size = textureSize( batchingColorTexture, 0 ).x; + int j = int( i ); + int x = j % size; + int y = j / size; + return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; + } +#endif`,batching_vertex:`#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); +#endif`,begin_vertex:`vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`,beginnormal_vertex:`vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`,bsdfs:`float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`,iridescence_fragment:`#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`,bumpmap_pars_fragment:`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,clipping_planes_fragment:`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},R={common:{diffuse:{value:new N(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new O},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new O}},envmap:{envMap:{value:null},envMapRotation:{value:new O},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new O}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new O}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new O},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new O},normalScale:{value:new D(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new O},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new O}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new O}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new O}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new N(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new N(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0},uvTransform:{value:new O}},sprite:{diffuse:{value:new N(16777215)},opacity:{value:1},center:{value:new D(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new O},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0}}},br={basic:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.fog]),vertexShader:L.meshbasic_vert,fragmentShader:L.meshbasic_frag},lambert:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.fog,R.lights,{emissive:{value:new N(0)}}]),vertexShader:L.meshlambert_vert,fragmentShader:L.meshlambert_frag},phong:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.fog,R.lights,{emissive:{value:new N(0)},specular:{value:new N(1118481)},shininess:{value:30}}]),vertexShader:L.meshphong_vert,fragmentShader:L.meshphong_frag},standard:{uniforms:ir([R.common,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.roughnessmap,R.metalnessmap,R.fog,R.lights,{emissive:{value:new N(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:L.meshphysical_vert,fragmentShader:L.meshphysical_frag},toon:{uniforms:ir([R.common,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.gradientmap,R.fog,R.lights,{emissive:{value:new N(0)}}]),vertexShader:L.meshtoon_vert,fragmentShader:L.meshtoon_frag},matcap:{uniforms:ir([R.common,R.bumpmap,R.normalmap,R.displacementmap,R.fog,{matcap:{value:null}}]),vertexShader:L.meshmatcap_vert,fragmentShader:L.meshmatcap_frag},points:{uniforms:ir([R.points,R.fog]),vertexShader:L.points_vert,fragmentShader:L.points_frag},dashed:{uniforms:ir([R.common,R.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:L.linedashed_vert,fragmentShader:L.linedashed_frag},depth:{uniforms:ir([R.common,R.displacementmap]),vertexShader:L.depth_vert,fragmentShader:L.depth_frag},normal:{uniforms:ir([R.common,R.bumpmap,R.normalmap,R.displacementmap,{opacity:{value:1}}]),vertexShader:L.meshnormal_vert,fragmentShader:L.meshnormal_frag},sprite:{uniforms:ir([R.sprite,R.fog]),vertexShader:L.sprite_vert,fragmentShader:L.sprite_frag},background:{uniforms:{uvTransform:{value:new O},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:L.background_vert,fragmentShader:L.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new O}},vertexShader:L.backgroundCube_vert,fragmentShader:L.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:L.cube_vert,fragmentShader:L.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:L.equirect_vert,fragmentShader:L.equirect_frag},distanceRGBA:{uniforms:ir([R.common,R.displacementmap,{referencePosition:{value:new A},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:L.distanceRGBA_vert,fragmentShader:L.distanceRGBA_frag},shadow:{uniforms:ir([R.lights,R.fog,{color:{value:new N(0)},opacity:{value:1}}]),vertexShader:L.shadow_vert,fragmentShader:L.shadow_frag}};br.physical={uniforms:ir([br.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new O},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new O},clearcoatNormalScale:{value:new D(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new O},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new O},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new O},sheen:{value:0},sheenColor:{value:new N(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new O},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new O},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new O},transmissionSamplerSize:{value:new D},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new O},attenuationDistance:{value:0},attenuationColor:{value:new N(0)},specularColor:{value:new N(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new O},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new O},anisotropyVector:{value:new D},anisotropyMap:{value:null},anisotropyMapTransform:{value:new O}}]),vertexShader:L.meshphysical_vert,fragmentShader:L.meshphysical_frag};var xr=class extends cr{constructor(e=-1,t=1,n=1,r=-1,i=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type=`OrthographicCamera`,this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=i,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,i,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2,i=n-e,a=n+e,o=r+t,s=r-t;if(this.view!==null&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;i+=e*this.view.offsetX,a=i+e*this.view.width,o-=t*this.view.offsetY,s=o-t*this.view.height}this.projectionMatrix.makeOrthographic(i,a,o,s,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};let Sr=(1+Math.sqrt(5))/2,Cr=1/Sr;-Sr,-Cr,-Cr;var wr=class extends it{constructor(e,t,n,r,i,a,s,c,l,u=1026){if(u!==1026&&u!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);n===void 0&&u===1026&&(n=1014),n===void 0&&u===1027&&(n=1020),super(null,r,i,a,s,c,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=s===void 0?o:s,this.minFilter=c===void 0?o:c,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},Tr=class extends M{constructor(){super(),this.isGroup=!0,this.type=`Group`}},Er=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=me,this.updateRanges=[],this.version=0,this.uuid=be()}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;r0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er)return;ai.applyMatrix4(e.matrixWorld);let s=t.ray.origin.distanceTo(ai);if(!(st.far))return{distance:s,point:oi.clone().applyMatrix4(e.matrixWorld),index:i,face:null,faceIndex:null,barycoord:null,object:e}}let li=new A,ui=new A;var di=class extends si{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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var bi=class extends it{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=o,this.minFilter=o,this.generateMipmaps=!1,this.needsUpdate=!0}},xi=class extends it{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}},Si=class extends xi{constructor(e,t,n,r,a,o){super(e,t,n,a,o),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=i,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ci=class extends xi{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}},wi=class extends kn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:``},this.type=`MeshStandardMaterial`,this.color=new N(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new N(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new D(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kt,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:``},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ti=class extends wi{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:``,PHYSICAL:``},this.type=`MeshPhysicalMaterial`,this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new D(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,`reflectivity`,{get:function(){return xe(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new N(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new N(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new N(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:``,PHYSICAL:``},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}};function Ei(e,t,n){return!e||!n&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT==`number`?new t(e):Array.prototype.slice.call(e)}function Di(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Oi(e){function t(t,n){return e[t]-e[n]}let n=e.length,r=Array(n);for(let e=0;e!==n;++e)r[e]=e;return r.sort(t),r}function ki(e,t,n){let r=e.length,i=new e.constructor(r);for(let a=0,o=0;o!==r;++a){let r=n[a]*t;for(let n=0;n!==t;++n)i[o++]=e[r+n]}return i}function Ai(e,t,n,r){let i=1,a=e[0];for(;a!==void 0&&a[r]===void 0;)a=e[i++];if(a===void 0)return;let o=a[r];if(o!==void 0)if(Array.isArray(o))do o=a[r],o!==void 0&&(t.push(a.time),n.push.apply(n,o)),a=e[i++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[r],o!==void 0&&(t.push(a.time),o.toArray(n,n.length)),a=e[i++];while(a!==void 0);else do o=a[r],o!==void 0&&(t.push(a.time),n.push(o)),a=e[i++];while(a!==void 0)}var ji=class{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r===void 0?new t.constructor(n):r,this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,r=t[n],i=t[n-1];validate_interval:{seek:{let a;linear_scan:{forward_scan:if(!(e=i)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Di(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===ae,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Fi.prototype.TimeBufferType=Float32Array,Fi.prototype.ValueBufferType=Float32Array,Fi.prototype.DefaultInterpolation=ie;var Ii=class extends Fi{constructor(e,t,n){super(e,t,n)}};Ii.prototype.ValueTypeName=`bool`,Ii.prototype.ValueBufferType=Array,Ii.prototype.DefaultInterpolation=re,Ii.prototype.InterpolantFactoryMethodLinear=void 0,Ii.prototype.InterpolantFactoryMethodSmooth=void 0;var Li=class extends Fi{};Li.prototype.ValueTypeName=`color`;var Ri=class extends Fi{};Ri.prototype.ValueTypeName=`number`;var zi=class extends ji{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)st.slerpFlat(i,0,a,c-o,a,c,s);return i}},Bi=class extends Fi{InterpolantFactoryMethodLinear(e){return new zi(this.times,this.values,this.getValueSize(),e)}};Bi.prototype.ValueTypeName=`quaternion`,Bi.prototype.InterpolantFactoryMethodSmooth=void 0;var Vi=class extends Fi{constructor(e,t,n){super(e,t,n)}};Vi.prototype.ValueTypeName=`string`,Vi.prototype.ValueBufferType=Array,Vi.prototype.DefaultInterpolation=re,Vi.prototype.InterpolantFactoryMethodLinear=void 0,Vi.prototype.InterpolantFactoryMethodSmooth=void 0;var Hi=class extends Fi{};Hi.prototype.ValueTypeName=`vector`;var Ui=class{constructor(e=``,t=-1,n=[],r=2500){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=be(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,r=1/(e.fps||1);for(let e=0,i=n.length;e!==i;++e)t.push(Gi(n[e]).scale(r));let i=new this(e.name,e.duration,t,e.blendMode);return i.uuid=e.uuid,i}static toJSON(e){let t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=n.length;e!==r;++e)t.push(Fi.toJSON(n[e]));return r}static CreateFromMorphTargetSequence(e,t,n,r){let i=t.length,a=[];for(let e=0;e1){let e=a[1],t=r[e];t||(r[e]=t=[]),t.push(n)}}let a=[];for(let e in r)a.push(this.CreateFromMorphTargetSequence(e,r[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error(`THREE.AnimationClip: No animation in JSONLoader data.`),null;let n=function(e,t,n,r,i){if(n.length!==0){let a=[],o=[];Ai(n,a,o,r),a.length!==0&&i.push(new e(t,a,o))}},r=[],i=e.name||`default`,a=e.fps||30,o=e.blendMode,s=e.length||-1,c=e.hierarchy||[];for(let e=0;e{t&&t(i),this.manager.itemEnd(e)},0),i;if(Yi[e]!==void 0){Yi[e].push({onLoad:t,onProgress:n,onError:r});return}Yi[e]=[],Yi[e].push({onLoad:t,onProgress:n,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?`include`:`same-origin`}),o=this.mimeType,s=this.responseType;fetch(a).then(t=>{if(t.status===200||t.status===0){if(t.status===0&&console.warn(`THREE.FileLoader: HTTP Status 0 received.`),typeof ReadableStream>`u`||t.body===void 0||t.body.getReader===void 0)return t;let n=Yi[e],r=t.body.getReader(),i=t.headers.get(`X-File-Size`)||t.headers.get(`Content-Length`),a=i?parseInt(i):0,o=a!==0,s=0,c=new ReadableStream({start(e){t();function t(){r.read().then(({done:r,value:i})=>{if(r)e.close();else{s+=i.byteLength;let r=new ProgressEvent(`progress`,{lengthComputable:o,loaded:s,total:a});for(let e=0,t=n.length;e{e.error(t)})}}});return new Response(c)}else throw new Xi(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(s){case`arraybuffer`:return e.arrayBuffer();case`blob`:return e.blob();case`document`:return e.text().then(e=>new DOMParser().parseFromString(e,o));case`json`:return e.json();default:if(o===void 0)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(n);return e.arrayBuffer().then(e=>r.decode(e))}}}).then(t=>{Ki.add(e,t);let n=Yi[e];delete Yi[e];for(let e=0,r=n.length;e{let n=Yi[e];if(n===void 0)throw this.manager.itemError(e),t;delete Yi[e];for(let e=0,r=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},Qi=class extends Ji{constructor(e){super(e)}load(e,t,n,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Ki.get(e);if(a!==void 0)return i.manager.itemStart(e),setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a;let o=We(`img`);function s(){l(),Ki.add(e,this),t&&t(this),i.manager.itemEnd(e)}function c(t){l(),r&&r(t),i.manager.itemError(e),i.manager.itemEnd(e)}function l(){o.removeEventListener(`load`,s,!1),o.removeEventListener(`error`,c,!1)}return o.addEventListener(`load`,s,!1),o.addEventListener(`error`,c,!1),e.slice(0,5)!==`data:`&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),i.manager.itemStart(e),o.src=e,o}},$i=class extends Ji{constructor(e){super(e)}load(e,t,n,r){let i=new it,a=new Qi(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(e){i.image=e,i.needsUpdate=!0,t!==void 0&&t(i)},n,r),i}},ea=class extends M{constructor(e,t=1){super(),this.isLight=!0,this.type=`Light`,this.color=new N(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}};let ta=new j,na=new A,ra=new A;var ia=class{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new D(512,512),this.map=null,this.mapPass=null,this.matrix=new j,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new yr,this._frameExtents=new D(1,1),this._viewportCount=1,this._viewports=[new k(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,n=this.matrix;na.setFromMatrixPosition(e.matrixWorld),t.position.copy(na),ra.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(ra),t.updateMatrixWorld(),ta.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ta),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(ta)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},aa=class extends ia{constructor(){super(new fr(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=ye*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,i=e.distance||t.far;(n!==t.fov||r!==t.aspect||i!==t.far)&&(t.fov=n,t.aspect=r,t.far=i,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},oa=class extends ea{constructor(e,t,n=0,r=Math.PI/3,i=0,a=2){super(e,t),this.isSpotLight=!0,this.type=`SpotLight`,this.position.copy(M.DEFAULT_UP),this.updateMatrix(),this.target=new M,this.distance=n,this.angle=r,this.penumbra=i,this.decay=a,this.map=null,this.shadow=new aa}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};let sa=new j,ca=new A,la=new A;var ua=class extends ia{constructor(){super(new fr(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new D(4,2),this._viewportCount=6,this._viewports=[new k(2,1,1,1),new k(0,1,1,1),new k(3,1,1,1),new k(1,1,1,1),new k(3,0,1,1),new k(1,0,1,1)],this._cubeDirections=[new A(1,0,0),new A(-1,0,0),new A(0,0,1),new A(0,0,-1),new A(0,1,0),new A(0,-1,0)],this._cubeUps=[new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,0,1),new A(0,0,-1)]}updateMatrices(e,t=0){let n=this.camera,r=this.matrix,i=e.distance||n.far;i!==n.far&&(n.far=i,n.updateProjectionMatrix()),ca.setFromMatrixPosition(e.matrixWorld),n.position.copy(ca),la.copy(n.position),la.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(la),n.updateMatrixWorld(),r.makeTranslation(-ca.x,-ca.y,-ca.z),sa.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(sa)}},da=class extends ea{constructor(e,t,n=0,r=2){super(e,t),this.isPointLight=!0,this.type=`PointLight`,this.distance=n,this.decay=r,this.shadow=new ua}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},fa=class extends ia{constructor(){super(new xr(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},pa=class extends ea{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type=`DirectionalLight`,this.position.copy(M.DEFAULT_UP),this.updateMatrix(),this.target=new M,this.shadow=new fa}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},ma=class{static decodeText(e){if(console.warn(`THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.`),typeof TextDecoder<`u`)return new TextDecoder().decode(e);let t=``;for(let n=0,r=e.length;n`u`&&console.warn(`THREE.ImageBitmapLoader: createImageBitmap() not supported.`),typeof fetch>`u`&&console.warn(`THREE.ImageBitmapLoader: fetch() not supported.`),this.options={premultiplyAlpha:`none`}}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=``),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Ki.get(e);if(a!==void 0){if(i.manager.itemStart(e),a.then){a.then(n=>{t&&t(n),i.manager.itemEnd(e)}).catch(e=>{r&&r(e)});return}return setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a}let o={};o.credentials=this.crossOrigin===`anonymous`?`same-origin`:`include`,o.headers=this.requestHeader;let s=fetch(e,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(i.options,{colorSpaceConversion:`none`}))}).then(function(n){return Ki.add(e,n),t&&t(n),i.manager.itemEnd(e),n}).catch(function(t){r&&r(t),Ki.remove(e),i.manager.itemError(e),i.manager.itemEnd(e)});Ki.add(e,s),i.manager.itemStart(e)}};let ga=`\\[\\]\\.:\\/`,_a=RegExp(`[`+ga+`]`,`g`);``+ga;let va=`[^`+ga.replace(`\\.`,``)+`]`,ya=RegExp(`^((?:[^\\[\\]\\.:\\/]+[\\/:])*)`+`(WCOD+)?`.replace(`WCOD`,va)+`(?:\\.([^\\[\\]\\.:\\/]+)(?:\\[(.+)\\])?)?\\.([^\\[\\]\\.:\\/]+)(?:\\[(.+)\\])?$`),ba=[`material`,`materials`,`bones`,`map`];var xa=class{constructor(e,t,n){let r=n||z.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,i=n.length;r!==i;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},z=class e{constructor(t,n,r){this.path=n,this.parsedPath=r||e.parseTrackName(n),this.node=e.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,n,r){return t&&t.isAnimationObjectGroup?new e.Composite(t,n,r):new e(t,n,r)}static sanitizeNodeName(e){return e.replace(/\s/g,`_`).replace(_a,``)}static parseTrackName(e){let t=ya.exec(e);if(t===null)throw Error(`PropertyBinding: Cannot parse trackName: `+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(`.`);if(r!==void 0&&r!==-1){let e=n.nodeName.substring(r+1);ba.indexOf(e)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=e)}if(n.propertyName===null||n.propertyName.length===0)throw Error(`PropertyBinding: can not parse propertyName from trackName: `+e);return n}static findNode(e,t){if(t===void 0||t===``||t===`.`||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(e,r){for(let i=0;i>>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)}let Ca=(...e)=>Sa(e);function wa(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of Ta(e))n.push(n,Sa(r.slice(0,-4)),i.getCacheKey(t));return Sa(n)}function*Ta(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}let Aa={VERTEX:`vertex`,FRAGMENT:`fragment`},B={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},ja=[`x`,`y`,`z`,`w`],Ma=0;var V=class extends ge{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=B.NONE,this.updateBeforeType=B.NONE,this.updateAfterType=B.NONE,this.uuid=Ve.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:Ma++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,B.FRAME)}onRenderUpdate(e){return this.onUpdate(e,B.RENDER)}onObjectUpdate(e){return this.onUpdate(e,B.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of Ta(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=wa(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return Ta(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Na=class extends V{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Pa=class extends V{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},Fa=class extends V{static get type(){return`TempNode`}constructor(e){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)}},Ia=class extends Fa{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}};let La=ja.join(``);var Ra=class extends V{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(ja.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===La.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}},za=class extends Fa{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Ga=e=>Wa(e).split(``).sort().join(``),Ka={setup(e,t){return e(_o(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(null.assign(n,...e),n);if(Ua.has(t)){let r=Ua.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Ua.has(t.slice(0,t.length-6))){let r=Ua.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Wa(t),W(new Ra(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Ga(t.slice(3).toLowerCase()),n=>W(new za(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Ga(t.slice(4).toLowerCase()),()=>W(new Ba(W(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),W(new Ra(e,t));else if(/^\d+$/.test(t)===!0)return W(new Na(n,new Ha(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},qa=new WeakMap,Ja=new WeakMap,Ya=function(e,t=null){let n=Ea(e);if(n===`node`){let t=qa.get(e);return t===void 0&&(t=new Proxy(e,Ka),qa.set(e,t),qa.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return W(po(e,t));else if(n===`shader`)return K(e);return e},Xa=function(e,t=null){for(let n in e)e[n]=W(e[n],t);return e},Za=function(e,t=null){let n=e.length;for(let r=0;rW(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...vo(t))):n===null?(...n)=>i(new e(t,...vo(n))):(n=W(n),(...r)=>i(new e(t,...vo(r),n)))},$a=function(e,...t){return W(new e(...vo(t)))};var eo=class extends V{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=Ja.get(e.constructor);r===void 0&&(r=new WeakMap,Ja.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=W(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=W(a.call(n))}else{let r=t.jsFunc;i=W(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},to=class extends V{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return _o(e),W(new eo(this,e))}setup(){return this.call()}};let no=[!1,!0],ro=[0,1,2,3],io=[-1,-2],ao=[.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],oo=new Map;for(let e of no)oo.set(e,new Ha(e));let so=new Map;for(let e of ro)so.set(e,new Ha(e,`uint`));let co=new Map([...so].map(e=>new Ha(e.value,`int`)));for(let e of io)co.set(e,new Ha(e,`int`));let lo=new Map([...co].map(e=>new Ha(e.value)));for(let e of ao)lo.set(e,new Ha(e));for(let e of ao)lo.set(-e,new Ha(-e));let uo={bool:oo,uint:so,ints:co,float:lo},fo=new Map([...oo,...lo]),po=(e,t)=>fo.has(e)?fo.get(e):e.isNode===!0?e:new Ha(e,t),mo=e=>{try{return e.getNodeType()}catch{return}},U=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[Da(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return W(t.get(n[0]));if(n.length===1){let t=po(n[0],e);return mo(t)===e?W(t):W(new Pa(t,e))}return W(new Ia(n.map(e=>po(e)),e))}},ho=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function go(e,t){return new Proxy(new to(e,t),Ka)}let W=(e,t=null)=>Ya(e,t),_o=(e,t=null)=>new Xa(e,t),vo=(e,t=null)=>new Za(e,t),G=(...e)=>new Qa(...e),yo=(...e)=>new $a(...e),K=(e,t)=>{let n=new go(e,t),r=(...e)=>{let t;return _o(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r};H(`toGlobal`,e=>(e.global=!0,e));let bo=(...e)=>null.If(...e);function xo(e){return e}H(`append`,xo);let So=new U(`color`),q=new U(`float`,uo.float),Co=new U(`int`,uo.ints),wo=new U(`uint`,uo.uint),To=new U(`bool`,uo.bool),J=new U(`vec2`),Eo=new U(`ivec2`),Do=new U(`uvec2`),Oo=new U(`bvec2`),Y=new U(`vec3`),ko=new U(`ivec3`),Ao=new U(`uvec3`),jo=new U(`bvec3`),Mo=new U(`vec4`),No=new U(`ivec4`),Po=new U(`uvec4`),Fo=new U(`bvec4`),Io=new U(`mat2`),Lo=new U(`mat3`),Ro=new U(`mat4`);H(`toColor`,So),H(`toFloat`,q),H(`toInt`,Co),H(`toUint`,wo),H(`toBool`,To),H(`toVec2`,J),H(`toIVec2`,Eo),H(`toUVec2`,Do),H(`toBVec2`,Oo),H(`toVec3`,Y),H(`toIVec3`,ko),H(`toUVec3`,Ao),H(`toBVec3`,jo),H(`toVec4`,Mo),H(`toIVec4`,No),H(`toUVec4`,Po),H(`toBVec4`,Fo),H(`toMat2`,Io),H(`toMat3`,Lo),H(`toMat4`,Ro),H(`element`,G(Na)),H(`convert`,(e,t)=>W(new Pa(W(e),t)));var zo=class extends V{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}};let Bo=e=>new zo(e),Vo=((e,t=0)=>new zo(e,!0,t))(`render`),Ho=Bo(`object`);var Uo=class extends Va{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=Ho}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};let Wo=(e,t)=>{let n=ho(t||e);return W(new Uo(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))};var Go=class extends V{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}};let Ko=(e,t)=>W(new Go(e,t)),qo=yo(Go,`vec4`,`DiffuseColor`);H(`assign`,G(class extends Fa{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 ja.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?vo(t):_o(t[0]),W(new Jo(W(e),t))));var X=class e extends Fa{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}};let Yo=G(X,`+`),Xo=G(X,`-`),Zo=G(X,`*`),Qo=G(X,`/`),$o=G(X,`%`),es=G(X,`==`),ts=G(X,`!=`),ns=G(X,`<`),rs=G(X,`>`),is=G(X,`<=`),as=G(X,`>=`),os=G(X,`&&`),ss=G(X,`||`),cs=G(X,`!`),ls=G(X,`^^`),us=G(X,`&`),ds=G(X,`~`),fs=G(X,`|`),ps=G(X,`^`),ms=G(X,`<<`),hs=G(X,`>>`);H(`add`,Yo),H(`sub`,Xo),H(`mul`,Zo),H(`div`,Qo),H(`modInt`,$o),H(`equal`,es),H(`notEqual`,ts),H(`lessThan`,ns),H(`greaterThan`,rs),H(`lessThanEqual`,is),H(`greaterThanEqual`,as),H(`and`,os),H(`or`,ss),H(`not`,cs),H(`xor`,ls),H(`bitAnd`,us),H(`bitNot`,ds),H(`bitOr`,fs),H(`bitXor`,ps),H(`shiftLeft`,ms),H(`shiftRight`,hs),H(`remainder`,(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),$o(...e)));var Z=class e extends Fa{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=Mo(Y(r),0):e=Mo(Y(e),0);let i=Zo(e,r).xyz;return As(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return Xo(1,o).build(t,n);else if(r===e.RECIPROCAL)return Qo(1,o).build(t,n);else if(r===e.DIFFERENCE)return Rs(Xo(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};Z.ALL=`all`,Z.ANY=`any`,Z.EQUALS=`equals`,Z.RADIANS=`radians`,Z.DEGREES=`degrees`,Z.EXP=`exp`,Z.EXP2=`exp2`,Z.LOG=`log`,Z.LOG2=`log2`,Z.SQRT=`sqrt`,Z.INVERSE_SQRT=`inversesqrt`,Z.FLOOR=`floor`,Z.CEIL=`ceil`,Z.NORMALIZE=`normalize`,Z.FRACT=`fract`,Z.SIN=`sin`,Z.COS=`cos`,Z.TAN=`tan`,Z.ASIN=`asin`,Z.ACOS=`acos`,Z.ATAN=`atan`,Z.ABS=`abs`,Z.SIGN=`sign`,Z.LENGTH=`length`,Z.NEGATE=`negate`,Z.ONE_MINUS=`oneMinus`,Z.DFDX=`dFdx`,Z.DFDY=`dFdy`,Z.ROUND=`round`,Z.RECIPROCAL=`reciprocal`,Z.TRUNC=`trunc`,Z.FWIDTH=`fwidth`,Z.BITCAST=`bitcast`,Z.TRANSPOSE=`transpose`,Z.ATAN2=`atan2`,Z.MIN=`min`,Z.MAX=`max`,Z.MOD=`mod`,Z.STEP=`step`,Z.REFLECT=`reflect`,Z.DISTANCE=`distance`,Z.DIFFERENCE=`difference`,Z.DOT=`dot`,Z.CROSS=`cross`,Z.POW=`pow`,Z.TRANSFORM_DIRECTION=`transformDirection`,Z.MIX=`mix`,Z.CLAMP=`clamp`,Z.REFRACT=`refract`,Z.SMOOTHSTEP=`smoothstep`,Z.FACEFORWARD=`faceforward`;let gs=q(Math.PI);Math.PI*2;let _s=G(Z,Z.ALL),vs=G(Z,Z.ANY),ys=G(Z,Z.EQUALS),bs=G(Z,Z.RADIANS),xs=G(Z,Z.DEGREES),Ss=G(Z,Z.EXP),Cs=G(Z,Z.EXP2),ws=G(Z,Z.LOG),Ts=G(Z,Z.LOG2),Es=G(Z,Z.SQRT),Ds=G(Z,Z.INVERSE_SQRT),Os=G(Z,Z.FLOOR),ks=G(Z,Z.CEIL),As=G(Z,Z.NORMALIZE),js=G(Z,Z.FRACT),Ms=G(Z,Z.SIN),Ns=G(Z,Z.COS),Ps=G(Z,Z.TAN),Fs=G(Z,Z.ASIN),Is=G(Z,Z.ACOS),Ls=G(Z,Z.ATAN),Rs=G(Z,Z.ABS),zs=G(Z,Z.SIGN),Bs=G(Z,Z.LENGTH),Vs=G(Z,Z.NEGATE),Hs=G(Z,Z.ONE_MINUS),Us=G(Z,Z.DFDX),Ws=G(Z,Z.DFDY),Gs=G(Z,Z.ROUND),Ks=G(Z,Z.RECIPROCAL),qs=G(Z,Z.TRUNC),Js=G(Z,Z.FWIDTH);Z.BITCAST;let Ys=G(Z,Z.TRANSPOSE),Xs=G(Z,Z.ATAN2),Zs=G(Z,Z.MIN),Qs=G(Z,Z.MAX),$s=G(Z,Z.MOD),ec=G(Z,Z.STEP),tc=G(Z,Z.REFLECT),nc=G(Z,Z.DISTANCE),rc=G(Z,Z.DIFFERENCE),ic=G(Z,Z.DOT),ac=G(Z,Z.CROSS),oc=G(Z,Z.POW),sc=G(Z,Z.POW,2),cc=G(Z,Z.POW,3),lc=G(Z,Z.POW,4),uc=G(Z,Z.TRANSFORM_DIRECTION),dc=e=>Zo(zs(e),oc(Rs(e),1/3)),fc=e=>ic(e,e),pc=G(Z,Z.MIX),mc=(e,t=0,n=1)=>W(new Z(Z.CLAMP,W(e),W(t),W(n))),hc=e=>mc(e),gc=G(Z,Z.REFRACT),_c=G(Z,Z.SMOOTHSTEP),vc=G(Z,Z.FACEFORWARD),yc=K(([e])=>js(Ms($s(ic(e.xy,J(12.9898,78.233)),gs)).mul(43758.5453)));H(`all`,_s),H(`any`,vs),H(`equals`,ys),H(`radians`,bs),H(`degrees`,xs),H(`exp`,Ss),H(`exp2`,Cs),H(`log`,ws),H(`log2`,Ts),H(`sqrt`,Es),H(`inverseSqrt`,Ds),H(`floor`,Os),H(`ceil`,ks),H(`normalize`,As),H(`fract`,js),H(`sin`,Ms),H(`cos`,Ns),H(`tan`,Ps),H(`asin`,Fs),H(`acos`,Is),H(`atan`,Ls),H(`abs`,Rs),H(`sign`,zs),H(`length`,Bs),H(`lengthSq`,fc),H(`negate`,Vs),H(`oneMinus`,Hs),H(`dFdx`,Us),H(`dFdy`,Ws),H(`round`,Gs),H(`reciprocal`,Ks),H(`trunc`,qs),H(`fwidth`,Js),H(`atan2`,Xs),H(`min`,Zs),H(`max`,Qs),H(`mod`,$s),H(`step`,ec),H(`reflect`,tc),H(`distance`,nc),H(`dot`,ic),H(`cross`,ac),H(`pow`,oc),H(`pow2`,sc),H(`pow3`,cc),H(`pow4`,lc),H(`transformDirection`,uc),H(`mix`,(e,t,n)=>pc(t,n,e)),H(`clamp`,mc),H(`refract`,gc),H(`smoothstep`,(e,t,n)=>_c(t,n,e)),H(`faceForward`,vc),H(`difference`,rc),H(`saturate`,hc),H(`cbrt`,dc),H(`transpose`,Ys),H(`rand`,yc);let bc=G(class extends V{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?Ko(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});H(`select`,bc),H(`cond`,(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),bc(...e)));let xc=G(class extends V{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}});H(`context`,xc),H(`label`,(e,t)=>xc(e,{label:t}));let Sc=G(class extends V{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}});H(`temp`,Sc),H(`toVar`,(...e)=>Sc(...e).append());let Cc=G(class extends V{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,Aa.VERTEX);e.flowNodeFromShaderStage(Aa.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}});H(`varying`,Cc);let wc=`WorkingColorSpace`,Tc=`OutputColorSpace`;function Ec(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function Dc(e,t){return Ec(e)+`To`+Ec(t)}var Oc=class extends Fa{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===wc?Ye.workingColorSpace:t===Tc?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=Dc(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=Mo(s(n.rgb),n.a),o}};let kc=e=>W(new Oc(W(e),wc,Tc)),Ac=e=>W(new Oc(W(e),Tc,wc)),jc=(e,t)=>W(new Oc(W(e),wc,t)),Mc=(e,t)=>W(new Oc(W(e),t,wc));H(`toOutputColorSpace`,kc),H(`toWorkingColorSpace`,Ac),H(`workingToColorSpace`,jc),H(`colorSpaceToWorking`,Mc);let Nc=class extends Na{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}};var Pc=class extends V{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=B.OBJECT}setGroup(e){return this.group=e,this}element(e){return W(new Nc(this,W(e)))}setNodeType(e){let t=Wo(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eW(new Fc(e,t,n));var Lc=class extends Fa{static get type(){return`ToneMappingNode`}constructor(e,t=zc,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return Ca(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=Mo(i(t.rgb,this.exposureNode),t.a),r}};let Rc=(e,t,n)=>W(new Lc(e,W(t),W(n))),zc=Ic(`toneMappingExposure`,`float`);H(`toneMapping`,(e,t,n)=>Rc(t,n,e));var Bc=class extends Va{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=me,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new Er(n,i),s=new Or(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=Cc(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}};let Vc=(e,t,n,r)=>W(new Bc(e,t,n,r));H(`toAttribute`,e=>Vc(e.value));var Hc=class extends V{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=B.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eW(new Hc(W(e),t,n)));var Uc=class extends V{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}};H(`cache`,(e,...t)=>W(new Uc(W(e),...t))),H(`bypass`,G(class extends V{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}));var Wc=class extends V{static get type(){return`RemapNode`}constructor(e,t,n,r=q(0),i=q(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}};let Gc=G(Wc,null,null,{doClamp:!1}),Kc=G(Wc);H(`remap`,Gc),H(`remapClamp`,Kc);let qc=G(class extends V{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}});H(`discard`,e=>(e?bc(e,qc(`discard`)):qc(`discard`)).append());var Jc=class extends Fa{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==Ye.workingColorSpace&&(t=t.workingToColorSpace(r)),t}};H(`renderOutput`,(e,t=null,n=null)=>W(new Jc(W(e),t,n)));var Yc=class extends V{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):Cc(this).build(e,n)}else return console.warn(`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}};let Xc=(e,t)=>W(new Yc(e,t)),Zc=e=>Xc(`uv`+(e>0?e:``),`vec2`),Qc=G(class extends V{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)}}),$c=G(class extends Uo{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=B.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))}}});var el=class extends Uo{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=B.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return Zc(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Wo(this.value.matrix)),this._matrixUniform.mul(Y(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?B.FRAME:B.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(Co(Qc(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=Mc(qc(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=W(e),t.referenceNode=this.getSelf(),W(t)}blur(e){let t=this.clone();return t.biasNode=W(e).mul($c(t)),t.referenceNode=this.getSelf(),W(t)}level(e){let t=this.clone();return t.levelNode=W(e),t.referenceNode=this.getSelf(),W(t)}size(e){return Qc(this,e)}bias(e){let t=this.clone();return t.biasNode=W(e),t.referenceNode=this.getSelf(),W(t)}compare(e){let t=this.clone();return t.compareNode=W(e),t.referenceNode=this.getSelf(),W(t)}grad(e,t){let n=this.clone();return n.gradNode=[W(e),W(t)],n.referenceNode=this.getSelf(),W(n)}depth(e){let t=this.clone();return t.depthNode=W(e),t.referenceNode=this.getSelf(),W(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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}};let tl=G(el),nl=Wo(`float`).label(`cameraNear`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.near),rl=Wo(`float`).label(`cameraFar`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.far),il=Wo(`mat4`).label(`cameraViewMatrix`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.matrixWorldInverse);var al=class e extends V{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=B.OBJECT,this._uniformNode=new Uo(null)}getNodeType(){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`}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 A,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new A,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new A,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new A,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};al.WORLD_MATRIX=`worldMatrix`,al.POSITION=`position`,al.SCALE=`scale`,al.VIEW_POSITION=`viewPosition`,al.DIRECTION=`direction`,al.DIRECTION,al.WORLD_MATRIX,al.POSITION,al.SCALE,al.VIEW_POSITION;var ol=class extends al{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}};ol.DIRECTION;let sl=yo(ol,ol.WORLD_MATRIX);ol.POSITION,ol.SCALE,ol.VIEW_POSITION;let cl=Wo(new O).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),ll=il.mul(sl).toVar(`modelViewMatrix_2`),ul=Xc(`position`,`vec3`).varying(`positionLocal`),dl=ll.mul(ul).xyz.varying(`v_positionView`),fl=dl.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),pl=q(yo(class extends V{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}})).mul(2).sub(1),ml=Xc(`normal`,`vec3`),hl=K(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),Y(0,1,0)):ml,`vec3`).once()().toVar(`normalLocal`),gl=dl.dFdx().cross(dl.dFdy()).normalize().toVar(`normalFlat`),_l=K(e=>{let t;return t=e.material.flatShading===!0?gl:Cc(yl(hl),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),vl=K(e=>e.context.setupNormal(),`vec3`).once()().mul(pl).toVar(`transformedNormalView`),yl=K(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=cl.mul(e);return il.transformDirection(r)}),bl=Wo(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),xl=fl.negate().reflect(vl),Sl=fl.negate().refract(vl,bl),Cl=xl.transformDirection(il).toVar(`reflectVector`),wl=Sl.transformDirection(il).toVar(`reflectVector`),Tl=G(class extends el{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?Cl:e.mapping===302?wl:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),Y(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?Y(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}});var El=class extends Uo{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}};let Dl=(e,t,n)=>W(new El(e,t,n));var Ol=class extends Na{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},kl=class extends El{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=B.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nW(new kl(e,t));var jl=class extends Na{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Ml=class extends V{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=B.OBJECT}element(e){return W(new jl(this,W(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?Al(null,e):e===`texture`?tl(null):e===`cubeTexture`?Tl(null):Wo(null,e):Dl(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eW(new Ml(e,t,n));var Pl=class extends Ml{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}};let Fl=(e,t,n)=>W(new Pl(e,t,n)),Il=K(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),Xc(`tangent`,`vec4`)))(),Ll=Il.xyz.toVar(`tangentLocal`),Rl=ll.mul(Mo(Ll,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),zl=Lo(Rl,Cc((e=>e.mul(Il.w).xyz)(_l.cross(Rl)),`v_bitangentView`).normalize().toVar(`bitangentView`),_l),Bl=K(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=pl.mul(m.inverseSqrt());return Yo(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),Vl=G(class extends Fa{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=Y(r.xy.mul(n),r.z));let i=null;return t===1?i=yl(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?zl.mul(r).normalize():Bl({eye_pos:dl,surf_norm:_l,mapN:r,uv:Zc()})),i}}),Hl=K(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||Zc()),forceUVContext:!0}),r=q(n(e=>e));return J(q(n(e=>e.add(e.dFdx()))).sub(r),q(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Ul=K(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(pl),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Wl=G(class extends Fa{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 Ul({surf_pos:dl,surf_norm:_l,dHdxy:Hl({textureNode:this.textureNode,bumpScale:e})})}}),Gl=new Map;var Q=class e extends V{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=Gl.get(e);return n===void 0&&(n=Fl(e,t),Gl.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?Y():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:q(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=Vl(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?Wl(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):_l;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?Vl(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):_l;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=Io(Kl.x,Kl.y,Kl.y.negate(),Kl.x).mul(e.rg.mul(2).sub(J(1)).normalize().mul(e.b))}else i=Kl;else if(r===e.IRIDESCENCE_THICKNESS){let e=Nl(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Nl(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};Q.ALPHA_TEST=`alphaTest`,Q.COLOR=`color`,Q.OPACITY=`opacity`,Q.SHININESS=`shininess`,Q.SPECULAR=`specular`,Q.SPECULAR_STRENGTH=`specularStrength`,Q.SPECULAR_INTENSITY=`specularIntensity`,Q.SPECULAR_COLOR=`specularColor`,Q.REFLECTIVITY=`reflectivity`,Q.ROUGHNESS=`roughness`,Q.METALNESS=`metalness`,Q.NORMAL=`normal`,Q.CLEARCOAT=`clearcoat`,Q.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,Q.CLEARCOAT_NORMAL=`clearcoatNormal`,Q.EMISSIVE=`emissive`,Q.ROTATION=`rotation`,Q.SHEEN=`sheen`,Q.SHEEN_ROUGHNESS=`sheenRoughness`,Q.ANISOTROPY=`anisotropy`,Q.IRIDESCENCE=`iridescence`,Q.IRIDESCENCE_IOR=`iridescenceIOR`,Q.IRIDESCENCE_THICKNESS=`iridescenceThickness`,Q.IOR=`ior`,Q.TRANSMISSION=`transmission`,Q.THICKNESS=`thickness`,Q.ATTENUATION_DISTANCE=`attenuationDistance`,Q.ATTENUATION_COLOR=`attenuationColor`,Q.LINE_SCALE=`scale`,Q.LINE_DASH_SIZE=`dashSize`,Q.LINE_GAP_SIZE=`gapSize`,Q.LINE_WIDTH=`linewidth`,Q.LINE_DASH_OFFSET=`dashOffset`,Q.POINT_WIDTH=`pointWidth`,Q.DISPERSION=`dispersion`,Q.LIGHT_MAP=`light`,Q.AO_MAP=`ao`,Q.ALPHA_TEST,Q.COLOR,Q.SHININESS,Q.EMISSIVE,Q.OPACITY,Q.SPECULAR,Q.SPECULAR_INTENSITY,Q.SPECULAR_COLOR,Q.SPECULAR_STRENGTH,Q.REFLECTIVITY,Q.ROUGHNESS,Q.METALNESS,Q.CLEARCOAT,Q.CLEARCOAT_ROUGHNESS,Q.ROTATION,Q.SHEEN,Q.SHEEN_ROUGHNESS,Q.ANISOTROPY,Q.IRIDESCENCE,Q.IRIDESCENCE_IOR,Q.IRIDESCENCE_THICKNESS,Q.TRANSMISSION,Q.THICKNESS,Q.IOR,Q.ATTENUATION_DISTANCE,Q.ATTENUATION_COLOR,Q.LINE_SCALE,Q.LINE_DASH_SIZE,Q.LINE_GAP_SIZE,Q.LINE_WIDTH,Q.LINE_DASH_OFFSET,Q.POINT_WIDTH,Q.DISPERSION,Q.LIGHT_MAP,Q.AO_MAP;let Kl=Wo(new D).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))});var ql=class e extends V{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:Cc(this).build(t,n),a}};ql.VERTEX=`vertex`,ql.INSTANCE=`instance`,ql.SUBGROUP=`subgroup`,ql.INVOCATION_LOCAL=`invocationLocal`,ql.INVOCATION_SUBGROUP=`invocationSubgroup`,ql.DRAW=`draw`,ql.VERTEX,ql.INSTANCE,ql.SUBGROUP,ql.INVOCATION_SUBGROUP,ql.INVOCATION_LOCAL,ql.DRAW;var Jl=class extends V{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tW(new Jl(vo(e,`int`))).append(),Xl,Zl;var Ql=class e extends V{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=B.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=B.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(Zl),Zl.multiplyScalar(t.getPixelRatio())):Zl.copy(n.viewport):n===null?t.getDrawingBufferSize(Xl):(Xl.width=n.width,Xl.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Wo(Xl||=new D):t===e.VIEWPORT?Wo(Zl||=new k):J(tu.div(eu)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(eu).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};Ql.COORDINATE=`coordinate`,Ql.VIEWPORT=`viewport`,Ql.SIZE=`size`,Ql.UV=`uv`;let $l=yo(Ql,Ql.UV),eu=yo(Ql,Ql.SIZE),tu=yo(Ql,Ql.COORDINATE),nu=yo(Ql,Ql.VIEWPORT);nu.zw,nu.xy;let ru=new D;var iu=class extends el{static get type(){return`ViewportTextureNode`}constructor(e=$l,t=null,n=null){n===null&&(n=new bi,n.minFilter=l),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=B.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(ru);let n=this.value;(n.image.width!==ru.width||n.image.height!==ru.height)&&(n.image.width=ru.width,n.image.height=ru.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}};let au=null,ou=G(class extends iu{static get type(){return`ViewportDepthTextureNode`}constructor(e=$l,t=null){au===null&&(au=new wr),super(e,t,au)}});var su=class e extends V{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=du().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?lu(dl.z,nl,rl):cu(dl.z,nl,rl):n===e.LINEAR_DEPTH&&(i=r===null?cu(dl.z,nl,rl):t.isPerspectiveCamera?cu(uu(r,nl,rl),nl,rl):r),i}};su.DEPTH_BASE=`depthBase`,su.DEPTH=`depth`,su.LINEAR_DEPTH=`linearDepth`;let cu=(e,t,n)=>e.add(t).div(t.sub(n)),lu=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),uu=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),du=G(su,su.DEPTH_BASE),fu=yo(su,su.DEPTH);ou(),fu.assign=e=>du(e);var pu=class e extends V{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return K(()=>{let r=Al(e),i=Ko(`float`,`distanceToPlane`),a=Ko(`float`,`distanceToGradient`),o=Ko(`float`,`clipOpacity`);o.assign(1);let s;if(Yl(n,({i:e})=>{s=r.element(e),i.assign(dl.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(_c(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(dl.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(_c(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}qo.a.mulAssign(o),qo.a.equal(0).discard()})()}setupDefault(e,t,n){return K(()=>{let r=Al(e),i;if(Yl(n,({i:e})=>{i=r.element(e),dl.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(dl.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};pu.ALPHA_TO_COVERAGE=`alphaToCoverage`,pu.DEFAULT=`default`,1/Math.PI,Y(.04),q(1);let mu=K(([e,t])=>{let n=e.toVar();n.assign(Zo(2,n).sub(1));let r=Y(n,1).toVar();return bo(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`}]});K(({texture:e,uv:t})=>{let n=1e-4,r=Y().toVar();return bo(t.x.lessThan(n),()=>{r.assign(Y(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(Y(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(Y(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(Y(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(Y(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(Y(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(Y(-n,0,0))).r.sub(e.uv(t.add(Y(n,0,0))).r),a=e.uv(t.add(Y(0,-n,0))).r.sub(e.uv(t.add(Y(0,n,0))).r),o=e.uv(t.add(Y(0,0,-n))).r.sub(e.uv(t.add(Y(0,0,n))).r);r.assign(Y(i,a,o))}),r.normalize()});let hu=(1+Math.sqrt(5))/2,gu=1/hu;-hu,-gu,-gu;let _u=mu(Zc(),Xc(`faceIndex`)).normalize();Y(_u.x,_u.y.negate(),_u.z);var vu=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};vu.isNodeFunctionInput=!0;var yu=class e extends Uo{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=B.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};yu.LOCAL=`local`,yu.GLOBAL=`global`,yu.DELTA=`delta`,yu.FRAME=`frame`;let bu=(e,t=0)=>W(new yu(yu.LOCAL,e,t));var xu=class e extends V{static get type(){return`OscNode`}constructor(t=e.SINE,n=bu()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=W(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};xu.SINE=`sine`,xu.SQUARE=`square`,xu.TRIANGLE=`triangle`,xu.SAWTOOTH=`sawtooth`,xu.SINE,xu.SQUARE,xu.TRIANGLE,xu.SAWTOOTH,new gr,new A,new A,new A,new j,new A(0,0,-1),new k,new A,new A,new k,new D,new at,$l.flipX();var Su=class e extends V{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Nl(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Nl(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};Su.BACKGROUND_BLURRINESS=`backgroundBlurriness`,Su.BACKGROUND_INTENSITY=`backgroundIntensity`,Su.BACKGROUND_BLURRINESS,Su.BACKGROUND_INTENSITY;let Cu=new D;var wu=class extends el{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},Tu=class extends wu{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},Eu=class e extends Fa{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 wr;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new at(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:f,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=B.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Wo(0),this._cameraFar=Wo(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=W(new Tu(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=W(new Tu(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=uu(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=cu(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(Cu);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};Eu.COLOR=`color`,Eu.DEPTH=`depth`,new class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},K(({depthTexture:e,shadowCoord:t})=>tl(e,t.xy).compare(t.z)),K(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>tl(e,t).compare(n),i=Nl(`mapSize`,`vec2`,n).setGroup(Vo),a=Nl(`radius`,`float`,n).setGroup(Vo),o=J(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return Yo(r(t.xy.add(J(s,c)),t.z),r(t.xy.add(J(0,c)),t.z),r(t.xy.add(J(l,c)),t.z),r(t.xy.add(J(d,f)),t.z),r(t.xy.add(J(0,f)),t.z),r(t.xy.add(J(p,f)),t.z),r(t.xy.add(J(s,0)),t.z),r(t.xy.add(J(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(J(p,0)),t.z),r(t.xy.add(J(l,0)),t.z),r(t.xy.add(J(d,m)),t.z),r(t.xy.add(J(0,m)),t.z),r(t.xy.add(J(p,m)),t.z),r(t.xy.add(J(s,u)),t.z),r(t.xy.add(J(0,u)),t.z),r(t.xy.add(J(l,u)),t.z)).mul(1/17)}),K(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>tl(e,t).compare(n),i=Nl(`mapSize`,`vec2`,n).setGroup(Vo),a=J(1).div(i),o=a.x,s=a.y,c=t.xy,l=js(c.mul(i).add(.5));return c.subAssign(l.mul(a)),Yo(r(c,t.z),r(c.add(J(o,0)),t.z),r(c.add(J(0,s)),t.z),r(c.add(a),t.z),pc(r(c.add(J(o.negate(),0)),t.z),r(c.add(J(o.mul(2),0)),t.z),l.x),pc(r(c.add(J(o.negate(),s)),t.z),r(c.add(J(o.mul(2),s)),t.z),l.x),pc(r(c.add(J(0,s.negate())),t.z),r(c.add(J(0,s.mul(2))),t.z),l.y),pc(r(c.add(J(o,s.negate())),t.z),r(c.add(J(o,s.mul(2))),t.z),l.y),pc(pc(r(c.add(J(o.negate(),s.negate())),t.z),r(c.add(J(o.mul(2),s.negate())),t.z),l.x),pc(r(c.add(J(o.negate(),s.mul(2))),t.z),r(c.add(J(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),K(({depthTexture:e,shadowCoord:t})=>{let n=q(1).toVar(),r=tl(e).uv(t.xy).rg,i=ec(t.z,r.x);return bo(i.notEqual(q(1)),()=>{let e=t.z.sub(r.x),a=Qs(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=mc(Xo(o,.3).div(.6499999999999999)),n.assign(mc(Qs(i,o)))}),n}),K(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=q(0).toVar(),a=q(0).toVar(),o=e.lessThanEqual(q(1)).select(q(0),q(2).div(e.sub(1))),s=e.lessThanEqual(q(1)).select(q(0),q(-1));return Yl({start:Co(0),end:Co(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(q(e).mul(o)),l=r.uv(Yo(tu.xy,J(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),J(i,Es(a.sub(i.mul(i))))}),K(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=q(0).toVar(),a=q(0).toVar(),o=e.lessThanEqual(q(1)).select(q(0),q(2).div(e.sub(1))),s=e.lessThanEqual(q(1)).select(q(0),q(-1));return Yl({start:Co(0),end:Co(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(q(e).mul(o)),l=r.uv(Yo(tu.xy,J(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(Yo(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),J(i,Es(a.sub(i.mul(i))))}),Y(1.6605,-.1246,-.0182),Y(-.5876,1.1329,-.1006),Y(-.0728,-.0083,1.1187),Y(.6274,.0691,.0164),Y(.3293,.9195,.088),Y(.0433,.0113,.8956),G(class extends V{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}});var Du=class extends Fa{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};Du.ATOMIC_LOAD=`atomicLoad`,Du.ATOMIC_STORE=`atomicStore`,Du.ATOMIC_ADD=`atomicAdd`,Du.ATOMIC_SUB=`atomicSub`,Du.ATOMIC_MAX=`atomicMax`,Du.ATOMIC_MIN=`atomicMin`,Du.ATOMIC_AND=`atomicAnd`,Du.ATOMIC_OR=`atomicOr`,Du.ATOMIC_XOR=`atomicXor`,G(Du);var Ou=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};if(Ou.isNodeFunction=!0,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`register`,{detail:{revision:n}})),typeof window<`u`){try{t&&(window.__THREE__IMPORTS__||(window.__THREE__IMPORTS__=[]),window.__THREE__IMPORTS__.push({url:self.location.href,revision:n}))}catch{}window.__THREE__?(console.warn(`WARNING: Multiple instances of Three.js being imported. Existing: `+window.__THREE__+`, new: 169.19`),console.warn(window.__THREE__IMPORTS__)):window.__THREE__=n}let ku=new WeakMap;var Au=class extends Ji{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new Zi(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,C,n).catch(n)}decodeDracoFile(e,t,n,r,i=w,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ku.has(e)){let t=ku.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ku.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new Hn;e.index&&t.setIndex(new Mn(e.index.array,1));for(let n=0;n{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=ju.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=o.num_components(),c=n.num_points()*s,l=c*i.BYTES_PER_ELEMENT,u=a(e,i),d=e._malloc(l);t.GetAttributeDataArrayForAllPoints(n,o,u,l,d);let f=new i(e.HEAPF32.buffer,d,c).slice();return e._free(d),{name:r,array:f,itemSize:s}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}function Mu(e,t){if(t===0)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===2||t===1){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e=2.0 are supported.`));return}this.json=i,this.jsonErrorData=a;let l=new Dd(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&s[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}l.setExtensions(o),l.setPlugins(s),l.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function Pu(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let $={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`};var Fu=class{constructor(e){this.parser=e,this.name=$.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},Yu=class{constructor(e){this.parser=e,this.name=$.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: WebP required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Xu=class{constructor(e){this.parser=e,this.name=$.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: AVIF required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Zu=class{constructor(e){this.name=$.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Qu=class{constructor(e){this.name=$.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==cd.TRIANGLES&&e.mode!==cd.TRIANGLE_STRIP&&e.mode!==cd.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new j,n=new A,a=new st,s=new A(1,1,1),c=new Qr(e.geometry,e.material,r);for(let e=0;e0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:`image/png`}let Ed=new j;var Dd=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Pu,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new $i(this.options.manager):this.textureLoader=new ha(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Zi(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return vd(i,a,r),yd(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=ud[n.magFilter]||1006,t.minFilter=ud[n.minFilter]||1008,t.wrapS=dd[n.wrapS]||1e3,t.wrapT=dd[n.wrapT]||1e3,t.anisotropy=4,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new it(e);t.needsUpdate=!0,n(t)}),t.load(ma.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),yd(e,a),e.userData.mimeType=a.mimeType||Td(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[$.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[$.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[$.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new pi,kn.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new $r,kn.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return wi}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},c=[];if(s[$.KHR_MATERIALS_UNLIT]){let e=r[$.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),c.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new N(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],w),o.opacity=e[3]}n.baseColorTexture!==void 0&&c.push(t.assignTexture(o,`map`,n.baseColorTexture,C)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),c.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=2);let l=i.alphaMode||gd.OPAQUE;if(l===gd.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,l===gd.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==An&&(c.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new D(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==An&&(c.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==An){let e=i.emissiveFactor;o.emissive=new N().setRGB(e[0],e[1],e[2],w)}return i.emissiveTexture!==void 0&&a!==An&&c.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,C)),Promise.all(c).then(function(){let n=new a(o);return i.name&&(n.name=i.name),yd(n,i),t.associations.set(n,{materials:e}),i.extensions&&vd(r,n,i),n})}createUniqueName(e){let t=z.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[$.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return kd(n,e,t)})}let a=[];for(let n=0,o=e.length;n0&&xd(d,i),d.name=t.createUniqueName(i.name||`mesh_`+e),yd(d,i),u.extensions&&vd(r,d,u),t.assignFinalMaterial(d),c.push(d)}for(let n=0,r=c.length;n1?new Tr:t.length===1?t[0]:new M,o!==t[0])for(let e=0,n=t.length;e{let t=new Map;for(let[e,n]of r.associations)(e instanceof kn||e instanceof it)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];md[i.path]===md.weights?e.traverse(function(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}):s.push(o);let c;switch(md[i.path]){case md.weights:c=Ri;break;case md.rotation:c=Bi;break;case md.position:case md.scale:c=Hi;break;default:switch(n.itemSize){case 1:c=Ri;break;default:c=Hi;break}break}let l=r.interpolation===void 0?ie:hd[r.interpolation],u=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}};let jd=1000066e3;var Md=class{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let n=this._offset,r=0;for(;this._dataView.getUint8(this._offset)!==t&&re.arrayBuffer()).then(e=>WebAssembly.instantiate(e,zd)).then(this._init):WebAssembly.instantiate(Buffer.from(Vd,`base64`),zd).then(this._init),Id)}_init(e){Ld=e.instance,zd.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!Ld)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=Ld.exports.malloc(n);Rd.set(e,r),t||=Number(Ld.exports.ZSTD_findDecompressedSize(r,n));let i=Ld.exports.malloc(t),a=Ld.exports.ZSTD_decompress(i,t,r,n),o=Rd.slice(i,i+a);return Ld.exports.free(r),Ld.exports.free(i),o}};let Vd=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`,Hd=new WeakMap,Ud=0,Wd;var Gd=class e extends Ji{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ad,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync(`texture-compression-etc1`),etc2Supported:await e.hasFeatureAsync(`texture-compression-etc2`),dxtSupported:await e.hasFeatureAsync(`texture-compression-bc`),bptcSupported:await e.hasFeatureAsync(`texture-compression-bptc`),pvrtcSupported:await e.hasFeatureAsync(`texture-compression-pvrtc`)},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:e.hasFeature(`texture-compression-etc1`),etc2Supported:e.hasFeature(`texture-compression-etc2`),dxtSupported:e.hasFeature(`texture-compression-bc`),bptcSupported:e.hasFeature(`texture-compression-bptc`),pvrtcSupported:e.hasFeature(`texture-compression-pvrtc`)}:this.workerConfig={astcSupported:e.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:e.extensions.has(`WEBGL_compressed_texture_astc`)&&e.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:e.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:e.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:e.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:e.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:e.extensions.has(`WEBGL_compressed_texture_pvrtc`)||e.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},this}init(){if(!this.transcoderPending){let t=new Zi(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new Zi(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),Ud>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),Ud++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new Zi(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Hd.has(e))return Hd.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:u,dfdFlags:d}}=e;if(n===`error`)return Promise.reject(r);let f;if(t.faceCount===6)f=new Ci(i,s,u);else{let e=i[0].mipmaps;f=t.layerCount>1?new Si(e,a,o,t.layerCount,s,u):new xi(e,a,o,s,u)}return f.minFilter=i[0].mipmaps.length===1?c:l,f.magFilter=c,f.generateMipmaps=!1,f.needsUpdate=!0,f.colorSpace=Xd(t),f.premultiplyAlpha=!!(d&1),f}async _createTexture(e,t={}){let n=Fd(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return Yd(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return Hd.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Ud--}};Gd.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},Gd.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},Gd.EngineFormat={RGBAFormat:m,RGBA_ASTC_4x4_Format:ee,RGB_BPTC_UNSIGNED_Format:36495,RGBA_BPTC_Format:ne,RGBA_ETC2_EAC_Format:S,RGBA_PVRTC_4BPPV1_Format:35842,RGBA_S3TC_DXT5_Format:b,RGB_ETC1_Format:36196,RGB_ETC2_Format:x,RGB_PVRTC_4BPPV1_Format:35840,RGBA_S3TC_DXT1_Format:v},Gd.EngineType={UnsignedByteType:u,HalfFloatType:f,FloatType:d},Gd.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o{let t=new Bd;await t.init(),e(t)}),n=await Wd);let r=[];for(let i=0;i>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,c=e.levels[i],l;if(e.supercompressionScheme===0)l=c.levelData;else if(e.supercompressionScheme===2)l=n.decode(c.levelData,c.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let u;u=Jd[t]===1015?new Float32Array(l.buffer,l.byteOffset,l.byteLength/Float32Array.BYTES_PER_ELEMENT):Jd[t]===1016?new Uint16Array(l.buffer,l.byteOffset,l.byteLength/Uint16Array.BYTES_PER_ELEMENT):Jd[t]===35902||Jd[t]===35899?new Uint32Array(l.buffer,l.byteOffset,l.byteLength/Uint32Array.BYTES_PER_ELEMENT):l,r.push({data:u,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(Kd.has(qd[t]))a=e.pixelDepth===0?new Br(r[0].data,e.pixelWidth,e.pixelHeight):new ot(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?s:o,a.magFilter=o,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new xi(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?l:c,a.magFilter=c}return a.mipmaps=r,a.type=Jd[t],a.format=qd[t],a.colorSpace=Xd(e),a.needsUpdate=!0,Promise.resolve(a)}function Xd(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?C:w:t.colorPrimaries===10?t.transferFunction===2?`display-p3`:`display-p3-linear`:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),``)}self.onmessage=e=>{let t=e.data;switch(t.type){case`init`:break;case`load`:tf(t);break;default:console.error(`[Worker] Unknown message type:`,t.type);break}},self.onerror=e=>{console.error(`[Worker] Error:`,e)};function Zd(e){self.postMessage(e)}let Qd=null,$d=null,ef=null;async function tf(t){Qd??=new Nu,Qd.setMeshoptDecoder(e),$d??=new Au,$d.setDecoderConfig({type:`js`}),$d.setDecoderPath(t.dracoDecoderPath),Qd.setDRACOLoader($d),ef??=new Gd,ef.workerConfig=t.ktx2LoaderConfig,ef.setTranscoderPath(t.ktx2TranscoderPath),Qd.setKTX2Loader(ef),Qd.load(t.url,e=>{let n={type:`loaded-gltf`,result:{url:t.url,geometries:[],textures:[]}};nf(e,n),Zd(n)})}function nf(e,t){let{result:n}=t;for(let t of e.parser.associations.keys()){let r=e.parser.associations.get(t);if(r)if(`isTexture`in t&&t.isTexture){let i=t,a=e.parser.json.textures[r.textures??-1];n.textures.push({texture:i,textureIndex:r.textures??-1,extensions:a?.extensions??{}})}else if(`isMesh`in t&&t.isMesh){let i=t,a=r.meshes??-1,o=r.primitives??-1,s=e.parser.json.meshes[a];n.geometries.push({geometry:i.geometry,meshIndex:a,primitiveIndex:o,extensions:s?.extensions??{}})}else `isMaterial`in t&&t.isMaterial}}})(); \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz b/Needle/MenuScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a235d334843a063a5139a6b6a43c0257557f1ba GIT binary patch literal 140931 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 JZ#^R-2mpn_eS`o2 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/index-CkG2vTVa.js b/Needle/MenuScene/dist/assets/index-CkG2vTVa.js new file mode 100644 index 0000000..33ebdaa --- /dev/null +++ b/Needle/MenuScene/dist/assets/index-CkG2vTVa.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./register_types.C910Zu9b.js","./needle-engine-webxr.DQA26K-l.js","./materialx.CnHmG--Y.js","./rolldown-runtime.CYVBeYYp.js","./three@0.169.19.js","./needle-engine-ui.BzyLX9fs.js","./gltf-progressive.BBJGcb3s.js","./three-examples@0.169.19.js","./three-mesh-ui.CgGzZ3ml.js","./needle-engine@5.0.3.js","./needle-engine.extras.t1Dx-yNB.js","./needle-engine-particles.Bw3zzNt3.js","./three-quarks.DALdLWPD.js","./needle-engine.extras.CDv9-f43.js","./postprocessing.Wy71DpiM.js","./three-mesh-bvh.B-oXEGo2.js","./needle-engine.V_YEpsUE.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{_t as t,fn as n,wi as r}from"./needle-engine-ui.BzyLX9fs.js";import"./needle-engine@5.0.3.js";import{x as i}from"./needle-engine-webxr.DQA26K-l.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),globalThis[`needle:dependencies:ready`]=e(()=>import(`./register_types.C910Zu9b.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url);var a=[];globalThis[`needle:codegen_files`]=a,a.push(`./assets/MenuScene.glb`),document.addEventListener(`DOMContentLoaded`,()=>{let e=document.querySelector(`needle-engine`);e&&e.getAttribute(`src`)===null&&(e.setAttribute(`hash`,`1776630853539`),e.setAttribute(`src`,JSON.stringify(a)))}),console.log(`Made with ♥ by 🌵 Needle - https://needle.tools — Version 5.0.3`),r(e=>{let t=e.scene.getComponentInChildren(i);t||(t=e.scene.addComponent(i),t.createARButton=!0,t.createVRButton=!0),t.autoPlace=!0,t.autoCenter=!0,t.arScale=1});function o(e){document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e()}function s(){let e=document.querySelector(`needle-engine`),r=document.querySelector(`#asset-picker-prev`),i=document.querySelector(`#asset-picker-next`),a=document.querySelector(`#asset-picker-ar`),s=document.querySelector(`#asset-picker-label`),c=document.querySelector(`#asset-picker-index`);if(!e||!r||!i||!a||!s||!c)return;let l=null,u=!1,d=!1,f=!1,p=()=>{l&&l.getDishSlotCount()>0?(s.textContent=l.getPickerLabel(),c.textContent=``):l?(s.textContent=`Menu (assign dishes in Unity)`,c.textContent=``):(s.textContent=`Menu scene`,c.textContent=`—`);let e=l!==null&&l.getDishSlotCount()>1;r.disabled=!e,i.disabled=!e,a.disabled=!d||f||u},m=async()=>{try{let n=await e.getContext();l=t(MenuController,n)}catch{l=null}p()};n.isARSupported().then(e=>{d=e,p()});let h=e=>{!l||l.getDishSlotCount()<=1||(e<0?l.selectPreviousDish():l.selectNextDish(),p())},g=async()=>{if(!(!d||f||u)){f=!0,p();try{let t=await e.getContext();await n.start(`immersive-ar`,void 0,t)}catch(e){console.warn(`[assetPicker] Failed to start AR session:`,e)}finally{f=!1,p()}}};r.addEventListener(`click`,()=>h(-1)),i.addEventListener(`click`,()=>h(1)),a.addEventListener(`click`,()=>void g()),e.addEventListener(`enter-ar`,()=>{u=!0,p()}),e.addEventListener(`exit-ar`,()=>{u=!1,p()}),e.addEventListener(`enter-vr`,()=>{u=!0,p()}),e.addEventListener(`exit-vr`,()=>{u=!1,p()}),e.addEventListener(`loadfinished`,()=>void m()),o(()=>{requestAnimationFrame(()=>void m())})}s(),e(()=>import(`./needle-engine.V_YEpsUE.js`),__vite__mapDeps([16,10,2,3,4,1,5,6,7,8,11,12,13,14,9,15]),import.meta.url); \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/index-CkG2vTVa.js.gz b/Needle/MenuScene/dist/assets/index-CkG2vTVa.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..917085efc772a74aaeb9044fd978edefcd13ac47 GIT binary patch literal 1733 zcmV;$20Hm4iwFP!000023YAyga@#f*zTc;yyfYeL213Lrc51OqYRhi6t?hW@ZCcmk zF(C3#!UhBw0F6|ZjjFvLh*Q#SmN*SH(eU;?9y;|v(Zw}{ZF%_pLa961dOE1I)%|A1J;TO(Ea`I-z3AH zUDMlvDbEWD_MU-eI|n=V+6SXIpML4(a-;cgwrQ94Hf~XvI>Rk>;lZ>sJK5jte!-0s zi3CgcuX~?9ow(k*7avP*K3ICNca$Febb9cprNO~ux0AhCX(+UHh0%%6f*R4EW-r5o zLL6@hb2u5({f_?m@Qr@H*~I&+^TWdac<6U8F~;#LL33Up5x+_=#3hdYBJx5TH%|j@ z16X86=MP?fbc4Ne9_&b_{9BQ0;ooL?_|c2L(edzwER9UPPO(|%{fdoHR;t7atq`6| zZ~?@rPRbmVqlp3T;822JAtr_Tz%Vr+kA!uR$Pl#KKy6ugyY}{P#B!aM5()!S^ORw1 zz?DWtnKr1l66h>g8Twd)nVo@z#A&l9Wn=5YfQ+}+6m4BHj1>YLDYy=fOUJ$EZ-*Al z1Pp@s)qH8ec?*C=h8*?H9LF(B#zLmvd4|^+V48 zF^*@L-1$PFi!KStbJ8O($Try_FUePAmxNssh9rDW!X61(qYZv0I)xFat4v6+>@wzr)1tIv?;f`noPBl-sys_T0UgO9!(`PgJWUTLpqwu* zP+$-{czZn1%6XaQDWr_}fbVwmT9YBRMhpx`buW*=?Kx+}uylZ!H3`FU9IH~wb{he; zYujUP$BeM><;$I&UiYi*-ga-7`69FTw2<%5-kwnFj8G$y%@D^JFEB~8vRVR_dW6_9 zPa(J#ZXA667X0^Lzx^jTsoe}Z!PvRN_MhDl8g*Jr8+`ut_uxGk>r1I7LWW60 z15IB6wM`1a4Rl^;1m@@3YXf3F!mZ_?isHzsPs+O&)RTQ_Pb>fVj0{q=Hn~G1x$; z;78>@3T%UljSA{ozlZ+(>+cLlO>xN9vg|0Y904qCz0o#&L-e1o=mhzgD!D5(R;R7 zQsy-`3bBj2j+;8V48G+;LK-+7)Y^i*cY*b@uvUFW053A3xRkSbQ?Upy7K_Mipp`_5 zAT06i6M4IDlOu2oO|jOxh~ zReO@ogz}A;-ik8!QR;f^m>c+5f^~aJJkyk*uH#ys!w9yK~Bee@HfsDdCQv bN}53>T#YKXrdk(x^=FAo3!_Jv%{ literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/index.2XwOwFJz.css b/Needle/MenuScene/dist/assets/index.2XwOwFJz.css new file mode 100644 index 0000000..a203eff --- /dev/null +++ b/Needle/MenuScene/dist/assets/index.2XwOwFJz.css @@ -0,0 +1 @@ +html{height:-webkit-fill-available}body{margin:0;padding:0}needle-engine{width:100%;height:100%;position:absolute;top:0;left:0}#asset-picker{left:0;right:0;bottom:calc(4.75rem + env(safe-area-inset-bottom,0px));z-index:600;pointer-events:auto;box-sizing:border-box;justify-content:center;padding:12px;display:flex;position:fixed}#asset-picker .asset-picker__inner{color:#f2f2f7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f0f14d1;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;max-width:min(100%,36rem);padding:10px 14px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:.95rem;display:flex;box-shadow:0 4px 24px #00000059}#asset-picker button{pointer-events:auto;touch-action:manipulation;cursor:pointer;font:inherit;color:#0f0f14;background:#e8e8ed;border:none;border-radius:8px;padding:8px 14px;font-weight:600}#asset-picker button:disabled{opacity:.45;cursor:not-allowed}#asset-picker #asset-picker-ar{color:#0a0a0c;background:#34c759}#asset-picker #asset-picker-ar:disabled{color:#ffffff80;background:#3a3a3e}#asset-picker .asset-picker__label{text-overflow:ellipsis;white-space:nowrap;text-align:center;flex:1;min-width:0;overflow:hidden}#asset-picker .asset-picker__index{opacity:.85;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.85rem} diff --git a/Needle/MenuScene/dist/assets/index.2XwOwFJz.css.gz b/Needle/MenuScene/dist/assets/index.2XwOwFJz.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b68f95dfd2f5ec315fbfbdc6099b116c6c11fa1f GIT binary patch literal 656 zcmV;B0&o2viwFP!000023WZbKZrd;necx9E2nHlr6ezdWmA+ul!=4M;qGK*HB}j7O zG|0aXwsTq9qSJ$5$|P}k&S8~md#aGORZ`-B`Hqq($yxz>APc$0bMDOXR72PjE2%vg zL%db;%!tOKK;9DL=|Cn`Y9Zx!eQDQ!dlxB@V+DD1wn?ay^Ga%qWm57yh8QskPsI+y zX?WD3FPA!ZDY;q|V2jCm{=5lTkA94h_mc=E3J3^-xT_yBXVSORseTj023z$crS^_E zVGy`SPEkRVoX%Y}bjv`{9a;S^+hHC!Osrg7~ zuS*5S9h4lceLGrq*I4#v^YV`2yh+LN=`(?oYl=!h(W_GflW#0^fi9X5T~L>z9*-if zFi_GLbp|>g7{&}UG#7pqJH~fhXTH6$ls%Ai7*^p)%1_}dL$TX2b8;REN=G$cZ>}iW zB>~pD!v}XgL;`Nkk|04A57<}h;`sx2@9Xa{t`_Z2CLdeD3Rd{F(Jka?PYK&3+#W+| z-9e$XMmG?{sFHL5MvB q0#1UP8Uqz7LEcyhT^xrsiB%xpDfzEUv(BaGZ+`*H)GawB1pojjg)-Ry literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js b/Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js new file mode 100644 index 0000000..5ec3d79 --- /dev/null +++ b/Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js @@ -0,0 +1,150 @@ +import{t as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,Bt as r,C as i,Fr as a,It as o,Jn as s,Lt as c,O as l,On as u,Qn as d,Qt as f,Sr as p,Xt as m,Yt as h,Zt as g,an as _,gr as v,hn as y,in as b,lt as x,mn as ee,n as S,on as C,ot as w,sn as T,t as te,tr as E,vn as D,wn as ne,xr as re}from"./three@0.169.19.js";var ie=`modulepreload`,ae=function(e,t){return new URL(e,t).href},oe={},se=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=ae(t,n),t in oe)return;oe[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ie,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ce=``+new URL(`JsMaterialXCore.B97gKRq_.wasm`,import.meta.url).href,le=``+new URL(`JsMaterialXGenShader.data.DOxudtll.txt`,import.meta.url).href,ue=``+new URL(`JsMaterialXGenShader.P2pWAaz9.wasm`,import.meta.url).href,de=e(((e,t)=>{t.exports={}})),fe=(function(){var e=typeof document<`u`?document.currentScript?.src:void 0;return typeof __filename<`u`&&(e||=__filename),(function(t){t||={};var n,r=t,i,a,o=new Promise((e,t)=>{i=e,a=t}),s=typeof window==`object`,c=typeof WorkerGlobalScope<`u`,l=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&process.type!=`renderer`;r.expectedDataFileDownloads??=0,r.expectedDataFileDownloads++,(()=>{if(typeof ENVIRONMENT_IS_PTHREAD<`u`&&ENVIRONMENT_IS_PTHREAD||typeof ENVIRONMENT_IS_WASM_WORKER<`u`&&ENVIRONMENT_IS_WASM_WORKER)return;var e=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`;function t(t){typeof window==`object`?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf(`/`))+`/`):typeof process>`u`&&typeof location<`u`&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf(`/`))+`/`);var n=`../../bin/JsMaterialXGenShader.data`,i=`JsMaterialXGenShader.data`,a=r.locateFile?r.locateFile(i,``):i,o=t.remote_package_size;function s(t,n,i,a){if(e){de().readFile(t,(e,t)=>{e?a(e):i(t.buffer)});return}r.dataFileDownloads??={},fetch(t).catch(e=>Promise.reject(Error(`Network Error: ${t}`,{cause:e}))).then(e=>{if(!e.ok)return Promise.reject(Error(`${e.status}: ${e.url}`));if(!e.body&&e.arrayBuffer)return e.arrayBuffer().then(i);let a=e.body.getReader(),o=()=>a.read().then(d).catch(t=>Promise.reject(Error(`Unexpected error while handling : ${e.url} ${t}`,{cause:t}))),s=[],c=e.headers,l=Number(c.get(`Content-Length`)??n),u=0,d=({done:e,value:n})=>{if(e){let e=new Uint8Array(s.map(e=>e.length).reduce((e,t)=>e+t,0)),t=0;for(let n of s)e.set(n,t),t+=n.length;i(e.buffer)}else{s.push(n),u+=n.length,r.dataFileDownloads[t]={loaded:u,total:l};let e=0,i=0;for(let t of Object.values(r.dataFileDownloads))e+=t.loaded,i+=t.total;return r.setStatus?.(`Downloading data... (${e}/${i})`),o()}};return r.setStatus?.(`Downloading data...`),o()})}function c(e){console.error(`package error:`,e)}var l=null,u=r.getPreloadedPackage?r.getPreloadedPackage(a,o):null;u||s(a,o,e=>{l?(l(e),l=null):u=e},c);function d(e){function r(e,t){if(!e)throw t+Error().stack}e.FS_createPath(`/`,`libraries`,!0,!0),e.FS_createPath(`/libraries`,`bxdf`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`lama`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`translation`,!0,!0),e.FS_createPath(`/libraries`,`cmlib`,!0,!0),e.FS_createPath(`/libraries`,`lights`,!0,!0),e.FS_createPath(`/libraries/lights`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/lights`,`genmsl`,!0,!0),e.FS_createPath(`/libraries`,`nprlib`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries`,`pbrlib`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/pbrlib/genglsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries/pbrlib/genosl`,`lib`,!0,!0),e.FS_createPath(`/libraries`,`stdlib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genglsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genmsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genosl`,`include`,!0,!0),e.FS_createPath(`/libraries/stdlib/genosl`,`lib`,!0,!0),e.FS_createPath(`/libraries`,`targets`,!0,!0);function i(e,t,n){this.start=e,this.end=t,this.audio=n}i.prototype={requests:{},open:function(t,n){this.name=n,this.requests[n]=this,e.addRunDependency(`fp ${this.name}`)},send:function(){},onload:function(){var e=this.byteArray.subarray(this.start,this.end);this.finish(e)},finish:function(t){var n=this;e.FS_createDataFile(this.name,null,t,!0,!0,!0),e.removeRunDependency(`fp ${n.name}`),this.requests[this.name]=null}};for(var a=t.files,o=0;o{throw t},p=``;function m(e){return r.locateFile?r.locateFile(e,p):p+e}var h,g;if(l){var _=de();de(),p=__dirname+`/`,g=e=>(e=xe(e)?new URL(e):e,_.readFileSync(e)),h=async(e,t=!0)=>(e=xe(e)?new URL(e):e,_.readFileSync(e,t?void 0:`utf8`)),!r.thisProgram&&process.argv.length>1&&(d=process.argv[1].replace(/\\/g,`/`)),process.argv.slice(2),f=(e,t)=>{throw process.exitCode=e,t}}else (s||c)&&(c?p=self.location.href:typeof document<`u`&&document.currentScript&&(p=document.currentScript.src),e&&(p=e),p=p.startsWith(`blob:`)?``:p.substr(0,p.replace(/[?#].*/,``).lastIndexOf(`/`)+1),c&&(g=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),h=async e=>{if(xe(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{if(r.status==200||r.status==0&&r.response){t(r.response);return}n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});var v=r.print||console.log.bind(console),y=r.printErr||console.error.bind(console);Object.assign(r,u),u=null,r.arguments&&r.arguments,r.thisProgram&&(d=r.thisProgram);var b=r.wasmBinary,x,ee=!1,S,C,w,T,te,E,D,ne,re;function ie(){var e=x.buffer;r.HEAP8=C=new Int8Array(e),r.HEAP16=T=new Int16Array(e),r.HEAPU8=w=new Uint8Array(e),r.HEAPU16=te=new Uint16Array(e),r.HEAP32=E=new Int32Array(e),r.HEAPU32=D=new Uint32Array(e),r.HEAPF32=ne=new Float32Array(e),r.HEAPF64=re=new Float64Array(e)}var ae=[],oe=[],se=[];function ce(){if(r.preRun)for(typeof r.preRun==`function`&&(r.preRun=[r.preRun]);r.preRun.length;)fe(r.preRun.shift());Me(ae)}function le(){!r.noFSInit&&!z.initialized&&z.init(),z.ignorePermissions=!1,ot.init(),Me(oe)}function ue(){if(r.postRun)for(typeof r.postRun==`function`&&(r.postRun=[r.postRun]);r.postRun.length;)O(r.postRun.shift());Me(se)}function fe(e){ae.unshift(e)}function pe(e){oe.unshift(e)}function O(e){se.unshift(e)}var k=0,me=null;function he(e){return e}function ge(e){k++,r.monitorRunDependencies?.(k)}function _e(e){if(k--,r.monitorRunDependencies?.(k),k==0&&me){var t=me;me=null,t()}}function ve(e){r.onAbort?.(e),e=`Aborted(`+e+`)`,y(e),ee=!0,e+=`. Build with -sASSERTIONS for more info.`;var t=new WebAssembly.RuntimeError(e);throw a(t),t}var ye=`data:application/octet-stream;base64,`,be=e=>e.startsWith(ye),xe=e=>e.startsWith(`file://`);function Se(){var e=`JsMaterialXGenShader.wasm`;return be(e)?e:m(e)}var Ce;function we(e){if(e==Ce&&b)return new Uint8Array(b);if(g)return g(e);throw`both async and sync fetching of the wasm failed`}async function Te(e){if(!b)try{var t=await h(e);return new Uint8Array(t)}catch{}return we(e)}async function Ee(e,t){try{var n=await Te(e);return await WebAssembly.instantiate(n,t)}catch(e){y(`failed to asynchronously prepare wasm: ${e}`),ve(e)}}async function De(e,t,n){if(!e&&typeof WebAssembly.instantiateStreaming==`function`&&!be(t)&&!xe(t)&&!l&&typeof fetch==`function`)try{var r=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(r,n)}catch(e){y(`wasm streaming compile failed: ${e}`),y(`falling back to ArrayBuffer instantiation`)}return Ee(t,n)}function Oe(){return{a:yi}}async function ke(){function e(e,t){return Z=e.exports,x=Z._a,ie(),yn=Z.cb,pe(Z.$a),_e(`wasm-instantiate`),Z}ge(`wasm-instantiate`);function t(t){e(t.instance)}var n=Oe();if(r.instantiateWasm)try{return r.instantiateWasm(n,e)}catch(e){y(`Module.instantiateWasm callback failed with error: ${e}`),a(e)}Ce??=Se();try{var i=await De(b,Ce,n);return t(i),i}catch(e){a(e);return}}var A,j,Ae={189968:()=>{r.TreeIterator.prototype[Symbol.iterator]=function(){return this}},190052:()=>{r.GraphIterator.prototype[Symbol.iterator]=function(){return this}},190137:()=>{r.InheritanceIterator.prototype[Symbol.iterator]=function(){return this}}};class je{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var Me=e=>{for(;e.length>0;)e.shift()(r)},Ne=r.noExitRuntime||!0,M=e=>Ti(e),N=()=>Ei(),Pe=typeof TextDecoder<`u`?new TextDecoder:void 0,Fe=(e,t=0,n=NaN)=>{for(var r=t+n,i=t;e[i]&&!(i>=r);)++i;if(i-t>16&&e.buffer&&Pe)return Pe.decode(e.subarray(t,i));for(var a=``;t>10,56320|l&1023)}}return a},Ie=(e,t)=>e?Fe(w,e,t):``,P=(e,t,n,r)=>ve(`Assertion failed: ${Ie(e)}, at: `+[t?Ie(t):`unknown filename`,n,r?Ie(r):`unknown function`]),Le=[],Re=0,ze=e=>{var t=new Ve(e);return t.get_caught()||(t.set_caught(!0),Re--),t.set_rethrown(!1),Le.push(t),Oi(e),Ai(e)},F=0,Be=()=>{$(0,0);var e=Le.pop();Di(e.excPtr),F=0};class Ve{constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){D[this.ptr+4>>2]=e}get_type(){return D[this.ptr+4>>2]}set_destructor(e){D[this.ptr+8>>2]=e}get_destructor(){return D[this.ptr+8>>2]}set_caught(e){e=+!!e,C[this.ptr+12]=e}get_caught(){return C[this.ptr+12]!=0}set_rethrown(e){e=+!!e,C[this.ptr+13]=e}get_rethrown(){return C[this.ptr+13]!=0}init(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)}set_adjusted_ptr(e){D[this.ptr+16>>2]=e}get_adjusted_ptr(){return D[this.ptr+16>>2]}}var He=e=>{throw F||=e,F},Ue=e=>wi(e),We=e=>{var t=F;if(!t)return Ue(0),0;var n=new Ve(t);n.set_adjusted_ptr(t);var r=n.get_type();if(!r)return Ue(0),t;for(var i of e){if(i===0||i===r)break;var a=n.ptr+16;if(ki(i,r,a))return Ue(i),t}return Ue(r),t},Ge=()=>We([]),Ke=e=>We([e]),qe=(e,t)=>We([e,t]),Je=()=>{var e=Le.pop();e||ve(`no exception to throw`);var t=e.excPtr;throw e.get_rethrown()||(Le.push(e),e.set_rethrown(!0),e.set_caught(!1),Re++),F=t,F},I=(e,t,n)=>{throw new Ve(e).init(t,n),F=e,Re++,F},Ye=()=>Re,Xe=()=>{var e=E[B.varargs>>2];return B.varargs+=4,e},Ze=Xe,L={isAbs:e=>e.charAt(0)===`/`,splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},normalize:e=>{var t=L.isAbs(e),n=e.substr(-1)===`/`;return e=L.normalizeArray(e.split(`/`).filter(e=>!!e),!t).join(`/`),!e&&!t&&(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},dirname:e=>{var t=L.splitPath(e),n=t[0],r=t[1];return!n&&!r?`.`:(r&&=r.substr(0,r.length-1),n+r)},basename:e=>{if(e===`/`)return`/`;e=L.normalize(e),e=e.replace(/\/$/,``);var t=e.lastIndexOf(`/`);return t===-1?e:e.substr(t+1)},join:(...e)=>L.normalize(e.join(`/`)),join2:(e,t)=>L.normalize(e+`/`+t)},Qe=()=>{if(typeof crypto==`object`&&typeof crypto.getRandomValues==`function`)return e=>crypto.getRandomValues(e);if(l)try{var e=de();if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch{}ve(`initRandomDevice`)},$e=e=>($e=Qe())(e),et={resolve:(...e)=>{for(var t=``,n=!1,r=e.length-1;r>=-1&&!n;r--){var i=r>=0?e[r]:z.cwd();if(typeof i!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!i)return``;t=i+`/`+t,n=L.isAbs(i)}return t=L.normalizeArray(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},relative:(e,t)=>{e=et.resolve(e).substr(1),t=et.resolve(t).substr(1);function n(e){for(var t=0;t=0&&e[n]===``;n--);return t>n?[]:e.slice(t,n-t+1)}for(var r=n(e.split(`/`)),i=n(t.split(`/`)),a=Math.min(r.length,i.length),o=a,s=0;s{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},rt=(e,t,n,r)=>{if(!(r>0))return 0;for(var i=n,a=n+r-1,o=0;o=55296&&s<=57343){var c=e.charCodeAt(++o);s=65536+((s&1023)<<10)|c&1023}if(s<=127){if(n>=a)break;t[n++]=s}else if(s<=2047){if(n+1>=a)break;t[n++]=192|s>>6,t[n++]=128|s&63}else if(s<=65535){if(n+2>=a)break;t[n++]=224|s>>12,t[n++]=128|s>>6&63,t[n++]=128|s&63}else{if(n+3>=a)break;t[n++]=240|s>>18,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|s&63}}return t[n]=0,n-i};function it(e,t,n){var r=n>0?n:nt(e)+1,i=Array(r),a=rt(e,i,0,i.length);return t&&(i.length=a),i}var at=()=>{if(!tt.length){var e=null;if(l){var t=256,n=Buffer.alloc(t),r=0,i=process.stdin.fd;try{r=_.readSync(i,n,0,t)}catch(e){if(e.toString().includes(`EOF`))r=0;else throw e}r>0&&(e=n.slice(0,r).toString(`utf-8`))}else typeof window<`u`&&typeof window.prompt==`function`&&(e=window.prompt(`Input: `),e!==null&&(e+=` +`));if(!e)return null;tt=it(e,!0)}return tt.shift()},ot={ttys:[],init(){},shutdown(){},register(e,t){ot.ttys[e]={input:[],output:[],ops:t},z.registerDevice(e,ot.stream_ops)},stream_ops:{open(e){var t=ot.ttys[e.node.rdev];if(!t)throw new z.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,n,r,i){if(!e.tty||!e.tty.ops.get_char)throw new z.ErrnoError(60);for(var a=0,o=0;o0&&(v(Fe(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,n){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(y(Fe(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(y(Fe(e.output)),e.output=[])}}},st=(e,t)=>Math.ceil(e/t)*t,ct=e=>{ve()},R={ops_table:null,mount(e){return R.createNode(null,`/`,16895,0)},createNode(e,t,n,r){if(z.isBlkdev(n)||z.isFIFO(n))throw new z.ErrnoError(63);R.ops_table||={dir:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr,lookup:R.node_ops.lookup,mknod:R.node_ops.mknod,rename:R.node_ops.rename,unlink:R.node_ops.unlink,rmdir:R.node_ops.rmdir,readdir:R.node_ops.readdir,symlink:R.node_ops.symlink},stream:{llseek:R.stream_ops.llseek}},file:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr},stream:{llseek:R.stream_ops.llseek,read:R.stream_ops.read,write:R.stream_ops.write,allocate:R.stream_ops.allocate,mmap:R.stream_ops.mmap,msync:R.stream_ops.msync}},link:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr,readlink:R.node_ops.readlink},stream:{}},chrdev:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr},stream:z.chrdev_stream_ops}};var i=z.createNode(e,t,n,r);return z.isDir(i.mode)?(i.node_ops=R.ops_table.dir.node,i.stream_ops=R.ops_table.dir.stream,i.contents={}):z.isFile(i.mode)?(i.node_ops=R.ops_table.file.node,i.stream_ops=R.ops_table.file.stream,i.usedBytes=0,i.contents=null):z.isLink(i.mode)?(i.node_ops=R.ops_table.link.node,i.stream_ops=R.ops_table.link.stream):z.isChrdev(i.mode)&&(i.node_ops=R.ops_table.chrdev.node,i.stream_ops=R.ops_table.chrdev.stream),i.atime=i.mtime=i.ctime=Date.now(),e&&(e.contents[t]=i,e.atime=e.mtime=e.ctime=i.atime),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array},expandFileStorage(e,t){var n=e.contents?e.contents.length:0;if(!(n>=t)){t=Math.max(t,n*(n<1024*1024?2:1.125)>>>0),n!=0&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var n=e.contents;e.contents=new Uint8Array(t),n&&e.contents.set(n.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=z.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,z.isDir(e.mode)?t.size=4096:z.isFile(e.mode)?t.size=e.usedBytes:z.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){for(let n of[`mode`,`atime`,`mtime`,`ctime`])t[n]&&(e[n]=t[n]);t.size!==void 0&&R.resizeFileStorage(e,t.size)},lookup(e,t){throw R.doesNotExistError},mknod(e,t,n,r){return R.createNode(e,t,n,r)},rename(e,t,n){var r;try{r=z.lookupNode(t,n)}catch{}if(r){if(z.isDir(e.mode))for(var i in r.contents)throw new z.ErrnoError(55);z.hashRemoveNode(r)}delete e.parent.contents[e.name],t.contents[n]=e,e.name=n,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.contents[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){for(var n in z.lookupNode(e,t).contents)throw new z.ErrnoError(55);delete e.contents[t],e.ctime=e.mtime=Date.now()},readdir(e){return[`.`,`..`,...Object.keys(e.contents)]},symlink(e,t,n){var r=R.createNode(e,t,41471,0);return r.link=n,r},readlink(e){if(!z.isLink(e.mode))throw new z.ErrnoError(28);return e.link}},stream_ops:{read(e,t,n,r,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-i,r);if(o>8&&a.subarray)t.set(a.subarray(i,i+o),n);else for(var s=0;s0||n+t{var t=await h(e);return new Uint8Array(t)},ut=(e,t,n,r,i,a)=>{z.createDataFile(e,t,n,r,i,a)},dt=r.preloadPlugins||[],ft=(e,t,n,r)=>{typeof Browser<`u`&&Browser.init();var i=!1;return dt.forEach(a=>{i||a.canHandle(t)&&(a.handle(e,t,n,r),i=!0)}),i},pt=(e,t,n,r,i,a,o,s,c,l)=>{var u=t?et.resolve(L.join2(e,t)):e,d=he(`cp ${u}`);function f(n){function f(n){l?.(),s||ut(e,t,n,r,i,c),a?.(),_e(d)}ft(n,u,f,()=>{o?.(),_e(d)})||f(n)}ge(d),typeof n==`string`?lt(n).then(f,o):f(n)},mt=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(t===void 0)throw Error(`Unknown file open mode: ${e}`);return t},ht=(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},z={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:`/`,initialized:!1,ignorePermissions:!0,ErrnoError:class{name=`ErrnoError`;constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!=1}get isWrite(){return(this.flags&2097155)!=0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,t,n,r){e||=this,this.parent=e,this.mount=e.mount,this.id=z.nextInode++,this.name=t,this.mode=n,this.rdev=r,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return z.isDir(this.mode)}get isDevice(){return z.isChrdev(this.mode)}},lookupPath(e,t={}){if(!e)return{path:``,node:null};t.follow_mount??=!0,L.isAbs(e)||(e=z.cwd()+`/`+e);linkloop:for(var n=0;n<40;n++){for(var r=e.split(`/`).filter(e=>!!e&&e!==`.`),i=z.root,a=`/`,o=0;o>>0)%z.nameTable.length},hashAddNode(e){var t=z.hashName(e.parent.id,e.name);e.name_next=z.nameTable[t],z.nameTable[t]=e},hashRemoveNode(e){var t=z.hashName(e.parent.id,e.name);if(z.nameTable[t]===e)z.nameTable[t]=e.name_next;else for(var n=z.nameTable[t];n;){if(n.name_next===e){n.name_next=e.name_next;break}n=n.name_next}},lookupNode(e,t){var n=z.mayLookup(e);if(n)throw new z.ErrnoError(n);for(var r=z.hashName(e.id,t),i=z.nameTable[r];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===t)return i}return z.lookup(e,t)},createNode(e,t,n,r){var i=new z.FSNode(e,t,n,r);return z.hashAddNode(i),i},destroyNode(e){z.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)==32768},isDir(e){return(e&61440)==16384},isLink(e){return(e&61440)==40960},isChrdev(e){return(e&61440)==8192},isBlkdev(e){return(e&61440)==24576},isFIFO(e){return(e&61440)==4096},isSocket(e){return(e&49152)==49152},flagsToPermissionString(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t},nodePermissions(e,t){return z.ignorePermissions?0:t.includes(`r`)&&!(e.mode&292)||t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73)?2:0},mayLookup(e){return z.isDir(e.mode)?z.nodePermissions(e,`x`)||(e.node_ops.lookup?0:2):54},mayCreate(e,t){if(!z.isDir(e.mode))return 54;try{return z.lookupNode(e,t),20}catch{}return z.nodePermissions(e,`wx`)},mayDelete(e,t,n){var r;try{r=z.lookupNode(e,t)}catch(e){return e.errno}var i=z.nodePermissions(e,`wx`);if(i)return i;if(n){if(!z.isDir(r.mode))return 54;if(z.isRoot(r)||z.getPath(r)===z.cwd())return 10}else if(z.isDir(r.mode))return 31;return 0},mayOpen(e,t){return e?z.isLink(e.mode)?32:z.isDir(e.mode)&&(z.flagsToPermissionString(t)!==`r`||t&512)?31:z.nodePermissions(e,z.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=z.MAX_OPEN_FDS;e++)if(!z.streams[e])return e;throw new z.ErrnoError(33)},getStreamChecked(e){var t=z.getStream(e);if(!t)throw new z.ErrnoError(8);return t},getStream:e=>z.streams[e],createStream(e,t=-1){return e=Object.assign(new z.FSStream,e),t==-1&&(t=z.nextfd()),e.fd=t,z.streams[t]=e,e},closeStream(e){z.streams[e]=null},dupStream(e,t=-1){var n=z.createStream(e,t);return n.stream_ops?.dup?.(n),n},chrdev_stream_ops:{open(e){e.stream_ops=z.getDevice(e.node.rdev).stream_ops,e.stream_ops.open?.(e)},llseek(){throw new z.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){z.devices[e]={stream_ops:t}},getDevice:e=>z.devices[e],getMounts(e){for(var t=[],n=[e];n.length;){var r=n.pop();t.push(r),n.push(...r.mounts)}return t},syncfs(e,t){typeof e==`function`&&(t=e,e=!1),z.syncFSRequests++,z.syncFSRequests>1&&y(`warning: ${z.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=z.getMounts(z.root.mount),r=0;function i(e){return z.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,i(e));++r>=n.length&&i(null)}n.forEach(t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)})},mount(e,t,n){var r=n===`/`,i=!n,a;if(r&&z.root)throw new z.ErrnoError(10);if(!r&&!i){var o=z.lookupPath(n,{follow_mount:!1});if(n=o.path,a=o.node,z.isMountpoint(a))throw new z.ErrnoError(10);if(!z.isDir(a.mode))throw new z.ErrnoError(54)}var s={type:e,opts:t,mountpoint:n,mounts:[]},c=e.mount(s);return c.mount=s,s.root=c,r?z.root=c:a&&(a.mounted=s,a.mount&&a.mount.mounts.push(s)),c},unmount(e){var t=z.lookupPath(e,{follow_mount:!1});if(!z.isMountpoint(t.node))throw new z.ErrnoError(28);var n=t.node,r=n.mounted,i=z.getMounts(r);Object.keys(z.nameTable).forEach(e=>{for(var t=z.nameTable[e];t;){var n=t.name_next;i.includes(t.mount)&&z.destroyNode(t),t=n}}),n.mounted=null;var a=n.mount.mounts.indexOf(r);n.mount.mounts.splice(a,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,n){var r=z.lookupPath(e,{parent:!0}).node,i=L.basename(e);if(!i||i===`.`||i===`..`)throw new z.ErrnoError(28);var a=z.mayCreate(r,i);if(a)throw new z.ErrnoError(a);if(!r.node_ops.mknod)throw new z.ErrnoError(63);return r.node_ops.mknod(r,i,t,n)},statfs(e){var t={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:z.nextInode,ffree:z.nextInode-1,fsid:42,flags:2,namelen:255},n=z.lookupPath(e,{follow:!0}).node;return n?.node_ops.statfs&&Object.assign(t,n.node_ops.statfs(n.mount.opts.root)),t},create(e,t=438){return t&=4095,t|=32768,z.mknod(e,t,0)},mkdir(e,t=511){return t&=1023,t|=16384,z.mknod(e,t,0)},mkdirTree(e,t){for(var n=e.split(`/`),r=``,i=0;iz.currentPath,chdir(e){var t=z.lookupPath(e,{follow:!0});if(t.node===null)throw new z.ErrnoError(44);if(!z.isDir(t.node.mode))throw new z.ErrnoError(54);var n=z.nodePermissions(t.node,`x`);if(n)throw new z.ErrnoError(n);z.currentPath=t.path},createDefaultDirectories(){z.mkdir(`/tmp`),z.mkdir(`/home`),z.mkdir(`/home/web_user`)},createDefaultDevices(){z.mkdir(`/dev`),z.registerDevice(z.makedev(1,3),{read:()=>0,write:(e,t,n,r,i)=>r,llseek:()=>0}),z.mkdev(`/dev/null`,z.makedev(1,3)),ot.register(z.makedev(5,0),ot.default_tty_ops),ot.register(z.makedev(6,0),ot.default_tty1_ops),z.mkdev(`/dev/tty`,z.makedev(5,0)),z.mkdev(`/dev/tty1`,z.makedev(6,0));var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=$e(e).byteLength),e[--t]);z.createDevice(`/dev`,`random`,n),z.createDevice(`/dev`,`urandom`,n),z.mkdir(`/dev/shm`),z.mkdir(`/dev/shm/tmp`)},createSpecialDirectories(){z.mkdir(`/proc`);var e=z.mkdir(`/proc/self`);z.mkdir(`/proc/self/fd`),z.mount({mount(){var t=z.createNode(e,`fd`,16895,73);return t.stream_ops={llseek:R.stream_ops.llseek},t.node_ops={lookup(e,t){var n=+t,r=z.getStreamChecked(n),i={parent:null,mount:{mountpoint:`fake`},node_ops:{readlink:()=>r.path},id:n+1};return i.parent=i,i},readdir(){return Array.from(z.streams.entries()).filter(([e,t])=>t).map(([e,t])=>e.toString())}},t}},{},`/proc/self/fd`)},createStandardStreams(e,t,n){e?z.createDevice(`/dev`,`stdin`,e):z.symlink(`/dev/tty`,`/dev/stdin`),t?z.createDevice(`/dev`,`stdout`,null,t):z.symlink(`/dev/tty`,`/dev/stdout`),n?z.createDevice(`/dev`,`stderr`,null,n):z.symlink(`/dev/tty1`,`/dev/stderr`),z.open(`/dev/stdin`,0),z.open(`/dev/stdout`,1),z.open(`/dev/stderr`,1)},staticInit(){z.nameTable=Array(4096),z.mount(R,{},`/`),z.createDefaultDirectories(),z.createDefaultDevices(),z.createSpecialDirectories(),z.filesystems={MEMFS:R}},init(e,t,n){z.initialized=!0,e??=r.stdin,t??=r.stdout,n??=r.stderr,z.createStandardStreams(e,t,n)},quit(){z.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,n=e/this.chunkSize|0;return this.getter(n)[t]}}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(`HEAD`,n,!1),e.send(null),!(e.status>=200&&e.status<300||e.status===304))throw Error(`Couldn't load `+n+`. Status: `+e.status);var t=Number(e.getResponseHeader(`Content-length`)),r,i=(r=e.getResponseHeader(`Accept-Ranges`))&&r===`bytes`,a=(r=e.getResponseHeader(`Content-Encoding`))&&r===`gzip`,o=1024*1024;i||(o=t);var s=(e,r)=>{if(e>r)throw Error(`invalid range (`+e+`, `+r+`) or no bytes requested!`);if(r>t-1)throw Error(`only `+t+` bytes available! programmer error!`);var i=new XMLHttpRequest;if(i.open(`GET`,n,!1),t!==o&&i.setRequestHeader(`Range`,`bytes=`+e+`-`+r),i.responseType=`arraybuffer`,i.overrideMimeType&&i.overrideMimeType(`text/plain; charset=x-user-defined`),i.send(null),!(i.status>=200&&i.status<300||i.status===304))throw Error(`Couldn't load `+n+`. Status: `+i.status);return i.response===void 0?it(i.responseText||``,!0):new Uint8Array(i.response||[])},c=this;c.setDataGetter(e=>{var n=e*o,r=(e+1)*o-1;if(r=Math.min(r,t-1),c.chunks[e]===void 0&&(c.chunks[e]=s(n,r)),c.chunks[e]===void 0)throw Error(`doXHR failed!`);return c.chunks[e]}),(a||!t)&&(o=t=1,t=this.getter(0).length,o=t,v(`LazyFiles on gzip forces download of the whole file when length is accessed`)),this._length=t,this._chunkSize=o,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<`u`){if(!c)throw`Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc`;var o={isDevice:!1,contents:new a}}else var o={isDevice:!1,url:n};var s=z.createFile(e,t,o,r,i);o.contents?s.contents=o.contents:o.url&&(s.contents=null,s.url=o.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var l={};Object.keys(s.stream_ops).forEach(e=>{var t=s.stream_ops[e];l[e]=(...e)=>(z.forceLoadFile(s),t(...e))});function u(e,t,n,r,i){var a=e.node.contents;if(i>=a.length)return 0;var o=Math.min(a.length-i,r);if(a.slice)for(var s=0;s(z.forceLoadFile(s),u(e,t,n,r,i)),l.mmap=(e,t,n,r,i)=>{z.forceLoadFile(s);var a=ct(t);if(!a)throw new z.ErrnoError(48);return u(e,C,a,t,n),{ptr:a,allocated:!0}},s.stream_ops=l,s}},B={DEFAULT_POLLMASK:5,calculateAt(e,t,n){if(L.isAbs(t))return t;var r=e===-100?z.cwd():B.getStreamFromFD(e).path;if(t.length==0){if(!n)throw new z.ErrnoError(44);return r}return r+`/`+t},doStat(e,t,n){var r=e(t);E[n>>2]=r.dev,E[n+4>>2]=r.mode,D[n+8>>2]=r.nlink,E[n+12>>2]=r.uid,E[n+16>>2]=r.gid,E[n+20>>2]=r.rdev,j=[r.size>>>0,(A=r.size,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+24>>2]=j[0],E[n+28>>2]=j[1],E[n+32>>2]=4096,E[n+36>>2]=r.blocks;var i=r.atime.getTime(),a=r.mtime.getTime(),o=r.ctime.getTime();return j=[Math.floor(i/1e3)>>>0,(A=Math.floor(i/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+40>>2]=j[0],E[n+44>>2]=j[1],D[n+48>>2]=i%1e3*1e3*1e3,j=[Math.floor(a/1e3)>>>0,(A=Math.floor(a/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+56>>2]=j[0],E[n+60>>2]=j[1],D[n+64>>2]=a%1e3*1e3*1e3,j=[Math.floor(o/1e3)>>>0,(A=Math.floor(o/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+72>>2]=j[0],E[n+76>>2]=j[1],D[n+80>>2]=o%1e3*1e3*1e3,j=[r.ino>>>0,(A=r.ino,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+88>>2]=j[0],E[n+92>>2]=j[1],0},doMsync(e,t,n,r,i){if(!z.isFile(t.node.mode))throw new z.ErrnoError(43);if(r&2)return 0;var a=w.slice(e,e+n);z.msync(t,a,i,n,r)},getStreamFromFD(e){return z.getStreamChecked(e)},varargs:void 0,getStr(e){return Ie(e)}};function gt(e,t,n){B.varargs=n;try{var r=B.getStreamFromFD(e);switch(t){case 0:var i=Xe();if(i<0)return-28;for(;z.streams[i];)i++;return z.dupStream(r,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:var i=Xe();return r.flags|=i,0;case 12:var i=Ze(),a=0;return T[i+a>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}var _t=(e,t,n)=>rt(e,w,t,n);function vt(e,t,n){try{var r=B.getStreamFromFD(e);r.getdents||=z.readdir(r.path);for(var i=280,a=0,o=z.llseek(r,0,1),s=Math.floor(o/i),c=Math.min(r.getdents.length,s+Math.floor(n/i)),l=s;l>>0,(A=u,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[t+a>>2]=j[0],E[t+a+4>>2]=j[1],j=[(l+1)*i>>>0,(A=(l+1)*i,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[t+a+8>>2]=j[0],E[t+a+12>>2]=j[1],T[t+a+16>>1]=280,C[t+a+18]=d,_t(f,t+a+19,256),a+=i}return z.llseek(r,l*i,0),a}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function yt(e,t,n){B.varargs=n;try{var r=B.getStreamFromFD(e);switch(t){case 21509:return r.tty?0:-59;case 21505:if(!r.tty)return-59;if(r.tty.ops.ioctl_tcgets){var i=r.tty.ops.ioctl_tcgets(r),a=Ze();E[a>>2]=i.c_iflag||0,E[a+4>>2]=i.c_oflag||0,E[a+8>>2]=i.c_cflag||0,E[a+12>>2]=i.c_lflag||0;for(var o=0;o<32;o++)C[a+o+17]=i.c_cc[o]||0;return 0}return 0;case 21510:case 21511:case 21512:return r.tty?0:-59;case 21506:case 21507:case 21508:if(!r.tty)return-59;if(r.tty.ops.ioctl_tcsets){for(var a=Ze(),s=E[a>>2],c=E[a+4>>2],l=E[a+8>>2],u=E[a+12>>2],d=[],o=0;o<32;o++)d.push(C[a+o+17]);return r.tty.ops.ioctl_tcsets(r.tty,t,{c_iflag:s,c_oflag:c,c_cflag:l,c_lflag:u,c_cc:d})}return 0;case 21519:if(!r.tty)return-59;var a=Ze();return E[a>>2]=0,0;case 21520:return r.tty?-28:-59;case 21531:var a=Ze();return z.ioctl(r,t,a);case 21523:if(!r.tty)return-59;if(r.tty.ops.ioctl_tiocgwinsz){var f=r.tty.ops.ioctl_tiocgwinsz(r.tty),a=Ze();T[a>>1]=f[0],T[a+2>>1]=f[1]}return 0;case 21524:return r.tty?0:-59;case 21515:return r.tty?0:-59;default:return-28}}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function bt(e,t,n,r){B.varargs=r;try{t=B.getStr(t),t=B.calculateAt(e,t);var i=r?Xe():0;return z.open(t,n,i).fd}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function xt(e,t){try{return e=B.getStr(e),B.doStat(z.stat,e,t)}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}var St=()=>ve(``),Ct={},wt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Tt(e){return this.fromWireType(D[e>>2])}var Et={},Dt={},Ot={},kt,At=e=>{throw new kt(e)},V=(e,t,n)=>{e.forEach(e=>Ot[e]=t);function r(t){var r=n(t);r.length!==e.length&&At(`Mismatched type converter count`);for(var i=0;i{Dt.hasOwnProperty(e)?i[t]=Dt[e]:(a.push(e),Et.hasOwnProperty(e)||(Et[e]=[]),Et[e].push(()=>{i[t]=Dt[e],++o,o===a.length&&r(i)}))}),a.length===0&&r(i)},jt=e=>{var t=Ct[e];delete Ct[e];var n=t.elements,r=n.length,i=n.map(e=>e.getterReturnType).concat(n.map(e=>e.setterArgumentType)),a=t.rawConstructor,o=t.rawDestructor;V([e],i,e=>(n.forEach((t,n)=>{var i=e[n],a=t.getter,o=t.getterContext,s=e[n+r],c=t.setter,l=t.setterContext;t.read=e=>i.fromWireType(a(o,e)),t.write=(e,t)=>{var n=[];c(l,e,s.toWireType(n,t)),wt(n)}}),[{name:t.name,fromWireType:e=>{for(var t=Array(r),i=0;i{if(r!==i.length)throw TypeError(`Incorrect number of tuple elements for ${t.name}: expected=${r}, actual=${i.length}`);for(var s=a(),c=0;c{},Nt=()=>{for(var e=Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Pt=e},Pt,H=e=>{for(var t=``,n=e;w[n];)t+=Pt[w[n++]];return t},Ft,U=e=>{throw new Ft(e)};function It(e,t,n={}){var r=t.name;if(e||U(`type "${r}" must have a positive integer typeid pointer`),Dt.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;U(`Cannot register type '${r}' twice`)}if(Dt[e]=t,delete Ot[e],Et.hasOwnProperty(e)){var i=Et[e];delete Et[e],i.forEach(e=>e())}}function W(e,t,n={}){return It(e,t,n)}var G=8,Lt=(e,t,n,r)=>{t=H(t),W(e,{name:t,fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:r},argPackAdvance:G,readValueFromPointer:function(e){return this.fromWireType(w[e])},destructorFunction:null})},Rt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),zt=e=>{function t(e){return e.$$.ptrType.registeredClass.name}U(t(e)+` instance already deleted`)},Bt=!1,Vt=e=>{},Ht=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Ut=e=>{--e.count.value,e.count.value===0&&Ht(e)},Wt=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var r=Wt(e,t,n.baseClass);return r===null?null:n.downcast(r)},Gt={},Kt={},qt=(e,t)=>{for(t===void 0&&U(`ptr should not be undefined`);e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Jt=(e,t)=>(t=qt(e,t),Kt[t]),Yt=(e,t)=>((!t.ptrType||!t.ptr)&&At(`makeClassHandle requires ptr and ptrType`),!!t.smartPtrType!=!!t.smartPtr&&At(`Both smartPtrType and smartPtr must be specified`),t.count={value:1},Zt(Object.create(e,{$$:{value:t,writable:!0}})));function Xt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=Jt(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var r=n.clone();return this.destructor(e),r}function i(){return this.isSmartPointer?Yt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Yt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=Gt[this.registeredClass.getActualType(t)];if(!a)return i.call(this);var o=this.isConst?a.constPointerType:a.pointerType,s=Wt(t,this.registeredClass,o.registeredClass);return s===null?i.call(this):this.isSmartPointer?Yt(o.registeredClass.instancePrototype,{ptrType:o,ptr:s,smartPtrType:this,smartPtr:e}):Yt(o.registeredClass.instancePrototype,{ptrType:o,ptr:s})}var Zt=e=>typeof FinalizationRegistry>`u`?(Zt=e=>e,e):(Bt=new FinalizationRegistry(e=>{Ut(e.$$)}),Zt=e=>{var t=e.$$;if(t.smartPtr){var n={$$:t};Bt.register(e,n,e)}return e},Vt=e=>Bt.unregister(e),Zt(e)),Qt=[],$t=()=>{for(;Qt.length;){var e=Qt.pop();e.$$.deleteScheduled=!1,e.delete()}},en,tn=()=>{Object.assign(nn.prototype,{isAliasOf(e){if(!(this instanceof nn)||!(e instanceof nn))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var r=e.$$.ptrType.registeredClass,i=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;r.baseClass;)i=r.upcast(i),r=r.baseClass;return t===r&&n===i},clone(){if(this.$$.ptr||zt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Zt(Object.create(Object.getPrototypeOf(this),{$$:{value:Rt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||zt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&U(`Object already scheduled for deletion`),Vt(this),Ut(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||zt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&U(`Object already scheduled for deletion`),Qt.push(this),Qt.length===1&&en&&en($t),this.$$.deleteScheduled=!0,this}})};function nn(){}var rn=(e,t)=>Object.defineProperty(t,`name`,{value:e}),an=(e,t,n)=>{if(e[t].overloadTable===void 0){var r=e[t];e[t]=function(...r){return e[t].overloadTable.hasOwnProperty(r.length)||U(`Function '${n}' called with an invalid number of arguments (${r.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[r.length].apply(this,r)},e[t].overloadTable=[],e[t].overloadTable[r.argCount]=r}},on=(e,t,n)=>{r.hasOwnProperty(e)?((n===void 0||r[e].overloadTable!==void 0&&r[e].overloadTable[n]!==void 0)&&U(`Cannot register public name '${e}' twice`),an(r,e,e),r[e].overloadTable.hasOwnProperty(n)&&U(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),r[e].overloadTable[n]=t):(r[e]=t,r[e].argCount=n)},sn=48,cn=57,ln=e=>{e=e.replace(/[^a-zA-Z0-9_]/g,`$`);var t=e.charCodeAt(0);return t>=sn&&t<=cn?`_${e}`:e};function un(e,t,n,r,i,a,o,s){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=r,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var dn=(e,t,n)=>{for(;t!==n;)t.upcast||U(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function fn(e,t){if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),0;t.$$||U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass;return dn(t.$$.ptr,n,this.registeredClass)}function pn(e,t){var n;if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&U(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;if(n=dn(t.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&U(`Passing raw pointer to smart pointer is illegal`),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:U(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var i=t.clone();n=this.rawShare(n,X.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:U(`Unsupporting sharing policy`)}return n}function mn(e,t){if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),0;t.$$||U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&U(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass;return dn(t.$$.ptr,n,this.registeredClass)}var hn=()=>{Object.assign(gn.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor?.(e)},argPackAdvance:G,readValueFromPointer:Tt,fromWireType:Xt})};function gn(e,t,n,r,i,a,o,s,c,l,u){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=r,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=c,this.rawShare=l,this.rawDestructor=u,!i&&t.baseClass===void 0?r?(this.toWireType=fn,this.destructorFunction=null):(this.toWireType=mn,this.destructorFunction=null):this.toWireType=pn}var _n=(e,t,n)=>{r.hasOwnProperty(e)||At(`Replacing nonexistent public symbol`),r[e].overloadTable!==void 0&&n!==void 0?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)},vn=(e,t,n)=>{e=e.replace(/p/g,`i`);var i=r[`dynCall_`+e];return i(t,...n)},yn,K=e=>yn.get(e),bn=(e,t,n=[])=>e.includes(`j`)?vn(e,t,n):K(t)(...n),xn=(e,t)=>(...n)=>bn(e,t,n),q=(e,t)=>{e=H(e);function n(){return e.includes(`j`)?xn(e,t):K(t)}var r=n();return typeof r!=`function`&&U(`unknown function pointer with signature ${e}: ${t}`),r},Sn=(e,t)=>{var n=rn(t,function(e){this.name=t,this.message=e;var n=Error(e).stack;n!==void 0&&(this.stack=this.toString()+` +`+n.replace(/^Error(:[^\n]*)?\n/,``))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},Cn,wn=e=>{var t=xi(e),n=H(t);return Q(t),n},J=(e,t)=>{var n=[],r={};function i(e){if(!r[e]&&!Dt[e]){if(Ot[e]){Ot[e].forEach(i);return}n.push(e),r[e]=!0}}throw t.forEach(i),new Cn(`${e}: `+n.map(wn).join([`, `]))},Tn=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{u=H(u),a=q(i,a),s&&=q(o,s),l&&=q(c,l),f=q(d,f);var p=ln(u);on(p,function(){J(`Cannot construct ${u} due to unbound types`,[r])}),V([e,t,n],r?[r]:[],t=>{t=t[0];var n,i;r?(n=t.registeredClass,i=n.instancePrototype):i=nn.prototype;var o=rn(u,function(...e){if(Object.getPrototypeOf(this)!==c)throw new Ft(`Use 'new' to construct `+u);if(d.constructor_body===void 0)throw new Ft(u+` has no accessible constructor`);var t=d.constructor_body[e.length];if(t===void 0)throw new Ft(`Tried to invoke ctor of ${u} with invalid number of parameters (${e.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return t.apply(this,e)}),c=Object.create(i,{constructor:{value:o}});o.prototype=c;var d=new un(u,o,c,f,n,a,s,l);d.baseClass&&(d.baseClass.__derivedClasses??=[],d.baseClass.__derivedClasses.push(d));var m=new gn(u,d,!0,!1,!1),h=new gn(u+`*`,d,!1,!1,!1),g=new gn(u+` const*`,d,!1,!0,!1);return Gt[e]={pointerType:h,constPointerType:g},_n(p,o),[m,h,g]})};function En(e){for(var t=1;t{for(var n=[],r=0;r>2]);return n},jn=e=>{e=e.trim();let t=e.indexOf(`(`);return t===-1?e:e.substr(0,t)},Mn=(e,t,n,r,i,a,o,s,c)=>{var l=An(n,r);t=H(t),t=jn(t),a=q(i,a),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`;function i(){J(`Cannot call ${r} due to unbound types`,l)}t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]);var c=e.registeredClass.constructor;return c[t]===void 0?(i.argCount=n-1,c[t]=i):(an(c,t,r),c[t].overloadTable[n-1]=i),V([],l,i=>{var l=kn(r,[i[0],null].concat(i.slice(1)),null,a,o,s);if(c[t].overloadTable===void 0?(l.argCount=n-1,c[t]=l):c[t].overloadTable[n-1]=l,e.registeredClass.__derivedClasses)for(let n of e.registeredClass.__derivedClasses)n.constructor.hasOwnProperty(t)||(n.constructor[t]=l);return[]}),[]})},Nn=(e,t,n)=>(e instanceof Object||U(`${n} with invalid "this": ${e}`),e instanceof t.registeredClass.constructor||U(`${n} incompatible with "this" of type ${e.constructor.name}`),e.$$.ptr||U(`cannot call emscripten binding method ${n} on deleted object`),dn(e.$$.ptr,e.$$.ptrType.registeredClass,t.registeredClass)),Pn=(e,t,n,r,i,a,o,s)=>{t=H(t),a=q(i,a),V([],[e],e=>{e=e[0];var i=`${e.name}.${t}`,c={get(){J(`Cannot access ${i} due to unbound types`,[n])},enumerable:!0,configurable:!0};return s?c.set=()=>{J(`Cannot access ${i} due to unbound types`,[n])}:c.set=e=>{U(`${i} is a read-only property`)},Object.defineProperty(e.registeredClass.constructor,t,c),V([],[n],n=>{n=n[0];var i={get(){return n.fromWireType(a(r))},enumerable:!0};return s&&(s=q(o,s),i.set=e=>{var t=[];s(r,n.toWireType(t,e)),wt(t)}),Object.defineProperty(e.registeredClass.constructor,t,i),[]}),[]})},Fn=(e,t,n,r,i,a)=>{var o=An(t,n);i=q(r,i),V([],[e],e=>{e=e[0];var n=`constructor ${e.name}`;if(e.registeredClass.constructor_body===void 0&&(e.registeredClass.constructor_body=[]),e.registeredClass.constructor_body[t-1]!==void 0)throw new Ft(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{J(`Cannot construct ${e.name} due to unbound types`,o)},V([],o,r=>(r.splice(1,0,null),e.registeredClass.constructor_body[t-1]=kn(n,r,null,i,a),[])),[]})},In=(e,t,n,r,i,a,o,s,c,l)=>{var u=An(n,r);t=H(t),t=jn(t),a=q(i,a),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);function i(){J(`Cannot call ${r} due to unbound types`,u)}var l=e.registeredClass.instancePrototype,d=l[t];return d===void 0||d.overloadTable===void 0&&d.className!==e.name&&d.argCount===n-2?(i.argCount=n-2,i.className=e.name,l[t]=i):(an(l,t,r),l[t].overloadTable[n-2]=i),V([],u,i=>{var s=kn(r,i,e,a,o,c);return l[t].overloadTable===void 0?(s.argCount=n-2,l[t]=s):l[t].overloadTable[n-2]=s,[]}),[]})},Ln=(e,t,n,r,i,a,o,s,c,l)=>{t=H(t),i=q(r,i),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`,u={get(){J(`Cannot access ${r} due to unbound types`,[n,o])},enumerable:!0,configurable:!0};return c?u.set=()=>J(`Cannot access ${r} due to unbound types`,[n,o]):u.set=e=>U(r+` is a read-only property`),Object.defineProperty(e.registeredClass.instancePrototype,t,u),V([],c?[n,o]:[n],n=>{var o=n[0],u={get(){var t=Nn(this,e,r+` getter`);return o.fromWireType(i(a,t))},enumerable:!0};if(c){c=q(s,c);var d=n[1];u.set=function(t){var n=Nn(this,e,r+` setter`),i=[];c(l,n,d.toWireType(i,t)),wt(i)}}return Object.defineProperty(e.registeredClass.instancePrototype,t,u),[]}),[]})},Rn=(e,t,n)=>{e=H(e),V([],[t],t=>(t=t[0],r[e]=t.fromWireType(n),[]))},zn=[],Y=[],Bn=e=>{e>9&&--Y[e+1]===0&&(Y[e]=void 0,zn.push(e))},Vn=()=>Y.length/2-5-zn.length,Hn=()=>{Y.push(0,1,void 0,1,null,1,!0,1,!1,1),r.count_emval_handles=Vn},X={toValue:e=>(e||U(`Cannot use deleted val. handle = `+e),Y[e]),toHandle:e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let t=zn.pop()||Y.length;return Y[t]=e,Y[t+1]=1,t}}}},Un={name:`emscripten::val`,fromWireType:e=>{var t=X.toValue(e);return Bn(e),t},toWireType:(e,t)=>X.toHandle(t),argPackAdvance:G,readValueFromPointer:Tt,destructorFunction:null},Wn=e=>W(e,Un),Gn=(e,t,n)=>{switch(t){case 1:return n?function(e){return this.fromWireType(C[e])}:function(e){return this.fromWireType(w[e])};case 2:return n?function(e){return this.fromWireType(T[e>>1])}:function(e){return this.fromWireType(te[e>>1])};case 4:return n?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(D[e>>2])};default:throw TypeError(`invalid integer width (${t}): ${e}`)}},Kn=(e,t,n,r)=>{t=H(t);function i(){}i.values={},W(e,{name:t,constructor:i,fromWireType:function(e){return this.constructor.values[e]},toWireType:(e,t)=>t.value,argPackAdvance:G,readValueFromPointer:Gn(t,n,r),destructorFunction:null}),on(t,i)},qn=(e,t)=>{var n=Dt[e];return n===void 0&&U(`${t} has unknown type ${wn(e)}`),n},Jn=(e,t,n)=>{var r=qn(e,`enum`);t=H(t);var i=r.constructor,a=Object.create(r.constructor.prototype,{value:{value:n},constructor:{value:rn(`${r.name}_${t}`,function(){})}});i.values[n]=a,i[t]=a},Yn=e=>{if(e===null)return`null`;var t=typeof e;return t===`object`||t===`array`||t===`function`?e.toString():``+e},Xn=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(ne[e>>2])};case 8:return function(e){return this.fromWireType(re[e>>3])};default:throw TypeError(`invalid float width (${t}): ${e}`)}},Zn=(e,t,n)=>{t=H(t),W(e,{name:t,fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:G,readValueFromPointer:Xn(t,n),destructorFunction:null})},Qn=(e,t,n,r,i,a,o,s)=>{var c=An(t,n);e=H(e),e=jn(e),i=q(r,i),on(e,function(){J(`Cannot call ${e} due to unbound types`,c)},t-1),V([],c,n=>{var r=[n[0],null].concat(n.slice(1));return _n(e,kn(e,r,null,i,a,o),t-1),[]})},$n=(e,t,n)=>{switch(t){case 1:return n?e=>C[e]:e=>w[e];case 2:return n?e=>T[e>>1]:e=>te[e>>1];case 4:return n?e=>E[e>>2]:e=>D[e>>2];default:throw TypeError(`invalid integer width (${t}): ${e}`)}},er=(e,t,n,r,i)=>{t=H(t),i===-1&&(i=4294967295);var a=e=>e;if(r===0){var o=32-8*n;a=e=>e<>>o}var s=t.includes(`unsigned`);W(e,{name:t,fromWireType:a,toWireType:s?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:G,readValueFromPointer:$n(t,n,r!==0),destructorFunction:null})},tr=(e,t,n)=>{var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function i(e){var t=D[e>>2],n=D[e+4>>2];return new r(C.buffer,n,t)}n=H(n),W(e,{name:n,fromWireType:i,argPackAdvance:G,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},nr=(e,t,n,r,i,a,o,s,c,l,u,d)=>{n=H(n),a=q(i,a),s=q(o,s),l=q(c,l),d=q(u,d),V([e],[t],e=>(e=e[0],[new gn(n,e.registeredClass,!1,!1,!0,e,r,a,s,l,d)]))},rr=(e,t)=>{t=H(t);var n=!0;W(e,{name:t,fromWireType(e){var t=D[e>>2],r=e+4,i;if(n)for(var a=r,o=0;o<=t;++o){var s=r+o;if(o==t||w[s]==0){var c=s-a,l=Ie(a,c);i===void 0?i=l:(i+=`\0`,i+=l),a=s+1}}else{for(var u=Array(t),o=0;o>2]=r,n&&i)_t(t,o,r+1);else if(i)for(var s=0;s255&&(Q(o),U(`String has UTF-16 code units that do not fit in 8 bits`)),w[o+s]=c}else for(var s=0;s{for(var n=e,r=n>>1,i=r+t/2;!(r>=i)&&te[r];)++r;if(n=r<<1,n-e>32&&ir)return ir.decode(w.subarray(e,n));for(var a=``,o=0;!(o>=t/2);++o){var s=T[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},or=(e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,i=n>1]=o,t+=2}return T[t>>1]=0,t-r},sr=e=>e.length*2,cr=(e,t)=>{for(var n=0,r=``;!(n>=t/4);){var i=E[e+n*4>>2];if(i==0)break;if(++n,i>=65536){var a=i-65536;r+=String.fromCharCode(55296|a>>10,56320|a&1023)}else r+=String.fromCharCode(i)}return r},lr=(e,t,n)=>{if(n??=2147483647,n<4)return 0;for(var r=t,i=r+n-4,a=0;a=55296&&o<=57343){var s=e.charCodeAt(++a);o=65536+((o&1023)<<10)|s&1023}if(E[t>>2]=o,t+=4,t+4>i)break}return E[t>>2]=0,t-r},ur=e=>{for(var t=0,n=0;n=55296&&r<=57343&&++n,t+=4}return t},dr=(e,t,n)=>{n=H(n);var r,i,a,o;t===2?(r=ar,i=or,o=sr,a=e=>te[e>>1]):t===4&&(r=cr,i=lr,o=ur,a=e=>D[e>>2]),W(e,{name:n,fromWireType:e=>{for(var n=D[e>>2],i,o=e+4,s=0;s<=n;++s){var c=e+4+s*t;if(s==n||a(c)==0){var l=c-o,u=r(o,l);i===void 0?i=u:(i+=`\0`,i+=u),o=c+t}}return Q(e),i},toWireType:(e,r)=>{typeof r!=`string`&&U(`Cannot pass non-string to C++ string type ${n}`);var a=o(r),s=Si(4+a+t);return D[s>>2]=a/t,i(r,s+4,a+t),e!==null&&e.push(Q,s),s},argPackAdvance:G,readValueFromPointer:Tt,destructorFunction(e){Q(e)}})},fr=(e,t,n,r,i,a)=>{Ct[e]={name:H(t),rawConstructor:q(n,r),rawDestructor:q(i,a),elements:[]}},pr=(e,t,n,r,i,a,o,s,c)=>{Ct[e].elements.push({getterReturnType:t,getter:q(n,r),getterContext:i,setterArgumentType:a,setter:q(o,s),setterContext:c})},mr=(e,t)=>{t=H(t),W(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>void 0,toWireType:(e,t)=>void 0})},hr=(e,t,n)=>w.copyWithin(e,t,t+n),gr=0,_r=()=>{Ne=!1,gr=0},vr=(e,t,n)=>{var r=[],i=e.toWireType(r,n);return r.length&&(D[t>>2]=X.toHandle(r)),i},yr=(e,t,n)=>(e=X.toValue(e),t=qn(t,`emval::as`),vr(t,n,e)),br=[],xr=(e,t,n,r)=>(e=br[e],t=X.toValue(t),e(null,t,n,r)),Sr={},Cr=e=>{var t=Sr[e];return t===void 0?H(e):t},wr=(e,t,n,r,i)=>(e=br[e],t=X.toValue(t),n=Cr(n),e(t,t[n],r,i)),Tr=e=>{var t=br.length;return br.push(e),t},Er=(e,t)=>{for(var n=Array(e),r=0;r>2],`parameter `+r);return n},Dr=(e,t,n)=>{var r=Er(e,t),i=r.shift();e--;var a=`return function (obj, func, destructorsRef, args) { +`,o=0,s=[];n===0&&s.push(`obj`);for(var c=[`retType`],l=[i],u=0;ue.name).join(`, `)}) => ${i.name}>`,d))},Or=(e,t)=>(e=X.toValue(e),t=X.toValue(t),X.toHandle(e[t])),kr=e=>{e>9&&(Y[e+1]+=1)},Ar=()=>X.toHandle([]),jr=e=>{e=X.toValue(e);for(var t=Array(e.length),n=0;nX.toHandle(Cr(e)),Nr=()=>X.toHandle({}),Pr=e=>{wt(X.toValue(e)),Bn(e)},Fr=(e,t,n)=>{e=X.toValue(e),t=X.toValue(t),n=X.toValue(n),e[t]=n},Ir=(e,t)=>{e=qn(e,`_emval_take_value`);var n=e.readValueFromPointer(t);return X.toHandle(n)},Lr=e=>(e=X.toValue(e),X.toHandle(typeof e)),Rr={},zr=e=>{if(e instanceof je||e==`unwind`)return S;f(1,e)},Br=()=>Ne||gr>0,Vr=e=>{S=e,Br()||(r.onExit?.(e),ee=!0),f(e,new je(e))},Hr=(e,t)=>{S=e,Vr(e)},Ur=()=>{if(!Br())try{Hr(S)}catch(e){zr(e)}},Wr=e=>{if(!ee)try{e(),Ur()}catch(e){zr(e)}},Gr=()=>performance.now(),Kr=(e,t)=>(Rr[e]&&(clearTimeout(Rr[e].id),delete Rr[e]),t&&(Rr[e]={id:setTimeout(()=>{delete Rr[e],Wr(()=>Ci(e,Gr()))},t),timeout_ms:t}),0),qr=(e,t,n,r)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1),s=a.getTimezoneOffset(),c=o.getTimezoneOffset(),l=Math.max(s,c);D[e>>2]=l*60,E[t>>2]=Number(s!=c);var u=e=>{var t=e>=0?`-`:`+`,n=Math.abs(e);return`UTC${t}${String(Math.floor(n/60)).padStart(2,`0`)}${String(n%60).padStart(2,`0`)}`},d=u(s),f=u(c);c{Jr.length=0;for(var n;n=w[e++];){var r=n!=105;r&=n!=112,t+=r&&t%8?4:0,Jr.push(n==112?D[t>>2]:n==105?E[t>>2]:re[t>>3]),t+=r?8:4}return Jr},Xr=(e,t,n)=>{var r=Yr(t,n);return Ae[e](...r)},Zr=(e,t,n)=>Xr(e,t,n),Qr=()=>2147483648,$r=e=>{var t=(e-x.buffer.byteLength+65535)/65536|0;try{return x.grow(t),ie(),1}catch{}},ei=e=>{var t=w.length;e>>>=0;var n=Qr();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t+33554432/r;if($r(Math.min(n,st(Math.max(e,i),65536))))return!0}return!1},ti={},ni=()=>d||`./this.program`,ri=()=>{if(!ri.strings){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(typeof navigator==`object`&&navigator.languages&&navigator.languages[0]||`C`).replace(`-`,`_`)+`.UTF-8`,_:ni()};for(var t in ti)ti[t]===void 0?delete e[t]:e[t]=ti[t];var n=[];for(var t in e)n.push(`${t}=${e[t]}`);ri.strings=n}return ri.strings},ii=(e,t)=>{for(var n=0;n{var n=0;return ri().forEach((r,i)=>{var a=t+n;D[e+i*4>>2]=a,ii(r,a),n+=r.length+1}),0},oi=(e,t)=>{var n=ri();D[e>>2]=n.length;var r=0;return n.forEach(e=>r+=e.length+1),D[t>>2]=r,0};function si(e){try{var t=B.getStreamFromFD(e);return z.close(t),0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var ci=(e,t,n,r)=>{for(var i=0,a=0;a>2],s=D[t+4>>2];t+=8;var c=z.read(e,C,o,s,r);if(c<0)return-1;if(i+=c,c>2]=i,0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var ui=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+t*4294967296:NaN;function di(e,t,n,r,i){var a=ui(t,n);try{if(isNaN(a))return 61;var o=B.getStreamFromFD(e);return z.llseek(o,a,r),j=[o.position>>>0,(A=o.position,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[i>>2]=j[0],E[i+4>>2]=j[1],o.getdents&&a===0&&r===0&&(o.getdents=null),0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var fi=(e,t,n,r)=>{for(var i=0,a=0;a>2],s=D[t+4>>2];t+=8;var c=z.write(e,C,o,s,r);if(c<0)return-1;if(i+=c,c>2]=i,0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var mi=e=>e,hi=z.createPath,gi=e=>z.unlink(e),_i=z.createLazyFile,vi=z.createDevice;z.createPreloadedFile=pt,z.staticInit(),r.FS_createPath=z.createPath,r.FS_createDataFile=z.createDataFile,r.FS_createPreloadedFile=z.createPreloadedFile,r.FS_unlink=z.unlink,r.FS_createLazyFile=z.createLazyFile,r.FS_createDevice=z.createDevice,R.doesNotExistError=new z.ErrnoError(44),R.doesNotExistError.stack=``,kt=r.InternalError=class extends Error{constructor(e){super(e),this.name=`InternalError`}},Nt(),Ft=r.BindingError=class extends Error{constructor(e){super(e),this.name=`BindingError`}},tn(),hn(),Cn=r.UnboundTypeError=Sn(Error,`UnboundTypeError`),Hn();var yi={y:P,n:ze,x:Be,a:Ge,f:Ke,Ma:qe,ba:Je,L:I,wa:Ye,d:He,ea:gt,Aa:vt,Fa:yt,fa:bt,za:xt,ua:St,Pa:jt,Xa:Mt,ya:Lt,s:Tn,v:Mn,p:Pn,w:Fn,h:In,F:Ln,R:Rn,Ua:Wn,T:Kn,I:Jn,oa:Zn,B:Qn,O:er,H:tr,q:nr,Za:rr,ca:dr,ma:fr,la:pr,Ha:mr,Ga:hr,sa:_r,X:yr,Ra:xr,ka:wr,Sa:Bn,aa:Dr,Oa:Or,na:kr,D:Ar,Na:jr,Y:Mr,U:Nr,Qa:Pr,Ta:Fr,N:Ir,ja:Lr,ta:Kr,va:qr,$:Zr,xa:ei,Ba:ai,Ca:oi,V:si,Ea:li,Wa:di,Da:pi,Ja:na,S:ia,pa:ha,ia:ta,La:Zi,qa:ma,ha:la,u:Ki,g:Li,Ka:$i,K:Qi,ga:ua,W:aa,b:Vi,i:Ui,o:Bi,da:ga,t:Ji,J:ea,E:sa,G:da,_:_a,Va:ba,l:Yi,j:Gi,Q:Xi,e:zi,Ya:ya,c:Ri,k:Hi,Ia:pa,m:Wi,r:qi,z:oa,A:ca,M:fa,P:ra,Z:va,C:mi,ra:Vr},Z;ke();var bi=()=>(bi=Z.$a)(),xi=e=>(xi=Z.ab)(e),Si=e=>(Si=Z.bb)(e),Q=e=>(Q=Z.db)(e),Ci=(e,t)=>(Ci=Z.eb)(e,t),$=(e,t)=>($=Z.fb)(e,t),wi=e=>(wi=Z.gb)(e),Ti=e=>(Ti=Z.hb)(e),Ei=()=>(Ei=Z.ib)(),Di=e=>(Di=Z.jb)(e),Oi=e=>(Oi=Z.kb)(e),ki=(e,t,n)=>(ki=Z.lb)(e,t,n),Ai=e=>(Ai=Z.mb)(e),ji=r.dynCall_jiji=(e,t,n,i,a)=>(ji=r.dynCall_jiji=Z.nb)(e,t,n,i,a),Mi=r.dynCall_iij=(e,t,n,i)=>(Mi=r.dynCall_iij=Z.ob)(e,t,n,i),Ni=r.dynCall_viijii=(e,t,n,i,a,o,s)=>(Ni=r.dynCall_viijii=Z.pb)(e,t,n,i,a,o,s),Pi=r.dynCall_iiiiij=(e,t,n,i,a,o,s)=>(Pi=r.dynCall_iiiiij=Z.qb)(e,t,n,i,a,o,s),Fi=r.dynCall_iiiiijj=(e,t,n,i,a,o,s,c,l)=>(Fi=r.dynCall_iiiiijj=Z.rb)(e,t,n,i,a,o,s,c,l),Ii=r.dynCall_iiiiiijj=(e,t,n,i,a,o,s,c,l,u)=>(Ii=r.dynCall_iiiiiijj=Z.sb)(e,t,n,i,a,o,s,c,l,u);function Li(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function Ri(e,t,n,r){var i=N();try{K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function zi(e,t,n){var r=N();try{K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Bi(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Vi(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Hi(e,t,n,r,i){var a=N();try{K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Ui(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function Wi(e,t,n,r,i,a){var o=N();try{K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function Gi(e,t){var n=N();try{K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function Ki(e){var t=N();try{return K(e)()}catch(e){if(M(t),e!==e+0)throw e;$(1,0)}}function qi(e,t,n,r,i,a,o){var s=N();try{K(e)(t,n,r,i,a,o)}catch(e){if(M(s),e!==e+0)throw e;$(1,0)}}function Ji(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function Yi(e){var t=N();try{K(e)()}catch(e){if(M(t),e!==e+0)throw e;$(1,0)}}function Xi(e,t,n){var r=N();try{K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Zi(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Qi(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function $i(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function ea(e,t,n,r,i,a,o){var s=N();try{return K(e)(t,n,r,i,a,o)}catch(e){if(M(s),e!==e+0)throw e;$(1,0)}}function ta(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function na(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function ra(e,t,n,r,i,a,o,s,c,l,u){var d=N();try{K(e)(t,n,r,i,a,o,s,c,l,u)}catch(e){if(M(d),e!==e+0)throw e;$(1,0)}}function ia(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function aa(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function oa(e,t,n,r,i,a,o,s){var c=N();try{K(e)(t,n,r,i,a,o,s)}catch(e){if(M(c),e!==e+0)throw e;$(1,0)}}function sa(e,t,n,r,i,a,o,s){var c=N();try{return K(e)(t,n,r,i,a,o,s)}catch(e){if(M(c),e!==e+0)throw e;$(1,0)}}function ca(e,t,n,r,i,a,o,s,c){var l=N();try{K(e)(t,n,r,i,a,o,s,c)}catch(e){if(M(l),e!==e+0)throw e;$(1,0)}}function la(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function ua(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function da(e,t,n,r,i,a,o,s,c){var l=N();try{return K(e)(t,n,r,i,a,o,s,c)}catch(e){if(M(l),e!==e+0)throw e;$(1,0)}}function fa(e,t,n,r,i,a,o,s,c,l){var u=N();try{K(e)(t,n,r,i,a,o,s,c,l)}catch(e){if(M(u),e!==e+0)throw e;$(1,0)}}function pa(e,t,n,r,i,a,o,s,c,l,u){var d=N();try{K(e)(t,n,r,i,a,o,s,c,l,u)}catch(e){if(M(d),e!==e+0)throw e;$(1,0)}}function ma(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function ha(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function ga(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function _a(e,t,n,r,i,a,o,s,c,l,u,d){var f=N();try{return K(e)(t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(M(f),e!==e+0)throw e;$(1,0)}}function va(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){var g=N();try{K(e)(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)}catch(e){if(M(g),e!==e+0)throw e;$(1,0)}}function ya(e,t,n,r){var i=N();try{K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function ba(e,t,n,r){var i=N();try{return Mi(e,t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}r.addRunDependency=ge,r.removeRunDependency=_e,r.FS_createPreloadedFile=pt,r.FS_unlink=gi,r.FS_createPath=hi,r.FS_createDevice=vi,r.FS_createDataFile=ut,r.FS_createLazyFile=_i;var xa;me=function e(){xa||Sa(),xa||(me=e)};function Sa(){if(k>0||(ce(),k>0))return;function e(){xa||(xa=!0,r.calledRun=!0,!ee&&(le(),i(r),r.onRuntimeInitialized?.(),ue()))}r.setStatus?(r.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>r.setStatus(``),1),e()},1)):e()}if(r.preInit)for(typeof r.preInit==`function`&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();Sa();var Ca=[];function wa(e){Ca.push(e)}return r.onRuntimeInitialized=function(){for(var e of Ca)e()},(function(){var e,t,n,i,a=`/`,o,s,c=`;`,l=0,u=99999;function d(e){var t={};return e.filter(function(e){return t.hasOwnProperty(e)?!1:t[e]=!0})}function f(e,t,n=i){var r=t.endsWith(n),a=e.startsWith(n);return r||a?r&&a?t.substring(0,t.length-1)+e:t+e:t+n+e}function p(e,t){var n=0;function r(){var o=f(e,t[n++]);return fetch(o).then(function(o){if(o.status===200)return o.text().then(function(e){var t=new URL(o.url),n=t.pathname.substring(1);return n=n.replace(new RegExp(i,`g`),a),{data:e,filePath:n,fullPath:t.origin+t.pathname}});if(n/g),n=[];for(var r of t)n.push(r[1]);return n}function y(e,t){var n;if(o)n=p(e,t);else if(s)n=m(e,t);else throw Error(`Unknown environment!`);return n}function b(e,t,n=!1){n?(t.files||=[],t.files.push(e)):(t.folders||=[],t.folders.splice(0,0,e))}function x(e,t,n,r,i=!0){for(var o=i?e.substring(1,e.lastIndexOf(a)).split(a):e.substring(r.length).split(a),s=r,c=1;c-1?r+1:0);var a=document.createElement(`a`);a.setAttribute(`href`,`data:text/plain;charset=utf-8,`+encodeURIComponent(n)),a.setAttribute(`download`,t),a.style.display=`none`,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}wa(function(){o=typeof window==`object`,s=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`,o&&(i=`/`),s&&(e=de(),t=de(),n=de(),i=t.sep);function d(e,t,n,o,s=[],c=``){var d=`/readFromXml`+ l++%u,p=h(n);try{z.mkdir(d)}catch{throw Error(`Failed to create folder in WASM FS.`)}var m=[];(!o||o.readXIncludes)&&(m=v(t));var b={files:[],folders:[]},S=ee(d),C=S+`/ChosenToHopefullyNotClashWithAnyOtherFile123`;if(c){var w=i===`\\`?`\\\\`:i;C=c.replace(new RegExp(w,`g`),a),C=f(C,d,a),x(S,null,b,d,!1)}x(C,t,b,d);function T(e,t,n){var r=[Promise.resolve()];for(var o of t){var s=e.slice(),c=n.slice(),l=y(o,c).then(function(e){if(s.includes(e.fullPath))throw Error(`Cycle detected! +`+s.join(` +-> `)+` +-> `+e.fullPath);s.push(e.fullPath);var t=e.fullPath.lastIndexOf(i),n=e.fullPath.substring(0,t>-1?t:0);c.includes(n)||c.splice(0,0,n);var r=v(e.data),o=f(e.filePath,d,a);return b.files.includes(o)||x(o,e.data,b,d),T(s,r,c)});r.push(l)}return Promise.all(r)}return T(s,m,p).then(function(){var t=_(n,d);z.chdir(S);try{var i=r.getEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR);if(i){var a=g(i,d);r.setEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR,a)}r._readFromXmlFile(e,C,t,o),i&&r.setEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR,i)}catch(e){throw Error(`Failed to read MaterialX files from WASM FS: `+r.getExceptionMessage(e))}try{for(var s of b.files)z.unlink(s);z.chdir(`/`);for(var c of b.folders)z.rmdir(c);z.rmdir(d)}catch{throw Error(`Failed to delete temporary files from WASM FS.`)}})}r.readFromXmlString=function(e,t,n=``,r=null){if(arguments.length<2||arguments.length>4)throw Error(`Function readFromXmlString called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 4!`);return d(e,t,n,r)},r.readFromXmlFile=function(e,t,n=``,r=null){if(arguments.length<2||arguments.length>4)throw Error(`Function readFromXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 4!`);return y(t,h(n)).then(function(t){var a=[t.fullPath],o=t.fullPath.lastIndexOf(i),s=t.fullPath.substring(0,o>-1?o:0);return n=n.concat(c,s),d(e,t.data,n,r,a,t.filePath)})},r.writeToXmlFile=function(e,t,n=null){if(arguments.length<2||arguments.length>3)throw Error(`Function writeToXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 3!`);S(t,r.writeToXmlString(e,n))},r.exportToXmlFile=function(e,t,n=null){if(arguments.length<2||arguments.length>3)throw Error(`Function exportToXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 3!`);S(t,r.exportToXmlString(e,n))}})})(),n=o,n})})();typeof exports==`object`&&typeof module==`object`?(module.exports=fe,module.exports.default=fe):typeof define==`function`&&define.amd&&define([],()=>fe);function pe(e){let t=new URLSearchParams(window.location.search).get(e);return t==null||t===`0`||t===`false`?!1:t===``?!0:t}var O=pe(`debugmaterialx`),k=O===`update`,me=0;function he(){return me}var ge=0;function _e(){return ge}var ve=window.performance||window.webkitPerformance||window.mozPerformance;function ye(){me=ve.now()/1e3,ge++,window.requestAnimationFrame(ye)}window.requestAnimationFrame(ye);async function be(){return typeof requestIdleCallback<`u`?new Promise(e=>requestIdleCallback(e)):(console.debug(`[MaterialX] Can not wait for network idle, using fallback`),new Promise(e=>setTimeout(e,100)))}function xe(){return window.location.hostname===`localhost`||/^\d{1,3}(\.\d{1,3}){3}$/.test(window.location.hostname)}var Se=pe(`debugmaterialx`),Ce=new v;Ce.needsUpdate=!0,Ce.image=new Image,Ce.image.src=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAANQTFRFr6+vGqg52AAAAAxJREFUeJxjZGBEgQAAWAAJLpjsTQAAAABJRU5ErkJggg==`;function we(e,t,n=0,r=1024,i=512,l){let f;f=l||(t.image?t.image.height/4:256);let p=Math.log2(f)-2,m=f,h=3*Math.max(2**p,112),_=new a(r,i,{format:u,type:w,minFilter:c,magFilter:o,generateMipmaps:!0,wrapS:s,anisotropy:e.capabilities.getMaxAnisotropy()}),v=new D(2,2),y=new ee(-1,1,1,-1,0,1),b=new E({defines:{USE_ENVMAP:``,ENVMAP_TYPE_CUBE_UV:``,CUBEUV_TEXEL_WIDTH:1/h,CUBEUV_TEXEL_HEIGHT:1/m,CUBEUV_MAX_MIP:p+0+`.0`},uniforms:{envMap:{value:t},roughness:{value:n}},vertexShader:` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = vec4(position.xy, 0.0, 1.0); + } + `,fragmentShader:` + uniform sampler2D envMap; + uniform float roughness; + varying vec2 vUv; + + #include + #include + + void main() { + // Convert UV coordinates to equirectangular direction + vec2 uv = vUv; + + // Map UV (0,1) to spherical coordinates + // Longitude: -π to π, Latitude: 0 to π + float phi = uv.x * 2.0 * PI - PI; // Longitude (-π to π) + float theta = uv.y * PI; // Latitude (0 to π) + // Rotate 90° around Y + phi -= PI / 2.0; // Adjust to match Three.js convention + + // Convert spherical to cartesian coordinates + vec3 direction = vec3( + sin(theta) * cos(phi), // x + cos(theta), // y + sin(theta) * sin(phi) // z + ); + + // Sample the PMREM cube texture using the direction and roughness + #ifdef ENVMAP_TYPE_CUBE_UV + vec4 envColor = textureCubeUV(envMap, direction, roughness); + #else + vec4 envColor = vec4(1.0, 0.0, 1.0, 1.0); // Magenta fallback + #endif + + gl_FragColor = vec4(envColor.rgb, 1.0); + } + `}),x=new d,S=new g(v,b);x.add(S);let C=e.getRenderTarget(),T=e.autoClear,te=e.xr.enabled,ne=e.shadowMap.enabled;_.texture.generateMipmaps=!0;try{e.xr.enabled=!1,e.shadowMap.enabled=!1,e.autoClear=!0,e.setRenderTarget(_),e.clear(),e.render(x,y)}finally{e.setRenderTarget(C),e.autoClear=T,e.xr.enabled=te,e.shadowMap.enabled=ne,v.dispose(),b.dispose(),x.remove(S)}return _.texture.name=`PMREM_Equirectangular_Texture_`+n.toFixed(2),_.texture.mapping=303,Se&&console.log(`[MaterialX] PMREM to Equirect Render Target:`,{width:_.width,height:_.height,mipmaps:_.texture.mipmaps?.length,roughness:n}),_}var Te=`_`,Ee=Te+`uaddressmode`,De=Te+`vaddressmode`,Oe=Te+`filtertype`,ke=`/`;function A(e,t){let n;if(e)n=[...e.data()];else{n=[];for(let e=0;e{e?s.value=e:console.warn(`[MaterialX] Failed to load texture ${i} '${c}'`)}):s.value=u;else{O&&console.log(`[MaterialX] Load texture:`,c),i.toLowerCase().includes(`normal`)?s.value=je:s.value=Ae;let n=s.value,o=a.getTexture(c)?.then(t=>(t&&(t=t.clone(),t.colorSpace=r,Fe(t,i,e)),t)).catch(e=>(console.error(`[MaterialX] Failed to load texture ${i} '${c}'`,e),n));t&&Ne(l,o),o?.then(e=>{t&&e&&Ne(l,e),e?s.value=e:console.warn(`[MaterialX] Failed to load texture ${i} '${c}'`)})}}break;case`samplerCube`:case`string`:case`surfaceshader`:case`displacementshader`:case`volumeshader`:case`lightshader`:break;default:let c=t+`:`+i;N.has(c)||(N.set(c,!0),(O||xe())&&console.warn(`MaterialX: Unsupported uniform '${i}': ${t}`));break}return s}var N=new Map;function Pe(e){let t;switch(e){case 1:t=l;break;case 2:t=s;break;case 3:t=_;break;default:t=s;break}return t}function Fe(e,t,n,r=!0){let i=t.lastIndexOf(Te),a=t.substring(0,i)||t;n.find(a+Ee)&&(e.wrapS=Pe(n.find(a+Ee).getValue().getData())),n.find(a+De)&&(e.wrapT=Pe(n.find(a+De).getValue().getData()));let s=n.find(a+Oe)?n.get(a+Oe).value:-1,l=r?c:o;s===0&&(l=r?T:C),e.minFilter=l}function Ie(e){let t=[];for(let n of e.getNodes())n.getType()===`lightshader`&&t.push(n);return t}var P={};function Le(){return{directional:P.ND_directional_light||1,point:P.ND_point_light||2,spot:P.ND_spot_light||3}}async function Re(e,t){P={};let n=t.getOptions().hwMaxActiveLightSources;e.HwShaderGenerator.unbindLightShaders(t);let r=1,i=e.createDocument();await e.readFromXmlString(i,` + + + + + + + + +`,``);let a=e.createDocument(),o=e.loadStandardLibraries(t);a.setDataLibrary(o),a.importLibrary(i);let s=Ie(a);O&&console.log(`Default lights in MaterialX document`,s),t.getOptions().hwMaxActiveLightSources=n;for(let n of s){let i=n.getNodeDef();if(O&&console.log(`Default light node definition`,i),!i)continue;let a=i.getName();O&&console.log(`Registering default light`,{lightName:a,lightDef:i}),P[a]||(O&&console.log(`Bind light shader for node`,{lightName:a,lightId:r,lightDef:i}),P[a]=r,e.HwShaderGenerator.bindLightShader(i,r++,t))}O&&console.log(`Light types bound in MaterialX context`,P)}var ze={},F=new n(0,0,0),Be=new n(0,0,-1),Ve=new t(0,0,0),He=Object.freeze({type:0,position:F,direction:Be,color:Ve,intensity:0,decay_rate:2,inner_angle:0,outer_angle:0});function Ue(e){switch(e){case`PointLight`:return`ND_point_light`;case`DirectionalLight`:return`ND_directional_light`;case`SpotLight`:return`ND_spot_light`;default:return ze[e]||(ze[e]=!0,console.warn(`MaterialX: Unsupported light type: `+e)),null}}function We(e,t){let r=[],i=t.getOptions().hwMaxActiveLightSources;for(let t of e){if(!t?.isLight)continue;let e=Ue(t.type);if(!e)continue;P[e]||O&&console.error(`MaterialX: Light type not registered in context. Make sure to register light types before using them.`,e);let i=t.getWorldPosition(new n),a,o=t.isDirectionalLight||t.isSpotLight?t:null;if(o)a=o.target.getWorldPosition(new n).sub(i).normalize();else{let e=t.getWorldQuaternion(new ne);a=new n(0,0,-1).applyQuaternion(e)}let s=t.angle,c=s*(1-t.penumbra),l=Math.cos(c),u=Math.cos(s);r.push({type:P[e],position:i.clone(),direction:a.clone(),color:t.color.clone(),intensity:t.intensity*(t.isPointLight||t.isSpotLight?683/3.1415:1),decay_rate:2,inner_angle:l,outer_angle:u})}let a=r.length;for(;r.length=0.160.0`},scripts:{test:`node --import=./tests/unit/register-json-loader.js --test tests/unit/**/*.test.js`},devDependencies:{"@needle-tools/engine":`4.x`,"@types/three":`0.169.0`,dotenv:`^17.2.4`,jsdom:`^29.0.1`,three:`npm:@needle-tools/three@^0.169.5`},files:[`index.js`,`index.d.ts`,`needle.js`,`needle.d.ts`,`src/`,`bin/`,`codegen/`,`README.md`,`CHANGELOG.md`,`package.needle.json`],publishConfig:{access:`public`,registry:`https://registry.npmjs.org/`},keywords:[`needle`,`materialx`,`material`,`shader`,`threejs`,`three.js`,`webgl`,`webgpu`,`mtlx`,`rendering`,`gltf`,`pbr`,`3d`,`wasm`]}.version;async function Je(e){if(e===`immediately`)return Ye();if(e===`network_idle`)return be().then(Ye)}var I=new class{materialXModule=null;materialXGenerator=null;materialXGenContext=null;materialXStdLib=null;materialXInitPromise=null};async function Ye(){return I.materialXInitPromise?I.materialXInitPromise:I.materialXInitPromise=(async()=>{if(!I.materialXModule){O&&console.log(`[MaterialX v${qe}] Initializing WASM module...`);try{let e=`https://cdn.needle.tools/static/materialx/1.6.0/`,t,n=globalThis.NEEDLE_MATERIALX_LOCATION;t=n===`package`||n===`bin/`||n===`./bin/`||n===`../bin/`?await Promise.all([se(()=>import(`./JsMaterialXCore.DGnKx6GJ.js`).then(e=>e.default||e),[],import.meta.url),se(()=>import(`./JsMaterialXGenShader.DFP9U7Gu.js`).then(e=>e.default||e),[],import.meta.url),se(()=>import(`./JsMaterialXGenShader.data.vJnq-SJK.js`).then(e=>e.default||e),[],import.meta.url)]):n?[n+`JsMaterialXCore.wasm`,n+`JsMaterialXGenShader.wasm`,n+`JsMaterialXGenShader.data.txt`]:[e+`JsMaterialXCore.wasm`,e+`JsMaterialXGenShader.wasm`,e+`JsMaterialXGenShader.data.txt`];let[r,i,a]=t,o=await fe({locateFile:(e,t)=>(O&&console.debug(`[MaterialX] locateFile called:`,{path:e,scriptDirectory:t}),e.includes(`JsMaterialXCore.wasm`)?r:e.includes(`JsMaterialXGenShader.wasm`)?i:e.includes(`JsMaterialXGenShader.data`)?a:t+e)});O&&console.log(`[MaterialX] module loaded`,o),I.materialXModule=o,I.materialXGenerator=o.EsslShaderGenerator.create(),I.materialXGenContext=new o.GenContext(I.materialXGenerator);let s=o.createDocument();I.materialXStdLib=o.loadStandardLibraries(I.materialXGenContext),s.setDataLibrary(I.materialXStdLib),I.materialXGenContext.getOptions().shaderInterfaceType=I.materialXModule.ShaderInterfaceType.SHADER_INTERFACE_COMPLETE,I.materialXGenContext.getOptions().hwSpecularEnvironmentMethod=I.materialXModule.HwSpecularEnvironmentMethod.SPECULAR_ENVIRONMENT_FIS,I.materialXGenContext.getOptions().hwSrgbEncodeOutput=!1,I.materialXGenContext.getOptions().hwMaxActiveLightSources=4,await Re(I.materialXModule,I.materialXGenContext),O&&console.log(`[MaterialX v${qe}] Generator initialized successfully`)}catch(e){throw console.error(`[MaterialX v${qe}] Failed to load MaterialX module:`,e),e}}})()}var Xe=class e{static get(e){return this.getEnvironment(e)}static _environments=new WeakMap;static getEnvironment(t){if(this._environments.has(t))return this._environments.get(t);let n=new e(t);return this._environments.set(t,n),n}_lights=[];_lightData=null;_lightCount=0;_initializePromise=null;_isInitialized=!1;_lastUpdateFrame=-1;constructor(e){this._scene=e,O&&console.log(`[MaterialX] Environment created`)}async initialize(e){return this._initializePromise||=this._initialize(e),this._initializePromise}update(e,t,n){if(!this._initializePromise){this.initialize(n);return}if(this._isInitialized&&this._lastUpdateFrame!==e&&(this._lastUpdateFrame=e,this.updateLighting(!1),O&&!this._debug)){let e=this._getTextures(t.environment);this._debug=!0;let n=new f;n.side=2;let r=n.clone();r.map=e.radianceTexture;let i=new D(1,1,1,1),a=new g(i,r),o=n.clone();o.map=e.irradianceTexture;let s=new g(i,o);t.add(a),t.add(s),a.name=`MaterialXRadianceCube`,a.position.set(.8,1,.01),a.scale.set(1.5,1,1),s.name=`MaterialXIrradianceCube`,s.position.set(-.8,1,-.01),s.scale.set(1.5,.98,1),console.log(`[MaterialX] environment initialized from Needle context`,{textures:e,radianceCube:a,irradianceCube:s})}}reset(){O&&console.log(`[MaterialX] Resetting environment`),this._initializePromise=null,this._isInitialized=!1,this._lastUpdateFrame=-1,this._lights=[],this._lightData=null,this._lightCount=0,this._pmremGenerator?.dispose(),this._pmremGenerator=null,this._renderer=null;for(let e of this._texturesCache.values())e.radianceTexture?.dispose(),e.irradianceTexture?.dispose();this._texturesCache.clear()}get lights(){return this._lights}get lightData(){return this._lightData}get lightCount(){return this._lightCount||0}getTextures(e){if(e.envMap)return this._getTextures(e.envMap);let t=this._scene.environment||this._scene.background;return t instanceof v?this._getTextures(t):this._getTextures(null)}_pmremGenerator=null;_renderer=null;_texturesCache=new Map;async _initialize(e){return this._isInitialized=!1,this._pmremGenerator=new y(e),this._renderer=e,this.updateLighting(!0),this._isInitialized=!0,!0}_getTextures(e){e||=Ce;let t=this._texturesCache.get(e||null);if(t)return t;if(this._scene&&this._pmremGenerator&&this._renderer&&e){O&&console.log(`[MaterialX] Generating environment textures`,e.name);let n=this._pmremGenerator.fromEquirectangular(e),r=we(this._renderer,n.texture,0,1024,512,n.height),i=we(this._renderer,n.texture,1,32,16,n.height);n.dispose(),t={radianceTexture:r.texture,irradianceTexture:i.texture}}else t={radianceTexture:null,irradianceTexture:null};return this._texturesCache.set(e||null,t),t}updateLighting=(e=!1)=>{if(this._scene){if(e){let e=[];this._scene.traverse(t=>{t.isLight&&t.visible&&e.push(t)}),e.sort((e,t)=>!!t.castShadow-+!!e.castShadow),this._lights=e}if(I.materialXGenContext){let{lightData:e,lightCount:t}=We(this._lights,I.materialXGenContext);this._lightData=e,this._lightCount=t}}};refreshLights(){this.updateLighting(!0)}},Ze=new h,L=class extends E{shaderName=null;copy(e){return super.copy(e),this.shaderName=e.shaderName,this._context=e._context,this._shader=e._shader,this._needsTangents=e._needsTangents,this.uniforms=te(e.uniforms),this.uniformsGroups=S(e.uniformsGroups),this.envMapIntensity=e.envMapIntensity,this.envMap=e.envMap,Ke(this,this._shader.getStage(`pixel`)),Ke(this,this._shader.getStage(`vertex`)),this.needsUpdate=!0,this}_context=null;_shader=null;_needsTangents=!1;constructor(e){let t,r=``,i=``,a={};if(e){r=e.shader.getSourceCode(`vertex`),i=e.shader.getSourceCode(`pixel`),r=r.replace(/^#version.*$/gm,``).trim(),i=i.replace(/^#version.*$/gm,``).trim(),r=r.replace(/\bi_position\b/g,`position`),r=r.replace(/\bi_normal\b/g,`normal`),r=r.replace(/\bi_texcoord_0\b/g,`uv`),r=r.replace(/\bi_texcoord_1\b/g,`uv1`),r=r.replace(/\bi_texcoord_2\b/g,`uv2`),r=r.replace(/\bi_texcoord_3\b/g,`uv3`),r=r.replace(/\bi_tangent\b/g,`tangent`),r=r.replace(/\bi_color_0\b/g,`color`);let n=e.parameters?.precision||`highp`;r=r.replace(/precision mediump float;/g,`precision ${n} float;`),r=r.replace(/#define M_FLOAT_EPS 1e-8/g,n===`highp`?`#define M_FLOAT_EPS 1e-8`:`#define M_FLOAT_EPS 1e-3`),i=i.replace(/precision mediump float;/g,`precision ${n} float;`),i=i.replace(/#define M_FLOAT_EPS 1e-8/g,n===`highp`?`#define M_FLOAT_EPS 1e-8`:`#define M_FLOAT_EPS 1e-3`),i=i.replace(/\bi_position\b/g,`position`),i=i.replace(/\bi_normal\b/g,`normal`),i=i.replace(/\bi_texcoord_0\b/g,`uv`),i=i.replace(/\bi_texcoord_1\b/g,`uv1`),i=i.replace(/\bi_texcoord_2\b/g,`uv2`),i=i.replace(/\bi_texcoord_3\b/g,`uv3`),i=i.replace(/\bi_tangent\b/g,`tangent`),i=i.replace(/\bi_color_0\b/g,`color`),i=i.replace(/\bu_envLightIntensity\b/g,`envMapIntensity`),r.includes(`in vec2 uv;`),r.includes(`in vec2 uv1;`),r.includes(`in vec2 uv2;`),r.includes(`in vec2 uv3;`),r=r.replace(/in\s+vec3\s+position;/g,``),r=r.replace(/in\s+vec3\s+normal;/g,``),r=r.replace(/in\s+vec2\s+uv;/g,``),r=r.replace(/in\s+vec3\s+uv;/g,``);var o=r.includes(`in vec3 uv1;`);r=r.replace(/in\s+vec3\s+uv1;/g,``);var s=r.includes(`in vec3 uv2;`);r=r.replace(/in\s+vec3\s+uv2;/g,``);var c=r.includes(`in vec3 uv3;`);r=r.replace(/in\s+vec3\s+uv3;/g,``);var l=r.includes(`in vec4 tangent;`);r=r.replace(/in\s+vec4\s+tangent;/g,``);var u=r.includes(`in vec4 color;`);r=r.replace(/in\s+vec4\s+color;/g,``),u&&(r=r.replace(/\bvec4 (\w+) = color;/g,`vec4 $1 = vec4(color, 1.0);`),r=r.replace(/(\w+) = color;/g,(e,t)=>e.includes(`vec4`)?e:RegExp(`\\bvec4\\s+${t}\\b`).test(r)?`${t} = vec4(color, 1.0);`:e));function d(e,t){return e=e.replace(RegExp(`vec3\\(${t}\\.x,\\s*1\\.0 - ${t}\\.y,\\s*${t}\\.z\\)`,`g`),`vec3(${t}.x, 1.0 - ${t}.y, 0.0)`),e=e.replace(RegExp(`\\bvec3 (\\w+) = ${t};`,`g`),`vec3 $1 = vec3(${t}, 0.0);`),e=e.replace(RegExp(`(\\w+) = ${t};`,`g`),(n,r)=>n.includes(`vec3`)?n:RegExp(`\\bvec3\\s+${r}\\b`).test(e)?`${r} = vec3(${t}, 0.0);`:n),e}if(r=d(r,`uv`),r=d(r,`uv1`),r=d(r,`uv2`),r=d(r,`uv3`),i=i.replace(/result\.direction\s*=\s*light\.position\s*-\s*position;/g,`result.direction = (light.position - position) * 10.0 / 1.0;`),i=i.replace(/out\s+vec4\s+out1;/,`layout(location = 0) out vec4 pc_fragColor; +#define gl_FragColor pc_fragColor`),i=i.replace(/^\s*out1\s*=\s*vec4\((.*)\);/gm,` + gl_FragColor = vec4($1); + #include + #include `),a={},o&&(a.USE_UV1=``),s&&(a.USE_UV2=``),c&&(a.USE_UV3=``),l&&(a.USE_TANGENT=``),u&&(a.USE_COLOR=``),r.includes(`u_worldInverseTransposeMatrix`)){r=r.replace(/void\s+main\s*\(\s*\)\s*\{/,`#include +#include +void main() {`),r=r.replace(/(\n\s*)\}(\s*)$/,`$1 // Three.js shadow support +$1 vec4 worldPosition = u_worldMatrix * vec4(position, 1.0); +$1 vec3 transformedNormal = normalize(mat3(viewMatrix) * mat3(u_worldInverseTransposeMatrix) * normal); +$1 #include +$1}$2`),i=i.replace(/(precision\s+\w+\s+float;)/,`$1 + +#include +#include +#include `);let e=Le(),t=``;for(let e=0;e<4;e++)t+=` + #if NUM_DIR_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + DirectionalLightShadow s = directionalLightShadows[${e}]; + return getShadow(directionalShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vDirectionalShadowCoord[${e}]); + } + #endif`;let n=``;for(let e=0;e<4;e++)n+=` + #if NUM_SPOT_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + SpotLightShadow s = spotLightShadows[${e}]; + return getShadow(spotShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vSpotLightCoord[${e}]); + } + #endif`;let a=``;for(let e=0;e<4;e++)a+=` + #if NUM_POINT_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + PointLightShadow s = pointLightShadows[${e}]; + return getPointShadow(pointShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vPointShadowCoord[${e}], s.shadowCameraNear, s.shadowCameraFar); + } + #endif`;i=i.replace(/void sampleLightSource\(LightData light, vec3 position, out lightshader result\)/,`// MaterialX light type IDs (from registerLights) +#define MX_LIGHT_TYPE_DIRECTIONAL ${e.directional} +#define MX_LIGHT_TYPE_POINT ${e.point} +#define MX_LIGHT_TYPE_SPOT ${e.spot} + +// Per-type shadow index counters (global so they persist across sampleLightSource calls) +int mxDirShadowIdx = 0; +int mxSpotShadowIdx = 0; +int mxPointShadowIdx = 0; + +// Shadow sampling helpers using constant indices (required for sampler arrays in GLSL ES 3.0) +float sampleMxDirShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + ${t} + #endif + #endif + return 1.0; +} + +float sampleMxSpotShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_SPOT_LIGHT_SHADOWS > 0 + ${n} + #endif + #endif + return 1.0; +} + +float sampleMxPointShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_POINT_LIGHT_SHADOWS > 0 + ${a} + #endif + #endif + return 1.0; +} + +void sampleLightSource(LightData light, vec3 position, out lightshader result)`),i=i.replace(/(void sampleLightSource\(LightData light, vec3 position, out lightshader result\)\s*\{[\s\S]*?)(^\})/m,`$1 // Apply Three.js shadow and increment per-type shadow counters + if (light.type == MX_LIGHT_TYPE_DIRECTIONAL) { + result.intensity *= sampleMxDirShadow(mxDirShadowIdx); + mxDirShadowIdx++; + } else if (light.type == MX_LIGHT_TYPE_SPOT) { + result.intensity *= sampleMxSpotShadow(mxSpotShadowIdx); + mxSpotShadowIdx++; + } else if (light.type == MX_LIGHT_TYPE_POINT) { + result.intensity *= sampleMxPointShadow(mxPointShadowIdx); + mxPointShadowIdx++; + } +$2`)}let f=e.parameters?.transparent??!1;t={name:e.name,uniforms:{},vertexShader:r,fragmentShader:i,glslVersion:x,depthTest:!0,depthWrite:!f,defines:a,lights:!0,...e.parameters}}super(t),e&&(this.shaderName=e.shaderName||null,this._context=e.context,this._shader=e.shader,this._needsTangents=r.includes(`in vec4 tangent;`)||r.includes(`in vec3 tangent;`),Object.assign(this.uniforms,{...p.lights,...Ge(e.shader.getStage(`vertex`),e.loaders,``),...Ge(e.shader.getStage(`pixel`),e.loaders,``),u_worldMatrix:{value:new m},u_viewProjectionMatrix:{value:new m},u_viewPosition:{value:new n},u_worldInverseTransposeMatrix:{value:new m},u_envMatrix:{value:new m},u_envRadiance:{value:null,type:`t`},u_envRadianceMips:{value:8,type:`i`},u_envRadianceSamples:{value:8,type:`i`},u_envIrradiance:{value:null,type:`t`},envMapIntensity:{value:1},u_refractionEnv:{value:!0},u_numActiveLightSources:{value:0},u_lightData:{value:[],needsUpdate:!1}}),Ke(this,e.shader.getStage(`pixel`)),Ke(this,e.shader.getStage(`vertex`)),(O||e.debug)&&(console.group(`[MaterialX]: `,this.name),console.log(`Vertex shader length: ${r.length}\n`,r),console.log(`Fragment shader length: ${i.length}\n`,i),console.groupEnd()))}_missingTangentsWarned=!1;onBeforeRender(e,t,n,r,i,a){this._needsTangents&&!r.attributes.tangent&&(this._missingTangentsWarned||(this._missingTangentsWarned=!0,console.warn(`[MaterialX] Tangents are required for this material (${this.name}) but not present in the geometry.`)));let o=this._context?.getTime?.()||he(),s=this._context?.getFrame?.()||_e(),c=Xe.get(t);c&&(c.update(s,t,e),this.updateEnvironmentUniforms(c,t)),this.updateUniforms(e,i,n,o,s)}envMapIntensity=1;envMap=null;updateUniforms=(e,t,n,r,i)=>{let a=this.uniforms;a.u_worldMatrix&&(a.u_worldMatrix.value.copy(t.matrixWorld),a.u_worldMatrix.needsUpdate=!0),a.u_viewPosition&&(a.u_viewPosition.value.setFromMatrixPosition(n.matrixWorld),a.u_viewPosition.needsUpdate=!0),a.u_viewProjectionMatrix&&(a.u_viewProjectionMatrix.value.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),a.u_viewProjectionMatrix.needsUpdate=!0),a.u_worldInverseTransposeMatrix&&(a.u_worldInverseTransposeMatrix.value.setFromMatrix3(Ze.getNormalMatrix(t.matrixWorld)),a.u_worldInverseTransposeMatrix.needsUpdate=!0),a.u_time&&(r===void 0&&(r=he()),a.u_time.value=r),a.u_frame&&(i===void 0&&(i=_e()),a.u_frame.value=i),this.uniformsNeedUpdate=!0};updateEnvironmentUniforms=(e,t)=>{let n=this.uniforms,r=e.lightData||null,i=e.lightCount||0,a=e.getTextures(this)||null;if(n.u_numActiveLightSources&&i>=0&&(n.u_numActiveLightSources.value=i),r?.length&&(n.u_lightData.value=r,`needsUpdate`in n.u_lightData&&n.u_lightData.needsUpdate===!1&&(O&&console.debug(`[MaterialX] LightData assigned (${this.name}, ${this.uuid})`,r),n.u_lightData.needsUpdate=void 0)),n.u_envRadiance){let e=n.u_envRadiance.value;n.u_envRadiance.value=a.radianceTexture,e!=a.radianceTexture&&(n.u_envRadiance.needsUpdate=!0)}if(n.u_envRadianceMips&&(n.u_envRadianceMips.value=Math.trunc(Math.log2(Math.max(a.radianceTexture?.source.data.width??0,a.radianceTexture?.source.data.height??0)))+1),n.u_envIrradiance){let e=n.u_envIrradiance.value;n.u_envIrradiance.value=a.irradianceTexture,e!=a.irradianceTexture&&(n.u_envIrradiance.needsUpdate=!0)}n.envMapIntensity&&(n.envMapIntensity.value=(this.envMapIntensity??1)*(t.environmentIntensity??1)),this.uniformsNeedUpdate=!0}},Qe=class{name=`NEEDLE_materials_mtlx`;_generatedMaterials=[];_documentReadyPromise=null;get materialX_root_data(){let e=this.parser.json.extensions?.[this.name];if(!e)return null;let t=null;return t=`documents`in e&&Array.isArray(e.documents)?e.documents:[e],t}get materials(){return this._generatedMaterials}constructor(e,t,n){this.parser=e,this.options=t,this.context=n,O&&console.log(`MaterialXLoader created for parser`),this.materialX_root_data&&Ye()}loadMaterial(e){return(this.parser.json.materials?.[e])?.extensions?.[this.name]?this._loadMaterialAsync(e):null}async _loadMaterialAsync(e){let t=this.parser.json.materials?.[e],n=t.extensions?.[this.name],r=n.document||0,i=this.materialX_root_data?.[r],a=i.mtlx||null;if(O&&console.debug(`[MaterialX] extension found in material[${e}]:`,t.extensions?.[this.name],` +→ MTLX root data:`,i),n&&a){let e={...this.options};return e.parameters||={},e.parameters?.side===void 0&&t.doubleSided!==void 0&&(e.parameters.side=t.doubleSided?2:0),tt(a,n.name,{cacheKey:this.options.cacheKey||``,getTexture:async e=>{let t=e.split(`/`).pop()?.split(`.`).shift()||``;if(i){let e=i.textures||[],n=-1;for(let r of e)if(r.name===t){let e=r.pointer,i=e.substring(10);if(n=parseInt(i),isNaN(n)||n<0){console.error(`[MaterialX] Invalid texture index in pointer:`,e);return}else O&&console.log(`[MaterialX] Texture index found:`,n,`for`,t)}if(n<0){console.error(`[MaterialX] Texture not found in parser:`,t,this.parser.json);return}return this.parser.getDependency(`texture`,n)}return null}},e,this.context).then(e=>(e instanceof L&&this._generatedMaterials.push(e),e))}let o=new b;return o.name=`MaterialX_Fallback`,o}};function $e(e,t,n){e.register(e=>new Qe(e,t||{},n||{}))}async function et(e){if(await Ye(),!I.materialXModule)throw Error(`[MaterialX] module failed to initialize`);let t=I.materialXModule.createDocument();return t.setDataLibrary(I.materialXStdLib),await I.materialXModule.readFromXmlString(t,e,``),O&&console.log(`[MaterialX] root document parsed successfully`),t}async function tt(e,t,n,r,i){try{O&&console.log(`Creating MaterialX material: ${t}`);let a=await et(e);if(!I.materialXModule||!I.materialXGenerator||!I.materialXGenContext){console.warn(`[MaterialX] WASM module not ready, returning fallback material`);let e=new b;return e.name=`MaterialX_Fallback_${t}`,e}let o=null;O&&console.log(`[MaterialX] document`,a);let s=a.getMaterialNodes();O&&console.log(`[MaterialX] Found ${s.length} material nodes in document`,s);for(let e=0;ee.getNamePath()).join(`, `)}`);let e=new b;return e.color.set(16711935),e.name=`MaterialX_NoRenderable_${t}`,e}O&&console.log(`[MaterialX] Using renderable element for shader generation`);let c=I.materialXGenerator.getTarget(),l=typeof I.materialXModule.getAlphaMode==`function`?I.materialXModule.getAlphaMode(o,c):I.materialXModule.isTransparentSurface(o,c)?`blend`:`opaque`,u=l===`mask`,d=l===`blend`,f=u||d;{let e=I.materialXGenContext.getOptions();e.hwTransparency=f,e.hwTexcoordVerticalFlip=!0,e.fileTextureVerticalFlip=!0}O&&console.log(`[MaterialX] Generating MaterialX shaders...`);let p=o.getNamePath?o.getNamePath():o.getName(),m=I.materialXGenerator.generate(p,o,I.materialXGenContext),h=new L({name:t,shaderName:null,shader:m,context:i||{},parameters:{transparent:d,alphaTest:u?1e-4:0,...r?.parameters},loaders:n});return O&&console.log(`[MaterialX] material created:`,h.name),h}catch(n){let r=n;if(typeof n==`number`&&I?.materialXModule)try{let e=I.materialXModule.getExceptionDetailedMessage,t=I.materialXModule.getExceptionMessage;r=(typeof e==`function`?e(n):null)||(typeof t==`function`?t(n):null)||`WASM exception code ${n}`}catch{r=`WASM exception code ${n}`}console.error(`[MaterialX v${qe}] Error creating MaterialX material (${t}):\n${r}\n→ MaterialX source:\n`,e);let i=new b;return i.color.set(16711935),i.name=`MaterialX_Error_${t}`,i}}var nt={createMaterialXMaterial:tt};export{Xe as a,ue as c,se as d,L as i,le as l,Qe as n,Je as o,$e as r,Ye as s,nt as t,ce as u}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js.gz b/Needle/MenuScene/dist/assets/materialx.CnHmG--Y.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a370aca0cf4f00370ce02a27ca005c709766dad4 GIT binary patch literal 42394 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%0DBbeqg9 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js b/Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js new file mode 100644 index 0000000..e39cdb3 --- /dev/null +++ b/Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js @@ -0,0 +1 @@ +import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./materialx.CnHmG--Y.js";export{o as Experimental_API,e as MaterialXEnvironment,n as MaterialXLoader,t as MaterialXMaterial,r as preloadWasm,a as ready,i as useNeedleMaterialX}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js.gz b/Needle/MenuScene/dist/assets/materialx.eMaybKAQ.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f658a8c87e2e62c116dc5730a2e6c2d26b9836e GIT binary patch literal 168 zcmV;Z09XGXiwFP!000023RO=*3c@fD{7UJ0TOZJqNKrw>n|hLktPn}EVH2ey{kv?V z1y3`~FtfAPN0$7?3R6X36*2^1B?6*gAt@ka1s-q0zHS#DGl@kvw5zc3>!!K1_f&T@ zOodZHKSUDiDP(ll<#7w7>i!!%_u*-UgZdEuoE@VfDF literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine-particles.Bw3zzNt3.js b/Needle/MenuScene/dist/assets/needle-engine-particles.Bw3zzNt3.js new file mode 100644 index 0000000..5122d04 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine-particles.Bw3zzNt3.js @@ -0,0 +1 @@ +import{Ar as e,Bt as t,Qt as n,Xt as r,Zt as i,d as a,fn as o,kr as s,qt as c,tt as l,vn as u,wn as d,yr as f}from"./three@0.169.19.js";import{$a as p,Jr as m,Ka as h,Ua as g,Xi as _,Zn as v,_a as ee,ba as te,co as ne,ct as re,dn as y,ot as b,pa as x,ra as S,un as C,va as ie}from"./needle-engine-ui.BzyLX9fs.js";import{n as ae}from"./gltf-progressive.BBJGcb3s.js";import{yt as oe}from"./needle-engine-webxr.DQA26K-l.js";import{a as se,c as ce,i as le,n as ue,o as de,r as w,s as fe,t as pe}from"./three-quarks.DALdLWPD.js";var me=Math.sqrt(3),he=Math.sqrt(5);.5*(me-1),(3-me)/6;var ge=(he-1)/4,T=(5-he)/20,_e=e=>Math.floor(e)|0,ve=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function ye(e=Math.random){let t=be(e),n=new Float64Array(t).map(e=>ve[e%32*4]),r=new Float64Array(t).map(e=>ve[e%32*4+1]),i=new Float64Array(t).map(e=>ve[e%32*4+2]),a=new Float64Array(t).map(e=>ve[e%32*4+3]);return function(e,o,s,c){let l,u,d,f,p,m=(e+o+s+c)*ge,h=_e(e+m),g=_e(o+m),_=_e(s+m),v=_e(c+m),ee=(h+g+_+v)*T,te=h-ee,ne=g-ee,re=_-ee,y=v-ee,b=e-te,x=o-ne,S=s-re,C=c-y,ie=0,ae=0,oe=0,se=0;b>x?ie++:ae++,b>S?ie++:oe++,b>C?ie++:se++,x>S?ae++:oe++,x>C?ae++:se++,S>C?oe++:se++;let ce=+(ie>=3),le=+(ae>=3),ue=+(oe>=3),de=+(se>=3),w=+(ie>=2),fe=+(ae>=2),pe=+(oe>=2),me=+(se>=2),he=+(ie>=1),ve=+(ae>=1),ye=+(oe>=1),be=+(se>=1),E=b-ce+T,D=x-le+T,xe=S-ue+T,O=C-de+T,Se=b-w+2*T,k=x-fe+2*T,A=S-pe+2*T,j=C-me+2*T,M=b-he+3*T,N=x-ve+3*T,P=S-ye+3*T,F=C-be+3*T,I=b-1+4*T,L=x-1+4*T,Ce=S-1+4*T,R=C-1+4*T,we=h&255,z=g&255,Te=_&255,B=v&255,V=.6-b*b-x*x-S*S-C*C;if(V<0)l=0;else{let e=we+t[z+t[Te+t[B]]];V*=V,l=V*V*(n[e]*b+r[e]*x+i[e]*S+a[e]*C)}let H=.6-E*E-D*D-xe*xe-O*O;if(H<0)u=0;else{let e=we+ce+t[z+le+t[Te+ue+t[B+de]]];H*=H,u=H*H*(n[e]*E+r[e]*D+i[e]*xe+a[e]*O)}let U=.6-Se*Se-k*k-A*A-j*j;if(U<0)d=0;else{let e=we+w+t[z+fe+t[Te+pe+t[B+me]]];U*=U,d=U*U*(n[e]*Se+r[e]*k+i[e]*A+a[e]*j)}let Ee=.6-M*M-N*N-P*P-F*F;if(Ee<0)f=0;else{let e=we+he+t[z+ve+t[Te+ye+t[B+be]]];Ee*=Ee,f=Ee*Ee*(n[e]*M+r[e]*N+i[e]*P+a[e]*F)}let De=.6-I*I-L*L-Ce*Ce-R*R;if(De<0)p=0;else{let e=we+1+t[z+1+t[Te+1+t[B+1]]];De*=De,p=De*De*(n[e]*I+r[e]*L+i[e]*Ce+a[e]*R)}return 27*(l+u+d+f+p)}}function be(e){let t=new Uint8Array(512);for(let e=0;e<512/2;e++)t[e]=e;for(let n=0;n<512/2-1;n++){let r=n+~~(e()*(256-n)),i=t[n];t[n]=t[r],t[r]=i}for(let e=256;e<512;e++)t[e]=t[e-256];return t}var E=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},D=class{time=0;value=0;inTangent=1/0;inWeight;outTangent=1/0;outWeight;weightedMode;constructor(e=0,t=0){this.time=e,this.value=t}};E([_()],D.prototype,`time`,void 0),E([_()],D.prototype,`value`,void 0),E([_()],D.prototype,`inTangent`,void 0),E([_()],D.prototype,`inWeight`,void 0),E([_()],D.prototype,`outTangent`,void 0),E([_()],D.prototype,`outWeight`,void 0),E([_()],D.prototype,`weightedMode`,void 0);var xe=class e{static linearFromTo(t,n,r){let i=new e,a=new D;a.time=0,a.value=t;let o=new D;return o.time=r,o.value=n,i.keys.push(a,o),i}static constant(t){let n=new e,r=new D;return r.time=0,r.value=t,n.keys.push(r),n}keys=[];clone(){let t=new e;return t.keys=this.keys?.map(e=>{let t=new D;return t.time=e.time,t.value=e.value,t.inTangent=e.inTangent,t.inWeight=e.inWeight,t.outTangent=e.outTangent,t.outWeight=e.outWeight,t.weightedMode=e.weightedMode,t})||[],t}get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(t){if(!this.keys||this.keys.length==0)return 0;if(this.keys.length===1||this.keys[0].time>=t)return this.keys[0].value;for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Se=ne(`debugparticles`),k;(function(e){e[e.Billboard=0]=`Billboard`,e[e.Stretch=1]=`Stretch`,e[e.HorizontalBillboard=2]=`HorizontalBillboard`,e[e.VerticalBillboard=3]=`VerticalBillboard`,e[e.Mesh=4]=`Mesh`})(k||={});var A=class{alphaKeys=[];colorKeys=[];get duration(){return 1}evaluate(e,t){let n,r=0,i=null,a=0;for(let t=0;tt&&(t=r.value)}return t}};O([_()],I.prototype,`mode`,void 0),O([_()],I.prototype,`constant`,void 0),O([_()],I.prototype,`constantMin`,void 0),O([_()],I.prototype,`constantMax`,void 0),O([_(xe)],I.prototype,`curve`,void 0),O([_(xe)],I.prototype,`curveMin`,void 0),O([_(xe)],I.prototype,`curveMax`,void 0),O([_()],I.prototype,`curveMultiplier`,void 0);var L=class e{static constant(t){let n=new e;return n.constant(t),n}static betweenTwoColors(t,n){let r=new e;return r.betweenTwoColors(t,n),r}constant(e){return this.mode=M.Color,this.color=e,this}betweenTwoColors(e,t){return this.mode=M.TwoColors,this.colorMin=e,this.colorMax=t,this}mode=M.Color;color;colorMin;colorMax;gradient;gradientMin;gradientMax;static _temp=new y(0,0,0,1);static _temp2=new y(0,0,0,1);evaluate(t,n){let r=n===void 0?Math.random():n;switch(this.mode){case M.Color:case`Color`:return this.color;case M.Gradient:case`Gradient`:return this.gradient.evaluate(t,e._temp),e._temp;case M.TwoColors:case`TwoColors`:return e._temp.lerpColors(this.colorMin,this.colorMax,r);case M.TwoGradients:case`TwoGradients`:return this.gradientMin.evaluate(t,e._temp),this.gradientMax.evaluate(t,e._temp2),e._temp.lerp(e._temp2,r);case M.RandomColor:case`RandomColor`:let n=Math.random();return this.gradientMin.evaluate(t,e._temp),this.gradientMax.evaluate(t,e._temp2),e._temp.lerp(e._temp2,n)}return e._temp.set(16777215),e._temp.alpha=1,e._temp}};O([_()],L.prototype,`mode`,void 0),O([_(y)],L.prototype,`color`,void 0),O([_(y)],L.prototype,`colorMin`,void 0),O([_(y)],L.prototype,`colorMax`,void 0),O([_(A)],L.prototype,`gradient`,void 0),O([_(A)],L.prototype,`gradientMin`,void 0),O([_(A)],L.prototype,`gradientMax`,void 0);var Ce;(function(e){e[e.Hierarchy=0]=`Hierarchy`,e[e.Local=1]=`Local`,e[e.Shape=2]=`Shape`})(Ce||={});var R=class{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime};O([_(I)],R.prototype,`gravityModifier`,void 0),O([_(L)],R.prototype,`startColor`,void 0),O([_(I)],R.prototype,`startDelay`,void 0),O([_(I)],R.prototype,`startLifetime`,void 0),O([_(I)],R.prototype,`startRotation`,void 0),O([_(I)],R.prototype,`startRotationX`,void 0),O([_(I)],R.prototype,`startRotationY`,void 0),O([_(I)],R.prototype,`startRotationZ`,void 0),O([_(I)],R.prototype,`startSize`,void 0),O([_(I)],R.prototype,`startSizeX`,void 0),O([_(I)],R.prototype,`startSizeY`,void 0),O([_(I)],R.prototype,`startSizeZ`,void 0),O([_(I)],R.prototype,`startSpeed`,void 0);var we=class{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_performed=0;reset(){this._performed=0}run(e){if(e<=this.time)return 0;let t=0;if((this.cycleCount===0||this._performed=this.time+this.repeatInterval*this._performed&&(this._performed+=1,Math.random()e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t=this.system.time&&n.reset(),e+=Math.round(n.run(this.system.time))}return e}};O([_()],z.prototype,`enabled`,void 0),O([_()],z.prototype,`bursts`,void 0),O([_(I)],z.prototype,`rateOverTime`,void 0),O([_()],z.prototype,`rateOverTimeMultiplier`,void 0),O([_(I)],z.prototype,`rateOverDistance`,void 0),O([_()],z.prototype,`rateOverDistanceMultiplier`,void 0);var Te=class{enabled;color};O([_(L)],Te.prototype,`color`,void 0);var B=class{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new e;evaluate(e,t,n){if(t||=this._temp,!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,n)*this.xMultiplier,t.y=this.y.evaluate(e,n)*this.yMultiplier,t.z=this.z.evaluate(e,n)*this.zMultiplier;else{let r=this.size.evaluate(e,n)*this.sizeMultiplier;t.x=r}return t}};O([_(I)],B.prototype,`size`,void 0),O([_(I)],B.prototype,`x`,void 0),O([_(I)],B.prototype,`y`,void 0),O([_(I)],B.prototype,`z`,void 0);var V;(function(e){e[e.Vertex=0]=`Vertex`,e[e.Edge=1]=`Edge`,e[e.Triangle=2]=`Triangle`})(V||={});var H=class t{get type(){return P[this.shapeType]}initialize(e){this.onInitialize(e),e.position.x=this._vector.x,e.position.y=this._vector.y,e.position.z=this._vector.z}toJSON(){return this}clone(){return new t}shapeType=P.Box;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new l;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;meshShapeType;meshRenderer;_meshObj;_meshGeometry;setMesh(e){this.meshRenderer=e,e?(this._meshObj=e.sharedMeshes[Math.floor(Math.random()*e.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}system;_space;_worldSpaceMatrix=new r;_worldSpaceMatrixInverse=new r;constructor(){Se&&console.log(this)}update(e,t){}onUpdate(e,t,n,r){this.system=e,this._space=n,n===N.World&&(this._worldSpaceMatrix.copy(r.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(e){let t=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return t&&(this._rotation.x=g.toRadians(this.rotation.x),this._rotation.y=g.toRadians(this.rotation.y),this._rotation.z=g.toRadians(this.rotation.z),this._rotation.order=`ZYX`,e.applyEuler(this._rotation)),t}_vector=new e(0,0,0);_temp=new e(0,0,0);_triangle=new f;onInitialize(e){this._vector.set(0,0,0),e.mesh=void 0,e.mesh_geometry=void 0;let t=this._temp.copy(this.position),n=this._space===N.World;n&&t.applyQuaternion(this.system.worldQuaternion);let r=this.radius;if(n&&(r*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case P.Box:Se&&C.DrawWireBox(this.position,this.scale,14540253,1),this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(t);break;case P.Cone:this.randomConePoint(this.position,this.angle,r,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case P.Sphere:this.randomSpherePoint(this.position,r,this.radiusThickness,this.arc,this._vector);break;case P.Circle:this.randomCirclePoint(this.position,r,this.radiusThickness,this.arc,this._vector);break;case P.MeshRenderer:let n=this.meshRenderer;n?.destroyed==0&&this.setMesh(n);let i=e.mesh=this._meshObj,a=e.mesh_geometry=this._meshGeometry;if(i&&a)switch(this.meshShapeType){case V.Vertex:{let t=a.getAttribute(`position`),n=Math.floor(Math.random()*t.count);this._vector.fromBufferAttribute(t,n),this._vector.applyMatrix4(i.matrixWorld),e.mesh_normal=n}break;case V.Edge:break;case V.Triangle:{let t=a.index;if(t){let n=Math.random(),r=Math.random();n+r>1&&(n=1-n,r=1-r);let o=Math.floor(Math.random()*(t.count/3)),s=o*3,c=o*3+1,l=o*3+2;s=t.getX(s),c=t.getX(c),l=t.getX(l);let u=a.getAttribute(`position`);this._triangle.a.fromBufferAttribute(u,s),this._triangle.b.fromBufferAttribute(u,c),this._triangle.c.fromBufferAttribute(u,l),this._vector.set(0,0,0).addScaledVector(this._triangle.a,n).addScaledVector(this._triangle.b,r).addScaledVector(this._triangle.c,1-(n+r)),this._vector.applyMatrix4(i.matrixWorld),e.mesh_normal=o}}break}break;default:this._vector.set(0,0,0),h()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn(`ParticleSystem ShapeType is not supported:`,P[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),n&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Se&&C.DrawSphere(this._vector,.03,16711680,.5,!0)}_dir=new e;getDirection(e,t){if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case P.Box:this._dir.set(0,0,1);break;case P.Cone:this._dir.set(0,0,1);break;case P.Circle:case P.Sphere:let n=t.x,r=t.y,i=t.z;this._dir.set(n,r,i),this.system?.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case P.MeshRenderer:let a=e.mesh,o=e.mesh_geometry;if(a&&o)switch(this.meshShapeType){case V.Vertex:{let t=o.getAttribute(`normal`),n=e.mesh_normal;this._dir.fromBufferAttribute(t,n)}break;case V.Edge:break;case V.Triangle:{let t=o.index;if(t){let n=e.mesh_normal,r=t.getX(n*3),i=t.getX(n*3+1),s=t.getX(n*3+2),c=o.getAttribute(`position`),l=x(),u=x(),d=x();l.fromBufferAttribute(c,r),u.fromBufferAttribute(c,i),d.fromBufferAttribute(c,s),l.sub(u),d.sub(u),l.cross(d),this._dir.copy(l).multiplyScalar(-1);let f=ie(a);this._dir.applyQuaternion(f)}}break}break;default:this._dir.set(0,0,1);break}return this._space===N.World&&this._dir.applyQuaternion(this.system.worldQuaternion),this.applyRotation(this._dir),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),Se&&(C.DrawSphere(t,.01,8925952,.5,!0),C.DrawDirection(t,this._dir,8925952,.5,!0)),this._dir}static _randomQuat=new d;static _tempVec=new e;randomizePosition(e,n){if(n<=0)return;let r=t._tempVec;r.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),r.x*=n*this.scale.x,r.y*=n*this.scale.y,r.z*=n*this.scale.z,e.add(r)}randomizeDirection(e,n){if(n===0)return;let r=t._randomQuat,i=t._tempVec;i.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),r.setFromAxisAngle(i,n*Math.random()*Math.PI),e.applyQuaternion(r)}spherizeDirection(t,n){if(n===0)return;let r=Math.random()*Math.PI*2,i=Math.acos(1-Math.random()*2),a=new e(Math.sin(i)*Math.cos(r),Math.sin(i)*Math.sin(r),Math.cos(i));t.lerp(a,n)}randomSpherePoint(e,t,n,r,i){let a=Math.random(),o=Math.random(),s=2*Math.PI*a*(r/360),c=Math.acos(2*o-1),l=g.lerp(1,1-(1-Math.random())**Math.PI,n)*t,u=e.x+this.scale.x*(-l*Math.sin(c)*Math.cos(s)),d=e.y+this.scale.y*(l*Math.sin(c)*Math.sin(s)),f=e.z+this.scale.z*(l*Math.cos(c));i.x=u,i.y=d,i.z=f}randomCirclePoint(e,t,n,r,i){let a=Math.random(),o=2*Math.PI*a*(r/360),s=g.lerp(1,1-(1-Math.random())**Math.PI,n)*t,c=e.x+this.scale.x*s*Math.cos(o),l=e.y+this.scale.y*s*Math.sin(o),u=e.z;i.x=c,i.y=l,i.z=u}_loopTime=0;_loopDirection=1;randomConePoint(e,t,n,r,i,a,o){let s=0,c=0;switch(a){case F.Random:s=Math.random(),c=Math.random();break;case F.PingPong:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case F.Loop:s=.5,c=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let l=2*Math.PI*s*(i/360);switch(a){case F.PingPong:case F.Loop:l+=Math.PI+.5,l+=this._loopTime*Math.PI*2,l%=g.toRadians(i);break}let u=Math.acos(2*c-1),d=g.lerp(1,1-(1-Math.random())**Math.PI,r)*n,f=e.x+-d*Math.sin(u)*Math.cos(l),p=e.y+d*Math.sin(u)*Math.sin(l),m=e.z;o.x=f*this.scale.x,o.y=p*this.scale.y,o.z=m*this.scale.z}};O([_()],H.prototype,`shapeType`,void 0),O([_()],H.prototype,`enabled`,void 0),O([_()],H.prototype,`alignToDirection`,void 0),O([_()],H.prototype,`angle`,void 0),O([_()],H.prototype,`arc`,void 0),O([_()],H.prototype,`arcSpread`,void 0),O([_()],H.prototype,`arcSpeedMultiplier`,void 0),O([_()],H.prototype,`arcMode`,void 0),O([_(e)],H.prototype,`boxThickness`,void 0),O([_(e)],H.prototype,`position`,void 0),O([_(e)],H.prototype,`rotation`,void 0),O([_(e)],H.prototype,`scale`,void 0),O([_()],H.prototype,`radius`,void 0),O([_()],H.prototype,`radiusThickness`,void 0),O([_()],H.prototype,`sphericalDirectionAmount`,void 0),O([_()],H.prototype,`randomDirectionAmount`,void 0),O([_()],H.prototype,`randomPositionAmount`,void 0),O([_()],H.prototype,`meshShapeType`,void 0),O([_(oe)],H.prototype,`meshRenderer`,void 0);var U=class{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new e;apply(e,t,n,r,i,a){if(!this.enabled)return;this._noise||=ye(()=>0);let o=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),s=this._noise(o.x,o.y,o.z,this._time),c=this._noise(o.x,o.y,o.z,this._time+1e3*this.frequency),l=this._noise(o.x,o.y,o.z,this._time+2e3*this.frequency);this._temp.set(s,c,l).normalize();let u=i/a,d=this.positionAmount.evaluate(u);this.separateAxes?(this._temp.x*=d*this.strengthXMultiplier,this._temp.y*=d*this.strengthYMultiplier,this._temp.z*=d*this.strengthZMultiplier):(this.strengthX&&(d*=this.strengthX.evaluate(u)*1.5),this._temp.multiplyScalar(d)),n.x+=this._temp.x,n.y+=this._temp.y,n.z+=this._temp.z}};O([_()],U.prototype,`damping`,void 0),O([_()],U.prototype,`enabled`,void 0),O([_()],U.prototype,`frequency`,void 0),O([_()],U.prototype,`octaveCount`,void 0),O([_()],U.prototype,`octaveMultiplier`,void 0),O([_()],U.prototype,`octaveScale`,void 0),O([_(I)],U.prototype,`positionAmount`,void 0),O([_()],U.prototype,`quality`,void 0),O([_(I)],U.prototype,`remap`,void 0),O([_()],U.prototype,`remapEnabled`,void 0),O([_()],U.prototype,`remapMultiplier`,void 0),O([_(I)],U.prototype,`remapX`,void 0),O([_()],U.prototype,`remapXMultiplier`,void 0),O([_(I)],U.prototype,`remapY`,void 0),O([_()],U.prototype,`remapYMultiplier`,void 0),O([_(I)],U.prototype,`remapZ`,void 0),O([_()],U.prototype,`remapZMultiplier`,void 0),O([_()],U.prototype,`scrollSpeedMultiplier`,void 0),O([_()],U.prototype,`separateAxes`,void 0),O([_()],U.prototype,`strengthMultiplier`,void 0),O([_(I)],U.prototype,`strengthX`,void 0),O([_()],U.prototype,`strengthXMultiplier`,void 0),O([_(I)],U.prototype,`strengthY`,void 0),O([_()],U.prototype,`strengthYMultiplier`,void 0),O([_(I)],U.prototype,`strengthZ`,void 0),O([_()],U.prototype,`strengthZMultiplier`,void 0);var Ee;(function(e){e[e.PerParticle=0]=`PerParticle`,e[e.Ribbon=1]=`Ribbon`})(Ee||={});var De;(function(e){e[e.Stretch=0]=`Stretch`,e[e.Tile=1]=`Tile`,e[e.DistributePerSegment=2]=`DistributePerSegment`,e[e.RepeatPerSegment=3]=`RepeatPerSegment`})(De||={});var W=class{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=Ee.PerParticle;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=De.Stretch;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,n,r){let i=this.widthOverTrail.evaluate(n,r);return e*=i,e}getColor(e,t,n){let r=this.colorOverTrail.evaluate(n),i=this.colorOverLifetime.evaluate(t);e.x*=r.r*i.r,e.y*=r.g*i.g,e.z*=r.b*i.b,`alpha`in r&&`alpha`in i&&(e.w*=r.alpha*i.alpha)}};O([_()],W.prototype,`enabled`,void 0),O([_()],W.prototype,`attachRibbonToTransform`,void 0),O([_(L)],W.prototype,`colorOverLifetime`,void 0),O([_(L)],W.prototype,`colorOverTrail`,void 0),O([_()],W.prototype,`dieWithParticles`,void 0),O([_()],W.prototype,`inheritParticleColor`,void 0),O([_(I)],W.prototype,`lifetime`,void 0),O([_()],W.prototype,`lifetimeMultiplier`,void 0),O([_()],W.prototype,`minVertexDistance`,void 0),O([_()],W.prototype,`mode`,void 0),O([_()],W.prototype,`ratio`,void 0),O([_()],W.prototype,`ribbonCount`,void 0),O([_()],W.prototype,`shadowBias`,void 0),O([_()],W.prototype,`sizeAffectsLifetime`,void 0),O([_()],W.prototype,`sizeAffectsWidth`,void 0),O([_()],W.prototype,`splitSubEmitterRibbons`,void 0),O([_()],W.prototype,`textureMode`,void 0),O([_(I)],W.prototype,`widthOverTrail`,void 0),O([_()],W.prototype,`widthOverTrailMultiplier`,void 0),O([_()],W.prototype,`worldSpace`,void 0);var G=class{enabled;space=N.Local;orbitalX;orbitalY;orbitalZ;orbitalXMultiplier;orbitalYMultiplier;orbitalZMultiplier;orbitalOffsetX;orbitalOffsetY;orbitalOffsetZ;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new e;_temp2=new e;_temp3=new e;_hasOrbital=!1;_index=0;_orbitalMatrix=new r;init(e){this._index==0&&(e.debug=!0),this._index+=1,e.orbitx=this.orbitalX.evaluate(Math.random()),e.orbity=this.orbitalY.evaluate(Math.random()),e.orbitz=this.orbitalZ.evaluate(Math.random()),this._hasOrbital=e.orbitx!=0||e.orbity!=0||e.orbitz!=0}apply(e,t,n,r,i,a,o){if(!this.enabled)return;let s=a/o,c=this.speedModifier.evaluate(s)*this.speedModifierMultiplier,l=this.x.evaluate(s),u=this.y.evaluate(s),d=this.z.evaluate(s);if(this._temp.set(-l,u,d),this._system&&this._system.main.simulationSpace===N.World&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&this._system?.worldPos){let e=this._temp2.set(n.x,n.y,n.z),t=this.orbitalXMultiplier,a=this.orbitalYMultiplier,o=this.orbitalZMultiplier,s=c*Math.PI*2*10,l=Math.cos(s*t),u=Math.sin(s*t),d=Math.cos(s*a),f=Math.sin(s*a),p=Math.cos(s*o),m=Math.sin(s*o),h=e.x*(d*p)+e.y*(d*m)+e.z*-f,g=e.x*(u*f*p-l*m)+e.y*(u*f*m+l*p)+e.z*(u*d),_=e.x*(l*f*p+u*m)+e.y*(l*f*m-u*p)+e.z*(l*d),v=this._temp3.set(e.x-h,e.y-g,e.z-_);v.normalize(),v.multiplyScalar(.2/i*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),r.x+=v.x,r.y+=v.y,r.z+=v.z}r.x+=this._temp.x,r.y+=this._temp.y,r.z+=this._temp.z,r.x*=c,r.y*=c,r.z*=c}};O([_()],G.prototype,`enabled`,void 0),O([_()],G.prototype,`space`,void 0),O([_(I)],G.prototype,`orbitalX`,void 0),O([_(I)],G.prototype,`orbitalY`,void 0),O([_(I)],G.prototype,`orbitalZ`,void 0),O([_()],G.prototype,`orbitalXMultiplier`,void 0),O([_()],G.prototype,`orbitalYMultiplier`,void 0),O([_()],G.prototype,`orbitalZMultiplier`,void 0),O([_()],G.prototype,`orbitalOffsetX`,void 0),O([_()],G.prototype,`orbitalOffsetY`,void 0),O([_()],G.prototype,`orbitalOffsetZ`,void 0),O([_(I)],G.prototype,`speedModifier`,void 0),O([_()],G.prototype,`speedModifierMultiplier`,void 0),O([_(I)],G.prototype,`x`,void 0),O([_()],G.prototype,`xMultiplier`,void 0),O([_(I)],G.prototype,`y`,void 0),O([_()],G.prototype,`yMultiplier`,void 0),O([_(I)],G.prototype,`z`,void 0),O([_()],G.prototype,`zMultiplier`,void 0);var Oe;(function(e){e[e.Lifetime=0]=`Lifetime`,e[e.Speed=1]=`Speed`,e[e.FPS=2]=`FPS`})(Oe||={});var ke;(function(e){e[e.Grid=0]=`Grid`,e[e.Sprites=1]=`Sprites`})(ke||={});var Ae;(function(e){e[e.Custom=0]=`Custom`,e[e.Random=1]=`Random`,e[e.MeshIndex=2]=`MeshIndex`})(Ae||={});var je;(function(e){e[e.WholeSheet=0]=`WholeSheet`,e[e.SingleRow=1]=`SingleRow`})(je||={});var K=class{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;timeMode;sampleOnceAtStart(){if(this.timeMode===Oe.Lifetime)switch(this.frameOverTime.mode){case j.Constant:case j.TwoConstants:case j.TwoCurves:case j.Curve:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?Math.random()*(this.numTilesX*this.numTilesY):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){let t=this.numTilesX*this.numTilesY;e*=this.cycleCount;let n=this.frameOverTime.evaluate(e%1);return n*=this.frameOverTimeMultiplier,n*=t,n%=t,n=Math.floor(n),n}};O([_()],K.prototype,`animation`,void 0),O([_()],K.prototype,`enabled`,void 0),O([_()],K.prototype,`cycleCount`,void 0),O([_(I)],K.prototype,`frameOverTime`,void 0),O([_()],K.prototype,`frameOverTimeMultiplier`,void 0),O([_()],K.prototype,`numTilesX`,void 0),O([_()],K.prototype,`numTilesY`,void 0),O([_(I)],K.prototype,`startFrame`,void 0),O([_()],K.prototype,`startFrameMultiplier`,void 0),O([_()],K.prototype,`rowMode`,void 0),O([_()],K.prototype,`rowIndex`,void 0),O([_()],K.prototype,`spriteCount`,void 0),O([_()],K.prototype,`timeMode`,void 0);var q=class{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}};O([_()],q.prototype,`enabled`,void 0),O([_()],q.prototype,`separateAxes`,void 0),O([_(I)],q.prototype,`x`,void 0),O([_()],q.prototype,`xMultiplier`,void 0),O([_(I)],q.prototype,`y`,void 0),O([_()],q.prototype,`yMultiplier`,void 0),O([_(I)],q.prototype,`z`,void 0),O([_()],q.prototype,`zMultiplier`,void 0);var J=class{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){let e=g.lerp(this.range.x,this.range.y,t);return this.z.evaluate(e)*-1}return 0}};O([_()],J.prototype,`enabled`,void 0),O([_()],J.prototype,`range`,void 0),O([_()],J.prototype,`separateAxes`,void 0),O([_(I)],J.prototype,`x`,void 0),O([_()],J.prototype,`xMultiplier`,void 0),O([_(I)],J.prototype,`y`,void 0),O([_()],J.prototype,`yMultiplier`,void 0),O([_(I)],J.prototype,`z`,void 0),O([_()],J.prototype,`zMultiplier`,void 0);var Y=class{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new e;_temp2=new e;apply(e,t,n,r,i,a,o){if(this.enabled){let e=this.limit.evaluate(i)*this.limitMultiplier;if(t.length()>e){this._temp.copy(t).normalize().multiplyScalar(e);let r=this.dampen*.5;t.x=g.lerp(t.x,this._temp.x,r),t.y=g.lerp(t.y,this._temp.y,r),t.z=g.lerp(t.z,this._temp.z,r),n.x=g.lerp(n.x,this._temp.x,r),n.y=g.lerp(n.y,this._temp.y,r),n.z=g.lerp(n.z,this._temp.z,r)}}}};O([_()],Y.prototype,`enabled`,void 0),O([_()],Y.prototype,`dampen`,void 0),O([_(I)],Y.prototype,`drag`,void 0),O([_()],Y.prototype,`dragMultiplier`,void 0),O([_(I)],Y.prototype,`limit`,void 0),O([_()],Y.prototype,`limitMultiplier`,void 0),O([_()],Y.prototype,`separateAxes`,void 0),O([_(I)],Y.prototype,`limitX`,void 0),O([_()],Y.prototype,`limitXMultiplier`,void 0),O([_(I)],Y.prototype,`limitY`,void 0),O([_()],Y.prototype,`limitYMultiplier`,void 0),O([_(I)],Y.prototype,`limitZ`,void 0),O([_()],Y.prototype,`limitZMultiplier`,void 0),O([_()],Y.prototype,`multiplyDragByParticleSize`,void 0),O([_()],Y.prototype,`multiplyDragByParticleVelocity`,void 0),O([_()],Y.prototype,`space`,void 0);var Me;(function(e){e[e.Initial=0]=`Initial`,e[e.Current=1]=`Current`})(Me||={});var Ne=class t{enabled;curve;curveMultiplier;mode;clone(){let e=new t;return e.enabled=this.enabled,e.curve=this.curve?.clone(),e.curveMultiplier=this.curveMultiplier,e.mode=this.mode,e}system;get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new e),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new e),this.system._iv_velocity}_temp=new e;_firstUpdate=!0;awake(e){this.system=e,this.reset()}reset(){this._firstUpdate=!0}update(e){this.enabled&&this.system.worldspace!==!1&&(this._firstUpdate?(this._firstUpdate=!1,this._velocity.set(0,0,0),this._lastWorldPosition.copy(this.system.worldPos)):this._lastWorldPosition&&(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)))}applyInitial(e){if(this.enabled&&this.system.worldspace!==!1&&this.mode===Me.Initial){let t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}_frames=0;applyCurrent(e,t,n){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===Me.Current){let r=this.curve.evaluate(t,n);this._temp.copy(this._velocity).multiplyScalar(r),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};O([_()],Ne.prototype,`enabled`,void 0),O([_(I)],Ne.prototype,`curve`,void 0),O([_()],Ne.prototype,`curveMultiplier`,void 0),O([_()],Ne.prototype,`mode`,void 0);var X=class{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,n,r){let i=e.length(),a=g.remap(i,this.range.x,this.range.y,0,1),o=this.size.evaluate(a,n);return r.x*=o,r.y*=o,r.z*=o,r}};O([_()],X.prototype,`enabled`,void 0),O([_(s)],X.prototype,`range`,void 0),O([_()],X.prototype,`separateAxes`,void 0),O([_(I)],X.prototype,`size`,void 0),O([_()],X.prototype,`sizeMultiplier`,void 0),O([_(I)],X.prototype,`x`,void 0),O([_()],X.prototype,`xMultiplier`,void 0),O([_(I)],X.prototype,`y`,void 0),O([_()],X.prototype,`yMultiplier`,void 0),O([_(I)],X.prototype,`z`,void 0),O([_()],X.prototype,`zMultiplier`,void 0);var Pe=class{enabled;range;color;evaluate(e,t,n){let r=e.length(),i=g.remap(r,this.range.x,this.range.y,0,1),a=this.color.evaluate(i,t);n.x*=a.r,n.y*=a.g,n.z*=a.b,`alpha`in a&&(n.w*=a.alpha)}};O([_()],Pe.prototype,`enabled`,void 0),O([_(s)],Pe.prototype,`range`,void 0),O([_(L)],Pe.prototype,`color`,void 0),new e(1,1,1),new e(0,0,1);var Fe=class{system;particleSystem;subSystem;subParticleSystem;type=`NeedleParticleSubEmitter`;emitterType;emitterProbability;q_=new d;v_=new e;v2_=new e;_emitterMatrix=new de;_circularBuffer;constructor(e,t,n,r){this.system=e,this.particleSystem=t,this.subSystem=n,this.subParticleSystem=r,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0),this._circularBuffer=new p(()=>new de,1e3)}clone(){throw Error(`Method not implemented.`)}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld),this._emitterMatrix.setPosition(0,0,0),this.emitterType===ze.Birth&&this.run(e)}update(e,t){this.run(e)}frameUpdate(e){}toJSON(){}reset(){}run(e){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState||this.emitterProbability&&Math.random()>this.emitterProbability)return;let t=this.system.deltaTime;if(this.emitterType===ze.Death){let n=e.life;if(e[Qe]!==void 0&&(n=e[Qe]),!(e.age+t*1.2>=n))return;let r=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=r}let n=new de;n.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||n.multiplyMatrices(this._emitterMatrix,n),this.subParticleSystem.emit(t,e.emissionState,n)}},Z=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ie=ne(`debugparticles`),Le=ne(`noprogressive`),Re=ne(`debugprogressive`),ze;(function(e){e[e.Birth=0]=`Birth`,e[e.Collision=1]=`Collision`,e[e.Death=2]=`Death`,e[e.Trigger=3]=`Trigger`,e[e.Manual=4]=`Manual`})(ze||={});var Q=class extends b{renderMode;particleMaterial;trailMaterial;particleMesh;maxParticleSize;minParticleSize;velocityScale;cameraVelocityScale;lengthScale;start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&h()){let e=`ParticleSystem \"${this.name}\" has non-default min/max particle size. This may not render correctly. Please set min size to 0 and the max size to 0.5 and use the \"StartSize\" setting instead`;console.warn(e)}}get transparent(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){let r=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(r){if(r.type===`MeshStandardMaterial`){Ie&&console.debug(`ParticleSystemRenderer.getMaterial: MeshStandardMaterial detected, converting to MeshBasicMaterial. See https://github.com/Alchemist0823/three.quarks/issues/101`),`map`in r&&r.map&&(r.map.colorSpace=t,r.map.premultiplyAlpha=!1);let i=new n;i.copy(r),e?this.trailMaterial=i:this.particleMaterial=i}r.map&&(r.map.colorSpace=t,r.map.premultiplyAlpha=!1),e&&r.side===0&&(r=r.clone(),r.side=1,e?this.trailMaterial=r:this.particleMaterial=r)}return r&&!Le&&r._didRequestTextureLOD===void 0&&(r._didRequestTextureLOD=0,Re&&console.log(`Load material LOD`,r.name),ae.assignTextureLOD(r,0)),r}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof i&&(t=this.particleMesh.geometry),t===null)){t=new u(1,1);let e=t.attributes.uv;for(let t=0;t=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){let t=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random()),n=this._lastDistance/this.system.deltaTime*t;Number.isFinite(n)||(n=0),e+=n}let t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);let n=this.system.maxParticles-this.system.currentParticles;return g.clamp(e,0,n/this.system.deltaTime)}},We=class extends Ve{genValue(){return this.system.isPlaying,0}},Ge=class{system;get context(){return this.system.context}constructor(e){this.type=Object.getPrototypeOf(this).constructor.name||`ParticleSystemBaseBehaviour`,e&&(this.system=e)}type;initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw Error(`Method not implemented.`)}clone(){throw Error(`Method not implemented.`)}reset(){}},Ke=class extends Ge{type=`NeedleTextureSheet`;update(e,t){let n=this.system.textureSheetAnimation;if(n.enabled){let t=e.age/e.life,r=n.evaluate(t);r!==void 0&&(e.uvTile=r)}}},qe=Symbol(`particleRotation`),Je=class extends Ge{type=`NeedleRotation`;initialize(e){e[qe]=Math.random()}update(e,t){if(e.rotation===void 0)return;let n=e.age/e.life;if(typeof e.rotation==`number`&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(n,e[qe])*t:this.system.renderer.renderMode===k.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){let r=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(n,r)*t}}},Ye=Symbol(`sizeLerpFactor`),Xe=new e,Ze=class extends Ge{type=`NeedleSize`;_minSize=0;_maxSize=1;initialize(e){e[Ye]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){let n=e.age/e.life,r=1;this.system.sizeOverLifetime.enabled&&(r*=this.system.sizeOverLifetime.evaluate(n,void 0,e[Ye]).x);let i=1;this.system.renderer.renderMode!==k.Mesh&&(i=this.system.worldScale.x/this.system.cameraScale);let a=x(e.startSize).multiplyScalar(r*i);if(e.size.set(a.x,a.y,a.z),this.system.localspace){let t=gt(this.system,Xe);e.size.x*=t.x,e.size.y*=t.y,e.size.z*=t.z}}},Qe=Symbol(`particleLife`),$e=Symbol(`trailLifetime`),et=Symbol(`trailStartLength`),tt=Symbol(`trailWidthRandom`),nt=class extends Ge{type=`NeedleTrail`;initialize(e){e instanceof fe&&(e[Qe]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[$e]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[$e]),e[et]=e.length,e[tt]=Math.random())}update(e){if(this.system.trails?.enabled&&e instanceof fe){let t=e,n=e.age/e[Qe],r=e.previous.values(),i=e.previous.length;for(let a=0;ae[Qe]){e.velocity.set(0,0,0);let n=(e.age-e[Qe])/e[$e];t.length=g.lerp(e[et],0,n)}}}},rt=Symbol(`startVelocity`),it=Symbol(`gravityModifier`),at=Symbol(`gravitySpeed`),ot=Symbol(`velocity lerp factor`),st=new e;new d;var ct=class extends Ge{type=`NeedleVelocity`;_gravityDirection=new e;initialize(e){let t=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());let n=this.system.shape.getDirection(e,e.position);e.velocity.x=n.x*e.startSpeed,e.velocity.y=n.y*e.startSpeed,e.velocity.z=n.z*e.startSpeed,this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[rt]?e[rt].copy(e.velocity):e[rt]=e.velocity.clone();let r=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[it]=r*t,e[at]=r*t*.5,e[ot]=Math.random(),this.system.velocityOverLifetime?.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===N.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){let n=e[rt],r=e[it];if(r!==0){let i=r*e[at];st.copy(this._gravityDirection).multiplyScalar(i),e[at]+=t*.05,n.add(st)}e.velocity.copy(n);let i=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,i,e[ot]);let a=this.system.noise;a.enabled&&a.apply(0,e.position,e.velocity,t,e.age,e.life);let o=this.system.sizeBySpeed;o?.enabled&&(e.size=o.evaluate(e.velocity,i,e[ot],e.size));let s=this.system.colorBySpeed;s?.enabled&&s.evaluate(e.velocity,e[ot],e.color);let c=this.system.velocityOverLifetime;c.enabled&&c.apply(e,0,e.position,e.velocity,t,e.age,e.life);let l=this.system.limitVelocityOverLifetime;if(l.enabled&&l.apply(e.position,n,e.velocity,e.size,i,t,1),this.system.worldspace){let t=this.system.worldScale;e.velocity.x*=t.x,e.velocity.y*=t.y,e.velocity.z*=t.z}}},lt=Symbol(`colorLerpFactor`),ut=new y(1,1,1,1),dt=new y(1,1,1,1),ft=class extends Ge{type=`NeedleColor`;initialize(e){}_init(e){let t=this.system.renderer.particleMaterial;dt.copy(this.system.main.startColor.evaluate(Math.random())),t?.color&&(ut.copy(t.color),dt.multiply(ut)),dt.convertLinearToSRGB(),e.startColor.set(dt.r,dt.g,dt.b,dt.alpha),e.color.copy(e.startColor),e[lt]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){let t=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(t,e[lt]);e.color.set(n.r,n.g,n.b,`alpha`in n?n.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}},pt=class{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new Ue(this.system)}get prewarm(){return!1}get material(){return this.system.renderer.getMaterial(this.system.trails.enabled)}get layers(){return this.system.gameObject.layers}update(){this.emission.update()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Be(this.system.main.startLifetime)}get startSpeed(){return new Be(this.system.main.startSpeed)}get startRotation(){return new Be(this.system.main.startRotation)}get startSize(){return new Be(this.system.main.startSize)}startLength;get startColor(){return new le(new ce(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new We(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return w.Trail;switch(this.system.renderer.renderMode){case k.Billboard:return w.BillBoard;case k.Stretch:return w.StretchedBillBoard;case k.HorizontalBillboard:return w.HorizontalBillBoard;case k.VerticalBillboard:return w.VerticalBillBoard;case k.Mesh:return w.Mesh}return w.BillBoard}rendererEmitterSettings={startLength:new se(220),followLocalOrigin:!1};get speedFactor(){let e=this.system.main.simulationSpeed;return this.system.renderer?.renderMode===k.Stretch&&(e*=this.system.renderer.velocityScale??1),e}flatWhiteTexture;clonedTexture={original:void 0,clone:void 0};get texture(){let e=this.material;if(e&&e.map){let n=e.map;if(this.clonedTexture.original!==n||!this.clonedTexture.clone){let e=n.clone();e.premultiplyAlpha=!1,e.colorSpace=t,this.clonedTexture.original=n,this.clonedTexture.clone=e}return this.clonedTexture.clone}return this.flatWhiteTexture||=v(new y(1,1,1,1),1),this.flatWhiteTexture}get startTileIndex(){return new He(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??1}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===N.World}},mt=class{burstParticleIndex=0;burstParticleCount=0;isBursting=!1;travelDistance=0;previousWorldPos;burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0},$=class t extends b{play(e=!1){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(e=!0){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,n=!1){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.stop(!1,n)},!0),this._isPlaying=!1,this._time=0,n&&this.reset()}reset(){this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,this.emission?.reset())}_state;emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||=new mt,this._state.waitEmiting=e,this._state.time=0;let t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}get playOnAwake(){return this.main.playOnAwake}set playOnAwake(e){this.main.playOnAwake=e}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.particleNum??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===N.World}get localspace(){return this.main.simulationSpace===N.Local}__worldQuaternion=new d;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new d;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new e;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new e;get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,ee(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}addBehaviour(e){return this._particleSystem?(e instanceof Ge&&(e.system=this),Ie&&console.debug(`Add custom ParticleSystem Behaviour`,e),this._particleSystem.addBehavior(e),!0):!1}removeBehaviour(e){if(!this._particleSystem)return!1;let t=this._particleSystem.behaviors,n=t.indexOf(e);return n===-1?!0:((h()||Ie)&&console.debug(`Remove custom ParticleSystem Behaviour`,n,e),t.splice(n,1),!0)}removeAllBehaviours(){return this._particleSystem?(this._particleSystem.behaviors.length=0,!0):!1}get behaviours(){return this._particleSystem?this._particleSystem.behaviors:null}get particleSystem(){return this._particleSystem??null}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;_didPreWarm=!1;set bursts(e){for(let t=0;t0&&console.log(`SubEmitters: `,e,this),this._subEmitterSystems=e}_subEmitterSystems;onAfterDeserialize(e){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(let e of this._subEmitterSystems)e._deserialize(this.context,this.gameObject)}awake(){if(this._worldPositionFrame=-1,this._renderer=this.gameObject.getComponent(Q),!this.main)throw Error(`Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.`);this._container=new o,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new pe,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new pt(this),this._particleSystem=new ue(this._interface),this._particleSystem.addBehavior(new Ze(this)),this._particleSystem.addBehavior(new ft(this)),this._particleSystem.addBehavior(new Ke(this)),this._particleSystem.addBehavior(new Je(this)),this._particleSystem.addBehavior(new ct(this)),this._particleSystem.addBehavior(new nt(this)),this._batchSystem.addSystem(this._particleSystem);let e=this._particleSystem.emitter;this.context.scene.add(e),this.inheritVelocity.system&&this.inheritVelocity.system!==this&&(this.inheritVelocity=this.inheritVelocity.clone()),this.inheritVelocity.awake(this),Ie&&(console.log(this),this.gameObject.add(new a(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof i&&this._interface.renderMode==w.Mesh&&ae.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==w.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){this._container?.removeFromParent(),this._batchSystem?.removeFromParent(),this._particleSystem?.emitter.removeFromParent(),this._particleSystem?.dispose()}onEnable(){this.main&&(this.inheritVelocity&&(this.inheritVelocity.system=this),this._batchSystem&&(this._batchSystem.visible=!0),this.playOnAwake&&this.play(),this._isPlaying=this.playOnAwake)}onDisable(){this._batchSystem&&(this._batchSystem.visible=!1)}onBeforeRender(){this.main&&(this._didPreWarm===!1&&this.main?.prewarm===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){if(!this.emission?.enabled||this.emission.rateOverTime.getMax()<=0)return;let e=1/60,t=this.main.duration,n=this.main.startLifetime.getMax(),r=Math.min(Math.max(t,n)/Math.max(.01,this.main.simulationSpeed),1e3),i=Math.ceil(r/e),a=Date.now();Ie&&console.log(`Particles ${this.name} - Prewarm for ${i} frames (${r} sec). Duration: ${t}, Lifetime: ${n}`);for(let t=0;t=this.maxParticles);t++){let t=Date.now()-a;if(t>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${t}`);break}this.onUpdate(),this.onSimulate(e)}}_lastBatchesCount=-1;onSimulate(e){if(this._batchSystem){let t=this.context.time.frameCount%60==0;this._lastBatchesCount!==this._batchSystem.batches.length&&(this._lastBatchesCount=this._batchSystem.batches.length,t=!0),t&&this.updateLayers(),this._batchSystem.update(e)}this._time+=e,this._time>this.duration&&(this._time=0)}updateLayers(){if(this._batchSystem)for(let e=0;e<74tX~DNAN(5 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 N{QrSNcL=%P007|r3{?OC literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js b/Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js new file mode 100644 index 0000000..15b6a8b --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js @@ -0,0 +1,949 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./materialx.eMaybKAQ.js","./materialx.CnHmG--Y.js","./rolldown-runtime.CYVBeYYp.js","./three@0.169.19.js","./rapier3d.DBFmcAzL.js","./needle-engine.dep.DFJFZC0m.js","./postprocessing.Wy71DpiM.js","./N8AO.C2WXsanG.js","./postprocessing.ao.BRYreHJS.js","./three-examples.extras@0.169.19.js","./peerjs.UdR1_Ath.js","./needle-engine.BJP2NBoC.js","./needle-engine.dep.B3nA4wQ5.js","./three-mesh-bvh.B-oXEGo2.js","./GenerateMeshBVHWorker.DMD7ZOpN.js","./needle-engine@5.0.3.js","./needle-engine.extras.t1Dx-yNB.js","./needle-engine-webxr.DQA26K-l.js","./gltf-progressive.BBJGcb3s.js","./three-examples@0.169.19.js","./needle-engine-particles.Bw3zzNt3.js","./three-quarks.DALdLWPD.js","./needle-engine.extras.CDv9-f43.js"])))=>i.map(i=>d[i]); +import{n as e,r as t,t as n}from"./rolldown-runtime.CYVBeYYp.js";import{d as r}from"./materialx.CnHmG--Y.js";import{$n as i,A as a,Ar as o,At as s,B as c,Bt as l,Cn as u,Fr as d,Ft as f,Gn as p,H as m,Ir as h,Jt as g,Kn as _,L as v,Nt as ee,On as y,Ot as b,Pr as te,Qn as ne,Qt as re,S as ie,St as ae,Wt as oe,X as se,Xt as ce,Yt as le,Z as ue,Zn as de,Zt as x,_ as fe,_n as pe,_r as me,a as he,ct as ge,d as _e,dt as ve,et as ye,fn as S,gn as C,gr as be,h as xe,i as Se,in as Ce,it as we,jr as Te,jt as Ee,k as De,kr as w,lr as Oe,mn as ke,mr as Ae,nr as je,o as Me,on as Ne,or as Pe,p as Fe,pr as Ie,qt as T,rr as Le,rt as Re,sr as ze,st as Be,tr as Ve,tt as He,ur as Ue,ut as We,v as Ge,vn as Ke,w as qe,wn as E,x as Je,xr as Ye,y as Xe,yn as Ze}from"./three@0.169.19.js";import{a as Qe,c as $e,i as et,n as tt,o as D,r as nt,s as rt,t as it}from"./three-mesh-ui.CgGzZ3ml.js";import{A as at,C as ot,E as st,M as ct,S as lt,T as ut,_ as dt,a as ft,h as pt,i as mt,v as ht,w as gt,y as _t}from"./three-examples@0.169.19.js";import{n as vt,o as yt,r as bt,t as xt}from"./gltf-progressive.BBJGcb3s.js";var St=window.location.search.includes(`debugcontext`),O;(function(e){e.ContextRegistered=`ContextRegistered`,e.ContextCreationStart=`ContextCreationStart`,e.ContextCreated=`ContextCreated`,e.ContextFirstFrameRendered=`ContextFirstFrameRendered`,e.ContextDestroying=`ContextDestroying`,e.ContextDestroyed=`ContextDestroyed`,e.MissingCamera=`MissingCamera`,e.ContextClearing=`ContextClearing`,e.ContextCleared=`ContextCleared`})(O||={});var k=class{static get Current(){return globalThis[`NeedleEngine.Context.Current`]}static set Current(e){globalThis[`NeedleEngine.Context.Current`]=e}static get All(){return this.Registered}static Registered=[];static register(e){this.Registered.indexOf(e)===-1&&(St&&console.warn(`Registering context`),this.Registered.push(e),this.dispatchCallback(O.ContextRegistered,e))}static unregister(e){let t=this.Registered.indexOf(e);t!==-1&&(St&&console.warn(`Unregistering context`),this.Registered.splice(t,1))}static _callbacks={};static registerCallback(e,t){this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t)}static unregisterCallback(e,t){if(!this._callbacks[e])return;let n=this._callbacks[e].indexOf(t);n!==-1&&this._callbacks[e].splice(n,1)}static dispatchCallback(e,t,n){if(!this._callbacks[e])return!0;let r={event:e,context:t};if(n)for(let e in n)r[e]=n[e];let i=[];return this._callbacks[e].forEach(e=>{let t=e(r);t instanceof Promise&&i.push(t)}),Promise.all(i)}static addContextCreatedCallback(e){this.registerCallback(O.ContextCreated,e)}static addContextDestroyedCallback(e){this.registerCallback(O.ContextDestroyed,e)}},Ct=new Map;function wt(e=globalThis.location?.hostname){if(Ct.has(e))return Ct.get(e);let t=/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|localhost/.test(e);return Ct.set(e,t),t===!0}function Tt(){return window.location.hostname.includes(`glitch.me`)}var Et=()=>e=>e;function Dt(e){return Et()(e)}function Ot(){return!!A(`debug`)}var kt=class{_factory;_cache=[];_maxSize;_index=0;constructor(e,t){this._factory=e,this._maxSize=t}get(){let e=this._index%this._maxSize;return this._index++,this._cache.length<=e&&(this._cache[e]=this._factory()),this._cache[e]}},At=!1,jt=[];typeof window<`u`&&setTimeout(()=>{if(At){let e={},t=new URL(window.location.href),n=new URL(t);n.searchParams.append(`console`,``);let r=n.toString().replace(/=$|=(?=&)/g,``);for(let n of jt){let r=new URL(t);r.searchParams.append(n,``),e[n]=r.toString().replace(/=$|=(?=&)/g,``)}console.log(`🌵 ?help: Debug Options for Needle Engine. +Append any of these parameters to the URL to enable specific debug options. +Example: ${r} will show an onscreen console window.`);let i=At===!0?``:` (containing "${At}")`;console.group(`Available URL parameters:`+i);for(let t of Object.keys(e).sort())typeof At==`string`&&!t.toLowerCase().includes(At.toLowerCase())||(console.groupCollapsed(t),console.log(`Reload with this flag enabled:`),console.log(e[t]),console.groupEnd());console.groupEnd()}},100);function Mt(){return new URLSearchParams(globalThis.location?.search)}function A(e){At&&!jt.includes(e)&&jt.push(e);let t=Mt();if(t.has(e)){let n=t.get(e);if(n){let e=Number(n);return isNaN(e)?n:e}else return!0}return!1}At=A(`help`);function Nt(e,t){let n=Mt();n.has(e)?n.set(e,t):n.append(e,t),document.location.search=n.toString()}function Pt(e,t,n=!0){let r=Mt();r.has(e)?t===null?r.delete(e):r.set(e,t):t!==null&&r.append(e,t),n?It(e,r):Lt(e,r)}function Ft(e,t,n){e.has(t)?e.set(t,n.toString()):e.append(t,n.toString())}function It(e,t,n){window.history.pushState(n,e,`?`+t.toString())}function Lt(e,t,n){window.history.replaceState(n,e,`?`+t.toString())}function Rt(e){for(var t=``,n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`,r=n.length,i=0;i{setTimeout(t,e)})}function qt(e,t){if(e<=0)return Promise.resolve();if(t||=k.Current,!t)return Promise.reject(`No context`);let n=t.time.frameCount+e;return new Promise((e,r)=>{if(!t)return r(`No context`);let i=()=>{t.time.frameCount>=n&&(t.pre_update_callbacks.splice(t.pre_update_callbacks.indexOf(i),1),e())};t.pre_update_callbacks.push(i)})}var Jt=A(`debugresolveurl`),Yt=`rel:`;function Xt(e,t){return Zt(e,t)}function Zt(e,t){if(t===void 0)return Jt&&console.warn(`getPath: uri is undefined, returning uri`,t),t;if(t.startsWith(`./`))return t;if(t.startsWith(`http`))return Jt&&console.warn(`getPath: uri is absolute, returning uri`,t),t;if(e===void 0)return Jt&&console.warn(`getPath: source is undefined, returning uri`,t),t;t.startsWith(`rel:`)&&(t=t.substring(4));let n=e.lastIndexOf(`/`);if(n>=0){let r=e.substring(0,n+1);for(;r.endsWith(`/`)&&t.startsWith(`/`);)t=t.substring(1);let i=r+t;return Jt&&console.log(`source:`,e,`changed uri +from`,t,` +to `,i,` +basePath: `+r),i}return t}function Qt(e){if(e)return e=e.trim(),e=e.split(`?`)[0]?.split(`#`)[0],e}var $t=class{subscribeWrite(e){this.writeCallbacks.push(e)}unsubscribeWrite(e){let t=this.writeCallbacks.indexOf(e);t!==-1&&this.writeCallbacks.splice(t,1)}writeCallbacks=[];constructor(e,t){this._object=e,this._prop=t,this._wrapperProp=Symbol(`$`+t),this.apply()}_applied=!1;_object;_prop;_wrapperProp;apply(){if(this._applied||!this._object)return;let e=this._object,t=this._prop;if(e[t]===void 0)return;this._applied=!0,e[this._wrapperProp]!==void 0&&console.warn(`Watcher is being applied to an object that already has a wrapper property. This is not (yet) supported`);let n=e[t];e[this._wrapperProp]=n,Object.defineProperty(e,t,{get:()=>e[this._wrapperProp],set:t=>{e[this._wrapperProp]=t;for(let e of this.writeCallbacks)e(t,this._prop)}})}revoke(){if(!this._applied||!this._object)return;this._applied=!1;let e=this._object,t=this._prop;Reflect.deleteProperty(e,t),e[t]=e[this._wrapperProp],Reflect.deleteProperty(e,this._wrapperProp)}dispose(){this.revoke(),this.writeCallbacks.length=0,this._object=null}},en=class e{_watches=[];constructor(t,n){if(Array.isArray(n))for(let r of n)this._watches.push(new e(t,r));else this._watches.push(new $t(t,n))}subscribeWrite(e){for(let t of this._watches)t.subscribeWrite(e)}unsubscribeWrite(e){for(let t of this._watches)t.unsubscribeWrite(e)}apply(){for(let e of this._watches)e.apply()}revoke(){for(let e of this._watches)e.revoke()}dispose(){for(let e of this._watches)e.dispose();this._watches.length=0}},tn=Symbol(`needle:watches`);function nn(e,t){if(!e[tn])if(e instanceof w)e[tn]=new en(e,[`x`,`y`]);else if(e instanceof o)e[tn]=new en(e,[`x`,`y`,`z`]);else if(e instanceof Te||e instanceof E)e[tn]=new en(e,[`x`,`y`,`z`,`w`]);else return!1;return e[tn].subscribeWrite(t),!0}function rn(e,t){if(!e)return;let n=e[tn];n&&n.unsubscribeWrite(t)}var j;(function(e){let t;function n(){if(t!==void 0)return t;let e=window.navigator.userAgent,n=/Windows|MacOS|Mac OS/.test(e),r=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return t=n&&!r&&!y()}e.isDesktop=n;let r;function i(){return r===void 0?r=window.orientation!==void 0||navigator.userAgent.indexOf(`IEMobile`)!==-1?!0:/iPhone|iPad|iPod|Android|IEMobile/i.test(navigator.userAgent):r}e.isMobileDevice=i;function a(){return s()}e.isIPad=a;let o;function s(){if(o!==void 0)return o;let e=navigator.userAgent.toLowerCase();return o=/iPad/.test(navigator.userAgent)||e.includes(`macintosh`)&&`ontouchend`in document}e.isiPad=s;let c;function l(){return c===void 0?c=/Android/.test(navigator.userAgent):c}e.isAndroidDevice=l;let u;function d(){return u===void 0?u=/WebXRViewer\//i.test(navigator.userAgent):u}e.isMozillaXR=d;let f;function p(){return f===void 0?f=/NeedleAppClip\//i.test(navigator.userAgent):f}e.isNeedleAppClip=p;let m;function h(){if(m!==void 0)return m;if(y()||s())return m=!1;let e=navigator.userAgent.toLowerCase();return m=navigator.userAgentData?navigator.userAgentData.platform===`macOS`:e.includes(`mac os x`)||e.includes(`macintosh`)}e.isMacOS=h;let g;function _(){return g===void 0?g=s()&&`xr`in navigator&&ae():g}e.isVisionOS=_;let v,ee=[`iPad Simulator`,`iPhone Simulator`,`iPod Simulator`,`iPad`,`iPhone`,`iPod`];function y(){return v===void 0?v=ee.includes(navigator.platform)||navigator.userAgent.includes(`Mac`)&&`ontouchend`in document:v}e.isiOS=y;let b;function te(){return b===void 0&&(b=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),b}e.isSafari=te;let ne;function re(){return ne===void 0?ne=navigator.userAgent.includes(`OculusBrowser`):ne}e.isQuest=re;let ie;function ae(){return ie===void 0&&(ie=document.createElement(`a`).relList.supports(`ar`)),ie}e.supportsQuickLookAR=ae;async function oe(){try{return(await navigator.permissions.query({name:`microphone`})).state!==`denied`}catch(e){return console.error("Error querying `microphone` permissions.",e),!1}}e.microphonePermissionsGranted=oe;let se;function ce(){if(se!==void 0)return se;let e=navigator.userAgent.match(/iPhone OS (\d+_\d+)/);if(e&&(se=e[1].replace(`_`,`.`)),!se){let e=navigator.userAgent.match(/(?:\(Macintosh;|iPhone;|iPad;).*Version\/(\d+\.\d+)/);e&&(se=e[1])}return se||=null,se}e.getiOSVersion=ce;let le;function ue(){if(le!==void 0)return le;let e=navigator.userAgent.match(/(?:CriOS|Chrome)\/(\d+\.\d+\.\d+\.\d+)/);return le=e?e[1].replace(`_`,`.`):null,le}e.getChromeVersion=ue;let de;function x(){if(de!==void 0)return de;let e=navigator.userAgent.match(/Version\/(\d+\.\d+)/);return de=e&&te()?e[1]:null,de}e.getSafariVersion=x})(j||={});function an(){return j.isDesktop()}function on(){return j.isMobileDevice()}function sn(){return j.isiPad()}function cn(){return j.isiPad()}function ln(){return j.isAndroidDevice()}function un(){return j.isMozillaXR()}function dn(){return j.isMacOS()}function fn(){return j.isiOS()}function pn(){return j.isSafari()}function mn(){return j.isQuest()}async function hn(){return j.microphonePermissionsGranted()}var gn=new WeakMap;function _n(e,t,n){if(!gn.get(e)){let t=new MutationObserver(t=>{yn(e,t)});gn.set(e,{observer:t,attributeChangedListeners:new Map}),t.observe(e,{attributes:!0})}let r=gn.get(e).attributeChangedListeners;return r.has(t)||r.set(t,[]),r.get(t).push(n),()=>{vn(e,t,n)}}function vn(e,t,n){if(!gn.get(e))return;let r=gn.get(e).attributeChangedListeners;if(!r.has(t))return;let i=r.get(t),a=i.indexOf(n);a!==-1&&(i.splice(a,1),i.length<=0&&(r.delete(t),gn.get(e)?.observer.disconnect(),gn.delete(e)))}function yn(e,t){let n=gn.get(e).attributeChangedListeners;for(let r of t)if(r.type===`attributes`){let t=r.attributeName,i=e.getAttribute(t);if(n.has(t))for(let e of n.get(t))e(i)}}var bn=class{reason;constructor(e){this.reason=e}};async function xn(e){let t=await Promise.allSettled(e).catch(e=>[new bn(e.message)]),n=!1,r=t.map(e=>`value`in e?e.value:(n=!0,new bn(e.reason)));return{anyFailed:n,results:r}}var Sn=A(`debugdebug`),Cn=!1;(A(`noerrors`)||A(`nooverlaymessages`))&&(Cn=!0);var wn=`needle_engine_global_error_container`,Tn;(function(e){e[e.Log=0]=`Log`,e[e.Warn=1]=`Warn`,e[e.Error=2]=`Error`})(Tn||={});function En(){return Fn}var Dn=[];function On(e){Dn.push(e)}var kn=!1;function An(...e){if(!kn){kn=!0;try{for(let t=0;t0&&(e+=` `),e+=r)}else typeof t==`string`&&(e=t);if(Rn.has(e))return;Rn.add(e)}let a=k.Current,o=a?.domElement??document.querySelector(`needle-engine`);if(a?.isInAR&&(o=a.arOverlayElement),o){if(Array.isArray(t)){let e=``;for(let n=0;n0&&(e+=` `),e+=r)}t=e}!t||t.length<=0||Hn(e,o,t,n)}}var Bn=new Map,Vn=.2;function Hn(e,t,n,r={}){if(n==null)return;let i=Gn(t);if(i.childElementCount>=20){let e=i.lastElementChild;Jn(e)}n.length>400&&(n=n.substring(0,400)+`...`);let a=r.key??n;if(Bn.has(a)){Bn.get(a)?.update(n,r);return}let o=Yn(e,n);i.prepend(o);let s=()=>{Bn.delete(a),Jn(o)},c=setTimeout(s,Math.max(Vn,r.duration??10)*1e3);Bn.set(a,{update:(e,t)=>{e.length>400&&(e=e.substring(0,400)+`...`),o.innerHTML=e,t.duration&&(clearTimeout(c),c=setTimeout(s,Math.max(Vn,t.duration)*1e3))},removeFunction:s})}function Un(){Sn&&console.log(`Clearing messages`);for(let e of Bn.values())e?.removeFunction.call(e);Bn.clear()}var Wn=` +@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap'); + +div[data-needle_engine_debug_overlay] { + font-family: 'Roboto Flex', sans-serif; + font-weight: 400; + font-size: 16px; +} + +div[data-needle_engine_debug_overlay] strong { + font-weight: 700; +} + +div[data-needle_engine_debug_overlay] a { + color: white; + text-decoration: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.3); +} + +div[data-needle_engine_debug_overlay] a:hover { + text-decoration: none; + border: none; +} + +div[data-needle_engine_debug_overlay] .log strong { + color: rgba(200,200,200,.9); +} + +div[data-needle_engine_debug_overlay] .warn strong { + color: rgba(255,255,230, 1); +} + +div[data-needle_engine_debug_overlay] .error strong { + color: rgba(255,100,120, 1); +} +`;function Gn(e){globalThis[wn]||(globalThis[wn]=new Map);let t=globalThis[wn];if(t.has(e))return t.get(e);{let n=document.createElement(`div`);t.set(e,n),n.setAttribute(`data-needle_engine_debug_overlay`,``),n.classList.add(`debug-container`),n.style.cssText=` + position: absolute; + top: 0; + right: 5px; + padding-top: env(safe-area-inset-top, 0px); + max-width: 70%; + max-height: calc(100% - 105px); + z-index: 100000; + pointer-events: scroll; + display: flex; + align-items: end; + flex-direction: column; + color: white; + overflow: auto; + word-break: break-word; + `,j.isNeedleAppClip()&&(n.style.left=`5px`,n.style.right=`unset`);let r=document.querySelector(`meta[name="viewport"]`);r&&!r.getAttribute(`content`)?.includes(`viewport-fit=`)&&r.setAttribute(`content`,r.getAttribute(`content`)+`,viewport-fit=cover`),e.shadowRoot?e.shadowRoot.appendChild(n):e.appendChild(n);let i=document.createElement(`style`);return i.innerHTML=Wn,n.appendChild(i),n}}var Kn=Symbol(`logtype`),qn=new Map;function Jn(e){e.remove();let t=e[Kn],n=qn.get(t)??[];n.push(e),qn.set(t,n)}function Yn(e,t){if(qn.has(e)){let n=qn.get(e);if(n.length>0){let e=n.pop();return e.innerHTML=t,e}}let n=document.createElement(`div`);switch(n.setAttribute(`data-id`,`__needle_engine_debug_overlay`),n.style.marginRight=`5px`,n.style.padding=`.5em`,n.style.backgroundColor=`rgba(0,0,0,.9)`,n.style.marginTop=`5px`,n.style.marginBottom=`3px`,n.style.borderRadius=`8px`,n.style.pointerEvents=`all`,n.style.userSelect=`text`,n.style.maxWidth=`250px`,n.style.whiteSpace=`pre-wrap`,n.style[`backdrop-filter`]=`blur(10px)`,n.style[`-webkit-backdrop-filter`]=`blur(10px)`,n.style.backgroundColor=`rgba(20,20,20,.8)`,n.style.boxShadow=`inset 0 0 80px rgba(0,0,0,.2), 0 0 5px rgba(0,0,0,.2)`,n.style.border=`1px solid rgba(160,160,160,.2)`,n[Kn]=e,e){case Tn.Log:n.classList.add(`log`),n.style.color=`rgba(200,200,200,.7)`,n.style.backgroundColor=`rgba(40,40,40,.7)`;break;case Tn.Warn:n.classList.add(`warn`),n.style.color=`rgb(255, 255, 150)`,n.style.backgroundColor=`rgba(50,50,20,.8)`;break;case Tn.Error:n.classList.add(`error`),n.style.color=`rgb(255, 50, 50`,n.style.backgroundColor=`rgba(50,20,20,.8)`;break}return n.title=`Open the browser console (F12) for more information`,n.innerHTML=t,n}var Xn=A(`nodevlogs`),Zn,Qn;function M(){if(Xn)return!1;if(Zn!==void 0)return Zn;if(Qn!==void 0)return Qn;let e=wt();return e||=window.location.hostname.endsWith(`.local-credentialless.webcontainer.io`),Qn=e,e}function $n(e){Zn=e}var er=class{random(e,t){return Array.isArray(e)?e.length<=0?null:e[Math.floor(Math.random()*e.length)]:e!==void 0&&t!==void 0?Math.random()*(t-e)+e:Math.random()}randomVector3(e,t=0,n=1){e.x=this.random(t,n),e.y=this.random(t,n),e.z=this.random(t,n)}clamp(e,t,n){return en?n:e}clamp01(e){return this.clamp(e,0,1)}lerp(e,t,n){return n=n<0?0:n,n=n>1?1:n,e+(t-e)*n}inverseLerp(e,t,n){return(n-e)/(t-e)}remap(e,t,n,r,i){return r+(i-r)*(e-t)/(n-t)}moveTowards(e,t,n){return e+=n,(n<0&&e0&&e>t)&&(e=t),e}Rad2Deg=180/Math.PI;Deg2Rad=Math.PI/180;Epsilon=1e-5;toDegrees(e){return e*180/Math.PI}toRadians(e){return e*Math.PI/180}tan(e){return Math.tan(e)}gammaToLinear(e){return e**2.2}linearToGamma(e){return e**(1/2.2)}approximately(e,t,n=2**-52){for(let r of tr){let i=e[r],a=t[r];if(i===void 0||a===void 0)break;if(Math.abs(i-a)>n)return!1}return!0}easeInOutCubic(e){return e<.5?4*e*e*e:1-(-2*e+2)**3/2}},tr=[`x`,`y`,`z`,`w`],N=new er,nr=class{y;s;alpha=0;constructor(e){this.setAlpha(e),this.y=null,this.s=null}setAlpha(e){if(e<=0||e>1)throw Error();this.alpha=e}filter(e,t){t&&this.setAlpha(t);let n;return n=this.y?this.alpha*e+(1-this.alpha)*this.s:e,this.y=e,this.s=n,n}lastValue(){return this.y}reset(e){this.y=e,this.s=e}},rr=class{freq;minCutOff;beta;dCutOff;x;dx;lasttime;constructor(e,t=1,n=0,r=1){if(e<=0||t<=0||r<=0)throw Error();this.freq=e,this.minCutOff=t,this.beta=n,this.dCutOff=r,this.x=new nr(this.alpha(this.minCutOff)),this.dx=new nr(this.alpha(this.dCutOff)),this.lasttime=null}alpha(e){let t=1/this.freq;return 1/(1+1/(2*Math.PI*e)/t)}filter(e,t=null){this.lasttime&&t&&(this.freq=1/(t-this.lasttime)),this.lasttime=t;let n=this.x.lastValue(),r=n?(e-n)*this.freq:0,i=this.dx.filter(r,this.alpha(this.dCutOff)),a=this.minCutOff+this.beta*Math.abs(i);return this.x.filter(e,this.alpha(a))}reset(e){e!=null&&this.x.reset(e),this.x.alpha=this.alpha(this.minCutOff),this.dx.alpha=this.alpha(this.dCutOff),this.lasttime=null}},ir=class{x;y;z;constructor(e,t=1,n=0,r=1){this.x=new rr(e,t,n,r),this.y=new rr(e,t,n,r),this.z=new rr(e,t,n,r)}filter(e,t,n=null){t.x=this.x.filter(e.x,n),t.y=this.y.filter(e.y,n),t.z=this.z.filter(e.z,n)}reset(e){this.x.reset(e?.x),this.y.reset(e?.y),this.z.reset(e?.z)}},ar=`needle:cameraController`;function or(e){return e[ar]}function sr(e,t,n){n?e[ar]=t:e[ar]===t&&(e[ar]=null)}var cr=`needle:autofit`;function lr(e){return e[cr]===void 0?!0:e[cr]!==!1}function ur(e,t){e[cr]=t}var dr=void 0,fr={x:0,y:0,width:0,height:0},pr=A(`debugfocusrect`);function mr(e,t,n,r,i){e instanceof Element&&(pr&&e instanceof HTMLElement&&(e.style.outline=`2px dashed rgba(255, 150, 0, .8)`),e=e.getBoundingClientRect()),dr=i.domElement.getBoundingClientRect();let a=fr;a.x=e.x,a.y=e.y,a.width=e.width,a.height=e.height,a.x-=dr.x,a.y-=dr.y;let o=dr.width,s=dr.height,c=r.view,l=t.zoom,u=c?.offsetX||0,d=c?.offsetY||0,f=dr.width,p=dr.height;f/=l,p/=l,u=f*(l-1)*.5,d=p*(l-1)*.5;let m=a.x+a.width*.5,h=a.y+a.height*.5,g=dr.width*.5,_=dr.height*.5,v=m-g,ee=h-_;u-=v/l,d-=ee/l,t.offsetX!==void 0&&(u+=t.offsetX*(dr.width*.5)),t.offsetY!==void 0&&(d-=t.offsetY*(dr.height*.5));let y=c?.offsetX||u,b=c?.offsetY||d;u=N.lerp(y,u,n),d=N.lerp(b,d,n);let te=c?.width||o,ne=c?.height||s;f=N.lerp(te,f,n),p=N.lerp(ne,p,n),r.setViewOffset(o,s,u,d,f,p),r.updateProjectionMatrix(),t.damping>0&&(t.damping*=1-n,t.damping<.01&&(t.damping=0),t.damping=Math.max(0,t.damping))}function hr(e,t,n){let r=e.length(),i=t.length(),a=N.lerp(r,i,n);return e.lerp(t,n).normalize().multiplyScalar(a)}var gr=new E,_r=new E().setFromAxisAngle(new o(0,1,0),Math.PI);function vr(e,t){e.lookAt(t),e.quaternion.multiply(_r)}function yr(e,t,n=!0,r=!1){if(e===t)return;gr.copy(e.quaternion);let i=Or(t),a=Or(e);if(r){if(Fr(e,Pr(t)),n){let t=a.y,n=a.sub(Kr(e));n.y=t,e.lookAt(n),e.quaternion.multiply(_r)}Number.isNaN(e.quaternion.x)&&e.quaternion.copy(gr);return}n&&(i.y=a.y),e.lookAt(i),Number.isNaN(e.quaternion.x)&&e.quaternion.copy(gr)}function br(e,t,n,r=1){if(n){let i=P(0,0,0),a=t.x/window.innerWidth*2-1,o=-(t.y/window.innerHeight)*2+1;i.set(a,o,0),i.unproject(n);let s=n.worldPosition,c=e.worldPosition.distanceTo(s),l=i.sub(s);l.multiplyScalar(r*3.6*c);let u=n.worldPosition.add(l);return e.lookAt(u),u}return null}var xr=new kt(()=>new o,100);function P(e,t,n){let r=xr.get();return r.set(0,0,0),e instanceof o?r.copy(e):Array.isArray(e)?r.set(e[0],e[1],e[2]):e instanceof DOMPointReadOnly?r.set(e.x,e.y,e.z):typeof e==`number`?(r.x=e,r.y=t===void 0?r.x:t,r.z=n===void 0?r.x:n):typeof e==`object`&&(r.x=e.x,r.y=e.y,r.z=e.z),r}var Sr=new kt(()=>new a,30);function Cr(e){let t=Sr.get();return e?t.copy(e):t.set(0,0,0),t}var wr=new kt(()=>new E,100);function Tr(e,t,n,r){let i=wr.get();return i.identity(),e instanceof E?i.copy(e):e instanceof DOMPointReadOnly?i.set(e.x,e.y,e.z,e.w):typeof e==`number`&&t!==void 0&&n!==void 0&&r!==void 0?i.set(e,t,n,r):typeof e==`object`&&`x`in e&&`y`in e&&`z`in e&&`w`in e&&i.set(e.x,e.y,e.z,e.w),i}var Er=new kt(()=>new o,100),Dr=Symbol(`lastMatrixWorldUpdateKey`);function Or(e,t=null,n=!0){let r=t??Er.get();return e?e.parent?(n&&e.updateWorldMatrix(!0,!1),e.matrixWorldNeedsUpdate&&e[Dr]!==Date.now()&&(e[Dr]=Date.now(),e.updateMatrixWorld()),r.setFromMatrixPosition(e.matrixWorld),r):r.copy(e.position):r.set(0,0,0)}function kr(e,t){if(!e)return e;let n=Er.get();return t!==n&&n.copy(t),e.parent!==null&&e.parent.worldToLocal(n),e.position.set(n.x,n.y,n.z),e}function Ar(e,t,n,r){let i=Er.get();return i.set(t,n,r),kr(e,i),e}var jr=new kt(()=>new E,100),Mr=new E,Nr=new E;function Pr(e,t=null){if(!e)return jr.get().identity();let n=t??jr.get();return e.parent?(e.getWorldQuaternion(n),n):n.copy(e.quaternion)}function Fr(e,t){if(!e)return;t!==Mr&&Mr.copy(t);let n=Mr;(e?.parent)?.getWorldQuaternion(Nr),Nr.invert();let r=Nr.multiply(n);e.quaternion.set(r.x,r.y,r.z,r.w)}function Ir(e,t,n,r,i){Mr.set(t,n,r,i),Fr(e,Mr)}var Lr=new kt(()=>new o,100),Rr=new o;function zr(e,t=null){return t||=Lr.get(),e?e.parent?(e.getWorldScale(t),t):t.copy(e.scale):t.set(0,0,0)}function Br(e,t){if(!e)return;if(!e.parent){e.scale.copy(t);return}let n=Rr;e.parent.getWorldScale(n),e.scale.copy(t),e.scale.divide(n)}var Vr=new o,Hr=new E;function Ur(e){return Pr(e,Hr),Vr.set(0,0,1).applyQuaternion(Hr)}var Wr=new kt(()=>new o,100),Gr=new E;function Kr(e,t){return t||=Wr.get().set(0,0,1),Pr(e,Gr),t.applyQuaternion(Gr)}var qr=new He,Jr=new He,Yr=new o;function Xr(e){let t=jr.get();return e.getWorldQuaternion(t),Jr.setFromQuaternion(t),Jr}function Zr(e,t){Fr(e,jr.get().setFromEuler(t))}function Qr(e){let t=Xr(e),n=Yr;return n.set(t.x,t.y,t.z),n.x=N.toDegrees(n.x),n.y=N.toDegrees(n.y),n.z=N.toDegrees(n.z),n}function $r(e,t){ei(e,t.x,t.y,t.z,!0)}function ei(e,t,n,r,i=!0){i&&(t=N.toRadians(t),n=N.toRadians(n),r=N.toRadians(r)),qr.set(t,n,r),Mr.setFromEuler(qr),Fr(e,Mr)}function ti(e,t=!0){e&&(t?(function e(t){console.groupCollapsed((t.name?t.name:`(no name : `+t.type+`)`)+` %o`,t),t.children.forEach(e),console.groupEnd()})(e):e.traverse(function(e){for(var t=`|___`,n=e;n.parent!==null;)t=` `+t,n=n.parent;console.log(t+e.name+` <`+e.type+`>`)}))}function ni(e){let t=e?.name||``;if(!e)return t;let n=e.parent;for(;n;)t=n.name+`/`+t,n=n.parent;return t}function ri(e){if(e){let t=e;return t.blendMode!==void 0&&t.clampWhenFinished!==void 0&&t.enabled!==void 0&&t.fadeIn!==void 0&&t.getClip!==void 0}return!1}var ii=class e extends Ve{static vertex=` +varying vec2 vUv; +void main(){ + vUv = uv; + gl_Position = vec4(position.xy, 0., 1.0); +}`;constructor(){super({vertexShader:e.vertex,uniforms:{map:new Ye(null),flipY:new Ye(!0),writeDepth:new Ye(!1),depthTexture:new Ye(null)},fragmentShader:` +uniform sampler2D map; +uniform bool flipY; +uniform bool writeDepth; +uniform sampler2D depthTexture; + +varying vec2 vUv; + +void main(){ + vec2 uv = vUv; + if (flipY) uv.y = 1.0 - uv.y; + gl_FragColor = texture2D(map, uv); + + if (writeDepth) { + float depth = texture2D(depthTexture, uv).r; + gl_FragDepth = depth; + + // float linearDepth = (depth - 0.99) * 100.0; // Enhance near 1.0 values + // gl_FragColor = vec4(linearDepth, linearDepth, linearDepth, 1.0); + } +}`})}reset(){this.uniforms.map.value=null,this.uniforms.flipY.value=!0,this.uniforms.writeDepth.value=!1,this.uniforms.depthTexture.value=null,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}},ai=class e{static planeGeometry=new Ke(2,2,1,1);static renderer=new h({antialias:!1,alpha:!0});static perspectiveCam=new C;static orthographicCam=new ke;static scene=new ne;static blitMaterial=new ii;static mesh=new x(e.planeGeometry,e.blitMaterial);static copyTexture(e,t){t||=this.blitMaterial,this.blitMaterial.reset();let n=t||this.blitMaterial;n.uniforms.map.value=e,n.needsUpdate=!0,n.uniformsNeedUpdate=!0;let r=n.vertexShader;n.vertexShader=ii.vertex;let i=this.mesh;i.material=n,i.frustumCulled=!1,this.scene.children.length=0,this.scene.add(i),this.renderer.setSize(e.image.width,e.image.height),this.renderer.clear(),this.renderer.render(this.scene,this.perspectiveCam);let a=new be(this.renderer.domElement);return a.name=`Copy`,a.needsUpdate=!0,n.vertexShader=r,a}static blit(e,t,n){let{renderer:r=this.renderer,blitMaterial:i=this.blitMaterial,flipY:o=!1,depthTexture:s=null,depthTest:c=!0,depthWrite:l=!0}=n||{};this.blitMaterial.reset(),i.uniforms.map&&(i.uniforms.map.value=e),i.uniforms.flipY&&(i.uniforms.flipY.value=o),s?(i.uniforms.writeDepth=new Ye(!0),i.uniforms.depthTexture.value=s):(i.uniforms.writeDepth=new Ye(!1),i.uniforms.depthTexture.value=null),i.needsUpdate=!0,i.uniformsNeedUpdate=!0;let u=this.mesh;u.material=i,u.frustumCulled=!1,this.scene.children.length=0,this.scene.add(u);let d=r.getRenderTarget(),f=r.getContext();c?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST),r.state.buffers.depth.setMask(l),r.setClearColor(new a(0,0,0),0),r.setRenderTarget(t),r.clear(),r.render(this.scene,this.perspectiveCam),r.setRenderTarget(d),f.enable(f.DEPTH_TEST),r.state.buffers.depth.setMask(!0)}static textureToCanvas(e,t=!1){if(!e)return null;(t===!0||e.isCompressedTexture===!0)&&(e=oi(e));let n=e.image;if(ci(n)){let e=document.createElement(`canvas`);e.width=n.width,e.height=n.height;let t=e.getContext(`2d`);return t?(t.drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height),e):(console.error(`Failed getting canvas 2d context`),null)}return null}};function oi(e){return ai.copyTexture(e)}function si(e,t=!1){return ai.textureToCanvas(e,t)}function ci(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas||typeof ImageBitmap<`u`&&e instanceof ImageBitmap}function li(e){let t=e.type;return t===`Mesh`||t===`SkinnedMesh`}function ui(e,t){t?e[`needle:rendercustomshadow`]=!0:e[`needle:rendercustomshadow`]=!1}function di(e){return!!(e&&(e[`needle:rendercustomshadow`]===!0||e[`needle:rendercustomshadow`]==null))}function fi(e,t=void 0,n=void 0,r=void 0){let i=r||new fe;i.makeEmpty();let a=[];function o(e){let r=!0;if(e.visible&&lr(e)!==!1&&!(e.type===`TransformControlsGizmo`||e.type===`TransformControlsPlane`)){if(e instanceof Ge&&(r=!1),e instanceof We&&(r=!1),e instanceof ct&&(r=!1),e.isGizmo===!0&&(r=!1),e.material instanceof je&&(r=!1),li(e)||(r=!1),n&&e.layers.test(n)===!1&&(r=!1),r&&(t&&Array.isArray(t)&&t?.includes(e)||typeof t==`function`&&t(e)===!0))return;if(e.isUI!==!0){if(r){let t=e.children;e.children=a;let n=e.position,r=e.scale;if(Number.isNaN(n.x)||Number.isNaN(n.y)||Number.isNaN(n.z)){console.warn(`Object \"${e.name}\" has NaN values in position or scale.... will ignore it`,n,r);return}e.geometry===null&&(e.geometry=void 0),i.expandByObject(e,!0),e.children=t}for(let t of e.children)o(t)}}}let s=!1;Array.isArray(e)||(e=[e]);for(let t of e)t&&(s=!0,t.updateMatrixWorld(),o(t));return s||console.warn(`No objects to fit camera to...`),i}function pi(e,t,n){let r=fi([e],n?.ignore),i=new o;r.getSize(i);let a=new o;r.getCenter(a);let s=new o;t.getSize(s);let c=new o;t.getCenter(c);let l=new o;l.set(s.x/i.x,s.y/i.y,s.z/i.z);let u=Math.min(l.x,l.y,l.z),d=n?.scale!==!1;if(d&&Br(e,zr(e).multiplyScalar(u)),n?.position!==!1){let n=new o;r.getCenter(n),n.y=r.min.y;let i=new o;t.getCenter(i),i.y=t.min.y;let a=i.clone().sub(n);d&&a.multiplyScalar(u),kr(e,Or(e).add(a))}return{boundsBefore:r,scale:l}}function mi(e,t){let n=fi([e]),r=new o;n.getCenter(r),r.y=n.min.y;let i=t.clone().sub(r);return kr(e,Or(e).add(i)),{offset:i,bounds:n}}function hi(e,t,n,r){if(Array.isArray(t)){let n=!0;for(let r=0;r{M()&&k.Current?.isInXR&&(_i(!0),wi(`error`,...e))});function _i(e){if(e){if(gi)return;gi=!0,xi()}else{if(!gi)return;gi=!1,Si()}}var vi={log:void 0,warn:void 0,error:void 0},yi=class{familyName=`needle-xr`;root=null;context=null;defaultFontSize=.06;constructor(){this.ensureFont()}onEnable(){this.context=k.Current||k.All[0],this.context.pre_render_callbacks.push(this.onBeforeRender)}onDisable(){this.context?.pre_render_callbacks.splice(this.context?.pre_render_callbacks.indexOf(this.onBeforeRender),1),this.root?.removeFromParent()}targetObject=new S;userForwardViewPoint=new o;oneEuroFilter=new ir(90,.8);_lastElementRemoveTime=0;onBeforeRender=()=>{let e=this.context?.mainCamera;if(this.context&&e instanceof C){let t=this.getRoot();Number.isNaN(t.position.x)&&t.position.set(0,0,0),Number.isNaN(t.quaternion.x)&&t.quaternion.set(0,0,0,1),this.context.scene.add(this.targetObject);let n=this.context.xr?.rigScale??1,r=3.5*n,i=e.worldForward;i.y=0,i.normalize().multiplyScalar(r),this.userForwardViewPoint.copy(e.worldPosition).sub(i),this.targetObject.position.distanceTo(this.userForwardViewPoint)>2*n&&(this.targetObject.position.copy(this.userForwardViewPoint),yr(this.targetObject,e,!0,!0),this.targetObject.rotateY(Math.PI)),this.oneEuroFilter.filter(this.targetObject.position,t.position,this.context.time.time);let a=this.context.time.deltaTime;if(t.quaternion.slerp(this.targetObject.quaternion,a*5),t.scale.setScalar(n),this.targetObject.removeFromParent(),this.context.scene.add(t),this.context.time.time-this._lastElementRemoveTime>.1){this._lastElementRemoveTime=this.context.time.time;let e=Date.now();for(let t=0;t2e4){n.removeFromParent(),this._textBuffer.push(n),this._activeTexts.splice(t,1);break}}}}};addLog(e,t){let n=this.getRoot(),r=this.getText(),i=16777215,a=0;switch(e){case`log`:i=16777215,a=0;break;case`warn`:i=16772761,a=4465152;break;case`error`:i=16755370,a=7798784;break}t.length>1e3&&(t=t.substring(0,1e3)+`...`),r.textContent=`[`+new Date().toISOString().split(`T`)[1].split(`.`)[0]+`] `+t,r.visible=!0,r._activatedTime=Date.now(),n.add(r),this._activeTexts.push(r),this.context&&this.context.scene.add(n),r.set({backgroundColor:i,color:a}),D.update()}ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{D.update()}))}textOptions={fontSize:this.defaultFontSize,fontFamily:this.familyName,padding:.03,margin:.005,color:0,backgroundColor:16777215,backgroundOpacity:.4,borderRadius:.03,offset:.025};_textBuffer=[];_activeTexts=[];getText(){let e=this.getRoot();if(this._textBuffer.length>0){let e=this._textBuffer.pop();return e.visible=!0,setTimeout(()=>this.disableDepthTestRecursive(e),100),e}if(e.children.length>20&&this._activeTexts.length>0)return this._activeTexts.shift();let t=new D.Text(this.textOptions);return setTimeout(()=>this.disableDepthTestRecursive(t),500),setTimeout(()=>this.disableDepthTestRecursive(t),1500),t}disableDepthTestRecursive(e,t=0){for(let n=0;nn&&t[r]===`0`;)r--;return t.substring(0,r+1)}return e.toString()}else if(Array.isArray(e)){let n=`[`;for(let i=0;i=60&&(o+=` +`,o+=i(t),n+=o,o=``)}return n+=o,n+=` +}`,n}return e}function i(e){let t=``;for(let n=0;ne.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn(`AnimationsRegistry.registerAnimationMixer called with null or undefined mixer`);return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn(`AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer`);return}let t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}},Pi=class{static testIfRootCanAnimate(e,t){let n=e.getRoot();return n&&(n.userData.static||n.matrixAutoUpdate===!1||n.matrixWorldAutoUpdate===!1)?((t===!0||t===void 0&&M())&&console.warn(`AnimationUtils: The root object (${n.name||n.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:n.userData.static,name:n.userData.name,tag:n.userData.tag,matrixAutoUpdate:n.matrixAutoUpdate,matrixWorldAutoUpdate:n.matrixWorldAutoUpdate}),!1):!0}static tryGetActionsFromMixer(e){return e._actions||null}static tryGetAnimationClipsFromObjectHierarchy(e,t){if(t||=[],e)e.animations&&t.push(...e.animations);else return t;if(e.children)for(let n of e.children)this.tryGetAnimationClipsFromObjectHierarchy(n,t);return t}static autoplayAnimations(e){if(!e||!e.animations)return console.debug(`No animations found in file`),null;let t=`scene`in e?e.scene:e,n=[];for(let i=0;i0)for(let e=0;e=0;e--){let t=r[e];t.prefix===n&&(t.prefix=null),t.postfix===n&&(t.postfix=null),!t.prefix&&!t.postfix&&r.splice(e,1)}}var $i=Symbol(`Needle:Patches:WrappedFunction`);function ea(e,t,n){if(e[$i])return e;let r=function(...r){aa(t,n,this,...r);let i=e.apply(this,r);return oa(t,n,this,i,...r),i};return r[$i]=!0,r}var ta=`Needle:Patches`;function na(){return globalThis[`Needle:Patches`]||(globalThis[ta]=new WeakMap),globalThis[ta]}function ra(e,t){let n=na().get(e);return n?n.get(t):null}function ia(e,t,n,r){let i=na().get(e);i||(i=new Map,na().set(e,i));let a=i.get(t);a||(a=[],i.set(t,a)),a.push({prefix:n,postfix:r})}function aa(e,t,n,...r){if(!n)return;let i=ra(e,t);if(i)for(let e of i)e.prefix?.call(n,...r)}function oa(e,t,n,r,...i){if(!n)return;let a=ra(e,t);if(a)for(let e of a)e.postfix?.call(n,r,...i)}function sa(e,t){if(window.SPECTOR){console.log(window.SPECTOR);let n=new URLSearchParams(window.location.search);if(n.has(`spector`)){let r=Number.parseInt(n.get(`spector`)||`0`)||0;console.log(`Scheduled Spector capture at frame #`+r);let i=new window.SPECTOR.Spector;i.spyCanvases=!0,a();return;function a(){if(r>e.time.frame)return window.requestAnimationFrame(()=>a());let n=i.captureCanvas(t);n&&n instanceof Promise?n.then(()=>i.displayUI()):i.displayUI()}}else M()&&console.debug(`Spector available: Add '?spector=' to the URL to enable it and capture a frame.`)}}function ca(e){let t=e;return!!(t.parser&&t.parser.json)}var la;(function(e){e[e.None=0]=`None`,e[e.DontExport=1]=`DontExport`})(la||={});var ua=Symbol(`component-name`);function da(e){return e&&e.isComponent}var fa=Symbol(`object`),pa=new kt(()=>new o,20),ma=class{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return pa.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return pa.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return pa.get().set(this._tangentVelocity.x,this._tangentVelocity.y,this._tangentVelocity.z)}constructor(e,t,n,r,i,a){this._point=e,this.distance=t,this._normal=n,this.impulse=r,this.friction=i,this._tangentVelocity=a}},ha=class{contacts;constructor(e,t,n){this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=n}me;_collider;get collider(){return this._collider}_gameObject;get gameObject(){return this._gameObject}get rigidBody(){return this.collider?.attachedRigidbody}},ga=class{object;collider;constructor(e,t){this.object=e,this.collider=t}},_a=class e{context;static _managers=new WeakMap;static get(e){return da(e)?this._managers.get(e.context):this._managers.get(e)}constructor(e){this.context=e,this.root.style.cssText=` + position: absolute; + width: 1px; height: 1px; + padding: 0; margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; + `,this.root.setAttribute(`role`,`region`),this.root.setAttribute(`aria-label`,`3D Needle Engine scene`),this.liveRegion.setAttribute(`aria-live`,`polite`),this.liveRegion.setAttribute(`aria-atomic`,`true`),this.liveRegion.setAttribute(`role`,`status`),this.root.appendChild(this.liveRegion),this.enabled=!0}_enabled;set enabled(t){t!==this._enabled&&(this._enabled=t,t?(e._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),e._managers.delete(this.context)}root=document.createElement(`div`);liveRegion=document.createElement(`div`);treeElements=new WeakMap;updateElement(e,t){let n=this.treeElements.get(e);n||(n=document.createElement(`div`),this.treeElements.set(e,n),this.root.appendChild(n),typeof t==`object`&&(t.role&&n.setAttribute(`role`,t.role),t.label&&n.setAttribute(`aria-label`,t.label),t.hidden!==void 0&&n.setAttribute(`aria-hidden`,String(t.hidden)),t.busy!==void 0&&n.setAttribute(`aria-busy`,String(t.busy))))}focus(e){let t=this.treeElements.get(e);t&&t.focus()}unfocus(e){let t=this.treeElements.get(e);t&&t.blur()}hover(e,t){let n=this.treeElements.get(e);this.liveRegion.textContent=t||n?.getAttribute(`aria-label`)||``}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute(`aria-live`,e)}},va,ya=null;function ba(){return va}function xa(e){if(e==null){console.warn(`Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.`);return}ya!==e&&(ya=e,va=new e)}var Sa=n(((e,t)=>{(function(){var e=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return n.rotl(e,8)&16711935|n.rotl(e,24)&4278255360;for(var t=0;t0;e--)t.push(Math.floor(Math.random()*256));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((e[n]&15).toString(16));return t.join(``)},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-a)&63)):n.push(`=`);return n.join(``)},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,``);for(var n=[],r=0,i=0;r>>6-i*2);return n}};t.exports=n})()})),Ca=n(((e,t)=>{var n={utf8:{stringToBytes:function(e){return n.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(n.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{t.exports=function(e){return e!=null&&(n(e)||r(e)||!!e._isBuffer)};function n(e){return!!e.constructor&&typeof e.constructor.isBuffer==`function`&&e.constructor.isBuffer(e)}function r(e){return typeof e.readFloatLE==`function`&&typeof e.slice==`function`&&n(e.slice(0,0))}})),Ta=t(n(((e,t)=>{(function(){var e=Sa(),n=Ca().utf8,r=wa(),i=Ca().bin,a=function(t,o){t.constructor==String?t=o&&o.encoding===`binary`?i.stringToBytes(t):n.stringToBytes(t):r(t)?t=Array.prototype.slice.call(t,0):!Array.isArray(t)&&t.constructor!==Uint8Array&&(t=t.toString());for(var s=e.bytesToWords(t),c=t.length*8,l=1732584193,u=-271733879,d=-1732584194,f=271733878,p=0;p>>24)&16711935|(s[p]<<24|s[p]>>>8)&4278255360;s[c>>>5]|=128<>>9<<4)+14]=c;for(var m=a._ff,h=a._gg,g=a._hh,_=a._ii,p=0;p>>0,u=u+ee>>>0,d=d+y>>>0,f=f+b>>>0}return e.endian([l,u,d,f])};a._ff=function(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+(i>>>0)+o;return(s<>>32-a)+t},a._gg=function(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+(i>>>0)+o;return(s<>>32-a)+t},a._hh=function(e,t,n,r,i,a,o){var s=e+(t^n^r)+(i>>>0)+o;return(s<>>32-a)+t},a._ii=function(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+(i>>>0)+o;return(s<>>32-a)+t},a._blocksize=16,a._digestsize=16,t.exports=function(t,n){if(t==null)throw Error(`Illegal argument `+t);var r=e.wordsToBytes(a(t,n));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):e.bytesToHex(r)}})()}))(),1),Ea=new Map,Da=new Map,Oa=0;function ka(e,t,n){if(Ea.has(t)||Ea.set(t,[]),Ea.get(t).push({method:e,options:{once:!1,...n}}),Oa<30){let e=Da.get(t);e&&e?.length>100&&(Oa+=1,console.warn(`You have ${e.length} methods registered for Event ${t}. + +This might be a performance issue! +Consider unregistering the methods when they are not needed anymore! + +To unregister you can call the function returned by your event hook (e.g.const unregister = onStart(...)) + +or by using the once option like onStart(()=>{}, { once:true }). + +See https://engine.needle.tools/docs/scripting.html#special-lifecycle-hooks for more information.`))}}function Aa(e,t){let n=Da.get(t);if(n){for(let t=0;t0&&Fa(e,r,n);let i=Ea.get(t);if(i&&i.length>0){let r=[...i];i.length=0,Fa(e,r,n),r.length>0&&(Da.has(t)||Da.set(t,[]),Da.get(t).push(...r))}}var Na=[],Pa={context:null};function Fa(e,t,n){Na.length=0;for(let e=0;eAa(e,O.ContextCreated)}function Ra(e,t){return ka(e,O.ContextClearing,t),()=>Aa(e,O.ContextClearing)}function za(e,t){return ka(e,O.ContextDestroying,t),()=>Aa(e,O.ContextDestroying)}function Ba(e,t){return ka(e,z.Start,t),()=>Aa(e,z.Start)}function Va(e,t){return ka(e,z.Update,t),()=>Aa(e,z.Update)}function Ha(e,t){return ka(e,z.OnBeforeRender,t),()=>Aa(e,z.OnBeforeRender)}function Ua(e,t){return ka(e,z.OnAfterRender,t),()=>Aa(e,z.OnAfterRender)}var Wa=A(`debuglicense`),Ga=[],Ka=`basic`;Wa&&console.log(`License Type: `+Ka);function qa(){switch(Ka){case`pro`:case`enterprise`:return!0}return!1}function Ja(){switch(Ka){case`indie`:return!0}return!1}function Ya(){switch(Ka){case`edu`:return!0}return!1}function Xa(){return qa()||Ja()||Ya()}function Za(e){if(qa()||Ja()||Ya())return e(!0);Ga.push(e)}function Qa(e){for(let t of Ga)try{t(e)}catch{}}var $a;(function(e){window.addEventListener(`error`,e=>{a(B.Current,`unhandled_error`,e)}),window.addEventListener(`unhandledrejection`,e=>{a(B.Current,`unhandled_promise_rejection`,{message:e.reason?.message,stack:e.reason?.stack,timestamp:Date.now()})}),La((e=>t(e)),{once:!0});function t(e){if(!n(e)){Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`);return}return o({site_id:`dabb8317376f`,type:`pageview`,pathname:window.location.pathname,hostname:window.location.hostname,page_title:document.title,referrer:document.referrer,user_agent:navigator.userAgent,querystring:window.location.search,language:navigator.language,screenWidth:window.screen.width,screenHeight:window.screen.height,event_name:`page_view`}).then(t=>{if(t instanceof Response&&t.ok&&wt()){let t=(e.domElement?.getAttribute(`src`)||``)+Bi+Vi+Hi+Ui;window.sessionStorage.getItem(`session_key`)!==t&&(window.sessionStorage.setItem(`session_key`,t),i(e,`info`,{src:e.domElement?.getAttribute(`src`)||``,version:Bi,generator:Vi,build_time:Hi,public_key:Ui}))}})}function n(e){let t=e?.domElement;if(t||=document.querySelector(`needle-engine`),!t&&!e)return!1;let n=t?.getAttribute(`no-telemetry`);return(n===``||n===`true`||n===`1`)&&(Ka===`pro`||Ka===`enterprise`)?(Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`),!1):!0}e.isAllowed=n;let r=`dabb8317376f`;async function i(e,t,i){if(!n(e)){Wa&&console.debug(`Telemetry is disabled`);return}return o({site_id:r,type:`custom_event`,pathname:window.location.pathname,event_name:t,properties:i?JSON.stringify(i):void 0})}e.sendEvent=i;async function a(e,t,i){if(!n(e)){Wa&&console.debug(`Telemetry is disabled`);return}return i instanceof ErrorEvent?i={message:i.message,stack:i.error?.stack,filename:i.filename,lineno:i.lineno,colno:i.colno,timestamp:i.timeStamp||Date.now()}:i instanceof Error&&(i={message:i.message,stack:i.stack,timestamp:Date.now()}),o({site_id:r,type:`error`,event_name:t||`error`,properties:JSON.stringify({error_name:t,message:i.message,stack:i.stack,filename:i.filename,lineno:i.lineno,colno:i.colno,timestamp:i.timestamp})})}e.sendError=a;function o(e){try{return fetch(`https://needle.tools/api/v1/rum/t`,{method:`POST`,body:JSON.stringify(e),headers:{"Content-Type":`application/json`},keepalive:!0,mode:`cors`,priority:`low`}).catch(e=>{Wa&&console.error(`Failed to send telemetry`,e)})}catch(e){Wa&&console.error(e)}return Promise.resolve()}})($a||={}),k.registerCallback(O.ContextRegistered,e=>{ao(e.context),io(e.context),setTimeout(()=>fo(e.context),2e3)});var eo=void 0,to=!1,no=``;async function ro(){if(eo)return eo;if(Ka===`basic`)try{let e=`https://needle.tools/api/v1/needle-engine/check?location=`+encodeURIComponent(window.location.href)+`&version=`+Bi+`&generator=`+encodeURIComponent(Vi),t=await fetch(e,{method:`GET`}).catch(e=>{Wa&&console.error(`License check failed`,e)});t?.status===200?(to=!1,Wa&&console.log(`License check succeeded`),Ka=`pro`,Qa(!0)):t?.status===403?(Qa(!1),to=!0,no=await t.text()):(Qa(!1),Wa&&console.log(`License check failed with status `+t?.status))}catch(e){Qa(!1),Wa&&console.error(`License check failed`,e)}else Wa&&console.log(`Runtime license check is skipped because license is already applied as "`+Ka+`"`)}eo=ro();async function io(e){function t(){let e=document.createElement(`div`);e.className=`needle-forbidden`,e.style.cssText=` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: all; + zIndex: 2147483647; + line-height: 1.5; + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); + `;let t=e.style.cssText,n=document.createElement(`div`);e.appendChild(n),n.style.cssText=` + position: absolute; + left: 0; + right: 0; + top:0; + bottom: 0; + padding: 10%; + color: white; + font-size: 20px; + font-family: sans-serif; + text-align: center; + pointer-events: all; + display: flex; + justify-content: center; + align-items: center; + background-color: rgba(0,0,0,.3); + text-shadow: 0 0 2px black; + `;let r=n.style.cssText,i=no?.length>1?no:`This web application has been paused.
You might be in violation of the Needle Engine terms of use.
Please contact the Needle support if you think this is a mistake.`;return n.innerHTML=i,setInterval(()=>{n.innerHTML!==i&&(n.innerHTML=i),n.parentNode!==e&&e.appendChild(n),e.style.cssText!==t&&(e.style.cssText=t),n.style.cssText!==r&&(n.style.cssText=r)},500),e}let n=t(),r=n.style.cssText;setInterval(()=>{to===!0&&(n.style.cssText!==r&&(n=t()),e.domElement.shadowRoot?n.parentNode!==e.domElement.shadowRoot&&e.domElement.shadowRoot?.appendChild(n):n.parentNode!=document.body&&document.body.appendChild(n))},500)}async function ao(e){try{if(!qa()&&!Ja())return oo(e)}catch(t){return Wa&&console.log(`License check failed`,t),oo(e)}Wa&&oo(e)}async function oo(e){let t=!1;e.domElement.addEventListener(`ready`,()=>t=!0),await eo?.catch(()=>{}),!(qa()||Ja())&&(Xa()===!1&&uo(),t?so(e):e.domElement.addEventListener(`ready`,()=>{so(e)}))}function so(e){let t=` + position: relative; + display: block; + background-size: 20px; + background-position: 10px 5px; + background-repeat:no-repeat; + background-image:url('${co}'); + background-max-size: 40px; + padding: 10px; + padding-left: 30px; + `;if(Ka===`edu`)navigator.webdriver?console.log(`This project is supported by Needle for Education – https://needle.tools`):console.log(`%c This project is supported by Needle for Education – https://needle.tools`,t);else return;let n=document.createElement(`div`);n.className=`needle-non-commercial-use`,n.innerHTML=`Made with Needle for Education`,e.domElement.shadowRoot?.appendChild(n);let r=` + position: absolute; + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + font-size: 12px; + color: rgb(100, 100, 100); + /*mix-blend-mode: difference;*/ + background-color: transparent; + z-index: 10000; + + cursor: pointer; + user-select: none; + opacity: 0; + + bottom: 6px; + right: 12px; + transform: translateY(0px); + transition: all .5s ease-in-out 1s; + `;n.style.cssText=r,n.addEventListener(`click`,()=>{window.open(`https://needle.tools`,`_blank`)});let i=n.style.cssText;setTimeout(()=>{r=r.replace(`opacity: 0`,`opacity: 1`),r=r.replace(`transform: translateY(10px)`,`transform: translateY(0)`),n.style.cssText=r,i=n.style.cssText},100);let a=setInterval(()=>{let t=e.domElement.shadowRoot||e.domElement;n.parentNode!==t&&t.appendChild(n),i!=n.style.cssText&&(n.style.cssText=r,i=n.style.cssText)},1e3);Ya()&&setTimeout(()=>{clearInterval(a),n?.remove(),setTimeout(()=>{e.domElement.parentNode&&so(e)},1e3*60*5)},2e4)}var co=`data:image/webp;base64,UklGRrABAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSKEAAAARN6CmbSM4WR7vdARON11EBDq3fLiNbVtVzpMCPlKAEzsx0Y/x+Ovuv4dn0EFE/ydAvz6YggXzgh5sVgXM/zOC/4sii7qgGvB5N7hmuQYwkvazWAu1JPW41FXSHq6pnaQWvqYH18Fc0j1hO/BFTtIeSBlJi5w6qIIO7IOrwhFsB2Yxukif0FTRLpXswHR8MxbslKe9VZsn/Ub5C7YFOpqSTABWUDgg6AAAAFAGAJ0BKiAAIAA+7VyoTqmkpCI3+qgBMB2JbACdMt69DwMIQBLhkTO6XwY00UEDK6cNIDnuNibPf0EgAP7Y1myuiQHLDsF/0h5unrGh6WAbv7aegg2ZMd3uRKfT/3SJztcaujYfTvMXspfCTmYcoO6a+vhC3ss4M8uM58t4siiu59I4aOl59e9Sr6xoxYlHf2v+NnBNpJYeJf8jABQAId/PXuBkLEFkiCucgSGEcfhvajql/j3reCGl0M5/9gQWy7ayNPs+wlvIxFnNfSlfuND4CZOCyxOHhRqOmHN4ULHo3tCSrUNvgAA=`,lo=0;async function uo(e){let t=Date.now();if(t-lo<2e3)return;lo=t;let n=` + position: relative; + display: block; + font-size: 18px; + background-size: 20px; + background-position: 10px 5px; + background-repeat:no-repeat; + background-image:url('${co}'); + background-max-size: 40px; + margin-bottom: 5px; + margin-top: .3em; + margin-bottom: .5em; + padding: .2em; + padding-left: 25px; + border-radius: .5em; + border: 2px solid rgba(160,160,160,.3); + `,r=`Needle Engine — No license active, commercial use is not allowed. Visit https://needle.tools/pricing for more information and licensing options! v${Bi}`;B.Current?.xr||navigator.webdriver?console.log(r):console.log(`%c `+r,n)}async function fo(e){if(!window.crossOriginIsolated){if(!$a.isAllowed(e)){Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`);return}try{{let e=window.location.href.split(`?`)[0],t={license:Ka,url:e,hostname:window.location.hostname,pathname:window.location.pathname,version:Bi,generator:Vi,build_time:Hi,public_key:Ui},n=navigator.sendBeacon?.(`https://needle.tools/api/v1/needle-engine/ping`,JSON.stringify(t));Wa&&console.debug(`Sent beacon: `+n)}}catch(e){Wa&&console.log(`Failed to send non-commercial usage message to analytics backend`,e)}}}var po=typeof Ta==`function`?Ta:Ta.default,mo;(function(e){e.baseUrl=`https://networking.needle.tools`;function t(e){return po(new Uint8Array(e))}e.hashMD5=t;function n(e){let t=po(new Uint8Array(e),{encoding:`binary`,asBytes:!0});return btoa(String.fromCharCode(...t))}e.hashMD5_Base64=n;function r(e){let t=new Uint8Array(e);return crypto.subtle.digest(`SHA-256`,t).then(e=>btoa(String.fromCharCode(...new Uint8Array(e))))}e.hashSha256=r;function i(e){let t=e.filesize/1024/1024;return Xa()?t<50:t<5}e.canUpload=i;async function a(t,r){let i=e.baseUrl;if(!i)return console.error(`Blob storage base url is not set`),null;if(!t.name)return console.error(`Upload: file name is missing`),null;let a=null;a=t instanceof File?await t.arrayBuffer():t.data;let o=a.byteLength,s=o/1024/1024;if(s>50)return r?.silent!==!0&&Ei(`File (${s.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${s.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Xa()&&s>5)return r?.silent!==!0&&Ei(`File is too large for uploading. Please get a
commercial license to upload files larger than 5MB`),console.warn(`Your file is too large for uploading (${s.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(o<1)return console.warn(`Your file is too small for uploading (${s.toFixed(1)}MB). Min size is 1 byte`),null;let c=n(a),l={filename:t.name,"Content-Md5":c,"Content-Type":t.type||`application/octet-stream`,FileSize:o.toString(),"Content-Disposition":`attachment; filename=\"${t.name}\"`,"x-amz-server-side-encryption":`AES256`},u=await fetch(i+`/api/needle/blob`,{method:`POST`,headers:l,signal:r?.abort}).then(e=>e.json()).catch(e=>(console.error(e),null));if(u==null)return console.warn(`Upload failed...`),null;if(`error`in u)return console.error(u.error),null;if(`upload`in u&&u.upload){console.debug(`Uploading file`,u.upload);let e=!1,t=null;for(let i=0;i<3;i++)try{if(e)break;if(r?.abort?.aborted)return console.debug(`Aborted upload`),null;let a=await n(u.upload);a instanceof Error?(t=a,await Kt(1e3*i)):a.ok&&(console.debug(`File uploaded successfully`),e=!0)}catch(e){console.error(e)}if(!e)return console.error(t?.message||`Failed to upload file`),null;function n(e){return r?.onProgress?.call(null,{progress01:0,state:`inprogress`}),fetch(e,{method:`PUT`,headers:l,body:a,signal:r?.abort}).then(e=>(r?.onProgress?.call(null,{progress01:1,state:`finished`}),e)).catch(e=>e)}}if(`download`in u){let e=i+u.download;return console.debug(`File found in blob storage`,e),{key:u.key,success:!0,download_url:e}}return null}e.upload=a;function o(t){return`${e.baseUrl}/api/needle/blob/${t}`}e.getBlobUrlForKey=o;async function s(e,t){let n=new we;n.setResponseType(`arraybuffer`);let r=await n.loadAsync(e,e=>{t&&t.call(null,e)});return r instanceof ArrayBuffer?new Uint8Array(r):(console.error(`Download failed, no arraybuffer returned`),null)}e.download=s})(mo||={});var ho=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function go(e){return typeof e==`string`&&ho.test(e)}var _o=[];for(let e=0;e<256;++e)_o.push((e+256).toString(16).slice(1));function vo(e,t=0){return _o[e[t+0]]+_o[e[t+1]]+_o[e[t+2]]+_o[e[t+3]]+`-`+_o[e[t+4]]+_o[e[t+5]]+`-`+_o[e[t+6]]+_o[e[t+7]]+`-`+_o[e[t+8]]+_o[e[t+9]]+`-`+_o[e[t+10]]+_o[e[t+11]]+_o[e[t+12]]+_o[e[t+13]]+_o[e[t+14]]+_o[e[t+15]]}function yo(e){if(!go(e))throw TypeError(`Invalid UUID`);let t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=t&255,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=t&255,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=t&255,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=t&255,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=t&255,n}function bo(e){e=unescape(encodeURIComponent(e));let t=[];for(let n=0;n>>32-t}function Eo(e){let t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e==`string`){let t=unescape(encodeURIComponent(e));e=[];for(let n=0;n>>0;l=c,c=s,s=To(o,30)>>>0,o=i,i=a}n[0]=n[0]+i>>>0,n[1]=n[1]+o>>>0,n[2]=n[2]+s>>>0,n[3]=n[3]+c>>>0,n[4]=n[4]+l>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,n[0]&255,n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,n[1]&255,n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,n[2]&255,n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,n[3]&255,n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,n[4]&255]}var Do=Co(`v5`,80,Eo),Oo;(function(e){e[e.OnConnection=0]=`OnConnection`,e[e.OnRoomJoin=1]=`OnRoomJoin`,e[e.Queued=2]=`Queued`,e[e.Immediate=3]=`Immediate`})(Oo||={}),k.registerCallback(O.ContextCreated,e=>{let t=e.context;Ho(t),Io(t)});var ko=A(`debugcomponents`),Ao=`eff8ba80-635d-11ec-90d6-0242ac120003`,jo=class e{get seed(){return this._seed}set seed(e){this._seed=e}_originalSeed;_seed;constructor(t){typeof t==`string`&&(t=e.hash(t)),this._originalSeed=t,this._seed=t}reset(){this._seed=this._originalSeed}generateUUID(e){if(typeof e==`string`)return Do(e,Ao);let t=this._seed;return--this._seed,Do(t.toString(),Ao)}initialize(t){typeof t==`string`?this._seed=e.hash(t):this._seed=t}static createFromString(t){return new e(this.hash(t))}static hash(e){let t=0;for(let n=0;n{ko&&console.log(`[Remote] Destroyed`,e.scene,t);let n=jf(t.guid,e.scene);n&&zf(n)})}var Lo=class{filename;hash;size;constructor(e,t,n){this.filename=e,this.hash=t,this.size=n}},Ro=class{guid;originalGuid;seed;visible;hostData;dontSave;parent;position;rotation;scale;preventCreation=void 0;deleteStateOnDisconnect;constructor(e,t){this.originalGuid=e,this.guid=t}};function zo(e,t,n,r){let i=e;if(!i.guid)return console.warn(`Can not instantiate: No guid`,i),null;if(t.context||=B.Current,!t.context)return console.error(`Missing network instantiate options / reference to network connection in sync instantiate`),null;let a=t?{...t}:null,{instance:o,seed:s}=Uo(i,t);if(o){let e=o;if(e.guid){ko&&console.log(`[Local] new instance`,`gameobject:`,o?.guid);let c=new Ro(i.guid,e.guid);c.seed=s,t.deleteOnDisconnect===!0&&(c.deleteStateOnDisconnect=!0),a&&(a.position&&(Array.isArray(a.position)?c.position={x:a.position[0],y:a.position[1],z:a.position[2]}:c.position={x:a.position.x,y:a.position.y,z:a.position.z}),a.rotation&&(a.rotation instanceof He?a.rotation=new E().setFromEuler(a.rotation):a.rotation instanceof Array&&(a.rotation=new E().fromArray(a.rotation)),c.rotation={x:a.rotation.x,y:a.rotation.y,z:a.rotation.z,w:a.rotation.w}),a.scale&&(Array.isArray(a.scale)?c.scale={x:a.scale[0],y:a.scale[1],z:a.scale[2]}:c.scale={x:a.scale.x,y:a.scale.y,z:a.scale.z})),c.position||={x:e.position.x,y:e.position.y,z:e.position.z},c.rotation||={x:e.quaternion.x,y:e.quaternion.y,z:e.quaternion.z,w:e.quaternion.w},c.scale||={x:e.scale.x,y:e.scale.y,z:e.scale.z},c.visible=i.visible,a?.parent&&(typeof a.parent==`string`?c.parent=a.parent:a.parent?.guid?c.parent=a.parent.guid:a.parent instanceof ne?c.parent=`scene`:console.warn(`Unsupported parent type in sync instantiate options: `+a.parent?.name)),c.hostData=n,r===!1&&(c.dontSave=!0),!t?.context?.connection&&M()&&console.debug(`Object will be instantiated but it will not be synced: not connected`,i.guid),t.context.connection.isInRoom&&Vo.push(new WeakRef(e)),t?.context?.connection.send(Mo.NewInstanceCreated,c)}else console.warn(`Missing guid, can not send new instance event`,e)}return o}function Bo(){return Math.random()*9999999}var Vo=[];function Ho(e){let t=e.connection.beginListen(Mo.NewInstanceCreated,async t=>{let n=await Ko(t.originalGuid,e.scene);if(t.preventCreation===!0)return;if(!n){console.warn(`could not find object that was instantiated: `+t.guid);return}let r=new Tf;t.position&&(r.position=new o(t.position.x,t.position.y,t.position.z)),t.rotation&&(r.rotation=new E(t.rotation.x,t.rotation.y,t.rotation.z,t.rotation.w)),t.scale&&(r.scale=new o(t.scale.x,t.scale.y,t.scale.z)),r.parent=t.parent,t.seed&&(r.idProvider=new jo(t.seed)),r.visible=t.visible,r.context=e,ko&&e.alias&&console.log(`[Remote] instantiate in: `+e.alias);let i=Wf(n,r);Vo.push(new WeakRef(i)),i&&(t.parent===`scene`&&e.scene.add(i),ko&&console.log(`[Remote] new instance`,`gameobject:`,i?.guid,n))}),n=e.connection.beginListen(`left-room`,()=>{Vo.length>0&&console.debug(`Left networking room, cleaning up ${Vo.length} instantiated objects`);for(let e of Vo){let t=e.deref();t&&t.destroy()}Vo.length=0});return()=>{e.connection.stopListen(Mo.NewInstanceCreated,t),e.connection.stopListen(`left-room`,n)}}function Uo(e,t){let n=Bo(),r=t??new Tf;return r.idProvider=new jo(n),{seed:n,instance:Wf(e,r)}}var Wo={};function Go(e,t){Wo[e]=t}async function Ko(e,t){let n=Wo[e];if(n!=null){let t=await n(e);if(t)return t}return qo(e,t)}function qo(e,t){if(t===null||!e)return null;if(t.guid===e)return t;if(t.children)for(let n of t.children){let t=qo(e,n);if(t)return t}return null}var Jo=A(`gizmos`),Yo=A(`debugextension`),Xo=A(`debugresolvedependencies`),Zo=[`/extensions/`,`extensions/`],Qo=[{prefix:`/nodes/`,dependencyName:`node`},{prefix:`/meshes/`,dependencyName:`mesh`},{prefix:`/materials/`,dependencyName:`material`},{prefix:`/textures/`,dependencyName:`texture`},{prefix:`/animations/`,dependencyName:`animation`},{prefix:`nodes/`,dependencyName:`node`},{prefix:`meshes/`,dependencyName:`mesh`},{prefix:`materials/`,dependencyName:`material`},{prefix:`textures/`,dependencyName:`texture`},{prefix:`animations/`,dependencyName:`animation`}];async function $o(e,t){Xo&&console.log(e,t);let n=[];ns(Qo,e,t,n);let r=await Promise.all(n);return typeof t==`string`&&r.length===1?r[0]:r}function es(e,t){return!e||!t?!1:e[`needle:identifier`]!=null&&t[`needle:identifier`]!=null?e[`needle:identifier`]===t[`needle:identifier`]:!1}function ts(e,t){e[`needle:identifier`]=t}function ns(e,t,n,r){if(typeof n==`object`&&n)for(let i of Object.keys(n)){let a=n[i];if(typeof a==`string`){let o=rs(t,a);if(o!=null)typeof o.then==`function`?r.push(o.then(e=>n[i]=e)):n[i]=o;else{let o=is(e,t,a);if(o){r.push(o.then(e=>(n[i]=e,e)));continue}}}else if(Array.isArray(a))for(let n=0;na[n]=e)):a[n]=o;continue}for(let o of e){let e=as(o.prefix,i);if(e>=0){Xo&&console.log(o,e,o.dependencyName),r.push(t.getDependency(o.dependencyName,e).then(e=>a[n]=e));break}}typeof i==`object`&&ns(e,t,i,r)}else typeof a==`object`&&ns(e,t,a,r)}else if(typeof n==`string`){let i=is(e,t,n);i&&r.push(i)}}function rs(e,t){if(e&&e.plugins&&typeof t==`string`){for(let n of Zo)if(t.startsWith(n)){let r=t.substring(n.length),i=r.indexOf(`/`);i>=0&&(r=r.substring(0,i));let a=e.plugins[r];if(Yo&&console.log(r,a),typeof a?.resolve==`function`){let i=t.substring(n.length+r.length+1);return a.resolve(e,i)}break}}return null}function is(e,t,n){for(let r of e){let e=as(r.prefix,n);if(e>=0)return Xo&&console.warn(`GET DEPENDENCY`,r,e,r.dependencyName),t.getDependency(r.dependencyName,e)}return null}function as(e,t){if(typeof t==`string`&&t.startsWith(e)){let n=t.substring(e.length),r=Number.parseInt(n);if(r>=0)return r}return-1}var os=`NEEDLE_persistent_assets`;function ss(e){return e?.___persistentAsset===!0}var cs=class{get name(){return os}parser;constructor(e){this.parser=e}async afterRoot(e){if(!this.parser?.json?.extensions)return;let t=this.parser.json.extensions[os];if(!t)return;Yo&&console.log(t);let n=[];for(let e of t?.assets){let t=$o(this.parser,e);t&&n.push(t)}await Promise.all(n)}resolve(e,t){let n=Number.parseInt(t);if(n>=0){Yo&&console.log(t);let r=e.json.extensions[os];if(r){let e=r?.assets[n];if(e&&typeof e==`object`){e.___persistentAsset=!0;let t=e.__type;t&&ji.get(t)}return e}}return null}},ls=A(`debugserializer`),us=new class{register(e,t){if(this.typeMap.has(e)){let n=this.typeMap.get(e);if(n===t)return;ls&&console.warn(`Type: `+e+` is already registered`,t,n)}ls&&console.log(`Register type serializer`,t.name,t,e),this.typeMap.set(e,t)}typeMap=new Map;getSerializer(e){if(e)return this.typeMap.get(e)}getSerializerForConstructor(e,t=0){if(t>20)return;if(!e||!e.constructor){ls&&console.log(`invalid type`);return}let n=e.name,r=this.getSerializer(e);if(r!==void 0)return ls&&console.log(`FOUND SERIALIZER`,r?.name,e.name,e.constructor.name,`for type: `+n,r,e,this.typeMap),r;let i=Object.getPrototypeOf(e);if(i&&i!==e){let e=this.getSerializerForConstructor(i,++t);if(e){let t=i.constructor||i.prototype;ls&&console.log(`FOUND SERIALIZER(in constructor) `+t.constructor.name,t.name,t,e),this.register(t,e)}return e}ls&&console.warn(`No serializer found for `+n,e,e.name,e.constructor.name)}},ds=class{name;constructor(e,t){if(this.name=t,Array.isArray(e))for(let t of e)us.register(t,this);else us.register(e,this)}},fs=class{isDevMode=wt();cache={};registerDefinedKeys(e,t){if(this.isDevMode&&this.cache[e]===void 0){this.cache[e]=Object.keys(t);let n=t;n.$serializedTypes&&Object.keys(n.$serializedTypes)&&this.cache[e].push(...Object.keys(n.$serializedTypes)),ls&&console.log(`registerDefinedKeys for `+e,this.cache[e],t)}}getDefinedKey(e,t){return this.cache[e]===void 0?!1:this.cache[e].includes(t)}},ps=class{root;gltf;gltfId;object;target;nodeId;nodeToObject;objectToNode;context;path;type;serializable;implementationInformation;constructor(e){this.root=e}};function ms(e,t){let n=e.$serializedTypes;if(n===void 0)return null;let r={};for(let i in n){let n=e[i];if(typeof n==`object`&&n){let e=us.getSerializerForConstructor(n);if(e){r[i]=e.onSerialize(n,t);continue}}r[i]=n}function i(t){let n=ji._types;for(let[t,r]of n)if(r===e.constructor)return t;return t.__name||t.constructor.name}return r.name=i(e),typeof e.guid==`string`&&(r.guid=e.guid),r}var hs=[];function gs(e,t){return e?(typeof e.$serializedTypes==`object`&&(t||={},Object.assign(t,e.$serializedTypes)),gs(Object.getPrototypeOf(e),t)):t}function _s(e,t,n){if(!e)return!1;if(n.target=e,e.onBeforeDeserialize!==void 0){let r=e.onBeforeDeserialize(t,n);if(typeof r==`boolean`)return r}let r=gs(e);if(t){if(typeof t.guid==`string`&&(e.guid=t.guid),r)for(let i in r){let a=r[i],o=t[i];if(ls&&console.log(i,o,e,a),e[i]!==void 0&&o===void 0||(n.type=void 0,n.path=i,n.serializable=a,e.onBeforeDeserializeMember!==void 0&&e.onBeforeDeserializeMember(i,o,n)===!0))continue;if(a===null)e[i]=o;else{if(Array.isArray(a))for(let t=0;tPlease rename "`+t+`" to "`+a+`" in `+r),console.warn(`Please use lowercase for field: "`+t+`" in `+r,o,e));continue}if(o!=null){if(typeof o==`object`&&(i===void 0||!i.isObject3D)){if(typeof o.node==`number`||typeof o.guid==`string`){if(o.could_not_resolve)continue;if(!(i!==void 0&&Object.keys(i).length>1)){zn(Tn.Warn,`Missing serialization for object reference!\n\nPlease change to: \n@serializable(Object3D)\n${a}? : Object3D;\n\nin ${r}.ts\nSee documentation`),console.warn(r,a,e[a],e);continue}}else if(!Array.isArray(i)){let e=i.constructor?.name;if(e===`Object`&&!i.constructor[`did_warn:missing_serializable`]){i.constructor[`did_warn:missing_serializable`]=!0;let t=`You might be missing a @serializable(Type) decorator for field "`+a+`" in `+r+`.ts`;console.warn(t+`\n${a}:`,o,e),zn(Tn.Warn,`Dev Warning: Are you missing a type in @serializable? Please check the browser console for details`)}}}if(typeof i==`string`&&typeof o==`string`&&(o.endsWith(`.gltf`)||o.endsWith(`.glb`))){zn(Tn.Warn,`Missing serialization for object reference!\n\nPlease change to: \n@serializable(AssetReference)\n${a}? : AssetReference;\n\nin script ${r}.ts\ndocumentation`),console.warn(r,a,e[a],e);continue}}}}function bs(e,t){for(let n of Object.keys(t)){let r=t[n];if(typeof r==`object`&&r&&r!==void 0){let t=e[n];if(!t){ls&&console.log(n,`is undefined on`,e);continue}for(let e of Object.keys(r))if(t[e]===void 0&&Ss(r[e])&&!Ss(t)){let n=xs(t,e);if(n&&(n?.writable===void 0||n?.writable===!1)&&n.set===void 0){ls&&console.warn(`Property is not writable "`+e+`"`,t,n,r[e],t[e]);continue}t[e]=r[e]}}}}function xs(e,t){for(;e;){let n=Object.getOwnPropertyDescriptor(e,t);if(n)return n;e=Object.getPrototypeOf(e)}}function Ss(e){switch(typeof e){case`number`:case`string`:case`boolean`:return!0}return!1}function Cs(e,t,n,r,i){let a=typeof t==`function`&&t.prototype===void 0,o=t;if(a)try{if(o=t?.call(t,i),a=!1,o==null)return}catch(t){console.error(`Error in callback`,t,e)}if(n.type=o,!a&&i&&(i instanceof T||i instanceof x||i instanceof ie||i instanceof Se))return i;if(r||={serializer:us.getSerializerForConstructor(o)},i&&typeof i==`object`&&ss(i)){if(i.__concreteInstance)return i.__concreteInstance;let t=i;if(!t.$serializedTypes&&o.prototype.$serializedTypes&&(t.$serializedTypes=o.prototype.$serializedTypes),t.$serializedTypes&&_s(t,e,n),i&&o!==void 0)try{let t=null;r.serializer&&(t=r.serializer.onDeserialize(e,n)),t||(t=new o,Yo&&console.log(`Create concrete instance for persistent asset`,i,`instance:`,t),Es(t,i)),i.__concreteInstance=t,i=t}catch(e){console.error(`Error creating instance or creating values on instance`,e,i,o)}return i}if(Array.isArray(e)){let i=[];for(let a=0;a=0&&this._context.pre_update_callbacks.splice(e,1);for(let e in this._assetReferences)this._assetReferences[e]?.unload();this._assetReferences={}}preUpdate=()=>{};findAssetReference(e){return this._assetReferences[e]||null}registerAssetReference(e){return e.url&&(this._assetReferences[e.url]?console.warn(`Asset reference already registered`,e):this._assetReferences[e.url]=e),e}unregisterAssetReference(e){e.url&&delete this._assetReferences[e.url]}},As=Symbol(`assetReference`),js=class e{static getOrCreateFromUrl(t,n){if(!n&&(n=B.Current,!n))throw Error(`Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.`);let r=n.addressables,i=r.findAssetReference(t);if(i)return i;let a=new e(t,n.hash);return r.registerAssetReference(a),a}static getOrCreate(t,n,r){if(typeof t==`string`){if(!r&&(r=B.Current,!r))throw Error(`Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.`)}else r=t.context,t=t.sourceId;let i=Zt(t,n);Os&&console.log(`GetOrCreate Addressable from`,t,n,`FinalPath=`,i);let a=r.addressables,o=a.findAssetReference(i);if(o)return o;let s=new e(i,r.hash);return a.registerAssetReference(s),s}isAssetReference=!0;get rawAsset(){return this._rawAsset}get asset(){return this._glbRoot??(this._rawAsset?.scene||null)}set asset(e){e?this._rawAsset={animations:e.animations,scene:e,scenes:[e]}:this._rawAsset=null}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith(`http`)||this._url.startsWith(`blob:`)||this._url.startsWith(`www.`)||this._url.includes(`/`))}_rawAsset=null;_glbRoot;_url;_urlName;_progressListeners=[];_isLoadingRawBinary=!1;_rawBinary;constructor(...e){typeof e[0]==`object`?`url`in e[0]?this._url=e[0].url:(this._url=``,e[0].asset&&(this.asset=e[0].asset)):(this._url=e[0],e[2]instanceof S&&(this.asset=e[2]));let t=this._url.lastIndexOf(`/`);if(t>=0){this._urlName=this._url.substring(t+1);let e=this._urlName.lastIndexOf(`.`);e>=0&&(this._urlName=this._urlName.substring(0,e))}else this._urlName=this._url;Go(this._url,this.onResolvePrefab.bind(this))}async onResolvePrefab(e){return e===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||Nf(this.asset)===!0}_loadingPromise=null;isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(Os&&console.log(`Unload`,this.asset),`scene`in this.asset&&this.asset.scene&&zf(this.asset.scene,!0,!0),zf(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loadingPromise=null,B.Current&&B.Current.addressables.unregisterAssetReference(this)}async preload(){return!this.mustLoad||this._isLoadingRawBinary?null:this._rawBinary===void 0?(this._isLoadingRawBinary=!0,Os&&console.log(`Preload`,this.url),this._rawBinary=(await mo.download(this.url,e=>{this.raiseProgressEvent(e)}))?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary):this._rawBinary}async loadAssetAsync(e){if(Os&&console.log(`[AssetReference] loadAssetAsync`,this.url),!this.mustLoad)return this.asset?.parent&&console.warn(`[AssetReference] "${this.urlName}" is already loaded and parented to "${this.asset.parent.name||`scene`}". loadAssetAsync() returns the same shared instance — use .instantiate() to create a new copy.`),this.asset;if(e&&this._progressListeners.push(e),this._loadingPromise!==null)return this._loadingPromise.then(e=>this.asset);let t=B.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error(`[AssetReference] Failed loading – Invalid data. Must be of type ArrayBuffer. `+typeof this._rawBinary),null;this._loadingPromise=ba().parseSync(t,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent(`progress`,{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else Os&&console.log(`Load async`,this.url),this._loadingPromise=ba().loadSync(t,this.url,this.url,null,e=>{this.raiseProgressEvent(e)});this._loadingPromise.finally(()=>this._loadingPromise=null);let n=await this._loadingPromise;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(n),n?(n[As]=this,this._glbRoot&&(this._glbRoot[As]=this),this.asset&&(this.asset[As]=this),ep(t),n.scene!==void 0&&(this._rawAsset=n),this.asset):null}instantiate(e){return this.onInstantiate(e,!1)}instantiateSynced(e,t=!0){return this.onInstantiate(e,!0,t)}beginListenDownload(e){this._progressListeners.indexOf(e)<0&&this._progressListeners.push(e)}endListenDownload(e){let t=this._progressListeners.indexOf(e);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(e){for(let t of this._progressListeners)t(this,e)}static currentlyInstantiating=new Map;async onInstantiate(t,n=!1,r){let i=B.Current,a=new Tf;if(t instanceof S?a.parent=t:t&&(Object.assign(a,t),a.cloneAssign(t)),a.parent===void 0&&(a.parent=i.scene),this.mustLoad&&await this.loadAssetAsync(),Os&&console.log(`Instantiate`,this.url,`parent:`,t),this.asset){Os&&console.log(`Add to scene`,this.asset);let t=e.currentlyInstantiating.get(this.url);if(t!==void 0&&t>=1e4)return console.error(`Recursive or too many instantiations of `+this.url+` in the same frame (`+t+`)`),null;try{if(t===void 0&&(t=0),t+=1,e.currentlyInstantiating.set(this.url,t),n){a.context=i;let e=this.asset;e.guid=this.url;let t=zo(e,a,void 0,r);if(t)return t}else{let e=Wf(this.asset,a);if(e)return e}}finally{i.post_render_callbacks.push(()=>{t===void 0||t<0?t=0:--t,e.currentlyInstantiating.set(this.url,t)})}}else Os&&console.warn(`Failed to load asset`,this.url);return null}tryGetActualGameObjectRoot(e){if(e&&e.scene){let t=e.scene;if(t.isGroup&&t.children.length===1&&t.children[0].name+`glb`===t.name){let e=t.children[0];return e.animations=t.animations,e}else return t}return null}};new class extends ds{constructor(){super([js],`AssetReferenceSerializer`)}onSerialize(e,t){if(e&&e.uri!==void 0&&typeof e.uri==`string`)return e.uri}onDeserialize(e,t){if(typeof e==`string`)return t.context?t.gltfId?js.getOrCreate(t.gltfId,e,t.context):(console.error(`Missing source id`),null):(console.error(`Missing context`),null);if(e instanceof S){if(!t.context)return console.error(`Missing context`),null;if(!t.gltfId)return console.error(`Missing source id`),null;let n=e,r=t.context,i=n.guid??n.uuid,a=r.addressables.findAssetReference(i);if(a)return a;let o=new js(i,void 0,n);return r.addressables.registerAssetReference(o),o}return null}};var Ms=Promise.resolve(null),Ns=class e{static imageReferences=new Map;static getOrCreate(t){let n=e.imageReferences.get(t);return n||(n=new e(t),e.imageReferences.set(t,n)),n}constructor(e){this.url=e}url;_bitmap;_bitmapObject;dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){let e=new Image;return e.src=this.url,e}loader=null;createTexture(){return this.url?(this.loader||=new me,this.loader.setCrossOrigin(`anonymous`),this.loader.loadAsync(this.url).then(e=>(e&&!e.name?.length&&(e.name=this.url.split(`/`).pop()??this.url),e))):(console.error(`Can not load texture without url`),Ms)}getBitmap(){return this._bitmap||=new Promise((e,t)=>{let n=document.createElement(`img`);n.addEventListener(`load`,()=>{this._bitmap=createImageBitmap(n).then(t=>(this._bitmapObject=t,e(t),t))}),n.addEventListener(`error`,t=>{console.error(`Failed to load image:`+this.url,t),e(null)}),n.src=this.url}),this._bitmap}},Ps=class extends ds{constructor(){super([Ns],`ImageReferenceSerializer`)}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`){let n=Zt(t.gltfId,e);return Ns.getOrCreate(n)}}};new Ps;var Fs=class e{static cache=new Map;static getOrCreate(t){let n=e.cache.get(t);return n||(n=new e(t),e.cache.set(t,n)),n}async loadRaw(){return this.res||=fetch(this.url),this.res.then(e=>e.blob())}async loadText(){return this.res||=fetch(this.url),this.res.then(e=>e.text())}url;res;constructor(e){this.url=e}},Is=class extends ds{constructor(){super([Fs],`FileReferenceSerializer`)}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`){let n=Zt(t.gltfId,e);return Fs.getOrCreate(n)}}};new Is;var Ls;(function(e){e.Visible=`application-visible`,e.Hidden=`application-hidden`,e.MuteChanged=`application-mutechanged`})(Ls||={});var Rs=!1,zs=[];function Bs(){if(Rs)return;M()&&console.debug(`[Needle Engine] User input registered: Media playback is now allowed.`),Rs=!0;let e=[...zs];zs.length=0,e.forEach(e=>e())}document.addEventListener(`mousedown`,Bs),document.addEventListener(`pointerup`,Bs),document.addEventListener(`click`,Bs),document.addEventListener(`dragstart`,Bs),document.addEventListener(`touchend`,Bs),document.addEventListener(`keydown`,Bs),typeof window<`u`&&`userActivation`in navigator&&navigator.userActivation?.isActive&&(M()&&console.debug(`[Needle Engine] User input already active: Media playback is now allowed.`),zs.length=0,Rs=!0);var Vs=class e extends EventTarget{static get userInteractionRegistered(){return Rs}static registerWaitForAllowAudio=e.registerWaitForInteraction;static registerWaitForInteraction(e){if(e!==null){if(Rs){e();return}zs.indexOf(e)===-1&&zs.push(e)}}static unregisterWaitForInteraction(e){let t=zs.indexOf(e);t!==-1&&zs.splice(t,1)}_mute=!1;get muted(){return this._mute}set muted(e){e!==this._mute&&(this._mute=e,this.dispatchEvent(new Event(Ls.MuteChanged)))}context;get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}_isVisible=!0;constructor(e){super(),this.context=e,window.addEventListener(`visibilitychange`,this.onVisiblityChanged.bind(this),!1)}onVisiblityChanged(e){switch(e.target.visibilityState){case`hidden`:this._isVisible=!1,this.dispatchEvent(new Event(Ls.Hidden));break;case`visible`:this._isVisible=!0,this.dispatchEvent(new Event(Ls.Visible));break}}};function*Hs(e,t=null){let n=t?t.time:B.Current.time,r=n.time;for(;n.time-rt=!1),e.catch(()=>t=!1);t;)yield}var Gs;(function(e){e[e.Quad=0]=`Quad`,e[e.Cube=1]=`Cube`,e[e.Sphere=2]=`Sphere`,e[e.Cylinder=3]=`Cylinder`,e[e.RoundedCube=10]=`RoundedCube`})(Gs||={});var Ks=class{static createText(e,t){let n=null,r=t?.font||Ys(t?.familyFamily||null);r instanceof lt?n=this.#e(e,r,t):n??=new ie;let i=t?.color||16777215,a=new x(n,t?.material??new Ce({color:i}));return this.applyDefaultObjectOptions(a,t),r instanceof Promise?r.then(n=>{a.geometry=this.#e(e,n,t),t?.onGeometry&&t.onGeometry(a)}):t?.onGeometry&&t.onGeometry(a),a}static#e(e,t,n){let r=n?.depth||.1;return new gt(e,{font:t,size:1,depth:r,height:r,bevelEnabled:n?.bevel||!1,bevelThickness:.01,bevelOffset:.01,bevelSize:.01})}static createOccluder(e){let t=new re({colorWrite:!1,depthWrite:!0,side:2});return this.createPrimitive(e,{material:t})}static createPrimitive(e,t){let n,r=t?.color||16777215;switch(e){case`Quad`:case Gs.Quad:{let e=new Ke(1,1,1,1),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Quad`}break;case`Cube`:case Gs.Cube:{let e=new Xe(1,1,1),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Cube`}break;case Gs.RoundedCube:case`RoundedCube`:{let e=qs(1,1,1,.1,2),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`RoundedCube`}break;case`Sphere`:case Gs.Sphere:{let e=new Ue(.5,16,16),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Sphere`}break;case`Cylinder`:case Gs.Cylinder:{let e=new c(.5,.5,1,32),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Cylinder`}break;case`ShaderBall`:n=new ve,n.name=`ShaderBall`,Qs(n,t);break}return this.applyDefaultObjectOptions(n,t),n}static createSprite(e){let t=new Ae({color:16777215});e?.texture&&`map`in t&&(t.map=e.texture);let n=new Ie(t);return this.applyDefaultObjectOptions(n,e),n}static applyDefaultObjectOptions(e,t){e.receiveShadow=!0,e.castShadow=!0,t?.name&&(e.name=t.name),t?.position&&(Array.isArray(t.position)?e.position.set(t.position[0],t.position[1],t.position[2]):e.position.set(t.position.x||0,t.position.y||0,t.position.z||0)),t?.rotation&&(Array.isArray(t.rotation)?e.rotation.set(t.rotation[0],t.rotation[1],t.rotation[2]):e.rotation.set(t.rotation.x||0,t.rotation.y||0,t.rotation.z||0)),t?.scale&&(typeof t.scale==`number`?e.scale.set(t.scale,t.scale,t.scale):Array.isArray(t.scale)?e.scale.set(t.scale[0],t.scale[1],t.scale[2]):e.scale.set(t.scale.x||1,t.scale.y||1,t.scale.z||1)),t?.receiveShadow!=null&&(e.receiveShadow=t.receiveShadow),t?.castShadow!=null&&(e.castShadow=t.castShadow),t?.parent&&t.parent.add(e)}};function qs(e,t,n,r,i){let a=new Le,o=1e-5,s=r-o;a.absarc(o,o,o,-Math.PI/2,-Math.PI,!0),a.absarc(o,t-s*2,o,Math.PI,Math.PI/2,!0),a.absarc(e-s*2,t-s*2,o,Math.PI/2,0,!0),a.absarc(e-s*2,o,o,0,-Math.PI/2,!0);let c=new Re(a,{bevelEnabled:!0,bevelSegments:i*2,steps:1,bevelSize:s,bevelThickness:r,curveSegments:i,UVGenerator:{generateTopUV:(n,r)=>{let i=[];for(let n=0;n{let c=[];return c.push(new w(r[i]/e,r[i+1]/t)),c.push(new w(r[a]/e,r[a+1]/t)),c.push(new w(r[o]/e,r[o+1]/t)),c.push(new w(r[s]/e,r[s+1]/t)),c}}});return c.scale(1,1,1-r),c.center(),c.index||c.setIndex(Array.from({length:c.attributes.position.count},(e,t)=>t)),c.computeVertexNormals(),c}var Js=new Map;function Ys(e){let t=``;switch(e){default:case`OpenSans`:t=`https://cdn.needle.tools/static/fonts/facetype/Open Sans_Regular_ascii.json`;break;case`Helvetiker`:t=`https://cdn.needle.tools/static/fonts/facetype/Helvetiker_Regular_ascii.json`;break}if(Js.has(t)){let e=Js.get(t);if(e)return e}let n=new ot,r=new Promise((e,r)=>{n.load(t,n=>{Js.set(t,n),e(n)},void 0,r)});return Js.set(t,r),r}var Xs=!1,Zs=null;function Qs(e,t){if(Zs===null){let e=new at,t=yt(null);e.setDRACOLoader(t.dracoLoader),e.setKTX2Loader(t.ktx2Loader),Xs=!0,Zs=e.loadAsync(`https://cdn.needle.tools/static/models/shaderball.glb`).then(e=>{let t=e.scene;return t.position.y-=.5,t}).catch(e=>(console.warn(`Failed to load shaderball mesh: `+e.message),ec())).finally(()=>{Xs=!1})}if(Xs){let n=ec();n.name=`ShaderBall-Placeholder`;let r=n.children[0];r?.type===`Mesh`&&$s(r,t),e.add(n)}Zs.then(n=>{e.children.forEach(t=>{t.name===`ShaderBall-Placeholder`&&e.remove(t)});let r=n.clone(),i=r.children[0];i?.type===`Mesh`&&(i.geometry.attributes.tangent||i.geometry.computeTangents(),$s(i,t)),e.add(r)})}function $s(e,t){if(t?.color||t?.material||t?.texture){let n=t?.material??e.material?.clone()??new Ce;t.color&&`color`in n&&n.color instanceof a&&n.color.set(t.color),t?.texture&&`map`in n&&(n.map=t.texture),e.material=n}}function ec(){return new ve().add(Ks.createPrimitive(`Sphere`,{material:new re({transparent:!0,opacity:.1})}))}var I=A(`debuginput`),tc;(function(e){e.Mouse=`mouse`,e.Touch=`touch`,e.Controller=`controller`,e.Hand=`hand`})(tc||={});var nc;(function(e){e.PointerDown=`pointerdown`,e.PointerUp=`pointerup`,e.PointerMove=`pointermove`})(nc||={});var rc;(function(e){e.KeyDown=`keydown`,e.KeyUp=`keyup`,e.KeyPressed=`keypress`})(rc||={});var L;(function(e){e.PointerDown=`pointerdown`,e.PointerUp=`pointerup`,e.PointerMove=`pointermove`,e.KeyDown=`keydown`,e.KeyUp=`keyup`,e.KeyPressed=`keypress`})(L||={});var ic=class extends PointerEvent{clientZ;deviceIndex;origin;source;mode;get isSpatial(){return this.mode!=`screen`}get ray(){return this._ray||=new p(this.space.worldPosition.clone(),this.space.worldForward.clone()),this._ray}set ray(e){this._ray=e}get hasRay(){return this._ray!==void 0}_ray;space;isClick=!1;isDoubleClick=!1;get used(){return this._used}_used=!1;use(){this._used=!0}get pointerId(){return this._pointerid}_pointerid;get pointerType(){return this._pointerType}_pointerType;buttonName=void 0;get type(){return this._type}_type;metadata={};intersections=[];constructor(e,t,n){super(e,n),this.clientZ=n.clientZ,this._pointerid=n.pointerId,this._pointerType=n.pointerType,this._type=e,this.deviceIndex=n.deviceIndex,this.origin=n.origin,this.source=t,this.mode=n.mode,this._ray=n.ray,this.space=n.device,this.buttonName=n.buttonName}_immediatePropagationStopped=!1;get immediatePropagationStopped(){return this._immediatePropagationStopped}_propagationStopped=!1;get propagationStopped(){return this._immediatePropagationStopped||this._propagationStopped}stopImmediatePropagation(){this._immediatePropagationStopped=!0,super.stopImmediatePropagation(),this.source?.stopImmediatePropagation()}stopPropagation(){this._propagationStopped=!0,super.stopPropagation(),this.source?.stopPropagation(),I&&console.warn(`Stop propagation...`,this.pointerId,this.pointerType)}},ac=class extends KeyboardEvent{source;constructor(e,t,n){super(e,n),this.source=t}stopImmediatePropagation(){super.stopImmediatePropagation(),this.source?.stopImmediatePropagation()}},oc=class{key;keyType;source;constructor(e){this.key=e.key,this.keyType=e.type,this.source=e}},sc;(function(e){e[e.Early=-100]=`Early`,e[e.Default=0]=`Default`,e[e.Late=100]=`Late`})(sc||={});var cc=class{_eventListeners={};addEventListener(e,t,n){if(this._eventListeners[e]||(this._eventListeners[e]=[]),!t||typeof t!=`function`){console.error(`Invalid call to addEventListener: callback is required and must be a function!`);return}n=n?{...n}:{};let r=0;n?.queue!=null&&(r=n.queue);let i=this._eventListeners[e],a=i.find(e=>e.priority===r);a?a.listeners.push({callback:t,options:n}):(i.push({priority:r,listeners:[{callback:t,options:n}]}),i.sort((e,t)=>e.priority-t.priority))}removeEventListener(e,t,n){if(!this._eventListeners[e]||!t)return;let r=this._eventListeners[e];if(n?.queue!=null){let e=r.find(e=>e.priority===n.queue);if(!e)return;let i=e.listeners.findIndex(e=>e.callback===t);i>=0&&e.listeners.splice(i,1)}else for(let e of r){let n=e.listeners.findIndex(e=>e.callback===t);n>=0&&e.listeners.splice(n,1)}}dispatchEvent(e){let t=!1;if(e instanceof ac){let t=this._eventListeners[e.type];if(t)for(let n of t)for(let t=0;t10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(e){for(let t=this._setCursorTypes.length-1;t>=0;t--)if(this._setCursorTypes[t]===e){this._setCursorTypes.splice(t,1),this.updateCursor();break}}updateCursor(){this._setCursorTypes?.length==0?this.context.domElement.style.cursor=`default`:this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(e){for(let t of this._pointerEventsPressed)if(t.pointerId===e&&t.used)return!0;return!1}getPointerPressedCount(){let e=0;for(let t=0;t=this._pointerPositions.length?null:this._pointerPositions[e]}getPointerPositionLastFrame(e){return e>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[e]}getPointerPositionDelta(e){return e>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[e]}getPointerPositionRC(e){return e>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[e]}getPointerDown(e){return e>=this._pointerDown.length?!1:this._pointerDown[e]}getPointerUp(e){return e>=this._pointerUp.length?!1:this._pointerUp[e]}getPointerPressed(e){return e>=this._pointerPressed.length?!1:this._pointerPressed[e]}getPointerClicked(e){return e>=this._pointerClick.length?!1:this._pointerClick[e]}getPointerDoubleClicked(e){return e>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[e]}getPointerDownTime(e){return e>=this._pointerDownTime.length?-1:this._pointerDownTime[e]}getPointerUpTime(e){return e>=this._pointerUpTime.length?-1:this._pointerUpTime[e]}getPointerLongPress(e){return e>=this._pointerDownTime.length?!1:this.getPointerPressed(e)&&this.context.time.time-this._pointerDownTime[e]>this._longPressTimeThreshold}getIsMouse(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]===tc.Mouse}getIsTouch(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]===tc.Touch}getTouchesPressedCount(){let e=0;for(let t=0;t=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[e]}getMouseWheelDeltaY(e=0){return e>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[e]}getPointerEvent(e){if(!(e>=this._pointerEvent.length))return this._pointerEvent[e]??void 0}*foreachPointerId(e){for(let t=0;t=0&&n.splice(r,1)}getFirstPressedButtonForPointer(e){let t=this._pressedStack.get(e);if(t)return t[0]}getLatestPressedButtonForPointer(e){let t=this._pressedStack.get(e);if(t)return t[t.length-1]}getKeyDown(e){if(e!==void 0)return this.isKeyDown(e);for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.startFrame===this.context.time.frameCount)return t.key}return null}getKeyPressed(e){if(e!==void 0)return this.isKeyPressed(e);for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.pressed)return t.key}return null}getKeyUp(e){if(e!==void 0)return this.isKeyUp(e);for(let e in this.keysPressed){let t=this.keysPressed[e];return t.pressed===!1&&t.frame===this.context.time.frameCount}return null}isKeyDown(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyDown(e))return!0;return!1}let n=this.keysPressed[e];return n?n.startFrame===this.context.time.frameCount&&n.pressed:!1}isKeyUp(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyUp(e))return!0;return!1}let n=this.keysPressed[e];return n?n.frame===this.context.time.frameCount&&n.pressed===!1:!1}isKeyPressed(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyPressed(e))return!0;return!1}let n=this.keysPressed[e];return n&&n.pressed||!1}getCodeForCommonKeyName(e){if(e.length===1){if(e>=`0`&&e<=`9`)return[`Digit`+e];if(e>=`a`&&e<=`z`)return[`Key`+e.toUpperCase()];if(e==` `)return[`Space`]}switch(e){case`shift`:case`Shift`:return[`ShiftLeft`,`ShiftRight`];case`control`:case`Control`:return[`ControlLeft`,`ControlRight`];case`alt`:case`Alt`:return[`AltLeft`,`AltRight`]}return null}createInputEvent(e){switch(e.type){case L.PointerDown:I&&Ti(`Create Pointer down`),this.onDownButton(e.deviceIndex,e.button),this.onDown(e);break;case L.PointerMove:I&&Ti(`Create Pointer move`),this.onMove(e);break;case L.PointerUp:I&&Ti(`Create Pointer up`),this.onUp(e),this.onReleaseButton(e.deviceIndex,e.button);break}}convertScreenspaceToRaycastSpace(e){return e.x=(e.x-this.context.domX)/this.context.domWidth*2-1,e.y=-((e.y-this.context.domY)/this.context.domHeight)*2+1,e}constructor(e){this.context=e,this.context.post_render_callbacks.push(this.onEndOfFrame)}_htmlEventSource;bindEvents(){this.unbindEvents(),this._htmlEventSource=this.context.renderer.domElement,window.addEventListener(`contextmenu`,this.onContextMenu),this._htmlEventSource.addEventListener(`pointerdown`,this.onPointerDown,{passive:!0}),window.addEventListener(`pointermove`,this.onPointerMove,{passive:!0,capture:!0}),window.addEventListener(`pointerup`,this.onPointerUp,{passive:!0}),window.addEventListener(`pointercancel`,this.onPointerCancel,{passive:!0}),window.addEventListener(`touchstart`,this.onTouchStart,{passive:!0}),window.addEventListener(`touchmove`,this.onTouchMove,{passive:!0}),window.addEventListener(`touchend`,this.onTouchEnd,{passive:!0}),this._htmlEventSource.addEventListener(`wheel`,this.onMouseWheel,{passive:!0}),window.addEventListener(`wheel`,this.onWheelWindow,{passive:!0}),window.addEventListener(`keydown`,this.onKeyDown,!1),window.addEventListener(`keypress`,this.onKeyPressed,!1),window.addEventListener(`keyup`,this.onKeyUp,!1),window.addEventListener(`blur`,this.onLostFocus)}unbindEvents(){for(let e in this._eventListeners)this._eventListeners[e].length=0;window.removeEventListener(`contextmenu`,this.onContextMenu),this._htmlEventSource?.removeEventListener(`pointerdown`,this.onPointerDown),window.removeEventListener(`pointermove`,this.onPointerMove),window.removeEventListener(`pointerup`,this.onPointerUp),window.removeEventListener(`pointercancel`,this.onPointerCancel),window.removeEventListener(`touchstart`,this.onTouchStart),window.removeEventListener(`touchmove`,this.onTouchMove),window.removeEventListener(`touchend`,this.onTouchEnd),this._htmlEventSource?.removeEventListener(`wheel`,this.onMouseWheel,!1),window.removeEventListener(`wheel`,this.onWheelWindow,!1),window.removeEventListener(`keydown`,this.onKeyDown,!1),window.removeEventListener(`keypress`,this.onKeyPressed,!1),window.removeEventListener(`keyup`,this.onKeyUp,!1),window.removeEventListener(`blur`,this.onLostFocus)}dispose(){let e=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);e>=0&&this.context.post_render_callbacks.splice(e,1),this.unbindEvents()}onLostFocus=()=>{for(let e in this.keysPressed)this.keysPressed[e].pressed=!1};_receivedPointerMoveEventsThisFrame=[];onEndOfFrame=()=>{this._receivedPointerMoveEventsThisFrame.length=0;for(let e=0;e{this.canReceiveInput(e)};keysPressed={};onKeyDown=e=>{if(I&&console.log(`key down ${e.code}, ${this.context.application.hasFocus}`,e),!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(t&&t.pressed)return;this.keysPressed[e.code]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:e.key,code:e.code};let n=new ac(L.KeyDown,e,e);this.onDispatchEvent(n)};onKeyPressed=e=>{if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(!t)return;t.pressed=!0,t.frame=this.context.time.frameCount+1;let n=new ac(L.KeyPressed,e,e);this.onDispatchEvent(n)};onKeyUp=e=>{if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(!t)return;t.pressed=!1,t.frame=this.context.time.frameCount+1;let n=new ac(L.KeyUp,e,e);this.onDispatchEvent(n)};onWheelWindow=e=>{document.pointerLockElement&&this.onMouseWheel(e)};onMouseWheel=e=>{if(this.canReceiveInput(e)===!1)return;this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;let t=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=t+e.deltaY};onPointerDown=e=>{if(this.context.isInAR||this.canReceiveInput(e)===!1)return;e.target instanceof HTMLElement&&e.target.setPointerCapture(e.pointerId);let t=this.getPointerId(e);I&&Ti(`pointer down #${t}, identifier:${e.pointerId}`);let n=this.getAndUpdateSpatialObjectForScreenPosition(t,e.clientX,e.clientY),r=new ic(L.PointerDown,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:t,button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:n,pressure:e.pressure});this.onDown(r)};onPointerMove=e=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(e.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(e.pointerId);let t=e.button;e.pointerType===`mouse`&&(t=this.getFirstPressedButtonForPointer(0)??0);let n=this.getPointerId(e,t);t===-1&&(t=n);let r=this.getAndUpdateSpatialObjectForScreenPosition(n,e.clientX,e.clientY),i=new ic(L.PointerMove,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:n,button:t,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:r,pressure:e.pressure});this.onMove(i)};onPointerCancel=e=>{this.context.isInAR||(I&&console.log(`Pointer cancel`,e),this.onPointerUp(e))};onPointerUp=e=>{if(this.context.isInAR)return;e.target instanceof HTMLElement&&e.target.releasePointerCapture(e.pointerId);let t=this.getPointerId(e),n=new ic(L.PointerUp,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:t,button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:this.getAndUpdateSpatialObjectForScreenPosition(t,e.clientX,e.clientY),pressure:e.pressure});this.onUp(n),this._pointerIds[t]=-1,I&&console.log(`ID=`+t,`PointerId=`+e.pointerId,`ALL:`,[...this._pointerIds])};getPointerId(e,t){return e.pointerType===`mouse`?0+(t??e.button):this.getPointerIndex(e.pointerId)}getButtonName(e){let t=e.button;if(e.pointerType===`mouse`)switch(t){case 0:return`left`;case 1:return`middle`;case 2:return`right`}return`unknown`}onTouchStart=e=>{if(this.context.isInAR)for(let t=0;t{if(this.context.isInAR)for(let t=0;t{if(this.context.isInAR)for(let t=0;t=t.x&&n<=t.right&&r>=t.y&&r<=t.bottom;return I&&!i&&console.log(`Not in rect`,t,n,r),i}onDown(e){let t=e.pointerId;if(this.getPointerPressed(t)){I&&console.warn(`Received pointerDown event for pointerId that is already pressed: ${t}/${e.button}`,I?e:``);return}if(I&&console.log(e.pointerType,`DOWN`,t,e.button),this.isInRect(e)){for(this.setPointerState(t,this._pointerPressed,!0),this.setPointerState(t,this._pointerDown,!0),this.setPointerStateT(t,this._pointerEvent,e.source);t>=this._pointerTypes.length;)this._pointerTypes.push(e.pointerType);for(this._pointerTypes[t]=e.pointerType;t>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new o);for(this._pointerPositionDown[t].set(e.clientX,e.clientY,e.clientZ??0);t>=this._pointerPositions.length;)this._pointerPositions.push(new w);this._pointerPositions[t].set(e.clientX,e.clientY),t>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[t]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(e),this._pointerEventsPressed.push(e),this.onDispatchEvent(e)}}onMove(e){let t=e.pointerId,n=this.getPointerPressed(t);n===!1&&!this.isInRect(e)||e.pointerType===tc.Touch&&!n||(this.updatePointerPosition(e),this.setPointerStateT(t,this._pointerEvent,e.source),this.onDispatchEvent(e))}onUp(e){let t=e.pointerId;if(!this.getPointerPressed(t)){I&&console.warn(`Received pointerUp for pointerId that is not pressed: ${t}/${e.button}`,I?e:``);return}I&&console.log(e.pointerType,`UP`,t),this.setPointerState(t,this._pointerPressed,!1),this.setPointerStateT(t,this._pointerEvent,e.source),this.setPointerState(t,this._pointerUp,!0),this.updatePointerPosition(e);for(let e=this._pointerEventsPressed.length-1;e>=0;e--)if(this._pointerEventsPressed[e].pointerId===t){this._pointerEventsPressed.splice(e,1);break}if(!this._pointerPositionDown[t]){I&&Ei(`[Received pointer up event without matching down event for button: `+t),console.warn(`Received pointer up event without matching down event for button: `+t);return}let n=this._pointerUpTime[t],r=this._pointerDownTime[t],i=this.context.time.realtimeSinceStartup,a=i-r;if(t>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[t]=i,a<1){let r=e.clientX-this._pointerPositionDown[t].x,a=e.clientY-this._pointerPositionDown[t].y,o=0;if(e.isSpatial&&e.clientZ!=null&&(o=e.clientZ-this._pointerPositionDown[t].z,r*=200,a*=200,o*=200),Math.abs(r)<5&&Math.abs(a)<5&&Math.abs(o)<5){this.setPointerState(t,this._pointerClick,!0),e.isClick=!0;let s=i-n;I&&console.log(`CLICK`,t,r,a,o,s),s0&&(this.setPointerState(t,this._pointerDoubleClick,!0),e.isDoubleClick=!0)}}this.onDispatchEvent(e)}updatePointerPosition(e){let t=e.pointerId;for(;t>=this._pointerPositions.length;)this._pointerPositions.push(new w);for(;t>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new w);for(;t>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new w);let n=this._pointerPositionsLastFrame[t];n.copy(this._pointerPositions[t]);let r=this._pointerPositionsDelta[t],i=e.clientX-n.x,a=e.clientY-n.y;if(e.source instanceof MouseEvent||e.source instanceof TouchEvent){let t=e.source;i===0&&t.movementX!==0&&(i=t.movementX||0),a===0&&t.movementY!==0&&(a=t.movementY||0)}r.x+=i,r.y+=a,this._pointerPositions[t].x=e.clientX,this._pointerPositions[t].y=e.clientY;let o=e.clientX,s=e.clientY;for(;t>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new w);let c=this._pointerPositionsRC[t];c.set(o,s),this.convertScreenspaceToRaycastSpace(c)}getPointerIndex(e){let t=-1;for(let n=0;n(e.postprocess(t),t.name=`PMREM_`+t.name,lc&&console.log(`NEEDLE_pmrem: loaded PMREM texture`,t),t))):(console.warn(`NEEDLE_pmrem: No KTX2Loader available on GLTFLoader — cannot load PMREM texture`),null)}static postprocess(e){return e.mapping=306,e}},dc=`NEEDLE_lightmaps`,fc=A(`debuglightmapsextension`)||A(`debuglightmaps`),pc;(function(e){e[e.Lightmap=0]=`Lightmap`,e[e.Skybox=1]=`Skybox`,e[e.Reflection=2]=`Reflection`})(pc||={});var mc=class{get name(){return dc}parser;registry;source;constructor(e,t,n){this.parser=e,this.registry=t,this.source=n}afterRoot(e){let t=this.parser.json.extensions;if(t){let e=t[dc];if(e){let t=e.textures;return t?.length?(fc&&console.log(e),new Promise(async(e,n)=>{let r=[];for(let e of t)if(e.pointer){fc&&console.log(e);let t=null;if(e.pointer.startsWith(`/textures/`)||e.pointer.startsWith(`textures/`))fc&&console.log(`Load texture from gltf`,e.pointer),t=$o(this.parser,e.pointer).then(t=>this.resolveTexture(e,t));else if(typeof e.pointer==`string`){fc&&console.log(`Load texture from path`,e.pointer);let n=Zt(this.source,e.pointer),r=n.endsWith(`.pmrem.ktx2`),i;i=n.endsWith(`.exr`)?new _t(this.parser.options.manager):n.endsWith(`.hdr`)?new ht(this.parser.options.manager):r?this.parser.options.ktx2Loader:new me(this.parser.options.manager),t=i.loadAsync(n,void 0).then(t=>(r&&t&&uc.postprocess(t),this.resolveTexture(e,t)))}else e.pointer;t&&r.push(t)}let i=await xn(r);i?.anyFailed&&(M()||fc)&&console.error(`[NEEDLE_lightmaps]Error during extension loading:`,i),e()})):null}}return null}resolveTexture(e,t){let n=t;fc&&console.log(`Light Texture loaded:`,n),n?.isTexture&&(this.registry?(n.colorSpace=l,this.registry.registerTexture(this.source,e.type,n,e.index)):console.log(pc[e.type],e.pointer,n))}},hc=!!A(`debuglightmaps`),gc=class{context;map=new Map;clear(){this.map.clear()}constructor(e){this.context=e}registerTexture(e,t,n,r){hc&&console.log(`Registering `,pc[t]+` "`+e+`"`,n),this.map.has(e)||this.map.set(e,new Map);let i=this.map.get(e),a=i?.get(t)??[];a.length0)for(let e=0;e`+(t/r.lastScreenCoverage).toFixed(0)+(n?``:`,`)}let d=o?o[i]?.density:-1,f=`LOD `+n.mesh_lod+` +TEX `+n.texture_lod;if(_c==`density`&&(f+=` +`+a+` tris +`+(d/r.lastScreenCoverage).toFixed(0)+` dens +`+(r.lastScreenCoverage*100).toFixed(1)+`% cov +`+(r.lastCentrality*100).toFixed(1)+`% centr +`+(vc.min.x.toFixed(2)+`-`+vc.max.x.toFixed(2)+`x`+vc.min.y.toFixed(2)+`-`+vc.max.y.toFixed(2))+` scr`),r.lastScreenCoverage>.1){let t=e,n=t.worldForward,r=t.worldPosition,a=P(n).multiplyScalar(c*.7).add(s),o=a.distanceTo(r),u=l[Math.min(l.length-1,Math.max(0,i))]+`88`,d=this.context.domHeight>0?screen.height/this.context.domHeight:1,p=e.isPerspectiveCamera?Math.tan(e.fov*Math.PI/180/2):1;H.DrawLabel(a,f,o*.012*d*p,void 0,16777215,u)}}}}},xc=new Int32Array(2),Sc=new Float32Array(xc.buffer),Cc=new Float64Array(xc.buffer),wc=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,Tc=class e{constructor(e,t){this.low=e|0,this.high=t|0}static create(t,n){return t==0&&n==0?e.ZERO:new e(t,n)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}};Tc.ZERO=new Tc(0,0);var Ec;(function(e){e[e.UTF8_BYTES=1]=`UTF8_BYTES`,e[e.UTF16_STRING=2]=`UTF16_STRING`})(Ec||={});var Dc=class e{constructor(e){this.bytes_=e,this.position_=0}static allocate(t){return new e(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Tc(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Tc(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return xc[0]=this.readInt32(e),Sc[0]}readFloat64(e){return xc[+!wc]=this.readInt32(e),xc[+!!wc]=this.readInt32(e+4),Cc[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){Sc[0]=t,this.writeInt32(e,xc[0])}writeFloat64(e,t){Cc[0]=t,this.writeInt32(e,xc[+!wc]),this.writeInt32(e+4,xc[+!!wc])}getBufferIdentifier(){if(this.bytes_.length>10)+55296,(t&1023)+56320))}return r}__union_with_string(e,t){return typeof e==`string`?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+4}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=4)throw Error(`FlatBuffers: file identifier must be length 4`);for(let t=0;t<4;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+4+t))return!1;return!0}createLong(e,t){return Tc.create(e,t)}createScalarList(e,t){let n=[];for(let r=0;rthis.minalign&&(this.minalign=t);let r=~(this.bb.capacity()-this.space+n)+1&t-1;for(;this.space=0&&this.vtable[t]==0;t--);let n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]==0?0:e-this.vtable[t]);this.addInt16(e-this.object_start);let r=(n+2)*2;this.addInt16(r);let i=0,a=this.space;outer_loop:for(t=0;t=0;t--)this.writeInt8(e.charCodeAt(t))}this.prep(this.minalign,4+r),this.addOffset(e),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){let n=this.bb.capacity()-e,r=n-this.bb.readInt32(n);if(this.bb.readInt16(r+t)==0)throw Error(`FlatBuffers: field `+t+` must be set`)}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(4,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||=new Map,this.string_maps.has(e))return this.string_maps.get(e);let t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n=56320)r=i;else{let t=e.charCodeAt(n++);r=(i<<10)+t+-56613888}r<128?t.push(r):(r<2048?t.push(r>>6&31|192):(r<65536?t.push(r>>12&15|224):t.push(r>>18&7|240,r>>12&63|128),t.push(r>>6&63|128)),t.push(r&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let e=0,n=this.space,r=this.bb.bytes();e{t.push(e)})},async load(){if(n.MODULE)return n.MODULE;let r=await e();n.MODULE=r,n.MAYBEMODULE=r;for(let e of t)e(r);return t.length=0,r}};return n}var Pc={MaterialX:Nc(()=>r(()=>import(`./materialx.eMaybKAQ.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)),RAPIER_PHYSICS:Nc(()=>r(()=>import(`./rapier3d.DBFmcAzL.js`).then(e=>e.t),__vite__mapDeps([4,2]),import.meta.url)),POSTPROCESSING:Nc(()=>r(()=>import(`./needle-engine.dep.DFJFZC0m.js`),__vite__mapDeps([5,6,3,2]),import.meta.url)),POSTPROCESSING_AO:Nc(()=>r(()=>import(`./N8AO.C2WXsanG.js`),__vite__mapDeps([7,8,6,3,2,9]),import.meta.url)),PEERJS:Nc(()=>r(()=>import(`./peerjs.UdR1_Ath.js`).then(e=>e.t),__vite__mapDeps([10,2]),import.meta.url))},Fc=void 0;function Ic(){return Fc}function Lc(e){Fc=e}async function Rc(e,t){let n=(await Pc.PEERJS.load()).default;return t||={},t={...Fc,...t},e?new n(e,t):new n(t)}async function zc(){let e=await Pc.PEERJS.load();return e.default===void 0?e:e.default}var Bc;(function(e){e.ConnectionList=`connection-list`})(Bc||={});var Vc=class{get isHost(){return this._host!==void 0}_host;_client;_clientData;constructor(){this.onEnable()}onEnable(){this.trySetupHost(`HOST-5980e65c-8438-453e-8b35-f13c736dcd81`)}async trySetupHost(e){let t=new(await(zc()))(e);t.on(`error`,t=>{console.error(t),this._host=void 0,this.trySetupClient(e)}),t.on(`open`,e=>{this._host=new Uc(t)})}async trySetupClient(e){this._client=new(await(zc())),this._client.on(`error`,e=>{console.error(`Client error`,e)}),this._client.on(`open`,t=>{console.log(`client connected`,t),this._clientData=this._client.connect(e,{metadata:{id:t}}),this._clientData.on(`open`,()=>{console.log(`Connected to host`)}),this._clientData.on(`data`,e=>{console.log(`<<`,e)})})}},Hc=class{_peer;constructor(e){this._peer=e}},Uc=class extends Hc{get isHost(){return!0}_connections=[];constructor(e){super(e),console.log(`I AM THE HOST`),this._peer?.on(`connection`,this.onConnection.bind(this)),this._peer.on(`close`,()=>{this.broadcast(`BYE`)}),setInterval(()=>{this.broadcast(`HELLO`)},2e3)}onConnection(e){console.log(`host connection`,e),e.on(`open`,()=>{this._connections.push(e),this.broadcastConnection(e)})}broadcastConnection(e){let t=this._connections.map(e=>e.metadata?.id).filter(e=>e!==void 0);this.broadcast({type:Bc.ConnectionList,connections:t})}broadcast(e){if(e!=null){console.log(`>>`,e);for(let t in this._peer.connections){let n=this._peer.connections[t];if(n)if(Array.isArray(n))for(let t of n)t&&t.send(e);else console.warn(n)}}}},Wc=`https://urls.needle.tools/default-networking-backend/index`,Gc=`wss://networking-2.needle.tools/socket`,Kc=!!A(`debugnet`),qc=!!(Kc||A(`debugowner`)),Jc=A(`debugnetbin`),Yc;(function(e){e.ConnectionInfo=`connection-start-info`})(Yc||={});var Xc;(function(e){e.Join=`join-room`,e.Leave=`leave-room`,e.JoinedRoom=`joined-room`,e.LeftRoom=`left-room`,e.UserJoinedRoom=`user-joined-room`,e.UserLeftRoom=`user-left-room`,e.RoomStateSent=`room-state-sent`})(Xc||={});var Zc=class{room;viewId;allowEditing;inRoom},Qc=class{room},$c=class{userId},el;(function(e){e.RequestHasOwner=`request-has-owner`,e.ResponseHasOwner=`response-has-owner`,e.RequestIsOwner=`request-is-owner`,e.ResponseIsOwner=`response-is-owner`,e.RequestOwnership=`request-ownership`,e.GainedOwnership=`gained-ownership`,e.RemoveOwnership=`remove-ownership`,e.LostOwnership=`lost-ownership`,e.GainedOwnershipBroadcast=`gained-ownership-broadcast`,e.LostOwnershipBroadcast=`lost-ownership-broadcast`})(el||={});var tl=class{guid;connection;get hasOwnership(){return this._hasOwnership}get isOwned(){return this._isOwned}get isConnected(){return this.connection.isConnected}_hasOwnership=!1;_isOwned=void 0;_gainSubscription;_lostSubscription;_hasOwnerResponse;constructor(e,t){this.connection=e,this.guid=t,this._gainSubscription=this.onGainedOwnership.bind(this),this._lostSubscription=this.onLostOwnership.bind(this),e.beginListen(el.LostOwnership,this._lostSubscription),e.beginListen(el.GainedOwnershipBroadcast,this._gainSubscription),this._hasOwnerResponse=this.onHasOwnerResponse.bind(this),e.beginListen(el.ResponseHasOwner,this._hasOwnerResponse)}_isWaitingForOwnershipResponseCallback=null;updateIsOwned(){this.connection.send(el.RequestHasOwner,{guid:this.guid})}onHasOwnerResponse(e){e.guid===this.guid&&(this._isOwned=e.value)}requestOwnershipIfNotOwned(){return this._isWaitingForOwnershipResponseCallback===null?(this._isWaitingForOwnershipResponseCallback=this.waitForHasOwnershipRequestResponse.bind(this),this.connection.beginListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),this.connection.send(el.RequestHasOwner,{guid:this.guid}),this):this}waitForHasOwnershipRequestResponse(e){e.guid===this.guid&&(this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null),this._isOwned=e.value,e.value||(qc&&console.log(`request ownership`,this.guid),this.requestOwnership()))}requestOwnershipAsync(){return new Promise((e,t)=>{this.requestOwnership();let n=0,r=()=>{if(n++>10)return t(`Timeout`);setTimeout(()=>{this.hasOwnership?e(this):r()},100)};r()})}requestOwnership(){return qc&&console.log(`Request ownership`,this.guid),this.connection.send(el.RequestOwnership,{guid:this.guid}),this}freeOwnership(){return this.connection.send(el.RemoveOwnership,{guid:this.guid}),this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null),this}destroy(){this.connection.stopListen(el.GainedOwnership,this._gainSubscription),this.connection.stopListen(el.LostOwnership,this._lostSubscription),this.connection.stopListen(el.ResponseHasOwner,this._hasOwnerResponse),this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null)}onGainedOwnership(e){e.guid===this.guid&&(this._isOwned=!0,this.connection.connectionId===e.owner?(qc&&console.log(`GAINED OWNERSHIP`,this.guid),this._hasOwnership=!0):this._hasOwnership=!1)}onLostOwnership(e){e===this.guid&&(qc&&console.log(`LOST OWNERSHIP`,this.guid),this._hasOwnership=!1,this._isOwned=!1)}},nl=class{context;_peer=null;constructor(e){this.context=e}get peer(){return this._peer||=new Vc,this._peer}tryGetState(e){return e===`invalid`?null:this._state[e]}get connectionId(){return this._connectionId}get isDebugEnabled(){return Kc}get isConnected(){return this.connected}get currentRoomName(){return this._currentRoomName}get allowEditing(){return this._currentRoomAllowEditing}get currentRoomViewId(){return this._currentRoomViewId}getViewOnlyUrl(){if(this.currentRoomViewId===null)return null;let e=new URL(window.location.href);return e.searchParams.set(`view`,this.currentRoomViewId),e.href}get isInRoom(){return this._isInRoom}get currentLatency(){return this._currentDelay}get currentServerUrl(){return this._ws?.url??null}sendPing(){this.send(`ping`,{time:this.context.time.time})}userIsInRoom(e){return this._currentInRoom.indexOf(e)!==-1}_usersInRoomCopy=[];usersInRoom(e=null){e||=this._usersInRoomCopy,e.length=0;for(let t of this._currentInRoom)e.push(t);return e}joinRoom(e,t=!1){return e?e.length>1024?(console.error(`Room name too long, can not join: "`+e+`". Max length is 1024 characters.`),!1):(this.isInRoom&&this.currentRoomName!==e&&console.warn(`Needle Engine is already connected to a networking room. Connecting to multiple rooms is not supported`),this.connect(),Kc&&console.log(`join: `+e),this.send(Xc.Join,{room:e,viewOnly:t},Oo.OnConnection),!0):(console.error(`Missing room name, can not join: "`+e+`"`),!1)}leaveRoom(e=null){return e||=this.currentRoomName,e?(this.send(Xc.Leave,{room:e}),!0):(console.error(`Missing room name, can not join: "`+e+`"`),!1)}send(e,t=null,n=Oo.Queued){if(t===null&&(t={}),n===Oo.Queued){this._defaultMessagesBuffer.push({key:e,value:t});return}return this.sendWithWebsocket(e,t,n)}sendDeleteRemoteState(e){this.send(`delete-state`,{guid:e,dontSave:!0}),delete this._state[e]}sendDeleteRemoteStateAll(){this.send(`delete-all-state`),this._state={}}sendBinary(e){Jc&&console.log(`<< send binary`,this.context.time.frame,e.length/1024+` KB`),this._ws?.send(e)}_defaultMessagesBuffer=[];_defaultMessagesBufferArray=[];sendBufferedMessagesNow(){if(!this._ws)return;this._defaultMessagesBufferArray.length=0;let e=Object.keys(this._defaultMessagesBuffer).length;for(let t in this._defaultMessagesBuffer){let n=this._defaultMessagesBuffer[t];if(e<=1){this.sendWithWebsocket(n.key,n.value,Oo.Immediate);break}let r=this.toMessage(n.key,n.value);this._defaultMessagesBufferArray.push(r)}if(this._defaultMessagesBuffer.length=0,this._defaultMessagesBufferArray.length>0&&Kc&&console.log(`SEND BUFFERED`,this._defaultMessagesBufferArray.length),this._defaultMessagesBufferArray.length<=0)return;let t=JSON.stringify(this._defaultMessagesBufferArray);this._ws?.send(t)}beginListen(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),t}stopListening(e,t){return this.stopListen(e,t)}stopListen(e,t){if(!t||!this._listeners[e])return;let n=this._listeners[e].indexOf(t);n>=0&&this._listeners[e].splice(n,1)}beginListenBinary(e,t){return this._listenersBinary[e]||(this._listenersBinary[e]=[]),this._listenersBinary[e].push(t),t}stopListenBinary(e,t){if(!this._listenersBinary[e])return;let n=this._listenersBinary[e].indexOf(t);n>=0&&this._listenersBinary[e].splice(n,1)}netWebSocketUrlProvider;registerProvider(e){this.netWebSocketUrlProvider=e}async connect(e){if(this.connected&&e&&e!==Gc)return Promise.reject(`Can not connect to different server url. Please disconnect first.`);if(this.connected)return Promise.resolve(!0);e&&console.debug(`Connecting to user provided url `+e);let t=e||this.netWebSocketUrlProvider?.getWebsocketUrl();return t?Gc=t:Tt()&&(Gc=`wss://`+window.location.host+`/socket`),this.connectWebsocket()}disconnect(){this._ws?.close(),this._ws=void 0,Gc=void 0,this._currentRoomAllowEditing=!0,this._currentRoomName=null,this._currentRoomViewId=null,this._isInRoom=!1,this._currentInRoom.length=0,this._state={},this._currentDelay=-1}_listeners={};_listenersBinary={};connected=!1;channelId;_connectionId=null;_ws;_waitingForSocket={};_isInRoom=!1;_currentRoomName=null;_currentRoomViewId=null;_currentRoomAllowEditing=!0;_currentInRoom=[];_state={};_currentDelay=-1;_connectingToWebsocketPromise=null;connectWebsocket(){return this._connectingToWebsocketPromise?this._connectingToWebsocketPromise:this._connectingToWebsocketPromise=new Promise(async(e,t)=>{let n=!1,i=t=>{n||(n=!0,e(t))};if(Gc===void 0&&(console.log(`Fetch default backend url: `+Wc),Gc=await(await fetch(Wc)).text()),Gc===void 0){i(!1);return}console.debug(`Connecting to networking backend on +`+Gc);let a=await r(()=>import(`./needle-engine.BJP2NBoC.js`).then(e=>e.t),__vite__mapDeps([11,2]),import.meta.url),o=a.default?.WebsocketBuilder??a.WebsocketBuilder,s=a.default?.ExponentialBackoff??a.ExponentialBackoff,c=new o(Gc).withMaxRetries(10).withBackoff(new s(2e3,4)).onOpen(()=>{this._connectingToWebsocketPromise=null,this._ws=c,this.connected=!0,M()||Kc?console.log(`Connected to networking backend +`+Gc):console.debug(`Connected to networking backend`,Gc),i(!0),this.onSendQueued(Oo.OnConnection)}).onClose(e=>{this._connectingToWebsocketPromise=null,this.connected=!1,this._isInRoom=!1,i(!1);let t=`Websocket connection closed...`;Gc?.includes(`/socket`)||(t+=` Do you perhaps mean to connect to "/socket"?`),console.error(t)}).onError(e=>{console.error(`Websocket connection failed...`),i(!1),$a.sendEvent(this.context,`networking`,{event:`connection_error`})}).onRetry(()=>{console.log(`Retry connecting to networking websocket`)}).build();c.addEventListener(a.WebsocketEvent.message,(e,t)=>{this.onMessage(e,t)})})}onMessage(e,t){let n=t.data;try{if(typeof n!=`string`){n.size&&this.handleIncomingBinaryMessage(n);return}let e=JSON.parse(n);if(Array.isArray(e))for(let t of e)this.handleIncomingStringMessage(t);else this.handleIncomingStringMessage(e);return}catch(e){Kc&&n===`pong`?console.log(`<<`,n):M()&&console.error(`Failed to parse message`,e)}}async handleIncomingBinaryMessage(e){Jc&&console.log(`<< bin`,this.context.time.frame);let t=await e.arrayBuffer(),n=new Dc(new Uint8Array(t)),r=n.getBufferIdentifier(),i=this._listenersBinary[r],a=jc(n),o=Mc(a);if(o&&typeof o==`string`&&(this._state[o]=a),!i)return;let s=a??n;for(let e of i)e(s)}handleIncomingStringMessage(e){if(Kc&&console.log(`<<`,e.key??e),e.key)switch(e.key){case Yc.ConnectionInfo:if(e.data){let t=e.data;t&&(console.assert(t.id!==void 0&&t.id!==null&&t.id.length>0,`server did not send connection id`,t.id),console.debug(`Your id is: `+t.id,this.context.alias??``),this._connectionId=t.id,$a.sendEvent(this.context,`networking`,{event:`connected`}))}else console.warn(`Expected connection id in `+e.key);break;case Xc.JoinedRoom:if(Kc&&console.log(e),e){this._isInRoom=!0;let t=e;this._currentRoomName=t.room,this._currentRoomViewId=t.viewId,this._currentRoomAllowEditing=t.allowEditing??!0,this._currentInRoom.length=0,this._currentInRoom.push(...t.inRoom),(Jc||M())&&console.debug(`Joined Needle Engine Room: `+t.room);let n=new URL(window.location.href);n.searchParams.has(`room`)&&n.searchParams.delete(`room`),n.searchParams.set(`view`,this._currentRoomViewId),console.debug(`Room view id: ${this._currentRoomViewId}\n${n.href}`)}this.onSendQueued(Oo.OnRoomJoin),$a.sendEvent(this.context,`networking`,{event:`joined_room`,room:this._currentRoomName});break;case Xc.LeftRoom:let t=e;t.room===this.currentRoomName&&(this._isInRoom=!1,this._currentRoomName=null,this._currentRoomAllowEditing=!0,this._currentInRoom.length=0,(Jc||M())&&console.debug(`Left Needle Engine Room: `+t.room)),$a.sendEvent(this.context,`networking`,{event:`left_room`,room:t.room});break;case Xc.UserJoinedRoom:if(e.data){let t=e.data;this._currentInRoom.push(t.userId),Kc&&console.log(t.userId+` joined`,`now in room:`,this._currentInRoom)}break;case Xc.UserLeftRoom:if(e.data){let t=e.data,n=this._currentInRoom.indexOf(t.userId);n>=0&&(Kc&&console.log(t.userId+` left`,`now in room:`,this._currentInRoom),this._currentInRoom.splice(n,1)),t.userId===this.connectionId&&console.log(`you left the room`)}break;case`all-room-state-deleted`:Kc&&console.log(`RECEIVED all-room-state-deleted`),this._state={};break;case`ping`:case`pong`:let n=e.data?.time;n&&(this._currentDelay=this.context.time.time-n),Kc&&console.log(`Current latency: ${(this._currentDelay*1e3).toFixed()} ms`,`Clients in room: `+this._currentInRoom?.length);break}let t=e.data;t&&(this._state[t.guid]=t);let n=this._listeners[e.key];if(n){n=[...n];for(let t of n)try{t(e.data)}catch(t){console.error(`Error invoking callback for "`+e.key+`"`,t)}}}toMessage(e,t){return{key:e,data:t}}sendWithWebsocket(e,t,n=Oo.OnRoomJoin){if(!this._ws){let r=this._waitingForSocket[n]||[];r.push(()=>this.sendWithWebsocket(e,t,n)),this._waitingForSocket[n]=r;return}let r=JSON.stringify(this.toMessage(e,t));Kc&&console.log(`>>`,e),this._ws.send(r)}onSendQueued(e){let t=this._waitingForSocket[e];if(t){for(let e of t)e();t.length=0}}},rl=A(`debugplayerview`),il;(function(e){e.Browser=`browser`,e.Headset=`headset`,e.Handheld=`handheld`})(il||={});var al=class{userId;context;viewDevice=il.Browser;get currentObject(){return this._object}set currentObject(e){this._object=e}get isConnected(){return this.context.connection.userIsInRoom(this.userId)}removed=!1;_object;constructor(e,t){this.userId=e,this.context=t}},ol=class{context;playerViews=new Map;constructor(e){this.context=e}setPlayerView(e,t,n){let r=this.playerViews.get(e);r||(r=new al(e,this.context),this.playerViews.set(e,r)),r.viewDevice=n,r.currentObject=t,r.removed=!1}getPlayerView(e){if(e){if(!this.context.connection.userIsInRoom(e)){this.playerViews.delete(e);return}return this.playerViews.get(e)}}removePlayerView(e,t){let n=this.playerViews.get(e);n?.viewDevice===t&&(rl&&console.log(`REMOVE`,e),n.removed=!0,this.playerViews.delete(e))}},sl=new we;async function cl(e){return new Promise((t,n)=>{sl.load(e,t,void 0,n)})}var ll=new Uint8Array(4);ll[0]=255,ll[1]=255,ll[2]=255,ll[3]=255;var ul=new m(ll,1,1,y);function dl(e,t=1){let n=`alpha`in e,r=t*t,i=new Uint8Array(4*r),a=Math.floor(e.r*255),o=Math.floor(e.g*255),s=Math.floor(e.b*255);for(let t=0;t{let r=this.loaded.get(t);r?e(r):n(`Shader not found`)});let n=new ml(e,await cl(t));return this.loaded.set(t,n),n}};function hl(e,t){let n=e.elements;t||=[],t.length=0;for(let e=0;e<16;e+=4){let r=n[e],i=n[e+1],a=n[e+2],o=n[e+3],s=new Te(r,i,a,o);t.push(s)}return t}var gl=[],_l=[];function vl(e,t){if(gl.length===0)for(let e=0;e<27;e++)gl.push(0);t||=gl;for(let e=0;e<27;e++)_l[e]=t[e];t=_l,e.unity_SHAr={value:new Te(t[9],t[3],t[6],t[0])},e.unity_SHBr={value:new Te(t[12],t[15],t[18],t[21])},e.unity_SHAg={value:new Te(t[10],t[4],t[7],t[1])},e.unity_SHBg={value:new Te(t[13],t[16],t[19],t[22])},e.unity_SHAb={value:new Te(t[11],t[5],t[8],t[2])},e.unity_SHBb={value:new Te(t[14],t[17],t[20],t[23])},e.unity_SHC={value:new Te(t[24],t[25],t[26],1)}}var yl=class{vertexShader;fragmentShader;technique;constructor(e,t,n){this.vertexShader=e,this.fragmentShader=t,this.technique=n}};async function bl(e,t){if(!e)return console.error(`Can not find technique: no shader data`),null;let n=e.programs[t],r=n.vertexShader,i=n.fragmentShader;if(r!==void 0&&i!==void 0){let n=e.shaders[r],a=e.shaders[i];if(n.uri&&a.uri||n.code&&a.code){if(!n.code&&n.uri&&await xl(n),!a.code&&a.uri&&await xl(a),!n.code||!a.code)return null;let r=e.techniques[t];return new yl(n.code,a.code,r)}}return console.error(`Shader technique not found`,t),null}async function xl(e){let t=e.uri;t&&(t.endsWith(`.glsl`)?e.code=(await new we().loadAsync(t)).toString():e.code=Sl(e.uri))}function Sl(e){return decodeURIComponent(Array.prototype.map.call(atob(e),function(e){return`%`+(`00`+e.charCodeAt(0).toString(16)).slice(-2)}).join(``))}var Cl=A(`debugenvlight`),wl;(function(e){e[e.Skybox=0]=`Skybox`,e[e.Trilight=1]=`Trilight`,e[e.Flat=3]=`Flat`,e[e.Custom=4]=`Custom`})(wl||={});var Tl;(function(e){e[e.Skybox=0]=`Skybox`,e[e.Custom=1]=`Custom`})(Tl||={});var El=class{context;constructor(e){this.context=e,this.context.pre_update_callbacks.push(this.preUpdate.bind(this))}_currentLightSettingsId;_sceneLightSettings;get currentLightSettingsId(){return this._currentLightSettingsId}preUpdate(){let e=this.context.time;this._timevec4.x=e.time,this._timevec4.y=Math.sin(e.time),this._timevec4.z=Math.cos(e.time),this._timevec4.w=e.deltaTime}_timevec4=new Te;get timeVec4(){return this._timevec4}get environmentIntensity(){if(!this._sceneLightSettings||!this._currentLightSettingsId)return 1;let e=this._sceneLightSettings.get(this._currentLightSettingsId);return e?e.ambientIntensity:1}get sceneLightSettings(){return this._sceneLightSettings?.values()}enable(e){e instanceof js&&(e=e.url);let t=this._sceneLightSettings?.get(e);return t?(Cl&&console.log(`Enable scene light settings`,e,t),e!==this._currentLightSettingsId&&this._currentLightSettingsId&&this.disable(this._currentLightSettingsId),this._currentLightSettingsId=e,t.enabled=!0,!0):(Cl&&console.warn(`No light settings found for`,e),!1)}disable(e){if(e instanceof js&&(e=e.url),e==null)return!1;let t=this._sceneLightSettings?.get(e);return t?(Cl&&console.log(`Disable scene light settings`,e,t),t.enabled=!1,!0):!1}enableCurrent(){return this._currentLightSettingsId?(this.enable(this._currentLightSettingsId),this._currentLightSettingsId??null):null}disableCurrent(){if(this._currentLightSettingsId){let e=this._currentLightSettingsId;return this.disable(this._currentLightSettingsId),e}return null}internalRegisterSceneLightSettings(e){let t=e.sourceId;if(!t){console.error(`Missing source id for scene light settings, can not register:`,e);return}Cl&&console.log(`Register `+e?.sourceId+` lighting`,e),this._sceneLightSettings||=new Map,this._sceneLightSettings.set(t,e)}internalUnregisterSceneLightSettings(e){let t=e.sourceId;if(!t){console.error(`Missing source id for scene light settings, can not unregister:`,e);return}Cl&&console.log(`Unregister `+e?.sourceId+` lighting`,e),this._sceneLightSettings&&this._sceneLightSettings.delete(t)}internalRegisterReflection(e,t){Cl&&console.log(`Register reflection`,e,t);let n=new Dl(this.context,t,1);this._lighting[e]=n}internalGetReflection(e){return this._lighting[e]}__currentReflectionId=null;internalEnableReflection(e){this.__currentReflectionId=e;let t=this._sceneLightSettings?.get(e);switch(Cl&&console.log(`Enable reflection`,e,t?wl[t.ambientMode]:`Unknown ambient mode`,t),t?.ambientMode){case wl.Skybox:case wl.Custom:let t=this.internalGetReflection(e);if(t&&t.Source){Cl&&console.log(`Setting environment reflection`,t);let e=this.context.scene,n=t.Source;return n.mapping!==306&&(n.mapping=303),e.environment=n,e.environmentIntensity=this.environmentIntensity||1,n}else Cl&&console.warn(`Could not find reflection for source`,e);break}if(t?.environmentReflectionSource===Tl.Custom)switch(t?.ambientMode){case wl.Trilight:if(t.ambientTrilight){let e=t.ambientTrilight,n=fl(e[0],e[1],e[2],64,64);return n.colorSpace=de,n.mapping=303,this.context.scene.environment=n,n}else console.error(`Missing ambient trilight`,t.sourceId);case wl.Flat:if(t.ambientLight){let e=dl(t.ambientLight,64);return e.colorSpace=de,e.mapping=303,this.context.scene.environment=e,e}else console.error(`Missing ambientlight`,t.sourceId)}return null}internalDisableReflection(e){if(e&&e!==this.__currentReflectionId){Cl&&console.log(`Not disabling reflection for`,e,`because it is not the current light settings id`,this.__currentReflectionId);return}Cl&&console.log(`Disable reflection`,e);let t=this.context.scene;t.environment=null}_lighting={}},Dl=class{get Source(){return this._source}_source;constructor(e,t,n=1){this._source=t,t.mapping!==306&&(t.mapping=303)}},Ol=A(`timescale`),kl=1;typeof Ol==`number`&&(kl=Ol);var Al=class{get time(){return this._time}set time(e){this._time=e}_time=0;get deltaTime(){return this._deltaTime}set deltaTime(e){this._deltaTime=e}_deltaTime=0;get deltaTimeUnscaled(){return this._deltaTimeUnscaled}_deltaTimeUnscaled=0;timeScale=1;get frame(){return this._frame}set frame(e){this._frame=e}_frame=0;get frameCount(){return this.frame}get realtimeSinceStartup(){return this.clock.elapsedTime}get fps(){return 1/this.deltaTime}get smoothedFps(){return this._smoothedFps}get smoothedDeltaTime(){return 1/this._smoothedFps}clock=new De;_smoothedFps=0;_smoothedDeltaTime=0;_fpsSamples=[];_fpsSampleIndex=0;constructor(){typeof kl==`number`&&(this.timeScale=kl)}update(){this.deltaTime=this.clock.getDelta(),this.deltaTime=Math.min(.1,this.deltaTime),this._deltaTimeUnscaled=this.deltaTime,this.deltaTime<=0&&(this.deltaTime=1e-12),this.deltaTime*=this.timeScale,this.frame+=1,this.time+=this.deltaTime,this._fpsSamples.length<60?this._fpsSamples.push(this.deltaTime):this._fpsSamples[this._fpsSampleIndex++%60]=this.deltaTime;let e=0;for(let t=0;t=0&&t>=0){let n=i.tonemapping_pars_fragment.substring(e,t+42);i.tonemapping_pars_fragment=i.tonemapping_pars_fragment.replace(n,` +float startCompression = 0.8; +float desaturation = 0.5; +// Patched tonemapping function +vec3 NeutralToneMapping( vec3 color ) { + color *= toneMappingExposure; + + float d = 1. - startCompression; + // float peak = dot(color, vec3(0.299, 0.587, 0.114)); + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + float newPeak = 1. - d * d / (peak + d - startCompression); + float invPeak = 1. / peak; + + float extraBrightness = dot(color * (1. - startCompression * invPeak), vec3(1, 1, 1)); + + color *= newPeak * invPeak; + float g = 1. - 3. / (desaturation * extraBrightness + 3.); + return mix(color, vec3(1, 1, 1), g); +} +`)}else M()&&console.error(`Couldn't find NeutralToneMapping in ShaderChunk.tonemapping_pars_fragment`)}function Pl(){let e=i.tonemapping_pars_fragment.indexOf(`vec3 AgXToneMapping( vec3 color ) {`),t=i.tonemapping_pars_fragment.indexOf(`return color;`,e);if(e>=0&&t>=0){let n=i.tonemapping_pars_fragment.substring(e,t+13);i.tonemapping_pars_fragment=i.tonemapping_pars_fragment.replace(n,` +// 0: Default, 1: Golden, 2: Punchy +#define AGX_LOOK 0 + +vec3 userSlope = vec3(1.0); +vec3 userOffset = vec3(0.0); +vec3 userPower = vec3(1.0); +float userSaturation = 1.0; + +// Mean error^2: 3.6705141e-06 +vec3 _agxDefaultContrastApprox(vec3 x) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} + +vec3 _agx(vec3 val) { + const mat3 agx_mat = mat3( + 0.842479062253094, 0.0423282422610123, 0.0423756549057051, + 0.0784335999999992, 0.878468636469772, 0.0784336, + 0.0792237451477643, 0.0791661274605434, 0.879142973793104); + + const float min_ev = -12.47393; + const float max_ev = 4.026069; + + // val = pow(val, vec3(2.2)); + + // Input transform (inset) + val = agx_mat * val; + + // Log2 space encoding + val = clamp(log2(val), min_ev, max_ev); + val = (val - min_ev) / (max_ev - min_ev); + + // Apply sigmoid function approximation + val = _agxDefaultContrastApprox(val); + + return val; +} + +vec3 _agxEotf(vec3 val) { + const mat3 agx_mat_inv = mat3( + 1.19687900512017, -0.0528968517574562, -0.0529716355144438, + -0.0980208811401368, 1.15190312990417, -0.0980434501171241, + -0.0990297440797205, -0.0989611768448433, 1.15107367264116); + + // Inverse input transform (outset) + val = agx_mat_inv * val; + + // sRGB IEC 61966-2-1 2.2 Exponent Reference EOTF Display + // NOTE: We're linearizing the output here. Comment/adjust when + // *not* using a sRGB render target + val = pow(val, vec3(2.2)); + + return val; +} + +vec3 _agxLook(vec3 val) { + const vec3 lw = vec3(0.2126, 0.7152, 0.0722); + float luma = dot(val, lw); + + // Default + vec3 offset = vec3(0.0); + vec3 slope = vec3(1.0); + vec3 power = vec3(1.0); + float sat = 1.0; + + #if AGX_LOOK == 1 + // Golden + slope = vec3(1.0, 0.9, 0.5); + power = vec3(0.8); + sat = 0.8; + #elif AGX_LOOK == 2 + // Punchy + slope = vec3(1.0); + power = vec3(1.35, 1.35, 1.35); + sat = 1.4; + #endif + + // Needle + slope = vec3(1.05); + power = vec3(1.10, 1.10, 1.10); + sat = 1.15; + + // User + // slope = userSlope; + // offset = userOffset; + // power = userPower; + // sat = userSaturation; + + // ASC CDL + val = pow(val * slope + offset, power); + return luma + sat * (val - luma); +} + + +vec3 AgXToneMapping( vec3 color ) { + // apply AGX + color *= toneMappingExposure; + color = max(color, vec3(0.001)); // Prevent NaN + color = _agx(color); + color = _agxLook(color); // Optional + color = _agxEotf(color); + return color; +`)}else M()&&console.error(`Couldn't find AgXToneMapping in ShaderChunk.tonemapping_pars_fragment`)}function Fl(e){if(typeof e==`string`)switch(e=e.toLowerCase(),e){case`none`:return 0;case`neutral`:return 7;case`aces`:return 4;case`agx`:return 6;case`khronos_neutral`:return 7;default:console.warn(`[PostProcessing] Unknown tone mapping mode`,e);return}}var Il=[];function Ll(e){Il.indexOf(e)===-1&&Il.push(e)}function Rl(e){let t=Il.indexOf(e);t!==-1&&Il.splice(t,1)}var zl=[];function Bl(e){zl.indexOf(e)===-1&&zl.push(e)}function Vl(e){let t=zl.indexOf(e);t!==-1&&zl.splice(t,1)}function Hl(e){globalThis.dispatchEvent(new CustomEvent(`needle-xrsession-start`,{detail:e}));for(let t=0;t`);``+btoa(` `);var Gl=`data:image/svg+xml;charset=utf-8;base64,`+btoa(``),Kl;(function(e){function t(e){return e===`0`||e?.toLowerCase()===`false`}e.isFalsey=t;function n(e,n,r){let i=e.getAttribute(n);return t(i)?null:(r?.onAttribute?.call(null,i),i)}e.getAttributeValueIfNotFalsey=n;function r(e,n,r){let i=e.getAttribute(n);return i===null?null:t(i)?(r?.onAttribute?.call(null,i,!0),!1):(r?.onAttribute?.call(null,i,!1),i)}e.getAttributeAndCheckFalsey=r})(Kl||={});async function ql(e){if(!globalThis.QRCode){let e=`https://cdn.jsdelivr.net/gh/davidshimjs/qrcodejs@gh-pages/qrcode.min.js`,t=document.head.querySelector(`script[src="${e}"]`);t||(t=document.createElement(`script`),t.src=e,document.head.appendChild(t)),await new Promise((e,n)=>{t.addEventListener(`load`,()=>{e(!0)})})}let t=globalThis.QRCode,n=e.domElement??document.createElement(`div`),r=new t(n,{width:e.width??256,height:e.height??256,colorDark:`#000000`,colorLight:`#ffffff`,correctLevel:e.showLogo?t.CorrectionLevel.H:t.CorrectLevel.M,...e}),i=r?._oQRCode.moduleCount||0,a=r?._oDrawing?._elCanvas,o=.25;o=i<40?Math.floor(i/4)/i:Math.floor(i/6)/i;let s=Math.floor(i/20)/i;try{let t=await Jl(a,{showLogo:e.showLogo,logoSize:o,logoPadding:s}).catch(e=>{});t&&(n.innerHTML=``,n.append(t))}catch{}if(e.showUrl!==!1&&e.text){let t=n.querySelector(`.qr-code-link-label`),r=e.text.replace(/^(https?:\/\/)?(www\.)?/,``).replace(/\/+$/,``).replace(/\?+$/,``);if(r=`Scan to visit `+r,t)t.textContent=r;else{let t=document.createElement(`div`);t.classList.add(`qr-code-link-label`),e.text=r,t.textContent=e.text,t.addEventListener(`click`,e=>{e.stopImmediatePropagation()}),t.style.textAlign=`center`,t.style.fontSize=`0.8em`,t.style.marginTop=`0.1em`,t.style.color=`#000000`,t.style.fontFamily=`'Roboto Flex', sans-serif`,t.style.opacity=`0.5`,t.style.wordBreak=`break-all`,t.style.wordWrap=`break-word`,t.style.marginBottom=`0.3em`,n.style.width=`calc(210px + 20px)`,n.appendChild(t)}}return n}async function Jl(e,t){if(!e)return;let n=t.logoPadding||1/32,r=new Image,i=document.querySelector(`needle-engine`);i||console.debug(`[QR Code] No web component found`);let a=Xa(),o=null;if(o=Kl.getAttributeAndCheckFalsey(i,`qrcode-logo-src`),a&&t.showLogo!==!0&&o===!1||(o||=Kl.getAttributeAndCheckFalsey(i,`logo-src`),a&&t.showLogo!==!0&&o===!1)||(o||=Kl.getAttributeAndCheckFalsey(i,`loading-logo-src`,{onAttribute:()=>{M()?console.warn(`[QR Code] 'loading-logo-src' is deprecated, please use 'logo-src' or 'qrcode-logo-src' instead.`):console.debug(`[QR Code] 'loading-logo-src' is deprecated.`)}}),a&&t.showLogo!==!0&&o===!1)||(o&&!a&&(console.warn(`[QR Code] Custom logo is only available with a commercial license. Using default Needle logo. Please get a commercial license at https://needle.tools/pricing.`),o=null),o||=Wl,!o))return;let s=!1;t.showLogo!==!1&&(r.src=o,s=await new Promise((e,t)=>{r.onload=()=>e(!0),r.onerror=t=>{let n=o===Wl?null:`'`+o+`'`;console.error(`[QR Code] Error loading logo image for QR code`,n,M()?t:``),e(!1)}}));let c=document.createElement(`canvas`);c.width=e.width+8,c.height=e.height+8;let l=c.getContext(`2d`);if(!l)return;l.fillStyle=`#ffffff`,l.fillRect(0,0,c.width,c.height),l.drawImage(e,8/2,8/2),l.imageSmoothingEnabled=!0,l.imageSmoothingQuality=`high`,l.mozImageSmoothingEnabled=!0,l.webkitImageSmoothingEnabled=!0,l.globalCompositeOperation=`lighten`;let u=l.createLinearGradient(0,0,0,c.height);u.addColorStop(0,`rgb(45, 45, 45)`),u.addColorStop(1,`rgb(45, 45, 45)`),l.fillStyle=u,l.fillRect(0,0,c.width,c.height),l.globalCompositeOperation=`source-over`;let d=Math.min(e.width,e.height)*(t.logoSize||.25),f=d;if(s){let t=r.width/r.height;t>1?f=d/t:d=f*t;let i=n*e.width,a=Math.max(d,f),o=Math.round(a+i),s=Math.round(a+i),u=(c.width-a)/2,p=(c.height-a)/2;l.shadowColor=`transparent`,l.shadowBlur=20;let m=Math.round(u-i/2),h=Math.round(p-i/2);l.beginPath(),l.moveTo(m+0,h),l.lineTo(m+o-0,h),l.quadraticCurveTo(m+o,h,m+o,h+0),l.lineTo(m+o,h+s-0),l.quadraticCurveTo(m+o,h+s,m+o-0,h+s),l.lineTo(m+0,h+s),l.quadraticCurveTo(m,h+s,m,h+s-0),l.lineTo(m,h+0),l.quadraticCurveTo(m,h,m+0,h),l.fillStyle=`#ffffff`,l.closePath(),l.fill(),l.clip(),l.shadowColor=`transparent`;let g=(c.width-d)/2,_=(c.height-f)/2;l.drawImage(r,g,_,d,f)}let p=c.toDataURL(`image/png`),m=document.createElement(`img`);return m.src=p,m.style.width=`100%`,m.style.height=`auto`,m}var Yl=`Material Symbols Outlined`;function Xl(e){let t=document.createElement(`span`);return t.style.maxWidth=`48px`,t.style.maxHeight=`48px`,t.style.overflow=`hidden`,t.classList.add(`material-symbols-outlined`,`notranslate`),t.setAttribute(`translate`,`no`),t.innerText=e,t.style.visibility=`hidden`,t.style.userSelect=`none`,t.setAttribute(`role`,`img`),t.setAttribute(`aria-label`,e+` icon`),t.setAttribute(`aria-hidden`,`true`),tu(Yl).then(n=>{n?(t.style.visibility=``,t.innerText=e):e===`more_vert`?(t.style.visibility=``,t.innerText=`More`):t.style.display=`none`}),t}function Zl(e){return e.classList?.contains(`material-symbols-outlined`)||!1}var Ql=new Map;async function $l(e){if(await tu(Yl),Ql.has(e))return Ql.get(e);let t=document.createElement(`canvas`);t.width=48,t.height=48;let n=t.getContext(`2d`);if(n){n.font=`48px '${Yl}'`,n.fillStyle=`black`,n.fillText(e,0,48);let r=t.toDataURL(),i=new be;return i.name=e+` icon`,i.image=new Image,i.image.src=r,i.needsUpdate=!0,Ql.set(e,i),i}return Ql.set(e,null),null}var eu=new Map;async function tu(e,t=5,n=0){document.fonts.check(`1em '${e}'`)||await document.fonts.ready;let r=eu.get(e)||document.fonts.load(`1em '${e}'`).then(e=>e?.length>0).finally(()=>{eu.delete(e)});return eu.set(e,r),await r?!0:n{setTimeout(()=>{r(tu(e,t,n+1))},1e3)}):!1}function nu(e,t){e.setAttribute(`priority`,String(t))}function ru(e){let t=e.getAttribute(`priority`);if(t){let e=Number.parseFloat(t);if(!Number.isNaN(e))return e}}var iu=class e{static _instance;static get instance(){return this.getOrCreate()}static getOrCreate(){return this._instance||=new e,this._instance}static create(){return new e}_fullscreenButton;get fullscreenButton(){return this._fullscreenButton}createFullscreenButton(e){if(this._fullscreenButton)return this._fullscreenButton;if(!document.fullscreenEnabled)return M()&&console.warn(`NeedleMenu: Fullscreen button could not be created, device doesn't support the Fullscreen API`),null;let t=document.createElement(`button`);this._fullscreenButton=t,t.classList.add(`fullscreen-button`),t.title=`Click to enter fullscreen mode`,nu(t,3);let n=Xl(`fullscreen`),r=Xl(`fullscreen_exit`);return t.appendChild(n),t.onclick=()=>{document.fullscreenElement?document.exitFullscreen():`webkitRequestFullscreen`in e.domElement&&typeof e.domElement.webkitRequestFullscreen==`function`?e.domElement.webkitRequestFullscreen():`requestFullscreen`in e.domElement&&e.domElement.requestFullscreen()},document.addEventListener(`fullscreenchange`,()=>{document.fullscreenElement?(n.remove(),t.appendChild(r),t.title=`Click to enter fullscreen mode`):(r.remove(),t.appendChild(n),t.title=`Click to exit fullscreen mode`)}),globalThis.addEventListener(`needle-xrsession-start`,()=>{t.style.display=`none`}),globalThis.addEventListener(`needle-xrsession-end`,()=>{t.style.display=``}),t}_muteButton;get muteButton(){return this._muteButton}createMuteButton(e){if(this._muteButton)return this._muteButton;let t=document.createElement(`button`);this._muteButton=t,t.classList.add(`mute-button`),t.title=`Click to mute/unmute`;let n=Xl(`volume_off`),r=Xl(`volume_up`);return nu(t,1),e.application.muted?t.appendChild(n):t.appendChild(r),t.onclick=()=>{e.application.muted?(n.remove(),t.appendChild(r),e.application.muted=!1):(r.remove(),t.appendChild(n),e.application.muted=!0)},t}_qrButton;get qrButton(){return this._qrButton}_customQRButtonUrl;set qrButtonUrl(e){try{new URL(e),this._customQRButtonUrl=e}catch{console.warn(`[Needle] QR code button URL is not a valid URL '${e}'`)}}get qrButtonUrl(){return this._customQRButtonUrl||window.location.href}createQRCode(e){if(this._qrButton)return this._qrButton;let t=this,n=document.createElement(`button`);this._qrButton=n,n.innerText=`QR Code`,n.prepend(Xl(`qr_code`)),n.title=`Scan this QR code with your phone to open this page`,this.hideElementDuringXRSession(n),nu(this._qrButton,20);let r=document.createElement(`div`);r.style.cssText=` + position: fixed; + display: inline-block; + padding: 0.5rem; + background-color: white; + border-radius: 0.4rem; + cursor: pointer; + z-index: 1000; + box-shadow: 0 0 12px rgba(0, 0, 0, 0.2); + `;let i=document.createElement(`div`);i.classList.add(`qr-code-container`),r.appendChild(i),n.addEventListener(`click`,()=>{if(r.parentNode)return o();M()&&window.location.href.includes(`://localhost`)&&Ei(`To access your website from another device in the same local network you have to use the IP address instead of localhost. The IP address is logged in your development server console when you start the server.`),a()});async function a(){await s();let t=document.body.querySelector(`needle-engine`),a=e?.anchorElement?.parentElement||t||document.body;a.appendChild(r);let c=i.getBoundingClientRect(),l=n.getBoundingClientRect();r.style.left=l.left+l.width*.5-c.width*.5+`px`,l.top{r.style.opacity=`1`,window.addEventListener(`click`,o,{once:!0})}),window.addEventListener(`resize`,o),window.addEventListener(`scroll`,o),document.fullscreenElement?document.fullscreenElement.appendChild(r):a.appendChild(r)}function o(){r.style.pointerEvents=`none`,r.style.transition=`opacity 0.2s`,r.style.opacity=`0`,setTimeout(()=>r.parentNode?.removeChild(r),500),window.removeEventListener(`click`,o),window.removeEventListener(`resize`,o),window.removeEventListener(`scroll`,o)}async function s(){let e=await ql({text:t.qrButtonUrl,width:200,height:200});i.innerHTML=``,i.appendChild(e)}return n.addEventListener(`pointerenter`,()=>{s()},{once:!0}),n}hideElementDuringXRSession(e){Ll(t=>{e[`previous-display`]=e.style.display,e.style.display=`none`}),Bl(t=>{e[`previous-display`]!=null&&(e.style.display=e[`previous-display`])})}},au=`https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap`,ou=`https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block`;function su(e,t){let n=t?.element||document.head,r=Array.from(n.querySelectorAll(`link[href*='${e}']`));if(r.length<=0){let t=document.createElement(`link`);t.href=e,t.rel=`preload`,t.as=`style`,t.crossOrigin=``,t.onload=()=>{t.rel=`stylesheet`},n.appendChild(t),r.push(t)}if(t?.loadedCallback)for(let e=0;e + :host { + position: relative; + min-width: fit-content; + /* height: 100%; can not have height 100% because of align-items: stretch; in the parent */ + display: flex; + } + + .wrapper { + position: relative; + display: grid; + grid-template-columns: auto auto; + padding: .1rem; + } + .wrapper:hover { + cursor: pointer; + } + img { + height: 100%; + align-self: end; + transition: transform 0.2s; + } + img.with-text { + width: 11.5ch; + &:hover { + transform: scale(1.02); + } + } + img.compact { + width: 1.7em; + &:hover { + transform: scale(1.1); + } + } + span { + font-size: 1rem; + white-space: nowrap; + } + +

+ +
+ `,this._root.appendChild(e.content.cloneNode(!0)),this.wrapper=this._root.querySelector(`.wrapper`),this._root.appendChild(this.wrapper),this.logoElement=this._root.querySelector(`img.logo`),this.addEventListener(`click`,()=>{globalThis.open(`https://needle.tools`,`_blank`)})}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}connectedCallback(){this.ensureInitialized(),this.wrapper&&(this.wrapper.setAttribute(`title`,`Made with Needle Engine`),this.setAttribute(`aria-label`,`Needle Engine logo. Click to open the Needle Engine website.`))}_root;wrapper;logoElement;setLogoVisible(e){this.ensureInitialized(),this.logoElement&&(this.logoElement.style.display=e?`block`:`none`)}setType(e){this.ensureInitialized(),this.logoElement&&(e===`full`?(this.logoElement.src=Gl,this.logoElement.classList.remove(`with-text`),this.logoElement.classList.remove(`compact`)):(this.logoElement.src=Wl,this.logoElement.classList.add(`with-text`),this.logoElement.classList.add(`compact`)))}},du=A(`debugspatialmenu`),fu=class{_context;needleMenu;htmlButtonsMap=new Map;enabled=!0;constructor(e,t){this._context=e,this._context.pre_render_callbacks.push(this.preRender),this.needleMenu=t;let n=this.needleMenu.shadowRoot?.querySelector(`.options`);n?new MutationObserver(e=>{if(this.enabled&&!(this._context.isInXR==0&&!du))for(let t of e)t.type===`childList`&&(t.addedNodes.forEach(e=>{this.createButtonFromHTMLNode(e)}),t.removedNodes.forEach(e=>{let t=e,n=this.htmlButtonsMap.get(t);n&&(this.htmlButtonsMap.delete(t),n.remove(),D.update())}))}).observe(n,{childList:!0}):console.error(`Could not find options container in needle menu`)}setEnabled(e){this.enabled=e,e||this.menu?.removeFromParent()}userRequestedMenu=!1;setDisplay(e){return this.enabled?(this.userRequestedMenu=e,!0):!1}onDestroy(){let e=this._context.pre_render_callbacks.indexOf(this.preRender);e>-1&&this._context.pre_render_callbacks.splice(e,1)}uiisDirty=!1;markDirty(){this.uiisDirty=!0}_showNeedleLogo;showNeedleLogo(e){this._showNeedleLogo=e}_wasInXR=!1;preRender=()=>{if(!this.enabled){this.menu?.removeFromParent();return}du&&j.isDesktop()&&this.updateMenu();let e=this._context.xr;if(!(e?.running&&(e?.isPassThrough||e?.isVR))){this._wasInXR&&(this._wasInXR=!1,this.onExitXR());return}this._wasInXR||(this._wasInXR=!0,this.onEnterXR()),this.updateMenu()};onEnterXR(){let e=this.needleMenu.shadowRoot?.querySelector(`.options`);e&&e.childNodes.forEach(e=>{this.createButtonFromHTMLNode(e)})}onExitXR(){this.menu?.removeFromParent()}createButtonFromHTMLNode(e){let t=this.getMenu(),n=this.htmlButtonsMap.get(e);if(n){n.add();return}if(e instanceof HTMLButtonElement){let n=this.createButton(t,e);this.htmlButtonsMap.set(e,n),n.add()}else e instanceof HTMLSlotElement&&e.assignedNodes().forEach(e=>{this.createButtonFromHTMLNode(e)})}_menuTarget=new S;positionFilter=new ir(90,.5);updateMenu(){let e=this.getMenu();this.handleNeedleWatermark(),this._context.scene.add(e);let t=this._context.mainCamera,n=this._context.xr?.rigScale||1;if(t){let r=t.worldPosition,i=t.worldForward.multiplyScalar(-1),a=i.y>.6,o=i.y>.4,s=(e.visible?o:a)||this.userRequestedMenu,c=!e.visible&&s;e.visible=s||j.isDesktop()&&du,i.multiplyScalar(3*n),r.add(i),c&&(e.position.copy(this._menuTarget.position),e.position.y+=.25,this._menuTarget.position.copy(e.position),this.positionFilter.reset(e.position),e.quaternion.copy(this._menuTarget.quaternion),this.markDirty());let l=this._menuTarget.position.distanceTo(r);(c||l>1.5*n)&&(this.ensureRenderOnTop(this.menu),this._menuTarget.position.copy(r),this._context.scene.add(this._menuTarget),yr(this._menuTarget,this._context.mainCamera,!0,!0),this._menuTarget.removeFromParent()),this.positionFilter.filter(this._menuTarget.position,e.position,this._context.time.time),this.menu?.quaternion.slerp(this._menuTarget.quaternion,this._context.time.deltaTime*5),this.menu?.scale.setScalar(n)}this.uiisDirty&&(this.uiisDirty=!1,D.update())}ensureRenderOnTop(e,t=0){e instanceof x&&(e.material.depthTest=!1,e.material.depthWrite=!1),e.renderOrder=1e3+t*2;for(let n of e.children)this.ensureRenderOnTop(n,t+1)}familyName=`Needle Spatial Menu`;menu;get isVisible(){return this.menu?.visible}getMenu(){if(this.menu)return this.menu;this.ensureFont(),this.menu=new D.Block({boxSizing:`border-box`,fontFamily:this.familyName,height:`auto`,fontSize:.1,color:0,lineHeight:1,backgroundColor:16777215,backgroundOpacity:.55,borderRadius:1,whiteSpace:`pre-wrap`,flexDirection:`row`,alignItems:`center`,padding:new Te(0,.05,0,.05),borderColor:0,borderOpacity:.05,borderWidth:.005});let e=ji.get(`ObjectRaycaster`);return e&&Dp(this.menu,new e),this.menu}_poweredByNeedleElement;handleNeedleWatermark(){if(!this._poweredByNeedleElement){this._poweredByNeedleElement=new D.Block({width:`auto`,height:`auto`,fontSize:.05,whiteSpace:`pre-wrap`,flexDirection:`row`,flexWrap:`wrap`,justifyContent:`center`,margin:.02,borderRadius:.02,padding:.02,backgroundColor:16777215,backgroundOpacity:1}),this._poweredByNeedleElement[`needle:use_eventsystem`]=!0;let e=new mu(this._context,()=>globalThis.open(`https://needle.tools`,`_self`));Dp(this._poweredByNeedleElement,e);let t=new D.Text({textContent:`Powered by`,width:`auto`,height:`auto`}),n=new D.Text({textContent:`needle`,width:`auto`,height:`auto`,fontSize:.07,margin:new Te(0,0,0,.02)});this._poweredByNeedleElement.add(t),this._poweredByNeedleElement.add(n),this.menu?.add(this._poweredByNeedleElement),this.markDirty(),new me().load(`https://cdn.needle.tools/static/branding/poweredbyneedle.webp`,r=>{if(r){e.allowModifyUI=!1,t.removeFromParent(),n.removeFromParent();let i=r.image.width/r.image.height;this._poweredByNeedleElement?.set({backgroundImage:r,backgroundOpacity:1,width:.1*i,height:.1}),this.markDirty()}})}if(this.menu){let e=this.menu.children.indexOf(this._poweredByNeedleElement);!this._showNeedleLogo&&qa()?e>=0&&(this._poweredByNeedleElement.removeFromParent(),this.markDirty()):(this._poweredByNeedleElement.visible=!0,this.menu.add(this._poweredByNeedleElement),e!==this.menu.children.indexOf(this._poweredByNeedleElement)&&this.markDirty())}}ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{this.markDirty()}))}createButton(e,t){let n=new D.Block({width:`auto`,height:`auto`,whiteSpace:`pre-wrap`,flexDirection:`row`,flexWrap:`wrap`,justifyContent:`center`,backgroundColor:16777215,backgroundOpacity:0,padding:.02,margin:.01,borderRadius:.02,cursor:`pointer`,fontSize:.05}),r=new D.Text({textContent:``,width:`auto`,justifyContent:`center`,alignItems:`center`,backgroundOpacity:0,backgroundColor:16777215,fontFamily:this.familyName,color:0,borderRadius:.02,padding:.01});return n.add(r),n[`needle:use_eventsystem`]=!0,Dp(n,new mu(this._context,()=>t.click())),new pu(this,e,t,n,r)}},pu=class{menu;root;htmlbutton;spatialContainer;spatialText;spatialIcon;constructor(e,t,n,r,i){this.menu=e,this.root=t,this.htmlbutton=n,this.spatialContainer=r,this.spatialText=i,new MutationObserver(e=>{for(let t of e)t.type===`attributes`?t.attributeName===`style`&&this.updateVisible():t.type===`childList`&&this.updateText()}).observe(n,{attributes:!0,childList:!0}),this.updateText()}add(){this.spatialContainer.parent!=this.root&&(this.root.add(this.spatialContainer),this.menu.markDirty(),this.updateVisible(),this.updateText())}remove(){this.spatialContainer.parent&&(this.spatialContainer.removeFromParent(),this.menu.markDirty())}updateVisible(){let e=this.spatialContainer.visible;this.spatialContainer.visible=this.htmlbutton.style.display!==`none`,e!==this.spatialContainer.visible&&this.menu.markDirty()}_lastText=``;updateText(){let e=``,t=``;this.htmlbutton.childNodes.forEach(n=>{n.nodeType===Node.TEXT_NODE?e+=n.textContent:n instanceof HTMLElement&&Zl(n)&&n.textContent&&(t=n.textContent)}),this._lastText!==e&&(this._lastText=e,this.spatialText.name=e,this.spatialText.set({textContent:e}),this.menu.markDirty()),e.length<=0?this.spatialText.parent&&(this.spatialText.removeFromParent(),this.menu.markDirty()):this.spatialText.parent||(this.spatialContainer.add(this.spatialText),this.menu.markDirty()),t&&this.createIcon(t)}_lastTexture;async createIcon(e){if(!this.spatialIcon){let t=await $l(e);if(t&&!this.spatialIcon){let e=.08,n=new D.Block({width:e,height:e,backgroundColor:16777215,backgroundImage:t,backgroundOpacity:1,margin:new Te(0,.005,0,0)});this.spatialIcon=n,this.spatialContainer.add(n),this.menu.markDirty()}}if(e!=this._lastTexture){this._lastTexture=e;let t=await $l(e);t&&(this.spatialIcon?.set({backgroundImage:t}),this.menu.markDirty())}let t=this.spatialContainer.children.indexOf(this.spatialIcon);t>0&&(this.spatialContainer.children.splice(t,1),this.spatialContainer.children.unshift(this.spatialIcon),this.menu.markDirty())}},mu=class{isComponent=!0;enabled=!0;get activeAndEnabled(){return!0}__internalAwake(){}__internalEnable(){}__internalDisable(){}__internalStart(){}onEnable(){}onDisable(){}gameObject;allowModifyUI=!0;get element(){return this.gameObject}context;onclick;constructor(e,t){this.context=e,this.onclick=t}onPointerEnter(){this.context.input.setCursor(`pointer`),this.allowModifyUI&&(this.element.set({backgroundOpacity:1}),D.update())}onPointerExit(){this.context.input.unsetCursor(`pointer`),this.allowModifyUI&&(this.element.set({backgroundOpacity:0}),D.update())}onPointerDown(e){e.use()}onPointerUp(e){e.use()}onPointerClick(e){e.use(),this.onclick()}},hu=`needle-menu`,gu=A(`debugmenu`),_u=A(`debugnoncommercial`),vu=class{static setElementPriority(e,t){nu(e,t)}static getElementPriority(e){return ru(e)}_context;_menu;_spatialMenu;constructor(e){this._menu=yu.getOrCreate(e.domElement,e),this._menu.ensureInitialized(),this._context=e,this._spatialMenu=new fu(e,this._menu),window.addEventListener(`message`,this.onPostMessage),Ll(this.onStartXR)}onDestroy(){window.removeEventListener(`message`,this.onPostMessage),this._menu.remove(),this._spatialMenu.onDestroy()}onPostMessage=e=>{if(e.origin===globalThis.location.origin&&typeof e.data==`object`){let t=e.data,n=t.type;if(n===`needle:menu`){let e=t.button;if(e){if(!e.label)return console.error(`NeedleMenu: buttoninfo.label is required`);if(!e.onclick)return console.error(`NeedleMenu: buttoninfo.onclick is required`);let t=document.createElement(`button`);if(t.textContent=e.label,e.icon){let n=Xl(e.icon);t.prepend(n)}e.priority&&t.setAttribute(`priority`,e.priority.toString()),t.onclick=()=>{if(e.onclick){let t=e.onclick.startsWith(`http`)||e.onclick.startsWith(`www.`),n=e.target||`_blank`;t?globalThis.open(e.onclick,n):console.error(`NeedleMenu: onclick is not a valid link`,e.onclick)}},$a.sendEvent(this._context,`needle-menu`,{action:`button_added_via_postmessage`}),this._menu.appendChild(t)}else gu&&console.error(`NeedleMenu: unknown postMessage event`,t)}else gu&&console.warn(`NeedleMenu: unknown postMessage type`,n,t)}};onStartXR=e=>{e.session.isScreenBasedAR&&(this._menu.previousParent=this._menu.parentNode,this._context.arOverlayElement.appendChild(this._menu),e.session.session.addEventListener(`end`,this.onExitXR),this._menu.closeFoldout())};onExitXR=()=>{this._menu.previousParent&&(this._menu.previousParent.appendChild(this._menu),delete this._menu.previousParent)};setPosition(e){this._menu.setPosition(e)}setVisible(e){this._menu.setVisible(e)}showNeedleLogo(e){this._menu.showNeedleLogo(e),this._spatialMenu?.showNeedleLogo(e)}get logoIsVisible(){return this._menu.logoIsVisible}showSpatialMenu(e){this._spatialMenu.setEnabled(e)}setSpatialMenuVisible(e){this._spatialMenu.setDisplay(e)}get spatialMenuIsVisible(){return this._spatialMenu.isVisible}showQRCodeButton(e){if(e===`desktop-only`&&(e=!j.isMobileDevice()),e){let e=iu.getOrCreate().createQRCode();return e.style.display=``,this._menu.appendChild(e),e}else{let e=iu.getOrCreate().qrButton;return e&&(e.style.display=`none`),e??null}}showAudioPlaybackOption(e){if(!e){this._muteButton?.remove();return}this._muteButton=iu.getOrCreate().createMuteButton(this._context),this._menu.appendChild(this._muteButton)}_muteButton;showFullscreenOption(e){if(!e){this._fullscreenButton?.remove();return}this._fullscreenButton=iu.getOrCreate().createFullscreenButton(this._context),this._fullscreenButton&&this._menu.appendChild(this._fullscreenButton)}_fullscreenButton;appendChild(e){return this._menu.appendChild(e)}},yu=class e extends HTMLElement{static create(){return customElements.get(hu)||customElements.define(hu,e),document.createElement(hu)}static getOrCreate(t,n){let r=t.querySelector(hu);return!r&&t.shadowRoot&&(r=t.shadowRoot.querySelector(hu)),r||=window.document.body.querySelector(hu),r||(r=e.create(),t.shadowRoot?t.shadowRoot.appendChild(r):t.appendChild(r)),r._domElement=t,r._context=n,r}_domElement=null;_context=null;_didInitialize=!1;constructor(){super()}initializeDom(){let e=document.createElement(`template`);e.innerHTML=` + +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+ `;let t=this.attachShadow({mode:`open`});cu(),su(ou,{loadedCallback:()=>{this.handleSizeChange()}}),su(ou,{element:t});let n=e.content.cloneNode(!0);t?.appendChild(n),this.root=t.querySelector(`#root`),this.wrapper=this.root?.querySelector(`.wrapper`),this.options=this.root?.querySelector(`.options.main-container`),this.optionsCompactMode=this.root?.querySelector(`.options.compact-only`),this.logoContainer=this.root?.querySelector(`.logo`),this.compactMenuButton=this.root?.querySelector(`.compact-menu-button`),this.compactMenuButton.append(Xl(`more_vert`)),this.foldout=this.root?.querySelector(`.foldout`),this.root?.appendChild(this.wrapper),this.wrapper.classList.add(`wrapper`);let r=uu.create();r.setType(`compact`),r.style.minHeight=`1rem`,this.logoContainer.append(r),this.logoContainer.addEventListener(`click`,()=>{globalThis.open(`https://needle.tools`,`_blank`)});try{window.requestAnimationFrame(()=>Za(e=>{if(e==1&&Xa()&&!_u){let e=this._userRequestedLogoVisible;e===void 0&&(e=!1),this.___onSetLogoVisible(e)}else this.___onSetLogoVisible(!0)}))}catch(e){console.error(`[Needle Menu] License check failed.`,e)}this.compactMenuButton.addEventListener(`click`,e=>{e.preventDefault(),this.root.classList.toggle(`open`)});let i=this._context;setTimeout(()=>i=this._context);let a=0,o=(e,t)=>{gu&&console.log(`Set menu visible`,t),i?.isInAR&&i.arOverlayElement?e!=i.arOverlayElement&&i.arOverlayElement.appendChild(this):this.parentNode!=this._domElement?.shadowRoot&&this._domElement?.shadowRoot?.appendChild(this),this.style.display=t?`flex`:`none`,this.style.visibility=`visible`,this.style.opacity=`1`},s=!1;new MutationObserver(e=>{if(!s)try{s=!0,this.onChangeDetected(e);let t=this?.parentNode;if((this.style.display!=`flex`||this.style.visibility!=`visible`||this.style.opacity!=`1`||t!=this._domElement?.shadowRoot)&&!Xa()){let e=a++;wt()&&this._userRequestedMenuVisible===!1?(e===0&&o(t,this._userRequestedMenuVisible),e===1&&console.warn(`Needle Menu Warning: You need a PRO license to hide the Needle Engine menu → The menu will be visible in your deployed website if you don't have a PRO license. See https://needle.tools/pricing for details.`)):e===0?o(t,!0):setTimeout(()=>o(t,!0),5)}}finally{s=!1}}).observe(this.root,{childList:!0,subtree:!0,attributes:!0}),gu&&this.___insertDebugOptions()}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}_sizeChangeInterval;connectedCallback(){this.ensureInitialized(),window.addEventListener(`resize`,this.handleSizeChange),this.handleMenuVisible(),this._sizeChangeInterval=setInterval(()=>this.handleSizeChange(void 0,!1),5e3),setTimeout(()=>{this._domElement?.addEventListener(`resize`,this.handleSizeChange),this._domElement?.addEventListener(`click`,this.#e)},1)}disconnectedCallback(){window.removeEventListener(`resize`,this.handleSizeChange),clearInterval(this._sizeChangeInterval),this._domElement?.removeEventListener(`resize`,this.handleSizeChange),this._context?.domElement.removeEventListener(`click`,this.#e)}#e=e=>{if(!e.defaultPrevented&&e.target==this._domElement&&e instanceof PointerEvent&&e.button===0&&this.root.classList.contains(`open`)){let t=this.foldout.getBoundingClientRect(),n=e;n.clientX>t.left&&n.clientXt.top&&n.clientY{$a.sendEvent(this._context,`needle-menu`,{action:`button_clicked`,element:t.target instanceof Node?t.target.nodeName:e.nodeName,label:e.textContent,title:e instanceof HTMLElement?e.title:void 0,pointerid:t instanceof PointerEvent?t.pointerId:void 0})}))}append(...e){for(let t of e)if(typeof t==`string`){let e=document.createTextNode(t);this.trackElement(e),this.options.appendChild(e)}else this.trackElement(t),this.options.appendChild(t)}appendChild(e){if(!(e instanceof Node)){let t=document.createElement(`button`);if(t.textContent=e.label,t.onclick=e.onClick,t.setAttribute(`priority`,e.priority?.toString()??`0`),e.title&&(t.title=e.title),e.icon){let n=Xl(e.icon);e.iconSide===`right`?t.appendChild(n):t.prepend(n)}e.class&&t.classList.add(e.class),e=t}return this.trackElement(e),this.options.appendChild(e)}prepend(...e){for(let t of e)if(typeof t==`string`){let e=document.createTextNode(t);this.trackElement(e),this.options.prepend(e)}else this.trackElement(t),this.options.prepend(t)}_isHandlingChange=!1;_pauseMutationObserverOptionsContainer=!1;onChangeDetected(e){if(!this._isHandlingChange){this._isHandlingChange=!0;try{this.handleMenuVisible();for(let t of e)t.target==this.options&&(this._pauseMutationObserverOptionsContainer||this.onOptionsChildrenChanged(t))}finally{this._isHandlingChange=!1}}}onOptionsChildrenChanged(e){if(this.root.classList.toggle(`has-options`,this.hasAnyVisibleOptions),this.root.classList.toggle(`has-no-options`,!this.hasAnyVisibleOptions),this.handleSizeChange(void 0,!0),e.type===`childList`&&e.addedNodes.length>0){let e=Array.from(this.options.children);e.sort((e,t)=>parseInt(e.getAttribute(`priority`)||`0`)-parseInt(t.getAttribute(`priority`)||`0`));let t=!1;for(let n=0;n{if(!this._domElement)return;let n=this._domElement.clientWidth;if(n<100){clearTimeout(this._timeoutHandleSize),this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`);return}let r=n-20;if(!t&&Math.abs(r-this._lastAvailableWidthChange)<1)return;this._lastAvailableWidthChange=r,clearTimeout(this._timeoutHandleSize),this._timeoutHandleSize=setTimeout(()=>{let e=o();e<0?(this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`)):e>0&&(this.root.classList.remove(`compact`),this.foldout.classList.remove(`floating-panel-style`),o()<0&&(this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`))),this._pauseMutationObserverOptionsContainer=!0,this.updateCompactFoldoutItem(),window.requestAnimationFrame(()=>this._pauseMutationObserverOptionsContainer=!1)},150);let i=()=>{let e=0;return e+=this.options.getBoundingClientRect().width,e+=this.optionsCompactMode.getBoundingClientRect().width,e+=10*this.options.childElementCount,e+=this.logoContainer.style.display==`none`?0:this.logoContainer.getBoundingClientRect().width,e},a=-1,o=()=>{let e=r-i();return gu&&e!==a&&(a=e,Ti(`Menu space left: ${e.toFixed(0)}px`)),e}};updateCompactFoldoutItem(){if(this.root.classList.contains(`compact`)){let e=null,t=-1e7,n=n=>{if(n instanceof HTMLElement){let r=vu.getElementPriority(n);if(r!==void 0&&r>=t){let i=window.getComputedStyle(n);if(i.display===`none`||i.visibility===`hidden`||i.opacity===`0`)return;e=n,t=r}}};for(let e=0;e{this.options.appendChild(e)});let t=e;this.optionsCompactMode.appendChild(t)}else e||this.optionsCompactMode.childNodes.forEach(e=>{this.options.appendChild(e)})}else this.optionsCompactMode.childNodes.forEach(e=>{this.options.appendChild(e)})}___insertDebugOptions(){window.addEventListener(`keydown`,e=>{e.key===`p`&&this.setPosition(this.root.classList.contains(`top`)?`bottom`:`top`)});let e=document.createElement(`button`);e.textContent=`Hide Buttons`,e.onclick=()=>{let e=Array(this.options.children.length);for(let t=0;t{for(let t of e)this.options.appendChild(t)},1e3)},this.appendChild(e);let t=document.createElement(`button`);t.textContent=`Toggle Logo`,t.addEventListener(`click`,()=>{this.logoContainer.style.display=this.logoContainer.style.display===`none`?``:`none`}),this.appendChild(t)}},R=A(`debugcontext`),bu=A(`stats`),xu=A(`debugactive`),Su=A(`debugframerate`),Cu=A(`debugcoroutine`),wu={},Tu=class{name;alias;hash;runInBackground;domElement;renderer;camera;scene},z;(function(e){e[e.Start=-1]=`Start`,e[e.EarlyUpdate=0]=`EarlyUpdate`,e[e.Update=1]=`Update`,e[e.LateUpdate=2]=`LateUpdate`,e[e.OnBeforeRender=3]=`OnBeforeRender`,e[e.OnAfterRender=4]=`OnAfterRender`,e[e.PrePhysicsStep=9]=`PrePhysicsStep`,e[e.PostPhysicsStep=10]=`PostPhysicsStep`,e[e.Undefined=-1]=`Undefined`})(z||={});function Eu(e,t){if(!e)return;if(!e.isComponent){(M()||R)&&console.error(`Registered script is not a Needle Engine component. +The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine" +`,e);return}t||(t=B.Current,R&&console.warn(`> Registering component without context`));let n=t?.new_scripts;n.includes(e)||n.push(e)}var B=class e{static _defaultTargetFramerate={value:90,toString(){return this.value}};static get DefaultTargetFrameRate(){return e._defaultTargetFramerate.value}static set DefaultTargetFrameRate(t){e._defaultTargetFramerate.value=t}static _defaultWebglRendererParameters={antialias:!0,alpha:!1,powerPreference:j.isiOS()||j.isMacOS()?`default`:`high-performance`,stencil:!0};static get DefaultWebGLRendererParameters(){return e._defaultWebglRendererParameters}get version(){return Bi}static get Current(){return k.Current}static set Current(e){k.Current=e}static get All(){return k.All}name;alias;isManagedExternally=!1;isPaused=!1;runInBackground=!1;targetFrameRate;physicsSteps=1;hash;domElement;appendHTMLElement(e){return this.domElement.shadowRoot?this.domElement.shadowRoot.appendChild(e):this.domElement.appendChild(e)}get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(e){if(e!==this._resolutionScaleFactor&&typeof e==`number`){if(e<=0){console.error(`Invalid resolution scale factor`,e);return}this._resolutionScaleFactor=e,this.updateSize()}}_resolutionScaleFactor=1;_boundingClientRectFrame=-1;_boundingClientRect=null;_domX;_domY;calculateBoundingClientRect(){if(this.xr){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){return this.renderer?.xr?.isPresenting||!1}xr=null;get xrSessionMode(){return this.xr?.mode}get isInVR(){return this.xrSessionMode===`immersive-vr`}get isInAR(){return this.xrSessionMode===`immersive-ar`}get isInPassThrough(){return this.xr?this.xr.isPassThrough:!1}get xrSession(){return this.renderer?.xr?.getSession()}get xrFrame(){return this._xrFrame}get xrCamera(){return this.renderer.xr.isPresenting?this.renderer?.xr?.getCamera():void 0}_xrFrame=null;get arOverlayElement(){let e=this.domElement;return typeof e.getAROverlayContainer==`function`?e.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}_currentFrameEvent=z.Undefined;scene;renderer;composer=null;scripts=[];scripts_pausedChanged=[];scripts_earlyUpdate=[];scripts_update=[];scripts_lateUpdate=[];scripts_onBeforeRender=[];scripts_onAfterRender=[];scripts_WithCorroutines=[];scripts_immersive_vr=[];scripts_immersive_ar=[];coroutines={};post_setup_callbacks=[];pre_update_callbacks=[];pre_render_callbacks=[];post_render_callbacks=[];pre_update_oneshot_callbacks=[];new_scripts=[];new_script_start=[];new_scripts_pre_setup_callbacks=[];new_scripts_post_setup_callbacks=[];new_scripts_xr=[];mainCameraComponent=void 0;get mainCamera(){if(this._mainCamera)return this._mainCamera;if(this.mainCameraComponent){let e=this.mainCameraComponent;return e.threeCamera||e.buildCamera(),e.threeCamera}return this._fallbackCamera||=new C(75,this.domWidth/this.domHeight,.1,1e3),this._fallbackCamera}set mainCamera(e){this._mainCamera=e}_mainCamera=null;_fallbackCamera=null;application;animations;time;input;physics;connection;assets;mainLight=null;get rendererData(){return this.sceneLighting}sceneLighting;addressables;lightmaps;players;lodsManager;menu;accessibility;get isCreated(){return this._isCreated}get rootSourceId(){return this.rootSceneSourceIdentifiers[0]||void 0}_needsUpdateSize=!1;_isCreated=!1;_isCreating=!1;_isVisible=!1;_stats=bu?new ut:null;constructor(e){this.name=e?.name||``,this.alias=e?.alias,this.domElement=e?.domElement||document.body,this.hash=e?.hash,e?.renderer&&(this.renderer=e.renderer,this.isManagedExternally=!0),e?.runInBackground!==void 0&&(this.runInBackground=e.runInBackground),e?.scene?this.scene=e.scene:this.scene=new ne,e?.camera&&(this._mainCamera=e.camera),this.application=new Vs(this),this.time=new Al,this.input=new cc(this),this.physics=new jd(this),this.connection=new nl(this),this.assets=new Vd,this.sceneLighting=new El(this),this.addressables=new ks(this),this.lightmaps=new gc(this),this.players=new ol(this),this.menu=new vu(this),this.lodsManager=new bc(this),this.animations=new Ni(this),this.accessibility=new _a(this);let t=()=>this._needsUpdateSize=!0;window.addEventListener(`resize`,t),this._disposeCallbacks.push(()=>window.removeEventListener(`resize`,t));let n=new ResizeObserver(e=>this._needsUpdateSize=!0);n.observe(this.domElement),this._disposeCallbacks.push(()=>n.disconnect()),this._intersectionObserver=new IntersectionObserver(e=>{this._isVisible=e[0].isIntersecting}),this._disposeCallbacks.push(()=>this._intersectionObserver?.disconnect()),k.register(this)}createNewRenderer(t){if(this.renderer?.dispose(),t={...e.DefaultWebGLRendererParameters,...t},!t.canvas){let e=this.domElement?.shadowRoot?.querySelector(`canvas`);e?(t.canvas=e,R&&console.log(`Using canvas from shadow root`,e)):R&&console.warn(`No canvas found in shadow root, creating new canvas. This may cause input events to not work correctly. To fix this, make sure to use the canvas provided by the Needle Engine Web Component (e.g. by using context.createNewRenderer() without parameters or passing the canvas from the shadow root explicitly).`)}return R&&console.log(`Using Renderer Parameters:`,t,this.domElement),this.renderer=new h(t),this.renderer.domElement.setAttribute(`aria-label`,`3D rendering`),this.renderer.domElement.setAttribute(`role`,`img`),this.renderer.debug.checkShaderErrors=M()||A(`checkshadererrors`)===!0,this.renderer.toneMappingExposure=1,this.renderer.toneMapping=0,this.renderer.setClearColor(new a(`lightgrey`),0),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=2,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputColorSpace=de,this.renderer.nodes={library:new Fe,modelViewMatrix:null,modelNormalViewMatrix:null},this.lodsManager.setRenderer(this.renderer),this.input.bindEvents(),sa(this,this.renderer.domElement),this.renderer}_intersectionObserver=null;internalOnUpdateVisible(){this._intersectionObserver?.disconnect(),this._intersectionObserver?.observe(this.domElement)}_disposeCallbacks=[];requestSizeUpdate(){this._needsUpdateSize=!0}maxRenderResolution;get devicePixelRatio(){return this._devicePixelRatio}set devicePixelRatio(e){e!==this._devicePixelRatio&&(this._devicePixelRatio=e,this._needsUpdateSize=!0)}_devicePixelRatio=`auto`;updateSize(e=!1){if(e||!this.isManagedExternally&&this.renderer.xr?.isPresenting===!1){this._needsUpdateSize=!1;let e=this.resolutionScaleFactor,t=this.domWidth*e,n=this.domHeight*e;this.maxRenderResolution&&(this.maxRenderResolution.x=Math.max(1,this.maxRenderResolution.x),t=Math.min(this.maxRenderResolution.x,t),this.maxRenderResolution.y=Math.max(1,this.maxRenderResolution.y),n=Math.min(this.maxRenderResolution.y,n));let r=this.mainCamera;this.updateAspect(r),this.renderer.setSize(t,n,!0),this.renderer.domElement.style.width=`100%`,this.renderer.domElement.style.height=`100%`;let i=typeof this.devicePixelRatio==`number`?this.devicePixelRatio:this.devicePixelRatio===`auto`?Math.min(2,window.devicePixelRatio):void 0;i!==void 0&&this.renderer.setPixelRatio(i),this.composer&&(this.composer.setSize?.call(this.composer,t,n),i!==void 0&&`setPixelRatio`in this.composer&&typeof this.composer.setPixelRatio==`function`&&this.composer.setPixelRatio?.call(this.composer,window.devicePixelRatio))}}updateAspect(e,t,n){if(!e)return;t===void 0&&(t=this.domWidth),n===void 0&&(n=this.domHeight);let r=t/n;if(e.isPerspectiveCamera){let t=e,n=t.aspect;t.aspect=r,n!==t.aspect&&e.updateProjectionMatrix()}else if(e.isOrthographicCamera){let t=e,n=t.top-t.bottom,i=n*r/2,a=n/2;(t.left!=-i||t.top!=a)&&(t.left=-i,t.right=i,t.top=a,t.bottom=-a,e.updateProjectionMatrix())}}recreate(){this.clear(),this.create(this._originalCreationArgs)}_originalCreationArgs;async onCreate(e){return this.create(e)}async create(e){try{this._isCreating=!0,e!==this._originalCreationArgs&&(this._originalCreationArgs=Gt(e)),window.addEventListener(`unhandledrejection`,this.onUnhandledRejection);let t=await this.internalOnCreate(e);return this._isCreated=t,t}finally{window.removeEventListener(`unhandledrejection`,this.onUnhandledRejection),this._isCreating=!1}}onUnhandledRejection=e=>{this.onError(e.reason)};onError(e){this.domElement.dispatchEvent(new CustomEvent(`error`,{detail:e}))}clear(){k.dispatchCallback(O.ContextClearing,this),ja(this,O.ContextClearing),zf(this.scene,!0,!0),this.scene=new ne,this.addressables?.dispose(),this.lightmaps?.clear(),this.physics?.engine?.clearCaches(),this.lodsManager.disable(),this.accessibility?.clear(),this._onBeforeRenderListeners.clear(),this._onAfterRenderListeners.clear(),this.isManagedExternally||this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.state.reset(),this.renderer.resetState()),k.dispatchCallback(O.ContextCleared,this)}dispose(){this.internalOnDestroy(),this.accessibility.dispose()}onDestroy(){this.internalOnDestroy()}internalOnDestroy(){e.Current=this,k.dispatchCallback(O.ContextDestroying,this),ja(this,O.ContextDestroying),this.clear(),this.renderer?.setAnimationLoop(null),this.renderer&&(this.renderer.setClearAlpha(0),this.renderer.clear(),this.isManagedExternally||(R&&console.log(`Disposing renderer`),this.renderer.dispose())),this.scene=null,this.renderer=null,this.input.dispose(),this.menu.onDestroy(),this.animations.onDestroy();for(let e of this._disposeCallbacks)try{e()}catch(t){console.error(`Error in on dispose callback:`,t,e)}this.domElement?.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this._isCreated=!1,k.dispatchCallback(O.ContextDestroyed,this),ja(this,O.ContextDestroyed),k.unregister(this),e.Current===this&&(e.Current=null)}registerCoroutineUpdate(e,t,n){return typeof t?.next==`function`?(this.coroutines[n]||(this.coroutines[n]=[]),this.coroutines[n].push({comp:e,main:t}),t):(console.error(`Registered invalid coroutine function from `+e.name+` +Coroutine functions must be generators: "*myCoroutine() {...}" +Start a coroutine from a component by calling "this.startCoroutine(myCoroutine())"`),t)}unregisterCoroutineUpdate(e,t){if(!this.coroutines[t])return;let n=this.coroutines[t].findIndex(t=>t.main===e);n>=0&&this.coroutines[t].splice(n,1)}stopAllCoroutinesFrom(e){for(let t in this.coroutines){let n=this.coroutines[t];for(let t=n.length-1;t>=0;t--)n[t].comp===e&&n.splice(t,1)}}_cameraStack=[];setCurrentCamera(e){if(!e)return;if(e.threeCamera||e.buildCamera(),!e.threeCamera){console.warn(`Camera component is missing camera`,e);return}let t=this._cameraStack.indexOf(e);t>=0&&this._cameraStack.splice(t,1),this._cameraStack.push(e),this.mainCameraComponent=e;let n=e.threeCamera;n.isPerspectiveCamera&&this.updateAspect(n),this.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}removeCamera(e){if(!e)return;let t=this._cameraStack.indexOf(e);if(t>=0&&this._cameraStack.splice(t,1),this.mainCameraComponent===e&&(this.mainCameraComponent=void 0,this._cameraStack.length>0)){let e=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(e)}}_onBeforeRenderListeners=new Map;_onAfterRenderListeners=new Map;addBeforeRenderListener(e,t){if(!this._onBeforeRenderListeners.has(e.uuid)){let t=[];this._onBeforeRenderListeners.set(e.uuid,t),e.onBeforeRender=this._createRenderCallbackWrapper(t)}this._onBeforeRenderListeners.get(e.uuid).push(t)}removeBeforeRenderListener(e,t){if(this._onBeforeRenderListeners.has(e.uuid)){let n=this._onBeforeRenderListeners.get(e.uuid),r=n.indexOf(t);r>=0&&n.splice(r,1)}}addAfterRenderListener(e,t){if(!this._onAfterRenderListeners.has(e.uuid)){let t=[];this._onAfterRenderListeners.set(e.uuid,t),e.onAfterRender=this._createRenderCallbackWrapper(t)}this._onAfterRenderListeners.get(e.uuid)?.push(t)}removeAfterRenderListener(e,t){if(this._onAfterRenderListeners.has(e.uuid)){let n=this._onAfterRenderListeners.get(e.uuid),r=n.indexOf(t);r>=0&&n.splice(r,1)}}_createRenderCallbackWrapper(e){return(t,n,r,i,a,o)=>{for(let s=0;s{if(R||M()){if(Di(`Needle Engine dependencies failed to load. Please check the console for more details`),e instanceof ReferenceError){let t=`YourComponentName`,n=e.message.indexOf(`'`);if(n>0){let r=e.message.indexOf(`'`,n+1);if(r>0){let i=e.message.substring(n+1,r);i.length>3&&(t=i)}}console.error(`Needle Engine dependencies failed to load:\n\n# Make sure you don't have circular imports in your scripts!\n\nPossible solutions: \n→ Replace @serializable(${t}) in your script with @serializable(Behaviour)\n→ If you only need type information try importing the type only, e.g: import { type ${t} }\n\n---`,e);return}console.error(`Needle Engine dependencies failed to load`,e)}}).then(()=>{R&&console.log(`Needle Engine dependencies are ready`)})),this.clear();let i=this.renderer,a=!i||i.isDisposed===!0;this.isManagedExternally===!1&&a?this.createNewRenderer():this.lodsManager.setRenderer(this.renderer),this.renderer?.setAnimationLoop(null),e.Current=this,await k.dispatchCallback(O.ContextCreationStart,this);let o=!0,s;try{e.Current=this,s=t?await this.internalLoadInitialContent(n,t):[]}catch(e){console.error(e),o=!1}if(!o)return this.onError(`Failed to load initial content`),!1;if(n!==this._createId||t?.abortSignal?.aborted)return!1;if(this.internalOnUpdateVisible(),!this.renderer)return R&&console.warn(`Context has no renderer (perhaps it was disconnected?`,this.domElement.isConnected),!1;!this.isManagedExternally&&!this.domElement.shadowRoot&&this.domElement.prepend(this.renderer.domElement),e.Current=this,e.Current=this;for(let e=0;e{let n=e;if(n?.isCamera){if(dp(n.gameObject),!n.activeAndEnabled)return;if(n.tag===`MainCamera`)return t=n,!0;t=n}}),t?this.setCurrentCamera(t):!k.dispatchCallback(O.MissingCamera,this,{files:s})&&!this.mainCamera&&!this.isManagedExternally&&console.warn(`Missing camera in main scene`,this)}this.input.bindEvents(),e.Current=this,ep(this),this.physics.engine&&(this.physics.engine?.step(0),this.physics.engine?.postStep()),!this.isManagedExternally&&this.composer&&this.mainCamera,this._needsUpdateSize=!0,this._stats&&(this._stats.showPanel(0),this._stats.dom.style.position=`absolute`,this.domElement.shadowRoot?.appendChild(this._stats.dom)),R&&ti(this.scene,!0),this.targetFrameRate===void 0?(R&&console.warn(`No target framerate set, using default`,e.DefaultTargetFrameRate),this.targetFrameRate=e._defaultTargetFramerate):R&&console.log(`Target framerate set to`,this.targetFrameRate),this._dispatchReadyAfterFrame=!0;let c=k.dispatchCallback(O.ContextCreated,this,{files:s});if(c){let e=this.domElement;`internalSetLoadingMessage`in e&&typeof e.internalSetLoadingMessage==`function`&&e?.internalSetLoadingMessage(`finish loading`),await c}if(t?.abortSignal?.aborted)return!1;let l=this.rootSourceId;return l&&this.sceneLighting.enable(l),ja(this,O.ContextCreated),R&&console.log(`Context Created...`,this.renderer,this.renderer.domElement),this._isCreating=!1,!this.isManagedExternally&&!t?.abortSignal?.aborted&&this.restartRenderLoop(),!0}rootSceneSourceIdentifiers=[];async internalLoadInitialContent(e,t){this.rootSceneSourceIdentifiers.length=0;let n=[];if(t.files.length===0)return n;let r=[...t.files];this.rootSceneSourceIdentifiers.push(...r);let i={name:``,progress:null,index:0,count:r.length},a=ba();for(let o=0;o{t.abortSignal?.aborted||(i.name=s,i.progress=e,i.index=o,i.count=r.length,t.onLoadingProgress?.call(this,i))});t?.onLoadingFinished?.call(this,o,s,c??null),c?n.push({src:s,file:c}):console.warn(`Could not load file: `+s)}if(e!==this._createId||t.abortSignal?.aborted){R&&console.log(`Aborting loading because create id changed or abort signal was set`,e,this._createId);for(let e of n)if(e&&e.file)for(let t of e.file.scenes)zf(t,!0,!0)}else{let e=!1;for(let t of n)t&&t.file&&(t.file.scene?(e=!0,this.scene.add(t.file.scene)):console.warn(`No scene found in loaded file`));if(!e){for(let e of n)if(e&&e.file&&`parser`in e.file){let t=0;if(!Array.isArray(e.file.parser.json.materials))continue;for(let n=0;n{this.isManagedExternally||this.update(e,t)}),!0):(console.error(`Can not start render loop without renderer`),!1)}_renderlooperrors=0;update(t,n){if(n===void 0&&(n=null),M()||R||$f())try{this.internalStep(t,n),this._renderlooperrors=0}catch(t){this._renderlooperrors+=1,(M()||R)&&(t instanceof Error||t instanceof TypeError)&&Ti(`Caught unhandled exception during render-loop - see console for details.`,{type:Tn.Error}),console.error(`Frame #`+this.time.frame+` +`,t),this._renderlooperrors>=3&&(console.warn(`Stopping render loop due to error`),this.renderer.setAnimationLoop(null),$a.sendError(e.Current,`renderloop`,t instanceof Error?t:Error(String(t)))),this.domElement.dispatchEvent(new CustomEvent(`error`,{detail:t}))}else this.internalStep(t,n)}updatePhysics(e){this.internalUpdatePhysics(e)}setCameraFocusRect(e,t){let n=this._focusRect;if(this._focusRect=e,t&&Object.assign(this.focusRectSettings,t),t?.damping===void 0&&n){let e=n;n instanceof HTMLElement&&(e=n.getBoundingClientRect()),e&&`top`in e&&e.bottom>=-100&&e.right>=-100&&e.top<=window.innerHeight+100&&e.left<=window.innerWidth+100&&(this.focusRectSettings.damping=.2)}}get focusRect(){return this._focusRect}get focusRectSize(){let e=this._focusRect;if(e&&(e instanceof DOMRect||`width`in e&&`height`in e&&`x`in e&&`y`in e))return{x:e.x,y:e.y,width:e.width,height:e.height};if(e instanceof HTMLElement){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}return null}focusRectSettings={damping:0,zoom:1,offsetX:0,offsetY:0};_focusRect=null;_lastTimestamp=0;_accumulatedTime=0;_dispatchReadyAfterFrame=!1;internalStep(e,t){this.internalOnBeforeRender(e,t)!==!1&&(this.internalOnRender(),this.internalOnAfterRender())}internalOnBeforeRender(t,n){this.renderer.info.autoReset=!!n,this.renderer.info.autoReset===!1&&this.renderer.info.reset(),this._needsVisibleUpdate=!0;let r=n!==null&&this._xrFrame===null;if(this._xrFrame=n,r&&this.domElement.dispatchEvent(new CustomEvent(`xr-session-started`,{detail:{context:this,session:this.xrSession,frame:n}})),this._currentFrameEvent=z.Undefined,this.isManagedExternally===!1&&this.isInXR===!1&&this.targetFrameRate!==void 0){this._lastTimestamp===0&&(this._lastTimestamp=t),this._accumulatedTime+=(t-this._lastTimestamp)/1e3,this._lastTimestamp=t;let e=this.targetFrameRate;if(typeof e==`object`&&(e=e.value),this._accumulatedTime<1/(e+1))return!1;this._accumulatedTime=0}if(this._stats?.begin(),e.Current=this,this.onHandlePaused())return!1;for(e.Current=this,this.time.update(),Su&&console.log(`FPS`,this.time.smoothedFps.toFixed(0)),ep(this),lp(this.scene),np(this),ja(this,z.Start);this._cameraStack.length>0&&(!this.mainCameraComponent||this.mainCameraComponent.destroyed);){this._cameraStack.splice(this._cameraStack.length-1,1);let e=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(e)}if(this.pre_update_oneshot_callbacks){for(let e in this.pre_update_oneshot_callbacks)this.pre_update_oneshot_callbacks[e]();this.pre_update_oneshot_callbacks.length=0}if(this.pre_update_callbacks)for(let e in this.pre_update_callbacks)this.pre_update_callbacks[e]();this._currentFrameEvent=z.EarlyUpdate;for(let t=0;t0&&this.internalUpdatePhysics(this.physicsSteps),this.isVisibleToUser||this.runInBackground){this._currentFrameEvent=z.OnBeforeRender;for(let t=0;t0?this.time.deltaTime/e.damping:1;mr(this._focusRect,this.focusRectSettings,t,this.mainCamera,this.renderer)}}return!0}internalUpdatePhysics(e){if(!this.physics.engine)return!1;let t=e,n=this.time.deltaTime/t;for(let e=0;e0){let e=i[i.length-1].next();if(e.done&&i.pop(),t(e)&&(r.chained||=[],r.chained.push(e.value)),!e.done)continue}let a=r.main.next();if(a.done===!0){n.splice(e,1),--e;continue}let o=a.value;if(t(o)){if(o.next().done)continue;r.chained||=[],r.chained.push(o)}else if(o instanceof Promise){let e=o;r.chained||=[];let t=Ws(e);r.chained?.push(t);continue}}catch(e){console.error(e)}}function t(e){return!!(e&&e.next&&e.return)}}},Du={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};async function Ou(e){let t=await fetch(e);if(t.ok)return t.json();throw Error(t.statusText)}async function ku(e){if(!e)throw Error(`No basePath supplied`);return await Ou(`${e}/profilesList.json`)}async function Au(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=await ku(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=await Ou(a.profilePath),s;if(r){let t;if(t=e.handedness===`any`?o.layouts[Object.keys(o.layouts)[0]]:o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}}var ju={xAxis:0,yAxis:0,button:0,state:Du.ComponentState.DEFAULT};function Mu(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Nu=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Du.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(ju)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Mu(e,t);switch(this.componentProperty){case Du.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case Du.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case Du.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case Du.ComponentProperty.STATE:this.valueNodeProperty===Du.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Pu=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Nu(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Du.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Du.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Du.ComponentState.PRESSED:(t.touched||this.values.button>Du.ButtonTouchThreshold)&&(this.values.state=Du.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Du.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Du.AxisTouchThreshold&&(this.values.state=Du.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Du.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Du.AxisTouchThreshold&&(this.values.state=Du.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Fu=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Pu(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},Iu=new ce().makeRotationY(Math.PI),Lu=new E().setFromAxisAngle(new o(0,1,0),Math.PI),Ru=A(`debugwebxr`),zu=class{priority=-1e5;gameObject;isXRRig(){return!0}get isActive(){return this.gameObject.visible}constructor(){if(this.gameObject=new S,this.gameObject.name=`Implicit XR Rig`,Ru){let e=Sd(16733661);e.position.y+=.5,this.gameObject.add(e)}}},Bu=A(`debugwebxr`),Vu=A(`debugcustomgesture`),Hu=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,Uu=`generic-trigger`,Wu=new E().setFromEuler(new He(g.degToRad(0),g.degToRad(-90),g.degToRad(-90))),Gu=new o(.04,-.04,0),Ku=class{xr;get context(){return this.xr.context}inputSource;index=0;emitEvents=!0;get connected(){return this._connected}_connected=!0;get isTracking(){return this._isTracking}_isTracking=!1;get gamepad(){return this.__gamepad??=this.inputSource.gamepad}__gamepad;get isHand(){return this.hand!=null}get hand(){return this.__hand??=this.inputSource.hand}__hand;get handObject(){return this.context.renderer.xr.getHand(this.index)}get profiles(){return this.inputSource.profiles}get layout(){return this._layout}get targetRayMode(){return this.inputSource.targetRayMode}get targetRaySpace(){return this.inputSource.targetRaySpace}get gripSpace(){return this.inputSource.gripSpace}get side(){return this.__side??=this.inputSource.handedness}__side=void 0;get isRight(){return this.side===`right`}get isLeft(){return this.side===`left`}get isStylus(){return this._isMxInk}getHitTestSource(){return this._hitTestSource||this._requestHitTestSource(),this._hitTestSource}get hasHitTestSource(){return this._hitTestSource}cancelHitTestSource(){this._hitTestSource&&=(this._hitTestSource.cancel(),void 0)}_hitTestSource=void 0;_hasSelectEvent=!1;get hasSelectEvent(){return this._hasSelectEvent}_isMxInk=!1;_isMetaQuestTouchController=!1;getHitTest(){return this.xr.getHitTest(this)}_handJointPoses=new Map;getHandJointPose(e,t){if(t||=this.xr.frame,!this.hand||!t?.getJointPose||!this.xr.referenceSpace)return null;let n=this._handJointPoses?.get(e);return n||(n=t.getJointPose(e,this.xr.referenceSpace),n&&this._handJointPoses.set(e,n),n)}_gripMatrix=new ce;_gripPosition=new o;_gripQuaternion=new E;_linearVelocity=new o;_rayPositionRaw=new o;_rayRotationRaw=new E;_rayMatrix=new ce;_rayPosition=new o;_rayQuaternion=new E;get gripPosition(){return P(this._gripPosition)}get gripQuaternion(){return Tr(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return P(this._linearVelocity).applyQuaternion(Lu)}get rayPosition(){return P(this._rayPosition)}get rayQuaternion(){return Tr(this._rayQuaternion)}get gripWorldPosition(){return P(this._gripWorldPosition)}_gripWorldPosition=new o;get gripWorldQuaternion(){return Tr(this._gripWorldQuaternion)}_gripWorldQuaternion=new E;get rayWorldPosition(){return P(this._rayWorldPosition)}_rayWorldPosition=new o;updateRayWorldPosition(){let e=this.xr.context.mainCamera?.parent;this._rayWorldPosition.copy(this._rayPositionRaw),e&&this._rayWorldPosition.applyMatrix4(e.matrixWorld)}get rayWorldQuaternion(){return Tr(this._rayWorldQuaternion)}_rayWorldQuaternion=new E;get pinchPosition(){return P(this._pinchPosition)}_pinchPosition=new o;updateRayWorldQuaternion(){let e=this.xr.context.mainCamera?.parent,t=e?Pr(e):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(Lu),t&&this._rayWorldQuaternion.premultiply(t)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy(P(0,0,1).applyQuaternion(this.rayWorldQuaternion)),this._ray}_ray;_hand_wristDotUp=void 0;get handWristDotUp(){if(this._hand_wristDotUp!==void 0)return this._hand_wristDotUp;let e=this.handObject?.joints.wrist;if(e){let t=P(0,1,0).applyQuaternion(e.quaternion);return this._hand_wristDotUp=P(0,1,0).dot(t)}}get isHandUpsideDown(){return this.handWristDotUp===void 0?!1:this.handWristDotUp<-.7}get isTeleportGesture(){return this.isHandUpsideDown&&this.getGesture(`pinch`)?.isDown}get object(){return this._object}_object;_gripSpaceObject;_raySpaceObject;model=null;_debugAxesHelper=new _e(.15);_debugGripAxesHelper=new _e(.07);_debugRayAxesHelper=new _e(.07);async getModelUrl(){return this.getMotionController?.then(e=>e?.assetUrl||null)}constructor(e,t,n){this.xr=e,this.inputSource=t,this.index=n,this._object=new S,this._object.name=`NeedleXRController_${n}`,Bu&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new S,this._raySpaceObject=new S,this._gripSpaceObject.name=`NeedleXRController_${n}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${n}_raySpace`,this._gripSpaceObject.add(this._debugGripAxesHelper),this._raySpaceObject.add(this._debugRayAxesHelper),this.xr.context.scene.add(this._gripSpaceObject),this.xr.context.scene.add(this._raySpaceObject)),this.xr.context.scene.add(this._object),this._ray=new p,this.pointerInit={origin:this,pointerType:this.hand?`hand`:`controller`,deviceIndex:this.index,pointerId:-1,mode:this.inputSource.targetRayMode,ray:this._ray,device:this._object,buttonName:`none`},this.initialize(),this.subscribeEvents()}_hitTestSourcePromise=null;_requestHitTestSource(){return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode===`immersive-ar`&&this.inputSource.targetRayMode===`tracked-pointer`&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay})?.then(e=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=e:(e.cancel(),null)))??null:null}onPointerHits=e=>{};onUpdate(e){this.onUpdateFrame(e),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){H.DrawSphere(this.rayWorldPosition,.003),H.DrawDirection(this.rayWorldPosition,P(0,0,10).applyQuaternion(this.rayWorldQuaternion));let e=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),t=this.inputSource.profiles.join(` +`),n=`Controller[${this.index}] (${this.inputSource.targetRayMode}, ${this.side}) +C:${this.connected?`x`:`-`} T:${this.isTracking?`x`:`-`} Hand:${this.inputSource.hand?`x`:`-`} Pen: ${this._isMxInk?`x`:`-`}`;if(this.inputSource.hand&&(n+=`\nPinch: ${this.getGesture(`pinch`)?.value.toFixed(3)}`),n+=` +`+t,n+=` +`+(this.inputSource.targetRaySpace?`Ray: x`:`Ray: -`)+(this.inputSource.gripSpace?` Grip: x`:` Grip: -`)+(this.inputSource.gamepad?` Gamepad: ${this.inputSource.gamepad.mapping}`:` Gamepad: -`),this.inputSource.gamepad){let e=this.inputSource.gamepad,t=`[btns `+e.buttons.length+`]: `+e.buttons.map(e=>e.value.toPrecision(1)).join(`,`);t+=` +[axes `+e.axes.length+`]: `+e.axes.map(e=>e.toPrecision(1)).join(`,`),n+=` +`+t}if(this._layout){n+=` +Layout: `;for(let e of Object.keys(this._layout.components||{})){let t=this.getStick(e),r=this._layout.components[e]?.gamepadIndices,i=r?Object.entries(r).map(e=>e[0][0].toUpperCase()+e[0].slice(1)+`=`+e[1]).join(`,`):``;n+=`\n ${e}: ${this._layout.components[e]?.type} [${i}] (${t.x.toPrecision(2)},${t.y.toPrecision(2)})`}}H.DrawLabel(e,n,.006)}onUpdateFrame(e){if(this._handJointPoses.clear(),this._hand_wristDotUp=void 0,!this.xr.referenceSpace||!this.inputSource.gamepad?.connected){this._isTracking=!1;return}let t=e.getPose(this.inputSource.targetRaySpace,this.xr.referenceSpace);this._isTracking=t!=null;let n=null,r=null,i=null,a=null;if(t){let e=t.transform;this._rayMatrix.fromArray(e.matrix).premultiply(Iu),this._rayMatrix.decompose(this._rayPosition,this._rayQuaternion,P(1,1,1)),i=P(e.position),a=Tr(e.orientation),this._rayPositionRaw.copy(i),this._rayRotationRaw.copy(a)}if(this.inputSource.gripSpace){let t=e.getPose(this.inputSource.gripSpace,this.xr.referenceSpace);if(t){let e=t.transform;if(n=P(e.position),r=Tr(e.orientation),this._gripMatrix.fromArray(e.matrix).premultiply(Iu),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,P(1,1,1)),`linearVelocity`in t&&t.linearVelocity){let e=t.linearVelocity;this._linearVelocity.set(e.x,e.y,e.z)}}}this.xr.context.mainCamera?.parent&&(this._object.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._object),this._gripSpaceObject!==void 0&&this._gripSpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._gripSpaceObject),this._raySpaceObject!==void 0&&this._raySpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._raySpaceObject));let o=this.hand;if(o){let t=!1,i=o.get(`wrist`),a=i&&this.getHandJointPose(i,e);if(a){t=!0;let e=a.transform.position,n=a.transform.orientation;this._object.position.set(e.x,e.y,e.z),this._object.quaternion.set(n.x,n.y,n.z,n.w).multiply(Lu)}t||(this._object.position.copy(this._rayPosition),this._object.quaternion.copy(this._rayQuaternion).multiply(Lu));let s=o.get(`middle-finger-metacarpal`),c=s&&this.getHandJointPose(s,e);c&&(this._gripMatrix.fromArray(c.transform.matrix).premultiply(Iu),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,P(1,1,1)),n=P().copy(c.transform.position),r=Tr().copy(c.transform.orientation),r.multiply(Wu),n.add(P(Gu).applyQuaternion(r)))}else this.inputSource.gripSpace&&this.targetRayMode===`transient-pointer`&&n&&r?(this._object.position.copy(n),this._object.quaternion.copy(r).multiply(Lu)):i&&a&&(this._object.position.copy(i),this._object.quaternion.copy(a).multiply(Lu));Bu&&(i&&a&&(this._raySpaceObject?.position.copy(i),this._raySpaceObject?.quaternion.copy(a).multiply(Lu)),n&&r&&(this._gripSpaceObject?.position.copy(n),this._gripSpaceObject?.quaternion.copy(r).multiply(Lu)));let s=this.xr.context.mainCamera?.parent,c=s?Pr(s):void 0;n&&r&&(this._gripWorldPosition.copy(n),s&&this._gripWorldPosition.applyMatrix4(s.matrixWorld),this._gripWorldQuaternion.copy(r),this._gripWorldQuaternion.multiply(Lu),c&&this._gripWorldQuaternion.premultiply(c)),this.updateRayWorldPosition(),this.updateRayWorldQuaternion()}onDisconnected(){this._connected=!1,Bu&&console.warn(`Controller disconnected`,this.index);for(let e of this._object.children)this.xr.context.scene.attach(e);this._object?.removeFromParent(),this._debugAxesHelper?.removeFromParent(),this._debugGripAxesHelper?.removeFromParent(),this._debugRayAxesHelper?.removeFromParent(),this._gripSpaceObject?.removeFromParent(),this._raySpaceObject?.removeFromParent(),this.unsubscribeEvents(),this._hitTestSource&&=(this._hitTestSource.cancel(),void 0)}getButton(e){if(!this._layout)return;switch(e){case`primary-button`:if(this.isLeft)e=`x-button`;else if(this.isRight)e=`a-button`;else return;break;case`primary`:return this.hand?this.getGesture(`pinch`):this.toNeedleGamepadButton(0,e);case`xr-standard-trigger`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(0,e);break;case`xr-standard-squeeze`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(1,e);break;case`xr-standard-thumbstick`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(3,e);break}if(this._buttonMap.has(e))return this.toNeedleGamepadButton(this._buttonMap.get(e),e);let t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case`button`:case`squeeze`:if(this.inputSource.gamepad){let n=t.gamepadIndices.button;return this._buttonMap.set(e,n),this.toNeedleGamepadButton(n,e)}break;default:console.warn(`Unsupported component type`,t.type);break}this._buttonMap.set(e,void 0)}getGesture(e){let t=this.states[e];if(!t)return null;this.states[e]=t;let n=this._needleGamepadButtons[e]||new Ju(void 0,e);return n.pressed=t.pressed,n.value=t.value,n.isDown=t.isDown,n.isUp=t.isUp,this._needleGamepadButtons[e]=n,n}getPointerId(e){if((e===`primary`||e===`pinch`)&&(e=0),typeof e!=`number`){let t=this._buttonMap.get(e);if(t===void 0)return;e=t}return this.index*10+e}_needleGamepadButtons={};toNeedleGamepadButton(e,t){if(!this.inputSource.gamepad?.buttons)return;let n=this.inputSource.gamepad?.buttons[e],r=this.states[e],i=this._needleGamepadButtons[e]||new Ju(e,t);return n&&(i.pressed=n.pressed,i.value=n.value,i.touched=n.touched),r&&(i.isDown=r.isDown,i.isUp=r.isUp),this._needleGamepadButtons[e]=i,i}getStick(e){if(!this._layout||this.isHand)return{x:0,y:0,z:0};e===`primary`&&this._layout.components[`xr-standard-thumbstick`]&&(e=`xr-standard-thumbstick`);let t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case`thumbstick`:case`touchpad`:if(this.inputSource.gamepad){let e=t.gamepadIndices.xAxis,n=t.gamepadIndices.yAxis,r=this.inputSource.gamepad.axes[e]||0,i=this.inputSource.gamepad.axes[n]||0;r*=-1,i*=-1;let a=t.gamepadIndices.button,o=this.inputSource.gamepad?.buttons[a]?.value||0;return{x:r,y:i,z:o}}}return{x:0,y:0,z:0}}_buttonMap=new Map;_motioncontroller;_layout;getMotionController;initialize(){if(this._hasSelectEvent=this.profiles.includes(`generic-hand-select`)||this.profiles.some(e=>e.startsWith(`generic-trigger`)),this._isMetaQuestTouchController=this.profiles.includes(`meta-quest-touch-plus`)||this.profiles.includes(`oculus-touch-v3`),this._isMxInk=this.profiles.includes(`logitech-mx-ink`),!this._layout){if(this.inputSource.targetRayMode===`transient-pointer`)return;this.getMotionController=Au(this.inputSource,Hu,Uu).then(e=>{if(!this.connected)return null;if(this._motioncontroller=new Fu(this.inputSource,e.profile,e.assetPath||``),this._layout=e.profile.layouts[this.inputSource.handedness],this._layout){if(!this._layout.gamepad?.length){this._layout.gamepad=[];for(let e in this._layout.components){let t=this._layout.components[e];this._layout.gamepad[t.gamepadIndices.button]=e}}this.profiles.length>=1&&this.profiles[0]===`htc-vive-focus-plus`&&this.inputSource.gamepad&&this.inputSource.gamepad.axes.length===4&&!this._layout.components[`xr-standard-thumbstick`]&&(this._layout.components[`xr-standard-thumbstick`]={type:`thumbstick`,gamepadIndices:{xAxis:2,yAxis:3}})}return this._motioncontroller}).catch(e=>(this.inputSource&&console.warn(`Couldn't initialize motion controller profile for `,this.inputSource,e),null))}}emitPointerDownEvent=!0;emitPointerUpEvent=!0;emitPointerMoveEvent=!0;pointerMoveDistanceThreshold=.03;pointerMoveAngleThreshold=.05;subscribeEvents(){this.xr.session.addEventListener(`selectstart`,this.onSelectStart),this.xr.session.addEventListener(`selectend`,this.onSelectEnd),this.xr.session.addEventListener(`squeezestart`,this.onSequeezeStart),this.xr.session.addEventListener(`squeezeend`,this.onSequeezeEnd)}unsubscribeEvents(){this.xr.session.removeEventListener(`selectstart`,this.onSelectStart),this.xr.session.removeEventListener(`selectend`,this.onSelectEnd),this.xr.session.removeEventListener(`squeezestart`,this.onSequeezeStart),this.xr.session.removeEventListener(`squeezeend`,this.onSequeezeEnd)}_selectButtonIndex=void 0;_squeezeButtonIndex=void 0;onSelectStart=e=>{if(!this.emitPointerDownEvent||this.inputSource!==e.inputSource)return;this.onUpdateFrame(e.frame),this._hasSelectEvent=!0;let t=this._layout?.selectComponentId,n=this._layout?.components[t]?.gamepadIndices?.button;n!==void 0&&(this._selectButtonIndex=n),!Vu&&(Bu&&H.DrawDirection(this.rayWorldPosition,P(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(L.PointerDown,this._selectButtonIndex||0,`xr-standard-trigger`,!0,e))};onSelectEnd=e=>{this.emitPointerUpEvent&&(Vu||this.inputSource===e.inputSource&&this.emitPointerEvent(L.PointerUp,this._selectButtonIndex||0,`xr-standard-trigger`,!0,e))};onSequeezeStart=e=>{this.emitPointerDownEvent&&this.inputSource===e.inputSource&&(this._squeezeButtonIndex=this._layout?.components[`xr-standard-squeeze`]?.gamepadIndices?.button,this._squeezeButtonIndex!==void 0&&(Bu&&H.DrawDirection(this.rayWorldPosition,P(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(L.PointerDown,this._squeezeButtonIndex||0,`xr-standard-squeeze`,!0,e)))};onSequeezeEnd=e=>{this.emitPointerUpEvent&&this.inputSource===e.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(L.PointerUp,this._squeezeButtonIndex||0,`xr-standard-squeeze`,!0,e)};states={};updateInputEvents(){if(this.gamepad?.buttons){for(let e=0;e0&&!n.pressed?(r=`pointerdown`,n.isDown=!0,n.isUp=!1):t.value===0&&n.pressed?(r=`pointerup`,n.isDown=!1,n.isUp=!0):n.pressed&&(r=`pointermove`,n.isDown=!1,n.isUp=!1),n.pressed=t.value>0,n.value=t.value):(t.pressed&&!n.pressed?(r=`pointerdown`,n.isDown=!0,n.isUp=!1):!t.pressed&&n.pressed?(r=`pointerup`,n.isDown=!1,n.isUp=!0):(n.isDown=!1,n.isUp=!1),n.pressed=t.pressed,n.value=t.value),this.states[e]=n;let i=e!==this._selectButtonIndex&&e!==this._squeezeButtonIndex;if(r!=null&&i){let n=this._layout?.gamepad[e];this._isMxInk&&e===4&&(n=`stylus-touch`),this._isMxInk&&e===5&&(n=`stylus-tip`),(Bu||Vu)&&console.log(`Emitting pointer event`,r,e,n,t.value,this.gamepad,this._layout),this.emitPointerEvent(r,e,n??`none`,!1,null,t.value)}}if(this._isMetaQuestTouchController){let e=this.gamepad.buttons.length-1,t=this.states[e];if(t&&t.isDown){let e=this.context.menu;e.spatialMenuIsVisible?e.setSpatialMenuVisible(!1):this.context.menu.setSpatialMenuVisible(!0)}}}if(this.hand){let e=this.handObject;if(e){let t=e.joints[`index-finger-tip`],n=e.joints[`thumb-tip`];if(t&&n){let e=t.position.distanceTo(n.position);this._pinchPosition.lerpVectors(t.position,n.position,.5);let r=this.xr.context.mainCamera?.parent;if(r&&this._pinchPosition.applyMatrix4(r.matrixWorld),e!==0){let t=.02,n=.01,r=this.states.pinch||new qu,i=(t+n)*1.5;r.value=1-(e-t)/i;let a=et+n;a&&!r.pressed?(Vu&&console.log(`pinch start`,e),r.isDown=!0,r.isUp=!1,r.pressed=!0):o&&r.pressed?(r.isDown=!1,r.isUp=!0,r.pressed=!1):(r.isDown=!1,r.isUp=!1),this.states.pinch=r}}}}}_didMoveLastFrame=!1;_lastPointerMovePosition=new o;_lastPointerMoveQuaternion=new E;onUpdateMove(){if(!this.emitPointerMoveEvent)return;let e=!1;if(this._lastPointerMovePosition.distanceTo(this.gripWorldPosition)>this.pointerMoveDistanceThreshold*this.xr.rigScale&&(e=!0),e||this._lastPointerMoveQuaternion.angleTo(this.gripWorldQuaternion)>this.pointerMoveAngleThreshold&&(e=!0),e){this._didMoveLastFrame=!0,this._lastPointerMovePosition.copy(this.gripWorldPosition),this._lastPointerMoveQuaternion.copy(this.gripWorldQuaternion),Bu&&H.DrawLabel(this.rayWorldPosition.add(this.object.worldForward.multiplyScalar(.1)),`move`,.01);let e=this.xr.context.input.getFirstPressedButtonForPointer(this.index);e===void 0&&(e=0);let t=this.gamepad?.buttons[e]?.value;this.emitPointerEvent(`pointermove`,e,`none`,!1,null,t)}else this._didMoveLastFrame=!1}pointerInit;emitPointerEvent(e,t,n,r,i=null,a){if(!this.emitEvents){Bu&&e!==L.PointerMove&&console.warn(`Pointer events are disabled for this controller`,this.index,e,t);return}if(this.xr.mode===`immersive-vr`||this.xr.isPassThrough){this.pointerInit.origin=this,this.pointerInit.pointerId=this.getPointerId(t),this.pointerInit.pointerType=this.hand?`hand`:`controller`,this.pointerInit.button=t,this.pointerInit.buttonName=n,this.pointerInit.isPrimary=r,this.pointerInit.mode=this.inputSource.targetRayMode,this.pointerInit.ray=this.ray,this.pointerInit.device=this.object,this.pointerInit.pressure=a,this.pointerInit.clientX=this._rayPosition.x/this.xr.rigScale,this.pointerInit.clientY=this._rayPosition.y/this.xr.rigScale,this.pointerInit.clientZ=this._rayPosition.z/this.xr.rigScale;let o=B.Current;B.Current=this.xr.context,Bu&&e!==`pointermove`&&console.warn(`Pointer event`,e,t,n,{...this.pointerInit}),this.xr.context.input.createInputEvent(new ic(e,i,this.pointerInit)),B.Current=o}}},qu=class{isDown=!1;isUp=!1;pressed=!1;value=0},Ju=class{index;name;touched=!1;pressed=!1;value=0;isDown=!1;isUp=!1;constructor(e,t){this.index=e,this.name=t}},Yu=A(`debugwebxr`),Xu=class{controllerStates=[];userId;context;userStateEvtName;constructor(e,t){this.userId=e,this.context=t,this.userStateEvtName=`xr-sync-user-state-`+e,this.context.connection.beginListen(this.userStateEvtName,this.onReceivedControllerState)}dispose(){this.context.connection.stopListen(this.userStateEvtName,this.onReceivedControllerState)}onReceivedControllerState=e=>{Yu&&console.log(`XRSync: Received change for ${this.userId}: ${e.type} ${e.handedness}; tracked=${e.isTracking}`);let t=!1;for(let n=0;n=0;t--){let n=this.controllerStates[t],r=!1;for(let t=0;tt.index===e.index);if(t){let n=!1;n||=t.isTracking!=e.isTracking,n&&(t.isTracking=e.isTracking,this.context.connection.send(this.userStateEvtName,t))}else{let t={guid:this.userId+`-`+e.index,isTracking:e.isTracking,handedness:e.side,index:e.index,type:e.hand?`hand`:`controller`};this.controllerStates.push(t),this.context.connection.send(this.userStateEvtName,t),Yu&&console.log(`XRSync: ${t.type} ${t.handedness} added`,t.index)}}},Zu=class{hasState(e){return e?this._states.has(e):!1}isTracking(e,t){if(!e)return;let n=this._states.get(e);if(n)return n.controllerStates.find(e=>e.handedness===t)?.isTracking||!1}getDeviceType(e,t){if(!e)return;let n=this._states.get(e);if(n)return n.controllerStates.find(e=>e.handedness===t)?.type||`unknown`}context;constructor(e){this.context=e,this.context.connection.beginListen(Xc.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(Xc.LeftRoom,this.onLeftRoom),this.context.connection.beginListen(Xc.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.beginListen(Xc.UserLeftRoom,this.onOtherUserLeftRoom)}destroy(){this.context.connection.stopListen(Xc.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(Xc.LeftRoom,this.onLeftRoom),this.context.connection.stopListen(Xc.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.stopListen(Xc.UserLeftRoom,this.onOtherUserLeftRoom)}onJoinedRoom=()=>{if(this.context.connection.connectionId){this._states.has(this.context.connection.connectionId)||(Yu&&console.log(`XRSync: Local user joined room`,this.context.connection.connectionId),this._states.set(this.context.connection.connectionId,new Xu(this.context.connection.connectionId,this.context)));for(let e of this.context.connection.usersInRoom())this._states.has(e)||this._states.set(e,new Xu(e,this.context))}};onLeftRoom=()=>{this.context.connection.connectionId&&(this._states.has(this.context.connection.connectionId)||(this._states.get(this.context.connection.connectionId)?.dispose(),this._states.delete(this.context.connection.connectionId)))};onOtherUserJoinedRoom=e=>{let t=e.userId;this._states.has(t)||(Yu&&console.log(`XRSync: Remote user joined room`,t),this._states.set(t,new Xu(t,this.context)))};onOtherUserLeftRoom=e=>{let t=e.userId;this._states.has(t)||(this._states.get(t)?.dispose(),this._states.delete(t))};_states=new Map;onUpdate(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.update(e)}onExitXR(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.onExitXR(e)}},Qu=class{_fadeToColorQuad;_fadeToColorMaterial;constructor(){this._fadeToColorMaterial=new re({color:0,transparent:!0,depthTest:!1,fog:!1,side:2}),this._fadeToColorQuad=new x(new Ke(10,10),this._fadeToColorMaterial)}dispose(){this._fadeToColorQuad.geometry.dispose(),this._fadeToColorMaterial.dispose()}update(e,t){let n=this._fadeToColorQuad,r=this._fadeToColorMaterial;n.parent!==e&&r.opacity>0?e.add(n):r.opacity===0&&n.removeFromParent(),n.layers.set(2),n.material=this._fadeToColorMaterial,n.position.z=-1,n.renderOrder=1/0;let i=this._requestedFadeValue;r.opacity=N.lerp(r.opacity,i,t/.03),Math.abs(r.opacity-i)<=.01&&this._transitionResolve&&(this._transitionResolve(),this._transitionResolve=null,this._transitionPromise=null,this._requestedFadeValue=0)}remove(){this._fadeToColorQuad.removeFromParent()}fadeTransition(){if(this._transitionPromise)return this._transitionPromise;this._requestedFadeValue=1;let e=new Promise(e=>{this._transitionResolve=e});return this._transitionPromise=e,e}_requestedFadeValue=0;_transitionPromise=null;_transitionResolve=null},$u=class e{static _active=null;static get active(){return this._active}static _requestInFlight=!1;static async start(t,n){if(this._active)return console.error(`Cannot start a new XR session while one is already active`),null;if(this._requestInFlight)return console.error(`Cannot start a new XR session while a request is already in flight`),null;if(`xr`in navigator&&navigator.xr){if(!n)return console.error(`XRSessionInit must be provided`),null;this._requestInFlight=!0;let r=await navigator.xr.requestSession(t,n).catch(e=>{console.error(`Failed to start temporary XR session:`,e)});return r?(r.addEventListener(`end`,()=>{this._active=null}),this._requestInFlight?(this._requestInFlight=!1,this._active=new e(t,n,r),this._active):(r.end(),null)):(this._requestInFlight=!1,null)}return null}static async handoff(){return this._active?this._active.handoff():null}static async stop(){this._requestInFlight=!1,this._active&&(await this._active.end(),await Kt(100)),this._active=null}_session;_mode;_init;get isAR(){return this._mode===`immersive-ar`}get isVR(){return this._mode===`immersive-vr`}_renderer;_camera;_scene;constructor(e,t,n){this._mode=e,this._init=t,this._session=n,this._session.addEventListener(`end`,this.onEnd),this._renderer=new h({alpha:!0,antialias:!0}),this._renderer.outputColorSpace=`srgb`,this._renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),this._renderer.setSize(window.innerWidth,window.innerHeight,!0),j.isNeedleAppClip()&&window.requestAnimationFrame(()=>{let e=Math.min(2,window.devicePixelRatio),t=Math.floor(window.innerWidth*e),n=Math.floor(window.innerHeight*e);this._renderer.domElement.width=t,this._renderer.domElement.height=n}),this._renderer.setAnimationLoop(this.onFrame),this._renderer.xr.setSession(n),this._renderer.xr.enabled=!0,this._camera=new C,this._scene=new ne,this._scene.fog=new Be(4473924,10,250),this._scene.add(this._camera),this.setupScene()}end(){return this._session?this._session.end():Promise.resolve()}async handoff(){if(!this._session)throw Error(`Cannot handoff a session that has already ended`);let e={session:this._session,mode:this._mode,init:this._init};return await this.onBeforeHandoff(),this.onEnd(),this._session=null,e}onEnd=()=>{this._session?.removeEventListener(`end`,this.onEnd),this._renderer.setAnimationLoop(null),this._renderer.dispose(),this._scene.clear()};_lastTime=0;_frames=0;onFrame=(e,t)=>{let n=e-this._lastTime;this.update(e,n),this._camera.parent!==this._scene&&this._scene.add(this._camera),this._renderer.render(this._scene,this._camera),this._lastTime=e,this._frames++};_roomFlyObjects=[];_logoObject=null;get _logoDistance(){return this.isAR?.3:5}get _logoScale(){return this.isAR?.04:1}update(e,t){let n=e*4e-4;for(let e=0;e{if(!r)return;t.material.opacity=1;let a=1024;n.width=a,n.height=a,r.imageSmoothingQuality=`high`;let o=a*.19,s=e?1:i.width/i.height;if(!e){let e=n.height-o*1.5,t=e*s,a=(n.width-t)/2;r.drawImage(i,a,0,t,e)}let c=a*.12,l=`Loading...`;r.shadowBlur=0,r.fillStyle=this.isAR?`white`:`rgba(255,255,255,0.4)`,r.font=`${c}px Arial`,r.shadowBlur=a*.02,r.shadowColor=`rgba(0,0,0,0.5)`,r.shadowOffsetX=0,r.shadowOffsetY=0;let u=r.measureText(l);r.fillText(l,n.width/2-u.width/2,n.height-o/4),r.font=`${c}px Arial`,r.fillText(l,n.width/2-u.width/2,n.height-o/4);let d=new me().load(n.toDataURL());d.generateMipmaps=!0,d.colorSpace=`srgb`,d.anisotropy=4;let f=n.width/n.height;t.scale.x=this._logoScale*f*window.devicePixelRatio,t.scale.y=this._logoScale*window.devicePixelRatio,t.material.map=d,t.material.needsUpdate=!0};i.onload=()=>o(!1),i.onerror=t=>{console.error(`Failed to load temporary XR logo:`,e,t),i.src=Wl},i.crossOrigin=`anonymous`,i.src=e;let s=new ue(16777215,1);s.position.set(0,20,0),s.castShadow=!1,this._scene.add(s);let c=new ue(16777215,1);c.position.set(0,-1,0),c.castShadow=!1,this._scene.add(c);let l=new Ze(16777215,1,100,1);if(l.position.set(0,2,0),l.castShadow=!1,l.distance=200,this._scene.add(l),this.isAR===!1)for(let e=0;e<100;e++){let e=new Ce({color:2236962,metalness:1,roughness:.8}),t=Gs.Sphere,n=Ks.createPrimitive(t,{material:e});n.position.x=N.random(-50,50),n.position.y=N.random(-2,50),n.position.z=N.random(-50,50),n.rotation.x=N.random(0,Math.PI*2),n.rotation.y=N.random(0,Math.PI*2),n.rotation.z=N.random(0,Math.PI*2),n.scale.multiplyScalar(.5+Math.random()*10);let r=n.position.distanceTo(this._camera.position)-n.scale.x;r<10&&(n.position.z+=5,n.position.multiplyScalar(1+1/r)),this._roomFlyObjects.push(n),this._scene.add(n)}}},ed;(function(e){let t=[];function n(){t?.length||M()&&console.warn(`No USDZ exporters found – cannot export USDZ for QuickLook.`);for(let e of t)e.exportAndOpen();return!0}e.exportAndOpen=n;function r(e){t.push(e)}e.registerExporter=r;function i(e){if(!t)return;let n=t.indexOf(e);n>=0&&t.splice(n,1)}e.unregisterExporter=i})(ed||={});var V=A(`debugwebxr`),td=A(`stats`),nd=0;function rd(e){let t=null,n=e;return t=n.getAROverlayContainer?n.getAROverlayContainer():e,t}id();async function id(){let e=`immersive-vr`;try{if(j.isNeedleAppClip()?e=`immersive-ar`:await navigator.xr?.isSessionSupported(`immersive-vr`)||(e=`immersive-ar`),!await navigator.xr?.isSessionSupported(`immersive-ar`)&&e===`immersive-ar`)return}catch(e){console.debug(`[NeedleXRSession:granted] Error while checking XR support:`,e);return}if(A(`debugasap`)){let t=globalThis[`needle:XRSession`];if(t instanceof Promise){delete globalThis[`needle:XRSession`],k.addContextCreatedCallback(async n=>{if(!t)return;_i(!0);let r=await t;if(r){let t=pd.getDefaultSessionInit(e);pd.setSession(e,r,t,n.context)}else console.error(`[NeedleXRSession:granted] ASAP session was rejected`);t=void 0});return}}if(`xr`in navigator){if(/WebXRViewer\//i.test(navigator.userAgent)){console.warn(`WebXRViewer does not support addEventListener`);return}navigator.xr?.addEventListener(`sessiongranted`,async()=>{let t=sessionStorage.getItem(`needle_xr_session_mode`),n=sessionStorage.getItem(`needle_xr_session_init`)??null,r=n?JSON.parse(n):null,i=null;if(cd()&&(await $u.start(t||e,r||pd.getDefaultSessionInit(e)).catch(e=>console.warn(`[NeedleXRSession:granted] TemporaryXRContext start failed:`,e)),await ld(),i=await $u.handoff()),i)pd.setSession(i.mode,i.session,i.init,B.Current);else if(t&&n){console.log(`[NeedleXRSession:granted] Restore last session`);let e=JSON.parse(n);pd.start(t,e).catch(e=>console.warn(e))}else pd.start(e).catch(e=>console.warn(`[NeedleXRSession:granted] failed:`,e))},{once:!0})}}function ad(e,t){sessionStorage.setItem(`needle_xr_session_mode`,e),sessionStorage.setItem(`needle_xr_session_init`,JSON.stringify(t))}function od(){sessionStorage.removeItem(`needle_xr_session_mode`),sessionStorage.removeItem(`needle_xr_session_init`)}var sd=new Set;k.registerCallback(O.ContextCreationStart,async e=>{sd.add(e.context)}),k.registerCallback(O.ContextCreated,async e=>{sd.delete(e.context),ud(e.context?.domElement.getAttribute(`autostart`)||null)});function cd(){return sd.size>0}function ld(){return new Promise(e=>{let t=Date.now(),n=setInterval(()=>{(!cd()||Date.now()-t>6e4)&&(clearInterval(n),e())},100)})}j.isDesktop()&&M()&&window.addEventListener(`keydown`,e=>{(e.key===`x`||e.key===`Escape`)&&pd.active&&pd.stop()});function ud(e){if(e)switch(e?.toLowerCase()){case`ar`:Vs.registerWaitForInteraction(()=>{pd.start(`ar`)});break}}var dd=Symbol(`initial-fov`),fd=Symbol(`initial-near`),pd=class e{static _sync=null;static getXRSync(e){return this._sync||=new Zu(e),this._sync}static get currentSessionRequest(){return this._currentSessionRequestMode}static _currentSessionRequestMode=null;static get active(){return this._activeSession}static get activeMode(){return this._activeSession?.mode??null}static get xrSystem(){return`xr`in navigator?navigator.xr:void 0}static isXRSupported(){return Promise.all([this.isVRSupported(),this.isARSupported()]).then(e=>e.some(e=>e)).catch(()=>!1)}static isVRSupported(){return this.isSessionSupported(`immersive-vr`)}static isARSupported(){return this.isSessionSupported(`immersive-ar`)}static isSessionSupported(e){return this.xrSystem?.isSessionSupported(e).catch(e=>(V&&console.error(e),!1))??Promise.resolve(!1)}static _currentSessionRequest;static _activeSession;static onSessionRequestStart(e){this._sessionRequestStartListeners.push(e)}static offSessionRequestStart(e){let t=this._sessionRequestStartListeners.indexOf(e);t>=0&&this._sessionRequestStartListeners.splice(t,1)}static _sessionRequestStartListeners=[];static onSessionRequestEnd(e){this._sessionRequestEndListeners.push(e)}static offSessionRequestEnd(e){let t=this._sessionRequestEndListeners.indexOf(e);t>=0&&this._sessionRequestEndListeners.splice(t,1)}static _sessionRequestEndListeners=[];static onXRSessionStart(e){this._xrStartListeners.push(e)}static offXRSessionStart(e){let t=this._xrStartListeners.indexOf(e);t>=0&&this._xrStartListeners.splice(t,1)}static _xrStartListeners=[];static onXRSessionEnd(e){this._xrEndListeners.push(e)}static offXRSessionEnd(e){let t=this._xrEndListeners.indexOf(e);t>=0&&this._xrEndListeners.splice(t,1)}static _xrEndListeners=[];static onControllerAdded(e){this._controllerAddedListeners.push(e)}static offControllerAdded(e){let t=this._controllerAddedListeners.indexOf(e);t>=0&&this._controllerAddedListeners.splice(t,1)}static _controllerAddedListeners=[];static onControllerRemoved(e){this._controllerRemovedListeners.push(e)}static offControllerRemoved(e){let t=this._controllerRemovedListeners.indexOf(e);t>=0&&this._controllerRemovedListeners.splice(t,1)}static _controllerRemovedListeners=[];static offerSession(t,n,r){return`xr`in navigator&&navigator.xr&&`offerSession`in navigator.xr?(typeof navigator.xr.offerSession==`function`&&(console.log(`WebXR offerSession is available - requesting mode: `+t),n==`default`&&(n=this.getDefaultSessionInit(t)),navigator.xr.offerSession(t,{...n}).then(i=>e.setSession(t,i,n,r)).catch(e=>{console.log(`XRSession offer rejected (perhaps because another call to offerSession was made or a call to requestSession was made)`)})),!0):!1}static getDefaultSessionInit(e){switch(e){case`immersive-ar`:let t=[`anchors`,`local-floor`,`layers`,`dom-overlay`,`hit-test`,`unbounded`];return j.isVisionOS()||t.push(`hand-tracking`),{optionalFeatures:t};case`immersive-vr`:let n=[`local-floor`,`bounded-floor`,`high-fixed-foveation-level`,`layers`];return j.isVisionOS()||n.push(`hand-tracking`),{optionalFeatures:n};default:return console.warn(`No default session init for mode`,e),{}}}static async start(t,n,r){if(n||={},j.isiOS()){let e=await this.isARSupported().catch(()=>!1);if(j.isVisionOS()&&!e&&(t===`ar`||t===`immersive-ar`)&&(t=`quicklook`),t===`quicklook`)return $a.sendEvent(B.Current,`xr`,{action:`quicklook_export`,source:`NeedleXRSession.start`}),ed.exportAndOpen(),null;if(!e&&(t===`immersive-ar`||t===`ar`)){this.invokeSessionRequestStart(`immersive-ar`,n);let e=new URL(`https://appclip.apple.com/id?p=tools.needle.launch-app.Clip`);e.searchParams.set(`url`,location.href);let r=e.toString();$a.sendEvent(B.Current,`xr`,{action:`app_clip_launch`,source:`NeedleXRSession.start`,url:r});let i=window.top||window;try{console.debug(`iOS device detected - opening Needle App Clip for AR experience`,{mode:t,init:n,url:e}),i.location.href=r}catch(e){console.warn(`Error navigating to AppClip `+r+` +`,e),window===window.top?window.location.href=r:window.open(r,`_blank`)}return setTimeout(()=>{this.invokeSessionRequestEnd(`immersive-ar`,n||{},null)},3e3),null}}if(t===`quicklook`)return console.warn(`QuickLook mode is only supported on iOS devices`),null;if(t==`ar`&&(t=`immersive-ar`),M()&&A(`debugxrpreroom`))return console.warn(`Debug: Starting temporary XR session`),await $u.start(t,n||e.getDefaultSessionInit(t)),null;if(this._currentSessionRequest)return console.warn(`A XRSession is already being requested`),(V||M())&&Ei(`A XRSession is already being requested`),this._currentSessionRequest.then(()=>this._activeSession);if(this._activeSession)return console.error(`A XRSession is already running`),this._activeSession;if(r||=B.Current,r||=k.All[0],!r)throw Error(`No Needle Engine Context found`);switch(t){case`immersive-ar`:{if(await this.xrSystem?.isSessionSupported(`immersive-ar`)!==!0)return console.error(t+` is not supported by this browser.`),null;let e=this.getDefaultSessionInit(t),i=rd(r.domElement);i&&!j.isQuest()&&(e.domOverlay={root:i},e.optionalFeatures.push(`dom-overlay`)),n={...e,...n}}break;case`immersive-vr`:if(await this.xrSystem?.isSessionSupported(`immersive-vr`)!==!0)return console.error(t+` is not supported by this browser.`),null;n={...this.getDefaultSessionInit(t),...n};break;default:console.warn(`No default session init for mode`,t);break}n.optionalFeatures??=[],n.requiredFeatures??=[],await $u.stop();let i=t==`immersive-ar`?r.scripts_immersive_ar:r.scripts_immersive_vr;V?console.log(`%cRequesting ${t} session`,`font-weight:bold;`,n,i):console.log(`%cRequesting ${t} session`,`font-weight:bold;`);for(let e of i)e.onBeforeXR&&e.activeAndEnabled&&!e.destroyed&&e.onBeforeXR(t,n);this.invokeSessionRequestStart(t,n),V&&Ti(`Requesting `+t+` session (`+Date.now()+`)`),$a.sendEvent(B.Current,`xr`,{action:`session_request`,mode:t,features:(n.requiredFeatures??[]).concat(n.optionalFeatures??[]).join(`,`),source:`NeedleXRSession.start`}),this._currentSessionRequest=navigator?.xr?.requestSession(t,n),this._currentSessionRequestMode=t;let a=await this._currentSessionRequest?.catch(e=>{console.error(e,`Code: `+e?.code),e?.code===9&&Ei(`Couldn't start XR session. Make sure you allow the required permissions.`),console.log(`If the specified XR configuration is not supported (e.g. entering AR doesnt work) - make sure you access the website on a secure connection (HTTPS) and your device has the required permissions (e.g. camera access)`),location.protocol===`http:`&&Ei(`XR requires a secure connection (HTTPS)`)});return this._currentSessionRequest=void 0,this._currentSessionRequestMode=null,this.invokeSessionRequestEnd(t,n,a),a?this.setSession(t,a,n,r):(console.warn(`XR Session request was rejected`),null)}static invokeSessionRequestStart(e,t){for(let n of this._sessionRequestStartListeners)n({mode:e,init:t})}static invokeSessionRequestEnd(e,t,n){for(let r of this._sessionRequestEndListeners)r({mode:e,init:t,newSession:n||null})}static setSession(t,n,r,i){if(this._activeSession)return console.error(`A XRSession is already running`),this._activeSession;let a=t==`immersive-ar`?i.scripts_immersive_ar:i.scripts_immersive_vr;return this._activeSession=new e(t,n,i,{scripts:a,controller_added:this._controllerAddedListeners,controller_removed:this._controllerRemovedListeners,init:r}),n.addEventListener(`end`,this.onEnd),V?console.log(`%cStarted ${t} session`,`font-weight:bold;`,a):console.log(`%cStarted ${t} session`,`font-weight:bold;`),this._activeSession}static $_stop_request=Symbol();static stop(){let e=this._activeSession;e&&(e[this.$_stop_request]===void 0?(V&&console.log(`[NeedleXRSession] Stopping XR Session... (new)`),e[this.$_stop_request]=setTimeout(()=>{e.end()})):V&&console.warn(`[NeedleXRSession] XR Session stop already requested`))}static onEnd=()=>{V&&console.log(`XR Session ended`),this._activeSession=null};context;get sync(){return e._sync}get running(){return!this._ended&&this.session!=null}session;mode;get interactionMode(){return this.session.interactionMode}get visibilityState(){return this.session.visibilityState}get isVisibleBlurred(){return this.session.visibilityState===`visible-blurred`}get isSystemKeyboardSupported(){return this.session.isSystemKeyboardSupported}get environmentBlendMode(){return this.session.environmentBlendMode}get frame(){return this.context.xrFrame}controllers=[];get leftController(){return this.controllers.find(e=>e.side===`left`)}get rightController(){return this.controllers.find(e=>e.side===`right`)}getController(e){return typeof e==`number`?this.controllers[e]||null:this.controllers.find(t=>t.side===e)||null}get isPassThrough(){return!!(this.environmentBlendMode!==`opaque`&&this.interactionMode===`world-space`||this.mode===`immersive-ar`&&this.environmentBlendMode!==`opaque`&&this.controllers.some(e=>e.inputSource.targetRayMode===`tracked-pointer`)||M()&&j.isDesktop()&&this.mode===`immersive-ar`)}get isAR(){return this.mode===`immersive-ar`}get isVR(){return this.mode===`immersive-vr`}get isScreenBasedAR(){return this.isAR&&!this.isPassThrough}get posePosition(){return this._transformPosition}get poseOrientation(){return this._transformOrientation}get referenceSpace(){return this.context.renderer.xr.getReferenceSpace()}get viewerPose(){return this._viewerPose}get isTrackingImages(){if(this.frame&&`getImageTrackingResults`in this.frame&&typeof this.frame.getImageTrackingResults==`function`)try{let e=this.frame.getImageTrackingResults();for(let t of e)if(t.trackingState===`tracked`)return!0}catch{return!1}return!1}get rig(){let e=this._rigs[0]??null;return e?.gameObject&&Nf(e.gameObject)||e?.isActive===!1?(this.updateActiveXRRig(),this._rigs[0]??null):e}_rigScale=1;_lastRigScaleUpdate=-1;get rigScale(){return this._rigs[0]?(this._lastRigScaleUpdate!==this.context.time.frame&&(this._lastRigScaleUpdate=this.context.time.frame,this._rigScale=this._rigs[0].gameObject.worldScale.x),this._rigScale):1}addRig(e){this._rigs.indexOf(e)>=0||(e.priority===void 0&&(e.priority=0),this._rigs.push(e),this.updateActiveXRRig())}removeRig(e){let t=this._rigs.indexOf(e);t!==-1&&(this._rigs.splice(t,1),this.updateActiveXRRig())}setRigActive(e){let t=this._rigs.indexOf(e),n=this._rigs[0];this._rigs.splice(t,1),this._rigs.unshift(e),e.priority=n?.priority??0,this.updateActiveXRRig()}getUserOffsetInRig(){let e=this.context.mainCamera?.position;if(!e||!this.rig)return P(0,0,0);let t=P(e);return t.x*=-1,t.z*=-1,t.applyQuaternion(Tr(this.rig.gameObject.quaternion)),t}updateActiveXRRig(){let e=this._rigs[0]??null;this._defaultRig.gameObject.parent!==this.context.scene&&this.context.scene.add(this._defaultRig.gameObject),this._defaultRig.gameObject.visible=!0,this._rigs.includes(this._defaultRig)||this._rigs.push(this._defaultRig);let t=this._rigs[0];t&&t.priority===void 0&&(t.priority=0);for(let e=1;et.priority)&&(t=n)}}if(e!==t){let e=this._rigs.indexOf(t);e>=0&&this._rigs.splice(e,1),this._rigs.unshift(t)}V&&(e===t?console.log(`Updated Active XR Rig:`,t,`prev:`,e):console.log(`Updated Active XRRig:`,t,` (the same as before)`))}_rigs=[];_viewerHitTestSource=null;getHitTest(e){if(e)return this.getControllerHitTest(e);if(!this._viewerHitTestSource)return null;let t=this._viewerHitTestSource,n=this.frame.getHitTestResults(t);if(n.length>0){let e=n[0];return this.convertHitTestResult(e)}return null}getControllerHitTest(e){let t=e.getHitTestSource();if(!t)return null;let n=this.frame.getHitTestResultsForTransientInput(t);for(let t of n)if(t.inputSource===e.inputSource)for(let e of t.results)return this.convertHitTestResult(e);return null}convertHitTestResult(e){let t=this.context.renderer.xr.getReferenceSpace(),n=t&&e.getPose(t);if(n){let t=P(n.transform.position),r=Tr(n.transform.orientation),i=this.context.mainCamera;if(i?.parent!==this._cameraRenderParent&&t.applyMatrix4(Iu),i?.parent){t.applyMatrix4(i.parent.matrixWorld),r.multiply(Lu);let e=Pr(i.parent);e.premultiply(Lu),r.premultiply(e)}return{hit:e,position:t,quaternion:r}}return null}convertSpace(e){let t=P(e.position);t.applyMatrix4(Iu);let n=Tr(e.orientation);return n.premultiply(Lu),{position:t,quaternion:n}}_defaultRig;_xr_scripts;_xr_update_scripts=[];_inactive_scripts=[];_controllerAdded;_controllerRemoved;_originalCameraWorldPosition;_originalCameraWorldRotation;_originalCameraWorldScale;_originalCameraParent;_mainCamera=null;constructor(e,t,n,r){ad(e,r.init),this.session=t,this.mode=e,this.context=n,(V||A(`console`))&&_i(!0),this._xr_scripts=[...r.scripts],this._xr_update_scripts=this._xr_scripts.filter(e=>typeof e.onUpdateXR==`function`),this._controllerAdded=r.controller_added,this._controllerRemoved=r.controller_removed,ka(this.onBefore,z.LateUpdate),this.context.pre_render_callbacks.push(this.onBeforeRender),this.context.post_render_callbacks.push(this.onAfterRender),(r.init.optionalFeatures?.includes(`hit-test`)||r.init.requiredFeatures?.includes(`hit-test`))&&t.requestReferenceSpace(`viewer`).then(e=>t.requestHitTestSource?.call(t,{space:e})?.then(e=>this._viewerHitTestSource=e).catch(e=>console.error(e))).catch(e=>console.error(e)),this.context.mainCamera&&(this._originalCameraWorldPosition=Or(this.context.mainCamera,new o),this._originalCameraWorldRotation=Pr(this.context.mainCamera,new E),this._originalCameraWorldScale=zr(this.context.mainCamera,new o),this._originalCameraParent=this.context.mainCamera.parent,this.context.mainCamera instanceof C&&(this.context.mainCamera[dd]=this.context.mainCamera.fov)),this._defaultRig=new zu,this.context.scene.add(this._defaultRig.gameObject),this.addRig(this._defaultRig);for(let e=0;e{for(let t of e.removed)this.disconnectInputSource(t);for(let t of e.added)this.onInputSourceAdded(t)}),this.context.xr=this,this.context.renderer.xr.setSession(this.session).then(this.onRendererSessionSet),`controllerAutoUpdate`in this.context.renderer.xr?(console.debug(`Disabling three.js controllerAutoUpdate`),this.context.renderer.xr.controllerAutoUpdate=!1):V&&console.warn(`controllerAutoUpdate is not available in three.js - cannot disable it`),j.isNeedleAppClip()&&window.requestAnimationFrame(()=>{let e=this.context.renderer.domElement,t=window.devicePixelRatio||1,n=e.width,r=e.height,i=Math.floor(window.innerWidth*t),a=Math.floor(window.innerHeight*t);(Math.abs(n-i)>2||Math.abs(r-a)>2)&&(e.width=i,e.height=a,console.debug(`Applied DPR scaling for Needle AppClip XR session`,t,e.width,e.height))})}onRendererSessionSet=()=>{this.running&&(this.context.renderer.xr.enabled=!0,this.context.renderer.xr.updateCamera(this.context.mainCamera),this.context.mainCameraComponent?.applyClearFlags())};onInputSourceAdded=e=>{if(e.targetRayMode===`screen`)return;let t=0;for(let n=0;nt.inputSource===e)){console.debug(`Controller already exists for input source`,t);return}else if(this._newControllers.find(t=>t.inputSource===e)){console.debug(`Controller already registered for input source`,t);return}let n=new Ku(this,e,t);this._newControllers.push(n)};disconnectInputSource(e){let t=(t,n)=>{if(t.inputSource===e){V&&console.log(`Disconnecting controller`,t.index);let e=n.indexOf(t);e>=0&&n.splice(e,1),this.invokeControllerEvent(t,this._controllerRemoved,`removed`);let r={xr:this,controller:t,change:`removed`};for(let e of this._xr_scripts)e.onXRControllerRemoved&&e.onXRControllerRemoved(r);t.onDisconnected()}},n=[...this.controllers];for(let e=n.length-1;e>=0;e--){let r=n[e];t(r,this.controllers)}let r=[...this._newControllers];for(let e=r.length-1;e>=0;e--){let n=r[e];t(n,this._newControllers)}}end(){this._ended||this.session.end().catch(e=>console.warn(e))}_ended=!1;_newControllers=[];onEnd=t=>{if(this._ended)return;this._ended=!0,console.debug(`XR Session ended`),$a.sendEvent(B.Current,`xr`,{action:`session_end`,mode:this.mode,source:`NeedleXRSession.onEnd`}),od(),this.onAfterRender(),this.revertCustomForward(),this._didStart=!1,this._previousCameraParent=null,this.requestedCameraNearPlane=null,Aa(this.onBefore,z.LateUpdate);let n=this.context.pre_render_callbacks.indexOf(this.onBeforeRender);n>=0&&this.context.pre_render_callbacks.splice(n,1);let r=this.context.post_render_callbacks.indexOf(this.onAfterRender);r>=0&&this.context.post_render_callbacks.splice(r,1),this.context.xr=null,this.context.renderer.xr.enabled=!1,this.context.pre_update_oneshot_callbacks.push(()=>{this.context.mainCameraComponent?.applyClearFlags(),this.context.mainCameraComponent?.applyClippingPlane()}),Ul({session:this});for(let t of e._xrEndListeners)t({xr:this});let i=[...this.controllers];for(let e=0;e{let n=t.xrFrame;if(!n)return;this.context.xr=this,this.context.mainCameraComponent&&this.context.mainCameraComponent!==this._mainCamera&&(this._mainCamera=this.context.mainCameraComponent),this.rig?.isActive==0&&(V&&console.warn(`Latest rig is not active - trying to activate a different rig`,this.rig),this.updateActiveXRRig()),this.rig&&this._mainCamera?.gameObject&&this._mainCamera?.gameObject?.parent!==this.rig.gameObject&&this.rig.gameObject.add(this._mainCamera?.gameObject),this.internalUpdateState(),this.applyCustomForward();let r={xr:this};if(!this._didStart){if(this._didStart=!0,this.mode===`immersive-vr`){let e=fi(this.context.scene.children);if(e){let t=e.getSize(P());if(t.length()>0){let n=this._defaultRig.gameObject;n.position.set(e.min.x+t.x*.5,e.min.y,e.max.z+t.z*.5+1.5);let r=e.getCenter(P());r.y=n.position.y,n.lookAt(r)}}}Hl({session:this}),Bs();for(let t of e._xrStartListeners)t(r);let t=[...this._xr_scripts];V&&console.log(`NeedleXRSession start, handle scripts:`,t);for(let e of t){if(e.destroyed){this._script_to_remove.push(e);continue}if(!e.activeAndEnabled){this.markInactive(e);continue}this.invokeCallback_EnterXR(e);for(let t of this.controllers)this.invokeCallback_ControllerAdded(e,t)}}else if(this.context.new_scripts_xr.length>0){let e=[...this.context.new_scripts_xr];for(let t=0;t0){let e=[...this._newControllers];this._newControllers.length=0;for(let t of e){if(!t.connected){console.warn(`New controller is not connected`,t);continue}this.controllers.push(t);for(let e of this._xr_scripts){if(e.destroyed){this._script_to_remove.push(e);continue}e.activeAndEnabled!==!1&&this.invokeCallback_ControllerAdded(e,t)}}this.controllers.sort((e,t)=>e.index-t.index)}V&&this.context.time.frame%30==0&&this.controllers.length<=0&&this.session.inputSources.length>0&&(_i(!0),console.error(`XRControllers are not added but inputSources are present`));for(let e of this._xr_update_scripts){if(e.destroyed===!0){this._script_to_remove.push(e);continue}if(e.activeAndEnabled===!1){this.markInactive(e);continue}e.onUpdateXR&&e.onUpdateXR(r)}if(this.handleInactiveScripts(),this._script_to_remove.length>0){let e=[...new Set(this._script_to_remove)];this._script_to_remove.length=0;for(let t of e)!t.destroyed&&this.running&&t.onLeaveXR?.(r),this.removeScript(t)}this.sync?.onUpdate(this),this.onRenderDebug()};onRenderDebug(){if(V)for(let e of this.controllers)e.onRenderDebug();if((V||td)&&this.rig&&(nd++,nd>=20)){let e=this.rig.gameObject.worldPosition,t=this.rig.gameObject.worldForward;e.add(t.multiplyScalar(1.5));let n=this.rig.gameObject.worldUp;e.add(n.multiplyScalar(2.5));let r=``;if(r+=`${this.context.time.smoothedFps.toFixed(0)} FPS`,r+=`, calls: ${this.context.renderer.info.render.calls}, tris: ${this.context.renderer.info.render.triangles.toLocaleString()}`,V||td)for(let e of this.controllers)r+=`\n${e.hand?`hand`:`ctrl`} ${e.inputSource.handedness}[${e.index}] con:${e.connected} tr:${e.isTracking} hts:${e.hasHitTestSource?`yes`:`no`}`;nd=0,H.DrawLabel(e,r,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof C&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),j.isDesktop()||!this._renderOnceOnDevice){let e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;let t=e.xr.enabled,n=e.getRenderTarget(),r=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(n),this.context.scene.background=r}}};addScript(e){return this._xr_scripts.includes(e)?!1:(V&&console.log(`Register new XRScript`,e),this._xr_scripts.push(e),typeof e.onUpdateXR==`function`&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(let t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){let t=this._inactive_scripts[e];if(t.activeAndEnabled){this._inactive_scripts.splice(e,1),this.addScript(t),this.invokeCallback_EnterXR(t);for(let e of this.controllers)this.invokeCallback_ControllerAdded(t,e)}}}_script_to_remove=[];removeScript(e,t=!0){V&&console.log(`Remove XRScript`,e);let n=this._xr_scripts.indexOf(e);n>=0&&this._xr_scripts.splice(n,1);let r=this._xr_update_scripts.indexOf(e);if(r>=0&&this._xr_update_scripts.splice(r,1),t){let t=this._inactive_scripts.indexOf(e);t>=0&&this._inactive_scripts.splice(t,1)}}invokeCallback_EnterXR(e){e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:`added`})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:`removed`})}invokeCallback_LeaveXR(e){e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){let e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(let n of e.cameras)n.layers.mask=t;e.layers.mask=t}else if(e){for(let t of e.cameras)t.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,n){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i)try{i({xr:this,controller:e,change:n})}catch(e){console.error(e)}}}_camera;_cameraRenderParent=new S().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name=`XR Camera Render Parent`,this._cameraRenderParent.add(this._camera);{let e=.02;if(this.rig){let t=zr(this.rig.gameObject);e*=t.x}this._camera instanceof C&&Math.abs(this._camera.near-e)>.001&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,V&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof C&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new E;_transformPosition=new o;internalUpdateState(){let e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){let e=this._viewerPose.transform;this._transformPosition.set(e.position.x,e.position.y,e.position.z),this._transformOrientation.set(e.orientation.x,e.orientation.y,e.orientation.z,e.orientation.w)}}_transition;get transition(){return this._transition||=new Qu,this._transition}fadeTransition(){return this._transition||=new Qu,this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof C&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}},md=class e extends a{alpha=1;get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}constructor(e,t,n,r){super(),typeof e==`number`&&typeof t==`number`&&typeof n==`number`?(this.set(e,t,n),this.alpha=typeof r==`number`?r:1):e!==void 0&&(this.set(e),this.alpha=1)}clone(){let e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,`alpha`in e&&typeof e.alpha==`number`?this.alpha=e.alpha:typeof e.a==`number`&&(this.alpha=e.a),this}lerp(e,t){let n=e;return n.alpha!=null&&(this.alpha=N.lerp(this.alpha,n.alpha,t)),super.lerp(e,t)}lerpColors(e,t,n){let r=e,i=t;return r.alpha!=null&&i.alpha!=null&&(this.alpha=N.lerp(r.alpha,i.alpha,n)),super.lerpColors(e,t,n)}multiply(e){let t=e;return t.alpha!=null&&(this.alpha*=t.alpha),super.multiply(e)}fromArray(e,t=0){return this.alpha=e[t+3],super.fromArray(e,t)}static fromColorRepresentation(t){if(typeof t==`string`){if(t.trim()===`transparent`)return new e(0,0,0,0);if(t.startsWith(`#`)&&t.length===9){let n=parseInt(t.slice(1,9),16),r=n>>24&255,i=n>>16&255,a=n>>8&255,o=n>>0&255;return new e(r/255,i/255,a/255,o/255)}else if(t.startsWith(`#`)){let n=parseInt(t.slice(1),16),r=n>>16&255,i=n>>8&255,a=n>>0&255;return new e(r/255,i/255,a/255,1)}else if(t.startsWith(`rgba`)){let n=t.slice(5,-1).split(`,`).map(Number);return new e(n[0]/255,n[1]/255,n[2]/255,n[3])}else if(t.startsWith(`rgb`)){let n=t.slice(4,-1).split(`,`).map(Number);return new e(n[0]/255,n[1]/255,n[2]/255,1)}}else if(Array.isArray(t)){if(t.length===4)return new e(t[0],t[1],t[2],t[3]);if(t.length===3)return new e(t[0],t[1],t[2],1);console.error(`Invalid color array length. Expected 3 or 4, got `+t.length)}return new e(t)}},hd=new o,gd=new o,_d=new E,vd=A(`debuggizmos`),yd=8947848,bd=32,H=class e{constructor(){}static enabled=!0;static isGizmo(e){return e[wd]!==void 0}static setVisible(e){for(let t of Td.timedObjectsBuffer)t.visible=e}static DrawLabel(t,n,r=.05,i=0,a,o,s){if(!e.enabled)return null;a||=yd;let c=pd.active?.rigScale??1,l=Td.getTextLabel(i,n,r*c,a,o);return s instanceof S&&s.add(l),l.position.x=t.x,l.position.y=t.y,l.position.z=t.z,l}static DrawRay(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getLine(i),s=o.geometry.getAttribute(`position`);s.setXYZ(0,t.x,t.y,t.z),hd.set(n.x,n.y,n.z).multiplyScalar(999999999),s.setXYZ(1,t.x+hd.x,t.y+hd.y,t.z+hd.z),s.needsUpdate=!0,o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawDirection(t,n,r=yd,i=0,a=!0,o=1){if(!e.enabled)return;let s=Td.getLine(i),c=s.geometry.getAttribute(`position`);c.setXYZ(0,t.x,t.y,t.z),n.w===void 0?(hd.set(n.x,n.y,n.z),hd.multiplyScalar(o)):(hd.set(0,0,-o),_d.set(n.x,n.y,n.z,n.w),hd.applyQuaternion(_d)),c.setXYZ(1,t.x+hd.x,t.y+hd.y,t.z+hd.z),c.needsUpdate=!0,s.material.depthTest=a,s.material.depthWrite=!1,Cd(s.material,r)}static DrawLine(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getLine(i),s=o.geometry.getAttribute(`position`);s.setXYZ(0,t.x,t.y,t.z),s.setXYZ(1,n.x,n.y,n.z),s.needsUpdate=!0,o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawCircle(t,n,r,i=yd,a=0,o=!0){if(!e.enabled)return;let s=Td.getCircle(a);s.position.set(t.x,t.y,t.z),s.scale.set(r,r,r),s.quaternion.setFromUnitVectors(this._up,hd.set(n.x,n.y,n.z).normalize()),s.material.depthTest=o,s.material.depthWrite=!1,s.material.fog=!1,Cd(s.material,i)}static DrawWireSphere(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getSphere(n,i,!0);Ar(o,t.x,t.y,t.z),o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawSphere(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getSphere(n,i,!1);Ar(o,t.x,t.y,t.z),o.material.depthTest=a,o.material.depthWrite=!1,Cd(o.material,r)}static DrawWireBox(t,n,r=yd,i=0,a=!0,o=void 0){if(!e.enabled)return;let s=Td.getBox(i);s.position.set(t.x,t.y,t.z),s.scale.set(n.x,n.y,n.z),o?s.quaternion.copy(o):s.quaternion.identity(),s.material.depthTest=a,s.material.wireframe=!0,s.material.depthWrite=!1,s.material.fog=!1,Cd(s.material,r)}static DrawWireBox3(t,n=yd,r=0,i=!0){if(!e.enabled)return;let a=Td.getBox(r);a.position.copy(t.getCenter(hd)),a.scale.copy(t.getSize(hd)),a.material.depthTest=i,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,Cd(a.material,n)}static _up=new o(0,1,0);static DrawArrow(t,n,r=yd,i=0,a=!0,o=!1){if(!e.enabled)return;let s=Td.getArrowHead(i);s.position.set(n.x,n.y,n.z),s.quaternion.setFromUnitVectors(this._up.set(0,1,0),hd.set(n.x,n.y,n.z).sub(gd.set(t.x,t.y,t.z)).normalize());let c=hd.set(n.x,n.y,n.z).sub(gd.set(t.x,t.y,t.z)).length()*.1;s.scale.set(c,c,c),s.material.depthTest=a,s.material.wireframe=o,Cd(s.material,r),this.DrawLine(t,n,r,i,a)}static DrawWireMesh(e){let t=Td.getMesh(e.duration??0);`mesh`in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,Cd(t.material,e.color??yd)}},xd=new Xe(1,1,1);function Sd(e=null){let t=new a(e??14540253);return new f(new ye(xd),new ee({color:t}))}function Cd(e,t){if(Array.isArray(e)){for(let n of e)Cd(n,t);return}let n=t instanceof md?t.a:1;e.color.set(t),e.opacity=n,e.transparent=n<1}var wd=Symbol(`GizmoCache`),Td=class{static familyName=`needle-gizmos`;static ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{D.update()}))}static getTextLabel(e,t,n,r,i){this.ensureFont();let a=this.textLabelCache.pop(),o=1;i&&typeof i==`string`&&i?.length>=8&&i.startsWith(`#`)?(o=parseInt(i.substring(7),16)/255,i=i.substring(0,7),vd&&console.log(i,o)):typeof i==`object`&&i.a!==void 0&&(o=i.a);let s={boxSizing:`border-box`,fontFamily:this.familyName,width:`auto`,fontSize:n,color:r,lineHeight:1,backgroundColor:i??void 0,backgroundOpacity:o,textContent:t,borderRadius:.5*n,padding:.8*n,whiteSpace:`pre`,offset:.05*n};if(a)a.set(s);else{a=new Qe(s);let e=this,t=a;t.setText=function(t){this.set({textContent:t}),e.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(B.Current,a,e,this.textLabelCache),a}static getBox(e){let t=this.boxesCache.pop();return t||=new x(new Xe(1,1,1)),this.registerTimedObject(B.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new Ee;let e=t.geometry.getAttribute(`position`);e||(e=new Je(new Float32Array(6),3),t.geometry.setAttribute(`position`,e))}return t.frustumCulled=!1,this.registerTimedObject(B.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new Ee;let e=t.geometry.getAttribute(`position`);if(!e){e=new Je(new Float32Array(bd*3),3),t.geometry.setAttribute(`position`,e);let n=P(0,1,0),r=P(0,0,1),i=P(r);i.cross(n).normalize();let a=P(i),o=Math.PI*2/(bd-1);for(let t=0;t{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,t),e.pre_render_callbacks.push(t)}else if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==i){let t=e.pre_render_callbacks.indexOf(i);t>=0&&e.pre_render_callbacks.splice(t,1),e.pre_render_callbacks.push(i)}if(!a){let t=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,t),e.post_render_callbacks.push(t)}else if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==a){let t=e.post_render_callbacks.indexOf(a);t>=0&&e.post_render_callbacks.splice(t,1),e.post_render_callbacks.push(a)}t.traverse(e=>{e.layers.disableAll(),e.layers.enable(2)}),t.renderOrder=999999,t[wd]=r,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(B.Current.time.realtimeSinceStartup+n),e.scene.add(t)}static timedObjectsBuffer=[];static timesBuffer=[];static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,D.update());for(let n=0;n=0;e--){let i=t[e];r>=n[e]-1e-6&&(t.splice(e,1),n.splice(e,1),i.removeFromParent(),Nf(i)!=1&&i[wd].push(i))}}},Ed=A(`debugphysics`),Dd=A(`debugworker`),Od=new s,kd=class{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new w),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){Od.set(e),this.layerMask=Od}setMask(e){this.layerMask||=new s;let t=this.layerMask;t?t.mask=e:this.layerMask=e}},Ad=class{distance;point;object;constructor(e,t,n){this.object=e,this.distance=t,this.point=n}},jd=class e{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,n=1/0,r=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:n,solid:r})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,n=1/0,r=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:n,solid:r})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new _;defaultRaycastOptions=new kd;targetBuffer=[,];defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=[];sphereMask=new s;sphere=new Oe;sphereOverlap(e,t,n=!0,r=!1,i=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;let a=this.sphereMask;a.enableAll(),a.disable(2);for(let o of this.context.scene.children)this.intersectSphere(o,e,t,a,this.sphereResults,n,r,i);return this.sphereResults.sort((e,t)=>e.distance-t.distance)}raycastFromRay(e,t=null){let n=t??this.defaultRaycastOptions;n.ray=e;let r=this.raycast(n);return n===this.defaultRaycastOptions&&(n.ray=void 0),r}raycast(t=null){Ed&&performance.mark(`raycast.start`),t||=this.defaultRaycastOptions;let n=t.screenPoint??this.context.input.mousePositionRC,r=t.raycaster??this.raycaster;if(r.near=t.minDistance??0,r.far=t.maxDistance??1/0,r.params=this.defaultThresholds,t.lineThreshold===void 0&&(t.lineThreshold=-1),r.params.Line={threshold:t.lineThreshold},t.ray)r.ray.copy(t.ray);else{let e=t.cam??this.context.mainCamera;if(!e)return Ed&&console.error(`Can not perform raycast - no main camera found`),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];let i=this.context.xrCamera;this.context.isInXR&&i instanceof Me&&i.cameras.length>0?r.setFromCamera(n,i.cameras[0]):r.setFromCamera(n,e)}let i=t.targets;i||(i=this.targetBuffer,i.length=1,i[0]=this.context.scene);let a=t.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),a||=(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=[]),this.defaultRaycastOptions.results),t.layerMask===void 0?(r.layers.enableAll(),r.layers.disable(2)):t.layerMask instanceof s?r.layers.mask=t.layerMask.mask:r.layers.mask=t.layerMask,Ed&&console.time(`raycast`),a.length=0,e._raycasting++,this.intersect(this.raycaster,i,a,t),a.sort((e,t)=>e.distance-t.distance);let o=t.ignore;return o!==void 0&&o.length>0&&(a=a.filter(e=>!o.includes(e.object))),e._raycasting--,Ed&&(console.timeEnd(`raycast`),console.warn(`#`+this.context.time.frame+`, hits:`,a?.length?[...a]:`nothing`),performance.mark(`raycast.end`),performance.measure(`raycast`,`raycast.start`,`raycast.end`)),a}intersect(e,t,n,r){for(let i of t){if(!i||i.visible===!1||H.isGizmo(i)||r.lineThreshold!==void 0&&r.lineThreshold<0&&i instanceof Ee)continue;let t=!0,a=i,o=a.geometry;if(i.raycastAllowed===!1&&(t=!1),t&&r.testObject){let e=r.testObject?.(i);if(e===!1)continue;e===`continue in children`&&(t=!1)}else t&&(o&&Md(o)||(t=!1));if(t){let t=n.length,s=i.raycastPreference||`lod`,c=s!==`bounds`;if(r.precise===!1&&(c=!1),o&&(c||=o.getAttribute(`position`)?.array?.length<64),a instanceof ct&&(c=!1),s===`lod`){let e=bt(i);e&&(a.geometry=e)}if(!c&&Id(a,e,n)||(r.useAcceleratedRaycast===!1?e.intersectObject(a,!1,n):Ld.runMeshBVHRaycast(e,a,n,this.context,r)),a.geometry=o,Ed&&n.length!=t){let e=n[n.length-1];H.DrawWireSphere(e.point,.1,7798784,1,!1),H.DrawWireMesh({mesh:i,depthTest:!1,duration:.2,color:7798784})}}r.recursive!==!1&&this.intersect(e,i.children,n,r)}return n}tempBoundingBox=new fe;intersectSphere(e,t,n,r,i,a,o,s){let c=e&&e.isMesh&&e.layers.test(r)&&!H.isGizmo(e);c&&=e.visible,c&&=!(e instanceof Ee),c&&=!(e instanceof ct);let l=e,u=l.geometry;if(c&&s){let t=s(e);if(t===!1)return;t===`continue in children`&&(c=!1)}if(u&&Md(u)||(c=!1),c){if(o){let e=this.sphere;e.center.copy(t),e.radius=n;let r=i.length;if(Ld.runMeshBVHRaycast(this.sphere,l,i,this.context,{}),r!=i.length&&!a)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){l.matrixWorldNeedsUpdate&&l.updateWorldMatrix(!1,!1);let r=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(l.matrixWorld),o=this.sphere;if(o.center.copy(t),o.radius=n,o.intersectsBox(r)){let t=Or(e),n=new Ad(e,t.distanceTo(o.center),t);if(i.push(n),!a)return}}}if(e.children)for(let c of e.children){let e=i.length;if(this.intersectSphere(c,t,n,r,i,a,o,s),e!=i.length&&!a)return}}};function Md(e){return!(e.index&&e.index.array.length<3)}var Nd=new Oe,Pd=new pe,Fd=new le;function Id(e,t,n){let r=e._computeIntersections;if(!r)return!1;let i=e[`_computeIntersections:Needle`];return i||=e[`_computeIntersections:Needle`]=function(e,t,n){let r=this,i=r.geometry.boundingSphere;if(i){if(r instanceof ct){Pd.setFromNormalAndCoplanarPoint(P(0,1,0),P(0,-r.position.y,0)),Pd.applyMatrix4(r.matrixWorld,Fd);let n=e.ray.intersectPlane(Pd,P());if(n){Nd.copy(i),Nd.applyMatrix4(r.matrixWorld);let a=P(n).sub(e.ray.origin).length();aNd.radius){let e=i.clone().normalize();t.push({distance:a,point:n,object:r,normal:e})}}}},e._computeIntersections=i,t.intersectObject(e,!1,n),e._computeIntersections=r,!0}var Ld;(function(e){let t=0;function n(e,n,r,i,y){if(!n.geometry||!n.geometry.hasAttribute(`position`))return!1;let b=n.geometry;if(n?.isSkinnedMesh){let e=n,t=e.bvhNeedsUpdate;if(!e.staticGenerator)l(),s&&(e.staticGenerator=new s(n),e.staticGenerator.applyWorldTransforms=!1,e.staticGeometry=e.staticGenerator.generate(),b.boundsTree=c?.call(e.staticGeometry),e.staticGeometryLastUpdate=performance.now()+Math.random()*200,e.bvhNeedsUpdate=!0);else if(b.boundsTree&&(e.autoUpdateMeshBvhInterval!==void 0&&e.autoUpdateMeshBvhInterval>=0||t===!0)){let r=performance.now(),i=r-e.staticGeometryLastUpdate,a=e.autoUpdateMeshBvhInterval??100;(t||i>a)&&(Ed&&console.warn(`Physics: updating skinned mesh bvh for ${n.name} after ${i.toFixed(2)}ms`),e.bvhNeedsUpdate=!1,e.staticGeometryLastUpdate=r,e.staticGenerator?.generate(e.staticGeometry),b.boundsTree.refit())}}else if(!b.boundsTree){d||ee();let e=!0;if((i.xr||b[h]===!1||b.getAttribute(`position`)?.isInterleavedBufferAttribute||b.index&&b.index?.isInterleavedBufferAttribute||t>10)&&(e=!1),e&&p){if(b[m]===void 0){let e=null;if(v.length>0){let t=v.shift();t&&!t.running&&(e=t)}if(!e&&g.length<3)try{Dd&&console.warn(`[GenerateMeshBVHWorker] Creating worker with import.meta.url:`,import.meta.url),e=new p,g.push(e)}catch(e){e instanceof DOMException&&e.name===`SecurityError`?(console.warn(`Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons.`),console.debug(e),t+=10):(console.error(`Failed to create MeshBVH worker. Please see below for more details:`),console.log(e)),t++}if(e!=null&&!e.running){let t=n.name;Ed&&console.log(`<<<< worker start`,t,e),b[m]=`queued`,performance.mark(`bvh.create.start`);let r=b.clone();try{e.generate(r).then(e=>{b[m]=`done`,b.boundsTree=e}).catch(e=>{b[m]=`failed - `+e?.message,b[h]=!1,Ed&&console.error(`Failed to generate mesh bvh on worker`,e)}).finally(()=>{Ed&&console.log(`>>>>> worker done`,t,{hasBoundsTre:b.boundsTree!=null}),v.push(e),r.dispose(),performance.mark(`bvh.create.end`),performance.measure(`bvh.create (worker)`,`bvh.create.start`,`bvh.create.end`)})}catch(e){console.error(`Failed to generate mesh bvh on worker`,e)}}else Ed&&console.warn(`No worker available`)}}else (!f||!e)&&(l(),o&&(performance.mark(`bvh.create.start`),b.boundsTree=new o(b),performance.mark(`bvh.create.end`),performance.measure(`bvh.create`,`bvh.create.start`,`bvh.create.end`)))}if(e instanceof _){let t=e,i=n.raycast;if(b.boundsTree)l(),a&&(n.acceleratedRaycast||(n.acceleratedRaycast=a.bind(n),Ed&&console.debug(`Physics: bind acceleratedRaycast fn to \"${n.name}\"`)),n.raycast=n.acceleratedRaycast);else if(Ed&&console.warn(`No bounds tree found for mesh`,n.name,{workerTask:b[m],hasAcceleratedRaycast:a!=null}),y.allowSlowRaycastFallback===!1&&(b.getAttribute(`position`)?.array?.length??0)>2e3)return Ed&&console.warn(`Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false`),!1;let o=t.firstHitOnly;return t.firstHitOnly=!1,t.intersectObject(n,!1,r),t.firstHitOnly=o,n.raycast=i,!0}else if(e instanceof Oe){let t=b.boundsTree;if(t){let i=e;if(u.copy(n.matrixWorld).invert(),i.applyMatrix4(u),t.intersectsSphere(i)){let e=Or(n),t=new Ad(n,e.distanceTo(i.center),e);r.push(t)}}return!0}return!1}e.runMeshBVHRaycast=n;let i=!1,a=null,o=null,s=null,c=null;function l(){i||(i=!0,r(()=>import(`./needle-engine.dep.B3nA4wQ5.js`).then(e=>{a=e.acceleratedRaycast,o=e.MeshBVH,s=e.StaticGeometryGenerator,c=e.computeBoundsTree}),__vite__mapDeps([12,13,3,2]),import.meta.url).catch(e=>{(Ed||M())&&console.error(`Failed to load BVH library...`,e.message)}))}let u=new ce,d=!1,f=!1,p=null,m=Symbol(`Needle:MeshBVH-Worker`),h=Symbol(`Needle:MeshBVH-CanUseWorker`),g=[],v=[];function ee(){d=!0,f=!0,r(()=>import(`./GenerateMeshBVHWorker.DMD7ZOpN.js`).then(e=>{p=e.GenerateMeshBVHWorker}),__vite__mapDeps([14,15,2,16,1,3,17,18,19,20,21,22,6,13]),import.meta.url).catch(e=>{Ed||M()?console.warn(`Failed to setup mesh bvh worker`):console.debug(`Failed to setup mesh bvh worker`,e)}).finally(()=>{f=!1})}})(Ld||={});var Rd=Symbol(`gltf-loader-internal-usage-tracker`),zd=A(`debugusers`),Bd=class e{get name(){return`NEEDLE_internal_usage_tracker`}static isLoading(t){return e._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){e._loadingProcesses++;let t=this,n=this._getDependency;return this.parser.getDependency=function(e,r){let i=n.call(this,e,r);return i.then(e=>(e&&(t._loadedObjects.add(e),e[Rd]=t._loadingId),e)),i},null}afterRoot(t){e._loadingProcesses--,this.parser.getDependency=this._getDependency;for(let e of this._loadedObjects)delete e[Rd],e instanceof S&&(e.parent||e instanceof x&&setTimeout(()=>{zd&&console.warn(`> GLTF LOADER: Mesh not used in scene!`,e),e.material=null,e.geometry=null},1e3));return null}},Vd=class{constructor(){window.addEventListener(`unhandledrejection`,e=>{if(e.defaultPrevented)return;let t=e?.reason?.path;if(t){let n=t[0];n&&n.tagName===`IMG`&&(console.warn(`Could not load image: +`+n.src),e.preventDefault())}})}},Hd=A(`trackresources`);function Ud(){return Hd===`dispose`}var Wd=!0;Hd===0&&(Wd=!1);function Gd(e){Wd=e}function Kd(){return Wd}var qd=Symbol(`disposable`);function Jd(e,t){e&&(e[qd]=t,nf&&console.warn(`Set disposable`,t,e))}var Yd=Symbol(`disposed`);function Xd(e){return e[Yd]===!0}function U(e){if(e){if(e[qd]===!1){nf&&console.warn(`Object is marked as not disposable`,e);return}if(typeof e==`object`&&(e[Yd]=!0),e instanceof ne)U(e.environment),U(e.background),U(e.customDepthMaterial),U(e.customDistanceMaterial);else if(e instanceof ze)U(e.geometry),U(e.material),U(e.skeleton),U(e.bindMatrix),U(e.bindMatrixInverse),U(e.customDepthMaterial),U(e.customDistanceMaterial),e.visible=!1;else if(e instanceof x)U(e.geometry),U(e.material),U(e.customDepthMaterial),U(e.customDistanceMaterial),e.visible=!1;else if(e instanceof S)e.visible=!1;else if(e instanceof ie){Zd(e);for(let t of Object.keys(e.attributes)){let n=e.attributes[t];U(n)}}else if(e instanceof Je||e instanceof ae)nf&&console.warn(`BufferAttribute dispose not supported`,e.count);else if(e instanceof Array)for(let t of e)t instanceof T&&U(t);else if(e instanceof T){Zd(e);for(let t of Object.keys(e)){let n=e[t];n instanceof be&&U(n)}let t=e.uniforms;if(t)for(let e of Object.keys(t)){let n=t[e];n instanceof be?U(n):n instanceof Ye&&U(n.value)}}else e instanceof be?(Zd(e),Zd(e.source),e.source?.data instanceof ImageBitmap&&Zd(e.source.data)):e instanceof Pe?(Zd(e.boneTexture),e.boneTexture=null):e instanceof xe||!(e instanceof S)&&nf&&console.warn(`Unknown object type`,e)}}function Zd(e){e&&((nf||Ud()||Hd)&&console.warn(`🧨 FREE`,e),e instanceof ImageBitmap||`dispose`in e&&typeof e.dispose==`function`&&e.dispose())}function Qd(e){e instanceof x||e instanceof ze}var $d=new Set;function ef(e,t,n=null,r){if(r||(r=$d,r.clear()),!e)return r;let i=e[rf];if(i)for(let e of i)r.has(e)||n?.call(null,e)!==!1&&(r.add(e),t&&ef(e,!0,n,r));return r}function tf(e){return e[af]}var nf=A(`debugresourceusers`)||A(`debugmemory`),rf=Symbol(`needle-resource-users`),af=Symbol(`needle-resource-users-count`);function of(e,t){Zi(e,t,function(e,t){Wd&&!jd.raycasting&&(lf(rf,this,e,!1),lf(rf,this,t,!0))})}Wd&&(of(x.prototype,`material`),of(x.prototype,`geometry`),of(T.prototype,`map`),of(T.prototype,`bumpMap`),of(T.prototype,`alphaMap`),of(T.prototype,`normalMap`),of(T.prototype,`displacementMap`),of(T.prototype,`roughnessMap`),of(T.prototype,`metalnessMap`),of(T.prototype,`emissiveMap`),of(T.prototype,`specularMap`),of(T.prototype,`envMap`),of(T.prototype,`lightMap`),of(T.prototype,`aoMap`),of(T.prototype,`gradientMap`));function sf(e){if(Wd===!1)return;let t=e[rf];if(t)for(let n of t)lf(rf,n,e,!1)}Wd&&Zi(T.prototype,`dispose`,function(){sf(this)});var cf=0;function lf(e,t,n,r){if(cf>0)return;if(Array.isArray(n)){for(let i of n)lf(e,t,i,r);return}if(!n)return;let i=n[e];if(i||=new Set,r){if(t&&!i.has(t)){i.add(t);let e=n[af]||0;e+=1,n[af]=e,nf&&console.warn(`🟢 Added user of "${n.type}"`,t,n,e,`users:`,i)}}else if(t&&i.has(t)){i.delete(t);let e=n[af]||0;e>0&&(--e,n[af]=e),nf&&console.warn(`🔴 Removed user of "${n.type}"`,t,n,e,`users:`,i),e<=0&&(Bd.isLoading(n)||(Hd&&console.warn(`🔴 Removed all user of "${n.type}"`,n),Ud()&&U(n)))}n[e]=i}try{Zi(h.prototype,`render`,function(){cf++},function(){cf--})}catch(e){console.warn(`Could not wrap WebGLRenderer.render`,e)}var uf=Symbol(`NEEDLE_NEED_UPDATE_INSTANCE`),df=Symbol(`isUsingInstancing`),ff=Symbol(`instancingRenderer`),pf=Symbol(`instancingAutoUpdateBounds`),mf=class e{static isUsingInstancing(e){return e[df]===!0}static getRenderer(e){return e[ff]||null}setAutoUpdateBounds(t,n){let r=e.getRenderer(t);r&&(r[pf]=n)}static markDirty(t,n=!0){if(t&&(this.isUsingInstancing(t)&&(t[uf]=!0,t.matrixWorldNeedsUpdate=!0),n))for(let n of t.children)e.markDirty(n,!0)}},hf=new Map;function gf(e,t){if(!e)return;if(!t){console.warn(`No prototype found`,e,e.prototype,e.constructor);return}let n=hf.get(t);n&&n.apply(e)}function _f(e){let t=vf(e.prototype);hf.set(e,t)}function vf(e){return new yf(e)}var yf=class{$symbol;extensions;descriptors;constructor(e){this.$symbol=Symbol(`prototype-extension`),this.extensions=Object.keys(e),this.descriptors=[];for(let t=0;t.5),e.visible=t,e.visible}function Of(e){return e.needle_isActiveInHierarchy||Af(e)}function kf(e,t){e[df]=t}function Af(e){return mf.isUsingInstancing(e)}function jf(e,t){return Wt(e,t,!0,!0)}var Mf=Symbol(`isDestroyed`);function Nf(e){return e[Mf]}function Pf(e,t){e[Mf]=t}var Ff=Symbol(`isDontDestroy`);function If(e,t=!0){e[Ff]=t}var Lf=[],Rf=[];function zf(e,t=!0,n=!1){Lf.length=0,Rf.length=0,Bf(e,t,!0);for(let e of Lf)e.gameObject=null,e.context=null;for(let e of Rf)Pf(e,!0),n&&(U(e),Qd(e));Rf.length=0,Lf.length=0}function Bf(e,t=!0,n=!0){if(e==null)return;let r=e;if(r.isComponent){if(r[Ff])return;Lf.push(r);let e=r.gameObject;r.__internalDisable(),r.__internalDestroy(),r.gameObject=e;return}if(e[Ff])return;let i=e;Cf&&console.log(i),Rf.push(i);let a=i.userData?.components;if(a!=null&&Array.isArray(a)){let e=a.length;for(let n=0;nr)){for(let n of e.userData.components)t&&n?.isComponent===!0&&n instanceof t,yield n;if(n===!0)for(let n of e.children)yield*Hf(n,t,!0,r,i+1)}}function Uf(e,t,n,r=0){if(e){if(e.isObject3D||``+e,r>1e3){console.warn(`Failed to iterate components: too many levels`);return}if(e.userData?.components)for(let n=0;n0&&(l.animations=[...t.animations]);let u=t.parent;if(u&&u.add(l),n?.position)if(Array.isArray(n.position)){let e=new o;e.fromArray(n.position),l.worldPosition=e}else l.worldPosition=n.position;else l.position.copy(t.position);if(n?.rotation){if(n.rotation instanceof E)l.worldQuaternion=n.rotation;else if(n.rotation instanceof He)l.worldQuaternion=Tr().setFromEuler(n.rotation);else if(Array.isArray(n.rotation)){let e=new He;e.fromArray(n.rotation),l.worldQuaternion=Tr().setFromEuler(e)}}else l.quaternion.copy(t.quaternion);if(n?.scale)if(Array.isArray(n.scale)){let e=new o;e.fromArray(n.scale),n.scale=e}else l.scale.copy(n.scale);else l.scale.copy(t.scale);if(n?.parent&&n.parent!==`scene`){let r=null;if(r=typeof n.parent==`string`?Wt(n.parent,e.scene,!0):n.parent,r){let e=n.keepWorldPosition===!0?r.attach:r.add;e?e.call(r,l):console.error(`Invalid parent object`,r,`received when instantiating:`,t)}else console.warn(`could not find parent:`,n.parent)}for(let[e,n]of Object.entries(t.userData))e!==`components`&&(l.userData[e]=n);if(t.userData?.components){let e=t.userData.components,n=[];l.userData.components=n;for(let t=0;t`,s),i.push(s))}}else if(typeof n==`object`){let i=Yf(r,e,n,t);i===void 0?wf&&console.warn(`Could not find new instance for`,e,n):r[e]=i}}}}function Yf(e,t,n,r){if(n!=null){if(n.isComponent===!0){let i=n.gameObject;if(i){let a=i.uuid,o=r[a]?.clone;if(!o){wf&&console.log(`reference did not change`,t,e,n);return}let s=i.userData.components.indexOf(n);if(s>=0&&o.isObject3D)return wf&&console.log(t,a),o.userData.components[s];console.warn(`could not find component`,t,n)}}else if(n.isObject3D===!0){if(t===`gameObject`)return;let e=n;if(e){let i=r[e.uuid]?.clone;if(i)return wf&&console.log(t,`old`,n,`new`,i),i}}else if(n.isVector4||n.isVector3||n.isVector2||n.isQuaternion||n.isEuler)return n.clone();else if(n.isColor===!0)return n.clone();else if(n.isEventList===!0)return n.__internalOnInstantiate(r)}}function Xf(e,t){try{t?e(t):e()}catch(e){return console.error(e),!1}return!0}var Zf=A(`debugnewscripts`),Qf=A(`debughierarchy`),W=[];function $f(){return W.length>0}function ep(e){if(Zf&&console.log(`Register new components`,e.new_scripts.length,[...e.new_scripts],e.alias?`element: `+e.alias:e.hash,e),e.new_scripts_pre_setup_callbacks.length>0){for(let t of e.new_scripts_pre_setup_callbacks)t&&t();e.new_scripts_pre_setup_callbacks.length=0}if(!(e.new_scripts.length<=0)){W.length=0,e.new_scripts.length>0&&W.push(...e.new_scripts),e.new_scripts.length=0;for(let t=0;t=0&&t.splice(n,1)}function op(e,t){if(e){let n=e;if(n.onBeforeXR||n.onEnterXR||n.onUpdateXR||n.onLeaveXR||n.onXRControllerAdded||n.onXRControllerRemoved)return!(t!=null&&n.supportsXR?.(t)===!1)}return!1}var sp=!0;function cp(){sp=!0}function lp(e,t=!1){if(Ji.experimentalSmartHierarchyUpdate){if(!t&&!sp)return;sp=!1}if(e||=k.Current.scene,!e){console.trace(`Invalid call - no current context.`);return}let n=Ef(e);up(e,n,!0)||(Zf||M()?console.error(`Error updating hierarchy +Do you have circular references in your project? Click here for more information.`,e):console.error(`Failed to update active state in hierarchy of "`+e.name+`"`,e),console.warn(` ↑ this error might be caused by circular references. Please make sure you don't have files with circular references (e.g. one GLB 1 is loading GLB 2 which is then loading GLB 1 again).`))}function up(e,t,n,r=0){if(r>1e3)return console.warn(`Hierarchy is too deep (> 1000 level) - will abort updating active state`),!1;let i=Ef(e);if(t&&(t=i,t&&e.parent&&r===0)){let n=e.parent;t=n[Wi],t===void 0&&(n instanceof ne||(t=!0))}let a=e[Wi]!==t;if(a&&(e[Wi]=t,Qf&&console.warn(`ACTIVE CHANGE`,{name:e.name,activeSelf:i,visible:e.visible,activeInHierarchy:t,changed:a,go:e}),n)){let n=e.userData?.components;if(n)for(let e=n.length-1,r=-1;e>-1;e--){let r=n[e];if(t){if(r?.enabled){try{r.__internalAwake()}catch(e){console.error(e)}r.enabled&&r.__internalEnable()}}else r&&r.__didAwake&&r.enabled&&(r.__didEnable=!1,r.onDisable())}}let o=e.children;if(o){if(!a&&!t){let e=!0;for(let t=0,i=o.length;tbp||globalThis.NEEDLE_DEBUG_GETCOMPONENT===!0;function Sp(e){return e==null||e.isObject3D?e:e.object&&e.object.isObject3D?e.object:e}function Cp(e,t){if(!e||!e.userData.components)return t;let n=e.userData.components.indexOf(t);return n<0?t:(Ri.dispatchComponentLifecycleEvent(`removing-component`,t),t.gameObject=null,e.userData.components.splice(n,1),t)}function wp(e,t,n){return Mp(e,t)||Op(e,t,n)}var Tp;function Ep(){return Tp??=new jo(`addComponentIdProvider`)}function Dp(e,t,n=!0){e.userData||={},e.userData.components||(e.userData.components=[]),e.userData.components.push(t),t.gameObject=e,(t.guid===void 0||t.guid===`invalid`)&&(t.guid=Ep().generateUUID()),bf(e),Eu(t,t.context);try{n&&t.__internalAwake&&(dp(e),t.activeAndEnabled&&t.__internalAwake()),Ri.dispatchComponentLifecycleEvent(`component-added`,t)}catch(e){console.error(e)}return t}function Op(e,t,n,r){if(typeof t==`function`){let i=new t;n&&i.__internalNewInstanceCreated(n);let a=!0;return r?.callAwake!=null&&(a=r.callAwake),Dp(e,i,a)}if(t.destroyed)return console.warn(`Can not move/add a destroyed component`,t),t;if(t.gameObject===e)return t;if(t.gameObject&&t.gameObject.userData?.components){let e=t.gameObject.userData.components.indexOf(t);t.gameObject.userData.components.splice(e,1)}if(e.userData||={},!e.userData.components)e.userData.components=[];else if(e.userData.components.includes(t))return t;return e.userData.components.push(t),t.gameObject=e,(t.guid===void 0||t.guid===`invalid`)&&(t.guid=Ep().generateUUID()),n&&t._internalInit(n),Eu(t,t.context),t}function kp(e){if(e.gameObject&&e.gameObject.userData.components){let t=e.gameObject.userData.components.indexOf(e);e.gameObject.userData.components.splice(t,1)}e.__internalDisable&&e.__internalDisable(),ip(e,e.context??B.Current),e.destroy(),e.gameObject=null}var Ap=!1;function jp(e,t,n){if(e==null)return null;if(!e.isObject3D)return console.error(`Object is not object3D`),null;if(!e?.userData?.components||(typeof t==`string`&&(Ap||(Ap=!0,console.warn(`Accessing components by name is not supported. +Please use the component type instead. This may keep working in local development but it will fail when bundling your application. + +You can import other modules your main module to get access to types +or if you use npmdefs you can make types available globally using globalThis: +https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),xp()&&console.log(`[onGetComponent] FIND`,t),t==null))return null;for(let r=0;r{if(t.length){let e=t[0];if(typeof e==`string`&&e.includes(`[hmr] Failed to reload `)){console.log(`[Needle Engine] Hot reloading failed`),window.location.reload();return}}e.apply(console,t)}}function Yp(e){Bp&&console.log(`[HMR] Apply changes`,e,Object.keys(e)),Jp();for(let t of Object.keys(e))try{Vp=!0;let n=ji.get(t);if(!n){Bp&&console.log(`[HMR] Type not found: `+t);continue}let r=e[t],i=Hp.get(r.name),a=`[Needle Engine] Updating type: `+t,o=i?.length??-1;o>0?a+=` x`+o:a+=` (No instances registered)`,console.log(a);let s=Object.getOwnPropertyNames(n.prototype),c=Object.getOwnPropertyDescriptors(r.prototype);for(let r in c)c[r].writable&&(n.prototype[r]=e[t].prototype[r]);for(let e of s)c[e]||delete n.prototype[e];if(i){let e=new r,t=Object.getOwnPropertyDescriptors(e);for(let n of i){let i=n,a=i.isComponent===!0,o=a?i.activeAndEnabled:!0,s=a?i.context:void 0;try{if(a&&s&&ip(i,s),a&&o&&(i.enabled=!1),n.onBeforeHotReloadFields&&n.onBeforeHotReloadFields()===!1)continue;for(let i in t)if(t[i].writable){if(n[i]===void 0)n[i]=e[i];else if(typeof n[i]==`function`&&!n[i].prototype){let e=n[i];if(e.name===`bound `)continue;let t=e.name.substring(6),a=r.prototype[t];a&&(n[i]=a.bind(n))}}n.onAfterHotReloadFields&&n.onAfterHotReloadFields()}finally{a&&s&&rp(i,s),a&&o&&(i.enabled=!0)}}}}catch(e){if(Bp)console.error(e);else return!1}finally{Vp=!1,zn(Tn.Log,`Script changes applied (HMR)`)}return!0}var Xp=e({Behaviour:()=>K,Component:()=>K,GameObject:()=>G}),G=class e extends S{guid;static isDestroyed(e){return Nf(e)}static setActive(e,t,n=!0){e&&(Df(e,t),lp(e),t&&n&&np(B.Current,e))}static isActiveSelf(e){return Ef(e)}static isActiveInHierarchy(e){return Of(e)}static markAsInstancedRendered(e,t){kf(e,t)}static isUsingInstancing(e){return Af(e)}static foreachComponent(e,t,n=!0){return Vf(e,t,n)}static instantiateSynced(e,t){return e?zo(e,t):null}static instantiate(e,t=null){return`isAssetReference`in e,Wf(e,t)}static destroySynced(e,t,n=!0){if(!e)return;let r=e;t??=B.Current,Po(r,t.connection,n)}static destroy(e,t=!0){return zf(e,t)}static add(t,n,r){if(!(!t||!n)){if(t===n){console.warn(`Can not add object to self`,t);return}r||=B.Current,n.add(t),Df(t,!0),lp(t),r?e.foreachComponent(t,e=>{rp(e,r),!e.__internalDidAwakeAndStart&&r.new_script_start.includes(e)===!1&&r.new_script_start.push(e)},!0):console.warn(`Missing context`)}}static remove(t){t&&(t.parent?.remove(t),Df(t,!1),lp(t),e.foreachComponent(t,e=>{tp(e)},!0))}static invokeOnChildren(e,t,...n){this.invoke(e,t,!0,n)}static invoke(e,t,n=!1,...r){e&&this.foreachComponent(e,e=>{let n=e[t];n&&typeof n==`function`&&n?.call(e,...r)},n)}static addNewComponent(e,t,n,r=!0){return Op(e,t,n,{callAwake:r})}static addComponent(e,t,n,r){return Op(e,t,n,r)}static moveComponent(e,t){return Op(e,t)}static removeComponent(e){return Cp(e.gameObject,e),e}static getOrAddComponent(e,t){return wp(e,t)}static getComponent(e,t){return e===null?null:Mp(e,t)}static getComponents(e,t,n=null){return e===null?n??[]:Np(e,t,n)}static findByGuid(e,t){return jf(e,t)}static findObjectOfType(e,t,n=!0){return Rp(e,t??B.Current,n)}static findObjectsOfType(e,t){let n=[];return zp(e,n,t),n}static getComponentInChildren(e,t,n=!1){return Pp(e,t,n)}static getComponentsInChildren(e,t,n=null){return Fp(e,t,n??void 0)}static getComponentInParent(e,t){return Ip(e,t)}static getComponentsInParent(e,t,n=null){return Lp(e,t,n)}static getAllComponents(e){let t=e.userData?.components;return t?[...t]:[]}static*iterateComponents(e){let t=e?.userData?.components;if(t&&Array.isArray(t))for(let e=0;e=.5),!this.__didAwake){this.__isEnabled=e;return}e?this.__internalEnable():this.__internalDisable()}get worldPosition(){return Or(this.gameObject)}set worldPosition(e){kr(this.gameObject,e)}setWorldPosition(e,t,n){Ar(this.gameObject,e,t,n)}get worldQuaternion(){return Pr(this.gameObject)}set worldQuaternion(e){Fr(this.gameObject,e)}setWorldQuaternion(e,t,n,r){Ir(this.gameObject,e,t,n,r)}get worldEuler(){return Xr(this.gameObject)}set worldEuler(e){Zr(this.gameObject,e)}get worldRotation(){return this.gameObject.worldRotation}set worldRotation(e){this.setWorldRotation(e.x,e.y,e.z,!0)}setWorldRotation(e,t,n,r=!0){ei(this.gameObject,e,t,n,r)}static _forward=new o;get forward(){return e._forward.set(0,0,-1).applyQuaternion(this.worldQuaternion)}static _right=new o;get right(){return e._right.set(1,0,0).applyQuaternion(this.worldQuaternion)}static _up=new o;get up(){return e._up.set(0,1,0).applyQuaternion(this.worldQuaternion)}_eventListeners=new Map;addEventListener(e,t){this._eventListeners[e]=this._eventListeners[e]||[],this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let n=this._eventListeners[e].indexOf(t);n>=0&&this._eventListeners[e].splice(n,1)}dispatchEvent(e){if(!e||!this._eventListeners[e.type])return!1;let t=this._eventListeners[e.type];for(let n=0;n0}var em=class{_context;get context(){return this._context??B.Current}get isStateMachineBehaviour(){return!0}},tm=class{name;nameHash;normalizedTime;length;speed;action;hasTransitions;constructor(e,t,n,r){this.name=e.name,this.nameHash=e.hash,this.normalizedTime=t,this.length=n,this.speed=r,this.action=e.motion.action||null,this.hasTransitions=e.transitions?.length>0||!1}};function nm(e,t){return{name:`Empty`,isLooping:!1,guid:t?.generateUUID()??g.generateUUID(),index:-1,clip:new Se(e,0,[])}}var rm;(function(e){e[e.If=1]=`If`,e[e.IfNot=2]=`IfNot`,e[e.Greater=3]=`Greater`,e[e.Less=4]=`Less`,e[e.Equals=6]=`Equals`,e[e.NotEqual=7]=`NotEqual`})(rm||={});var im;(function(e){e[e.Float=1]=`Float`,e[e.Int=3]=`Int`,e[e.Bool=4]=`Bool`,e[e.Trigger=9]=`Trigger`})(im||={});var q=A(`debuganimatorcontroller`),am=A(`debugrootmotion`),om=class e{static createFromClips(t,n={looping:!1,autoTransition:!0,transitionDuration:0}){let r=[];for(let e=0;e=this.model.layers.length){console.warn(`invalid layer`);return}let i=this.model.layers[t].stateMachine;for(let t of i.states)if(t.name===e||t.hash===e){q&&console.log(`transition to `,t),this.transitionTo(t,r,n);return}console.warn(`Could not find `+e+` to play`)}reset(){this.setStartTransition()}setBool(e,t){let n=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(t=>t[n]===e).forEach(e=>e.value=t)}getBool(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??!1}setFloat(e,t){let n=typeof e==`string`?`name`:`hash`,r=this.model?.parameters?.filter(t=>t[n]===e);return r.forEach(e=>e.value=t),r?.length>0}getFloat(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??0}setInteger(e,t){let n=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(t=>t[n]===e).forEach(e=>e.value=t)}getInteger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??0}setTrigger(e){q&&console.log(`SET TRIGGER`,e);let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(n=>n[t]===e).forEach(e=>e.value=!0)}resetTrigger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(n=>n[t]===e).forEach(e=>e.value=!1)}getTrigger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??!1}isInTransition(){return this._activeStates.length>1}setSpeed(e){this._speed=e}_speed=1;FindState(e){return this.findState(e)}findState(e){if(!e)return null;if(Array.isArray(this.model.layers)){for(let t of this.model.layers)for(let n of t.stateMachine.states)if(n.name===e||n.hash==e)return n}return null}getCurrentStateInfo(){if(!this._activeState)return null;let e=this._activeState.motion.action;if(!e)return null;let t=this._activeState.motion.clip.duration,n=t<=0?0:Math.abs(e.time/t);return new tm(this._activeState,n,t,this._speed)}get currentAction(){return this._activeState&&this._activeState.motion.action||null}normalizedStartOffset=0;animator;model;get context(){return this.animator?.context}get mixer(){return this._mixer}dispose(){if(this._mixer.stopAllAction(),this.animator){this._mixer.uncacheRoot(this.animator.gameObject);for(let e of this._activeStates)e.motion.clip&&this.mixer.uncacheAction(e.motion.clip,this.animator.gameObject)}this.context?.animations.unregisterAnimationMixer(this._mixer)}bind(e){e?this.animator!==e&&(this._mixer&&(this._mixer.stopAllAction(),this.context?.animations.unregisterAnimationMixer(this._mixer)),this.animator=e,this._mixer=new he(this.animator.gameObject),this.context?.animations.registerAnimationMixer(this._mixer),this.createActions(this.animator)):console.error(`AnimatorController.bind: animator is null`)}clone(){if(typeof this.model==`string`)return console.warn(`AnimatorController has not been resolved, can not create model from string`,this.model),null;q&&console.warn(`AnimatorController clone()`,this.model);let t=Gt(this.model,(t,n,r)=>r==null?!0:!(r.type===`Object3D`||r.isObject3D===!0||ri(r)||r.tracks!==void 0||r instanceof e));return console.assert(t!==this.model),new e(t)}update(e){if(!this.animator)return;this.evaluateTransitions(),this.updateActiveStates(e);let t=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&this.rootMotionHandler?.onBeforeUpdate(e),this._mixer.update(t),this.animator.applyRootMotion&&this.rootMotionHandler?.onAfterUpdate(e)}_mixer;_activeState;get activeState(){return this._activeState}constructor(e){this.model=e,q&&console.log(this)}_activeStates=[];updateActiveStates(e){for(let t=0;t1&&(q||M())&&console.warn(`Multiple layers are not supported yet `+this.animator?.name);for(let e of this.model.layers){let t=e.stateMachine;t.defaultState===void 0&&(q&&console.warn(`AnimatorController default state is undefined, will assign state 0 as default`,e),t.defaultState=0);let n=t.states[t.defaultState];this.transitionTo(n,0,this.normalizedStartOffset);break}}evaluateTransitions(){let e=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;e=!0}let t=this._activeState,n=t.motion.action,r=0;for(let e of t.transitions){if(++r,!e.hasExitTime&&e.conditions.length<=0)continue;let i=!0;for(let t of e.conditions)if(!this.evaluateCondition(t)){i=!1;break}if(i)if(n){let r=t.motion.clip.duration,i=r<=0?1:Math.abs(n.time/r),a=e.exitTime;n.timeScale<0&&(a=1-a);let o=!1;if(e.hasExitTime?n.timeScale>0?o=i>=e.exitTime:n.timeScale<0&&(o=1-i>=e.exitTime):o=!0,o){for(let t of e.conditions){let e=this.model.parameters.find(e=>e.name===t.parameter);e?.type===im.Trigger&&e.value&&(e.value=!1)}if(n.clampWhenFinished=!0,q){let t=this.getState(e.destinationState,0);console.log(`Transition to ${e.destinationState} / ${t?.name}`,e,` +Timescale: `+n.timeScale,` +Normalized time: `+i.toFixed(3),` +Exit Time: `+a,e.hasExitTime)}this.transitionTo(e.destinationState,e.duration,e.offset);return}}else{this.transitionTo(e.destinationState,e.duration,e.offset);return}}n&&this.setTimescale(n,t);let i=!1;if(t.motion.isLooping&&n&&(n.time>=n.getClip().duration?(i=!0,n.reset(),n.time=0,n.play()):n.time<=0&&n.timeScale<0&&(i=!0,n.reset(),n.time=n.getClip().duration,n.play())),!i&&t&&!e&&n&&this.animator&&t.behaviours){let e=n?.getClip().duration,r=n.time/e,i=new tm(this._activeState,r,e,this._speed);for(let e of t.behaviours)e.instance&&e.instance.onStateUpdate?.call(e.instance,this.animator,i,0)}}setTimescale(e,t){let n=t.speed??1;t.speedParameter&&(n*=this.getFloat(t.speedParameter)),n!==void 0&&(e.timeScale=n*this._speed)}getState(e,t){return typeof e==`number`&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(q&&console.warn(`AnimatorController default state is undefined: `,this.model,`Layer: `+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}_heldActions=[];releaseHeldActions(e){for(let t of this._heldActions)t.fadeOut(e);this._heldActions.length=0}transitionTo(e,t,n){if(!this.animator||(e=this.getState(e,0),!e?.motion||!e.motion.clip||!(e.motion.clip instanceof Se)))return;let r=this._activeState===e;if(r){let t=e.motion;if(!t.action_loopback&&t.clip){let e=this.rootMotionHandler?this.animator.gameObject.matrix.clone():null;this._mixer.uncacheAction(t.clip,this.animator.gameObject),e&&e.decompose(this.animator.gameObject.position,this.animator.gameObject.quaternion,this.animator.gameObject.scale),t.action_loopback=this.createAction(t.clip)}}if(this._activeState?.behaviours&&this._activeState.motion.action){let e=this._activeState?.motion.clip.duration,t=this._activeState.motion.action.time/e,n=new tm(this._activeState,t,e,this._speed);for(let e of this._activeState.behaviours)e.instance?.onStateExit?.call(e.instance,this.animator,n,0)}let i=this._activeState?.motion.action;r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=i);let a=this._activeState;this._activeState=e;let o=e.motion?.action,s=e.motion.clip;if(s?.duration<=0&&s.tracks.length<=0?i&&this._heldActions.push(i):i&&(i.fadeOut(t),this.releaseHeldActions(t)),o){if(n=Math.max(0,Math.min(1,n)),e.cycleOffsetParameter){let t=this.getFloat(e.cycleOffsetParameter);typeof t==`number`?(t<0&&(t+=1),n+=t,n%=1):q&&console.warn(`AnimatorController cycle offset parameter is not a number`,e.cycleOffsetParameter)}else typeof e.cycleOffset==`number`&&(n+=e.cycleOffset,n%=1);o.isRunning()&&o.stop(),o.reset(),o.enabled=!0,this.setTimescale(o,e);let i=e.motion.clip.duration;if(o.time=r?0:n*i,o.timeScale<0&&(o.time=i-o.time),o.clampWhenFinished=!0,o.setLoop(oe,0),t>0?o.fadeIn(t):o.weight=1,o.play(),window.requestAnimationFrame(()=>Pi.testIfRootCanAnimate(o)),this.rootMotionHandler&&this.rootMotionHandler.onStart(o),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){let t=new tm(e,n,i,this._speed);for(let e of this._activeState.behaviours)e.instance?.onStateEnter?.call(e.instance,this.animator,t,0)}}else q&&(e.__warned_no_motion||(e.__warned_no_motion=!0,console.warn(`No action`,e.motion,this)));q&&console.log(`TRANSITION FROM `+a?.name+` TO `+e.name,t,i,o,o?.getEffectiveTimeScale(),o?.getEffectiveWeight(),o?.isRunning(),o?.isScheduled(),o?.paused)}createAction(e){if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,this.animator?.gameObject),this.animator?.applyRootMotion){this.rootMotionHandler||=new lm(this);let t=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,t,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){let t=this.model.parameters.find(t=>t.name===e.parameter);if(!t)return!1;switch(e.mode){case rm.If:return t.value===!0;case rm.IfNot:return t.value===!1;case rm.Greater:return t.value>e.threshold;case rm.Less:return t.valuee.node.name===this.animator?.gameObject?.name);e?n.motion.clip=e.clip:(q||M())&&console.warn(`Could not find clip for animator "`+this.animator?.gameObject?.name+`"`,n.motion.clips.map(e=>e.node.name))}if(!n.motion.clip){q&&console.warn(`No clip assigned to state`,n);let e=new Se(void 0,void 0,[]);n.motion.clip=e}if(n.motion?.clip){let e=n.motion.clip;if(e instanceof Se){let t=this.createAction(e);n.motion.action=t}else (q||M())&&console.warn(`No valid animationclip assigned`,n)}if(n.behaviours&&Array.isArray(n.behaviours))for(let e of n.behaviours){if(!e?.typeName)continue;let t=ji.get(e.typeName);if(t){let r=new t;r.isStateMachineBehaviour&&(r._context=this.context??void 0,Es(r,e.properties),e.instance=r),q&&console.log(`Created animator controller behaviour`,n.name,e.typeName,e.properties,r)}else (q||M())&&console.warn(`Could not find AnimatorBehaviour type: `+e.typeName)}}}}*enumerateActions(){if(this.model.layers)for(let e of this.model.layers){let t=e.stateMachine;for(let e=0;e(n.createInterpolant=r,this.createdInterpolant=r(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=e=>{if(this.originalEvaluate)return t(e,this.originalEvaluate(e))},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}},cm=class e{static lastObjPosition={};static lastObjRotation={};static firstKeyframeRotation={};static spaceRotation={};static effectiveSpaceRotation={};static clipOffsetRotation={};set action(e){this._action=e}get action(){return this._action}get cacheId(){return this.root.uuid}_action;root;clip;positionWrapper=null;rotationWrapper=null;context;positionChange=new o;rotationChange=new E;constructor(t,n,r,i,a){if(this.context=t,this.root=n,this.clip=r,e.firstKeyframeRotation[this.cacheId]||(e.firstKeyframeRotation[this.cacheId]=new E),a){let t=a.values;e.firstKeyframeRotation[this.cacheId].set(t[0],t[1],t[2],t[3])}e.spaceRotation[this.cacheId]||(e.spaceRotation[this.cacheId]=new E),e.effectiveSpaceRotation[this.cacheId]||(e.effectiveSpaceRotation[this.cacheId]=new E),e.clipOffsetRotation[this.cacheId]=new E,a&&e.clipOffsetRotation[this.cacheId].set(a.values[0],a.values[1],a.values[2],a.values[3]).invert(),this.handlePosition(r,i),this.handleRotation(r,a)}onStart(t){if(t.getClip()!==this.clip)return;e.lastObjRotation[this.cacheId]||(e.lastObjRotation[this.cacheId]=this.root.quaternion.clone());let n=e.lastObjRotation[this.cacheId];if(e.spaceRotation[this.cacheId].copy(n),am){let e=new He().setFromQuaternion(n);console.log(`START`,this.clip.name,N.toDegrees(e.y),this.root.position.z)}}getClipRotationOffset(){return e.clipOffsetRotation[this.cacheId]}_prevTime=0;handlePosition(t,n){if(n){let t=this.root;am&&t.add(new _e),e.lastObjPosition[this.cacheId]||(e.lastObjPosition[this.cacheId]=this.root.position.clone());let r=new o,i=new o;this.positionWrapper=new sm(n,(e,n)=>{let a=this.action.getEffectiveWeight();return am&&t.position.length()>8&&t.position.set(0,t.position.y,0),e>this._prevTime&&(r.set(n[0],n[1],n[2]),r.sub(i),r.multiplyScalar(a),r.applyQuaternion(this.getClipRotationOffset()),r.applyQuaternion(t.quaternion),this.positionChange.copy(r)),i.fromArray(n),this._prevTime=e,n[0]=0,n[1]=0,n[2]=0,n})}}static identityQuaternion=new E;handleRotation(e,t){if(t){if(am){let n=t.values,r=new He().setFromQuaternion(new E(n[0],n[1],n[2],n[3]));console.log(e.name,t.name,`FIRST ROTATION IN TRACK`,N.toDegrees(r.y));let i=t.values.length-4,a=new E().set(n[i],n[i+1],n[i+2],n[i+3]),o=new He().setFromQuaternion(a);console.log(e.name,t.name,`LAST ROTATION IN TRACK`,N.toDegrees(o.y))}let n=0,r=new E,i=new E;this.rotationWrapper=new sm(t,(e,t)=>(e>n&&(i.set(t[0],t[1],t[2],t[3]),r.invert(),i.multiply(r),this.rotationChange.copy(i)),r.fromArray(t),n=e,t[0]=0,t[1]=0,t[2]=0,t[3]=1,t))}}onBeforeUpdate(e){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(t){return!this.action||(t*=this.action.getEffectiveWeight(),t<=0)?!1:(this.positionChange.multiplyScalar(t),this.rotationChange.slerp(e.identityQuaternion,1-t),!0)}},lm=class{controller;handler=[];root;basePosition=new o;baseQuaternion=new E;baseRotation=new He;constructor(e){this.controller=e}createClip(e,t,n){this.root=t,t&&`name`in t&&t.name;let r=this.findRootTrack(n,`.position`),i=this.findRootTrack(n,`.quaternion`),a=new cm(this.controller.context,t,n,r,i);this.handler.push(a);let o=e.clipAction(n);return a.action=o,o}onStart(e){for(let t of this.handler)t.onStart(e)}onBeforeUpdate(e){this.basePosition.copy(this.root.position),this.baseQuaternion.copy(this.root.quaternion);for(let t of this.handler)t.onBeforeUpdate(e)}summedPosition=new o;summedRotation=new E;onAfterUpdate(e){if(!(e<=0)){this.root.position.copy(this.basePosition),this.root.quaternion.copy(this.baseQuaternion),this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(let t of this.handler)t.onAfterUpdate(e)&&(this.summedPosition.add(t.positionChange),this.summedRotation.multiply(t.rotationChange));this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation)}}findRootTrack(e,t){let n=e.tracks;if(!n)return null;for(let e of n)if(e.name.endsWith(t))return e;return null}};new class extends ds{onSerialize(e,t){}onDeserialize(e,t){if(t.type===om&&e?.__type===`AnimatorController`)return new om(e)}}(om);var um=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},dm=A(`debuganimator`),fm=class extends K{get isAnimationComponent(){return!0}applyRootMotion=!1;hasRootMotion=!1;keepAnimatorControllerStateOnDisable=!1;set runtimeAnimatorController(e){this._animatorController&&this._animatorController.model===e||(e?e instanceof om?(e.animator&&e.animator!==this&&(console.warn(`AnimatorController can not be bound to multiple animators`,e.model?.name),e.model||console.error(`AnimatorController has no model`),e=new om(e.model)),this._animatorController=e,this._animatorController.bind(this)):(dm&&console.log(`Assign animator controller`,e,this),this._animatorController=new om(e),this.__didAwake&&this._animatorController.bind(this)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}getCurrentStateInfo(){return this.runtimeAnimatorController?.getCurrentStateInfo()}get currentAction(){return this.runtimeAnimatorController?.currentAction||null}get parametersAreDirty(){return this._parametersAreDirty}_parametersAreDirty=!1;get isDirty(){return this._isDirty}_isDirty=!1;Play(e,t=-1,n=-1/0,r=0){this.play(e,t,n,r)}play(e,t=-1,n=-1/0,r=0){this.runtimeAnimatorController?.play(e,t,n,r),this._isDirty=!0}Reset(){this.reset()}reset(){this._animatorController?.reset(),this._isDirty=!0}SetBool(e,t){this.setBool(e,t)}setBool(e,t){dm&&console.log(`setBool`,e,t),this.runtimeAnimatorController?.getBool(e)!==t&&(this._parametersAreDirty=!0),this.runtimeAnimatorController?.setBool(e,t)}GetBool(e){return this.getBool(e)}getBool(e){let t=this.runtimeAnimatorController?.getBool(e)??!1;return dm&&console.log(`getBool`,e,t),t}toggleBool(e){this.setBool(e,!this.getBool(e))}SetFloat(e,t){this.setFloat(e,t)}setFloat(e,t){this.runtimeAnimatorController?.getFloat(e)!==t&&(this._parametersAreDirty=!0),dm&&console.log(`setFloat`,e,t),this.runtimeAnimatorController?.setFloat(e,t)}GetFloat(e){return this.getFloat(e)}getFloat(e){let t=this.runtimeAnimatorController?.getFloat(e)??-1;return dm&&console.log(`getFloat`,e,t),t}SetInteger(e,t){this.setInteger(e,t)}setInteger(e,t){this.runtimeAnimatorController?.getInteger(e)!==t&&(this._parametersAreDirty=!0),dm&&console.log(`setInteger`,e,t),this.runtimeAnimatorController?.setInteger(e,t)}GetInteger(e){return this.getInteger(e)}getInteger(e){let t=this.runtimeAnimatorController?.getInteger(e)??-1;return dm&&console.log(`getInteger`,e,t),t}SetTrigger(e){this.setTrigger(e)}setTrigger(e){this._parametersAreDirty=!0,dm&&console.log(`setTrigger`,e),this.runtimeAnimatorController?.setTrigger(e)}ResetTrigger(e){this.resetTrigger(e)}resetTrigger(e){this._parametersAreDirty=!0,dm&&console.log(`resetTrigger`,e),this.runtimeAnimatorController?.resetTrigger(e)}GetTrigger(e){this.getTrigger(e)}getTrigger(e){let t=this.runtimeAnimatorController?.getTrigger(e);return dm&&console.log(`getTrigger`,e,t),t}IsInTransition(){return this.isInTransition()}isInTransition(){return this.runtimeAnimatorController?.isInTransition()??!1}SetSpeed(e){return this.setSpeed(e)}setSpeed(e){e!==this._speed&&(dm&&console.log(`setSpeed`,e),this._speed=e,this._animatorController?.animator==this&&this._animatorController.setSpeed(e))}set minMaxSpeed(e){this._speed=N.lerp(e.x,e.y,Math.random()),this._animatorController?.animator==this&&this._animatorController.setSpeed(this._speed)}set minMaxOffsetNormalized(e){this._normalizedStartOffset=N.lerp(e.x,e.y,Math.random()),this.runtimeAnimatorController?.animator==this&&(this.runtimeAnimatorController.normalizedStartOffset=this._normalizedStartOffset)}_speed=1;_normalizedStartOffset=0;_animatorController=null;awake(){dm&&console.log(`ANIMATOR`,this.name,this),this.gameObject&&this.initializeRuntimeAnimatorController()}_initializeWithRuntimeAnimatorController;initializeRuntimeAnimatorController(e=!1){let t=e||this.runtimeAnimatorController!==this._initializeWithRuntimeAnimatorController;if(this.runtimeAnimatorController&&t){let e=this.runtimeAnimatorController.clone();this._initializeWithRuntimeAnimatorController=e,e?(console.assert(this.runtimeAnimatorController!==e),this.runtimeAnimatorController=e,console.assert(this.runtimeAnimatorController===e),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.setSpeed(this._speed),this.runtimeAnimatorController.normalizedStartOffset=this._normalizedStartOffset):console.warn(`Could not clone animator controller`,this.runtimeAnimatorController)}}onDisable(){this.keepAnimatorControllerStateOnDisable||this._animatorController?.reset()}onBeforeRender(){this._isDirty=!1,this._parametersAreDirty=!1,!$p(this.gameObject)&&this._animatorController&&this._animatorController.update(1)}};um([F()],fm.prototype,`applyRootMotion`,void 0),um([F()],fm.prototype,`hasRootMotion`,void 0),um([F()],fm.prototype,`keepAnimatorControllerStateOnDisable`,void 0),um([F()],fm.prototype,`runtimeAnimatorController`,null);var pm=[],mm=class{enabled=!0;target;methodName;arguments;get canClone(){return this.target instanceof Object}constructor(e,t,n,r){this.target=e,this.methodName=t||null,this.arguments=n,r!=null&&(this.enabled=r)}invoke(...e){if(this.enabled!==!1){if(typeof this.target==`function`)this.arguments?(pm.length=0,e!==void 0&&e.length>0&&pm.push(...e),pm.push(...this.arguments),this.target(...this.arguments),pm.length=0):this.target(...e);else if(this.methodName!=null){let t=this.target[this.methodName];typeof t==`function`?this.arguments?(pm.length=0,e!==void 0&&e.length>0&&pm.push(...e),pm.push(...this.arguments),t.call(this.target,...pm),pm.length=0):t.call(this.target,...e):this.arguments?e!==void 0&&e.length>0?this.target[this.methodName]=e[0]:this.target[this.methodName]=this.arguments[0]:this.target[this.methodName]=e[0]}}}},hm=e=>/^[A-Z]*$/.test(e),gm=class extends Event{args},_m=class e{isEventList=!0;__internalOnInstantiate(t){let n=[];for(let e=0;ee instanceof Object&&e.uuid?t[e.uuid].clone:e?.isComponent?t[e.guid].clone:e);n.push(new mm(e.clone,r.methodName,i,r.enabled))}else M()&&console.warn(`Could not find target for event listener`)}}}return new e(n)}target;key;setEventTarget(e,t){if(this.key=e,this.target=t,this.key!==void 0){let e=``,t=!1;for(let n of this.key)t&&hm(n)&&(e+=`-`),t=!0,e+=n.toLowerCase();this.key=e}}get listenerCount(){return this.methods?.length??0}get isInvoking(){return this._isInvoking}_isInvoking=!1;methods=[];_methodsCopy=[];static from(...t){return new e(t)}constructor(e){if(this.methods=[],Array.isArray(e))for(let t of e)t instanceof mm?this.methods.push(t):typeof t==`function`&&this.methods.push(new mm(t));else typeof e==`function`&&this.methods.push(new mm(e))}invoke(...e){if(this._isInvoking)return console.warn(`Circular event invocation detected. Please check your event listeners for circular references.`,this),!1;if(this.methods?.length<=0)return!1;this._isInvoking=!0;try{this._methodsCopy.length=0,this._methodsCopy.push(...this.methods);for(let t of this._methodsCopy)t.invoke(...e);if(typeof this.target==`object`&&typeof this.key==`string`){let t=this.target.dispatchEvent;if(typeof t==`function`){let n=new gm(this.key);n.args=e,t.call(this.target,n)}}}finally{this._isInvoking=!1,this._methodsCopy.length=0}return!0}addEventListener(e){return this.methods.push(new mm(e)),()=>this.removeEventListener(e)}removeEventListener(e){if(!e)return!1;let t=!1;for(let n=this.methods.length-1;n>=0;n--)this.methods[n].target===e&&(this.methods[n].enabled=!1,this.methods.splice(n,1),t=!0);return t}removeAllEventListeners(){this.methods.length=0}},vm=Symbol(`previous-visibility`),ym=class e extends d{render(e,t,n){if(`addPass`in n)this._unsupported_effectcomposer_warning||=(console.warn(`RenderTexture.render() does not yet support EffectComposer`),!0);else if(n instanceof h){this.onBeforeRender();let r=n.getRenderTarget(),i=n.xr.enabled;n.xr.enabled=!1,n.setRenderTarget(this),n.clear(!0,!0,!0),n.render(e,t),n.setRenderTarget(r),n.xr.enabled=i,this.onAfterRender()}}static _userSet=new Set;onBeforeRender(){e._userSet.clear();let t=ef(this.texture,!0,null,e._userSet);for(let e of t)e instanceof x&&(e[vm]=e.visible,e.visible=!1)}onAfterRender(){for(let t of e._userSet)t instanceof x&&(t.visible=t[vm]);e._userSet.clear()}},bm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xm=A(`debuggroundprojection`),Sm=` +#ifdef NEEDLE_USE_CUBE_UV_MAP +varying vec3 vNeedleGroundProjectionWorldDirection; +#endif +`,Cm=` +${Sm} +uniform float needleGroundProjectionBlurriness; +uniform float needleGroundProjectionBlending; +uniform float needleGroundProjectionAlphaFactor; +uniform float needleGroundProjectionBackgroundIntensity; + +float needleGroundProjectionSmoothstep(float edge0, float edge1, float x) { + float t = clamp((x - edge0) / max(edge1 - edge0, 0.000001), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); +} + +float needleGroundProjectionDistance() { + return length(vec2(0.0, vMapUv.y)); +} + +float needleGroundProjectionBlurFactor(float needleGroundProjectionDistanceValue) { + return clamp(needleGroundProjectionSmoothstep(0.5, 1.0, needleGroundProjectionDistanceValue * 2.0), 0.0, 1.0); +} +`,wm=` +#ifdef USE_MAP + + float needleGroundProjectionDistanceValue = needleGroundProjectionDistance(); + float needleGroundProjectionBlurFactorValue = needleGroundProjectionBlurFactor(needleGroundProjectionDistanceValue); + vec4 sampledDiffuseColor; + + #ifdef NEEDLE_USE_CUBE_UV_MAP + sampledDiffuseColor = textureCubeUV( + map, + normalize( vNeedleGroundProjectionWorldDirection ), + needleGroundProjectionBlurriness * needleGroundProjectionBlurFactorValue + ); + #else + #ifdef USE_MIPMAP_BIAS + sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); + #else + sampledDiffuseColor = texture2D( map, vMapUv ); + #endif + #endif + + #ifdef DECODE_VIDEO_TEXTURE + + // use inline sRGB decode until browsers properly support SRGB8_ALPHA8 with video textures (#26516) + + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + + sampledDiffuseColor.rgb *= mix(1.0, needleGroundProjectionBackgroundIntensity, needleGroundProjectionBlurFactorValue); + diffuseColor *= sampledDiffuseColor; + +#endif +`,Tm=` +#ifdef USE_MAP + if (needleGroundProjectionBlending > 0.000001) { + float needleGroundProjectionBrightness = dot(diffuseColor.rgb, vec3(0.299, 0.587, 0.114)); + float needleGroundProjectionStepFactor = needleGroundProjectionBlending - needleGroundProjectionBrightness * 0.1; + diffuseColor.a *= pow( + 1.0 - needleGroundProjectionBlending * needleGroundProjectionSmoothstep( + 0.35 * needleGroundProjectionStepFactor, + 0.45 * needleGroundProjectionStepFactor, + needleGroundProjectionDistanceValue + ), + 5.0 + ); + } +#endif +diffuseColor.a *= needleGroundProjectionAlphaFactor; +`;function Em(e){let t=e.image?.height;if(!t)return null;let n=Math.log2(t)-2,r=1/t;return{texelWidth:1/(3*Math.max(2**n,112)),texelHeight:r,maxMip:n}}function Dm(e){let t=e.userData;return t.needleGroundProjectionUniforms??={needleGroundProjectionBlurriness:{value:0},needleGroundProjectionBlending:{value:0},needleGroundProjectionAlphaFactor:{value:1},needleGroundProjectionBackgroundIntensity:{value:1}}}function Om(e,t){let n=Dm(e);e.onBeforeCompile=e=>{e.uniforms.needleGroundProjectionBlurriness=n.needleGroundProjectionBlurriness,e.uniforms.needleGroundProjectionBlending=n.needleGroundProjectionBlending,e.uniforms.needleGroundProjectionAlphaFactor=n.needleGroundProjectionAlphaFactor,e.uniforms.needleGroundProjectionBackgroundIntensity=n.needleGroundProjectionBackgroundIntensity,e.vertexShader=e.vertexShader.replace(`#include `,`#include \n${Sm}`).replace(`#include `,`#include +#ifdef NEEDLE_USE_CUBE_UV_MAP + // GroundedSkybox mirrors geometry on Z, so undo that before deriving the sampling direction. + vNeedleGroundProjectionWorldDirection = transformDirection( vec3( position.x, position.y, -position.z ), modelMatrix ); +#endif`),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +${Cm} +#include `).replace(`#include `,wm).replace(`#include `,`${Tm}\n#include `)};let r=e.defines??={},i=JSON.stringify(r),a=t.mapping===306?Em(t):null;a?(r.NEEDLE_USE_CUBE_UV_MAP=1,r.ENVMAP_TYPE_CUBE_UV=1,r.CUBEUV_TEXEL_WIDTH=a.texelWidth,r.CUBEUV_TEXEL_HEIGHT=a.texelHeight,r.CUBEUV_MAX_MIP=`${a.maxMip}.0`):(delete r.NEEDLE_USE_CUBE_UV_MAP,delete r.ENVMAP_TYPE_CUBE_UV,delete r.CUBEUV_TEXEL_WIDTH,delete r.CUBEUV_TEXEL_HEIGHT,delete r.CUBEUV_MAX_MIP),i!==JSON.stringify(r)&&(e.needsUpdate=!0)}var km=class extends K{applyOnAwake=!1;autoFit=!0;set radius(e){this._radius=e,this._projection&&this.updateProjection()}get radius(){return this._radius}_radius=50;set height(e){this._height=e,this._projection&&this.updateProjection()}get height(){return this._height}_height=3;set arBlending(e){this._arblending=e,this._needsTextureUpdate=!0}get arBlending(){return this._arblending}_arblending=0;_lastBackground;_lastRadius;_lastHeight;_projection;_watcher;awake(){this.applyOnAwake&&this.updateAndCreate()}onEnable(){this.context.time.frameCount>0&&this.applyOnAwake&&this.updateAndCreate(),this._watcher||(this._watcher=new en(this.context.scene,`background`),this._watcher.subscribeWrite(e=>{xm&&console.log(`Background changed`,this.context.scene.background),this._needsTextureUpdate=!0}))}onDisable(){this._watcher?.revoke(),this._projection?.removeFromParent()}onEnterXR(){this.activeAndEnabled&&(this._needsTextureUpdate=!0,this.updateProjection())}async onLeaveXR(){this.activeAndEnabled&&(await qt(1),this.updateProjection())}onBeforeRender(){if(this._projection&&this.scene.backgroundRotation&&this._projection.rotation.copy(this.scene.backgroundRotation),this._projection&&this.context.scene.background instanceof be){let e=this.context.scene.backgroundBlurriness??0,t=this._lastBlurriness!==e;this.updateProjectionMaterial(this.context.scene.background,t||this._needsTextureUpdate)}}updateAndCreate(){this.updateProjection(),this._watcher?.apply()}_needsTextureUpdate=!1;updateProjection(){if(!this.context.scene.background){this._projection?.removeFromParent();return}let e=this.context.scene.background;if(!(e instanceof be)){this._projection?.removeFromParent();return}if((this.context.xr?.isPassThrough||this.context.xr?.isAR)&&this.arBlending===0){this._projection?.removeFromParent();return}if(!this.gameObject||this.destroyed)return;let t=!0,n=e!==this._lastBackground||this._height!==this._lastHeight||this._radius!==this._lastRadius;if(!this._projection||n){xm&&console.log(`Create/Update Ground Projection`,e.name),this._projection?.removeFromParent();try{this._projection=new ct(e,this._height,this._radius,64),Om(this._projection.material,e)}catch(e){console.error(`Error creating three GroundProjection`,e);return}this._projection.position.y=this._height-0,this._projection.name=`GroundProjection`,ui(this._projection,!1)}else t=!1;if(this._projection.parent||this.gameObject.add(this._projection),this.autoFit&&t){this._projection.updateWorldMatrix(!0,!0);let e=fi(this.context.scene.children,[this._projection]),t=e.min.y;if(t<1/0){let n=P();n.x=e.min.x+(e.max.x-e.min.x)*.5;let r=zr(this.gameObject).x;n.y=t+this._height*r-0,n.z=e.min.z+(e.max.z-e.min.z)*.5,kr(this._projection,n)}xm&&H.DrawWireBox3(e,65280,5)}this.updateProjectionMaterial(e,!0),this._lastBackground=e,this._lastHeight=this._height,this._lastRadius=this._radius,this._needsTextureUpdate=!1}_blurrynessShader=null;_lastBlurriness=-1;updateProjectionMaterial(e,t=!1){if(!this._projection)return;let n=this.context.scene.backgroundBlurriness??0,r=e.mapping===306,i=e;if(!r&&n>.001){let r=!!this._projection.material.map&&this._projection.material.map!==e;t||!r?i=this.updateBlurriness(e,n):this._projection.material.map&&(i=this._projection.material.map)}this._projection.material.map!==i&&(this._projection.material.map=i);let a=this._projection.material.map??e;a.mapping=e.mapping,Om(this._projection.material,a);let o=Dm(this._projection.material);o.needleGroundProjectionBlurriness.value=r?n:0,o.needleGroundProjectionBackgroundIntensity.value=this.context.scene.backgroundIntensity??1;let s=this._projection.material.transparent;this._projection.material.transparent=this.context.xr?.isAR===!0&&this.arBlending>1e-6,o.needleGroundProjectionBlending.value=this._projection.material.transparent?this.arBlending:0,o.needleGroundProjectionAlphaFactor.value=this.context.isInPassThrough?.95:1,s!==this._projection.material.transparent&&(this._projection.material.needsUpdate=!0),this._projection.material.depthTest=!0,this._projection.material.depthWrite=!1,this._lastBlurriness=n,this._needsTextureUpdate=!1}updateBlurriness(e,t){xm&&console.log(`Update Blurriness`,t),this._blurrynessShader??=new Ve({name:`GroundProjectionBlurriness`,uniforms:{map:{value:e},blurriness:{value:t}},vertexShader:Am,fragmentShader:jm}),this._blurrynessShader.depthWrite=!1,this._blurrynessShader.uniforms.map.value=e,this._blurrynessShader.uniforms.blurriness.value=t,e.needsUpdate=!0;let n=ai.copyTexture(e,this._blurrynessShader);return n.mapping=e.mapping,n}};bm([F()],km.prototype,`applyOnAwake`,void 0),bm([F()],km.prototype,`autoFit`,void 0),bm([F()],km.prototype,`radius`,null),bm([F()],km.prototype,`height`,null),bm([F()],km.prototype,`arBlending`,null);var Am=` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`,jm=` + uniform sampler2D map; + uniform float blurriness; + varying vec2 vUv; + + const float PI = 3.14159265359; + + // Gaussian function + float gaussian(float x, float sigma) { + return exp(-(x * x) / (2.0 * sigma * sigma)) / (sqrt(2.0 * PI) * sigma); + } + + // Custom smoothstep function for desired falloff + float customSmoothstep(float edge0, float edge1, float x) { + float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); + } + + void main() { + vec2 center = vec2(0.0, 0.0); + vec2 pos = vUv; + pos.x = 0.0; // Only consider vertical distance + float distance = length(pos - center); + + // Calculate blur amount based on custom falloff + float blurAmount = customSmoothstep(0.5, 1.0, distance * 2.0); + blurAmount = clamp(blurAmount, 0.0, 1.0); // Ensure blur amount is within valid range + + // Gaussian blur + vec2 pixelSize = 1.0 / vec2(textureSize(map, 0)); + vec4 color = vec4(0.0); + float totalWeight = 0.0; + int blurSize = int(60.0 * min(1.0, blurriness) * blurAmount); // Adjust blur size based on distance and blurriness + if (blurSize <= 0) { + gl_FragColor = texture2D(map, vUv); + return; + } + float lodLevel = log2(float(blurSize)) * 0.5; // Compute LOD level + + for (int x = -blurSize; x <= blurSize; x++) { + for (int y = -blurSize; y <= blurSize; y++) { + vec2 offset = vec2(float(x), float(y)) * pixelSize * blurAmount; + float weight = gaussian(length(vec2(float(x), float(y))), 1000.0 * blurAmount); // Use a fixed sigma value + color += textureLod(map, vUv + offset, lodLevel) * weight; + totalWeight += weight; + } + } + + color = totalWeight > 0.0 ? color / totalWeight : texture2D(map, vUv); + + gl_FragColor = color; + + // #include + // #include + + // Uncomment to visualize blur amount + // gl_FragColor = vec4(blurAmount, 0.0, 0.0, 1.0); + } +`;function Mm(e){if(pd.active)return console.warn(`[OrbitControls] Can not fit camera while XR session is active`),null;let t=B.Current;if(!t)return console.warn(`[OrbitControls] No context found`),null;let n=e?.camera||t.mainCamera;if(!n)return console.warn(`No camera or controls found to fit camera to objects...`),null;e||={},e.autoApply=e.autoApply!==!1,e.minZoom||=0,e.maxZoom||=1/0;let{centerCamera:r,cameraNearFar:i=`auto`,fitOffset:a=1.1,fov:s=n instanceof C?n?.fov:-1}=e,c=new o,l=new o,u=n instanceof C?n.aspect:1,d=fi(e.objects||t.scene,void 0,n?.layers),f=d.clone();d.getCenter(l);let p=new o;if(d.getSize(p),n instanceof C&&n.updateProjectionMatrix(),n.updateMatrixWorld(),d.applyMatrix4(n.matrixWorldInverse),d.getSize(c),d.setFromCenterAndSize(l,c),Number.isNaN(c.x)||Number.isNaN(c.y)||Number.isNaN(c.z))return console.warn(`Camera fit size resultet in NaN`,n,d),null;if(c.length()<=1e-10)return console.warn(`Camera fit size is zero`,d),null;let m=s,h=2*Math.atan(Math.tan(m*Math.PI/360/2)*u)/Math.PI*360,g=c.y/(2*Math.atan(Math.PI*m/360)),_=c.x/(2*Math.atan(Math.PI*h/360)),v=a*Math.max(g,_)+c.z/2;e.maxZoom=v*10,e.minZoom=v*.01,e.debug===!0&&console.log(`Fit camera to objects`,{fitHeightDistance:g,fitWidthDistance:_,distance:v,verticalFov:m,horizontalFov:h});let ee=.05,y=l.clone();if(y.y-=c.y*ee,e.targetOffset&&(e.targetOffset.x!==void 0&&(y.x+=e.targetOffset.x),e.targetOffset.y!==void 0&&(y.y+=e.targetOffset.y),e.targetOffset.z!==void 0&&(y.z+=e.targetOffset.z)),e.relativeTargetOffset&&(e.relativeTargetOffset.x!==void 0&&(y.x+=e.relativeTargetOffset.x*c.x),e.relativeTargetOffset.y!==void 0&&(y.y+=e.relativeTargetOffset.y*c.y),e.relativeTargetOffset.z!==void 0&&(y.z+=e.relativeTargetOffset.z*c.z)),i==null||i==`auto`){let t=Rp(km),r=t?t.radius:0,i=Math.max(p.x,p.y,p.z,r);n instanceof C&&(n.near=v/100,n.far=i+v*10,n.updateProjectionMatrix()),t&&(e.maxZoom=Math.max(Math.min(e.maxZoom,r*.5),v))}e.currentZoom!==void 0&&(e.currentZoome.maxZoom&&(e.maxZoom=e.currentZoom*1.1));let b=l.clone();e.fitDirection?b.sub(new o().copy(e.fitDirection).multiplyScalar(1e6)):b.sub(n.worldPosition),r===`y`&&(b.y=0),b.normalize(),b.multiplyScalar(v),r===`y`&&(b.y+=-ee*4*v);let te=l.clone().sub(b);return e.cameraOffset&&(e.cameraOffset.x!==void 0&&(te.x+=e.cameraOffset.x),e.cameraOffset.y!==void 0&&(te.y+=e.cameraOffset.y),e.cameraOffset.z!==void 0&&(te.z+=e.cameraOffset.z)),e.relativeCameraOffset&&(e.relativeCameraOffset.x!==void 0&&(te.x+=e.relativeCameraOffset.x*c.x),e.relativeCameraOffset.y!==void 0&&(te.y+=e.relativeCameraOffset.y*c.y),e.relativeCameraOffset.z!==void 0&&(te.z+=e.relativeCameraOffset.z*c.z)),n.parent&&(te=n.parent.worldToLocal(te)),e.debug&&(H.DrawWireBox3(d,16777011,10),H.DrawWireBox3(f,65280,10)),e.autoApply&&(n.position.copy(te),n.lookAt(y),s>0&&n instanceof C&&(n.fov=s,n.updateProjectionMatrix())),{camera:n,position:te,lookAt:y,fov:e.fov}}var Nm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Pm=class extends K{constraintActive=!0;locked=!1;sources=[];setConstraintPosition(e){let t=this.sources[0];t&&(t.worldPosition=e)}};Nm([F()],Pm.prototype,`constraintActive`,void 0),Nm([F()],Pm.prototype,`locked`,void 0),Nm([F(S)],Pm.prototype,`sources`,void 0);var Fm=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}static sizeOf(){return 12}static createVec3(e,t,n,r){return e.prep(4,12),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(t),e.offset()}},Im=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}position(e){return(e||new Fm).__init(this.bb_pos,this.bb)}rotation(e){return(e||new Fm).__init(this.bb_pos+12,this.bb)}scale(e){return(e||new Fm).__init(this.bb_pos+24,this.bb)}static sizeOf(){return 36}static createTransform(e,t,n,r,i,a,o,s,c,l){return e.prep(4,36),e.prep(4,12),e.writeFloat32(l),e.writeFloat32(c),e.writeFloat32(s),e.prep(4,12),e.writeFloat32(o),e.writeFloat32(a),e.writeFloat32(i),e.prep(4,12),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(t),e.offset()}},Lm=class e{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedTransformModel(t,n){return(n||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSyncedTransformModel(t,n){return t.setPosition(t.position()+4),(n||new e).__init(t.readInt32(t.position())+t.position(),t)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}fast(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):!1}transform(e){let t=this.bb.__offset(this.bb_pos,8);return t?(e||new Im).__init(this.bb_pos+t,this.bb):null}dontSave(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startSyncedTransformModel(e){e.startObject(4)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addFast(e,t){e.addFieldInt8(1,+t,0)}static addTransform(e,t){e.addFieldStruct(2,t,0)}static addDontSave(e,t){e.addFieldInt8(3,+t,0)}static endSyncedTransformModel(e){return e.endObject()}static finishSyncedTransformModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedTransformModelBuffer(e,t){e.finish(t,void 0,!0)}},Rm;(function(e){e[e.Average=0]=`Average`,e[e.Multiply=1]=`Multiply`,e[e.Minimum=2]=`Minimum`,e[e.Maximum=3]=`Maximum`})(Rm||={});var zm;(function(e){e[e.Discrete=0]=`Discrete`,e[e.Continuous=1]=`Continuous`})(zm||={});var J;(function(e){e[e.None=0]=`None`,e[e.FreezePositionX=2]=`FreezePositionX`,e[e.FreezePositionY=4]=`FreezePositionY`,e[e.FreezePositionZ=8]=`FreezePositionZ`,e[e.FreezePosition=14]=`FreezePosition`,e[e.FreezeRotationX=16]=`FreezeRotationX`,e[e.FreezeRotationY=32]=`FreezeRotationY`,e[e.FreezeRotationZ=64]=`FreezeRotationZ`,e[e.FreezeRotation=112]=`FreezeRotation`,e[e.FreezeAll=126]=`FreezeAll`})(J||={});var Bm;(function(e){e[e.None=0]=`None`,e[e.X=2]=`X`,e[e.Y=4]=`Y`,e[e.Z=8]=`Z`,e[e.All=-1]=`All`})(Bm||={});var Vm=function(e,t){return function(n,r,i){Hm(n,r,i,e,t)}};function Hm(e,t,n,r,i){if(!i&&!r&&!e.onValidate)return;if(n!==void 0){console.error(`Invalid usage of validate decorator. Only fields can be validated.`,e,t,n),Ti(`Invalid usage of validate decorator. Only fields can be validated. Property: `+t,{type:Tn.Error});return}let a=``;if(a=typeof t==`string`?t:t.name,e.__internalAwake){let t=Symbol(a),n=e.__internalAwake;e.__internalAwake=function(){if(!this.onValidate){M()&&console.warn(`Usage of @validate decorate detected but there is no onValidate method in your class: "`+e.constructor?.name+`"`);return}if(this[t]===void 0){this[t]=this[a];let e=this[a];if(e instanceof w||e instanceof o||e instanceof Te||e instanceof E){let e=this[a];nn(e,()=>{this.onValidate(a)})}Object.defineProperty(this,a,{set:function(e){if(this[Ts]===!0)this[t]=e;else{r?.call(this,e);let n=this[t];this[t]=e,this.onValidate?.call(this,a,n)}},get:function(){return i?.call(this),this[t]}})}n.call(this)}}}var Um=function(e){return function(t,n,r){let i=``;i=typeof n==`string`?n:n.name;let a=e.prototype,o=Object.getOwnPropertyDescriptor(a,i);if(!o?.value){console.warn(`Can not apply prefix: type does not have method named`,n,e);return}let s=o.value,c=t[i];Object.defineProperty(a,i,{value:function(...e){let t=c?.call(this,...e);if(t instanceof Promise){t.then(t=>{if(t!==!1)return s.call(this,...e)});return}if(t!==!1)return s.call(this,...e)}})}},Wm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Gm=class{get isDirty(){return this.positionChanged||this.rotationChanged}positionChanged=!1;rotationChanged=!1;position;quaternion;_positionKeys=[`x`,`y`,`z`];_quaternionKeys=[`_x`,`_y`,`_z`,`_w`];reset(e=!1){if(this.positionChanged=!1,this.rotationChanged=!1,this.mute=!1,e){if(this.position)for(let e of this._positionKeys)delete this.position[e];if(this.quaternion)for(let e of this._quaternionKeys)delete this.quaternion[e]}}syncValues(){for(let e of this._positionKeys)this.position[e]=this.obj.position[e];for(let e of this._quaternionKeys)this.quaternion[e]=this.obj.quaternion[e]}mute=!1;applyValues(){if(this.positionChanged&&this.position)for(let e of this._positionKeys){let t=this.position[e];t!==void 0&&(this.obj.position[e]=t)}if(this.rotationChanged&&this.quaternion)for(let e of this._quaternionKeys){let t=this.quaternion[e];t!==void 0&&(this.obj.quaternion[e]=t)}}context;obj;_positionWatch;_rotationWatch;constructor(e,t){this.context=t,this.obj=e}start(e,t){this.reset(),e&&(this._positionWatch||=new en(this.obj.position,[`x`,`y`,`z`]),this._positionWatch.apply(),this.position={},this._positionWatch.subscribeWrite((e,t)=>{if(this.context.physics.engine?.isUpdating||this.mute)return;let n=this.position[t];Math.abs(n-e)<1e-5||(this.position[t]=e,this.positionChanged=!0)})),t&&(this._rotationWatch||=new en(this.obj.quaternion,[`_x`,`_y`,`_z`,`_w`]),this._rotationWatch.apply(),this.quaternion={},this._rotationWatch.subscribeWrite((e,t)=>{if(this.context.physics.engine?.isUpdating||this.mute)return;let n=this.quaternion[t];Math.abs(n-e)<1e-5||(this.quaternion[t]=e,this.rotationChanged=!0)}));let n=this.obj.matrixWorld.multiplyMatrices.bind(this.obj.matrixWorld),r=new ce;this.obj.matrixWorld.multiplyMatrices=(e,t)=>(this.context.physics.engine?.isUpdating||this.mute||r.equals(e)||(this.positionChanged=!0,this.rotationChanged=!0,r.copy(e)),n(e,t))}stop(){this._positionWatch?.revoke(),this._rotationWatch?.revoke()}},Km=class e extends K{get isRigidbody(){return!0}autoMass=!0;set mass(e){e!==this._mass&&(this._mass=e,this._propertiesChanged=!0,this.__didAwake&&(this.autoMass=!1))}get mass(){return this.autoMass?this.context.physics.engine?.getBody(this)?.mass()??-1:this._mass}_mass=0;useGravity=!0;centerOfMass=new o(0,0,0);constraints=J.None;isKinematic=!1;drag=0;angularDrag=1;detectCollisions=!0;sleepThreshold=.01;collisionDetectionMode=zm.Discrete;get lockPositionX(){return(this.constraints&J.FreezePositionX)!==0}get lockPositionY(){return(this.constraints&J.FreezePositionY)!==0}get lockPositionZ(){return(this.constraints&J.FreezePositionZ)!==0}get lockRotationX(){return(this.constraints&J.FreezeRotationX)!==0}get lockRotationY(){return(this.constraints&J.FreezeRotationY)!==0}get lockRotationZ(){return(this.constraints&J.FreezeRotationZ)!==0}set lockPositionX(e){e?this.constraints|=J.FreezePositionX:this.constraints&=~J.FreezePositionX}set lockPositionY(e){e?this.constraints|=J.FreezePositionY:this.constraints&=~J.FreezePositionY}set lockPositionZ(e){e?this.constraints|=J.FreezePositionZ:this.constraints&=~J.FreezePositionZ}set lockRotationX(e){e?this.constraints|=J.FreezeRotationX:this.constraints&=~J.FreezeRotationX}set lockRotationY(e){e?this.constraints|=J.FreezeRotationY:this.constraints&=~J.FreezeRotationY}set lockRotationZ(e){e?this.constraints|=J.FreezeRotationZ:this.constraints&=~J.FreezeRotationZ}set gravityScale(e){this._gravityScale=e}get gravityScale(){return this._gravityScale}_gravityScale=1;dominanceGroup=0;static tempPosition=new o;_propertiesChanged=!1;_currentVelocity=new o;_smoothedVelocity=new o;_smoothedVelocityGetter=new o;_lastPosition=new o;_watch;awake(){this._watch=void 0,this._propertiesChanged=!1}onEnable(){this._watch||=new Gm(this.gameObject,this.context),this._watch.start(!0,!0),this.startCoroutine(this.beforePhysics(),z.LateUpdate),M()&&(globalThis.NEEDLE_USE_RAPIER?Pc.RAPIER_PHYSICS.ready().then(async()=>{await qt(3),this.context.physics.engine?.getBody(this)||console.warn(`Rigidbody could not be created. Ensure \"${this.name}\" has a Collider component.`)}):console.warn(`Rigidbody could not be created: Rapier physics are explicitly disabled.`))}onDisable(){this._watch?.stop(),this.context.physics.engine?.removeBody(this)}onDestroy(){this.context.physics.engine?.removeBody(this)}onValidate(){this._propertiesChanged=!0}*beforePhysics(){for(;;)this._propertiesChanged&&(this._propertiesChanged=!1,this.context.physics.engine?.updateProperties(this)),this._watch?.isDirty?(this._watch.mute=!0,this._watch.applyValues(),this.context.physics.engine?.updateBody(this,this._watch.positionChanged,this._watch.rotationChanged),this._watch.reset()):this._watch?.syncValues(),this.captureVelocity(),yield}teleport(e,t=!0){this._watch?.reset(!0),t?this.gameObject.position.set(e.x,e.y,e.z):this.setWorldPosition(e.x,e.y,e.z),this.resetForcesAndTorques(),this.resetVelocities()}resetForces(e=!0){this.context.physics.engine?.resetForces(this,e)}resetTorques(e=!0){this.context.physics.engine?.resetTorques(this,e)}resetVelocities(){this.setVelocity(0,0,0),this.setAngularVelocity(0,0,0)}resetForcesAndTorques(){this.resetForces(),this.resetTorques()}wakeUp(){this.context.physics.engine?.wakeup(this)}get isSleeping(){return this.context.physics.engine?.isSleeping(this)}updateProperties(){return this._propertiesChanged=!1,this.context.physics.engine?.updateProperties(this)}applyForce(e,t,n=!0){this._propertiesChanged&&this.updateProperties(),this.context.physics.engine?.addForce(this,e,n)}applyImpulse(e,t=!0){this._propertiesChanged&&this.updateProperties(),this.context.physics.engine?.applyImpulse(this,e,t)}setForce(e,t,n,r=!0){this.context.physics.engine?.resetForces(this,r),typeof e==`number`?(t??=0,n??=0,this.context.physics.engine?.addForce(this,{x:e,y:t,z:n},r)):this.context.physics.engine?.addForce(this,e,r)}getVelocity(){let e=this.context.physics.engine?.getLinearVelocity(this);return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setVelocity(e,t,n,r=!0){if(e instanceof o){let t=e;this.context.physics.engine?.setLinearVelocity(this,t,r);return}t===void 0||n===void 0||this.context.physics.engine?.setLinearVelocity(this,{x:e,y:t,z:n},r)}getAngularVelocity(){let e=this.context.physics.engine?.getAngularVelocity(this);return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setAngularVelocity(e,t,n,r=!0){if(typeof e==`object`){let t=e;this.context.physics.engine?.setAngularVelocity(this,t,r);return}if(t===void 0||n===void 0||typeof t==`boolean`){console.warn(`setAngularVelocity expects either a Vec3 or 3 numbers`);return}this.context.physics.engine?.setAngularVelocity(this,{x:e,y:t,z:n},r)}setTorque(e,t,n){typeof e==`number`?this.setAngularVelocity(e,t,n):this.setAngularVelocity(e)}get smoothedVelocity(){return this._smoothedVelocityGetter.copy(this._smoothedVelocity),this._smoothedVelocityGetter.multiplyScalar(1/this.context.time.deltaTime)}setBodyFromGameObject(e=null){}captureVelocity(){let t=this.gameObject.matrixWorld;e.tempPosition.setFromMatrixPosition(t);let n=e.tempPosition.sub(this._lastPosition);this._lastPosition.copy(e.tempPosition),this._smoothedVelocity.lerp(n,this.context.time.deltaTime/.1)}};Wm([Vm()],Km.prototype,`autoMass`,void 0),Wm([F()],Km.prototype,`mass`,null),Wm([Vm(),F()],Km.prototype,`useGravity`,void 0),Wm([F(o)],Km.prototype,`centerOfMass`,void 0),Wm([Vm(),F()],Km.prototype,`constraints`,void 0),Wm([Vm(),F()],Km.prototype,`isKinematic`,void 0),Wm([Vm(),F()],Km.prototype,`drag`,void 0),Wm([Vm(),F()],Km.prototype,`angularDrag`,void 0),Wm([Vm(),F()],Km.prototype,`detectCollisions`,void 0),Wm([Vm(),F()],Km.prototype,`sleepThreshold`,void 0),Wm([Vm(),F()],Km.prototype,`collisionDetectionMode`,void 0),Wm([Vm()],Km.prototype,`_gravityScale`,void 0),Wm([Vm()],Km.prototype,`dominanceGroup`,void 0),new o,new E,new o;var qm=A(`debugsync`),Jm=`STRS`;Ac(Jm,Lm.getRootAsSyncedTransformModel);var Ym=new Oc;function Xm(e,t,n=!0){Ym.clear();let r=Ym.createString(e);Lm.startSyncedTransformModel(Ym),Lm.addGuid(Ym,r),Lm.addFast(Ym,n);let i=t.worldPosition,a=t.worldEuler,o=t.gameObject.scale;Lm.addTransform(Ym,Im.createTransform(Ym,i.x,i.y,i.z,a.x,a.y,a.z,o.x,o.y,o.z));let s=Lm.endSyncedTransformModel(Ym);return Ym.finish(s,Jm),Ym.asUint8Array()}var Zm=0,Qm=0;Va(e=>{let t=e.connection.currentServerUrl?.includes(`glitch`)?10:40;Qm=Math.floor(Zm/t),Zm=0,qm&&Qm>0&&console.log(`Sync Transform Fast Interval`,Qm)});var $m=class extends K{overridePhysics=!0;interpolatePosition=!0;interpolateRotation=!0;fastMode=!1;syncDestroy=!1;_model=null;_needsUpdate=!0;rb=null;_wasKinematic=!1;_receivedDataBefore=!1;_targetPosition;_targetRotation;_receivedFastUpdate=!1;_shouldRequestOwnership=!1;requestOwnership(){qm&&console.log(`Request ownership`),this._model?this._model.requestOwnership():(this._shouldRequestOwnership=!0,this._needsUpdate=!0)}freeOwnership(){this._model?.freeOwnership()}hasOwnership(){return this._model?.hasOwnership??void 0}isOwned(){return this._model?.isOwned}joinedRoomCallback=null;receivedDataCallback=null;awake(){qm&&console.log(`new instance`,this.guid,this),this._receivedDataBefore=!1,this._targetPosition=new o,this._targetRotation=new E,this.lastPosition=new o,this.lastRotation=new E,this.lastScale=new o,this.rb=G.getComponentInChildren(this.gameObject,Km),this.rb&&(this._wasKinematic=this.rb.isKinematic),this.receivedUpdate=!0,this._model=new tl(this.context.connection,this.guid),this.context.connection.isConnected&&this.tryGetLastState(),this.joinedRoomCallback=this.tryGetLastState.bind(this),this.context.connection.beginListen(Xc.JoinedRoom,this.joinedRoomCallback),this.receivedDataCallback=this.onReceivedData.bind(this),this.context.connection.beginListenBinary(Jm,this.receivedDataCallback)}onDestroy(){this.syncDestroy&&Fo(this.guid,this.context.connection),this._model=null,this.context.connection.stopListen(Xc.JoinedRoom,this.joinedRoomCallback),this.context.connection.stopListenBinary(Jm,this.receivedDataCallback)}tryGetLastState(){let e=this.context.connection.tryGetState(this.guid);e&&this.onReceivedData(e)}tempEuler=new He;onReceivedData(e){if(!this.destroyed&&typeof e.guid==`function`&&e.guid()===this.guid){qm&&console.log(`new data`,this.context.connection.connectionId,this.context.time.frameCount,this.guid,e),this.receivedUpdate=!0,this._receivedFastUpdate=e.fast();let t=e.transform();if(t){mf.markDirty(this.gameObject,!0);let e=t.position();e&&(this.interpolatePosition&&this._targetPosition?.set(e.x(),e.y(),e.z()),(!this.interpolatePosition||!this._receivedDataBefore)&&this.setWorldPosition(e.x(),e.y(),e.z()));let n=t.rotation();n&&(this.tempEuler.set(n.x(),n.y(),n.z()),this.interpolateRotation&&this._targetRotation.setFromEuler(this.tempEuler),(!this.interpolateRotation||!this._receivedDataBefore)&&Zr(this.gameObject,this.tempEuler));let r=t.scale();r&&this.gameObject.scale.set(r.x(),r.y(),r.z())}this._receivedDataBefore=!0}}onEnable(){this.lastPosition.copy(this.worldPosition),this.lastRotation.copy(this.worldQuaternion),this.lastScale.copy(this.gameObject.scale),this._needsUpdate=!0,this._model&&this._model.updateIsOwned()}onDisable(){this._model&&this._model.freeOwnership()}receivedUpdate=!1;lastPosition;lastRotation;lastScale;onBeforeRender(){if(!this.activeAndEnabled||!this.context.connection.isConnected)return;if(!this.context.connection.isInRoom||!this._model){qm&&console.log(`no model or room`,this.name,this.guid,this.context.connection.isInRoom);return}this._shouldRequestOwnership&&(this._shouldRequestOwnership=!1,this._model.requestOwnership());let e=this.worldPosition,t=this.worldQuaternion,n=this.gameObject.scale;if(this._model.isOwned&&!this.receivedUpdate){let r=this._model.hasOwnership||this.fastMode?1e-4:.001;(e.distanceTo(this.lastPosition)>r||t.angleTo(this.lastRotation)>r||n.distanceTo(this.lastScale)>r)&&(this._model.hasOwnership?this._needsUpdate=!0:(qm&&console.log(this.guid,`reset because not owned but`,this.gameObject.name,this.lastPosition),this.worldPosition=this.lastPosition,e.copy(this.lastPosition),this.worldQuaternion=this.lastRotation,t.copy(this.lastRotation),this.gameObject.scale.copy(this.lastScale),mf.markDirty(this.gameObject,!0),this._needsUpdate=!1))}if(this._model&&!this._model.hasOwnership&&this._model.isOwned&&this._receivedDataBefore){let e=this._receivedFastUpdate||this.fastMode?.5:.3,t=!1;if(this.interpolatePosition&&this._targetPosition){let n=this.worldPosition;n.lerp(this._targetPosition,e),this.worldPosition=n,t=!0}if(this.interpolateRotation&&this._targetRotation){let n=this.worldQuaternion;n.slerp(this._targetRotation,e),this.worldQuaternion=n,t=!0}t&&mf.markDirty(this.gameObject,!0)}if(this.receivedUpdate=!1,this.lastPosition.copy(e),this.lastRotation.copy(t),this.lastScale.copy(n),!this._model||!this._model||this._model.hasOwnership===void 0||!this._model.hasOwnership)return;this.rb&&this.overridePhysics&&this._wasKinematic!==void 0&&(qm&&console.log(`reset kinematic`,this.rb.name,this._wasKinematic),this.rb.isKinematic=this._wasKinematic);let r=this.rb||this.fastMode;if(this._needsUpdate&&(this.context.time.frameCount%10==0||r)){if(Zm++,r&&Qm>0&&this.context.time.frameCount%Qm!==0)return;qm&&console.debug(`[SyncedTransform] Send update`,this.context.connection.connectionId,this.guid,this.gameObject.name,this.gameObject.guid),this._needsUpdate=!1;let e=Xm(this.guid,this,!!r);this.context.connection.sendBinary(e)}}},eh=class e{event;get deviceIndex(){return this.event.deviceIndex}get pointerId(){return this.event.pointerId}button;buttonName;get pressure(){return this.event.pressure}get used(){return this._used}_used=!1;use(){this._used||(this._used=!0,this.event.use())}_propagationStopped=!1;get propagationStopped(){return this._propagationStopped}stopPropagation(){this._propagationStopped=!0,this.event.stopImmediatePropagation()}stopImmediatePropagation(){this._propagationStopped=!0,this.event.stopImmediatePropagation()}z__pointer_ctured=!1;setPointerCapture(){this.z__pointer_ctured=!0}z__pointer_cture_rleased=!1;releasePointerCapture(){this.z__pointer_cture_rleased=!0}inputSource;get mode(){return this.event.mode}object;point;normal;face;distance;instanceId;intersection;isDown;isUp;isPressed;isClick;isDoubleClick;input;constructor(e,t){this.event=t,this.input=e,this.button=t.button}clone(){let t=new e(this.input,this.event);return Object.assign(t,this),t}Use(){this.use()}StopPropagation(){this.event.stopImmediatePropagation()}};function th(e,t){return G.foreachComponent(e,e=>{if(!e.enabled)return;let n=e;if(t)switch(t){case`pointerdown`:if(n.onPointerDown)return!0;break;case`pointerup`:if(n.onPointerUp||n.onPointerClick)return!0;break;case`pointermove`:if(n.onPointerEnter||n.onPointerExit||n.onPointerMove)return!0;break}else if(n.onPointerDown||n.onPointerUp||n.onPointerEnter||n.onPointerExit||n.onPointerClick)return!0},!1)===!0}var nh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},rh=class extends K{awake(){gh.createIfNoneExists(this.context)}onEnable(){gh.get(this.context)?.register(this)}onDisable(){gh.get(this.context)?.unregister(this)}},ih=class extends rh{targets=null;raycastHits=[];ignoreSkinnedMeshes=!1;start(){this.targets=[this.gameObject]}performRaycast(e=null){if(!this.targets)return null;e??=new kd,e.targets=this.targets,e.results=this.raycastHits,e.useAcceleratedRaycast=!0;let t=e.testObject;this.ignoreSkinnedMeshes&&(e.testObject=e=>e instanceof ze?`continue in children`:t?t(e):!0);let n=this.context.physics.raycast(e);return e.testObject=t,n}};nh([F()],ih.prototype,`ignoreSkinnedMeshes`,void 0);var ah=class extends ih{constructor(){super(),this.ignoreSkinnedMeshes=!0}},oh=class e extends rh{static allow=!0;performRaycast(t){if(!pd.active||!e.allow||!t?.ray)return null;let n=t.ray.origin;return this.context.physics.sphereOverlap(n,.015,!1,!0)}},sh=class{static getObject(e){let t=e[Yi];return t&&(e=t.isComponent===!0?t.gameObject:t),e}static isInteractable(e,t){if(t&&(t.canvasGroup=void 0,t.graphic=void 0),e==null||!e.visible||(e=this.getObject(e),!e.visible))return!1;let n=this.tryFindCanvasGroup(e);if(n?.isCanvasGroup===!0&&(t&&(t.canvasGroup=n),n.blocksRaycasts===!1||n.interactable===!1))return!1;let r=Vf(e,e=>{if(e.isGraphic===!0)return e},!1);return t&&r?.isGraphic===!0&&(t.graphic=r),!(r?.raycastTarget===!1||r?.layer===2)}static tryFindCanvasGroup(e){if(!e)return null;let t=Vf(e,e=>{if(e.activeAndEnabled){let t=e;if(t.blocksRaycasts!==void 0&&t.interactable!==void 0)return t}},!1);return t===void 0?this.tryFindCanvasGroup(e.parent):t}};function ch(e){return e[Yi]||(e.parent?ch(e.parent):null)}function lh(e){return e.isUI===!0||typeof e[Yi]==`object`}function uh(e,t){if(!e)return;let n=e.material;if(n?.isMaterial===!0){let r=e.parent;r&&r.isText,n.side=t.doubleSided??!0?2:0,n.shadowSide=t.doubleSided?2:0,e.castShadow=t.castShadows?t.castShadows:!1,e.receiveShadow=t.receiveShadows?t.receiveShadows:!1}for(let n of e.children)uh(n,t)}function dh(e,t,n){e[t]===void 0&&console.warn(`Field`,t,`is undefined on`,e);let r=Proxy.revocable(e[t],{set(e,t,r,i){let a=e[t],o=Reflect.set(e,t,r,i);return n(r,a),o}}),i=r.revoke,a=e[t];return r.revoke=()=>{e[t]=a,i()},e[t]=r.proxy,r}var fh=Symbol(`Scheduled action`);function ph(e,t,n=z.OnBeforeRender){let r=e[fh];r||=e[fh]={};let i=t.name;r[n]||(r[n]={});let a=r[n];if(a[i])return;function*o(){t?.call(e),a[i]=null}a[i]=e.startCoroutine(o(),n)}var mh=A(`debugeventsystem`),hh;(function(e){e.BeforeHandleInput=`BeforeHandleInput`,e.AfterHandleInput=`AfterHandleInput`})(hh||={}),La(e=>{gh.createIfNoneExists(e)});var gh=class e extends K{static ensureUpdateMeshUI(e,t,n=!1){_h.update(e,t,n)}static markUIDirty(e){_h.markDirty()}static createIfNoneExists(t){t.scene.getComponent(e)||t.scene.addComponent(e)}static get(t){return this.createIfNoneExists(t),t.scene.getComponent(e)}static get instance(){return this.get(B.Current)}raycaster=[];register(e){e&&this.raycaster&&!this.raycaster.includes(e)&&this.raycaster?.push(e)}unregister(e){let t=this.raycaster?.indexOf(e);t!==void 0&&t!==-1&&this.raycaster?.splice(t,1)}get hasActiveUI(){return this.currentActiveMeshUIComponents.length>0}get isHoveringObjects(){return this.hoveredByID.size>0}awake(){this.gameObject!==this.context.scene&&(console.debug(`[Needle Engine] EventSystem is only allowed on the scene root. Disabling EventSystem on '${this.gameObject.name}'`),this.enabled=!1)}start(){this.context.scene.getComponent(rh)||this.context.scene.addComponent(ih)}onEnable(){this.context.input.addEventListener(L.PointerDown,this.onPointerEvent),this.context.input.addEventListener(L.PointerUp,this.onPointerEvent),this.context.input.addEventListener(L.PointerMove,this.onPointerEvent)}onDisable(){this.context.input.removeEventListener(L.PointerDown,this.onPointerEvent),this.context.input.removeEventListener(L.PointerUp,this.onPointerEvent),this.context.input.removeEventListener(L.PointerMove,this.onPointerEvent)}pressedByID=new Map;hoveredByID=new Map;onBeforeRender(){this.resetMeshUIStates()}onPointerEvent=e=>{if(e===void 0||e.propagationStopped||e.defaultPrevented||e.used)return;let t=new eh(this.context.input,e);this._currentPointerEventName=e.type,t.inputSource=this.context.input,t.isClick=e.isClick,t.isDoubleClick=e.isDoubleClick,t.isDown=e.type==L.PointerDown,t.isUp=e.type==L.PointerUp,t.isPressed=this.context.input.getPointerPressed(e.pointerId);let n=new kd;e.hasRay?n.ray=e.ray:n.screenPoint=this.context.input.getPointerPositionRC(e.pointerId),n.allowSlowRaycastFallback=e.isClick||e.isDoubleClick;let r=this.performRaycast(n);if(mh&&(t.isDown?console.log(`DOWN`,{id:t.pointerId,hits:r.length}):t.isUp&&console.log(`UP`,{id:t.pointerId,hits:r.length}),t.isClick&&console.log(`CLICK`,{id:t.pointerId,hits:r.length})),r){for(let t of r)t.event=e,e.intersections.push(t);e.origin.onPointerHits&&e.origin.onPointerHits({sender:this,event:e,hits:r})}mh&&t.isClick&&Ti(`EventSystem: `+t.pointerId+` - `+this.context.time.frame+` - Up:`+t.isUp+`, Down:`+t.isDown);let i={sender:this,args:t,hasActiveUI:this.currentActiveMeshUIComponents.length>0};this.dispatchEvent(new CustomEvent(hh.BeforeHandleInput,{detail:i})),this.handleIntersections(r,t),this.dispatchEvent(new CustomEvent(hh.AfterHandleInput,{detail:i}))};_sortedHits=[];_testObjectsCache=new Map;_currentlyActiveRaycaster=null;_currentPointerEventName=null;shouldRaycastObject=e=>{let t=e&&`getComponent`in e?e.getComponent(rh):null;if(t&&t!=this._currentlyActiveRaycaster)return!1;let n=null;if(lh(e)&&(n=e[Yi]?.gameObject),this._testObjectsCache.has(e)||n&&this._testObjectsCache.has(n))return this._testObjectsCache.get(e)===!1?`continue in children`:!0;{let t=th(e,this._currentPointerEventName);if(!t&&n&&(t=th(n,this._currentPointerEventName)),t){this._testObjectsCache.set(e,!0);for(let t of e.children)this.shouldRaycastObject_AddToYesCache(t);return!0}return this._testObjectsCache.set(e,!1),`continue in children`}};shouldRaycastObject_AddToYesCache(e){this._testObjectsCache.set(e,!0);for(let t of e.children)this.shouldRaycastObject_AddToYesCache(t)}performRaycast(e){if(!this.raycaster)return null;this._testObjectsCache.clear(),this._sortedHits.length=0,e.testObject=this.shouldRaycastObject;for(let t of this.raycaster){if(!t.activeAndEnabled)continue;this._currentlyActiveRaycaster=t;let n=t.performRaycast(e);this._currentlyActiveRaycaster=null,n&&n.length>0&&this._sortedHits.push(...n)}return this._sortedHits.sort((e,t)=>e.distance-t.distance),this._sortedHits}assignHitInformation(e,t){t?(e.intersection=t,e.point=t.point,e.normal=t.normal,e.face=t.face,e.distance=t.distance,e.instanceId=t.instanceId):(e.intersection=void 0,e.point=void 0,e.normal=void 0,e.face=void 0,e.distance=void 0,e.instanceId=void 0)}handleIntersections(e,t){if(e?.length){e=this.sortCandidates(e);for(let n of e){if(t.event.immediatePropagationStopped)return!1;if(this.assignHitInformation(t,n),this.handleEventOnObject(n.object,t))return!0}}this.assignHitInformation(t,e?.[0]),this.invokePointerCapture(t);let n=this.hoveredByID.get(t.pointerId);return n&&this.propagatePointerExit(n.obj,n.data,null),this.hoveredByID.delete(t.pointerId),t.isUp&&(this.pressedByID.get(t.pointerId)?.handlers.forEach(e=>this.invokeOnPointerUp(t,e)),this.pressedByID.delete(t.pointerId)),!1}_sortingBuffer=[];_noDepthTestingResults=[];sortCandidates(e){this._sortingBuffer.length=0,this._noDepthTestingResults.length=0;for(let t=0;t{t(e)},!1),e=e.parent}handleMainInteraction(e,t,n){let r=this.pressedByID.get(t.pointerId),i=n!==e,a=!0;switch(t.event.pointerType){case`mouse`:case`touch`:let e=this.context.input.getPointerPositionLastFrame(t.pointerId),n=this.context.input.getPointerPosition(t.pointerId);a=e&&!N.approximately(e,n);break;case`controller`:case`hand`:break}this.propagate(e,e=>{let n=e;n.interactable!==!1&&(!n.activeAndEnabled||!n.enabled||(n.onPointerEnter&&i&&this.handlePointerEnter(n,t),t.isDown&&n.onPointerDown&&(n.onPointerDown(t),r?.handlers.add(n),this.handlePointerCapture(t,n)),n.onPointerMove&&(a&&n.onPointerMove(t),this.handlePointerCapture(t,n)),t.isUp&&(n.onPointerUp&&(this.invokeOnPointerUp(t,n),r?.handlers.delete(n)),n.onPointerExit&&t.event?.pointerType===tc.Touch&&(this.handlePointerExit(n,t),this.hoveredByID.delete(t.pointerId))),t.isClick&&n.onPointerClick&&n.onPointerClick(t)))}),t.isUp&&(r?.handlers.forEach(e=>{this.invokeOnPointerUp(t,e)}),this.pressedByID.delete(t.pointerId))}propagatePointerExit(e,t,n){this.propagate(e,e=>{if(!e.gameObject||e.destroyed)return;let r=e;if(r.onPointerExit||r.onPointerEnter){if(n&&this.isChild(n,e.gameObject))return;this.handlePointerExit(r,t)}})}invokeOnPointerUp(e,t){t.onPointerUp?.call(t,e),this.releasePointerCapture(e,t)}handlePointerEnter(e,t){e.onPointerEnter&&this.updatePointerState(e,t.pointerId,this.pointerEnterSymbol,!0)&&e.onPointerEnter(t),this.updatePointerState(e,t.pointerId,this.pointerExitSymbol,!1)}handlePointerExit(e,t){e.onPointerExit&&this.updatePointerState(e,t.pointerId,this.pointerExitSymbol,!0)&&e.onPointerExit(t),this.updatePointerState(e,t.pointerId,this.pointerEnterSymbol,!1)}updatePointerState(e,t,n,r){let i=e[n];if(r)return i&&i.includes(t)?!1:(i||=[],i.push(t),e[n]=i,!0);{if(!i||!i.includes(t))return!1;let e=i.indexOf(t);return e!==-1&&i.splice(e,1),!0}}_capturedPointer={};handlePointerCapture(e,t){if(e.z__pointer_ctured){e.z__pointer_ctured=!1;let n=e.pointerId;if(t.onPointerMove){let e=this._capturedPointer[n]||[];e.push(t),this._capturedPointer[n]=e}else M()&&!t.z__warned_no_pointermove&&(t.z__warned_no_pointermove=!0,console.warn(`PointerCapture was requested but the component doesn't implement onPointerMove. It will not receive any pointer events`))}else e.z__pointer_cture_rleased&&(e.z__pointer_cture_rleased=!1,this.releasePointerCapture(e,t))}releasePointerCapture(e,t){let n=e.pointerId;if(this._capturedPointer[n]){let e=this._capturedPointer[n].indexOf(t);e!==-1&&(this._capturedPointer[n].splice(e,1),mh&&console.log(`released pointer capture`,n,t,this._capturedPointer))}}invokePointerCapture(e){if(e.event.type===L.PointerMove){let t=e.pointerId,n=this._capturedPointer[t];if(n){mh&&console.log(`Captured`,t,n);for(let t=0;t0&&_h.resetLastSelected(),!(!this.currentActiveMeshUIComponents||this.currentActiveMeshUIComponents.length<=0)){for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vh=A(`debugorbit`),yh=A(`freecam`),bh=A(`debugcamerafit`),xh=A(`smoothcam`),Sh={LEFT:``,UP:``,RIGHT:``,BOTTOM:``},Ch=void 0,wh;(function(e){e.CameraTargetReached=`target-reached`})(wh||={});var Th=class extends CustomEvent{constructor(e,t){super(wh.CameraTargetReached,{detail:{controls:e,type:t}})}},X=class extends K{get isCameraController(){return!0}get controls(){return this._controls}get controllerObject(){return this._cameraObject}onStartInteraction(e){this.controls?.addEventListener(`start`,e)}autoTarget=!0;autoFit=!1;enableRotate=!0;autoRotate=!1;autoRotateSpeed=1;minAzimuthAngle=1/0;maxAzimuthAngle=1/0;minPolarAngle=0;maxPolarAngle=Math.PI;enableKeys=!1;enableDamping=!0;dampingFactor=.1;enableZoom=!0;minZoom=0;maxZoom=1/0;zoomSpeed=1;zoomToCursor=!1;enablePan=!0;lookAtTarget=null;lockLookAtTarget=!0;lookAtConstraint01=1;lookAtConstraint;allowInterrupt=!0;middleClickToFocus=!0;doubleClickToFocus=!0;clickBackgroundToFitScene=2;get targetElement(){return this._controls?.domElement??this._targetElement}set targetElement(e){this._targetElement=e,this._controls&&this._controls.domElement!==e&&(this._controls.disconnect(),this._controls.domElement=e,this._controls.connect())}_targetElement=null;debugLog=!1;get targetLerpSpeed(){return 5}set targetLerpSpeed(e){this.targetLerpDuration=1/e}get targetLerpDuration(){return this._lookTargetLerpDuration}set targetLerpDuration(e){this._lookTargetLerpDuration=e}_lookTargetLerpDuration=1;targetBounds=null;rotateLeft(e){this._controls?._rotateLeft(e)}rotateUp(e){this._controls?._rotateUp(e)}pan(e,t){this._controls?._pan(e,t)}zoomIn(e){e>0?this._controls?._dollyIn(1-e):e<0&&this._controls?._dollyOut(1+e)}_controls=null;_cameraObject=null;_lookTargetLerpActive=!1;_lookTargetStartPosition=new o;_lookTargetEndPosition=new o;_lookTargetLerp01=0;_cameraLerpActive=!1;_cameraStartPosition=new o;_cameraEndPosition=new o;_cameraLerp01=0;_cameraLerpDuration=0;_fovLerpActive=!1;_fovLerpStartValue=0;_fovLerpEndValue=0;_fovLerp01=0;_fovLerpDuration=0;_inputs=0;_enableTime=0;_startedListeningToKeyEvents=!1;_eventSystem;_afterHandleInputFn;_camera=null;_syncedTransform;_didSetTarget=0;_didApplyLookAtTarget=!1;awake(){vh&&console.debug(`OrbitControls`,this),this.lookAtConstraint&&(console.warn(`[OrbitControls] lookAtConstraint is deprecated, use lookTarget and lockLookAtTarget instead. This will be removed in a future version.`),!this.lookAtTarget&&this.lookAtConstraint.sources?.[0]&&(this.lookAtTarget=this.lookAtConstraint.sources[0],this.lockLookAtTarget=this.lookAtConstraint.locked)),this._didSetTarget=0,this._didApplyLookAtTarget=!1,this._startedListeningToKeyEvents=!1,this.context.domElement.cameraControls===!1&&(this.enabled=!1)}start(){this._eventSystem=gh.get(this.context)??void 0,this._eventSystem&&(this._afterHandleInputFn=this.afterHandleInput.bind(this),this._eventSystem.addEventListener(hh.AfterHandleInput,this._afterHandleInputFn))}onDestroy(){this._controls?.dispose(),this._eventSystem?.removeEventListener(hh.AfterHandleInput,this._afterHandleInputFn)}onEnable(){this._didSetTarget=0,this._didApplyLookAtTarget=!1,this._enableTime=this.context.time.time;let e=G.getComponent(this.gameObject,Z);this._camera=e;let t=e?.threeCamera;if(!t&&this.gameObject instanceof C&&(t=this.gameObject),t&&sr(t,this,!0),!this._controls&&t instanceof S){this._cameraObject=t;let e=this.targetElement??this.context.renderer.domElement,n=t?.quaternion.clone();this._controls=new pt(t,e),t?.quaternion.copy(n),Ch===void 0&&(Ch={...this._controls.keys});let r=Or(t),i=this.gameObject.worldForward,a=r.clone().sub(i.multiplyScalar(2.5));this._controls.target.copy(a)}if(this._controls)if(yh&&(this.enablePan=!0,this.enableZoom=!0,this.middleClickToFocus=!0,j.isMobileDevice()&&(this.doubleClickToFocus=!0)),this._controls.addEventListener(`start`,this.onControlsChangeStarted),this._controls.addEventListener(`endMovement`,this.onControlsChangeEnded),!this._startedListeningToKeyEvents&&this.enableKeys)this._startedListeningToKeyEvents=!0,this._controls.listenToKeyEvents(this.context.domElement);else try{this._controls.stopListenToKeyEvents()}catch{}this._syncedTransform=G.getComponent(this.gameObject,$m)??void 0,this.context.pre_render_callbacks.push(this.__onPreRender),this._activePointerEvents=[],this.context.input.addEventListener(`pointerdown`,this._onPointerDown,{queue:sc.Early}),this.context.input.addEventListener(`pointerdown`,this._onPointerDownLate,{queue:sc.Late}),this.context.input.addEventListener(`pointerup`,this._onPointerUp,{queue:sc.Early}),this.context.input.addEventListener(`pointerup`,this._onPointerUpLate,{queue:sc.Late})}onDisable(){if(this._camera?.threeCamera&&sr(this._camera.threeCamera,this,!1),this._controls){this._controls.enabled=!1,this._controls.autoRotate=!1,this._controls.removeEventListener(`start`,this.onControlsChangeStarted),this._controls.removeEventListener(`endMovement`,this.onControlsChangeEnded);try{this._controls.stopListenToKeyEvents()}catch{}this._startedListeningToKeyEvents=!1}this._activePointerEvents.length=0,this.context.input.removeEventListener(`pointerdown`,this._onPointerDown),this.context.input.removeEventListener(`pointerdown`,this._onPointerDownLate),this.context.input.removeEventListener(`pointerup`,this._onPointerUp),this.context.input.removeEventListener(`pointerup`,this._onPointerUpLate)}_activePointerEvents;_lastTimeClickOnBackground=-1;_clickOnBackgroundCount=0;_onPointerDown=e=>{this._activePointerEvents.push(e)};_onPointerDownLate=e=>{e.used&&this._controls&&(this._controls.enabled=!1)};_onPointerUp=e=>{for(let t=this._activePointerEvents.length-1;t>=0;t--){let n=this._activePointerEvents[t];if(n.pointerId===e.pointerId&&n.button===e.button){this._activePointerEvents.splice(t,1);break}}if(this.clickBackgroundToFitScene>0&&e.isClick&&e.button===0){if(e.hasRay||e.intersections.push(...this.context.physics.raycast()),e.intersections.length<=0){let e=this.context.time.time-this._lastTimeClickOnBackground;this._lastTimeClickOnBackground=this.context.time.time,this.clickBackgroundToFitScene<=1||e=this.clickBackgroundToFitScene-1&&(this.autoRotate=!1,this.fitCamera({objects:this.context.scene,immediate:!1}))):this._clickOnBackgroundCount=0}vh&&console.log(this.clickBackgroundToFitScene,e.intersections.length,this._clickOnBackgroundCount)}};_onPointerUpLate=e=>{this.doubleClickToFocus&&e.isDoubleClick&&!e.used&&this.setTargetFromRaycast()};updateTargetNow(e){vh&&console.warn(`OrbitControls: updateTargetNow is using raycasting to update the target immediately. This can be expensive and should be used with caution.`,e);let t=new p(this._cameraObject?.worldPosition,this._cameraObject?.worldForward.multiplyScalar(-1)),n=this.context.physics.raycastFromRay(t,e),r=n.length>0?n[0]:void 0;r&&r.distance>this.minZoom&&r.distance{vh&&console.debug(`OrbitControls: Change started`),this._controls&&(this._orbitStartAngle=this._controls.getAzimuthalAngle()+this._controls.getPolarAngle(),this._zoomStartDistance=this._controls.getDistance()),this._syncedTransform&&this._syncedTransform.requestOwnership()};onControlsChangeEnded=()=>{if(vh&&console.debug(`OrbitControls: Change ended`,{autoTarget:this.autoTarget}),this._controls&&this.autoTarget){let e=this._controls.getAzimuthalAngle()+this._controls.getPolarAngle()-this._orbitStartAngle;Math.abs(e)<.01?(vh&&console.debug(`OrbitControls: Update target`,{deltaAngle:e}),this.updateTargetNow({allowSlowRaycastFallback:!1})):vh&&console.debug(`OrbitControls: No target update`,{deltaAngle:e})}};_shouldDisable=!1;afterHandleInput(e){e.detail.args.pointerId===0&&(e.detail.args.isDown?this._controls&&this._eventSystem&&(this._shouldDisable=this._eventSystem.hasActiveUI):(!e.detail.args.isPressed||e.detail.args.isUp)&&(this._shouldDisable=!1))}onPausedChanged(e){this._controls&&e&&(this._controls.enabled=!1)}onBeforeRender(){if(this._controls){if(this._cameraObject!==this.context.mainCamera){this._controls.enabled=!1;return}if(this._controls.enabled=!0,(this.context.input.getPointerDown(1)||this.context.input.getPointerDown(2)||this.context.input.mouseWheelChanged||this.context.input.getPointerPressed(0)&&this.context.input.getPointerPositionDelta(0)?.length())&&(this._inputs+=1),this._inputs>0&&this.allowInterrupt&&(this.enableRotate&&(this.autoRotate=!1),this._cameraLerpActive=!1,this._lookTargetLerpActive=!1),this._inputs=0,this.autoTarget&&this._didSetTarget++===0){let e=G.getComponent(this.gameObject,Z);if(e&&!this.setLookTargetFromConstraint()){this.debugLog&&console.log(`NO TARGET`);let t=Or(e.threeCamera),n=new o(0,0,-Math.max(.01,t.length())).applyMatrix4(e.threeCamera.matrixWorld);vh&&H.DrawLine(t,n,5592575,10),this.setLookTargetPosition(n,!0)}if(!this.setLookTargetFromConstraint()){let e=new kd;e.screenPoint=new w(0,0),e.lineThreshold=.1;let t=this.context.physics.raycast(e);t.length>0&&this.setLookTargetPosition(t[0].point,!0),bh&&console.log(`OrbitControls hits`,...t)}}if(this.middleClickToFocus&&this.context.input.getPointerClicked(1)&&this.setTargetFromRaycast(),this._lookTargetLerpActive||this._cameraLerpActive||this._fovLerpActive){if(this._cameraLerpActive&&this._cameraObject)if(this._cameraLerp01+=this.context.time.deltaTime/this._cameraLerpDuration,this._cameraLerp01>=1)this._cameraObject.position.copy(this._cameraEndPosition),this._cameraLerpActive=!1,this.dispatchEvent(new Th(this,`camera`));else{let e=N.easeInOutCubic(this._cameraLerp01);this._cameraObject.position.lerpVectors(this._cameraStartPosition,this._cameraEndPosition,e)}if(this._lookTargetLerpActive)if(this._lookTargetLerp01+=this.context.time.deltaTime/this._lookTargetLerpDuration,this._lookTargetLerp01>=1)this.lerpLookTarget(this._lookTargetEndPosition,this._lookTargetEndPosition,1),this._lookTargetLerpActive=!1,this.dispatchEvent(new Th(this,`lookat`));else{let e=N.easeInOutCubic(this._lookTargetLerp01);this.lerpLookTarget(this._lookTargetStartPosition,this._lookTargetEndPosition,e)}if(this._fovLerpActive&&this._cameraObject){let e=this._cameraObject;if(this._fovLerp01+=this.context.time.deltaTime/this._fovLerpDuration,this._fovLerp01>=1)e.fov=this._fovLerpEndValue,this._fovLerpActive=!1;else{let t=N.easeInOutCubic(this._fovLerp01);e.fov=N.lerp(this._fovLerpStartValue,this._fovLerpEndValue,t)}e.updateProjectionMatrix()}}if(this.targetBounds){let e=this._controls.target,t=this.targetBounds.worldPosition,n=P(this.targetBounds.worldScale).multiplyScalar(.5),r=P(t).sub(n),i=P(t).add(n),a=P(this._controls.target).clamp(r,i),o=.1;o<=0?e.copy(a):e.lerp(a,this.context.time.deltaTime/o),this._lookTargetLerpActive&&(o<=0?this._lookTargetEndPosition.copy(a):this._lookTargetEndPosition.lerp(a,this.context.time.deltaTime/(o*5))),vh&&H.DrawWireBox(t,n.multiplyScalar(2),16755200)}if(this._controls){this.debugLog&&(this._controls.domElement=this.context.renderer.domElement);let e=1/(this.context.focusRectSettings?.zoom||1);if(this._controls.enabled=!this._shouldDisable&&this._camera===this.context.mainCameraComponent&&!this.context.isInXR&&!this._activePointerEvents.some(e=>e.used),this._controls.keys=this.enableKeys?Ch:Sh,this._controls.autoRotate=this.autoRotate,this._controls.autoRotateSpeed=this.autoRotateSpeed,this._controls.enableZoom=this.enableZoom,this._controls.zoomSpeed=this.zoomSpeed,this._controls.zoomToCursor=this.zoomToCursor,this._controls.enableDamping=this.enableDamping,this._controls.dampingFactor=this.dampingFactor,this._controls.enablePan=this.enablePan,this._controls.panSpeed=e,this._controls.enableRotate=this.enableRotate,this._controls.minAzimuthAngle=this.minAzimuthAngle,this._controls.maxAzimuthAngle=this.maxAzimuthAngle,this._controls.minPolarAngle=this.minPolarAngle,this._controls.maxPolarAngle=this.maxPolarAngle,yh||(this._camera?.threeCamera?.type===`PerspectiveCamera`?(this._controls.minDistance=this.minZoom,this._controls.maxDistance=this.maxZoom,this._controls.minZoom=0,this._controls.maxZoom=1/0):(this._controls.minDistance=0,this._controls.maxDistance=1/0,this._controls.minZoom=this.minZoom,this._controls.maxZoom=this.maxZoom)),typeof xh==`number`||xh===!0){this._controls.enableDamping=!0;let e=typeof xh==`number`?xh:.99;this._controls.dampingFactor=Math.max(.001,1-Math.min(1,e))}this.allowInterrupt||(this._lookTargetLerpActive&&(this._controls.enablePan=!1),this._cameraLerpActive&&(this._controls.enableRotate=!1,this._controls.autoRotate=!1),(this._lookTargetLerpActive||this._cameraLerpActive)&&(this._controls.enableZoom=!1)),this.context.isInXR||(!yh&&this.lookAtTarget&&!this._lookTargetLerpActive&&(this.lockLookAtTarget?this.setLookTargetFromConstraint(this.lookAtConstraint01):this._didApplyLookAtTarget||(this._didApplyLookAtTarget=!0,this.setLookTargetFromConstraint(1))),this._controls.update(this.context.time.deltaTime),vh&&H.DrawWireSphere(this._controls.target,.1,65280))}}}__onPreRender=()=>{let e=this.context.pre_render_callbacks.indexOf(this.__onPreRender);e>=0&&this.context.pre_render_callbacks.splice(e,1),this.autoFit&&(this.autoFit=!1,this.fitCamera({centerCamera:`y`,immediate:!0,objects:this.scene.children}))};setCameraAndLookTarget(e,t=!1){if(!e)return(M()||vh)&&console.warn(`[OrbitControls] setCameraAndLookTarget target is null`),!1;if(!(e instanceof S)&&!(e instanceof Z))return(M()||vh)&&console.warn(`[OrbitControls] setCameraAndLookTarget target is not an Object3D or Camera`),!1;e instanceof Z&&(e=e.gameObject);let n=e.worldPosition,r=e.worldForward;e instanceof qe&&(vh&&console.debug(`[OrbitControls] setCameraAndLookTarget flip forward direction for camera`),r.multiplyScalar(-1));let i=new p(n,r);return vh&&H.DrawRay(i.origin,i.direction,16711680,10),this.setTargetFromRaycast(i,t)||this.setLookTargetPosition(i.at(2,P()),t),this.setCameraTargetPosition(n,t),!0}setCameraTargetPosition(e,t=!1){e&&(e instanceof S&&(e=Or(e)),this._cameraEndPosition||=new o,this._cameraEndPosition.copy(e),t===!0?(this._cameraLerpActive=!1,this._cameraObject&&this._cameraObject.position.copy(this._cameraEndPosition)):this._cameraObject&&(this._cameraLerpActive=!0,this._cameraLerp01=0,this._cameraStartPosition.copy(this._cameraObject?.position),typeof t==`number`?this._cameraLerpDuration=t:this._cameraLerpDuration=this.targetLerpDuration))}get cameraLerpActive(){return this._cameraLerpActive}stopCameraLerp(){this._cameraLerpActive=!1}setFieldOfView(e,t=!1){if(!this._controls||typeof e!=`number`)return;let n=this._camera?.threeCamera;n&&(t===!0?n.fov=e:(this._fovLerpActive=!0,this._fovLerp01=0,this._fovLerpStartValue=n.fov,this._fovLerpEndValue=e,typeof t==`number`?this._fovLerpDuration=t:this._fovLerpDuration=this.targetLerpDuration))}setLookTargetPosition(e=null,t=!1){this._controls&&e&&(e instanceof S&&(e=Or(e)),this._lookTargetEndPosition.copy(e),this._didSetTarget++,vh&&(console.warn(`OrbitControls: setLookTargetPosition`,e,t),H.DrawWireSphere(this._lookTargetEndPosition,.2,16711680,2)),t===!0?this.lerpLookTarget(this._lookTargetEndPosition,this._lookTargetEndPosition,1):(this._lookTargetLerpActive=!0,this._lookTargetLerp01=0,this._lookTargetStartPosition.copy(this._controls.target),typeof t==`number`?this._lookTargetLerpDuration=t:this._lookTargetLerpDuration=this.targetLerpDuration))}get lookTargetLerpActive(){return this._lookTargetLerpActive}stopLookTargetLerp(){this._lookTargetLerpActive=!1}setLookTargetFromConstraint(e=1){return!this._controls||!this.lookAtTarget?!1:(this.lookAtTarget.getWorldPosition(this._lookTargetEndPosition),this.lerpLookTarget(this._controls.target,this._lookTargetEndPosition,e),!0)}lerpLookTarget(e,t,n){this._controls&&(n>=1?this._controls.target.copy(t):this._controls.target.lerpVectors(e,t,n),this.lookAtTarget&&this.lockLookAtTarget&&(this.lookAtTarget.worldPosition=this._controls.target))}setTargetFromRaycast(e,t=!1){if(!this.controls)return!1;let n=e?this.context.physics.raycastFromRay(e):this.context.physics.raycast();for(let e of n)if(e.distance>0&&G.isActiveInHierarchy(e.object)){let n=ch(e.object);if(n&&n.canvas?.screenspace)break;return this.setLookTargetPosition(e.point,t),!0}return!1}fitCamera(e,t){let n;if(Array.isArray(e)||e&&`type`in e?n=e:e&&typeof e==`object`&&!(e instanceof S)&&!Array.isArray(e)&&(t=e,n=t.objects),n&&!Array.isArray(n)&&(n=[n]),(!Array.isArray(n)||n&&n.length<=0)&&(n=this.context.scene.children),!Array.isArray(n)||n.length<=0){console.warn(`No objects to fit camera to...`);return}let r=Mm({objects:[...n],...t,autoApply:!1,context:this.context,camera:this._cameraObject,currentZoom:this._controls?.getDistance()||void 0,minZoom:this.minZoom,maxZoom:this.maxZoom});r&&(this.setLookTargetPosition(r.lookAt,t?.immediate||!1),this.setCameraTargetPosition(r.position,t?.immediate||!1),this.setFieldOfView(t?.fov,t?.immediate||!1),this.onBeforeRender())}_haveAttachedKeyboardEvents=!1};Y([F()],X.prototype,`autoTarget`,void 0),Y([F()],X.prototype,`autoFit`,void 0),Y([F()],X.prototype,`enableRotate`,void 0),Y([F()],X.prototype,`autoRotate`,void 0),Y([F()],X.prototype,`autoRotateSpeed`,void 0),Y([F()],X.prototype,`minAzimuthAngle`,void 0),Y([F()],X.prototype,`maxAzimuthAngle`,void 0),Y([F()],X.prototype,`minPolarAngle`,void 0),Y([F()],X.prototype,`maxPolarAngle`,void 0),Y([F()],X.prototype,`enableKeys`,void 0),Y([F()],X.prototype,`enableDamping`,void 0),Y([F()],X.prototype,`dampingFactor`,void 0),Y([F()],X.prototype,`enableZoom`,void 0),Y([F()],X.prototype,`minZoom`,void 0),Y([F()],X.prototype,`maxZoom`,void 0),Y([F()],X.prototype,`zoomSpeed`,void 0),Y([F()],X.prototype,`enablePan`,void 0),Y([F(S)],X.prototype,`lookAtTarget`,void 0),Y([F()],X.prototype,`lockLookAtTarget`,void 0),Y([F()],X.prototype,`lookAtConstraint01`,void 0),Y([F(Pm)],X.prototype,`lookAtConstraint`,void 0),Y([F()],X.prototype,`allowInterrupt`,void 0),Y([F()],X.prototype,`middleClickToFocus`,void 0),Y([F()],X.prototype,`doubleClickToFocus`,void 0),Y([F()],X.prototype,`clickBackgroundToFitScene`,void 0),Y([F()],X.prototype,`targetLerpDuration`,null),Y([F(S)],X.prototype,`targetBounds`,void 0);var Eh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Dh;(function(e){e[e.None=0]=`None`,e[e.Skybox=1]=`Skybox`,e[e.SolidColor=2]=`SolidColor`,e[e.Uninitialized=4]=`Uninitialized`})(Dh||={});var Oh=A(`debugcam`),kh=A(`debugscreenpointtoray`),Z=class e extends K{get isCamera(){return!0}get aspect(){return this._cam instanceof C?this._cam.aspect:this.context.domWidth/this.context.domHeight}set aspect(e){this._cam instanceof C&&this._cam.aspect!==e&&(this._cam.aspect=e,this._cam.updateProjectionMatrix())}get fieldOfView(){return this._cam instanceof C?this._cam.fov:this._fov}set fieldOfView(e){let t=this.fieldOfView!=e;if(this._fov=e,t&&this._cam&&this._cam instanceof C){if(this._fov===void 0){console.warn(`Can not set undefined fov on PerspectiveCamera`);return}this._cam.fov=this._fov,this._cam.updateProjectionMatrix()}}get nearClipPlane(){return this._nearClipPlane}set nearClipPlane(e){let t=this._nearClipPlane!=e;this._nearClipPlane=e,this._cam&&(t||this._cam.near!=e)&&(this._cam.near=e,this._cam.updateProjectionMatrix())}_nearClipPlane=.1;get farClipPlane(){return this._farClipPlane}set farClipPlane(e){let t=this._farClipPlane!=e;this._farClipPlane=e,this._cam&&(t||this._cam.far!=e)&&(this._cam.far=e,this._cam.updateProjectionMatrix())}_farClipPlane=1e3;applyClippingPlane(){this._cam&&(this._cam.near=this._nearClipPlane,this._cam.far=this._farClipPlane,this._cam.updateProjectionMatrix())}get clearFlags(){return this._clearFlags}set clearFlags(e){if(typeof e==`string`)switch(e){case`skybox`:e=Dh.Skybox;break;case`solidcolor`:e=Dh.SolidColor;break;default:e=Dh.None;break}e!==this._clearFlags&&(this._clearFlags=e,this.applyClearFlagsIfIsActiveCamera())}orthographic=!1;orthographicSize=5;ARBackgroundAlpha=0;set cullingMask(e){this._cullingMask=e,this._cam&&(this._cam.layers.mask=e)}get cullingMask(){return this._cam?this._cam.layers.mask:this._cullingMask}_cullingMask=4294967295;set cullingLayer(e){this.cullingMask=(1<>>0}set backgroundBlurriness(e){e!==this._backgroundBlurriness&&(e===void 0?this._backgroundBlurriness=void 0:this._backgroundBlurriness=Math.min(Math.max(e,0),1),this.applyClearFlagsIfIsActiveCamera())}get backgroundBlurriness(){return this._backgroundBlurriness}_backgroundBlurriness=void 0;set backgroundIntensity(e){e!==this._backgroundIntensity&&(e===void 0?this._backgroundIntensity=void 0:this._backgroundIntensity=Math.min(Math.max(e,0),10),this.applyClearFlagsIfIsActiveCamera())}get backgroundIntensity(){return this._backgroundIntensity}_backgroundIntensity=void 0;set backgroundRotation(e){e!==this._backgroundRotation&&(e===void 0?this._backgroundRotation=void 0:this._backgroundRotation=e,this.applyClearFlagsIfIsActiveCamera())}get backgroundRotation(){return this._backgroundRotation}_backgroundRotation=void 0;set environmentIntensity(e){this._environmentIntensity=e}get environmentIntensity(){return this._environmentIntensity}_environmentIntensity=void 0;get backgroundColor(){return this._backgroundColor??null}set backgroundColor(e){e&&(this._backgroundColor||=new md(1,1,1,1),this._backgroundColor.copy(e),(!(`alpha`in e)||e.alpha===void 0)&&(this._backgroundColor.alpha=1),this.applyClearFlagsIfIsActiveCamera())}set targetTexture(e){this._targetTexture=e}get targetTexture(){return this._targetTexture}_targetTexture=null;_backgroundColor;_fov;_cam=null;_clearFlags=Dh.SolidColor;_skybox;get cam(){return this.threeCamera}get threeCamera(){return this.activeAndEnabled&&this.buildCamera(),this._cam}static _origin=new o;static _direction=new o;screenPointToRay(t,n,r){let i=this.threeCamera,a=e._origin;a.set(t,n,-1),this.context.input.convertScreenspaceToRaycastSpace(a),kh&&console.log(`screenPointToRay`,t.toFixed(2),n.toFixed(2),`now:`,a.x.toFixed(2),a.y.toFixed(2),`isInXR:`+this.context.isInXR),a.z=-1,a.unproject(i);let o=e._direction.set(a.x,a.y,a.z),s=Or(i);return o.sub(s),o.normalize(),r?(r.set(s,o),r):new p(s.clone(),o.clone())}_frustum;getFrustum(){return this._frustum||(this._frustum=new ge,this.updateFrustum()),this._frustum}updateFrustum(){this._frustum||=new ge,this._frustum.setFromProjectionMatrix(this.getProjectionScreenMatrix(this._projScreenMatrix,!0),this.context.renderer.coordinateSystem)}getProjectionScreenMatrix(e,t){return t&&this._projScreenMatrix.multiplyMatrices(this.threeCamera.projectionMatrix,this.threeCamera.matrixWorldInverse),e===this._projScreenMatrix?e:e.copy(this._projScreenMatrix)}_projScreenMatrix=new ce;awake(){kh&&window.addEventListener(`pointerdown`,e=>{let t=e.clientX,n=e.clientY;console.log(`touch`,t.toFixed(2),n.toFixed(2));let r=this.screenPointToRay(t,n),i=`#`+Math.floor(Math.random()*16777215).toString(16);H.DrawRay(r.origin,r.direction,i,10)})}onEnable(){Oh&&console.log(`Camera enabled: \"${this.name}\". ClearFlags=${Dh[this._clearFlags]}`,this),this.buildCamera(),(this.tag==`MainCamera`||!this.context.mainCameraComponent)&&(this.context.setCurrentCamera(this),jh(this)),this.applyClearFlagsIfIsActiveCamera({applySkybox:!0})}onDisable(){this.context.removeCamera(this)}onLeaveXR(e){this.fieldOfView=this._fov}onBeforeRender(){if(this._cam&&(this._frustum&&this.updateFrustum(),this._clearFlags===Dh.SolidColor&&this.applyClearFlagsIfIsActiveCamera(),this._targetTexture)){this.context.isManagedExternally&&(this._warnedAboutExternalRenderer||(this._warnedAboutExternalRenderer=!0,console.warn(`Rendering with external renderer is not supported yet. This may not work or throw errors. Please remove the the target texture from your camera: `+this.name,this.targetTexture))),this.context.composer;let e=this.context.renderer;if(e){let t=this.context.mainCameraComponent;this.applyClearFlags(),this._targetTexture.render(this.context.scene,this._cam,e),t?.applyClearFlags()}}}buildCamera(){if(this._cam)return;let e=this.gameObject.isCamera,t=null;if(e?(t=this.gameObject,t?.layers.enableAll(),t instanceof C&&(this._fov=t.fov)):t=this.gameObject.children[0],t&&t.isCamera)t instanceof C&&(this._fov&&(t.fov=this._fov),t.near=this._nearClipPlane,t.far=this._farClipPlane,t.updateProjectionMatrix());else if(!this.orthographic)t=new C(this.fieldOfView,window.innerWidth/window.innerHeight,this._nearClipPlane,this._farClipPlane),this.fieldOfView&&(t.fov=this.fieldOfView),this.gameObject.add(t);else{let e=this.orthographicSize*100;t=new ke(window.innerWidth/-e,window.innerWidth/e,window.innerHeight/e,window.innerHeight/-e,this._nearClipPlane,this._farClipPlane),this.gameObject.add(t)}this._cam=t,this._cam.layers.mask=this._cullingMask,this.tag==`MainCamera`&&this.context.setCurrentCamera(this)}applyClearFlagsIfIsActiveCamera(e){this.context.mainCameraComponent===this&&this.applyClearFlags(e)}applyClearFlags(t){if(!this._cam){Oh&&console.log(`Camera does not exist (apply clear flags)`);return}if(this.fieldOfView=this.fieldOfView,Oh){let e=`[Camera] Apply ClearFlags: ${Dh[this._clearFlags]} - \"${this.name}\"`;console.debug(e)}let n=this.context.domElement.getAttribute(`background-image`)||this.context.domElement.getAttribute(`background-color`);switch(this._clearFlags){case Dh.None:return;case Dh.Skybox:if(e.backgroundShouldBeTransparent(this.context)&&(!this.ARBackgroundAlpha||this.ARBackgroundAlpha<.001)){this.context.scene.background=null,this.context.renderer.setClearColor(0,0);return}(!this.scene.background||!this._skybox||t?.applySkybox===!0)&&this.applySceneSkybox(),this._backgroundBlurriness!==void 0&&!this.context.domElement.getAttribute(`background-blurriness`)?this.context.scene.backgroundBlurriness=this._backgroundBlurriness:Oh&&console.warn(`Camera \"${this.name}\" has no background blurriness`),this._backgroundIntensity!==void 0&&!this.context.domElement.getAttribute(`background-intensity`)&&(this.context.scene.backgroundIntensity=this._backgroundIntensity),this._backgroundRotation!==void 0&&!this.context.domElement.getAttribute(`background-rotation`)?this.context.scene.backgroundRotation=this._backgroundRotation:Oh&&console.warn(`Camera \"${this.name}\" has no background intensity`);break;case Dh.SolidColor:if(this._backgroundColor&&!n){let t=this._backgroundColor.alpha;e.backgroundShouldBeTransparent(this.context)&&(t=this.ARBackgroundAlpha??0),this.context.scene.background=null,this.context.xr?.isVR?this.context.renderer.setClearColor(Cr(this._backgroundColor).convertLinearToSRGB()):this.context.renderer.setClearColor(this._backgroundColor,t)}else this._backgroundColor||Oh&&console.warn(`[Camera] has no background color \"${this.name}\" `);break;case Dh.Uninitialized:n||(this.context.scene.background=null,this.context.renderer.setClearColor(0,0));break}}applySceneSkybox(){this._skybox||=new Ah(this),this._skybox.apply()}static backgroundShouldBeTransparent(e){let t=e.renderer.xr?.getSession();if(!t)return!1;if(typeof t._transparent==`boolean`)return t._transparent;let n=t.environmentBlendMode;Oh&&Ti(`Environment blend mode: `+n+` on `+navigator.userAgent);let r=n===`additive`||n===`alpha-blend`;if(e.isInAR&&n===`opaque`){if(navigator.userAgent?.includes(`OculusBrowser`))r=!0;else if(navigator.userAgent?.includes(`Mozilla`)&&navigator.userAgent?.includes(`Mobile WebXRViewer/v2`))r=!0;else if(j.isNeedleAppClip())return!0}return t._transparent=r,r}};Eh([F()],Z.prototype,`aspect`,null),Eh([F()],Z.prototype,`fieldOfView`,null),Eh([F()],Z.prototype,`nearClipPlane`,null),Eh([F()],Z.prototype,`farClipPlane`,null),Eh([F()],Z.prototype,`clearFlags`,null),Eh([F()],Z.prototype,`orthographic`,void 0),Eh([F()],Z.prototype,`orthographicSize`,void 0),Eh([F()],Z.prototype,`ARBackgroundAlpha`,void 0),Eh([F()],Z.prototype,`cullingMask`,null),Eh([F()],Z.prototype,`backgroundBlurriness`,null),Eh([F()],Z.prototype,`backgroundIntensity`,null),Eh([F(He)],Z.prototype,`backgroundRotation`,null),Eh([F()],Z.prototype,`environmentIntensity`,null),Eh([F(md)],Z.prototype,`backgroundColor`,null),Eh([F(ym)],Z.prototype,`targetTexture`,null);var Ah=class{_camera;_skybox;get context(){return this._camera?.context}constructor(e){this._camera=e}apply(){if(this._skybox=this.context.lightmaps.tryGetSkybox(this._camera.sourceId),!this._skybox)this._did_log_failed_to_find_skybox||(this._did_log_failed_to_find_skybox=!0,console.warn(`Camera \"${this._camera.name}\" has no skybox texture. ${this._camera.sourceId}`));else if(this.context.scene.background!==this._skybox){let e=this.context.domElement.getAttribute(`background-image`)||this.context.domElement.getAttribute(`background-color`);Oh&&console.debug(`[Camera] Apply Skybox ${this._skybox?.name} ${e} - \"${this._camera.name}\"`),e?.length||(this._skybox.mapping!==306&&(this._skybox.mapping=303),this.context.scene.background=this._skybox)}}};function jh(e){A(`freecam`)&&e.context.mainCameraComponent===e&&G.getOrAddComponent(e.gameObject,X)}var Mh=A(`debugshadowcomponents`);tt.prototype.interactable={get(){return this.interactive},set(e){this.interactable=e}};var Nh=class e extends K{isRoot(){return this.Root?.gameObject===this.gameObject}get canvas(){let e=this.Root;return e?.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){gh.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}_shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=G.getComponentInParent(this.gameObject,Ph)),this._root}_parentComponent=void 0;__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(t,n){if(!t)return;this.removeShadowComponent();let r=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=G.getComponentInParent(r,e),!this._parentComponent){console.warn(`Component \"${this.name}\" doesn't have a UI parent anywhere. Do you have an UI element outside a Canvas? UI components must be a child of a Canvas component`,this);return}t.name=this.name+` (`+(this.constructor.name??`UI`)+`)`,t.autoLayout=this._parentComponent.controlsChildLayout,t[Yi]=this,this.setShadowComponentOwner(t);let i=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(t);else{let e=this._parentComponent.shadowComponent;e&&(e?.add(t),i=!0)}this.shadowComponent=t,n&&n.shadowComponent&&this.shadowComponent&&n.shadowComponent.add(this.shadowComponent),Jo&&t.add(new _e(.5)),this.onAfterAddedToScene(),i&&rt(),Mh&&console.warn(`Added shadow component`,this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Yi]===void 0||e[Yi]===this)&&(e[Yi]=this,e.children))for(let t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,n){if(e&&e[Yi]===t){n(e);for(let r of e.children)this.traverseOwnedShadowComponents(r,t,n)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}},Ph=class extends Nh{awake(){super.awake()}},Fh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ih=A(`debugui`),Lh=A(`debuguilayout`),Rh=class{width;height},zh=class{x;y;width;height},Bh=new o,Vh=new ce,Hh=new E,Uh=class e extends Nh{get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||=new w,this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}sizeDelta=new w(100,100);pivot=new w(.5,.5);anchorMin=new w(0,0);anchorMax=new w(1,1);minWidth;minHeight;get width(){let e=this.sizeDelta.x;return this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform&&(e=this._parentRectTransform.width*(this.anchorMax.x-this.anchorMin.x),e+=this.sizeDelta.x),this.minWidth!==void 0&&e{this.markDirty()}),dh(this,`sizeDelta`,()=>{this.markDirty()}),dh(this,`pivot`,()=>{this.markDirty()}),dh(this,`anchorMin`,()=>{this.markDirty()}),dh(this,`anchorMax`,()=>{this.markDirty()})}onEnable(){super.onEnable(),this.rectBlock||=new S,this.lastMatrix||=new ce,this._lastAnchoring||=new w,this._initialPosition||=new o,this._anchoredPosition||=new w,this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,this.canvas?.registerTransform(this)}onDisable(){super.onDisable(),this.removeShadowComponent(),this.canvas?.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(Lh?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||=!this.lastMatrix.equals(this.gameObject.matrix),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(Lh&&console.warn(`RectTransform markDirty()`,this.name),this._transformNeedsUpdate=!0,this._lastUpdateFrame=-1)}updateTransform(){(this._transformNeedsUpdate||!this.lastMatrix.equals(this.gameObject.matrix))&&this.canUpdate()&&this.onApplyTransform(this._transformNeedsUpdate?`Marked dirty`:`Matrix changed`)}canUpdate(){return this._transformNeedsUpdate&&this.activeAndEnabled&&this._lastUpdateFrame!==this.context.time.frame}onApplyTransform(t){if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;let n=this.shadowComponent;if(n){this.gameObject.parent?this._parentRectTransform=G.getComponentInParent(this.gameObject.parent,e):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,Lh&&console.warn(`RectTransform → ApplyTransform`,this.name+` because `+t),this.isRoot()?this.Root.screenspace||(n.rotation.y=Math.PI):(n.matrix.identity(),n.matrixAutoUpdate=!1,Bh.set(0,0,0),this.applyPivot(Bh),n.matrix.setPosition(Bh.x,Bh.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Hh.copy(this.gameObject.quaternion),Hh.x*=-1,Hh.z*=-1,Vh.makeRotationFromQuaternion(Hh),n.matrix.premultiply(Vh)),Bh.set(0,0,0),this.applyAnchoring(Bh),this.canvas?.screenspace?Bh.z+=.1:Bh.z+=.01,Vh.identity(),Vh.setPosition(Bh.x,Bh.y,Bh.z),n.matrix.premultiply(Vh),n.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);for(let e of Hf(this.gameObject,Nh,!0,1)){if(e===this||!e.activeAndEnabled)continue;let t=e;t.onParentRectTransformChanged&&t.onParentRectTransformChanged(this)}}}_lastAnchoring;applyAnchoring(e){this._lastAnchoring||=new w;let t=this._lastAnchoring.sub(this._anchoredPosition);this.gameObject.position.x+=t.x,this.gameObject.position.y+=t.y,this._lastAnchoring.copy(this._anchoredPosition),e.x+=this._initialPosition.x-this.gameObject.position.x,e.y+=this._initialPosition.y-this.gameObject.position.y,e.z+=this._initialPosition.z-this.gameObject.position.z;let n=this._parentRectTransform;if(n){let t=0,r=1-this.anchorMax.y-this.anchorMin.y;t-=n.height*.5*r,e.y+=t;let i=0,a=1-this.anchorMax.x-this.anchorMin.x;i-=n.width*.5*a,e.x+=i}}applyPivot(e){if(this.pivot&&!this.isRoot()){let t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;let n=this.pivot.y-.5;e.y-=n*this.sizeDelta.y*this.gameObject.scale.y}}getBasicOptions(){let e={width:this.sizeDelta.x,height:this.sizeDelta.y,offset:0,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0,letterSpacing:-.03};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}_createdBlocks=[];_createdTextBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},Ih&&console.log(this.name,e);let t=new tt(e);return this._createdBlocks.push(t),t}createNewText(e){Ih&&console.log(e),e={...this.getBasicOptions(),...e},Ih&&console.log(this.name,e);let t=new Qe(e);return this._createdTextBlocks.push(t),t}};Fh([F(w)],Uh.prototype,`anchoredPosition`,null),Fh([F(w)],Uh.prototype,`sizeDelta`,void 0),Fh([F(w)],Uh.prototype,`pivot`,void 0),Fh([F(w)],Uh.prototype,`anchorMin`,void 0),Fh([F(w)],Uh.prototype,`anchorMax`,void 0);var Wh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Gh=class extends K{effectColor;effectDistance};Wh([F(md)],Gh.prototype,`effectColor`,void 0),Wh([F(w)],Gh.prototype,`effectDistance`,void 0);var Kh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},qh={backgroundColor:new a(1,1,1),backgroundOpacity:1,borderColor:new a(1,1,1),borderOpacity:1},Jh=class e extends Nh{get isGraphic(){return!0}get color(){return this._color||=new md(1,1,1,1),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||=new md(1,1,1,1),this._color.copy(e),this.onColorChanged())}_alphaFactor=1;setAlphaFactor(e){this._alphaFactor=e,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}sRGBColor=new a(1,0,1);onColorChanged(){if(this.uiObject){this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),qh.backgroundColor=this.sRGBColor,qh.backgroundOpacity=this._color.alpha;let e=this.uiObject._simpleState__activeStates?.[0];if(e){let t=this.uiObject._simpleState__states?.[e];t&&(`backgroundColor`in t&&(qh.backgroundColor=t.backgroundColor),`backgroundOpacity`in t&&(qh.backgroundOpacity=t.backgroundOpacity))}qh.backgroundOpacity*=this._alphaFactor,this.applyEffects(qh,this._alphaFactor),this.uiObject.set(qh),this.markDirty()}}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;_stateManager=null;get rectTransform(){if(this._rect||=G.getComponent(this.gameObject,Uh),!this._rect)throw Error(`Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.`);return this._rect}onParentRectTransformChanged(){this.uiObject?.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&=this._color.clone(),this}setState(e){this.makePanel(),this.uiObject&&(this.uiObject.setState(e),this?.markDirty())}setupState(e){this.makePanel(),this.uiObject&&(this._stateManager||=new it(this.uiObject),this.uiObject.setupState(e.state,e.attributes))}setOptions(e){this.makePanel(),this.uiObject&&this.uiObject.set(e)}awake(){super.awake(),this.makePanel(),dh(this,`_color`,()=>ph(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;let e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(e),this.applyEffects(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(e,t=1){let n=this.gameObject?.getComponent(Gh);n&&(n.effectDistance&&(e.borderWidth=Math.max(Math.abs(n.effectDistance.x),Math.abs(n.effectDistance.y))),n.effectColor&&(e.borderColor=n.effectColor,e.borderOpacity=n.effectColor.alpha*t))}static textureCache=new Map;async setTexture(t){if(this.setOptions({backgroundOpacity:0}),t){if(e.textureCache.has(t))t=e.textureCache.get(t);else if(!t.isRenderTargetTexture){let n=t.clone();n.colorSpace=l,e.textureCache.set(t,n),t=n}this.setOptions({backgroundImage:t,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:`stretch`}),vt.assignTextureLOD(t,0).then(n=>{n instanceof be&&(t&&e.textureCache.set(t,n),this.setOptions({backgroundImage:n}),this.markDirty())})}else this.setOptions({backgroundImage:void 0,borderRadius:0,backgroundOpacity:this.color.alpha});this.markDirty()}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}};Kh([F(md)],Jh.prototype,`color`,null),Kh([F()],Jh.prototype,`raycastTarget`,void 0);var Yh=class extends Jh{_flippedObject=!1;onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}},Xh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Zh=A(`debugtext`),Q;(function(e){e[e.UpperLeft=0]=`UpperLeft`,e[e.UpperCenter=1]=`UpperCenter`,e[e.UpperRight=2]=`UpperRight`,e[e.MiddleLeft=3]=`MiddleLeft`,e[e.MiddleCenter=4]=`MiddleCenter`,e[e.MiddleRight=5]=`MiddleRight`,e[e.LowerLeft=6]=`LowerLeft`,e[e.LowerCenter=7]=`LowerCenter`,e[e.LowerRight=8]=`LowerRight`})(Q||={});var Qh;(function(e){e[e.Truncate=0]=`Truncate`,e[e.Overflow=1]=`Overflow`})(Qh||={});var $h;(function(e){e[e.Wrap=0]=`Wrap`,e[e.Overflow=1]=`Overflow`})($h||={});var eg;(function(e){e[e.Normal=0]=`Normal`,e[e.Bold=1]=`Bold`,e[e.Italic=2]=`Italic`,e[e.BoldAndItalic=3]=`BoldAndItalic`})(eg||={});var tg=class extends Jh{alignment=Q.UpperLeft;verticalOverflow=Qh.Truncate;horizontalOverflow=$h.Wrap;lineSpacing=1;supportRichText=!1;font;fontStyle=eg.Normal;setAlphaFactor(e){super.setAlphaFactor(e),this.uiObject?.set({fontOpacity:this.color.alpha*this.alphaFactor}),this.markDirty()}get text(){return this._text}set text(e){e!==this._text&&(this._text=e,this.feedText(this.text,this.supportRichText),this.markDirty(),this.context.accessibility.updateElement(this,{label:this.text}))}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e,this.uiObject?.set({fontSize:e})}sRGBTextColor=new a(1,0,1);onColorChanged(){this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),this.uiObject?.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){let e=this.uiObject?._overflow;e&&(e._needsUpdate=!0)}onCreate(e){Zh&&console.log(this),this.horizontalOverflow==$h.Overflow&&(e.whiteSpace=`pre`),this.verticalOverflow==Qh.Truncate&&(this.context.renderer.localClippingEnabled=!0,e.overflow=`hidden`),this.horizontalOverflow==$h.Overflow&&(this.verticalOverflow,Qh.Truncate),e.lineHeight=this.lineSpacing,delete e.backgroundOpacity,delete e.backgroundColor,Zh&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);let t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),Zh&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text=``;_fontSize=12;_textMeshUi=null;getTextOpts(){let e=this.fontSize,t={color:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:`normal`};return this.setFont(t,this.fontStyle),t}onEnable(){super.onEnable(),this.context.accessibility.updateElement(this,{role:`text`,label:this.text,hidden:!1}),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),this.canvas?.registerEventReceiver(this)}onDisable(){super.onDisable(),this.canvas?.unregisterEventReceiver(this),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){super.onDestroy(),this.context.accessibility.removeElement(this)}getAlignment(e){switch(e.flexDirection=`column`,this.alignment){case Q.UpperLeft:case Q.MiddleLeft:case Q.LowerLeft:e.textAlign=`left`;break;case Q.UpperCenter:case Q.MiddleCenter:case Q.LowerCenter:e.textAlign=`center`;break;case Q.UpperRight:case Q.MiddleRight:case Q.LowerRight:e.textAlign=`right`;break}switch(this.alignment){default:case Q.UpperLeft:case Q.UpperCenter:case Q.UpperRight:e.alignItems=`start`;break;case Q.MiddleLeft:case Q.MiddleCenter:case Q.MiddleRight:e.alignItems=`center`;break;case Q.LowerLeft:case Q.LowerCenter:case Q.LowerRight:e.alignItems=`end`;break}return e}feedText(e,t){if(Zh&&console.log(`feedText`,this.uiObject,e,t),this.uiObject)if(this._textMeshUi||=[],this.uiObject.children.length=0,!t||e.length===0)this.uiObject.textContent=e;else{let t=this.getNextTag(e);if(!t){this.uiObject.textContent=``,this.setOptions({textContent:e});return}else if(t.startIndex>0){for(let e=this.uiObject.children.length-1;e>=0;e--){let t=this.uiObject.children[e];t.isUI&&(this.uiObject.remove(t),t.clear())}let n=new et({textContent:e.substring(0,t.startIndex),color:`inherit`});this.uiObject.add(n)}let n=[];for(;t;){let r=this.getNextTag(e,t.endIndex),i={fontFamily:this.uiObject?.get(`fontFamily`),color:`inherit`,textContent:``};if(r){i.textContent=this.getText(e,t,r),this.handleTag(t,i,n);let a=new et(i);this.uiObject?.add(a)}else{i.textContent=e.substring(t.endIndex),this.handleTag(t,i,n);let r=new et(i);this.uiObject?.add(r)}t=r}}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;let e=[],t=this.canvas,n={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let t=!1;if(this._textMeshUi)for(let r=0;r6?t.color=parseInt(`0x`+e.type.substring(7)):t.color=new a(1,1,1)}else if(e.type==`b`){this.setFont(t,eg.Bold);let r=new ng(e,{fontWeight:700});n.push(r)}else if(e.type==`i`){this.setFont(t,eg.Italic);let r=new ng(e,{fontStyle:`italic`});n.push(r)}}}getText(e,t,n){return e.substring(t.endIndex,n.startIndex)}getNextTag(e,t=0){let n=e.indexOf(`<`,t),r=e.indexOf(`>`,n);if(n>=0&&r>=0){let t=e.substring(n+1,r);return{type:t,startIndex:n,endIndex:r+1,isEndTag:t.startsWith(`/`)}}return null}setFont(e,t){if(!this.font)return;let n=this.font,r=this.getFamilyNameWithCorrectSuffix(n,t);Zh&&console.log(`Selected font family:`+r);let i=nt.getFontFamily(r);switch(i||=nt.addFontFamily(r),e.fontFamily=i,t){default:case eg.Normal:e.fontWeight=400,e.fontStyle=`normal`;break;case eg.Bold:e.fontWeight=700,e.fontStyle=`normal`;break;case eg.Italic:e.fontWeight=400,e.fontStyle=`italic`;break;case eg.BoldAndItalic:e.fontStyle=`italic`,e.fontWeight=400}let a=i.getVariant(e.fontWeight,e.fontStyle);if(!a){let t=r;t?.endsWith(`-msdf.json`)||(t+=`-msdf.json`);let n=r;n?.endsWith(`.png`)||(n+=`.png`),a=i.addVariant(e.fontWeight,e.fontStyle,t,n),a?.addEventListener(`ready`,()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){(e.startsWith(`https:`)||e.startsWith(`http:`))&&(e=new URL(e).pathname);let n=e.lastIndexOf(`-`);if(n<0)return e;let r=e.substring(n+1)?.toLowerCase();if(rg.includes(r))return Zh&&console.warn(`Unsupported font style: `+r),e;let i=e.lastIndexOf(`/`),a=e;i>=0&&(a=a.substring(i+1));let o=a[0]===a[0].toUpperCase(),s=e.substring(0,n>i?n:e.length);switch(Zh&&console.log(`Select font: `,e,eg[t],a,o,s),t){case eg.Normal:return o?s+`-Regular`:s+`-regular`;case eg.Bold:return o?s+`-Bold`:s+`-bold`;case eg.Italic:return o?s+`-Italic`:s+`-italic`;case eg.BoldAndItalic:return o?s+`-BoldItalic`:s+`-bolditalic`;default:return e}}};Xh([F()],tg.prototype,`alignment`,void 0),Xh([F()],tg.prototype,`verticalOverflow`,void 0),Xh([F()],tg.prototype,`horizontalOverflow`,void 0),Xh([F()],tg.prototype,`lineSpacing`,void 0),Xh([F()],tg.prototype,`supportRichText`,void 0),Xh([F(URL)],tg.prototype,`font`,void 0),Xh([F()],tg.prototype,`fontStyle`,void 0),Xh([F()],tg.prototype,`text`,null),Xh([F()],tg.prototype,`fontSize`,null);var ng=class{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}},rg=[`medium`,`mediumitalic`,`black`,`blackitalic`,`thin`,`thinitalic`,`extrabold`,`light`,`lightitalic`,`semibold`],$=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ig=A(`debuguilayout`),ag=class{left=0;right=0;top=0;bottom=0;get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}};$([F()],ag.prototype,`left`,void 0),$([F()],ag.prototype,`right`,void 0),$([F()],ag.prototype,`top`,void 0),$([F()],ag.prototype,`bottom`,void 0);var og;(function(e){e[e.UpperLeft=0]=`UpperLeft`,e[e.UpperCenter=1]=`UpperCenter`,e[e.UpperRight=2]=`UpperRight`,e[e.MiddleLeft=3]=`MiddleLeft`,e[e.MiddleCenter=4]=`MiddleCenter`,e[e.MiddleRight=5]=`MiddleRight`,e[e.LowerLeft=6]=`LowerLeft`,e[e.LowerCenter=7]=`LowerCenter`,e[e.LowerRight=8]=`LowerRight`,e[e.Custom=9]=`Custom`})(og||={});var sg;(function(e){e.Horizontal=`x`,e.Vertical=`y`})(sg||={});var cg=class extends K{_rectTransform=null;get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}_needsUpdate=!1;get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(ig&&console.warn(`Layout Update`,this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}childAlignment=og.UpperLeft;reverseArrangement=!1;spacing=0;padding;minWidth=0;minHeight=0;flexibleHeight=0;flexibleWidth=0;preferredHeight=0;preferredWidth=0;start(){this._needsUpdate=!0}onEnable(){ig&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Uh);let e=this.gameObject.getComponentInParent(gg);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){let e=this.gameObject.getComponentInParent(gg);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}};$([F()],cg.prototype,`childAlignment`,void 0),$([F()],cg.prototype,`reverseArrangement`,void 0),$([F()],cg.prototype,`spacing`,void 0),$([F(ag)],cg.prototype,`padding`,void 0),$([F()],cg.prototype,`minWidth`,void 0),$([F()],cg.prototype,`minHeight`,void 0),$([F()],cg.prototype,`flexibleHeight`,void 0),$([F()],cg.prototype,`flexibleWidth`,void 0),$([F()],cg.prototype,`preferredHeight`,void 0),$([F()],cg.prototype,`preferredWidth`,void 0);var lg=class extends cg{childControlHeight=!0;childControlWidth=!0;childForceExpandHeight=!1;childForceExpandWidth=!1;childScaleHeight=!1;childScaleWidth=!1;onCalculateLayout(e){let t=this.primaryAxis,n=e.width,r=n,i=e.height,a=i;r-=this.padding.horizontal,a-=this.padding.vertical,t===sg.Horizontal?this.padding.horizontal:this.padding.vertical;let o=t===sg.Horizontal,s=o?`y`:`x`,c=o?this.childControlWidth:this.childControlHeight,l=o?this.childControlHeight:this.childControlWidth,u=o?this.childForceExpandWidth:this.childForceExpandHeight,d=o?this.childForceExpandHeight:this.childForceExpandWidth,f=o?a:r,p=o?n:i,m=.5*(o?this.childAlignment%3:Math.floor(this.childAlignment/3)),h=0;o?h+=this.padding.left:h+=this.padding.top;let g=0,_=0;for(let e=0;e0&&(v=e/_)}let y=0;y+=this.padding.left,y-=this.padding.right,m!==0&&(h=p-g,h*=m,h-=ee*m,o?(h-=this.padding.right*m,h+=this.padding.left*(1-m),hh&&(h=e-v*.5+p+this.padding.left,h-=m)}let g=h;t===sg.Vertical&&(g=-g),a.anchoredPosition[t]!==g&&(a.anchoredPosition[t]=g),h+=m,h+=this.spacing,b+=1}}}};$([F()],lg.prototype,`childControlHeight`,void 0),$([F()],lg.prototype,`childControlWidth`,void 0),$([F()],lg.prototype,`childForceExpandHeight`,void 0),$([F()],lg.prototype,`childForceExpandWidth`,void 0),$([F()],lg.prototype,`childScaleHeight`,void 0),$([F()],lg.prototype,`childScaleWidth`,void 0);var ug=class extends lg{get primaryAxis(){return sg.Vertical}},dg=class extends lg{get primaryAxis(){return sg.Horizontal}},fg=class extends cg{onCalculateLayout(){}},pg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},mg;(function(e){e[e.ScreenSpaceOverlay=0]=`ScreenSpaceOverlay`,e[e.ScreenSpaceCamera=1]=`ScreenSpaceCamera`,e[e.WorldSpace=2]=`WorldSpace`,e[e.Undefined=-1]=`Undefined`})(mg||={});var hg=A(`debuguilayout`),gg=class e extends Ph{get isCanvas(){return!0}get screenspace(){return this.renderMode!==mg.WorldSpace}set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop===void 0?!!(this.screenspace&&this._renderMode===mg.ScreenSpaceOverlay):this._renderOnTop}_renderOnTop;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!1;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!1;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=mg.Undefined;_rootCanvas;set rootCanvas(t){this._rootCanvas instanceof e||(this._rootCanvas=t)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}worldCamera;planeDistance=-1;awake(){this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,hg&&console.log(`Canvas.Awake()`,this.previousParent?.name+`/`+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new ce,this.applyRenderSettings(),document.addEventListener(`resize`,this._boundRenderSettingsChanged),this.context.pre_render_callbacks.push(this.onBeforeRenderRoutine),this.context.post_render_callbacks.push(this.onAfterRenderRoutine)}onDisable(){super.onDisable(),document.removeEventListener(`resize`,this._boundRenderSettingsChanged);let e=this.context.pre_render_callbacks.indexOf(this.onBeforeRenderRoutine);e!==-1&&this.context.pre_render_callbacks.splice(e,1);let t=this.context.post_render_callbacks.indexOf(this.onAfterRenderRoutine);t!==-1&&this.context.post_render_callbacks.splice(t,1)}_boundRenderSettingsChanged=this.onRenderSettingsChanged.bind(this);previousParent=null;_lastMatrixWorld=null;_rectTransforms=[];registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){let t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}_layoutGroups=new Map;registerLayoutGroup(e){let t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){let t=e.gameObject;this._layoutGroups.delete(t)}_receivers=[];registerEventReceiver(e){this._receivers.push(e)}unregisterEventReceiver(e){let t=this._receivers.indexOf(e);t!==-1&&this._receivers.splice(t,1)}async onEnterXR(e){this.screenspace?(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!1):(this.gameObject.visible=!1,await qt(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}onBeforeRenderRoutine=()=>{if(this.previousParent=this.gameObject.parent,(this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.shadowComponent?.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),gh.ensureUpdateMeshUI($e,this.context))};onAfterRenderRoutine=()=>{if((this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.previousParent?.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){this.screenspace?this.context.mainCamera?.add(this.gameObject):this.previousParent.add(this.gameObject);let e=this.context.renderer.autoClear,t=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),gh.ensureUpdateMeshUI($e,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=e,this.context.renderer.autoClearColor=t,this.previousParent.add(this.gameObject)}this._lastMatrixWorld?.copy(this.gameObject.matrixWorld)};invokeBeforeRenderEvents(){for(let e of this._receivers)e.onBeforeCanvasRender?.(this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new ce);let e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);hg&&e&&console.log(`Canvas Layout changed`,this.context.time.frameCount,this.name);for(let t of this._rectTransforms){e&&t.markDirty();let n=this._layoutGroups.get(t.gameObject);t.isDirty&&!n&&(n=t.gameObject.getComponentInParent(cg)),(t.isDirty||n?.isDirty)&&(hg&&console.log(`CANVAS UPDATE ### `+t.name+` ##################################### `+this.context.time.frame),n?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||=this.startCoroutine(this._updateRenderSettingsDelayed(),z.OnBeforeRender)}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),uh(this.shadowComponent,this);for(let e of G.getComponentsInChildren(this.gameObject,Nh))uh(e.shadowComponent,this)}}_activeRenderMode=-1;_lastWidth=-1;_lastHeight=-1;onUpdateRenderMode(e=!1){if(!e&&this._renderMode===this._activeRenderMode&&this._lastWidth===this.context.domWidth&&this._lastHeight===this.context.domHeight)return;this._activeRenderMode=this._renderMode;let t=this.context.mainCameraComponent,n=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(n=N.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===mg.ScreenSpaceCamera&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(n=this.planeDistance)),this._renderMode){case mg.ScreenSpaceOverlay:case mg.ScreenSpaceCamera:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;let e=n+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-e,this.gameObject.quaternion.identity();let r=this.gameObject.getComponent(Uh),i=!1;r.sizeDelta.x!==this.context.domWidth&&(i=!0),r.sizeDelta.y!==this.context.domHeight&&(i=!0);let a=t.fieldOfView*Math.PI/180,o=2*Math.tan(a/2)*Math.abs(e);this.gameObject.scale.x=o/this.context.domHeight,this.gameObject.scale.y=o/this.context.domHeight,this.gameObject.scale.z=.01,i&&(r.sizeDelta.x=this.context.domWidth,r.sizeDelta.y=this.context.domHeight,r?.markDirty());break;case mg.WorldSpace:this._lastWidth=-1,this._lastHeight=-1;break}}};pg([F()],gg.prototype,`renderOnTop`,null),pg([F()],gg.prototype,`depthWrite`,null),pg([F()],gg.prototype,`doubleSided`,null),pg([F()],gg.prototype,`castShadows`,null),pg([F()],gg.prototype,`receiveShadows`,null),pg([F()],gg.prototype,`renderMode`,null),pg([F(gg)],gg.prototype,`rootCanvas`,null),pg([F()],gg.prototype,`scaleFactor`,null),pg([F(Z)],gg.prototype,`worldCamera`,void 0),pg([F()],gg.prototype,`planeDistance`,void 0);var _g=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vg=class extends K{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),z.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){this._buffer.length=0;for(let e of G.getComponentsInChildren(this.gameObject,Nh,this._buffer)){let t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}};_g([F()],vg.prototype,`alpha`,null),_g([F()],vg.prototype,`interactable`,void 0),_g([F()],vg.prototype,`blocksRaycasts`,void 0);var yg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bg=class{texture=null;rect};yg([F(be)],bg.prototype,`texture`,void 0);var xg=class extends Yh{set image(e){this.sprite||=new bg,this.sprite.texture=e,this.onAfterCreated()}get image(){return this.sprite?this.sprite.texture:null}get sprite(){return this._sprite}set sprite(e){this._sprite!==e&&(this._sprite=e,this.onAfterCreated())}_sprite;pixelsPerUnitMultiplier=1;isBuiltinSprite(){let e=this.sprite;switch(e?.texture?.name){case`InputFieldBackground`:case`UISprite`:case`Background`:case`Knob`:return!0}return!e?.texture?.name?.length&&e?.texture?.image?.width===32&&e?.texture?.image?.height===32}onBeforeCreate(e){super.onBeforeCreate(e),this.isBuiltinSprite()&&(e.borderRadius=5/this.pixelsPerUnitMultiplier,this.sprite?.texture?.name===`Knob`&&(e.borderRadius=999))}onAfterCreated(){this.__didAwake&&(super.onAfterCreated(),!this.isBuiltinSprite()&&this.setTexture(this.sprite?.texture))}};yg([F(bg)],xg.prototype,`sprite`,null),yg([F()],xg.prototype,`pixelsPerUnitMultiplier`,void 0);var Sg=class extends Yh{get mainTexture(){return this._mainTexture}set mainTexture(e){this._mainTexture!==e&&(this._mainTexture=e,this.onAfterCreated())}_mainTexture;onAfterCreated(){this.__didAwake&&(super.onAfterCreated(),this.setTexture(this.mainTexture))}};yg([F(be)],Sg.prototype,`mainTexture`,null);var Cg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wg=A(`debugbutton`),Tg;(function(e){e[e.None=0]=`None`,e[e.ColorTint=1]=`ColorTint`,e[e.SpriteSwap=2]=`SpriteSwap`,e[e.Animation=3]=`Animation`})(Tg||={});var Eg=class{colorMultiplier;disabledColor;fadeDuration;highlightedColor;normalColor;pressedColor;selectedColor};Cg([F()],Eg.prototype,`colorMultiplier`,void 0),Cg([F(md)],Eg.prototype,`disabledColor`,void 0),Cg([F()],Eg.prototype,`fadeDuration`,void 0),Cg([F(md)],Eg.prototype,`highlightedColor`,void 0),Cg([F(md)],Eg.prototype,`normalColor`,void 0),Cg([F(md)],Eg.prototype,`pressedColor`,void 0),Cg([F(md)],Eg.prototype,`selectedColor`,void 0);var Dg=class{disabledTrigger;highlightedTrigger;normalTrigger;pressedTrigger;selectedTrigger},Og=class extends K{click(){this.onClick?.invoke()}onClick=new _m;_isHovered=0;onPointerEnter(e){let t=e.event.pointerType===`mouse`&&e.button===0;t&&(this._isHovered+=1),wg&&console.warn(`Button Enter`,t,this._isHovered,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.highlightedTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`hovered`),t&&this.context.input.setCursor(`pointer`))}onPointerExit(){--this._isHovered,this._isHovered<0&&(this._isHovered=0),wg&&console.log(`Button Exit`,this._isHovered,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this._isHovered>0||(this._isHovered=0,this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.normalTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`normal`),this.context.input.unsetCursor(`pointer`)))}onPointerDown(e){wg&&console.log(`Button Down`,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.pressedTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`pressed`))}onPointerUp(e){wg&&console.warn(`Button Up`,this.animationTriggers?.highlightedTrigger,this.animator,this._isHovered),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this._isHovered?this.animationTriggers.highlightedTrigger:this.animationTriggers.normalTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(this._isHovered?`hovered`:`normal`))}onPointerClick(e){if(this.interactable&&!(e.button!==0&&e.event.pointerType===tc.Mouse)&&(wg&&(console.warn(`Button Click`,this.onClick),Ti(`CLICKED button `+this.name+` at `+this.context.time.frameCount)),this.onClick&&this.onClick.listenerCount>0&&(this.onClick.invoke(),e.use(),this.context.accessibility.focus(this),wg))){let e=this.gameObject.worldPosition;e.add(this.gameObject.worldUp.multiplyScalar(1+Math.random()*.5)),H.DrawLabel(e,`CLICK:`+Date.now(),.1,1+Math.random()*.5)}}colors;transition;animationTriggers;animator;set interactable(e){this._interactable=e,this._image&&(this._image.setInteractable(e),e?this._image.setState(`normal`):this._image.setState(`disabled`))}get interactable(){return this._interactable}_interactable=!0;set_interactable(e){this.interactable=e}awake(){super.awake(),wg&&console.log(this),this._isInit=!1,this.init()}start(){this._image?.setInteractable(this.interactable),this.gameObject.getComponentInParent(rh)||this.gameObject.addComponent(ah)}onEnable(){super.onEnable(),this.context.accessibility.updateElement(this,{role:`button`,label:this.gameObject.name+` button`,hidden:!1})}onDisable(){super.onDisable(),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this),this._isHovered&&this.context.input.unsetCursor(`pointer`)}_requestedAnimatorTrigger;*setAnimatorTriggerAtEndOfFrame(e){this._requestedAnimatorTrigger=e,yield,yield,this._requestedAnimatorTrigger==e&&this.animator?.setTrigger(e)}_isInit=!1;_image;init(){this._isInit||(this._isInit=!0,this._image=G.getComponent(this.gameObject,xg),this._image&&(this.stateSetup(this._image),this.interactable?this._image.setState(`normal`):this._image.setState(`disabled`)))}stateSetup(e){e.setInteractable(this.interactable);let t=this.getFinalColor(e.color,this.colors?.normalColor),n={state:`normal`,attributes:{backgroundColor:t,backgroundOpacity:t.alpha}};e.setupState(n);let r=this.getFinalColor(e.color,this.colors?.highlightedColor),i={state:`hovered`,attributes:{backgroundColor:r,backgroundOpacity:r.alpha}};e.setupState(i);let a=this.getFinalColor(e.color,this.colors?.pressedColor),o={state:`pressed`,attributes:{backgroundColor:a,backgroundOpacity:a.alpha}};e.setupState(o);let s=this.getFinalColor(e.color,this.colors?.selectedColor),c={state:`selected`,attributes:{backgroundColor:s,backgroundOpacity:s.alpha}};e.setupState(c);let l=this.getFinalColor(e.color,this.colors?.disabledColor),u={state:`disabled`,attributes:{backgroundColor:l,backgroundOpacity:l.alpha}};e.setupState(u)}getFinalColor(e,t){return t?e.clone().multiply(t).convertLinearToSRGB():e.clone().convertLinearToSRGB()}};Cg([F(_m)],Og.prototype,`onClick`,void 0),Cg([F(Eg)],Og.prototype,`colors`,void 0),Cg([F()],Og.prototype,`transition`,void 0),Cg([F(Dg)],Og.prototype,`animationTriggers`,void 0),Cg([F(fm)],Og.prototype,`animator`,void 0),Cg([F()],Og.prototype,`interactable`,null);var kg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ag=A(`debuginputfield`),jg=class e extends K{get text(){return this.textComponent?.text??``}set text(e){this.textComponent&&(this.textComponent.text=e,this.placeholder&&(e.length>0?this.placeholder.gameObject.visible=!1:this.placeholder.gameObject.visible=!0))}get isFocused(){return e.active===this}textComponent;placeholder;onValueChanged;onEndEdit;static active=null;static activeTime=-1;static htmlField=null;static htmlFieldFocused=!1;inputEventFn;_iosEventFn;start(){Ag&&console.log(this.name,this)}onEnable(){e.htmlField||(e.htmlField=document.createElement(`input`),e.htmlField.style.width=`0px`,e.htmlField.style.height=`0px`,e.htmlField.style.padding=`0px`,e.htmlField.style.border=`none`,e.htmlField.style.overflow=`hidden`,e.htmlField.style.caretColor=`transparent`,e.htmlField.style.outline=`none`,e.htmlField.classList.add(`ar`),e.htmlField.onfocus=()=>e.htmlFieldFocused=!0,e.htmlField.onblur=()=>e.htmlFieldFocused=!1,document.body.append(e.htmlField)),this.inputEventFn||=this.onInput.bind(this),e.htmlField.addEventListener(`keyup`,this.inputEventFn),this.placeholder&&this.textComponent?.text.length&&G.setActive(this.placeholder.gameObject,!1),j.isiOS()&&(this._iosEventFn=this.processInputOniOS.bind(this),window.addEventListener(`click`,this._iosEventFn))}onDisable(){e.htmlField?.removeEventListener(`keyup`,this.inputEventFn),this.onDeselected(),this._iosEventFn&&window.removeEventListener(`click`,this._iosEventFn)}clear(){e.active===this&&e.htmlField?(e.htmlField.value=``,this.setTextFromInputField()):(this.textComponent&&(this.textComponent.text=``),this.placeholder&&G.setActive(this.placeholder.gameObject,!0))}select(){this.onSelected()}deselect(){this.onDeselected()}onPointerEnter(e){e.event.pointerType===`mouse`&&e.button===0&&this.context.input.setCursor(`text`)}onPointerExit(e){this.context.input.unsetCursor(`text`)}onPointerClick(t){Ag&&console.log(`CLICK`,t,e.active),e.activeTime=this.context.time.time,e.active!==this&&this.startCoroutine(this.activeLoop(),z.LateUpdate),this.selectInputField()}*activeLoop(){for(this.onSelected();e.active===this&&!(this.context.input.getPointerClicked(0)&&this.context.time.time-e.activeTime>.2);)this.setTextFromInputField(),yield;this.onDeselected()}onSelected(){if(e.active!==this&&(Ag&&console.log(`Select`,this.name,this,e.htmlField,this.context.isInXR,this.context.arOverlayElement,this.textComponent?.text,e.htmlField?.value),e.active?.onDeselected(),e.active=this,this.placeholder&&G.setActive(this.placeholder.gameObject,!1),e.htmlField)){if(e.htmlField.value=this.textComponent?.text||``,Ag&&console.log(`set input field value`,e.htmlField.value),this.context.isInXR){let t=this.context.arOverlayElement;t&&t.append(e.htmlField)}this.selectInputField()}}onDeselected(){e.active===this&&(e.active=null,Ag&&console.log(`Deselect`,this.name,this),e.htmlField&&(e.htmlField.blur(),document.body.append(e.htmlField)),this.placeholder&&(!this.textComponent||this.textComponent.text.length<=0)&&G.setActive(this.placeholder.gameObject,!0),e.htmlField&&this.onEndEdit?.invoke(e.htmlField.value))}update(){e.active===this&&this.textComponent?.markDirty()}onInput(t){if(e.active===this){if(Ag&&console.log(t.code,t,e.htmlField?.value,this.textComponent?.text),t.code===`Escape`||t.code===`Enter`){this.onDeselected();return}e.htmlField&&(this.textComponent&&(this.setTextFromInputField(),this.placeholder&&G.setActive(this.placeholder.gameObject,this.textComponent.text.length<=0)),this.selectInputField())}}setTextFromInputField(){if(this.textComponent&&e.htmlField){let t=this.textComponent.text,n=e.htmlField.value,r=this.textComponent.text!==e.htmlField.value;this.textComponent.text=e.htmlField.value,r&&(Ag&&console.log(`[InputField] value changed:`,n,t),this.onValueChanged?.invoke(n,t))}}selectInputField(){e.htmlField&&(Ag&&console.log(`Focus Inputfield`,e.htmlFieldFocused,e.htmlField),e.htmlField.setSelectionRange(e.htmlField.value.length,e.htmlField.value.length),j.isiOS()?(e.htmlField.style.display=`block`,e.htmlField.focus({preventScroll:!0})):setTimeout(()=>e.htmlField?.focus(),1))}processInputOniOS(){let e=this.context.physics.raycast();if(!e.length)return;let t=e[0].object,n=ch(t);(n?.gameObject===this.gameObject||n?.gameObject.parent===this.gameObject)&&this.selectInputField()}};kg([F(tg)],jg.prototype,`textComponent`,void 0),kg([F(tg)],jg.prototype,`placeholder`,void 0),kg([F(_m)],jg.prototype,`onValueChanged`,void 0),kg([F(_m)],jg.prototype,`onEndEdit`,void 0);var Mg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ng=class extends K{id=null;keepAspect=!1;_object=null;onEnable(){if(this._object){this.gameObject.add(this._object);return}if(!this.id||!this.context.mainCamera)return;let e=document.getElementById(this.id);if(!e){console.warn(`Could not find element with id "`+this.id+`"`);return}e.style.display=`block`,e.style.visibility=`hidden`;let t=new mt;t.listenToPointerEvents(this.context.renderer,this.context.mainCamera),this.gameObject.add(t);let n=new ft(e);t.add(n),n.visible=!1;let r=n.material;r.transparent=!0,setTimeout(()=>{n.visible=!0;let e=Qr(this.gameObject).clone();ei(this.gameObject,0,0,0),this.gameObject.updateMatrixWorld();let r=new fe;r.setFromObject(t),this.setWorldRotation(e.x,e.y,e.z);let i=r.max.x-r.min.x,a=r.max.y-r.min.y;if(this.keepAspect){let e=i/a;i>a?n.scale.set(1/i,1/a/e,1):n.scale.set(1/i*e,1/a,1)}else n.scale.set(1/i,1/a,1);let o=this.gameObject.scale;n.scale.multiply(o)},1)}onDisable(){this._object?.removeFromParent()}};Mg([F()],Ng.prototype,`id`,void 0),Mg([F()],Ng.prototype,`keepAspect`,void 0);export{om as $,kt as $a,ji as $i,al as $n,ts as $r,ef as $t,ih as A,kr as Aa,fa as Ai,Xl as An,vn as Ao,ic as Ar,jf as At,Bm as B,ur as Ba,Yi as Bi,Ll as Bn,nn as Bo,js as Br,Pf as Bt,Z as C,vr as Ca,La as Ci,yu as Cn,Ht as Co,mc as Cr,Fp as Ct,gh as D,hi as Da,ba as Di,ou as Dn,It as Do,L as Dr,gp as Dt,X as E,mi as Ea,ka as Ei,su as En,Et as Eo,sc as Er,Cp as Et,Jm as F,ei as Fa,da as Fi,Ul as Fn,Pt as Fo,Ws as Fr,Ef as Ft,Pm as G,ir as Ga,Bi as Gi,Tl as Gn,fs as Gr,_f as Gt,Rm as H,lr as Ha,Hi,Ml as Hn,wt as Ho,Is as Hr,bf as Ht,Xm as I,Br as Ia,ca as Ii,Hl as In,Lt as Io,Hs as Ir,Nf as It,ym as J,Tn as Ja,Ki as Ji,bl as Jn,Es as Jr,mf as Jt,Mm as K,M as Ka,Wi as Ki,Dl as Kn,ps as Kr,pf as Kt,Km as L,hr as La,ta as Li,Vl as Ln,Qt as Lo,Vs as Lr,Af as Lt,eh as M,Fr as Ma,ma as Mi,Zl as Mn,Ut as Mo,Ks as Mr,Hf as Mt,th as N,Ir as Na,la as Ni,ql as Nn,Ft as No,Gs as Nr,Wf as Nt,sh as O,ui as Oa,xa as Oi,au as On,zt as Oo,oc as Or,Tf as Ot,$m as P,$r as Pa,ga as Pi,Wl as Pn,Nt as Po,Us as Pr,Of as Pt,fm as Q,Pn as Qa,Pi as Qi,ul as Qn,es as Qr,U as Qt,Um as R,si as Ra,Zi as Ri,Rl as Rn,Wt as Ro,Ls as Rr,kf as Rt,Ph as S,ti as Sa,za as Si,vu as Sn,Rt as So,pc as Sr,Np as St,Th as T,br as Ta,Va as Ti,cu as Tn,Dt as To,cc as Tr,wp as Tt,J as U,N as Ua,Vi as Ui,Al as Un,O as Uo,Ns as Ur,Sf as Ut,zm as V,sr as Va,Ji as Vi,Fl as Vn,Tt as Vo,Fs as Vr,If as Vt,Fm as W,rr as Wa,Ui as Wi,wl as Wn,k as Wo,Ps as Wr,gf as Wt,_m as X,En as Xa,F as Xi,hl as Xn,ms as Xr,Vd as Xt,mm as Y,Un as Ya,Ri as Yi,vl as Yn,_s as Yr,uf as Yt,gm as Z,Nn as Za,Fi as Zi,dl as Zn,cs as Zr,Qd as Zt,Gh as _,Or as _a,Ja as _i,B as _n,un as _o,kc as _r,Rp as _t,Sg as a,ai as aa,jo as ai,Bd as an,Gt as ao,nl as ar,Qp as at,Rh as b,zr as ba,Ha as bi,wu as bn,fn as bo,Mc as br,Pp as bt,mg as c,Ur as ca,Ho as ci,Ad as cn,A as co,Xc as cr,G as ct,ag as d,Cr as da,Fo as di,md as dn,ln as do,qc as dr,Up as dt,Mi as ea,$o as ei,tf as en,j as eo,ol as er,rm as et,ug as f,Tr as fa,Po as fi,pd as fn,Ot as fo,Vc as fr,Gp as ft,Yh as g,Xr as ga,Xa as gi,Iu as gn,on as go,Pc as gr,kp as gt,Jh as h,Kr as ha,mo as hi,Ku as hn,dn as ho,Lc as hr,Dp as ht,xg as i,_i as ia,Mo as ii,Gd as in,_n as io,Qc as ir,nm as it,oh as j,Ar as ja,ha as ji,$l as jn,Zt as jo,tc as jr,Vf as jt,ah as k,Zr as ka,ua as ki,iu as kn,Yt as ko,ac as kr,zf as kt,fg as l,fi as la,Bo as li,Sd as ln,Xt as lo,$c as lr,Yp as lt,Q as m,di as ma,Oo as mi,Zu as mn,sn as mo,Rc as mr,Op as mt,jg as n,Ti as na,Jo as ni,Kd as nn,bn as no,Yc as nr,tm as nt,vg as o,oi as oa,Ro as oi,jd as on,Kt as oo,el as or,K as ot,tg as p,P as pa,zo as pi,ed as pn,an as po,Ic as pr,Kp as pt,km as q,$n as qa,Gi as qi,El as qn,ds as qr,ff as qt,Og as r,Ei as ra,Lo as ri,Jd as rn,en as ro,Zc as rr,em as rt,gg as s,pi as sa,Io as si,kd as sn,qt as so,tl as sr,Xp as st,Ng as t,Di as ta,Yo as ti,Xd as tn,xn as to,il as tr,im as tt,dg as u,ni as ua,Go as ui,H as un,Mt as uo,Kc as ur,Wp as ut,zh as v,Pr as va,qa as vi,Tu as vn,mn as vo,Ac as vr,zp as vt,Dh as w,yr as wa,Ba as wi,uu as wn,hn as wo,uc as wr,Lp as wt,Nh as x,ri as xa,Ra as xi,Eu as xn,cn as xo,Oc as xr,Ip as xt,Uh as y,Qr as ya,Ua as yi,z as yn,pn as yo,jc as yr,Mp as yt,Vm as z,or as za,Qi as zi,Bl as zn,rn as zo,ks as zr,Df as zt}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js.gz b/Needle/MenuScene/dist/assets/needle-engine-ui.BzyLX9fs.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..54a8561fa378ce07b66cdd418db70aab5cb6cecb GIT binary patch literal 156629 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 I9jIdn0Aoyv@&Et; literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js b/Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js new file mode 100644 index 0000000..53474a4 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js @@ -0,0 +1,325 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./needle-engine.dep.BzZBR-mM.js","./needle-engine.D6xdy26G.js","./three@0.169.19.js","./rolldown-runtime.CYVBeYYp.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{$t as t,A as n,Ar as r,At as i,Bt as a,Cn as o,Cr as s,Dt as c,Et as l,Fr as u,G as d,Gt as f,Ir as p,It as m,Jt as h,K as g,Kn as _,Mt as ee,On as te,Qn as ne,Qt as v,R as re,S as ie,Sn as ae,Vt as oe,Wn as y,Wt as se,Xn as ce,Xt as b,Yn as le,Zn as ue,Zt as x,_ as de,_n as fe,_r as pe,a as me,an as he,b as ge,d as _e,dt as ve,er as ye,fn as S,gn as be,gr as xe,gt as Se,ht as Ce,i as we,in as Te,jr as C,kr as Ee,l as De,lt as Oe,m as ke,mn as Ae,nt as je,pt as Me,qt as Ne,r as Pe,rn as Fe,sr as Ie,tn as Le,tr as Re,tt as ze,u as Be,ur as Ve,vn as He,wn as Ue,wr as We,x as Ge,xr as Ke}from"./three@0.169.19.js";import{$a as qe,$i as Je,$r as Ye,Aa as Xe,An as Ze,Ba as Qe,Bi as $e,Bn as et,Bo as tt,Br as w,C as nt,Co as rt,Cr as it,Ct as at,Di as ot,Ei as st,Er as ct,Fi as lt,Gi as ut,Gn as dt,Ho as ft,Ht as pt,Ia as mt,Jn as ht,Jt as gt,Ka as T,Kt as _t,L as vt,Lr as yt,Lt as bt,Ma as xt,Mr as St,N as Ct,Ni as wt,Nr as Tt,Nt as Et,Oa as Dt,P as Ot,Q as kt,Qi as At,Qn as jt,Qr as Mt,Qt as Nt,Rr as Pt,Sn as Ft,Sr as It,Tt as Lt,Ua as Rt,Uo as zt,Vt as Bt,Wn as Vt,Wo as Ht,X as Ut,Xi as E,Xn as Wt,Yn as Gt,Yt as Kt,Zi as qt,Zr as Jt,_a as Yt,_n as Xt,_t as Zt,an as Qt,ba as $t,c as en,co as D,cr as O,ct as k,dn as tn,ei as nn,eo as A,fi as rn,fn as j,gn as an,gr as on,hn as sn,j as cn,jo as ln,kn as un,kt as dn,la as fn,ln as pn,m as M,ma as mn,mi as hn,mr as gn,mt as _n,na as vn,ni as yn,nn as bn,o as xn,oo as Sn,ot as N,p as Cn,pa as wn,pn as Tn,q as En,qi as Dn,qt as On,ra as kn,s as An,so as jn,sr as Mn,ta as Nn,ti as Pn,to as Fn,tr as In,un as Ln,va as Rn,vi as zn,wi as Bn,wr as Vn,x as Hn,y as Un,yn as Wn,yt as Gn,z as Kn,zn as qn,zo as Jn}from"./needle-engine-ui.BzyLX9fs.js";import{A as Yn,M as Xn,b as Zn,c as Qn,f as $n,l as er,m as tr,o as nr,p as rr,r as ir,s as ar,u as or,v as sr,x as cr,y as lr}from"./three-examples@0.169.19.js";import{a as ur,c as dr,i as fr,n as P,o as pr,r as mr,s as hr}from"./gltf-progressive.BBJGcb3s.js";var gr=D(`debugwebxr`),_r=class{static tryFindAvatarObjects(e,t,n){if(n.head&&n.leftHand&&n.rightHand)return;let r=e.name.toLocaleLowerCase();!n.head&&r.includes(`head`)&&(gr&&console.log(`FOUND AVATAR HEAD`,e.name),n.head=new w(``,t,e)),r.includes(`hand`)&&(!n.leftHand&&r.includes(`left`)&&(gr&&console.log(`FOUND AVATAR LEFT HAND`,e.name),n.leftHand=new w(``,t,e)),!n.rightHand&&r.includes(`right`)&&(gr&&console.log(`FOUND AVATAR RIGHT HAND`,e.name),n.rightHand=new w(``,t,e)));for(let r=0;r=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},yr=D(`debuganimation`),br=class{x;y},xr=class extends N{get isAnimationComponent(){return!0}addClip(e){this.animations||=[],this.animations.includes(e)||this.animations.push(e)}playAutomatically=!0;randomStartTime=!1;minMaxSpeed;minMaxOffsetNormalized;loop=!0;clampWhenFinished=!1;get time(){if(this.actions){for(let e of this.actions)if(e.isRunning())return e.time}return 0}set time(e){if(this.actions)for(let t of this.actions)t.time=e}get duration(){if(this.actions){for(let e of this.actions)if(e.isRunning())return e.getClip().duration}return 0}_tempAnimationClipBeforeGameObjectExisted=null;get clip(){return this.animations?.length?this.animations[0]:null}set clip(e){if(!this.__didAwake){yr&&console.warn(`Assign clip during serialization`,e),this._tempAnimationClipBeforeGameObjectExisted=e;return}e&&(this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(e)&&(this.animations.length>0?this.animations.splice(0,0,e):this.animations.push(e)))}set clips(e){this.animations=e}_tempAnimationsArray;set animations(e){e==null||!Array.isArray(e)||(this.gameObject?this.gameObject.animations=e:this._tempAnimationsArray=e)}get animations(){return this.gameObject?.animations||this._tempAnimationsArray||[]}mixer=void 0;get actions(){return this._actions}set actions(e){this._actions=e}_actions;_handles;awake(){this.mixer=void 0,yr&&console.log(`Animation Awake`,this.name,this),this._tempAnimationsArray&&=(this.animations=this._tempAnimationsArray,void 0),this._tempAnimationClipBeforeGameObjectExisted&&=(this.clip=this._tempAnimationClipBeforeGameObjectExisted,null),this.actions=[],this._handles=[]}onEnable(){if(this.playAutomatically&&this.animations?.length>0){let e=Math.floor(Math.random()*this.animations.length),t=this.animations[e];this.play(e,{exclusive:!0,fadeDuration:0,startTime:this.randomStartTime?Math.random()*t.duration:0,loop:this.loop,clampWhenFinished:this.clampWhenFinished})}}update(){this.mixer&&(this.mixer.update(this.context.time.deltaTime),this._handles.forEach(e=>e.update()))}onDisable(){this.mixer&&this.mixer.stopAllAction()}onDestroy(){this.context.animations.unregisterAnimationMixer(this.mixer)}getAction(e){return this.actions?.find(t=>t.getClip().name===e)||null}get isPlaying(){if(this.actions){for(let e=0;e=this.animations.length){yr&&console.log(`No animation at index`,e);return}e=this.animations[e]}else typeof e==`string`&&(e=this.animations.find(t=>t.name===e));if(!e){console.error(`Could not find clip`,e);return}let n=this.actions.find(t=>t.getClip()===e);if(!n){console.error(`Could not find action`,e);return}t?.fadeDuration?n.fadeOut(t.fadeDuration):n.stop()}pause(e,t=!1){if(e===void 0){for(let e of this.actions)e.paused=!t;return}else if(typeof e==`number`){if(e>=this.animations.length){yr&&console.log(`No animation at index`,e);return}e=this.animations[e]}else typeof e==`string`&&(e=this.animations.find(t=>t.name===e));if(!e){console.error(`Could not find clip`,e);return}let n=this.actions.find(t=>t.getClip()===e);if(!n){console.error(`Could not find action`,e);return}n.paused=!t}resume(){for(let e of this.actions)e.paused=!1}play(e=0,t){if(yr&&console.log(`PLAY`,e),this.ensureMixer(),!this.mixer){yr&&console.warn(`Missing mixer`,this);return}e===void 0&&(e=0);let n=e;if(typeof e==`number`){if(e>=this.animations.length){yr&&console.log(`No animation at index`,e);return}n=this.animations[e]}else typeof e==`string`&&(n=this.animations.find(t=>t.name===e));if(!n){console.error(`Could not find clip`,e);return}t||={};for(let e of this.actions)if(e.getClip()===n)return this.internalOnPlay(e,t);if(!n.tracks){console.warn(`Clip is no AnimationClip`,n);return}let r=this.mixer.clipAction(n);return this.actions.push(r),this.internalOnPlay(r,t)}internalOnPlay(e,t){var n=this.actions.find(t=>t===e);if(n===e&&n.isRunning()&&n.time=e.getClip().duration&&(e.time=0);t?.minMaxSpeed?e.timeScale=Rt.lerp(t.minMaxSpeed.x,t.minMaxSpeed.y,Math.random()):e.timeScale=t?.speed??1,t?.loop==null?e.loop=se:e.loop=t.loop?f:se,t?.clampWhenFinished&&(e.clampWhenFinished=!0),e.paused=!1,e.play(),window.requestAnimationFrame(()=>At.testIfRootCanAnimate(e)),yr&&console.log(`PLAY`,e.getClip().name,e);let r=new Sr(e,this.mixer,t,e=>{this._handles.splice(this._handles.indexOf(r),1)});return this._handles.push(r),r.waitForFinish()}tryFindHandle(e){for(let t of this._handles)if(t.action===e)return t}ensureMixer(){if(!this.mixer){let e=`animationMixer`;this.gameObject[e]&&(this.mixer=this.gameObject[e]),(!this.mixer||!this.mixer.clipAction)&&(this.mixer=new me(this.gameObject),this.gameObject[e]=this.mixer)}this.context.animations.registerAnimationMixer(this.mixer)}};vr([E()],xr.prototype,`playAutomatically`,void 0),vr([E()],xr.prototype,`randomStartTime`,void 0),vr([E(br)],xr.prototype,`minMaxSpeed`,void 0),vr([E(br)],xr.prototype,`minMaxOffsetNormalized`,void 0),vr([E()],xr.prototype,`loop`,void 0),vr([E()],xr.prototype,`clampWhenFinished`,void 0),vr([E(we)],xr.prototype,`clips`,null);var Sr=class{mixer;action;promise=null;_options;_resolveCallback=null;_resolvedOrRejectedCallback;constructor(e,t,n,r){this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=r,this._options=n}waitForFinish(){return this.promise?this.promise:(this.promise=new Promise(e=>{this._resolveCallback=e}),this.mixer.addEventListener(`finished`,this.onFinished),this.promise)}update(){this._options&&this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._resolveCallback?.call(this,this.action)}onFinished=e=>{e.action===this.action&&this.onResolve()};dispose(){this.mixer.removeEventListener(`finished`,this.onFinished)}},Cr=class extends N{get listener(){return this._listener??=new De,this._listener}_listener=null;onEnable(){yt.registerWaitForInteraction(this.onInteraction),this.addListenerIfItExists()}onDisable(){yt.unregisterWaitForInteraction(this.onInteraction),this.removeListenerIfItExists()}onInteraction=()=>{this.destroyed||this.listener!=null&&this.addListenerIfItExists()};addListenerIfItExists(){let e=this._listener;if(!e||e?.parent)return;let t=this.context.mainCameraComponent||k.getComponentInParent(this.gameObject,nt);t?.threeCamera?t.threeCamera.add(e):this.gameObject.add(e),e.filter?(e.gain.connect(e.filter),e.filter.connect(e.context.destination)):e.gain.connect(e.context.destination)}removeListenerIfItExists(){let e=this._listener;e&&(e.removeFromParent(),e.filter&&e.filter.disconnect(),e.gain&&e.gain.disconnect())}},wr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},F=D(`debugaudio`),Tr;(function(e){e[e.Logarithmic=0]=`Logarithmic`,e[e.Linear=1]=`Linear`,e[e.Custom=2]=`Custom`})(Tr||={});var I=class e extends N{static get userInteractionRegistered(){return yt.userInteractionRegistered}static registerWaitForAllowAudio(e){yt.registerWaitForInteraction(e)}clip=``;playOnAwake=!1;preload=!0;playInBackground=!0;get isPlaying(){return this.sound?.isPlaying??!1}get duration(){return this.sound?.buffer?.duration}get time01(){let e=this.duration;return e&&this.sound?this.sound?.context.currentTime/e:0}set time01(e){let t=this.duration;t&&this.sound&&(this.time=e*t)}get time(){return this.sound?.source?this.sound.source?.context.currentTime-this._lastContextTime+this.sound.offset:0}set time(e){if(this.sound){if(e===this.sound.offset)return;let t=this.isPlaying;this.stop(),this.sound.offset=e,t&&this.play()}}get loop(){return this.sound&&(this._loop=this.sound.getLoop()),this._loop}set loop(e){this._loop=e,this.sound&&this.sound.setLoop(e)}get spatialBlend(){return this._spatialBlend}set spatialBlend(e){e!==this._spatialBlend&&(this._spatialBlend=e,this._needUpdateSpatialDistanceSettings=!0)}get minDistance(){return this._minDistance}set minDistance(e){this._minDistance!==e&&(this._minDistance=e,this._needUpdateSpatialDistanceSettings=!0)}get maxDistance(){return this._maxDistance}set maxDistance(e){this._maxDistance!==e&&(this._maxDistance=e,this._needUpdateSpatialDistanceSettings=!0)}_spatialBlend=0;_minDistance=1;_maxDistance=100;get volume(){return this._volume}set volume(e){this._volume=e,this.sound&&!this.context.application.muted&&(F&&console.log(this.name,`audio set volume`,e),this.sound.setVolume(e))}_volume=1;set pitch(e){this.sound&&this.sound.setPlaybackRate(e)}get pitch(){return this.sound?this.sound.getPlaybackRate():1}rollOffMode=0;_loop=!1;sound=null;helper=null;wasPlaying=!1;audioLoader=null;shouldPlay=!1;_lastClipStartedLoading=null;_audioElement=null;get Sound(){if(!this.sound&&e.userInteractionRegistered){let e=this.gameObject.getComponent(Cr)??this.context.mainCamera.getComponent(Cr)??Zt(Cr,this.context,!1);!e&&this.context.mainCamera&&(e=this.context.mainCamera.addComponent(Cr)),e?.listener?(this.sound=new ae(e.listener),this.gameObject?.add(this.sound)):F&&console.warn(`No audio listener found in scene - can not play audio`)}return this.sound}get ShouldPlay(){return this.shouldPlay}get audioContext(){return this.sound?.context}awake(){F&&console.log(`[AudioSource]`,this),this.audioLoader=new Be,this.playOnAwake&&(this.shouldPlay=!0),this.preload&&typeof this.clip==`string`&&this.audioLoader.load(this.clip,this.createAudio,()=>{},console.error)}onEnable(){this.sound&&this.gameObject.add(this.sound),e.userInteractionRegistered?this.playOnAwake&&this.context.application.isVisible&&this.play():e.registerWaitForAllowAudio(()=>{this.enabled&&!this.destroyed&&this.shouldPlay&&this.onNewClip(this.clip)}),globalThis.addEventListener(`visibilitychange`,this.onVisibilityChanged),this.context.application.addEventListener(Pt.MuteChanged,this.onApplicationMuteChanged)}onDisable(){globalThis.removeEventListener(`visibilitychange`,this.onVisibilityChanged),this.context.application.removeEventListener(Pt.MuteChanged,this.onApplicationMuteChanged),this.pause()}onVisibilityChanged=()=>{switch(document.visibilityState){case`hidden`:(this.playInBackground===!1||A.isMobileDevice())&&(this.wasPlaying=this.isPlaying,this.isPlaying&&this.pause());break;case`visible`:F&&console.log(`visible`,this.enabled,this.playOnAwake,!this.isPlaying,e.userInteractionRegistered,this.wasPlaying),this.enabled&&this.playOnAwake&&!this.isPlaying&&e.userInteractionRegistered&&this.wasPlaying&&this.play();break}};onApplicationMuteChanged=()=>{this.context.application.muted?this.sound?.setVolume(0):this.sound?.setVolume(this.volume)};createAudio=t=>{if(this.destroyed){F&&console.warn(`AudioSource destroyed, not creating audio`,this.name);return}F&&console.log(`AudioBuffer finished loading`,t);let n=this.Sound;if(!n){F&&console.warn(`Failed getting sound?`,this.name);return}n.isPlaying&&n.stop(),t&&n.setBuffer(t),n.loop=this._loop,this.context.application.muted?n.setVolume(0):n.setVolume(this.volume),n.autoplay=this.shouldPlay&&e.userInteractionRegistered,this.applySpatialDistanceSettings(),n.isPlaying&&n.stop(),e.registerWaitForAllowAudio(this.__onAllowAudioCallback)};__onAllowAudioCallback=()=>{this.shouldPlay&&this.play()};applySpatialDistanceSettings(){let e=this.sound;if(!e)return;this._needUpdateSpatialDistanceSettings=!1;let t=Rt.lerp(10*this._maxDistance/Math.max(1e-4,this.spatialBlend),this._minDistance,this.spatialBlend);switch(F&&console.log(this.name,this._minDistance,this._maxDistance,this.spatialBlend,`Ref distance=`+t),e.setRefDistance(t),e.setMaxDistance(Math.max(.01,this._maxDistance)),this.rollOffMode){case Tr.Logarithmic:e.setDistanceModel(`exponential`);break;case Tr.Linear:e.setDistanceModel(`linear`);break;case Tr.Custom:console.warn(`Custom rolloff for AudioSource is not supported: `+this.name);break}this.spatialBlend>0?F&&!this.helper&&(this.helper=new tr(e,e.getRefDistance()),e.add(this.helper)):this.helper&&this.helper.parent&&this.helper.removeFromParent()}async onNewClip(e){if(e&&(this.clip=e),typeof e==`string`)if(F&&console.log(e),e.endsWith(`.mp3`)||e.endsWith(`.wav`)){if(this.audioLoader||=new Be,this.shouldPlay=!0,this._lastClipStartedLoading===e){F&&console.log(`Is currently loading:`,this._lastClipStartedLoading,this);return}this._lastClipStartedLoading=e,F&&console.log(`load audio`,e);let t=await this.audioLoader.loadAsync(e).catch(console.error);if(this.destroyed)return;this._lastClipStartedLoading===e&&(this._lastClipStartedLoading=null),t&&this.createAudio(t)}else console.warn(`Unsupported audio clip type`,e);else this.shouldPlay=!0,this.createAudio()}play(e=void 0){!e&&this.clip&&(e=this.clip),e!==void 0&&typeof e!=`string`&&!(e instanceof MediaStream)&&(T()&&console.warn(`Called play on AudioSource with unknown argument type:`,e+` +Using the assigned clip instead:`,this.clip),e=this.clip);let t=!this.sound||e&&e!==this.clip;if(typeof e==`string`&&!this.audioLoader&&(t=!0),(e instanceof MediaStream||typeof e==`string`)&&(this.clip=e),t){this.shouldPlay=!0,this.onNewClip(e);return}if(this.shouldPlay=!0,this._hasEnded=!1,F&&console.log(`play`,this.sound?.getVolume(),this.sound),this.sound&&!this.sound.isPlaying){let e=this.context.application.muted;e&&this.sound.setVolume(0),this.gameObject?.add(this.sound),this.clip instanceof MediaStream?(this.sound.setMediaStreamSource(this.clip),this._audioElement||(this._audioElement=document.createElement(`audio`),this._audioElement.style.display=`none`),this._audioElement.parentNode||this.context.domElement.shadowRoot?.append(this._audioElement),this._audioElement.srcObject=this.clip,this._audioElement.autoplay=!1):(this._audioElement&&this._audioElement.remove(),this.sound.play(e?.1:0))}}pause(){F&&console.log(`Pause`,this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.isPlaying&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,this.sound.pause()),this._audioElement?.remove()}stop(){F&&console.log(`Pause`,this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,F&&console.log(this._lastContextTime),this.sound.stop()),this._audioElement?.remove()}_lastContextTime=0;_hasEnded=!0;_needUpdateSpatialDistanceSettings=!1;update(){this.helper&&(this.isPlaying&&this.helper.update(),this.helper.visible=this.isPlaying),this._needUpdateSpatialDistanceSettings&&this.applySpatialDistanceSettings(),this.sound&&!this.sound.isPlaying&&this.shouldPlay&&!this._hasEnded&&(this._hasEnded=!0,F&&console.log(`Audio clip ended`,this.clip),this.dispatchEvent(new CustomEvent(`ended`,{detail:this})))}};wr([E(URL)],I.prototype,`clip`,void 0),wr([E()],I.prototype,`playOnAwake`,void 0),wr([E()],I.prototype,`preload`,void 0),wr([E()],I.prototype,`playInBackground`,void 0),wr([E()],I.prototype,`loop`,null),wr([E()],I.prototype,`spatialBlend`,null),wr([E()],I.prototype,`minDistance`,null),wr([E()],I.prototype,`maxDistance`,null),wr([E()],I.prototype,`volume`,null),wr([E()],I.prototype,`pitch`,null),wr([E()],I.prototype,`rollOffMode`,void 0);var Er=D(`debugautosync`),Dr=Symbol(`syncerId`),Or=new class{_syncers={};getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];let t=new kr(e);return t[Dr]=e.guid,this._syncers[t[Dr]]=t,t}removeSyncer(e){delete this._syncers[e[Dr]]}},kr=class{comp;constructor(e){this.comp=e}hasChanges=!1;changedProperties={};get networkingKey(){return this.comp.guid}_isReceiving=!1;_isInit=!1;init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this.comp.context.post_render_callbacks.push(this.onHandleSending),this.comp.context.connection.beginListen(this.networkingKey,this.onHandleReceiving);let t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}destroy(){this._isInit&&=(this.comp.context.post_render_callbacks.splice(this.comp.context.post_render_callbacks.indexOf(this.onHandleSending),1),this.comp.context.connection.stopListen(this.networkingKey,this.onHandleReceiving),this.comp=null,!1)}notifyChanged(e,t){this._isReceiving||(Er&&console.log(`Property changed: `+e,t),this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending=()=>{if(!this.hasChanges)return;this.hasChanges=!1;let e=this.comp.context.connection;if(!e||!e.isConnected||!e.isInRoom){for(let e in this.changedProperties)delete this.changedProperties[e];return}for(let t in this.changedProperties){let n=this.changedProperties[t];Er&&console.log(`SEND`,this.comp.guid,this.networkingKey),e.send(this.networkingKey,{guid:this.comp.guid,property:t,data:n},hn.Queued),delete this.changedProperties[t]}};onHandleReceiving=e=>{if(Er&&console.log(`SYNCFIELD RECEIVE`,this.comp.name,this.comp.guid,e),this._isInit&&this.comp&&e.guid===this.comp.guid)try{this._isReceiving=!0,this.comp[e.property]=e.data}catch(e){console.error(e)}finally{this._isReceiving=!1}}};function Ar(e,t){let n=t!==e;return!n&&e&&t&&(Array.isArray(e)&&Array.isArray(t)||typeof e==`object`&&typeof t==`object`)&&(n=!0),n}var jr=Symbol(`AutoSyncHandler`);function Mr(e){if(e[jr])return e[jr];let t=Or.getOrCreateSyncer(e);return t?.init(e),e[jr]=t,t}function Nr(e){let t=e[jr];t&&(Or.removeSyncer(t),t.destroy(),delete e[jr])}var Pr=function(e=null){return function(t,n){let r=``;r=typeof n==`string`?n:n.name;let i=null,a;typeof e==`string`?a=t[e]:typeof e==`function`&&(a=e),a==null&&(T()||Er)&&e!=null&&console.warn(`syncField: no callback function found for property "`+r+`"`,`"`+e+`"`);let o=t,s=o.__internalAwake;if(typeof s!=`function`){(Er||T())&&console.error(`@syncField can currently only used on Needle Engine Components, custom object of type "`+t?.constructor?.name+`" is not supported`,t);return}Er&&console.log(r);let c=Symbol(r);o.__internalAwake=function(){if(this[c]===void 0){if(this[c]=this[r],i=Or.getOrCreateSyncer(this),Object.getOwnPropertyDescriptor(this,r)?.set===void 0){let e=!1;Object.defineProperty(this,r,{set:function(t){let n=this[c];if(this[c]=t,e){(T()||Er)&&console.warn(`Recursive call detected`,r);return}e=!0;try{let e=Ar(t,n);Er&&console.log(`SyncField assignment`,r,`changed?`,e,t,a),e&&a?.call(this,t,n)!==!1&&Mr(this)?.notifyChanged(r,t)}finally{e=!1}},get:function(){return this[c]},configurable:!0,enumerable:!0})}i?.init(this),s.call(this)}};let l=o.__internalDestroy;o.__internalDestroy=function(){Nr(this),l.call(this)}}},Fr=new Map;function Ir(e,t){if(Fr.has(e))return Fr.get(e);let n=Lr(new URL(e,window.location.href),t);return Fr.set(e,n),n.finally(()=>{Fr.delete(e)}),n}async function Lr(e,t){if(!e)return Promise.resolve(null);let n=e.pathname,r=e.toString().toLowerCase().includes(`pmrem`)||e.searchParams.get(`pmrem`)!=null,i=n.endsWith(`.exr`),a=n.endsWith(`.hdr`),o=n.endsWith(`.ktx2`),s;if(i)s=new lr;else if(a)s=new sr;else if(o){let{ktx2Loader:e}=pr(t);s=e}else s=new pe;let c=e.toString();return await s.loadAsync(c).then(e=>{if(e){let t=n.lastIndexOf(`/`);e.name=n.substring(t>=0?t+1:0),r?e.mapping=306:e.mapping=304,s instanceof pe&&(e.colorSpace=ue)}return e}).catch(t=>(console.warn(`Failed to load texture from url:`,e),null))}var Rr=D(`debugavatar`),zr=class e extends N{static getAvatar(t){return t>=0&&t{this.target&&e&&e.guid===this.avatar?.guid&&Xe(this.target,e.position)})}update(){if((!this.context.connection.isConnected||this._model?.hasOwnership)&&(Br.LastChangeTime!==this._lastPoiChangedTime&&(this._lastPoiChangedTime=Br.LastChangeTime,this._lookDuration=0),this.selectTarget(),this._currentTargetObject&&this.context.time.frameCount%10==0&&this.target)){let e=Yt(this._currentTargetObject);Xe(this.target,e),this.context.connection.isConnected&&this.avatar&&(this.context.connection.send(Vr.TargetChanged,this._targetModel),this._targetModel.guid=this.avatar.guid,this._targetModel.position.copy(e))}}selectTarget(){if(this.context.time.time-this._lastUpdateTime>this._lookDuration){this._lastUpdateTime=this.context.time.time,this._lookDuration=Math.random()*.5+.2;let e=Br.Pois;if(e.length>0){let t=e[Math.floor(Math.random()*e.length)];if(t&&t.obj){if(t.avatar&&t.avatar===this.avatar)return;this._currentTargetObject=t.obj}}}}},L=D(`debugnetworkingstreams`),R;(function(e){e.Connected=`peer-user-connected`,e.StreamReceived=`receive-stream`,e.StreamEnded=`call-ended`,e.Disconnected=`peer-user-disconnected`,e.UserJoined=`user-joined`})(R||={});var Wr=class{type=R.StreamEnded;userId;direction;constructor(e,t){this.userId=e,this.direction=t}},Gr=class{type=R.StreamReceived;userId;stream;target;constructor(e,t,n){this.userId=e,this.stream=t,this.target=n}},Kr=class{guid;peerId;dontSave=!0;constructor(e,t){this.guid=e.id,this.peerId=t}},qr;(function(e){e.Incoming=`incoming`,e.Outgoing=`outgoing`})(qr||={});var Jr=class extends je{peerId;userId;direction;call;get stream(){return this._stream}_stream=null;_isDisposed=!1;close(){this._isDisposed||(this._isDisposed=!0,this.call.close(),Qr(this._stream))}get isOpen(){return this.call.peerConnection?.connectionState===`connected`}get isOpening(){return this.call.peerConnection?.connectionState===`connecting`}get isClosed(){return!this.isOpen||this._isDisposed}constructor(e,t,n,r=null){super(),this.peerId=t.peer,this.userId=e,this.call=t,this.direction=n,this._stream=r,t.on(`stream`,t=>{if(L&&console.log(`Receive stream`,` +Audio:`,t.getAudioTracks(),` +Video:`,t.getVideoTracks()),this._stream=t,n===qr.Incoming){let n=new Gr(e,t,this);this.dispatchEvent(n)}}),t.on(`close`,()=>{this.dispatchEvent(new Wr(e,n))})}};function Yr(e){return e=e.replace(`a=fmtp:111 minptime=10;useinbandfec=1`,`a=fmtp:111 ptime=5;useinbandfec=1;stereo=1;maxplaybackrate=48000;maxaveragebitrat=128000;sprop-stereo=1`),e}var Xr=class e extends je{static instances=new Map;static getOrCreate(t,n){if(e.instances.has(n))return e.instances.get(n);let r=new e(t,n);return e.instances.set(n,r),r}getMyPeerId(){if(this.context.connection.connectionId)return this.getPeerIdFromUserId(this.context.connection.connectionId)}getPeerIdFromUserId(e){return this.id+`-`+e}getUserIdFromPeerId(e){return e.substring(this.id.length+1)}makeCall(e,t){if(!t?.id){L?console.warn(`Can not make a call: mediastream has no id or is undefined`):console.debug(`Can not make a call: mediastream has no id or is undefined`);return}let n={metadata:{userId:this.context.connection.connectionId,streamId:t.id},sdpTransform:e=>Yr(e)},r=this._peer?.call(e,t,n);if(r){let n=this.registerCall(r,qr.Outgoing,t);return L&&console.warn(`📞 CALL ${e}`,` +Outgoing:`,this._outgoingCalls,` +Incoming:`,this._incomingCalls),n}else L&&console.error(`Failed to make call`,e,t,this._peer)}closeAll(){for(let e of this._incomingCalls)e.close();for(let e of this._outgoingCalls)e.close();this.updateCalls()}updateCalls=()=>{for(let e=this._incomingCalls.length-1;e>=0;e--){let t=this._incomingCalls[e];t.isClosed&&!t.isOpening&&this._incomingCalls.splice(e,1)}for(let e=this._outgoingCalls.length-1;e>=0;e--){let t=this._outgoingCalls[e],n=!1;t.isClosed&&!t.isOpening&&(t.stream?.active?L&&console.warn(`!!! Stream is still active, don't remove call`,t.userId,`Your id: `+this.context.connection.connectionId):(L&&console.warn(`!!! Remove closed call`,t.userId),n=!0)),this.context.connection.userIsInRoom(t.userId)===!1&&(L&&console.warn(`!!! User is not in room anymore, remove call`,t.userId),n=!0),n&&(t.close(),this._outgoingCalls.splice(e,1))}};get peer(){return this._peer}get incomingCalls(){return this._incomingCalls}id;context;_incomingCalls=[];_outgoingCalls=[];_peer;constructor(e,t){super(),this.context=e,this.id=t,this.setupPeer();let n=Object.getOwnPropertyDescriptor(navigator,`getUserMedia`)?.writable;try{n?navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia:L&&console.warn(`[PeerJs] getUserMedia is not writable`)}catch(e){L&&console.error(`[PeerJs] Error setting getUserMedia`,e)}}_enabled=!1;_enabledPeer=!1;onConnectRoomFn=this.onConnectRoom.bind(this);enable(){this._enabled||(this._enabled=!0,this.context.connection.beginListen(O.JoinedRoom,this.onConnectRoomFn),this.subscribePeerEvents())}disable(){this._enabled&&(this._enabled=!1,this.context.connection.stopListen(O.JoinedRoom,this.onConnectRoomFn),this.unsubscribePeerEvents())}onConnectRoom(){this.setupPeer()}async setupPeer(){if(this.context.connection.connectionId&&!this._enabledPeer){if(this._enabledPeer=!0,!this._peer){let e=this.getMyPeerId();e?this._peer=await gn(e):console.error(`Failed to setup peerjs because we dont have a connection id`,this.context.connection.connectionId)}this._enabled&&this.subscribePeerEvents()}}subscribePeerEvents(){this._peer&&(this._peer.on(`open`,this.onPeerConnect),this._peer.on(`close`,this.onPeerClose),this._peer.on(`call`,this.onPeerReceivingCall),this._peer.on(`disconnected`,this.onPeerDisconnected),this._peer.on(`error`,this.onPeerError))}unsubscribePeerEvents(){this._peer&&(this._peer.off(`open`,this.onPeerConnect),this._peer.off(`close`,this.onPeerClose),this._peer.off(`call`,this.onPeerReceivingCall),this._peer.off(`disconnected`,this.onPeerDisconnected),this._peer.off(`error`,this.onPeerError))}onPeerConnect=e=>{if(L&&console.log(`PEER opened as`,e),e===null){console.error(`Peer connection failed`,e);return}this.context.connection.send(R.Connected,new Kr(this,e))};onPeerClose=()=>{L&&console.log(`PEER closed`),this.updateCalls()};onPeerDisconnected=()=>{L&&console.log(`PEER disconnected`),this.updateCalls()};onPeerError=e=>{L&&console.error(`PEER error`,e)};onPeerReceivingCall=e=>{e.answer(void 0,{sdpTransform:e=>Yr(e)}),this.registerCall(e,qr.Incoming,null)};registerCall(e,t,n){let r=e.metadata;(!r||!r.userId)&&console.error(`Missing call metadata`,e);let i=r.userId;t===qr.Incoming&&L?console.warn(`← Receive call from`,e.metadata,e.connectionId):L&&console.warn(`→ Make call to`,e.metadata);let a=t===qr.Incoming?this._incomingCalls:this._outgoingCalls,o=new Jr(i,e,t,n);return a.push(o),e.on(`error`,e=>{console.error(`Call error`,e)}),e.on(`close`,()=>{L&&console.log(`Call ended`,e.metadata);let n=a.indexOf(o);n!==-1&&a.splice(n,1),o.close(),this.dispatchEvent(new Wr(i,t))}),o.addEventListener(R.StreamEnded,e=>{this.dispatchEvent(e)}),t===qr.Incoming&&(o.addEventListener(R.StreamReceived,e=>{this.dispatchEvent(e)}),e.on(`stream`,()=>{L&&console.log(`Received stream for call`,e.metadata);let t=0,n=setInterval(()=>{let r=t===0;!o.isOpen&&r&&(L&&console.warn(`Close call because stream is not active`,e.metadata),t+=1,clearInterval(n),o.close())},2e3)})),o}},Zr=class e extends je{static create(t,n){let r=Xr.getOrCreate(t.context,n||t.context.connection.connectionId||t.guid);return new e(t.context,r)}context;peer;_sendingStreams=new Map;debug=!1;constructor(e,t){if(super(),lt(e)){let n=e;e=n.context,t=Xr.getOrCreate(n.context,n.guid)}else typeof t==`string`&&(t=Xr.getOrCreate(e,t));if(!e)throw Error(`Failed to create NetworkedStreams because context is undefined`);if(!(e instanceof Xt))throw Error(`Failed to create NetworkedStreams because context is not an instance of Context`);if(!t)throw Error(`Failed to create NetworkedStreams because peer is undefined`);this.context=e,this.peer=t,L&&(this.debug=!0)}startSendingStream(e){this._sendingStreams.has(e)?console.warn(`Received start sending stream with stream that is already being sent`):(this._sendingStreams.set(e,[]),this.updateSendingCalls())}stopSendingStream(e){if(e){let t=this._sendingStreams.get(e);if(t){for(let e of t)e.close();t.length=0}this._sendingStreams.delete(e),t&&this.debug&&this.debugLogCurrentState()}this.updateSendingCalls()}_enabled=!1;get enabled(){return this._enabled}enable(){this._enabled||(this._enabled=!0,this.peer.enable(),this.peer.addEventListener(R.StreamReceived,this.onCallStreamReceived),this.peer.addEventListener(R.StreamEnded,this.onCallEnded),this.context.connection.beginListen(R.Connected,this.onUserConnected),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.UserJoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.UserLeftRoom,this.onUserLeft),this.context.connection.beginListen(O.LeftRoom,this.onLeftRoom),this._tickIntervalId=setInterval(this.tick,5e3))}disable(){this._enabled&&(this._enabled=!1,this.peer.disable(),this.peer.removeEventListener(R.StreamReceived,this.onCallStreamReceived),this.peer.removeEventListener(R.StreamEnded,this.onCallEnded),this.context.connection.stopListen(R.Connected,this.onUserConnected),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.UserJoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.UserLeftRoom,this.onUserLeft),this.context.connection.stopListen(O.LeftRoom,this.onLeftRoom),this._tickIntervalId!=null&&(clearInterval(this._tickIntervalId),this._tickIntervalId=void 0))}_tickIntervalId;tick=()=>{this.updateSendingCalls()};onJoinedRoom=e=>{this._sendingStreams.size>0&&(this.debug&&console.warn(`${e?.userId?`User ${e.userId}`:`You`} joined room`,e,this._sendingStreams.size),this.updateSendingCalls())};onLeftRoom=e=>{this.debug&&console.warn(`${e?.userId||`You`} left room`,e),this.stopCallsToUsersThatAreNotInTheRoomAnymore(),this.peer.closeAll()};onCallStreamReceived=e=>{this.debug&&console.log(`Call with `+e.userId+` started`),this.dispatchEvent({type:R.StreamReceived,target:this,stream:e.stream,userId:e.userId}),this.debug&&this.debugLogCurrentState()};onCallEnded=e=>{this.debug&&console.log(`Call with `+e.userId+` ended`),this.dispatchEvent(e),this.debug&&this.debugLogCurrentState()};onUserConnected=e=>{if(this.peer.id===e.guid){this.debug&&console.log(`PEER USER CONNECTED`,e.guid,e,this._sendingStreams.size);let t=this._sendingStreams.keys().next().value;if(!t)return;this.peer.makeCall(e.peerId,t)}else L&&console.log(`Unknown user connected`,e.guid,e.peerId)};onUserLeft=e=>{this.debug&&console.log(`User left room: `+e.userId),this.stopCallsToUsersThatAreNotInTheRoomAnymore()};updateSendingCalls(){let e=this.context.connection.connectionId;for(let t of this._sendingStreams.keys()){let n=this._sendingStreams.get(t)||[];for(let r of this.context.connection.usersInRoom()){if(r===e)continue;let i=this.peer.getPeerIdFromUserId(r);if(n.find(e=>e.peerId===i&&e.direction===qr.Outgoing&&!e.isClosed&&e.stream?.active))L&&console.debug(`Already have a call with user `+r+` / peer `+i);else{let e=this.peer.makeCall(i,t);e&&n.push(e)}}this._sendingStreams.set(t,n)}this.stopCallsToUsersThatAreNotInTheRoomAnymore()}stopCallsToUsersThatAreNotInTheRoomAnymore(){for(let e of this._sendingStreams.keys()){let t=this._sendingStreams.get(e);if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];this.context.connection.userIsInRoom(n.userId)?L&&(this.context.connection.connectionId===n.userId?console.warn(`You are still in the room [${e}] ${n.userId}`):console.log(`User is still in room [${e}] ${n.userId}`)):(L&&console.log(`Remove call ${[e]} to user that is not in room anymore ${n.userId}`),n.close(),t.splice(e,1))}}this.peer.updateCalls(),this.debug&&this.debugLogCurrentState()}debugLogCurrentState(){console.warn(`You (${this.context.connection.connectionId}) are currently sending ${this._sendingStreams.size} and receiving ${this.peer.incomingCalls.length} calls (${this.peer.incomingCalls.map(e=>e.userId).join(`, `)})`,this.peer.incomingCalls)}};function Qr(e){if(e&&e instanceof MediaStream)for(let t of e.getTracks())t.stop()}var $r=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ei=`noVoip`,ti=D(`debugvoip`),ni=class extends N{autoConnect=!0;runInBackground=!0;createMenuButton=!0;debug=!1;_net;_menubutton;awake(){ti&&(this.debug=!0),this.debug&&(console.log(`VOIP debugging: press 'v' to toggle mute or 'c' to toggle connect/disconnect`),window.addEventListener(`keydown`,async e=>{switch(e.key.toLowerCase()){case`v`:console.log(`MUTE?`,!this.isMuted),this.setMuted(!this.isMuted);break;case`c`:this.isSending?this.disconnect():this.connect();break}}),window.addEventListener(`blur`,()=>{console.log(`VOIP: MUTE ON BLUR`),this.setMuted(!0)}),window.addEventListener(`focus`,()=>{console.log(`VOIP: UNMUTE ON FOCUS`),this.setMuted(!1)}))}onEnable(){this._net||=Zr.create(this),this.debug&&(this._net.debug=!0),this._net.addEventListener(R.StreamReceived,this.onReceiveStream),this._net.addEventListener(R.StreamEnded,this.onStreamEnded),this._net.enable(),this.autoConnect&&this.context.connection.isConnected&&this.connect(),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.LeftRoom,this.onLeftRoom),this.onEnabledChanged(),this.updateButton(),window.addEventListener(`visibilitychange`,this.onVisibilityChanged)}onDisable(){this._net&&(this._net.stopSendingStream(this._outputStream),this._net.removeEventListener(R.StreamReceived,this.onReceiveStream),this._net.removeEventListener(R.StreamEnded,this.onStreamEnded),this._net?.disable()),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.LeftRoom,this.onLeftRoom),this.onEnabledChanged(),this.updateButton(),window.removeEventListener(`visibilitychange`,this.onVisibilityChanged)}onDestroy(){this._menubutton?.remove(),this._menubutton=void 0}_allowSending=!0;_outputStream=null;get isSending(){return this._outputStream!=null&&this._outputStream.active}async connect(e){return this._net?this.context.connection.isConnected?await A.microphonePermissionsGranted()?(this._allowSending=!0,this._net?.stopSendingStream(this._outputStream),Qr(this._outputStream),this._outputStream=await this.getAudioStream(e),this._outputStream?(this.debug&&console.log(`VOIP: Got audio stream`),this._net?.startSendingStream(this._outputStream),this.updateButton(),!0):(this.updateButton(),await A.microphonePermissionsGranted()?console.error(`VOIP: Could not get audio stream - please make sure to connect an audio device and grant microphone permissions`):Nn(`Microphone permissions not granted: Please grant microphone permissions to use voice chat`),(this.debug||T())&&console.log(`VOIP: Failed to get audio stream`),!1)):(console.error(`Cannot connect to voice chat - microphone permissions not granted`),this.updateButton(),!1):(console.error(`Cannot connect to voice chat - not connected to server`),this.updateButton(),!1):(console.error(`Cannot connect to voice chat - NetworkedStreams not initialized. Make sure the component is enabled before calling this method.`),!1)}disconnect(e){e?.remember&&(this._allowSending=!1),this._net?.stopSendingStream(this._outputStream),Qr(this._outputStream),this._outputStream=null,this.updateButton()}setMuted(e){let t=this._outputStream?.getAudioTracks();if(t)for(let n of t)n.enabled=!e}get isMuted(){if(this._outputStream===null)return!1;let e=this._outputStream?.getAudioTracks();if(e){for(let t of e)if(!t.enabled)return!0}return!1}async updateButton(){if(this.createMenuButton){if(this._menubutton||(this._menubutton=document.createElement(`button`),this._menubutton.addEventListener(`click`,()=>{this.isSending?this.disconnect({remember:!0}):this.connect(),A.microphonePermissionsGranted().then(e=>{e||kn(`Microphone permissions not granted. Please allow your browser to use the microphone to be able to talk. Click on the button on the left side of your browser's address bar to allow microphone permissions.`)})})),this._menubutton){this.context.menu.appendChild(this._menubutton),this.activeAndEnabled?this._menubutton.style.display=``:this._menubutton.style.display=`none`,this._menubutton.title=this.isSending?`Click to disable your microphone`:`Click to enable your microphone`;let e=(this.isSending,``),t=this.isSending?`mic`:`mic_off`;await A.microphonePermissionsGranted()||(e=`No Permission`,t=`mic_off`,this._menubutton.title=`Microphone permissions not granted. Please allow your browser to use the microphone to be able to talk. This can usually be done in the addressbar of the webpage.`),this._menubutton.innerText=e,this._menubutton.prepend(Ze(t)),this.context.connection.isConnected==0?this._menubutton.setAttribute(`disabled`,``):this._menubutton.removeAttribute(`disabled`)}}else this.activeAndEnabled||this._menubutton?.remove()}getFrequency(e){return this.unsupported_getfrequency||(this.unsupported_getfrequency=!0,T()&&kn(`VOIP: getFrequency is currently not supported`),console.warn(`VOIP: getFrequency is currently not supported`)),null}async getAudioStream(e){if(!navigator.mediaDevices.getUserMedia)return console.error(`No getDisplayMedia support`),null;let t=async e=>await navigator.mediaDevices.getUserMedia({audio:e??!0,video:!1}).catch(e=>(console.warn(`VOIP failed getting audio stream`,e),null)),n=await t(e);if(!n)return null;if(A.isiOS()&&e?.deviceId===void 0){let n=(await navigator.mediaDevices.enumerateDevices()).find(e=>(e.kind===`audioinput`||e.kind===`audiooutput`)&&!e.label.includes(`iPhone`));if(n){let r=Object.assign({},e);return r.deviceId=n.deviceId,await t(r)}}return n}onJoinedRoom=async()=>{this.debug&&console.log(`VOIP: Joined room`),await Sn(300),this.autoConnect&&!this.isSending&&this._allowSending&&this.connect()};onLeftRoom=()=>{this.debug&&console.log(`VOIP: Left room`),this.disconnect();for(let e of this._incomingStreams.values())Qr(e.srcObject);this._incomingStreams.clear()};_incomingStreams=new Map;onReceiveStream=e=>{let t=e.target.userId,n=e.stream,r=this._incomingStreams.get(t);r||(r=new Audio,this._incomingStreams.set(t,r)),r.srcObject=n,r.setAttribute(`autoplay`,`true`),yt.registerWaitForInteraction(()=>{r?.play().catch(e=>{console.error(`VOIP: Failed to play audio`,e)})})};onStreamEnded=e=>{Qr(this._incomingStreams.get(e.userId)?.srcObject),this._incomingStreams.delete(e.userId)};onEnabledChanged=()=>{for(let e of this._incomingStreams){let t=e[1];t.muted=!this.enabled}};onVisibilityChanged=()=>{if(this.runInBackground)return;let e=document.visibilityState!==`visible`;this.setMuted(e);for(let t of this._incomingStreams){let n=t[1];n.muted=e}}};$r([E()],ni.prototype,`autoConnect`,void 0),$r([E()],ni.prototype,`runInBackground`,void 0),$r([E()],ni.prototype,`createMenuButton`,void 0);var ri=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ii=D(`debugmouth`),ai=class extends N{idle=[];talking=[];marker=null;voip=null;lastMouthChangeTime=0;mouthChangeLength=0;awake(){setTimeout(()=>{this.voip=k.findObjectOfType(ni,this.context),this.marker||=k.getComponentInParent(this.gameObject,zr)},3e3)}update(){if(!this.voip||this.context.time.frameCount%10!=0)return;let e=this.marker?.connectionId??null;if(!e){ii&&(e=null);return}let t=this.voip.getFrequency(e)??0;this.updateLips(t)}updateLips(e){if(this.context.time.time-this.lastMouthChangeTime>this.mouthChangeLength){if(this.mouthChangeLength=.05+Math.random()*.1,this.talking&&this.talking.length>0&&e>30){this.lastMouthChangeTime=this.context.time.time;let e=Math.floor(Math.random()*this.talking.length);this.setMouthShapeActive(this.talking,e)}else if(this.idle.length>0&&this.context.time.time-this.lastMouthChangeTime>.5){this.lastMouthChangeTime=this.context.time.time;let e=Math.floor(Math.random()*this.idle.length);this.setMouthShapeActive(this.idle,e)}}}setMouthShapeActive(e,t){if(e){e==this.idle?this.talking.map(e=>e.visible=!1):this.idle.map(e=>e.visible=!1);for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ci=D(`debugxrflags`),li=D(`disablexrflags`);li&&console.warn(`XRFlags are disabled`);var ui;(function(e){e[e.Never=0]=`Never`,e[e.Browser=1]=`Browser`,e[e.AR=2]=`AR`,e[e.VR=4]=`VR`,e[e.FirstPerson=8]=`FirstPerson`,e[e.ThirdPerson=16]=`ThirdPerson`,e[e.All=4294967295]=`All`})(ui||={});var di=class e{static Global=new e;Mask=ui.Browser|ui.ThirdPerson;Has(e){return(this.Mask&e)!==0}Set(e){ci&&console.warn(`Set XR flag state to`,e),this.Mask=e,fi.Apply()}Enable(e){this.Mask|=e,fi.Apply()}Disable(e){this.Mask&=~e,fi.Apply()}Toggle(e){this.Mask^=e,fi.Apply()}EnableAll(){this.Mask=-1,fi.Apply()}DisableAll(){this.Mask=0,fi.Apply()}},fi=class e extends N{static registry=[];static Apply(){for(let e of this.registry)e.UpdateVisible(di.Global)}static firstApply;static buffer=new di;visibleIn;awake(){e.registry.push(this)}onEnable(){e.firstApply?this.UpdateVisible(di.Global):(e.firstApply=!0,e.Apply())}onDestroy(){let t=e.registry.indexOf(this);t>=0&&e.registry.splice(t,1)}get isOn(){return this.gameObject.visible}UpdateVisible(t=null){if(li)return;let n,r=t;if(r&&typeof r==`number`&&(console.assert(typeof r==`number`,`XRFlag.UpdateVisible: state must be a number`,r),ci&&console.log(r),e.buffer.Mask=r,t=e.buffer),t instanceof di?(ci&&console.warn(this.name,`use passed in mask`,t.Mask,this.visibleIn),n=t.Has(this.visibleIn)):(ci&&console.log(this.name,`use global mask`),di.Global.Has(this.visibleIn)),n!==void 0)if(n)ci&&console.log(this.name,`is visible`,this.gameObject.uuid),k.setActive(this.gameObject,!0);else{if(ci&&console.log(this.name,`is not visible`,this.gameObject.uuid),!this.gameObject.visible)return;this.gameObject.visible=!1}}};si([E()],fi.prototype,`visibleIn`,void 0);var pi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},mi=class extends N{eyes=[];lastBlinkTime=0;blinkLength=0;eyesOpen=!0;state=null;awake(){this.state=k.getComponentInParent(this.gameObject,fi)}update(){if(!(!this.gameObject||!this.gameObject.visible)&&!(!this.eyes||!Array.isArray(this.eyes)||this.eyes.length===0)&&this.context.time.time-this.lastBlinkTime>this.blinkLength){if(this.lastBlinkTime=this.context.time.time,this.state&&!this.state.isOn||!this.activeAndEnabled)return;if(this.eyesOpen=!this.eyesOpen,this.blinkLength=Math.random(),this.eyesOpen?(this.blinkLength*=3,this.blinkLength+=.5,Math.random()<.1&&(this.blinkLength=.1+Math.random()*.2)):(this.blinkLength*=Math.random()*.2,this.blinkLength+=.1),Math.random()<.1&&(this.blinkLength*=3),this.blinkLength=Math.max(.2,this.blinkLength),this.blinkLength=Math.min(3,this.blinkLength),this.eyes)for(let e of this.eyes)e&&(e.visible=this.eyesOpen)}}};pi([E(S)],mi.prototype,`eyes`,void 0),pi([E()],mi.prototype,`lastBlinkTime`,void 0),pi([E()],mi.prototype,`blinkLength`,void 0),pi([E()],mi.prototype,`eyesOpen`,void 0);var hi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},gi=class e extends N{head=null;eyes=null;target=null;brain=null;awake(){this.brain||=k.getComponentInParent(this.gameObject,Ur),this.brain||=k.addComponent(this.gameObject,Ur),this.brain&&this.target&&(this.brain.controlledTarget=this.target)}vec=new r;static forward=new r(0,0,1);currentTargetPoint=new r;update(){let t=this.target;if(t&&this.head){let n=this.eyes;if(n){let r=Yt(t);this.currentTargetPoint.lerp(r,this.context.time.deltaTime/.1);let i=Yt(this.head),a=this.vec.copy(this.currentTargetPoint).sub(i).normalize();if(a.length()<.1)return;let o=e.forward;if(o.set(0,0,1),o.applyQuaternion(Rn(this.head)),o.dot(a)>.45)for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vi=class extends N{get isCollider(){return!0}attachedRigidbody=null;isTrigger=!1;sharedMaterial;membership=[0];filter;awake(){super.awake(),this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}start(){this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}onEnable(){this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}onDisable(){this.context.physics.engine?.setColliderEnabled(this,!1)||this.context.physics.engine?.removeBody(this)}onDestroy(){this.context.physics.engine?.removeBody(this)}get body(){return this.context.physics.engine?.getBody(this)}updateProperties=()=>{this.context.physics.engine?.updateProperties(this)};updatePhysicsMaterial(){this.context.physics.engine?.updatePhysicsMaterial(this)}};_i([E(vt)],vi.prototype,`attachedRigidbody`,void 0),_i([E()],vi.prototype,`isTrigger`,void 0),_i([E()],vi.prototype,`sharedMaterial`,void 0),_i([E()],vi.prototype,`membership`,void 0),_i([E()],vi.prototype,`filter`,void 0);var yi=class extends vi{radius=.5;center=new r(0,0,0);onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addSphereCollider(this),tt(this.gameObject.scale,this.updateProperties)}onDisable(){super.onDisable(),Jn(this.gameObject.scale,this.updateProperties)}onValidate(){this.updateProperties()}};_i([Kn(),E()],yi.prototype,`radius`,void 0),_i([E(r)],yi.prototype,`center`,void 0);var bi=class e extends vi{static add(t,n){let r=_n(t,e);return r.autoFit(),n?.rigidbody===!0&&_n(t,vt,{isKinematic:!1}),r}size=new r(1,1,1);center=new r(0,0,0);onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addBoxCollider(this,this.size),tt(this.gameObject.scale,this.updateProperties)}onDisable(){super.onDisable(),Jn(this.gameObject.scale,this.updateProperties)}onValidate(){this.updateProperties()}autoFit(e){let t=this.gameObject,n=t.position.clone(),i=t.quaternion.clone(),a=t.scale.clone(),o=t.parent;t.position.set(0,0,0),t.quaternion.set(0,0,0,1),t.scale.set(1,1,1),t.parent=null,t.updateMatrix();let s=fn([t]);t.position.copy(n),t.quaternion.copy(i),t.scale.copy(a),t.parent=o,e?.debug===!0&&Ln.DrawWireBox3(s,16768256,20),this.size=s.getSize(new r)||new r(1,1,1),this.center=s.getCenter(new r)||new r(0,0,0),this.size.length()<=0&&this.size.set(.01,.01,.01)}};_i([Kn(),E(r)],bi.prototype,`size`,void 0),_i([E(r)],bi.prototype,`center`,void 0);var xi=class extends vi{sharedMesh;convex=!1;onEnable(){if(super.onEnable(),!(!this.context.physics.engine||this.context.physics.engine.setColliderEnabled(this,!0)))if(this.sharedMesh?.isMesh||(this.gameObject instanceof x||this.gameObject instanceof ve)&&(this.sharedMesh=this.gameObject),this.sharedMesh?.isMesh)this.context.physics.engine.addMeshCollider(this,this.sharedMesh,this.convex),P.assignMeshLOD(this.sharedMesh,0).then(e=>{e&&this.activeAndEnabled&&this.context.physics.engine&&this.sharedMesh&&(this.context.physics.engine.removeBody(this),this.sharedMesh.geometry=e,this.context.physics.engine.addMeshCollider(this,this.sharedMesh,this.convex))});else{let e=this.sharedMesh;if(e?.isGroup){console.warn(`MeshCollider mesh is a group \"${this.sharedMesh?.name||this.gameObject.name}\", adding all children as colliders. This is currently not fully supported (colliders can not be removed from world again)`,this);let t=[];for(let n in e.children){let r=e.children[n];r.isMesh&&(this.context.physics.engine.addMeshCollider(this,r,this.convex),t.push(P.assignMeshLOD(r,0)))}Promise.all(t).then(e=>{if(e.some(e=>e)==0)return;this.context.physics.engine?.removeBody(this);let t=new x;for(let n of e)n&&this.activeAndEnabled&&(t.geometry=n,this.context.physics.engine?.addMeshCollider(this,t,this.convex))})}else (T()||D(`showcolliders`))&&console.warn(`[MeshCollider] A MeshCollider mesh is assigned to an unknown object on \"${this.gameObject.name}\", but it's neither a Mesh nor a Group. Please double check that you attached the collider component to the right object and report a bug otherwise!`,this)}}};_i([E(x)],xi.prototype,`sharedMesh`,void 0),_i([E()],xi.prototype,`convex`,void 0);var Si=class extends vi{center=new r(0,0,0);radius=.5;height=2;onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addCapsuleCollider(this,this.height,this.radius)}};_i([E(r)],Si.prototype,`center`,void 0),_i([E()],Si.prototype,`radius`,void 0),_i([E()],Si.prototype,`height`,void 0);var Ci=Symbol(`customVisibilityFlag`);function wi(e,t){e.layers[Ci]=t}var Ti=Symbol(`DidPatchLayers`);function Ei(){let e=i.prototype;if(e[Ti])return;e[Ti]=!0;let t=e.test;e.test=function(e){return this[Ci]===!1?!1:t.call(this,e)}}var Di=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Oi=D(`debugcontactshadows`);Bn(e=>{let t=e.domElement.getAttribute(`contactshadows`)||e.domElement.getAttribute(`contact-shadows`);if(t!=null&&t!=`0`&&t!=`false`){console.debug("Auto-creating ContactShadows because of `contactshadows` attribute");let n=ki.auto(e),r=parseFloat(t);isNaN(r)||(n.opacity=r,n.darkness=r)}});var ki=class e extends N{static _instances=new Map;static auto(t,n){if(t||=Xt.Current,!t)throw Error(`No context provided and no current context set.`);let r=this._instances.get(t);if(!r||r.destroyed){let n=new S;n.name=`ContactShadows`,r=_n(n,e,{autoFit:!1,occludeBelowGround:!1}),this._instances.set(t,r)}return t.scene.add(r.gameObject),r.fitShadows(n),r}autoFit=!1;darkness=.5;opacity=.5;blur=4;occludeBelowGround=!1;backfaceShadows=!0;minSize;manualUpdate=!1;set needsUpdate(e){this._needsUpdate=e}get needsUpdate(){return this._needsUpdate}_needsUpdate=!1;shadowsRoot=new S;shadowCamera;shadowGroup=new ve;renderTarget;renderTargetBlur;plane;occluderMesh;blurPlane;planeMaterial;depthMaterial;horizontalBlurMaterial;verticalBlurMaterial;textureSize=512;fitShadows(e={}){Oi&&console.warn(`Fitting shadows to scene`),Qe(this.shadowsRoot,!1);let t=fn(e.object||this.context.scene,[this.shadowsRoot]),n=Math.max(1,this.blur/32),i=t.max.x-t.min.x,a=t.max.z-t.min.z;t.expandByVector(new r(n*i,0,n*a)),Oi&&Ln.DrawWireBox3(t,16776960,60),this.gameObject.parent&&t.applyMatrix4(this.gameObject.parent.matrixWorld.clone().invert());let o=t.min,s=Math.max(1e-5,(t.max.y-o.y)*.002);t.max.y+=s,this.shadowsRoot.position.set((o.x+t.max.x)/2,o.y-s,(o.z+t.max.z)/2),this.shadowsRoot.scale.set(t.max.x-o.x,t.max.y-o.y,t.max.z-o.z),e.positionOffset&&(e.positionOffset.x!==void 0&&(this.shadowsRoot.position.x+=e.positionOffset.x),e.positionOffset.y!==void 0&&(this.shadowsRoot.position.y+=e.positionOffset.y),e.positionOffset.z!==void 0&&(this.shadowsRoot.position.z+=e.positionOffset.z)),e.scaleFactor&&(e.scaleFactor.x!==void 0&&(this.shadowsRoot.scale.x*=e.scaleFactor.x),e.scaleFactor.y!==void 0&&(this.shadowsRoot.scale.y*=e.scaleFactor.y),e.scaleFactor.z!==void 0&&(this.shadowsRoot.scale.z*=e.scaleFactor.z)),this.applyMinSize(),this.shadowsRoot.matrixWorldNeedsUpdate=!0,Oi&&console.log(`Fitted shadows to scene`,this.shadowsRoot.scale.clone())}awake(){e._instances.set(this.context,this),this.shadowsRoot.hideFlags=wt.DontExport,Qe(this.shadowsRoot,!1)}start(){Oi&&console.log(`Create ContactShadows on `+this.gameObject.name,this),this.gameObject.add(this.shadowsRoot),this.shadowsRoot.add(this.shadowGroup),this.renderTarget=new u(this.textureSize,this.textureSize),this.renderTarget.texture.generateMipmaps=!1,this.renderTargetBlur=new u(this.textureSize,this.textureSize),this.renderTargetBlur.texture.generateMipmaps=!1;let e=new He(1,1).rotateX(Math.PI/2);this.gameObject instanceof x&&(console.warn(`ContactShadows can not be added to a Mesh. Please add it to a Group or an empty Object`),wi(this.gameObject,!1)),this.plane=new x(e,this.planeMaterial=new v({map:this.renderTarget.texture,opacity:this.opacity,color:0,transparent:!0,depthWrite:!1,side:0})),this.plane.scale.y=-1,this.plane.layers.set(2),this.shadowsRoot.add(this.plane),this.plane&&(this.plane.renderOrder=1),this.occluderMesh=new x(this.plane.geometry,new v({depthWrite:!0,stencilWrite:!0,colorWrite:!1,side:1})).translateY(-1e-4),this.occluderMesh.renderOrder=-100,this.occluderMesh.layers.set(2),this.shadowsRoot.add(this.occluderMesh),this.blurPlane=new x(e),this.blurPlane.visible=!1,this.shadowGroup.add(this.blurPlane),this.shadowCamera=new Ae(-1/2,1/2,1/2,-1/2,0,1),this.shadowCamera.layers.enableAll(),this.shadowCamera.rotation.x=Math.PI/2,this.shadowCamera.matrixWorldAutoUpdate=!1,this.shadowGroup.add(this.shadowCamera),this.shadowCamera.updateMatrix(),this.depthMaterial=new t,this.depthMaterial.userData.darkness={value:this.darkness},this.depthMaterial.blending=5,this.depthMaterial.blendEquation=104,this.depthMaterial.onBeforeCompile=e=>{this.depthMaterial&&(e.uniforms.darkness=this.depthMaterial.userData.darkness,e.fragmentShader=` + uniform float darkness; + ${e.fragmentShader.replace(`gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );`,`gl_FragColor = vec4( vec3( 1.0 ), ( 1.0 - fragCoordZ ) * darkness * opacity * (gl_FrontFacing ? 1.0 : 0.66) );`)} + `)},this.depthMaterial.depthTest=!1,this.depthMaterial.depthWrite=!1,this.horizontalBlurMaterial=new Re(rr),this.horizontalBlurMaterial.depthTest=!1,this.verticalBlurMaterial=new Re($n),this.verticalBlurMaterial.depthTest=!1,this.shadowGroup.visible=!1,this.autoFit?this.fitShadows():this.applyMinSize()}onEnable(){this._needsUpdate=!0}onDestroy(){e._instances.get(this.context)===this&&e._instances.delete(this.context),this.renderTarget?.dispose(),this.renderTargetBlur?.dispose(),this.depthMaterial?.dispose(),this.horizontalBlurMaterial?.dispose(),this.verticalBlurMaterial?.dispose(),this.blurPlane?.geometry.dispose(),this.plane?.geometry.dispose(),this.occluderMesh?.geometry.dispose()}onBeforeRender(e){if(this.manualUpdate&&!this._needsUpdate)return;if(this._needsUpdate=!1,!this.renderTarget||!this.renderTargetBlur||!this.depthMaterial||!this.shadowCamera||!this.blurPlane||!this.shadowGroup||!this.plane||!this.horizontalBlurMaterial||!this.verticalBlurMaterial||!this.planeMaterial){Oi&&console.error(`ContactShadows: not initialized yet`);return}this.depthMaterial.userData.darkness.value=this.darkness,this.planeMaterial.opacity=this.opacity;let t=this.context.scene,n=this.context.renderer,r=n.getRenderTarget();this.shadowGroup.visible=!0,this.occluderMesh&&(this.occluderMesh.visible=!1);let i=this.plane.visible;this.plane.visible=!1,this.gameObject instanceof x&&wi(this.gameObject,!1);let a=t.background;t.background=null,t.overrideMaterial=this.depthMaterial,this.backfaceShadows?this.depthMaterial.side=2:this.depthMaterial.side=0;let o=n.getClearAlpha();n.setClearAlpha(0);let s=n.xr.enabled;n.xr.enabled=!1;let c=this.context.scene.matrixWorldAutoUpdate;this.context.scene.matrixWorldAutoUpdate=!1;let l=n.renderLists.get(t,0),u=l.transparent;Ai.length=0,l.transparent=Ai,ji.length=0;for(let e of l.opaque){if(!e.object.visible)continue;let t=e.material,n=e.material.colorWrite==0||t.wireframe===!0||mn(e.object)===!1;!n&&e.material.isLineMaterial&&(n=!0),!n&&e.material.isPointsMaterial&&(n=!0),n&&(ji.push(e.object),e.object[`needle:visible`]=e.object.visible,e.object.visible=!1)}this.shadowCamera.parent?this.shadowCamera.matrixWorld.multiplyMatrices(this.shadowCamera.parent.matrixWorld,this.shadowCamera.matrix):this.shadowCamera.matrixWorld.copy(this.shadowCamera.matrix),this.shadowCamera.matrixWorldInverse.copy(this.shadowCamera.matrixWorld).invert(),n.setRenderTarget(this.renderTarget),n.clear(),n.render(t,this.shadowCamera),l.transparent=u;for(let e of ji)e[`needle:visible`]!=null&&(e.visible=e[`needle:visible`]);t.overrideMaterial=null;let d=Math.max(this.blur,.05);this.blurShadow(d*2),this.blurShadow(d*.5),this.shadowGroup.visible=!1,this.occluderMesh&&(this.occluderMesh.visible=this.occludeBelowGround),this.plane.visible=i,n.setRenderTarget(r),n.setClearAlpha(o),t.background=a,n.xr.enabled=s,this.context.scene.matrixWorldAutoUpdate=c}blurShadow(e){if(!this.blurPlane||!this.shadowCamera||!this.renderTarget||!this.renderTargetBlur||!this.horizontalBlurMaterial||!this.verticalBlurMaterial)return;this.blurPlane.visible=!0;let t=this.shadowsRoot.worldScale,n=(t.x+t.z)/2,r=t.z/n,i=t.x/n;this.blurPlane.material=this.horizontalBlurMaterial,this.blurPlane.material.uniforms.tDiffuse.value=this.renderTarget.texture,this.horizontalBlurMaterial.uniforms.h.value=e*1/this.textureSize*r;let a=this.context.renderer,o=a.getRenderTarget();a.setRenderTarget(this.renderTargetBlur),a.render(this.blurPlane,this.shadowCamera),this.blurPlane.material=this.verticalBlurMaterial,this.blurPlane.material.uniforms.tDiffuse.value=this.renderTargetBlur.texture,this.verticalBlurMaterial.uniforms.v.value=e*1/this.textureSize*i,a.setRenderTarget(this.renderTarget),a.render(this.blurPlane,this.shadowCamera),this.blurPlane.visible=!1,a.setRenderTarget(o)}applyMinSize(){this.minSize&&this.shadowsRoot.scale.set(Math.max(this.minSize.x||0,this.shadowsRoot.scale.x),Math.max(this.minSize.y||0,this.shadowsRoot.scale.y),Math.max(this.minSize.z||0,this.shadowsRoot.scale.z))}};Di([E()],ki.prototype,`autoFit`,void 0),Di([E()],ki.prototype,`darkness`,void 0),Di([E()],ki.prototype,`opacity`,void 0),Di([E()],ki.prototype,`blur`,void 0),Di([E()],ki.prototype,`occludeBelowGround`,void 0),Di([E()],ki.prototype,`backfaceShadows`,void 0);var Ai=[],ji=[],Mi=D(`debugstencil`);function Ni(e,t){return(e&1<=0;e--){let n=r[e];if(Ni(n.layer,t)){Mi&&console.log(n),setTimeout(()=>{ft()&&bt(t.gameObject)&&(kn(`Stencil not supported on instanced objects`),console.warn(`Stencil not supported on instanced objects`,t))},500);for(let e=0;et.name===e);r?(r.value=t,r.textureTransform=n):this._overrides.push({name:e,value:t,textureTransform:n})}getOverride(e){return this._overrides.find(t=>t.name===e)}removeOveride(e){let t=this._overrides.findIndex(t=>t.name===e);t>=0&&this._overrides.splice(t,1)}clearAllOverrides(){this._overrides=[]}get overrides(){return this._overrides}hasOverrides(){return this._overrides.length>0}setDefine(e,t){this._defines[e]=t}clearDefine(e){this._defines[e]=void 0}getDefines(){return this._defines}getCacheKey(){let e=[],t=Object.keys(this._defines).sort();for(let n of t){let t=this._defines[n];t!==void 0&&e.push(`d:${n}=${t}`)}for(let t of this._overrides){if(t.value===null)continue;let n=``;if(t.value instanceof xe){if(n=t.value.uuid||`texture`,t.textureTransform){let e=t.textureTransform;e.offset&&(n+=`;to:${e.offset.x},${e.offset.y}`),e.repeat&&(n+=`;tr:${e.repeat.x},${e.repeat.y}`)}}else if(Array.isArray(t.value))n=t.value.join(`,`);else if(t.value&&typeof t.value==`object`&&`r`in t.value){let e=t.value;n=`${e.r},${e.g},${e.b},${e.a===void 0?``:e.a}`}else if(t.value&&typeof t.value==`object`&&`x`in t.value){let e=t.value;n=`${e.x},${e.y}${e.z===void 0?``:`,${e.z}`}${e.w===void 0?``:`,${e.w}`}`}else n=String(t.value);e.push(`${t.name}=${n}`)}return e.join(`;`)}},Ui=Symbol(`originalValues`),Wi=Symbol(`savedTextureTransforms`);function Gi(e){let t=Vi.getBlock(e);if(t)return{block:t,owner:e};if(e.parent&&e.parent.type===`Group`&&(t=Vi.getBlock(e.parent),t))return{block:t,owner:e.parent}}var Ki=Symbol(`beforeRenderingFlag`),qi=new WeakMap,Ji=new WeakMap,Yi=function(e,t,n,r){let i=Gi(this)?.block;if(i&&i.hasOverrides()){let e=i.getOverride(`transmission`)?.value,t=i.getOverride(`transparent`)?.value;e!==void 0&&typeof e==`number`&&`transmission`in n&&e!==n.transmission&&(Ji.set(this,n.transmission),n.transmission=e),t!==void 0&&typeof t==`boolean`&&t!==n.transparent&&(qi.set(this,n.transparent),n.transparent=t)}},Xi=function(e,t,n,r){let i=qi.get(e);i!==void 0&&(qi.delete(e),n.transparent=i);let a=Ji.get(e);a!==void 0&&(Ji.delete(e),n.transmission=a)},Zi=function(e,t,n,r,i,a){let o=this.material;if(!o)return;if(Array.isArray(o)){if(!o.includes(i))return}else if(o!==i)return;this[Ki]===void 0&&(this[Ki]=new WeakSet),this[Ki].add(i);let s=Gi(this);if(!s)return;let{block:c,owner:l}=s,u=c.overrides,d=i,f=c.getDefines(),p=Object.keys(f);if(p.length>0){d.defines||={};for(let e of p){let t=f[e];t!==void 0&&(d.defines[e]=t)}}if(u.length===0&&p.length===0)return;let m=p.length>0;d[Ui]||(d[Ui]=[]);let h=d[Ui];for(let e of u){if(e.value===null)continue;let t=d[e.name],n=h.find(t=>t.name===e.name);if(n?n.value=t:h.push({name:e.name,value:t}),!m&&!!t!=!!e.value&&(m=!0),d[e.name]=e.value,e.textureTransform&&e.value instanceof xe){let t=e.value;d[Wi]||(d[Wi]=[]),d[Wi].push({name:e.name,offsetX:t.offset.x,offsetY:t.offset.y,repeatX:t.repeat.x,repeatY:t.repeat.y});let n=e.textureTransform;n.offset&&t.offset.copy(n.offset),n.repeat&&t.repeat.copy(n.repeat)}}m&&(d.needsUpdate=!0),d._forceRefresh=!0},Qi=function(e,t,n,r,i,a){if(this[Ki]===void 0||!this[Ki].has(i))return;this[Ki].delete(i);let o=Gi(this);if(!o)return;let{block:s,owner:c}=o,l=s.overrides,u=i,d=u[Ui],f=s.getDefines(),p=Object.keys(f),m=!1;if(p.length>0&&u.defines){for(let e of p)delete u.defines[e];m=!0}if(l.length===0){m&&(u.needsUpdate=!0,u._forceRefresh=!0);return}if(!d)return;let h=u[Wi];if(h&&h.length>0){for(let e of h){let t=l.find(t=>t.name===e.name);t?.value instanceof xe&&(t.value.offset.set(e.offsetX,e.offsetY),t.value.repeat.set(e.repeatX,e.repeatY))}h.length=0}for(let e of l){let t=d.find(t=>t.name===e.name);t&&(!m&&!!e.value!=!!t.value&&(m=!0),u[e.name]=t.value)}m&&(u.needsUpdate=!0),u._forceRefresh=!0};function $i(e,t){e.type===`Group`?e.children.forEach(n=>{(n.type===`Mesh`||n.type===`SkinnedMesh`)&&ea(n,e,t)}):(e.type===`Mesh`||e.type===`SkinnedMesh`)&&ea(e,e,t)}function ea(e,t,n){if(!Vi.isHooked(e,t)){if(Vi.addHook(e,t),e[`needle:materialPropertyBlock`]=n,!e.onBeforeRender)e.onBeforeRender=Zi;else{let t=e.onBeforeRender;e.onBeforeRender=function(e,n,r,i,a,o){t.call(this,e,n,r,i,a,o),Zi.call(this,e,n,r,i,a,o)}}if(!e.onAfterRender)e.onAfterRender=Qi;else{let t=e.onAfterRender;e.onAfterRender=function(e,n,r,i,a,o){Qi.call(this,e,n,r,i,a,o),t.call(this,e,n,r,i,a,o)}}e.onBeforeRenderListPush=Yi,e.onAfterRenderListPush=Xi}}var ta=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},na=D(`debugreflectionprobe`),ra=D(`noreflectionprobe`),ia=null;new Ue;var aa=Symbol(`reflectionProbeKey`),oa=class e extends N{static _probes=new Map;static testBox=new de;static isUsingReflectionProbe(e){return!!e[aa]}static onEnabled=new Ut;static onDisabled=new Ut;static get(t,n,r,i){if(!t||t.isObject3D!==!0||ra)return null;let a=e._probes.get(n);if(a){for(let e of a)if(e.__didAwake||e.__internalAwake(),e.activeAndEnabled){if(i){if(e.gameObject===i)return e}else if(e.isInBox(t))return na&&console.log(`Found reflection probe`,t.name,e.name),e}}return na&&console.debug(`Did not find reflection probe`,t.name,r,t),null}_texture;_textureUrlInFlight;set texture(e){if(this._texture!==e){if(typeof e==`string`){na&&console.debug(`[ReflectionProbe] Loading reflection probe texture from URL: ${e}`),this._textureUrlInFlight=e,Ir(ln(this.sourceId,e),this.context.renderer).then(t=>{this._textureUrlInFlight===e&&t&&(this._textureUrlInFlight=void 0,na&&console.debug(`[ReflectionProbe] Successfully loaded reflection probe texture: ${e}`),this.texture=t)});return}this.__didAwake&&(this._textureUrlInFlight=void 0),this._texture=e,na&&console.debug(`[ReflectionProbe] Set reflection probe texture `+(e?.name||`(removed)`)),e&&(e instanceof re||e.mapping===306||e.mapping!==303&&(e.mapping=303),e.colorSpace=a,e.needsUpdate=!0)}}get texture(){return this._texture}intensity=1;center=new r;size=new r(1,1,1);__lightmapIntensityScale=!0;isInBox(t){return ia??=new de,ia.setFromCenterAndSize(this.gameObject.worldPosition.add(this.center),this.size),fn([t],void 0,void 0,e.testBox),e.testBox.isEmpty()?ia.containsPoint(t.worldPosition):ia?.intersectsBox(e.testBox)}constructor(){super(),e._probes.has(this.context)||e._probes.set(this.context,[]),e._probes.get(this.context)?.push(this)}awake(){this._texture&&(this._texture.mapping!==306&&(this._texture.mapping=303),this._texture.colorSpace=a,this._texture.needsUpdate=!0)}update(){na&&(ia??=new de,ia.setFromCenterAndSize(this.gameObject.worldPosition.add(this.center),this.size),Ln.DrawWireBox3(ia,5592320))}onEnable(){e.onEnabled?.invoke(this)}onDisable(){e.onDisabled?.invoke(this)}start(){this._texture||console.warn(`[ReflectionProbe] Missing texture. Please assign a custom cubemap texture. To use reflection probes assign them to your renderer's "anchor" property.`)}onDestroy(){let t=e._probes.get(this.context);if(t){let e=t.indexOf(this);e>=0&&t.splice(e,1)}}apply(e){if(ra||!this.enabled||!this.texture)return;let t=Hi.get(e);t.setOverride(`envMap`,this.texture),t.setOverride(`envMapRotation`,this.gameObject.rotation);let n=this.intensity;this.__lightmapIntensityScale&&t.getOverride(`lightMap`)&&(n/=Math.PI),t.setOverride(`envMapIntensity`,n)}unapply(e){let t=Hi.get(e);t&&t.getOverride(`envMap`)?.value===this.texture&&t.removeOveride(`envMap`)}};ta([E([xe,String])],oa.prototype,`texture`,null),ta([E()],oa.prototype,`intensity`,void 0),ta([E(r)],oa.prototype,`center`,void 0),ta([E(r)],oa.prototype,`size`,void 0);var sa=D(`debugexr`),ca=class{get name(){return`EXT_texture_exr`}parser;constructor(e){this.parser=e,sa&&console.log(e)}loadTexture(e){let t=this.name,n=this.parser,r=n.json.textures[e];if(sa&&console.log(`EXT_texture_exr.loadTexture`,e,r),!r.extensions||!r.extensions[t])return null;let i=r.extensions[t],a=new lr(n.options.manager);return sa&&console.log(`EXT_texture_exr.loadTexture`,i),n.loadTextureImage(e,i.source,a)}};typeof window<`u`&&window.addEventListener(`unhandledrejection`,e=>{});var la=Pn,ua=`$___Export_Components`,da=`NEEDLE_components`,fa=class{[Dn]},pa=class{node;nodeIndex;nodeDef;constructor(e,t,n){this.node=e,this.nodeIndex=t,this.nodeDef=n}},ma=class{get name(){return da}exportContext;objectToNodeMap={};context;writer;registerExport(e){e.register(e=>{if(`serializeUserData`in e){let t=e.serializeUserData.bind(e);this.writer=e,e.serializeUserData=(n,r)=>{try{this.serializeUserData(n,r)&&(e.extensionsUsed[this.name]=!0),t(n,r)}finally{this.afterSerializeUserData(n,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){let n=e.userData?.components;return!n||n.length<=0?!1:(delete e.userData.components,e[ua]=n,!0)}afterSerializeUserData(e,t){if(e.type===`Scene`&&la&&console.log(`DONE`,JSON.stringify(t)),e[ua]===void 0)return;let n=e[ua];delete e[ua],n!==null&&(e.userData.components=n)}writeNode(e,t){let n=this.writer.json.nodes.length;la&&console.log(e.name,n,e.uuid);let r=new pa(e,n,t);this.exportContext[n]=r,this.objectToNodeMap[e.uuid]=n}afterParse(e){la&&console.log(`AFTER`,e);for(let e in this.exportContext){let t=this.exportContext[e],n=t.node,r=t.nodeDef,i=t.nodeIndex,a=n.userData?.components;if(!a||a.length<=0)continue;let o=new fa;r.extensions=r.extensions||{},r.extensions[this.name]=o,this.context.object=n,this.context.nodeId=i,this.context.objectToNode=this.objectToNodeMap;let s=[];for(let e of a){this.context.target=e;let t=ot().writeBuiltinComponentData(e,this.context);t!==null&&s.push(t)}s.length>0&&(o[Dn]=s,la&&console.log(`DID WRITE`,n,`nodeIndex`,i,s))}}parser;nodeToObjectMap={};gltf=null;beforeRoot(){return la&&console.log(`BEGIN LOAD`),this.nodeToObjectMap={},null}async afterRoot(e){this.gltf=e;let t=e.parser,n=t?.extensions;if(!n)return;let r=n[this.name];la&&console.log(`After root`,e,this.parser,n);let i=[];if(r===!0){let n=t.json.nodes;if(n){for(let e=0;e`/materials/`+(e.material??0)),r=!0)}}!r&&(la||T())&&console.warn(`[NEEDLE_components] Component '${o.name}' on object '${n.name}' is not added to a mesh or failed to retrieve materials from glTF.`)}o&&this.parser&&r.push(nn(this.parser,o).catch(e=>console.error(`Error while resolving references (see console for details) +`,e,n,o))),n.userData=n.userData||{},n.userData[Dn]=n.userData.builtin_components||[],n.userData[Dn].push(o)}await Promise.all(r).catch(e=>{console.error(`Error while loading components`,e)})}}},ha=`NEEDLE_gameobject_data`,ga=class{get name(){return ha}parser;constructor(e){this.parser=e}afterRoot(e){let t=[];for(let e=0;enull)}async findAndApplyExtensionData(e,t){let n=await this.parser.getDependency(`node`,e);n&&this.applyExtensionData(n,t)}applyExtensionData(e,t){t.layers===void 0&&(t.layers=0),e.userData.layer=t.layers,e.layers.disableAll(),e.layers.set(t.layers),e.userData.tag=t.tag??`none`,e.hideFlags=0,e.userData.static=t.static??!1,e.visible=t.activeSelf??!0,e.guid=t.guid}},_a=`NEEDLE_lighting_settings`,va=D(`debugenvlight`),ya=class{get name(){return _a}parser;sourceId;context;constructor(e,t,n){this.parser=e,this.sourceId=t,this.context=n}afterRoot(e){let t=this.parser.json.extensions;if(t){let r=t[_a];if(r){va&&console.log(`Loaded "`+this.name+`", src: "`+this.sourceId+`"`,r);let t;if(e.scene.children.length===1){let n=e.scene.children[0];t=k.addComponent(n,ba,{},{callAwake:!1})}else{let n=new S;n.name=`LightSettings `+this.sourceId,e.scene.add(n),t=k.addComponent(n,ba,{},{callAwake:!1})}t.sourceId=this.sourceId,t.ambientIntensity=r.ambientIntensity,t.ambientLight=new n().fromArray(r.ambientLight),Array.isArray(r.ambientTrilight)&&(t.ambientTrilight=r.ambientTrilight.map(e=>new n().fromArray(e))),t.ambientMode=r.ambientMode,t.environmentReflectionSource=r.environmentReflectionSource}}return null}};Ht.registerCallback(zt.ContextCreated,e=>{let t=e.context,n=k.findObjectOfType(ba,t);n?.sourceId&&(n.enabled=!0)});var ba=class extends N{ambientMode=Vt.Skybox;ambientLight;ambientTrilight;ambientIntensity=1;environmentReflectionSource=dt.Skybox;_hasReflection=!1;_ambientLightObj;_hemisphereLightObj;awake(){if(this.sourceId){let e=this.environmentReflectionSource===dt.Skybox?It.Skybox:It.Reflection,t=this.context.lightmaps.tryGet(this.sourceId,e,0);this._hasReflection=t!=null,t&&this.context.sceneLighting.internalRegisterReflection(this.sourceId,t)}this.enabled=!1,this.context.sceneLighting.internalRegisterSceneLightSettings(this),va&&window.addEventListener(`keydown`,e=>{if(!this.destroyed)switch(e.key){case`l`:this.enabled=!this.enabled;break}});let e=this.gameObject.userData?.components;if(e){let t=e.indexOf(this);e.splice(t,1),e.push(this)}}onDestroy(){this.context.sceneLighting.internalUnregisterSceneLightSettings(this)}calculateIntensityFactor(e){let t=Math.max(e.r,e.g,e.b);return 2.2*Rt.lerp(0,1.33,t)}onEnable(){if(va&&console.warn(`💡🟡 >>> Enable lighting`,this.sourceId,this.enabled,this),this.ambientMode==Vt.Flat){if(this.ambientLight&&!this._ambientLightObj){let e=this.calculateIntensityFactor(this.ambientLight);this._ambientLightObj=new Pe(this.ambientLight,this.ambientIntensity*e),va&&console.log(`Created ambient light`,this.sourceId,this._ambientLightObj,this.ambientIntensity,e)}this._ambientLightObj&&this.gameObject.add(this._ambientLightObj)}else if(this.ambientMode===Vt.Trilight){if(this.ambientTrilight){let e=this.ambientTrilight[0],t=this.ambientTrilight[this.ambientTrilight.length-1],n=this.calculateIntensityFactor(t);this._hemisphereLightObj=new Me(t,e,this.ambientIntensity*n),this.gameObject.add(this._hemisphereLightObj),va&&console.log(`Created hemisphere ambient light`,this.sourceId,this._hemisphereLightObj,this.ambientIntensity,n)}}else this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._hemisphereLightObj&&this._hemisphereLightObj.removeFromParent();this.sourceId&&(this.context.domElement.getAttribute(`environment-image`)||this.context.sceneLighting.internalEnableReflection(this.sourceId))}onDisable(){va&&console.warn(`💡⚫ <<< Disable lighting:`,this.sourceId,this),this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._hemisphereLightObj&&this._hemisphereLightObj.removeFromParent(),this.sourceId&&this.context.sceneLighting.internalDisableReflection(this.sourceId)}},xa;(function(e){async function t(e,t){if(!e)throw Error(`URL or XML string is required to load a MaterialX material`);let n=await on.MaterialX.load(),r=e.trimStart().startsWith(`<`),i=r?e:await fetch(e).then(e=>e.text()).catch(console.error);if(!i)return console.warn(`Failed to load MaterialX file from url`,e),null;let a;if(t?.url||!r){let n=(t?.url||e).split(`/`);n.pop(),a=n.join(`/`)}let o=new pe;return n.Experimental_API.createMaterialXMaterial(i,t?.materialNameOrIndex??0,{getTexture:async e=>(!e.startsWith(`http`)&&!e.startsWith(`data:`)&&!e.startsWith(`blob:`)&&!e.startsWith(`file:`)&&a&&(e=a+`/`+e),o.loadAsync(e).catch(t=>{console.warn(`Failed to load texture for MaterialX material ${e}`,t)}))},{cacheKey:e})}e.loadFromUrl=t})(xa||={});var Sa=class extends oe{loadAsync(e,t){return new Promise((n,r)=>{this.load(e,n,t,r)})}load(e,t,n,r){n?.({type:`progress`,loaded:0,total:0}),xa.loadFromUrl(e,{}).then(n=>{n?t(this.onLoaded(n)):r?.(Error(`Failed to load MaterialX material from url: `+e))})}onLoaded(e){return St.createPrimitive(`ShaderBall`,{material:e})}},Ca=class{context;loader;url;parser;get name(){return`materialx-loading-helper`}constructor(e,t,n,r){this.context=e,this.loader=t,this.url=n,this.parser=r}mtlxLoader;async beforeRoot(){if(this.parser.json.extensions?.NEEDLE_materials_mtlx){let e=await on.MaterialX.load();try{this.mtlxLoader=new e.MaterialXLoader(this.parser,{cacheKey:`${this.url}:materialx`,parameters:{precision:this.context.renderer?.capabilities.precision}},{getFrame:()=>this.context.time.frame,getTime:()=>this.context.time.time})}catch(e){console.error(e)}}}loadMaterial(e){return this.mtlxLoader?this.mtlxLoader.loadMaterial(e):null}},wa;(function(e){e[e.Fragment=35632]=`Fragment`,e[e.Vertex=35633]=`Vertex`})(wa||={});var Ta;(function(e){e[e.INT=5124]=`INT`,e[e.FLOAT=5126]=`FLOAT`,e[e.FLOAT_VEC2=35664]=`FLOAT_VEC2`,e[e.FLOAT_VEC3=35665]=`FLOAT_VEC3`,e[e.FLOAT_VEC4=35666]=`FLOAT_VEC4`,e[e.INT_VEC2=35667]=`INT_VEC2`,e[e.INT_VEC3=35668]=`INT_VEC3`,e[e.INT_VEC4=35669]=`INT_VEC4`,e[e.BOOL=35670]=`BOOL`,e[e.BOOL_VEC2=35671]=`BOOL_VEC2`,e[e.BOOL_VEC3=35672]=`BOOL_VEC3`,e[e.BOOL_VEC4=35673]=`BOOL_VEC4`,e[e.FLOAT_MAT2=35674]=`FLOAT_MAT2`,e[e.FLOAT_MAT3=35675]=`FLOAT_MAT3`,e[e.FLOAT_MAT4=35676]=`FLOAT_MAT4`,e[e.SAMPLER_2D=35678]=`SAMPLER_2D`,e[e.SAMPLER_3D=35680]=`SAMPLER_3D`,e[e.SAMPLER_CUBE=35681]=`SAMPLER_CUBE`,e[e.UNKNOWN=0]=`UNKNOWN`})(Ta||={});var Ea=D(`debugcustomshader`),Da=`NEEDLE_techniques_webgl`,Oa;(function(e){e[e.INT=5124]=`INT`,e[e.FLOAT=5126]=`FLOAT`,e[e.FLOAT_VEC2=35664]=`FLOAT_VEC2`,e[e.FLOAT_VEC3=35665]=`FLOAT_VEC3`,e[e.FLOAT_VEC4=35666]=`FLOAT_VEC4`,e[e.INT_VEC2=35667]=`INT_VEC2`,e[e.INT_VEC3=35668]=`INT_VEC3`,e[e.INT_VEC4=35669]=`INT_VEC4`,e[e.BOOL=35670]=`BOOL`,e[e.BOOL_VEC2=35671]=`BOOL_VEC2`,e[e.BOOL_VEC3=35672]=`BOOL_VEC3`,e[e.BOOL_VEC4=35673]=`BOOL_VEC4`,e[e.FLOAT_MAT2=35674]=`FLOAT_MAT2`,e[e.FLOAT_MAT3=35675]=`FLOAT_MAT3`,e[e.FLOAT_MAT4=35676]=`FLOAT_MAT4`,e[e.SAMPLER_2D=35678]=`SAMPLER_2D`,e[e.SAMPLER_3D=35680]=`SAMPLER_3D`,e[e.SAMPLER_CUBE=35681]=`SAMPLER_CUBE`,e[e.UNKNOWN=0]=`UNKNOWN`})(Oa||={});var ka=class{objectToWorldMatrix=new b;worldToObjectMatrix=new b;objectToWorld=[];worldToObject=[];updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),Wt(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),Wt(this.worldToObjectMatrix,this.worldToObject)}},Aa;(function(e){e[e.Off=0]=`Off`,e[e.Front=1]=`Front`,e[e.Back=2]=`Back`})(Aa||={});var ja;(function(e){e[e.Never=1]=`Never`,e[e.Less=2]=`Less`,e[e.Equal=3]=`Equal`,e[e.LEqual=4]=`LEqual`,e[e.Greater=5]=`Greater`,e[e.NotEqual=6]=`NotEqual`,e[e.GEqual=7]=`GEqual`,e[e.Always=8]=`Always`})(ja||={});var Ma=class e extends y{identifier;onBeforeRenderSceneCallback=this.onBeforeRenderScene.bind(this);clone(){let e=super.clone();return Pa(e),e}constructor(e,...t){super(...t),this.identifier=e,Ea&&console.log(this),this.type=`NEEDLE_CUSTOM_SHADER`,this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName],(this.depthTextureUniform||this.opaqueTextureUniform)&&Xt.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}dispose(){super.dispose();let e=Xt.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);e>=0&&Xt.Current.pre_render_callbacks.splice(e,1)}_sphericalHarmonicsName=`unity_SpecCube0`;_objToWorldName=`hlslcc_mtx4x4unity_ObjectToWorld`;_worldToObjectName=`hlslcc_mtx4x4unity_WorldToObject`;static viewProjection=new b;static _viewProjectionValues=[];_viewProjectionName=`hlslcc_mtx4x4unity_MatrixVP`;static viewMatrix=new b;static _viewMatrixValues=[];_viewMatrixName=`hlslcc_mtx4x4unity_MatrixV`;static _worldSpaceCameraPosName=`_WorldSpaceCameraPos`;static _worldSpaceCameraPos=new r;static _mainLightColor=new C;static _mainLightPosition=new r;static _lightData=new C;_rendererData=new ka;get depthTextureUniform(){if(this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&Xt.Current.setRequireColor(!0),this.depthTextureUniform&&Xt.Current.setRequireDepth(!0)}onBeforeRender(e,t,n,r,i,a){r.attributes.tangent||r.computeTangents(),this.onUpdateUniforms(n,i)}onUpdateUniforms(t,n){let r=Xt.Current;if(t&&(e.viewProjection&&this.uniforms[this._viewProjectionName]&&(e.viewProjection.copy(t.projectionMatrix).multiply(t.matrixWorldInverse),Wt(e.viewProjection,e._viewProjectionValues)),e.viewMatrix&&this.uniforms[this._viewMatrixName]&&(e.viewMatrix.copy(t.matrixWorldInverse),Wt(e.viewMatrix,e._viewMatrixValues)),this.uniforms[e._worldSpaceCameraPosName]&&e._worldSpaceCameraPos.setFromMatrixPosition(t.matrixWorld)),this.uniforms._TimeParameters&&(this.uniforms._TimeParameters.value=r.sceneLighting.timeVec4),this.uniforms._Time){let e=this.uniforms._Time.value;e.x=r.sceneLighting.timeVec4.x/20,e.y=r.sceneLighting.timeVec4.x,e.z=r.sceneLighting.timeVec4.x*2,e.w=r.sceneLighting.timeVec4.x*3}if(this.uniforms._SinTime){let e=this.uniforms._SinTime.value;e.x=Math.sin(r.sceneLighting.timeVec4.x/8),e.y=Math.sin(r.sceneLighting.timeVec4.x/4),e.z=Math.sin(r.sceneLighting.timeVec4.x/2),e.w=Math.sin(r.sceneLighting.timeVec4.x)}if(this.uniforms._CosTime){let e=this.uniforms._CosTime.value;e.x=Math.cos(r.sceneLighting.timeVec4.x/8),e.y=Math.cos(r.sceneLighting.timeVec4.x/4),e.z=Math.cos(r.sceneLighting.timeVec4.x/2),e.w=Math.cos(r.sceneLighting.timeVec4.x)}if(this.uniforms.unity_DeltaTime){let e=this.uniforms.unity_DeltaTime.value;e.x=r.time.deltaTime,e.y=1/r.time.deltaTime,e.z=r.time.smoothedDeltaTime,e.w=1/r.time.smoothedDeltaTime}let i=r.mainLight;if(i){let t=Yt(i.gameObject,e._mainLightPosition);this.uniforms._MainLightPosition={value:t.normalize()},e._mainLightColor.set(i.color.r,i.color.g,i.color.b,0),this.uniforms._MainLightColor={value:e._mainLightColor};let n=i.intensity;e._lightData.z=n,this.uniforms.unity_LightData={value:e._lightData}}if(t&&(e.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=e._viewProjectionValues),e.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=e._viewMatrixValues),this.uniforms[e._worldSpaceCameraPosName]&&(this.uniforms[e._worldSpaceCameraPosName]={value:e._worldSpaceCameraPos}),r.mainCameraComponent)){if(this.uniforms._ProjectionParams){let e=this.uniforms._ProjectionParams.value;e.x=1,e.y=r.mainCameraComponent.nearClipPlane,e.z=r.mainCameraComponent.farClipPlane,e.w=1/e.z,this.uniforms._ProjectionParams.value=e}if(this.uniforms._ZBufferParams){let e=this.uniforms._ZBufferParams.value,t=r.mainCameraComponent;e.x=1-t.farClipPlane/t.nearClipPlane,e.y=t.farClipPlane/t.nearClipPlane,e.z=e.x/t.farClipPlane,e.w=e.y/t.farClipPlane,this.uniforms._ZBufferParams.value=e}if(this.uniforms._ScreenParams){let e=this.uniforms._ScreenParams.value;e.x=r.domWidth,e.y=r.domHeight,e.z=1+1/e.x,e.w=1+1/e.y,this.uniforms._ScreenParams.value=e}if(this.uniforms._ScaledScreenParams){let e=this.uniforms._ScaledScreenParams.value;e.x=r.domWidth,e.y=r.domHeight,e.z=1+1/e.x,e.w=1+1/e.y,this.uniforms._ScaledScreenParams.value=e}}let a=this.depthTextureUniform;a&&(a.value=r.depthTexture);let o=this.opaqueTextureUniform;if(o&&(o.value=r.opaqueColorTexture),n){let e=this._rendererData;e.updateFrom(n),this.uniforms[this._worldToObjectName].value=e.worldToObject,this.uniforms[this._objToWorldName].value=e.objectToWorld}this.uniformsNeedUpdate=!0}},Na=class{get name(){return Da}parser;identifier;constructor(e,t){this.parser=e,this.identifier=t}loadMaterial(e){let t=this.parser.json.materials[e];if(!t)return Ea&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions.NEEDLE_techniques_webgl)return Ea&&console.log(`Material ${e} does not use NEEDLE_techniques_webgl`),null;Ea&&console.log(`Material ${e} uses NEEDLE_techniques_webgl`,t);let n=t.extensions[Da].technique;if(n<0)return console.debug(`Material ${e} does not have a valid technique index`),null;let r=this.parser.json.extensions[Da];if(!r)return Ea?console.error(`Missing shader data`,this.parser.json.extensions):console.debug(`Missing custom shader data in parser.json.extensions`),null;Ea&&console.log(r);let i=r.techniques[n];return i?new Promise(async(e,o)=>{let s=await ht(r,i.program),c=s?.fragmentShader,l=s?.vertexShader;if(!c||!l)return o();Ea&&console.log(`loadMaterial`,t,s);let u={},d=i.uniforms;(l.includes(`_Time`)||c.includes(`_Time`))&&(u._Time={value:new C(0,0,0,0)}),(l.includes(`_SinTime`)||c.includes(`_SinTime`))&&(u._SinTime={value:new C(0,0,0,0)}),(l.includes(`_CosTime`)||c.includes(`_CosTime`))&&(u._CosTime={value:new C(0,0,0,0)}),(l.includes(`unity_DeltaTime`)||c.includes(`unity_DeltaTime`))&&(u.unity_DeltaTime={value:new C(0,0,0,0)});for(let e in d){let t=e;switch(t){case`_TimeParameters`:u[t]={value:new C};break;case`hlslcc_mtx4x4unity_MatrixV`:case`hlslcc_mtx4x4unity_MatrixVP`:u[t]={value:[]};break;case`_MainLightPosition`:case`_MainLightColor`:case`_WorldSpaceCameraPos`:u[t]={value:[0,0,0,1]};break;case`unity_OrthoParams`:break;case`unity_SpecCube0`:u[t]={value:null};break;default:case`_ScreenParams`:case`_ZBufferParams`:case`_ProjectionParams`:u[t]={value:[0,0,0,0]};break;case`_CameraOpaqueTexture`:case`_CameraDepthTexture`:u[t]={value:null};break}}let f=!1;if(t.extensions&&t.extensions.NEEDLE_techniques_webgl){let e=t.extensions[Da];if(e.technique===n){Ea&&console.log(t.name,`Material Properties`,e);for(let t in e.values){let n=e.values[t];if(typeof n==`string`){if(n.startsWith(`/textures/`)){let e=n.substring(10),r=Number.parseInt(e);if(r>=0){let e=await this.parser.getDependency(`texture`,r);e instanceof xe&&(e.colorSpace=a,e.needsUpdate=!0),u[t]={value:e};continue}}switch(t){case`alphaMode`:n===`BLEND`&&(f=!0);continue}}if(Array.isArray(n)&&n.length===4){u[t]={value:new C(n[0],n[1],n[2],n[3])};continue}u[t]={value:n}}}}let p=new Ma(this.identifier,{name:t.name??``,uniforms:u,vertexShader:l,fragmentShader:c,lights:!1});switch(p.glslVersion=Oe,p.vertexShader=p.vertexShader.replace(`#version 300 es`,``),p.fragmentShader=p.fragmentShader.replace(`#version 300 es`,``),u._Cull?.value){case Aa.Off:p.side=2;break;case Aa.Front:p.side=1;break;case Aa.Back:p.side=0;break;default:p.side=0;break}switch(u._ZTest?.value){case ja.Equal:p.depthTest=!0,p.depthFunc=4;break;case ja.NotEqual:p.depthTest=!0,p.depthFunc=7;break;case ja.Less:p.depthTest=!0,p.depthFunc=2;break;case ja.LEqual:p.depthTest=!0,p.depthFunc=3;break;case ja.Greater:p.depthTest=!0,p.depthFunc=6;break;case ja.GEqual:p.depthTest=!0,p.depthFunc=5;break;case ja.Always:p.depthTest=!1,p.depthFunc=1;break}p.transparent=f,f&&(p.depthWrite=!1),Gt(u),p.onUpdateUniforms();for(let e in d){let t=e,n=d[e].type;if(u[t]?.value===void 0)switch(n){case Ta.SAMPLER_2D:u[t]={value:jt},console.warn(`Missing/unassigned texture, fallback to white: `+t);break;default:t===`unity_OrthoParams`||console.warn(`TODO: EXPECTED UNIFORM / fallback NOT SET: `+t,d[e]);break}}Ea&&console.log(p.uuid,u),Pa(p),e(p)}):null}};function Pa(e){if(e.uniforms){Ea&&console.log(`Uniforms:`,e.uniforms);for(let n in e.uniforms)switch(t(n,n),n){case`_Color`:t(`color`,n);break;case`_map`:t(`map`,n);break}}function t(t,n){Object.getOwnPropertyDescriptor(e,t)||Object.defineProperty(e,t,{get:()=>e.uniforms[n].value,set:t=>{e.uniforms[n].value=t,e.needsUpdate=!0}})}}var Fa=D(`debugextensions`),Ia,La=e(()=>import(`./needle-engine.dep.BzZBR-mM.js`).then(async e=>(Ia=e.GLTFAnimationPointerExtension,Ia)),__vite__mapDeps([0,1,2,3]),import.meta.url).catch(e=>{console.warn(`Failed to import GLTFLoaderAnimationPointer. Please use @needle-tools/three-animationpointer for full KHR_animation support`,e)}),Ra=[];function za(e){Ra.includes(e)||Ra.push(e)}function Ba(e){let t=Ra.indexOf(e);t>=0&&Ra.splice(t,1)}function Va(e){if(e instanceof Yn){let t=new ma;return e.register(e=>(t.parser=e,t)),t}return null}var Ha=class{resolvePath(e){return e.includes(`/extensions/builtin_components/`)?e.replace(`/extensions/builtin_components/`,`/userData/components/`):e.includes(`extensions/builtin_components/`)?e.replace(`extensions/builtin_components/`,`/userData/components/`):e}};async function Ua(e,t,n,r){let i=n.indexOf(`?`);i>=0&&(n=n.substring(0,i)),r||=n,(r.startsWith(`blob:`)||r.startsWith(`data:`))&&console.debug(`[GLTFLoader] Suspicious sourceId detected`),e.register(e=>new ga(e)),e.register(e=>new Jt(e)),e.register(e=>new it(e,t.lightmaps,r)),e.register(e=>new ya(e,r,t)),e.register(e=>new Na(e,r)),e.register(e=>new Fi(e,r)),e.register(e=>new P(e)),e.register(e=>new ca(e)),e.register(e=>new Vn(e)),e.register(r=>new Ca(t,e,n,r)),bn()&&e.register(e=>new Qt(e)),await La.catch(e=>{}),e.register(e=>{if(Ia){let t=new Ia(e);return t.setAnimationPointerResolver.bind(t)(new Ha),t}else return(Fa||T())&&console.error(`Missing KHR_animation_pointer extension...`),{name:`KHR_animation_pointer_NOT_AVAILABLE`}});for(let r of Ra)r.onImport&&r.onImport(e,n,t)}function Wa(e,t){for(let n of Ra)n.onExport&&n.onExport(e,t)}function Ga(e,t,n){for(let r of Ra)r.onLoaded&&r.onLoaded(e,t,n)}var z=D(`debuginstancing`),Ka=class e{static instance=new e;static getStartInstanceCount=e=>4;objs=[];setup(e,t,n,r,i,a=0){e.applySettings(t);let o=this.tryCreateOrAddInstance(t,n,i);if(o){r===null&&(r=[]),r.push(o);let e=o.object.material;Array.isArray(e)?e.forEach(e=>P.assignTextureLOD(e,0)):P.assignTextureLOD(e,0);let t=o.object,n=t.geometry;P.assignMeshLOD(t,0).then(e=>{e&&n!=e&&o.setGeometry(e)})}else if(a<=0&&t.type!==`Mesh`){let o=a+1;for(let a of t.children)r=this.setup(e,a,n,r,i,o)}return a===0&&i.useMatrixWorldAutoUpdate&&r&&r.length>=0&&this.autoUpdateInstanceMatrix(t),r}tryCreateOrAddInstance(t,n,r){if(t.type===`Mesh`){let i=r.foundMeshes;if(r.foundMeshes+=1,!r.rend.enableInstancing)return null;if(r.rend.enableInstancing!==!0){if(i>=r.rend.enableInstancing.length)return z&&console.error(`Something is wrong with instance setup`,t,r.rend.enableInstancing,i),null;if(!r.rend.enableInstancing[i])return null}let a=t,o=a.material;for(let e of this.objs)if(e.canAdd(a.geometry,o))return e.addInstance(a);let s=e.getStartInstanceCount(t);(!s||s<0)&&(s=4);let c=t.name;c?.length||(c=rt());let l=new Ja(c,a.geometry,o,s,n);return this.objs.push(l),l.addInstance(a)}return null}autoUpdateInstanceMatrix(e){let t=e.matrixWorld.multiplyMatrices.bind(e.matrixWorld),n=e.matrixWorld.clone(),r=(r,i)=>{let a=t(r,i);return(e[Kt]||n.equals(a)===!1)&&(n.copy(a),e[Kt]=!0),a};e.matrixWorld.multiplyMatrices=r}},qa=class e{static all=[];get name(){return this.object.name}get isActive(){return this.__instanceIndex>=0}get vertexCount(){return this.object.geometry.attributes.position.count}get maxVertexCount(){return Math.max(this.meshInformation.vertexCount,this.vertexCount)}get reservedVertexCount(){return this.__reservedVertexRange}get indexCount(){return this.object.geometry.index?this.object.geometry.index.count:0}get maxIndexCount(){return Math.max(this.meshInformation.indexCount,this.indexCount)}get reservedIndexCount(){return this.__reservedIndexRange}object;renderer;__instanceIndex=-1;__reservedVertexRange=0;__reservedIndexRange=0;__geometryIndex=-1;meshInformation;constructor(t,n){this.__instanceIndex=-1,this.object=t,this.renderer=n,t[On]=n,this.meshInformation=Ya(t.geometry),e.all.push(this)}updateMeshInformation(){let e=Ya(this.object.geometry),t=this.meshInformation.vertexCount,n=this.meshInformation.indexCount;return Object.assign(this.meshInformation,e),t!==this.meshInformation.vertexCount||n!==this.meshInformation.indexCount}updateInstanceMatrix(e=!1,t=!0){this.__instanceIndex<0||(t&&this.object.updateWorldMatrix(!0,e),this.renderer.updateInstance(this.object.matrixWorld,this.__instanceIndex))}setMatrix(e){this.__instanceIndex<0||this.renderer.updateInstance(e,this.__instanceIndex)}setGeometry(e){if(this.__geometryIndex<0)return!1;let t=this;if(this.vertexCount>this.__reservedVertexRange)return n(`Instancing: Can not update geometry (${this.name}), reserved vertex range is too small: ${this.__reservedVertexRange.toLocaleString()} < ${this.vertexCount.toLocaleString()} vertices for ${this.name}`);if(this.indexCount>this.__reservedIndexRange)return n(`Instancing: Can not update geometry (${this.name}), reserved index range is too small: ${this.__reservedIndexRange.toLocaleString()} < ${this.indexCount.toLocaleString()} indices for ${this.name}`);return this.renderer.updateGeometry(e,this.__geometryIndex);function n(e){return t.updateMeshInformation()&&(t.renderer.remove(t,!0),t.renderer.add(t))?!0:((T()||z)&&console.error(e),!1)}}add(){this.__instanceIndex>=0||(this.renderer.add(this),k.markAsInstancedRendered(this.object,!0))}remove(t){if(!(this.__instanceIndex<0)&&(this.renderer.remove(this,t),k.markAsInstancedRendered(this.object,!1),t)){let t=e.all.indexOf(this);t>=0&&e.all.splice(t,1)}}},Ja=class{get batchedMesh(){return this._batchedMesh}get visible(){return this._batchedMesh.visible}set visible(e){this._batchedMesh.visible=e}get castShadow(){return this._batchedMesh.castShadow}set castShadow(e){this._batchedMesh.castShadow=e}set receiveShadow(e){this._batchedMesh.receiveShadow=e}allowResize=!0;name=``;geometry;material;get count(){return this._currentInstanceCount}updateBounds(e=!0,t=!0){if(this._needUpdateBounds=!1,e&&this._batchedMesh.computeBoundingBox(),t&&this._batchedMesh.computeBoundingSphere(),z&&this._batchedMesh.boundingSphere){let e=this._batchedMesh.boundingSphere;Ln.DrawWireSphere(e.center,e.radius,65280)}}_context;_batchedMesh;_handles=[];_geometryIds=new WeakMap;_maxInstanceCount;_currentInstanceCount=0;_currentVertexCount=0;_currentIndexCount=0;_maxVertexCount;_maxIndexCount;static nullMatrix=new b;canAdd(e,t){return this._maxVertexCount>1e7||t!==this.material||!this.validateGeometry(e)?!1:!!(!this.mustGrow(e)||this.allowResize)}_needUpdateBounds=!1;_debugMaterial=null;getBatchedMeshName(){return this.name?`${this.name} (BatchedMesh)`:`BatchedMesh`}constructor(e,t,n,r,i){this.name=e,this.geometry=t,this.material=n,this._context=i,this._maxInstanceCount=Math.max(2,r),z&&(this._debugMaterial=Xa());let a=this.tryEstimateVertexCountSize(this._maxInstanceCount,[t],r);this._maxVertexCount=a.vertexCount,this._maxIndexCount=a.indexCount,this._batchedMesh=new ke(this._maxInstanceCount,this._maxVertexCount,this._maxIndexCount,this._debugMaterial??this.material),this._batchedMesh.name=this.getBatchedMeshName(),this._batchedMesh[_t]=!0,this._batchedMesh.visible=!0,this._context.scene.add(this._batchedMesh),n instanceof y&&(n.defines.USE_INSTANCING=!0,n.needsUpdate=!0),i.pre_render_callbacks.push(this.onBeforeRender),i.post_render_callbacks.push(this.onAfterRender),z&&console.log(`Instanced renderer (${this.name}) created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${e}\"`)}dispose(){z&&console.warn(`Dispose instanced renderer`,this.name),this._context.scene.remove(this._batchedMesh),this._batchedMesh.dispose(),this._batchedMesh=null,this._handles=[]}addInstance(e){let t=new qa(e,this);e.castShadow===!0&&this._batchedMesh.castShadow===!1&&(this._batchedMesh.castShadow=!0),e.receiveShadow===!0&&this._batchedMesh.receiveShadow===!1&&(this._batchedMesh.receiveShadow=!0);try{this.add(t)}catch(t){return console.error(`Failed adding mesh to instancing (object name: \"${e.name}\", instances: ${this._currentInstanceCount.toLocaleString()}/${this._maxInstanceCount.toLocaleString()}, vertices: ${this._currentVertexCount.toLocaleString()}/${this._maxVertexCount.toLocaleString()}, indices: ${this._currentIndexCount.toLocaleString()}/${this._maxIndexCount.toLocaleString()})\n`,t),T()&&Nn(`Failed instancing mesh. See the browser console for details.`),null}return t}add(e){let t=e.object.geometry;if(!t||!t.attributes)return console.error(`Cannot add object to instancing without geometry`,e.name),!1;if(this._currentInstanceCount+1>this._maxInstanceCount||this.mustGrow(t))if(this.allowResize)this.grow(t);else return console.error(`Cannot add instance, max count reached`,this.name,this.count,this._maxInstanceCount),!1;return e.object.updateWorldMatrix(!0,!0),this.addGeometry(e),this._handles[e.__instanceIndex]=e,this._currentInstanceCount+=1,this.markNeedsUpdate(),this._currentInstanceCount>0&&(this._batchedMesh.visible=!0),!0}remove(e,t){e&&(e.__instanceIndex<0||this._handles[e.__instanceIndex]!=e||this._currentInstanceCount<=0||(this.removeGeometry(e,t),this._handles[e.__instanceIndex]=null,e.__instanceIndex=-1,this._currentInstanceCount>0&&--this._currentInstanceCount,this._currentInstanceCount<=0&&(this._batchedMesh.visible=!1),this.markNeedsUpdate()))}updateInstance(e,t){this._batchedMesh.setMatrixAt(t,e),this.markNeedsUpdate()}updateGeometry(e,t){return this.validateGeometry(e)?(this.mustGrow()&&this.grow(e),z&&console.debug(`[Instancing] UPDATE GEOMETRY at `+t,this._batchedMesh._geometryCount,e.name,Ya(e),e.attributes.position.count,e.index?e.index.count:0),this._batchedMesh.setGeometryAt(t,e),this._geometryIds.set(e,t),this.markNeedsUpdate(),!0):!1}onBeforeRender=()=>{this._batchedMesh.layers.enableAll(),this._needUpdateBounds&&this._batchedMesh[_t]===!0&&(z===`verbose`&&console.log(`Update instancing bounds`,this.name,this._batchedMesh.matrixWorldNeedsUpdate),this.updateBounds())};onAfterRender=()=>{this._batchedMesh.layers.disableAll()};validateGeometry(e){let t=this.geometry;for(let n in t.attributes)if(n!==`batchId`&&!e.hasAttribute(n))return T()&&console.warn(`BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`),!1;return!0}markNeedsUpdate(){z===`verbose`&&console.warn(`Marking instanced mesh dirty`,this.name),this._needUpdateBounds=!0}mustGrow(e){if(this.count>=this._maxInstanceCount)return!0;if(!e||!e.attributes||this._geometryIds.has(e))return!1;let t=Ya(e),n=t.vertexCount,r=t.indexCount;return this._currentVertexCount+n>this._maxVertexCount||this._currentIndexCount+r>this._maxIndexCount}_growId=0;grow(e){let t=++this._growId,n=this.count>=this._maxInstanceCount?Math.ceil(this._maxInstanceCount*2):this._maxInstanceCount,r=this.tryEstimateVertexCountSize(n,[e]),i=1.25,a=Math.max(this._maxVertexCount,Math.ceil(r.vertexCount*i)),o=Math.max(this._maxIndexCount,Math.ceil(r.indexCount*i));if(z){let t=Ya(e);console.warn(`[Instancing] Growing Buffer\nMesh: \"${this.name}${e.name?.length?`/`+e.name:``}\" (${t.vertexCount.toLocaleString()} vertices, ${t.indexCount.toLocaleString()} indices)\nMax count ${this._maxInstanceCount.toLocaleString()} → ${n.toLocaleString()}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${a.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${o.toLocaleString()}`),this._debugMaterial=Xa()}else T()&&console.debug(`[Instancing] Growing Buffer\nMesh: \"${this.name}${e.name?.length?`/`+e.name:``}\"\nMax count ${this._maxInstanceCount} → ${n}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${a.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${o.toLocaleString()}`);this._maxVertexCount=a,this._maxIndexCount=o;let s=new ke(n,this._maxVertexCount,this._maxIndexCount,this._debugMaterial??this.material);s.name=this.getBatchedMeshName(),s.layers=this._batchedMesh.layers,s.castShadow=this._batchedMesh.castShadow,s.receiveShadow=this._batchedMesh.receiveShadow,s.visible=this._batchedMesh.visible,s[_t]=this._batchedMesh[_t],s.matrixAutoUpdate=this._batchedMesh.matrixAutoUpdate,s.matrixWorldNeedsUpdate=this._batchedMesh.matrixWorldNeedsUpdate,s.matrixAutoUpdate=this._batchedMesh.matrixAutoUpdate,s.matrixWorld.copy(this._batchedMesh.matrixWorld),s.matrix.copy(this._batchedMesh.matrix),this._batchedMesh.dispose(),this._batchedMesh.removeFromParent(),this._geometryIds=new WeakMap,this._batchedMesh=s,this._maxInstanceCount=n;let c=[...this._handles];this._handles=[];for(let e of c){if(t!==this._growId){z&&console.warn(`[Instancing] Aborting grow since another grow happened in the meantime`);return}e&&e.__instanceIndex>=0&&(this.addGeometry(e),this._handles[e.__instanceIndex]=e)}this._context.scene.add(s)}tryEstimateVertexCountSize(e,t,n=1){let r=new Map;for(let e of this._handles)if(e&&e.__instanceIndex>=0&&e.object.geometry){if(r.has(e.object.geometry)){let t=r.get(e.object.geometry);t.count+=1}else{let t={count:1,...Ya(e.object.geometry)};r.set(e.object.geometry,t)}if(t&&t?.length>0){let n=t.indexOf(e.object.geometry);n!==-1&&t.splice(n,1)}}let i=0,a=0,o=0;for(let[e,t]of r)o+=1,i+=t.vertexCount,a+=t.indexCount;let s=Math.ceil(i/Math.max(1,o))*o,c=Math.ceil(a/Math.max(1,o))*o;if(t)for(let e of t){let t=Ya(e);t!=null&&(s+=t.vertexCount*n,c+=t.indexCount*n)}return z&&console.log(`[Instancing] Estimated size for new buffer ${this.name}\nGeometries: ${o} (New: ${t?.length||0})\nInstances: ${e}\nEstimated Vertices: ${s.toLocaleString()}\nEstimated Indices: ${c.toLocaleString()}`),{vertexCount:s,indexCount:c}}addGeometry(e){let t=e.object.geometry;if(!t)return;let n=this._geometryIds.get(t);n==null?(z&&console.warn(`[Instancing] > ADD NEW GEOMETRY \"${e.name} (${t.name}; ${t.uuid})\"\nCurrent Instances: ${this._currentInstanceCount}\nMax Vertices: ${e.maxVertexCount.toLocaleString()}\nMax Indices: ${e.maxIndexCount.toLocaleString()}\nMax Triangles: ${(e.maxIndexCount/3).toLocaleString()}`),n=this._batchedMesh.addGeometry(t,e.maxVertexCount,e.maxIndexCount),this._geometryIds.set(t,n),this._currentVertexCount+=e.maxVertexCount,this._currentIndexCount+=e.maxIndexCount):z===`verbose`&&console.log(`[Instancing] > ADD INSTANCE \"${e.name}\"\nGEOMETRY_ID=${n}\n${this._currentInstanceCount} instances`);let r=this._batchedMesh.addInstance(n);e.__geometryIndex=n,e.__instanceIndex=r,e.__reservedVertexRange=e.maxVertexCount,e.__reservedIndexRange=e.maxIndexCount,this._batchedMesh.setMatrixAt(r,e.object.matrixWorld),z&&console.debug(`[Instancing] > ADDED INSTANCE \"${e.name}\"\nGEOMETRY_ID=${n}\n${this._currentInstanceCount} instances\nIndex: ${e.__instanceIndex}\nVertices: ${this._currentVertexCount.toLocaleString()}/${this._maxVertexCount.toLocaleString()},\nIndices: ${this._currentIndexCount.toLocaleString()}/${this._maxIndexCount.toLocaleString()}`)}removeGeometry(e,t){if(e.__instanceIndex<0){console.warn(`Cannot remove geometry, instance index is invalid`,e.name);return}z&&console.debug(`[Instancing] < REMOVE INSTANCE \"${e.name}\" at [${e.__instanceIndex}]\nGEOMETRY_ID=${e.__geometryIndex}\n${this._currentInstanceCount} instances\nIndex: ${e.__instanceIndex}`),this._batchedMesh.deleteInstance(e.__instanceIndex)}};function Ya(e){if(!e)return T()&&console.error(`Cannot get mesh information from null geometry`),{vertexCount:0,indexCount:0};let t=e.attributes?.position?.count||0,n=e.index?e.index.count:0,r=P.getMeshLODExtension(e);if(r){let e=r.lods[0],i=e.vertexCount,a=e.indexCount,o=Math.min(200,Math.ceil(i*.05));i+=o,a+=20,t=Math.max(t,i),n=Math.max(n,a)}return t=Math.ceil(t),n=Math.ceil(n),{vertexCount:t,indexCount:n}}function Xa(){let e=new Te({color:new n(Math.random(),Math.random(),Math.random())});return e.emissive=e.color,e.emissiveIntensity=.3,D(`wireframe`)&&(e.wireframe=!0),e}var Za=D(`debuglightmaps`),Qa=Symbol(`lightmapKey`),$a=class{get lightmap(){return this.lightmapTexture}set lightmap(e){e!==this.lightmapTexture&&(this.lightmapTexture=e,this.applyLightmap(),this.updatePropertyBlockTexture(),this.lightmapTexture&&P.assignTextureLOD(this.lightmapTexture,0).then(e=>{e?.isTexture&&(this.lightmapTexture=e,this.updatePropertyBlockTexture())}))}lightmapIndex=-1;lightmapScaleOffset=new C(1,1,0,0);renderer;_isApplied=!1;get context(){return this.renderer.context}get gameObject(){return this.renderer.gameObject}lightmapTexture=null;constructor(e){this.renderer=e}init(e,t,n){console.assert(this.gameObject!==void 0&&this.gameObject!==null,`Missing gameobject`,this),this.lightmapIndex=e,!(this.lightmapIndex<0)&&(this.lightmapScaleOffset=t,this.lightmapTexture=n,P.assignTextureLOD(n,0).then(e=>{e?.isTexture&&(this.lightmapTexture=e,this.updatePropertyBlockTexture())}),Za==`show`?(console.log(`Lightmap:`,this.gameObject.name,e,` +ScaleOffset:`,t,` +Texture:`,n),this.setLightmapDebugMaterial()):Za&&console.log(`Use debuglightmaps=show to render lightmaps only in the scene.`),this.applyLightmap())}updateLightmapUniforms(e){}applyLightmap(){if(this._isApplied)return;if(this.gameObject.type===`Object3D`){Za&&console.warn(`Can not add lightmap. Is this object missing a renderer?`,this.gameObject.name);return}let e=this.gameObject;if(this.ensureLightmapUvs(e),this.lightmapIndex>=0&&this.lightmapTexture){this.lightmapTexture.channel=1;let e=this.lightmapScaleOffset;for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},to=D(`debugrenderer`),no=D(`debugskinnedmesh`),ro=D(`noinstancing`),io=D(`wireframe`),ao;(function(e){e[e.Off=0]=`Off`,e[e.BlendProbes=1]=`BlendProbes`,e[e.BlendProbesAndSkybox=2]=`BlendProbesAndSkybox`,e[e.Simple=3]=`Simple`})(ao||={});var oo=class{path=null;asset=null;default},so;(function(e){e[e.Both=0]=`Both`,e[e.Back=1]=`Back`,e[e.Front=2]=`Front`})(so||={});var co=class{_renderer;_targets=[];_indexMapMaxIndex;_indexMap;_changed=!1;get changed(){return this._changed}set changed(e){e===!0&&to&&console.warn(`SharedMaterials have changed: `+this._renderer.name),this._changed=e}is(e){return this._renderer===e}constructor(e,t){this._renderer=e;let n=this.setMaterial.bind(this),r=this.getMaterial.bind(this),i=e.gameObject;if(this._targets=[],i)switch(i.type){case`Group`:this._targets=[...i.children];break;case`SkinnedMesh`:case`Mesh`:this._targets.push(i);break}let a=!1,o,s=0;for(let e=0;e=this._targets.length)return;let n=this._targets[t];!n||n.material===void 0||(n.material=e,this.changed=!0)}getMaterial(e){if(e=this.resolveIndex(e),e<0)return null;let t=this._targets;if(e>=t.length)return null;let n=t[e];return n?n.material:null}},B=class e extends N{static setInstanced(t,n){let r=Lt(t,e);return r.setInstancingEnabled(n),r}static isInstanced(t){let n=Gn(t,e);return n?n.isInstancingActive:gt.isUsingInstancing(t)}static setVisible(e,t){wi(e,t)}receiveShadows=!1;shadowCastingMode=fo.Off;lightmapIndex=-1;lightmapScaleOffset=new C(1,1,0,0);enableInstancing=void 0;renderOrder=void 0;allowOcclusionWhenDynamic=!0;probeAnchor;reflectionProbeUsage=ao.Off;_lightmaps;get sharedMesh(){if(this.gameObject.type===`Mesh`||this.gameObject.type===`SkinnesMesh`)return this.gameObject;if(this.gameObject.type===`Group`)return this.gameObject.children[0]}_sharedMeshes=[];get sharedMeshes(){if(this.destroyed||!this.gameObject)return this._sharedMeshes;if(this._sharedMeshes.length=0,this.gameObject.type===`Group`)for(let e of this.gameObject.children)(e.type===`Mesh`||e.type===`SkinnedMesh`)&&this._sharedMeshes.push(e);else (this.gameObject.type===`Mesh`||this.gameObject.type===`SkinnedMesh`)&&this._sharedMeshes.push(this.gameObject);return this._sharedMeshes}get sharedMaterial(){return this.sharedMaterials?.[0]}set sharedMaterial(e){this.sharedMaterials[0]!==e&&(this.sharedMaterials[0]=e,this.applyLightmapping())}get material(){return this.sharedMaterials?.[0]}set material(e){this.sharedMaterial=e}_sharedMaterials;_originalMaterials;_probeAnchorLastFrame;set sharedMaterials(e){if(!this._originalMaterials)this._originalMaterials=e;else if(e){let t=!1;for(let n=0;n0&&(this.gameObject.renderOrder=this.renderOrder[0])):this.context.addBeforeRenderListener(this.gameObject,this.onBeforeRenderThree);if(this._lightmaps=void 0,this.applyLightmapping(),io)for(let e=0;e=0&&!this._lightmaps){let e=this._lightmapTextureOverride===void 0?this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex):this._lightmapTextureOverride;if(e){this._lightmaps||=[];let t=new $a(this);t.init(this.lightmapIndex,this.lightmapScaleOffset,e),this._lightmaps.push(t)}else to&&console.warn(`[Renderer] No lightmaps found ${this.name} (${this.sourceId}, ${this.lightmapIndex})`)}}_isInstancingEnabled=!1;_handles=void 0;get isInstancingActive(){return this._handles!=null&&this._handles.length>0&&this._isInstancingEnabled}get instances(){if(!this._handles||this._handles.length<=0)return null;if(this._handlesTempArray.length=0,this._handles)for(let e of this._handles)this._handlesTempArray.push(e);return this._handlesTempArray}_handlesTempArray=[];setInstancingEnabled(e){if(this._isInstancingEnabled===e)return e&&(this._handles===void 0||this._handles!=null&&this._handles.length>0);if(this._isInstancingEnabled=e,e){if(this.enableInstancing===void 0&&(this.enableInstancing=!0),this._handles===void 0){if(this._handles=Ka.instance.setup(this,this.gameObject,this.context,null,{rend:this,foundMeshes:0,useMatrixWorldAutoUpdate:this.useInstanceMatrixWorldAutoUpdate()}),this._handles)return k.markAsInstancedRendered(this.gameObject,!0),!0}else if(this._handles!==null){for(let e of this._handles)e.updateInstanceMatrix(!0),e.add();return k.markAsInstancedRendered(this.gameObject,!0),!0}}else{if(this._handles)for(let e of this._handles)e.remove(this.destroyed);return!0}return!1}clearInstancingState(){this._isInstancingEnabled=!1,this._handles=void 0}useInstanceMatrixWorldAutoUpdate(){return!0}start(){if(this.enableInstancing&&!ro&&(this.setInstancingEnabled(!0),gt.markDirty(this.gameObject)),this.gameObject.frustumCulled=this.allowOcclusionWhenDynamic,this.isMultiMaterialObject(this.gameObject))for(let e=0;ee)?this.__internalDidAwakeAndStart&&this.setInstancingEnabled(!0):this.enabled&&this.applyStencil(),this.updateReflectionProbe(),oa.onEnabled.addEventListener(this.onReflectionProbeEnabled),oa.onDisabled.addEventListener(this.onReflectionProbeDisabled)}onDisable(){this.setVisibility(!1),oa.onEnabled.removeEventListener(this.onReflectionProbeEnabled),oa.onDisabled.removeEventListener(this.onReflectionProbeDisabled),this._handles&&this._handles.length>0&&this.setInstancingEnabled(!1)}onDestroy(){if(this._handles=null,this.isMultiMaterialObject(this.gameObject))for(let e of this.gameObject.children)this.context.removeBeforeRenderListener(e,this.onBeforeRenderThree);else this.context.removeBeforeRenderListener(this.gameObject,this.onBeforeRenderThree)}onReflectionProbeEnabled=()=>{this.updateReflectionProbe()};onReflectionProbeDisabled=e=>{this._reflectionProbe===e&&(this._reflectionProbe.unapply(this.gameObject),this._reflectionProbe=null)};onBeforeRender(){if(this.gameObject){if((this._probeAnchorLastFrame!==this.probeAnchor||this._reflectionProbe?.activeAndEnabled===!1)&&(this._reflectionProbe?.unapply(this.gameObject),this.updateReflectionProbe()),to==this.name&&this.gameObject instanceof x){this.gameObject.geometry.computeBoundingSphere();let e=wn(this.gameObject.geometry.boundingSphere.center).applyMatrix4(this.gameObject.matrixWorld);Ln.DrawWireSphere(e,this.gameObject.geometry.boundingSphere.radius,56831)}if(this.isMultiMaterialObject(this.gameObject)&&this.gameObject.children?.length>0)for(let e of this.gameObject.children)this.applySettings(e);else this.applySettings(this.gameObject);if(this.sharedMaterials?.changed&&(this.sharedMaterials.changed=!1,this.applyLightmapping()),this._handles?.length&&this.gameObject[Kt]===!0){this.gameObject[Kt]=!1;for(let e=this._handles.length-1;e>=0;e--)this._handles[e].updateInstanceMatrix();this.gameObject.matrixWorldNeedsUpdate=!1}if(this._handles&&this._handles.length<=0&&k.markAsInstancedRendered(this.gameObject,!1),this._isInstancingEnabled&&this._handles)for(let e=0;e{if(i.envMapIntensity!==void 0){let e=this.hasLightmap?Math.PI:1,t=this.context.scene.environmentIntensity;i.envMapIntensity=Math.max(0,t*this.context.sceneLighting.environmentIntensity/e)}if(this._lightmaps)for(let e of this._lightmaps)e.updateLightmapUniforms(i),e.applyLightmap()};onAfterRender(){if(this._isInstancingEnabled&&this._handles)for(let e=0;e=10&&(this.gameObject.matrixAutoUpdate=!1)}applyStencil(){Fi.applyStencil(this)}applySettings(e){e.receiveShadow=this.receiveShadows,this.shadowCastingMode==fo.On?e.castShadow=!0:e.castShadow=!1}_reflectionProbe=null;updateReflectionProbe(){this._reflectionProbe=null,this.reflectionProbeUsage!==ao.Off&&(this.startCoroutine(this._updateReflectionProbe(),Wn.LateUpdate),this._probeAnchorLastFrame=this.probeAnchor)}*_updateReflectionProbe(){let e=this.probeAnchor||this.gameObject,t=!!this.probeAnchor;this._reflectionProbe=oa.get(e,this.context,t,this.probeAnchor)}setVisibility(e){if(!this.isMultiMaterialObject(this.gameObject))wi(this.gameObject,e);else for(let t of this.gameObject.children)this.isMeshOrSkinnedMesh(t)&&wi(t,e)}isMultiMaterialObject(e){return e.type===`Group`}isMeshOrSkinnedMesh(e){return e.type===`Mesh`||e.type===`SkinnedMesh`}};eo([E()],B.prototype,`receiveShadows`,void 0),eo([E()],B.prototype,`shadowCastingMode`,void 0),eo([E()],B.prototype,`lightmapIndex`,void 0),eo([E(C)],B.prototype,`lightmapScaleOffset`,void 0),eo([E()],B.prototype,`enableInstancing`,void 0),eo([E()],B.prototype,`renderOrder`,void 0),eo([E()],B.prototype,`allowOcclusionWhenDynamic`,void 0),eo([E(S)],B.prototype,`probeAnchor`,void 0),eo([E()],B.prototype,`reflectionProbeUsage`,void 0);var lo=class extends B{},uo=class extends lo{_needUpdateBoundingSphere=!1;awake(){super.awake(),no&&console.log(`SkinnedMeshRenderer for "`+this.name+`"`,this),this.allowOcclusionWhenDynamic=!1;for(let e of this.sharedMeshes)e.parent?.updateWorldMatrix(!1,!0),this.markBoundsDirty()}onAfterRender(){if(super.onAfterRender(),this._needUpdateBoundingSphere){for(let e of this.sharedMeshes)if(e instanceof Ie){this._needUpdateBoundingSphere=!1;try{let t=e.geometry,n=mr(e);n&&(e.geometry=n),e.computeBoundingSphere(),e.geometry=t}catch(t){console.error(`Error updating bounding sphere for ${e.name}`,t)}}}if(no){for(let e of this.sharedMeshes)if(e instanceof Ie&&e.boundingSphere){let t=wn(e.boundingSphere.center).applyMatrix4(e.matrixWorld);Ln.DrawWireSphere(t,e.boundingSphere.radius,`red`)}}}markBoundsDirty(){this._needUpdateBoundingSphere=!0}},fo;(function(e){e[e.Off=0]=`Off`,e[e.On=1]=`On`,e[e.TwoSided=2]=`TwoSided`,e[e.ShadowsOnly=3]=`ShadowsOnly`})(fo||={});function po(){`OffscreenCanvas`in globalThis||(globalThis.OffscreenCanvas=class{canvas;constructor(e,t){return this.canvas=document.createElement(`canvas`),this.canvas.width=e,this.canvas.height=t,this.canvas.convertToBlob=(e,t)=>new Promise(n=>{this.canvas.toBlob(n,e,t)}),this.canvas}})}var mo=D(`debugprogress`);function ho(e){e||=new Date;let t=e.getMonth()+1,n=e.getDate(),r=e.getHours(),i=e.getMinutes(),a=e.getSeconds(),o=(t<10?`0`:``)+t,s=(n<10?`0`:``)+n,c=(r<10?`0`:``)+r,l=(i<10?`0`:``)+i,u=(a<10?`0`:``)+a;return e.getFullYear()+o+s+`-`+c+l+u}var V=class{static start(e,t){typeof t==`string`&&(t={parentScope:t});let n=new _o(e,t);go.set(e,n)}static report(e,t){let n=go.get(e);if(!n){console.warn(`Reporting progress for non-existing scope`,e);return}typeof t==`string`&&(t={message:t,autoStep:!0}),n.report(t)}static end(e){let t=go.get(e);t&&(t.end(),go.delete(e))}},go=new Map,_o=class{scopeLabel;parentScope;childScopes=[];parentDepth=0;lastStep=0;lastAutoStepWeight=1;lastTotalSteps=0;onProgress;showLogs=!1;selfProgress=0;totalProgress=0;selfReports=0;totalReports=0;constructor(e,t){this.parentScope=t?.parentScope?go.get(t.parentScope):void 0,this.parentScope&&(this.parentScope.childScopes.push(this),this.parentDepth=this.parentScope.parentDepth+1),this.scopeLabel=` `.repeat(this.parentDepth*2)+e,this.showLogs=t?.logTimings??!!mo,this.showLogs&&console.time(this.scopeLabel),this.onProgress=t?.onProgress}report(e,t=!1){if(e){if(e.totalSteps!==void 0&&(this.lastTotalSteps=e.totalSteps),e.currentStep!==void 0&&(this.lastStep=e.currentStep),e.autoStep!==void 0){if(e.currentStep===void 0){this.lastStep===void 0&&(this.lastStep=0);let t=typeof e.autoStep==`number`?e.autoStep:1;this.lastStep+=this.lastAutoStepWeight,this.lastAutoStepWeight=t,e.currentStep=this.lastStep}e.totalSteps=this.lastTotalSteps}e.progress===void 0?e.currentStep!==void 0&&e.totalSteps!==void 0&&(this.selfProgress=e.currentStep/e.totalSteps):this.selfProgress=e.progress}if(this.childScopes.length>0){let e=0,t=0;for(let n of this.childScopes)e+=n.selfProgress,t+=1;t>0&&(e/=t);let n=this.lastAutoStepWeight/(this.lastTotalSteps??1);this.totalProgress=this.selfProgress+e*n}else this.totalProgress=this.selfProgress;this.selfProgress=Math.min(1,this.selfProgress),this.totalProgress=Math.min(1,this.totalProgress);let n=(this.totalProgress*100).toFixed(3)+`%`;this.childScopes.length>0&&(n+=` (`+(this.selfProgress*100).toFixed(3)+`% self)`),e?.message&&(n=e.message+` – `+n),this.lastStep!==void 0&&this.lastTotalSteps!==void 0&&(n=`Step `+(this.lastStep+(this.lastAutoStepWeight==1?``:`–`+(this.lastStep+this.lastAutoStepWeight))+`/`+this.lastTotalSteps)+` `+n),t||this.selfReports++,this.totalReports++,this.showLogs&&console.timeLog(this.scopeLabel,n),this.onProgress&&this.onProgress(this.totalProgress),this.parentScope&&this.parentScope.report(void 0,!0)}end(){this.report({progress:1,autoStep:!0},!0),this.showLogs&&(console.timeLog(this.scopeLabel,`Total reports: `+this.totalReports,`Self reports: `+this.selfReports),console.timeEnd(this.scopeLabel));let e=!1;for(let t of this.childScopes)if(!(t.selfProgress>=1)){e=!0;break}e&&console.warn(`Progress end with child scopes that are still running`,this),this.onProgress=void 0}},H=`{let t=e.type___needle,n=r.get(t)||new Map;if(r.set(t,n),!n.has(e)){let r=`${t}${n.size?`_${n.size}`:``}`;n.set(e,r)}return n.get(e)},a=e.colorNode?yo(e.colorNode):[],o=e.colorNode?`color3f inputs:diffuseColor.connect = ${H}/${t}/${i(a.values().next().value)}.outputs:out>`:``,s=e.roughnessNode?yo(e.roughnessNode):[],c=e.roughnessNode?`float inputs:roughness.connect = ${H}/${t}/${i(s.values().next().value)}.outputs:out>`:``,l=e.normalNode?yo(e.normalNode):[],u=e.normalNode?`float3 inputs:normal.connect = ${H}/${t}/${i(l.values().next().value)}.outputs:out>`:``,d=e.metalnessNode?yo(e.metalnessNode):[],f=e.metalnessNode?`float inputs:metallic.connect = ${H}/${t}/${i(d.values().next().value)}.outputs:out>`:``,p=So(new Set([...a,...s,...l,...d]),t,n,i);return console.debug(p),` + + def Material "${t}" ${e.name?`( + displayName = "${e.name}" + )`:``} + { + token outputs:mtlx:surface.connect = ${H}/${t}/N_mtlxsurface.outputs:surface> + + def Shader "N_mtlxsurface" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + ${o} + ${c} + ${u} + ${f} + token outputs:surface + } + + ${p} + + }`}function yo(e){let t=e=>{if(e.nodeType)return e.nodeType;switch(e.type){case`TimerNode`:return`float`;case`TextureNode`:return;case`ConvertNode`:return e.convertTo;default:return}},n=e=>{let n=new Set,r=e=>{if(!(!e.isNode||n.has(e))){e.nodeType___needle||=t(e),e.shaderNode?(e.type___needle=`ShaderCallNodeInternal`,e.shaderNodeLayoutName___needle=e.shaderNode.layout.name.slice(3)):e.type___needle=e.type,n.add(e);for(let t in e)e[t]?.isNode&&(r(e[t]),e.nodeType___needle||=e[t].nodeType___needle),Array.isArray(e[t])&&e[t].forEach(t=>{t.isNode&&(r(t),e.nodeType___needle||=t.nodeType___needle)})}};return r(e),n},r=e=>{if(e.type===`ConvertNode`){if(e.convertTo===e.node.nodeType___needle)return!0;if(e.node.type===`ConstNode`){if(e.convertTo===`vec4`&&e.node.value.isVector4||e.convertTo===`vec3`&&e.node.value.isVector3||e.convertTo===`vec2`&&e.node.value.isVector2||e.convertTo===`color`&&e.node.value.isColor||e.convertTo===`float`&&typeof e.node.value==`number`)return!0}else if(e.node.type==`SplitNode`&&e.convertTo==`float`&&e.node.components.length===1)return!0}return!1},i=e=>{for(;a(e);)e=!e.node&&e.shaderNode?e.inputNodes[0]:e.node??e.aNode??e.bNode??e.cNode;return e},a=e=>!e||r(e)||[`UniformNode`,`UniformGroupNode`,`ShaderNodeInternal`].includes(e.type___needle)||e.type___needle===void 0,o=(e,t)=>{for(let n of t)for(let t in n)if(n[t]?.isNode&&n[t]===e||Array.isArray(n[t])&&n[t].find(t=>t.isNode&&t===e))return{parent:n,label:t};return null},s=(e,t)=>{if(e.shaderNode)e.inputNodes[0]=i(e.inputNodes[0]);else if(Array.isArray(e.nodes))for(let t=0;t{e[t]&&a(e[t])&&(e[t]=i(e[t]))})},c=e=>{e.type===`MathNode`&&e.method===`mix`&&(e.cNode.nodeType___needle=`float`,e.cNode.type===`ConvertNode`&&(e.cNode.convertTo=`float`))},l=(e,t)=>{t.label===`cNode`&&t.parent.type===`MathNode`&&t.parent.method===`mix`||(t.parent.type===`JoinNode`?e.nodeType___needle=`float`:e.nodeType___needle=t.parent.nodeType___needle)},u=e=>e?.type===`ConvertNode`&&e.nodeType___needle===`color`&&e.node.nodeType___needle===`vec4`,d=(e,t)=>{e.convertTo=`vec3`,e.nodeType___needle=`vec3`;let n={type:`ConvertNode`,convertTo:`color`,node:e,isNode:!0,nodeType___needle:`color`,type___needle:`ConvertNode`},r=o(e,t);return r?.parent&&(r.parent[r.label]=n),n},f=e=>e?.type===`ConvertNode`&&e.node.type===`TextureNode`&&e.nodeType___needle!==e.node.nodeType___needle;return(e=>{let t=new Set;for(let n of e)if(!a(n)){if(c(n),n.type==`SplitNode`){let t=o(n,e);if(n.components.length===1)n.nodeType___needle=`float`;else if(t)n.nodeType___needle=t.parent.nodeType___needle;else throw Error(`SplitNode without parent found, this should not happen`)}if(s(n,[`node`,`aNode`,`bNode`,`cNode`]),n.type==`ConstNode`&&n.nodeType==null&&l(n,o(n,e)),u(n)&&t.add(d(n,e)),f(n)){n.node.nodeType___needle=n.convertTo;let t=o(n,e);t?.parent&&(t.parent[t.label]=n.node),n=n.node}t.add(n)}return t})(n(e))}function bo(e,t){switch(t){case`float4`:return e.isVector4?`(${e.x}, ${e.y}, ${e.z}, ${e.w})`:`(${e}, ${e}, ${e}, ${e})`;case`float3`:return e.isVector3?`(${e.x}, ${e.y}, ${e.z})`:`(${e}, ${e}, ${e})`;case`float2`:return e.isVector2?`(${e.x}, ${e.y})`:`(${e}, ${e})`;case`color3f`:return e.isColor?`(${e.r}, ${e.g}, ${e.b})`:`(${e}, ${e}, ${e})`;default:return e.isVector4||e.isVector3||e.isVector2?`${e.x}`:e.isColor?`${e.r}`:`${e}`}}function xo(e,t,n,r){let i=` `,a=e=>({float:`float`,vec2:`vector2`,vec3:`vector3`,vec4:`vector4`,color:`color3`})[e]||`float`,o=e=>({float:`float`,vec2:`float2`,vec3:`float3`,vec4:`float4`,color:`color3f`})[e]||`float`,s=e.type___needle,c=e.nodeType___needle,l=a(c),u=o(c),d=``,f=[];switch(s){case`UniformGroupNode`:case`UniformNode`:return``;case`TimerNode`:d=`time_float`;break;case`ConstNode`:d=`constant_`+l,f.push(`${u} inputs:value = ${bo(e.value,u)}`);break;case`JoinNode`:d=`combine`+e.nodes.length+`_`+l;let i=1;for(let r of e.nodes)f.push(`float inputs:in${i++}.connect = ${H}/${t}/${n(r)}.outputs:out>`);break;case`ConvertNode`:d=`convert_`+a(e.node.nodeType___needle)+`_`+l,e.node&&f.push(`${o(e.node.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`);break;case`MathNode`:d=e.method+`_`+l,e.aNode&&!e.bNode&&f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),e.aNode&&e.bNode&&!e.cNode&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:in1.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:in2.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`)),e.aNode&&e.bNode&&e.cNode&&e.method==`clamp`&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:low.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`),f.push(`${o(e.cNode.nodeType___needle)} inputs:high.connect = ${H}/${t}/${n(e.cNode)}.outputs:out>`)),e.aNode&&e.bNode&&e.cNode&&e.method==`mix`&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:fg.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:bg.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`float inputs:mix.connect = ${H}/${t}/${n(e.cNode)}.outputs:out>`));break;case`OperatorNode`:let s=``;switch(e.op){case`*`:s=`multiply`;break;case`/`:s=`divide`;break;case`+`:s=`add`;break;case`-`:s=`subtract`;break}if(d=s+`_`+l,e.aNode&&!e.bNode&&f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),e.aNode&&e.bNode){let r=o(e.aNode.nodeType___needle),i=o(e.bNode.nodeType___needle);(r===`color3f`&&i===`float`||i===`float`&&i===`color3f`)&&(d=s+`_color3FA`),f.push(`${r} inputs:in1.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${i} inputs:in2.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`)}break;case`TextureNode`:e.uvNode?(d=`tiledimage_`+l,f.push(`float2 inputs:texcoord.connect = ${H}/${t}/${n(e.uvNode)}.outputs:out>`)):d=`image_`+l;let c=e._value,p=Ts.includes(c.format),m=Co(c);f.push(`asset inputs:file = @textures/${m}.${p?`png`:`jpg`}@`),r[m]={texture:c,scale:void 0};break;case`NormalMapNode`:u=`float3`,d=`normalmap`,f.push(`${u} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`);break;case`AttributeNode`:d=`geompropvalue_`+l,f.push(`string inputs:geomprop = "st"`);break;case`ShaderCallNodeInternal`:d=e.shaderNodeLayoutName___needle+`_`+l,f.push(`${u} inputs:in.connect = ${H}/${t}/${n(e.inputNodes[0])}.outputs:out>`);break;case`SplitNode`:d=`swizzle_`+a(e.node.nodeType___needle)+`_`+l,f.push(`${o(e.node.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`),f.push(`string inputs:channels = "${e.components}"`);break}return` + ${i}def Shader "${n(e)}" + ${i}{ + ${i}uniform token info:id = "ND_${d}" + ${i}${u} outputs:out + ${i}${f.length>0?f.join(` + `):``} + ${i}} + `}function So(e,t,n,r){let i=``;for(let a of e)i+=xo(a,t,r,n);return i}function Co(e){return wo(e.name)+`_`+(e.source?.id??e.id)}function wo(e){return e=e.replace(/[^a-zA-Z0-9_]/g,``),e.match(/^[a-zA-Z_]/)||(e=`_`+e),e}function To(e){return e=e.replace(`"`,`\\"`),e}function Eo(e){if(e.length===0)return null;let t=e.map(e=>{let t=[];for(;e.parent;)t.unshift(e.parent),e=e.parent;return t});return t[0].findLast(e=>t.every(t=>t.includes(e)))||null}function Do(e){let t=Eo(e),n=new Set;for(let r of e){let i=r.parent;for(;i&&i!==t;)e.includes(i)||n.add(i),i=i.parent}return n}var Oo=new r,ko=new Ue,Ao=new r(1,1,1),jo=class e{static USDObject_export_id=0;uuid;name;type;extraSchemas=[];displayName;visibility;getMatrix(){if(!this.transform)return new b;let{position:e,quaternion:t,scale:n}=this.transform,r=new b;return r.compose(e||Oo,t||ko,n||Ao),r}setMatrix(e){if(!e||!(e instanceof b)){this.transform=null;return}let t=new r,n=new Ue,i=new r;e.decompose(t,n,i),this.transform={position:t,quaternion:n,scale:i}}get matrix(){return this.getMatrix()}set matrix(e){this.setMatrix(e)}transform=null;_isDynamic;get isDynamic(){return this._isDynamic}set isDynamic(e){this._isDynamic=e}geometry;material;camera;parent;skinnedMesh;children=[];animations;_eventListeners;needsTranslate=!1;needsOrient=!1;needsScale=!1;static createEmptyParent(t){let n=new e(h.generateUUID(),t.name+`_empty_`+ e.USDObject_export_id++,t.transform),r=t.parent;return r&&r.add(n),n.add(t),n.isDynamic=!0,t.transform=null,n}static createEmpty(){let t=new e(h.generateUUID(),`Empty_`+ e.USDObject_export_id++);return t.isDynamic=!0,t}constructor(e,t,n=null,r=null,i=null,a=null,o=null,s=null){this.uuid=e,this.name=wo(t),this.displayName=t,n?this.transform={position:n.position?.clone()||null,quaternion:n.quaternion?.clone()||null,scale:n.scale?.clone()||null}:this.transform=null,this.geometry=r,this.material=i,this.camera=a,this.parent=null,this.children=[],this._eventListeners={},this._isDynamic=!1,this.skinnedMesh=o,this.animations=s}is(e){return e?this.uuid===e.uuid:!1}isEmpty(){return!this.geometry}clone(){let t=new e(h.generateUUID(),this.name,this.transform,this.geometry,this.material);return t.isDynamic=this.isDynamic,t}deepClone(){let e=this.clone();for(let t of this.children)t&&e.add(t.deepClone());return e}getPath(){let e=this.parent,t=this.name;for(;e;)t=(e.parent?e.name:e.name+`/Scenes/Scene`)+`/`+t,e=e.parent;return``}add(e){e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e)}remove(e){let t=this.children.indexOf(e);t>=0&&(e.parent===this&&(e.parent=null),this.children.splice(t,1))}addEventListener(e,t){this._eventListeners[e]||(this._eventListeners[e]=[]),this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let n=this._eventListeners[e].indexOf(t);n>=0&&this._eventListeners[e].splice(n,1)}onSerialize(e,t){let n=this._eventListeners.serialize;n&&n.forEach(n=>n(e,t))}},Mo=class extends jo{stageLength;get isDocumentRoot(){return!0}get isDynamic(){return!1}constructor(){super(void 0,`StageRoot`,null,null,null,null),this.children=[],this.stageLength=200}add(e){e.parent=this,this.children.push(e)}remove(e){let t=this.children.indexOf(e);t>=0&&(e.parent===this&&(e.parent=null),this.children.splice(t,1))}traverse(e,t=null){if(t===null?t=this:e(t),t.children)for(let n of t.children)this.traverse(e,n)}findById(e){let t=!1;function n(r){if(!t){if(r.uuid===e)return t=!0,r;if(r.children)for(let e of r.children){if(!e)continue;let t=n(e);if(t)return t}}}return n(this)}buildHeader(e){let t=e.extensions?.find(e=>e?.extensionName===`animation`),n=e.extensions?.find(e=>e?.extensionName===`Behaviour`),r=e.extensions?.find(e=>e?.extensionName===`Physics`),i=t?.getStartTimeCode()??0,a=t?.getEndTimeCode()??0,o=``,s=t?.registeredClips;if(s)for(let e of s)o+=`\t# Animation: ${e.name}, start=${t.getStartTimeByClip(e)*60}, length=${e.duration*60}\n`;let c=o;return`#usda 1.0 +( + customLayerData = { + string creator = "Needle Engine ${ut}" + dictionary Needle = { + bool animations = ${+!!t} + bool interactive = ${+!!n} + bool physics = ${+!!r} + bool quickLookCompatible = ${+!!e.quickLookCompatible} + } + } + defaultPrim = "${wo(this.name)}" + metersPerUnit = 1 + upAxis = "Y" + startTimeCode = ${i} + endTimeCode = ${a} + timeCodesPerSecond = 60 + framesPerSecond = 60 + doc = """Generated by Needle Engine USDZ Exporter ${ut}""" +${c} +) +`}},No=` +`,Po=`({ar:{anchoring:{type:`plane`},planeAnchoring:{alignment:`horizontal`}},quickLookCompatible:!1,extensions:[],maxTextureSize:4096,exportInvisible:!1}),Ro=class{debug;pruneUnusedNodes;sceneAnchoringOptions=Lo();extensions=[];keepObject;beforeWritingDocument;constructor(){this.debug=!1,this.pruneUnusedNodes=!0}async parse(e,t=Lo()){t=Object.assign({},t),this.sceneAnchoringOptions=t;let n=new Io(e,this,t);this.extensions=n.extensions;let r=n.files,i=`model.usda`;r[i]=null,n.materials;let a=n.textures;V.report(`export-usdz`,`Invoking onBeforeBuildDocument`),await Wo(n,`onBeforeBuildDocument`),V.report(`export-usdz`,`Done onBeforeBuildDocument`),V.report(`export-usdz`,`Reparent bones to common ancestor`);let o=[],s=new Set;e?.traverse(e=>{if(!(!t.exportInvisible&&!e.visible)&&e instanceof Ie){let t=e.skeleton.bones,n=Eo(t);if(n){let t={object:e,originalParent:e.parent,newParent:n};o.push(t),s.add(t.object.uuid),t.newParent&&s.add(t.newParent.uuid),t.originalParent&&s.add(t.originalParent.uuid)}}});for(let e of o){let{object:t,originalParent:n,newParent:r}=e;r.add(t)}V.report(`export-usdz`,`Traversing hierarchy`),e&&zo(e,n.document,n,this.keepObject),V.report(`export-usdz`,`Invoking onAfterBuildDocument`),await Wo(n,`onAfterBuildDocument`);let c=n.extensions.find(e=>e.extensionName===`Behaviour`)?.getAllTargetUuids()??new Set;if(this.pruneUnusedNodes){let e={allBehaviorTargets:c,debug:!1,boneReparentings:s,quickLookCompatible:n.quickLookCompatible};this.debug&&Bo(n.document,`Hierarchy BEFORE pruning`,e),Vo(n.document,e),this.debug&&Bo(n.document,`Hierarchy AFTER pruning`)}else this.debug&&console.log(`Pruning of empty nodes is disabled. This may result in a larger USDZ file.`);V.report(`export-usdz`,{message:`Parsing document`,autoStep:10}),await Ho(n,t),V.report(`export-usdz`,`Invoking onAfterSerialize`),await Wo(n,`onAfterSerialize`);for(let e of o){let{object:t,originalParent:n,newParent:r}=e;n&&n.add(t)}n.exporter?.beforeWritingDocument?.();let l=n.document.buildHeader(n)+` +`+n.output;this.debug&&console.debug(l),r[i]=Zn(l),n.output=``,V.report(`export-usdz`,{message:`Exporting textures`,autoStep:10}),V.start(`export-usdz-textures`,{parentScope:`export-usdz`,logTimings:!1});let u=new p({antialias:!1,alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0}),d=Object.keys(a).length;V.report(`export-usdz-textures`,{totalSteps:d*3,currentStep:0});let f=async e=>{let n=a[e],i=n.texture,o=Ts.includes(i.format),s={imageData:i.image};V.report(`export-usdz-textures`,{message:`read back texture`,autoStep:!0});let c=n.scale!==void 0&&n.scale.x!==1&&n.scale.y!==1&&n.scale.z!==1&&n.scale.w!==1;(i.isCompressedTexture||i.isRenderTargetTexture||c)&&(s=await Xo(i,t.maxTextureSize,u,n.scale)),V.report(`export-usdz-textures`,{message:`convert texture to canvas`,autoStep:!0});let l=await Qo(s.imageBitmap||s.imageData,t.maxTextureSize).catch(e=>{console.error(`Error converting texture to canvas`,i,e)});if(l){V.report(`export-usdz-textures`,{message:`convert canvas to blob`,autoStep:!0});let t=await l.convertToBlob({type:o?`image/png`:`image/jpeg`,quality:.95});r[`textures/${e}.${o?`png`:`jpg`}`]=new Uint8Array(await t.arrayBuffer())}else console.warn("Can`t export texture: ",i)};for(let e in a)await f(e);u.dispose(),V.end(`export-usdz-textures`);let m=0;for(let e in r){let t=r[e],n=34+e.length;m+=n;let i=m&63;if(i!==4){let n=64-i;r[e]=[t,{extra:{12345:new Uint8Array(n)}}]}m=t.length}return V.report(`export-usdz`,`zip archive`),cr(r,{level:0})}};function zo(e,t,n,r){if(!n.exportInvisible&&!e.visible)return;let i,a,o,s={position:e.position,quaternion:e.quaternion,scale:e.scale};if(e.position.x===0&&e.position.y===0&&e.position.z===0&&(s.position=null),e.quaternion.x===0&&e.quaternion.y===0&&e.quaternion.z===0&&e.quaternion.w===1&&(s.quaternion=null),e.scale.x===1&&e.scale.y===1&&e.scale.z===1&&(s.scale=null),(e instanceof x||e instanceof Ie)&&(a=e.geometry,o=e.material),r&&!r(e)&&(a=void 0,o=void 0),(e instanceof x||e instanceof Ie)&&o&&typeof o==`object`&&(o instanceof Te||o instanceof v||o.isMeshPhysicalNodeMaterial||o instanceof Ne&&o.type===`MeshLineMaterial`)){let t=ns(e),n=e instanceof Ie?e:null;i=new jo(e.uuid,t,s,a,o,void 0,n,e.animations)}else if(e instanceof be||e instanceof Ae){let t=ns(e);i=new jo(e.uuid,t,s,void 0,void 0,e)}else{let t=ns(e);i=new jo(e.uuid,t,s,void 0,void 0,void 0,void 0,e.animations)}if(i){if(i.displayName=e.userData?.name||e.name,i.visibility=e.visible?void 0:`invisible`,t&&t.add(i),t=i,n.extensions)for(let t of n.extensions)t.onExportObject&&t.onExportObject.call(t,e,i,n)}else{let n=ns(e),r=new jo(e.uuid,n,{position:e.position,quaternion:e.quaternion,scale:e.scale});t&&t.add(r),t=r}for(let i of e.children)zo(i,t,n,r)}function Bo(e,t,...n){let r={},i=0;function a(e,t){i++;let n=e.displayName||e.name;n+=` (`+e.uuid+`)`,(e.geometry||e.material||e.camera||e.skinnedMesh)&&(n+=` (`+(e.geometry?`geo, `:``)+(e.material?`mat, `:``)+(e.camera?`cam, `:``)+(e.skinnedMesh?`skin, `:``)+`)`),t[n]={};let r={object:e};e.material&&(r.mat=!0),e.geometry&&(r.geo=!0),e.camera&&(r.cam=!0),e.skinnedMesh&&(r.skin=!0),t[n]._self=r;for(let r of e.children)r&&a(r,t[n])}a(e,r),console.log(t+` (`+i+` nodes)`,r,...n)}function Vo(e,t){let n=!0,r=[],i=[];if(e.children.length===0)n=!0;else{let a=[...e.children];for(let e of a)if(e){let a=Vo(e,t);t.debug&&(a?r.push(e):i.push(e)),n&&=a}}let a=t.allBehaviorTargets.has(e.uuid),o=e.geometry||e.material||e.camera&&!t.quickLookCompatible||e.skinnedMesh||!1,s=t.boneReparentings.has(e.uuid),c=n&&!a&&!o&&!s;return c?(t.debug&&console.log(`Pruned object:`,(e.displayName||e.name)+` (`+e.uuid+`)`,{isVisible:o,isBehaviorSourceOrTarget:a,allChildsWerePruned:n,isBoneReparenting:s,object:e,prunedChilds:r,keptChilds:i}),e.parent?.remove(e)):t.debug&&console.log(`Kept object:`,(e.displayName||e.name)+` (`+e.uuid+`)`,{isVisible:o,isBehaviorSourceOrTarget:a,allChildsWerePruned:n,isBoneReparenting:s,object:e,prunedChilds:r,keptChilds:i}),c}async function Ho(e,t){V.start(`export-usdz-resources`,`export-usdz`);let n=[];for(let t of e.document.children)Uo(t,e,n);let r=n.length;for(let e=0;e{n[e](),t()});V.end(`export-usdz-resources`);let i=new Fo,a=e.exporter.sceneAnchoringOptions.ar;i.beginBlock(`def Xform "${e.document.name}"`),i.beginBlock(`def Scope "Scenes" ( + kind = "sceneLibrary" + )`),i.beginBlock(`def Xform "Scene"`,`(`,!1),i.appendLine(`apiSchemas = ["Preliminary_AnchoringAPI"]`),i.appendLine(`customData = {`),i.appendLine(` bool preliminary_collidesWithEnvironment = 0`),i.appendLine(` string sceneName = "Scene"`),i.appendLine(`}`),i.appendLine(`sceneName = "Scene"`),i.closeBlock(`)`),i.beginBlock(),i.appendLine(`token preliminary:anchoring:type = "${a.anchoring.type}"`),a.anchoring.type===`plane`&&i.appendLine(`token preliminary:planeAnchoring:alignment = "${a.planeAnchoring.alignment}"`),a.anchoring.type===`image`&&i.appendLine(`rel preliminary:imageAnchoring:referenceImage = `),i.appendLine();let o=e=>{if(!e)return 0;let t=1;for(let n of e.children)t+=o(n);return t},s=o(e.document);V.start(`export-usdz-xforms`,`export-usdz`),V.report(`export-usdz-xforms`,{totalSteps:s,currentStep:1});for(let t of e.document.children)ss(t,i,e);V.end(`export-usdz-xforms`),V.report(`export-usdz`,`invoke onAfterHierarchy`),await Wo(e,`onAfterHierarchy`,i),i.closeBlock(),i.closeBlock(),V.report(`export-usdz`,`Building materials`);let c=ys(e.materials,e.textures,t.quickLookCompatible);i.appendLine(c),i.closeBlock(),V.report(`export-usdz`,`write to string`),e.output+=i.toString()}function Uo(e,t,n){if(!e)return;let r=e.geometry,i=e.material;if(r)if(i&&(`isMeshStandardMaterial`in i&&i.isMeshStandardMaterial||`isMeshBasicMaterial`in i&&i.isMeshBasicMaterial||i.type===`MeshLineMaterial`)){let i=`geometries/`+is(r,e.name)+`.usda`;i in t.files||n.push(()=>{let n=us(r,e.skinnedMesh?.skeleton?.bones,t.quickLookCompatible);t.files[i]=ts(n,t)})}else console.warn(`NeedleUSDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)`,i?.name);i&&t.materials.get(i.uuid)===void 0&&(t.materials[i.uuid]=i);for(let r of e.children)Uo(r,t,n)}async function Wo(e,t,n=null){if(e.extensions){for(let r of e.extensions)if(r&&typeof r[t]==`function`){let i=r[t].call(r,e,n);i instanceof Promise&&await i}}}var Go=null,Ko=null,qo,Jo,Yo;async function Xo(e,t=1/0,n=null,r=void 0){qo||=new He(2,2,1,1),Jo||=new Re({uniforms:{blitTexture:new Ke(e),flipY:new Ke(!1),scale:new Ke(new C(1,1,1,1))},vertexShader:` + varying vec2 vUv; + uniform bool flipY; + void main(){ + vUv = uv; + if (flipY) + vUv.y = 1. - vUv.y; + gl_Position = vec4(position.xy * 1.0,0.,.999999); + }`,fragmentShader:` + uniform sampler2D blitTexture; + uniform vec4 scale; + varying vec2 vUv; + + void main(){ + gl_FragColor = vec4(vUv.xy, 0, 1); + + #ifdef IS_SRGB + gl_FragColor = sRGBTransferOETF( texture2D( blitTexture, vUv) ); + #else + gl_FragColor = texture2D( blitTexture, vUv); + #endif + + gl_FragColor.rgba *= scale.rgba; + }`});let i=Jo.uniforms;i.blitTexture.value=e,i.flipY.value=!1,i.scale.value=new C(1,1,1,1),r!==void 0&&i.scale.value.copy(r),Jo.defines.IS_SRGB=e.colorSpace==ue,Jo.needsUpdate=!0,Yo||(Yo=new x(qo,Jo),Yo.frustumCulled=!1);let a=new be,o=new ne;o.add(Yo),n||=Go=new p({antialias:!1,alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});let s=Math.min(e.image.width,t),c=Math.min(e.image.height,t);Ko&&(Ko.width!==s||Ko.height!==c)&&(Ko.dispose(),Ko=null),Ko||=new u(s,c,{format:te,type:We,minFilter:m,magFilter:m}),n.setRenderTarget(Ko),n.setSize(s,c),n.clear(),n.render(o,a),Go&&=(Go.dispose(),null);let l=new Uint8ClampedArray(Ko.width*Ko.height*4);n.readRenderTargetPixels(Ko,0,0,Ko.width,Ko.height,l);let d=new ImageData(l,Ko.width,Ko.height,void 0);return{imageData:d,imageBitmap:await createImageBitmap(d,{premultiplyAlpha:`none`})}}function Zo(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas||typeof ImageBitmap<`u`&&e instanceof ImageBitmap}async function Qo(e,t=4096){let n=t/Math.max(e.width,e.height),r=e.width*Math.min(1,n),i=e.height*Math.min(1,n),a=new OffscreenCanvas(r,i),o={premultiplyAlpha:`none`};e.width!==r&&(o.resizeWidth=r),e.height!==i&&(o.resizeHeight=i);let s=await createImageBitmap(e,o),c=a.getContext(`bitmaprenderer`);return c&&c.transferFromImageBitmap(s),a}async function $o(e,t=void 0,n=!1,r=4096){if(Zo(e)){let i=r/Math.max(e.width,e.height),a=new OffscreenCanvas(e.width*Math.min(1,i),e.height*Math.min(1,i)),o=a.getContext(`2d`,{alpha:!0,premultipliedAlpha:!1});if(!o)throw Error(`Could not get canvas 2D context`);if(n===!0&&(o.translate(0,a.height),o.scale(1,-1)),o.drawImage(e,0,0,a.width,a.height),t!==void 0){let e=t.x,n=t.y,r=t.z,i=t.w,s=o.getImageData(0,0,a.width,a.height),c=s.data;for(let t=0;t\(\)\[\]§$%&\/\\\=\?\,\;]/g,``)+`_`+e.id}function rs(e){return wo(e.name||`bone_`+e.uuid)}function is(e,t){return wo(e.name||`Geometry`)+`_`+e.id}function as(e){return wo(e.name||`Material`)+`_`+e.id}function os(e,t){let n=rs(e),r=e.parent;for(;r&&r!==t;)n=rs(r)+`/`+n,r=r.parent;return n}function ss(e,t,n){if(e==null)return;V.report(`export-usdz-xforms`,{message:`buildXform `+e.displayName||e.name,autoStep:!0});let r=e.transform,i=e.geometry,a=e.material,o=e.camera,s=e.name;if(e.animations)for(let t of e.animations)n.animations.push(t);let c=i&&i.isBufferGeometry&&i.attributes.skinIndex!==void 0&&i.attributes.skinIndex.count>0,l=c?`SkelRoot`:`Xform`,u=[],d=a&&a instanceof v&&a.color&&a.color.r===1&&a.color.g===1&&a.color.b===1&&!a.map&&a.opacity===1&&i?.attributes.color;if(i?.attributes.color&&!d&&console.warn(`NeedleUSDZExporter: Geometry has vertex colors. Vertex colors will only be shown in QuickLook for unlit materials with white color and no texture. Otherwise, they will be ignored.`,e.displayName),t.appendLine(),i?(t.beginBlock(`def ${l} "${s}"`,`(`,!1),n.quickLookCompatible&&a&&a.side===2&&!c?t.appendLine(`prepend references = @./geometries/${is(i,s)}.usda@`):t.appendLine(`prepend references = @./geometries/${is(i,s)}.usda@`),d||u.push(`MaterialBindingAPI`),c&&u.push(`SkelBindingAPI`)):o&&!n.quickLookCompatible?t.beginBlock(`def Camera "${s}"`,`(`,!1):e.type===void 0?t.beginBlock(`def Xform "${s}"`,`(`,!1):t.beginBlock(`def ${e.type} "${s}"`),e.type===void 0&&(e.extraSchemas?.length&&u.push(...e.extraSchemas),u.length&&t.appendLine(`prepend apiSchemas = [${u.map(e=>`"${e}"`).join(`, `)}]`)),e.displayName&&t.appendLine(`displayName = "${To(e.displayName)}"`),(o||e.type===void 0)&&(t.closeBlock(`)`),t.beginBlock()),i&&a){if(!d){let e=as(a);t.appendLine(`rel material:binding = `)}!n.quickLookCompatible&&a.side===2&&(t.beginBlock(`over "Geometry" `),t.appendLine(`uniform bool doubleSided = 1`),t.closeBlock())}let f=!1;if(c?(t.appendLine(`rel skel:skeleton = `),t.appendLine(`rel skel:animationSource = `),f=!1):e.type===void 0&&r&&(f=f||r.position!==null||r.quaternion!==null||r.scale!==null,r.position&&(e.needsTranslate=!0,t.appendLine(`double3 xformOp:translate = (${W(r.position.x)}, ${W(r.position.y)}, ${W(r.position.z)})`)),r.quaternion&&(e.needsOrient=!0,t.appendLine(`quatf xformOp:orient = (${W(r.quaternion.w)}, ${W(r.quaternion.x)}, ${W(r.quaternion.y)}, ${W(r.quaternion.z)})`)),r.scale&&(e.needsScale=!0,t.appendLine(`double3 xformOp:scale = (${W(r.scale.x)}, ${W(r.scale.y)}, ${W(r.scale.z)})`))),e.visibility!==void 0&&t.appendLine(`token visibility = "${e.visibility}"`),o&&!n.quickLookCompatible&&(`isOrthographicCamera`in o&&o.isOrthographicCamera?(t.appendLine(`float2 clippingRange = (${o.near}, ${o.far})`),t.appendLine(`float horizontalAperture = ${((Math.abs(o.left)+Math.abs(o.right))*10).toPrecision(U)}`),t.appendLine(`float verticalAperture = ${((Math.abs(o.top)+Math.abs(o.bottom))*10).toPrecision(U)}`),t.appendLine(`token projection = "orthographic"`)):`isPerspectiveCamera`in o&&o.isPerspectiveCamera&&(t.appendLine(`float2 clippingRange = (${o.near.toPrecision(U)}, ${o.far.toPrecision(U)})`),t.appendLine(`float focalLength = ${o.getFocalLength().toPrecision(U)}`),t.appendLine(`float focusDistance = ${o.focus.toPrecision(U)}`),t.appendLine(`float horizontalAperture = ${o.getFilmWidth().toPrecision(U)}`),t.appendLine(`token projection = "perspective"`),t.appendLine(`float verticalAperture = ${o.getFilmHeight().toPrecision(U)}`))),e.onSerialize&&e.onSerialize(t,n),e.type===void 0){let n=[];e.needsTranslate&&n.push(`"xformOp:translate"`),e.needsOrient&&n.push(`"xformOp:orient"`),e.needsScale&&n.push(`"xformOp:scale"`),n.length&&t.appendLine(`uniform token[] xformOpOrder = [${n.join(`, `)}]`)}if(e.children){t.appendLine();for(let r of e.children)ss(r,t,n)}t.closeBlock()}function W(e){return Number.isInteger(e)?e.toString():e.toFixed(10)}function cs(e){let t=e.elements;return`( ${ls(t,0)}, ${ls(t,4)}, ${ls(t,8)}, ${ls(t,12)} )`}function ls(e,t){return`(${W(e[t+0])}, ${W(e[t+1])}, ${W(e[t+2])}, ${W(e[t+3])})`}function us(e,t=[],n=!0){return` +def "Geometry" +${ds(e,t,n)} +`}function ds(e,t=[],n=!0){let r=`Geometry`,i=e.attributes,a=i.position.count,o=t&&t.length>0,s=[],c=[],l=[],u=i.skinIndex;if(o){let e=[];for(let n of t)s.push({bone:n,index:t.indexOf(n)}),e.push(n.uuid);let n=1e4;for(;e.length0;)for(let n of s){let r=n.bone.children;for(let n of r)e.indexOf(n.uuid)===-1&&t.indexOf(n)!==-1&&(s.push({bone:n,index:t.indexOf(n)}),e.push(n.uuid))}n<=0&&console.error(`Failed to sort bones in skinned mesh`,s,t,e);for(let e of Do(t))s.push({bone:e,index:s.length});let r=s[0].bone.parent;s.sort((e,t)=>os(e.bone,r)>os(t.bone,r)?1:-1),s.map(e=>`"`+os(e.bone,r)+`"`).join(`, `);for(let e in s)c[s[e].index]=parseInt(e);let a=i.skinIndex;l=[];for(let e=0;e +) +{ + over "Geometry" + { + int[] faceVertexCounts = [${fs(e)+`, `+fs(e)}] + int[] faceVertexIndices = [${ps(e)+`, `+ps(e,!0)}] + } +} +`:``} +`}function fs(e){let t=e.index===null?e.attributes.position.count:e.index.count;return Array(Math.floor(t/3)).fill(3).join(`, `)}function ps(e,t=!1){let n=e.index,r=[];if(n!==null)for(let e=0;e0?`st`+e.channel:`st`;a.add(e.channel);let p=Ts.includes(e.format),m={1e3:`repeat`,1001:`clamp`,1002:`mirror`},h=e.repeat.clone(),g=e.offset.clone(),_=e.rotation,ee=Math.sin(_),te=Math.cos(_);g.y=1-g.y-h.y,n?(h.x===0&&(h.x=1e-4),h.y===0&&(h.y=1e-4),g.x/=h.x,g.y/=h.y,g.x+=ee/h.x,g.y+=te-1):(g.x+=ee*h.x,g.y+=(1-te)*h.y);let ne=as(i),v=h.x!=1||h.y!=1||g.x!=0||g.y!=0||_!=0,re=`${Po}/${ne}/${`uvReader_`+f}.outputs:result>`,ie=`${Po}/${ne}/Transform2d_${t}.outputs:result>`,ae=t!==`normal`&&o&&(o.r!==1||o.g!==1||o.b!==1||s!==1)||!1,oe=t===`normal`,y=i instanceof Te&&i.normalScale?i.normalScale.x*2:2,se=y.toFixed(U),ce=(y/2*-1).toFixed(U),b=(1-y).toFixed(U);return` + ${v?`def Shader "Transform2d_${t}" ( + sdrMetadata = { + string role = "math" + } + ) + { + uniform token info:id = "UsdTransform2d" + float2 inputs:in.connect = ${re} + float2 inputs:scale = ${ws(h)} + float2 inputs:translation = ${ws(g)} + float inputs:rotation = ${(_/Math.PI*180).toFixed(U)} + float2 outputs:result + } + `:``} + def Shader "${c}_${t}" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @textures/${l}.${p?`png`:`jpg`}@ + token inputs:sourceColorSpace = "${e.colorSpace===`srgb`?`sRGB`:`raw`}" + float2 inputs:st.connect = ${v?ie:re} + ${ae?` + float4 inputs:scale = (${o?o.r+`, `+o.g+`, `+o.b:`1, 1, 1`}, ${s}) + `:``} + ${oe?` + float4 inputs:scale = (${se}, ${se}, ${se}, 1) + float4 inputs:bias = (${ce}, ${ce}, ${b}, 0) + `:``} + token inputs:wrapS = "${m[e.wrapS]}" + token inputs:wrapT = "${m[e.wrapT]}" + float outputs:r + float outputs:g + float outputs:b + float3 outputs:rgb + ${i.transparent||i.alphaTest>0?`float outputs:a`:``} + }`}function Ss(e,t,r=!1){let i=as(e);if(e.colorWrite===!1||e.userData?.isShadowCatcherMaterial||e.userData?.isLightBlendMaterial){let t=e.userData.isLightBlendMaterial||e.userData.isShadowCatcherMaterial?`ND_realitykit_shadowreceiver_surfaceshader`:`ND_realitykit_occlusion_surfaceshader`;return` + + def Material "${i}" ${e.name?`( + displayName = "${e.name}" + )`:``} + { + token outputs:mtlx:surface.connect = ${Po}/${i}/Occlusion.outputs:out> + + def Shader "Occlusion" + { + uniform token info:id = "${t}" + token outputs:out + } + }`}let a=` `,o=[],s=[],c=new Set;if(e.isMeshPhysicalNodeMaterial===!0)return vo(e,i,t);let l=e.transparent||e.alphaTest?e.opacity:1,u=!1,d=!1;if(e instanceof Fe&&e.transmission!==void 0&&(l*=1-e.transmission*(1-e.roughness*.5)),e.map?(o.push(`${a}color3f inputs:diffuseColor.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:rgb>`),e instanceof v&&e.transparent&&e.alphaTest==0&&r?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0,o.push(`${a}float inputs:opacityThreshold = 1e-10`),d=!0):e.transparent?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0):e.alphaTest>0&&(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0,o.push(`${a}float inputs:opacityThreshold = ${e.alphaTest}`),d=!0),s.push(xs(e.map,`diffuse`,r,t,e,c,e.color,l))):o.push(`${a}color3f inputs:diffuseColor = ${Cs(e.color)}`),e.alphaHash&&r&&(d?console.warn(`Opacity threshold for `+e.name+` was already connected. Skipping alphaHash opacity threshold.`):(o.push(`${a}float inputs:opacityThreshold = 0.0000000001`),d=!0)),e.aoMap&&(o.push(`${a}float inputs:occlusion.connect = ${Po}/${i}/${bs(e.aoMap)}_occlusion.outputs:r>`),s.push(xs(e.aoMap,`occlusion`,r,t,e,c))),e.alphaMap?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.alphaMap)}_opacity.outputs:r>`),o.push(`${a}float inputs:opacityThreshold = 0.0000000001`),u=!0,d=!0,s.push(xs(e.alphaMap,`opacity`,r,t,e,c,new n(1,1,1),l))):(u?console.warn(`Opacity for `+e.name+` was already connected. Skipping default opacity.`):(o.push(`${a}float inputs:opacity = ${l}`),u=!0),e.alphaTest>0&&(d?console.warn(`Opacity threshold for `+e.name+` was already connected. Skipping default opacity threshold.`):(o.push(`${a}float inputs:opacityThreshold = ${e.alphaTest}`),d=!0))),e instanceof Te){if(e.emissiveMap){o.push(`${a}color3f inputs:emissiveColor.connect = ${Po}/${i}/${bs(e.emissiveMap)}_emissive.outputs:rgb>`);let n=e.emissive.clone();n.multiplyScalar(e.emissiveIntensity),s.push(xs(e.emissiveMap,`emissive`,r,t,e,c,n))}else if(e.emissive?.getHex()>0){let t=e.emissive.clone();t.multiplyScalar(e.emissiveIntensity),o.push(`${a}color3f inputs:emissiveColor = ${Cs(t)}`)}e.normalMap&&(o.push(`${a}normal3f inputs:normal.connect = ${Po}/${i}/${bs(e.normalMap)}_normal.outputs:rgb>`),s.push(xs(e.normalMap,`normal`,r,t,e,c))),e.roughnessMap&&e.roughness===1?(o.push(`${a}float inputs:roughness.connect = ${Po}/${i}/${bs(e.roughnessMap)}_roughness.outputs:g>`),s.push(xs(e.roughnessMap,`roughness`,r,t,e,c))):o.push(`${a}float inputs:roughness = ${e.roughness===void 0?1:e.roughness}`),e.metalnessMap&&e.metalness===1?(o.push(`${a}float inputs:metallic.connect = ${Po}/${i}/${bs(e.metalnessMap)}_metallic.outputs:b>`),s.push(xs(e.metalnessMap,`metallic`,r,t,e,c))):o.push(`${a}float inputs:metallic = ${e.metalness===void 0?0:e.metalness}`)}return e instanceof Fe&&(o.push(`${a}float inputs:clearcoat = ${e.clearcoat}`),o.push(`${a}float inputs:clearcoatRoughness = ${e.clearcoatRoughness}`),o.push(`${a}float inputs:ior = ${e.ior}`),!e.transparent&&!(e.alphaTest>0)&&e.transmissionMap&&(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.transmissionMap)}_transmission.outputs:r>`),s.push(xs(e.transmissionMap,`transmission`,r,t,e,c)))),c.size>2?console.warn(`USDZExporter: Material `+e.name+` uses more than 2 UV channels. Currently, only UV0 and UV1 are supported.`):c.size===2&&(!c.has(0)||!c.has(1))&&console.warn(`USDZExporter: Material `+e.name+` uses UV channels other than 0 and 1. Currently, only UV0 and UV1 are supported.`),` + + def Material "${i}" ${e.name?`( + displayName = "${To(e.name)}" + )`:``} + { + token outputs:surface.connect = ${Po}/${i}/PreviewSurface.outputs:surface> + + def Shader "PreviewSurface" + { + uniform token info:id = "UsdPreviewSurface" +${o.join(` +`)} + int inputs:useSpecularWorkflow = ${e instanceof v?`1`:`0`} + token outputs:surface + } +${s.length>0?` +${c.has(0)?` + def Shader "uvReader_st" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st" + float2 inputs:fallback = (0.0, 0.0) + float2 outputs:result + } +`:``} +${c.has(1)?` + def Shader "uvReader_st1" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st1" + float2 inputs:fallback = (0.0, 0.0) + float2 outputs:result + } +`:``} +${s.join(` +`)}`:``} + }`}function Cs(e){return`(${e.r}, ${e.g}, ${e.b})`}function ws(e){return`(${e.x}, ${e.y})`}var Ts=[1023,33777,33778,33779,35842,35843,37496,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,36492];D(`debugusdz`);var Es=class e{static global_id=0;id;trigger;action;exclusive=!1;makeExclusive(e){return this.exclusive=e,this}constructor(t,n,r){this.id=`Behavior_`+wo(t)+`_`+ e.global_id++,this.trigger=n,this.action=r}writeTo(e,t,n){if(!this.trigger||!this.action)return;n.beginBlock(`def Preliminary_Behavior "${this.id}"`);let r=``;if(Array.isArray(this.trigger)){r=`[`;for(let e=0;e`,e+1`;if(n.appendLine(`rel triggers = ${r}`),n.appendLine(`rel actions = <${this.action.id}>`),n.appendLine(`uniform bool exclusive = ${+!!this.exclusive}`),n.appendLine(),Array.isArray(this.trigger))for(let e of this.trigger)e.writeTo(t,n),n.appendLine();else this.trigger.writeTo(t,n);n.appendLine(),this.action.writeTo(t,n),n.closeBlock()}},Ds=new Set;function Os(e,t){let n=``;if(Array.isArray(e)){Ds.clear();let r=`[ `;for(let n=0;n{e.appendLine(`bool allowsDirectInput = `+ +!!t.direct),e.appendLine(`bool allowsIndirectInput = `+ +!!t.indirect),e.appendLine(`uniform token info:id = "RealityKit.InputTarget"`)},e.add(n)}var js=class{static __sceneStartTrigger;static sceneStartTrigger(){if(this.__sceneStartTrigger!==void 0)return this.__sceneStartTrigger;let e=new ks(void 0,`SceneStart`);return e.tokenId=`SceneTransition`,e.type=`enter`,this.__sceneStartTrigger=e,e}static tapTrigger(e,t={direct:!0,indirect:!0}){let n=new ks(e);if(Array.isArray(e)&&e.length>1)for(let n of e)n instanceof jo&&As(n,t);else e instanceof jo&&As(e,t);return n.tokenId=`TapGesture`,n}static isTapTrigger(e){return e?.tokenId===`TapGesture`}static proximityToCameraTrigger(e,t){let n=new ks(e);return n.tokenId=`ProximityToCamera`,n.distance=t,n}},Ms=class{static global_id=0;static getId(){return this.global_id++}id;actions;loops=0;performCount=1;type=`serial`;multiplePerformOperation=void 0;constructor(e,t){this.id=e,this.actions=t}addAction(e){return this.actions.push(e),this}makeParallel(){return this.type=`parallel`,this}makeSequence(){return this.type=`serial`,this}makeLooping(){return this.loops=1,this.performCount=0,this}makeRepeat(e){return this.performCount=e,this}writeTo(e,t){t.beginBlock(`def Preliminary_Action "${this.id}"`),t.beginArray(`rel actions`);for(let e of this.actions){if(!e)continue;let n=e===this.actions[this.actions.length-1];t.appendLine(`<`+e.id+`>`+(n?``:`, `))}t.closeArray(),t.appendLine(),t.appendLine(`token info:id = "Group"`),t.appendLine(`bool loops = ${this.loops}`),t.appendLine(`int performCount = ${this.loops>0?0:Math.max(0,this.performCount)}`),t.appendLine(`token type = "${this.type}"`),typeof this.multiplePerformOperation==`string`&&t.appendLine(`token multiplePerformOperation = "${this.multiplePerformOperation}"`),t.appendLine();for(let n of this.actions)n&&(n.writeTo(e,t),t.appendLine());t.closeBlock()}},Ns=class e{static global_id=0;id;tokenId;affectedObjects;easeType;motionType=void 0;duration;moveDistance;style;type;front;up;start;animationSpeed;reversed;pingPong;xFormTarget;audio;gain;auralMode;multiplePerformOperation;velocity;comment;animationName;clone(){let t=new e,n=t.id;return Object.assign(t,this),t.id=n,t}constructor(t,n){t&&(this.affectedObjects=t),n?this.id=n:this.id=`Action`,this.id+=`_`+ e.global_id++}writeTo(e,t){t.beginBlock(`def Preliminary_Action "${this.id}"`),this.comment&&t.appendLine(`# ${this.comment}`),this.affectedObjects&&(typeof this.affectedObjects!=`string`&&(this.affectedObjects=Os(this.affectedObjects,e)),t.appendLine(`rel affectedObjects = `+this.affectedObjects)),typeof this.duration==`number`&&(typeof this.animationSpeed==`number`&&this.animationSpeed!==1?t.appendLine(`double duration = ${this.duration/this.animationSpeed} `):t.appendLine(`double duration = ${this.duration} `)),this.easeType&&t.appendLine(`token easeType = "${this.easeType}"`),this.tokenId&&t.appendLine(`token info:id = "${this.tokenId}"`),this.tokenId===`ChangeScene`&&t.appendLine(`rel scene = `),this.motionType!==void 0&&t.appendLine(`token motionType = "${this.motionType}"`),typeof this.moveDistance==`number`&&t.appendLine(`double moveDistance = ${this.moveDistance} `),this.style&&t.appendLine(`token style = "${this.style}"`),this.type&&t.appendLine(`token type = "${this.type}"`),this.front&&t.appendLine(`vector3d front = (${this.front.x}, ${this.front.y}, ${this.front.z})`),this.up&&t.appendLine(`vector3d upVector = (${this.up.x}, ${this.up.y}, ${this.up.z})`),typeof this.start==`number`&&t.appendLine(`double start = ${this.start} `),typeof this.animationSpeed==`number`&&t.appendLine(`double animationSpeed = ${this.animationSpeed.toFixed(2)} `),typeof this.reversed==`boolean`&&t.appendLine(`bool reversed = ${this.reversed}`),typeof this.pingPong==`boolean`&&t.appendLine(`bool reverses = ${this.pingPong}`),this.xFormTarget&&(typeof this.xFormTarget!=`string`&&(this.xFormTarget=Os(this.xFormTarget,e)),t.appendLine(`rel xformTarget = ${this.xFormTarget}`)),typeof this.audio==`string`&&t.appendLine(`asset audio = @${this.audio}@`),typeof this.gain==`number`&&t.appendLine(`double gain = ${this.gain}`),typeof this.auralMode==`string`&&t.appendLine(`token auralMode = "${this.auralMode}"`),typeof this.multiplePerformOperation==`string`&&t.appendLine(`token multiplePerformOperation = "${this.multiplePerformOperation}"`),typeof this.velocity==`object`&&t.appendLine(`vector3d velocity = (${this.velocity.x}, ${this.velocity.y}, ${this.velocity.z})`),t.closeBlock()}},Ps=class e{x=0;y=0;z=0;constructor(e,t,n){this.x=e,this.y=t,this.z=n}static get up(){return new e(0,1,0)}static get right(){return new e(1,0,0)}static get forward(){return new e(0,0,1)}static get back(){return new e(0,0,-1)}static get zero(){return new e(0,0,0)}},G=class e{static sequence(...e){return new Ms(`Group_`+Ms.getId(),e).makeSequence()}static parallel(...e){return new Ms(`Group_`+Ms.getId(),e).makeParallel()}static fadeAction(e,t,n){let r=new Ns(e);return r.tokenId=`Visibility`,r.type=n?`show`:`hide`,r.duration=t,r.style=`basic`,r.motionType=`none`,r.moveDistance=0,r.easeType=`none`,r}static startAnimationAction(t,n,r=!1,i=!1){let a=new Ns(t);a.tokenId=`StartAnimation`;let o=n.start,s=n.duration,c=n.speed,l=n.clipName;if(a.comment=`Animation: ${l}, start=${o*60}, length=${s*60}, end=${(o+s)*60}`,a.animationName=l,a.start=o,a.duration=s,a.animationSpeed=c,a.reversed=r,a.pingPong=i,a.multiplePerformOperation=`allow`,r&&(a.start-=s),i){a.pingPong=!1;let t=a.clone();return t.reversed=!r,t.start=a.start,t.reversed&&(t.start-=s),e.sequence(a,t)}return a}static waitAction(e){let t=new Ns;return t.tokenId=`Wait`,t.duration=e,t.motionType=void 0,t}static lookAtCameraAction(e,t,n,r){let i=new Ns(e);return i.tokenId=`LookAtCamera`,i.duration=t===void 0?9999999999999:t,i.front=n??Ps.forward,i.up=r??Ps.up,i}static emphasize(e,t,n=`bounce`,r=1,i=`basic`){let a=new Ns(e);return a.tokenId=`Emphasize`,a.duration=t,a.style=i??`basic`,a.motionType=n,a.moveDistance=r,a}static transformAction(e,t,n,r,i=`inout`){let a=new Ns(e);return a.tokenId=`Transform`,a.duration=n,a.duration=Math.max(1e-6,n),a.type=r,a.easeType=n>0?i:`none`,Array.isArray(t)&&console.error(`Transform target must not be an array`,t),a.xFormTarget=t,a}static playAudioAction(e,t,n=`play`,r=1,i=`spatial`){let a=new Ns(e);return a.tokenId=`Audio`,a.type=n,a.audio=t,a.gain=r,a.auralMode=i,a.multiplePerformOperation=`allow`,a}static impulseAction(e,t){let n=new Ns(e);return n.tokenId=`Impulse`,n.velocity=t,n}},Fs=D(`debugusdzanimation`),Is=D(`debugusdzanimationserialization`),Ls=class e{_start;get start(){return this._start===void 0&&(this._start=this.ext.getStartTimeByClip(this.clip)),this._start}get duration(){return this.clip?.duration??K.restPoseClipDuration}get nearestAnimatedRoot(){return this._nearestAnimatedRoot}get clipName(){return this.clip?.name??`rest`}ext;root;_nearestAnimatedRoot=void 0;clip;speed;constructor(e,t,n){this.ext=e,this.root=t,this.clip=n,this._nearestAnimatedRoot=this.getNearestAnimatedRoot()}static isDescendantOf(e,t){let n=t;if(!n||!e)return!1;for(;n;){if(!n)return!1;if(n===e)return!0;n=n.parent}return!1}getNearestAnimatedRoot(){let t;try{for(let n of this.clip?.tracks??[]){let r=o.parseTrackName(n.name),i=o.findNode(this.root,r.nodeName);if(i)if(!t)t=i;else{if(i===t||e.isDescendantOf(t,i))continue;if(!e.isDescendantOf(i,t)){for(;!e.isDescendantOf(i,t)&&i.parent;)i=i.parent;e.isDescendantOf(i,t)||console.error(`USDZExporter: Animation clip targets multiple roots that are not parent/child. Please report a bug`,this.root,this.clip,t,i)}t=i}}}catch(e){console.error(`USDZExporter: Exception when trying to find nearest animated root. Please report a bug`,e),t=void 0}return t}},K=class e{clip;pos;rot;scale;root;target;duration=0;useRootMotion=!1;static frameRate=60;static animationDurationPadding=6/60;static restPoseClipDuration=6/60;constructor(t,n,r){if(this.root=t,this.target=n,this.clip=r,r?this.duration=r.duration:this.duration=e.restPoseClipDuration,r&&r.tracks){let e=Math.max(...r.tracks.map(e=>e.times[e.times.length-1]));e!==this.duration&&(console.warn(`USDZExporter: Animation clip duration does not match the maximum time value in the tracks.`,r,e,this.duration),this.duration=e)}let i=k.getComponent(t,kt);i&&(this.useRootMotion=i.applyRootMotion)}addTrack(e){if(!this.clip){console.error(`This is a rest clip but you're trying to add tracks to it – this is likely a bug`);return}e.name.endsWith(`position`)?this.pos=e:e.name.endsWith(`quaternion`)?this.rot=e:e.name.endsWith(`scale`)?this.scale=e:(e.name.endsWith(`activeSelf`)?console.warn(`[USDZ] Animation of enabled/disabled state is not supported for USDZ export and will NOT be exported: `+e.name+` on `+(this.root?.name??this.target.name)+`. Animate scale 0/1 instead.`):console.warn(`[USDZ] Animation track type not supported for USDZ export and will NOT be exported: `+e.name+` on `+(this.root?.name??this.target.name)+`. Only .position, .rotation, .scale are supported.`),T()&&kn(`[USDZ] Some animations can't be exported. See console for details.`))}getFrames(){return this.clip?Math.max(this.pos?.times?.length??0,this.rot?.times?.length??0,this.scale?.times?.length??0):2}getDuration(){return this.duration}getSortedTimesArray(e=!0,t=!0,n=!0){if(!this.clip)return[0,this.duration];let r=this.pos?.times,i=this.rot?.times,a=this.scale?.times,o=[];if(e&&r)for(let e of r)o.push(e);if(t&&i)for(let e of i)o.push(e);if(n&&a)for(let e of a)o.push(e);return o.includes(0)||o.push(0),o.sort((e,t)=>e-t),[...new Set(o)]}*getValues(t,n=!0,i=!0,a=!0){let o=new r,s=new Ue,c=new r(1,1,1),l=this.target,u=n?this.pos?.createInterpolant():void 0,d=i?this.rot?.createInterpolant():void 0,f=a?this.scale?.createInterpolant():void 0;u||o.set(l.position.x,l.position.y,l.position.z),d||s.set(l.quaternion.x,l.quaternion.y,l.quaternion.z,l.quaternion.w),f||c.set(l.scale.x,l.scale.y,l.scale.z),u&&u.valueSize!==3&&(u.valueSize=3),d&&d.valueSize!==4&&(d.valueSize=4),f&&f.valueSize!==3&&(f.valueSize=3);for(let n=0;n=t.length?(r=t[t.length-1],i=r+e.animationDurationPadding/2-1/60):(r=t[n],i=r),u){let e=u.evaluate(r);o.set(e[0],e[1],e[2])}if(d){let e=d.evaluate(r);s.set(e[0],e[1],e[2],e[3])}if(f){let e=f.evaluate(r);c.set(e[0],e[1],e[2])}if(this.useRootMotion&&l===this.root){let e=new b;e.compose(o,s,c),e.multiply(l.matrix),e.decompose(o,s,c)}yield{time:i,translation:o,rotation:s,scale:c,index:n}}}},Rs=class{get extensionName(){return`animation`}get animationData(){return this.dict}get registeredClips(){return this.clipToStartTime.keys()}get animatedRoots(){return this.rootTargetMap.keys()}get holdClipMap(){return this.clipToHoldClip}dict=new Map;rootTargetMap=new Map;rootAndClipToRegisteredAnimationMap=new Map;rootToRegisteredClip=new Map;lastClipEndTime=0;clipToStartTime=new Map;clipToHoldClip=new Map;serializers=[];injectRestPoses=!1;injectImplicitBehaviours=!1;constructor(e){this.injectRestPoses=e,this.injectImplicitBehaviours=e}getStartTimeCode(){return!this.injectRestPoses||this.rootAndClipToRegisteredAnimationMap.size===0?0:(K.restPoseClipDuration+K.animationDurationPadding)*60}getEndTimeCode(){let e=0;for(let[t,n]of this.rootAndClipToRegisteredAnimationMap){let t=n.start+n.duration;t>e&&(e=t)}return e*60}getClipCount(e){return this.rootToRegisteredClip.get(e)?.length??0??0}getStartTimeByClip(e){return e?this.clipToStartTime.has(e)?this.clipToStartTime.get(e):(console.error(`USDZExporter: Missing start time for clip – please report a bug.`,e),0):0}registerAnimation(e,t){if(!e)return null;this.rootTargetMap.has(e)||this.rootTargetMap.set(e,[]);let n=e.uuid+(t?.uuid??`-rest`);if(this.rootAndClipToRegisteredAnimationMap.has(n))return this.rootAndClipToRegisteredAnimationMap.get(n);Fs&&console.log(`registerAnimation`,e,t);let r=+!!this.injectRestPoses,i=(this.rootToRegisteredClip.get(e)?.length??0)+r,a=this.rootTargetMap.get(e),s=new Set(a);if(t&&t.tracks)for(let n of t.tracks){let r=o.parseTrackName(n.name),c=o.findNode(e,r.nodeName);if(!c){console.warn(`no object found for track`,n.name,`using `+e.name+` instead`);continue}this.dict.has(c)||this.dict.set(c,[]);let l=this.dict.get(c);if(!l){console.warn(`no transform data found for target `,c,`at slot `+i+`, this is likely a bug`);continue}s.delete(c),this.injectRestPoses&&!l[0]&&(console.log(`Injecting rest pose`,c,t,`at slot`,i),l[0]=new K(null,c,null));let u=l[i];u||(u=new K(e,c,t),l[i]=u),u.addTrack(n),a?.includes(c)||a?.push(c)}Fs&&console.log(`Unregistered nodes for this clip`,s,`clip`,t,`at slot`,i,`for root`,e,`targets`,a);for(let n of s){let r=this.dict.get(n);if(!r)continue;this.injectRestPoses&&!r[0]&&(console.warn(`Adding rest pose for `,n,t,`at slot`,i,`This is likely a bug, should have been added earlier.`),r[0]=new K(null,n,null));let a=r[i];a||(Fs&&console.log(`Adding padding clip for `,n,t,`at slot`,i),a=new K(e,n,t),r[i]=a)}let c=new Ls(this,e,t);if(this.rootAndClipToRegisteredAnimationMap.set(n,c),Fs&&console.log({root:e,clip:t,info:c}),t){let n=this.rootToRegisteredClip.get(e);if(n?n.push(t):this.rootToRegisteredClip.set(e,[t]),!this.clipToStartTime.get(t)){this.lastClipEndTime??=K.restPoseClipDuration;let e=this.lastClipEndTime+K.animationDurationPadding,n=e+t.duration,r=Math.round(e*60)/60,i=Math.round(n*60)/60;Math.abs(r-e)<.01&&(e=r),Math.abs(i-n)<.01&&(n=i),e=Math.ceil(e),n=e+t.duration,this.clipToStartTime.set(t,e),this.lastClipEndTime=n}}return c}onAfterHierarchy(e){Fs&&console.log(`Animation clips per animation target node`,this.dict)}onAfterBuildDocument(e){Fs&&console.log(`Animation data`,{dict:this.dict,rootTargetMap:this.rootTargetMap,rootToRegisteredClip:this.rootToRegisteredClip});for(let e of this.rootTargetMap.keys()){let t=this.rootTargetMap.get(e);if(!t)continue;let n,r=[];for(let i of t){let t=this.dict.get(i);if(!t){console.error(`No data found for target on USDZ export – please report a bug!`,i);continue}n===void 0&&(n=t?.length),n!==t?.length&&console.error(`Different array lengths for targets – please report a bug!`,t);for(let n=0;n{let r=e;typeof r.createAnimation==`function`&&r.createAnimation(this,t,n)},!1);let r=new zs(e,this);this.serializers.push(r),r.registerCallback(t)}},zs=class{model=void 0;object;animationData;ext;callback;constructor(e,t){this.object=e,this.animationData=t.animationData,this.ext=t}registerCallback(e){this.model&&this.callback&&this.model.removeEventListener(`serialize`,this.callback),this.callback||=this.onSerialize.bind(this),Is&&console.log(`REPARENT`,e),this.model=e,this.callback&&this.model.addEventListener(`serialize`,this.callback)}skinnedMeshExport(e,t,n){let r=this.model,i=this.animationData;if(r&&r.skinnedMesh){let a=r.skinnedMesh.skeleton,o=[],s=[],c=[];for(let e of a.bones){s.push(e),c.push(e.uuid);let t=a.boneInverses[a.bones.indexOf(e)];o.push({bone:e,inverse:t})}let l=1e4;for(;c.length0;)for(let e of s){let t=e.children;for(let e of t)if(c.indexOf(e.uuid)===-1&&a.bones.indexOf(e)!==-1){s.push(e),c.push(e.uuid);let t=a.boneInverses[a.bones.indexOf(e)];o.push({bone:e,inverse:t})}}l<=0&&console.error(`Failed to sort bones in skinned mesh`,r.skinnedMesh,a.bones,c);for(let e of Do(a.bones))o.push({bone:e,inverse:e.matrixWorld.clone().invert()});let u=o[0].bone.parent;u||console.error(`No bone parent found for skinned mesh during USDZ export`,r.skinnedMesh),o.sort((e,t)=>os(e.bone,u)>os(t.bone,u)?1:-1);function d(e){let t=[];for(let[n,r]of e){let e=`${n} : [`,i=[];for(let e of r)i.push(`(${W(e.x)}, ${W(e.y)}, ${W(e.z)})`);e=e.concat(i.join(`, `)),e=e.concat(`],`),t.push(e)}return t}function f(e){let t=[];for(let[n,r]of e){let e=`${n} : [`,i=[];for(let e of r)i.push(`(${W(e.w)}, ${W(e.x)}, ${W(e.y)}, ${W(e.z)})`);e=e.concat(i.join(`, `)),e=e.concat(`],`),t.push(e)}return t}function p(e){let t,r=!0,i=new Map;for(let[n,a]of e){t===void 0&&(t=a.length),t!==a.length&&(r=!1);let e=0;for(let t of a)e++,t||(i.has(n)||i.set(n,[]),i.get(n).push(e))}Fs&&console.log(`Bone count: `,e.size,`TransformData entries per bone: `,t,`Undefined bone entries: `,i),console.assert(r,`All bones should have the same number of TransformData entries`,e),console.assert(i.size===0,`All TransformData entries should be set`,i);let a=[];for(let[t,r]of e)for(let e=0;ee-t),e.rot.sort((e,t)=>e-t),e.scale.sort((e,t)=>e-t),e.pos=[...new Set(e.pos)],e.rot=[...new Set(e.rot)],e.scale=[...new Set(e.scale)];return a}function m(e,t,n){let r=new Map,i=new Map,a=new Map,o=t.length;for(let s of n){let n=e.get(s),c;n?console.assert(n.length===o,`We should have the same number of TransformData entries for each bone`,n,t):c=new K(null,s,null);for(let e=0;ee.clip?.uuid.substring(0,6)).join(` `));console.log(`getPerBoneTransformData +`+e.join(` +`))}for(let n of e){let e=i.get(n);e&&t.set(n,e)}return t}function ee(e){let t=_(e);return m(t,p(t),e)}let te=t.quickLookCompatible,ne=[],v=[],re=[],ie=[];for(let{bone:e}of o){if(te){let t=e.scale;t.x==0&&(t.x=1e-5),t.y==0&&(t.y=1e-5),t.z==0&&(t.z=1e-5),ne.push(new b().compose(e.position,e.quaternion,e.scale))}else ne.push(e.matrix.clone());v.push(e.position),re.push(e.quaternion),ie.push(e.scale)}let ae=o.map(e=>`"`+os(e.bone,u)+`"`).join(`, `),oe=o.map(e=>cs(e.inverse.clone().invert())).join(`, `);e.beginBlock(`def Skeleton "Rig"`),e.appendLine(`uniform matrix4d[] bindTransforms = [${oe}]`),e.appendLine(`uniform token[] joints = [${ae}]`),e.appendLine(`uniform token purpose = "guide"`),e.appendLine(`uniform matrix4d[] restTransforms = [${ne.map(e=>cs(e)).join(`, `)}]`);let y=ee(o.map(e=>e.bone));if(Fs){let e=1e7,t=0;for(let n of y.position?.keys()??[])e=Math.min(e,n),t=Math.max(t,n);console.log(`Time samples`,e,t,y)}if(e.beginBlock(`def SkelAnimation "_anim"`),e.appendLine(`uniform token[] joints = [${ae}]`),e.appendLine(`quatf[] rotations = [${g(re)}]`),y&&y.quaternion){e.beginBlock(`quatf[] rotations.timeSamples = {`,``);let t=f(y.quaternion);for(let n of t)e.appendLine(n);e.closeBlock()}if(e.appendLine(`half3[] scales = [${h(ie)}]`),y&&y.scale){e.beginBlock(`half3[] scales.timeSamples = {`,``);let t=d(y.scale);for(let n of t)e.appendLine(n);e.closeBlock()}if(e.appendLine(`float3[] translations = [${h(v)}]`),y&&y.position){e.beginBlock(`float3[] translations.timeSamples = {`,``);let t=d(y.position);for(let n of t)e.appendLine(n);e.closeBlock()}e.closeBlock(),e.closeBlock()}}onSerialize(e,t){if(!this.model)return;let n=this.animationData.get(this.object);if(n)for(let e=0;ee&&{position:e.pos,rotation:e.rot,scale:e.scale}[n])){switch(n){case`position`:a.needsTranslate=!0,e.beginBlock(`double3 xformOp:translate.timeSamples = {`,``);break;case`rotation`:a.needsOrient=!0,e.beginBlock(`quatf xformOp:orient.timeSamples = {`,``);break;case`scale`:a.needsScale=!0,e.beginBlock(`double3 xformOp:scale.timeSamples = {`,``);break}for(let a=0;ae.path===t.clip)){this.files.push({path:t.clip,name:a});let e=a.toLowerCase();r.quickLookCompatible&&!e.endsWith(`.mp3`)&&!e.endsWith(`.wav`)&&!e.endsWith(`.m4a`)&&console.error(`Audio file `+t.clip+` from `+t.name+` is not an MP3 or WAV file. QuickLook may not support playing it.`)}r.quickLookCompatible||n.addEventListener(`serialize`,(e,n)=>{e.appendLine(),e.beginBlock(`def SpatialAudio "${o}"`,`(`,!1),e.appendLine(`displayName = "${i}"`),e.closeBlock(`)`),e.beginBlock(),e.appendLine(`uniform asset filePath = @audio/${a}@`),e.appendLine(`uniform token auralMode = "${t.spatialBlend>0?`spatial`:`nonSpatial`}"`),e.appendLine(`uniform token playbackMode = "${t.loop?`loopFromStage`:`onceFromStart`}"`),e.appendLine(`uniform float gain = ${t.volume}`),e.closeBlock()})}}async onAfterSerialize(e){for(let t of this.files){let n=`audio/`+t.name;if(e.files[n]){Bs&&console.warn(`Audio file with name `+n+` already exists in the context. Skipping.`);continue}let r=await(await(await fetch(t.path)).blob()).arrayBuffer(),i=new Uint8Array(r);e.files[n]=i}}},q=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Hs=D(`debugusdzbehaviours`),Us=class extends N{object;target;duration=1;relativeMotion=!1;coroutine=null;targetPos=new r;targetRot=new Ue;targetScale=new r;onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Move `+(this.object?.name||`object`)+` to `+(this.target?.name||`target`)+` on click`,hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){let t=this.object?.getComponentsInChildren(vt);if(t)for(let e of t)e.resetVelocities(),e.resetForcesAndTorques();e.use(),this.coroutine&&this.stopCoroutine(this.coroutine),this.relativeMotion?this.coroutine=this.startCoroutine(this.moveRelative()):this.coroutine=this.startCoroutine(this.moveToTarget())}*moveToTarget(){if(!this.target||!this.object)return;let e=Yt(this.object).clone(),t=Yt(this.target).clone(),n=Rn(this.object).clone(),r=Rn(this.target).clone(),i=$t(this.object).clone(),a=$t(this.target).clone(),o=e.distanceTo(t),s=n.angleTo(r),c=i.distanceTo(a);if(o<.01&&s<.01&&c<.01){Xe(this.object,t),xt(this.object,r),mt(this.object,a),this.coroutine=null;return}let l=0,u=0;for(;l<1;)l+=this.context.time.deltaTime/this.duration,l>1&&(l=1),u=l<.5?4*l*l*l:1-(-2*l+2)**3/2,this.targetPos.lerpVectors(e,t,u),this.targetRot.slerpQuaternions(n,r,u),this.targetScale.lerpVectors(i,a,u),Xe(this.object,this.targetPos),xt(this.object,this.targetRot),mt(this.object,this.targetScale),yield;this.coroutine=null}*moveRelative(){if(!this.target||!this.object)return;let e=this.object.position.clone(),t=this.object.quaternion.clone(),n=this.object.scale.clone(),r=this.target.position.clone(),i=this.target.quaternion.clone(),a=this.target.scale.clone();r.applyQuaternion(this.object.quaternion),this.targetPos.copy(this.object.position).add(r),this.targetRot.copy(this.object.quaternion).multiply(i),this.targetScale.copy(this.object.scale).multiply(a);let o=0,s=0;for(;o<1;)o+=this.context.time.deltaTime/this.duration,o>1&&(o=1),s=o<.5?4*o*o*o:1-(-2*o+2)**3/2,this.object.position.lerpVectors(e,this.targetPos,s),this.object.quaternion.slerpQuaternions(t,this.targetRot,s),this.object.scale.lerpVectors(n,this.targetScale,s),yield;this.coroutine=null}beforeCreateDocument(e){if(this.target&&this.object&&this.gameObject){let t=new Es(`Move to `+this.target?.name,js.tapTrigger(this.gameObject),G.transformAction(this.object,this.target,this.duration,this.relativeMotion?`relative`:`absolute`));e.addBehavior(t)}}};q([E(S)],Us.prototype,`object`,void 0),q([E(S)],Us.prototype,`target`,void 0),q([E()],Us.prototype,`duration`,void 0),q([E()],Us.prototype,`relativeMotion`,void 0);var Ws=class e extends N{materialToSwitch;variantMaterial;fadeDuration=0;start(){this._objectsWithThisMaterial=this.objectsWithThisMaterial,T()&&this._objectsWithThisMaterial.length<=0&&console.warn(`ChangeMaterialOnClick: No objects found with material "`+this.materialToSwitch?.name+`"`)}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Change material to `+(this.variantMaterial?.name||`unknown material`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(e){this.context.input.setCursor(`pointer`)}onPointerExit(e){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){if(e.use(),this.variantMaterial)for(let e=0;e{if(e instanceof x)if(Array.isArray(e.material)){for(let t of e.material)if(t===this.materialToSwitch){this.objectsWithThisMaterial.push(e);break}}else (e.material===this.materialToSwitch||Mt(e.material,this.materialToSwitch))&&this.objectsWithThisMaterial.push(e)}),this._objectsWithThisMaterial):this._objectsWithThisMaterial}selfModel;targetModels;static _materialTriggersPerId={};static _startHiddenBehaviour=null;static _parallelStartHiddenActions=[];async beforeCreateDocument(t,n){this.targetModels=[],e._materialTriggersPerId={},e.variantSwitchIndex=0,this.materialToSwitch&&await P.assignTextureLOD(this.materialToSwitch,0),this.variantMaterial&&await P.assignTextureLOD(this.variantMaterial,0)}createBehaviours(t,n,r){this.objectsWithThisMaterial.find(e=>e.uuid===n.uuid)&&this.targetModels.push(n),this.gameObject.uuid===n.uuid&&(this.selfModel=n,this.materialToSwitch&&(e._materialTriggersPerId[this.materialToSwitch.uuid]||(e._materialTriggersPerId[this.materialToSwitch.uuid]=[]),e._materialTriggersPerId[this.materialToSwitch.uuid].push(this)))}afterCreateDocument(t,n){if(!this.materialToSwitch)return;let r=e._materialTriggersPerId[this.materialToSwitch.uuid];if(r){let e={};for(let t of r){let n=t.createVariants();n&&n.length>0&&(e[t.selfModel.uuid]=n)}for(let n of r){let r=[];for(let t in e)t!==n.selfModel.uuid&&r.push(...e[t]);n.createAndAttachBehaviors(t,e[n.selfModel.uuid],r)}}delete e._materialTriggersPerId[this.materialToSwitch.uuid]}createAndAttachBehaviors(t,n,r){let i=[],a=Math.max(0,this.fadeDuration);i.push(G.fadeAction([...this.targetModels,...r],a,!1)),i.push(G.fadeAction(n,a,!0)),t.addBehavior(new Es(`Select_`+this.selfModel.name,js.tapTrigger(this.selfModel),G.parallel(...i))),e._parallelStartHiddenActions.push(...n),e._startHiddenBehaviour||(e._startHiddenBehaviour=new Es(`StartHidden_`+this.selfModel.name,js.sceneStartTrigger(),G.fadeAction(e._parallelStartHiddenActions,a,!1)),t.addBehavior(e._startHiddenBehaviour))}static getMaterialName(e){return wo(e.name||`Material`)+`_`+e.id}static variantSwitchIndex=0;createVariants(){if(!this.variantMaterial)return null;let t=[];for(let n of this.targetModels){let r=n.clone();r.name+=`_Variant_`+ e.variantSwitchIndex+++`_`+e.getMaterialName(this.variantMaterial),r.displayName=r.displayName+`: Variant with material `+this.variantMaterial.name,r.material=this.variantMaterial,r.geometry=n.geometry,r.transform=n.transform,(!n.parent||!n.parent.isEmpty())&&jo.createEmptyParent(n),n.parent&&n.parent.add(r),t.push(r)}return t}};q([E(Ne)],Ws.prototype,`materialToSwitch`,void 0),q([E(Ne)],Ws.prototype,`variantMaterial`,void 0),q([E()],Ws.prototype,`fadeDuration`,void 0);var Gs=class e extends N{target;toggleOnClick=!1;targetState=!0;hideSelf=!0;onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),!this.toggleOnClick&&this.hideSelf&&(this.gameObject.visible=!1),this.target&&(this.target.visible=this.toggleOnClick?!this.target.visible:this.targetState)}selfModel;selfModelClone;targetModel;toggleModel;createBehaviours(e,t,n){t.uuid===this.gameObject.uuid&&(this.selfModel=t,this.selfModelClone=t.clone())}stateBeforeCreatingDocument=!1;targetStateBeforeCreatingDocument=!1;static clonedToggleIndex=0;static wasVisible=Symbol(`usdz_SetActiveOnClick_wasVisible`);static toggleClone=Symbol(`clone for toggling`);static reverseToggleClone=Symbol(`clone for reverse toggling`);beforeCreateDocument(){this.target&&(this.gameObject[e.wasVisible]===void 0&&(this.gameObject[e.wasVisible]=this.gameObject.activeSelf),this.target[e.wasVisible]===void 0&&(this.target[e.wasVisible]=this.target.activeSelf),this.stateBeforeCreatingDocument=this.gameObject[e.wasVisible],this.targetStateBeforeCreatingDocument=this.target[e.wasVisible],this.gameObject.visible=!0,this.target.visible=!0)}afterCreateDocument(t,n){if(!this.target)return;this.targetModel=n.document.findById(this.target.uuid);let r=this.selfModel;if(this.selfModel&&this.targetModel){let n=this.selfModel,i=this.targetState;if(this.toggleOnClick)if(i=!this.targetStateBeforeCreatingDocument,!this.selfModelClone.geometry)(!this.selfModel.parent||this.selfModel.parent.isEmpty())&&Mo.createEmptyParent(this.selfModel),this.toggleModel=this.selfModel.deepClone(),this.toggleModel.name+=`_toggle`,this.selfModel.parent.add(this.toggleModel);else{if(!this.gameObject[e.toggleClone]){let t=this.selfModelClone.clone();t.setMatrix(new b),t.name+=`_toggle`+ e.clonedToggleIndex++,r.add(t),this.gameObject[e.toggleClone]=t,console.warn(`USDZExport: Toggle `+this.gameObject.name+` doesn't have geometry. It will be deep cloned and nested behaviours will likely not work.`)}let t=this.gameObject[e.toggleClone];if(!this.gameObject[e.reverseToggleClone]){let t=this.selfModelClone.clone();t.setMatrix(new b),t.name+=`_toggleReverse`+ e.clonedToggleIndex++,r.add(t),this.gameObject[e.reverseToggleClone]=t}this.toggleModel=this.gameObject[e.reverseToggleClone],(!this.toggleModel.geometry||!t.geometry)&&console.error(`triggers without childs and without geometry won't work!`,this,r.geometry),n=t,r.geometry=null,r.material=null}if(!this.toggleModel){let e=[];this.hideSelf&&e.push(G.fadeAction(n,0,!1)),e.push(G.fadeAction(this.targetModel,0,i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`On`:`Off`),js.tapTrigger(n),e.length>1?G.parallel(...e):e[0]))}else if(this.toggleOnClick){let e=[];e.push(G.fadeAction(n,0,!1)),e.push(G.fadeAction(this.toggleModel,0,!0)),e.push(G.fadeAction(this.targetModel,0,i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`On`:`Off`),js.tapTrigger(n),G.parallel(...e)));let r=[];r.push(G.fadeAction(this.toggleModel,0,!1)),r.push(G.fadeAction(n,0,!0)),r.push(G.fadeAction(this.targetModel,0,!i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`Off`:`On`),js.tapTrigger(this.toggleModel),G.parallel(...r)))}let a=[];this.targetStateBeforeCreatingDocument||a.push(this.targetModel),this.stateBeforeCreatingDocument||a.push(r),this.toggleModel&&a.push(this.toggleModel),Ks.add(a,t)}}afterSerialize(t,n){this.gameObject[e.wasVisible]!==void 0&&(this.gameObject.visible=this.gameObject[e.wasVisible],delete this.gameObject[e.wasVisible]),this.target&&this.target[e.wasVisible]!==void 0&&(this.target.visible=this.target[e.wasVisible],delete this.target[e.wasVisible]),delete this.gameObject[e.toggleClone],delete this.gameObject[e.reverseToggleClone]}};q([E(S)],Gs.prototype,`target`,void 0),q([E()],Gs.prototype,`toggleOnClick`,void 0),q([E()],Gs.prototype,`targetState`,void 0),q([E()],Gs.prototype,`hideSelf`,void 0);var Ks=class e extends N{static _fadeBehaviour;static _fadeObjects=[];static add(t,n){let r=Array.isArray(t)?t:[t];for(let t of r)e._fadeObjects.includes(t)||(console.log(`adding hide on start`,t),e._fadeObjects.push(t));e._fadeBehaviour===void 0&&(e._fadeBehaviour=new Es(`HideOnStart`,js.sceneStartTrigger(),G.fadeAction(e._fadeObjects,0,!1)),n.addBehavior(e._fadeBehaviour))}start(){k.setActive(this.gameObject,!1)}createBehaviours(t,n,r){n.uuid===this.gameObject.uuid&&(this.wasVisible||e.add(n,t))}wasVisible=!1;beforeCreateDocument(){this.wasVisible=k.isActiveSelf(this.gameObject)}},qs=class extends N{target;duration=.5;motionType=`bounce`;onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Emphasize `+this.target?.name+` on click`,hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}beforeCreateDocument(){}createBehaviours(e,t,n){if(this.target&&t.uuid===this.gameObject.uuid){let t=new Es(`emphasize `+this.name,js.tapTrigger(this.gameObject),G.emphasize(this.target,this.duration,this.motionType,void 0,`basic`));e.addBehavior(t)}}afterCreateDocument(e,t){}};q([E()],qs.prototype,`target`,void 0),q([E()],qs.prototype,`duration`,void 0),q([E()],qs.prototype,`motionType`,void 0);var Js=class extends N{target;clip=``;toggleOnClick=!1;trigger=`tap`;ensureAudioSource(){if(!this.target){let e=this.gameObject.addComponent(I);e&&(this.target=e,e.spatialBlend=1,e.volume=1,e.loop=!1,e.preload=!0)}}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Play audio: `+(this.clip||this.target?.clip||`unknown clip`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),!(!this.target?.clip&&!this.clip)&&(this.ensureAudioSource(),this.target&&(this.target.isPlaying&&this.toggleOnClick?this.target.stop():(!this.toggleOnClick&&this.target.isPlaying&&this.target.stop(),this.clip?this.target.play(this.clip):this.target.play())))}createBehaviours(e,t,n){if(!(!this.target&&!this.clip)&&t.uuid===this.gameObject.uuid){let n=this.clip?this.clip:this.target?this.target.clip:void 0;if(!n||typeof n!=`string`)return;let r=this.target?this.target.gameObject:this.gameObject;Vs.getName(n);let i=this.target?this.target.volume:1,a=this.target&&this.target.spatialBlend==0?`nonSpatial`:`spatial`,o=!1;this.gameObject.traverse(e=>{e instanceof x&&e.visible&&(o=!0)}),o=!0;let s=e.addAudioClip(n),c=G.playAudioAction(r,s,`play`,i,a);this.target&&this.target.loop&&(c=G.sequence(c).makeLooping());let l=this.name?`_`+this.name:``;if(o&&this.trigger===`tap`){this.toggleOnClick&&(c.multiplePerformOperation=`stop`);let n=new Es(`playAudio`+l,js.tapTrigger(t),c);e.addBehavior(n)}if(this.target&&this.target.playOnAwake&&this.target.enabled)if(o&&this.trigger===`tap`)console.warn(`USDZExport: Audio sources that are played on tap can't also auto-play at scene start due to a QuickLook bug.`);else{let t=new Es(`playAudioOnStart`+l,js.sceneStartTrigger(),c);e.addBehavior(t)}}}};q([E(I)],Js.prototype,`target`,void 0),q([E(URL)],Js.prototype,`clip`,void 0),q([E()],Js.prototype,`toggleOnClick`,void 0);var Ys=class e extends N{animator;stateName;trigger=`tap`;animation;get target(){return this.animator?.gameObject||this.animation?.gameObject}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Plays animation `+(this.stateName||``)+` on `+(this.target?this.target.name:``),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`),this.context.accessibility.hover(this,`Click to play animation `+(this.stateName||``)+` on `+(this.target?this.target.name:``))}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),this.target&&this.stateName&&(this.context.accessibility.focus(this),this.animator?.play(this.stateName,0,0,.1))}selfModel;stateAnimationModel;animationSequence=[];animationLoopAfterSequence=[];randomOffsetNormalized=0;createBehaviours(e,t,n){t.uuid===this.gameObject.uuid&&(this.selfModel=t)}static animationActions=[];static rootsWithExclusivePlayback=new Set;afterSerialize(){if(e.rootsWithExclusivePlayback.size>1){let t=`Multiple root objects targeted by more than one animation. To work around QuickLook bug FB13410767, animations will be set as "exclusive" and activating them will stop other animations being marked as exclusive.`;T()&&kn(t),console.warn(t,...e.rootsWithExclusivePlayback)}e.animationActions=[],e.rootsWithExclusivePlayback=new Set}afterCreateDocument(t,n){if(this.animationSequence===void 0&&this.animationLoopAfterSequence===void 0||!this.stateAnimationModel||!this.target)return;let r=n.document,i=n.extensions.find(e=>e instanceof Rs);if(!i)return;let a=i.getClipCount(this.target)>1;a&&(T()&&console.warn(`Setting exclusive playback for `+this.target.name+`@`+this.stateName+` because it has `+i.getClipCount(this.target)+` animations. This works around QuickLook bug FB13410767.`),e.rootsWithExclusivePlayback.add(this.target));let o=this.name?this.name:``;r.traverse(n=>{if(n.uuid===this.target?.uuid){let i=e.getActionForSequences(r,n,this.animationSequence,this.animationLoopAfterSequence,this.randomOffsetNormalized),s=new Es(this.trigger+`_`+o+`_toPlayAnimation_`+this.stateName+`_on_`+this.target?.name,this.trigger==`tap`?js.tapTrigger(this.selfModel):js.sceneStartTrigger(),i);a&&s.makeExclusive(!0),t.addBehavior(s)}})}static getActionForSequences(t,n,r,i,a){let o=(t,n)=>{let r=e.animationActions.find(e=>e.affectedObjects==t&&e.start==n.start&&e.duration==n.duration&&e.animationSpeed==n.speed);return r||(r=G.startAnimationAction(t,n),e.animationActions.push(r)),r},s=G.sequence();if(r&&r.length>0)for(let e of r)s.addAction(o(n,e));if(i&&i.length>0){let e=s.actions.length==0?s:G.sequence();for(let t of i)e.addAction(o(n,t));e.makeLooping(),s!==e&&s.addAction(e)}return a&&a>0&&s.actions.unshift(G.waitAction(a)),s}static getAndRegisterAnimationSequences(e,t,n){if(!t)return;let r=t.getComponent(kt),i=t.getComponent(xr);if(!r&&!i)return;if(r&&!n)throw Error(`PlayAnimationOnClick: No stateName specified for animator `+r.name+` on `+t.name);let a=[],o=[];if(i){let n=e.registerAnimation(t,i.clip);n&&(i.loop?o.push(n):a.push(n));let r=0;if(i.minMaxOffsetNormalized){let e=i.minMaxOffsetNormalized.x,t=i.minMaxOffsetNormalized.y;r=(i.clip?.duration||1)*(e+Math.random()*(t-e))}return{animationSequence:a,animationLoopAfterSequence:o,randomTimeOffset:r}}let s=r?.runtimeAnimatorController,c=s?.findState(n),l=[],u=[];if(s&&c){let t=[];t.push(c);let r=!1;for(;t.length<100;){if(!c||c===null||!c.transitions||c.transitions.length===0){c.motion?.isLooping&&(r=!0);break}let e=c.transitions.find(e=>e.conditions.length===0),n=e?s.getState(e.destinationState,0):null;if(n&&t.includes(n)){c=n,r=!0;break}else if(e){if(c=n,!c)break;t.push(c)}else{r=c.motion?.isLooping??!1;break}}if(r&&c){let e=t.indexOf(c);l=t.slice(0,e),u=t.slice(e),Hs&&console.log(`found loop from `+n,`states until loop`,l,`states looping`,u)}else l=t,u=[],Hs&&console.log(`found no loop from `+n,`states`,l);if(!u.length){let t=l[l.length-1],n=t.motion?.clip;if(n){let r;if(e.holdClipMap.has(n))r=e.holdClipMap.get(n);else{let i=t.name+`_hold`;r=n.clone(),r.duration=1,r.name=i;let a=n.duration;r.tracks=n.tracks.map(e=>{let t=e.clone();t.times=new Float32Array([0,a]);let n=e.values.length,r=e.getValueSize(),i=e.values.slice(n-r,n);return t.values=new Float32Array(2*r),t.values.set(i,0),t.values.set(i,r),t}),r.name=i,e.holdClipMap.set(n,r)}if(r){let e={name:r.name,motion:{clip:r,isLooping:!1,name:r.name},speed:1,transitions:[],behaviours:[],hash:t.hash+1};u.push(e)}}}}if(l.length===1&&(!l[0].motion?.clip||l[0].motion?.clip.tracks?.length===0)){a=[];let n=e.registerAnimation(t,null);n&&a.push(n);return}if(l=l.filter(e=>e.motion?.clip&&e.motion?.clip.tracks?.length>0),u=u.filter(e=>e.motion?.clip&&e.motion?.clip.tracks?.length>0),l.length===0&&u.length===0){console.warn(`No clips found for state `+n+` on `+r?.name+`, can't export animation data`);return}let d=(n,i)=>{if(!t)return;let a=e.registerAnimation(t,n.motion.clip??null);a?(a.speed=n.speed,i.push(a)):console.warn(`Couldn't register animation for state `+n.name+` on `+r?.name)};if(l.length>0){a=[];for(let e of l)d(e,a)}if(u.length>0){o=[];for(let e of u)d(e,o)}let f=0;if(r&&s&&r.minMaxOffsetNormalized){let e=r.minMaxOffsetNormalized.x,t=r.minMaxOffsetNormalized.y;f=((l.length?l[0]:u.length?u[0]:null)?.motion.clip?.duration||1)*(e+Math.random()*(t-e))}return{animationSequence:a,animationLoopAfterSequence:o,randomTimeOffset:f}}createAnimation(t,n,r){if(!this.target||!this.animator&&!this.animation)return;let i=e.getAndRegisterAnimationSequences(t,this.target,this.stateName);i&&(this.animationSequence=i.animationSequence,this.animationLoopAfterSequence=i.animationLoopAfterSequence,this.randomOffsetNormalized=i.randomTimeOffset,this.stateAnimationModel=n)}};q([E(kt)],Ys.prototype,`animator`,void 0),q([E()],Ys.prototype,`stateName`,void 0);var Xs=class extends N{getType(){}target;getDuration(){}};q([E(S)],Xs.prototype,`target`,void 0);var Zs=class extends N{target};q([E(Xs)],Zs.prototype,`target`,void 0);var Qs=class extends Xs{type=ec.Hide;duration=1;getType(){switch(this.type){case ec.Hide:return`hide`;case ec.Show:return`show`}}getDuration(){return this.duration}};q([E()],Qs.prototype,`type`,void 0),q([E()],Qs.prototype,`duration`,void 0);var $s=class extends Zs{},ec;(function(e){e[e.Show=0]=`Show`,e[e.Hide=1]=`Hide`})(ec||={});var tc;function nc(e){tc=e}function rc(){if(!tc)return null;let e=tc.find();return e?{handler:e,created:!1}:{handler:tc.create(),created:!0}}var ic=100,ac=200,oc=300,sc=class e{static _instance;static create(){return new e}static getOrCreate(){return this._instance||=this.create(),this._instance}get isSecureConnection(){return window.location.protocol===`https:`}get quicklookButton(){return this._quicklookButton}_quicklookButton;get arButton(){return this._arButton}_arButton;get vrButton(){return this._vrButton}_vrButton;get sendToQuestButton(){return this._sendToQuestButton}_sendToQuestButton;get qrButton(){return un.getOrCreate().createQRCode()}createQuicklookButton(){if(this._quicklookButton)return this._quicklookButton;let e=document.createElement(`button`);this._quicklookButton=e,e.dataset.needle=`quicklook-button`;let t=A.supportsQuickLookAR(),n=`View in AR`;A.isVisionOS()?n=`View in AR`:(t||A.isiOS())&&(n=`Open in Quicklook`),e.innerText=n,e.prepend(Ze(`view_in_ar`)),Ft.setElementPriority(e,ac);let r=!1,i=null;return e.addEventListener(`click`,()=>{let t=rc();t&&(i=t.handler,r=t.created),r&&i&&(i.objectToExport=Xt.Current.scene),i?(e.classList.add(`this-mode-is-requested`),i.exportAndOpen().then(()=>{e.classList.remove(`this-mode-is-requested`)}).catch(t=>{e.classList.remove(`this-mode-is-requested`),console.error(t)})):console.warn(`No USDZExporter component found in the scene`)}),this.hideElementDuringXRSession(e),e}createARButton(e){if(this._arButton)return this._arButton;let t=`immersive-ar`,n=document.createElement(`button`);return this._arButton=n,n.classList.add(`webxr-button`),n.dataset.needle=`webxr-ar-button`,n.innerText=`Enter AR`,n.prepend(Ze(`view_in_ar`)),n.title=`Click to start an AR session`,n.addEventListener(`click`,()=>j.start(t,e)),Ft.setElementPriority(n,oc),this.updateSessionSupported(n,t),this.listenToXRSessionState(n,t),this.hideElementDuringXRSession(n),this.isSecureConnection||(n.disabled=!0,n.title=`WebXR requires a secure connection (HTTPS)`),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>this.updateSessionSupported(n,t)),n}createVRButton(e){if(this._vrButton)return this._vrButton;let t=`immersive-vr`,n=document.createElement(`button`);return this._vrButton=n,n.classList.add(`webxr-button`),n.dataset.needle=`webxr-vr-button`,n.innerText=`Enter VR`,n.prepend(Ze(`panorama_photosphere`)),n.title=`Click to start a VR session`,n.addEventListener(`click`,()=>j.start(t,e)),Ft.setElementPriority(n,ic),this.updateSessionSupported(n,t),this.listenToXRSessionState(n,t),this.hideElementDuringXRSession(n),this.isSecureConnection||(n.disabled=!0,n.title=`WebXR requires a secure connection (HTTPS)`),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>this.updateSessionSupported(n,t)),n}createSendToQuestButton(){if(this._sendToQuestButton)return this._sendToQuestButton;let e=document.createElement(`button`);return this._sendToQuestButton=e,e.dataset.needle=`webxr-sendtoquest-button`,e.innerText=`Open on Quest`,e.prepend(Ze(`share_windows`)),e.title=`Click to send this page to the Oculus Browser on your Quest`,e.addEventListener(`click`,()=>{let e=`https://oculus.com/open_url/?url=`+encodeURIComponent(window.location.href);window.open(e)??vn(`This page doesn't allow popups. Please paste `+e+` into your browser.`)}),this.listenToXRSessionState(e),this.hideElementDuringXRSession(e),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>{navigator.xr?.isSessionSupported(`immersive-vr`)?e.style.display=`none`:e.style.display=``}),e}createQRCode(){return un.getOrCreate().createQRCode()}updateSessionSupported(e,t){if(!(t===`immersive-ar`&&A.isiOS()&&!A.isVisionOS())){if(!(`xr`in navigator)){e.style.display=`none`;return}j.isSessionSupported(t).then(n=>{e.style.display=n?``:`none`,T()&&!n&&console.log(`[WebXR] "`+t+`" is not supported on this device. Make sure your server runs using HTTPS and you have a device connected that supports `+t)})}}hideElementDuringXRSession(e){et(t=>{e[`previous-display`]=e.style.display,e.style.setProperty(`display`,`none`,`important`)}),qn(t=>{e[`previous-display`]!=null&&(e.style.display=e[`previous-display`])})}listenToXRSessionState(e,t){t&&(j.onSessionRequestStart(n=>{n.mode===t?e.classList.add(`this-mode-is-requested`):(e[`was-disabled`]=e.disabled,e.disabled=!0,e.classList.add(`other-mode-is-requested`))}),j.onSessionRequestEnd(t=>{e.classList.remove(`this-mode-is-requested`),e.classList.remove(`other-mode-is-requested`),e.disabled=e[`was-disabled`]}))}},J=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},cc=D(`debugspriterenderer`),lc=D(`wireframe`),uc=class e{static cache={};static getOrCreateGeometry(t){if(t.__cached_geometry)return t.__cached_geometry;if(t.guid&&e.cache[t.guid])return cc&&console.log(`Take cached geometry for sprite`,t.guid),e.cache[t.guid];let n=new ie;t.__cached_geometry=n;let r=new Float32Array(t.triangles.length*3),i=new Float32Array(t.triangles.length*2);for(let e=0;e=this.spriteSheet.sprites.length)return;let n=this.spriteSheet.sprites[t],r=n?.texture;if(r&&(pc(r),!n.__hasLoadedProgressive)){n.__hasLoadedProgressive=!0;let t=r;P.assignTextureLOD(r,0).then(r=>{r instanceof xe&&(n.texture=r,e?.map===t&&(e.map=r,e.needsUpdate=!0))})}}};J([E(gc)],_c.prototype,`spriteSheet`,void 0),J([E()],_c.prototype,`index`,void 0);var vc=class extends N{drawMode=dc.Simple;size={x:1,y:1};color;sharedMaterial;transparent=!0;cutoutThreshold=0;castShadows=!1;renderOrder=0;toneMapped=!0;set texture(e){if(!this._spriteSheet)return;let t=this._spriteSheet.spriteSheet?.sprites[this.spriteIndex];t&&(t.texture=e,this.updateSprite())}addSprite(e,t=!1){if(this._spriteSheet||=_c.create(),!this._spriteSheet.spriteSheet)return-1;this._spriteSheet.spriteSheet?.sprites.push(e);let n=this._spriteSheet.spriteSheet?.sprites.length-1;return t&&(this.spriteIndex=n),n}get sprite(){return this._spriteSheet}set sprite(e){if(e!==this._spriteSheet)if(typeof e==`number`){let t=Math.round(e);cc&&console.log(`[SpriteSheet] Set index to `+t+` (was `+this.spriteIndex+`)`,e),this.spriteIndex=t}else e instanceof mc?(this._spriteSheet||=_c.create(),this._spriteSheet.sprite!=e&&(this._spriteSheet.sprite=e),this.updateSprite()):e!=this._spriteSheet&&(this._spriteSheet=e,this.updateSprite())}set spriteIndex(e){this._spriteSheet&&(this._spriteSheet.index=e,this.updateSprite())}get spriteIndex(){return this._spriteSheet?.index??0}get spriteFrames(){return this._spriteSheet?.spriteSheet?.sprites.length??0}_spriteSheet;_currentSprite;awake(){this._currentSprite=void 0,this._spriteSheet?this._spriteSheet=this._spriteSheet.clone():this._spriteSheet=_c.create(),cc&&console.log(`Awake`,this.name,this,this.sprite)}start(){this._currentSprite?this.gameObject&&this.gameObject.add(this._currentSprite):this.updateSprite()}updateSprite(e=!1){if(!this.__didAwake&&!e)return!1;let t=this._spriteSheet;if(!t?.spriteSheet?.sprites)return console.warn(`SpriteRenderer has no data or spritesheet assigned...`),!1;let r=t.spriteSheet.sprites[this.spriteIndex];if(!r)return cc&&console.warn(`Sprite not found`,this.spriteIndex,t.spriteSheet.sprites),!1;if(this._currentSprite)this._currentSprite.geometry=uc.getOrCreateGeometry(r),this._currentSprite.material.map=r.texture;else{let e=new v({color:16777215,side:2});if(lc&&(e.wireframe=!0),this.color&&(e.color||=new n,e.color.copy(this.color),e.opacity=this.color.alpha),e.transparent=!0,e.toneMapped=this.toneMapped,e.depthWrite=!1,r.texture&&!e.wireframe){let t=r.texture;t[hc]!==void 0&&t[hc]!==this&&this.spriteFrames>1&&(t=r.texture=t.clone()),t[hc]=this,e.map=t}this.sharedMaterial=e,this._currentSprite=new x(uc.getOrCreateGeometry(r),e),this._currentSprite.renderOrder=Math.round(this.renderOrder),P.assignTextureLOD(e,0)}return this._currentSprite.parent!==this.gameObject&&(this.drawMode===dc.Tiled&&this._currentSprite.scale.set(this.size.x,this.size.y,1),this.gameObject&&this.gameObject.add(this._currentSprite)),this._currentSprite&&this._currentSprite.layers.set(this.layer),this.sharedMaterial&&(this.sharedMaterial.alphaTest=this.cutoutThreshold,this.sharedMaterial.transparent=this.transparent),this._currentSprite.castShadow=this.castShadows,t?.update(this.sharedMaterial),!0}};J([E()],vc.prototype,`drawMode`,void 0),J([E(fc)],vc.prototype,`size`,void 0),J([E(tn)],vc.prototype,`color`,void 0),J([E(Ne)],vc.prototype,`sharedMaterial`,void 0),J([E()],vc.prototype,`transparent`,void 0),J([E()],vc.prototype,`cutoutThreshold`,void 0),J([E()],vc.prototype,`castShadows`,void 0),J([E()],vc.prototype,`renderOrder`,void 0),J([E()],vc.prototype,`toneMapped`,void 0),J([E(_c)],vc.prototype,`sprite`,null);var yc=D(`debugwebxr`),bc=new b().makeRotationY(Math.PI),xc=class e extends N{static _eventListeners={};static onPlaced(e){let t=`placed`;return this._eventListeners[t]||(this._eventListeners[t]=[]),this._eventListeners[t].push(e),()=>{let n=this._eventListeners[t].indexOf(e);n>=0&&this._eventListeners[t].splice(n,1)}}static _hasPlaced=!1;static get hasPlaced(){return this._hasPlaced}get arScale(){return this._arScale}set arScale(e){this._arScale=Math.max(1e-6,e),this.onSetScale()}_arScale=1;invertForward=!1;customReticle;arTouchTransform=!0;autoPlace=!1;autoCenter=!1;useXRAnchor=!1;_isPlacing=!0;_startOffset=new b;_createdPlacementObject=null;_reparentedComponents=[];_placementScene=new ne;_reticle=[];_hits=[];_placementStartTime=-1;_rigPlacementMatrix;_anchor=null;userInput;onEnable(){this.customReticle?.preload()}supportsXR(e){return e===`immersive-ar`}onEnterXR(t){yc&&console.log(`ENTER WEBXR: SessionRoot start...`),this._anchor=null,e._hasPlaced=!1,this.gameObject.updateMatrixWorld(),this._startOffset.copy(this.gameObject.matrixWorld);let n=new S;this._createdPlacementObject=n,n.name=`AR Session Root`,this._placementScene.name=`AR Placement Scene`,this._placementScene.children.length=0;for(let e=this.context.scene.children.length-1;e>=0;e--){let t=this.context.scene.children[e];this._placementScene.add(t)}if(this.context.scene.add(n),this.autoCenter){let e=fn(this._placementScene.children),t=e.getCenter(new r),n=e.getSize(new r),i=new b;i.makeTranslation(t.x,t.y-n.y*.5,t.z),this._startOffset.multiply(i)}this._reparentedComponents.length=0,this._reparentedComponents.push({comp:this,originalObject:this.gameObject}),k.addComponent(n,this);for(let e of this._reticle)dn(e);this._reticle.length=0,this._isPlacing=!0,this.context.input.addEventListener(`pointerup`,this.onPlaceScene,{queue:ct.Early})}onLeaveXR(){this.context.input.removeEventListener(`pointerup`,this.onPlaceScene,{queue:ct.Early}),this.onRevertSceneChanges(),this._anchor=null,e._hasPlaced=!1,this._rigPlacementMatrix=void 0}onUpdateXR(e){if(e.xr.isTrackingImages){for(let e of this._reticle)e.visible=!1;return}if(this._isPlacing){let t=e.xr.rig?.gameObject;t&&t.parent!==this.context.scene&&this.context.scene.add(t);let n=!1;if(e.xr.isPassThrough&&e.xr.controllers.length>0&&!this.autoPlace)for(let t of e.xr.controllers){let r=t.getHitTest();r&&(n=!0,this.updateReticleAndHits(e.xr,t.index,r,e.xr.rigScale))}if(!n){let t=e.xr.getHitTest();t&&this.updateReticleAndHits(e.xr,0,t,e.xr.rigScale)}}else{if(this._anchor&&e.xr.referenceSpace){let t=e.xr.frame.getPose(this._anchor.anchorSpace,e.xr.referenceSpace);if(t&&this.context.time.frame%20==0){let n=e.xr.convertSpace(t.transform),r=this._reticle[0];r&&(r.position.copy(n.position),r.quaternion.copy(n.quaternion),this.onApplyPose(r))}}if(this.arTouchTransform?(this.userInput||=new Sc(this.context),this.userInput?.enable()):this.userInput?.disable(),this.arTouchTransform&&this.userInput?.hasChanged){if(e.xr.rig){let t=e.xr.rig.gameObject;this.userInput.applyMatrixTo(t.matrix,!0),t.matrix.decompose(t.position,t.quaternion,t.scale),this.userInput.factor=t.scale.x}this.userInput.reset()}}}updateReticleAndHits(e,t,n,r){this._hits[t]=n.hit;let i=this._reticle[t];if(!i){if(this.customReticle)if(this.customReticle.asset)i=Et(this.customReticle.asset);else{this.customReticle.loadAssetAsync();return}else i=new x(new ce(.07,.09,32).rotateX(-Math.PI/2),new v({side:2,depthTest:!1,depthWrite:!1,transparent:!0,opacity:1,color:15658734})),i.name=`AR Placement Reticle`;if(yc){let e=new _e(1);e.position.y+=.01,i.add(e)}this._reticle[t]=i,i.matrixAutoUpdate=!1,i.visible=!1}if(i.lastPos=i.lastPos||n.position.clone(),i.lastQuat=i.lastQuat||n.quaternion.clone(),i.position.copy(i.lastPos.lerp(n.position,this.context.time.deltaTime/.1)),i.lastPos.copy(i.position),i.quaternion.copy(i.lastQuat.slerp(n.quaternion,this.context.time.deltaTime/.05)),i.lastQuat.copy(i.quaternion),i.scale.set(r,r,r),this.customReticle&&this.applyViewBasedTransform(i),i.updateMatrix(),i.visible=!0,i.parent!==this.context.scene&&this.context.scene.add(i),this._placementStartTime<0&&(this._placementStartTime=this.context.time.realtimeSinceStartup),this.autoPlace)if(this.upVec.set(0,1,0).applyQuaternion(i.quaternion),this.upVec.dot(wn(0,1,0))>.9){let e=i[`autoplace:timer`]||0;e>=1?(i.visible=!1,this.onPlaceScene(null)):(e+=this.context.time.deltaTime,i[`autoplace:timer`]=e)}else i[`autoplace:timer`]=0}onPlaceScene=t=>{if(this._isPlacing==0||t?.used)return;let n=this._reticle[0];if(!n){console.warn(`No reticle to place...`);return}if(!n.visible&&!this.autoPlace){console.warn(`Reticle is not visible (can not place)`);return}if(j.active?.isTrackingImages){console.warn(`Scene Placement is disabled while images are being tracked`);return}let r=this._hits[0];if(t&&t.origin instanceof sn){let e=this._reticle[t.origin.index];e&&(n=e,r=this._hits[t.origin.index])}if(t&&(t.stopImmediatePropagation(),t.stopPropagation(),t.use()),this._isPlacing=!1,this.context.input.removeEventListener(`pointerup`,this.onPlaceScene),this.onRevertSceneChanges(),n.position.copy(n.lastPos),n.quaternion.copy(n.lastQuat),this.onApplyPose(n),e._hasPlaced=!0,this.useXRAnchor&&this.onCreateAnchor(j.active,r),this.context.xr)for(let e of this.context.xr.controllers)e.cancelHitTestSource()};onSetScale(){if(!e._hasPlaced)return;let t=j.active?.rig?.gameObject;if(t){let e=j.active?.rigScale||1,n=1/this._arScale*e,r=new b().makeScale(n,n,n).invert();t.matrix.premultiply(r),t.matrix.decompose(t.position,t.quaternion,t.scale)}}onRevertSceneChanges(){for(let e of this._reticle)e&&(e.visible=!1,e?.removeFromParent());this._reticle.length=0;for(let e=this._placementScene.children.length-1;e>=0;e--){let t=this._placementScene.children[e];this.context.scene.add(t)}this._createdPlacementObject?.removeFromParent();for(let e of this._reparentedComponents)k.addComponent(e.originalObject,e.comp)}async onCreateAnchor(e,t){if(t.createAnchor===void 0){console.warn(`Hit does not support creating an anchor`,t),T()&&kn(`Hit does not support creating an anchor`);return}else{let n=await t.createAnchor(e.viewerPose.transform);e.running&&n&&(this._anchor=n)}}upVec=new r(0,1,0);lookPoint=new r;worldUpVec=new r(0,1,0);applyViewBasedTransform(e){let t=this.context.mainCamera,n=e,r=t.worldPosition,i=n.worldPosition;this.upVec.set(0,1,0).applyQuaternion(e.quaternion);let a=t.worldPosition;a&&e.position.clone().sub(a).angleTo(this.upVec)30&&o<150||o<-30&&o>-150?(this.lookPoint.copy(e.position).add(this.upVec),this.lookPoint.y=e.position.y,e.lookAt(this.lookPoint)):(r.y=i.y,e.lookAt(r))}onApplyPose(e){let t=j.active?.rig?.gameObject;if(!t){console.warn(`No rig object to place`);return}let n=t.parent||this.context.scene;this._rigPlacementMatrix?this._rigPlacementMatrix?.decompose(t.position,t.quaternion,t.scale):this._rigPlacementMatrix=t.matrix.clone(),this.applyViewBasedTransform(e),e.updateMatrix(),this.context.scene.add(e),e.attach(t),e.removeFromParent(),t.scale.set(this.arScale,this.arScale,this.arScale),t.position.multiplyScalar(this.arScale),t.updateMatrix(),this.invertForward&&t.matrix.premultiply(bc),t.matrix.premultiply(this._startOffset),t.matrix.decompose(t.position,t.quaternion,t.scale),n.add(t)}},Sc=class e{static up=new r(0,1,0);static zero=new r(0,0,0);static one=new r(1,1,1);oneFingerDrag=!0;twoFingerRotate=!0;twoFingerScale=!0;factor=1;context;offset;plane;_scale=1;_hasChanged=!1;get scale(){return this._scale}constructor(t){this.context=t,this.offset=new b,this.plane=new fe,this.plane.setFromNormalAndCoplanarPoint(e.up,e.zero)}_enabled=!1;reset(){this._scale=1,this.offset.identity(),this._hasChanged=!0}get hasChanged(){return this._hasChanged}applyMatrixTo(e,t){this._hasChanged=!1,t?(this.offset.invert(),e.premultiply(this.offset)):e.multiply(this.offset)}currentlyUsedPointerIds=new Set;currentlyUnusedPointerIds=new Set;get isActive(){return this.currentlyUsedPointerIds.size<=0&&this.currentlyUnusedPointerIds.size>0}enable(){this._enabled||(this._enabled=!0,this.context.input.addEventListener(`pointerdown`,this.onPointerDownEarly,{queue:ct.Early}),this.context.input.addEventListener(`pointerdown`,this.onPointerDownLate,{queue:ct.Late}),this.context.input.addEventListener(`pointerup`,this.onPointerUpEarly,{queue:ct.Early}),window.addEventListener(`touchstart`,this.touchStart,{passive:!1}),window.addEventListener(`touchmove`,this.touchMove,{passive:!1}),window.addEventListener(`touchend`,this.touchEnd,{passive:!1}))}disable(){this._enabled&&(this._enabled=!1,this.context.input.removeEventListener(`pointerdown`,this.onPointerDownEarly,{queue:ct.Early}),this.context.input.removeEventListener(`pointerdown`,this.onPointerDownLate,{queue:ct.Late}),this.context.input.removeEventListener(`pointerup`,this.onPointerUpEarly,{queue:ct.Early}),window.removeEventListener(`touchstart`,this.touchStart),window.removeEventListener(`touchmove`,this.touchMove),window.removeEventListener(`touchend`,this.touchEnd))}onPointerDownEarly=e=>{this.isActive&&e.stopPropagation()};onPointerDownLate=e=>{e.used?this.currentlyUsedPointerIds.add(e.pointerId):this.currentlyUsedPointerIds.size<=0&&this.currentlyUnusedPointerIds.add(e.pointerId)};onPointerUpEarly=e=>{this.currentlyUsedPointerIds.delete(e.pointerId),this.currentlyUnusedPointerIds.delete(e.pointerId)};prev=new Map;_didMultitouch=!1;touchStart=e=>{if(!e.defaultPrevented)for(let t=0;t{e.touches.length<=0&&(this._didMultitouch=!1);for(let t=0;t{if(!e.defaultPrevented&&this.isActive){if(e.touches.length===1){if(this._didMultitouch)return;let t=e.touches[0],n=this.prev.get(t.identifier);if(!n||n.ignore)return;let r=this.getPositionOnPlane(t.clientX,t.clientY),i=r.x-n.x,a=r.z-n.z;if(i===0&&a===0)return;this.oneFingerDrag&&this.addMovement(i,a),n.x=r.x,n.z=r.z,n.screenx=t.clientX,n.screeny=t.clientY;return}else if(e.touches.length===2){this._didMultitouch=!0;let t=e.touches[0],n=e.touches[1],r=this.prev.get(t.identifier),i=this.prev.get(n.identifier);if(!r||!i)return;if(this.twoFingerRotate){let e=Math.atan2(t.clientY-n.clientY,t.clientX-n.clientX)-Math.atan2(r.screeny-i.screeny,r.screenx-i.screenx);Math.abs(e)>.001&&this.addRotation(e)}if(this.twoFingerScale){let e=t.clientX-n.clientX,a=t.clientY-n.clientY,o=Math.sqrt(e*e+a*a),s=r.screenx-i.screenx,c=r.screeny-i.screeny,l=o-Math.sqrt(s*s+c*c);Math.abs(l)>2&&this.addScale(l)}r.screenx=t.clientX,r.screeny=t.clientY,i.screenx=n.clientX,i.screeny=n.clientY}}};_raycaster=new _;_intersection=new r;_screenPos=new r;getPositionOnPlane(e,t){let n=this.context.mainCamera;return this._screenPos.x=e/window.innerWidth*2-1,this._screenPos.y=-(t/window.innerHeight)*2+1,this._screenPos.z=1,this._screenPos.unproject(n),this._raycaster.set(n.position,this._screenPos.sub(n.position)),this._raycaster.ray.intersectPlane(this.plane,this._intersection),this._intersection}addMovement(e,t){e/=this._scale,t/=this._scale,e*=this.factor,t*=this.factor,this.offset.elements[12]+=e,this.offset.elements[14]+=t,(e!==0||t!==0)&&(this._hasChanged=!0)}_tempMatrix=new b;addScale(e){e/=window.innerWidth,e*=-1,this._scale*=1+e,this._tempMatrix.makeScale(1-e,1-e,1-e),this.offset.premultiply(this._tempMatrix),e!==0&&(this._hasChanged=!0)}addRotation(e){e*=-1,this._tempMatrix.makeRotationY(e),this.offset.premultiply(this._tempMatrix),e!==0&&(this._hasChanged=!0)}},Cc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wc=D(`debugplayersync`),Tc=class e extends N{static async setupFrom(t,n){let r=w.getOrCreateFromUrl(t);if(!r.asset){let e=await r.loadAssetAsync();e&&k.getOrAddComponent(e,Dc)}let i=new e;i._internalInit(n),i.asset=r;let a=new S;return a.guid=t,k.addComponent(a,i),i}autoSync=!0;asset;onPlayerSpawned;_localInstance;awake(){this.watchTabVisible(),this.onPlayerSpawned||=new Ut}onEnable(){this.context.connection.beginListen(O.RoomStateSent,this.onJoinedRoom),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.LeftRoom,this.destroyInstance),this.context.connection.isInRoom&&this.onJoinedRoom()}onDisable(){this.context.connection.stopListen(O.RoomStateSent,this.onJoinedRoom),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.LeftRoom,this.destroyInstance)}onJoinedRoom=()=>{wc&&console.log(`PlayerSync.joinedRoom. autoSync is set to `+this.autoSync),this.autoSync&&this.getInstance()};async getInstance(){if(this._localInstance)return this._localInstance;if(wc&&console.log(`PlayerSync.createInstance`,this.asset?.url),!this.asset?.asset&&!this.asset?.url)return console.error(`PlayerSync: can not create an instance because "asset" is not set and or has no URL!`),null;this.gameObject.guid||console.warn(`PlayerSync: gameObject has no guid! This might cause issues with syncing the player state.`),this._localInstance=this.asset?.instantiateSynced({parent:this.gameObject,deleteOnDisconnect:!0},!0);let e=await this._localInstance;if(e){let t=k.getComponentsInChildren(e,Dc);if(wc&&console.log(`PlayerSync.createInstance: found ${t?.length} PlayerState components. Owner: ${this.context.connection.connectionId}`),t?.length){for(let e of t)e.owner=this.context.connection.connectionId;this.onPlayerSpawned?.invoke(e)}else this._localInstance=void 0,console.error(`Failed finding PlayerState on `+this.asset?.url+`: please make sure the asset has a PlayerState component!`),k.destroySynced(e)}else this._localInstance=void 0,console.warn(`PlayerSync: failed instantiating asset!`);return this._localInstance}destroyInstance=()=>{this._localInstance?.then(e=>{wc&&console.log(`PlayerSync.destroyInstance`,e),rn(e,this.context.connection,!0,{saveInRoom:!1})}),this._localInstance=void 0};watchTabVisible(){window.addEventListener(`visibilitychange`,e=>{if(document.visibilityState===`visible`)for(let e=Dc.all.length-1;e>=0;e--){let t=Dc.all[e];(!t.owner||!this.context.connection.userIsInRoom(t.owner))&&t.doDestroy()}})}};Cc([E()],Tc.prototype,`autoSync`,void 0),Cc([E(w)],Tc.prototype,`asset`,void 0),Cc([E(Ut)],Tc.prototype,`onPlayerSpawned`,void 0);var Ec;(function(e){e.OwnerChanged=`ownerChanged`})(Ec||={});var Dc=class e extends N{static _all=[];static get all(){return e._all}static _local=[];static get local(){return e._local}static getFor(t){if(t instanceof S)return k.getComponentInParent(t,e);if(t instanceof N)return k.getComponentInParent(t.gameObject,e)}static isLocalPlayer(t){return e.getFor(t)?.isLocalPlayer??!1}static _callbacks={};static addEventListener(e,t){return this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),t}static removeEventListener(e,t){if(!this._callbacks[e])return;let n=this._callbacks[e].indexOf(t);n>=0&&this._callbacks[e].splice(n,1)}static dispatchEvent(e,t){if(this._callbacks[e])for(let n of this._callbacks[e])n(t)}onOwnerChangeEvent=new Ut;onFirstOwnerChangeEvent=new Ut;hasOwner=!1;owner;dontDestroy=!1;get isLocalPlayer(){return this.owner===this.context.connection.connectionId}onOwnerChange(t,n){wc&&console.log(`PlayerSync.onOwnerChange: ${n} → ${t} (me: ${this.context.connection.connectionId})`);let r=e._local.indexOf(this);r>=0&&e._local.splice(r,1);let i={playerState:this,oldValue:n,newValue:t};if(this.hasOwner||(this.hasOwner=!0,this.onFirstOwnerChangeEvent?.invoke(i)),this.onOwnerChangeEvent?.invoke(i),this.owner===this.context.connection.connectionId){e._local.push(this);let t=new CustomEvent(`local-owner-changed`,{detail:i});this.dispatchEvent(t)}let a=new CustomEvent(`owner-changed`,{detail:i});this.dispatchEvent(a),e.dispatchEvent(Ec.OwnerChanged,a)}awake(){e.all.push(this),wc&&console.log(`Registered new PlayerState`,this.guid,e.all.length-1,e.all),this.context.connection.beginListen(O.UserLeftRoom,this.onUserLeftRoom)}async start(){wc&&console.log(`PLAYERSTATE.START, owner: `+this.owner,this.context.connection.usersInRoom([])),this.owner?(this.context.connection.isInRoom||await Sn(300),this.context.connection.userIsInRoom(this.owner)==0&&(wc&&console.log(`PlayerSync.start → doDestroy \"${this.name}\" because user \"${this.owner}\" is not in room anymore...`,`Currently in room:`,...this.context.connection.usersInRoom()),this.doDestroy())):this.owner||(wc&&console.warn(`PlayerState.start → owner is undefined!`,this.name),setTimeout(()=>{!this.destroyed&&!this.owner?this.dontDestroy?wc&&console.warn(`PlayerState.start → owner is still undefined but dontDestroy is set to true`,this.name):(wc&&console.warn(`PlayerState.start → owner is still undefined: destroying \"${this.name}\" instance now`),this.doDestroy()):wc&&console.log(`PlayerState.start → owner is assigned`,this.owner)},2e3))}doDestroy(){wc&&console.log(`PlayerSync.doDestroy → syncDestroy`,this.name),rn(this.gameObject,this.context.connection,!0,{saveInRoom:!1})}onDestroy(){if(wc&&console.warn(`PlayerState.onDestroy`,this.owner),this.context.connection.stopListen(O.UserLeftRoom,this.onUserLeftRoom),e.all.splice(e.all.indexOf(this),1),this.isLocalPlayer){let t=e._local.indexOf(this);t>=0&&e._local.splice(t,1)}}onUserLeftRoom=e=>{if(e.userId===this.owner){wc&&console.log(`PLAYERSYNC LEFT`,this.owner),this.doDestroy();return}}};Cc([Pr(Dc.prototype.onOwnerChange)],Dc.prototype,`owner`,void 0);var Oc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},kc=class extends N{position=`bottom`;showNeedleLogo=!1;showSpatialMenu;createFullscreenButton;createMuteButton;createQRCodeButton;onEnable(){this.applyOptions()}applyOptions(){this.context.menu.setPosition(this.position),this.context.menu.showNeedleLogo(this.showNeedleLogo),this.createFullscreenButton===!0&&this.context.menu.showFullscreenOption(!0),this.createMuteButton===!0&&this.context.menu.showAudioPlaybackOption(!0),this.showSpatialMenu===!0&&this.context.menu.showSpatialMenu(this.showSpatialMenu),this.createQRCodeButton===!0&&(A.isMobileDevice()||this.context.menu.showQRCodeButton(!0))}};Oc([E()],kc.prototype,`position`,void 0),Oc([E()],kc.prototype,`showNeedleLogo`,void 0),Oc([E()],kc.prototype,`showSpatialMenu`,void 0),Oc([E()],kc.prototype,`createFullscreenButton`,void 0),Oc([E()],kc.prototype,`createMuteButton`,void 0),Oc([E()],kc.prototype,`createQRCodeButton`,void 0);var Ac=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jc=D(`debugwebxr`),Mc=new Ue().setFromAxisAngle(new r(0,1,0),Math.PI),Nc=class extends N{head;leftHand;rightHand;_leftHandMeshes;_rightHandMeshes;_syncTransforms;async onEnterXR(e){if(!this.activeAndEnabled)return;jc&&console.warn(`AVATAR ENTER XR`,this.guid,this.sourceId,this,this.activeAndEnabled),this._syncTransforms&&(this._syncTransforms.length=0),await this.prepareAvatar();let t=Dc.getFor(this);if(t?.owner){let e=this.gameObject.addComponent(zr);e.avatar=this.gameObject,e.connectionId=t.owner,this.context.players.setPlayerView(t.owner,this.head?.asset,In.Headset)}else this.context.connection.isConnected?console.error(`No player state found for avatar`,this):t&&!this.context.connection.isConnected&&(t.dontDestroy=!0)}onLeaveXR(e){let t=this.gameObject.getComponent(zr);t&&t.destroy()}onUpdateXR(e){if(!this.activeAndEnabled)return;let t=Dc.isLocalPlayer(this);if(!t)return;let n=e.xr;if(n.rig&&n.rig.gameObject!==this.gameObject.parent&&(this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),this.gameObject.scale.set(1,1,1),n.rig.gameObject.add(this.gameObject)),this._syncTransforms&&t)for(let e of this._syncTransforms)e.fastMode=!0,e.isOwned()||e.requestOwnership();if(this.head&&this.context.mainCamera){let e=this.head.asset;if(e.position.copy(this.context.mainCamera.position),e.position.x*=-1,e.position.z*=-1,e.quaternion.copy(this.context.mainCamera.quaternion),e.quaternion.x*=-1,this.context.time.frameCount%10==0&&this.head.asset){let e=k.getComponentsInChildren(this.head.asset,fi);for(let t of e)t.enabled=!1,t.gameObject.visible=!1}}let r=e.xr.leftController,i=this.leftHand?.asset;r&&i?(i.position.copy(r.gripPosition),i.quaternion.copy(r.gripQuaternion),i.quaternion.multiply(Mc),i.visible=r.isTracking,this.updateHandVisibility(r,i,this._leftHandMeshes)):i&&i.visible&&(i.visible=!1);let a=e.xr.rightController,o=this.rightHand?.asset;a&&o?(o.position.copy(a.gripPosition),o.quaternion.copy(a.gripQuaternion),o.quaternion.multiply(Mc),o.visible=a.isTracking,this.updateHandVisibility(a,o,this._rightHandMeshes)):o&&o.visible&&(o.visible=!1)}onBeforeRender(){this.context.xr&&this.context.time.frame%10==0&&this.updateRemoteAvatarVisibility()}updateHandVisibility(e,t,n){if(n){let r=e.model&&e.model.visible&&e.model!==t;n.forEach(e=>{wi(e,!r)})}}updateRemoteAvatarVisibility(){if(this.context.connection.isConnected){let e=Dc.getFor(this);if(e&&e.isLocalPlayer==0){let t=j.getXRSync(this.context);if(t&&t.hasState(e.owner)){this.tryFindAvatarObjectsIfMissing();let n=this.leftHand?.asset;n&&(n.visible=t?.isTracking(e.owner,`left`)??!1);let r=this.rightHand?.asset;r&&(r.visible=t?.isTracking(e.owner,`right`)??!1)}if(this.head?.asset){let e=k.getComponentsInChildren(this.head.asset,fi);for(let t of e)t.enabled=!1,t.gameObject.visible=!0}}}}tryFindAvatarObjectsIfMissing(){if(!this.head||!this.leftHand||!this.rightHand){let e={head:this.head,leftHand:this.leftHand,rightHand:this.rightHand};_r.tryFindAvatarObjects(this.gameObject,this.sourceId||``,e),e.head&&(this.head=e.head),e.leftHand&&(this.leftHand=e.leftHand),e.rightHand&&(this.rightHand=e.rightHand)}}async prepareAvatar(){if(this.tryFindAvatarObjectsIfMissing(),this.head)this.head instanceof S&&(this.head=new w(``,this.sourceId,this.head));else{let e=new S;e.name=`Head`;let t=St.createPrimitive(Tt.Cube);e.add(t),this.gameObject.add(e),this.head=new w(``,this.sourceId,e),jc&&console.log(`Create head`,e)}if(this.rightHand)this.rightHand instanceof S&&(this.rightHand=new w(``,this.sourceId,this.rightHand));else{let e=new S;e.name=`Right Hand`,this.gameObject.add(e),this.rightHand=new w(``,this.sourceId,e),jc&&console.log(`Create right hand`,e)}if(this.leftHand)this.leftHand instanceof S&&(this.leftHand=new w(``,this.sourceId,this.leftHand));else{let e=new S;e.name=`Left Hand`,this.gameObject.add(e),this.leftHand=new w(``,this.sourceId,e),jc&&console.log(`Create left hand`,e)}await this.loadAvatarObjects(this.head,this.leftHand,this.rightHand),this._leftHandMeshes=[],this.leftHand.asset?.traverse(e=>{e?.isMesh&&this._leftHandMeshes.push(e)}),this._rightHandMeshes=[],this.rightHand.asset?.traverse(e=>{e?.isMesh&&this._rightHandMeshes.push(e)}),Dc.isLocalPlayer(this.gameObject)&&(this._syncTransforms=k.getComponentsInChildren(this.gameObject,Ot))}async loadAvatarObjects(e,t,n){let r=e.loadAssetAsync(),i=t.loadAssetAsync(),a=n.loadAssetAsync(),o=[];r&&o.push(r),i&&o.push(i),a&&o.push(a);let s=await Fn(o);jc&&console.log(`Avatar loaded results:`,s)}};Ac([E(w)],Nc.prototype,`head`,void 0),Ac([E(w)],Nc.prototype,`leftHand`,void 0),Ac([E(w)],Nc.prototype,`rightHand`,void 0);var Pc=D(`debugdecoders`),Fc=null;function Ic(){if(!Fc){let e=pr(null);Fc={dracoLoader:e.dracoLoader,ktx2Loader:e.ktx2Loader,meshoptDecoder:e.meshoptDecoder}}return Fc}function Lc(e){e!==void 0&&typeof e==`string`&&hr(e)}function Rc(e){if(e!==void 0&&typeof e==`string`&&e!==`js`){let t=Ic();Pc&&console.log(`Setting draco decoder type to`,e),t.dracoLoader.setDecoderConfig({type:e})}}function zc(e){e!==void 0&&typeof e==`string`&&dr(e)}function Bc(e,t){let n=Ic();return t.renderer?n.ktx2Loader.detectSupport(t.renderer):console.warn(`No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail`),fr(e),e.dracoLoader||e.setDRACOLoader(n.dracoLoader),e.ktx2Loader||e.setKTX2Loader(n.ktx2Loader),e.meshoptDecoder||e.setMeshoptDecoder(n.meshoptDecoder),ur(e,{progressive:!0}),e}var Vc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Hc=D(`debugwebxr`),Uc=[],Wc=class extends N{createControllerModel=!0;createHandModel=!0;customLeftHand;customRightHand;static factory=new or;supportsXR(e){return e===`immersive-vr`||e===`immersive-ar`}_models=[];async onXRControllerAdded(e){if(!(e.xr.isVR||e.xr.isPassThrough))return;console.debug(`XR Controller Added`,e.controller.side,e.controller.index);let{controller:t}=e;if(this.createControllerModel||this.createHandModel){if(t.hand){if(this.createHandModel){let e=await this.loadHandModel(this,t);if(!e||!t.connected||!t.isHand){e?.handObject&&Bt(e.handObject,!1),e?.handObject?.destroy();return}this._models.push({controller:t,model:e.handObject,handmesh:e.handmesh}),this._models.sort((e,t)=>e.controller.index-t.controller.index),this.scene.add(e.handObject),t.model=e.handObject}}else if(this.createControllerModel){let e=await t.getModelUrl();if(e){let n=await this.loadModel(t,e);if(!n||!t.connected||t.isHand)return;this._models.push({controller:t,model:n}),this._models.sort((e,t)=>e.controller.index-t.controller.index),this.scene.add(n),n.traverse(e=>{e.layers.set(2),e.matrixAutoUpdate=!1,e.updateMatrix()}),t.model=n}else t.targetRayMode!==`transient-pointer`&&console.warn(`XRControllerModel: no model found for `+t.side)}}}onXRControllerRemoved(e){console.debug(`XR Controller Removed`,e.controller.side,e.controller.index);let t=this._models.findIndex(t=>t.controller===e.controller),n=this._models[t];n&&(this._models.splice(t,1),n.model&&=(Bt(n.model,!1),n.model.destroy(),void 0))}onBeforeXR(e,t){this.createHandModel&&(this.customLeftHand||this.customRightHand)&&(t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.includes(`hand-tracking`)||t.optionalFeatures.push(`hand-tracking`))}onLeaveXR(e){for(let e of this._models)e&&(e.model&&=(Bt(e.model,!1),e.model.destroy(),void 0),e.controller.model===e.model&&(e.controller.model=null));this._models.length=0}onBeforeRender(){if(j.active&&(Hc&&(Uc[0]=Date.now()),this.updateRendering(j.active),Hc)){let e=Date.now()-Uc[0];Uc.push(e),Uc.length>=30&&(Uc[0]=0,Uc.reduce((e,t)=>e+t,0)/Uc.length,Uc.length=0)}}updateRendering(e){for(let t=0;t{this.makeOccluder(e)}),n}async loadHandModel(e,t){let n=this.context,r=n.renderer.xr.getHand(t.index);r||(Hc?Ln.DrawLabel(t.rayWorldPosition,`No hand found for index `+t.index,.05,5):console.warn(`No hand found for index `+t.index));let i=new Yn;Bc(i,n),await Ua(i,n,this.sourceId??``,this.sourceId??``);let a=Va(i),o=``,s=t.side===`left`?this.customLeftHand:this.customRightHand;s?(o=s.url.split(`.`).slice(0,-1).join(`.`),i.setPath(``)):(o=t.inputSource.handedness===`left`?`left`:`right`,i.setPath(`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/`));let c=new S;Bt(c);let l=new er(c,r,i.path,o,i,n=>{let r=a?.gltf;r?.scene.children?.length===0&&(r.scene.children[0]=n),a?.gltf&&ot().createBuiltinComponents(e.context,e.sourceId||o,a.gltf,null,a),n.traverse(e=>{e.layers.set(2),j.active?.isPassThrough&&!s&&this.makeOccluder(e),e instanceof x&&P.assignMeshLOD(e,0)}),t.connected||(Hc&&Ln.DrawLabel(t.rayWorldPosition,`Hand is loaded but not connected anymore`,.05,5),n.removeFromParent())});if(Hc&&c.add(new _e(.5)),t.inputSource.hand){Hc&&console.log(t.inputSource.hand);for(let e of t.inputSource.hand.values())if(r.joints[e.jointName]===void 0){let t=new ve;t.matrixAutoUpdate=!1,t.visible=!0,r.joints[e.jointName]=t,r.add(t)}}else Hc&&Ln.DrawLabel(t.rayWorldPosition,`No inputSource.hand found for index `+t.index,.05,5);return{handObject:c,handmesh:l}}makeOccluder(e){if(e instanceof x){let t=e.material;t instanceof Ne&&(t=e.material=t.clone(),t.depthWrite=!0,t.depthTest=!0,t.colorWrite=!1,e.receiveShadow=!1,e.renderOrder=-100)}}};Vc([E()],Wc.prototype,`createControllerModel`,void 0),Vc([E()],Wc.prototype,`createHandModel`,void 0),Vc([E(w)],Wc.prototype,`customLeftHand`,void 0),Vc([E(w)],Wc.prototype,`customRightHand`,void 0);var Gc=class extends N{},Kc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},qc=D(`debugwebxr`),Jc=class extends N{movementSpeed=1.5;rotationStep=30;useTeleport=!0;usePinchToTeleport=!0;useTeleportTarget=!1;useTeleportFade=!1;showRays=!0;showHits=!0;isXRMovementHandler=!0;xrSessionMode=`immersive-vr`;_didApplyRotation=!1;_didTeleport=!1;onUpdateXR(e){let t=e.xr.rig;if(!t?.gameObject||e.xr.isPassThrough)return;let n=e.xr.leftController,r=e.xr.rightController;n&&this.onHandleMovement(n,t.gameObject),r&&(this.onHandleRotation(r,t.gameObject),this.useTeleport&&this.onHandleTeleport(r,t.gameObject))}onLeaveXR(e){for(let e of this._lines)e.removeFromParent();for(let e of this._hitDiscs)e?.removeFromParent()}onBeforeRender(){this.context.xr?.running&&(this.showRays&&this.renderRays(this.context.xr),this.showHits&&this.renderHits(this.context.xr))}onHandleMovement(e,t){let n=e.getStick(`xr-standard-thumbstick`);if(n.x!=0||n.y!=0){let r=wn(n.x,0,n.y);r.multiplyScalar(this.context.time.deltaTimeUnscaled*this.movementSpeed);let i=$t(t);r.multiplyScalar(i.x),r.applyQuaternion(e.xr.poseOrientation),r.y=0,r.applyQuaternion(t.worldQuaternion),T()&&Number.isNaN(r.x)&&console.error(`Stick movement resulted in NaN`,{stick:n,vec:r}),t.position.add(r),t.updateWorldMatrix(!1,!1);for(let e of t.children)e.updateWorldMatrix(!1,!1)}}onHandleRotation(e,t){if(e._isMxInk)return;let n=e.getStick(`xr-standard-thumbstick`).x;if(this._didApplyRotation)Math.abs(n)<.3&&(this._didApplyRotation=!1);else if(Math.abs(n)>.5){this._didApplyRotation=!0;let e=n>0?1:-1,r=Yt(this.context.mainCamera).clone();t.rotateY(e*Rt.toRadians(this.rotationStep));let i=Yt(this.context.mainCamera).clone().sub(r);i.y=0,t.position.sub(i)}}_teleportBuffer=[];onHandleTeleport(e,t){let n=0;if(e.hand&&this.usePinchToTeleport&&e.isTeleportGesture){let t=e.getPointerId(`primary`);if(t!=null&&this.context.input.getIsPointerIdInUse(t))return;let r=e.getGesture(`pinch`);r&&(n=r.value)}else n=e.getStick(`xr-standard-thumbstick`)?.y;if(this._didTeleport)(n>=0&&n<.4||n<0&&n>-.4)&&(this._didTeleport=!1);else if(n>.8){this._didTeleport=!0;let n=this.context.physics.raycastFromRay(e.ray)[0];if(n&&n.object instanceof Xn){let e=n.normal?.dot(wn(0,1,0));if(e!==void 0&&e<.4)return}let i=n?.point;if(!i&&!this.useTeleportTarget){this._plane||=new fe(new r(0,1,0),0);let n=t.worldPosition;this._plane.setFromNormalAndCoplanarPoint(new r(0,1,0),n);let a=e.ray;i=n.clone(),this._plane.intersectLine(new ee(a.origin,wn(a.direction).multiplyScalar(1e4).add(a.origin)),i),i.distanceTo(n)>t.scale.x*10&&(i=null)}if(i){if(this.useTeleportTarget&&!k.getComponentInParent(n.object,Gc))return;let r=i.clone();if(qc&&Ln.DrawSphere(i,.025,16711680,5),this.context.mainCamera?.position){let e=this.context.xr?.getUserOffsetInRig();e&&(e.y=0,r.sub(e),qc&&Ln.DrawWireSphere(e.add(r),.025,65280,5))}this._teleportBuffer.push(t.matrix.clone()),this._teleportBuffer.length>10&&this._teleportBuffer.shift(),this.useTeleportFade?e.xr.fadeTransition()?.then(()=>{t.worldPosition=r}):t.worldPosition=r}}else if(n<-.8&&(this._didTeleport=!0,this._teleportBuffer.length>0)){let e=this._teleportBuffer.pop();e&&e.decompose(t.position,t.quaternion,t.scale)}}_plane=null;_lines=[];_hitDiscs=[];_hitDistances=[];_lastHitDistances=[];renderRays(e){for(let e=0;e=59?1:10;if((this.context.time.frame+n.index)%o!==0&&(i=!1),!i){let e=this._hitDiscs[t];e&&e.visible&&e.hit&&this.updateHitPointerPosition(n,e,e.hit.distance);continue}let s=this.context.physics.raycastFromRay(n.ray,{testObject:this.hitPointRaycastFilter,precise:!1}),c=s.find(e=>this.usePinchToTeleport&&n.isTeleportGesture?!0:this.isObjectWithInteractiveComponent(e.object));if(c||=s[0],r&&(r.controller=n,r.hit=c),this._hitDistances[t]=c?.distance||null,c){this._lastHitDistances[t]=c.distance;let i=e.rigScale??1;qc&&(Ln.DrawWireSphere(c.point,.025*i,16711680),Ln.DrawLabel(wn(0,.2,0).add(c.point),c.object.name,.02,0)),r||(r=this.createHitPointObject(),this._hitDiscs[t]=r),r.hit=c,r.visible=c.distance>i*.05;let a=.01*(i+c.distance),o=n.getButton(`primary`)?.pressed;o&&(a*=1.1),r.scale.set(a,a,a),r.layers.set(2);let s=r.material.opacity;if(s=o?1:c.distance<.15*i?.2:.6,r.material.opacity=Rt.lerp(r.material.opacity,s,this.context.time.deltaTimeUnscaled/.1),r.visible){if(c.normal){this.updateHitPointerPosition(n,r,c.distance);let e=c.normal.applyQuaternion(Rn(c.object));r.quaternion.setFromUnitVectors(Yc,e)}else this.updateHitPointerPosition(n,r,c.distance);r.parent!==this.context.scene&&this.context.scene.add(r)}}else this._hitDiscs[t]&&(this._hitDiscs[t].visible=!1)}}isObjectWithInteractiveComponent(e,t=0){return Ct(e)||e.isUI===!0?!0:e.isScene?!1:e.parent?this.isObjectWithInteractiveComponent(e.parent,t+1):!1}updateHitPointerPosition(e,t,n){let r=wn(e.rayWorldPosition);r.add(wn(0,0,n-.01).applyQuaternion(e.rayWorldQuaternion)),t.position.lerp(r,this.context.time.deltaTimeUnscaled/.05)}hitPointRaycastFilter=e=>e.type===`SkinnedMesh`?`continue in children`:!0;createHitPointObject(){let e=new x(new Ve(.3,6,6),new v({color:15658734,opacity:.7,transparent:!0,depthTest:!1,depthWrite:!1,side:2}));return e.layers.disableAll(),e.layers.enable(2),e}createRayLineObject(){let e=new nr;e.layers.disableAll(),e.layers.enable(2);let t=new ar;e.geometry=t;let n=new Float32Array(9);n.set([0,0,.02,0,0,.4,0,0,1]),t.setPositions(n);let r=new Float32Array(9);return r.set([1,1,1,.1,.1,.1,0,0,0]),t.setColors(r),e.material=new Qn({color:16777215,vertexColors:!0,worldUnits:!0,linewidth:.004,transparent:!0,depthWrite:!1,blending:2,dashed:!1}),e}};Kc([E()],Jc.prototype,`movementSpeed`,void 0),Kc([E()],Jc.prototype,`rotationStep`,void 0),Kc([E()],Jc.prototype,`useTeleport`,void 0),Kc([E()],Jc.prototype,`usePinchToTeleport`,void 0),Kc([E()],Jc.prototype,`useTeleportTarget`,void 0),Kc([E()],Jc.prototype,`useTeleportFade`,void 0),Kc([E()],Jc.prototype,`showRays`,void 0),Kc([E()],Jc.prototype,`showHits`,void 0);var Yc=new r(0,1,0),Y=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Xc=D(`debugwebxr`),Zc=D(`debugusdz`),X=class e extends N{createVRButton=!0;createARButton=!0;createSendToQuestButton=!0;createQRCode=!0;useDefaultControls=!0;showControllerModels=!0;showHandModels=!0;usePlacementReticle=!0;customARPlacementReticle;usePlacementAdjustment=!0;arScale=1;useXRAnchor=!1;autoPlace=!1;autoCenter=!1;useQuicklookExport=!1;useDepthSensing=!1;useSpatialGrab=!0;defaultAvatar;_playerSync;_createdComponentsInSession=[];_usdzExporter;static activeWebXRComponent=null;awake(){j.getXRSync(this.context)}onEnable(){window.location.protocol!==`https:`&&kn(`WebXR only works on secure connections (https).`),navigator.xr?.isSessionSupported(`immersive-ar`).catch(()=>!1).then(e=>{let t=A.isVisionOS()&&!e;(this.useQuicklookExport||t)&&(k.findObjectOfType($)||(Xc&&console.log(`WebXR: Adding USDZExporter`),this._usdzExporter=k.addComponent(this.gameObject,$),this._usdzExporter.objectToExport=this.context.scene,this._usdzExporter.autoExportAnimations=!0,this._usdzExporter.autoExportAudioSources=!0))}),this.handleCreatingHTML(),this.handleOfferSession(),this.defaultAvatar===!0&&(Xc&&console.warn(`WebXR: No default avatar set, using static default avatar`),this.defaultAvatar=new w(`https://cdn.needle.tools/static/avatars/DefaultAvatar.glb`)),this.defaultAvatar&&(this._playerSync=this.gameObject.getOrAddComponent(Tc),this._playerSync.autoSync=!1),this._playerSync&&typeof this.defaultAvatar!=`boolean`&&(this._playerSync.asset=this.defaultAvatar,this._playerSync.onPlayerSpawned?.removeEventListener(this.onAvatarSpawned),this._playerSync.onPlayerSpawned?.addEventListener(this.onAvatarSpawned))}onDisable(){this._usdzExporter?.destroy(),this.removeButtons()}async handleOfferSession(){return this.createVRButton&&await j.isVRSupported()&&this.createVRButton?j.offerSession(`immersive-vr`,`default`,this.context):this.createARButton&&await j.isARSupported()&&this.createARButton?j.offerSession(`immersive-ar`,`default`,this.context):!1}get session(){return j.active??null}get sessionMode(){return j.activeMode??null}get arSessionRoot(){return this._activeWebARSessionRoot}async enterVR(e){return j.start(`immersive-vr`,e,this.context)}async enterAR(e){return j.start(`immersive-ar`,e,this.context)}exitXR(){j.stop()}_exitXRMenuButton;_previousXRState=0;_spatialGrabRaycaster;_activeWebARSessionRoot=null;get isActiveWebXR(){return!e.activeWebXRComponent||e.activeWebXRComponent===this}onBeforeXR(t,n){if(!this.isActiveWebXR){console.warn(`WebXR: another WebXR component is already active (${e.activeWebXRComponent?.name}). This is ignored: ${this.name}`);return}if(this.activeAndEnabled===!1||this.destroyed){console.debug(`[WebXR] onBeforeXR called on disabled or destroyed component`);return}e.activeWebXRComponent=this,t==`immersive-ar`&&this.useDepthSensing&&(n.optionalFeatures=n.optionalFeatures||[],n.optionalFeatures.push(`depth-sensing`))}async onEnterXR(e){if(!this.isActiveWebXR)return;Xc&&console.log(`WebXR onEnterXR`),this._previousXRState=di.Global.Mask;let t=e.xr.isVR;if(di.Global.Set(t?ui.VR:ui.AR),e.xr.isAR){let e=k.findObjectOfType(xc,this.context,!1);if(!e)if(this.usePlacementReticle){let t=new S;for(let e of this.context.scene.children)t.add(e);this.context.scene.add(t),e=k.addComponent(t,xc),this._createdComponentsInSession.push(e)}else (Xc||T())&&console.warn(`WebXR: No WebARSessionRoot found in scene and usePlacementReticle is disabled in WebXR component.`);this._activeWebARSessionRoot=e,e&&(e.customReticle=this.customARPlacementReticle,e.arScale=this.arScale,e.arTouchTransform=this.usePlacementAdjustment,e.autoPlace=this.autoPlace,e.autoCenter=this.autoCenter,e.useXRAnchor=this.useXRAnchor)}this.useDefaultControls&&this.setDefaultMovementEnabled(!0),(this.showControllerModels||this.showHandModels)&&this.setDefaultControllerRenderingEnabled(!0),this.useSpatialGrab&&(this._spatialGrabRaycaster=k.findObjectOfType(cn)??void 0,this._spatialGrabRaycaster||=this.gameObject.addComponent(cn)),this.createLocalAvatar(e.xr),e.xr.isScreenBasedAR||(this._exitXRMenuButton=this.context.menu.appendChild({label:`Quit XR`,onClick:()=>this.exitXR(),icon:`exit_to_app`,priority:2e4}))}onUpdateXR(e){this.isActiveWebXR&&this._spatialGrabRaycaster&&(this._spatialGrabRaycaster.enabled=this.useSpatialGrab)}onLeaveXR(t){if(this._exitXRMenuButton?.remove(),this.isActiveWebXR){di.Global.Set(this._previousXRState),this._playerSync?.destroyInstance();for(let e of this._createdComponentsInSession)e.destroy();this._createdComponentsInSession.length=0,this._activeWebARSessionRoot=null,this.handleOfferSession(),jn(1).then(()=>e.activeWebXRComponent=null)}}setDefaultMovementEnabled(e){let t=this.gameObject.getComponent(Jc);return!t&&e&&(t=this.gameObject.addComponent(Jc),this._createdComponentsInSession.push(t)),t&&(t.enabled=e),t}setDefaultControllerRenderingEnabled(e){let t=this.gameObject.getComponent(Wc);return!t&&e&&(t=this.gameObject.addComponent(Wc),this._createdComponentsInSession.push(t),t.createControllerModel=this.showControllerModels,t.createHandModel,this.showHandModels),t&&(t.enabled=e),t}async createLocalAvatar(e){this._playerSync&&e.running&&typeof this.defaultAvatar!=`boolean`&&(this._playerSync.asset=this.defaultAvatar,await this._playerSync.getInstance())}onAvatarSpawned=e=>{Xc&&console.log(`WebXR.onAvatarSpawned`,e);let t=k.getComponentInChildren(e,Nc);t??=k.addComponent(e,Nc)};getButtonsContainer(){return this.getButtonsFactory()}getButtonsFactory(){return this._buttonFactory||=sc.getOrCreate(),this._buttonFactory}_buttonFactory;handleCreatingHTML(){if(this.createARButton||this.createVRButton||this.useQuicklookExport){if((A.isiOS()&&A.isSafari()||Zc)&&this.useQuicklookExport){let e=k.findObjectOfType($);if(!e||e&&e.allowCreateQuicklookButton){let e=this.getButtonsFactory().createQuicklookButton();this.addButton(e)}}if(this.createARButton){let e=this.getButtonsFactory().createARButton();this.addButton(e)}if(this.createVRButton){let e=this.getButtonsFactory().createVRButton();this.addButton(e)}}if(this.createSendToQuestButton&&!A.isQuest()&&j.isVRSupported().then(e=>{if(!e){let e=this.getButtonsFactory().createSendToQuestButton();this.addButton(e)}}),this.createQRCode){let e=Zt(kc);if(e&&e.createQRCodeButton===!1)T()&&console.warn(`WebXR: QRCode button is disabled in the Needle Menu component`);else if(!A.isMobileDevice()){let e=un.getOrCreate().createQRCode();this.addButton(e)}}}_buttons=[];addButton(e){this._buttons.push(e),this.context.menu.appendChild(e)}removeButtons(){for(let e of this._buttons)e.remove();this._buttons.length=0}};Y([E()],X.prototype,`createVRButton`,void 0),Y([E()],X.prototype,`createARButton`,void 0),Y([E()],X.prototype,`createSendToQuestButton`,void 0),Y([E()],X.prototype,`createQRCode`,void 0),Y([E()],X.prototype,`useDefaultControls`,void 0),Y([E()],X.prototype,`showControllerModels`,void 0),Y([E()],X.prototype,`showHandModels`,void 0),Y([E()],X.prototype,`usePlacementReticle`,void 0),Y([E(w)],X.prototype,`customARPlacementReticle`,void 0),Y([E()],X.prototype,`usePlacementAdjustment`,void 0),Y([E()],X.prototype,`arScale`,void 0),Y([E()],X.prototype,`useXRAnchor`,void 0),Y([E()],X.prototype,`autoPlace`,void 0),Y([E()],X.prototype,`autoCenter`,void 0),Y([E()],X.prototype,`useQuicklookExport`,void 0),Y([E()],X.prototype,`useDepthSensing`,void 0),Y([E()],X.prototype,`useSpatialGrab`,void 0),Y([E(w)],X.prototype,`defaultAvatar`,void 0);var Qc=D(`debugusdzbehaviours`),$c=class{get extensionName(){return`Behaviour`}behaviours=[];addBehavior(e){this.behaviours.push(e)}addAudioClip(e){if(!e||typeof e!=`string`)return``;let t=`audio/`+Vs.getName(e);return this.audioClips.push({clipUrl:e,filesKey:t}),t}behaviourComponents=[];behaviourComponentsCopy=[];audioClips=[];audioClipsCopy=[];targetUuids=new Set;getAllTargetUuids(){return this.targetUuids}onBeforeBuildDocument(e){if(!e.root)return Promise.resolve();let t=[];return e.root.traverse(n=>{k.foreachComponent(n,n=>{let r=n;if(typeof r.createBehaviours==`function`||typeof r.beforeCreateDocument==`function`||typeof r.afterCreateDocument==`function`||typeof r.afterSerialize==`function`){this.behaviourComponents.push(r);let n=r.beforeCreateDocument?.call(r,this,e);n instanceof Promise&&t.push(n)}},!1)}),Qc&&console.log(`onBeforeBuildDocument: all components`,this.behaviourComponents),Promise.all(t)}onExportObject(e,t,n){for(let e of this.behaviourComponents)e.createBehaviours?.call(e,this,t,n)}onAfterBuildDocument(e){for(let t of this.behaviourComponents)typeof t.afterCreateDocument==`function`&&t.afterCreateDocument(this,e);this.behaviourComponentsCopy=this.behaviourComponents.slice(),this.behaviourComponents.length=0,this.audioClipsCopy=this.audioClips.slice(),this.audioClips.length=0;let t=new Set,n=new Set,r=new Set,i=new Set,a=Qc,o=`graph LR +`,s=``;function c(e){if(e instanceof Ms){a&&(o+=`subgraph Group_${e.id}\n`);for(let t of e.actions)a&&(o+=`${e.id}[${e.id}] -- ${e.type},loops:${e.loops} --> ${t.id}[${t.id}]\n`),c(t);a&&(o+=`end +`)}else if(e instanceof Ns){e.tokenId===`StartAnimation`&&i.add(e);let t=e.tokenId;e.type!==void 0&&(t+=`:`+e.type);let r=e.affectedObjects;if(r)if(Array.isArray(r))for(let i of r)n.add(i),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${i.uuid}(("${i.displayName||i.name||i.uuid}"))\n`);else typeof r==`object`?(n.add(r),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${r.uuid}(("${r.displayName||r.name||r.uuid}"))\n`)):typeof r==`string`&&n.add({uuid:r});let o=e.xFormTarget;o&&(typeof o==`object`?(n.add(o),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${o.uuid}(("${o.displayName||o.name||o.uuid}"))\n`)):typeof o==`string`&&n.add({uuid:o}))}}function l(e,n){if(Array.isArray(e))for(let t of e)l(t,n);else if(e instanceof ks){let r=e.tokenId;e.type!==void 0&&(r+=`:`+e.type),typeof e.targetId==`object`&&(t.add(e.targetId),a&&(s+=`${e.targetId.uuid}(("${e.targetId.displayName}")) --> ${e.id}[${e.id}\n${r}]\n`)),a&&(o+=`${e.id}((${e.id})) -- ${r} --> ${n.id}[${n.tokenId||n.id}]\n`)}}for(let e of this.behaviours)a&&(o+=`subgraph ${e.id}\n`),c(e.action),l(e.trigger,e.action),a&&(o+=`end +`);a&&(o+=` +`+s),a&&(console.log(`All USDZ behaviours`,this.behaviours),this.behaviours.length&&(console.warn(`The Mermaid graph can be pasted into https://massive-mermaid.glitch.me/ or https://mermaid.live/edit. It should be in your clipboard already!`),console.log(o),navigator.clipboard.writeText(o)));{let e=`gantt +title Animations +dateFormat X +axisFormat %s +`,t=Array.from(i),n=new Set;for(let r of t)if(r.affectedObjects&&typeof r.affectedObjects!=`string`){if(Array.isArray(r.affectedObjects))for(let e of r.affectedObjects)n.add(e);else n.add(r.affectedObjects);a&&(e+=`section ${r.animationName} (${r.id})\n`,e+=`${r.id} : ${r.start}, ${r.duration}s\n`)}a&&i.size&&console.log(e);let r=new Set;for(let e of n){e.getPath||console.error(`USDZExporter: Animation target object has no getPath method. This is likely a bug`,e);let t=e.getPath();t.startsWith(`<`)&&(t=t.substring(1)),t.endsWith(`>`)&&(t=t.substring(0,t.length-1)),r.add({path:t,obj:e})}let o=Array.from(r).sort((e,t)=>e.path.length-t.path.length),s=[];for(let e=0;ee.enabled),i=k.getComponents(e,vi).filter(e=>e.enabled&&!e.isTrigger),a=r.length>0?r[0]:null,o=i.length>0?i[0]:null;o&&!a&&(a=new vt,a.isKinematic=!0),a&&t.addEventListener(`serialize`,(e,t)=>{if(a){if(e.appendLine(),e.beginBlock(`def RealityKitComponent "RigidBody"`,`{`,!0),a.useGravity||e.appendLine(`bool gravityEnabled = 0`),e.appendLine(`uniform token info:id = "RealityKit.RigidBody"`),a.isKinematic&&e.appendLine(`token motionType = "Kinematic"`),e.beginBlock(`def RealityKitStruct "massFrame"`,`{`,!0),e.appendLine(`float m_mass = ${a.mass}`),e.beginBlock(`def RealityKitStruct "m_pose"`,`{`,!0),e.appendLine(`float3 position = (${a.centerOfMass.x}, ${a.centerOfMass.y}, ${a.centerOfMass.z})`),e.closeBlock(`}`),e.closeBlock(`}`),i.length>0){let t=i[0];e.beginBlock(`def RealityKitStruct "material"`,`{`,!0);let n=t.sharedMaterial;n&&n.dynamicFriction!==void 0&&e.appendLine(`double dynamicFriction = ${t.sharedMaterial?.dynamicFriction}`),n&&n.bounciness!==void 0&&e.appendLine(`double restitution = ${t.sharedMaterial?.bounciness}`),n&&n.staticFriction!==void 0&&e.appendLine(`double staticFriction = ${t.sharedMaterial?.staticFriction}`),e.closeBlock(`}`)}e.closeBlock(`}`)}}),o&&(t.addEventListener(`serialize`,(e,t)=>{e.beginBlock(`def RealityKitComponent "Collider"`,`{`,!0),e.appendLine(`uint group = 1`),e.appendLine(`uniform token info:id = "RealityKit.Collider"`),e.appendLine(`uint mask = 4294967295`);let n=o.isTrigger?`Trigger`:`Default`;if(e.appendLine(`token type = "${n}"`),e.beginBlock(`def RealityKitStruct "Shape"`,`{`,!0),o instanceof yi){let t=o;e.appendLine(`token shapeType = "Sphere"`),e.appendLine(`float radius = ${t.radius}`)}else if(o instanceof bi){let t=o;e.appendLine(`token shapeType = "Box"`),e.appendLine(`float3 extent = (${t.size.x}, ${t.size.y}, ${t.size.z})`)}else if(o instanceof Si){let t=o;e.appendLine(`token shapeType = "Capsule"`),e.appendLine(`float radius = ${t.radius}`),e.appendLine(`float height = ${t.height}`)}else if(o instanceof xi&&o.sharedMesh?.geometry){let t=o.sharedMesh.geometry;t.boundingBox||t.computeBoundingBox();let n=o.sharedMesh.geometry.boundingBox;n&&(e.appendLine(`token shapeType = "Box"`),e.appendLine(`float3 extent = (${n.max.x-n.min.x}, ${n.max.y-n.min.y}, ${n.max.z-n.min.z})`),console.log(`[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box`,o))}else console.warn(`[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:`,o);e.beginBlock(`def RealityKitStruct "pose"`,`{`,!0),e.closeBlock(`}`),e.closeBlock(`}`),e.closeBlock(`}`)}),i.length>1&&console.log(`WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: `,o))}},tl;(function(e){e.singleLine=`singleLine`,e.hardBreaks=`hardBreaks`,e.flowing=`flowing`})(tl||={});var nl;(function(e){e.left=`left`,e.center=`center`,e.right=`right`,e.justified=`justified`})(nl||={});var rl;(function(e){e.top=`top`,e.middle=`middle`,e.lowerMiddle=`lowerMiddle`,e.baseline=`baseline`,e.bottom=`bottom`})(rl||={});var il=class{static global_id=0;static getId(){return this.global_id++}id;content=``;font=[];pointSize=144;width;height;depth;wrapMode;horizontalAlignment;verticalAlignment;material;setDepth(e){return this.depth=e,this}setPointSize(e){return this.pointSize=e,this}setHorizontalAlignment(e){return this.horizontalAlignment=e,this}setVerticalAlignment(e){return this.verticalAlignment=e,this}constructor(e){this.id=e}writeTo(e,t){t.beginBlock(`def Preliminary_Text "${this.id}"`,`(`,!1),t.appendLine(`prepend apiSchemas = ["MaterialBindingAPI"]`),t.closeBlock(`)`),t.beginBlock(),this.content&&t.appendLine(`string content = "${this.content}"`),(!this.font||this.font.length<=0)&&(this.font||=[],this.font?.push(`sans-serif`));let n=this.font.map(e=>`"${e}"`).join(`, `);t.appendLine(`string[] font = [ ${n} ]`),t.appendLine(`double pointSize = ${this.pointSize}`),typeof this.width==`number`&&t.appendLine(`double width = ${this.width}`),typeof this.height==`number`&&t.appendLine(`double height = ${this.height}`),typeof this.depth==`number`&&t.appendLine(`double depth = ${this.depth}`),this.wrapMode&&t.appendLine(`token wrapMode = "${this.wrapMode}"`),this.horizontalAlignment&&t.appendLine(`token horizontalAlignment = "${this.horizontalAlignment}"`),this.verticalAlignment&&t.appendLine(`token verticalAlignment = "${this.verticalAlignment}"`),this.material!==void 0&&t.appendLine(`rel material:binding = `),t.closeBlock()}},al=class{static singleLine(e,t,n){let r=new il(`text_`+il.getId());return r.content=e,t&&(r.pointSize=t),n&&(r.depth=n),r}static multiLine(e,t,n,r,i,a){let o=new il(`text_`+il.getId());return o.content=e,o.width=t,o.height=n,o.horizontalAlignment=r,o.verticalAlignment=i,a!==void 0&&(o.wrapMode=a),o}},ol=new b().makeRotationY(Math.PI),sl=new b().makeScale(-1,1,-1),cl=class{get extensionName(){return`text`}exportText(e,t,n){let r=k.getComponent(e,Cn);if(!r)return;let i=k.getComponent(e,Un),a=100,o=100;i&&(a=i.width,o=i.height);let s=ol.clone();i&&s.premultiply(sl),t.setMatrix(s);let c=r.color.clone();t.material=new Te({color:c,emissive:c}),t.addEventListener(`serialize`,(e,n)=>{let i=r.text;i=i.replace(/\r/g,``),i=i.replace(/\n/g,`\\n`);let s=al.multiLine(i,a,o,nl.center,rl.bottom,tl.flowing);this.setTextAlignment(s,r.alignment),this.setOverflow(s,r),t.material&&(s.material=t.material),s.pointSize=this.convertToTextSize(r.fontSize),s.depth=.001,s.writeTo(void 0,e)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode=tl.singleLine:e.wrapMode=tl.flowing}setTextAlignment(e,t){switch(t){case M.LowerLeft:case M.MiddleLeft:case M.UpperLeft:e.horizontalAlignment=nl.left;break;case M.LowerCenter:case M.MiddleCenter:case M.UpperCenter:e.horizontalAlignment=nl.center;break;case M.LowerRight:case M.MiddleRight:case M.UpperRight:e.horizontalAlignment=nl.right;break}switch(t){case M.LowerLeft:case M.LowerCenter:case M.LowerRight:e.verticalAlignment=rl.bottom;break;case M.MiddleLeft:case M.MiddleCenter:case M.MiddleRight:e.verticalAlignment=rl.middle;break;case M.UpperLeft:case M.UpperCenter:case M.UpperRight:e.verticalAlignment=rl.top;break}}},ll=class{get extensionName(){return`tmui`}onExportObject(e,t,r){let i=k.getComponent(e,An);if(i&&i.enabled&&i.renderMode===en.WorldSpace){let i=new cl,a=k.getComponent(e,Un),o=k.getComponent(e,xn),s=[];if(a){if(!k.isActiveSelf(e)){let t=k.isActiveSelf(e);k.setActive(e,!0),a.onEnable(),a.updateTransform(),s.push(()=>{a.onDisable(),k.setActive(e,t)})}e.traverse(e=>{if(!k.isActiveInHierarchy(e)){let t=k.isActiveSelf(e);k.setActive(e,!0);let n=k.getComponent(e,Hn);n&&(n.onEnable(),s.push(()=>{n.onDisable()}));let r=k.getComponent(e,Un);r&&(r.onEnable(),r.updateTransform(),r.onApplyTransform(),s.push(()=>{r.onDisable()}));let i=k.getComponent(e,Cn);i&&(i.onEnable(),s.push(()=>{i.onDisable()})),s.push(()=>{k.setActive(e,t)})}}),a.width,a.height;let c=jo.createEmpty(),l=a.shadowComponent;if(t.add(c),l){let e=l.matrix;c.setMatrix(e);let t=new Map,a=new Map;t.set(l,c),a.set(l,o?o.alpha:1),l.traverse(e=>{if(e===l)return;let o=jo.createEmpty();o.setMatrix(e.matrix);let s=e.parent,c=!!s&&typeof s.textContent==`string`&&s.textContent.length>0,u=a.get(s)||1,d=k.getComponent(e,xn);if(d&&(u*=d.alpha),e instanceof x&&c){let t=e[$e];t?i.exportText(t.gameObject,o,r):console.error(`Error when exporting UI: shadow component owner not found. This is likely a bug.`,e)}if(e instanceof x&&!c){let t=e.geometry.clone();t.scale(1,1,-1),this.flipWindingOrder(t),o.geometry=t;let r=new n,i=e.material.opacity;r.copy(e.material.color),o.material=new v({color:r,opacity:i*u,map:e.material.map,transparent:!0})}t.set(e,o),a.set(e,u);let f=t.get(s);if(!f){console.error(`Error when exporting UI: shadow component parent not found!`,e,e.parent);return}f.add(o)})}}for(let e of s)e()}}flipWindingOrder(e){let t=e.index.array;for(let e=0,n=t.length/3;e0&&console.log(`USDZ Animation Clips without behaviours`,n);for(let e of n)for(let n of e.clips)t.registerAnimation(e.root,n);return o}function fl(e,t){let n=k.getComponentsInChildren(e,I),r=k.getComponentsInChildren(e,Js),i=[],a=[];ul&&console.log({audioSources:n,playAudioOnClicks:r});for(let e of r){if(!e.target)continue;let t=n.indexOf(e.target);t>-1&&n.splice(t,1)}for(let t of n){if(!t||!t.clip||t.volume<=0||i.includes(t))continue;let n=new Js;n.target=t,n.name=`PlayAudioOnClick_implicitAtStart_`,n.trigger=`start`;let r=new S;k.addComponent(r,n),console.log(`implicit PlayAudioOnStart`,r,n),a.push(r),i.push(t),e.add(r)}return a}function pl(e){return new Es(`DisableAtStart`,js.sceneStartTrigger(),G.fadeAction(e,0,!1))}function ml(e,t){let n=e.domElement.shadowRoot.querySelector(`link[rel='ar']`);if(n)return n;let r=document.createElement(`div`);r.classList.add(`menu`),r.classList.add(`quicklook-menu`),r.style.display=`none`,r.style.visibility=`hidden`;let i=document.createElement(`button`);i.id=`open-in-ar`,t?(i.innerText=`View in AR`,i.title=`View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook.`):(i.innerText=`View in AR`,i.title=`Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook.`),r.appendChild(i);let a=document.createElement(`a`);a.id=`needle-usdz-link`,a.style.display=`none`,a.rel=`ar`,a.href=``,a.target=`_blank`,r.appendChild(a);let o=document.createElement(`img`);return o.id=`button`,a.appendChild(o),e.domElement.shadowRoot.appendChild(r),a}var Z=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Q=D(`debugusdz`),hl=D(`debugusdzpruning`),gl=class{callToAction;checkoutTitle;checkoutSubtitle;callToActionURL};Z([E()],gl.prototype,`callToAction`,void 0),Z([E()],gl.prototype,`checkoutTitle`,void 0),Z([E()],gl.prototype,`checkoutSubtitle`,void 0),Z([E()],gl.prototype,`callToActionURL`,void 0);var $=class e extends N{static beforeExport=new Ut;static afterExport=new Ut;static beforeLODExport=new Ut;objectToExport=void 0;autoExportAnimations=!0;autoExportAudioSources=!0;exportFileName=void 0;customUsdzFile=void 0;customBranding;anchoringType=`plane`;maxTextureSize=2048;planeAnchoringAlignment=`horizontal`;interactive=!0;physics=!0;allowCreateQuicklookButton=!0;quickLookCompatible=!0;extensions=[];link;button;start(){Q&&(console.log(`USDZExporter`,this),console.log(`Debug USDZ Mode. Press 'T' to export`),window.addEventListener(`keydown`,e=>{switch(e.key){case`t`:this.exportAndOpen();break}})),this.objectToExport||=this.gameObject,!this.objectToExport?.children?.length&&!this.objectToExport?.isMesh&&(this.objectToExport=this.context.scene)}onEnable(){let e=A.supportsQuickLookAR(),t=A.isiOS()||A.isiPad();!this.button&&(Q||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=ml(this.context,e),this.link.addEventListener(`message`,this.lastCallback)),Q&&vn(`USDZ Exporter enabled: `+this.name),document.getElementById(`open-in-ar`)?.addEventListener(`click`,this.onClickedOpenInARElement),Tn.registerExporter(this)}onDisable(){this.button?.remove(),this.link?.removeEventListener(`message`,this.lastCallback),Q&&vn(`USDZ Exporter disabled: `+this.name),document.getElementById(`open-in-ar`)?.removeEventListener(`click`,this.onClickedOpenInARElement),Tn.unregisterExporter(this)}onClickedOpenInARElement=e=>{e.preventDefault(),this.exportAndOpen()};async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){let t=this.exportFileName??this.objectToExport?.name??this.name;if(t+=`-`+ho(),zn()||(t!==``&&(t+=`-`),t+=`MadeWithNeedle`),this.link||=ml(this.context,A.supportsQuickLookAR()),this.customUsdzFile)return Q&&console.log(`Exporting custom usdz`,this.customUsdzFile),this.openInQuickLook(this.customUsdzFile,t),null;if(!this.objectToExport)return console.warn(`No object to export`,this),null;e.beforeExport.invoke({exporter:this});let n=await this.export(this.objectToExport).finally(()=>{e.afterExport.invoke({exporter:this})});return n?(Q&&console.log(`USDZ generation done. Downloading as `+t),this.openInQuickLook(n,t),n):(console.error(`USDZ generation failed. Please report a bug`,this),null)}async export(e){if(!e)return console.warn(`No object to export`),null;let t=this._currentExportTasks.get(e);if(t)return t;let n=this.internalExport(e);return n instanceof Promise?(this._currentExportTasks.set(e,n),n.then(t=>(this._currentExportTasks.delete(e),t)).catch(t=>(this._currentExportTasks.delete(e),console.error(`Error during USDZ export – please report a bug!`,t),null))):n}_currentExportTasks=new Map;_previousTimeScale=1;async internalExport(t){V.start(`export-usdz`,{onProgress:e=>{this.dispatchEvent(new CustomEvent(`export-progress`,{detail:{progress:e}}))}}),V.report(`export-usdz`,{message:`Starting export`,totalSteps:40,currentStep:0}),V.report(`export-usdz`,{message:`Load progressive textures`,autoStep:5}),V.start(`export-usdz-textures`,`export-usdz`);let n=k.getComponentsInChildren(t,vc);for(let e of n)e&&e.enabled&&e.updateSprite(!0);let r=k.getComponentsInChildren(t,B),i=[],a=0;for(let t of r){for(let n of t.sharedMeshes)if(n){let r=0,o={exporter:this,type:`mesh`,object:t.gameObject,mesh:n};if(e.beforeLODExport.invoke(o),o.overrideLevel!==void 0)if(o.overrideLevel===-1){Q&&console.warn(`Skipping LOD export for mesh due to overrideLevel -1`,t.gameObject,n);continue}else o.overrideLevel>=0&&(r=o.overrideLevel,Q&&console.log(`Overriding LOD level for mesh export to level `+r+` `+n.name));let s=P.assignMeshLOD(n,r);s instanceof Promise&&i.push(new Promise((e,t)=>{s.then(()=>{a++,V.report(`export-usdz-textures`,{message:`Loaded progressive mesh`,currentStep:a,totalSteps:i.length}),e()}).catch(e=>t(e))}))}for(let n of t.sharedMaterials)if(n){let r=0,o={exporter:this,type:`texture`,object:t.gameObject,material:n};if(e.beforeLODExport.invoke(o),o.overrideLevel!==void 0)if(o.overrideLevel===-1){Q&&console.warn(`Skipping LOD assignment due to overrideLevel -1`,t.gameObject,n);continue}else o.overrideLevel>=0&&(r=o.overrideLevel,Q&&console.log(`Overriding LOD level for texture export to level `+r+` `+n.name));let s=P.assignTextureLOD(n,r);s instanceof Promise&&i.push(new Promise((e,t)=>{s.then(()=>{a++,V.report(`export-usdz-textures`,{message:`Loaded progressive texture`,currentStep:a,totalSteps:i.length}),e()}).catch(e=>t(e))}))}}Q&&vn(`Progressive Loading: `+i.length),await Promise.all(i),Q&&vn(`Progressive Loading: done`),V.end(`export-usdz-textures`);let o=di.Global.Mask;di.Global.Set(ui.AR);let s=new Ro,c=new Rs(this.quickLookCompatible),l,u=[];this.interactive&&(u.push(new $c),u.push(new Vs),globalThis.NEEDLE_USE_RAPIER&&k.getComponentsInChildren(t,vt).length>0&&(this.physics?(l=new el,u.push(l)):T()&&console.warn(`USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.`)),u.push(new cl),u.push(new ll));let d=[c,...u,...this.extensions],f={self:this,exporter:s,extensions:d,object:t};V.report(`export-usdz`,`Invoking before-export`),this.dispatchEvent(new CustomEvent(`before-export`,{detail:f})),this.applyWebARSessionRoot(),this._previousTimeScale=this.context.time.timeScale,this.context.time.timeScale=0,V.report(`export-usdz`,`auto export animations and audio sources`);let p=[];this.autoExportAnimations&&p.push(...dl(t,c));let m=d.find(e=>e.extensionName===`Audio`);m&&this.autoExportAudioSources&&p.push(...fl(t,m)),s.debug=Q,s.pruneUnusedNodes=!hl;let h=Ka.instance.objs.map(e=>e.batchedMesh);s.keepObject=e=>{let t=!0,n=k.getComponent(e,B);return n&&!n.enabled&&(t=!1),t&&h.includes(e)&&(t=!1),t&&k.getComponentInParent(e,ki)&&(t=!1),t&&k.getComponentInParent(e,En)&&(t=!1),Q&&!t&&console.log(`USDZExporter: Discarding object`,e),t},s.beforeWritingDocument=()=>{if(T()&&c&&l){let e=c.animatedRoots;for(let t of e){let e=k.getComponentsInChildren(t,vt).filter(e=>e.enabled),n=k.getComponents(t,vi).filter(e=>e.enabled&&!e.isTrigger);(e.length>0||n.length>0)&&console.error(`An animated object has physics components in its child hierarchy. This can lead to undefined behaviour due to a bug in Apple's QuickLook (FB15925487). Remove the physics components from child objects or verify that you get the expected results.`,t)}}};let g=[];this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(e=>{e.visible||g.push(e)});let _=d.find(e=>e.extensionName===`Behaviour`);this.interactive&&_&&g.length>0&&_.addBehavior(pl(g));let ee=!0;this.quickLookCompatible&&!this.interactive&&(ee=!1),this.anchoringType!==`plane`&&this.anchoringType!==`none`&&this.anchoringType!==`image`&&this.anchoringType!==`face`&&(this.anchoringType=`plane`),this.planeAnchoringAlignment!==`horizontal`&&this.planeAnchoringAlignment!==`vertical`&&this.planeAnchoringAlignment!==`any`&&(this.planeAnchoringAlignment=`horizontal`),V.report(`export-usdz`,`Invoking exporter.parse`);let te=await s.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:d,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:ee}),ne=new Blob([te],{type:`model/vnd.usdz+zip`});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,V.report(`export-usdz`,`Invoking after-export`),this.dispatchEvent(new CustomEvent(`after-export`,{detail:f}));for(let e of p)k.destroy(e);return di.Global.Set(o),V.end(`export-usdz`),ne}openInQuickLook(e,t){let n=e instanceof Blob?URL.createObjectURL(e):e,r=this.buildQuicklookOverlay();Q&&console.log(`QuickLook Overlay`,r);let i=r.callToAction?encodeURIComponent(r.callToAction):``,a=r.checkoutTitle?encodeURIComponent(r.checkoutTitle):``,o=r.checkoutSubtitle?encodeURIComponent(r.checkoutSubtitle):``;this.link.href=n+`#callToAction=${i}&checkoutTitle=${a}&checkoutSubtitle=${o}&callToActionURL=${r.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener(`message`,this.lastCallback)),this.link.download=t+`.usdz`,this.link.click()}download(t,n){e.save(t,n)}static save(e,t){let n=document.createElement(`a`);n.style.display=`none`,document.body.appendChild(n),typeof e==`string`?n.href=e:n.href=URL.createObjectURL(e),n.download=t,n.click(),n.remove()}lastCallback;quicklookCallback(e){if(e?.data==`_apple_ar_quicklook_button_tapped`){Q&&kn(`Quicklook closed via call to action button`);var t=new CustomEvent(`quicklook-button-tapped`,{detail:this});if(this.dispatchEvent(t),!t.defaultPrevented){let e=new URLSearchParams(this.link.href);if(e){let t=e.get(`callToActionURL`);Q&&vn(`Quicklook url: `+t),t&&(zn()?globalThis.open(t,`_blank`):console.warn(`Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing`,t))}}}}buildQuicklookOverlay(){let e={};return this.customBranding&&Object.assign(e,this.customBranding),zn()||(console.log(`Custom Quicklook banner text requires pro license: https://needle.tools/pricing`),e.callToAction=`Close`,e.checkoutTitle=`🌵 Made with Needle`,e.checkoutSubtitle=`_`),(e.callToAction?.length||e.checkoutTitle?.length||e.checkoutSubtitle?.length)&&(e.callToAction?.length||(e.callToAction=`\0`),e.checkoutTitle?.length||(e.checkoutTitle=`\0`),e.checkoutSubtitle?.length||(e.checkoutSubtitle=`\0`)),this.dispatchEvent(new CustomEvent(`quicklook-overlay`,{detail:e})),e}static invertForwardMatrix=new b().makeRotationY(Math.PI);static invertForwardQuaternion=new Ue().setFromEuler(new ze(0,Math.PI,0));_rootSessionRootWasAppliedTo=null;_rootPositionBeforeExport=new r;_rootRotationBeforeExport=new Ue;_rootScaleBeforeExport=new r;getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};let e=k.findObjectOfType(X),t=k.getComponentInParent(this.objectToExport,xc);t||=k.getComponentInChildren(this.objectToExport,xc);let n=1,r=!1,i=this.objectToExport;return e?n=e.arScale:t&&(n=t.arScale,r=t.invertForward),{scale:1/n,_invertForward:r,target:i,sessionRoot:t?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;let{scale:t,_invertForward:n,target:r,sessionRoot:i}=this.getARScaleAndTarget(),a=i?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=r,this._rootPositionBeforeExport.copy(r.position),this._rootRotationBeforeExport.copy(r.quaternion),this._rootScaleBeforeExport.copy(r.scale),r.scale.multiplyScalar(t),n&&r.quaternion.multiply(e.invertForwardQuaternion),r.updateMatrix(),r.updateMatrixWorld(!0),i&&a&&r.matrix.premultiply(a)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;let e=this._rootSessionRootWasAppliedTo;e.position.copy(this._rootPositionBeforeExport),e.quaternion.copy(this._rootRotationBeforeExport),e.scale.copy(this._rootScaleBeforeExport),e.updateMatrix(),e.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){let e=sc.getOrCreate().createQuicklookButton();return e.parentNode||this.context.menu.appendChild(e),e}};Z([E(S)],$.prototype,`objectToExport`,void 0),Z([E()],$.prototype,`autoExportAnimations`,void 0),Z([E()],$.prototype,`autoExportAudioSources`,void 0),Z([E()],$.prototype,`exportFileName`,void 0),Z([E(URL)],$.prototype,`customUsdzFile`,void 0),Z([E(gl)],$.prototype,`customBranding`,void 0),Z([E()],$.prototype,`anchoringType`,void 0),Z([E()],$.prototype,`maxTextureSize`,void 0),Z([E()],$.prototype,`planeAnchoringAlignment`,void 0),Z([E()],$.prototype,`interactive`,void 0),Z([E()],$.prototype,`physics`,void 0),Z([E()],$.prototype,`allowCreateQuicklookButton`,void 0),Z([E()],$.prototype,`quickLookCompatible`,void 0),nc({find:()=>Zt($),create:()=>new $});var _l=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vl=class extends N{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!yn||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new ge(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=pn(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),Wn.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}};_l([E()],vl.prototype,`objectBounds`,void 0),_l([E(n)],vl.prototype,`color`,void 0),_l([E()],vl.prototype,`isGizmo`,void 0);var yl=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bl=class extends N{get activeAndEnabled(){return!0}side=`none`;controller=!0;hands=!1;controlVisibility=!0;useGripSpace=!1;resetTransformAfterXRSession=!0;_startPosition=new r;_startRotation=new Ue;_startScale=new r;onEnterXR(e){this._startPosition.copy(this.gameObject.position),this._startRotation.copy(this.gameObject.quaternion),this._startScale.copy(this.gameObject.scale)}onUpdateXR(e){if(!this.enabled)return;let t=e.xr.getController(this.side);if(t){if(t.hand&&!this.hands){this.controlVisibility&&(this.gameObject.visible=!1);return}else if(!this.controller){this.controlVisibility&&(this.gameObject.visible=!1);return}this.controlVisibility&&(this.gameObject.visible=!0),this.useGripSpace||t.targetRayMode===`transient-pointer`?(this.gameObject.worldPosition=t.gripWorldPosition,this.gameObject.worldQuaternion=t.gripWorldQuaternion,this.gameObject.worldScale=wn(t.xr.rigScale,t.xr.rigScale,t.xr.rigScale).multiply(this._startScale)):(this.gameObject.worldPosition=t.rayWorldPosition,this.gameObject.worldQuaternion=t.rayWorldQuaternion,this.gameObject.worldScale=wn(t.xr.rigScale,t.xr.rigScale,t.xr.rigScale).multiply(this._startScale))}}onLeaveXR(e){this.resetTransformAfterXRSession&&(this.gameObject.position.copy(this._startPosition),this.gameObject.quaternion.copy(this._startRotation),this.gameObject.scale.copy(this._startScale))}};yl([E()],bl.prototype,`side`,void 0),yl([E()],bl.prototype,`controller`,void 0),yl([E()],bl.prototype,`hands`,void 0),yl([E()],bl.prototype,`controlVisibility`,void 0),yl([E()],bl.prototype,`useGripSpace`,void 0),yl([E()],bl.prototype,`resetTransformAfterXRSession`,void 0);function xl(e,t){let n=e.xr.getFrame();if(!n)return console.warn(`No XRFrame available`),!1;let r=n.session.enabledFeatures;if(r&&!r.some(e=>e===`camera-access`))return console.error(`No camera feed available - please request the 'camera-access' feature before starting WebXR or add the ARCameraBackground component to your scene. + +Example to request camera-access in global scope: +NeedleXRSession.onSessionRequestStart(evt => { + evt.init.optionalFeatures = evt.init.optionalFeatures || []; + evt.init.optionalFeatures.push('camera-access'); +}); +`),T()&&Nn(`No camera feed available - please request the 'camera-access' feature before starting WebXR or add the ARCameraBackground component to your scene`),!1;let i=n.getViewerPose(e.xr.getReferenceSpace());if(i)for(let r of i.views)if(`camera`in r&&r.camera){let i=e.xr.getBinding();if(i||=new XRWebGLBinding(n.session,e.getContext()),i){let n=null;if(`getCameraImage`in i){Cl(e,t);let a=e.properties.get(t);if(a)return n=i.getCameraImage(r.camera),a.__webglTexture=n,!0;console.warn(`No texture properties found for target texture`)}}else console.error(r.camera,e.xr)}else console.error(`NO CAMERA IN VIEW`);else console.error(e.xr.getReferenceSpace(),n);return!1}var Sl=new WeakMap;function Cl(e,t){let n=Sl.get(t)||new WeakSet;if(n.has(e))return;n.add(e),Sl.set(t,n),console.debug(`Initialize texture for camera feed`);let r=new v,i=new He,a=new ne;a.add(new x(i,r));let o=new be;r.map=t,e.render(a,o)}function wl(e,t,n,r=`image/webp`,i){return Tl({context:e,width:t,height:n,mimeType:r,camera:i})}function Tl(e){e||={};let{transparent:t=!1}=e,{mimeType:r,context:i,width:a,height:o,camera:s}=e;if(!i&&(i=Ht.Current,!i))return console.error(`Can not save screenshot: No needle-engine context found or provided.`),null;if(!s&&(s=i.mainCamera,!s))return console.error(`No camera found`),null;let c=i.renderer,l=c.xr.enabled&&c.xr.isPresenting;if(l&&i.currentFrameEvent!=Wn.EarlyUpdate)return console.warn(`Screenshot: defer to access XR frame`),new Promise(t=>{st(n=>{t(Tl(e))},Wn.EarlyUpdate,{once:!0})});let d=c.domElement,f=d.width,p=d.height;a||=f,o||=p;let m=a,h=o,g=window.devicePixelRatio||1,_=1;_=i.devicePixelRatio===`auto`||i.devicePixelRatio===`manual`?1:i.devicePixelRatio/window.devicePixelRatio,g*=_,a/=g,o/=g,a=Math.floor(a),o=Math.floor(o),c.xr.isPresenting&&c.xr.getFrame();let ee=c.xr.enabled;c.xr.enabled=!1,c.xr.isPresenting=!1,d.style.width=`${a}px`,d.style.height=`${o}px`;let te=c.getRenderTarget(),ne=c.getClearColor(new n),v=c.getClearAlpha(),re=i.scene.background,ie=`aspect`in s?s.aspect:null;try{let n=e.render_events!==!1,f=[];n&&(at(i.scene,B,f),f.forEach(e=>{if(e?.onBeforeRender(),e.isInstancingActive&&e.instances)for(let t=0;te.onAfterRender()),!r&&`download_filename`in e&&e.download_filename)switch(e.download_filename.split(`.`).pop()?.toLowerCase()){case`png`:r=`image/png`;break;case`jpg`:case`jpeg`:r=`image/jpeg`;break;case`webp`:r=`image/webp`;break}if(t&&e.trim===!0){let e=El(_);e&&(_=e)}if(`type`in e){if(e.type===`texture`)return g?(e.target&&(e.target.image=g?.texture.image,e.target.needsUpdate=!0),g.texture.offset.set(0,-1),g.texture.needsUpdate=!0,g.texture):(console.error(`No target texture found`),null);if(e.type===`blob`)return new Promise((e,t)=>{_.toBlob(t=>{e(t)},r)});if(e.type===`share`)return new Promise((t,n)=>{_.toBlob(n=>{if(n&&`share`in navigator){let i=`file_type`in e&&e.file_type||r;r||(i=`image/png`);let a=i?.split(`/`)[1]||`png`,o=new File([n],`filename`in e&&e.filename||`screenshot.${a}`,{type:i});return navigator.share({title:`title`in e?e.title:void 0,text:`text`in e?e.text:void 0,url:`url`in e?e.url:void 0,files:[o]}).catch(e=>{console.warn(`User cancelled share`,e.message)}).finally(()=>{t({blob:n,shared:!0})})}return{blob:n,shared:!1}},r)})}let ee=_.toDataURL(r);if(`download_filename`in e&&e.download_filename){let t=e.download_filename;if(A.isMobileDevice()&&typeof window<`u`){let e=t+`_screenshots`,n=t.split(`.`),r=n.pop()?.toLowerCase(),i=0;localStorage.getItem(e)&&(i=parseInt(sessionStorage.getItem(e)||`0`)),i>0&&(t=`${n.join()}-${i}.${r}`),i+=1,sessionStorage.setItem(e,i.toString())}Ol(ee,t)}return ee}finally{c.setRenderTarget(te),i.scene.background=re,c.setSize(f,p,!1),c.setClearColor(ne,v),ie!=null&&s instanceof be&&(s.aspect=ie,s.updateProjectionMatrix()),c.xr.enabled=ee,c.xr.isPresenting=l,l||i.updateSize(!0)}return null}function El(e){if(!(`document`in globalThis))return null;let t=document.createElement(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);if(!n)return null;n.drawImage(e,0,0);let r=t.width,i=t.height,a=n.getImageData(0,0,r,i).data,o=i,s=r,c=0,l=0;for(let e=0;el&&(l=t),ec&&(c=e));let u=l-s+1,d=c-o+1,f=document.createElement(`canvas`),p=f.getContext(`2d`);return p?(f.width=u,f.height=d,p.drawImage(t,s,o,u,d,0,0,u,d),f):null}var Dl=null;function Ol(e,t){if(e){if(!e.startsWith(`data:image`)){console.error(`Can not save image: Data url is not an image`,e);return}Dl||=document.createElement(`a`),Dl.href=e,Dl.download=t,Dl.click()}}var kl;(function(e){let t=null,n=null,r=null,i=null,a=null;function o(e){let{renderer:o,width:s,height:l}=e,d=o.xr.enabled,f=o.getRenderTarget(),p=o.autoClear,m=s,h=l,g=s/l;(!r||r.width!==m||r.height!==h)&&(r??=new u(m,h,{colorSpace:ue}),r.width=m,r.height=h,r.samples=4,r.texture.repeat.y=-1,r.texture.offset.y=1),(!a||a.width!==m||a.height!==h)&&(a=document.createElement(`canvas`),a.width=m,a.height=h,a.style.position=`fixed`,a.style.top=`0px`,a.style.right=`0px`,a.style.width=`300px`,a.style.height=`${300/g}px`,a.style.zIndex=`1000`,a.style.pointerEvents=`none`,a.style.opacity=`1.0`,a.style.willChange=`contents`),t||=c({defines:{DECODE_VIDEO_TEXTURE:!0}}),n||=c(),i||=new xe,o.xr.updateCamera(e.camera),o.xr.enabled=!1,o.autoClear=!1,o.clear(),o.setSize(m,h),o.setRenderTarget(r),xl(e.renderer,i)||console.error(`Could not update texture from XR frame`);let _=k.findObjectOfType(Ml);return _?_.setTexture(i):(t.setTexture(i),o.render(t,e.camera)),o.clearDepth(),o.setSize(m,h),o.render(e.scene,e.camera),o.setRenderTarget(null),n.setTexture(r.texture),o.render(n,e.camera),a.getContext(`2d`,{alpha:!1}).drawImage(o.domElement,0,0,a.width,a.height),o.setRenderTarget(f),o.xr.enabled=d,o.autoClear=p,a}e.compositeWithCameraImage=o;function c(e){let t=e?.material||new Re({name:`BackgroundMaterial`,uniforms:s.clone(ye.background.uniforms),vertexShader:ye.background.vertexShader,fragmentShader:` +uniform sampler2D t2D; +varying vec2 vUv; + +void main() { + + vec4 texColor = texture2D( t2D, vUv ); + + #ifdef DECODE_VIDEO_TEXTURE + + // inline sRGB decode (TODO: Remove this code when https://crbug.com/1256340 is solved) + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + + #endif + + gl_FragColor = texColor; + #include + #include +} +`,defines:e?.defines,side:0,depthTest:!1,depthWrite:!1,fog:!1});Object.defineProperty(t,`map`,{get:function(){return this.threeTexture}});let n=new x(new He(2,2),t);return Qe(n,!1),n.geometry.deleteAttribute(`normal`),n.renderOrder=-1e6,n.setTexture=function(e){t.uniforms.t2D.value=e},n}e.makeFullscreenPlane=c})(kl||={});var Al=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jl=D(`debugarcamera`),Ml=class extends N{onBeforeXR(e,t){e===`immersive-ar`&&(t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.push(`camera-access`),jl&&console.warn(`Requesting camera-access`))}onEnterXR(e){e.xr.mode===`immersive-ar`&&(this.backgroundPlane&&(this.context.scene.add(this.backgroundPlane),this.backgroundPlane.visible=!1),this.backgroundPlane&&this.context.scene.add(this.backgroundPlane),this.context.pre_render_callbacks.push(this.preRender))}onLeaveXR(e){this.backgroundPlane&&this.backgroundPlane.removeFromParent();let t=this.context.pre_render_callbacks.indexOf(this.preRender);t>=0&&this.context.pre_render_callbacks.splice(t,1)}backgroundTint=new tn(1,1,1,1);get background(){return this.backgroundPlane}backgroundPlane;threeTexture;forceTextureInitialization=function(){let e=new v,t=new He,n=new ne;n.add(new x(t,e));let r=new be;return function(t,i){e.map=i,t.render(n,r),jl&&console.warn(`Force texture initialization`)}}();preRender=()=>{if(!(!this||!this.gameObject)&&this.context.renderer.xr.getFrame()){if(!this.threeTexture&&this.context.renderer&&(this.threeTexture=new xe,this.forceTextureInitialization(this.context.renderer,this.threeTexture)),this.backgroundPlane===void 0){let e=this.backgroundTint;this.backgroundPlane=kl.makeFullscreenPlane({material:new Re({name:`BackgroundMaterial`,uniforms:{...s.clone(ye.background.uniforms),tint:{value:new C(e.r,e.g,e.b,e.a)}},vertexShader:ye.background.vertexShader,fragmentShader:Nl,side:2,depthTest:!1,depthWrite:!1,fog:!1})})}this.backgroundPlane.parent!==this.scene&&this.scene.add(this.backgroundPlane),this.backgroundPlane.material instanceof Re&&this.backgroundPlane.material.uniforms.tint.value.set(this.backgroundTint.r,this.backgroundTint.g,this.backgroundTint.b,this.backgroundTint.a),this.updateFromFrame()}};onBeforeRender(e){this.updateFromFrame()}updateFromFrame(){this.threeTexture&&this.context.xr?.mode===`immersive-ar`&&(xl(this.context.renderer,this.threeTexture),this.setTexture(this.threeTexture))}setTexture(e){this.backgroundPlane&&(this.threeTexture=e,this.backgroundPlane.setTexture(this.threeTexture),this.backgroundPlane.visible=!0)}};Al([E(tn)],Ml.prototype,`backgroundTint`,void 0);var Nl=` +uniform sampler2D t2D; +uniform vec4 tint; + +varying vec2 vUv; + +void main() { + + vec4 texColor = texture2D( t2D, vUv ); + texColor.w = 1.0; + + // inline sRGB decode + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + + gl_FragColor = texColor * tint; + + #include + #include +} +`,Pl=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Fl=D(`debugimagetracking`),Il=class e{get url(){return this._trackedImage.image??``}get widthInMeters(){return this._trackedImage.widthInMeters??void 0}get bitmap(){return this._bitmap}get model(){return this._trackedImage}measuredSize;state;getPosition(e){return this.ensureTransformData(),e.copy(this._position),e}getQuaternion(e){return this.ensureTransformData(),e.copy(this._rotation),e}applyToObject(e,t=void 0){this.ensureTransformData();let n=e.position.distanceToSquared(this._position)/.05+e.quaternion.angleTo(this._rotation)/.05;t&&(t*=Math.max(1,n)),t===void 0||t>=1?(e.position.copy(this._position),e.quaternion.copy(this._rotation)):(t=Math.max(0,Math.min(1,t)),e.position.lerp(this._position,t),e.quaternion.slerp(this._rotation,t))}static _positionBuffer=new qe(()=>new r,20);static _rotationBuffer=new qe(()=>new Ue,20);_position;_rotation;ensureTransformData(){if(!this._position){this._position=e._positionBuffer.get(),this._rotation=e._rotationBuffer.get();let t=this._pose.transform,n=j.active.convertSpace(t);this._position.copy(n?.position),this._rotation.copy(n?.quaternion)}}_trackingComponent;_trackedImage;_bitmap;_pose;constructor(e,t,n,r,i,a){this._trackingComponent=e,this._trackedImage=t,this._bitmap=n,this.measuredSize=r,this.state=i,this._pose=a}},Ll=class{constructor(e){this.image=e.url,this.widthInMeters=e.widthInMeters,e.object instanceof S?this.object=new w({asset:e.object}):this.object=e.object,e.createObjectInstance!==void 0&&(this.createObjectInstance=e.createObjectInstance),e.imageDoesNotMove!==void 0&&(this.imageDoesNotMove=e.imageDoesNotMove),e.hideWhenTrackingIsLost!==void 0&&(this.hideWhenTrackingIsLost=e.hideWhenTrackingIsLost)}image;widthInMeters=.25;object;createObjectInstance=!1;imageDoesNotMove=!1;hideWhenTrackingIsLost=!0;getNameFromUrl(){if(this.image){let e=this.image.split(`/`);return e[e.length-1]}return null}};Pl([E(URL)],Ll.prototype,`image`,void 0),Pl([E()],Ll.prototype,`widthInMeters`,void 0),Pl([E(w)],Ll.prototype,`object`,void 0),Pl([E()],Ll.prototype,`createObjectInstance`,void 0),Pl([E()],Ll.prototype,`imageDoesNotMove`,void 0),Pl([E()],Ll.prototype,`hideWhenTrackingIsLost`,void 0);var Rl=class{exporter;component;isImageTrackingExtension=!0;get extensionName(){return`image-tracking`}constructor(e,t){this.exporter=e,this.component=t,Fl&&console.log(this),this.exporter.anchoringType=`image`}shouldExport=!0;filename=null;imageModel=null;onBeforeBuildDocument(e){this.shouldExport=this.exporter.extensions.filter(e=>{let t=e;return t.isImageTrackingExtension&&t.component.activeAndEnabled&&t.component.trackedImages?.length>0}).indexOf(this)===0,this.shouldExport&&this.component.trackedImages?.length>1&&(Fl||T())&&(kn(`USDZ: Only one tracked image is supported.`),console.warn(`USDZ: Only one tracked image is supported. Will choose the first one in the trackedImages list`))}onAfterHierarchy(e,t){if(!this.shouldExport)return;let n=A.getiOSVersion(),r=(n?parseInt(n.split(`.`)[0]):18)>=18?1:100;t.beginBlock(`def Preliminary_ReferenceImage "AnchoringReferenceImage"`),t.appendLine(`uniform asset image = @image_tracking/`+this.filename+`@`),t.appendLine(`uniform double physicalWidth = `+(this.imageModel.widthInMeters*r).toFixed(8)),t.closeBlock()}async onAfterSerialize(e){if(!this.shouldExport)return;let t=this.imageModel,n=await(await(await $o(Bl.get(t.image))).convertToBlob({type:`image/png`})).arrayBuffer();e.files[`image_tracking/`+this.filename]=new Uint8Array(n)}onExportObject(e,t,n){if(!this.shouldExport)return;let i=this.component;if(!i||!i.trackedImages?.length||!i.activeAndEnabled)return;let a=i.trackedImages[0];if(a.object?.asset===e){this.imageModel=a,this.filename=a.getNameFromUrl()||`marker.png`;let{scale:n,target:i}=this.exporter.getARScaleAndTarget(),o=e,s=new b;if(e!==i)for(;o&&o.parent&&o.parent!==i;)o=o.parent,s.premultiply(o.matrix);let c=s.clone().invert();t.setMatrix(c.scale(new r(n,n,n)))}}},zl=class extends N{setPrimaryImage(e){let t=this.trackedImages.indexOf(e);if(t>=0){let n=this.trackedImages[0];n!==e&&(this.trackedImages[0]=e,this.trackedImages[t]=n)}else console.warn(`[WebXRImageTracking] Can not set primary: image not found in 'trackedImages' array ${e.image}`)}addImage(e,t=!1){this.trackedImages.includes(e)||(this.trackedImages.push(e),Hl(e.image)),t&&this.setPrimaryImage(e)}trackedImages=[];smooth=!0;trackedImageIndexMap=new Map;get supported(){return this._supported}_supported=!0;awake(){if(Fl&&console.log(this),this.trackedImages)for(let e of this.trackedImages)e.image&&Hl(e.image)}onEnable(){$.beforeExport.addEventListener(this.onBeforeUSDZExport)}onDisable(){$.beforeExport.removeEventListener(this.onBeforeUSDZExport)}onBeforeUSDZExport=e=>{this.activeAndEnabled&&this.trackedImages?.length&&e.exporter.extensions.push(new Rl(e.exporter,this))};onBeforeXR(e,t){if(this.trackedImages){t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.includes(`image-tracking`)||t.optionalFeatures.push(`image-tracking`),t.trackedImages||=[];for(let e of this.trackedImages)if(e.image?.length&&e.widthInMeters>0){let n=Bl.get(e.image);n&&(this.trackedImageIndexMap.set(t.trackedImages.length,e),t.trackedImages.push({image:n,widthInMeters:e.widthInMeters}))}}}onEnterXR(e){if(this.trackedImages){for(let e of this.trackedImages)if(e.object?.asset){let t=e.object.asset;t.userData||={};let n={visible:t.visible,parent:t.parent,matrix:t.matrix.clone()};t.userData[`image-tracking`]=n}}for(let e of this.imageToObjectMap.values())e.frames=0}onLeaveXR(e){if(!this.supported&&A.isAndroidDevice()&&kn(this.webXRIncubationsWarning),this.trackedImages){for(let e of this.trackedImages)if(e.object?.asset){let t=e.object.asset;if(t.userData){let e=t.userData[`image-tracking`];e&&(t.visible=e.visible,e.parent?.add(t),t.matrix.copy(e.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),delete t.userData[`image-tracking`]}}}}imageToObjectMap=new Map;currentImages=[];webXRIncubationsWarning=`Image tracking is currently not supported on this device. On Chrome for Android, you can enable the chrome://flags/#webxr-incubations flag.`;onUpdateXR(e){this.currentImages.length=0;let t=e.xr.frame;if(!t)return;if(!(`getImageTrackingResults`in t)){this.didPrintWarning||(this.didPrintWarning=!0,console.log(this.webXRIncubationsWarning)),this._supported=!1,kn(this.webXRIncubationsWarning);return}else if(e.xr.session.enabledFeatures?.includes(`image-tracking`)===!1)return;else if(t.session&&typeof t.getImageTrackingResults==`function`){let e=t.getImageTrackingResults();if(e.length>0){let n=this.context.renderer.xr.getReferenceSpace();if(n){for(let r of e){let e=r.trackingState,i=r.index,a=this.trackedImageIndexMap.get(i);if(a){let i=t.getPose(r.imageSpace,n),o=new Il(this,a,r.image,r.measuredSize,e,i);this.currentImages.push(o)}else Fl&&console.warn(`No tracked image for index`,i)}if(this.currentImages.length>0)try{this.dispatchEvent(new CustomEvent(`image-tracking`,{detail:this.currentImages})),this.onImageTrackingUpdate(this.currentImages)}catch(e){console.error(e)}}}}let n=1e3;for(let[e,t]of this.imageToObjectMap){if(!t.object||!e||e.hideWhenTrackingIsLost===!1)continue;let r=!1;for(let i of this.currentImages)if(i.model===e){let a=Date.now()-t.lastTrackingTime;if(Fl&&vn(e.image+`, State: `+i.state+(e.imageDoesNotMove?` (static)`:``)+(a<=n?` (hysteresis)`:``)),e.imageDoesNotMove||i.state===`tracked`||a<=n){r=!0;break}}r||k.setActive(t.object,!1)}}onImageTrackingUpdate=e=>{let t=j.active;if(t)for(let n of e){let e=n.model,r=n.state===`tracked`;if(!e.object)continue;let i=this.imageToObjectMap.get(e);if(i===void 0)i={object:null,frames:0,lastTrackingTime:Date.now()},this.imageToObjectMap.set(e,i),e.object.loadAssetAsync().then(r=>{if(e.createObjectInstance&&r&&(r=k.instantiate(r)),r){i.object=r;for(let e of r.getComponentsInChildren(B))e.setInstancingEnabled(!1);t.rig?(t.rig.gameObject.add(r),n.applyToObject(r),r.activeSelf||k.setActive(r,!0)):console.warn(`XRImageTracking: missing XRRig`)}});else{if(i.frames++,r&&(i.lastTrackingTime=Date.now()),e.imageDoesNotMove&&i.frames>10||!i.object)continue;t.rig&&(t.rig.gameObject.add(i.object),n.applyToObject(i.object,this.smooth?this.context.time.deltaTimeUnscaled*3:void 0),i.object.activeSelf||k.setActive(i.object,!0))}}}};Pl([E(Ll)],zl.prototype,`trackedImages`,void 0),Pl([E()],zl.prototype,`smooth`,void 0);var Bl=new Map,Vl=new Map;async function Hl(e){if(Bl.has(e))return Vl.has(e)?Vl.get(e):Promise.resolve(!0);let t=new Promise(t=>{Bl.set(e,null);let n=document.createElement(`img`);n.src=e,n.addEventListener(`load`,async()=>{let r=await createImageBitmap(n);Bl.set(e,r),t(!0)})});return Vl.set(e,t),t.finally(()=>{Vl.delete(e)}),t}var Ul=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Wl=D(`debugplanetracking`),Gl=class extends N{dataTemplate;occluder=!0;initiateRoomCaptureIfNoData=!0;usePlaneData=!0;useMeshData=!0;runInVR=!0;get trackedPlanes(){return this._allPlanes.values()}get trackedMeshes(){return this._allMeshes.values()}onBeforeXR(e,t){e===`immersive-vr`&&!this.runInVR||(t.optionalFeatures=t.optionalFeatures||[],this.usePlaneData&&!t.optionalFeatures.includes(`plane-detection`)&&t.optionalFeatures.push(`plane-detection`),this.useMeshData&&!t.optionalFeatures.includes(`mesh-detection`)&&t.optionalFeatures.push(`mesh-detection`))}onEnterXR(e){for(let e of this._allPlanes.keys())this.removeData(e,this._allPlanes);for(let e of this._allMeshes.keys())this.removeData(e,this._allMeshes)}onLeaveXR(e){for(let e of this._allPlanes.keys())this.removeData(e,this._allPlanes);for(let e of this._allMeshes.keys())this.removeData(e,this._allMeshes)}onUpdateXR(e){if(!this.runInVR&&e.xr.isVR)return;let t=e.xr.rig;if(!t){console.warn(`No XR rig found, cannot parent tracked planes to it`);return}let n=e.xr.frame;if(!this.context.renderer.xr.getReferenceSpace())return;let r=n.detectedPlanes,i=n.detectedMeshes,a=r!==void 0&&r.size>0,o=i!==void 0&&i.size>0;if(this.initiateRoomCaptureIfNoData&&(!a&&!o&&this.firstTimeNoPlanesDetected<-10&&(this.firstTimeNoPlanesDetected=Date.now()),(a||o)&&(this.firstTimeNoPlanesDetected=-1),this.firstTimeNoPlanesDetected>0&&Date.now()-this.firstTimeNoPlanesDetected>2500&&`initiateRoomCapture`in n.session&&(n.session.initiateRoomCapture(),this.firstTimeNoPlanesDetected=-1)),r!==void 0&&this.processFrameData(e.xr,t.gameObject,n,r,this._allPlanes),i!==void 0&&this.processFrameData(e.xr,t.gameObject,n,i,this._allMeshes),Wl){let e=this.context.mainCameraComponent.gameObject.worldPosition;for(let t of this._allPlanes.values())!t.mesh||!t.mesh.visible||(this.bounds.makeEmpty(),t.mesh.traverse(e=>{e instanceof x&&this.bounds.expandByObject(e)}),this.bounds.getCenter(this.center),this.labelOffset.copy(e).sub(this.center).normalize().multiplyScalar(.1),Ln.DrawLabel(this.center.add(this.labelOffset),(t.xrData.semanticLabel||`plane`).toUpperCase()+` +`+t.xrData.lastChangedTime.toFixed(2),.02))}}bounds=new de;center=new r;labelOffset=new r;removeData(e,t){let n=t.get(e);if(!n)return;t.delete(e),Wl&&console.log(`Plane no longer tracked, id=`+n.id),n.mesh&&(n.mesh.removeFromParent(),n.mesh.traverse(e=>{let t=e.userData.normalsHelper;t?(t.dispose(),t.removeFromParent()):Wl&&console.warn(`No normals helper found for mesh`,n.mesh)}),dn(n.mesh,!0,!0));let r=new CustomEvent(`plane-tracking`,{detail:{type:`plane-removed`,context:n}});this.dispatchEvent(r)}_dataId=1;_allPlanes=new Map;_allMeshes=new Map;firstTimeNoPlanesDetected=-100;makeOccluder=(e,t,n=!1)=>{if(t){if(t instanceof Array){for(let r of t)this.makeOccluder(e,r,n);return}!n&&!t.name.toLowerCase().includes(`occlu`)||(t.colorWrite=!1,t.depthTest=!0,t.depthWrite=!0,t.transparent=!1,t.polygonOffset=!0,t.polygonOffsetFactor=1,t.polygonOffsetUnits=.1,e.renderOrder=-1e3)}};processFrameData(e,t,n,r,i){let a=this.context.renderer.xr.getReferenceSpace();if(a){for(let e of i.keys())r.has(e)||this.removeData(e,i);for(let e of r){let r=`planeSpace`in e?e.planeSpace:`meshSpace`in e?e.meshSpace:void 0;if(!r)continue;let o=n.getPose(r,a),s;if(i.has(e)){let t=i.get(e);if(s=t.mesh,t.timestamp{if(!(e instanceof x))return;let t=e.userData.normalsHelper;t&&t.update()}))}let n=new CustomEvent(`plane-tracking`,{detail:{type:`plane-updated`,context:t}});this.dispatchEvent(n)}}else{if(!this.dataTemplate){let e=new x;Wl?e.material=new Le:this.occluder?(e.material=new v,this.makeOccluder(e,e.material,!0)):e.material=new v({wireframe:!0,opacity:.5,transparent:!0,color:3355443}),this.dataTemplate=new w(``,``,e)}if(!this.dataTemplate.asset)this.dataTemplate.loadAssetAsync();else{let n=k.instantiate(this.dataTemplate.asset);if(n.name=`xr-tracked-plane`,s=n,Dt(n,!1),n instanceof x)Nt(n.geometry),n.geometry=this.createGeometry(e),this.makeOccluder(n,n.material,this.occluder&&!this.dataTemplate);else if(n instanceof ve)for(let t of n.children)t instanceof x&&(Nt(t.geometry),t.geometry=this.createGeometry(e),this.makeOccluder(t,t.material,this.occluder&&!this.dataTemplate));let r=n.getComponent(xi);if(r){let t=n;r.sharedMesh=t,r.convex=this.checkIfContextShouldBeConvex(t,e),r.onDisable(),r.onEnable()}n.matrixAutoUpdate=!1,n.matrixWorldNeedsUpdate=!0,t.add(n);let a={id:this._dataId++,xrData:e,timestamp:e.lastChangedTime,mesh:n,collider:r};i.set(e,a),Wl&&console.log(`New plane detected, id=`+a.id,a,{hasCollider:!!r,isGroup:n instanceof ve});try{let e=new CustomEvent(`plane-tracking`,{detail:{type:`plane-added`,context:a}});this.dispatchEvent(e)}catch(e){console.error(e)}}}s&&(o?(s.visible=!0,s.matrix.fromArray(o.transform.matrix),s.matrix.premultiply(this._flipForwardMatrix)):s.visible=!1,Wl&&s.traverse(e=>{if(e instanceof x)if(e.userData.normalsHelper)e.userData.normalsHelper.update();else{let t=new ir(e,.05,255);t.layers.disableAll(),t.layers.set(2),this.context.scene.add(t),e.userData.normalsHelper=t}}))}}}_flipForwardMatrix=new b().makeRotationY(Math.PI);checkIfContextShouldBeConvex(e,t){if(!e)return!0;if(e){let n=new de;n.expandByObject(e);let i=new r;n.getSize(i);let a=!0;return i.x>2&&i.y>2&&i.z>1.5&&(a=!1),a&&`semanticLabel`in t&&t.semanticLabel===`wall`&&(a=!0),a}return!0}createGeometry(e){return`polygon`in e?this.createPlaneGeometry(e.polygon):`vertices`in e&&`indices`in e?this.createMeshGeometry(e.vertices,e.indices):new ie}_verticesCache=new Map;createMeshGeometry(e,t){let n=e.toString()+`_`+t.toString();if(this._verticesCache.has(n))return this._verticesCache.get(n);let r=new ie;r.setIndex(new Ge(t,1)),r.setAttribute(`position`,new Ge(e,3));let i=[];for(let t=0;t{n.push(e.x,e.y,e.z),i.push(e.x,e.z)});let a=new r(n[0],n[1],n[2]),o=new r(n[3],n[4],n[5]),s=new r(n[6],n[7],n[8]),c=new r,l=new r;c.subVectors(o,a),l.subVectors(s,a),c.cross(l),c.normalize();let u=[];for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ql=D(`debugwebxr`),Jl=class extends N{priority=0;get isActive(){return this.activeAndEnabled&&this.gameObject.visible}setAsActiveXRRig(){j.active?.setRigActive(this)}setPriority(e){this.priority=e}awake(){if(ql){let e=new S;e.position.y+=.5,this.gameObject.add(e);let t=e.addNewComponent(vl);t&&(t.isGizmo=!1);let n=new _e(.5);this.gameObject.add(n)}}isXRRig(){return!0}supportsXR(e){return!0}_startScale;onEnterXR(e){this._startScale=this.gameObject.scale.clone(),e.xr.addRig(this),ql&&console.log(`WebXR: add Rig`,this.name,this.priority)}onLeaveXR(e){e.xr.removeRig(this),this._startScale&&this.gameObject&&this.gameObject.scale.copy(this._startScale)}};Kl([E()],Jl.prototype,`priority`,void 0);export{Ls as $,ei as $t,kc as A,Ba as At,Ws as B,bi as Bt,Gc as C,qa as Ct,Rc as D,Va as Dt,Lc as E,Ga as Et,mc as F,ma as Ft,Js as G,gi as Gt,qs as H,vi as Ht,_c as I,oa as It,Gs as J,di as Jt,Xs as K,mi as Kt,vc as L,Hi as Lt,Ec as M,xa as Mt,Tc as N,Sa as Nt,zc as O,Wa as Ot,xc as P,ba as Pt,Rs as Q,ni as Qt,gc as R,ki as Rt,Jc as S,$a as St,Bc as T,za as Tt,Ks as U,xi as Ut,Us as V,Si as Vt,Ys as W,yi as Wt,Qs as X,oi as Xt,$s as Y,ui as Yt,Vs as Z,ai as Zt,cl as _,po as _t,Il as a,Gr as an,js as at,$c as b,B as bt,Ol as c,Br as cn,Mo as ct,bl as d,Pr as dn,Ro as dt,qr as en,K as et,vl as f,I as fn,Xo as ft,al as g,ho as gt,ll as h,_r as hn,V as ht,Ll as i,Wr as in,Ms as it,Dc as j,Ma as jt,Nc as k,Ua as kt,wl as l,zr as ln,jo as lt,$ as m,xr as mn,wo as mt,Gl as n,Zr as nn,Ns as nt,Ml as o,Qr as on,ks as ot,gl as p,Cr as pn,$o as pt,Zs as q,fi as qt,zl as r,Xr as rn,Es as rt,kl as s,Ur as sn,Ps as st,Jl as t,R as tn,G as tt,Tl as u,Ir as un,Fo as ut,il as v,oo as vt,Wc as w,Ka as wt,X as x,uo as xt,el as y,lo as yt,sc as z,Ei as zt}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js.gz b/Needle/MenuScene/dist/assets/needle-engine-webxr.DQA26K-l.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ed43f9bd5d03fd6763bf893e18fdc8d862082fe GIT binary patch literal 95875 zcmV(~K+nG)iwFP!000023hcexcHFkMDEPjToh#n5$RT^uFyC6evf z(NT+35v8KV0xKX&7fbBN^W5X~TR-$3=ehrCf5HBQ9&_SCfMiK>R`%}wurfxhA~12E zn3$M1OiES>@A&vU7xegeo-VfNqKf^T%;Q!f$zp#VPH%4D-}vyG@G+w_E9fK2PIE@X zj4r|#Uw(VB|7iXy{9JuQIuKjmUuIWNzJIB6#f($>--hA(_kR!9|E^PcSrl1$!5;A? z6ZxEmo1Z?spr1Z10N^MHg7|qJ&eMgT$Ir9F{3wY2lFt_<7uT7WRvxXVyqtd%KAxw7 z@;ogr!%g<%{NB`J2Ck`!}hl$>DKDZxoTrX-Ucq=aITD@vvadO%L`?+GQRm~%Pc{@tdefWKRm6j z{PBvC-|@$5O0bf*lyHRIp`^l;T}lL|>`@{xWuFp(g}zX-gugE+Sz^uyO3o4XM@la6 z$9qaHFzZ)JF5&M>N-i1QSt!GexhUpvp!O?f$jW8$qP*R zg_0Kt{D6`dm_-G7Q6j1c@&b!rkWIuGK{hdi3x%t>Ae$121=+${NB73GyBr*caqI4*QExJM4u}JM4oX zzhc&pf_y}L5ac5^zOA<0uR?9Lmx6r4!aoc08-n~U$Zy!>Pl6m{OP_?=bsq&eM&RFs z+HJoGa)K}q1exHnGcv)Zx5xx*c|#^xcGr2a9W7z zqXjQdIjySvoQ5x6{Pc2i@>EX3dCI+09&hberC$S0oQ zS35b&HqKL#@;4`+=|ogMC4#WvI-mM1oY6E}TVr8Cr{c$y;cuRw&hR7PR4h4*3MxDv z(~zZe8j5nSoTLTaD=#SDOe^XK(Lh(k!<VYi##mU`>nL8YbVPx&7UjKX%(Qm9`oTqG`!}Iq}1Y|3JgZEH5%np^NNP z%p(5q;n%KV9yiq-@}o%1@+#~_ksMK^u4{76+0T7R8vyvcm9`iZ>VREiV_8i>obKO?bW#CHJA35hrDoPknKwn27EadI+?+6@lai-`#&M$imIP_s&NlsxXi-rQCKNhe#Z-0p(Rx%pkB3q9 z=uzO8F+Hq~U>(!ghjEmC8jSMi@B^wzgAx7+f}5K(h~%_-`SYi1Yw6mW8fQkQIiq@< zsvJpca@FkBl;!hO_L-dM{dyT))#OrrdGu0HmQ~*C>r+^^YC{*(M-CuhPqd1*Mt#{bo9?sCZrSd0OOOXciS^xq#A>BAqXOol&-v zv%H$o49dd*;acM(GRxlJidMn3-U8Gsr=F9QPkkEZ)&7#PoSpiC!g7y>P*<(KhIOTD zr`_sx?V?k=z*=HjL+7$3$Eo?VI(SM2u2vB0nw#z(3p!ski(TZ47j#;3`ZAqUiDBE9 zc_nCu+Y9Gzf^{im@LH=mR){`sr5_HDMo6(q zocYN{RpqA)OTpaa?9{99Vwr!DSWRdkQSSbup=vwTbZt#e@u`7v(D|0k`0ywogIjQ2 zS8e6W*?B%}&ret_ihM%-AsG@Hj8^QCATaY+^=!VFw$`)S;5@yGpiBb=1*s&LH#Y-> z2y+RE`?Edb@hvkzM?Lc{>xyZB*lacIB8}C8Gvh03ytz3%s^|G7P1R9l(n_E zjT-SvU?SW9S{yfR0J_9qSC#;Fs0Q_9X}YdwDn2}_OSa9@lftH@9WuVQwt_}H9|qS* z%i>q5n1$1#EV++ACDr$XZ~M1TKt$Z8FH|uX(7aE{HNBh^OWkE;8T{Y{b&^0Y5?oAZsX@pqKJg z2s2uU6nYl83lL6AzMW2HK8>GKT^wjc$+q%JEsNcn)mSCU#YRzVNHzR zuqJ=WI6VdQ;0A?WL1oq;aLcPoY3q!bsKuY=Eb~SDTv!Ja?3p-@f&AbpA(@c3MS6v2 z*)8W_JdEfMcAn-|>BEOXtJonu>Nz0?Lv8OlR?pUw9k5!j1RTT3+M3@1x7OFJY5>gkfCksPE0pt+`^jdxEHaOk!h=G1uGw9I z>1MIBxIM^&Enoxet_EZ+b`zqtcFe4uXssR7Yqv<36>|FVV7;?`tNAk;V!!XnfXMY$(a++xLpM)Un>kx$9A3@mHB8a%TiLdMEj=PSHDJ-y$nw$yBSz5ed zZzVS%R7XO=)5%%Y^hd4>RO989$4bv(juOHgq~)=7fjYKx-}0^c`q(&ZWkpG~jD2}cdnjRW zJ8frJbznk3#5gou=Xg9A2DcELLCmm5=kTE`4eA1Ab!3fLP0CBJKZl!v6(Un0t6x;t4_fd3lB705=xLQA8=n@geAoUF?0O< z+P%Ukv4@+8XVaT0(9ZRsc8RM2($tlANK~7?U3Xb`T?^h2)UHJ8s++2vgT0Ydsk2>P zJ(AS92PIKUu5n0@oGV`3%@2rO@y*Sk_k;=DYG88bv@NGm2aQvGY+ub*-RtggtE;1P z?jLUZ!4bLS;ewZ<1g?N2o!fq5q!lYlw8(TD{)Bf*Si9@q&}|BFXSZOp-3ip$ZtW5m zw5LqIs1hkqK_%LOmcZlOMiTj=1uy4$MWvYaxLhcy6sJ{LoYT#;C{EJJnaWnF*&Du3 zVWnxN0V3F?f-fha>M+_9>+Ff`Eg1_XQCMAJ%oT|0Qq1bsesga5Y8YetW8~Xkh`n#+ zZ@(c3?SaxdusRy1S+;#nnb-qNWt98L)GPsll{UvzZu# ztF;PUx+N>t>EkgX=a!mglU|!&a{pOU&nscb=dW^G>;h9SN9e1rSxH)^nq_(@yVG4M zb*+3?a(5*xiQCsyF6V1S{T6r(r@lfBDg2|E62I&5N+ z<8YC3%7m>hRu>d~M$OZlZKiX|Q=^5vxj93gLx1nGw^&R2FeFSMFNa1GvW~H^zhE@J z*0k8l4NN99oaTj~d<+-OG-uE!MkgrJ!;A*R%F-Q&>CBmA!hr#7)zAl4uU@tOd8Ehy z%2GSLoU3_g`i1ub*~2WabnB20-GN-}mYoNC=i;C0_di4ZzSC&mmswsW0eQzGznR(K znjX?{uRKk8E@tz55)Y5!#QIJM0_2RQJYI)9{3(++mz5~z@sp!Ckw23<@ZWKin@BEW zS5rWX1}YOBAcf0{+QejEkr|pbv=QjfDyUjj)gn(DMNwXCz<6PRx6?)%)To$Bk_ec{ zHw<-XprBuHT9heVWiV%#y+|i#r@UM;Ol#`~Y*JnU&^R>N?-vhpDa1-OE|nA(@|p|FkFWzvWT9kTG(}J_ClHmd@F+5 zGGFK!NmVZSgjzk(DSaJ!q)19yiA|XcsSmBfC9=_@ezOJyF%s}jsUE^^)+I7}4$Y0& zC4om(lOQjzHI5oMtG-bi7OW9M$=Xh-*uyfKe*pj-3RY#*!B~zGyGDBgRV_-NT`f|P zr^SncvaHQW*m>BF0}Ok9peD)zH3P5{b%&0@Ht{|3um>`GE3ZV#CiH*`k+ahZ?)=!b zdCqiRyJuDwcFYDf^I#FLOlMa!P!|9MWJ_{Yub&=)Tbu5BP$vs<7<)iV6@X#Ux5k2F`nU)5!W#%Rz0{qHm`MFiCao&#Aq!RuexbpAl3 z0`&iBMUz>cWt1hO#th8i+~at#esi-C=GCk6BroU|JqO8uU}W3YDc~}T#QoGLD0>}5 zC!D5d5q9BRB55*elK`DTY=rFWb)~;=8op)skXD}q;^KODa}CjJYE zkD1#G{-#3q#TV$)VJ;%b`j9(Tg1Ph0R?IqKVY(D0;6U7=oOhxsG<&szEB2x8zQNr_ z;FaZe$(l4R7!K;FKf^-I4%t^%z3BFi+H6^6)>SL+qI+Kh*44dKD|Oe0-*&DQk5Q95 zPcQv-`sh2wYg<v4?RGUBA+Wc`xTYgJ?U0Ul6^Y$GJQ=+9tv2kii&+YHFqeT z_R6|fnK6aK^=?D@s%$avlDvEGxGk+3VZFK(fE9j1FC{aYr$u7ZWh{%*tKMRT6l}Fi zNWs>qWvYXT9(1pqPC>-y*<=Ncc!XCi7vK*^vyqoPv^KJ&o1M9QJ{<38`Yi7y`b^Td z6nfza(5Ioo+n!-yx*MiTf(MF(>Z+^{CG&REx-#54t*+R_YZxIZbur8+@|bY@>sV%i zLc4`%RN8@L)vvjj`AIlmJWYa|8z=1|Jx>D5=Cxs0Z*CmU*kOZ-B|qw3$UvRm;l+0= zPYIxkD^0FP$*mQ+c5=5iNlCjsXhI(<$~Zy9DQGagUdDU_Cf=t(I7wm8x=eV~J>?v- zvw9*L5!LF;YhZ+4*5T@lKpL>P+u%JjD6Z~g=p6(2fa8>Qdn*>qu0GKAj@p2=xr`S1 z!n%F}6HXlUsKUL0b=MjA)XSON8s*e`MYB9T5S*rS;PT#qky>jzrv;q7cwGcH3TrE0 zRr`Cn-saD=0T(1*!i-lHw0m{Bi92O%mA39$n-%`{f2o?F9ESYSy4Zf@w> znvu-`P|NDF8DSf1U}f<}xN_(>H$B_5vy+4CRm){l0lf>12)1WC&eCd|Wzzbmy&Yhp z6Jj%Xr-s$Ag-Jn=)JjTw442@X#4CB5h_>ZShR?ZE1ktSDikY=#9C*w%SrUn?3#6JH zTRx;+om`=jx#h@hqLTeYt8uzT!b)5f6xHjn5D6<8?FW?9|8<#BrDrvoz;bRXo26NK z0XA4;m`)HJcWdhJ2A{~8j9bzL7tHXGgY{t4Q@6H^a0m)&FS7FFq5$I@TgGk&xDgce_`r=xE?9mis?>ExMVc4Lde&h7Q%4tQ zllFdpFE}E*ZJV^lbnQYLyY03u`;_eBPEaWay-$s{Na!wjX_6;dqkagRiN77vx?SA? z*xZF~2h>WK+h9Cd#Sgn*i`^Yw9F?b8X(&y{-WIInhD4$fau&T?TZ#8sAi zDbV1W`Nl3bzYP&zl$AKlVKZ+-veBmk@rvE z`W-U}=i*mSptZ)Zr$D_|vr^098$b|>O_>blg!sM7_RDf^d*J1IpSAlO z*fgMTMEVNU81=8N>)H|mck2>IQD@Q*wjo-Mi`S&P{!*@{S#uXPuA$7RRmDOr=17n% z73ql8WX8f@mUIbfnA^uJj!@L!!Zoz4&8J2w#v{S4X(tvl>q2&&~M@ zZVzyD$#ntwrRn4=ea_Ou&)giK_@PMb8y@zZ&F1(Vhw5-4SPD-|Q~hh+*pA6cVbE{1 zBvI7{lp-`lSL2xM5su}pZRsgRQ2Gos=@_?5y7VMT#A7u>tPy35*@z)psen&N_tK~< z^BAWwxTK7%9AnIhMwm1pX{-#6L0EKiv&{pP%g8iWbOh|dPELz#1b&;E>YJV`+XN60 zYc%w}Ngnct$u|i}zDXWZ_$5!gG8UwY%kcPEdt@TpYsrABfo*wu?Qip&n|G+YYM{d4*J}(n=WS!SInNkzRK%M|`L@J9bXU4sQ0Tb8>z?L##yH~- zlW#f_Z`6G$64@pVTn=}lQJ4o&XV48w7{2Cka%6e9TZ#CWACbHto#kElPJ>|Z9^e70 z8m(sJi8EM_Rv6l1DRK?gi4C&a1pjby6xn?xG`O~~%0;GqI$3h?+eAe2GAi)+O2C%b zIA{-s5s*FEvkhs=+;f5$1dw7$xJf63lSC2raYDdMISmM1TT2}m3c`W`sL9vXUa8p| zhc5SkZo`^ZQlyRK)Sd!|i#?nip&iLIKV5RrOG7La%9da~B){sQ&K0SVt5r4qfg2=@ zwQzQZ3KJ6bq}izRS}%X$R9KT8c~yCpE*f&V%S|kd9S)oaSg@&a>>y_OR4a7%INpHY z@9+6k`!p7%5;@K|od(SYfWj3NCJYpuYTl$}$_@`DMTFA_sJm3Tm_F?_eKOib?Y0yu zKNw#+b!m^*MJi@^zCz?eQ63=K^8<`uXd)L{ar_o@PUlh;Q_+-9W^YrT&MO?R&Xlx| zq2wT0Qkr$5L5Jl}Qka8D+lWTg(Z@LJ%(PDrP--oPb9#h7e$3wLFoh zhcBMT!?Ab>vPQzk6yi@WfIWCR{C;GAeMc%=TD*{M5|gqh`N1Nc(0ECWMH;QOo=3#b z{a&j8QKFX018#T8sRyAly(KS3Xnl$6FAvjw>$;AC4U>R;;kO#$%K(T#we+5Sj{eg> z&`^&+ds>XGq(h-YsmYp5Mtpb_skD;G%3r1Yj4G;}SuN4<7}W|k)JB%kOkFqwBI@3% zwzTG}U0E+sx3(3{T3ugN7l1U^jomDg(`@2(*^_2&%>mixU4dv5>JpFGm6H(&|2nl2 zk*Oz*#-i;!RJ(DM>>jDBtDR(DPvJV+)2ZHx_yfJlD~zD35UwrhXy&xx^E=mJ8?3I$ zi&ogzw`FeQ-yVpI@yt@vVwJv;WztDUv72x}_XTEw>SUCU^5ir0%DJ0Du3Y2m^5pYK z5IG$qrhP_R%}Wn_8K_Ys;=UAZYZ`C$f^~YqOfRmR_HAJVCg}BKjclRak8#tH@%W<% zHzj*$C2MX2j>->hhoSIY%E78w8F?jg*pG^`JbNTC>yctIz#Zs=?GE&#UN5-4MT@e^ z(E||3IIqe3uD>M487!Fq`6SI`!$!^~8;hyB%=|>@8Ml>I;>5WbrO+B zkwI-aZ0A$oAFS$+BW1G2GzJFJ3<&P;FL-Ms8Yi6YIy-u|77BFgX}pRo?9rMd3a*K2 z-)I3#4^Fm>u8|N-AtuLWxn$yhTOY>p(A`EFbv`LH>8mw}+B4iTBkrF_tr=68vI@VX z=&OSSD#T>77lUq+#0jevTSH*OX@m$T<>CrGT55Mn%|3LdPPlGu%{G7DT`S}M<tPR`luh) zRpZgJXPDJSc3Gj}M3n?&zkTi)1c{RcrTh_?nm(H7M2G_;tuCb04#2ql^+;CQKu9%c z0(ZhkN^wcUE#rdhwvbur0QbJ4{HHQ!0EGab@dFOKee10IRiAYrJBj!0mLoKh&7v&l zN^ISVm!WV%f@wXCfsRF8lb5~K>!Irw{Iw*%e`Rbbd?4I6Kj-h1Y zAU#L9ME@vouhCHNFIf)9@Oy`~*kzM)4p*ooSHED!-z>#xiK(Uf1(W@|%~|}^<{duM zYt_T$B zP_aheENI&~7|X#>HVx$)TT~ELU~wEL4USrMb$ye+vO1h=S>Gn~y>T|xjs(z*KKhzr z*F6zn6t`V17Z|3{!3O+6dax1tt8uZ}0gTww2hm}|5~Q(epDSO0y_Qf+?G8_aC4WJ) z2e8ot1_(diVQfA>Ajw}o?CE`luqLHgxGKr=vfOULNop{UXSMK3;%LuVzv5!*m@0r@DwYS!>i3A+_p7AtE7^)>oM#V{N6AAB*e@Z_ zew(&nsV%{h<Z)2R=QO}0WU=v^~jrpwWHhz-YmuF zm3iis98>~JCgtT>5*Pz|JnsLoy4(n^*K;aT)Mj2w$}zgn^b*+&K!&hEY}& z!#?*2L|RQzeV+9MNp-tzfl3;Wj4o#R`l^Lr(k!5ftKHLV6GeqW6czgDkrTnf1;&W% zp+3C8HZC+LqrQZ?wQCs}1pRCG!x__E{cwN}=@DVTI;`%DFBI!F#?Vyfblky~!C>G? zMh~_`CGw*1BrNf=lKoY9QunIXR)tQBfq!peN{X5ztu=UP(!`? zhKFFv2*Wp}VySBCZx3ji)-C4D<7GMbQg$^jIVJr=RlOigg?F_hjk&95tuq{@7-)cY zqjEu-WPofeX+t@gb)H3P{E?djvPriam;!BdnP-PjQuS%B2yUKXv+if#CYNEYaD=}ZNoL0uo4sI}{n{tac}8(t(r z#0F&EQ73?t7@p+HFeiwp<1?@8GM5EAI_^EhUT;Eq`-E0Vx8WTffDO+43C~X`bQ&2* z;9Tp>eU#zY_zJgsv%a!7mQmV$JF{dfy5oSGumTNID~+g?a$h#g7(!cXXIV))D>_t8 z*YXf_f^OIxV5DLiA((RDI)$t2Xys9h9Y@OY86HEOfPubuL4jNgZ* zF7~jsdaIYbu6vWOn~|8chY!4nlncsCFo3tsZ80D%Ky_oWAt9v;C#iG;W=yMq40ga> znTu7-7SeP|;p98uxW|K_UV(nA=U_U$?<4@^y=DOczhW8y{twIp6k9zJ&Oo&BUi+T> zc6)o@gVBRuUxhkms$%PPg6KnaHUdu(^PM>Qw~24}8>t?FTiMUb6bD4Dku{Z)FYN88 zU3Ve4T1JYx|H!*&0}3M60X2wZLNJ-{I~z{ ze|lQpg0+Fo0toYTt%SB%&dy=~Z~xoToX%*CHwu+F<u10Fmww z+M7noxJ)H*w^x@Eyl)&=(hy%RVIyfn0SyYd+ZU32>gzj60gGy0QHa1uO1C50<7l#& z?4k3Xi*Vj^=@f>B^#ea*#>)%Iw%Z(*oJjArR3Xt!4alsjYP~H)f;wGq>5n4#6WT!3 zVWwUXh$xpu)u{NRjli24yfZ*gf+xHt<^+gQ^C&lW(>d-9Kx=sK$583E zn!XmBEXl+lN2WW(8~4Ehr;0z0N}X!H9+R9Zz7CPJ$BXYWJbj=mFj2Wt1a&JTf=??7 zS1)~x>^X{?H#*wKM*f99A3A4Uo7H=8O~>luGEPvY{NP$eD$D9*1k&-O_M{mH3Yk$Y zvZ}FL&!?!F)TYaKb?W9ubpc+o*B#JOJW(#N_ID-pym~iF#RjLZOR>w|%_uaqAtmC@ z_H5KR(53DMT-mwio`T1D@=#CI!$h9?&DGdt^3f1w)FlCEKO(JzC2xSwh`|q{^mS$_ zbiH?Q17};Qhh&zPI`2_3Q1;ciUU| ztQGo2-hzqIEj-T|y{h0rEDTs1o~OlUpHAcU~RUZy&n}&Yg!xrao@! zTcH`#iZL1gjAPs~0L|G_`!qHS)@K^P)eDOFP9wg>tZZxII7e${V?2X5d#z?(Ta&)h zN+n5KI>;cfP(bPKHxy5=rPpSMAy%MwqxV?eR+5Lg3ldH#dzd%3CvIL(b8uD&@xSk2SaUdl3$Yq_xom8VLN zJw%POS(z^N0M65edZk@rPzWrKpAatz>L4L2iaCa6zwjms}Ef=CwDvaTrd3zje zz#jbbk)J=~ksq2vw6_l>L{k#Ev8g_Xgn+QT<5dHZe6$K^FpT(;wO_Z9qNrDtEnh5! zD8Z(p5eyzPDx%{#Wy=%HG(IUJ?}(h7E$2Hl;KQ5Uw;tx4f;E%3;Iyi|zn=dUNP#F% zPYdcn^gb{E`|HF`Ra@(EqpwNK%c9+&>}T{UD=%0=q$Zg*p~NYWa@R3dMG-$wTw?d? z{k!dPVj^=xkZZ%AP=TMmn`s9GpCludrx=s5W;@NBS0mdCu8FOE%dk$0C0BCv&a{p^ z=&<+ZwfAE0{eIHv=`gsh=4m-uR;#Oi|5{hR^Jeq?LAQ2zEw%ep0AS6{P5c`VwdA`A zQm6650Jaeb)9x+0Qs0Ui-KPde&R`|kg%L`H&5so3fh*E+u+V~kxq`f)F_)G z^AuvME?Cif?C7zy|JexV`Gl8?S;^>I%IBa#FIn}HrwpiJFxJ6M-4WW@b3dFnJ|lfw z!I>^Avb1(1-)*L1^MH2p||(Q5`a z6MdPo1G1+h@2zb1w%XJM$U85g?a3?!rp8*CcBmg~eHs;Fd&Efq!QXy+^BhXbmY@v7qZ;-IkT7E#~++1hV?G8tCX#<;^mOn4Rz_cPNcaBsR=|yHtMA za0^xX5buOe;Q|U*EE(@RufRTLR%W4`6yUV zuxYeot=~kAyfWiPCUPRv`-t^jJ#L|D9+TK z(A5rWUB4pp?gTW}qpd5B)#>JZGU`?9$XXSeTV^NSL#~HsniTou%y#rzeKok&c!YtH zTK5EU7l~|w-O!txGv+5hz$wj6pWjWjet4`vLruOAfxRp6B{<>b1xjlq(Sm(r5e-p# zC)9&w!CPBeoQ2*d3>m_X0j!)D{e|M+D$h{lW>^2$%1g5h?}aBRHYU5!PoF{%W7I)+ z0RmS@0~so)`Q|Jyvd$6*%{$`fbc1DzlNxsxwiR++UGr{%z@Y411QEGt0!eE`NaT!( z(o@`}oSJ6r$*2L5o1g=swwUi$O%lM;PJ8g&?+E@qE~nEZy5AXmbK}z(9_4E?!T-`! zvud#SI5z(ryo1-zFbdwXT0-D0fXDz?i8~d70e+#t7p${S7U?Ms`?hk<80GIQV;ehj z!6`<{{|(-}xmT!z7{W<)aE6KvA$WeW6ckN>5&IHYwJw55*18WqsO#ndjy5ivU==-F zI?(bRjLE?!S8eWi*}VC2d`iVs!)Z#nDj!&0e0l?jkYrozX5g%C#G`I3!GO4e*RL!s z17xYgpu-QN!=vSZ0%A=0C|u>Zw`ix%7Vq&Id9E$Fzoj>dYC4ha>c?KR>`Csbdo<`@ zBO^DW2qoVu?^~@d!fQ^0%q;EOC$R{7Q$k}2k5(q=*Bul;kBA^avSfnSk zuwvKcZ;{GL3qfN?sUM-lz=!^I-Podgycr2IKZ%|T9@IK08>=1b16)4KEqmov=_kvG zKwo1HnE!M*?2{V}ToP>Fys#L>w%o|EFt|^T_KZzIqwQ|wjJNoBYGnkfj$!FQ_TN13 zp+f<+!O>U*`q|Dg7N#vh4C;qfOcE7tLi;U3JVRwGz~lbrq^>pMH#ffY>z2=#_5({D zBD_({t#?Wo;Vqi0A16sjBKQ)XQMvsUd0YoRR*%OuJM_Bug4$fytOsh*guKS(wPTb( zC5G$o8@o~FjIE_vF??;nsEa^ju9T?de!CJWnjkXk;9rZ6?5L-Vw7nu!zTzcM&1kn2 z5B5{-G+y=2=OB*FLzCpmAM4iq!i+F@@;P5A@RrEVtiAuy$TU} z)`;$eZ(l;(#}|11PyN`RpdZT{o!GowiWv~*u2L+|3JTu1z%{}J{qQK7V`M`qeFSZq z`~`uUUO_!hXu)}tvZt(wjb5yx_*_l76xMshSm7BShjIXKrthv6)MvTFII6uYyK-~$ z6`|T{@)Ud#>^Nov({k(Or*6QnK|FN#qt%VEqud^kHP0{rb}Gl`+GI>xD^P>FZa~{% zi@zL?hjvtey?jx@OAXc+y)({M&!Wg!Tb*@js_HITIDGc76;5kihe1NDFfq{Z%f!@L zTcgjP4%IcY4?p_5u4Z;+9Il?Wf`;Tl69=<&K{t@M_ibo6O>`(-4X?(5zm3}9|T7vbtpfy*c=b5pj6M@W1;L4uZB9=H0u~e^KVU< zO^jZtb@hLg27L_$T19&X4o&+9D3Ke}&p6q|d$v$aL_Deo3(o={VSja>v1~JJ|k+&_d zKkn~99-3w~QWM-_%e)nt?vRGB={e=`@F-63S3)51g_K9d>ql{-e#?xF{rJgIoNVmN z&ky_YcSmvZL4EGzyb^CIuSypG%Tb(I-xA>6Ea#a5SpWVgPOJpgKvBfsJ^A~0fB*h( zPyYT4nkotii?__Juy~mv7256aWl^4_GIT4AUZvGpyv+3|ZkD;-aP%YkfGP2h+~81R zjlu%~!}>tR;+=FR_J9iSsfQrcBvbv}2=`O!E+)jfe2M%1}hRq5;5-3!$wB zY>>71|8QX5p>dD{^1t`BBZC_?U3s+L(^4B~Xv5TGny-$jF7Ju_$_hlS3ie#AG;lye z8T|8uJVN{|59Lw?I#%=)a0F}8)t=yE@3@v(9;w4;ms!Ecb@f&(a@#P6hE1jNs9e>F zk#EC-Fpui#aFzf1B5zuD0*ps8xV)9E16V`2B^9@@9RblIuxgC8+fC8L@h)=vtbm|{ z0z-8fYRBU^VN1}bB$h#1T2+(_zY9YYm2f9!q|kc4tOQD&Jq^wSV($m}-U*?hTq=o6 zoWKOhlz<4^iZaW`erG>5Z?q@q1`3_cKzuz;<}e(LaQW?EcsZSl{e{?9n-=Ut|kUdh)c;7;t_SyN^V|4o zuwuyb^wRICdL?+y{HLp+5pTLI1}4h~Xq+dD_58v;HCmVp=-eS{0MuMl7n<_9Kn^H(v%KMk5&eN_c^ZBAFkpxDD1@gCHpI$~qfBjPh}Ee>Eug)I zq^yE+N!ltXxvVbTIsPZz`7`Lwd6$(_5$4OH$TKSj>tI-?LZp)!&Gz%tJUc0~D@l9u z>K)HdPh~XDYL;@Ey#oBp(;|}Qa`5g-d^kLcrgLT@?yF$EmAId*OHoPOgKyawlCD@I2Ro%rwjF@N~!U z4zq1a1%?qjIancs@t~p4aXc8Vts(TeAlG^IbI#}-YDD`r!fSAER`{?^){*1-FM}g5 z%1Z}9)HPVfefh7CDtb*^>wb%o2C-mUr$zEugufg9%_OI>>XJz*p)?*ckyVXm2EoS7 zuE(U~Q-rE2NR+EibY03@L5=5CDtLaWG;LKpW&WW!3heffwPmfwFfni1!SB>+q$Fs_ z2!5p!MfX^^#nX#lb538BmrwnQtbhNv@Bih=v+v0h^MD$lDq30{0GEsi8r_HF)?J2(Gj57|}+2d!oh z|M8q&%4p|iC+ZlG_GTQkp2u@{)va6Zw!InzT8h+k3Z4;!zuMZkL2O%!eyQ5*&pihz zT)X1-KG6%+X*sxUG--ygeFVf*WN6npy$r}(Wu^)_dvCVd-6BKVgF`=z*Alw5WP)y= zG-{bD+d)HGLuj*R?e2%Cw475=Z&C86PDN06BgI(Q2(}%t1}}NJT(m=R*e!W;TFo%@ zqz6WL3-7;wqatG1iwW9-4whhQ{olVKaP*=1bWwN{a1r5@d1>WMR2!9YE9jV=PnY0f zV2sZ_-;_WX1OPdq>g9?|KI42*a(JcvG|icc!J)%CS>b~qo~TDd-Ipe^vra)96osO9 ztZ?tja2G9wR2a6glM~pMwSIscpHy$XryW-1oT3>`5I2S!Uv(Q$!w0f?896>@G+-S+qQ$|G;X>qknQPig%NJ}D}m zmb~4AKa|1NKD0bp3NIIbtvp6^F{9i|u@#S%@DsO&ahl1>CHTQiW)wVxz!mZeqW!2# zhw^k(y=z<^!EFX&0OhAMp?f9c&;UkzsdutG^-5^_BCqH`A#82#IhVl^x$L`&&}!Cm zw{St_+`EU=LC+!8$1OJZjTwc`$4~x$VjwruMYSww58;y?Q}NufyUqO&PV9r*PV8pR z4(`GIcfe%Z?$mDP@xj&nq%8bovaCcoZ_Kqp<(&jg*q@7BTG)XL#ueq&;bwjm3k>4( zuBl}!&)$OR`yRsB<+pPahRy0067|D(`H?0Q_yLMK;|@S85y?NXZI5FK39u{hh|qYj zJ`(bcF7<>!jUC+jr_}DxklMXzY^?zM(}}2NX;xmqI=_(gU$0tL&XrdzI`TGt743rH z?Q<9Kqox^{VH4b85GTV#{+*^pMU#dpka6n1*;tD55n9;8S-vT&JCL=RpxWisYj+EX zr0m2u+T8Cf$J;K%PvG$)(>q;hEDTlJ84G~e_fhbEZ^5P}>M@WG{ zyKU{IqkXa9Mn@&%;&X>b=ixNhjlzYH>-#U!i*k4jvgQbt25nm4H>QNb91>c6l z;S-RnVA8|5xt{6iawR-|8D2hAGZZ|2Ldx*!QAPYR{Gw971dpEt-AWp1T@%!erEL5Bv8V}g1tF%cS)Ng}AdfFZxK%Q- zeF>MORYc2Z3On7GZ=JL`l#=P!I$KvkyFXSIitAhL_Vl_1Cgmymk*Vgyz$0a;oQfKn zPTC1QMRj%nML@d0cnZNzK%$#3=INp`j|#L;rhlL!ewxF7|jUZ^Bn(nU@Qhfzu5UEmP*v`9fTIvP}$N z*)@7y*P8{8XDJf#sgH)I|J6zEW!+XnE?DBmryP6{%RMg^OaloP{1AXDQQjs?IwQG!cAUBCltow?d6e^h4 zvz58qprHciyY=CBeLy99fsw_)h$Ank9V_1gLoQ&+a(EiB=~H~4(Gc{eJB9l-kSxmM zG z3h7-@c(BiY!}bnJD+A@k&au(MsTmoe&4k$xxwtY6<|fKDpq%iS!G_wm*2LE?^nF{s zhey%;mczH$zVG(4BR1a=b(0J&S;Hq^a`V0+adP5~oP2IF-I!2_ufH!!K1i6QqoR<9a48WQ8}gKTe;qFzAQwp z1$`4`e%e=$U1}vKt&ZuHtu>wieT8pl(04(uSkc?-K*&Z0NpPPyl&N!m$k$siQW(+r z>kHDu?7OJCbg}bu9?AReMs%-hCnN7Vqab9S0|F{rps=Z(fXdA+^8wYPmN(f3$#Lsg=~ljvIF>)IGD z074$fbYG}*!HLfS2Il3GLljoHkiKeZMi?lZRK39K*=2d$zwF42 zzEOe^j=gA(2%m)%!t;N-PM7__-=sh?YPY{M_;p7BM?~ksqli>)WU)f@b^3Il!W8Yi=|N z7PwFGG2MsjFbqW8`5RK@0?1VP8&cKu%VhNtSR44znwldB z8{eN3A0DkNCGT$-vA_yfUDsr{CtlajlrAt_7yOVhvwowz#86%ELniG@0X7EfQom)! zE}L*POFKx#5^eRK9>qx~RRV9(HZVl{>ZIzLfy;=WVRi7c)!?r@UButpjX_GQAq4uH z-3S8Jfxl}90Nd-C80CVL;pA+Y@bXQJvvoJd*&gT`V1D-S422|6YZN#k_^W}F8Q&>j zEAu7lxH*nm{Z>tuLKcD%>kp@l%>G+b&;r>gF4C(CW2niWFavvf2F!`LpTpqwvw!lD zKW{fj92x1z?vYLf?9i!0ld7;oXB5=rbdW;BY&I|*T+lFCw;EVUoqf<#g`IzD6$e~0 z-P1c{Sese+(l-lxxmlcm?a$@^Qo zSS$ZuOuk(ACg<;UGZJKVUgYr#-i3U~QJ;c5&$Uc_SH399$r+~qO4Bni#02a8cjcQ4 zMtRkj0nU#sE#SFSVBuUCyl0e?v-V30PIKzTV2Ew1fX&h3!U4k$d9_rNn3{V)b-3@K z&Z{5G@(dzmH*BHoggr9VhjBQANMFHt3{U7}85ETTtplv5Tm-M>D8o>yL^%$a>^epb zlbT(y@C4V7`?mn{Jfk2&kp|cq#>RurDP+cv{^gxTYOlwNwX{~IrwX%5t4f>os>zQH zbA7A@PZ+@JSQ=d;>#T6IdGbzvciy|h)Y@T2R1`cLAf}o%rIo)1c`;dn=g4>zq zy(?=9i8E+q3Shkygfyc!Ot4#8K1df_ET@1W7>5^h+#F zHOQJ=Llq-Rlm!847aXx#BBSY9dtGnqmf9{*Se12N@N$ao0vFpJmW;mG2Dd{nPNaOW zu$Jk%JKbp2Tv{OgW2oKrUNur3mKv693wMIGuk_vk9$v`qX_y`e^_=9XuBg+hf(3|8 zaD@7qUK!66KqKw$fp5G!MS`#@x&35@dIil{1KkyN6bZ{Xl1l7IveAQUR>u#nMV$n7 z&szm%Qlvgtp`eOe?C4rpoFq{L<0#vt2o`P!n1?|RZ*CHWj1V!hjhA`~x;YUIOKpeC z9>z%|$`ROsl**j8Cf3&#Jj)KITML>t1vnOviMoLLf&#UPRNjh(Cwm_R%|O(9<%#l# zX@+kcY|NB3t~Uu!;Hf87n;9s6Ml4RSJF-`&^3RF0$IbZ4o^DcVwF6u=0h{Xqj!?UQmxk#hjgKOnK7z64h#;HP2CYZz2-!HgNa{uRRH z!b?D?Jb`$vtx6SK078-eniYif1pB!e$%$n>k+W0j??!&lZO)DSvu)uW^C1kAMXATl(#^V5}r1q8CgK$3R8YqB05#m%A{MCZbPrC|9iIyy?)LohR!D+SI_qE zxn>A++XDUfykYrTHRjsT;3rcwwTu4LQ&bN(4QldRw=*Ossq9dxBho7u7!Y%omYI!9 z*2+K%Ld)hIt6XERAur`1j&oaeb@(%SIXc$%n5Gf*fGWlaQjxvRwRM62X&oK{iPNAbZu>6M?$qk!SlFjKFSW?=OA9fzaUIPkXel1ZfBPA$%tD{SrKQ4 z6zS&?VezboDZ?M~{jo9AEaPbAu!GWSU-5)>KnC-*wZT9P;=zFGbHtycoq}mDRyl-r zj$|N^y@$TG!H}dOJN#8m#IJH92>$BnnLNEej)XbYRnn&>>59lB8=&-2u97}ANmsR& zOm@2+F~doiT4f{`^(8F6C+Q_+VI*Usml| zW%=f8DWyWj%>&n8vn9>$(*z>dE>_OAD!bdNQrl`$$0aG^%Gy@TI44=W1dJq888c?} z_9AmIhjI4U+S*cYmR3;tMIgKBEv?-Y0dB!|D(nq(4O6*nO(j`&X3`kJ!8n~qx@Peb zFbeuMTU(o1B*5v@Ok-xTdjE)VA4+3X2g&*=gu&~y`uIrnuTNmgAmJ3+NH~SEh9&(J z1og}qI@PYBlkR19OE1^fe7SkmCW9?3T3dK&wyb{u{dZxN=7^w%we1fQoa~Mb!uL{uX1*}?>5qirUnCgn5IWs=x5%H z#A@D)$fO&^lA9qdQV~y;4FFhx=9Qevr&|MQ0?Je84O+>s(@+fs*>)zQ6t~WoG(axy z_&Ce64RGiLB6fV7L;Mt$78@$mEA2+Bhu-9h32b!3al?Ci)Uf0b_g;53gA+Pp&Ufj+^QnA+*t7S~bY96%a*5#*)f!s|suuV;qBoMjKZ4K}hb8+-s-@%gKaRm5lLK zlqq<7t{S#GT9pX58rP+u!P&bz*_yeS-m}*r^j@_%$wP>$CWE0RzKTm0z?<3lV1Uhy zaokq(bg=-Bw>W+}{N73!K*Ccrxz!*~hfiVCq3QR*0(9&tYyg)Ds!^1zF|;MDRmnB% zWLAOC#JUqHH0lNtJwC=Mo2QFiT?lPB!O*kWzq*+`9gh_;BstpD?eKCg!#8fQ3=Qep zZq{fQYMyj69*VMGfgLVXMy^ygT>6g;X7r*&mwfdz%&Tqi1@?n+o+6^BIg^&`eyhP? zl&9kmNm~UfOc+m7rK1m0QLm8lX(Bq)Z}@1(DkPOEv*Y(JEir5Y?35kbuSz+O0qB)$ zBejDq->=G*nB!(SSmb84G0Ft#hwb72$1ZU@&PSe-XV3orXum3#+|wlaua);r$|kdte*@si8ih&!`(P`vN|`)qak=|^7?lbv zt+Jw^vXXYM>U3+&%9S0v{!}BgudgEh(MSXF#@NVODLa1!CO1w|(hIb&oSwUHO=)*% zW2}WQjcT%_-k)4SuV9dl^cTUPPr$gc$J)VqMW;+<31LCKWM+ywqw+v)_QnJiBv}%1xKVzoo5xa4hm&$L>A~kOx`Lu zCrmE#*Hy!*(@PFEnTnzAF@4?s_)c%SV*u7RfsX#YZ3ufn5E(L{;27i#uo^v0 z(^JaL73u5xm4mp?O4*&Kr?8`Q#rlyHF-r2K7dgwyiyx9@0*-|68_4oDSZ%^Z7UF*R z$&$@dmK8MP^s^*d2?2k4WeQiM@mofgX`DPbK0cPQT8_=*2~|R})Yu74tmLUii^DB; zRFj4NWMxJp_y<+(_-l(!+xDR#9FYrLW>njUno_Z761Kohwyw#1B^r8JT2t)zrX-e; zHu!m6f)CRI#O;cXMi*eB%Om;FBIRhl@Ed>HJEC;cbH;1hS3|%Dt~>c4#)n5z5O10@hQ|P8O;%G_XDB zt+6o@1;{$6rOxjyY%YD0IBylX8e3;vqz- z^p%XZDQ6WU^l+J?6l@sOD~4xYyKZE481HCpt!VGTtv9c?6Y|r+o7bVd*yYnJxWTGs z%skYdm*YLt&6m*;~Q; zJC;_&FM&qK73pq+-7W9e{oQxl31K8LOOcSARN!Ky&U46kS4#d((bLmHOx4q8QnCux z{DvZT8hWw)a`&~j_hw^DU;evwO1Vv1U9pMRcnE0z0UK-_sueT9Vli&H3bg%Un6=hX z7rmh&kC!Ewn-iPQVA|9FPV@!&faJ|pI>d;zv|&tq zN>Wmg37}~$XVwnDo(JxZ6A-h#oaCuw(ol&QG^^=kYO~t0Flx^{y2Ha z8YsARA^P@oR;dm!bgYe_dCXyVMpEV~7x}P@s4}E1v4)ib8P2t>MShrK9i8Pf$7JSZ zz{1Ew4{_XYoquHz1jH}LTEB<7uYGlkO>Sx1i38k+qT9M=^7|MkH&)2ZrdW-Ce_ z2E{MA2R=kHjZ?vMdQLslTPZ(2E#B>*BtcoP%E?(<0RAq6lgx8c)h(6@`6@|d~SO~XoMnwwlhkr>>*@mdo9N*SSjz@3vi6>F> z8J@@k&YHfPo5Q140Xdv9=-KDo8r1bIqbig@-oC<6c+Q}%$*j5IfSf`u(y`nvr>n0W zv-Cdq-P$?II!{a}b5a$h+;nVfo z8dmWd93L5Kdzke-b^*?yD8Nuu@U~h->rk|Ywd!~@k6d)?1OB&8SG1#id@ILLOs5S& zmTRyP6Jwo8Ow`6qiXUZ!KPQ%>hIOhD=_%L@r>Em_!b*s^O0BS{LmN~o1JPprg zv0fxr%DDqtOvmE^lssMLSuF5RU6bPmbx{V&G`-leT0z>>L4-fLyIc>EqOO z>)g%E#d*~QzR$&TH;aYCqv~shyAAH}`4q-A;qcfX?Roor+mjlnZ&XlN7|+Ax8{$=b zGBT;UTMv_O56?T2|8IZ4TNO|HQP0X0_`#Jx85 z4(-tJd$1S>YNfnZHwm?3yF)~~`!*-61#l`9VLCs_@ik1XG~%741`2zJJ!XCo!dWA& zG`Ry15Z8v&a6a1blb#arq<(GS~c0grXAZ2y*c?D z9na`Iukevblcx1r<}ETc$iRN5>b4%lO&`X)`qyYzgbgHVMSjyNfhrXI>ZMkYGa5x108tcH$2rYq=~P%_=dBCH!n@plo+3LTwf3 z>i2K^XX-uUcg$5iNsGx6f)N{hmr>N4{+W;}G~{q-5*nTuiTsoB$+!FJLGdA351&3I z?mNTz)VI$W$>{(4zy8nv_3!`sum8(?{`|QoK|OuuCZvTU)?C|h$?csDTYINSMYD79^v>-~)YTiy$< zwr^i-_s%Re9!Z^Phj}*#RD1553~QQOd56OzO`6&{eTl}{?#M)~T)Aw9fOROYv{{4w zMOUm1yCwF0PldOvWCMJkMeSC-VqKZ`X}fK8+sR6;3f2kg8Sh|aySj>QPERe7GnV$_ zfGeM0vd*+eIq2q+pzo2D4pox`W7VM&xE2rn#OL4s@Bi2P;fEhQ1!suQsBc{Y@?T<> zNo$txF;i-IE2pZi$z|$>?@-rGZGSC{CTKw2cc9+y?}23H&wxiIyDVf=I(iX+etjt8uvG z5GBya0!$JO@H`iO@;HG2uZwbl4<9q-9{D&4>PGXjpvG4|+`e2;p2PM?i{p*AyGm|r zdSxDh&xvT{tFM7(anwDG$3p@)Q>FhN$+e~NbFeSBr*tL+ntimAL2NVXNk1vdlfHDA zB}@miC>o~^lgG(J8juo~bpu+5b&{(hEFn|x>>KmWlJ_8yw0=Yvg8(mY($#uI;iib~ z!QOe#i&)fwf0i;E^t+GrrL>!wy0;MO`7Nfu+?&Bba96|Bt;l z&2AgZ)&+mtqkx>gD!@8|NXgNWhIwVnjWTS@X~~X^ko5$JJdzM50VV*dF^RR_uNpwT zLDW2IC~qXS_THyOL&_16Rrjs+B6C^9>HD+KZociibKt@D!fBRXWC&_Q>YU&OBQ2sa zc)DOWk=am}vw102G1yxq13{Lj2|dgKZK;;%^0EdNG zSnnlI*9{4K|5-F1hiop3!?7*dbIJ3N>X@A7i=iJvCgt_sVr7*LN<*6yco1Fd-G|=hcPs>*QlsG@Q2Yf zLcf|Z;6%vOWr^GWB^1;Hj-o9njVI`AVZzx3q0qIYfqzPPDM(Nsi!}^RFme5>dID?fI;ulTy%b&{f}QWa-vOv789*papLkaA8;k_ZDEb7XrfYNOA2k%b z|LzFf$N`|#{<|Y8?d6+;T?_@pDEu(OPd~kQz6~{f|5(OiP$kI@Ci%`xvQtU&7?XT& zCV4E7y51Sp{6I}JDiL2)#g96A$BL%nf6~#S@Mi}HZy@RiK<9!F9jq$-p)2ByTIDBJ z`@^=8V8>2?75}hfBzSE0{O#@$)uG1^f+|U=74gGqku7)f?2NuGav_5u@ijYJSg$v(dO`Q5=U?-1-v{DzfxWUjmynte

JvV;GU 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.handleEvent(o.open,e),this.handleErrorEvent=e=>this.handleEvent(o.error,e),this.handleCloseEvent=e=>this.handleEvent(o.close,e),this.handleMessageEvent=e=>this.handleEvent(o.message,e),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:n?.retry?.maxRetries,instantReconnect:n?.retry?.instantReconnect,backoff:n?.retry?.backoff},listeners:{open:[...n?.listeners?.open??[]],close:[...n?.listeners?.close??[]],error:[...n?.listeners?.error??[]],message:[...n?.listeners?.message??[]],retry:[...n?.listeners?.retry??[]],reconnect:[...n?.listeners?.reconnect??[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){let r=e=>e.listener!==t||e.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(r)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(o.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(o.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(o.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(o.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(o.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(o.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(o.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(o.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){let n=this._options.listeners[e],r=[];n.forEach(({listener:e,options:n})=>{e(this,t),(n===void 0||n.once===void 0||!n.once)&&r.push({listener:e,options:n})}),this._options.listeners[e]=r}handleEvent(e,t){switch(e){case o.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case o.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){let e={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},t=new CustomEvent(o.reconnect,{detail:e});this.dispatchEvent(o.reconnect,t),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case o.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;let e=e=>{let t=new CustomEvent(o.retry,{detail:e});this.handleEvent(o.retry,t)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}},c=class{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{maxRetries:e})}),this}get maxRetries(){return this._options?.retry?.maxRetries}withInstantReconnect(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{instantReconnect:e})}),this}get instantReconnect(){return this._options?.retry?.instantReconnect}withBackoff(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{backoff:e})}),this}get backoff(){return this._options?.retry?.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){return this._options?.buffer}onOpen(e,t){return this.addListener(o.open,e,t),this}onClose(e,t){return this.addListener(o.close,e,t),this}onError(e,t){return this.addListener(o.error,e,t),this}onMessage(e,t){return this.addListener(o.message,e,t),this}onRetry(e,t){return this.addListener(o.retry,e,t),this}onReconnect(e,t){return this.addListener(o.reconnect,e,t),this}build(){return new s(this._url,this._protocols,this._options)}addListener(e,t,n){return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:this._options?.listeners?.open??[],close:this._options?.listeners?.close??[],error:this._options?.listeners?.error??[],message:this._options?.listeners?.message??[],retry:this._options?.listeners?.retry??[],reconnect:this._options?.listeners?.reconnect??[],[e]:[...this._options?.listeners?.[e]??[],{listener:t,options:n}]}}),this}},l=e({ArrayQueue:()=>i,ConstantBackoff:()=>t,ExponentialBackoff:()=>n,LinearBackoff:()=>r,RingQueue:()=>a,Websocket:()=>s,WebsocketBuilder:()=>c,WebsocketEvent:()=>o});export{l as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.BJP2NBoC.js.gz b/Needle/MenuScene/dist/assets/needle-engine.BJP2NBoC.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..9728ee72ca1590218e4a72f87cca30ed55d4e3fa GIT binary patch literal 2125 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 D5X2lD literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine.CE4b2dOg.js b/Needle/MenuScene/dist/assets/needle-engine.CE4b2dOg.js new file mode 100644 index 0000000..e3b2d3c --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.CE4b2dOg.js @@ -0,0 +1 @@ +import{u as e}from"./needle-engine@5.0.3.js";export{e as NeedleEngineWebComponent}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js b/Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js new file mode 100644 index 0000000..e86e2d9 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js @@ -0,0 +1 @@ +import{Cn as e,Mr as t,Tn as n,Tt as r,dn as i,g as a,i as o,j as s,sr as c,wt as l}from"./three@0.169.19.js";var u={node:`node`,material:`material`,camera:`camera`,light:`light`},d=`KHR_animation_pointer`,f={CUBICSPLINE:void 0,LINEAR:r,STEP:l},p=class{constructor(e){this.name=d,this.parser=e,this.animationPointerResolver=null}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){let t=e.target,n=t.node===void 0?t.id:t.node;return this.parser.getDependency(`node`,n)}loadAnimationTargetFromChannelWithAnimationPointer(e){g();let t=e.target,n=t.extensions&&t.extensions[d]&&t.path&&t.path===`pointer`;if(!n)return null;let r,i=u.node,a;if(n){let e=t.extensions[d],n=e.pointer;if(!n){console.warn(`Invalid path`,e,t);return}if(n.startsWith(`/materials/`)?i=u.material:n.startsWith(`/extensions/KHR_lights_punctual/lights/`)?i=u.light:n.startsWith(`/cameras/`)&&(i=u.camera),a=this._tryResolveTargetId(n,i),a===null||isNaN(a)){console.warn(`Failed resolving animation node id: `+a,n);return}switch(i){case u.material:let e=(`/materials/`+a.toString()+`/`).length,t=n.substring(0,e);switch(r=n.substring(e),r){case`pbrMetallicRoughness/baseColorFactor`:r=`color`;break;case`pbrMetallicRoughness/roughnessFactor`:r=`roughness`;break;case`pbrMetallicRoughness/metallicFactor`:r=`metalness`;break;case`emissiveFactor`:r=`emissive`;break;case`alphaCutoff`:r=`alphaTest`;break;case`occlusionTexture/strength`:r=`aoMapIntensity`;break;case`normalTexture/scale`:r=`normalScale`;break;case`pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale`:r=`map/repeat`;break;case`pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset`:r=`map/offset`;break;case`emissiveTexture/extensions/KHR_texture_transform/scale`:r=`emissiveMap/repeat`;break;case`emissiveTexture/extensions/KHR_texture_transform/offset`:r=`emissiveMap/offset`;break;case`extensions/KHR_materials_emissive_strength/emissiveStrength`:r=`emissiveIntensity`;break;case`extensions/KHR_materials_transmission/transmissionFactor`:r=`transmission`;break;case`extensions/KHR_materials_ior/ior`:r=`ior`;break;case`extensions/KHR_materials_volume/thicknessFactor`:r=`thickness`;break;case`extensions/KHR_materials_volume/attenuationColor`:r=`attenuationColor`;break;case`extensions/KHR_materials_volume/attenuationDistance`:r=`attenuationDistance`;break;case`extensions/KHR_materials_iridescence/iridescenceFactor`:r=`iridescence`;break;case`extensions/KHR_materials_iridescence/iridescenceIor`:r=`iridescenceIOR`;break;case`extensions/KHR_materials_iridescence/iridescenceThicknessMinimum`:r=`iridescenceThicknessRange[0]`;break;case`extensions/KHR_materials_iridescence/iridescenceThicknessMaximum`:r=`iridescenceThicknessRange[1]`;break;case`extensions/KHR_materials_clearcoat/clearcoatFactor`:r=`clearcoat`;break;case`extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor`:r=`clearcoatRoughness`;break;case`extensions/KHR_materials_sheen/sheenColorFactor`:r=`sheenColor`;break;case`extensions/KHR_materials_sheen/sheenRoughnessFactor`:r=`sheenRoughness`;break;case`extensions/KHR_materials_specular/specularFactor`:r=`specularIntensity`;break;case`extensions/KHR_materials_specular/specularColorFactor`:r=`specularColor`;break}n=t+r;break;case u.node:let i=(`/nodes/`+a.toString()+`/`).length,o=n.substring(0,i);switch(r=n.substring(i),r){case`translation`:r=`position`;break;case`rotation`:r=`quaternion`;break;case`scale`:r=`scale`;break;case`weights`:r=`morphTargetInfluences`;break;case`extensions/KHR_node_visibility/visible`:r=`visible`;break}n=o+r;break;case u.light:let s=(`/extensions/KHR_lights_punctual/lights/`+a.toString()+`/`).length;switch(r=n.substring(s),r){case`color`:break;case`intensity`:break;case`spot/innerConeAngle`:r=`penumbra`;break;case`spot/outerConeAngle`:r=`angle`;break;case`range`:r=`distance`;break}n=`/lights/`+a.toString()+`/`+r;break;case u.camera:let c=(`/cameras/`+a.toString()+`/`).length,l=n.substring(0,c);switch(r=n.substring(c),r){case`perspective/yfov`:r=`fov`;break;case`perspective/znear`:case`orthographic/znear`:r=`near`;break;case`perspective/zfar`:case`orthographic/zfar`:r=`far`;break;case`perspective/aspect`:r=`aspect`;break;case`orthographic/xmag`:r=`zoom`;break;case`orthographic/ymag`:r=`zoom`;break}n=l+r;break}this.animationPointerResolver?.resolvePath&&(n=this.animationPointerResolver.resolvePath(n)),t.extensions[d].pointer=n}if(a==null||isNaN(a)){console.warn(`Failed resolving animation node id: `+a,t);return}let o;return i===u.node?o=this.parser.getDependency(`node`,a):i===u.material?o=this.parser.getDependency(`material`,a):i===u.light?o=this.parser.getDependency(`light`,a):i===u.camera?o=this.parser.getDependency(`camera`,a):console.error(`Unhandled type`,i),o}createAnimationTracksWithAnimationPointer(e,o,l,u,p){if(!(p.extensions&&p.extensions[d]&&p.path&&p.path===`pointer`))return null;let m=p.extensions[d].pointer;if(!m)return null;let h=[];m=m.replaceAll(`/`,`.`);let g=m.split(`.`);if(g[2]=e.name!==void 0&&e.name!==null?e.name:e.uuid,g[3]===`morphTargetInfluences`&&e.type===`Group`){for(let t of e.children)t instanceof c&&t.morphTargetInfluences&&(g[3]=t.name,g[4]=`morphTargetInfluences`,v(this.parser));return h}v(this.parser);function _(e,t){try{let n=t.split(`.`).filter(Boolean),r=n[n.length-1].replace(/\[.*\]$/,``);return r in e?typeof e[r]==`boolean`:!1}catch{return!1}}function v(c){m=g.join(`.`);let d,p=!1;switch(l.itemSize){case 1:Object.prototype.toString.call(l.array)===`[object Uint8Array]`&&_(e,m)?(d=a,p=!0):d=i;break;case 2:case 3:d=t;break;case 4:d=m.endsWith(`.quaternion`)?n:s;break}if(!d){console.warn(`Unsupported output accessor format`,l);return}let v=u.interpolation===void 0?r:f[u.interpolation],y=c._getArrayFromAccessor(l);m.endsWith(`.fov`)&&(y=y.map(e=>e/Math.PI*180)),p&&(y=y.map(e=>e>0));let b=new d(m,o.array,y,v);if(v===`CUBICSPLINE`&&c._createCubicSplineTrackInterpolant(b),h.push(b),m&&l.itemSize===4&&m.startsWith(`.materials.`)&&m.endsWith(`.color`)){let e=new Float32Array(y.length/4);for(let t=0,n=y.length/4;t{a!==null||e.type!==`Mesh`&&e.type!==`SkinnedMesh`||e.material&&(e.material.uuid===i||e.material.name===i)&&(a=e.material,a!==null&&(t.endsWith(`.map`)?a=a.map:t.endsWith(`.emissiveMap`)&&(a=a.emissiveMap)))}),a}else if(n.startsWith(`.nodes.`)||n.startsWith(`.lights.`)||n.startsWith(`.cameras.`)){let r=n.split(`.`),i;for(let t=1;t=0&&(t=e),i=i[t]}else{let t=e.getObjectByName(n);t&&(i=t)}}if(!i){let i=t(e,r[2]);return i||console.warn(d+`: Property binding not found`,n,e,e.name,r),i}return i}return t(e,n)}}export{p as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js.gz b/Needle/MenuScene/dist/assets/needle-engine.D6xdy26G.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a810b2033ababb63c7bfdaa0147cc15ca7e9121e GIT binary patch literal 2824 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js b/Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js new file mode 100644 index 0000000..8930e7b --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js @@ -0,0 +1 @@ +import{$ as ee,$a as te,$i as ne,$n as re,$t as ie,A as ae,Aa as e,Ai as t,An as n,Ao as r,Ar as i,At as a,B as o,Ba as s,Bn as c,Bo as l,Br as u,Bt as d,C as f,Ca as p,Ci as m,Co as h,Ct as g,D as _,Da as v,Di as y,Do as b,Dr as x,E as S,Ea as C,Eo as w,Er as T,Et as E,Fa as D,Fi as O,Fn as k,Fo as A,Fr as j,Ft as M,G as N,Ga as P,Gi as F,Gn as I,Gt as L,H as R,Ha as z,Hi as B,Ho as V,Hr as H,Ht as U,Ia as W,Ii as G,In as K,Io as q,Ir as J,It as oe,J as se,Ja as ce,Ji as le,Jt as ue,K as de,Ka as fe,Ki as pe,Kn as me,Kr as he,L as ge,La as _e,Li as ve,Ln as ye,Lo as be,Lr as xe,Lt as Se,M as Ce,Ma as we,Mi as Te,Mn as Ee,Mo as De,Mr as Oe,Mt as ke,N as Ae,Na as je,Ni as Me,Nn as Ne,No as Pe,Nr as Fe,Nt as Ie,O as Le,Oa as Re,Oi as ze,Oo as Be,Or as Ve,Ot as He,P as Ue,Pa as We,Pi as Ge,Po as Ke,Pr as qe,Pt as Je,Q as Ye,Qa as Xe,Qi as Ze,Qr as Qe,Qt as $e,R as et,Ra as tt,Ri as nt,Rn as rt,Ro as it,Rt as at,S as ot,Sa as st,Si as ct,So as lt,St as ut,T as dt,Ta as ft,Ti as pt,To as mt,Tr as ht,Tt as gt,U as _t,Ua as vt,Ui as yt,Un as bt,Uo as xt,Ur as St,V as Ct,Va as wt,Vi as Tt,Vo as Et,Vr as Dt,Vt as Ot,Wa as kt,Wi as At,Wn as jt,Wo as Y,Wr as Mt,Wt as Nt,X as Pt,Xi as Ft,Xr as It,Xt as Lt,Y as Rt,Ya as X,Yi as zt,Yr as Bt,Z as Vt,Za as Ht,Zi as Ut,Zt as Wt,_ as Gt,_a as Kt,_i as qt,_n as Jt,_o as Yt,_r as Xt,_t as Zt,a as Qt,aa as $t,ai as en,ao as tn,ar as nn,b as rn,ba as an,bi as on,bn as sn,bo as cn,br as ln,bt as un,ca as dn,ci as fn,cn as pn,co as mn,cr as hn,ct as gn,d as _n,da as vn,di as yn,dn as bn,do as xn,dr as Sn,dt as Cn,ea as wn,en as Tn,eo as En,er as Dn,et as On,f as kn,fa as An,fi as jn,fn as Mn,fo as Nn,fr as Pn,ft as Fn,g as In,ga as Ln,gi as Rn,go as zn,gr as Bn,gt as Vn,h as Hn,ha as Un,hi as Wn,hn as Gn,ho as Kn,hr as qn,ht as Jn,i as Yn,ia as Xn,ii as Zn,in as Qn,io as $n,ir as er,it as tr,j as nr,ja as rr,ji as ir,jn as ar,jo as or,jr as sr,jt as cr,k as lr,ka as ur,ki as dr,kn as fr,ko as pr,kr as mr,kt as hr,l as gr,la as _r,li as vr,lo as yr,lr as br,lt as xr,ma as Sr,mi as Cr,mn as wr,mo as Tr,mr as Er,mt as Dr,n as Or,na as kr,nn as Ar,no as jr,nr as Mr,nt as Nr,o as Pr,oa as Fr,oi as Ir,on as Lr,oo as Rr,or as zr,ot as Z,p as Br,pa as Vr,pi as Hr,po as Ur,pr as Wr,pt as Gr,q as Kr,qa as qr,qi as Jr,qn as Yr,r as Xr,ra as Zr,ri as Qr,rn as $r,ro as ei,rr as ti,rt as ni,s as ri,sa as ii,si as ai,sn as oi,so as si,sr as ci,t as li,ta as ui,tn as di,to as fi,tr as pi,tt as mi,u as hi,ua as gi,ui as _i,un as vi,uo as yi,ur as bi,ut as xi,v as Si,va as Ci,vi as wi,vn as Ti,vo as Ei,vr as Di,vt as Oi,w as ki,wa as Ai,wi as ji,wo as Mi,wt as Ni,x as Pi,xa as Fi,xi as Ii,xn as Li,xo as Ri,xt as zi,y as Bi,ya as Vi,yi as Hi,yn as Ui,yo as Wi,yr as Gi,yt as Ki,z as qi,za as Ji,zi as Yi,zn as Xi,zo as Zi,zr as Qi,zt as $i}from"./needle-engine-ui.BzyLX9fs.js";import{C as ea,E as ta,S as na,T as ra,_ as ia,a as aa,b as oa,c as sa,d as ca,f as la,g as ua,h as Q,i as da,l as fa,m as pa,n as ma,o as ha,p as ga,r as _a,s as va,u as ya,v as ba,w as xa,x as Sa,y as Ca}from"./needle-engine@5.0.3.js";import{n as wa}from"./gltf-progressive.BBJGcb3s.js";import{$ as Ta,A as Ea,At as Da,B as Oa,Bt as ka,C as Aa,Ct as ja,Dt as Ma,Et as Na,F as Pa,G as Fa,Gt as Ia,H as La,Ht as Ra,I as za,It as Ba,J as Va,Jt as Ha,K as Ua,Kt as Wa,L as Ga,Lt as Ka,M as qa,Mt as Ja,N as Ya,Ot as Xa,P as Za,Pt as Qa,Q as $a,Qt as eo,R as to,Rt as no,S as ro,St as io,Tt as ao,U as oo,Ut as so,V as co,Vt as lo,W as uo,Wt as fo,X as po,Xt as mo,Y as ho,Yt as go,Z as _o,Zt as vo,_ as yo,a as bo,an as xo,at as So,b as Co,bt as wo,c as To,cn as Eo,ct as Do,d as Oo,dn as ko,dt as Ao,en as jo,et as Mo,f as No,fn as Po,ft as Fo,g as Io,gt as Lo,h as Ro,hn as zo,ht as Bo,i as Vo,in as Ho,it as Uo,j as Wo,jt as Go,k as Ko,kt as qo,l as Jo,ln as Yo,lt as Xo,m as Zo,mn as Qo,mt as $o,n as es,nn as ts,nt as ns,o as rs,on as is,ot as as,p as os,pn as ss,pt as cs,q as ls,qt as us,r as ds,rn as fs,rt as ps,s as ms,sn as hs,t as gs,tn as _s,tt as vs,u as ys,un as bs,ut as xs,v as Ss,vt as Cs,w as ws,wt as Ts,x as Es,xt as Ds,y as Os,yt as ks,z as As}from"./needle-engine-webxr.DQA26K-l.js";import{$ as js,A as Ms,At as Ns,B as Ps,C as Fs,Ct as Is,D as Ls,Dt as Rs,E as zs,Et as Bs,F as Vs,G as Hs,I as Us,J as Ws,K as Gs,L as Ks,M as qs,Mt as Js,N as Ys,Nt as Xs,O as Zs,Ot as Qs,P as $s,R as ec,S as tc,St as nc,T as rc,Tt as ic,X as ac,Y as oc,Z as sc,_ as cc,a as lc,at as uc,b as dc,bt as fc,c as pc,ct as mc,d as hc,dt as gc,et as _c,f as vc,ft as yc,g as bc,gt as xc,h as Sc,ht as Cc,i as wc,it as Tc,j as Ec,jt as Dc,k as Oc,kt as kc,l as Ac,lt as jc,m as Mc,mt as Nc,n as Pc,nt as Fc,o as Ic,ot as Lc,p as Rc,pt as zc,q as Bc,r as Vc,rt as Hc,s as Uc,st as Wc,tt as Gc,u as Kc,ut as qc,v as Jc,vt as Yc,w as Xc,wt as Zc,x as Qc,xt as $c,y as el,z as tl}from"./needle-engine.extras.t1Dx-yNB.js";import{C as nl,D as rl,E as il,S as al,T as ol,_ as sl,a as cl,b as ll,c as ul,d as dl,f as fl,g as pl,h as ml,i as hl,l as gl,m as _l,n as vl,o as yl,p as bl,r as xl,s as Sl,t as Cl,u as wl,v as Tl,w as El,x as Dl,y as Ol}from"./needle-engine-particles.Bw3zzNt3.js";import{_ as kl,a as Al,b as jl,c as Ml,d as Nl,f as Pl,g as Fl,h as Il,i as Ll,l as Rl,m as zl,n as Bl,o as Vl,p as Hl,r as Ul,s as Wl,t as $,u as Gl,v as Kl,y as ql}from"./needle-engine.extras.CDv9-f43.js";export{dr as $componentName,t as $physicsKey,vs as ActionBuilder,Ks as ActionCollection,ns as ActionModel,Qi as Addressables,Cc as AlignmentConstraint,jt as AmbientMode,Qo as Animation,il as AnimationCurve,$a as AnimationExtension,nc as AnimationTrackHandler,Ze as AnimationUtils,Ye as Animator,On as AnimatorConditionMode,ee as AnimatorController,mi as AnimatorControllerParameterType,Nr as AnimatorStateInfo,Il as Antialiasing,xe as Application,Lt as AssetDatabase,u as AssetReference,zs as Attractor,_o as AudioExtension,ss as AudioListener,Po as AudioSource,Is as AudioTrackHandler,Ko as Avatar,Wa as AvatarBlink_Simple,Ia as AvatarEyeLook_Rotation,aa as AvatarLoader,Yo as AvatarMarker,ha as AvatarModel,hs as Avatar_Brain_LookAt,vo as Avatar_MouthShapes,mo as Avatar_MustacheShake,Eo as Avatar_POI,o as Axes,Nc as AxesHelper,B as BUILD_TIME,Pi as BaseUIComponent,zc as BasicIKConstraint,Co as BehaviorExtension,ps as BehaviorModel,Z as Behaviour,Z as Component,Wn as BlobStorage,zl as BloomEffect,ka as BoxCollider,No as BoxGizmo,yc as BoxHelperComponent,Xr as Button,fr as ButtonsFactory,jo as CallDirection,Rt as CallInfo,f as Camera,dt as CameraTargetReachedEvent,ri as Canvas,Pr as CanvasGroup,lo as CapsuleCollider,Oa as ChangeMaterialOnClick,co as ChangeTransformOnClick,qc as CharacterController,gc as CharacterControllerInput,Hl as ChromaticAberration,te as CircularBuffer,ki as ClearFlags,Ic as ClickThrough,Qs as ClipExtrapolation,Ra as Collider,ir as Collision,Ct as CollisionDetectionMode,Nl as ColorAdjustments,yl as ColorBySpeedModule,Sl as ColorOverLifetimeModule,zt as ComponentLifecycleEvents,Mr as ConnectionEvents,Te as ContactPoint,no as ContactShadows,Jt as Context,Ti as ContextArgs,xt as ContextEvent,Y as ContextRegistry,Y as NeedleEngine,Zc as ControlTrackHandler,lc as CursorFollow,os as CustomBranding,Go as CustomShader,I as DefaultReflectionMode,uc as Deletable,Lc as DeleteBox,Gl as DepthOfField,Tc as DeviceFlag,En as DeviceUtilities,da as DocumentExtension,Fc as DragControls,Hc as DragMode,Bc as DropListener,Gs as Duplicatable,Rl as EffectWrapper,ul as EmissionModule,La as EmphasizeOnClick,ca as EngineLoadingView,fc as EnvironmentScene,Pt as EventList,Vt as EventListEvent,_ as EventSystem,Hs as EventTrigger,Cs as FieldWithDefault,Dt as FileReference,H as FileReferenceSerializer,js as FileSpawnModel,_c as File_Event,Ys as FixedJoint,Us as Fog,Ui as FrameEvent,yt as GENERATOR,gn as GameObject,vi as Gizmos,tl as GltfExport,Ps as GltfExportBox,gl as Gradient,Hn as Graphic,lr as GraphicRaycaster,$t as Graphics,Vs as GridHelper,gr as GridLayoutGroup,Kr as GroundProjectedEnv,Uo as GroupActionModel,Me as HideFlags,oo as HideOnStart,$s as HingeJoint,hi as HorizontalLayoutGroup,Qr as HostData,wc as HoverAnimation,Yn as Image,St as ImageReference,Mt as ImageReferenceSerializer,wl as InheritVelocityModule,ht as Input,T as InputEventQueue,x as InputEvents,Or as InputField,ja as InstanceHandle,Ts as InstancingHandler,ue as InstancingUtil,Zn as InstantiateEvent,en as InstantiateIdProvider,He as InstantiateOptions,Wc as Interactable,ms as InternalScreenshotUtils,ti as JoinedRoomResponse,Ve as KeyEventArgs,rl as Keyframe,Ms as LODGroup,Ec as LODModel,er as LeftRoomResponse,qs as Light,me as LightData,dl as LimitVelocityOverLifetimeModule,la as LoadingElementOptions,jc as LogStats,ce as LogType,pc as LookAt,N as LookAtConstraint,fl as MainModule,ic as MarkerTrackHandler,kc as MarkerType,In as MaskableGraphic,Ka as MaterialPropertyBlock,Ja as MaterialX,vt as Mathf,so as MeshCollider,ks as MeshRenderer,bl as MinMaxCurve,_l as MinMaxGradient,Tt as NEEDLE_ENGINE_FEATURE_FLAGS,Bn as NEEDLE_ENGINE_MODULES,wa as NEEDLE_progressive,mr as NEKeyboardEvent,i as NEPointerEvent,pa as NeedleButtonElement,sc as NeedleEngineModelLoader,ya as NeedleEngineWebComponent,Ea as NeedleMenu,ve as NeedlePatchesKey,Ao as NeedleUSDZExporter,Gn as NeedleXRController,Mn as NeedleXRSession,wr as NeedleXRSync,zo as NeedleXRUtils,Oc as NestedGltf,nn as NetworkConnection,_s as NetworkedStreamEvents,ts as NetworkedStreams,Zs as Networking,Ir as NewInstanceModel,ml as NoiseModule,ae as ObjectRaycaster,Oe as ObjectUtils,Ls as OffsetConstraint,kt as OneEuroFilter,P as OneEuroFilterXYZ,Uc as OpenURL,S as OrbitControls,Gt as Outline,zr as OwnershipEvent,ci as OwnershipModel,At as PUBLIC_KEY,_n as Padding,pl as ParticleBurst,cl as ParticleSubEmitter,Cl as ParticleSystem,vl as ParticleSystemBaseBehaviour,xl as ParticleSystemRenderer,sl as ParticleSystemShapeType,fs as PeerHandle,Pn as PeerNetworking,Lr as Physics,Os as PhysicsExtension,R as PhysicsMaterialCombine,Ml as PixelationEffect,uo as PlayAnimationOnClick,Fa as PlayAudioOnClick,$c as PlayableDirector,rc as PlayerColor,Wo as PlayerState,qa as PlayerStateEvent,Ya as PlayerSync,re as PlayerView,Dn as PlayerViewManager,Ce as PointerEventData,sr as PointerType,Kl as PostProcessingEffect,jl as PostProcessingEffectOrder,Bl as PostProcessingHandler,$ as PostProcessingManager,$ as Volume,Ua as PreliminaryAction,ls as PreliminaryTrigger,Gc as PreviewHelper,Fe as PrimitiveType,Bo as Progress,fi as PromiseAllWithErrors,jr as PromiseErrorResult,bn as RGBAColor,fa as RapierPhysics,Qt as RawImage,oi as RaycastOptions,Si as Rect,Bi as RectTransform,Ba as ReflectionProbe,Ta as RegisteredAnimationInfo,xc as RemoteSkybox,se as RenderTexture,ba as RenderTextureSerializer,wo as Renderer,Yr as RendererData,io as RendererLightmap,ge as Rigidbody,_t as RigidbodyConstraints,hn as RoomEvents,Tl as RotationBySpeedModule,Ol as RotationOverLifetimeModule,Qa as SceneLightSettings,Yc as SceneSwitcher,Fs as ScreenCapture,Wl as ScreenSpaceAmbientOcclusion,Vl as ScreenSpaceAmbientOcclusionN8,Vc as ScrollFollow,tc as SeeThrough,Cr as SendQueue,he as SerializationContext,Va as SetActiveOnClick,Qc as ShadowCatcher,ll as ShapeModule,Ge as ShapeOverlapResult,Al as SharpeningEffect,Dc as SignalAsset,Js as SignalReceiver,Xs as SignalReceiverEvent,Bs as SignalTrackHandler,rn as Size,Dl as SizeBySpeedModule,al as SizeOverLifetimeModule,Ds as SkinnedMeshRenderer,dc as SmoothFollow,nr as SpatialGrabRaycaster,li as SpatialHtml,Jc as SpatialTrigger,el as SpatialTriggerReceiver,cc as SpectatorCamera,fo as SphereCollider,pn as SphereIntersection,Sc as SplineContainer,bc as SplineData,ma as SplineUtils,Mc as SplineWalker,Pa as Sprite,za as SpriteData,Ga as SpriteRenderer,to as SpriteSheet,ni as StateMachineBehaviour,Ho as StreamEndedEvent,xo as StreamReceivedEvent,hl as SubEmitterSystem,Rc as SyncedCamera,vc as SyncedRoom,Ue as SyncedTransform,ho as TapGestureTrigger,Aa as TeleportTarget,Kc as TestRunner,hc as TestSimulateUserData,Br as Text,Io as TextBuilder,yo as TextExtension,nl as TextureSheetAnimationModule,Ll as TiltShiftEffect,bt as Time,Pl as ToneMappingEffect,Rs as TrackHandler,Ns as TrackType,El as TrailModule,Mo as TransformData,Ac as TransformGizmo,So as TriggerBuilder,as as TriggerModel,ne as TypeStore,Le as UIRaycastUtils,ot as UIRootComponent,Do as USDDocument,Xo as USDObject,xs as USDWriter,Zo as USDZExporter,Ss as USDZText,Ro as USDZUIExtension,Ca as UriSerializer,mc as UsageMarker,br as UserJoinedOrLeftRoomModel,F as VERSION,ec as VariantAction,ol as VelocityOverLifetimeModule,kn as VerticalLayoutGroup,Xc as VideoPlayer,Pc as ViewBox,pi as ViewDevice,Ul as Vignette,po as VisibilityAction,eo as Voip,ql as VolumeParameter,Fl as VolumeProfile,qe as WaitForFrames,j as WaitForPromise,J as WaitForSeconds,ei as Watch,rs as WebARCameraBackground,Za as WebARSessionRoot,Es as WebXR,As as WebXRButtonFactory,ds as WebXRImageTracking,Vo as WebXRImageTrackingModel,es as WebXRPlaneTracking,bo as WebXRTrackedImage,Oo as XRControllerFollow,ws as XRControllerModel,ro as XRControllerMovement,us as XRFlag,gs as XRRig,Ha as XRState,go as XRStateFlag,_a as __Ignore,Wt as __internalNotifyObjectDestroyed,pe as activeInHierarchyFieldName,$n as addAttributeChangeCallback,Dr as addComponent,ao as addCustomExtensionPlugin,Jn as addNewComponent,nt as addPatch,U as apply,xr as applyHMRChanges,Nt as applyPrototypeExtensions,ai as beginListenDestroy,fn as beginListenInstantiate,Xt as binaryIdentifierCasts,sn as build_scene_functions,Jr as builtinComponentKeyName,ga as calculateProgress01,X as clearBalloonMessages,X as clearOverlayMessages,oa as colorSerializer,Qe as compareAssociation,Sa as componentSerializer,Fr as copyTexture,tr as createMotion,bi as debugNet,Sn as debugOwner,Fo as decompressGpuTexture,tn as deepClone,Rr as delay,si as delayForFrames,Bt as deserializeObject,hr as destroy,Vn as destroyComponentInstance,Ws as determineMimeTypeFromExtension,$e as disposeObjectResources,is as disposeStream,le as editorGuidKeyName,Xn as enableSpatialConsole,na as euler,ea as eventListSerializer,va as exportAsGLTF,a as findByGuid,Zt as findObjectOfType,Oi as findObjectsOfType,ie as findResourceUsers,de as fitCamera,ii as fitObjectIntoVolume,cr as foreachComponent,ke as foreachComponentEnumerator,dn as forward,Ne as generateQRCode,vr as generateSeed,_r as getBoundingBox,Ji as getCameraController,Ki as getComponent,un as getComponentInChildren,zi as getComponentInParent,ut as getComponents,g as getComponentsInChildren,Ni as getComponentsInParent,Lo as getFormattedDate,n as getIconElement,ar as getIconTexture,y as getLoader,gt as getOrAddComponent,mn as getParam,gi as getParentHierarchyPath,yr as getPath,Wr as getPeerOptions,Er as getPeerjsInstance,Tn as getResourceUserCount,vn as getTempColor,An as getTempQuaternion,Vr as getTempVector,yi as getUrlParams,Sr as getVisibleInCustomShadowRendering,Un as getWorldDirection,Ln as getWorldEuler,Kt as getWorldPosition,Ci as getWorldQuaternion,Vi as getWorldRotation,an as getWorldScale,Rn as hasCommercialLicense,qt as hasIndieLicense,Ae as hasPointerEventComponent,wi as hasProLicense,ra as hideDebugConsole,cs as imageToCanvas,Ie as instantiate,Na as invokeLoadedImportPluginHooks,k as invokeXRSessionEnd,K as invokeXRSessionStart,Je as isActiveInHierarchy,M as isActiveSelf,xn as isAndroidDevice,Fi as isAnimationAction,O as isComponent,Nn as isDebugMode,Ur as isDesktop,oe as isDestroyed,fe as isDevEnvironment,di as isDisposed,sa as isExporting,G as isGLTFModel,Et as isHostedOnGlitch,xi as isHotReloadEnabled,Cn as isHotReloading,Tr as isIPad,Ee as isIconElement,V as isLocalNetwork,Kn as isMacOS,zn as isMobileDevice,Yt as isMozillaXR,Ei as isQuest,Ar as isResourceTrackingEnabled,Wi as isSafari,Se as isUsingInstancing,cn as isiOS,Ri as isiPad,Q as loadAsset,bs as loadPMREM,ua as loadSync,st as logHierarchy,p as lookAtInverse,Ai as lookAtObject,ft as lookAtScreenPoint,lt as makeId,h as makeIdFromRandomWords,$o as makeNameSafeForUSD,at as markAsInstancedRendered,Mi as microphonePermissionsGranted,mt as nameof,w as nameofFactory,xa as objectSerializer,ye as offXRSessionEnd,rt as offXRSessionStart,Hi as onAfterRender,on as onBeforeRender,Ii as onClear,ct as onDestroy,m as onInitialized,ji as onStart,pt as onUpdate,Xi as onXRSessionEnd,c as onXRSessionStart,ia as parseSync,C as placeOnSurface,v as postprocessFBXMaterials,et as prefix,b as pushState,Be as randomNumber,Di as registerBinaryType,Li as registerComponent,Ma as registerComponentExtension,kl as registerCustomEffectType,Xa as registerExportExtensions,qo as registerExtensions,Fn as registerHotReloadType,ze as registerLoader,_i as registerPrefabProvider,L as registerPrototypeExtensions,wn as registerType,pr as relativePathPrefix,r as removeAttributeChangeCallback,E as removeComponent,Da as removeCustomImportExtensionType,Yi as removePatch,or as resolveUrl,De as sanitizeString,To as saveImage,Jo as screenshot,ys as screenshot2,yn as sendDestroyed,Ft as serializable,It as serializeObject,Ut as serializeable,$i as setActive,Ht as setAllowBalloonMessages,Xe as setAllowOverlayMessages,s as setAutoFitEnabled,wt as setCameraController,d as setDestroyed,qr as setDevEnvironment,$r as setDisposable,Ot as setDontDestroy,Pe as setOrAddParamsToUrl,Ke as setParam,A as setParamWithoutReload,qn as setPeerOptions,Qn as setResourceTrackingEnabled,q as setState,Re as setVisibleInCustomShadowRendering,ur as setWorldEuler,e as setWorldPosition,rr as setWorldPositionXYZ,we as setWorldQuaternion,je as setWorldQuaternionXYZW,We as setWorldRotation,D as setWorldRotationXYZ,W as setWorldScale,ui as showBalloonError,kr as showBalloonMessage,Zr as showBalloonWarning,ta as showDebugConsole,_e as slerp,jn as syncDestroy,ko as syncField,Hr as syncInstantiate,tt as textureToCanvas,be as toSourceId,Gi as tryCastBinary,oc as tryDetermineMimetypeFromBinary,ac as tryDetermineMimetypeFromURL,it as tryFindObject,ln as tryGetGuid,Gr as unregisterHotReloadType,Zi as unwatchWrite,z as useForAutoFit,qi as validate,l as watchWrite}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js.gz b/Needle/MenuScene/dist/assets/needle-engine.V_YEpsUE.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5177eb326cf476f56bbc0b903ff3207e2afc1574 GIT binary patch literal 7318 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js b/Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js new file mode 100644 index 0000000..04b3d05 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js @@ -0,0 +1 @@ +import{a as e,i as t,n,r}from"./three-mesh-bvh.B-oXEGo2.js";export{e as MeshBVH,n as StaticGeometryGenerator,r as acceleratedRaycast,t as computeBoundsTree}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz b/Needle/MenuScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ecc824690728cbc3041e8542388aef1898860418 GIT binary patch literal 146 zcmV;D0B!#tiwFP!000023LT5V3c@fD1%IXVoJ8>2TR`f?ix%;^rcY8a*|OP+Mf&d& zPmedlOlfA(FEvyen5mAMY-D=~r`GK>3SbjTwD)&(-tz6x^WHs6+u`$XQKJ(|^w*=w z^<0#63OzVMW$lq6q%20Nq!93`0OOg~Kt+vK9yra5!t;{HG6=ABKlq~pDV+cS01%Tz AvH$=8 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine.dep.BzZBR-mM.js b/Needle/MenuScene/dist/assets/needle-engine.dep.BzZBR-mM.js new file mode 100644 index 0000000..15483f3 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.dep.BzZBR-mM.js @@ -0,0 +1 @@ +import{t as e}from"./needle-engine.D6xdy26G.js";export{e as GLTFAnimationPointerExtension}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js b/Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js new file mode 100644 index 0000000..3576f20 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js @@ -0,0 +1 @@ +import{$ as ee,$t as te,A as ne,At as e,B as t,Bt as n,C as r,Ct as re,D as ie,Dt as ae,E as oe,Et as i,F as a,Ft as o,G as s,Gt as c,H as l,Ht as u,I as d,It as f,J as p,Jt as m,K as h,Kt as g,L as _,Lt as v,M as y,Mt as b,N as x,Nt as S,O as C,Ot as w,P as T,Pt as E,Q as D,Qt as O,R as k,Rt as A,S as j,St as M,T as N,Tt as P,U as F,Ut as I,V as L,Vt as R,W as z,Wt as B,X as V,Xt as H,Y as U,Yt as W,Z as G,Zt as K,_ as q,_t as se,a as ce,an as le,at as J,b as ue,bt as Y,c as de,cn as fe,ct as pe,d as me,dt as he,en as ge,et as _e,f as ve,ft as ye,g as be,gt as xe,h as Se,ht as X,i as Ce,in as we,it as Te,j as Ee,jt as De,k as Oe,kt as ke,l as Ae,ln as je,lt as Z,m as Me,mt as Ne,n as Pe,nn as Fe,nt as Ie,o as Le,on as Re,ot as Q,p as ze,pt as Be,q as Ve,qt as He,r as Ue,rn as We,rt as Ge,s as Ke,sn as qe,st as Je,t as Ye,tn as Xe,tt as Ze,u as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as $,xt as it,y as at,yt as ot,z as st,zt as ct}from"./postprocessing.Wy71DpiM.js";export{Ye as ASCIIEffect,Pe as ASCIITexture,Ue as AdaptiveLuminanceMaterial,Ce as AdaptiveLuminancePass,ce as BlendFunction,Le as BlendMode,Ke as BloomEffect,Q as BlurPass,Q as KawaseBlurPass,de as BokehEffect,Ae as BokehMaterial,Qe as BoxBlurMaterial,me as BoxBlurPass,ve as BrightnessContrastEffect,ze as ChromaticAberrationEffect,Me as CircleOfConfusionMaterial,Se as ClearMaskPass,be as ClearPass,q as ColorAverageEffect,et as ColorChannel,at as ColorDepthEffect,_ as ColorEdgesMaterial,_ as EdgeDetectionMaterial,J as ConvolutionMaterial,J as KawaseBlurMaterial,ue as CopyMaterial,$ as CopyPass,$ as SavePass,j as DepthComparisonMaterial,r as DepthCopyMaterial,nt as DepthCopyMode,N as DepthCopyPass,N as DepthSavePass,oe as DepthDownsamplingMaterial,ie as DepthDownsamplingPass,C as DepthEffect,Oe as DepthMaskMaterial,ne as DepthOfFieldEffect,Ee as DepthPass,y as DepthPickingPass,x as DepthTestStrategy,T as Disposable,a as DotScreenEffect,d as DownsamplingMaterial,k as EdgeDetectionMode,st as Effect,t as EffectAttribute,L as EffectComposer,l as EffectMaterial,F as EffectPass,z as EffectShaderData,s as EffectShaderSection,s as Section,h as FXAAEffect,Ve as GammaCorrectionEffect,p as GaussKernel,U as GaussianBlurMaterial,V as GaussianBlurPass,G as GlitchEffect,D as GlitchMode,ee as GodRaysEffect,_e as GodRaysMaterial,Ze as GridEffect,Ie as HueSaturationEffect,Ge as ImmutableTimer,Te as Initializable,Je as KernelSize,pe as LUT1DEffect,Z as LUT3DEffect,Z as LUTEffect,$e as LUT3dlLoader,he as LUTCubeLoader,ye as LUTOperation,Be as LambdaPass,Ne as LensDistortionEffect,X as LookupTexture,X as LookupTexture3D,xe as LuminanceMaterial,se as LuminancePass,tt as MaskFunction,ot as MaskMaterial,Y as MaskPass,it as MipmapBlurPass,M as NoiseEffect,re as NoiseTexture,rt as NormalPass,i as OutlineEdgesMaterial,i as OutlineMaterial,P as OutlineEffect,ae as OverrideMaterialManager,w as Pass,ke as PixelationEffect,e as PredicationMode,De as RawImageData,b as RealisticBokehEffect,S as RenderPass,E as Resizable,o as Resizer,o as Resolution,f as SMAAAreaImageData,v as SMAAEffect,A as SMAAImageGenerator,ct as SMAAImageLoader,n as SMAAPreset,R as SMAASearchImageData,u as SMAAWeightsMaterial,I as SSAOEffect,B as SSAOMaterial,c as ScanlineEffect,g as Selection,He as SelectiveBloomEffect,m as SepiaEffect,W as ShaderPass,H as ShockWaveEffect,K as TetrahedralUpscaler,O as TextureEffect,te as TiltShiftBlurMaterial,ge as TiltShiftBlurPass,Xe as TiltShiftEffect,Fe as Timer,We as ToneMappingEffect,we as ToneMappingMode,le as UpsamplingMaterial,Re as VignetteEffect,qe as VignetteTechnique,fe as WebGLExtension,je as version}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz b/Needle/MenuScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..aef130b4c86ff0349df6e55ea3efb5a9449a285d GIT binary patch literal 1473 zcmV;y1wQ&8iwFP!000023T>B7bK*DJ6|SPmaK&u5?`vn+5E z%?39t*BD3hiZRO_Cea))VY$R@G<)2#OfZe6k15L!%%YiN#_|Gp(F}0Ma*F$Cwzy~6 zLlVs!5|$Ipqq)VLKsC2SZxL33^in#cMeXm-pAZ=7Dj8-oF1%LyiI8EgqT zr?vge*)*>i`IlTRom`-FE+KjB^S zPjI{d1jk($1jn8c!SfmrJbT^=UXo3aBohLAo(MsvOsF_4p<-}G*zp+(*vaV%_~26% z@FC|XV9zbFm(vn(;Nuc-knx3sDI^g7bc?5<|} z*srCMxzhmIZnjWUMv`b;w#P#Ky8ytecrTa$02 zGmmIMfp`U4*R^ypJDXQu9bL*>UdgO&d1%pDL-;dTC2A+D|0ZX;44b|!O69aais6o& zN8_1r%Hs~XJwZHlhuUbCS~jpB#;c;twOO|#>p%OsZ@+cb*_?Kb-cmv)Rbp+ zhl|d^BOW@b(`^%H-_kkxkOZd!tq<~G474w;SIfM<#|JhfsUvE(StjrgU$*_a#4&Ah zAJx5&e)mFfdRYaM2U1{MA?wM>eJiXDFzgtA#%HIKjmpRkR8Vpu9@9i7BaTM!+c13U z_3DW|a^gm+C{*7%C#`Bp)xNnk9kryHtvuVe))gw3k+{&PLaq&+-k8Up7S4{FOBBUXraN*@XKl-gGHOju z9&(Pf<#sc@r~G)62z8X{RJCVz!1P{yTor0fe5{sIv#4DApwr_wFAc>Z@LgxMb4n^&F`#*sj6Nv)X8GG9nWW*Rtia>3;F6>~{PdPm2lMIoM2s~T|mE!P$2 z@KUr*w+ppv#=ntjH8{1Q%&GjL^r_0p$)ARLi!~Q52cPRaBpba7CzsUvtB->|o$`95 zVNK)Zv5?<3?#Qy#W?i@W_?`1E%9%ctUtWrPc0B5}p%9uGzn{Q4r5mH)E5eGT{let n=typeof e.priority==`number`?e.priority:x.get(e.effect.constructor)??-1/0,r=typeof t.priority==`number`?t.priority:x.get(t.effect.constructor)??-1/0;return n===-1/0?(v&&console.warn(`Unknown effect found: `,e.constructor.name,e),1):r===-1/0?(v&&console.warn(`Unknown effect found: `,t.constructor.name,t),-1):n-r}),v===`verbose`&&console.debug(`After ordering effects`,[...e])}var fe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},pe=h(`debugpost`),S=class{isVolumeParameter=!0;constructor(e){e!==void 0&&this.initialize(e)}_isInitialized=!1;get isInitialized(){return this._isInitialized}initialize(e){e!==void 0&&(this._value=e,this._defaultValue=e,this._valueRaw=e,this._isInitialized=!0)}get overrideState(){return this._active}set overrideState(e){if(this._active===e)return;this._active=e;let t=e?this._valueRaw:this._defaultValue;this.processValue(t,!0)}_active=!0;get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}_value;_valueRaw;set defaultValue(e){this._defaultValue=e}_defaultValue=void 0;__init(){this.processValue(this._valueRaw,!0)}valueProcessor;onValueChanged;processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;let n=this._value;pe&&typeof n==`number`&&typeof e==`number`&&(n?.toFixed(4),e?.toFixed(4)),!this._active&&this._defaultValue!==void 0?(this._value=this._defaultValue,e=this._defaultValue,this._valueRaw=e):(this._valueRaw=e,this._active&&this.valueProcessor&&(e=this.valueProcessor(e)),this._value=e),this.onValueChanged&&this.onValueChanged(e,n,this)}testIfValueChanged(e){return this._valueRaw!==e}};fe([p()],S.prototype,`overrideState`,null),fe([p()],S.prototype,`value`,null),new class extends ae{constructor(){super([S])}onSerialize(e,t){}onDeserialize(e,t){let n=t.target,r=t.path,i;if(n&&r&&(i=n[r]),(typeof i!=`object`||typeof i==`object`&&i.isVolumeParameter!==!0)&&(i=new S),typeof e==`object`&&`value`in e){let t=e.value;i.initialize(t),i.overrideState=e.overrideState}else i.value=e;return i}};var me=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},C=h(`debugpost`),w=class extends ie{get isPostProcessingEffect(){return!0}order=void 0;constructor(e=void 0){if(super(),e)for(let t of Object.keys(e)){let n=e[t],r=this[t];r instanceof S?r.initialize(n):r!==void 0&&(this[t]=n)}}active=!0;_manager=null;onEnable(){super.onEnable(),C&&console.warn(`Enable`,this.constructor.name+(this.__internalDidAwakeAndStart?``:` (awake)`)),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){super.onDisable(),C&&console.warn(`Disable`,this.constructor.name),this._manager?.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||=ue(this),this._manager.addEffect(this),this._manager.dirty=!0}init(){}_result;_postprocessingContext=null;get postprocessingContext(){return this._postprocessingContext}apply(e){return this._postprocessingContext=e,this._result||=(this.initParameters(),this.onCreateEffect?.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){C&&console.warn(`DISPOSE`,this),this._result&&(Array.isArray(this._result)?this._result.forEach(e=>e.dispose()):this._result.dispose()),this._result=void 0}initParameters(){let e=Object.keys(this);for(let t of e){let e=this[t];e instanceof S&&e.__init()}}onEditorModification(e){let t=e.propertyName;if(this[t]instanceof S){let n=e.value;return this[t].value=n,!0}}};me([p()],w.prototype,`active`,void 0);var he=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ge=h(`debugpost`),_e={};function T(e,t){_e[e]=t}function ve(e){return e.__type in _e?_e[e.__type]:(ge&&e.__type&&console.warn(`Unknown postprocessing type`,e.__type,e),w)}var ye=class{components=[];__init(e){this.components?.forEach(t=>{t.gameObject===void 0&&e.gameObject.addComponent(t),t.init()})}addEffect(e){this.components.push(e)}removeEffect(e){let t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}};he([m([e=>ve(e),w])],ye.prototype,`components`,void 0);var be=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xe=h(`debugpost`),Se;(function(e){e[e.LOW=0]=`LOW`,e[e.MEDIUM=1]=`MEDIUM`,e[e.HIGH=2]=`HIGH`,e[e.ULTRA=3]=`ULTRA`})(Se||={});var Ce=class extends w{get typeName(){return`Antialiasing`}preset=new S(2);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.SMAAEffect({preset:this.preset?.value??g.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:g.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=t=>{xe&&console.log(`Antialiasing preset changed to`,t),e.applyPreset(t)},e}};be([p(S)],Ce.prototype,`preset`,void 0),T(`Antialiasing`,Ce);var we=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},E=class e extends w{static useSelectiveBloom=!1;get typeName(){return`Bloom`}threshold=new S(.9);intensity=new S(1);scatter=new S(.7);selectiveBloom;init(){this.threshold.valueProcessor=e=>e,this.intensity.valueProcessor=e=>e,this.scatter.valueProcessor=e=>e}onCreateEffect(){let t;if(this.selectiveBloom??=e.useSelectiveBloom,this.selectiveBloom){let e=t=new g.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});e.inverted=!0}else t=new g.POSTPROCESSING.MODULE.BloomEffect({blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=e=>{t.intensity=e},this.threshold.onValueChanged=e=>{t.luminanceMaterial.threshold=e**2.2},this.scatter.onValueChanged=e=>{t.luminancePass.enabled=!0,t.luminanceMaterial.smoothing=e,t.mipmapBlurPass&&(t.mipmapBlurPass.radius=n.lerp(.1,.9,e))},t}};we([p(S)],E.prototype,`threshold`,void 0),we([p(S)],E.prototype,`intensity`,void 0),we([p(S)],E.prototype,`scatter`,void 0),T(`Bloom`,E);var Te=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},D=class extends w{get typeName(){return`ChromaticAberration`}intensity=new S(0);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new s(0,0),e.radialModulation=!0,e.modulationOffset=.15,this.intensity.valueProcessor=e=>e*.02,this.intensity.onValueChanged=t=>{e.offset.x=-t,e.offset.y=t},e}};Te([p(S)],D.prototype,`intensity`,void 0),T(`ChromaticAberration`,D);var O;(function(e){e[e.None=0]=`None`,e[e.Neutral=1]=`Neutral`,e[e.ACES=2]=`ACES`,e[e.AgX=3]=`AgX`,e[e.KhronosNeutral=4]=`KhronosNeutral`})(O||={});var Ee=new Map;function k(e){switch(e){case O.None:return 1;case O.Neutral:return 2;case O.ACES:return 4;case O.AgX:return 6;case O.KhronosNeutral:return 7;default:return Ee.has(e)||(Ee.set(e,!0),console.warn(`[Postprocessing] Unknown tone mapping mode`,e)),7}}function De(e){switch(e){case 1:return O.None;case 4:return O.ACES;case 6:return O.AgX;case 7:return O.Neutral;case 2:return O.Neutral;default:return O.None}}function A(e){switch(e){case 1:return g.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case 4:return g.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case 6:return g.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case 7:return g.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case 2:return g.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return g.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var Oe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},j=h(`debugpost`),M=class extends w{get typeName(){return`ToneMapping`}mode=new S(void 0);exposure=new S(1);setMode(e){let t=O[e];return t===void 0?(console.error(`[PostProcessing] Invalid ToneMapping mode`,e),this):(this.mode.value=t,this)}get isToneMapping(){return!0}onEffectEnabled(){let e=le(this);e&&super.onEffectEnabled(e)}_tonemappingEffect=null;onCreateEffect(){if(this.mode.isInitialized==0){let e=De(this.context.renderer.toneMapping);j&&console.log(`[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping`,this.context.renderer.toneMapping+` → `+e),this.mode.initialize(e)}this._tonemappingEffect?.dispose();let e=k(this.mode.value),t=this._tonemappingEffect=new g.POSTPROCESSING.MODULE.ToneMappingEffect({mode:A(e)});return this.mode.onValueChanged=n=>{typeof n==`string`?(n=f(n),t.mode=A(n)):t.mode=A(k(n)),t.name=`ToneMapping (`+O[n]+`)`,j&&console.log(`[PostProcessing] ToneMapping mode changed to`,O[n],e,t.mode)},j&&console.log(`[PostProcessing] Use ToneMapping`,O[this.mode.value],e,t.mode,`renderer.tonemapping: `+this.context.renderer.toneMapping),t}onBeforeRender(){if(this._tonemappingEffect&&this.postprocessingContext?.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=k(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){let e=Math.max(0,this.exposure.value);this.context.renderer.toneMappingExposure=e}}};Oe([p(S)],M.prototype,`mode`,void 0),Oe([p(S)],M.prototype,`exposure`,void 0),T(`Tonemapping`,M);var N=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},P=class extends w{get typeName(){return`ColorAdjustments`}remap=!0;postExposure=new S(1);contrast=new S(0);hueShift=new S(0);saturation=new S(0);init(){this.postExposure.valueProcessor=e=>(this.remap&&(e=2**e),e),this.contrast.valueProcessor=e=>{if(!this.remap)return e;let t=1;return e>0?t=200:e<0&&(t=100),e/t},this.contrast.defaultValue=0,this.hueShift.valueProcessor=e=>this.remap?Math.PI*e/180:e,this.hueShift.defaultValue=0,this.saturation.valueProcessor=e=>this.remap?e<0?e/100:e/(100*Math.PI):e,this.saturation.defaultValue=0}onCreateEffect(){let e=[],t=this.postprocessingContext?.components.find(e=>e instanceof M);t||(t=new M,this.postprocessingContext?.components.push(t)),this.postExposure.onValueChanged=e=>{this.postExposure.overrideState&&t?t.exposure.value=e:console.warn(`[PostProcessing] PostExposure is set to override but no ToneMappingEffect found in the postprocessing stack. Please add a ToneMappingEffect to your postprocessing stack to use PostExposure.`)};let n=new g.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=e=>n.contrast=e;let r=new g.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=e=>r.hue=e,this.saturation.onValueChanged=e=>r.saturation=e,e.push(n),e.push(r),e}};N([p(S)],P.prototype,`postExposure`,void 0),N([p(S)],P.prototype,`contrast`,void 0),N([p(S)],P.prototype,`hueShift`,void 0),N([p(S)],P.prototype,`saturation`,void 0),T(`ColorAdjustments`,P);var F=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ke;(function(e){e[e.Off=0]=`Off`,e[e.Gaussian=1]=`Gaussian`,e[e.Bokeh=2]=`Bokeh`})(ke||={});var Ae=h(`debugpost`),I=class extends w{get typeName(){return`DepthOfField`}mode;focusDistance=new S(1);focalLength=new S(.2);aperture=new S(20);gaussianMaxRadius=new S;resolutionScale=new S(1/window.devicePixelRatio);bokehScale=new S;init(){this.focalLength.valueProcessor=e=>{let t=e/300;return d.lerp(2,.01,t)},this.aperture.valueProcessor=e=>{let t=1-e/32;return d.lerp(1,20,t)}}onCreateEffect(){if(this.mode===ke.Off){Ae&&console.warn(`DepthOfField: Mode is set to Off`);return}let e=new g.POSTPROCESSING.MODULE.DepthOfFieldEffect(this.context.mainCamera,{worldFocusRange:.2,focalLength:1,bokehScale:20,resolutionScale:this.resolutionScale.value});return this.focusDistance.onValueChanged=t=>{e.cocMaterial.worldFocusDistance=t},this.focalLength.onValueChanged=t=>e.cocMaterial.worldFocusRange=t,this.aperture.onValueChanged=t=>e.bokehScale=t,this.resolutionScale&&(this.resolutionScale.onValueChanged=t=>e.resolution.scale=t),[e]}unapply(){}};F([p()],I.prototype,`mode`,void 0),F([p(S)],I.prototype,`focusDistance`,void 0),F([p(S)],I.prototype,`focalLength`,void 0),F([p(S)],I.prototype,`aperture`,void 0),F([p(S)],I.prototype,`gaussianMaxRadius`,void 0),F([p(S)],I.prototype,`resolutionScale`,void 0),F([p(S)],I.prototype,`bokehScale`,void 0),T(`DepthOfField`,I);var je=class extends w{effect;constructor(e){super(),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}},Me=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},L=class extends w{get typeName(){return`PixelationEffect`}granularity=new S(10);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}};Me([p(S)],L.prototype,`granularity`,void 0),T(`PixelationEffect`,L);var R=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},z=class extends w{get typeName(){return`ScreenSpaceAmbientOcclusion`}intensity=new S(2);falloff=new S(1);samples=new S(9);color=new S(new e(0,0,0));luminanceInfluence=new S(.7);onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof o){let e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}_ssao;onCreateEffect(){let t=this.context.mainCamera,n=new g.POSTPROCESSING.MODULE.NormalPass(this.context.scene,t),r=new g.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:n.texture,resolutionScale:.5}),i=this._ssao=new g.POSTPROCESSING.MODULE.SSAOEffect(t,n.texture,{normalDepthBuffer:r.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=e=>{i.intensity=e},this.falloff.onValueChanged=e=>{i.ssaoMaterial.radius=e*.1},this.samples.onValueChanged=e=>{i.ssaoMaterial.samples=e},this.color.onValueChanged=t=>{i.color||=new e,i.color.copy(t)},this.luminanceInfluence.onValueChanged=e=>{i.luminanceInfluence=e};let a=[];return a.push(n),a.push(r),a.push(i),a}};R([p(S)],z.prototype,`intensity`,void 0),R([p(S)],z.prototype,`falloff`,void 0),R([p(S)],z.prototype,`samples`,void 0),R([p(S)],z.prototype,`color`,void 0),R([p(S)],z.prototype,`luminanceInfluence`,void 0),T(`ScreenSpaceAmbientOcclusion`,z);var B=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ne=h(`debugN8AO`),V;(function(e){e[e.Performance=0]=`Performance`,e[e.Low=1]=`Low`,e[e.Medium=2]=`Medium`,e[e.High=3]=`High`,e[e.Ultra=4]=`Ultra`})(V||={});var H=class extends w{get typeName(){return`ScreenSpaceAmbientOcclusionN8`}get pass(){return this._ssao}gammaCorrection=!0;aoRadius=new S(1);falloff=new S(1);intensity=new S(1);color=new S(new e(0,0,0));screenspaceRadius=!1;quality=V.Medium;_ssao;onValidate(){this._ssao&&(this._ssao.setQualityMode(V[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){let n=this.context.mainCamera,r=this.context.domWidth,i=this.context.domHeight,a=this._ssao=new g.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,n,r,i);a.name=`SSAO_N8`;let o=V[this.quality];if(a.setQualityMode(o),a.configuration.transparencyAware=!1,a.configuration.halfRes=window.devicePixelRatio>1,a.effectCompositerQuad?.material){let e=a.effectCompositerQuad.material;e.fragmentShader=e.fragmentShader.replace(`if (depth == 1.0) { + texel = vec4(0.0, 0.0, 0.0, 1.0);`,`if (depth == 1.0) { + gl_FragColor = sceneTexel; + return;`),e.needsUpdate=!0}let s=new t(r,i);return a.configuration.beautyRenderTarget=s,a.configuration.autoRenderBeauty=!1,a.configuration.gammaCorrection=this.gammaCorrection,a.configuration.screenSpaceRadius=this.screenspaceRadius,Ne&&(a.enableDebugMode(),console.log(a),setInterval(()=>{console.log(`SSAO`,a.lastTime)},1e3),setInterval(()=>{console.log(`SSAO`,a.enabled,{ssao:a,autoRenderBeauty:a.configuration.autoRenderBeauty})},4e3)),this.intensity.onValueChanged=e=>{a.configuration.intensity=e},this.falloff.onValueChanged=e=>{a.configuration.distanceFalloff=e},this.aoRadius.onValueChanged=e=>{a.configuration.aoRadius=e},this.color.onValueChanged=t=>{a.color||=new e,a.configuration.color.copy(t)},a}};B([_(),p()],H.prototype,`gammaCorrection`,void 0),B([p(S)],H.prototype,`aoRadius`,void 0),B([p(S)],H.prototype,`falloff`,void 0),B([p(S)],H.prototype,`intensity`,void 0),B([p(S)],H.prototype,`color`,void 0),B([_(),p()],H.prototype,`screenspaceRadius`,void 0),B([_(),p()],H.prototype,`quality`,void 0),T(`ScreenSpaceAmbientOcclusionN8`,H);var Pe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},U=class extends w{get typeName(){return`Sharpening`}order=b.Sharpening;_effect;onCreateEffect(){return this._effect??=new(Fe()),this.effect}get effect(){return this._effect}set amount(e){this._amount=e,this._effect&&(this._effect.uniforms.get(`amount`).value=e)}get amount(){return this._effect?this._effect.uniforms.get(`amount`).value:this._amount}_amount=1;set radius(e){this._radius=e,this._effect&&(this._effect.uniforms.get(`radius`).value=e)}get radius(){return this._effect?this._effect.uniforms.get(`radius`).value:this._radius}_radius=1};Pe([p()],U.prototype,`amount`,null),Pe([p()],U.prototype,`radius`,null);function Fe(){class e extends g.POSTPROCESSING.MODULE.Effect{constructor(){super(`Sharpening`,` + uniform sampler2D tDiffuse; + uniform float amount; + uniform float radius; + + void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) { + float tx = 1.0 / resolution.x; + float ty = 1.0 / resolution.y; + vec2 texelSize = vec2(tx, ty); + + vec4 blurred = vec4(0.0); + float total = 0.0; + + for (float x = -radius; x <= radius; x++) { + for (float y = -radius; y <= radius; y++) { + vec2 offset = vec2(x, y) * texelSize; + vec4 diffuse = texture2D(tDiffuse, uv + offset); + float weight = exp(-length(offset) * amount); + blurred += diffuse * weight; + total += weight; + } + } + + if (total > 0.0) { + blurred /= total; + } + + // Calculate the sharpened color using inputColor + vec4 sharp = inputColor + clamp(inputColor - blurred, 0.0, 1.0) * amount; + // Keep original alpha + sharp.a = inputColor.a; + + // Ensure the sharp color does not go below 0 or above 1 + // This means: sharpening must happen AFTER tonemapping. + sharp = clamp(sharp, 0.0, 1.0); + + outputColor = sharp; + } + + `,{vertexShader:` + void mainSupport() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } + `,blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.NORMAL,uniforms:new Map([[`amount`,new c(1)],[`radius`,new c(1)]]),attributes:se.CONVOLUTION})}}return e}var W=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},G=class extends w{get typeName(){return`TiltShiftEffect`}offset=new S(0);rotation=new S(0);focusArea=new S(.4);feather=new S(.3);kernelSize=new S(2);resolutionScale=new S(1/window.devicePixelRatio);init(){this.offset.defaultValue=0,this.rotation.defaultValue=0,this.focusArea.defaultValue=.4,this.feather.defaultValue=.3,this.kernelSize.defaultValue=g.POSTPROCESSING.MODULE.KernelSize.MEDIUM,this.resolutionScale.defaultValue=1/window.devicePixelRatio}onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.TiltShiftEffect({kernelSize:g.POSTPROCESSING.MODULE.KernelSize.VERY_LARGE,offset:this.offset.value,rotation:this.rotation.value,focusArea:this.focusArea.value,feather:this.feather.value});return this.offset.onValueChanged=t=>e.offset=t,this.rotation.onValueChanged=t=>e.rotation=t,this.focusArea.onValueChanged=t=>e.focusArea=t,this.feather.onValueChanged=t=>e.feather=t,this.kernelSize.onValueChanged=t=>e.blurPass.kernelSize=t,this.resolutionScale.onValueChanged=t=>e.resolution.scale=t/window.devicePixelRatio,e}};W([p(S)],G.prototype,`offset`,void 0),W([p(S)],G.prototype,`rotation`,void 0),W([p(S)],G.prototype,`focusArea`,void 0),W([p(S)],G.prototype,`feather`,void 0),W([p(S)],G.prototype,`kernelSize`,void 0),W([p(S)],G.prototype,`resolutionScale`,void 0),T(`TiltShiftEffect`,G);var K=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},q=class extends w{get typeName(){return`Vignette`}color=new S({r:0,g:0,b:0,a:1});intensity=new S(0);center=new S({x:.5,y:.5});init(){this.color.defaultValue={r:0,g:0,b:0,a:1},this.intensity.defaultValue=0,this.center.defaultValue={x:.5,y:.5}}onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.VignetteEffect;return this.intensity.onValueChanged=t=>{e.offset=t,this.updateDarkness(e)},this.color.onValueChanged=t=>{this.updateDarkness(e)},e}updateDarkness(e){e.darkness=this.intensity.value}};K([p(S)],q.prototype,`color`,void 0),K([p(S)],q.prototype,`intensity`,void 0),K([p(S)],q.prototype,`center`,void 0),T(`Vignette`,q),globalThis.NEEDLE_USE_POSTPROCESSING=globalThis.NEEDLE_USE_POSTPROCESSING===void 0?!0:globalThis.NEEDLE_USE_POSTPROCESSING;var J=h(`debugpost`),Ie=Symbol(`needle:postprocessing-handler`),Y=Symbol(`needle:previous-autoclear-state`),X=Symbol(`needle:previous-tone-mapping`),Le=class e{_composer=null;_lastVolumeComponents;_effects=[];getEffectIsActive(e){return e?this._isActive&&this._effects.some(t=>t.effect===e):!1}get isActive(){return this._isActive}get composer(){return this._composer}_isActive=!1;context;constructor(e){this.context=e}apply(e){return`env`in import.meta,this._isActive=!0,this.onApply(this.context,e)}unapply(e=!0){if(J&&console.log(`Unapplying postprocessing effects`),this._isActive=!1,this._lastVolumeComponents){for(let e of this._lastVolumeComponents)e.unapply();this._lastVolumeComponents.length=0}let t=this.context;t[Ie]===this&&(delete t[Ie],typeof t.renderer[Y]==`boolean`&&(t.renderer.autoClear=t.renderer[Y]),typeof t.renderer[X]==`number`&&(t.renderer.toneMapping=t.renderer[X])),this._composer?.removeAllPasses(),e&&this._composer?.dispose(),t.composer===this._composer&&(t.composer=null),this._adaptiveDPR_OverrideActive&&(this._adaptiveDPR_OverrideActive=!1,t.devicePixelRatio=`auto`),this.handleDevicePixelRatio()}dispose(){this.unapply(!0);for(let e of this._effects)e.effect.dispose();this._effects.length=0,this._composer=null}async onApply(e,t){if(!t)return;await Promise.all([g.POSTPROCESSING.load(),g.POSTPROCESSING_AO.load()]),e[Ie]=this,J&&console.log(`Apply Postprocessing Effects`,t),this._lastVolumeComponents=[...t],this._effects.length=0;let n={handler:this,components:this._lastVolumeComponents};for(let t=0;t1){let e=Math.max(1,Math.round((a-o)*10)/10);e=59&&r>1&&n-this._adaptiveDPR_LastDecreaseTime>10&&aa?(this._adaptiveDPR_LastChangeTime=n,this.context.devicePixelRatio=e,J&&console.debug(`[PostProcessing] Increased pixel ratio from ${a.toFixed(1)} to ${e}`)):this._adaptiveDPR_OverrideActive&&(this._adaptiveDPR_OverrideActive=!1,this._adaptiveDPR_LastChangeTime=n,this.context.devicePixelRatio=`auto`,J&&console.debug(`[PostProcessing] Restored pixel ratio to auto`))}}applyEffects(e){if(this._anyPassHasDepth=!1,this._anyPassHasNormal=!1,this._hasSmaaEffect=!1,this._effects.length<=0)return;let n=e.mainCameraComponent,o=e.renderer,s=e.scene,c=n.threeCamera;if(typeof o[Y]==`boolean`&&(o.autoClear=o[Y]),o[Y]=o.autoClear,typeof o[X]==`number`&&(o.toneMapping=o[X]),o[X]=o.toneMapping,o.toneMapping!=0&&!this._effects.find(e=>e instanceof g.POSTPROCESSING.MODULE.ToneMappingEffect)){let e=new g.POSTPROCESSING.MODULE.ToneMappingEffect;e.name=`ToneMapping (${o.toneMapping})`,e.mode=A(o.toneMapping),this._effects.push({typeName:`ToneMapping`,effect:e,priority:b.ToneMapping})}this._composer||=new g.POSTPROCESSING.MODULE.EffectComposer(o,{frameBufferType:a,stencilBuffer:!0}),e.composer&&e.composer!==this._composer&&console.warn(`There's already an active EffectComposer in your scene: replacing it with a new one. This might cause unexpected behaviour. Make sure to only use one PostprocessingManager/Volume in your scene.`),e.composer=this._composer;let l=e.composer;l.setMainCamera(c),l.setRenderer(o),l.setMainScene(s),l.autoRenderToScreen=!0,l.multisampling=0;for(let e of l.passes)e.dispose();l.removeAllPasses();let u=new g.POSTPROCESSING.MODULE.RenderPass(s,c);u.name=`RenderPass`,u.mainScene=s,l.addPass(u);let d=u.render;this._customInputBuffer?.dispose(),this._customInputBuffer=null,u.render=(e,n,i,o,s)=>{if(n){if(this._multisampling<=0){d.call(u,e,n,i,o,s);return}n.samples=0,i&&(i.samples=0),(!this._customInputBuffer||this._customInputBuffer.width!==n.width||this._customInputBuffer.height!==n.height||this._customInputBuffer.samples!==this._multisampling||this._customInputBuffer.texture.format!==n.texture.format||this._customInputBuffer.texture.type!==1016)&&(this._customInputBuffer?.dispose(),this._customInputBuffer=new t(n.width,n.height,{format:n.texture.format,type:a,depthBuffer:n.depthBuffer,depthTexture:n.depthTexture?new r(n.width,n.height):void 0,stencilBuffer:n.stencilBuffer,samples:Math.max(0,this._multisampling),minFilter:n.texture.minFilter??1006,magFilter:n.texture.magFilter??1006,generateMipmaps:n.texture.generateMipmaps}),this._customInputBufferId++,this._customInputBuffer.texture.name=`CustomInputBuffer-${this._customInputBufferId}`,this._customInputBuffer.depthTexture&&n.depthTexture&&(this._customInputBuffer.depthTexture.format=n.depthTexture.format,this._customInputBuffer.depthTexture.type=n.depthTexture.type),J&&console.warn(`[PostProcessing] Input buffer created with size ${this._customInputBuffer.width}x${this._customInputBuffer.height} and samples ${this._customInputBuffer.samples}`)),d.call(u,e,this._customInputBuffer,i,o,s),e.setRenderTarget(n),ee.blit(this._customInputBuffer.texture,n,{renderer:e,depthTexture:this._customInputBuffer.depthTexture,depthWrite:!0,depthTest:!0})}};try{de(this._effects);let e=!1,t=null;for(let n=this._effects.length-1;n>=0;n--){let r=this._effects[n].effect;if(r instanceof g.POSTPROCESSING.MODULE.ToneMappingEffect){if(e){J&&console.warn(`[PostProcessing] Found multiple tonemapping effects in the scene: ${r.name} and ${t?.name}. Only the last one added will be used.`),this._effects.splice(n,1);continue}t=r,e=!0}}let n=[],r=!1;for(let e=0;ee.name).join(`, `)+`]`),this.createPassForMergeableEffects(n,l,c,s)),r=!0),n.push(i)):i instanceof g.POSTPROCESSING.MODULE.Pass?(r=!1,this.createPassForMergeableEffects(n,l,c,s),i.renderToScreen=!1,l.addPass(i)):(r=!1,this.createPassForMergeableEffects(n,l,c,s),l.addPass(i)))}this.createPassForMergeableEffects(n,l,c,s)}catch(e){console.error(`Error while applying postprocessing effects`,e),l.passes.forEach(e=>e.dispose()),l.removeAllPasses()}let f=!1;for(let e=l.passes.length-1;e>=0;e--){let t=l.passes[e],n=!1,r=!1;t.enabled&&(f||(n=!0,r=!0),f=!0),t.renderToScreen=r,t?.configuration===void 0?`autosetGamma`in t&&(t.autosetGamma=n):t.configuration.gammaCorrection=n,this._anyPassHasDepth||=t.needsDepthTexture}let p=l.depthTexture;p&&(p.source=new i({width:0,height:0}),p.needsUpdate=!0),this.handleDevicePixelRatio(),J&&console.log(`[PostProcessing] Passes →`,[...l.passes],` +--------------------------------- +• `+l.passes.map(e=>e.name||e.constructor.name+`*`).join(` +• `)+` +`),J&&this._onCreateEffectsDebug(this._composer,c)}createPassForMergeableEffects(e,t,n,r){if(e.length>0){let i=new g.POSTPROCESSING.MODULE.EffectPass(n,...e);i.name=e.map(e=>e.name).join(`, `),i.mainScene=r,i.enabled=!0,i.renderToScreen=!1,t.addPass(i),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio==`number`&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(J===`passes`){let n=new g.POSTPROCESSING.MODULE.DepthEffect({blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});n.name=`Depth Effect`;let r=new g.POSTPROCESSING.MODULE.EffectPass(t,n);if(r.name=`Depth Effect Pass`,r.enabled=!1,e.passes.push(r),this._passIndices!==null){let t=[e.passes[0]];this._passIndices.length>0&&t.push(...this._passIndices.filter(e=>e!==0).map(t=>e.passes[t]).filter(e=>e)),t.length>0&&console.log(`[PostProcessing] Passes (selected) →`,t),e.passes.length=0;for(let n of t)n.enabled=!0,n.renderToScreen=!1,e.addPass(n)}let i=this.context.menu;if(i&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();let t=document.createElement(`select`);t.multiple=!0;let n=document.createElement(`option`);n.innerText=`Final Output`,n.value=`-1`,t.appendChild(n);for(let n of e.passes){let r=document.createElement(`option`);r.innerText=n.name,r.value=`${e.passes.indexOf(n)}`,r.title=n.name,t.appendChild(r)}i.appendChild(t),this._menuEntry=t,t.addEventListener(`change`,()=>{let e=Array.from(t.selectedOptions).map(e=>parseInt(e.value));e.length===1&&e[0]===-1?this._passIndices=null:this._passIndices=e,this.applyEffects(this.context)})}}}},Re=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Z=h(`debugpost`),Q=class extends ie{get isPostProcessingManager(){return!0}get effects(){return this._activeEffects}get dirty(){return this._isDirty}set dirty(e){this._isDirty=e}sharedProfile;multisampling=`auto`;adaptiveResolution=!0;addEffect(e){let t=e;return t instanceof w||(t=new je(t),typeof e.order==`number`&&(t.order=e.order)),t.gameObject===void 0&&this.gameObject.addComponent(t),this._effects.includes(t)?e:(this._effects.push(t),this._isDirty=!0,e)}removeEffect(e){let t=-1;if(t=e instanceof w?this._effects.indexOf(e):this._effects.findIndex(t=>t instanceof je&&t.effect===e),t!==-1)return this._effects.splice(t,1),this._isDirty=!0,e;if(e instanceof w){let t=this.sharedProfile?.components?.indexOf(e);t!==void 0&&t!==-1&&(this._isDirty=!0,this.sharedProfile?.components?.splice(t,1))}return e}_postprocessing;_activeEffects=[];_effects=[];markDirty(){this._isDirty=!0}awake(){Z&&(console.log(`PostprocessingManager Awake`,this),console.log(`Press P to toggle post processing`),window.addEventListener(`keydown`,e=>{e.key===`p`&&(this.enabled=!this.enabled,re(`Toggle PostProcessing `+this.name+`: Enabled=`+this.enabled),this.markDirty())})),this.sharedProfile?.__init(this)}_componentEnabledTime=-1;_multisampleAutoChangeTime=0;_multisampleAutoDecreaseTime=0;onEnable(){this._componentEnabledTime=this.context.time.realtimeSinceStartup,this._isDirty=!0}onDisable(){this._postprocessing?.unapply(),this._isDirty=!1}onBeforeRender(){if(!this.context.isInXR&&(this.context.mainCamera&&this._isDirty&&this.apply(),this.context.composer&&this._postprocessing&&this._postprocessing.composer===this.context.composer)){if(this.context.renderer.getContext().isContextLost()&&this.context.renderer.forceContextRestore(),this.context.composer.getRenderer()!==this.context.renderer&&this.context.composer.setRenderer(this.context.renderer),this.context.composer.setMainScene(this.context.scene),this.multisampling===`auto`)if(this._postprocessing&&this._postprocessing.hasSmaaEffect)this._postprocessing.multisampling!==0&&(this._postprocessing.multisampling=0,(Z||l())&&console.log(`[PostProcessing] multisampling is disabled because it's set to 'auto' on your PostprocessingManager/Volume component that also has an SMAA effect. + +If you need multisampling consider changing 'auto' to a fixed value (e.g. 4).`));else{let e=this.context.time.realtimeSinceStartup-this._multisampleAutoChangeTime;if(this.context.time.realtimeSinceStartup-this._componentEnabledTime>2&&e>.5){let t=this._postprocessing.multisampling;if(this._postprocessing.multisampling>0&&this.context.time.smoothedFps<=50){this._multisampleAutoChangeTime=this.context.time.realtimeSinceStartup,this._multisampleAutoDecreaseTime=this.context.time.realtimeSinceStartup;let e=this._postprocessing.multisampling*.5;e=Math.floor(e),e!=this._postprocessing.multisampling&&(this._postprocessing.multisampling=e),Z&&console.debug(`[PostProcessing] Reduced multisampling from ${t} to ${this._postprocessing.multisampling}`)}else if(e>1&&this.context.time.smoothedFps>=59&&this._postprocessing.multisampling10){this._multisampleAutoChangeTime=this.context.time.realtimeSinceStartup;let e=this._postprocessing.multisampling<=0?1:this._postprocessing.multisampling*2;e=Math.floor(e),e!==this._postprocessing.multisampling&&(this._postprocessing.multisampling=e),Z&&console.debug(`[PostProcessing] Increased multisampling from ${t} to ${this._postprocessing.multisampling}`)}}}else{let e=Math.max(0,Math.min(this.multisampling,this.context.renderer.capabilities.maxSamples));e!==this._postprocessing.multisampling&&(this._postprocessing.multisampling=e)}if(this._postprocessing.adaptivePixelRatio=this.adaptiveResolution,this._postprocessing.updateAdaptivePixelRatio(),this.context.mainCamera){let e=this.context.composer.passes;for(let t of e)if(t.mainCamera&&t.mainCamera!==this.context.mainCamera){this.context.composer.setMainCamera(this.context.mainCamera);break}}}}onDestroy(){this._postprocessing?.dispose()}_lastApplyTime;_rapidApplyCount=0;_isDirty=!1;apply(){if(Z&&console.log(`Apply PostProcessing "${this.name||`unnamed`}"`),l()&&(this._lastApplyTime!==void 0&&Date.now()-this._lastApplyTime<100&&(this._rapidApplyCount++,this._rapidApplyCount===5&&console.warn(`Detected rapid post processing modifications - this might be a bug`,this)),this._lastApplyTime=Date.now()),this._isDirty=!1,this._activeEffects.length=0,this.sharedProfile?.components){let e=this.sharedProfile.components;for(let t of e)t.active&&t.enabled&&!this._activeEffects.includes(t)&&this._activeEffects.push(t)}for(let e of this._effects)e.active&&e.enabled&&!this._activeEffects.includes(e)&&this._activeEffects.push(e);this._activeEffects.length>0?(this._postprocessing||=new Le(this.context),this._postprocessing.apply(this._activeEffects)?.then(()=>{this.activeAndEnabled&&(this._applyPostQueue(),this._postprocessing?(this.multisampling===`auto`?this._postprocessing.multisampling=te.isMobileDevice()?2:4:this._postprocessing.multisampling=Math.max(0,Math.min(this.multisampling,this.context.renderer.capabilities.maxSamples)),Z&&console.debug(`[PostProcessing] Set multisampling to ${this._postprocessing.multisampling} (Is Mobile: ${te.isMobileDevice()})`)):Z&&console.warn(`[PostProcessing] No composer found`))})):this._postprocessing?.unapply(!1)}_applyPostQueue(){if(this._modificationQueue){for(let e of this._modificationQueue.values())this.onEditorModification(e);this._modificationQueue.clear()}}onEditorModification(e){if(e.propertyName.startsWith(`postprocessing.`)){if(!this._postprocessing)return this._modificationQueue||=new Map,this._modificationQueue.set(e.propertyName,e),!0;if(!this._activeEffects?.length)return;let t=e.propertyName.split(`.`);if(t.length===3||t.length===4){let n=t[1],r=t[2];for(let i of this._activeEffects)if(i.typeName?.toLowerCase()===n.toLowerCase()){if(r===`active`){i.active=e.value,this.scheduleRecreate();return}if(!$.has(n)){let e=[];$.set(n,e);let t=Object.keys(i);for(let n of t)i[n]instanceof S&&e.push(n)}if($.has(n)){let a=r.toLowerCase(),o=$.get(n);for(let n of o)if(n.toLowerCase()===a){let r=i[n];r instanceof S&&(t.length===4&&t[3]===`active`?(r.overrideState=e.value,this.scheduleRecreate()):r&&r.value!==void 0&&(r.value=e.value));return}}console.warn(`Unknown modification`,r);return}}return!0}return!1}_modificationQueue;_recreateId=-1;scheduleRecreate(){let e=++this._recreateId;setTimeout(()=>{e===this._recreateId&&(this.onDisable(),this.onEnable())},200)}};Re([m(ye)],Q.prototype,`sharedProfile`,void 0),Re([m()],Q.prototype,`multisampling`,void 0),Re([m()],Q.prototype,`adaptiveResolution`,void 0);var $=new Map;ce(Q);export{T as _,U as a,b,L as c,P as d,M as f,ye as g,Ce as h,G as i,je as l,E as m,Le as n,H as o,D as p,q as r,z as s,Q as t,I as u,w as v,S as y}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.extras.CDv9-f43.js.gz b/Needle/MenuScene/dist/assets/needle-engine.extras.CDv9-f43.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..fa1a4e6fc71d29373063a99c805d44fefa7aa711 GIT binary patch literal 11721 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%0DFdyEMaE08J%&YnsrQ4kRf-tc0*12?M-sB5)G zBc<+Ds&CIwFR}H%U#C@G?U2?hS`3+f4Z=Pq+!Kd8_qS0D&MMCZ47RJ)^JQ2xyyP=i3un%K}$?tLR`Ql71R^rf$N*DosK(xe00T@LJsU$zKvX`dqzckS>uvt z%<9dwR}8223%f!-Zd5=L5*n;TdR_fF^#8Q zp3X8Ab0~5bVy*6Xsa%r#xM7{vu2Qe?9H1*Fo*W~be<8&)b4~S28h)|4>faat^*{c% z6Fx7;(weM~kI;M^JA4-ENh}MK=iwKjz*CaYcBjk5ZEDxvpwb~Jp62?}ffJWV#bIx{ zdd*mEM-Wpip`Paf@ueIS#-=5rh(^XHGNY0CCRdvn;KnqjPh{D0cEXPBXC zHvB(lkaKjLm3-rp;%WlPY%k&2T%FzF2<|7NXo!KbL`v&OXg`pjf*=UxsE0Z}#L6g5 z|H%_^>VAoSnNDbHexmjTqIP9_3D<~HY>YB`x=PoJW>tW#t5W;3H%$?!DO&3&~fM@T=m zoR9)pmPZ_K&q#P1ql^@hl~8(8RYHMFA+>i02|tL?#(>v#<%1s~6=5jkIxc;9@c07{ zeG~&73*2*}Mdp-cIqc)DZ~cmeUy8jT=yf`9(M7+*&EBBN1jqvYW-`#GyM@VF_?C51 z6!i3SoPkf_*#CRo)A^U0r+)+s>FaAt7iESvpD?Pz1T?O^ODnn>P60TI5RZoA@Gd5c zcmfijbfQpM0Tg)g5-?oeIEulyZO-x-%-08Lr{#SS5kSg(0bPZ%E}itv9m9S3xWOMF zCXpOvkbYq`w^o^^@`QM9eWqPUrdj$@yR{*Xl3_d>LGE%gfWF&u{=zGFV@Vi%ByrgT z?wdWq#({O{bU&!Ksb6*PH;=6LF;h5#n^pXQUK*xnIK>_9W{Lh6_3{uDA+yw zh+eW_4RbIc@Rgs4j+V8tIBv)7B z-j94d?W!CgRj)V}-|U%gXt0gPxRz&EEwkp>l_s*Xa*SFVX*l(?JM=V0IZbw@b4OXd z%|V08vA$Qwx>2c?dz41>h!D4 z>qtEj;}S2*)$fBe=PqgNa#WddnhilgDkp|z{lNOmLrk&}wEI5Q8Y&B$C!nnbm$ho0 zls049Y1X$^tkR9GJSkj@_?AVJw1Qae;O3$fg--znUF!b6p8u3p4t?j8FB2YX%aiVi z|Eqj^;a}Lze>tf-uYU4SyK>Oww-^m3&Qo+`#q)Ty?J6z9`{E1bfQ+`28ajx2G{Qp^ zln0oi5HP&3gwE=?;N5u6E8>Mjxs$hqa$Y*^H|xi6H6i5J=fJ9(+CP@#c2Ly68hrgx|Z(Yv*EdlwIL|(5V-x!}KyZ6ld+E;#N<2V&J$tY~B zQEJ`dMYgu9cIs^6*Z6j&23pvly`BKHRJl842wKZ`ePpno~8Jk8U@x3D=REA{nb zJJHzved(n>V@sgD>E*dWI7{%yC@j7V360&#d&fe;*u(8I4qlSpyJWKk@O7_SDK$03 zOW%`vhl1ei=9^Jmy5kAh`W6afEk)yKD2|AlH>>bIm3p?Am^T+oEQ6{OO+BBs*hgyj zHgkNSbtNhPulhA!) zH!xU3N^*R``!KzZ^vRM-23!4CYpihpm)3xF*0r;9sL{z&{{ z>#~%LQ8hmHjK|}v@_z8Z%ggG8H*U#>vi{#RI25pF9N&{Y)RTxz)e-VEFog&e5ECUKLqy|;^QOD8DE?`EO)Nxd;G)bH9f!| zLwbULM)VN>jOiTk?+x7%e{bmz_$Q)&h|ier;hzaT5T6PC5&xug7ynG@pZF)Ef8n2; f{(^rv-N!#OdXInZ=o$W*7ykbNt8;h_L$Lq=4MRHK literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js b/Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js new file mode 100644 index 0000000..49d1fe8 --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js @@ -0,0 +1,80 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./needle-engine.CE4b2dOg.js","./needle-engine@5.0.3.js","./rolldown-runtime.CYVBeYYp.js","./needle-engine-webxr.DQA26K-l.js","./materialx.CnHmG--Y.js","./three@0.169.19.js","./needle-engine-ui.BzyLX9fs.js","./gltf-progressive.BBJGcb3s.js","./three-examples@0.169.19.js","./three-mesh-ui.CgGzZ3ml.js","./needle-engine-particles.Bw3zzNt3.js","./three-quarks.DALdLWPD.js","./needle-engine.extras.CDv9-f43.js","./postprocessing.Wy71DpiM.js","./three-mesh-bvh.B-oXEGo2.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{A as t,Ar as n,At as r,D as i,Gn as a,Jt as o,Kn as s,Mr as c,Nr as l,Nt as u,P as d,Q as f,Qn as p,Qt as m,R as ee,S as h,T as g,Tn as te,Xt as _,Z as ne,Zn as re,Zt as v,_ as ie,_n as ae,a as oe,d as se,fn as y,fr as ce,gn as le,gr as ue,i as de,in as fe,jr as pe,jt as me,kr as b,kt as he,nr as ge,s as _e,st as ve,tr as ye,tt as be,u as xe,ur as Se,ut as Ce,vn as we,wn as x,x as Te,y as Ee,yn as De}from"./three@0.169.19.js";import{$i as S,A as C,Aa as Oe,An as ke,Ao as Ae,B as je,Br as Me,C as Ne,D as Pe,Di as Fe,Dr as Ie,E as Le,Ea as Re,F as ze,Fa as Be,Fo as Ve,G as He,Ho as Ue,I as We,Io as Ge,Ir as Ke,Jt as qe,Ka as w,Kr as T,L as E,Lo as Je,Ma as Ye,Mo as Xe,Mr as Ze,Ni as Qe,No as $e,Nr as et,Nt as tt,Ot as nt,P as rt,Q as it,Qi as at,S as ot,T as D,Ua as O,Uo as st,W as ct,Wo as lt,X as k,Xi as A,Z as ut,Zi as j,Zn as dt,_ as ft,_a as M,a as pt,ai as mt,ao as ht,at as gt,ba as _t,co as N,cr as P,ct as F,dn as vt,ea as I,eo as yt,f as bt,fi as xt,fn as St,g as Ct,h as wt,hi as Tt,i as Et,io as Dt,j as Ot,ja as kt,jo as At,k as jt,kt as L,l as Mt,la as Nt,ln as Pt,n as Ft,na as It,ni as Lt,o as Rt,oo as zt,ot as R,p as Bt,pa as z,q as Vt,r as B,ra as Ht,s as Ut,sa as Wt,sn as Gt,t as Kt,tr as qt,u as Jt,un as V,uo as Yt,va as Xt,vr as Zt,wa as Qt,wi as $t,x as en,xr as tn,y as nn,ya as rn,yn as an}from"./needle-engine-ui.BzyLX9fs.js";import{d as on,g as sn}from"./three-examples@0.169.19.js";import{$t as cn,A as ln,B as un,Bt as dn,C as fn,Ft as pn,G as mn,Gt as hn,H as gn,It as _n,J as vn,K as yn,Kt as bn,L as xn,Lt as Sn,N as Cn,Ot as wn,P as Tn,Qt as En,Rt as Dn,S as On,U as kn,Ut as An,V as jn,Vt as Mn,W as Nn,Wt as Pn,X as Fn,Xt as In,Y as Ln,Yt as Rn,Zt as zn,at as Bn,bt as Vn,cn as Hn,d as Un,dn as Wn,f as Gn,fn as Kn,j as qn,k as Jn,ln as Yn,lt as Xn,m as Zn,mn as Qn,n as $n,nn as er,o as tr,on as nr,pn as rr,q as ir,qt as ar,r as or,rt as sr,sn as cr,st as lr,t as ur,tn as dr,tt as fr,un as pr,w as mr,x as hr,xt as gr,yt as _r}from"./needle-engine-webxr.DQA26K-l.js";import{r as vr,t as yr}from"./needle-engine-particles.Bw3zzNt3.js";import{a as br,c as xr,d as Sr,f as Cr,h as wr,i as Tr,l as Er,m as Dr,o as Or,p as kr,r as Ar,s as jr,t as Mr,u as Nr}from"./needle-engine.extras.CDv9-f43.js";var Pr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Fr=N(`debugsignals`),Ir=class{guid};Pr([A()],Ir.prototype,`guid`,void 0);var Lr=class{signal;reaction};Pr([A(Ir)],Lr.prototype,`signal`,void 0),Pr([A(k)],Lr.prototype,`reaction`,void 0);var Rr=class e extends R{static receivers={};static invoke(t){if(e.receivers[t]){let n=e.receivers[t];if(!n)return;for(let e of n)e.invoke(t)}}events;awake(){Fr&&console.log(`SignalReceiver awake`,this)}onEnable(){if(this.events)for(let t of this.events)e.receivers[t.signal.guid]||(e.receivers[t.signal.guid]=[]),e.receivers[t.signal.guid].push(this)}onDisable(){if(this.events){for(let t of this.events)if(e.receivers[t.signal.guid]){let n=e.receivers[t.signal.guid].indexOf(this);n>=0&&e.receivers[t.signal.guid].splice(n,1)}}}invoke(e){if(!this.events||!Array.isArray(this.events))return;let t=typeof e==`object`?e.guid:e;for(let e of this.events)if(e.signal.guid===t)try{if(!e.reaction){console.warn(`Missing reaction for signal`,e,this);continue}else if(!e.reaction.invoke){console.warn(`Missing invoke - possibly a serialization error`,e,this);continue}e.reaction.invoke()}catch(e){console.error(e)}}};Pr([A(Lr)],Rr.prototype,`events`,void 0);var zr;(function(e){e.Activation=`ActivationTrack`,e.Animation=`AnimationTrack`,e.Audio=`AudioTrack`,e.Control=`ControlTrack`,e.Marker=`MarkerTrack`,e.Signal=`SignalTrack`})(zr||={});var Br;(function(e){e[e.None=0]=`None`,e[e.Hold=1]=`Hold`,e[e.Loop=2]=`Loop`,e[e.PingPong=3]=`PingPong`,e[e.Continue=4]=`Continue`})(Br||={});var Vr;(function(e){e.Signal=`SignalEmitter`})(Vr||={});var Hr=N(`debugtimeline`),Ur=class{director;track;get muted(){return this.track.muted}set muted(e){e!==this.track.muted&&(this.track.muted=e,this.onMuteChanged?.call(this))}*forEachClip(e=!1){if(this.track?.clips)if(e)for(let e=this.track.clips.length-1;e>=0;e--)yield this.track.clips[e];else for(let e of this.track.clips)yield e}getClipTime(e,t){return t.clipIn+(e-t.start)*t.timeScale}getClipTimeNormalized(e,t){return(e-t.start)/t.duration}evaluateWeight(e,t,n,r=!0){if(t<0||t>=n.length)return 0;let i=n[t];if(r||e>=i.start&&e<=i.end){let t=1;if(i.easeInDuration>0){let n=Math.min((e-i.start)/i.easeInDuration,1);t*=n}if(i.easeOutDuration>0){let n=Math.min((i.end-e)/i.easeOutDuration,1);t*=n}return t}return 0}},Wr=class{clip;rootPositionOffset;rootQuaternionOffset;get hasOffsets(){return this.rootPositionOffset!==void 0||this.rootQuaternionOffset!==void 0}rootStartPosition;rootEndPosition;rootStartQuaternion;rootEndQuaternion;constructor(e){let t=e.getClip();this.clip=t;let r=e.getRoot(),i=r.name+`.position`,a=r.name+`.quaternion`;Hr&&console.log(t.name,t.tracks,i);for(let e of t.tracks)if(!(e.times.length<=0)){if(e.name.endsWith(i))this.rootStartPosition=new n().fromArray(e.values,0),this.rootEndPosition=new n().fromArray(e.values,e.values.length-3),this.rootPositionOffset=this.rootEndPosition.clone().sub(this.rootStartPosition),Hr&&console.log(this.rootPositionOffset);else if(e.name.endsWith(a)&&(this.rootStartQuaternion=new x().fromArray(e.values,0),this.rootEndQuaternion=new x().fromArray(e.values,e.values.length-4),this.rootQuaternionOffset=this.rootEndQuaternion.clone().multiply(this.rootStartQuaternion),Hr)){let e=new be().setFromQuaternion(this.rootQuaternionOffset);console.log(`ROT`,e)}}}},Gr=class extends Ur{models=[];trackOffset;target;mixer;clips=[];actions=[];weight=1;_actionOffsets=[];_didBind=!1;_animator=null;onDisable(){this.mixer?.stopAllAction()}onDestroy(){this.director.context.animations.unregisterAnimationMixer(this.mixer)}onStateChanged(){this._animator&>(this._animator.gameObject,this,this.director.enabled&&this.director.weight>0)}createHooks(e,t){if(t.tracks?.length<=0){console.warn(`No tracks in AnimationClip`,t);return}let n=!1,r=!1,i=t.tracks.find(e=>e.name.includes(`.position`)||e.name.includes(`.quaternion`))?.name.split(`.`);if(i){let a=i[i.length-2],o=a+`.position`,s=a+`.quaternion`;for(let i of t.tracks)!n&&i.name.endsWith(o)?(n=!0,this.createPositionInterpolant(t,e,i)):!r&&i.name.endsWith(s)&&(r=!0,this.createRotationInterpolant(t,e,i))}if(!n||!r){let i=this.mixer?.getRoot(),a=t.tracks[0],o=a.name.lastIndexOf(`.`),s=a.name.substring(0,o),l=s.substring(s.lastIndexOf(`.`)+1),u=i.getObjectByName(l);if(u){if(!n){let n=s+`.position`;Hr&&console.warn(`Create position track`,l,u);let r=new c(n,[0,t.duration],[0,0,0,0,0,0]);t.tracks.push(r),this.createPositionInterpolant(t,e,r)}else if(!r){let n=t.tracks[0].name.substring(0,o)+`.quaternion`;Hr&&console.warn(`Create quaternion track`,l,u);let r=new te(n,[0,t.duration],[0,0,0,1,0,0,0,1]);t.tracks.push(r),this.createRotationInterpolant(t,e,r)}}}}bind(){if(!this._didBind){this._didBind=!0,Hr&&console.log(this.models),this.mixer?this.target=this.mixer.getRoot():console.warn(`No mixer was assigned to animation track`);for(let e of this.actions){let t=new Wr(e);this._actionOffsets.push(t)}this.target&&(this._animator=F.getComponent(this.target,it)??null,this._animator&>(this._animator.gameObject,this,!0));for(let e of this.models){let t=e.asset,r=t.position,i=t.rotation;r&&r.x!==void 0&&(r.isVector3||(t.position=new n(r.x,r.y,r.z)),i.isQuaternion||(t.rotation=new x(i.x,i.y,i.z,i.w)))}this.ensureTrackOffsets()}}ensureTrackOffsets(){if(this.trackOffset){let e=this.trackOffset.position;e&&(e.isVector3||(this.trackOffset.position=new n(e.x,e.y,e.z)));let t=this.trackOffset.rotation;t&&(t.isQuaternion||(this.trackOffset.rotation=new x(t.x,t.y,t.z,t.w)))}}_useclipOffsets=!0;_totalOffsetPosition=new n;_totalOffsetRotation=new x;_totalOffsetPosition2=new n;_totalOffsetRotation2=new x;_summedPos=new n;_tempPos=new n;_summedRot=new x;_tempRot=new x;_clipRotQuat=new x;evaluate(e){if(this.track.muted||!this.mixer)return;this.bind(),this._totalOffsetPosition.set(0,0,0),this._totalOffsetRotation.set(0,0,0,1),this._totalOffsetPosition2.set(0,0,0),this._totalOffsetRotation2.set(0,0,0,1);let t=0,n=0,r=!1,i=!1,a=0;for(let o=0;o=s.start&&e<=s.end,d=s.preExtrapolationMode,f=s.postExtrapolationMode,p=oe)&&(m=!0,r=!0):o==0&&!m&&!i&&s.start>e&&d!==Br.None&&(!p||p.startte;)h-=te}else if(!u&&r)switch(f){case Br.Hold:h=this.getClipTime(s.end,s);break;case Br.Loop:h%=te;break;case Br.PingPong:let e=Math.floor(h/te)%2!=0;h%=te,e&&(h=te-h);break}s.reversed===!0?c.time=c.getClip().duration-h:c.time=h,c.timeScale=0;let _=Math.max(0,i);if(c.weight=_,a+=_,c.clampWhenFinished=!1,c.isRunning()||c.play(),this._useclipOffsets){let e=t==0?this._totalOffsetPosition:this._totalOffsetPosition2,r=t==0?this._totalOffsetRotation:this._totalOffsetRotation2;t<1&&(n=1-i),t+=1;let a=this._summedPos.set(0,0,0),s=this._tempPos.set(0,0,0),c=this._summedRot.identity(),u=this._tempRot.identity(),d=l.rotation;d&&(this._clipRotQuat.identity(),this._clipRotQuat.slerp(d,i));let f=this._actionOffsets[o];if(f.hasOffsets)for(let e=0;e{let e=r(),t=e.evaluate.bind(e);return e.evaluate=e=>{let n=t(e);if(i.set(n[0],n[1],n[2],n[3]),i.premultiply(this._totalOffsetRotation),a&&i.premultiply(a),this.director.animationCallbackReceivers)for(let t of this.director.animationCallbackReceivers)t?.onTimelineRotation?.call(t,this.director,this.target,e,i);return n[0]=i.x,n[1]=i.y,n[2]=i.z,n[3]=i.w,n},e}}createPositionInterpolant(e,t,r){let i=r.createInterpolant.bind(r),a=new n;this.ensureTrackOffsets();let o=this.trackOffset?.rotation,s=this.trackOffset?.position,c;r.createInterpolant=()=>{let n=i(),r=n.evaluate.bind(n);return n.evaluate=n=>{let i=r(n);if(a.set(i[0],i[1],i[2]),t.removeStartOffset&&(c===void 0?(c=null,c=this._actionOffsets.find(t=>t.clip===e)?.rootStartPosition?.clone()):c?.isVector3&&a.sub(c)),a.applyQuaternion(this._totalOffsetRotation),a.add(this._totalOffsetPosition),o&&a.applyQuaternion(o),s&&(a.x-=s.x,a.y+=s.y,a.z+=s.z),this.director.animationCallbackReceivers)for(let e of this.director.animationCallbackReceivers)e?.onTimelinePosition?.call(e,this.director,this.target,n,a);return i[0]=a.x,i[1]=a.y,i[2]=a.z,i},n}}},Kr=N(`mutetimeline`),qr=class e extends Ur{models=[];listener;audio=[];audioContextTimeOffset=[];lastTime=0;audioSource;_audioLoader=null;getAudioFilePath(e){let t=this.director.sourceId;return At(t,e)}onAllowAudioChanged(e){for(let t=0;t=a.start&&e<=a.end&&e.3?o.offset=a.clipIn+(e-a.start)*a.timeScale:o.offset=0,Hr&&console.log(`Timeline Audio (`+this.track.name+`) play with offset `+o.offset+` - `+a.asset.clip),o.play(r),a._didTriggerPlay=!0);else{let t=a.clipIn+(e-a.start)*a.timeScale,n=o.context.currentTime-o._startedAt+o.offset;Math.abs(t-n)>.3&&(o.offset=t,o.stop(),o.play(r))}let i=s.volume;if(this.track.volume!==void 0&&(i*=this.track.volume),t&&(i=0),a.easeInDuration>0){let t=Math.min((e-a.start)/a.easeInDuration,1);i*=t}if(a.easeOutDuration>0){let t=Math.min((a.end-e)/a.easeOutDuration,1);i*=t}o.setVolume(i*this.director.weight)}else a._didTriggerPlay=!1,this.director.isPlaying&&o.isPlaying&&o.stop()}this.lastTime=e}loadAudio(e,t=0,n=0){let r=null,i=e-n,a=e+t;for(let e of this.models)if(this.isInTimeRange(e,i,a)){let t=this.audio[this.models.indexOf(e)],n=this.handleAudioLoading(e,t);n!==null&&(r===null&&(r=[]),r.push(n))}return r===null?null:Promise.all(r)}isInTimeRange(e,t,n){return t<=e.start&&n>=e.end||t>=e.start&&t<=e.end||n>=e.start&&n<=e.end}static _audioBuffers=new Map;static dispose(){e._audioBuffers.clear()}handleAudioLoading(t,n){this._audioLoader||=new xe;let r=this.getAudioFilePath(t.asset.clip);if(e._audioBuffers.get(r)){let t=e._audioBuffers.get(r);return t.then(e=>{e&&n.setBuffer(e)}),t}Hr&&console.warn(`LOAD audio track`,r,this.director.sourceId);let i=new Promise((e,t)=>{this._audioLoader.load(r,t=>{n.setBuffer(t),e(t)},void 0,t=>{console.error(`Error loading audio`,t),e(null)})});return e._audioBuffers.set(r,i),i}},Jr=class extends Ur{models=[];needsSorting=!0;*foreachMarker(e=null){this.needsSorting&&this.sort();for(let t of this.models)t&&t.type===e&&(yield t)}onEnable(){this.needsSorting=!0}evaluate(e){this.needsSorting&&this.sort()}sort(){this.needsSorting=!1,this.models.sort((e,t)=>e.time-t.time)}},Yr=class extends Ur{models=[];didTrigger=[];receivers=[];evaluate(e){if(this.track.muted)return;let t=this.director.context.time.deltaTime*1.5;for(let n=0;n=1e-5&&e=0;e--){let t=this.models[e].asset;if(!t.sourceObject||typeof t.sourceObject!=`object`){console.log(`no source object, removing model`,e,t),this.models.splice(e,1);continue}else{let e=this.director.constructor,n=F.getComponent(t.sourceObject,e);this.timelines.push(n),n&&t.updateDirector&&(n.playOnAwake=!1)}}}_previousActiveModel=null;evaluate(e){this._previousActiveModel=null;for(let t=0;t=n.start&&e<=n.end){this._previousActiveModel=n;let i=this.getClipTime(e,n);if(r.controlActivation){let e=r.sourceObject;e.visible=!0}if(r.updateDirector){let e=this.timelines[t];e&&(e.isPlaying&&e.pause(),e.time=i,e.evaluate())}}else{let e=this._previousActiveModel?.asset;if(r.controlActivation){let t=r.sourceObject;e?.sourceObject!==t&&(t.visible=!1)}}}}},Zr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Qr=N(`debugtimeline`),$r;(function(e){e[e.Hold=0]=`Hold`,e[e.Loop=1]=`Loop`,e[e.None=2]=`None`})($r||={});var ei;(function(e){e[e.None=0]=`None`,e[e.Hold=1]=`Hold`,e[e.Loop=2]=`Loop`,e[e.PingPong=3]=`PingPong`,e[e.Continue=4]=`Continue`})(ei||={});var ti=class e extends R{static createTrackFunctions={};static registerCreateTrack(e,t){this.createTrackFunctions[e]=t}playableAsset;playOnAwake;extrapolationMode=$r.Loop;get isPlaying(){return this._isPlaying}get isPaused(){return this._isPaused}get time(){return this._time}set time(e){typeof e==`number`&&!Number.isNaN(e)?this._time=e:(Qr||Ue())&&console.error(`INVALID TIMELINE.TIME VALUE`,e,this.name)}get duration(){return this._duration}set duration(e){this._duration=e}get weight(){return this._weight}set weight(e){this._weight=e}get speed(){return this._speed}set speed(e){this._speed=e}waitForAudio=!0;_visibilityChangeEvt;_clonedPlayableAsset=!1;_speed=1;awake(){Qr&&console.log(`[Timeline] Awake '${this.name}'`,this),this.rebuildGraph(),!this.isValid()&&(Qr||w())&&(Qr?console.warn(`PlayableDirector is not valid`,`Asset?`,this.playableAsset,`Tracks:`,this.playableAsset?.tracks,`IsArray?`,Array.isArray(this.playableAsset?.tracks),this):this.playableAsset?.tracks?.length?console.warn(`PlayableDirector is not valid`):console.warn(`PlayableDirector has no tracks`))}onEnable(){Qr&&console.log(`[Timeline] OnEnable`,this.name,this.playOnAwake);for(let e of this._audioTracks)e.onEnable?.();for(let e of this._customTracks)e.onEnable?.();for(let e of this._animationTracks)e.onEnable?.();this.playOnAwake&&this.play(),this._visibilityChangeEvt||=()=>{switch(document.visibilityState){case`hidden`:this.setAudioTracksAllowPlaying(!1);break;case`visible`:this.setAudioTracksAllowPlaying(!0);break}},window.addEventListener(`visibilitychange`,this._visibilityChangeEvt)}onDisable(){Qr&&console.log(`[Timeline] OnDisable`,this.name),this.stop();for(let e of this._audioTracks)e.onDisable?.();for(let e of this._customTracks)e.onDisable?.();for(let e of this._animationTracks)e.onDisable?.();this._visibilityChangeEvt&&window.removeEventListener(`visibilitychange`,this._visibilityChangeEvt)}onDestroy(){for(let e of this._allTracks)for(let t of e)t.onDestroy?.()}rebuildGraph(){this.isValid()&&(this.resolveBindings(),this.updateTimelineDuration(),this.setupAndCreateTrackHandlers())}async play(){if(!this.isValid())return;let e=this._isPaused==1;if(this._isPaused=!1,!this._isPlaying){if(this._isPlaying=!0,e&&this.invokePauseChangedMethodsOnTracks(),this.waitForAudio){let e=[];for(let t of this._audioTracks){let n=t.loadAudio(this._time,1,0);n&&e.push(n)}if(e.length>0&&(await Promise.all(e),!this._isPlaying))return;for(;this._audioTracks.length>0&&this._isPlaying&&!Kn.userInteractionRegistered&&this.waitForAudio;)await zt(200)}this.invokeStateChangedMethodsOnTracks(),this._internalUpdateRoutine=this.startCoroutine(this.internalUpdate(),an.LateUpdate)}}pause(){this.isValid()&&(this._isPlaying=!1,!this._isPaused&&(this._isPaused=!0,this.internalEvaluate(),this.invokePauseChangedMethodsOnTracks(),this.invokeStateChangedMethodsOnTracks()))}stop(){this._isStopping=!0;for(let e of this._audioTracks)e.stop();let e=this._isPaused==1,t=this._isPlaying;this._isPlaying&&(this._time=0,this._isPlaying=!1,this._isPaused=!1,this.internalEvaluate(),e&&this.invokePauseChangedMethodsOnTracks()),this._isPlaying=!1,this._isPaused=!1,e&&!t&&this.invokePauseChangedMethodsOnTracks(),t&&this.invokeStateChangedMethodsOnTracks(),this._internalUpdateRoutine&&this.stopCoroutine(this._internalUpdateRoutine),this._internalUpdateRoutine=null,this._isStopping=!1}evaluate(){this.internalEvaluate(!0)}isValid(){return this.playableAsset&&this.playableAsset.tracks&&Array.isArray(this.playableAsset.tracks)}*forEachTrack(){for(let e of this._allTracks)for(let t of e)yield t}get animationTracks(){return this._animationTracks}get audioTracks(){return this._audioTracks}get signalTracks(){return this._signalTracks}get markerTracks(){return this._markerTracks}*foreachMarker(e=null){for(let t of this._markerTracks)for(let n of t.foreachMarker(e))yield n}_guidsMap;resolveGuids(e){this._guidsMap=e}_isPlaying=!1;_internalUpdateRoutine;_isPaused=!1;_isStopping=!1;_time=0;_duration=0;_weight=1;_animationTracks=[];_audioTracks=[];_signalTracks=[];_markerTracks=[];_controlTracks=[];_customTracks=[];_tracksArray=[];get _allTracks(){return this._tracksArray.length=0,this._tracksArray.push(this._animationTracks),this._tracksArray.push(this._audioTracks),this._tracksArray.push(this._signalTracks),this._tracksArray.push(this._markerTracks),this._tracksArray.push(this._controlTracks),this._tracksArray.push(this._customTracks),this._tracksArray}invokePauseChangedMethodsOnTracks(){for(let e of this.forEachTrack())e.onPauseChanged?.call(e)}invokeStateChangedMethodsOnTracks(){for(let e of this.forEachTrack())e.onStateChanged?.call(e,this._isPlaying)}*internalUpdate(){for(;this._isPlaying&&this.activeAndEnabled;)!this._isPaused&&this._isPlaying&&(this._time+=this.context.time.deltaTime*this.speed,this.internalEvaluate()),yield}internalEvaluate(e=!1){if(!this.isValid())return;let t=this._time;switch(this.extrapolationMode){case $r.Hold:this._speed>0?t=Math.min(t,this._duration):this._speed<0&&(t=Math.max(t,0)),this._time=t;break;case $r.Loop:t%=this._duration,this._time=t;break;case $r.None:if(t>this._duration){this.stop();return}break}let n=this._time;for(let t of this.playableAsset.tracks)if(!t.muted)switch(t.type){case zr.Activation:if(!e&&!this._isPlaying)continue;for(let e=0;e=0;r--){let i=n.outputs[r];if(typeof i==`string`){this._guidsMap&&this._guidsMap[i]&&(i=this._guidsMap[i]);let e=F.findByGuid(i,t);typeof e!=`object`||!e?(n.outputs.splice(r,1),console.warn(`Failed to resolve binding`,i,n.name,n.type)):(Qr&&console.log(`Resolved binding`,i,`to`,e),n.outputs[r]=e)}else if(i===null){if(n.outputs.splice(r,1),e.createTrackFunctions[n.type])continue;n.type!==zr.Audio&&n.type!==zr.Control&&n.type!==zr.Marker&&n.type!==zr.Signal&&console.warn(`Missing binding`,i,n.name,n.type,this.name,this.playableAsset.name)}}if(n.type===zr.Control&&n.clips)for(let e=0;ethis._duration&&(this._duration=t.end);if(e.markers)for(let t of e.markers)t.time>this._duration&&(this._duration=t.time+.001)}}}setupAndCreateTrackHandlers(){if(this._animationTracks.length=0,this._audioTracks.length=0,this._signalTracks.length=0,!this.playableAsset)return;let t=F.findObjectOfType(rr,this.context);for(let n of this.playableAsset.tracks){let r=n.type,i=e.createTrackFunctions[r];if(i!=null){let e=i(this,n);if(typeof e.evaluate==`function`){e.director=this,e.track=n,this._customTracks.push(e);continue}}if(n.type===zr.Animation){if(!n.clips||n.clips.length<=0){Qr&&console.warn(`Animation track has no clips`,n);continue}for(let e=n.outputs.length-1;e>=0;e--){let t=n.outputs[e];if(t instanceof y){let e=F.getOrAddComponent(t,it);e&&(t=e)}let r=t?.gameObject?.animations;if(r){let e=new Gr;e.trackOffset=n.trackOffset,e.director=this,e.track=n;for(let i=0;ie.name===s)),Qr&&console.log(o,s,`→`,c),!c){console.warn(`Could not find animationClip for model`,a,n.name,this.name,this.playableAsset?.name,r,t);continue}t instanceof it&&t.runtimeAnimatorController&&(t.__internalDidAwakeAndStart||t.initializeRuntimeAnimatorController(),t.runtimeAnimatorController.mixer||t.runtimeAnimatorController.bind(t),e.mixer=t.runtimeAnimatorController.mixer),e.mixer||(e.mixer=new oe(t.gameObject),this.context.animations.registerAnimationMixer(e.mixer)),e.clips.push(c),e.mixer.uncacheAction(c),e.createHooks(a.asset,c);let l=e.mixer.clipAction(c);e.actions.push(l),e.models.push(a)}this._animationTracks.push(e)}}}else if(n.type===zr.Audio){if(!n.clips||n.clips.length<=0)continue;let e=new qr;e.director=this,e.track=n,e.audioSource=n.outputs.find(e=>e instanceof Kn),this._audioTracks.push(e),t||=this.context.mainCameraComponent?.gameObject.addComponent(rr),e.listener=t.listener;for(let t=0;t0){let t=F.getComponent(this.gameObject,Rr);t&&(e.receivers.push(t),this._signalTracks.push(e))}t!==null&&t.models.length>0&&this._markerTracks.push(t)}}else if(n.type===zr.Signal){let e=new Yr;if(e.director=this,e.track=n,n.markers)for(let t of n.markers)e.models.push(t),e.didTrigger.push(!1);for(let t of n.outputs)e.receivers.push(t);this._signalTracks.push(e)}else if(n.type===zr.Control){let e=new Xr;if(e.director=this,e.track=n,n.clips)for(let t of n.clips)e.models.push(t);e.resolveSourceObjects(this.context),this._controlTracks.push(e)}}}setAudioTracksAllowPlaying(e){for(let t of this._audioTracks)t.onAllowAudioChanged(e)}animationCallbackReceivers=[];registerAnimationCallback(e){this.animationCallbackReceivers.push(e)}unregisterAnimationCallback(e){let t=this.animationCallbackReceivers.indexOf(e);t!==-1&&this.animationCallbackReceivers.splice(t,1)}};Zr([A()],ti.prototype,`playOnAwake`,void 0),Zr([A()],ti.prototype,`extrapolationMode`,void 0);var ni={topLight:{intensity:500,position:[.418,16.199,.3]},room:{position:[-.757,13.219,.717],scale:[31.713,28.305,28.591]},boxes:[{position:[-10.906,2.009,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,.857,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]},{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:50,position:[-16.116,14.37,8.208],scale:[.1,2.428,2.739]},{intensity:50,position:[-16.109,18.021,-8.207],scale:[.1,2.425,2.751]},{intensity:17,position:[14.904,12.198,-1.832],scale:[.15,4.265,6.331]},{intensity:43,position:[-.462,8.89,14.52],scale:[4.38,5.441,.088]},{intensity:20,position:[3.235,11.486,-12.541],scale:[2.5,2,.1]},{intensity:100,position:[0,20,0],scale:[1,.1,1]}]},ri={topLight:{intensity:400,position:[.5,14,.5]},room:{position:[0,13.2,0],scale:[31.5,28.5,31.5]},boxes:[{position:[-10.906,-1,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,-.16,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]},{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:80,position:[-14,10,8],scale:[.1,2.5,2.5]},{intensity:80,position:[-14,14,-4],scale:[.1,2.5,2.5]},{intensity:23,position:[14,12,0],scale:[.1,5,5]},{intensity:16,position:[0,9,14],scale:[5,5,.1]},{intensity:80,position:[7,8,-14],scale:[2.5,2.5,.1]},{intensity:80,position:[-7,16,-14],scale:[2.5,2.5,.1]},{intensity:1,position:[0,20,0],scale:[.1,.1,.1]}]},ii=class extends p{constructor(e){super(),this.position.y=-3.5;let t=new Ee;t.deleteAttribute(`uv`);let n=new fe({metalness:0,side:1}),r=new fe({metalness:0}),i=e==`legacy`?ni:ri,a=new De(16777215,i.topLight.intensity,28,2);a.position.set(...i.topLight.position),this.add(a);let o=new v(t,n);o.position.set(...i.room.position),o.scale.set(...i.room.scale),this.add(o);for(let e of i.boxes){let n=new v(t,r);n.position.set(...e.position),n.rotation.set(0,e.rotation,0),n.scale.set(...e.scale),this.add(n)}for(let e of i.lights){let n=new v(t,this.createAreaLightMaterial(e.intensity));n.position.set(...e.position),n.scale.set(...e.scale),this.add(n)}}createAreaLightMaterial(e){let t=new m;return t.color.setScalar(e),t}};async function ai(t){let{NeedleEngineWebComponent:n}=await e(async()=>{let{NeedleEngineWebComponent:e}=await import(`./needle-engine.CE4b2dOg.js`);return{NeedleEngineWebComponent:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url);n.observedAttributes.includes(t)||n.observedAttributes.push(t)}var H=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},U=N(`debugsceneswitcher`),oi=N(`sceneswitcher:clearscene`),si=`scene`;function ci(){ai(si)}var li=Promise.resolve(!1),W=class extends R{autoLoadFirstScene=!0;scenes=[];loadingScene;queryParameterName=`scene`;useSceneName=!0;clamp=!0;useHistory=!0;useKeyboard=!0;useSwipe=!0;useSceneLighting=!0;useSceneBackground=!0;preloadNext=1;preloadPrevious=1;preloadConcurrent=2;createMenuButtons=!1;get currentIndex(){return this._currentIndex}get currentLoadingProgress(){return this._currentLoadingProgress}get currentlyLoadingScene(){return this._currentlyLoadingScene}get currentlyLoadedScene(){return this._currentScene}sceneLoadingStart=new k;sceneLoadingProgress=new k;sceneLoaded=new k;_currentIndex=-1;_currentScene=void 0;_currentSceneAsset=void 0;_engineElementOverserver=void 0;_preloadScheduler;_menuButtons;__lastSwitchScene;__lastSwitchScenePromise;awake(){this._currentScene=void 0,this._lastLoadingScene=void 0,this.__lastSwitchScenePromise=void 0,this.scenes===void 0&&(this.scenes=[]);for(let e of this.scenes)e&&!e.hasUrl&&e.asset instanceof y?F.remove(e.asset):e instanceof y&&F.remove(e);U&&console.log(`SceneSwitcher`,this)}async onEnable(){if(globalThis.addEventListener(`popstate`,this.onPopState),this.context.input.addEventListener(Ie.KeyDown,this.onInputKeyDown),this.context.input.addEventListener(Ie.PointerMove,this.onInputPointerMove),this.context.input.addEventListener(Ie.PointerUp,this.onInputPointerUp),this._engineElementOverserver||=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===si){let e=this.context.domElement.getAttribute(si);e!==null&&this.trySelectSceneFromValue(e)}}),this._engineElementOverserver.observe(this.context.domElement,{attributes:!0}),this._preloadScheduler||=new di(this),this._preloadScheduler.maxLoadAhead=this.preloadNext,this._preloadScheduler.maxLoadBehind=this.preloadPrevious,this._preloadScheduler.maxConcurrent=this.preloadConcurrent,this._preloadScheduler.begin(2e3),this.autoLoadFirstScene&&this._currentIndex===-1&&!await this.tryLoadFromQueryParam()){let e=this.context.domElement.getAttribute(si);try{(e===null||!await this.trySelectSceneFromValue(e))&&this._currentIndex===-1&&this.select(0)}finally{}}this.createMenuButtons&&(this._menuButtons??=[],this._menuButtons.push(this.context.menu.appendChild({label:`Previous`,icon:`arrow_back_ios`,onClick:()=>this.selectPrev(),priority:-1005,class:`row2`})),this._menuButtons.push(this.context.menu.appendChild({label:`Next`,icon:`arrow_forward_ios`,iconSide:`right`,onClick:()=>this.selectNext(),priority:-1e3,class:`row2`})))}onDisable(){if(globalThis.removeEventListener(`popstate`,this.onPopState),this.context.input.removeEventListener(Ie.KeyDown,this.onInputKeyDown),this.context.input.removeEventListener(Ie.PointerMove,this.onInputPointerMove),this.context.input.removeEventListener(Ie.PointerUp,this.onInputPointerUp),this._preloadScheduler?.stop(),this._menuButtons){for(let e of this._menuButtons)e.remove();this._menuButtons=void 0}}onPopState=async e=>{if(!this.useHistory)return;let t=this.useHistory;try{this.useHistory=!1;let t=!1;if(this.queryParameterName&&(t=await this.tryLoadFromQueryParam()),!t){let t=e?.state;if(t&&t.startsWith(this.guid)){let e=t.substr(this.guid.length+2);U&&console.log(`PopState`,e),await this.trySelectSceneFromValue(e)}}}finally{this.useHistory=t}};normalizedSwipeThresholdX=.1;_didSwipe=!1;onInputPointerMove=e=>{if(this.useSwipe&&!this._didSwipe&&e.button===0&&e.pointerType===`touch`&&this.context.input.getPointerPressedCount()===1){let t=this.context.input.getPointerPositionDelta(e.button);if(t){let e=t.x/this.context.domWidth;e>=this.normalizedSwipeThresholdX?(this._didSwipe=!0,this.selectPrev()):e<=-this.normalizedSwipeThresholdX&&(this._didSwipe=!0,this.selectNext())}}};onInputPointerUp=e=>{e.button===0&&(this._didSwipe=!1)};onInputKeyDown=e=>{if(!this.useKeyboard||!this.scenes)return;let t=e.key.toLowerCase();if(!t)return;let n=parseInt(t)-1;if(n>=0){this.trySelectSceneFromValue(n);return}switch(t){case`arrowright`:case`d`:this.selectNext();break;case`arrowleft`:case`a`:this.selectPrev();break}};addScene(e){if(typeof e==`string`){let t=this.context.addressables.findAssetReference(e);return t||(t=new Me(e),this.context.addressables.registerAssetReference(t)),this.scenes.push(t),t}return this.scenes.push(e),e}selectNext(){return this.select(this._currentIndex+1)}selectPrev(){return this.select(this._currentIndex-1)}select(e){if(U&&console.log(`[SceneSwitcher] select`,e),typeof e==`object`&&console.warn(`[SceneSwitcher] Switching to "`+e+`" might not work. Please either use an index or a AssetReference (not a scene reference)`),typeof e==`string`){let t=this.scenes?.find(t=>t.url===e);if(!t){let t=Me.getOrCreate(this.sourceId??``,e,this.context);return this.switchScene(t)}if(t)e=this.scenes?.indexOf(t);else return li}if(!this.scenes?.length)return li;if(e<0){if(this.clamp)return li;e=this.scenes.length-1}else if(e>=this.scenes.length){if(this.clamp)return li;e=0}let t=this.scenes[e];return this.switchScene(t)}unload(){return this.__lastSwitchScene=void 0,this.__lastSwitchScenePromise=void 0,this.__unloadCurrentScene()}async reload(){if(this.__lastSwitchScene){let e=this.__lastSwitchScene;return this.__lastSwitchScene=void 0,this.switchScene(e)}return!1}async switchScene(e){if(!(e instanceof Me)){let t=typeof e;if(t===`string`||t===`number`)return this.select(e);if(e&&e instanceof y){let t=this.scenes?.indexOf(e);e=new Me(e.name,void 0,e),t>=0&&(this.scenes[t]=e)}else return console.warn(`[SceneSwitcher] Can't switch to scene of type ${t}`),!1}return e.url===this.sourceId?(console.warn(`[SceneSwitcher] Can't load own scene - prevent recursive loading`,this.sourceId),!1):this.__lastSwitchScene===e&&this.__lastSwitchScenePromise?this.__lastSwitchScenePromise:(this.__lastSwitchScene=e,this.__lastSwitchScenePromise=this.__internalSwitchScene(e),await this.__lastSwitchScenePromise)}async __unloadCurrentScene(){let e=this._currentScene;if(this._currentScene=void 0,e){U&&console.log(`[SceneSwitcher] UNLOAD`,e.url,`HasURL?: `+e.hasUrl);let t=this.tryGetSceneEventListener(e.asset);if(t?.sceneClosing){let e=t.sceneClosing();e instanceof Promise&&await e}e.hasUrl?(e.unload(),this._currentSceneAsset&&L(this._currentSceneAsset,!0,!1)):F.remove(this._currentSceneAsset)}}_currentlyLoadingScene;async __internalSwitchScene(e){await this.__unloadCurrentScene();let t=this._currentIndex=this.scenes?.indexOf(e)??-1;try{U&&console.debug(`${Date.now()} [SceneSwitcher] Loading scene start: ${e.url} (index: ${t})`),this._currentlyLoadingScene=e,this._currentLoadingProgress=new ProgressEvent(`progress`,{loaded:0,total:1});let n=new CustomEvent(`loadscene-start`,{detail:{scene:e,switcher:this,index:t}});this.dispatchEvent(n),this.sceneLoadingStart?.invoke(n.detail),await this.onStartLoading(),await e.loadAssetAsync((t,n)=>{if(U){let t=n.loaded/n.total,r=`[`+`=`.repeat(Math.floor(t*20))+`-`.repeat(20-Math.floor(t*20))+`]`;console.debug(`${Date.now()} [SceneSwitcher] Loading scene progress: ${(t*100).toFixed(1)} % ${r}`,e.url)}this._currentLoadingProgress=n,this.dispatchEvent(n),this.sceneLoadingProgress?.invoke(n)}).catch(console.error),await this.onEndLoading();let r=new CustomEvent(`loadscene-finished`,{detail:{scene:e,switcher:this,index:t}});if(this.dispatchEvent(r),this._currentLoadingProgress=void 0,this._currentlyLoadingScene=void 0,r.defaultPrevented)return U&&console.warn(`[SceneSwitcher] Adding loaded scene prevented:`,e,r),!1;if(!e.asset)return U&&console.warn(`[SceneSwitcher] Failed loading scene:`,e),!1;if(this._currentIndex===t){if(U&&console.log(`[SceneSwitcher] ADD`,e.url),this._currentScene=e,oi){let e=this.context.mainCameraComponent?.gameObject||this.context.mainCamera;e?.removeFromParent();let t=this.gameObject.removeFromParent();L(this.context.scene,!0,!0),this.context.scene=new p,this.context.scene.add(t),e&&this.context.scene.add(e)}if(e.asset.parent?this._currentSceneAsset=tt(e.asset,{parent:this.gameObject}):(this._currentSceneAsset=e.asset,F.add(e.asset,this.gameObject)),this.useSceneLighting&&this.context.sceneLighting.enable(e),this.useSceneBackground){let t=this.context.lightmaps.tryGetSkybox(e.url);t?(t.mapping!==306&&(t.mapping=303),this.context.scene.background=t):U&&console.warn(`[SceneSwitcher] Can't find skybox for scene `+e.url)}if(this.useHistory&&t>=0){let n=t.toString();if(this.useSceneName&&(e instanceof y?n=e.name:e.url&&(n=ui(e.url))),this.queryParameterName?.length)Ve(this.queryParameterName,n,this.useHistory);else{let e=history.state,n=this.guid+`::`+t;e!==n&&history.pushState(n,`unused`,location.href)}}let n=this.tryGetSceneEventListener(e.asset);if(n?.sceneOpened){let e=n.sceneOpened(this);e instanceof Promise&&await e}U&&console.debug(`${Date.now()} [SceneSwitcher] Loading scene finished: ${e.url} (index: ${t})`);let r=new CustomEvent(`scene-opened`,{detail:{scene:e,switcher:this,index:t}});return this.dispatchEvent(r),this.sceneLoaded?.invoke(this),!0}}catch(e){console.error(e)}return!1}preload(e){if(e>=0&&e=0&&t=0&&ee!=null),await this._loadingScenePromise,this._isCurrentlyLoading&&this.loadingScene?.asset)){U&&console.log(`Add loading scene`,this.loadingScene.url,this.loadingScene.asset);let e=this.loadingScene.asset;F.add(e,this.gameObject);let t=this.tryGetSceneEventListener(e);if(t?.sceneOpened){let e=t.sceneOpened(this);e instanceof Promise&&await e}}if(this._isCurrentlyLoading){let e=this.tryGetSceneEventListener(this.gameObject);if(e&&e.sceneOpened){let t=e.sceneOpened(this);t instanceof Promise&&await t}}}async onEndLoading(){if(this._isCurrentlyLoading=!1,this.loadingScene?.asset){U&&console.log(`Remove loading scene`,this.loadingScene.url);let e=this.loadingScene.asset,t=this.tryGetSceneEventListener(e);if(typeof t?.sceneClosing==`function`){let e=t.sceneClosing();e instanceof Promise&&await e}F.remove(e)}if(!this._isCurrentlyLoading){let e=this.tryGetSceneEventListener(this.gameObject);if(e&&e.sceneClosing){let t=e.sceneClosing();t instanceof Promise&&await t}}}tryGetSceneEventListener(e,t=0){if(!e)return null;let n=F.foreachComponent(e,e=>{let t=e;if(t.sceneClosing||t.sceneOpened)return t});if(t===0&&!n&&e.children.length)for(let n of e.children){let e=this.tryGetSceneEventListener(n,t+1);if(e)return e}return n||null}};H([A()],W.prototype,`autoLoadFirstScene`,void 0),H([A(Me)],W.prototype,`scenes`,void 0),H([A(Me)],W.prototype,`loadingScene`,void 0),H([A()],W.prototype,`queryParameterName`,void 0),H([A()],W.prototype,`useSceneName`,void 0),H([A()],W.prototype,`clamp`,void 0),H([A()],W.prototype,`useHistory`,void 0),H([A()],W.prototype,`useKeyboard`,void 0),H([A()],W.prototype,`useSwipe`,void 0),H([A()],W.prototype,`useSceneLighting`,void 0),H([A()],W.prototype,`useSceneBackground`,void 0),H([A()],W.prototype,`preloadNext`,void 0),H([A()],W.prototype,`preloadPrevious`,void 0),H([A()],W.prototype,`preloadConcurrent`,void 0),H([A()],W.prototype,`createMenuButtons`,void 0),H([A(k)],W.prototype,`sceneLoadingStart`,void 0),H([A(k)],W.prototype,`sceneLoadingProgress`,void 0),H([A(k)],W.prototype,`sceneLoaded`,void 0);function ui(e){let t=e.split(`/`).pop()?.split(`.`).shift();return t?.length?t:e}var di=class{maxLoadAhead;maxLoadBehind;maxConcurrent;_isRunning=!1;_switcher;_loadTasks=[];_maxConcurrentLoads=1;constructor(e,t=1,n=1,r=2){this._switcher=e,this.maxLoadAhead=t,this.maxLoadBehind=n,this.maxConcurrent=r}begin(e){if(this._isRunning)return;U&&console.log(`[SceneSwitcher] Preload scheduled`,{delay:e}),this._isRunning=!0;let t=-10,n,r,i=this._switcher.scenes,a=Date.now()+e,o=setInterval(()=>{if(this.allLoaded()&&(U&&console.log(`[SceneSwitcher] All scenes (pre-)loaded`),this.stop()),!this._isRunning){clearInterval(o);return}if(Date.now()s)return;let c=e?t+n:t-n;if(!(c<0)&&!(c<0||c>=i.length)&&!this._loadTasks.some(e=>e.index===c)){let n=i[c];U&&console.log(`[SceneSwitcher] Schedule preload scene`,{roomIndex:c,searchForward:e,lastRoom:t,currentIndex:this._switcher.currentIndex,tasks:this._loadTasks.length},n?.url),new fi(c,n,this._loadTasks)}},200)}stop(){this._isRunning=!1}canLoadNewScene(){return this._loadTasks.length=0&&this.tasks.splice(e,1)}},pi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},G=N(`debugskybox`);function mi(){ai(`background-image`),ai(`environment-image`)}var hi={studio:{url:`https://cdn.needle.tools/static/skybox/modelviewer-Neutral.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/modelviewer-Neutral-small.pmrem4x4.ktx2?pmrem`},"blurred-skybox":{url:`https://cdn.needle.tools/static/skybox/blurred-skybox.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/blurred-skybox-small.pmrem4x4.ktx2?pmrem`},"quicklook-ar":{url:`https://cdn.needle.tools/static/skybox/QuickLook-ARMode.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/QuickLook-ARMode-small.pmrem4x4.ktx2?pmrem`},quicklook:{url:`https://cdn.needle.tools/static/skybox/QuickLook-ObjectMode.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/QuickLook-ObjectMode-small.pmrem4x4.ktx2?pmrem`}};function gi(e,t,n,r,i){if(t===`transparent`||t?.startsWith(`rgb`)||t?.startsWith(`#`))return console.warn(`Needle Engine: Invalid ${i} value (${t}). Did you mean to set background-color instead?`),null;let a=new vi;a.sourceId=Je(t),a.allowDrop=!1,a.allowNetworking=!1,a.background=n,a.environment=r,F.addComponent(e.scene,a);let o=t=>{if(G&&console.log(i,`CHANGED TO`,t),t){if(typeof t!=`string`){console.warn(`Invalid attribute value for `+i);return}a.setSkybox(t)}else if(a.sourceId&&(r&&(e.sceneLighting.internalEnableReflection(a.sourceId)||(e.scene.environment=null)),n)){let t=e.lightmaps.tryGetSkybox(a.sourceId);e.scene.background=t}};return Dt(e.domElement,i,o),a.addEventListener(`destroy`,()=>{G&&console.log(`Destroyed attribute remote skybox`,i),Ae(e.domElement,i,o)}),a.setSkybox(t)}var _i=[];lt.registerCallback(st.ContextCreationStart,e=>{let t=e.context,n=t.domElement.getAttribute(`background-image`),r=t.domElement.getAttribute(`environment-image`);if(n){G&&console.log(`Creating RemoteSkybox to load background `+n);let e=gi(t,n,!0,!1,`background-image`);e&&_i.push(e)}if(r){G&&console.log(`Creating RemoteSkybox to load environment `+r);let e=gi(t,r,!1,!0,`environment-image`);e&&_i.push(e)}}),lt.registerCallback(st.ContextCreationStart,()=>Promise.all(_i).finally(()=>{_i.length=0}));var vi=class extends R{url=`studio`;allowDrop=!0;background=!0;environment=!0;allowNetworking=!0;_prevUrl;_prevLoadedEnvironment;_prevEnvironment=null;_prevBackground=null;onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.scene.environment=this._prevEnvironment,Ne.backgroundShouldBeTransparent(this.context)||(this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents(),this.context.mainCameraComponent?.applyClearFlags()}urlChangedSyncField(){this.allowNetworking&&this.url&&(this.isRemoteTexture(this.url)?this.setSkybox(this.url):G&&console.warn(`RemoteSkybox: Not setting skybox: ${this.url} is not a remote texture. If you want to set a local texture, set allowNetworking to false.`))}async setSkybox(e,t){if(!this.activeAndEnabled||(e=yi(e,this.environment,this.background),!e))return!1;if(t??=e,this.isValidTextureType(t)||console.warn(`Potentially invalid skybox URL: "`+t+`" on `+(this.name||this.gameObject?.name||`context`)),G&&console.log(`Set RemoteSkybox url: `+e),this._prevUrl===e&&this._prevLoadedEnvironment)return this.apply(),!0;this._prevLoadedEnvironment?.dispose(),this._prevLoadedEnvironment=void 0,this._prevUrl=e;let n=await pr(e,this.context.renderer);return n?!this.enabled||this.destroyed?(G&&console.warn(`RemoteSkybox: Component is disabled or destroyed`),!1):this._prevUrl===e?(this.url=e,this._prevLoadedEnvironment=n,this.apply(),!0):(G&&console.warn(`RemoteSkybox: URL changed while loading texture, aborting setSkybox`),!1):(G&&console.warn(`RemoteSkybox: Failed to load texture from url`,e),!1)}apply(){let e=this._prevLoadedEnvironment;if(e&&(e instanceof ee||e instanceof d||e.mapping==306||(e.mapping=304,e.needsUpdate=!0),!this.destroyed)){if(!this.context){console.warn(`RemoteSkybox: Context is not available - can not apply skybox.`);return}this.context.scene.background!==e&&(this._prevBackground=this.context.scene.background),this.context.scene.environment!==e&&(this._prevEnvironment=this.context.scene.environment),G&&console.log(`Set RemoteSkybox (`+(this.environment&&this.background?`environment and background`:this.environment?`environment`:this.background?`background`:`none`)+`)`,this.url,!Ne.backgroundShouldBeTransparent(this.context)),this.environment&&(this.context.scene.environment=e),this.background&&!Ne.backgroundShouldBeTransparent(this.context)&&(this.context.scene.background=e),this.context.mainCameraComponent?.backgroundBlurriness!==void 0&&(this.context.scene.backgroundBlurriness=this.context.mainCameraComponent.backgroundBlurriness)}}validProtocols=[`file:`,`blob:`,`data:`];validTextureTypes=[`.ktx2`,`.hdr`,`.exr`,`.jpg`,`.jpeg`,`.png`];isRemoteTexture(e){return e.startsWith(`http://`)||e.startsWith(`https://`)}isValidTextureType(e){for(let t of this.validTextureTypes)if(e.includes(t))return!0;for(let t of this.validProtocols)if(e.startsWith(t))return!0;return!1}registerDropEvents(){this.unregisterDropEvents(),this.context.domElement.addEventListener(`dragover`,this.onDragOverEvent),this.context.domElement.addEventListener(`drop`,this.onDrop)}unregisterDropEvents(){this.context.domElement.removeEventListener(`dragover`,this.onDragOverEvent),this.context.domElement.removeEventListener(`drop`,this.onDrop)}onDragOverEvent=e=>{if(this.allowDrop&&e.dataTransfer)for(let t of e.dataTransfer.types)(t===`text/uri-list`||t===`Files`)&&e.preventDefault()};onDrop=e=>{if(this.allowDrop&&e.dataTransfer){for(let t of e.dataTransfer.types)if(G&&console.log(t),t===`text/uri-list`){let n=e.dataTransfer.getData(t);G&&console.log(t,n);let r=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?.+)\.png/).exec(n)?.groups?.name;if(r||=new RegExp(/polyhaven\.com\/a\/(?.+)/).exec(n)?.groups?.name,G&&console.log(r),r){let t=`https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/`+r+`_1k.exr`;console.log(`[Remote Skybox] Setting skybox from url: ${t}`),e.preventDefault(),this.setSkybox(t);break}else if(this.isValidTextureType(n)){console.log(`[Remote Skybox] Setting skybox from url: `+n),e.preventDefault(),this.setSkybox(n);break}else{console.warn(`[RemoteSkybox] Unknown url ${n}. If you want to load a skybox from a url, make sure it is a valid image url. Url must end with${this.validTextureTypes.join(`, `)}.`);let t=new CustomEvent(`dropped-unknown-url`,{detail:{sender:this,event:e,url:n,apply:t=>{e.preventDefault(),this.setSkybox(t)}}});this.dispatchEvent(t)}}else if(t==`Files`){let n=e.dataTransfer.files.item(0);if(G&&console.log(t,n),!n)continue;if(!this.isValidTextureType(n.name)){console.warn(`[RemoteSkybox]: File \"${n.name}\" is not supported. Supported files are ${this.validTextureTypes.join(`, `)}`);return}e.preventDefault(),this.setSkybox(n.name);break}}}};pi([Wn(vi.prototype.urlChangedSyncField),A(URL)],vi.prototype,`url`,void 0),pi([A()],vi.prototype,`allowDrop`,void 0),pi([A()],vi.prototype,`background`,void 0),pi([A()],vi.prototype,`environment`,void 0),pi([A()],vi.prototype,`allowNetworking`,void 0);function yi(e,t,n){if(e==null)return null;let r=t&&!n,i=hi[e.toLowerCase()];return i?r?i.url_low:i.url:(typeof e==`string`&&e?.length&&(w()||G)&&(e.includes(`/`)||e.includes(`.`)||console.warn(`RemoteSkybox: Unknown magic skybox name "${e}". Valid names are: ${Object.keys(hi).map(e=>`"${e}"`).join(`, `)}`)),e)}var bi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xi=class extends R{from;to;width=0;centered=!0;_centerPos;awake(){this._centerPos=new n}update(){if(!this.from||!this.to)return;let e=M(this.from).clone(),t=M(this.to).clone(),n=e.distanceTo(t);this._centerPos.copy(e),this._centerPos.add(t),this._centerPos.multiplyScalar(.5),Oe(this.gameObject,this.centered?this._centerPos:e),this.gameObject.lookAt(M(this.to).clone()),this.gameObject.scale.set(this.width,this.width,n)}};bi([A(F)],xi.prototype,`from`,void 0),bi([A(F)],xi.prototype,`to`,void 0);var Si=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ci=class extends R{length=1;depthTest=!0;isGizmo=!1;_axes=null;onEnable(){if(this.isGizmo&&!Lt)return;this._axes||=new se(this.length),this._axes.layers.disableAll(),this._axes.layers.set(this.layer),this.gameObject.add(this._axes);let e=this._axes.material;e&&e.depthTest!==void 0&&(e.depthTest=this.depthTest)}onDisable(){this._axes&&this.gameObject.remove(this._axes)}};Si([A()],Ci.prototype,`length`,void 0),Si([A()],Ci.prototype,`depthTest`,void 0),Si([A()],Ci.prototype,`isGizmo`,void 0);var wi=class extends R{from;to;hint;desiredDistance=1;onEnable(){}update(){if(!this.from||!this.to||!this.hint)return;let e=M(this.to).clone(),t=M(this.from).clone(),r=e.distanceTo(t),i=e.clone();i.sub(t);let a=t.clone();a.add(e),a.multiplyScalar(.5);let o=M(this.hint).clone();o.sub(a);let s=new n;s.crossVectors(o,i),s.crossVectors(i,s),s.normalize();let c=r*.5,l=Math.max(this.desiredDistance,c),u=Math.sqrt(l*l-c*c),d=s.clone();d.multiplyScalar(u),d.add(a),Oe(this.gameObject,d);let f=a.clone();f.sub(s),this.gameObject.lookAt(f)}},Ti=N(`gizmos`),Ei=N(`debugboxhelper`),Di=class e extends R{box=null;static testBox=new ie;_lastMatrixUpdateFrame=-1;static _position=new n;static _size=new n(.01,.01,.01);static _emptyObjectSize=new n(.01,.01,.01);isInBox(t){if(!t)return;if(this.box||=new ie,Nt([t],void 0,void 0,e.testBox),e.testBox.isEmpty()){let n=M(t,e._position);e.testBox.setFromCenterAndSize(n,e._emptyObjectSize)}this.updateBox();let n=this.box?.intersectsBox(e.testBox);return n&&Ei&&V.DrawWireBox3(e.testBox,16711680,5),n}intersects(e){return e?this.updateBox(!1).intersectsBox(e):!1}updateBox(t=!1){if(this.box||=new ie,t||this.context.time.frameCount!=this._lastMatrixUpdateFrame){let t=this._lastMatrixUpdateFrame<0;this._lastMatrixUpdateFrame=this.context.time.frameCount;let n=t,r=M(this.gameObject,e._position,n),i=_t(this.gameObject,e._size);this.box.setFromCenterAndSize(r,i)}return this.box}_helper=null;_color=null;awake(){this._helper=null,this._color=null,this.box=null}showHelper(e=null,t=!1){if(!(!Ti&&!t)){if(this._helper){e&&this._color?.set(e),this.gameObject.add(this._helper);return}this._helper=Pt(e),this.gameObject.add(this._helper)}}},Oi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ki=N(`debugcharactercontroller`),Ai=class extends R{center=new n(0,0,0);radius=.5;height=2;_rigidbody=null;get rigidbody(){return this._rigidbody?this._rigidbody:(this._rigidbody=this.gameObject.getComponent(E),this._rigidbody||=this.gameObject.addComponent(E),this.rigidbody)}_activeGroundCollisions;awake(){this._activeGroundCollisions=new Set}onEnable(){let e=this.rigidbody,t=this.gameObject.getComponent(Mn);t||=this.gameObject.addComponent(Mn),t.center.copy(this.center),t.radius=this.radius,t.height=this.height;let r=new n(0,0,1),i=new n(1,0,0),a=new n(0,1,0),o=this.gameObject.getWorldDirection(new n);o.y=0;let s=i.dot(o)<0?-1:1,c=r.angleTo(o)*s;this.gameObject.setRotationFromAxisAngle(a,c),e.lockRotationX=!0,e.lockRotationY=!0,e.lockRotationZ=!0}move(e){this.gameObject.position.add(e)}onCollisionEnter(e){(e.contacts.length==0||e.contacts.some(e=>e.normal.y>.2))&&(this._activeGroundCollisions.add(e),ki&&console.log(`Collision(${this._activeGroundCollisions.size}): ${e.contacts.map(e=>e.normal.y.toFixed(2)).join(`, `)} - ${this.isGrounded}`))}onCollisionExit(e){this._activeGroundCollisions.delete(e),ki&&console.log(`Collision(${this._activeGroundCollisions.size}) - ${this.isGrounded}`)}get isGrounded(){return this._activeGroundCollisions.size>0}_contactVelocity=new n;get contactVelocity(){this._contactVelocity.set(0,0,0);for(let e of this._activeGroundCollisions){let t=this.context.physics.engine?.getLinearVelocity(e.collider);t&&(this._contactVelocity.x+=t.x,this._contactVelocity.y+=t.y,this._contactVelocity.z+=t.z)}return this._contactVelocity}};Oi([A(n)],Ai.prototype,`center`,void 0),Oi([A()],Ai.prototype,`radius`,void 0),Oi([A()],Ai.prototype,`height`,void 0);var ji=class extends R{controller;movementSpeed=2;rotationSpeed=2;jumpForce=1;doubleJumpForce=2;animator;lookForward=!0;awake(){this._currentRotation=new x}update(){let e=this.context.input;e.isKeyPressed(`KeyW`)?this.moveInput.y+=1:e.isKeyPressed(`KeyS`)&&--this.moveInput.y,e.isKeyPressed(`KeyD`)?this.lookInput.x+=1:e.isKeyPressed(`KeyA`)&&--this.lookInput.x,this.jumpInput||=e.isKeyDown(`Space`)}move(e){this.moveInput.add(e)}look(e){this.lookInput.add(e)}jump(){this.jumpInput=!0}lookInput=new b(0,0);moveInput=new b(0,0);jumpInput=!1;onBeforeRender(){this.handleInput(this.moveInput,this.lookInput,this.jumpInput),this.lookInput.set(0,0),this.moveInput.set(0,0),this.jumpInput=!1}_currentSpeed=new n(0,0,0);_currentAngularSpeed=new n(0,0,0);_temp=new n(0,0,0);_jumpCount=0;_currentRotation;handleInput(e,t,r){if(this.controller?.isGrounded&&(this._jumpCount=0,this.doubleJumpForce>0&&this.animator?.setBool(`doubleJump`,!1)),this._currentSpeed.z+=e.y*this.movementSpeed*this.context.time.deltaTime,this.animator?.setBool(`running`,e.length()>.01),this.animator?.setBool(`jumping`,this.controller?.isGrounded===!0&&r),this._temp.copy(this._currentSpeed),this._temp.applyQuaternion(this.gameObject.quaternion),this.controller?this.controller.move(this._temp):this.gameObject.position.add(this._temp),this._currentAngularSpeed.y+=O.toRadians(-t.x*this.rotationSpeed)*this.context.time.deltaTime,this.lookForward&&Math.abs(this._currentAngularSpeed.y)<.01){let e=this.context.mainCameraComponent.forward;e.y=0,e.normalize(),this._currentRotation.setFromUnitVectors(new n(0,0,1),e),this.gameObject.quaternion.slerp(this._currentRotation,this.context.time.deltaTime*10)}if(this.gameObject.rotateY(this._currentAngularSpeed.y),this._currentSpeed.multiplyScalar(1-this.context.time.deltaTime*10),this._currentAngularSpeed.y*=1-this.context.time.deltaTime*10,this.controller&&r&&this.jumpForce>0){let e=this.controller?.isGrounded;if(this.doubleJumpForce>0&&!this.controller?.isGrounded&&this._jumpCount===1&&(e=!0,this.animator?.setBool(`doubleJump`,!0)),e){this._jumpCount+=1;let e=this.controller.rigidbody,t=this._jumpCount===2?this.doubleJumpForce:this.jumpForce;e.applyImpulse(new n(0,1,0).multiplyScalar(t))}}if(this.controller){let e=this.controller?.rigidbody.getVelocity().y;if(e<-1){this._raycastOptions.ray||(this._raycastOptions.ray=new a),this._raycastOptions.ray.origin.copy(M(this.gameObject)),this._raycastOptions.ray.direction.set(0,-1,0);let t=this.layer;this.gameObject.layers.disableAll(),this.gameObject.layers.set(2);let n=this.context.physics.raycast(this._raycastOptions);this.gameObject.layers.set(t),(n.length&&n[0].distance>2||e<-10)&&this.animator?.setBool(`falling`,!0)}else this.animator?.setBool(`falling`,!1)}}_raycastOptions=new Gt};Oi([A(Ai)],ji.prototype,`controller`,void 0),Oi([A()],ji.prototype,`movementSpeed`,void 0),Oi([A()],ji.prototype,`rotationSpeed`,void 0),Oi([A()],ji.prototype,`jumpForce`,void 0),Oi([A()],ji.prototype,`doubleJumpForce`,void 0),Oi([A(it)],ji.prototype,`animator`,void 0);var Mi=N(`logstats`),Ni=class extends R{onEnable(){console.log(this),Mi&&this.startCoroutine(this.run(),an.OnAfterRender)}*run(){for(;this.enabled;){let e=this.context.renderer.info;console.log(e.memory,e.render,e.programs),yield}}},Pi=class extends R{isUsed=!0;usedBy=null},Fi=class extends R{},Ii=N(`debugdeletable`),Li=class e extends Di{static _instances=[];onEnable(){e._instances.push(this)}onDisable(){let t=e._instances.indexOf(this);t>=0&&e._instances.splice(t,1)}},Ri=class extends R{update(){for(let e of Li._instances){let t=this.gameObject;if(e.isInBox(t)===!0){let t=F.getComponentInParent(this.gameObject,Pi);if(t)Ii&&console.warn(`DeleteBox: Not deleting object with usage marker`,this.guid,t);else{if(Ii)try{if(e.box){let t=e.box,n=Di.testBox;V.DrawWireBox3(t,16711680,5),V.DrawWireBox3(n,255,5),console.log(`DeleteBox: Destroying`,this.gameObject,{deleteBoxArea:t,deletedObjectArea:n})}else console.log(`DeleteBox: Destroying`,this.gameObject)}catch{}xt(this.gameObject,this.context.connection)}}}}},zi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Bi;(function(e){e[e.Never=0]=`Never`,e[e.Desktop=1]=`Desktop`,e[e.Mobile=2]=`Mobile`})(Bi||={});var Vi=class extends R{visibleOn;onEnable(){this.apply()}apply(){this.test()||F.setActive(this.gameObject,!1)}test(){return this.visibleOn<0?!0:yt.isMobileDevice()?(this.visibleOn&Bi.Mobile)!==0:(this.visibleOn&Bi.Desktop)!==0}};zi([A()],Vi.prototype,`visibleOn`,void 0);var Hi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ui=N(`debugdrag`),Wi=[],K;(function(e){e[e.XZPlane=0]=`XZPlane`,e[e.Attached=1]=`Attached`,e[e.HitNormal=2]=`HitNormal`,e[e.DynamicViewAngle=3]=`DynamicViewAngle`,e[e.SnapToSurfaces=4]=`SnapToSurfaces`,e[e.None=5]=`None`})(K||={});var Gi=class e extends R{static get HasAnySelected(){return this._active>0}static _active=0;static get CurrentlySelected(){Wi.length=0;for(let e of this._instances)e._isDragging&&Wi.push(e);return Wi}static _instances=[];dragMode=K.DynamicViewAngle;snapGridResolution=0;keepRotation=!0;xrDragMode=K.Attached;xrKeepRotation=!1;xrDistanceDragFactor=1;showGizmo=!1;get draggedObject(){return this._targetObject}setTargetObject(e){this._targetObject=e;for(let t of this._dragHandlers.values())t.setTargetObject(e);let t=`_rigidbody-was-kinematic`;this._rigidbody?.[t]===!1&&(this._rigidbody.isKinematic=!1,this._rigidbody[t]=void 0),this._rigidbody=null,e&&(this._rigidbody=F.getComponentInChildren(e,E),this._rigidbody?.isKinematic===!1&&(this._rigidbody.isKinematic=!0,this._rigidbody[t]=!1))}_rigidbody=null;_targetObject=null;_dragHelper=null;static lastHovered;_draggingRigidbodies=[];_potentialDragStartEvt=null;_dragHandlers=new Map;_totalMovement=new n;_marker=null;_isDragging=!1;_didDrag=!1;awake(){this._potentialDragStartEvt=null,this._dragHandlers=new Map,this._totalMovement=new n,this._marker=null,this._isDragging=!1,this._didDrag=!1,this._dragHelper=null,this._draggingRigidbodies=[]}start(){this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onEnable(){e._instances.push(this),this.context.accessibility.updateElement(this,{role:`button`,label:`Drag `+(this.gameObject.name||`object`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0}),e._instances=e._instances.filter(e=>e!==this)}onDestroy(){this.context.accessibility.removeElement(this)}allowEdit(e=null){return this.context.connection.allowEditing}onPointerEnter(t){if(!this.allowEdit(this.gameObject)||t.mode!==`screen`||(t.event.mode===`tracked-pointer`||t.event.mode===`transient-pointer`?this.xrDragMode:this.dragMode)===K.None)return;let n=F.getComponentInParent(t.object,e);!n||n!==this||(e.lastHovered=t.object,this.context.domElement.style.cursor=`pointer`,this.context.accessibility.hover(this,`Draggable ${t.object?.name}`))}onPointerMove(e){(this._isDragging||this._potentialDragStartEvt!==null)&&e.use()}onPointerExit(t){this.allowEdit(this.gameObject)&&t.mode===`screen`&&e.lastHovered===t.object&&(this.context.domElement.style.cursor=`auto`)}onPointerDown(t){if(this.allowEdit(this.gameObject)&&!t.used&&(t.mode===`tracked-pointer`||t.mode===`transient-pointer`?this.xrDragMode:this.dragMode)!==K.None&&(e.lastHovered=t.object,t.button===0)){this._dragHandlers.size===0&&(this._didDrag=!1,this._totalMovement.set(0,0,0),this._potentialDragStartEvt=t),this._targetObject||this.setTargetObject(this.gameObject),e._active+=1;let n=new qi(this,this._targetObject);if(this._dragHandlers.set(t.event.space,n),n.onDragStart(t),this._dragHandlers.size===2){let e=this._dragHandlers.values(),n=e.next().value,r=e.next().value;if(n instanceof qi&&r instanceof qi){let e=new Ki(this,this._targetObject,n,r);this._dragHandlers.set(this.gameObject,e),e.onDragStart(t)}else console.error(`Attempting to construct a MultiTouchDragHandler with invalid DragPointerHandlers. This is likely a bug.`,{a:n,b:r})}t.use(),this.context.accessibility.updateElement(this,{role:`button`,label:`Dragging `+(this.gameObject.name||`object`),hidden:!1,busy:!0}),this.context.accessibility.focus(this)}}onPointerUp(t){if(Ui&&V.DrawLabel(t.point??this.gameObject.worldPosition,`POINTERUP:`+t.pointerId+`, `+t.button,.03,3),!this.allowEdit(this.gameObject)||t.button!==0)return;this._potentialDragStartEvt=null;let n=this._dragHandlers.get(t.event.space),r=this._dragHandlers.get(this.gameObject);r&&(r.handlerA===n||r.handlerB===n)&&(this._dragHandlers.delete(this.gameObject),r.onDragEnd(t)),n&&(e._active>0&&--e._active,this.setTargetObject(null),n.onDragEnd&&n.onDragEnd(t),this._dragHandlers.delete(t.event.space),this._dragHandlers.size===0&&this.onLastDragEnd(t),t.use()),this.context.accessibility.unfocus(this),this.context.accessibility.updateElement(this,{busy:!1})}update(){for(let e of this._dragHandlers.values())e.collectMovementInfo&&e.collectMovementInfo(),e.getTotalMovement&&this._totalMovement.add(e.getTotalMovement());if(this._potentialDragStartEvt){if(!this._didDrag)if(this._totalMovement.length()>3e-4)this._didDrag=!0;else return;let e=this._potentialDragStartEvt;this._potentialDragStartEvt=null,this.onFirstDragStart(e)}for(let e of this._dragHandlers.values())e.onDragUpdate&&e.onDragUpdate(this._dragHandlers.size);this._dragHelper&&this._dragHelper.hasSelected&&this.onAnyDragUpdate()}onFirstDragStart(t){if(!t||!t.object)return;let n=F.getComponentInParent(t.object,e);if(!n||n!==this&&n._isDragging)return;let r=this._targetObject||this.gameObject;if(!r)return;this._isDragging=!0;let i=F.getComponentInChildren(r,rt);Ui&&console.log(`DRAG START`,i,r),i&&(i.fastMode=!0,i?.requestOwnership()),this._marker=F.addComponent(r,Pi),this._draggingRigidbodies.length=0;let a=F.getComponentsInChildren(r,E);a&&this._draggingRigidbodies.push(...a),r.matrixAutoUpdate===!1&&!globalThis[`DragControls:MatrixWarningShown`]&&(globalThis[`DragControls:MatrixWarningShown`]=!0,console.warn(`Dragging an object with matrixAutoUpdate=false can lead to unexpected behavior. Consider enabling matrixAutoUpdate or updating the matrix manually during dragging.`))}onAnyDragUpdate(){if(!this._dragHelper)return;this._dragHelper.showGizmo=this.showGizmo,this._dragHelper.onUpdate(this.context);for(let e of this._draggingRigidbodies)e.wakeUp(),e.resetVelocities(),e.resetForcesAndTorques();let e=this._targetObject||this.gameObject;qe.markDirty(e)}onLastDragEnd(e){if(!this||!this._isDragging)return;this._isDragging=!1;for(let e of this._draggingRigidbodies)e.setVelocity(e.smoothedVelocity.multiplyScalar(this.context.time.deltaTime));if(this._draggingRigidbodies.length=0,this._targetObject=null,e?.object){let t=F.getComponentInChildren(e.object,rt);t&&(t.fastMode=!1)}if(this._marker&&this._marker.destroy(),!this._dragHelper)return;let t=this._dragHelper.selected;Ui&&console.log(`DRAG END`,t,t?.visible),this._dragHelper.setSelected(null,this.context)}};Hi([A()],Gi.prototype,`dragMode`,void 0),Hi([A()],Gi.prototype,`snapGridResolution`,void 0),Hi([A()],Gi.prototype,`keepRotation`,void 0),Hi([A()],Gi.prototype,`xrDragMode`,void 0),Hi([A()],Gi.prototype,`xrKeepRotation`,void 0),Hi([A()],Gi.prototype,`xrDistanceDragFactor`,void 0),Hi([A()],Gi.prototype,`showGizmo`,void 0);var Ki=class{handlerA;handlerB;context;settings;gameObject;_handlerAAttachmentPoint=new n;_handlerBAttachmentPoint=new n;_followObject;_manipulatorObject;_deviceMode;_followObjectStartWorldQuaternion=new x;constructor(e,t,n,r){this.context=e.context,this.settings=e,this.gameObject=t,this.handlerA=n,this.handlerB=r,this._followObject=new y,this._manipulatorObject=new y,this.context.scene.add(this._manipulatorObject);let i=St.active?.rig?.gameObject;if(!this.handlerA||!this.handlerB||!this.handlerA.hitPointInLocalSpace||!this.handlerB.hitPointInLocalSpace){console.error(`Invalid: MultiTouchDragHandler needs two valid DragPointerHandlers with hitPointInLocalSpace set.`);return}if(this._tempVec1.copy(this.handlerA.hitPointInLocalSpace),this._tempVec2.copy(this.handlerB.hitPointInLocalSpace),this.gameObject.localToWorld(this._tempVec1),this.gameObject.localToWorld(this._tempVec2),i&&(i.worldToLocal(this._tempVec1),i.worldToLocal(this._tempVec2)),this._initialDistance=this._tempVec1.distanceTo(this._tempVec2),this._initialDistance<.02?(Ui&&console.log(`Finding alternative drag attachment points since initial distance is too low: `+this._initialDistance.toFixed(2)),this.handlerA.followObject.parent.getWorldPosition(this._tempVec1),this.handlerB.followObject.parent.getWorldPosition(this._tempVec2),this._handlerAAttachmentPoint.copy(this._tempVec1),this._handlerBAttachmentPoint.copy(this._tempVec2),this.gameObject.worldToLocal(this._handlerAAttachmentPoint),this.gameObject.worldToLocal(this._handlerBAttachmentPoint),this._initialDistance=this._tempVec1.distanceTo(this._tempVec2),this._initialDistance<.001&&(console.warn(`Not supported right now – controller drag points for multitouch are too close!`),this._initialDistance=1)):(this._handlerAAttachmentPoint.copy(this.handlerA.hitPointInLocalSpace),this._handlerBAttachmentPoint.copy(this.handlerB.hitPointInLocalSpace)),this._tempVec3.lerpVectors(this._tempVec1,this._tempVec2,.5),this._initialScale.copy(t.scale),Ui){this._followObject.add(new se(2)),this._manipulatorObject.add(new se(5));let e=e=>`${e.x.toFixed(2)}, ${e.y.toFixed(2)}, ${e.z.toFixed(2)}`;V.DrawLine(this._tempVec1,this._tempVec2,65535,0,!1),V.DrawLabel(this._tempVec3,`A:B `+this._initialDistance.toFixed(2)+` +`+e(this._tempVec1)+` +`+e(this._tempVec2),.03,5)}}onDragStart(e){this.gameObject.add(this._followObject),this._followObject.matrixAutoUpdate=!1,this._followObject.matrix.identity(),this._deviceMode=e.mode,this._followObjectStartWorldQuaternion.copy(this._followObject.worldQuaternion),this.alignManipulator(),this._manipulatorObject.attach(this._followObject),this._manipulatorPosOffset.copy(this._followObject.position),this._manipulatorRotOffset.copy(this._followObject.quaternion),this._manipulatorScaleOffset.copy(this._followObject.scale)}onDragEnd(e){if(!this.handlerA||!this.handlerB){console.error(`onDragEnd called on MultiTouchDragHandler without valid handlers. This is likely a bug.`);return}this.handlerA.recenter(),this.handlerB.recenter(),this._manipulatorObject.removeFromParent(),this._followObject.removeFromParent(),this._manipulatorObject.destroy(),this._followObject.destroy()}_manipulatorPosOffset=new n;_manipulatorRotOffset=new x;_manipulatorScaleOffset=new n;_tempVec1=new n;_tempVec2=new n;_tempVec3=new n;tempLookMatrix=new _;_initialScale=new n;_initialDistance=0;alignManipulator(){if(!this.handlerA||!this.handlerB){console.error(`alignManipulator called on MultiTouchDragHandler without valid handlers. This is likely a bug.`,this);return}if(!this.handlerA.followObject||!this.handlerB.followObject){console.error(`alignManipulator called on MultiTouchDragHandler without valid follow objects. This is likely a bug.`,this.handlerA,this.handlerB);return}this._tempVec1.copy(this._handlerAAttachmentPoint),this._tempVec2.copy(this._handlerBAttachmentPoint),this.handlerA.followObject.localToWorld(this._tempVec1),this.handlerB.followObject.localToWorld(this._tempVec2),this._tempVec3.lerpVectors(this._tempVec1,this._tempVec2,.5),this._manipulatorObject.position.copy(this._tempVec3);let e=this.context.mainCamera;this.tempLookMatrix.lookAt(this._tempVec3,this._tempVec2,e.worldUp),this._manipulatorObject.quaternion.setFromRotationMatrix(this.tempLookMatrix);let t=this._tempVec1.distanceTo(this._tempVec2);this._manipulatorObject.scale.copy(this._initialScale).multiplyScalar(t/this._initialDistance),this._manipulatorObject.updateMatrix(),this._manipulatorObject.updateMatrixWorld(!0),Ui&&(V.DrawLabel(this._tempVec3.clone().add(new n(0,.2,0)),`A:B `+t.toFixed(2),.03),V.DrawLine(this._tempVec1,this._tempVec2,65280,0,!1))}onDragUpdate(){this.alignManipulator(),this._followObject.position.copy(this._manipulatorPosOffset),this._followObject.quaternion.copy(this._manipulatorRotOffset),this._followObject.scale.copy(this._manipulatorScaleOffset);let e=this.gameObject,t=this._followObject;if(!e){console.error(`MultiTouchDragHandler has no dragged object. This is likely a bug.`);return}t.updateMatrix(),t.updateMatrixWorld(!0);let n=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`?this.settings.xrKeepRotation:this.settings.keepRotation;if(this.settings.snapGridResolution>0){let e=this._followObject.worldPosition,t=this.settings.snapGridResolution;e.x=Math.round(e.x/t)*t,e.y=Math.round(e.y/t)*t,e.z=Math.round(e.z/t)*t,this._followObject.worldPosition=e,this._followObject.updateMatrix()}n&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion,this._followObject.updateMatrix());let r=O.clamp01(this.context.time.deltaTime*30*1),i=e.worldPosition;i.lerp(t.worldPosition,r),e.worldPosition=i;let a=e.worldQuaternion;a.slerp(t.worldQuaternion,r),e.worldQuaternion=a;let o=e.worldScale;o.lerp(t.worldScale,r),e.worldScale=o,e.matrixAutoUpdate===!1&&e.updateMatrix()}setTargetObject(e){this.gameObject=e}},qi=class{getTotalMovement(){return this._totalMovement}get followObject(){return this._followObject}get hitPointInLocalSpace(){return this._hitPointInLocalSpace}context;gameObject;settings;_lastRig=void 0;_followObject;_totalMovement=new n;_totalMovementAlongRayDirection=0;_grabStartDistance=0;_deviceMode;_followObjectStartPosition=new n;_followObjectStartQuaternion=new x;_followObjectStartWorldQuaternion=new x;_lastDragPosRigSpace;_tempVec=new n;_tempMat=new _;_hitPointInLocalSpace=new n;_hitNormalInLocalSpace=new n;_bottomCenter=new n;_backCenter=new n;_backBottomCenter=new n;_bounds=new ie;_dragPlane=new ae(new n(0,1,0));_draggedOverObject=null;_draggedOverObjectLastSetUp=null;_draggedOverObjectLastNormal=new n;_draggedOverObjectDuration=0;setTargetObject(e){this.gameObject=e}constructor(e,t){this.settings=e,this.context=e.context,this.gameObject=t,this._followObject=new y}recenter(){if(!this._followObject.parent){console.warn(`Error: space follow object doesn't have parent but recenter() is called. This is likely a bug`);return}if(!this.gameObject){console.warn(`Error: space follow object doesn't have a gameObject`);return}let e=this._followObject.parent;this.gameObject.add(this._followObject),this._followObject.matrixAutoUpdate=!1,this._followObject.position.set(0,0,0),this._followObject.quaternion.set(0,0,0,1),this._followObject.scale.set(1,1,1),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0),e.attach(this._followObject),this._followObjectStartPosition.copy(this._followObject.position),this._followObjectStartQuaternion.copy(this._followObject.quaternion),this._followObjectStartWorldQuaternion.copy(this._followObject.worldQuaternion),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let t=this._hitPointInLocalSpace.clone();this.gameObject.localToWorld(t),this._grabStartDistance=t.distanceTo(e.worldPosition);let r=(St.active?.rig?.gameObject)?.worldScale.x||1;this._grabStartDistance/=r,this._totalMovementAlongRayDirection=0,this._lastDragPosRigSpace=void 0,Ui&&(V.DrawLine(t,e.worldPosition,65280,.5,!1),V.DrawLabel(e.worldPosition.add(new n(0,.1,0)),this._grabStartDistance.toFixed(2),.03,.5))}onDragStart(e){if(!this.gameObject){console.warn(`Error: space follow object doesn't have a gameObject`);return}if(e.event.space.add(this._followObject),this._lastDragPosRigSpace=void 0,e.point&&e.normal)this._hitPointInLocalSpace.copy(e.point),this.gameObject.worldToLocal(this._hitPointInLocalSpace),this._hitNormalInLocalSpace.copy(e.normal);else if(e){let t=e.event.space,n=t.worldPosition;this.gameObject.worldToLocal(n),this._hitPointInLocalSpace.copy(n);let r=t.worldUp;this._tempMat.copy(this.gameObject.matrixWorld).invert(),r.transformDirection(this._tempMat),this._hitNormalInLocalSpace.copy(r)}this.recenter(),this._totalMovement.set(0,0,0),this._deviceMode=e.mode;let t=this._followObject.parent.worldForward,r=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`?this.settings.xrDragMode:this.settings.dragMode,i=this._hitPointInLocalSpace.clone();switch(this.gameObject.localToWorld(i),r){case K.XZPlane:let e=new n(0,1,0);this.gameObject.parent&&e.transformDirection(this.gameObject.parent.matrixWorld.clone().invert()),this._dragPlane.setFromNormalAndCoplanarPoint(e,i);break;case K.HitNormal:let r=this._hitNormalInLocalSpace.clone();r.transformDirection(this.gameObject.matrixWorld),this._dragPlane.setFromNormalAndCoplanarPoint(r,i);break;case K.Attached:this._dragPlane.setFromNormalAndCoplanarPoint(t,i);break;case K.DynamicViewAngle:this.setPlaneViewAligned(i,!0);break;case K.SnapToSurfaces:this.setPlaneViewAligned(i,!1);break;case K.None:break}let a=this.gameObject.parent,o=this.gameObject.position.clone(),s=this.gameObject.quaternion.clone(),c=this.gameObject.scale.clone(),l=this.gameObject.matrixWorld.clone();a&&a.remove(this.gameObject),this.gameObject.position.set(0,0,0),this.gameObject.quaternion.set(0,0,0,1),this.gameObject.scale.set(1,1,1);let u=Nt([this.gameObject]);u.expandByPoint(this.gameObject.worldPosition);let d=new n;u.getCenter(d);let f=new n;u.getSize(f),this._bottomCenter.copy(d.clone().add(new n(0,-f.y/2,0))),this._backCenter.copy(d.clone().add(new n(0,0,f.z/2))),this._backBottomCenter.copy(d.clone().add(new n(0,-f.y/2,f.z/2))),this._bounds.copy(u),a&&a.add(this.gameObject),this.gameObject.position.copy(o),this.gameObject.quaternion.copy(s),this.gameObject.scale.copy(c),this.gameObject.matrixWorld.copy(l),this._draggedOverObject=null,this._draggedOverObjectLastSetUp=null,this._draggedOverObjectLastNormal.set(0,1,0),this._draggedOverObjectDuration=0}collectMovementInfo(){if(!this._followObject.parent)return;let e=this._followObject.parent;this._followObject.updateMatrix();let t=e.worldPosition,n=St.active?.rig?.gameObject;n&&n.worldToLocal(t),(this._lastDragPosRigSpace===void 0||n!=this._lastRig)&&(this._lastDragPosRigSpace=t.clone(),this._lastRig=n),this._tempVec.copy(t).sub(this._lastDragPosRigSpace);let r=e.worldForward;if(n&&(this._tempMat.copy(n.matrixWorld).invert(),r.transformDirection(this._tempMat)),this._totalMovementAlongRayDirection+=r.dot(this._tempVec),this._tempVec.x=Math.abs(this._tempVec.x),this._tempVec.y=Math.abs(this._tempVec.y),this._tempVec.z=Math.abs(this._tempVec.z),this._totalMovement.add(this._tempVec),this._lastDragPosRigSpace.copy(t),Ui){let e=t;n&&(e=e.clone(),e.transformDirection(n.matrixWorld)),V.DrawRay(e,r,255)}}onDragUpdate(e){if(e>1)return;let t=this.gameObject;if(!t||!this._followObject){console.warn(`Warning: DragPointerHandler doesn't have a dragged object. This is likely a bug.`);return}let r=this._followObject.parent;if(!r){console.warn(`Warning: DragPointerHandler doesn't have a drag source. This is likely a bug.`);return}this._followObject.updateMatrix();let i=r.worldPosition,o=r.worldForward,s=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`,c=s?this.settings.xrKeepRotation:this.settings.keepRotation,l=s?this.settings.xrDragMode:this.settings.dragMode;if(l===K.None)return;c&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let u=1,d=2;if(s&&this._grabStartDistance>.5){let e=1+this._totalMovementAlongRayDirection*(2*this.settings.xrDistanceDragFactor);u=Math.max(0,e),u=u*u*u}else this._grabStartDistance<=.5&&(d=3);this._followObject.position.copy(this._followObjectStartPosition),c||this._followObject.quaternion.copy(this._followObjectStartQuaternion),this._followObject.position.multiplyScalar(u),this._followObject.updateMatrix();let f=this._hasLastSurfaceHitPoint;this._hasLastSurfaceHitPoint=!1;let p=new a(i,o);if(l==K.SnapToSurfaces){let e=this.context.physics.raycastFromRay(p,{testObject:e=>e!==this.followObject&&e!==r&&e!==t});if(e.length>0){let t=e[0];if(this._draggedOverObject===t.object?this._draggedOverObjectDuration+=this.context.time.deltaTime:(this._draggedOverObject=t.object,this._draggedOverObjectDuration=0),t.face){this._hasLastSurfaceHitPoint=!0,this._lastSurfaceHitPoint.copy(t.point);let e=this._draggedOverObjectDuration>=.15,n=this._totalMovement.length()>=.001,r=z(t.normal||t.face.normal).applyQuaternion(t.object.worldQuaternion);if((e||n)&&(this._draggedOverObjectLastSetUp!==this._draggedOverObject||this._draggedOverObjectLastNormal.dot(r)<.999999||this.context.time.frame%60==0)){this._draggedOverObjectLastSetUp=this._draggedOverObject,this._draggedOverObjectLastNormal.copy(t.face.normal);let e=z(),n=z();this._bounds.getCenter(e),this._bounds.getSize(n),e.sub(n.multiplyScalar(.5).multiply(r)),this._hitPointInLocalSpace.copy(e),this._hitNormalInLocalSpace.copy(t.face.normal),this._bounds.getCenter(e),this._bounds.getSize(n),e.add(n.multiplyScalar(.5).multiply(t.face.normal));let i=z(this._hitPointInLocalSpace).add(e);this._followObject.localToWorld(i);let a=t.point;this._dragPlane.setFromNormalAndCoplanarPoint(r,a)}else if(!(e||n))return}}else f&&this.gameObject&&this.setPlaneViewAligned(this.gameObject.worldPosition,!1)}if(l!==K.Attached&&p.intersectPlane(this._dragPlane,this._tempVec)){this._followObject.worldPosition=this._tempVec,this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let e=z(this._hitPointInLocalSpace);this._followObject.localToWorld(e),Ui&&V.DrawLine(e,this._tempVec,65535,0,!1),this._followObject.worldPosition=this._tempVec.multiplyScalar(2).sub(e),this._followObject.updateMatrix(),this._followObject.updateMatrix()}if(this.settings.snapGridResolution>0){let e=this._followObject.worldPosition,t=this.settings.snapGridResolution;e.x=Math.round(e.x/t)*t,e.y=Math.round(e.y/t)*t,e.z=Math.round(e.z/t)*t,this._followObject.worldPosition=e,this._followObject.updateMatrix()}c&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion,this._followObject.updateMatrix());let m=O.clamp01(this.context.time.deltaTime*10*d),ee=O.clamp01(this.context.time.deltaTime*10*.5*d),h=t.worldPosition;h.lerp(this._followObject.worldPosition,m),t.worldPosition=h;let g=t.worldQuaternion;if(g.slerp(this._followObject.worldQuaternion,ee),t.worldQuaternion=g,t.matrixAutoUpdate===!1&&t.updateMatrix(),Ui){let e=this._hitPointInLocalSpace.clone();t.localToWorld(e),V.DrawSphere(e,.02,16711680);let r=this._hitNormalInLocalSpace.clone();r.applyQuaternion(g),V.DrawRay(e,r,16711680),V.DrawLabel(h.add(new n(0,.25,0)),`Distance: ${this._totalMovement.length().toFixed(2)}\n + Along Ray: ${this._totalMovementAlongRayDirection.toFixed(2)}\n + Session: ${!!St.active}\n + Device: ${this._deviceMode}\n + `,.03);let i=this._bottomCenter.clone(),a=this._backCenter.clone(),o=this._backBottomCenter.clone();t.localToWorld(i),t.localToWorld(a),t.localToWorld(o),V.DrawSphere(i,.01,65280,0,!1),V.DrawSphere(a,.01,255,0,!1),V.DrawSphere(o,.01,16711935,0,!1),V.DrawLine(i,o,65535,0,!1),V.DrawLine(o,a,65535,0,!1)}}onDragEnd(e){console.assert(this._followObject.parent===e.event.space,`Drag end: _followObject is not parented to the space object`),this._followObject.removeFromParent(),this._followObject.destroy(),this._lastDragPosRigSpace=void 0}_hasLastSurfaceHitPoint=!1;_lastSurfaceHitPoint=new n;setPlaneViewAligned(e,t){if(!this._followObject.parent)return!1;let n=this._followObject.parent.worldForward,r=z(0,1,0),i=n,a=r.angleTo(i),o=.5;return t&&(a>Math.PI/2+o||ae!==this._selected;let r=this._context.physics.raycastFromRay(t,n);for(let e=0;e{s instanceof y&&s.scale.set(1,e,1)}}}e.addPreview=r;function i(e){let n=t.get(e);n&&(t.delete(e),n.removeFromParent())}e.removePreview=i})(Xi||={});var Zi=[],Qi=[],$i;(function(e){function t(e,t){let n={name:t?.name,priority:t?.priority??0,callback:e};return Zi.push(n),Zi.sort((e,t)=>e.priority===t.priority?0:e.priority>t.priority?-1:1),()=>{let e=Zi.indexOf(n);e>=0&&Zi.splice(e,1)}}e.onCreateCustomModelLoader=t;function n(e){return Qi.push(e),()=>{let t=Qi.indexOf(e);t>=0&&Qi.splice(t,1)}}e.onDetermineModelMimetype=n})($i||={});var q=N(`debugfileformat`);function ea(e){switch((e.split(`.`).pop()||e).toUpperCase()){case`GLTF`:return`model/gltf+json`;case`VRM`:return`model/vrm`;case`GLB`:return`model/gltf-binary`;case`FBX`:return`model/fbx`;case`USD`:return`model/vnd.usd+zip`;case`USDA`:return`model/vnd.usda+zip`;case`USDZ`:return`model/vnd.usdz+zip`;case`OBJ`:return`model/obj`;default:return null}}async function ta(e,t){let{useExtension:n=!0}=t;if(n){let t=new URL(e,globalThis.location.href),n=null,r=t.searchParams.get(`filetype`);switch(r&&(n=r.toUpperCase()),n?.length||(n=t.pathname.split(`.`).pop()?.toUpperCase()),q&&console.warn(`[Needle Engine] Try to use file extension to determine type: '${n}'`),n){case`GLTF`:return`model/gltf+json`;case`VRM`:return`model/vrm`;case`GLB`:return`model/gltf-binary`;case`FBX`:return`model/fbx`;case`USD`:return`model/vnd.usd+zip`;case`USDA`:return`model/vnd.usda+zip`;case`USDZ`:return`model/vnd.usdz+zip`;case`OBJ`:return`model/obj`;case`MTLX`:return`application/materialx+xml`}}let r=e;if(!e.startsWith(`blob:`)){let t=new URL(e,globalThis.location.href);t.searchParams.append(`range`,`true`),e=t.toString()}let i=await fetch(e,{method:`GET`,headers:{range:`bytes=0-32`}}).catch(e=>null);if(i?.ok){let e=na(r,await i.arrayBuffer(),i);return q&&console.log(`[Needle Engine] Determined file type from header: `+e),e}return`unknown`}function na(e,t,n){if(t.byteLength<4)return`unknown`;let r=new Uint8Array(t);q&&q&&console.warn(`[Needle Engine] Trying to determine file type from binary data +`,`"`+new TextDecoder().decode(t)+`" +`,r);let i=new TextDecoder().decode(t).replace(/\s/g,``);if(i[0]===`{`&&i[1]===`"`)return q&&console.debug(`GLTF detected`),`model/gltf+json`;if(r[0]==103&&r[1]==108&&r[2]==84&&r[3]==70&&(r[4]==10||r[4]===2))return q&&console.debug(`GLTF .bin detected`),`model/gltf+json`;if(r[0]==103&&r[1]==108&&r[2]==84&&r[3]==70&&r[4]==98)return q&&console.debug(`GLB detected`),`model/gltf-binary`;if(r[0]==80&&r[1]==75&&r[2]==3&&r[3]==4)return q&&console.debug(`USDZ detected`),`model/vnd.usdz+zip`;if(r[0]==80&&r[1]==88&&r[2]==82&&r[3]==45&&r[4]==85&&r[5]==83&&r[6]==68&&r[7]==67)return q&&console.debug(`Binary USD detected`),`model/vnd.usd`;if(r[0]==35&&r[1]==117&&r[2]==115&&r[3]==100&&r[4]==97)return q&&console.debug(`ASCII USD detected`),`model/vnd.usda`;if(r[0]==75&&r[1]==97&&r[2]==121&&r[3]==100&&r[4]==97&&r[5]==114&&r[6]==97&&r[7]==32)return q&&console.debug(`Binary FBX detected`),`model/fbx`;if(r[0]==59&&r[1]==32&&r[2]==70&&r[3]==66&&r[4]==88&&r[5]==32)return q&&console.debug(`ASCII FBX detected`),`model/fbx`;if(r[0]==35&&r[1]==32&&r[2]==66&&r[3]==108&&r[4]==101&&r[5]==110&&r[6]==100&&r[7]==101&&r[8]==114&&r[9]==32||r[0]==35&&r[1]==32&&r[2]==65&&r[3]==108&&r[4]==105&&r[5]==97&&r[6]==115&&r[7]==32&&r[8]==79&&r[9]==66&&r[10]==74)return q&&console.debug(`OBJ detected`),`model/obj`;if(n.headers.has(`content-type`)){let e=n.headers.get(`content-type`);if(e?.startsWith(`image/`))return q&&console.debug(`Image detected, not a model file`),`unsupported`;switch(q&&console.debug(`Content-Type: `+e),e){case`model/gltf+json`:case`model/gltf-binary`:case`model/vrm`:case`model/vnd.usdz+zip`:case`model/vnd.usd+zip`:case`model/vnd.usd`:case`model/vnd.usda+zip`:case`model/vnd.usda`:case`model/vnd.usdc`:case`model/fbx`:case`model/vnd.autodesk.fbx`:case`model/obj`:case`application/materialx+xml`:return e;case`text/plain`:break}}if(r[0]==118&&r[1]==32||r[0]==102&&r[1]==32)return q&&console.debug(`OBJ detected (the file has no header and starts with vertex or face)`),`obj`;if(r[0]==35&&r[1]==32&&r[2]==70&&r[3]==105&&r[4]==108&&r[5]==101&&r[6]==32&&r[7]==101&&r[8]==120&&r[9]==112&&r[10]==111&&r[11]==114&&r[12]==116&&r[13]==101&&r[14]==100&&r[15]==32&&r[16]==98&&r[17]==121&&r[18]==32&&r[19]==90&&r[20]==66&&r[21]==114&&r[22]==117&&r[23]==115&&r[24]==104)return q&&console.debug(`OBJ detected (exported by ZBrush)`),`obj`;if(r[0]==109&&r[1]==116&&r[2]==108&&r[3]==108&&r[4]==105&&r[5]==98)return q&&console.debug(`OBJ detected (mtllib)`),`obj`;for(let t of Qi){let i=t({url:e,response:n,contentType:n.headers.get(`content-type`),bytes:r});if(i)return q&&console.debug(`Mimetype callback returned: ${i}`),i}if(w()||q){let e=new TextDecoder().decode(t.slice(0,Math.min(t.byteLength,32)));q&&console.warn(`Could not determine file type.\n\nConsider registering a custom loader via the 'onCreateCustomModelLoader' callback: 'NeedleEngineModelLoader.onCreateCustomModelLoader(args => { })'\n\nContent-Type: \"${n.headers.get(`content-type`)}\"\n\"Text: \"${e}\"\nBinary:`,r)}else q&&console.debug(`Could not determine file type from binary data`);return`unknown`}var ra=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},J=N(`debugdroplistener`),ia;(function(e){e.FileDropped=`file-dropped`,e.ObjectAdded=`object-added`})(ia||={});var aa=class extends CustomEvent{constructor(e){super(ia.ObjectAdded,{detail:e})}},oa=`blob`,sa=class extends R{dropArea;fitIntoVolume=!1;fitVolumeSize=new n(1,1,1);placeAtHitPosition=!0;useNetworking=!1;onDropped=new k;loadFromURL(e,t){return this.addFromUrl(e,{screenposition:new b,point:t?.point,size:t?.size},!1)}forgetObjects(){this.removePreviouslyAddedObjects(!1)}awake(){for(let e of this.gameObject.children)this.dropArea&&e.contains(this.dropArea)||this._addedObjects.push(e)}onEnable(){this.context.renderer.domElement.addEventListener(`dragover`,this.onDrag),this.context.renderer.domElement.addEventListener(`drop`,this.onDrop),window.addEventListener(`paste`,this.handlePaste),this.context.connection.beginListen(`droplistener`,this.onNetworkEvent),w()&&this.dropArea&&(this.dropArea.getComponentInChildren(Vn)||console.warn(`[DropListener] The assigned DropArea does not seem to have a renderer/mesh. Drag and Drop events will not be detected.`))}onDisable(){this.context.renderer.domElement.removeEventListener(`dragover`,this.onDrag),this.context.renderer.domElement.removeEventListener(`drop`,this.onDrop),window.removeEventListener(`paste`,this.handlePaste),this.context.connection.stopListen(`droplistener`,this.onNetworkEvent)}onNetworkEvent=e=>{if(!this.useNetworking){J&&console.debug(`[DropListener] Ignoring networked event because networking is disabled`,e);return}if(e.guid?.startsWith(this.guid)){let t=e.url;if(console.debug(`[DropListener] Received networked event`,e),t)if(Array.isArray(t))for(let n of t)this.addFromUrl(n,{screenposition:new b,point:e.point,size:e.size},!0);else this.addFromUrl(t,{screenposition:new b,point:e.point,size:e.size},!0)}};handlePaste=e=>{this.context.connection.allowEditing!==!1&&(e.defaultPrevented||navigator.clipboard.readText().then(e=>{if(e&&(e.startsWith(`http`)||e.startsWith(`https`)||e.startsWith(`blob`))){let t={screenposition:new b(this.context.input.mousePosition.x,this.context.input.mousePosition.y)};this.testIfIsInDropArea(t)&&this.addFromUrl(e,t,!1)}}).catch(console.warn))};onDrag=e=>{J&&console.debug(`DropListener Drag`,e,this.context.connection.allowEditing),this.context.connection.allowEditing!==!1&&e.preventDefault()};onDrop=async e=>{if(J&&console.debug(`DropListener Drop`,e,this.context.connection.allowEditing),this.context.connection.allowEditing===!1||!e?.dataTransfer||e[`droplistener:handled`])return;e.preventDefault();let t={screenposition:new b(e.offsetX,e.offsetY)};if(this.dropArea&&this.testIfIsInDropArea(t)===!1)return;e[`droplistener:handled`]=!0;let n=e.dataTransfer.items;if(!n)return;let r=[];for(let e in n){let i=n[e];if(i.kind===`file`){let e=i.getAsFile();if(!e)continue;r.push(e)}else i.kind===`string`&&i.type==`text/plain`&&i.getAsString(e=>{this.addFromUrl(e,t,!1)})}r.length>0&&await this.addFromFiles(r,t)};async addFromUrl(e,t,n){J&&console.log(`dropped url`,e);try{if(e.startsWith(`https://github.com/`)){let t=e.split(`/`);e=`https://raw.githubusercontent.com/${t[3]}/${t[4]}/${t[6]}/${t.slice(7).join(`/`)}`}else e.startsWith(`https://polyhaven.com/a`)&&(e=ca(e));if(!e)return null;let r=e.toLowerCase();if(r.endsWith(`.hdr`)||r.endsWith(`.hdri`)||r.endsWith(`.exr`)||r.endsWith(`.png`)||r.endsWith(`.jpg`)||r.endsWith(`.jpeg`))return console.warn(`Fileformat is not supported: ${r}`),null;this.removePreviouslyAddedObjects();let i=await la.loadFileFromURL(new URL(e),{guid:this.guid,context:this.context,parent:this.gameObject,point:t.point,size:t.size});if(i&&this._addedObjects.length<=0)return t.url=e,this.onObjectLoaded(i,t,n)}catch{console.warn(`String is not a valid URL`,e)}return null}_abort=null;async addFromFiles(e,t){if(J&&console.log(`Add files`,e),Array.isArray(e)&&e.length){this.deleteDropEvent(),this.removePreviouslyAddedObjects(),Ve(oa,null),this._abort?.abort(`New files dropped`),this._abort=new AbortController;for(let n of e){if(!n)continue;if(n.type.startsWith(`image/`)){J&&console.warn(`Ignoring dropped image file`,n.name,n.type);continue}else if(n.name.endsWith(`.bin`)){J&&console.warn(`Ignoring dropped binary file`,n.name,n.type);continue}console.debug(`Load file `+n.name+` + `+n.type);let e=await la.loadFile(n,this.context,{guid:this.guid});if(e){this.dispatchEvent(new CustomEvent(ia.FileDropped,{detail:n})),t.file=n;let r=this.onObjectLoaded(e,t,!1);r&&this.context.connection.isConnected&&this.useNetworking&&(console.debug(`Uploading dropped file to blob storage`),Tt.upload(n,{abort:this._abort?.signal}).then(t=>{t?.download_url&&this._addedObjects.includes(r)&&this.sendDropEvent(t.download_url,r,e.contentMD5)}).catch(console.warn));break}}}}_addedObjects=[];_addedModels=[];removePreviouslyAddedObjects(e=!0){if(e)for(let e of this._addedObjects)e.parent===this.gameObject&&e.destroy();this._addedObjects.length=0,this._addedModels.length=0}onObjectLoaded(e,t,r){let{model:i,contentMD5:a}=e;if(J&&console.log(`Dropped ${this.gameObject.name}`,i),!i?.scene)return console.warn(`No object specified to add to scene`,i),null;this.removePreviouslyAddedObjects();let o=i.scene;o.position.copy(this.gameObject.worldPosition);let s=_t(this.gameObject),c=new n(0,0,0);s.x=Math.abs(s.x),s.y=Math.abs(s.y),s.z=Math.abs(s.z);let l=o.scale.clone(),u=new ie().setFromCenterAndSize(new n(0,this.fitVolumeSize.y*s.y*.5,0).add(this.gameObject.worldPosition),this.fitVolumeSize.clone().multiply(s));if(J&&V.DrawWireBox3(u,255,5),this.fitIntoVolume&&(Wt(o,u,{position:!this.placeAtHitPosition}),l=o.scale.clone().divide(s),c=o.worldPosition.clone().sub(this.gameObject.worldPosition).divide(s),J&&V.DrawSphere(c,.1,16711680,5)),this.gameObject.attach(o),o.position.copy(c),o.quaternion.identity(),o.scale.copy(l),J&&V.DrawArrow(this.gameObject.worldPosition,o.getWorldPosition(new n),65280,5),this._addedObjects.push(o),this._addedModels.push(i),this.placeAtHitPosition&&t&&t.screenposition){o.visible=!1;let e=this.context.physics.raycast({screenPoint:this.context.input.convertScreenspaceToRaycastSpace(t.screenposition.clone())});if(o.visible=!0,e&&e.length>0)for(let t of e){let e=t.point.clone();J&&console.log(`Place object at hit`,t),Re(o,e);break}}at.autoplayAnimations(i);let d=new aa({sender:this,gltf:i,model:i,object:o,contentMD5:a,dropped:t.file||(t.url?new URL(t.url):void 0)});return this.dispatchEvent(d),this.onDropped?.invoke(d.detail),!r&&t.url?.startsWith(`http`)&&this.context.connection.isConnected&&o&&this.sendDropEvent(t.url,o,a),o}async sendDropEvent(e,t,r){if(!this.useNetworking){J&&console.debug(`[DropListener] Ignoring networked event because networking is disabled`,e);return}if(this.context.connection.isConnected){console.debug(`Sending drop event "`+t.name+`"`,e);let i=Nt([t]),a={name:t.name,guid:this.guid,url:e,point:t.worldPosition.clone(),size:i.getSize(new n),contentMD5:r};this.context.connection.send(`droplistener`,a)}}deleteDropEvent(){this.context.connection.sendDeleteRemoteState(this.guid)}testIfIsInDropArea(e){let t=this.context.input.convertScreenspaceToRaycastSpace(e.screenposition.clone()),n=this.context.physics.raycast({screenPoint:t,recursive:!0,testObject:e=>!this._addedObjects.some(t=>t.contains(e))});if(!n.length)return w()&&console.log(`Dropped outside of drop area for DropListener \"${this.name}\".`),!1;let r=n[0];return!!(this.dropArea&&this.dropArea.contains(r.object))}};ra([A(y)],sa.prototype,`dropArea`,void 0),ra([A()],sa.prototype,`fitIntoVolume`,void 0),ra([A(n)],sa.prototype,`fitVolumeSize`,void 0),ra([A()],sa.prototype,`placeAtHitPosition`,void 0),ra([A()],sa.prototype,`useNetworking`,void 0),ra([A(k)],sa.prototype,`onDropped`,void 0);function ca(e){if(!e.startsWith(`https://polyhaven.com/`))return e;let t=new URL(e).pathname.split(`/`).pop(),n=`https://dl.polyhaven.org/file/ph-assets/Models/gltf/4k/${t}/${t}_4k.gltf`;return console.log(`Resolved polyhaven asset url`,e,`→`,n),n}var la;(function(e){async function t(e,t,n){let r=n.guid,i=new mt(r),a=new Blob([e],{type:e.type||ea(e.name)||void 0}),o=URL.createObjectURL(a),s=await Fe().loadSync(t,o,e.name,i).catch(t=>(console.error(`Failed to load file "${e.name}" (${e.type}):`,t),null));return URL.revokeObjectURL(o),s?new Promise((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onloadend=async e=>{let n=r.result;return t({model:s,contentMD5:Tt.hashMD5(n)})}}):(console.warn(`Failed to load "${e.name}" (${e.type})`),null)}e.loadFile=t;async function n(e,t){return new Promise(async(n,r)=>{let i=new mt(t.guid),a=e.toString();J&&V.DrawWireSphere(t.point,.1,16711680,3);let o=Xi.addPreview({guid:t.guid,parent:t.parent,position:t?.point,size:t?.size}),s=await Fe().loadSync(t.context,a,a,i,e=>{o.onProgress(e.loaded/e.total)}).catch(console.warn);if(s){let e=await fetch(a).then(e=>e.arrayBuffer()),r=Tt.hashMD5(e);J?setTimeout(()=>Xi.removePreview(t.guid),3e3):Xi.removePreview(t.guid),n({model:s,contentMD5:r})}else J?setTimeout(()=>Xi.removePreview(t.guid),3e3):Xi.removePreview(t.guid),console.warn(`Unsupported file type: `+e.toString())})}e.loadFileFromURL=n})(la||={});var ua=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},da=class e extends R{parent=null;object=null;limitCount=60;_currentCount=0;_startPosition=null;_startQuaternion=null;start(){if(this._currentCount=0,this._startPosition=null,this._startQuaternion=null,this.object||=this.gameObject,this.object){if(this.object===this.gameObject){let t=new mt(this.guid);this.object=F.instantiate(this.object,{idProvider:t,keepWorldPosition:!1}),F.getComponent(this.object,e)?.destroy();let n=this.object.getComponentInChildren(Gi);n||(n=this.object.addComponent(Gi,{dragMode:K.SnapToSurfaces}),n.guid=t.generateUUID());let r=F.getComponent(n.gameObject,rt);r||(r=n.gameObject.addComponent(rt),r.guid=t.generateUUID())}this.object.visible=!1;let t=this.gameObject.getComponent(Gi);t&&(t.enabled=!1),this._startPosition=this.object.position?.clone()??new n(0,0,0),this._startQuaternion=this.object.quaternion?.clone()??new x(0,0,0,1)}this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onEnable(){this.startCoroutine(this.cloneLimitIntervalFn())}_forwardPointerEvents=new Map;onPointerEnter(e){e.used||this.object&&this.context.connection.allowEditing&&e.button===0&&this.context.input.setCursor(`pointer`)}onPointerExit(e){e.used||this.object&&this.context.connection.allowEditing&&e.button===0&&this.context.input.unsetCursor(`pointer`)}onPointerDown(e){if(e.used||!this.object||!this.context.connection.allowEditing||e.button!==0)return;let t=this.handleDuplication();if(t){let n=F.getComponent(t,Gi);n?(n.onPointerDown(e),this._forwardPointerEvents.set(e.event.space,n)):w()&&console.warn(`Duplicated object (${t.name}) does not have DragControls`)}else this._currentCount>=this.limitCount?console.warn(`[Duplicatable] Limit of ${this.limitCount} objects created within a few seconds reached. Please wait a moment before creating more objects.`):console.warn(`[Duplicatable] Could not duplicate object.`)}onPointerUp(e){if(e.used)return;let t=this._forwardPointerEvents.get(e.event.space);t&&(t.onPointerUp(e),this._forwardPointerEvents.delete(e.event.space))}*cloneLimitIntervalFn(){for(;this.activeAndEnabled&&!this.destroyed;)this._currentCount>0?--this._currentCount:this._currentCount<0&&(this._currentCount=0),yield Ke(1)}handleDuplication(){if(!this.object||this.limitCount>0&&this._currentCount>=this.limitCount||this.object===this.gameObject)return null;if(F.isDestroyed(this.object))return this.object=null,null;this.object.matrixAutoUpdate===!1&&(this.object.updateMatrix(),w()&&(console.warn(`Object "${this.object.name}" has matrixAutoUpdate disabled. This can cause duplicated objects to have incorrect position/rotation/scale. Consider enabling matrixAutoUpdate or calling updateMatrix() before duplication.`),Ht(`Duplicatable: Object has matrixAutoUpdate disabled`))),this.object.visible=!0,this._startPosition&&this.object.position.copy(this._startPosition),this._startQuaternion&&this.object.quaternion.copy(this._startQuaternion);let e=new nt;this.parent||=this.gameObject.parent,this.parent&&(e.parent=this.parent.guid??this.parent.userData?.guid,e.keepWorldPosition=!0),e.position=this.worldPosition,e.rotation=this.worldQuaternion,e.context=this.context,this._currentCount+=1;let t=F.instantiateSynced(this.object,e);return console.assert(t!==this.object,`Duplicated object is original`),this.object.visible=!1,this._startPosition&&this.object.position.clone().copy(this._startPosition),this._startQuaternion&&this.object.quaternion.clone().copy(this._startQuaternion),t}};ua([A(y)],da.prototype,`parent`,void 0),ua([A(y)],da.prototype,`object`,void 0),ua([A()],da.prototype,`limitCount`,void 0);var fa;(function(e){e[e.PointerEnter=0]=`PointerEnter`,e[e.PointerExit=1]=`PointerExit`,e[e.PointerDown=2]=`PointerDown`,e[e.PointerUp=3]=`PointerUp`,e[e.PointerClick=4]=`PointerClick`})(fa||={});var pa=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ma=class{eventID;callback=new k};pa([A()],ma.prototype,`eventID`,void 0),pa([A(k)],ma.prototype,`callback`,void 0);var ha=class extends R{triggers=[];invoke(e){if(this.triggers)for(let t of this.triggers)t.eventID===e&&t.callback?.invoke()}hasTrigger(e){return this.triggers?.some(t=>t.eventID===e)??!1}shouldChangeCursor(){return this.hasTrigger(fa.PointerClick)||this.hasTrigger(fa.PointerDown)||this.hasTrigger(fa.PointerUp)}onPointerClick(e){this.invoke(fa.PointerClick)}onPointerEnter(e){this.shouldChangeCursor()&&this.context.input.setCursor(`pointer`),this.invoke(fa.PointerEnter)}onPointerExit(e){this.shouldChangeCursor()&&this.context.input.unsetCursor(`pointer`),this.invoke(fa.PointerExit)}onPointerDown(e){this.invoke(fa.PointerDown)}onPointerUp(e){this.invoke(fa.PointerUp)}};pa([A(ma)],ha.prototype,`triggers`,void 0);var ga=class{constructor(e){this.writer=e,this.name=`EXT_mesh_gpu_instancing`}writeNode(e,t){if(e.constructor.name!==`InstancedMesh`)return;let r=this.writer,i=r.extensionsUsed,a={};t.extensions=t.extensions||{},t.extensions[this.name]=a;let o=new _,s=[],c=[],l=[];for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Sa=N(`debuggltfexport`),Ca=class extends Di{sceneRoot},wa=class e extends R{binary=!0;objects=[];ext;async exportNow(t,n){Sa&&console.log(`Exporting objects as glTF`,this.objects),t||=`scene`,(!this.objects||this.objects.length<=0)&&(this.objects=[this.context.scene]);let r={binary:this.binary,pivot:e.calculateCenter(this.objects),...n},i=await this.export(this.objects,r).catch(e=>(console.error(e),!1));return i===!1?!1:(this.binary?t.endsWith(`.glb`)||(t+=`.glb`):t.endsWith(`.gltf`)||(t+=`.gltf`),this.binary?e.saveArrayBuffer(i,t):e.saveJson(i,t),!0)}async export(t,n){if(!t||t.length<=0){console.warn(`No objects set to export`);return}let r=new on;r.register(e=>new ga(e)),r.register(e=>new ya(e)),wn(r,this.context),e.filterTopmostParent(t);let i={trs:!1,onlyVisible:!0,truncateDrawRange:!1,binary:!0,maxTextureSize:1/0,embedImages:!0,includeCustomExtensions:!0,animations:n?.animations||e.collectAnimations(t),...n},a=[],o=new y;n?.pivot&&o.position.sub(n.pivot),Sa&&console.log(`EXPORT`,t),t.forEach(e=>{e&&ba(e)&&(o.children.push(e),e.matrixAutoUpdate=!1,e.matrix.copy(e.matrixWorld),F.getComponentsInChildren(e,Vn).forEach(e=>{F.isActiveInHierarchy(e.gameObject)&&e.setInstancingEnabled(!1)}),e.traverse(e=>{if(!ba(e)){let t=e.parent;e.removeFromParent(),a.push(()=>{t&&t.add(e)})}}))});let s=new T(o);return n?.needleComponents&&(this.ext=new pn),this.ext&&(this.ext.registerExport(r),this.ext.context=s),new Promise((e,t)=>{Sa&&console.log(`Starting glTF export.`);try{r?.parse(o,t=>{c(),e(t)},e=>{c(),t(e)},i)}catch(e){console.error(e),t(e)}finally{a.forEach(e=>e()),Sa&&console.log(`Finished glTF export.`)}});function c(){t.forEach(e=>{e&&(e.matrixAutoUpdate=!0,F.getComponentsInChildren(e,Vn).forEach(e=>{F.isActiveInHierarchy(e.gameObject)&&e.setInstancingEnabled(!1)}))})}}static saveArrayBuffer(e,t){this.save(new Blob([e],{type:`application/octet-stream`}),t)}static saveJson(e,t){this.save(`data: text/json;charset=utf-8,`+encodeURIComponent(JSON.stringify(e)),t)}static save(e,t){let n=document.createElement(`a`);n.style.display=`none`,document.body.appendChild(n),typeof e==`string`?n.href=e:n.href=URL.createObjectURL(e),n.download=t,n.click(),n.remove()}static collectAnimations(e,t){t||=[];for(let n of e)n&&n.traverseVisible(e=>{e.animations&&e.animations.length>0&&t.push(...e.animations)});return t}static calculateCenter(e,t){let r=t||new n;return r.set(0,0,0),e.forEach(e=>{r.add(M(e))}),r.divideScalar(e.length),r}static filterTopmostParent(e){if(!(e.length<=0))for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ka;(function(e){e[e.Linear=1]=`Linear`,e[e.Exponential=2]=`Exponential`,e[e.ExponentialSquared=3]=`ExponentialSquared`})(ka||={});var Aa=class extends R{get fog(){return this._fog||=new ve(0,0,50),this._fog}get mode(){return ka.Linear}set near(e){this.fog.near=e}get near(){return this.fog.near}set far(e){this.fog.far=e}get far(){return this.fog.far}set color(e){this.fog.color.copy(e)}get color(){return this.fog.color}_fog;onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}};Oa([A()],Aa.prototype,`near`,null),Oa([A()],Aa.prototype,`far`,null),Oa([A(t)],Aa.prototype,`color`,null);var ja=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ma=class extends R{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!Lt)return;let e=this.size,n=this.divisions;this.gridHelper||(this.gridHelper=new Ce(e,n,this.color0??new t(.4,.4,.4),this.color1??new t(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset)),this.gridHelper&&this.gameObject.add(this.gridHelper)}onDisable(){this.gridHelper&&=(this.gameObject.remove(this.gridHelper),null)}};ja([A()],Ma.prototype,`isGizmo`,void 0),ja([A(t)],Ma.prototype,`color0`,void 0),ja([A(t)],Ma.prototype,`color1`,void 0);var Na=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Pa=class extends R{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||=this.gameObject.getComponent(E),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}};Na([A(E)],Pa.prototype,`connectedBody`,void 0);var Fa=class extends Pa{createJoint(e,t){this.context.physics.engine?.addFixedJoint(e,t)}},Ia=class extends Pa{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.engine?.addHingeJoint(e,t,this.anchor,this.axis)}};Na([A(n)],Ia.prototype,`anchor`,void 0),Na([A(n)],Ia.prototype,`axis`,void 0);var La=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a};function Ra(e){return e*Math.PI/180}var za=300,Ba=N(`debuglights`),Va;(function(e){e[e.Spot=0]=`Spot`,e[e.Directional=1]=`Directional`,e[e.Point=2]=`Point`,e[e.Area=3]=`Area`,e[e.Rectangle=3]=`Rectangle`,e[e.Disc=4]=`Disc`})(Va||={});var Ha;(function(e){e[e.Realtime=4]=`Realtime`,e[e.Baked=2]=`Baked`,e[e.Mixed=1]=`Mixed`})(Ha||={});var Ua;(function(e){e[e.None=0]=`None`,e[e.Hard=1]=`Hard`,e[e.Soft=2]=`Soft`})(Ua||={});var Y=class extends R{type=0;get range(){return this._range}set range(e){this._range=e,this.light&&(this.light.type===`SpotLight`||this.light.type===`PointLight`)&&`distance`in this.light&&(this.light.distance=e)}_range=1;get spotAngle(){return this._spotAngle}set spotAngle(e){this._spotAngle=e,this.light&&this.light.type===`SpotLight`&&`angle`in this.light&&(this.light.angle=Ra(e/2))}_spotAngle=30;get innerSpotAngle(){return this._innerSpotAngle}set innerSpotAngle(e){if(this._innerSpotAngle=e,this.light&&this.light.type===`SpotLight`&&`penumbra`in this.light){let t=this.spotAngle,n=1-Ra(e/2)/Ra(t/2);this.light.penumbra=n}}_innerSpotAngle=10;set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}_color=new t(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){let t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=0;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==Ua.None,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=Ha.Realtime;set intensity(e){this._intensity=e,this.light&&(this.light.intensity=e),Ba&&console.log(`Set light intensity to `+this._intensity,e,this)}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){let e=this.light;return e?.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;let t=this.light;if(t?.shadow){let n=t.shadow.camera;n.far=e,n.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){let e=this.light;return e?.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;let t=this.light;t?.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 0;get isBaked(){return this.lightmapBakeType===Ha.Baked}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case`SpotLight`:case`PointLight`:case`DirectionalLight`:return!0}return!1}light=void 0;getWorldPosition(e){return this.light?this.type===Va.Directional?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}awake(){this.color=new t(this.color??16777215),Ba&&console.log(this.name,this)}onEnable(){Ba&&console.log(`ENABLE LIGHT`,this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Ba&&console.log(`Set light intensity to `+this.light.intensity,this.name),this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===Va.Directional&&this.startCoroutine(this.updateMainLightRoutine(),an.LateUpdate))}onDisable(){Ba&&console.log(`DISABLE LIGHT`,this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}createLight(){let e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type){case Va.Directional:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case Va.Directional:let e=new ne(this.color,this.intensity*Math.PI);if(e.position.set(0,0,-za*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(e.target),kt(e.target,0,0,0),this.light=e,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Ba){let e=new f(this.light,.2,this.color);this.context.scene.add(e)}break;case Va.Spot:let t=new ce(this.color,this.intensity*Math.PI,this.range,Ra(this.spotAngle/2),1-Ra(this.innerSpotAngle/2)/Ra(this.spotAngle/2),2);t.position.set(0,0,0),t.rotation.set(0,0,0),this.light=t;let n=t.target;t.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case Va.Point:this.light=new De(this.color,this.intensity*Math.PI,this.range);break}if(this.light){if(this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows===Ua.None?this.light.castShadow=!1:this.light.castShadow=!0,this.light.shadow){this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),Ba&&console.log(`Override shadow bias?`,this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias,this.updateShadowSoftHard();let e=this.light.shadow.camera;if(e.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance==`number`?e.far=this._shadowDistance:e.far=za*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)e.left=-this.shadowWidth/2,e.right=this.shadowWidth/2;else{let t=this.gameObject.scale.x;e.left*=t,e.right*=t}if(this.shadowHeight!==void 0)e.top=this.shadowHeight/2,e.bottom=-this.shadowHeight/2;else{let t=this.gameObject.scale.y;e.top*=t,e.bottom*=t}this.light.shadow.needsUpdate=!0,Ba&&this.context.scene.add(new g(e))}this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===Va.Directional&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}static allowChangingRendererShadowMapType=!0;updateShadowSoftHard(){this.light&&this.light.shadow&&(this.shadows===Ua.Soft||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1))}onEnterXR(e){this.applyXRScale(e.xr.rigScale)}onUpdateXR(e){this.applyXRScale(e.xr.rigScale)}onLeaveXR(e){this.applyXRScale(1)}applyXRScale(e){this.light&&(this.light.intensity=this._intensity/e,`distance`in this.light&&(this.light.distance=this._range/e))}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}};La([A()],Y.prototype,`type`,void 0),La([A()],Y.prototype,`range`,null),La([A()],Y.prototype,`spotAngle`,null),La([A()],Y.prototype,`innerSpotAngle`,null),La([A(t)],Y.prototype,`color`,null),La([A()],Y.prototype,`shadowNearPlane`,null),La([A()],Y.prototype,`shadowBias`,null),La([A()],Y.prototype,`shadowNormalBias`,null),La([A()],Y.prototype,`shadows`,null),La([A()],Y.prototype,`lightmapBakeType`,void 0),La([A()],Y.prototype,`intensity`,null),La([A()],Y.prototype,`shadowDistance`,null),La([A()],Y.prototype,`shadowResolution`,null),new n(0,0,0);var Wa=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ga=N(`debuglods`),Ka=N(`nolods`),qa;(function(e){e[e.None=0]=`None`,e[e.CrossFade=1]=`CrossFade`,e[e.SpeedTree=2]=`SpeedTree`})(qa||={});var Ja=class{screenRelativeTransitionHeight;distance;renderers};Wa([A()],Ja.prototype,`screenRelativeTransitionHeight`,void 0),Wa([A()],Ja.prototype,`distance`,void 0),Wa([A(Vn)],Ja.prototype,`renderers`,void 0);var Ya=class{model;get renderers(){return this.model.renderers}constructor(e){this.model=e}},Xa=class extends R{lodModels=[];_lods=[];_settings=[];_lodsHandler;start(){if(Ga&&console.log(`LODGROUP`,this.name,this.lodModels,this),!Ka&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){let e=[];for(let t of this.lodModels){let n=new Ya(t);this._lods.push(n);for(let t of n.renderers)e.includes(t)||e.push(t)}this._lodsHandler=[];for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Qa=N(`debugnestedgltf`),$a=class extends R{filePath;loaded=new k;loadAssetInParent=!0;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){return this.filePath?.preload()||null}async start(){if(this._isLoadingOrDoneLoading)return;Qa&&console.log(this,this.guid);let e=this.gameObject.parent;if(e&&this.filePath){this._isLoadingOrDoneLoading=!0;let t=new nt;t.idProvider=new mt(this.hash(this.guid)),t.parent=this.loadAssetInParent===!1?this.gameObject:e,this.gameObject.updateMatrix();let n=this.gameObject.matrix;Qa&&console.log(`Load nested:`,this.filePath?.url??this.filePath,this.gameObject.position);let r=await this.filePath?.instantiate?.call(this.filePath,t);Qa&&console.log(`Nested loaded:`,this.filePath?.url??this.filePath,r),r&&this.loadAssetInParent!==!1&&(r.matrixAutoUpdate=!1,r.matrix.identity(),r.applyMatrix4(n),r.matrixAutoUpdate=!0,r.layers.disableAll(),r.layers.set(this.layer),this.loaded.invoke({component:this,instance:r,asset:this.filePath})),Qa&&console.log(`Nested loading done:`,this.filePath?.url??this.filePath,r)}}onDestroy(){this.filePath?.unload()}hash(e){let t=0;for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},to=N(`debugnet`),no=class e extends R{url=null;urlParameterName=null;localhost=null;awake(){to&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let t=this.url?e.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){let e=N(this.urlParameterName);e&&typeof e==`string`&&(t=e)}if(!t)return null;let n=RegExp(`(((https?)|(?wss?))://)?(www.)?(?.+)`,`gm`).exec(t);return n?.groups?n?.groups.socket_prefix?t:`wss://`+n?.groups.url:null}static GetUrl(t,n){let r=t,i=e.IsLocalNetwork()&&n;if(i&&(r=n),t?.startsWith(`/`)){let e=i?r:window.location.origin;e?.endsWith(`/`)&&t.startsWith(`/`)&&(t=t.substring(1)),r=e+t}return r}static IsLocalNetwork(e=window.location.hostname){return Ue(e)}};eo([A()],no.prototype,`url`,void 0),eo([A()],no.prototype,`urlParameterName`,void 0),eo([A()],no.prototype,`localhost`,void 0);var ro=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},io=class extends R{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new n(0,0,0);rotationOffset=new n(0,0,0);offset=new n(0,0,0);update(){if(!this.from)return;var e=M(this.from),t=Xt(this.from);this.offset.copy(this.positionOffset);let r=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(r),e.add(this.offset),this.levelPosition&&this.referenceSpace){let t=new ae(this.gameObject.up,0),r=M(this.referenceSpace);t.setFromNormalAndCoplanarPoint(this.gameObject.up,r);let i=new n(0,0,0);t.projectPoint(e,i),e.copy(i)}this.affectPosition&&Oe(this.gameObject,e);let i=new be(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),a=new x().setFromEuler(i);this.affectRotation&&Ye(this.gameObject,t.multiply(a));let o=new n;this.from.getWorldDirection(o).multiplyScalar(50),this.levelLookDirection&&(o.y=0),this.alignLookDirection&&this.gameObject.lookAt(o)}};ro([A(F)],io.prototype,`referenceSpace`,void 0),ro([A(F)],io.prototype,`from`,void 0),ro([A(n)],io.prototype,`positionOffset`,void 0),ro([A(n)],io.prototype,`rotationOffset`,void 0);var ao=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},oo=class extends R{strength=1;radius=2;targets=[];update(){let e=this.gameObject.worldPosition,t=-this.strength*this.context.time.deltaTime;this.targets?.forEach(n=>{if(!n)return;let r=n.gameObject.worldPosition.sub(e),i=r.length();if(i>this.radius)return;let a=t;i>1?a/=i*i:a/=Math.max(.05,i),n.applyImpulse(r.multiplyScalar(a))})}};ao([A()],oo.prototype,`strength`,void 0),ao([A()],oo.prototype,`radius`,void 0),ao([A(E)],oo.prototype,`targets`,void 0);var so=class e extends R{_didAssignPlayerColor=!1;onEnable(){this.context.connection.beginListen(P.JoinedRoom,this.tryAssignColor),this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}onDisable(){this.context.connection.stopListen(P.JoinedRoom,this.tryAssignColor)}*waitForConnection(){for(;!this.destroyed&&this.activeAndEnabled&&(yield Ke(.2),!this.tryAssignColor()););}tryAssignColor=()=>{let e=F.getComponentInParent(this.gameObject,qn);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;let t=F.getComponentInParent(this.gameObject,Yn);return t?.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1};assignUserColor(t){let n=e.hashCode(t),r=e.colorFromHashCode(n);if(this.gameObject.type===`Mesh`){let e=this.gameObject;this.assignColor(r,t,e)}else if(this.gameObject.children)for(let e of this.gameObject.children){let n=e;n.material&&n.material.color&&this.assignColor(r,t,n)}}assignColor(e,t,n){let r=n.material;r&&(r._playerMaterial!==t&&(r=r.clone(),r._playerMaterial=t,n.material=r),r.color=e)}static hashCode(e){var t=0,n,r;if(e.length===0)return t;for(n=0;n>16,r=(e&65280)>>8,i=e&255;return new t(n/255,r/255,i/255)}};function co(){return new Promise((e,t)=>{let n=()=>{n!=null&&(document.removeEventListener(`pointerdown`,n),document.removeEventListener(`click`,n),document.removeEventListener(`dragstart`,n),document.removeEventListener(`touchstart`,n),e())};document.addEventListener(`pointerdown`,n),document.addEventListener(`click`,n),document.addEventListener(`dragstart`,n),document.addEventListener(`touchstart`,n)})}async function lo(e){await co(),e()}var uo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},X=N(`debugvideo`),fo;(function(e){e[e.None=0]=`None`,e[e.AdjustHeight=1]=`AdjustHeight`,e[e.AdjustWidth=2]=`AdjustWidth`})(fo||={});var po;(function(e){e[e.VideoClip=0]=`VideoClip`,e[e.Url=1]=`Url`})(po||={});var mo;(function(e){e[e.None=0]=`None`,e[e.AudioSource=1]=`AudioSource`,e[e.Direct=2]=`Direct`,e[e.APIOnly=3]=`APIOnly`})(mo||={});var ho;(function(e){e[e.CameraFarPlane=0]=`CameraFarPlane`,e[e.CameraNearPlane=1]=`CameraNearPlane`,e[e.RenderTexture=2]=`RenderTexture`,e[e.MaterialOverride=3]=`MaterialOverride`})(ho||={});var Z=class extends R{playOnAwake=!0;aspectMode=fo.None;clip=null;source=po.Url;get url(){return this._url}set url(e){let t=this._url!==e;this.__didAwake?t&&this.setClipURL(e??``):this._url=e}_url=null;renderMode=ho.MaterialOverride;targetMaterialProperty;targetMaterialRenderer;targetTexture;time=0;_playbackSpeed=1;get playbackSpeed(){return this._videoElement?.playbackRate??this._playbackSpeed}set playbackSpeed(e){this._playbackSpeed=e,this._videoElement&&(this._videoElement.playbackRate=e)}_isLooping=!1;get isLooping(){return this._videoElement?.loop??this._isLooping}set isLooping(e){this._isLooping=e,this._videoElement&&(this._videoElement.loop=e)}get currentTime(){return this._videoElement?.currentTime??this.time}set currentTime(e){this._videoElement?this._videoElement.currentTime=e:this.time=e}get isPlaying(){let e=this._videoElement;return!!(e&&(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>e.HAVE_CURRENT_DATA||e.srcObject&&e.srcObject.active))}get crossOrigin(){return this._videoElement?.crossOrigin??this._crossOrigin}set crossOrigin(e){this._crossOrigin=e,this._videoElement&&(e===null?this._videoElement.removeAttribute(`crossorigin`):this._videoElement.setAttribute(`crossorigin`,e))}get videoMaterial(){return!this._videoMaterial&&!this.create(!1)?null:this._videoMaterial}get videoTexture(){return!this._videoTexture&&!this.create(!1)?null:this._videoTexture}get videoElement(){return!this._videoElement&&!this.create(!1)?null:this._videoElement}requestPictureInPicture(){return this._videoElement?this._videoElement.requestPictureInPicture():null}get muted(){return this._videoElement?.muted??this._muted}set muted(e){this._muted=e,this._videoElement&&(this._videoElement.muted=e)}_muted=!1;get currentVideo(){return this.clip}set audioOutputMode(e){e!==this._audioOutputMode&&(e===mo.AudioSource&&w()&&console.warn(`VideoAudioOutputMode.AudioSource is not yet implemented`),this._audioOutputMode=e,this.updateVideoElementSettings())}get audioOutputMode(){return this._audioOutputMode}_audioOutputMode=mo.Direct;playInBackground=!0;_crossOrigin=`anonymous`;_videoElement=null;_videoTexture=null;_videoMaterial=null;_isPlaying=!1;wasPlaying=!1;preloadVideo(){X&&console.log(`Video Preload: `+this.name,this.clip),this.create(!1)}preload(){this.preloadVideo()}setVideo(e){this.clip=e,this.source=po.VideoClip,this._videoElement?(this._videoElement.srcObject=e,this._isPlaying&&this.play(),this.updateAspect()):this.create(this.playOnAwake)}setClipURL(e){this._url!==e&&(this._url=e,this.source=po.Url,X&&console.log(`set url`,e),this._videoElement?e.endsWith(`.m3u8`)||e.includes(`.m3u`)?this.ensureM3UCanBePlayed():(this._videoElement.src=e,this._isPlaying&&(this.stop(),this.play())):this.create(this.playOnAwake))}onEnable(){X&&console.log(`VideoPlayer.onEnable`,po[this.source],this.clip,this.url,this),window.addEventListener(`visibilitychange`,this.visibilityChanged),this.playOnAwake===!0?this.create(!0):this.preloadVideo(),this.screenspace?this._overlay?.start():this._overlay?.stop()}onDisable(){window.removeEventListener(`visibilitychange`,this.visibilityChanged),this._overlay?.stop(),this.pause()}visibilityChanged=e=>{switch(document.visibilityState){case`hidden`:this.playInBackground||(this.wasPlaying=this._isPlaying,this.pause());break;case`visible`:this.wasPlaying&&!this._isPlaying&&this.play();break}};onDestroy(){this._videoElement&&=(this.videoElement?.remove(),null),this._videoTexture&&=(this._videoTexture.dispose(),null)}_receivedInput=!1;constructor(){super(),lo(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],N(`videoscreenspace`)&&window.addEventListener(`keydown`,e=>{e.key===`f`&&(this.screenspace=!this.screenspace)})}_playErrors=0;play(){if(this._videoElement||this.create(!1),!this._videoElement){X&&console.warn(`Can not play: no video element found`,this);return}if(!(this._isPlaying&&!this._videoElement?.ended&&!this._videoElement?.paused)){if(this._isPlaying=!0,this._receivedInput||(this._videoElement.muted=!0),this.handleBeginPlaying(!1),this.shouldUseM3U){this.ensureM3UCanBePlayed();return}X&&console.log(`Video Play()`,this.clip,this._videoElement,this.time),this._videoElement.currentTime=this.time,this._videoElement.play().catch(e=>{this._playErrors++<10?console.error(e):this._playErrors===10&&console.error(`Multiple errors playing video, further errors will be suppressed. Use 'debugvideo' param to see all errors.`),X&&console.error(`Error playing video`,e,`CODE=`+e.code,this.videoElement?.src,this),setTimeout(()=>{this._isPlaying&&!this.destroyed&&this.activeAndEnabled&&this.play()},1e3)}),X&&console.log(`play`,this._videoElement,this.time)}}stop(){this._isPlaying=!1,this.time=0,this._videoElement&&(this._videoElement.currentTime=0,this._videoElement.pause(),X&&console.log(`STOP`,this))}pause(){this.time=this._videoElement?.currentTime??0,this._isPlaying=!1,this._videoElement?.pause(),X&&console.log(`PAUSE`,this,this.currentTime)}create(e){let t;switch(this.source){case po.VideoClip:t=this.clip;break;case po.Url:t=this.url,!t?.length&&typeof this.clip==`string`&&(t=this.clip);break}return t?(this._videoElement||(X&&console.warn(`Create VideoElement`,this),this._videoElement=this.createVideoElement(),this.context.domElement.shadowRoot.prepend(this._videoElement),this.updateVideoElementStyles()),typeof t==`string`?(X&&console.log(`Set Video src`,t),this._videoElement.src=t):(X&&console.log(`Set Video srcObject`,t),this._videoElement.srcObject=t),this._videoTexture||=new l(this._videoElement),this._videoTexture.flipY=!1,this._videoTexture.colorSpace=re,e&&this.handleBeginPlaying(e),X&&console.log(`Video: handle playing done...`,t,e),!0):(X&&console.warn(`No video source set`,this),!1)}updateAspect(){this.aspectMode!==fo.None&&this.startCoroutine(this.updateAspectImpl())}_overlay=null;get screenspace(){return this._overlay?.enabled??!1}set screenspace(e){if(e){if(!this._videoTexture)return;this._overlay||=new go(this.context),this._overlay.add(this._videoTexture)}else this._overlay?.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=e)}_targetObjects;createVideoElement(){let e=document.createElement(`video`);return this._crossOrigin&&e.setAttribute(`crossorigin`,this._crossOrigin),X&&console.log(`created video element`,e),e}handleBeginPlaying(e){if(!this.activeAndEnabled||!this._videoElement)return;this._targetObjects.length=0;let t=this.gameObject;switch(this.renderMode){case ho.MaterialOverride:t=this.targetMaterialRenderer?.gameObject,t||=F.getComponent(this.gameObject,Vn)?.gameObject;break;case ho.RenderTexture:console.error(`VideoPlayer renderTexture not implemented yet. Please use material override instead`);return}if(!t){console.error(`Missing target for video material renderer`,this.name,ho[this.renderMode],this);return}let n=t.material;if(n){this._targetObjects.push(t),n!==this._videoMaterial&&(this._videoMaterial=n.clone(),t.material=this._videoMaterial);let e=this._videoMaterial;if(!this.targetMaterialProperty)X&&e.map===void 0&&console.warn(`The target material does not have a 'map' property, video might not render correctly.`),e.map=this._videoTexture;else switch(this.targetMaterialProperty){default:X&&e[this.targetMaterialProperty]===void 0&&console.warn(`The target material does not have a '${this.targetMaterialProperty}' property, video might not render correctly.`),e.map=this._videoTexture;break}}else{console.warn(`Can not play video, no material found, this might be a multimaterial case which is not supported yet`);return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),e&&(this.shouldUseM3U&&this.ensureM3UCanBePlayed(),this.play())}updateVideoElementSettings(){if(!this._videoElement)return;this._videoElement.loop=this._isLooping,this._videoElement.currentTime=this.currentTime,this._videoElement.playbackRate=this._playbackSpeed,this._videoElement.playsInline=!0;let e=!this._receivedInput||this.audioOutputMode===mo.None;!e&&this._muted&&(e=!0),this._videoElement.muted=e,this.playOnAwake&&(this._videoElement.autoplay=!0)}updateVideoElementStyles(){this._videoElement&&(this._videoElement.style.userSelect=`none`,this._videoElement.style.visibility=`hidden`,this._videoElement.style.display=`none`,this.updateAspect())}_updateAspectRoutineId=-1;*updateAspectImpl(){let e=++this._updateAspectRoutineId,t=this.clip;for(;e===this._updateAspectRoutineId&&this.aspectMode!==fo.None&&this.clip&&t===this.clip&&this._isPlaying;){if(!t||typeof t==`string`)return;let e;for(let n of t.getVideoTracks()){let t=n.getSettings();if(t&&t.width&&t.height){e=t.width/t.height;break}else e=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(e===void 0){for(let e=0;e<10;e++)yield;if(!this.isPlaying)break;continue}if(e===void 0){yield;continue}for(let t of this._targetObjects){let n=1;if(t.parent){let e=_t(t.parent);n=e.x/e.y}switch(this.aspectMode){case fo.AdjustHeight:t.scale.y=1/e*t.scale.x*n;break;case fo.AdjustWidth:t.scale.x=e*t.scale.y*n;break}}for(let e=0;e<3;e++)yield}}get shouldUseM3U(){return this.url!=null&&(this.url.endsWith(`.m3u8`)||this.url.endsWith(`.m3u`))&&this.source===po.Url}ensureM3UCanBePlayed(){if(!this.shouldUseM3U)return;let e=document.head.querySelector(`script[data-hls_library]`);e?globalThis.Hls?this.onHlsAvailable():e.addEventListener(`load`,this.onHlsAvailable):(X&&console.log(`HLS: load script`),e=document.createElement(`script`),e.dataset.hls_library=`hls.js`,e.src=`https://cdn.jsdelivr.net/npm/hls.js@1`,e.addEventListener(`load`,this.onHlsAvailable),document.head.append(e))}_hls;onHlsAvailable=()=>{X&&console.log(`HLS: available`,this.clip),!(!this.shouldUseM3U||!this.url)&&(this._hls||=new Hls,this.videoElement.autoplay=!0,this._hls.loadSource(this.url),this._hls.attachMedia(this.videoElement),this._videoElement?.play(),X&&console.log(`HLS: loaded`,this.clip))}};uo([A()],Z.prototype,`playOnAwake`,void 0),uo([A()],Z.prototype,`aspectMode`,void 0),uo([A(URL)],Z.prototype,`clip`,void 0),uo([A()],Z.prototype,`source`,void 0),uo([A(URL)],Z.prototype,`url`,null),uo([A()],Z.prototype,`renderMode`,void 0),uo([A()],Z.prototype,`targetMaterialProperty`,void 0),uo([A(Vn)],Z.prototype,`targetMaterialRenderer`,void 0),uo([A(ue)],Z.prototype,`targetTexture`,void 0),uo([A()],Z.prototype,`time`,void 0),uo([A()],Z.prototype,`playbackSpeed`,null),uo([A()],Z.prototype,`isLooping`,null),uo([A()],Z.prototype,`audioOutputMode`,null);var go=class{context;constructor(e){this.context=e,this._input=new _o(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;let t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){if(this._isInScreenspaceMode||this._videos.length<0)return;let e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=Ze.createPrimitive(et.Quad,{material:new vo(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}let t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();let n=t.material;n?.reset(),this._input?.enable(n)}stop(){this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&(this._input?.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){let e=this._screenspaceModeQuad?.material;e&&(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}_videos=[];_screenspaceModeQuad;_isInScreenspaceMode=!1;_input},_o=class{_onResizeScreenFn;_onKeyUpFn;_onMouseWheelFn;context;overlay;constructor(e){this.overlay=e,this.context=e.context}_material;enable(e){this._material=e,window.addEventListener(`resize`,this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener(`keyup`,this._onKeyUpFn=e=>{e.key===`Escape`&&this.overlay.stop()}),window.addEventListener(`wheel`,this._onMouseWheelFn=t=>{this.overlay.enabled&&(e.zoom+=t.deltaY*5e-4,t.preventDefault())},{passive:!1});let t=new b;window.addEventListener(`mousemove`,n=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){let r=new b(n.movementX,n.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener(`pointermove`,n=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(n.movementX,n.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let n=0;window.addEventListener(`touchstart`,e=>{if(e.touches.length<2){this.context.time.time-n<.3&&this.overlay.stop(),n=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener(`touchmove`,e=>{if(!this._isPinching||!this._material)return;let t=e.touches[0],n=e.touches[1],r=t.clientX-n.clientX,i=t.clientY-n.clientY,a=Math.sqrt(r*r+i*i);if(this._lastPinch!==0){let e=a-this._lastPinch;this._material.zoom-=e*.004}this._lastPinch=a}),window.addEventListener(`touchend`,()=>{this._isPinching=!1})}_isPinching=!1;_lastPinch=0;disable(){this._onResizeScreenFn&&=(window.removeEventListener(`resize`,this._onResizeScreenFn),void 0),this._onKeyUpFn&&=(window.removeEventListener(`keyup`,this._onKeyUpFn),void 0),this._onMouseWheelFn&&=(window.removeEventListener(`wheel`,this._onMouseWheelFn),void 0)}},vo=class extends ye{set screenAspect(e){this.uniforms.screenAspect.value=e,this.needsUpdate=!0}set offset(e){let t=this.uniforms.offsetScale.value;t.x=e.x,t.y=e.y,this.uniforms.offsetScale.value=t,this.needsUpdate=!0}_offset=new b;get offset(){let e=this.uniforms.offsetScale.value;return this._offset.set(e.x,e.y),this._offset}set zoom(e){let t=this.uniforms.offsetScale.value;e<.001&&(e=.001),t.z=e,this.needsUpdate=!0}get zoom(){return this.uniforms.offsetScale.value.z}reset(){this.offset=this.offset.set(0,0),this.zoom=1,this.needsUpdate=!0}constructor(e){super(),this.uniforms={map:{value:e},screenAspect:{value:1},offsetScale:{value:new pe(0,0,1,1)}},this.vertexShader=` + uniform sampler2D map; + uniform float screenAspect; + uniform vec4 offsetScale; + varying vec2 vUv; + + void main() { + + gl_Position = vec4( position , 1.0 ); + vUv = uv; + vUv.y = 1. - vUv.y; + + // fit into screen + ivec2 res = textureSize(map, 0); + float videoAspect = float(res.x) / float(res.y); + float aspect = videoAspect / screenAspect; + if(aspect >= 1.0) + { + vUv.y = vUv.y * aspect; + float offset = (1. - aspect) * .5; + vUv.y = vUv.y + offset; + } + else + { + vUv.x = vUv.x / aspect; + float offset = (1. - 1. / aspect) * .5; + vUv.x = vUv.x + offset; + } + + vUv.x -= .5; + vUv.y -= .5; + + vUv.x *= offsetScale.z; + vUv.y *= offsetScale.z; + vUv.x += offsetScale.x; + vUv.y += offsetScale.y; + + vUv.x += .5; + vUv.y += .5; + } + + `,this.fragmentShader=` + uniform sampler2D map; + varying vec2 vUv; + void main() { + if(vUv.x < 0. || vUv.x > 1. || vUv.y < 0. || vUv.y > 1.) + gl_FragColor = vec4(0., 0., 0., 1.); + else + { + vec4 texcolor = texture2D(map, vUv); + gl_FragColor = texcolor; + } + } + `}},yo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Q=N(`debugscreensharing`),bo;(function(e){e[e.Screen=0]=`Screen`,e[e.Camera=1]=`Camera`,e[e.Canvas=2]=`Canvas`,e[e.Microphone=3]=`Microphone`})(bo||={});var xo;(function(e){e[e.Idle=0]=`Idle`,e[e.Sending=1]=`Sending`,e[e.Receiving=2]=`Receiving`})(xo||={});var So=class extends R{allowStartOnClick=!0;onPointerEnter(){this.context.connection.allowEditing!=0&&this.allowStartOnClick&&this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.connection.allowEditing!=0&&this.allowStartOnClick&&this.context.input.unsetCursor(`pointer`)}onPointerClick(e){if(this.context.connection.allowEditing!=0&&this.allowStartOnClick&&!(e&&e.pointerId!==0)){if(this.isReceiving&&this.videoPlayer?.isPlaying){this.videoPlayer&&(this.videoPlayer.screenspace=!this.videoPlayer.screenspace);return}if(this.isSending){this.close();return}this.share()}}autoConnect=!1;set videoPlayer(e){this._videoPlayer&&(this.isSending||this.isReceiving)&&this._videoPlayer.stop(),this._videoPlayer=e,this._videoPlayer&&this._currentStream&&(this.isSending||this.isReceiving)&&this._videoPlayer.setVideo(this._currentStream)}get videoPlayer(){return this._videoPlayer}_videoPlayer;_audioSource;get screenspace(){return this.videoPlayer?.screenspace??!1}set screenspace(e){this.videoPlayer&&(this.videoPlayer.screenspace=e)}device=`Screen`;deviceName;deviceFilter;get currentScream(){return this._currentStream}get currentMode(){return this._currentMode}get isSending(){return this._currentStream?.active&&this._currentMode===xo.Sending}get isReceiving(){if(this._currentMode===xo.Receiving){if(!this._currentStream||this._currentStream.active===!1)return!1;let e=this._currentStream.getTracks();for(let t of e)if(t.readyState===`live`)return!0}return!1}get requiresVideoPlayer(){return this.device!==`Microphone`}_net;_requestOpen=!1;_currentStream=null;_currentMode=xo.Idle;awake(){typeof this.device==`number`&&(this.device=bo[this.device]),Q&&console.log(`Screensharing`,this.name,this),Kn.registerWaitForAllowAudio(()=>{this._videoPlayer&&this._currentStream&&this._currentMode===xo.Receiving&&(this._videoPlayer.playInBackground=!0,this._videoPlayer.setVideo(this._currentStream))}),this._net=new er(this)}onEnable(){this._net?.enable(),this._net?.addEventListener(dr.StreamReceived,this.onReceiveStream),this._net?.addEventListener(dr.StreamEnded,this.onCallEnded),this.context.connection.beginListen(P.JoinedRoom,this.onJoinedRoom),this.autoConnect&&zt(1e3).then(()=>(this.enabled&&this.autoConnect&&!this.isReceiving&&!this.isSending&&this.context.connection.isInRoom&&this.share(),0))}onDisable(){this._net?.removeEventListener(dr.StreamReceived,this.onReceiveStream),this._net?.removeEventListener(dr.StreamEnded,this.onCallEnded),this.context.connection.stopListen(P.JoinedRoom,this.onJoinedRoom),this._net?.disable(),this.close()}onJoinedRoom=async()=>{await zt(1e3),this.autoConnect&&!this.isSending&&!this.isReceiving&&this.context.connection.isInRoom&&this.share()};_ensureVideoPlayer(){let e=new Z;e.aspectMode=fo.AdjustWidth,F.addComponent(this.gameObject,e),this._videoPlayer=e}_activeShareRequest=null;async share(e){return this._activeShareRequest?this._activeShareRequest:(this._activeShareRequest=this.internalShare(e),this._activeShareRequest.then(()=>this._activeShareRequest=null))}async internalShare(e){if(this.context.connection.isInRoom===!1){console.warn(`Can not start screensharing: requires network connection`),w()&&Ht(`Can not start screensharing: requires network connection. Add a SyncedRoom component or join a room first.`);return}if(e?.device&&(this.device=e.device),!this.videoPlayer&&this.requiresVideoPlayer&&(this._videoPlayer||=F.getComponent(this.gameObject,Z)??void 0,this.videoPlayer||this._ensureVideoPlayer(),!this.videoPlayer)){console.warn(`Can not share video without a videoPlayer assigned`);return}this._requestOpen=!0;try{let t=e?.constraints??{echoCancellation:!0,autoGainControl:!1},n={video:t,audio:t},r=n.video;switch(r!==void 0&&typeof r!=`boolean`&&(r.width||={max:1920},r.height||={max:1920},r.aspectRatio||={ideal:1.7777777778},r.frameRate||={ideal:24},r.facingMode||={ideal:`user`}),this.device){case`Camera`:this.tryShareUserCamera(n,e);break;case`Screen`:{if(!navigator.mediaDevices.getDisplayMedia){console.error(`No getDisplayMedia support`);return}let e=await navigator.mediaDevices.getDisplayMedia(n);this._requestOpen?this.setStream(e,xo.Sending):nr(e)}break;case`Canvas`:let t=this.context.renderer.domElement.captureStream(0);this.setStream(t,xo.Sending);break;case`Microphone`:{if(!navigator.mediaDevices.getUserMedia){console.error(`No getDisplayMedia support`);return}n.video=!1;let e=await navigator.mediaDevices.getUserMedia(n);this._requestOpen?this.setStream(e,xo.Sending):nr(e)}break;default:console.error(`Can not start screen sharing: Unknown device type`,this.device)}}catch(e){if(e.name===`NotAllowedError`){console.log(`Selection cancelled`),this._requestOpen=!1;return}console.error(`Error opening video`,e)}}close(){this._requestOpen=!1,this._currentStream&&=(Q&&console.warn(`Close current stream / disposing resources, stream was active?`,this._currentStream.active),this._net?.stopSendingStream(this._currentStream),nr(this._currentStream),this._currentMode=xo.Idle,null)}setStream(e,t){if(e===this._currentStream||(this.close(),!e))return;this._currentStream=e,this._requestOpen=!0,this._currentMode=t;let n=this.device!==`Microphone`,r=t===xo.Sending;n?(this._videoPlayer||this._ensureVideoPlayer(),this._videoPlayer?this._videoPlayer.setVideo(e):console.error(`No video player assigned for video stream`)):(this._audioSource||(this._audioSource=new Kn,this._audioSource.spatialBlend=0,this._audioSource.volume=1,this.gameObject.addComponent(this._audioSource)),r||(Q&&console.log(`PLAY`,e.getAudioTracks()),this._audioSource.volume=1,this._audioSource?.play(e))),r&&this._net?.startSendingStream(e),r&&(this._videoPlayer&&(this._videoPlayer.muted=!0),this._audioSource?.stop());for(let t of e.getTracks())t.addEventListener(`ended`,()=>{Q&&console.log(`Track ended`,t),this.close()}),Q&&t.kind===`video`&&console.log(r?`Video →`:`Video ←`,t.getSettings())}onReceiveStream=e=>{e.stream?.active===!0&&this.setStream(e.stream,xo.Receiving)};onCallEnded=e=>{Q&&console.log(`CALL ENDED`,this.isReceiving,this?.screenspace),this.isReceiving&&(this.screenspace=!1)};async tryShareUserCamera(e,t){let n=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`videoinput`);Q&&console.log(`Request camera. These are your kind:videoinput devices: +`,n);let r=!1;for(let i of n)try{if(!this._requestOpen){Q&&console.log(`Camera selection cancelled`);break}if(i.kind!==`videoinput`){Q&&console.log(`Skipping non-video device`,i);continue}let n=i.deviceId;if(t?.deviceId!=null||t?.deviceFilter!=null){if(t?.deviceId!==void 0&&n!==t.deviceId){Q&&console.log(`Skipping device due to options.deviceId: `+i.label+`; `+i.deviceId);continue}if(t?.deviceFilter&&t.deviceFilter(i)===!1){Q&&console.log(`Skipping device due to options.deviceFilter: `+i.label+`; `+i.deviceId);continue}}else if(this.deviceFilter)if(this.deviceFilter(i)===!1){Q&&console.log(`Skipping device due to ScreenShare.deviceFilter: `+i.label+`; `+i.deviceId);continue}else Q&&console.log(`Selected device by filter`,i);else if(this.deviceName){let e=i.label.toLowerCase(),t=this.deviceName.toLowerCase(),n=e.includes(t),r=i.deviceId===this.deviceName;if(!n&&!r){Q&&console.log(`Skipping device due to ScreenShare.deviceName: `+i.label+`; `+i.deviceId);continue}else Q&&console.log(`Selected device by name`,i)}e.video!==!1&&((e.video===void 0||typeof e.video==`boolean`)&&(e.video={}),e.video.deviceId=n),r=!0;let a=await navigator.mediaDevices.getUserMedia(e).catch(e=>(console.error(`Failed to get user media`,e),null));if(a===null)continue;this._requestOpen?(this.setStream(a,xo.Sending),Q&&console.log(`Selected camera`,i)):(nr(a),Q&&console.log(`Camera selection cancelled`));break}catch(e){if(e.message===`Failed to allocate videosource`||e.message===`Could not start video source`){Ht(`Failed to start video: Try another camera (Code `+e.code+`)`),console.warn(e);continue}else console.error(`Failed to get user media`,e.message,e.code,e)}!r&&w()&&(Ht(`No camera found for sharing. Please connect a camera (see console for more information)`),console.warn(`No camera found for sharing. Please connect a camera`,n,this.deviceName,`Using deviceFilter? `+this.deviceFilter!=null,`Using options? `+t!=null,`Using deviceName? `+this.deviceName!=null,`Using options.deviceId? `+t?.deviceId!=null,`Using options.deviceFilter? `+t?.deviceFilter!=null))}};yo([A()],So.prototype,`allowStartOnClick`,void 0),yo([A()],So.prototype,`autoConnect`,void 0),yo([A(Z)],So.prototype,`videoPlayer`,null),yo([A()],So.prototype,`device`,void 0),yo([A()],So.prototype,`deviceName`,void 0);var Co=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wo=N(`debugseethrough`),To=0,Eo=class extends R{referencePoint=null;fadeDuration=.05;minAlpha=0;useAlphaHash=!0;set needsUpdate(e){this._needsUpdate=e}get needsUpdate(){return this._needsUpdate}overrideAlpha=-1;autoUpdate=!0;_referencePointVector=new n;_referencePointDir=new n;_distance=0;_renderer=null;_needsUpdate=!0;_id=To++;onEnable(){this._needsUpdate=!0,this._renderer=null}onDisable(){}update(){if(this._needsUpdate?(this._needsUpdate=!1,this._renderer=this.gameObject.getComponentsInChildren(Vn),this.updateDirection()):this.autoUpdate&&(this.context.time.frame+this._id)%20==0&&this.updateDirection(),!this.autoUpdate||!this.referencePoint)return;let e=this._referencePointDir.dot(this.context.mainCamera.worldForward)>.2;if(wo&&this.referencePoint){let t=this.gameObject.worldPosition;V.DrawArrow(z(t),t.sub(this._referencePointDir),e?16711680:65280),V.DrawWireSphere(this.referencePoint.worldPosition,.05,255)}e?this.updateAlpha(this.minAlpha,this.fadeDuration):this.updateAlpha(1,this.fadeDuration)}updateDirection(){this.referencePoint??=this.context.scene,this._referencePointVector.copy(this.gameObject.worldPosition.sub(this.referencePoint.worldPosition)),this._distance=this._referencePointVector.length(),this._referencePointDir.copy(this._referencePointVector).multiply(z(1,.5,1)).normalize()}updateAlpha(e,t=this.fadeDuration){this.overrideAlpha!==void 0&&this.overrideAlpha!==-1&&(e=this.overrideAlpha),this._renderer?.forEach(n=>{e<.9?n.gameObject.raycastAllowed=!1:n.gameObject.raycastAllowed=!0;let r=n.sharedMaterials;if(!r)return;let i=Sn.get(n.gameObject),a=i.getOverride(`opacity`)?.value??r[0].opacity??1,o=O.lerp(a,e,t<=0?1:this.context.time.deltaTime/t);o>=.99?o=1:o<=.01&&(o=0),i.setOverride(`alphaHash`,this.useAlphaHash),i.setOverride(`opacity`,o),i.setOverride(`transparent`,o>=.99999?!1:!this.useAlphaHash)})}};Co([A(y)],Eo.prototype,`referencePoint`,void 0),Co([A()],Eo.prototype,`fadeDuration`,void 0),Co([A()],Eo.prototype,`minAlpha`,void 0),Co([A()],Eo.prototype,`useAlphaHash`,void 0),Co([A()],Eo.prototype,`overrideAlpha`,void 0),Co([A()],Eo.prototype,`autoUpdate`,void 0);var Do=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Oo;(function(e){e[e.ShadowMask=0]=`ShadowMask`,e[e.Additive=1]=`Additive`,e[e.Occluder=2]=`Occluder`})(Oo||={});var ko=class extends R{mode=Oo.ShadowMask;shadowColor=new vt(0,0,0,1);targetMesh;start(){if(this.gameObject instanceof v)this.gameObject instanceof v&&this.gameObject.material&&(this.gameObject.material=this.gameObject.material.clone(),this.targetMesh=this.gameObject,this.targetMesh.receiveShadow=!0);else{let e=Ze.createPrimitive(et.Quad,{name:`ShadowCatcher`,material:new fe({color:10066329,roughness:1,metalness:0,transparent:!0})});e.receiveShadow=!0,e.geometry.rotateX(-Math.PI/2),this.gameObject.add(e),this.targetMesh=e}if(!this.targetMesh){console.warn(`ShadowCatcher: no mesh to apply shadow catching to. Groups are currently not supported.`);return}switch(this.targetMesh.layers.set(2),this.mode){case Oo.ShadowMask:this.applyShadowMaterial();break;case Oo.Additive:this.applyLightBlendMaterial();break;case Oo.Occluder:this.applyOccluderMaterial();break}}applyLightBlendMaterial(){if(!this.targetMesh)return;let e=this.targetMesh.material;e.blending=2,this.applyMaterialOptions(e),e.onBeforeCompile=e=>{e.fragmentShader=e.fragmentShader.replace(`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;`,`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + // diffuse-only lighting with overdrive to somewhat compensate + // for the loss of indirect lighting and to make it more visible. + vec3 direct = (reflectedLight.directDiffuse + reflectedLight.directSpecular) * 6.6; + float max = max(direct.r, max(direct.g, direct.b)); + + // early out - we're simply returning direct lighting and some alpha based on it so it can + // be blended onto the scene. + gl_FragColor = vec4(direct, max); + return; + `)},e.userData.isLightBlendMaterial=!0}applyShadowMaterial(){if(this.targetMesh)if(this.targetMesh.material.type!==`ShadowMaterial`){let e=new ge;e.color=this.shadowColor,e.opacity=this.shadowColor.alpha,this.applyMaterialOptions(e),this.targetMesh.material=e,e.userData.isShadowCatcherMaterial=!0}else{let e=this.targetMesh.material;e.color=this.shadowColor,e.opacity=this.shadowColor.alpha,this.applyMaterialOptions(e),e.userData.isShadowCatcherMaterial=!0}}applyOccluderMaterial(){if(this.targetMesh){let e=this.targetMesh.material;if(!e){let t=new m;this.targetMesh.material=t,e=t}e.depthWrite=!0,e.stencilWrite=!0,e.colorWrite=!1,this.gameObject.renderOrder=-100}}applyMaterialOptions(e){e&&(e.depthWrite=!1,e.stencilWrite=!1)}};Do([A()],ko.prototype,`mode`,void 0),Do([A(vt)],ko.prototype,`shadowColor`,void 0);var Ao=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jo=class e extends R{target=null;followFactor=.1;rotateFactor=.1;positionAxes=je.All;flipForward=!1;static _invertForward=new x().setFromAxisAngle(new n(0,1,0),Math.PI);_firstUpdate=!0;onBeforeRender(){this.updateNow(!1)}updateNow(t){if(!(!this.target||this.target===this.gameObject)){if(this.followFactor>0){let e=M(this.target),n=this._firstUpdate||t?1:O.clamp01(this.context.time.deltaTime*this.followFactor),r=this.worldPosition;this.positionAxes&je.X&&(r.x=O.lerp(r.x,e.x,n)),this.positionAxes&je.Y&&(r.y=O.lerp(r.y,e.y,n)),this.positionAxes&je.Z&&(r.z=O.lerp(r.z,e.z,n)),this.worldPosition=r}if(this.rotateFactor>0){let n=Xt(this.target);this.flipForward&&n.premultiply(e._invertForward);let r=this._firstUpdate||t?1:O.clamp01(this.context.time.deltaTime*this.rotateFactor);this.worldQuaternion=this.worldQuaternion.slerp(n,r)}this._firstUpdate=!1}}};Ao([A(y)],jo.prototype,`target`,void 0),Ao([A()],jo.prototype,`followFactor`,void 0),Ao([A()],jo.prototype,`rotateFactor`,void 0),Ao([A()],jo.prototype,`positionAxes`,void 0);var Mo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},No=N(`debugspatialtrigger`),Po=new r,Fo=new r;function Io(e,t){return Po.mask=e,Fo.mask=t,Po.test(Fo)}var Lo=class extends R{triggerMask=0;onEnter;onStay;onExit;start(){No&&console.log(this.name,this.triggerMask,this)}update(){this.currentIntersected.length=0;for(let e of Ro.triggers)Io(e.triggerMask,this.triggerMask)&&e.test(this.gameObject)&&this.currentIntersected.push(e);for(let e=this.lastIntersected.length-1;e>=0;e--){let t=this.lastIntersected[e];this.currentIntersected.indexOf(t)<0&&(this.onExitTrigger(t),this.lastIntersected.splice(e,1))}for(let e of this.currentIntersected)this.lastIntersected.indexOf(e)<0&&this.onEnterTrigger(e),this.onStayTrigger(e);this.lastIntersected.length=0,this.lastIntersected.push(...this.currentIntersected)}currentIntersected=[];lastIntersected=[];onEnterTrigger(e){No&&console.log(`ENTER TRIGGER`,this.name,e.name,this,e),e.raiseOnEnterEvent(this),this.onEnter?.invoke()}onExitTrigger(e){No&&console.log(`EXIT TRIGGER`,this.name,e.name),e.raiseOnExitEvent(this),this.onExit?.invoke()}onStayTrigger(e){e.raiseOnStayEvent(this),this.onStay?.invoke()}};Mo([A()],Lo.prototype,`triggerMask`,void 0),Mo([A(k)],Lo.prototype,`onEnter`,void 0),Mo([A(k)],Lo.prototype,`onStay`,void 0),Mo([A(k)],Lo.prototype,`onExit`,void 0);var Ro=class e extends R{static triggers=[];triggerMask;boxHelper;start(){No&&console.log(this.name,this.triggerMask,this)}onEnable(){e.triggers.push(this),this.boxHelper||(this.boxHelper=F.addComponent(this.gameObject,Di),this.boxHelper?.showHelper(null,No))}onDisable(){e.triggers.splice(e.triggers.indexOf(this),1)}test(e){return this.boxHelper?this.boxHelper.isInBox(e)??!1:!1}raiseOnEnterEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onEnterTrigger(this)},!1)}raiseOnStayEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onStayTrigger(this)},!1)}raiseOnExitEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onExitTrigger(this)},!1)}};Mo([A()],Ro.prototype,`triggerMask`,void 0);var zo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Bo;(function(e){e[e.FirstPerson=0]=`FirstPerson`,e[e.ThirdPerson=1]=`ThirdPerson`})(Bo||={});var Vo=N(`debugspectator`),Ho=class extends R{cam=null;useKeys=!0;_mode=Bo.FirstPerson;get mode(){return this._mode}set mode(e){this._mode=e}get isSpectating(){return this._handler?.currentTarget!==void 0}isSpectatingUser(e){return this.target?.userId===e}isFollowedBy(e){return this.followers?.includes(e)}get followers(){return this._networking.followers}stopSpectating(){if(this.context.isInXR){this.followSelf();return}this.target=void 0}get localId(){return this.context.connection.connectionId??`local`}set target(e){if(this._handler){let t=this._handler.currentTarget?.userId,n=this.context.players.getPlayerView(this.localId);e===void 0||this.context.isInXR===!1&&n?.currentObject===e.currentObject?this._handler.currentTarget!==void 0&&(this._handler.disable(),F.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._networking.onSpectatedObjectChanged(e,t)):this._handler.currentTarget!==e&&(this._handler.set(e),F.setActive(this.gameObject,!0),this.orbit&&(this.orbit.enabled=!1),this._networking.onSpectatedObjectChanged(e,t))}}get target(){return this._handler?.currentTarget}requestAllFollowMe(){this._networking.onRequestFollowMe()}get isSpectatingSelf(){return this.isSpectating&&this.target?.currentObject===this.context.players.getPlayerView(this.localId)?.currentObject}orbit=null;_handler;eventSub_WebXRRequestStartEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;_debug;_networking;awake(){if(this._debug=new Go(this.context,this),this._networking=new Jo(this.context,this),this._networking.awake(),F.setActive(this.gameObject,!1),this.cam=F.getComponent(this.gameObject,Ne),!this.cam){console.warn(`SpectatorCamera: Spectator camera needs camera component on the same object.`,this);return}!this._handler&&this.cam&&(this._handler=new Uo(this.context,this.cam,this)),this.orbit=F.getComponent(this.context.mainCamera,Le)}onDestroy(){this.stopSpectating(),this._handler?.destroy(),this._networking?.destroy()}isSupportedPlatform(){let e=window.navigator.userAgent,t=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return yt.isDesktop()&&!yt.isMobileDevice()&&!t}onBeforeXR(e){this.isSupportedPlatform()&&F.setActive(this.gameObject,!0)}onEnterXR(e){this.isSupportedPlatform()&&(Vo&&console.log(this.context.mainCamera),this.context.mainCamera&&this.followSelf())}onLeaveXR(e){this.context.removeCamera(this.cam),F.setActive(this.gameObject,!1),this._handler?.set(void 0),this._handler?.disable(),this.isSpectatingSelf&&this.stopSpectating(),this.orbit&&(this.orbit.enabled=!0)}followSelf(){this.target=this.context.players.getPlayerView(this.context.connection.connectionId),this.target||=(this.context.players.setPlayerView(this.localId,this.context.mainCamera,qt.Headset),this.context.players.getPlayerView(this.localId)),Vo&&console.log(`Follow self`,this.target)}onAfterRender(){if(!this.cam)return;let e=this.context.renderer,n=e.xr.enabled;if(!e.xr.isPresenting&&!this._handler?.currentTarget)return;this._handler?.update(this._mode);let r=e.getRenderTarget(),i=null,a=e.state;if(!r||r.isXRRenderTarget===!0){if(!e.state.bindFramebuffer||!a.bindXRFramebuffer)return;i=e._framebuffer,a.bindXRFramebuffer(null)}this.setAvatarFlagsBeforeRender();let o=this.context.mainCameraComponent;if(o){let t=o.backgroundColor;t&&e.setClearColor(t,t.alpha),this.cam.backgroundColor=t,this.cam.clearFlags=o.clearFlags,this.cam.nearClipPlane=o.nearClipPlane,this.cam.farClipPlane=o.farClipPlane}else e.setClearColor(new t(1,1,1));e.setRenderTarget(null),e.xr.enabled=!1;let s=this.cam?.threeCamera;this.context.updateAspect(s);let c=e.xr.isPresenting;e.xr.isPresenting=!1,e.setSize(this.context.domWidth,this.context.domHeight),e.render(this.context.scene,s),e.xr.isPresenting=c,e.xr.enabled=n,r?e.setRenderTarget(r):a.bindXRFramebuffer&&a.bindXRFramebuffer(i),this.resetAvatarFlags()}setAvatarFlagsBeforeRender(){let e=this._mode===Bo.FirstPerson;for(let t of Yn.instances)if(t.avatar&&`isLocalAvatar`in t.avatar&&`flags`in t.avatar){let n=Rn.All;this.isSpectatingSelf&&(n=e&&t.avatar.isLocalAvatar?Rn.FirstPerson:Rn.ThirdPerson);let r=t.avatar.flags;if(!r)continue;for(let e of r)e.UpdateVisible(n)}}resetAvatarFlags(){for(let e of Yn.instances)if(e.avatar&&`flags`in e.avatar){let t=e.avatar.flags;if(!t)continue;for(let n of t)`isLocalAvatar`in e.avatar&&e.avatar?.isLocalAvatar?n.UpdateVisible(Rn.FirstPerson):n.UpdateVisible(Rn.ThirdPerson)}}};zo([A()],Ho.prototype,`useKeys`,void 0);var Uo=class{context;cam;spectator;follow;target;view;currentObject;get currentTarget(){return this.view}constructor(e,t,n){this.context=e,this.cam=t,this.spectator=n}set(e){let t=e?.currentObject;if(!t){this.spectator.stopSpectating();return}t!==this.currentObject&&(this.currentObject=t,this.view=e,this.follow||=F.addComponent(this.cam.gameObject,jo),this.target||=new y,t.add(this.target),this.follow.enabled=!0,this.follow.target=this.target,Vo&&console.log(`FOLLOW`,t),this.context.isInXR?this.context.removeCamera(this.cam):this.context.setCurrentCamera(this.cam))}disable(){Vo&&console.log(`STOP FOLLOW`,this.currentObject),this.view=void 0,this.currentObject=void 0,this.context.removeCamera(this.cam),this.follow&&(this.follow.enabled=!1)}destroy(){this.target?.removeFromParent(),this.follow&&F.destroy(this.follow)}update(e){if(this.currentTarget?.isConnected===!1||this.currentTarget?.removed===!0){Vo&&console.log(`Target disconnected or timeout`,this.currentTarget),this.spectator.stopSpectating();return}this.currentTarget&&this.currentTarget?.currentObject!==this.currentObject&&(Vo&&console.log(`Target changed`,this.currentObject,`to`,this.currentTarget.currentObject),this.set(this.currentTarget));let t=this.context.mainCamera;if(t){let e=this.cam.threeCamera;(e.near!==t.near||e.far!==t.far)&&(e.near=t.near,e.far=t.far,e.updateProjectionMatrix())}let n=this.follow?.target;if(!(!n||!this.follow)){switch(e){case Bo.FirstPerson:this.view?.viewDevice===qt.Browser?(this.follow.followFactor=50,this.follow.rotateFactor=50):(this.follow.followFactor=5,this.follow.rotateFactor=5),n.position.set(0,0,0);break;case Bo.ThirdPerson:this.follow.followFactor=3,this.follow.rotateFactor=2,n.position.set(0,.5,1.5);break}this.follow.flipForward=!1,this.view?.viewDevice===qt.Browser?n.quaternion.identity():n.quaternion.copy(Wo)}}},Wo=new x().setFromAxisAngle(new n(0,1,0),Math.PI),Go=class{context;spectator;constructor(e,t){this.context=e,this.spectator=t,console.log(`[Spectator Camera] Click other avatars or cameras to follow them. Press ESC to exit spectator mode.`),this.context.domElement.addEventListener(`keydown`,e=>{this.spectator.useKeys&&e.key===`Escape`&&this.spectator.stopSpectating()});let n=0;this.context.input.addEventListener(Ie.PointerDown,e=>{n=this.context.time.time}),this.context.input.addEventListener(Ie.PointerUp,e=>{let t=this.context.time.time-n;t>1?this.spectator.stopSpectating():this.context.input.getPointerClicked(0)&&t<.3&&this.trySelectObject()})}trySelectObject(){let e=new Gt;e.setMask(16777215);let t=this.context.physics.raycast(e);if(Vo&&console.log(...t),t?.length)for(let e of t){if(e.distance<.2)continue;let t=e.object,n=qn.getFor(t),r=n?.owner;if(r||=F.getComponentInParent(t,Yn)?.connectionId,r){let e=this.context.players.getPlayerView(r);this.spectator.target=e,Vo&&console.log(`spectate`,r,n);break}}}},Ko=class{guid;dontSave=!0;targetUserId;stoppedFollowing;constructor(e,t,n){this.guid=e,this.targetUserId=t,this.stoppedFollowing=n}},qo=class{guid;userId;constructor(e,t){this.guid=e.guid,this.userId=t}},Jo=class{followers=[];context;spectator;_followerEventMethod;_requestFollowMethod;_joinedRoomMethod;constructor(e,t){this.context=e,this.spectator=t,this._followerEventMethod=this.onFollowerEvent.bind(this),this._requestFollowMethod=this.onRequestFollowEvent.bind(this),this._joinedRoomMethod=this.onUserJoinedRoom.bind(this)}awake(){this.context.connection.beginListen(`spectator-follower-changed`,this._followerEventMethod),this.context.connection.beginListen(`spectator-request-follow`,this._requestFollowMethod),this.context.connection.beginListen(P.JoinedRoom,this._joinedRoomMethod),this.context.domElement.addEventListener(`keydown`,e=>{this.spectator.useKeys&&(e.key===`f`?this.onRequestFollowMe():e.key===`Escape`&&this.onRequestFollowMe(!0))})}destroy(){this.context.connection.stopListen(`spectator-follower-changed`,this._followerEventMethod),this.context.connection.stopListen(`spectator-request-follow`,this._requestFollowMethod),this.context.connection.stopListen(P.JoinedRoom,this._joinedRoomMethod)}onSpectatedObjectChanged(e,t){if(Vo&&console.log(this.context.connection.connectionId,`onSpectatedObjectChanged`,e,t),this.context.connection.connectionId){let n=e?.userId===void 0,r=n?t:e?.userId,i=new Ko(this.context.connection.connectionId,r,n);this.context.connection.send(`spectator-follower-changed`,i)}}onRequestFollowMe(e=!1){if(Vo&&console.log(`Request follow`,this.context.connection.connectionId),this.context.connection.connectionId){this.spectator.stopSpectating();let t=e?void 0:this.context.connection.connectionId,n=new qo(this.spectator,t);this.context.connection.send(`spectator-request-follow`,n)}}onUserJoinedRoom(){N(`followme`)&&this.onRequestFollowMe()}onFollowerEvent(e){let t=e.targetUserId,n=e.guid;if(Vo&&console.log(e),t===this.context.connection.connectionId)if(e.stoppedFollowing){let e=this.followers.indexOf(n);e!==-1&&(this.followers.splice(e,1),this.removeDisconnectedFollowers(),console.log(n,`unfollows you`,this.followers.length))}else this.followers.includes(n)||(this.followers.push(n),this.removeDisconnectedFollowers(),console.log(n,`follows you`,this.followers.length))}removeDisconnectedFollowers(){for(let e=this.followers.length-1;e>=0;e--){let t=this.followers[e];this.context.connection.userIsInRoom(t)===!1&&this.followers.splice(e,1)}}_lastRequestFollowUser;onRequestFollowEvent(e){if(this._lastRequestFollowUser=e,e.userId===this.context.connection.connectionId)this.spectator.stopSpectating();else if(e.userId===void 0)this.spectator.stopSpectating();else{let t=this.context.players.getPlayerView(e.userId);if(t)this.spectator.target=t;else return Vo&&console.warn(`Could not find view`,e.userId),this.enforceFollow(),!1}return!0}_enforceFollowInterval;enforceFollow(){this._enforceFollowInterval||=setInterval(()=>{this._lastRequestFollowUser===void 0||this._lastRequestFollowUser.userId&&this.spectator.isFollowedBy(this._lastRequestFollowUser.userId)?(clearInterval(this._enforceFollowInterval),this._enforceFollowInterval=void 0):(Vo&&console.log(`REQUEST FOLLOW AGAIN`,this._lastRequestFollowUser.userId),this.onRequestFollowEvent(this._lastRequestFollowUser))},1e3)}},Yo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Xo=N(`debugsplines`),Zo=class{position=new n;rotation=new x;tangentIn=new n;tangentOut=new n};Yo([j(n)],Zo.prototype,`position`,void 0),Yo([j(x)],Zo.prototype,`rotation`,void 0),Yo([j(n)],Zo.prototype,`tangentIn`,void 0),Yo([j(n)],Zo.prototype,`tangentOut`,void 0);var Qo=class extends R{addKnot(e){if(e instanceof Zo)this.spline.push(e),this._isDirty=!0;else{let t=new Zo;t.position.copy(e.position),this.spline.push(t),this._isDirty=!0}return this}removeKnot(e){if(typeof e==`number`)this.spline.splice(e,1),this._isDirty=!0;else{let t=this.spline.indexOf(e);t!==-1&&(this.spline.splice(t,1),this._isDirty=!0)}return this}getPointAt(e,t){if(!this.curve)return new n;let r=this.curve.getPointAt(O.clamp01(e),t),i=this.gameObject.matrixWorld??void 0;return i&&r.applyMatrix4(i),r}markDirty(){this._isDirty=!0}getTangentAt(e,t){if(!this.curve)return t??new n;let r=this.gameObject.worldQuaternion;return this.curve.getTangentAt(O.clamp01(e),t).applyQuaternion(r)}set closed(e){this._closed=e,this._isDirty=!0}get closed(){return this._closed}_closed=!1;spline=[];set debug(e){e&&!this._builtCurve&&this.buildCurve(),this._debugLine&&(this._debugLine.visible=e)}get curve(){return this._curve}get isDirty(){return this._isDirty}_isDirty=!1;_curve=null;_builtCurve=!1;_debugLine=null;awake(){Xo&&(console.log(`[Spline] ${this.name}`,this),this.buildCurve())}update(){this._isDirty&&this.buildCurve(!0),this._debugLine&&this._debugLine.parent!==this.gameObject&&this.gameObject.add(this._debugLine)}buildCurve(e=!1){if(!(this._builtCurve&&!e)){if(this._builtCurve=!0,!this.spline){console.error(`[Spline] Can not build curve, no spline data`,this.name);return}this._isDirty=!1,this._curve=$o(this.spline,this.closed),this.buildDebugCurve()}}buildDebugCurve(){if(Xo&&this.spline&&this._curve){this._debugLine?.removeFromParent(),this._debugLine=null;let e=new u({color:6684927}),t=this.spline.length*10,n=this._curve.getPoints(t);this._debugLine=new me(new h().setFromPoints(n),e),this.gameObject?.add(this._debugLine)}}};Yo([j()],Qo.prototype,`closed`,null),Yo([j(Zo)],Qo.prototype,`spline`,void 0);function $o(e,t){let r=e.map(e=>new n(-e.position.x,e.position.y,e.position.z));r.length===1&&r.push(r[0]);let a=e.reduce((e,t)=>e+Math.abs(t.tangentOut.x)+Math.abs(t.tangentOut.y)+Math.abs(t.tangentOut.z),0)/e.length;return new i(r,t,`catmullrom`,O.clamp(O.remap(a,0,.3,0,.5),0,1))}var es=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ts=class extends R{spline=null;object=void 0;useLookAt=!0;lookAt=null;clamp=!1;get position01(){return this._position01}set position01(e){this._position01=e,this._needsUpdate=!0}reset(){this._position01=0}autoRun=!0;duration=10;pullStrength=1;_position01=0;_needsUpdate=!1;start(){this.object===void 0&&(this.object=this.gameObject),this.updateFromPosition()}onEnable(){window.addEventListener(`pointerdown`,this.onUserInput,{passive:!0}),this.context.domElement.addEventListener(`wheel`,this.onUserInput,{passive:!0})}onDisable(){window.removeEventListener(`pointerdown`,this.onUserInput),this.context.domElement.removeEventListener(`wheel`,this.onUserInput)}onUserInput=()=>{this.object?.contains(this.context.mainCamera)&&(this._needsUpdate=!1,this._performedUpdates+=999)};update(){this.autoRun&&(this._needsUpdate=!0,this._position01+=this.context.time.deltaTime/this.duration),this._needsUpdate&&(this._needsUpdate=!1,this.updateFromPosition())}updateFromPosition(){if(!this.spline||!this.spline.curve||!this.object)return;this.clamp?this._position01=O.clamp01(this._position01):this._position01%=1;let e=this._position01>=1?1:this._position01%1,t=this.spline.getPointAt(e);if(this.pullStrength>=1)this.object.worldPosition=t;else if(this._position01!==this._lastPosition01&&(this._performedUpdates=0),this._requiredUpdates=Math.round(100/this.pullStrength),this._performedUpdates=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},is=`SCAM`;Zt(is,ns.getRootAsSyncedCameraModel);var as=new tn,os=class{userId;guid;constructor(e,t){this.guid=t,this.userId=e}send(e,t){if(e){as.clear();let n=as.createString(this.guid),r=as.createString(this.userId);ns.startSyncedCameraModel(as),ns.addGuid(as,n),ns.addUserId(as,r);let i=M(e),a=rn(e);ns.addPos(as,ct.createVec3(as,i.x,i.y,i.z)),ns.addRot(as,ct.createVec3(as,a.x,a.y,a.z));let o=ns.endSyncedCameraModel(as);as.finish(o,is),t.sendBinary(as.asUint8Array())}}},ss=class e extends R{static instances=[];getCameraObject(e){let t=this.userToCamMap[e];return t?this.remoteCams[t].obj:null}cameraPrefab=null;_lastWorldPosition;_lastWorldQuaternion;_model=null;_needsUpdate=!0;_lastUpdateTime=0;remoteCams={};userToCamMap={};_camTimeoutInSeconds=10;_receiveCallback=null;async awake(){this._lastWorldPosition=this.worldPosition.clone(),this._lastWorldQuaternion=this.worldQuaternion.clone(),this.cameraPrefab&&(`uri`in this.cameraPrefab&&(this.cameraPrefab=await this.cameraPrefab.instantiate(this.gameObject)),this.cameraPrefab&&`isObject3D`in this.cameraPrefab&&(this.cameraPrefab.visible=!1))}onEnable(){this._receiveCallback=this.context.connection.beginListenBinary(is,this.onReceivedRemoteCameraInfoBin.bind(this))}onDisable(){this.context.connection.stopListenBinary(is,this._receiveCallback)}update(){for(let t in this.remoteCams){let n=this.remoteCams[t],r=this.context.time.realtimeSinceStartup-n.lastUpdate;if(!n||r>this._camTimeoutInSeconds){w()&&console.log(`Remote cam timeout`,t),n?.obj&&F.destroy(n.obj),delete this.remoteCams[t],n&&delete this.userToCamMap[n.userId],e.instances.push(n),this.context.players.removePlayerView(n.userId,qt.Browser);continue}}if(this.context.isInXR)return;let t=this.context.mainCamera;if(t===null){this.enabled=!1;return}if(!this.context.connection.isConnected||this.context.connection.connectionId===null)return;this._model===null&&(this._model=new os(this.context.connection.connectionId,this.context.connection.connectionId+`_camera`));let n=M(t),r=Xt(t);(n.distanceTo(this._lastWorldPosition)>.001||r.angleTo(this._lastWorldQuaternion)>.01)&&(this._needsUpdate=!0),this._lastWorldPosition.copy(n),this._lastWorldQuaternion.copy(r),!((!this._needsUpdate||this.context.time.frameCount%2!=0)&&!(this.context.time.realtimeSinceStartup-this._lastUpdateTime>this._camTimeoutInSeconds*.5))&&(this._lastUpdateTime=this.context.time.realtimeSinceStartup,this._needsUpdate=!1,this._model.send(t,this.context.connection),this.context.isInXR||this.context.players.setPlayerView(this.context.connection.connectionId,t,qt.Browser))}onReceivedRemoteCameraInfoBin(t){let n=t.guid();if(!n)return;let r=t.userId();if(!r||!this.context.connection.userIsInRoom(r)||!this.cameraPrefab)return;let i=this.remoteCams[n];if(!i)if(`isObject3D`in this.cameraPrefab){let t=new nt;t.context=this.context;let a=F.instantiate(this.cameraPrefab,t);i=this.remoteCams[n]={obj:a,lastUpdate:this.context.time.realtimeSinceStartup,userId:r},i.obj.visible=!0,this.gameObject.add(a),this.userToCamMap[r]=n,e.instances.push(i);let o=F.getOrAddComponent(a,Yn);o.connectionId=r,o.avatar=a}else return;let a=i.obj;this.context.players.setPlayerView(r,a,qt.Browser),i.lastUpdate=this.context.time.realtimeSinceStartup,qe.markDirty(a);let o=t.pos();o&&kt(a,o.x(),o.y(),o.z());let s=t.rot();s&&Be(a,s.x(),s.y(),s.z())}};rs([A([y,Me])],ss.prototype,`cameraPrefab`,void 0);var cs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ls=`view`,us=N(`debugsyncedroom`),ds=class extends R{roomName=``;urlParameterName=`room`;joinRandomRoom;requireRoomParameter=!1;autoRejoin=!0;createJoinButton=!0;createViewOnlyButton=!1;get currentRoomName(){return N(ls)||N(this.urlParameterName)}_lastJoinedRoom;set roomPrefix(e){this._roomPrefix=e}get roomPrefix(){return this._roomPrefix}_roomPrefix=``;awake(){this.joinRandomRoom===void 0&&this.roomName?.length<=0&&(this.joinRandomRoom=!0),us&&console.log(`SyncedRoom roomName:${this.roomName}, urlParamName:${this.urlParameterName}, joinRandomRoom:${this.joinRandomRoom}`)}onEnable(){let e=N(ls);if(e&&typeof e==`string`&&e.length>0){console.log(`Join as viewer`),this.context.connection.joinRoom(e,!0);return}if(this.tryJoinRoom(),this.createJoinButton){let e=this.createRoomButton();this.context.menu.appendChild(e)}this.createViewOnlyButton&&this.onEnableViewOnlyButton()}onDisable(){this._roomButton?.remove(),this.onDisableViewOnlyButton(),this.roomName&&this.roomName.length>0&&this.context.connection.leaveRoom(this.roomName)}onDestroy(){this.destroyRoomButton()}tryJoinRandomRoom(){this.setRandomRoomUrlParameter(),this.tryJoinRoom()}tryJoinRoom(e=0){e===void 0&&(e=0);let t=!1;if(this.urlParameterName?.length>0){let n=N(this.urlParameterName);if(n&&(typeof n==`string`||typeof n==`number`))t=!0,this.roomName=Xe(n.toString());else if(this.joinRandomRoom&&(console.debug(`No room name found in url, generating random one`),this.setRandomRoomUrlParameter(),e<1))return this.tryJoinRoom(e+1)}else this.joinRandomRoom&&(this.roomName===null||this.roomName===void 0||this.roomName.length<=0)&&(this.roomName=this.generateRoomName());return this.requireRoomParameter&&!t?((us||w())&&console.warn(`[SyncedRoom] Missing required room parameter "`+this.urlParameterName+`" in url - will not connect. +To allow joining a room without a query parameter you can set "requireRoomParameter" to false.`),!1):(this.context.connection.isConnected||this.context.connection.connect(),this._lastJoinedRoom=this.roomName,this._roomPrefix&&(this.roomName=this._roomPrefix+this.roomName),this.roomName.length<=0?(console.warn(`[SyncedRoom] Room name is not set so we can not join a networked room. +Please choose one of the following options to fix this: +A) Set a room name in the SyncedRoom component +B) Set a room name in the URL parameter "?`+this.urlParameterName+`=my_room" +C) Set "joinRandomRoom" to true`),!1):(us&&console.log(`Join `+this.roomName),this._userWantsToBeInARoom=!0,this.context.connection.joinRoom(this.roomName),!0))}_lastPingTime=0;_lastRoomTime=-1;_userWantsToBeInARoom=!1;update(){this.context.connection.isConnected&&(this.context.time.time-this._lastPingTime>3&&(this._lastPingTime=this.context.time.time,this.context.connection.sendPing()),this.context.connection.isInRoom&&(this._lastRoomTime=this.context.time.time)),this._lastRoomTime>0&&this.context.time.time-this._lastRoomTime>.3&&(this._lastRoomTime=-1,this.autoRejoin?this._userWantsToBeInARoom&&(console.log(`Disconnected from networking backend - attempt reconnecting now`),this.tryJoinRoom()):w()&&console.warn(`You are not connected to a room anymore (possibly because the tab was inactive for too long and the server kicked you?)`))}getViewOnlyUrl(){if(this.context.connection.isConnected&&this.context.connection.currentRoomViewId){let e=window.location.search,t=new URLSearchParams(e);return t.has(this.urlParameterName)&&t.delete(this.urlParameterName),t.set(ls,this.context.connection.currentRoomViewId),window.location.origin+window.location.pathname+`?`+t.toString()}return null}setRandomRoomUrlParameter(){let e=Yt(),t=this.generateRoomName();N(this.urlParameterName)?e.set(this.urlParameterName,t):e.append(this.urlParameterName,t),Ge(t,e)}generateRoomName(){let e=``;for(let t=0;t<6;t++)e+=Math.floor(Math.random()*10).toFixed(0);return e}_roomButton;_roomButtonIconJoin;_roomButtonIconLeave;createRoomButton(){if(this._roomButton)return this._roomButton;let e=document.createElement(`button`);return this._roomButton=e,e.classList.add(`create-room-button`),e.setAttribute(`priority`,`90`),e.onclick=()=>{if(this.context.connection.isInRoom)this.urlParameterName&&Ve(this.urlParameterName,null),this.context.connection.leaveRoom(),this._userWantsToBeInARoom=!1;else{if(this.urlParameterName){let e=N(this.urlParameterName);(!e||e===!0)&&(this._lastJoinedRoom?Ve(this.urlParameterName,this._lastJoinedRoom):this.setRandomRoomUrlParameter())}this.tryJoinRoom()}},this._roomButtonIconJoin=ke(`group`),this._roomButtonIconLeave=ke(`group_off`),this.updateRoomButtonState(),this.context.connection.beginListen(P.JoinedRoom,this.updateRoomButtonState),this.context.connection.beginListen(P.LeftRoom,this.updateRoomButtonState),e}updateRoomButtonState=()=>{this._roomButton&&(this.context.connection.isInRoom?(this._roomButton.title=`Leave the networked room`,this._roomButton.textContent=`Leave Room`,this._roomButtonIconJoin?.remove(),this._roomButton.prepend(this._roomButtonIconLeave)):(this._roomButton.title=`Create or join a networked room`,this._roomButton.textContent=`Join Room`,this._roomButtonIconLeave?.remove(),this._roomButton.prepend(this._roomButtonIconJoin)))};destroyRoomButton(){this.context.connection.stopListen(P.JoinedRoom,this.updateRoomButtonState),this.context.connection.stopListen(P.LeftRoom,this.updateRoomButtonState)}_viewOnlyButton;onEnableViewOnlyButton(){this.context.connection.isConnected?this.onCreateViewOnlyButton():(this.context.connection.stopListen(P.JoinedRoom,this.onCreateViewOnlyButton),this.context.connection.beginListen(P.JoinedRoom,this.onCreateViewOnlyButton))}onDisableViewOnlyButton(){this.context.connection.stopListen(P.JoinedRoom,this.onCreateViewOnlyButton),this._viewOnlyButton?.remove()}onCreateViewOnlyButton=()=>{if(!this._viewOnlyButton){let e=document.createElement(`button`);this._viewOnlyButton=e,e.classList.add(`view-only-button`),e.setAttribute(`priority`,`90`),e.onclick=()=>{let e=this.getViewOnlyUrl();e?.length?navigator.canShare({url:e})?navigator.share({url:e})?.catch(e=>{console.warn(e)}):(navigator.clipboard.writeText(e),It(`View only URL copied to clipboard`)):Ht(`Could not create view only URL`)},e.title=`Copy the view only URL: A page accessed by the view only URL can not be modified by visiting users.`,e.textContent=`Share View URL`,e.prepend(ke(`visibility`))}this.context.menu.appendChild(this._viewOnlyButton)}};cs([A()],ds.prototype,`roomName`,void 0),cs([A()],ds.prototype,`urlParameterName`,void 0),cs([A()],ds.prototype,`joinRandomRoom`,void 0),cs([A()],ds.prototype,`requireRoomParameter`,void 0),cs([A()],ds.prototype,`autoRejoin`,void 0),cs([A()],ds.prototype,`createJoinButton`,void 0),cs([A()],ds.prototype,`createViewOnlyButton`,void 0),cs([A()],ds.prototype,`roomPrefix`,null);function fs(){let e=N(`testwindowcount`)||0;e&&e>0&&ps(e)}function ps(e){if(N(`testwindow`))return null;let t=new URL(window.location.href);$e(t.searchParams,cn,1),$e(t.searchParams,`testwindow`,1);let n=t.toString(),r=[];window.onbeforeunload=()=>{for(let e of r)e.close()};let i=.05,a=0,o=0;for(let t=0;t=window.innerWidth&&(o+=1,a=0);let e=a*(128*(1+i))+window.screenLeft,s=o*(128*(1+i))+window.screenTop+90+60*o;a+=1;let c=window.open(n,`test window `+t,`popup=yes width=128 height=128 top=${s} left=${e}`);if(!c){console.warn(`Failed to open window`);continue}r.push(c),c.onload=()=>{c.onbeforeunload=()=>{for(let e=0;e{});else{this.models=[];for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vs=class extends R{isGizmo=!1;translationSnap=1;rotationSnapAngle=15;scaleSnap=.25;get control(){return this._control}_control;orbit;onEnable(){if(!(this.isGizmo&&!Lt)&&this.context.mainCamera&&(this._control||(this._control=new sn(this.context.mainCamera,this.context.renderer.domElement),this._control.enabled=!0,this._control.getRaycaster().layers.set(2),this._control.size=1,(`_root`in this._control?this._control._root:this._control).traverse(e=>{let t=e;if(t.layers.set(2),t){let e=t.material;e&&(e.opacity=.3)}}),this.orbit=F.getComponentInParent(this.context.mainCamera,Le)??void 0),this._control)){let e=this._control.getHelper();this.context.scene.add(e),this._control.attach(this.gameObject),this._control?.addEventListener(`dragging-changed`,this.onControlChangedEvent),window.addEventListener(`keydown`,this.windowKeyDownListener),window.addEventListener(`keyup`,this.windowKeyUpListener)}}onDisable(){this._control?.getHelper()?.removeFromParent(),this._control?.removeEventListener(`dragging-changed`,this.onControlChangedEvent),window.removeEventListener(`keydown`,this.windowKeyDownListener),window.removeEventListener(`keyup`,this.windowKeyUpListener)}enableSnapping(){this._control&&(this._control.setTranslationSnap(this.translationSnap),this._control.setRotationSnap(o.degToRad(this.rotationSnapAngle)),this._control.setScaleSnap(this.scaleSnap))}disableSnapping(){this._control&&(this._control.setTranslationSnap(null),this._control.setRotationSnap(null),this._control.setScaleSnap(null))}onControlChangedEvent=e=>{let t=this.orbit;if(t&&(t.enabled=!e.value),e.value){let e=this.gameObject.getComponentInParent(rt);e&&(e.fastMode=!0,e.requestOwnership())}else{let e=this.gameObject.getComponentInParent(rt);e&&(e.fastMode=!1)}};windowKeyDownListener=e=>{if(this.enabled&&this._control)switch(e.keyCode){case 81:this._control.setSpace(this._control.space===`local`?`world`:`local`);break;case 16:this.enableSnapping();break;case 87:this._control.setMode(`translate`);break;case 69:this._control.setMode(`rotate`);break;case 82:this._control.setMode(`scale`);break;case 187:case 107:this._control.setSize(this._control.size+.1);break;case 189:case 109:this._control.setSize(Math.max(this._control.size-.1,.1));break;case 88:this._control.showX=!this._control.showX;break;case 89:this._control.showY=!this._control.showY;break;case 90:this._control.showZ=!this._control.showZ;break;case 32:this._control.enabled=!this._control.enabled;break}};windowKeyUpListener=e=>{if(this.enabled)switch(e.keyCode){case 16:this.disableSnapping();break}}};_s([A()],vs.prototype,`isGizmo`,void 0),_s([A()],vs.prototype,`translationSnap`,void 0),_s([A()],vs.prototype,`rotationSnapAngle`,void 0),_s([A()],vs.prototype,`scaleSnap`,void 0);var ys=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bs=class e extends R{target;invertForward=!1;keepUpDirection=!0;copyTargetRotation=!1;static flipYQuat=new x().setFromAxisAngle(new n(0,1,0),Math.PI);onBeforeRender(){let t=this.target;if(t||(t=this.context.mainCamera,w()&&!this.__did_warn&&(this.__did_warn=!0,console.debug(`[LookAt] No target set on ${this.name}, using main camera as target.`))),!t)return;let n=this.copyTargetRotation;(this.context.isInVR||this.context.isInPassThrough)&&(n=!1),Qt(this.gameObject,t,this.keepUpDirection,n),this.invertForward&&this.gameObject.quaternion.multiply(e.flipYQuat)}createBehaviours(e,t,n){if(t.uuid===this.gameObject.uuid){let n=t;if(this.keepUpDirection){let e=Xn.createEmptyParent(t);n=e;let r=this.invertForward?-1:1;e.setMatrix(e.getMatrix().multiply(new _().makeRotationZ(Math.PI/2*r))),t.setMatrix(t.getMatrix().multiply(new _().makeRotationZ(-Math.PI/2*r)))}let r=new sr(`lookat `+this.name,Bn.sceneStartTrigger(),fr.lookAtCameraAction(n,void 0,this.invertForward?lr.back:lr.forward,this.keepUpDirection?lr.up:lr.zero));e.addBehavior(r)}}};ys([A(y)],bs.prototype,`target`,void 0),ys([A()],bs.prototype,`invertForward`,void 0),ys([A()],bs.prototype,`keepUpDirection`,void 0),ys([A()],bs.prototype,`copyTargetRotation`,void 0);var xs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ss;(function(e){e[e.NewTab=0]=`NewTab`,e[e.SameTab=1]=`SameTab`,e[e.NewWindow=2]=`NewWindow`})(Ss||={});var Cs=class extends R{url;mode=Ss.NewTab;clickable=!0;async open(){if(!this.url){console.warn(`OpenURL: URL is not set, can't open.`,this);return}this._validateUrl();let e=this.url;switch(!e.startsWith(`mailto:`)&&e.includes(`@`)&&(e=`mailto:`+e),this.mode){case Ss.NewTab:yt.isSafari(),globalThis.open(e,`_blank`);break;case Ss.SameTab:yt.isSafari()&&yt.isiOS()?globalThis.open(e,`_top`):globalThis.open(e,`_self`);break;case Ss.NewWindow:yt.isSafari()?globalThis.open(e,`_top`):globalThis.open(e,`_new`);break}}start(){this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onPointerEnter(e){!e.used&&this.clickable&&this.context.input.setCursor(`pointer`)}onPointerExit(){this.clickable&&this.context.input.unsetCursor(`pointer`)}onPointerClick(e){this.clickable&&!e.used&&this.url?.length&&this.open()}_validateUrl(){this.url&&this.url.startsWith(`www.`)&&(w()&&console.warn(`URL is not valid, adding https:// to the start of the URL`,this.url),this.url=`https://`+this.url)}};xs([A()],Cs.prototype,`url`,void 0),xs([A()],Cs.prototype,`mode`,void 0),xs([A()],Cs.prototype,`clickable`,void 0),$t(e=>{if(t(e.domElement.getAttribute(`clickthrough`))){let n=e.scene.addComponent(ws);Dt(e.domElement,`clickthrough`,()=>{n.enabled=t(e.domElement.getAttribute(`clickthrough`))})}function t(e){return e!==null&&e!==`0`&&e!==`false`}});var ws=class extends R{_previousPointerEvents=`all`;onEnable(){this.context.input.addEventListener(`pointerdown`,this.onPointerEvent),this.context.input.addEventListener(`pointermove`,this.onPointerEvent,{queue:100}),window.addEventListener(`touchstart`,this.onTouchStart,{passive:!0}),window.addEventListener(`touchend`,this.onTouchEnd,{passive:!0}),this._previousPointerEvents=this.context.domElement.style.pointerEvents}onDisable(){this.context.input.removeEventListener(`pointerdown`,this.onPointerEvent),this.context.input.removeEventListener(`pointermove`,this.onPointerEvent),window.removeEventListener(`touchstart`,this.onTouchStart),window.removeEventListener(`touchend`,this.onTouchEnd),this.context.domElement.style.pointerEvents=this._previousPointerEvents}onPointerEnter(){}onPointerEvent=e=>{e.pointerId>0||(e.intersections?.length<=0?this.context.domElement.style.pointerEvents=`none`:this.context.domElement.style.pointerEvents=`all`)};_touchDidHitAnything=!1;onTouchStart=e=>{let t=e.touches[0];if(!t)return;let n=t.clientX/window.innerWidth*2-1,r=-(t.clientY/window.innerHeight)*2+1;this.context.physics.raycast({screenPoint:new b(n,r)}).length>0&&(this._touchDidHitAnything=!0)};onTouchEnd=e=>{let t=this._touchDidHitAnything;this._touchDidHitAnything=!1,setTimeout(()=>{t&&(this.context.domElement.style.pointerEvents=`all`)},100)}},Ts=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Es=N(`debugcursor`),Ds=class extends R{static NAME=`CursorFollow`;damping=0;useFullPage=!0;keepDistance=!0;snapToSurface=!1;_distance=-1;updateDistance(e=!1){!e&&this.keepDistance&&this._distance!==-1||(this._distance=this.gameObject.worldPosition.distanceTo(this.context.mainCamera.worldPosition))}awake(){this._distance=-1}onEnable(){this._distance=-1,window.addEventListener(`pointermove`,this._onPointerMove)}onDisable(){window.removeEventListener(`pointermove`,this._onPointerMove)}_ndc_x=0;_ndc_y=0;_onPointerMove=e=>{if(!this.useFullPage)return;let t=e.clientX,n=e.clientY,r=this.context.domX,i=this.context.domY,a=this.context.domWidth,o=this.context.domHeight;this._ndc_x=(t-r)/a*2-1,this._ndc_y=-(n-i)/o*2+1};lateUpdate(){this.updateDistance();let e=this.useFullPage?this._ndc_x:this.context.input.mousePositionRC.x,t=this.useFullPage?this._ndc_y:this.context.input.mousePositionRC.y,n=this.context.mainCamera,r=n.worldPosition,i=z(e,t,1).unproject(n);i.sub(r).normalize();let a=z(i).multiplyScalar(this._distance).add(r),o=a;if(this.damping>0){let e=this.gameObject.worldPosition;e.lerp(a,this.context.time.deltaTime/this.damping),this.gameObject.worldPosition=e,o=e}else this.gameObject.worldPosition=a;if(this.snapToSurface){Os.origin=o,Os.direction=i.multiplyScalar(-1);let e=this.context.physics.raycastFromRay(Os);if(e?.length){let t=e[0];this.damping>0?this.gameObject.worldPosition=o.lerp(t.point,this.context.time.deltaTime/this.damping):this.gameObject.worldPosition=t.point,Es&&V.DrawLine(t.point,t.normal.add(t.point),65280)}}}};Ts([A()],Ds.prototype,`damping`,void 0),Ts([A()],Ds.prototype,`useFullPage`,void 0),Ts([A()],Ds.prototype,`keepDistance`,void 0),Ts([A()],Ds.prototype,`snapToSurface`,void 0);var Os=new a,ks=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},As=class extends R{type=`linear`;duration=.1;scaleFactor=1.1;hovered=null;idle=null;animation=null;start(){this.idle||=at.emptyClip(),(!this.hovered||!(this.hovered instanceof de))&&(this.hovered=at.createScaleClip({type:`linear`,duration:this.duration||.1,scale:this.gameObject.scale,scaleFactor:this.scaleFactor||1.1})),this.animation??=this.gameObject.addComponent(Qn),this.animation.playAutomatically=!1,this.playIdle()}onEnable(){this.animation&&(this.animation.enabled=!0),this.playIdle()}onDisable(){this.animation&&(this.animation.enabled=!1),this.playIdle()}onPointerEnter(){this.playHover()}onPointerExit(){this.playIdle()}playIdle(){this.idle&&this.animation?.play(this.idle,{exclusive:!0,fadeDuration:.1,loop:!0})}playHover(){this.hovered&&this.animation?.play(this.hovered,{exclusive:!0,fadeDuration:.1,loop:!1,clampWhenFinished:!0})}};ks([A()],As.prototype,`type`,void 0),ks([A()],As.prototype,`duration`,void 0),ks([A()],As.prototype,`scaleFactor`,void 0),ks([A(de)],As.prototype,`hovered`,void 0),ks([A(de)],As.prototype,`idle`,void 0),As=ks([I],As);var js=Object.defineProperty,Ms=(e,t,n)=>t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$=(e,t,n)=>(Ms(e,typeof t==`symbol`?t:t+``,n),n);(function(){class e{}class t extends e{constructor(e){super(),$(this,`value`),this.value=e}}class n extends e{constructor(e){super(),$(this,`value`),this.value=e}}class r extends e{constructor(e){super(),$(this,`value`),this.value=e}}class i extends e{constructor(e,t=`unrestricted`){super(),$(this,`type`),$(this,`value`),this.value=e,this.type=t}}class a extends e{constructor(e){super(),$(this,`value`),this.value=e}}class o extends e{}class s extends e{constructor(e){super(),$(this,`value`),this.value=e}}class c extends e{}class l extends e{constructor(e){super(),$(this,`value`),this.value=e}}class u extends e{constructor(e,t=`integer`){super(),$(this,`value`),$(this,`type`),this.value=e,this.type=t}}class d extends e{constructor(e){super(),$(this,`value`),this.value=e}}class f extends e{constructor(e,t,n){super(),$(this,`value`),$(this,`type`),$(this,`unit`),this.value=e,this.type=t,this.unit=n}}class p extends e{}class m extends e{}class ee extends e{}class h extends e{}class g extends e{}class te extends e{}class _ extends e{}class ne extends e{}class re extends e{}class v extends e{}class ie extends e{}class ae extends e{}class oe{constructor(e){$(this,`input`),$(this,`index`,0),this.input=e}consume(){let e=this.input.codePointAt(this.index);return e!==void 0&&(this.index+=String.fromCodePoint(e).length),e}reconsume(e){e!==void 0&&(this.index-=String.fromCodePoint(e).length)}peek(){let e=[],t=this.index;for(let n=0;n<3&&t=48&&e<=57}function le(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102}function ue(e){return function(e){return function(e){return e>=65&&e<=90}(e)||function(e){return e>=97&&e<=122}(e)}(e)||function(e){return e>=128}(e)||e===95}function de(e){return ue(e)||ce(e)||e===45}function fe(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function pe(e,t){return e===92&&!se(t)}function me(e,t,n){return e===45?ue(t)||t===45||pe(t,n):!!ue(e)||e===92&&pe(e,t)}function b(e,t,n){return e===43||e===45?ce(t)||t===46&&ce(n):ce(e===46?t:e)}function he(e){let t=e.consume();if(le(t)){let n=[t];for(;le(...e.peek())&&n.length<5;)n.push(e.consume());y(...e.peek())&&e.consume();let r=parseInt(String.fromCodePoint(...n),16);return r===0||r>1114111?65533:r}return t===void 0?65533:t}function ge(e,t){let n=new a(``);for(;;){let r=e.consume();if(r===t||r===void 0)return n;if(r===10)return e.reconsume(r),new o;if(r===92){let t=e.peek()[0];t===void 0||(se(t)?e.consume():n.value+=String.fromCodePoint(he(e)))}else n.value+=String.fromCodePoint(r)}}function _e(e){let t=``;for(;;){let n=e.consume();if(de(n))t+=String.fromCodePoint(n);else{if(!pe(...e.peek()))return e.reconsume(n),t;t+=String.fromCodePoint(he(e))}}}function ve(e){let t=function(e){let t=`integer`,n=``;for([43,45].includes(e.peek()[0])&&(n+=String.fromCodePoint(e.consume()));ce(...e.peek());)n+=String.fromCodePoint(e.consume());if(e.peek()[0]===46&&ce(e.peek()[1]))for(n+=String.fromCodePoint(e.consume(),e.consume()),t=`number`;ce(...e.peek());)n+=String.fromCodePoint(e.consume());return[69,101].includes(e.peek()[0])&&([45,43].includes(e.peek()[1])&&ce(e.peek()[2])?(n+=String.fromCodePoint(e.consume(),e.consume(),e.consume()),t=`number`):ce(e.peek()[1])&&(n+=String.fromCodePoint(e.consume(),e.consume()),t=`number`)),{value:parseFloat(n),type:t}}(e);return me(...e.peek())?new f(t.value,t.type,_e(e)):e.peek()[0]===37?(e.consume(),new d(t.value)):new u(t.value,t.type)}function ye(e){for(;;){let t=e.consume();if(t===41||t===void 0)return;pe(...e.peek())&&he(e)}}function be(e){let r=_e(e);if(r.match(/url/i)&&e.peek()[0]===40){for(e.consume();y(e.peek()[0])&&y(e.peek()[1]);)e.consume();return[34,39].includes(e.peek()[0])||y(e.peek()[0])&&[34,39].includes(e.peek()[1])?new n(r):function(e){let t=new s(``);for(;y(...e.peek());)e.consume();for(;;){let n=e.consume();if(n===41||n===void 0)return t;if(y(n)){for(;y(...e.peek());)e.consume();return e.peek()[0]===41||e.peek()[0]===void 0?(e.consume(),t):(ye(e),new c)}if([34,39,40].includes(n)||fe(n))return ye(e),new c;if(n===92){if(!pe(...e.peek()))return ye(e),new c;t.value+=he(e)}else t.value+=String.fromCodePoint(n)}}(e)}return e.peek()[0]===40?(e.consume(),new n(r)):new t(r)}function xe(e){let t=e.consume(),n=e.peek();if(y(t)){for(;y(...e.peek());)e.consume();return new p}if(t===34)return ge(e,t);if(t===35){if(de(n[0])||pe(...n)){let t=new i;return me(...n)&&(t.type=`id`),t.value=_e(e),t}return new l(String.fromCodePoint(t))}return t===39?ge(e,t):t===40?new re:t===41?new v:t===43?b(...n)?(e.reconsume(t),ve(e)):new l(String.fromCodePoint(t)):t===44?new te:t===45?b(...e.peek())?(e.reconsume(t),ve(e)):e.peek()[0]===45&&e.peek()[1]===62?(e.consume(),e.consume(),new ee):me(...e.peek())?(e.reconsume(t),be(e)):new l(String.fromCodePoint(t)):t===46?b(...e.peek())?(e.reconsume(t),ve(e)):new l(String.fromCodePoint(t)):t===58?new h:t===59?new g:t===60?n[0]===33&&n[1]===45&&n[2]===45?(e.consume(),e.consume(),e.consume(),new m):new l(String.fromCodePoint(t)):t===64?me(...n)?new r(_e(e)):new l(String.fromCodePoint(t)):t===91?new _:t===92?pe(...n)?(e.reconsume(t),be(e)):new l(String.fromCodePoint(t)):t===93?new ne:t===123?new ie:t===125?new ae:ce(t)?(e.reconsume(t),ve(e)):ue(t)?(e.reconsume(t),be(e)):t===void 0?void 0:new l(String.fromCodePoint(t))}let Se=new Set([`px`,`deg`,`s`,`hz`,`dppx`,`number`,`fr`]);function Ce(e){return Se.has(e.toLowerCase())}function we(e,t){if([`x`,`y`].includes(e))return e;if(!t)throw Error(`To determine the normalized axis the computedStyle of the source is required.`);let n=t.writingMode==`horizontal-tb`;if(e===`block`)e=n?`y`:`x`;else{if(e!==`inline`)throw TypeError(`Invalid axis “${e}”`);e=n?`x`:`y`}return e}function x(e){let t=[],n=0;function r(){let t=0,r=n;for(;n(e.has(n[t])?e.get(n[t]).push(n):e.set(n[t],[n]),e)),new Map)}function Ee(e,t){let n=[],r=[];for(let i of e)t(i)?n.push(i):r.push(i);return[n,r]}function De(e,t={}){function n(e){return Array.from(e).map((e=>De(e,t)))}if(e instanceof CSSUnitValue){if(e.unit===`percent`&&t.percentageReference){let n=e.value/100*t.percentageReference.value,r=t.percentageReference.unit;return new CSSUnitValue(n,r)}let n=e.toSum();if(n&&n.values.length===1&&(e=n.values[0]),e instanceof CSSUnitValue&&e.unit===`em`&&t.fontSize&&(e=new CSSUnitValue(e.value*t.fontSize.value,t.fontSize.unit)),e instanceof CSSKeywordValue){if(e.value===`e`)return new CSSUnitValue(Math.E,`number`);if(e.value===`pi`)return new CSSUnitValue(Math.PI,`number`)}return e}if(!e.operator)return e;switch(e.operator){case`sum`:e=new CSSMathSum(...n(e.values));break;case`product`:e=new CSSMathProduct(...n(e.values));break;case`negate`:e=new CSSMathNegate(De(e.value,t));break;case`clamp`:e=new CSSMathClamp(De(e.lower,t),De(e.value,t),De(e.upper,t));break;case`invert`:e=new CSSMathInvert(De(e.value,t));break;case`min`:e=new CSSMathMin(...n(e.values));break;case`max`:e=new CSSMathMax(...n(e.values))}if(e instanceof CSSMathMin||e instanceof CSSMathMax){let t=Array.from(e.values);if(t.every((e=>e instanceof CSSUnitValue&&e.unit!==`percent`&&Ce(e.unit)&&e.unit===t[0].unit))){let n=Math[e.operator].apply(Math,t.map((({value:e})=>e)));return new CSSUnitValue(n,t[0].unit)}}if(e instanceof CSSMathMin||e instanceof CSSMathMax){let t=Array.from(e.values),[n,r]=Ee(t,(e=>e instanceof CSSUnitValue&&e.unit!==`percent`)),i=Array.from(Te(n,`unit`).values());if(i.some((e=>e.length>0))){let t=i.map((t=>{let n=Math[e.operator].apply(Math,t.map((({value:e})=>e)));return new CSSUnitValue(n,t[0].unit)}));e=e instanceof CSSMathMin?new CSSMathMin(...t,...r):new CSSMathMax(...t,...r)}return t.length===1?t[0]:e}if(e instanceof CSSMathNegate)return e.value instanceof CSSUnitValue?new CSSUnitValue(0-e.value.value,e.value.unit):e.value instanceof CSSMathNegate?e.value.value:e;if(e instanceof CSSMathInvert)return e.value instanceof CSSMathInvert?e.value.value:e;if(e instanceof CSSMathSum){let t=function(e){let t=e.filter((e=>e instanceof CSSUnitValue));return[...e.filter((e=>!(e instanceof CSSUnitValue))),...Array.from(Te(t,`unit`).entries()).map((([e,t])=>{let n=t.reduce(((e,{value:t})=>e+t),0);return new CSSUnitValue(n,e)}))]},n=[];for(let t of e.values)t instanceof CSSMathSum?n.push(...t.values):n.push(t);return n=t(n),n.length===1?n[0]:new CSSMathSum(...n)}if(e instanceof CSSMathProduct){let t=[];for(let n of e.values)n instanceof CSSMathProduct?t.push(...n.values):t.push(n);let[n,r]=Ee(t,(e=>e instanceof CSSUnitValue&&e.unit===`number`));if(n.length>1){let e=n.reduce(((e,{value:t})=>e*t),1);t=[new CSSUnitValue(e,`number`),...r]}if(t.length===2){let e,n;for(let r of t)r instanceof CSSUnitValue&&r.unit===`number`?e=r:r instanceof CSSMathSum&&[...r.values].every((e=>e instanceof CSSUnitValue))&&(n=r);if(e&&n)return new CSSMathSum(...[...n.values].map((t=>new CSSUnitValue(t.value*e.value,t.unit))))}if(t.every((e=>e instanceof CSSUnitValue&&Ce(e.unit)||e instanceof CSSMathInvert&&e.value instanceof CSSUnitValue&&Ce(e.value.unit)))){let e=new CSSMathProduct(...t).toSum();if(e&&e.values.length===1)return e.values[0]}return new CSSMathProduct(...t)}return e}let S=[`percent`,`length`,`angle`,`time`,`frequency`,`resolution`,`flex`],C={fontRelativeLengths:{units:new Set([`em`,`rem`,`ex`,`rex`,`cap`,`rcap`,`ch`,`rch`,`ic`,`ric`,`lh`,`rlh`])},viewportRelativeLengths:{units:new Set([`vw`,`lvw`,`svw`,`dvw`,`vh`,`lvh`,`svh`,`dvh`,`vi`,`lvi`,`svi`,`dvi`,`vb`,`lvb`,`svb`,`dvb`,`vmin`,`lvmin`,`svmin`,`dvmin`,`vmax`,`lvmax`,`svmax`,`dvmax`])},absoluteLengths:{units:new Set([`cm`,`mm`,`Q`,`in`,`pt`,`pc`,`px`]),compatible:!0,canonicalUnit:`px`,ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set([`deg`,`grad`,`rad`,`turn`]),compatible:!0,canonicalUnit:`deg`,ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set([`s`,`ms`]),compatible:!0,canonicalUnit:`s`,ratios:{s:1,ms:.001}},frequency:{units:new Set([`hz`,`khz`]),compatible:!0,canonicalUnit:`hz`,ratios:{hz:1,khz:1e3}},resolution:{units:new Set([`dpi`,`dpcm`,`dppx`]),compatible:!0,canonicalUnit:`dppx`,ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},Oe=new Map;for(let e of Object.values(C))if(e.compatible)for(let t of e.units)Oe.set(t,e);function ke(e){return Oe.get(e)}function Ae(e,t){let n={...e};for(let e of Object.keys(t))n[e]?n[e]+=t[e]:n[e]=t[e];return n}function je(e){return e===`number`?{}:e===`percent`?{percent:1}:C.absoluteLengths.units.has(e)||C.fontRelativeLengths.units.has(e)||C.viewportRelativeLengths.units.has(e)?{length:1}:C.angle.units.has(e)?{angle:1}:C.time.units.has(e)?{time:1}:C.frequency.units.has(e)?{frequency:1}:C.resolution.units.has(e)?{resolution:1}:e===`fr`?{flex:1}:null}function Me(e){if(e instanceof CSSUnitValue){let{unit:t,value:n}=e,r=ke(e.unit);return r&&t!==r.canonicalUnit&&(n*=r.ratios[t],t=r.canonicalUnit),t===`number`?[[n,{}]]:[[n,{[t]:1}]]}if(e instanceof CSSMathInvert){if(!(e.value instanceof CSSUnitValue))throw Error(`Not implemented`);let t=Me(e.value);if(t===null||t.length>1)return null;let n=t[0],r={};for(let[e,t]of Object.entries(n[1]))r[e]=-1*t;return t[0]=[1/n[0],r],t}if(e instanceof CSSMathProduct){let t=[[1,{}]];for(let n of e.values){let e=Me(n),r=[];if(e===null)return null;for(let n of t)for(let t of e)r.push([n[0]*t[0],Ae(n[1],t[1])]);t=r}return t}throw Error(`Not implemented`)}function Ne(e,t){if(je(t)===null)throw SyntaxError(`The string did not match the expected pattern.`);let n=Me(e);if(!n)throw TypeError();if(n.length>1)throw TypeError(`Sum has more than one item`);let r=function(e,t){let n=e.unit,r=e.value,i=ke(n),a=ke(t);return!a||i!==a?null:new CSSUnitValue(r*a.ratios[n]/a.ratios[t],t)}(Pe(n[0]),t);if(r===null)throw TypeError();return r}function Pe(e){let[t,n]=e,r=Object.entries(n);if(r.length>1)return null;if(r.length===0)return new CSSUnitValue(t,`number`);let i=r[0];return i[1]===1?new CSSUnitValue(t,i[0]):null}function Fe(e,...t){if(t&&t.length)throw Error(`Not implemented`);let n=Me(e).map((e=>Pe(e)));if(n.some((e=>e===null)))throw TypeError(`Type error`);return new CSSMathSum(...n)}function Ie(e,t){if(e.percentHint&&t.percentHint&&e.percentHint!==t.percentHint)return null;let n={...e,percentHint:e.percentHint??t.percentHint};for(let e of S)t[e]&&(n[e]??(n[e]=0),n[e]+=t[e]);return n}class Le{constructor(e,t){$(this,`name`),$(this,`values`),this.name=e,this.values=t}}class Re{constructor(e,t){$(this,`value`),$(this,`associatedToken`),this.value=e,this.associatedToken=t}}function ze(e){if(Array.isArray(e))return e;if(typeof e==`string`)return function(e){let t=new oe(e),n=[];for(;;){let e=xe(t);if(e===void 0)return n;n.push(e)}}(e);throw TypeError(`Invalid input type `+typeof e)}function Be(e){let t=e.shift();return t instanceof ie||t instanceof _||t instanceof re?function(e,t){let n;if(t instanceof ie)n=ae;else if(t instanceof re)n=v;else{if(!(t instanceof _))return;n=ne}let r=new Re([],t);for(;;){let t=e.shift();if(t instanceof n||t===void 0)return r;e.unshift(t),r.value.push(Be(e))}}(e,t):t instanceof n?function(e,t){let n=new Le(e.value,[]);for(;;){let e=t.shift();if(e instanceof v||e===void 0)return n;t.unshift(e),n.values.push(Be(t))}}(t,e):t}function Ve(e){if(e instanceof re||e instanceof v)return 6;if(e instanceof l)switch(e.value){case`*`:case`/`:return 4;case`+`:case`-`:return 2}}function He(e){return e[e.length-1]}function Ue(e,t,n){let r=[`+`,`-`].includes(e.value)?`ADDITION`:`MULTIPLICATION`,i=t.type===r?t.values:[t],a=n.type===r?n.values:[n];return e.value===`-`?a[0]={type:`NEGATE`,value:a[0]}:e.value===`/`&&(a[0]={type:`INVERT`,value:a[0]}),{type:r,values:[...i,...a]}}function We(e){if(e.type===`ADDITION`)return new CSSMathSum(...e.values.map((e=>We(e))));if(e.type===`MULTIPLICATION`)return new CSSMathProduct(...e.values.map((e=>We(e))));if(e.type===`NEGATE`)return new CSSMathNegate(We(e.value));if(e.type===`INVERT`)return new CSSMathInvert(We(e.value));if(e instanceof Re)return Ge(new Le(`calc`,e.value));if(e instanceof t){if(e.value===`e`)return new CSSUnitValue(Math.E,`number`);if(e.value===`pi`)return new CSSUnitValue(Math.PI,`number`);throw SyntaxError(`Invalid math expression`)}return Ke(e)}function Ge(e){if(e.name===`min`||e.name===`max`){let t=e.values.filter((e=>!(e instanceof p||e instanceof te))).map((e=>De(Ge(new Le(`calc`,e)))));return e.name===`min`?new CSSMathMin(...t):new CSSMathMax(...t)}if(e.name!==`calc`)return null;let n=We(function(e){let n=[],r=[];for(;e.length;){let i=e.shift();if(i instanceof u||i instanceof f||i instanceof d||i instanceof Le||i instanceof Re||i instanceof t)r.push(i);else if(i instanceof l&&[`*`,`/`,`+`,`-`].includes(i.value)){for(;n.length&&!(He(n)instanceof re)&&Ve(He(n))>Ve(i);){let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}n.push(i)}else if(i instanceof re)n.push(i);else if(i instanceof v){if(!n.length)return null;for(;!(He(n)instanceof re);){let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}if(!(He(n)instanceof re))return null;n.pop()}else if(!(i instanceof p))return null}for(;n.length;){if(He(n)instanceof re)return null;let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}return r[0]}([...e.values])),r;try{r=De(n)}catch{new CSSStyleSheet().insertRule(`error`,0)}return r instanceof CSSUnitValue?new CSSMathSum(r):r}function Ke(e){return e instanceof Le&&[`calc`,`min`,`max`,`clamp`].includes(e.name)?Ge(e):e instanceof u&&e.value===0&&!e.unit?new CSSUnitValue(0,`px`):e instanceof u?new CSSUnitValue(e.value,`number`):e instanceof d?new CSSUnitValue(e.value,`percent`):e instanceof f?new CSSUnitValue(e.value,e.unit):void 0}function qe(e){let t=function(e){let t=ze(e);for(;t[0]instanceof p;)t.shift();if(t[0]===void 0)return null;let n=Be(t);for(;t[0]instanceof p;)t.shift();return t[0]===void 0?n:null}(e);return t===null&&new CSSStyleSheet().insertRule(`error`,0),t instanceof u||t instanceof d||t instanceof f||t instanceof Le||new CSSStyleSheet().insertRule(`error`,0),t instanceof f&&je(t.unit)===null&&new CSSStyleSheet().insertRule(`error`,0),Ke(t)}(function(){let e=new WeakMap;function t(e){let t=[];for(let r=0;re.type())).reduce(Ie)}},CSSMathNegate:class extends r{constructor(e){super([arguments[0]],`negate`,`-`)}get value(){return e.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends r{constructor(e){super([1,arguments[0]],`invert`,`calc`,` / `)}get value(){return e.get(this).values[1]}type(){return function(e){let t={};for(let n of S)t[n]=-1*e[n];return t}(e.get(this).values[1].type())}},CSSMathMax:class extends r{constructor(){super(arguments,`max`)}},CSSMathMin:class extends r{constructor(){super(arguments,`min`)}}};if(!window.CSS&&!Reflect.defineProperty(window,`CSS`,{value:{}}))throw Error(`Error installing CSSOM support`);window.CSSUnitValue||`number.percent.em.ex.px.cm.mm.in.pt.pc.Q.vw.vh.vmin.vmax.rems.ch.deg.rad.grad.turn.ms.s.Hz.kHz.dppx.dpi.dpcm.fr`.split(`.`).forEach((e=>{if(!Reflect.defineProperty(CSS,e,{value:t=>new CSSUnitValue(t,e)}))throw Error(`Error installing CSS.${e}`)}));for(let[e,t]of Object.entries(i))if(!(e in window)&&!Reflect.defineProperty(window,e,{value:t}))throw Error(`Error installing CSSOM support for ${e}`)})();let w=`block`,T=new WeakMap,E=new WeakMap,Je=[`entry`,`exit`,`cover`,`contain`,`entry-crossing`,`exit-crossing`];function Ye(e){return e===document.scrollingElement?document:e}function Xe(e){$e(e);let t=T.get(e).animations;if(t.length===0)return;let n=e.currentTime;for(let e=0;e{for(let e of t.timelineRefs){let t=e.deref();t&&Xe(t)}t.updateScheduled=!1})),!0)}function it(e,t){let n=T.get(e),r=n.source;if(r!=t){if(r){let t=E.get(r);if(t){t.timelineRefs.delete(e);let n=Array.from(t.timelineRefs).filter((e=>e.deref()===void 0));for(let e of n)t.timelineRefs.delete(e);t.timelineRefs.size===0&&(t.disconnect(),E.delete(r))}}if(n.source=t,t){let r=E.get(t);if(!r){r={timelineRefs:new Set,sourceMeasurements:tt(t)},E.set(t,r);let e=new ResizeObserver((e=>{for(let t of e)rt(n.source)}));e.observe(t);for(let n of t.children)e.observe(n);let i=new MutationObserver((e=>{for(let t of e)rt(t.target)}));i.observe(t,{attributes:!0,attributeFilter:[`style`,`class`]});let a=()=>{r.sourceMeasurements.scrollLeft=t.scrollLeft,r.sourceMeasurements.scrollTop=t.scrollTop;for(let e of r.timelineRefs){let t=e.deref();t&&Xe(t)}};Ye(t).addEventListener(`scroll`,a),r.disconnect=()=>{e.disconnect(),i.disconnect(),Ye(t).removeEventListener(`scroll`,a)}}r.timelineRefs.add(new WeakRef(e))}}}function at(e,t){let n=T.get(e).animations;for(let e=0;e{Xe(e)}))}class D{constructor(e){if(T.set(this,{source:null,axis:w,anonymousSource:e?e.anonymousSource:null,anonymousTarget:e?e.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),it(this,e&&e.source!==void 0?e.source:document.scrollingElement),e&&e.axis!==void 0&&e.axis!=w){if(!et(e.axis))throw TypeError(`Invalid axis`);T.get(this).axis=e.axis}Xe(this)}set source(e){it(this,e),Xe(this)}get source(){return T.get(this).source}set axis(e){if(!et(e))throw TypeError(`Invalid axis`);T.get(this).axis=e,Xe(this)}get axis(){return T.get(this).axis}get duration(){return CSS.percent(100)}get phase(){let e=this.source;if(!e)return`inactive`;let t=getComputedStyle(e);return t.display==`none`?`inactive`:e==document.scrollingElement||t.overflow!=`visible`&&t.overflow!=`clip`?`active`:`inactive`}get currentTime(){let e=this.source;if(!e||!e.isConnected||this.phase==`inactive`)return null;let t=getComputedStyle(e);if(t.display===`inline`||t.display===`none`)return null;let n=this.axis,r=Ze(e,n),i=function(e,t){let n=E.get(e).sourceMeasurements,r=getComputedStyle(e).writingMode==`horizontal-tb`;return t===`block`?t=r?`y`:`x`:t===`inline`&&(t=r?`x`:`y`),t===`y`?n.scrollHeight-n.clientHeight:t===`x`?n.scrollWidth-n.clientWidth:void 0}(e,n);return i>0?CSS.percent(100*r/i):CSS.percent(100)}get __polyfill(){return!0}}function O(e,t){let n=e.parentElement;for(;n!=null;){if(t(n))return n;n=n.parentElement}}function st(e,t){switch(e){case`root`:return document.scrollingElement;case`nearest`:return ut(t);case`self`:return t;default:throw TypeError(`Invalid ScrollTimeline Source Type.`)}}function ct(e){switch(getComputedStyle(e).display){case`block`:case`inline-block`:case`list-item`:case`table`:case`table-caption`:case`flow-root`:case`flex`:case`grid`:return!0}return!1}function lt(e){let t=getComputedStyle(e);return t.transform!=`none`||t.perspective!=`none`||t.willChange==`transform`||t.willChange==`perspective`||t.filter!=`none`||t.willChange==`filter`||t.backdropFilter!=`none`}function k(e){return getComputedStyle(e).position!=`static`||lt(e)}function A(e){switch(getComputedStyle(e).position){case`static`:case`relative`:case`sticky`:return O(e,ct);case`absolute`:return O(e,k);case`fixed`:return O(e,lt)}}function ut(e){if(e&&e.isConnected){for(;e=A(e);)switch(getComputedStyle(e)[`overflow-x`]){case`auto`:case`scroll`:case`hidden`:return e==document.body&&getComputedStyle(document.scrollingElement).overflow==`visible`?document.scrollingElement:e}return document.scrollingElement}}function j(e,t){let n=T.get(e),r=n.subjectMeasurements,i=E.get(n.source).sourceMeasurements;return e.phase===`inactive`?null:e instanceof pt?dt(t,i,r,n.axis,n.inset):null}function dt(e,t,n,r,i){let a=t.direction==`rtl`||t.writingMode==`vertical-rl`,o,s,c={fontSize:n.fontSize};we(r,t)===`x`?(o=n.offsetWidth,s=n.left,c.scrollPadding=[t.scrollPaddingLeft,t.scrollPaddingRight],a&&(s+=t.scrollWidth-t.clientWidth,c.scrollPadding=[t.scrollPaddingRight,t.scrollPaddingLeft]),c.containerSize=t.clientWidth):(o=n.offsetHeight,s=n.top,c.scrollPadding=[t.scrollPaddingTop,t.scrollPaddingBottom],c.containerSize=t.clientHeight);let l=function(e,t){let n={start:0,end:0};if(!e)return n;let[r,i]=[e.start,e.end].map(((e,n)=>e===`auto`?t.scrollPadding[n]===`auto`?0:parseFloat(t.scrollPadding[n]):Qe(e,{percentageReference:CSS.px(t.containerSize),fontSize:CSS.px(parseFloat(t.fontSize))})));return{start:r,end:i}}(i,c),u=s-c.containerSize+l.end,d=s+o-l.start,f=u+o,p=d-o,m=Math.min(f,p),ee=Math.max(f,p),h,g,te=o>c.containerSize-l.start-l.end;switch(e){case`cover`:h=u,g=d;break;case`contain`:h=m,g=ee;break;case`entry`:h=u,g=m;break;case`exit`:h=ee,g=d;break;case`entry-crossing`:h=u,g=te?ee:m;break;case`exit-crossing`:h=te?m:ee,g=d}return{start:h,end:g}}function ft(e,t){if(e instanceof pt){let{rangeName:n,offset:r}=t;return M(j(e,n),r,j(e,`cover`),e.subject)}if(e instanceof D){let{axis:n,source:r}=e,{sourceMeasurements:i}=E.get(r),a;return a=we(n,i)===`x`?i.scrollWidth-i.clientWidth:i.scrollHeight-i.clientHeight,Qe(t,{percentageReference:CSS.px(a)})/a}unsupportedTimeline(e)}function M(e,t,n,r){if(!e||!n)return 0;let i=getComputedStyle(r);return(Qe(t,{percentageReference:CSS.px(e.end-e.start),fontSize:CSS.px(parseFloat(i.fontSize))})+e.start-n.start)/(n.end-n.start)}let pt=class extends D{constructor(e){super(e);let t=T.get(this);t.subject=e&&e.subject?e.subject:void 0,e&&e.inset&&(t.inset=function(e){if(!e)return{start:0,end:0};let t;if(t=typeof e==`string`?x(e).map((t=>{if(t===`auto`)return`auto`;try{return CSSNumericValue.parse(t)}catch{throw TypeError(`Could not parse inset "${e}"`)}})):Array.isArray(e)?e:[e],t.length===0||t.length>2)throw TypeError(`Invalid inset`);for(let e of t){if(e===`auto`)continue;let t=e.type();if(t.length!==1&&t.percent!==1)throw TypeError(`Invalid inset`)}return{start:t[0],end:t[1]??t[0]}}(e.inset)),t.subject&&(new ResizeObserver((()=>{rt(t.source)})).observe(t.subject),new MutationObserver((()=>{rt(t.source)})).observe(t.subject,{attributes:!0,attributeFilter:[`class`,`style`]})),$e(this),t.subjectMeasurements=nt(t.source,t.subject),Xe(this)}get source(){return $e(this),T.get(this).source}set source(e){throw Error(`Cannot set the source of a view timeline`)}get subject(){return T.get(this).subject}get axis(){return T.get(this).axis}get currentTime(){let e=Ze(this.source,this.axis);if(e==null)return null;let t=j(this,`cover`);if(!t)return null;let n=(e-t.start)/(t.end-t.start);return CSS.percent(100*n)}get startOffset(){return CSS.px(j(this,`cover`).start)}get endOffset(){return CSS.px(j(this,`cover`).end)}},mt=document.getAnimations,ht=window.Element.prototype.getAnimations,gt=window.Element.prototype.animate,_t=window.Animation;class N{constructor(){this.state=`pending`,this.nativeResolve=this.nativeReject=null,this.promise=new Promise(((e,t)=>{this.nativeResolve=e,this.nativeReject=t}))}resolve(e){this.state=`resolved`,this.nativeResolve(e)}reject(e){this.state=`rejected`,this.promise.catch((()=>{})),this.nativeReject(e)}}function P(e){e.readyPromise=new N,requestAnimationFrame((()=>{(e.timeline?.currentTime??null)!==null&&(Nt(e),e.pendingTask!==`play`||e.startTime===null&&e.holdTime===null?e.pendingTask===`pause`&&bt(e):yt(e))}))}function F(){return new DOMException(`The user aborted a request`,`AbortError`)}function vt(e,t){if(t===null)return t;if(typeof t!=`number`)throw new DOMException(`Unexpected value: ${t}. Cannot convert to CssNumberish`,`InvalidStateError`);let n=e.rangeDuration??100,r=Et(e),i=r?n*t/r:0;return CSS.percent(i)}function I(e,t){if(e.timeline){if(t===null)return t;if(t.unit===`percent`){let n=e.rangeDuration??100,r=Et(e);return t.value*r/n}throw new DOMException(`CSSNumericValue must be a percentage for progress based animations.`,`NotSupportedError`)}{if(t==null||typeof t==`number`)return t;let e=t.to(`ms`);if(e)return e.value;throw new DOMException(`CSSNumericValue must be either a number or a time value for time based animations.`,`InvalidStateError`)}}function yt(e){let t=I(e,e.timeline.currentTime);if(e.holdTime!=null)Ct(e),e.animation.playbackRate==0?e.startTime=t:(e.startTime=t-e.holdTime/e.animation.playbackRate,e.holdTime=null);else if(e.startTime!==null&&e.pendingPlaybackRate!==null){let n=(t-e.startTime)*e.animation.playbackRate;Ct(e);let r=e.animation.playbackRate;r==0?(e.holdTime=null,e.startTime=t):e.startTime=t-n/r}e.readyPromise&&e.readyPromise.state==`pending`&&e.readyPromise.resolve(e.proxy),Tt(e,!1,!1),Dt(e),e.pendingTask=null}function bt(e){let t=I(e,e.timeline.currentTime);e.startTime!=null&&e.holdTime==null&&(e.holdTime=(t-e.startTime)*e.animation.playbackRate),Ct(e),e.startTime=null,e.readyPromise.resolve(e.proxy),Tt(e,!1,!1),Dt(e),e.pendingTask=null}function xt(e){if(!e.finishedPromise||e.finishedPromise.state!=`pending`||e.proxy.playState!=`finished`)return;e.finishedPromise.resolve(e.proxy),e.animation.pause();let t=new CustomEvent(`finish`,{detail:{currentTime:e.proxy.currentTime,timelineTime:e.proxy.timeline.currentTime}});Object.defineProperty(t,`currentTime`,{get:function(){return this.detail.currentTime}}),Object.defineProperty(t,`timelineTime`,{get:function(){return this.detail.timelineTime}}),requestAnimationFrame((()=>{queueMicrotask((()=>{e.animation.dispatchEvent(t)}))}))}function St(e){return e.pendingPlaybackRate===null?e.animation.playbackRate:e.pendingPlaybackRate}function Ct(e){e.pendingPlaybackRate!==null&&(e.animation.playbackRate=e.pendingPlaybackRate,e.pendingPlaybackRate=null)}function wt(e){if(!e.timeline)return null;let t=I(e,e.timeline.currentTime);if(t===null||e.startTime===null)return null;let n=(t-e.startTime)*e.animation.playbackRate;return n==-0&&(n=0),n}function Tt(e,t,n){if(!e.timeline)return;let r=t?I(e,e.proxy.currentTime):wt(e);if(r&&e.startTime!=null&&!e.proxy.pending){let n=St(e),i=Et(e),a=e.previousCurrentTime;n>0&&r>=i&&e.previousCurrentTime!=null?((a===null||a0)&&(a=0),e.holdTime=t?r:a):n!=0&&(t&&e.holdTime!==null&&(e.startTime=function(e,t){if(!e.timeline)return null;let n=I(e,e.timeline.currentTime);return n==null?null:n-t/e.animation.playbackRate}(e,e.holdTime)),e.holdTime=null)}Dt(e),e.previousCurrentTime=I(e,e.proxy.currentTime),e.proxy.playState==`finished`?(e.finishedPromise||=new N,e.finishedPromise.state==`pending`&&(n?xt(e):Promise.resolve().then((()=>{xt(e)})))):(e.finishedPromise&&e.finishedPromise.state==`resolved`&&(e.finishedPromise=new N),e.animation.playState!=`paused`&&e.animation.pause())}function Et(e){let t=function(e){let t=e.proxy.effect.getTiming();return e.normalizedTiming||t}(e),n=t.delay+t.endDelay+t.iterations*t.duration;return Math.max(0,n)}function Dt(e){if(e.timeline)if(e.startTime!==null){let t=e.timeline.currentTime;if(t==null)return;Ot(e,(I(e,t)-e.startTime)*e.animation.playbackRate)}else e.holdTime!==null&&Ot(e,e.holdTime)}function Ot(e,t){let n=e.timeline,r=e.animation.playbackRate,i=n.currentTime&&n.currentTime.value==(r<0?0:100)?r<0?.001:-.001:0;e.animation.currentTime=t+i}function kt(e,t){if(!e.timeline)return;let n=e.proxy.playState==`paused`&&e.proxy.pending,r=!1,i=I(e,e.proxy.currentTime);St(e)==0&&i==null&&(e.holdTime=0),i??(e.autoAlignStartTime=!0),(e.proxy.playState===`finished`||n)&&(e.holdTime=null,e.startTime=null,e.autoAlignStartTime=!0),e.holdTime&&(e.startTime=null),e.pendingTask&&(e.pendingTask=null,r=!0),(e.holdTime!==null||e.autoAlignStartTime||n||e.pendingPlaybackRate!==null)&&(e.readyPromise&&!r&&(e.readyPromise=null),Dt(e),e.readyPromise||P(e),e.pendingTask=`play`,ot(e.timeline,e.animation,At.bind(e.proxy)),Tt(e,!1,!1))}function At(e){let t=L.get(this);if(!t)return;if(e==null)return void(t.proxy.playState!==`paused`&&t.animation.playState!=`idle`&&t.animation.cancel());Nt(t),t.pendingTask&&requestAnimationFrame((()=>{t.pendingTask!==`play`||t.startTime===null&&t.holdTime===null?t.pendingTask===`pause`&&bt(t):yt(t)}));let n=this.playState;(n==`running`||n==`finished`)&&(Ot(t,(I(t,e)-I(t,this.startTime))*this.playbackRate),Tt(t,!1,!1))}function jt(e){e.specifiedTiming=null}let L=new WeakMap;window.addEventListener(`pagehide`,(e=>{L=new WeakMap}),!1);let Mt=new WeakMap;function Nt(e){if(!e.autoAlignStartTime||!e.timeline||!e.timeline.currentTime||e.proxy.playState===`idle`||e.proxy.playState===`paused`&&e.holdTime!==null)return;let t=e.rangeDuration,n,r;try{n=CSS.percent(100*function(e){if(!e.animationRange)return 0;let t=e.animationRange.start===`normal`?Ft(e.timeline):e.animationRange.start;return ft(e.timeline,t)}(e))}catch(t){n=CSS.percent(0),e.animationRange.start=`normal`,console.warn(`Exception when calculating start offset`,t)}try{r=CSS.percent(100*(1-function(e){if(!e.animationRange)return 0;let t=e.animationRange.end===`normal`?It(e.timeline):e.animationRange.end;return 1-ft(e.timeline,t)}(e)))}catch(t){r=CSS.percent(100),e.animationRange.end=`normal`,console.warn(`Exception when calculating end offset`,t)}e.rangeDuration=r.value-n.value,e.startTime=I(e,St(e)>=0?n:r),e.holdTime=null,e.rangeDuration!==t&&jt(e)}function Pt(e){throw Error(`Unsupported timeline class`)}function Ft(e){return e instanceof ViewTimeline?{rangeName:`cover`,offset:CSS.percent(0)}:e instanceof D?CSS.percent(0):void Pt()}function It(e){return e instanceof ViewTimeline?{rangeName:`cover`,offset:CSS.percent(100)}:e instanceof D?CSS.percent(100):void Pt()}function Lt(e,t){if(!t)return{start:`normal`,end:`normal`};let n={start:Ft(e),end:It(e)};if(e instanceof ViewTimeline){let e=x(t),r=[],i=[];if(e.forEach((e=>{if(Je.includes(e))r.push(e);else try{i.push(CSSNumericValue.parse(e))}catch{throw TypeError(`Could not parse range "${t}"`)}})),r.length>2||i.length>2||i.length==1)throw TypeError(`Invalid time range or unsupported time range format.`);return r.length&&(n.start.rangeName=r[0],n.end.rangeName=r.length>1?r[1]:r[0]),i.length>1&&(n.start.offset=i[0],n.end.offset=i[1]),n}if(e instanceof D){let e=t.split(` `);if(e.length!=2)throw TypeError(`Invalid time range or unsupported time range format.`);return n.start=CSSNumericValue.parse(e[0]),n.end=CSSNumericValue.parse(e[1]),n}Pt()}function Rt(e,t,n){if(!t||t===`normal`)return`normal`;if(e instanceof ViewTimeline){let e=`cover`,r=n===`start`?CSS.percent(0):CSS.percent(100);if(t instanceof Object)t.rangeName!==void 0&&(e=t.rangeName),t.offset!==void 0&&(r=t.offset);else{let n=x(t);n.length===1?Je.includes(n[0])?e=n[0]:r=De(CSSNumericValue.parse(n[0]),{}):n.length===2&&(e=n[0],r=De(CSSNumericValue.parse(n[1]),{}))}if(!Je.includes(e))throw TypeError(`Invalid range name`);return{rangeName:e,offset:r}}if(e instanceof D)return CSSNumericValue.parse(t);Pt()}class zt{constructor(e,t,n={}){let r=t instanceof D,i=e instanceof _t?e:new _t(e,r?void 0:t);Mt.set(i,this),L.set(this,{animation:i,timeline:r?t:void 0,playState:r?`idle`:null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:r?Lt(t,n[`animation-range`]):null,proxy:this})}get effect(){let e=L.get(this);return e.timeline?(e.effect||=function(e){let t=e.animation.effect,n=t.updateTiming,r={apply:function(n){t.getTiming();let r=n.apply(t);if(e.timeline){let t=e.duration??100;r.localTime=vt(e,r.localTime),r.endTime=vt(e,r.endTime),r.activeDuration=vt(e,r.activeDuration);let n=Et(e),i=r.iterations?(n-r.delay-r.endDelay)/r.iterations:0;r.duration=n?CSS.percent(t*i/n):CSS.percent(0),e.timeline.currentTime===void 0&&(r.localTime=null)}return r}},i={apply:function(r,i){if(e.specifiedTiming)return e.specifiedTiming;e.specifiedTiming=r.apply(t);let a,o=Object.assign({},e.specifiedTiming);if(o.duration===1/0)throw TypeError(`Effect duration cannot be Infinity when used with Scroll Timelines`);return(o.duration===null||o.duration===`auto`||e.autoDurationEffect)&&e.timeline&&(e.autoDurationEffect=!0,o.delay=0,o.endDelay=0,a=o.iterations?1e5:0,o.duration=o.iterations?(a-o.delay-o.endDelay)/o.iterations:0,o.duration<0&&(o.duration=0,o.endDelay=a-o.delay),n.apply(t,[o])),e.normalizedTiming=o,e.specifiedTiming}},a={apply:function(n,r,i){if(i&&i.length){if(e.timeline&&i[0]){let t=i[0],n=t.duration;if(n===1/0)throw TypeError(`Effect duration cannot be Infinity when used with Scroll Timelines`);if(t.iterations===1/0)throw TypeError(`Effect iterations cannot be Infinity when used with Scroll Timelines`);n!==void 0&&n!==`auto`&&(e.autoDurationEffect=null)}e.specifiedTiming&&n.apply(t,[e.specifiedTiming]),n.apply(t,i),jt(e)}}},o=new Proxy(t,{get:function(e,n){let r=e[n];return typeof r==`function`?r.bind(t):r},set:function(e,t,n){return e[t]=n,!0}});return o.getComputedTiming=new Proxy(t.getComputedTiming,r),o.getTiming=new Proxy(t.getTiming,i),o.updateTiming=new Proxy(t.updateTiming,a),o}(e),e.effect):e.animation.effect}set effect(e){let t=L.get(this);t.animation.effect=e,t.effect=null,t.autoDurationEffect=null}get timeline(){let e=L.get(this);return e.timeline||e.animation.timeline}set timeline(e){let t=L.get(this),n=this.timeline;if(n==e)return;let r=this.playState,i=this.currentTime,a,o=Et(t);a=i===null?null:o===0?0:I(t,i)/o;let s=n instanceof D,c=e instanceof D,l=this.pending;if(s&&at(t.timeline,t.animation),c)return t.timeline=e,Ct(t),t.autoAlignStartTime=!0,t.startTime=null,t.holdTime=null,r!==`running`&&r!==`finished`||(t.readyPromise&&t.readyPromise.state!==`resolved`||P(t),t.pendingTask=`play`,ot(t.timeline,t.animation,At.bind(this))),r===`paused`&&a!==null&&(t.holdTime=a*o),l&&(t.readyPromise&&t.readyPromise.state!=`resolved`||P(t),t.pendingTask=r==`paused`?`pause`:`play`),t.startTime!==null&&(t.holdTime=null),void Tt(t,!1,!1);if(t.animation.timeline!=e)throw TypeError(`Unsupported timeline: `+e);if(at(t.timeline,t.animation),t.timeline=null,s)switch(i!==null&&(t.animation.currentTime=a*Et(t)),r){case`paused`:t.animation.pause();break;case`running`:case`finished`:t.animation.play()}}get startTime(){let e=L.get(this);return e.timeline?vt(e,e.startTime):e.animation.startTime}set startTime(e){let t=L.get(this);if(e=I(t,e),!t.timeline)return void(t.animation.startTime=e);t.autoAlignStartTime=!1,I(t,t.timeline.currentTime)==null&&t.startTime!=null&&(t.holdTime=null,Dt(t));let n=I(t,this.currentTime);Ct(t),t.startTime=e,t.startTime!==null&&t.animation.playbackRate!=0?t.holdTime=null:t.holdTime=n,t.pendingTask&&(t.pendingTask=null,t.readyPromise.resolve(this)),Tt(t,!0,!1),Dt(t)}get currentTime(){let e=L.get(this);return e.timeline?e.holdTime==null?vt(e,wt(e)):vt(e,e.holdTime):e.animation.currentTime}set currentTime(e){let t=L.get(this);t.timeline?(function(e,t){if(t==null&&e.currentTime!==null)throw TypeError();t=I(e,t),e.autoAlignStartTime=!1,e.holdTime!==null||e.startTime===null||e.timeline.phase===`inactive`||e.animation.playbackRate===0?e.holdTime=t:e.startTime=I(e,e.timeline.currentTime)-t/e.animation.playbackRate,e.timeline.phase===`inactive`&&(e.startTime=null),e.previousCurrentTime=null}(t,e),t.pendingTask==`pause`&&(t.holdTime=I(t,e),Ct(t),t.startTime=null,t.pendingTask=null,t.readyPromise.resolve(this)),Tt(t,!0,!1)):t.animation.currentTime=e}get playbackRate(){return L.get(this).animation.playbackRate}set playbackRate(e){let t=L.get(this);if(!t.timeline)return void(t.animation.playbackRate=e);t.pendingPlaybackRate=null;let n=this.currentTime;t.animation.playbackRate=e,n!==null&&(this.currentTime=n)}get playState(){let e=L.get(this);if(!e.timeline)return e.animation.playState;let t=I(e,this.currentTime);return t===null&&e.startTime===null&&e.pendingTask==null?`idle`:e.pendingTask==`pause`||e.startTime===null&&e.pendingTask!=`play`?`paused`:t!=null&&(e.animation.playbackRate>0&&t>=Et(e)||e.animation.playbackRate<0&&t<=0)?`finished`:`running`}get rangeStart(){return L.get(this).animationRange?.start??`normal`}set rangeStart(e){let t=L.get(this);if(!t.timeline)return t.animation.rangeStart=e;t.timeline instanceof D&&(t.animationRange.start=Rt(t.timeline,e,`start`),Nt(t),Dt(t))}get rangeEnd(){return L.get(this).animationRange?.end??`normal`}set rangeEnd(e){let t=L.get(this);if(!t.timeline)return t.animation.rangeEnd=e;t.timeline instanceof D&&(t.animationRange.end=Rt(t.timeline,e,`end`),Nt(t),Dt(t))}get replaceState(){return L.get(this).animation.pending}get pending(){let e=L.get(this);return e.timeline?!!e.readyPromise&&e.readyPromise.state==`pending`:e.animation.pending}finish(){let e=L.get(this);if(!e.timeline)return void e.animation.finish();let t=St(e),n=Et(e);if(t==0)throw new DOMException(`Cannot finish Animation with a playbackRate of 0.`,`InvalidStateError`);if(t>0&&n==1/0)throw new DOMException(`Cannot finish Animation with an infinite target effect end.`,`InvalidStateError`);Ct(e);let r=t<0?0:n;this.currentTime=vt(e,r);let i=I(e,e.timeline.currentTime);e.startTime===null&&i!==null&&(e.startTime=i-r/e.animation.playbackRate),e.pendingTask==`pause`&&e.startTime!==null&&(e.holdTime=null,e.pendingTask=null,e.readyPromise.resolve(this)),e.pendingTask==`play`&&e.startTime!==null&&(e.pendingTask=null,e.readyPromise.resolve(this)),Tt(e,!0,!0)}play(){let e=L.get(this);e.timeline?kt(e):e.animation.play()}pause(){let e=L.get(this);e.timeline?this.playState!=`paused`&&(e.animation.currentTime===null&&(e.autoAlignStartTime=!0),e.pendingTask==`play`?e.pendingTask=null:e.readyPromise=null,e.readyPromise||P(e),e.pendingTask=`pause`,ot(e.timeline,e.animation,At.bind(e.proxy))):e.animation.pause()}reverse(){let e=L.get(this),t=St(e),n=I(e,this.currentTime),r=Et(e)==1/0,i=t!=0&&(t<0||n>0||!r);if(!e.timeline||!i)return i&&(e.pendingPlaybackRate=-St(e)),void e.animation.reverse();if(e.timeline.phase==`inactive`)throw new DOMException(`Cannot reverse an animation with no active timeline`,`InvalidStateError`);this.updatePlaybackRate(-t),kt(e)}updatePlaybackRate(e){let t=L.get(this);if(t.pendingPlaybackRate=e,!t.timeline)return void t.animation.updatePlaybackRate(e);let n=this.playState;if(!t.readyPromise||t.readyPromise.state!=`pending`)switch(n){case`idle`:case`paused`:Ct(t);break;case`finished`:let n=I(t,t.timeline.currentTime),r=n===null?null:(n-t.startTime)*t.animation.playbackRate;t.startTime=e==0?n:n!=null&&r!=null?(n-r)/e:null,Ct(t),Tt(t,!1,!1),Dt(t);break;default:kt(t)}}persist(){L.get(this).animation.persist()}get id(){return L.get(this).animation.id}set id(e){L.get(this).animation.id=e}cancel(){let e=L.get(this);e.timeline?(this.playState!=`idle`&&(function(e){e.pendingTask&&(e.pendingTask=null,Ct(e),e.readyPromise.reject(F()),P(e),e.readyPromise.resolve(e.proxy))}(e),e.finishedPromise&&e.finishedPromise.state==`pending`&&e.finishedPromise.reject(F()),e.finishedPromise=new N,e.animation.cancel()),e.startTime=null,e.holdTime=null,at(e.timeline,e.animation)):e.animation.cancel()}get onfinish(){return L.get(this).animation.onfinish}set onfinish(e){L.get(this).animation.onfinish=e}get oncancel(){return L.get(this).animation.oncancel}set oncancel(e){L.get(this).animation.oncancel=e}get onremove(){return L.get(this).animation.onremove}set onremove(e){L.get(this).animation.onremove=e}get finished(){let e=L.get(this);return e.timeline?(e.finishedPromise||=new N,e.finishedPromise.promise):e.animation.finished}get ready(){let e=L.get(this);return e.timeline?(e.readyPromise||(e.readyPromise=new N,e.readyPromise.resolve(this)),e.readyPromise.promise):e.animation.ready}addEventListener(e,t,n){L.get(this).animation.addEventListener(e,t,n)}removeEventListener(e,t,n){L.get(this).animation.removeEventListener(e,t,n)}dispatchEvent(e){L.get(this).animation.dispatchEvent(e)}}function R(e,t){let n=t.timeline;n instanceof D&&delete t.timeline;let r=gt.apply(this,[e,t]),i=new zt(r,n);return n instanceof D&&(r.pause(),L.get(i).animationRange={start:Rt(n,t.rangeStart,`start`),end:Rt(n,t.rangeEnd,`end`)},i.play()),i}function Bt(e){for(let t=0;t=r.sheetSrc.length));){if(this.lookAhead(`/*`,r)){for(;this.lookAhead(`/*`,r);)this.eatComment(r),this.eatWhitespace(r);continue}let e=this.parseQualifiedRule(r);e&&(t?this.parseKeyframesAndSaveNameMapping(e,r):this.handleScrollTimelineProps(e,r))}return r.sheetSrc}getAnimationTimelineOptions(e,t){for(let n=this.cssRulesWithTimelineName.length-1;n>=0;n--){let r=this.cssRulesWithTimelineName[n];try{if(t.matches(r.selector)&&(!r[`animation-name`]||r[`animation-name`]==e))return{"animation-timeline":r[`animation-timeline`],"animation-range":r[`animation-range`]}}catch{}}return null}getAnonymousScrollTimelineOptions(e,t){let n=this.anonymousScrollTimelineOptions.get(e);return n?{anonymousSource:n.source,anonymousTarget:t,source:st(n.source??`nearest`,t),axis:n.axis?n.axis:`block`}:null}getScrollTimelineOptions(e,t){let n=this.getAnonymousScrollTimelineOptions(e,t);if(n)return n;for(let n=this.sourceSelectorToScrollTimeline.length-1;n>=0;n--){let r=this.sourceSelectorToScrollTimeline[n];if(r.name==e){let e=this.findPreviousSiblingOrAncestorMatchingSelector(t,r.selector);if(e)return{source:e,...r.axis?{axis:r.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(e,t){let n=e;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling||n.parentElement}return null}getAnonymousViewTimelineOptions(e,t){let n=this.anonymousViewTimelineOptions.get(e);return n?{subject:t,axis:n.axis?n.axis:`block`,inset:n.inset?n.inset:`auto`}:null}getViewTimelineOptions(e,t){let n=this.getAnonymousViewTimelineOptions(e,t);if(n)return n;for(let n=this.subjectSelectorToViewTimeline.length-1;n>=0;n--){let r=this.subjectSelectorToViewTimeline[n];if(r.name==e){let e=this.findPreviousSiblingOrAncestorMatchingSelector(t,r.selector);if(e)return{subject:e,axis:r.axis,inset:r.inset}}}return null}handleScrollTimelineProps(e,t){if(e.selector.includes(`@keyframes`))return;let n=e.block.contents.includes(`animation-name:`),r=e.block.contents.includes(`animation-timeline:`),i=e.block.contents.includes(`animation:`);if(this.saveSourceSelectorToScrollTimeline(e),this.saveSubjectSelectorToViewTimeline(e),!r&&!n&&!i)return;let a=[],o=[],s=!1;r&&(a=this.extractScrollTimelineNames(e.block.contents)),n&&(o=this.extractMatches(e.block.contents,B.ANIMATION_NAME)),r&&n||(i&&this.extractMatches(e.block.contents,B.ANIMATION).forEach((t=>{let n=this.extractAnimationName(t);n&&r&&o.push(n),r&&(this.hasDuration(t)||(this.hasAutoDuration(t)&&(e.block.contents=e.block.contents.replace(`auto`,` `)),e.block.contents=e.block.contents.replace(t,` 1s `+t),s=!0))})),s&&this.replacePart(e.block.startIndex,e.block.endIndex,e.block.contents,t)),this.saveRelationInList(e,a,o)}saveSourceSelectorToScrollTimeline(e){let t=e.block.contents.includes(`scroll-timeline:`),n=e.block.contents.includes(`scroll-timeline-name:`),r=e.block.contents.includes(`scroll-timeline-axis:`);if(!t&&!n)return;let i=[];if(t){let t=this.extractMatches(e.block.contents,B.SCROLL_TIMELINE);for(let n of t){let t=this.split(n),r={selector:e.selector,name:``};t.length==1?r.name=t[0]:t.length==2&&(Ht.includes(t[0])?(r.axis=t[0],r.name=t[1]):(r.axis=t[1],r.name=t[0])),i.push(r)}}if(n){let t=this.extractMatches(e.block.contents,B.SCROLL_TIMELINE_NAME);for(let n=0;nHt.includes(e))),a.length!=t.length)throw Error(`Invalid axis`)}for(let e=0;eHt.includes(e))),s.length!=t.length)throw Error(`Invalid axis`)}for(let e=0;e{return t=e,B.TIME.exec(t);var t})).length>=1}hasAutoDuration(e){return e.split(` `).filter((e=>e===`auto`)).length>=1}saveRelationInList(e,t,n){let r=[];e.block.contents.includes(`animation-range:`)&&(r=this.extractMatches(e.block.contents,B.ANIMATION_TIME_RANGE));let i=Math.max(t.length,n.length,r.length);for(let a=0;ae.trim())).forEach((e=>{if(function(e){return(e.startsWith(`scroll`)||e.startsWith(`view`))&&e.includes(`(`)}(e)){let t=this.saveAnonymousTimelineName(e);n.push(t)}else n.push(e)})),n}saveAnonymousTimelineName(e){let t=`:t`+ this.nextAnonymousTimelineNameIndex++;return e.startsWith(`scroll(`)?this.anonymousScrollTimelineOptions.set(t,this.parseAnonymousScrollTimeline(e)):this.anonymousViewTimelineOptions.set(t,this.parseAnonymousViewTimeline(e)),t}parseAnonymousScrollTimeline(e){let t=B.ANONYMOUS_SCROLL_TIMELINE.exec(e);if(!t)return null;let n=t[1],r={};return n.split(` `).forEach((e=>{Ht.includes(e)?r.axis=e:Ut.includes(e)&&(r.source=e)})),r}parseAnonymousViewTimeline(e){let t=B.ANONYMOUS_VIEW_TIMELINE.exec(e);if(!t)return null;let n=t[1],r={};return n.split(` `).forEach((e=>{Ht.includes(e)?r.axis=e:r.inset=r.inset?`${r.inset} ${e}`:e})),r}extractAnimationName(e){return this.findMatchingEntryInContainer(e,this.keyframeNamesSelectors)}findMatchingEntryInContainer(e,t){let n=e.split(` `).filter((e=>t.has(e)));return n?n[0]:null}parseIdentifier(e){B.IDENTIFIER.lastIndex=e.index;let t=B.IDENTIFIER.exec(e.sheetSrc);if(!t)throw this.parseError(e,`Expected an identifier`);return e.index+=t[0].length,t[0]}parseKeyframesAndSaveNameMapping(e,t){if(e.selector.startsWith(`@keyframes`)){let n=this.replaceKeyframesAndGetMapping(e,t);e.selector.split(` `).forEach(((e,t)=>{t>0&&this.keyframeNamesSelectors.set(e,n)}))}}replaceKeyframesAndGetMapping(e,t){function n(e){return Je.some((t=>e.startsWith(t)))}let r=e.block.contents,i=function(e){let t=0,n=-1,r=-1,i=[];for(let a=0;a{let t=e.split(` `).map((e=>e.trim())).filter((e=>e!=``)).join(` `),r=a.size;a.set(r,t),c.push(`${r}%`),n(t)&&(o=!0)})),s.push(c.join(`,`)),e==i.length-1?s.push(r.substring(i[e].end)):s.push(r.substring(i[e].end,i[e+1].start))}return o?(e.block.contents=s.join(``),this.replacePart(e.block.startIndex,e.block.endIndex,e.block.contents,t),a):new Map}parseQualifiedRule(e){let t=e.index,n=this.parseSelector(e).trim();if(n)return{selector:n,block:this.eatBlock(e),startIndex:t,endIndex:e.index}}removeEnclosingDoubleQuotes(e){let t=+(e[0]==`"`),n=e[e.length-1]==`"`?e.length-1:e.length;return e.substring(t,n)}assertString(e,t){if(e.sheetSrc.substr(e.index,t.length)!=t)throw this.parseError(e,`Did not find expected sequence ${t}`);e.index+=t.length}replacePart(e,t,n,r){if(r.sheetSrc=r.sheetSrc.slice(0,e)+n+r.sheetSrc.slice(t),r.index>=t){let i=r.index-t;r.index=e+n.length+i}}eatComment(e){this.assertString(e,`/*`),this.eatUntil(`*/`,e,!0),this.assertString(e,`*/`)}eatBlock(e){let t=e.index;this.assertString(e,`{`);let n=1;for(;n!=0;)this.lookAhead(`/*`,e)?this.eatComment(e):(e.sheetSrc[e.index]===`{`?n++:e.sheetSrc[e.index]===`}`&&n--,this.advance(e));let r=e.index;return{startIndex:t,endIndex:r,contents:e.sheetSrc.slice(t,r)}}advance(e){if(e.index++,e.index>e.sheetSrc.length)throw this.parseError(e,`Advanced beyond the end`)}parseError(e,t){return Error(`(${e.name?e.name:``}): ${t}`)}eatUntil(e,t,n=!1){let r=t.index;for(;!this.lookAhead(e,t);)this.advance(t);return n&&(t.sheetSrc=t.sheetSrc.slice(0,r)+` `.repeat(t.index-r)+t.sheetSrc.slice(t.index)),t.sheetSrc.slice(r,t.index)}parseSelector(e){let t=e.index;if(this.eatUntil(`{`,e),t===e.index)throw Error(`Empty selector`);return e.sheetSrc.slice(t,e.index)}eatWhitespace(e){B.WHITE_SPACE.lastIndex=e.index;let t=B.WHITE_SPACE.exec(e.sheetSrc);t&&(e.index+=t[0].length)}lookAhead(e,t){return t.sheetSrc.substr(t.index,e.length)==e}peek(e){return e.sheetSrc[e.index]}extractMatches(e,t,n=`,`){return t.exec(e)[1].trim().split(n).map((e=>e.trim()))}split(e){return e.split(` `).map((e=>e.trim())).filter((e=>e!=``))}};function Gt(e,t,n,r,i,a){let o=tt(t),s=nt(t,n);return M(dt(e,o,s,r,i),a,dt(`cover`,o,s,r,i),n)}function Kt(e,t,n){let r=Wt.getAnimationTimelineOptions(t,n);if(!r)return null;let i=r[`animation-timeline`];if(!i)return null;let a=Wt.getScrollTimelineOptions(i,n)||Wt.getViewTimelineOptions(i,n);return a?(a.subject&&function(e,t){let n=ut(t.subject),r=t.axis||t.axis;function i(e,i){let a=null;for(let[o,s]of e)if(o==100*i.offset){if(s==`from`)a=0;else if(s==`to`)a=100;else{let e=s.split(` `);a=e.length==1?parseFloat(e[0]):100*Gt(e[0],n,t.subject,r,t.inset,CSS.percent(parseFloat(e[1])))}break}return a}let a=Wt.keyframeNamesSelectors.get(e.animationName);if(a&&a.size){let t=[];e.effect.getKeyframes().forEach((e=>{let n=i(a,e);n!==null&&n>=0&&n<=100&&(e.offset=n/100,t.push(e))}));let n=t.sort(((e,t)=>e.offsett.offset)));e.effect.setKeyframes(n)}}(e,a),{timeline:a.source?new D(a):new pt(a),animOptions:r}):null}function qt(){if(CSS.supports(`animation-timeline: --works`))return!0;(function(){function e(e){if(e.innerHTML.trim().length===0||`aphrodite`in e.dataset)return;let t=Wt.transpileStyleSheet(e.innerHTML,!0);t=Wt.transpileStyleSheet(t,!1),e.innerHTML=t}function t(e){e.type!=`text/css`&&e.rel!=`stylesheet`||!e.href||new URL(e.href,document.baseURI).origin==location.origin&&fetch(e.getAttribute(`href`)).then((async t=>{let n=await t.text(),r=Wt.transpileStyleSheet(n,!0);if(r=Wt.transpileStyleSheet(n,!1),r!=n){let t=new Blob([r],{type:`text/css`}),n=URL.createObjectURL(t);e.setAttribute(`href`,n)}}))}new MutationObserver((n=>{for(let r of n)for(let n of r.addedNodes)n instanceof HTMLStyleElement&&e(n),n instanceof HTMLLinkElement&&t(n)})).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll(`style`).forEach((t=>e(t))),document.querySelectorAll(`link`).forEach((e=>t(e)))})();let e=CSS.supports;CSS.supports=t=>(t=t.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,`--supported-property:`),e(t)),window.addEventListener(`animationstart`,(e=>{e.target.getAnimations().filter((t=>t.animationName===e.animationName)).forEach((t=>{let n=Kt(t,t.animationName,e.target);if(n)if(!n.timeline||t instanceof zt)t.timeline=n.timeline;else{let e=new zt(t,n.timeline,n.animOptions);t.pause(),e.play()}}))}))}(function(){if(!qt()){if(!Reflect.defineProperty(window,`ScrollTimeline`,{value:D}))throw Error(`Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window`);if(!Reflect.defineProperty(window,`ViewTimeline`,{value:pt}))throw Error(`Error installing ViewTimeline polyfill: could not attach ViewTimeline to window`);if(!Reflect.defineProperty(Element.prototype,`animate`,{value:R}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element`);if(!Reflect.defineProperty(window,`Animation`,{value:zt}))throw Error(`Error installing Animation constructor.`);if(!Reflect.defineProperty(Element.prototype,`getAnimations`,{value:z}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element`);if(!Reflect.defineProperty(document,`getAnimations`,{value:Vt}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document`)}})()})();var Ns=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ps=N(`debugscroll`),Fs=class extends R{target=null;damping=0;invert=!1;htmlSelector=null;mode=`window`;changed=new k;get currentValue(){return this._current_value}_current_value=0;_target_value=0;_appliedValue=-1;_needsUpdate=!1;_firstUpdate=!1;awake(){this._firstUpdate=!0}onEnable(){window.addEventListener(`wheel`,this.updateCurrentScrollValue,{passive:!0}),this._appliedValue=-1,this._needsUpdate=!0}onDisable(){window.removeEventListener(`wheel`,this.updateCurrentScrollValue)}lateUpdate(){if(this.updateCurrentScrollValue(),this._target_value>=0&&(this.damping>0&&!this._firstUpdate?(this._current_value=O.lerp(this._current_value,this._target_value,this.context.time.deltaTime/this.damping),Math.abs(this._current_value-this._target_value)<.001&&(this._current_value=this._target_value)):this._current_value=this._target_value),this._needsUpdate||this._current_value!==this._appliedValue){this._appliedValue=this._current_value,this._needsUpdate=!1;let e=!1;if(this.changed.listenerCount>0){let t={type:`change`,value:this._current_value,component:this,preventDefault:()=>{t.defaultPrevented=!0},defaultPrevented:!1};this.changed.invoke(t),e=t.defaultPrevented}if(!e){let e=this.invert?1-this._current_value:this._current_value;Array.isArray(this.target)?this.target.forEach(t=>t&&this.applyScroll(t,e)):this.target&&this.applyScroll(this.target,e),Ps&&this.context.time.frame%30==0&&console.debug(`[ScrollFollow] ${this._current_value.toFixed(5)} — ${(this._target_value*100).toFixed(0)}%, targets [${Array.isArray(this.target)?this.target.length:1}]`)}this._firstUpdate=!1}}_lastSelectorValue=null;_lastSelectorElement=null;updateCurrentScrollValue=()=>{switch(this.mode){case`window`:if(this.htmlSelector?.length){if(this.htmlSelector!==this._lastSelectorValue&&(this._lastSelectorElement=document.querySelector(this.htmlSelector),this._lastSelectorValue=this.htmlSelector),this._lastSelectorElement){let e=this._lastSelectorElement.getBoundingClientRect();this._target_value=-e.top/(e.height-window.innerHeight);break}}else if(!(window.document.body.scrollHeight<=window.innerHeight)){let e=window.document.body.scrollHeight-window.innerHeight;this._target_value=window.scrollY/(e||1)}break}(isNaN(this._target_value)||!isFinite(this._target_value))&&(this._target_value=-1)};applyScroll(e,t){if(e)if(e instanceof ti)this.handleTimelineTarget(e,t),e.isPlaying&&e.pause(),e.evaluate();else if(e instanceof it)e.setFloat(`scroll`,t);else if(e instanceof Qn)e.time=t*e.duration;else if(e instanceof Kn){if(!e.duration)return;e.time=t*e.duration}else if(e instanceof ts)e.position01=t;else if(e instanceof Y)e.intensity=t;else if(e instanceof y){let n=e;n[`needle:scrollbounds`]===void 0&&(n[`needle:scrollbounds`]=Nt(e)||null);let r=n[`needle:scrollbounds`];r&&(e.position.y=-r.min.y-t*(r.max.y-r.min.y))}else `scroll`in e&&(typeof e.scroll==`number`?e.scroll=t:typeof e.scroll==`function`&&e.scroll(t))}handleTimelineTarget(e,t){let n=e.duration,r=Is.get(e);if(!r){r=[],Is.set(e,r);let t=0;for(let n of e.foreachMarker(`ScrollMarker`)){let e=t++;if(n.element===void 0||n.needsUpdate===!0||n.element&&!n.element?.parentNode){n.needsUpdate=!1;try{if(n.element=Bs(e),Ps&&console.debug(`ScrollMarker #${e} (${n.time.toFixed(2)}) found`,n.element),!n.element){(Ps||w())&&console.warn(`No HTML element found for ScrollMarker: ${n.name} (index ${e})`);continue}}catch(e){n.element=null,console.error(`ScrollMarker selector is not valid: `+n.name+` +`,e)}}n.element&&r.push(n)}r.length<=0&&document.querySelectorAll(`[data-timeline-marker]`).forEach(e=>{let t=e.getAttribute(`data-timeline-marker`),n=parseFloat(t||`NaN`);isNaN(n)?(w()||Ps)&&console.warn(`[ScrollFollow] data-timeline-marker attribute is not a valid number. Supported are numbers only (e.g.

)`):r.push({time:n,element:e})});for(let e of r)e.element&&(e.timeline=new ViewTimeline({subject:e.element,axis:`block`}))}Ls.length=0;let i=0,a=0;for(let e=0;e0&&a<=1){let e=t.time+(s-t.time)*a;Ls.push({name:l,time:e,weight:o}),i+=o}else e===0&&a<=0?(Ls.push({name:l,time:0,weight:1}),i+=1):e===r.length-1&&a>=1&&(Ls.push({name:l,time:n,weight:1}),i+=1)}}if(Ls.length<=0&&a<=0)e.time=t*n;else if(Ls.length>0){let t=Ls[0].time;if(Ls.length>1)for(let e of Ls){let n=e.weight/Math.max(1e-5,i),r=Math.abs(e.time-t);t+=r*n}this.damping<=0||this._firstUpdate?e.time=t:e.time=O.lerp(e.time,t,this.context.time.deltaTime/this.damping),Math.abs(e.time-t)>.001&&(this._needsUpdate=!0),Ps&&this.context.time.frame%30==0&&console.log(`[ScrollFollow ] Timeline ${e.name}: ${t.toFixed(3)}`,Ls.map(e=>`[${e.name} ${(e.weight*100).toFixed(0)}%]`).join(`, `))}}};Ns([A([R,y])],Fs.prototype,`target`,void 0),Ns([A()],Fs.prototype,`damping`,void 0),Ns([A()],Fs.prototype,`invert`,void 0),Ns([A()],Fs.prototype,`htmlSelector`,void 0),Ns([A()],Fs.prototype,`mode`,void 0),Ns([A(k)],Fs.prototype,`changed`,void 0);var Is=new WeakMap,Ls=[],Rs=[],zs=!0;function Bs(e){return zs?(zs=!1,Rs.length=0,document.querySelectorAll(`[data-timeline-marker]`).forEach((e,t)=>{Rs[t]=e}),zs=!1,Bs(e)):Rs[e]||null}function Vs(e){if(!e.source)return 0;let t=e.currentTime,n=e.duration,r=1;return(n.unit===`seconds`||n.unit===`percent`)&&(r=n.value),t.unit===`seconds`?t.value/r:t.value/100}var Hs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Us,Ws=N(`debugviewbox`),Gs=new vt(.5,.5,.5,.5),Ks=class extends R{static{Us=this}static instances=[];referenceFieldOfView=-1;get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,e===`once`&&(this._applyCount=0),(Ws||this.debug)&&console.debug(`[ViewBox] Set mode:`,e))}_mode=`continuous`;debug=!1;onEnable(){(Ws||this.debug||w())&&console.debug(`[ViewBox] Using camera fov:`,this.referenceFieldOfView),Us.instances.push(this),this._applyCount=0,this.removeUpdateCallback(),this.context.pre_render_callbacks.push(this.internalUpdate)}onDisable(){(Ws||this.debug)&&console.debug(`[ViewBox] Disabled`);let e=Us.instances.indexOf(this);e!==-1&&Us.instances.splice(e,1),this._projectedBoxElement?.remove(),this.removeUpdateCallback()}removeUpdateCallback(){let e=this.context.pre_render_callbacks.indexOf(this.internalUpdate);e!==-1&&this.context.pre_render_callbacks.splice(e,1)}static _tempProjectionMatrix=new _;static _tempProjectionMatrixInverse=new _;_applyCount=0;internalUpdate=()=>{if(this.context.isInXR||this.destroyed||!this.activeAndEnabled)return;if(Us.instances[Us.instances.length-1]!==this){(Ws||this.debug)&&V.DrawWireBox(this.gameObject.worldPosition,this.gameObject.worldScale,Gs);return}(Ws||this.debug)&&V.DrawWireBox(this.gameObject.worldPosition,this.gameObject.worldScale,14540032,0,!0,this.gameObject.worldQuaternion);let e=this.context.mainCamera;if(!e||!(e instanceof le))return;if((this.referenceFieldOfView===void 0||this.referenceFieldOfView===-1)&&(this.referenceFieldOfView=e.fov,console.debug(`[ViewBox] No referenceFieldOfView set, using camera fov:`,this.referenceFieldOfView)),this.referenceFieldOfView===void 0||this.referenceFieldOfView<=0){(Ws||this.debug)&&console.warn(`[ViewBox] No valid referenceFieldOfView set, cannot adjust box size:`,this.referenceFieldOfView);return}if(this._applyCount>=1&&this.mode===`once`)return;this._applyCount++;let t=this.context.domWidth,n=this.context.domHeight,r=t,i=n,a=1,o=1,s=this.context.focusRectSize;s&&(r=s.width,i=s.height,a=t/r,o=n/i),Us._tempProjectionMatrix.copy(e.projectionMatrix),Us._tempProjectionMatrixInverse.copy(e.projectionMatrixInverse);let c=e.view,l=e.zoom,u=e.aspect,d=e.fov;e.view=null,e.zoom=1,e.fov=this.referenceFieldOfView,e.updateProjectionMatrix();let f=this.gameObject.worldPosition,p=this.gameObject.worldScale,m=e.worldPosition,ee=m.distanceTo(f),h=Math.max(p.x,p.y,p.z),g=z(m).sub(f);if(eea&&(a=n.x),n.ys&&(s=n.y)}return Ws&&(this._projectedBoxElement||=document.createElement(`div`),this._projectedBoxElement.parentElement!==this.context.domElement&&this.context.domElement.appendChild(this._projectedBoxElement),this._projectedBoxElement.style.position=`fixed`,this._projectedBoxElement.style.outline=`2px dashed rgba(255,0,0,.5)`,this._projectedBoxElement.style.left=(i*.5+.5)*this.context.domWidth+`px`,this._projectedBoxElement.style.top=(-s*.5+.5)*this.context.domHeight+`px`,this._projectedBoxElement.style.width=(a-i)*.5*this.context.domWidth+`px`,this._projectedBoxElement.style.height=(s-o)*.5*this.context.domHeight+`px`,this._projectedBoxElement.style.pointerEvents=`none`,this._projectedBoxElement.style.zIndex=`1000`),{minX:i,maxX:a,minY:o,maxY:s}}_projectedBoxElement=null};Hs([A()],Ks.prototype,`referenceFieldOfView`,void 0),Hs([A()],Ks.prototype,`mode`,null),Hs([A()],Ks.prototype,`debug`,void 0),Ks=Us=Hs([I],Ks);var qs=class extends R{toggleKey=`KeyP`;update(){this.context.input.isKeyDown(this.toggleKey)&&this.context.domElement.classList.toggle(`presentation-mode`)}};function Js(){S.add(`AlignmentConstraint`,xi),S.add(`Animation`,Qn),S.add(`Animator`,it),S.add(`AudioListener`,rr),S.add(`AudioSource`,Kn),S.add(`Avatar_Brain_LookAt`,cr),S.add(`Avatar_MouthShapes`,zn),S.add(`Avatar_MustacheShake`,In),S.add(`AvatarBlink_Simple`,bn),S.add(`AvatarEyeLook_Rotation`,hn),S.add(`AxesHelper`,Ci),S.add(`BasicIKConstraint`,wi),S.add(`BoxHelperComponent`,Di),S.add(`Camera`,Ne),S.add(`CharacterController`,Ai),S.add(`CharacterControllerInput`,ji),S.add(`SphereCollider`,Pn),S.add(`BoxCollider`,dn),S.add(`MeshCollider`,An),S.add(`CapsuleCollider`,Mn),S.add(`ContactShadows`,Dn),S.add(`LogStats`,Ni),S.add(`DeleteBox`,Li),S.add(`Deletable`,Ri),S.add(`DeviceFlag`,Vi),S.add(`DragControls`,Gi),S.add(`DropListener`,sa),S.add(`Duplicatable`,da),S.add(`EventListEvent`,ut),S.add(`EventTrigger`,ha),S.add(`GltfExportBox`,Ca),S.add(`GltfExport`,wa),S.add(`VariantAction`,Ea),S.add(`ChangeTransformOnClick`,jn),S.add(`ChangeMaterialOnClick`,un),S.add(`SetActiveOnClick`,vn),S.add(`HideOnStart`,kn),S.add(`EmphasizeOnClick`,gn),S.add(`PlayAudioOnClick`,mn),S.add(`PlayAnimationOnClick`,Nn),S.add(`PreliminaryAction`,yn),S.add(`PreliminaryTrigger`,ir),S.add(`VisibilityAction`,Fn),S.add(`TapGestureTrigger`,Ln),S.add(`USDZExporter`,Zn),S.add(`Fog`,Aa),S.add(`BoxGizmo`,Gn),S.add(`GridHelper`,Ma),S.add(`GroundProjectedEnv`,Vt),S.add(`UsageMarker`,Pi),S.add(`Interactable`,Fi),S.add(`FixedJoint`,Fa),S.add(`HingeJoint`,Ia),S.add(`Light`,Y),S.add(`LODGroup`,Xa),S.add(`LookAtConstraint`,He),S.add(`NeedleMenu`,ln),S.add(`NestedGltf`,$a),S.add(`Networking`,no),S.add(`OffsetConstraint`,io),S.add(`CameraTargetReachedEvent`,D),S.add(`OrbitControls`,Le),S.add(`ParticleSystemRenderer`,vr),S.add(`ParticleSystem`,yr),S.add(`Attractor`,oo),S.add(`PlayerColor`,so),S.add(`Antialiasing`,wr),S.add(`BloomEffect`,Dr),S.add(`ChromaticAberration`,kr),S.add(`ColorAdjustments`,Sr),S.add(`DepthOfField`,Nr),S.add(`EffectWrapper`,Er),S.add(`PixelationEffect`,xr),S.add(`ScreenSpaceAmbientOcclusion`,jr),S.add(`ScreenSpaceAmbientOcclusionN8`,Or),S.add(`SharpeningEffect`,br),S.add(`TiltShiftEffect`,Tr),S.add(`ToneMappingEffect`,Cr),S.add(`Vignette`,Ar),S.add(`Volume`,Mr),S.add(`ReflectionProbe`,_n),S.add(`Renderer`,Vn),S.add(`MeshRenderer`,_r),S.add(`SkinnedMeshRenderer`,gr),S.add(`Rigidbody`,E),S.add(`SceneSwitcher`,W),S.add(`ScreenCapture`,So),S.add(`SeeThrough`,Eo),S.add(`ShadowCatcher`,ko),S.add(`RemoteSkybox`,vi),S.add(`SmoothFollow`,jo),S.add(`SpatialTriggerReceiver`,Lo),S.add(`SpatialTrigger`,Ro),S.add(`SpectatorCamera`,Ho),S.add(`SplineContainer`,Qo),S.add(`SplineWalker`,ts),S.add(`SpriteRenderer`,xn),S.add(`SyncedCamera`,ss),S.add(`SyncedRoom`,ds),S.add(`SyncedTransform`,rt),S.add(`TestRunner`,ms),S.add(`TestSimulateUserData`,hs),S.add(`PlayableDirector`,ti),S.add(`SignalReceiver`,Rr),S.add(`AnimationTrackHandler`,Gr),S.add(`AudioTrackHandler`,qr),S.add(`MarkerTrackHandler`,Jr),S.add(`SignalTrackHandler`,Yr),S.add(`ControlTrackHandler`,Xr),S.add(`TransformGizmo`,vs),S.add(`BaseUIComponent`,en),S.add(`UIRootComponent`,ot),S.add(`Button`,B),S.add(`Canvas`,Ut),S.add(`CanvasGroup`,Rt),S.add(`EventSystem`,Pe),S.add(`Graphic`,wt),S.add(`MaskableGraphic`,Ct),S.add(`Image`,Et),S.add(`RawImage`,pt),S.add(`InputField`,Ft),S.add(`VerticalLayoutGroup`,bt),S.add(`HorizontalLayoutGroup`,Jt),S.add(`GridLayoutGroup`,Mt),S.add(`Outline`,ft),S.add(`ObjectRaycaster`,C),S.add(`GraphicRaycaster`,jt),S.add(`SpatialGrabRaycaster`,Ot),S.add(`RectTransform`,nn),S.add(`SpatialHtml`,Kt),S.add(`Text`,Bt),S.add(`EnvironmentScene`,ii),S.add(`LookAt`,bs),S.add(`OpenURL`,Cs),S.add(`VideoPlayer`,Z),S.add(`Voip`,En),S.add(`ClickThrough`,ws),S.add(`CursorFollow`,Ds),S.add(`HoverAnimation`,As),S.add(`ScrollFollow`,Fs),S.add(`ViewBox`,Ks),S.add(`Avatar`,Jn),S.add(`XRControllerFollow`,Un),S.add(`XRControllerModel`,mr),S.add(`XRControllerMovement`,On),S.add(`TeleportTarget`,fn),S.add(`WebARCameraBackground`,tr),S.add(`WebARSessionRoot`,Tn),S.add(`WebXR`,hr),S.add(`AvatarMarker`,Yn),S.add(`WebXRImageTracking`,or),S.add(`WebXRPlaneTracking`,$n),S.add(`XRRig`,ur),S.add(`XRFlag`,ar),S.add(`PlayerSync`,Cn),S.add(`PlayerState`,qn),S.add(`PresentationMode`,qs)}export{Yi as $,Xa as A,zr as At,Ca as B,So as C,qr as Ct,io as D,Ur as Dt,oo as E,Yr as Et,Ma as F,ha as G,va as H,Aa as I,ea as J,da as K,Da as L,Y as M,Rr as Mt,Fa as N,Lr as Nt,no as O,Br as Ot,Ia as P,Zi as Q,Ea as R,Eo as S,Gr as St,so as T,Jr as Tt,ya as U,ba as V,ga as W,ta as X,na as Y,$i as Z,Ho as _,mi as _t,Ds as a,Ri as at,jo as b,ii as bt,bs as c,Pi as ct,hs as d,ji as dt,Ji as et,ds as f,Di as ft,Zo as g,vi as gt,Qo as h,xi as ht,As as i,Vi as it,Ja as j,Ir as jt,$a as k,Vr as kt,vs as l,Ni as lt,ts as m,Ci as mt,Ks as n,Gi as nt,ws as o,Li as ot,ss as p,wi as pt,sa as q,Fs as r,K as rt,Cs as s,Fi as st,Js as t,Xi as tt,ms as u,Ai as ut,Ro as v,W as vt,Z as w,Xr as wt,ko as x,ti as xt,Lo as y,ci as yt,wa as z}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js.gz b/Needle/MenuScene/dist/assets/needle-engine.extras.t1Dx-yNB.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..17f92ad6ec1f87e52d77081c7fd141b4f1a32993 GIT binary patch literal 77870 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 E08TDm_5c6? literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/needle-engine@5.0.3.js b/Needle/MenuScene/dist/assets/needle-engine@5.0.3.js new file mode 100644 index 0000000..33720ff --- /dev/null +++ b/Needle/MenuScene/dist/assets/needle-engine@5.0.3.js @@ -0,0 +1,229 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,Bt as r,F as i,Fr as a,Ft as o,Nt as s,On as c,Rr as l,S as u,St as ee,Xt as te,Zt as ne,_ as re,c as ie,fn as d,gn as f,gr as ae,hn as oe,in as se,tt as ce,wn as le,x as p}from"./three@0.169.19.js";import{$ as ue,$a as de,$i as fe,A as pe,Br as me,C as he,Ci as ge,Cn as _e,D as ve,Da as ye,Di as be,Dn as xe,Dt as Se,E as Ce,En as we,G as Te,Gi as Ee,Gr as De,Gt as Oe,H as m,Hn as ke,Ho as Ae,Ii as je,J as Me,Ja as Ne,Ji as Pe,Jr as Fe,Ka as h,Kr as Ie,L as Le,La as Re,Lr as ze,M as Be,Mi as Ve,Na as He,O as Ue,Oi as We,On as Ge,Ot as Ke,P as qe,Pi as Je,Pn as Ye,Q as Xe,Qi as Ze,Ro as Qe,S as $e,Si as et,T as tt,Ti as nt,Tn as rt,Tt as it,Ua as g,Uo as at,Ut as ot,V as st,Vn as ct,Wi as lt,Wo as ut,X as _,Xa as dt,Xr as ft,Y as pt,Yr as mt,Z as ht,_ as gt,_a as v,_n as _t,a as vt,ai as yt,b as bt,ba as y,bi as xt,co as b,ct as x,d as St,dn as S,eo as C,f as Ct,fn as wt,g as Tt,gi as Et,gr as w,h as Dt,ht as Ot,i as kt,j as At,ja as jt,ji as Mt,jo as Nt,jt as Pt,k as Ft,kn as It,l as Lt,n as Rt,na as zt,o as Bt,ot as Vt,p as Ht,q as Ut,qr as T,r as Wt,ra as E,s as Gt,st as Kt,t as qt,ti as D,u as Jt,un as O,v as Yt,va as k,vi as Xt,w as Zt,wi as Qt,wn as $t,x as en,xi as tn,y as nn,yi as rn,za as an}from"./needle-engine-ui.BzyLX9fs.js";import{A,d as on,j as sn,n as cn,t as ln}from"./three-examples@0.169.19.js";import{$ as un,A as dn,B as fn,Bt as pn,C as mn,Ct as hn,D as gn,Dt as _n,E as vn,Et as yn,F as bn,G as xn,Gt as Sn,H as Cn,I as wn,It as Tn,J as En,Jt as Dn,K as On,Kt as kn,L as An,Nt as jn,O as Mn,Ot as Nn,P as Pn,Q as Fn,Qt as In,R as Ln,Rt as Rn,S as zn,St as Bn,T as Vn,U as Hn,Ut as Un,V as Wn,Vt as Gn,W as Kn,Wt as qn,X as Jn,Xt as Yn,Y as Xn,Z as Zn,Zt as Qn,_ as $n,_t as er,a as tr,at as nr,b as rr,bt as ir,cn as ar,d as or,et as sr,f as cr,fn as lr,g as ur,h as dr,i as fr,it as pr,k as mr,kt as hr,ln as gr,m as _r,mn as vr,n as yr,nt as br,o as xr,ot as Sr,p as Cr,pn as wr,q as Tr,qt as Er,r as Dr,rt as Or,sn as kr,t as Ar,tt as jr,v as Mr,vt as Nr,w as Pr,wt as Fr,x as Ir,xt as Lr,y as Rr,yt as zr,z as Br,zt as Vr}from"./needle-engine-webxr.DQA26K-l.js";import{A as Hr,B as Ur,C as Wr,Ct as Gr,D as Kr,E as qr,Et as Jr,F as Yr,G as Xr,H as Zr,I as Qr,K as $r,L as ei,M as ti,Mt as ni,N as ri,Nt as ii,O as ai,P as oi,Q as si,R as ci,S as li,St as ui,T as di,Tt as fi,U as pi,V as mi,W as hi,X as gi,_ as _i,_t as vi,a as yi,at as bi,b as xi,bt as Si,c as Ci,ct as wi,d as Ti,dt as Ei,f as Di,ft as Oi,g as ki,gt as Ai,h as ji,ht as Mi,i as Ni,it as Pi,j as Fi,jt as Ii,k as Li,l as Ri,lt as zi,m as Bi,mt as Vi,n as Hi,nt as Ui,o as Wi,ot as Gi,p as Ki,pt as qi,q as Ji,r as Yi,s as Xi,st as Zi,t as Qi,u as $i,ut as ea,v as ta,vt as na,w as ra,wt as ia,x as aa,xt as oa,y as sa,yt as ca,z as la}from"./needle-engine.extras.t1Dx-yNB.js";import{C as ua,D as da,E as fa,S as pa,T as ma,a as ha,b as ga,c as _a,d as va,f as ya,g as ba,h as xa,i as Sa,l as Ca,m as wa,o as Ta,p as Ea,r as Da,s as Oa,t as ka,u as Aa,v as ja,w as Ma,x as Na,y as Pa}from"./needle-engine-particles.Bw3zzNt3.js";import{a as Fa,c as Ia,d as La,f as Ra,g as za,h as Ba,i as Va,l as Ha,m as Ua,n as Wa,o as Ga,p as Ka,r as qa,s as Ja,t as Ya,u as Xa,y as Za}from"./needle-engine.extras.CDv9-f43.js";import{a as Qa,t as $a}from"./three-mesh-bvh.B-oXEGo2.js";var j=void 0,M=null,N=null,P=!1,eo=null,to=`terminal`;b(`console`)&&ro();var no=Symbol(`consoleParent`);function ro(){if(j){j.showSwitch();return}uo()}function io(){j&&(j.hide(),j.hideSwitch())}function ao(){eo||=setInterval(so,500)}var oo=0;function so(){let e=dt(),t=e!==oo;oo=e,t&&co()}function co(){ro(),N&&(N.setAttribute(`error`,`true`),N.innerText=`🤬`)}function lo(){N&&(N.removeAttribute(`error`),N.innerText=to)}function uo(e=!1){if(j!==void 0||P)return;P=!0;let t=document.createElement(`script`);t.onload=()=>{if(!globalThis.VConsole){console.warn(`🌵 Debug console failed to load.`),P=!1,j=null;return}P=!1,ao(),j=new VConsole({pluginOrder:[`default`,`needle-console`]});let t=globalThis[`needle:codegen_files`];if(t&&t.length>0&&j.addPlugin(fo()),j.addPlugin(bo()),j.addPlugin(xo()),M=No(),M&&(M[no]=M.parentElement,M.style.position=`absolute`,M.style.zIndex=(2**53-1).toString()),j.setSwitchPosition(20,30),N=Mo(),N){N.innerText=to,N.addEventListener(`click`,lo);let t=document.createElement(`style`);t.innerHTML=` + #__vconsole .vc-switch { + border: 1px solid rgba(255, 255, 255, .1); + border-radius: 50%; + width: 40px; + height: 40px; + padding: 0; + line-height: 40px; + font-size: ${40*.4}px; + text-align: center; + background: #ffffff5c; + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + user-select: none; + pointer-events: auto; + transition: transform .2s ease-in-out; + box-shadow: 0px 7px 0.5rem 0px rgb(0 0 0 / 6%), inset 0px 0px 1.3rem rgba(0,0,0,.05); + + font-family: 'Material Symbols Outlined'; + color: black; + font-size: 2.3em; + font-weight: 100; + } + #__vconsole .vc-switch:hover { + cursor: pointer; + transform: scale(1.1); + transition: transform .1s ease-in-out, background .1s linear; + background: rgba(245, 245, 245, .8); + outline: rgba(0, 0, 0, .05) 1px solid; + } + #__vconsole .vc-switch[error] { + background: rgba(255,0,0,.2); + animation: vconsole-notify 1s ease-in-out; + line-height: 35px; + } + @keyframes vconsole-notify { + from { + transform: scale(1, 1); + } + 10% { + transform: scale(1.3, 1.3); + } + 70% { + transform: scale(1.4, 1.4); + } + to { + transform: scale(1, 1); + } + } + #__vconsole .vc-panel { + font-family: monospace; + font-size: 11px; + } + #__vconsole .vc-plugin-box.vc-actived { + height: 100%; + } + #__vconsole .vc-mask { + overflow: hidden; + } + `,M?.prepend(t),e===!0&&dt()<=0&&io(),console.log(`🌵 Debug console has loaded`)}},t.onerror=()=>{console.warn(`🌵 Debug console failed to load.`+(window.crossOriginIsolated?`This page is using cross-origin isolation, so external scripts can't be loaded.`:``)),P=!1,j=null},t.src=`https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js`,document.body.appendChild(t)}function fo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`needle-console`,`🌵 Inspect glTF`),t=()=>document.querySelector(`#__vc_plug_`+e._id+` iframe`);return e.on(`renderTab`,function(t){let n=globalThis[`needle:codegen_files`];if(!n||n.length===0)return;let r=globalThis[`needle:codegen_files`][0],i=r.indexOf(`?`);i>-1&&(r=r.substring(0,i));let a=location.protocol+`//`+location.host+location.pathname+`/`+r;e.fullUrl=`https://viewer.needle.tools?inspect&file=`+encodeURIComponent(a),t(``)}),e.on(`show`,function(){let n=t();n&&n.src!==e.fullUrl&&(n.src=e.fullUrl)}),e.on(`hide`,function(){let e=t();e&&(e.src=``)}),e.on(`addTopBar`,function(n){var r=[];r.push({name:`Open in new window ↗`,onClick:function(t){window.open(e.fullUrl,`_blank`),j?.hide()}}),r.push({name:`Reload`,onClick:function(n){let r=t();r&&(r.src=e.fullUrl)}}),r.push({name:`Fullscreen`,onClick:function(e){let n=t();n.requestFullscreen?n.requestFullscreen():n.webkitRequestFullscreen instanceof Function&&n.webkitRequestFullscreen()}}),n(r)}),e}var po=`padding: 10px; font-family: monospace;`,mo=`margin-bottom: 10px;`,F=`margin-bottom: 10px; margin-top: 15px;`,ho=`width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;`,go=`border: 1px solid rgba(0,0,0,0.1); padding: 5px;`,_o=go,vo=go+` word-break: break-all;`;function I(e,t=!1){t&&e.sort((e,t)=>!!t.value-+!!e.value);let n=``;n+=``;for(let t of e){let e=typeof t.value==`boolean`?t.value?`✅`:`❌`:t.value;n+=``}return n+=`
${t.label}${e}
`,n}function yo(){try{if(document.createElement(`canvas`).getContext(`webgl2`))return`✅`}catch{}return`❌`}function bo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`device-utilities`,`📱 Device Info`);return e.on(`renderTab`,function(e){let t=`
`,n=jo();t+=`

Device: ${n}

`,t+=I([{label:`💻 Desktop`,value:C.isDesktop()},{label:`📱 Mobile Device`,value:C.isMobileDevice()},{label:`🍎 iOS`,value:C.isiOS()},{label:`📱 iPad`,value:C.isiPad()},{label:`🤖 Android`,value:C.isAndroidDevice()},{label:`🦊 Mozilla XR`,value:C.isMozillaXR()},{label:`🌵 Needle App Clip`,value:C.isNeedleAppClip()},{label:`🍏 macOS`,value:C.isMacOS()},{label:`👓 VisionOS`,value:C.isVisionOS()},{label:`🧭 Safari`,value:C.isSafari()},{label:`🕶️ Meta Quest`,value:C.isQuest()},{label:`🔗 QuickLook AR Support`,value:C.supportsQuickLookAR()}],!0);let r=[],i=C.getiOSVersion();i&&r.push({label:`🍎 iOS Version`,value:i});let a=C.getChromeVersion();a&&r.push({label:`🌐 Chrome Version`,value:a});let o=C.getSafariVersion();o&&r.push({label:`🧭 Safari Version`,value:o}),r.length>0&&(t+=I(r,!1)),t+=`
`,t+=`
`,t+=`

User Agent Info

`;let s=[{label:`User Agent`,value:navigator.userAgent},{label:`Platform`,value:navigator.platform},{label:`App Version`,value:navigator.appVersion},{label:`User Agent Data`,value:navigator.userAgentData?`Platform: ${navigator.userAgentData.platform}, Mobile: ${navigator.userAgentData.mobile}`:`Not supported`},{label:`WebXR`,value:`xr`in navigator?`✅`:`❌`},{label:`WebGPU`,value:`gpu`in navigator?`✅`:`❌`},{label:`WebGL 2`,value:yo()}];t+=I(s,!1),t+=`
`,e(t)}),e}function xo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`graphics-info`,`🎨 Graphics Info`);return e.on(`renderTab`,async function(e){let t=`
`,n=So();n.length>0&&(t+=`

General GPU Info

`,t+=I(n,!1));let r=wo();r.length>0&&(t+=`

WebGL

`,t+=I(r,!1));let i=To();i.length>0&&(t+=`

WebGL 2 Features

`,t+=I(i,!1));let a=Eo();a.length>0&&(t+=`

WebGL Limits

`,t+=I(a,!1));let o=Do();o.length>0&&(t+=`

Texture Formats

`,t+=I(o,!1));let s=await Oo();if(s.length>0&&(t+=`

WebGPU

`,t+=I(s,!1)),C.isSafari()){let e=Ao();e.length>0&&(t+=`

Safari GPU Info

`,t+=I(e,!1))}t+=`
`,e(t)}),e}function So(){let e=[],t=window.devicePixelRatio;e.push({label:`Device Pixel Ratio`,value:t.toString()}),e.push({label:`Width (px)`,value:(window.innerWidth*t).toString()}),e.push({label:`Height (px)`,value:(window.innerHeight*t).toString()});let n=C.isMobileDevice()?150:96,r=screen.width/n,i=screen.height/n,a=r*2.54,o=i*2.54;e.push({label:`Estimated Width (cm)`,value:a.toFixed(1)}),e.push({label:`Estimated Height (cm)`,value:o.toFixed(1)});let s=ko();if(s){e.push({label:`GPU`,value:s.renderer}),e.push({label:`Driver`,value:s.vendor}),e.push({label:`ANGLE`,value:s.angle||`Not detected`});let t=Co(s.renderer);t&&(t.manufacturer&&e.push({label:`Manufacturer`,value:t.manufacturer}),t.cardVersion&&e.push({label:`Card Version`,value:t.cardVersion}),t.brand&&e.push({label:`Brand`,value:t.brand}),e.push({label:`Integrated`,value:t.integrated?`Yes`:`No`}),t.layer&&e.push({label:`WebGL Layer`,value:t.layer}))}return e}function Co(e){if(!e)return null;let t=(e,t)=>{let n=t.match(e);return n&&n[0]},n=t(/(ANGLE)/g,e)||void 0,r=t(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,e)||e,i=r.split(` `);i.shift();let a=t(/(NVIDIA|AMD|Intel)/g,r)||void 0;return{manufacturer:a,cardVersion:i.length>0?i.pop():void 0,brand:i.length>0?i.join(` `):void 0,integrated:a===`Intel`,layer:n,card:r}}function wo(){let e=[],t=ko();return t&&(e.push({label:`📊 WebGL Version`,value:t.version}),e.push({label:`🎮 WebGL 2 Available`,value:yo()})),e}function To(){let e=[];try{let t=document.createElement(`canvas`).getContext(`webgl2`);if(!t)return e;e.push({label:`Float Color Buffer`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`Anisotropic Filtering`,value:t.getExtension(`EXT_texture_filter_anisotropic`)?`✅`:`❌`}),e.push({label:`Float Texture Linear`,value:t.getExtension(`OES_texture_float_linear`)?`✅`:`❌`}),e.push({label:`S3TC Compression`,value:t.getExtension(`WEBGL_compressed_texture_s3tc`)?`✅`:`❌`}),e.push({label:`ETC Compression`,value:t.getExtension(`WEBGL_compressed_texture_etc`)?`✅`:`❌`}),e.push({label:`PVRTC Compression`,value:t.getExtension(`WEBGL_compressed_texture_pvrtc`)?`✅`:`❌`}),e.push({label:`ASTC Compression`,value:t.getExtension(`WEBGL_compressed_texture_astc`)?`✅`:`❌`})}catch{}return e}function Eo(){let e=[];try{let t=document.createElement(`canvas`),n=t.getContext(`webgl2`)||t.getContext(`webgl`);if(!n)return e;let r=n instanceof WebGL2RenderingContext;e.push({label:`📏 Max Texture Size`,value:n.getParameter(n.MAX_TEXTURE_SIZE).toString()}),e.push({label:`🎨 Max Renderbuffer Size`,value:n.getParameter(n.MAX_RENDERBUFFER_SIZE).toString()}),e.push({label:`🔗 Max Vertex Attribs`,value:n.getParameter(n.MAX_VERTEX_ATTRIBS).toString()}),e.push({label:`🎯 Max Texture Units`,value:n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS).toString()}),r&&(e.push({label:`⚡ Max Samples`,value:n.getParameter(n.MAX_SAMPLES).toString()}),e.push({label:`🔄 Max Uniform Buffer Bindings`,value:n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),e.push({label:`📐 Max 3D Texture Size`,value:n.getParameter(n.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return e}function Do(){let e=[];try{document.createElement(`canvas`).getContext(`webgl`)&&(e.push({label:`WebGL 1 RGBA`,value:`✅`}),e.push({label:`WebGL 1 RGB`,value:`✅`}));let t=document.createElement(`canvas`).getContext(`webgl2`);t&&(e.push({label:`WebGL 2 RGBA32F`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`WebGL 2 RGB32F`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`WebGL 2 R11F_G11F_B10F`,value:`✅`}),e.push({label:`WebGL 2 RGB565`,value:`✅`}),e.push({label:`WebGL 2 RGB5_A1`,value:`✅`}),e.push({label:`WebGL 2 RGBA4444`,value:`✅`}))}catch{}return e}async function Oo(){let e=[];if(!(`gpu`in navigator))return e.push({label:`🚀 WebGPU Support`,value:`❌ Not supported`}),e;e.push({label:`🚀 WebGPU Support`,value:`✅ Supported`});try{let t=await navigator.gpu.requestAdapter();if(!t)return e.push({label:`🎯 Adapter`,value:`No adapter available`}),e;e.push({label:`🎯 Adapter`,value:t.name||`Unknown Adapter`});let n=await t.requestDevice();e.push({label:`🔧 Device`,value:n.label||`WebGPU Device`}),e.push({label:`📏 Max Texture 2D`,value:n.limits.maxTextureDimension2D.toString()}),e.push({label:`📐 Max Texture 3D`,value:n.limits.maxTextureDimension3D.toString()}),e.push({label:`📊 Max Texture Array Layers`,value:n.limits.maxTextureArrayLayers.toString()}),e.push({label:`💾 Max Buffer Size`,value:`${(n.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),e.push({label:`🔗 Max Bind Groups`,value:n.limits.maxBindGroups.toString()})}catch(t){e.push({label:`❌ Error`,value:t.message})}return e}function ko(){try{let e=document.createElement(`canvas`),t=e.getContext(`webgl2`)||e.getContext(`webgl`);if(!t)return null;let n=t.getExtension(`WEBGL_debug_renderer_info`),r=n?t.getParameter(n.UNMASKED_RENDERER_WEBGL):t.getParameter(t.RENDERER),i=n?t.getParameter(n.UNMASKED_VENDOR_WEBGL):t.getParameter(t.VENDOR),a=t.getParameter(t.VERSION),o;if(r&&r.includes(`ANGLE`)){let e=r.match(/ANGLE \(([^)]+)\)/);e&&(o=e[1])}return{renderer:r,vendor:i,version:a,angle:o}}catch{return null}}function Ao(){let e=[];try{let t=document.createElement(`canvas`).getContext(`webgl`);if(t){let n=t.getExtension(`WEBGL_debug_renderer_info`);if(n){let r=t.getParameter(n.UNMASKED_RENDERER_WEBGL);r&&r.includes(`Apple`)&&e.push({label:`🍎 Apple GPU`,value:r})}}}catch{}try{let t=document.createElement(`canvas`).getContext(`webgl`);t&&(t.getSupportedExtensions()||[]).includes(`WEBGL_compressed_texture_pvrtc`)&&e.push({label:`🗜️ PVRTC Support`,value:`✅`})}catch{}return e}function jo(){return C.isQuest()?`Meta Quest`:C.isVisionOS()?`Vision Pro`:C.isiOS()?C.isiPad()?`iPad`:`iPhone/iPod`:C.isAndroidDevice()?`Android Device`:C.isMozillaXR()?`Mozilla XR Browser`:C.isNeedleAppClip()?`Needle App Clip`:C.isMacOS()?`Mac`:C.isDesktop()?`Desktop PC`:`Unknown Device`}function Mo(){return document.querySelector(`#__vconsole .vc-switch`)||null}function No(){return document.querySelector(`#__vconsole`)||null}var Po=new class extends T{constructor(){super([t,S],`ColorSerializer`)}onDeserialize(e){if(e!=null)return e.a===void 0?e.alpha===void 0?new t(e.r,e.g,e.b):new S(e.r,e.g,e.b,e.alpha):new S(e.r,e.g,e.b,e.a)}onSerialize(e){if(e!=null)return e.a===void 0?{r:e.r,g:e.g,b:e.b}:{r:e.r,g:e.g,b:e.b,a:e.a}}},Fo=new class extends T{constructor(){super([ce],`EulerSerializer`)}onDeserialize(e,t){if(e!=null){if(e.order)return new ce(e.x,e.y,e.z,e.order);if(e.x!=null)return new ce(e.x,e.y,e.z)}}onSerialize(e,t){return{x:e.x,y:e.y,z:e.z,order:e.order}}},Io=new class extends T{constructor(){super(d,`ObjectSerializer`)}onSerialize(e,t){if(t.objectToNode!==void 0&&e.uuid){let n=t.objectToNode[e.uuid];return D&&console.log(n,e.name,e.uuid),{node:n}}}onDeserialize(e,t){if(typeof e==`string`){if(e.endsWith(`.glb`)||e.endsWith(`.gltf`)){if(t.serializable instanceof Array&&t.serializable.includes(me))return;h()&&E(`Detected wrong usage of @serializable with Object3D or GameObject. Instead you should use AssetReference here! Please see the console for details.`);let e=t.target?.constructor?.name;console.warn(`Wrong usage of @serializable detected in your script \"${e}\"\n\nIt looks like you used @serializable(Object3D) or @serializable(GameObject) for a prefab or scene reference which is exported to a separate glTF file.\n\nTo fix this please change your code to:\n\n@serializable(AssetReference)\n${t.path}! : AssetReference;\n\0`)}return}if(e){if(e.node!==void 0&&t.nodeToObject){let n=t.nodeToObject[e.node];return D&&console.log(`Deserialized object reference?`,e,n,t?.nodeToObject),n||console.warn(`Did not find node: `+e.node,t.nodeToObject,t.object),n}else if(e.guid){if(!t.context){console.error(`Missing context`);return}let n,r=t.gltf?.scene;return r&&(n=x.findByGuid(e.guid,r)),n||=x.findByGuid(e.guid,t.context.scene),n?(n&&n.isComponent===!0&&(D&&console.warn(`Deserialized object reference is a component`),n=n.gameObject),D&&console.log(`Deserialized object reference?`,e,n,t?.nodeToObject)):((h()||D)&&console.warn(`Could not resolve object reference`,t.path,e,t.target,t.context.scene),e.could_not_resolve=!0),n}}}},Lo=new class extends T{constructor(){super([Vt,Vt],`ComponentSerializer`)}onSerialize(e,t){if(e?.guid)return{guid:e.guid}}onDeserialize(e,t){if(e?.guid){if(e.___persistentAsset){D&&console.log(`Skipping component deserialization because it's a persistent asset`,e);return}let n=t.path;D&&console.log(e.guid,t.root,t.object,t.target);let r=this.findObjectForGuid(e.guid,t.root);if(r||t.context&&(r=this.findObjectForGuid(e.guid,t.context?.scene),r))return r;(h()||D)&&console.warn(`Could not resolve component reference: "`+n+`" using guid `+e.guid,t.target),e.could_not_resolve=!0;return}}findObjectForGuid(e,t){if(t.guid===e)return t;let n=x.foreachComponent(t,t=>{if(t.guid===e)return t},!1);if(n!==void 0)return n;for(let n=0;n0;if(e&&i){let t=()=>{let t=r.method[0].toUpperCase()+r.method.slice(1);if(typeof e[t]==`function`){console.warn(`EventList method:\nCould not find method ${r.method} on object ${e.name}. Please rename ${r.method} to ${t}?\n`,e[t],` + in script: `,e),E(`EventList methods must start with lowercase letter, see console for details`);return}else console.warn(`EventList method:\nCould not find method ${r.method} on object ${e.name}`,e,typeof e[r.method])};if(typeof e[r.method]!=`function`){let n=!1,i=e;for(;i;){let e=Object.getOwnPropertyDescriptor(i,r.method);if(e&&(e.writable===!0||e.set)){n=!0;break}i=Object.getPrototypeOf(i)}!n&&(h()||D)&&t()}}function a(e){if(typeof e==`object`){let n=Io.onDeserialize(e,t);if(n||=Lo.onDeserialize(e,t),n)return n}return e}if(e){let t=r.argument;if(t===void 0?r.arguments!==void 0&&(t=r.arguments.map(a)):t=a(t),e[r.method]===void 0)console.warn(`EventList method not found: \"${r.method}\" on ${e?.name}`);else{t!==void 0&&!Array.isArray(t)&&(t=[t]);let i=new pt(e,r.method,t,r.enabled);n.push(i)}}else h()&&console.warn(`[Dev] EventList: Could not find event listener in scene (${t.object?.name})`,r)}let r=new _(n);D&&console.log(r);let i=t.target;return i!==void 0&&t.path!==void 0&&r.setEventTarget(t.path,i),r}}},zo=new WeakMap,Bo=ae.prototype.clone;ae.prototype.clone=function(){let e=Bo.call(this);return zo.has(e)||zo.set(e,this),e};var Vo=class extends T{constructor(){super([Me,a])}onSerialize(e,t){}onDeserialize(e,t){if(e instanceof ae&&t.type===Me){let t=e;zo.has(t)&&(t=zo.get(t)),t.isRenderTargetTexture=!0,t.flipY=!0,t.offset.y=1,t.repeat.y=-1,t.needsUpdate=!0,t.mipmaps=[],t instanceof i&&(t.isCompressedTexture=!1,t.format=c);let n=new Me(t.image.width,t.image.height,{colorSpace:r});return n.texture=t,n}}};new Vo;var Ho=class extends T{constructor(){super([URL])}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`&&e.length>0)return Nt(t.gltfId,e)}};new Ho;var Uo=!1;function Wo(){Uo||(Uo=!0,ut.registerCallback(at.ContextCreated,e=>{let t=e.context.domElement.getAttribute(`autoplay`);if(t!==void 0&&(t===``||t===`true`||t===`1`)&&e.files)for(let t of e.files)x.foreachComponent(t.file.scene,e=>{if(e.enabled!==!1){if(e instanceof vr&&e.playAutomatically||e instanceof Xe||e instanceof oa&&e.playOnAwake===!0)return!0;if(e instanceof vr)return e.playAutomatically=!0,!0;if(e instanceof oa)return e.playOnAwake=!0,!0}},!0)!==!0&&Ze.autoplayAnimations(t.file)}))}var L=b(`debugmissingcamera`),Go=!1;function Ko(){Go||(Go=!0,ut.registerCallback(at.MissingCamera,e=>{L&&console.warn(`Creating missing camera`);let n=e.context.scene,r=new f;r.name=`Default Fallback Camera`,n.add(r);let i=new he;if(i.sourceId=e.files?.[0]?.src??`unknown`,i.fieldOfView=35,e.context.domElement.getAttribute(`transparent`)!=null)i.clearFlags=Zt.Uninitialized;else if(e.context.domElement.getAttribute(`background-image`)?.length||e.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=Zt.Skybox;else{if(i.clearFlags=Zt.SolidColor,!e.context.domElement.getAttribute(`background-color`)){let e=`#efefef`;window.matchMedia(`(prefers-color-scheme: dark)`).matches&&(e=`#1f1f1f`),n.background=new t(e)}if(!n.environment){let t=new oe(e.context.renderer),r=new Si(`neutral`);n.environment=t.fromScene(r,.025).texture}}let a=Ot(r,i,!0);return r.position.x=0,r.position.y=1,r.position.z=2,e.context.domElement?.cameraControls!=0&&qo(e.context,a),a}),ut.registerCallback(at.ContextCreated,e=>{if(!e.context.mainCamera){L&&console.log(`Will not auto-fit because a default camera exists`);return}if(e.context.domElement?.cameraControls==1){if(an(e.context.mainCamera)?.isCameraController==1){L&&console.log(`Will not auto-fit because a camera controller exists`);return}qo(e.context)}}))}function qo(e,t){t??=e.mainCameraComponent;let n=t?.gameObject;if(L&&console.log(`Creating default camera controls`,t?.name),n){let r=it(n,Ce);r.sourceId=t?.sourceId??`unknown`;let i=e.domElement.getAttribute(`auto-rotate`);r.autoRotate=i!=`0`&&i?.toLowerCase()!=`false`;let a=Number.parseFloat(i||`.5`);r.autoRotateSpeed=isNaN(a)?.5:a,L&&console.log(`Auto-rotate`,r.autoRotate,`speed:`,r.autoRotateSpeed);let o=e.domElement.getAttribute(`auto-fit`);r.autoFit=o!==`0`&&o?.toLowerCase()!=`false`,r.autoTarget=!0}else console.warn(`Missing camera object, can not add orbit controls`)}function Jo(){ze.registerWaitForInteraction(()=>{let e=ie.getContext();e.addEventListener(`statechange`,()=>{setTimeout(()=>{let t=e.state;(t===`suspended`||t===`interrupted`)&&e.resume().then(()=>{console.log(`AudioContext resumed successfully`)}).catch(e=>{console.log(`Failed to resume AudioContext: `+e)})},500)})})}var R=D;b(`debugtypestore`)&&console.log(fe);function Yo(e,t){let n=ft(e,t);return n===void 0?null:n}var Xo=new De,Zo=Symbol(`deserialize-queue`);async function Qo(e,t,n,r=null,i){if(!n){console.debug(`Can not create component instances: gltf is null`);return}let a=[],o=r;typeof o==`number`&&(o=new yt(r));let s=t.indexOf(`?`);t=s===-1?t:t.substring(0,s);let c=new Ie(n.scene);c.gltfId=t,c.context=e,c.gltf=n,c.nodeToObject=i?.nodeToObjectMap,c.implementationInformation=Xo;let l=e[Zo];if(l||=e[Zo]=[],n.scenes)for(let e of n.scenes)await ts(c,e,l,a,0);if(n.children)for(let e of n.children)await ts(c,e,l,a,0);e.new_scripts_pre_setup_callbacks.push(()=>{let t=e[Zo];if(t){for(let e of t)ns(e,c);t.length=0}if(o){let e={},t=[];es(n,o,e,t);for(let r of n.scenes)es(r,o,e,t);for(let n of t)n.resolveGuids(e)}})}var $o=Symbol(`original-component-name`),z=new Map;function es(e,t,n,r){if(t===null||!e)return;let i=e.guid,a=e.guid;if(a?.length&&(z.has(a)||(R&&console.log(`Creating InstanceIdProvider with key "`+a+`" for object `+e.name),z.set(a,new yt(a)))),e.guid=(a&&z.get(a)||t).generateUUID(),i&&i!==`invalid`&&(n[i]=e.guid),e&&e.userData&&e.userData.components)for(let i of e.userData.components){if(i===null)continue;let e=i.guid;e?z.has(e)||(R&&console.log(`Creating InstanceIdProvider with key "`+e+`" for component `+i[$o]),z.set(e,new yt(e))):R&&console.warn(`Can not create IdProvider: component `+i[$o]+` has no guid`,i.guid);let a=z.get(e)||t,o=i.guid;i.guid=a.generateUUID(),o&&o!==`invalid`&&(n[o]=i.guid),i.resolveGuids&&r.push(i)}if(e.children)for(let i of e.children)es(i,t,n,r)}var B=[];async function ts(e,t,n,r,i){if(!t)return;let a=t.userData;if(a){let r=a.builtin_components;if(r&&r.length>0)for(let i of r)try{if(i===null)continue;let r=fe.get(i.name);if(r||=await fe.getAsync(i.name),r){let a=new r;a.sourceId=e.gltfId,Fe(a,i,e.implementationInformation),a.context=e.context,`guid`in i&&(a[Pe]=i.guid),a[$o]=i.name,Ot(t,a,!1),n.push({instance:a,compData:i,obj:t}),a.isCamera&&e.context&&e.context.mainCamera===null&&a.tag===`MainCamera`&&e.context.setCurrentCamera(a),e.context?.physics?.engine?.isInitialized===!1&&(a.isCollider||a.isRigidbody)&&e.context?.physics.engine?.initialize()}else R&&console.debug(`unknown component: `+i.name),B.includes(i.name)||B.push(i.name)}catch(e){console.error(i.name+` - `+e.message,e)}}if(t.children)for(let a of t.children)await ts(e,a,n,r,i+1);if(B.length>0&&i===0){let e=B.join(`, `);console.warn(`Unknown components in scene: ${e}`),B.length=0,Ae()&&zt(`Unknown components in scene:\n\n${e}\n\nThis could mean you forgot to add a npmdef to your ExportInfo\ndocumentation`,{type:Ne.Warn})}}function ns(e,t){let{instance:n,compData:r,obj:i}=e;t.object=i,t.target=n,mt(n,r,t),R&&console.debug(`add `+r.name,r,n)}var rs=class{createBuiltinComponents(e,t,n,r,i){return Qo(e,t,n,r,i)}writeBuiltinComponentData(e,t){return Yo(e,t)}parseSync(e,t,n,r){return ls(e,t,n,r)}loadSync(e,t,n,r,i){return us(e,t,n,r,i)}};function is(){We(rs)}var as=b(`printGltf`)||b(`printgltf`),os=b(`debugfileformat`);async function ss(e,t,n){let r=await gi(e,{useExtension:!0})||`unknown`;os&&console.debug(`Determined file type: '${r}' for url '${e}'`,{registeredModelLoaderCallbacks:si});for(let n of si){let{callback:i}=n,a=i({context:t,url:e,mimetype:r});if(a instanceof Promise&&await a,a)return console.debug(`Using custom loader (${n.name||`unnamed`}) for ${r} at '${e}'`),a}switch(r){case`unsupported`:return null;default:case`unknown`:{console.warn(`Unknown file type (${r}). Needle Engine will fallback to the GLTFLoader - To support more model formats please create a Needle loader plugin.\nUse import { NeedleEngineModelLoader } from \"@needle-tools/engine\" namespace to register your loader.`,e);let i=new A;return await hr(i,t,e,n),i}case`model/fbx`:case`model/vnd.autodesk.fbx`:return new cn;case`model/obj`:return new ln;case`model/vnd.usdz+zip`:case`model/vnd.usd+zip`:case`model/vnd.usda+zip`:return console.warn(r.toUpperCase()+` files are not supported.`),null;case`model/gltf+json`:case`model/gltf-binary`:case`model/vrm`:{let r=new A;return await hr(r,t,e,n),r}case`application/materialx+xml`:return new jn}}function cs(e,t){return us(t?.context||_t.Current,e,e,t?.seed||null,t?.onprogress)}async function ls(e,t,n,r){typeof n!=`string`&&(console.warn(`Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file`,n,typeof n),n=``),as&&console.log(`Parse glTF`,n);let i=await ss(n,e,n);if(!i)return;let{componentsExtension:a}=ds(i,e);if(i instanceof ln){typeof t!=`string`&&(t=new TextDecoder().decode(t));let o=i.parse(t);return await V(i,e,n,o,r,a)}if(!(i instanceof A)){if(!(`parse`in i)||typeof i.parse!=`function`){console.error(`Loader does not support parse`);return}let o=i.parse(t,n);return await V(i,e,n,o,r,a)}return new Promise((o,s)=>{try{let s=n.split(`?`)[0].trimEnd(),c=s.split(`/`);c.length>0&&c[c.length-1]!==``&&c.pop(),s=c.join(`/`),s.endsWith(`/`)||(s+=`/`),i.resourcePath=s,i.parse(t,``,async t=>{o(await V(i,e,n,t,r,a))},e=>{console.error(`Loading asset at "`+n+`" failed +`,e),o(void 0)})}catch(e){console.error(e),s(e)}})}async function us(e,t,n,r,i){ps(t);let a=await ss(t,e,n);if(!a)return;let{componentsExtension:o}=ds(a,e);return a instanceof A?new Promise((s,c)=>{try{a.load(t,async t=>{s(await V(a,e,n,t,r,o))},e=>{i?.call(a,e)},e=>{console.error(`Loading asset at "`+t+`" failed +`,e),s(void 0)})}catch(e){console.error(e),c(e)}}):await V(a,e,t,await a.loadAsync(t,i),r,o)}function ds(e,t){let n=_n(e);return e instanceof A&&Vn(e,t),{componentsExtension:n}}async function V(e,n,r,i,a,o){if(as&&console.warn(`Loaded`,r,i),i==null)return console.error(`Loaded model is null '${r}' - please make sure the loader is registered correctly`),{scene:new d,animations:[],scenes:[]};if(typeof i!=`object`)return console.error(`Loaded model is not an object '${r}' - please make sure the loader is registered correctly`),{scene:new d,animations:[],scenes:[]};if(i instanceof d)i={scene:i,animations:i.animations,scenes:[i]};else if(i instanceof u){let e=new se({color:new t(14540253)}),n=new ne(i,e);i={scene:n,animations:[],scenes:[n]}}else Array.isArray(i.scenes)===!1&&console.error(`[Needle Engine] The loaded model object does not have a scenes property '${r}' - please make sure the loader is registered correctly and three.js is not imported multiple times.`);return r.includes(`?`)&&(r=r.split(`?`)[0]),ms(e,i),je(i)&&(yn(r,i,n),await be().createBuiltinComponents(n,r,i,a,o||void 0)),await fs(i.scene,n,n.mainCamera),i}async function fs(e,t,n){n||=t.mainCamera;try{n?await t.renderer.compileAsync(e,n,t.scene).catch(e=>{console.warn(e.message)}):Se(e,t)}catch(e){console.warn(e?.message||e)}}function ps(e){if(new URL(e,window.location.href).href.startsWith(`file://`)){let e=`Hi - it looks like you are trying to load a local file which will not work. You need to use a webserver to serve your files. +Please refer to the documentation on https://docs.needle.tools or ask for help in our discord community`;zt(e),console.warn(e)}}function ms(e,t){if(`scenes`in t){for(let e of t.scenes)if(e&&!e.animations?.length)for(let n of t.animations)e.animations.includes(n)||e.animations.push(n)}if(e instanceof cn||e instanceof ln){let e=t;e instanceof d||(e=t.scene||t.scenes.find(e=>e)),e.traverse(e=>{let t=e;t?.isMesh&&ye(t,t.material)})}}var hs=!1;function gs(){hs||(hs=!0,Object.defineProperty(f.prototype,`fov`,{get:function(){return this._fov},set:function(e){let t=e!==this._fov;this._fov=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}),Object.defineProperty(f.prototype,`near`,{get:function(){return this._near},set:function(e){let t=e!==this._near;this._near=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}),Object.defineProperty(f.prototype,`far`,{get:function(){return this._far},set:function(e){let t=e!==this._far;this._far=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}))}var _s=!1;function vs(){_s||(_s=!0,n.prototype.slerp=function(e,t){return Re(this,e,t)},Oe(n))}var ys=h(),bs=class extends HTMLElement{static observedAttributes=[`ar`,`vr`,`quicklook`,`qrcode`];constructor(){super(),this.removeEventListener(`click`,this.#l),this.addEventListener(`click`,this.#l)}attributeChangedCallback(e,t,n){this.#s()}#e;#t;#n;#r;#i;#a;#o;#s(){if(this.#r?.remove(),this.getAttribute(`ar`)!=null)this.#i??=new Br,this.#r=this.#i.createARButton(),this.setAttribute(`aria-label`,`Enter augmented reality mode`);else if(this.getAttribute(`vr`)!=null)this.#i??=new Br,this.#r=this.#i.createVRButton(),this.setAttribute(`aria-label`,`Enter virtual reality mode`);else if(this.getAttribute(`quicklook`)!=null)this.#i??=new Br,this.#r=this.#i.createQuicklookButton(),this.setAttribute(`aria-label`,`View in AR with Apple Quick Look`);else if(this.getAttribute(`qrcode`)!=null)this.#a??=new It,this.#r=this.#a.createQRCode({anchorElement:this}),this.setAttribute(`aria-label`,`Share application with QR code`);else{ys?console.warn(`No button type specified for . Use either ar, vr or quicklook attribute.`):console.debug(`No button type specified for . Use either ar, vr or quicklook attribute.`),this.setAttribute(`aria-label`,`Needle Button with no specified type`);return}this.#e??=this.attachShadow({mode:`open`}),this.#t??=document.createElement(`slot`),this.#n??=document.createElement(`style`),this.#n.innerHTML=` + button { + all: unset; + } + `,this.getAttribute(`unstyled`)??(this.#n.innerHTML+=` + :host { + display: inline-flex; + align-items: center; + justify-content: center; + width: fit-content; + + padding: 0.4rem .5rem; + border-radius: 100vw; + + background: rgba(245, 245, 245, .8); + backdrop-filter: blur(10px); + + cursor: pointer; + color: black; + outline: rgba(0,0,0,.05) 1px solid; + + transition: all .2s; + } + :host(:hover) { + background: rgba(255, 255, 255, 1); + transition: background .2s; + } + slot { + display: flex; + align-items: center; + justify-content: center; + gap: .5rem; + } +`),this.#t.innerHTML=this.#r.innerHTML,this.#t.style.cssText=`display: flex; align-items: center; justify-content: center;`,this.#r.innerHTML=this.#t.outerHTML,this.#e.innerHTML=this.#r.outerHTML,this.#e.prepend(this.#n),we(xe,{element:this.#e}),this.#o?.disconnect(),this.#o??=new MutationObserver(()=>this.#c()),this.#o.observe(this.#r,{attributes:!0}),ys&&console.log(`Needle Button updated`,this)}#c(){this.#r&&(this.#r.style.display===`none`?this.style.display=`none`:this.style.display===`none`&&(this.style.display=``))}#l=e=>{ys&&console.log(`Needle Button clicked`,{defaultPrevented:e.defaultPrevented,hasButton:!!this.#r}),!e.defaultPrevented&&this.#r&&this.#r.click()}},H=b(`debugoverlay`),xs=`quit-ar`,Ss=class{get ARContainer(){return this.arContainer}arContainer=null;currentSession=null;_createdAROnlyElements=[];_reparentedObjects=[];contentElement=null;originalDomOverlayParent=null;requestEndAR=()=>{this.onRequestedEndAR()};onBegin(e,t,n){if(this.currentSession=n,this.arContainer=t,C.isMozillaXR()||C.isNeedleAppClip()){let n=e.domElement.children;for(let e=0;e{let t=e.renderer.domElement;t&&e.domElement.shadowRoot?.prepend(t);let n=document.querySelectorAll(`*`);for(var r=0;rconsole.log(`Clicked quit-ar button`));return}t.addEventListener(`click`,this.requestEndAR),H&&t.addEventListener(`click`,()=>console.log(`Clicked fallback close button`));let r=document.createElement(`div`);r.style.cssText=` + position: fixed; + top: 0; + right: 0; + z-index: 600; + pointer-events: all; + padding-top: env(safe-area-inset-top, 0px); + padding-right: calc(env(safe-area-inset-right, 0px) + 10px); + `,this.appendElement(r,t);var i=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);i.classList.add(`quit-ar-button`),i.setAttribute(`width`,`40px`),i.setAttribute(`height`,`40px`),i.style.cssText=` + background: rgba(255, 255, 255, .4); + -webkit-backdrop-filter: blur(8px); + backdrop-filter: blur(8px); + border-radius: 50%; + box-shadow: 0 0 5px rgba(0,0,0,.3); + outline: 1px solid rgba(255, 255, 255, .6); + display: flex; + justify-content: center; + align-items: center; + `,r.appendChild(i);var a=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);a.setAttribute(`d`,`M 12,12 L 28,28 M 28,12 12,28`),a.setAttribute(`stroke`,`#000000`),a.setAttribute(`stroke-width`,`2px`),a.style.cssText=` + /**filter: drop-shadow(0 0px 1.2px rgba(0,0,0,.7));**/ + `,i.appendChild(a),H&&console.log(`Created fallback close button`,i,e)}appendElement(e,t){return t.shadowRoot?t.shadowRoot.appendChild(e):t.appendChild(e)}},U=b(`debugloading`),W=b(`debugloadingrendering`);b(`debuglicense`);var Cs=class{className;additionalClasses},G=0,ws;function Ts(e){U&&console.log(e.progress.loaded.toFixed(0)+`/`+e.progress.total.toFixed(0),e);let t=e.count,n=e.progress.total;n===0||n===void 0?(ws!==e.name&&(G=0),ws=e.name,G+=(1-G)*.001,U&&E(`Loading `+e.name+` did not report total size`)):G=e.progress.loaded/n;let r=e.index/t+G/t;return g.clamp01(r)}var Es=class e{static LoadingContainerClassName=`loading`;loadingProgress=0;_element;_progress=0;_allowCustomLoadingElement=!0;_loadingElement;_loadingTextContainer=null;_loadingBar=null;_loadingBarFinishedColor=null;_messageContainer=null;_loadingElementOptions;constructor(e,t){this._element=e,this._loadingElementOptions=t}async onLoadingBegin(t){let n=this._element.shadowRoot||this._element;if(U&&console.warn(`Begin Loading`),!this._loadingElement){for(let t=0;t{this.loadingProgress>=.95&&!W&&(e=.9),this._progress=g.lerp(this._progress,this.loadingProgress,e*this.loadingProgress),this.updateDisplay()},e)}onDoneLoading(){if(this._loadingElement){U&&console.log(`Hiding loading element`);let e=this._loadingElement;e.animate([{opacity:1},{opacity:0}],{duration:200,easing:`ease-in-out`}).addEventListener(`finish`,()=>{e.style.display=`none`,e.remove()})}this._progressLoop&&clearInterval(this._progressLoop),this._progressLoop=null}updateDisplay(){let e=this._progress,t=(e*100).toFixed(0)+`%`;this._loadingBar&&(this._loadingBar.style.width=e*100+`%`,e>=1&&this._loadingBarFinishedColor&&(this._loadingBar.style.background=this._loadingBarFinishedColor)),this._loadingTextContainer&&(this._loadingTextContainer.textContent=t)}createLoadingElement(t){U&&!t&&console.log(`Creating loading element`),this._loadingElement=t||document.createElement(`div`);let n=this._element.getAttribute(`loading-style`);(!n||n===`auto`)&&(n=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);let r=Xt();if(!t){this._loadingElement.style.position=`absolute`,this._loadingElement.style.width=`100%`,this._loadingElement.style.height=`100%`,this._loadingElement.style.left=`0`,this._loadingElement.style.top=`0`,this._loadingElement.style.overflow=`hidden`;let e=this._element.getAttribute(`loading-background`);e?this._loadingElement.style.background=e:this._loadingElement.style.backgroundColor=`transparent`,this._loadingElement.style.display=`flex`,this._loadingElement.style.alignItems=`center`,this._loadingElement.style.justifyContent=`center`,this._loadingElement.style.zIndex=`0`,this._loadingElement.style.flexDirection=`column`,this._loadingElement.style.pointerEvents=`none`,this._loadingElement.style.color=`white`,this._loadingElement.style.fontFamily=`system-ui, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"`,this._loadingElement.style.fontSize=`1rem`,n===`light`?this._loadingElement.style.color=`rgba(0,0,0,.6)`:this._loadingElement.style.color=`rgba(255,255,255,.3)`}let i=this._loadingElementOptions?.className??e.LoadingContainerClassName;if(this._loadingElement.classList.add(i),this._loadingElementOptions?.additionalClasses)for(let e of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(e);let a=document.createElement(`div`);a.style.cssText=` + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + pointer-events: none; + `,this._loadingElement.appendChild(a);let o=this._element.getAttribute(`poster`);if(o!==null&&o!==`0`){let e=document.createElement(`div`),t=o?.length?`0px`:`50px`;e.style.cssText=` + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: -1; + overflow: hidden; + + margin: -${t}; + background: url('${o?.length?o:`/include/poster.webp`}') center center no-repeat; + background-size: cover; + filter: blur(${t}); + `,this._loadingElement.appendChild(e)}let s=document.createElement(`img`);if(s.style.userSelect=`none`,s.style.objectFit=`contain`,s.style.transform=`translateY(30px)`,s.style.opacity=`0.0000001`,s.style.transition=`transform 1s ease-out .2s, opacity .3s ease-in-out .2s`,s.src=Ye,r&&this._element){let e=this._element.getAttribute(`logo-src`);e&&(s.src=e,setTimeout(()=>{s.style.opacity=`1`,s.style.transform=`translateY(0px)`},1))}s.style.width=`80%`,s.style.height=`min(1000px, max(15%, 50px))`,a.appendChild(s);let c=document.createElement(`div`);c.style.cssText=` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + opacity: 0; + transition: opacity 1s ease-in-out 4s; + `,setTimeout(()=>{c.style.opacity=`1`},1),this._loadingElement.appendChild(c);let l=document.createElement(`div`);return l.style.display=`flex`,l.style.width=`100%`,l.style.height=`5px`,l.style.position=`absolute`,l.style.left=`0`,l.style.top=`0px`,l.style.opacity=`0`,l.style.transition=`opacity 1s ease-in-out`,l.style.backgroundColor=`rgba(240,240,240,.5)`,setTimeout(()=>{l.style.opacity=`1`},1),this._loadingElement.appendChild(l),this._loadingBar=document.createElement(`div`),l.appendChild(this._loadingBar),this._loadingBar.style.backgroundAttachment=`fixed`,this._loadingBar.style.background=`#c4c4c4ab`,this._loadingBarFinishedColor=`#ddddddab`,this._loadingBar.style.width=`0%`,this._loadingBar.style.height=`100%`,this._loadingElement}},K=b(`debugwebcomponent`),Ds=`vr`,Os=`desktop`,ks=[`ar`,Ds,Os],q=`ar-session-active`,J=`desktop-session-active`,As=[`src`,`hash`,`camera-controls`,`dracoDecoderPath`,`dracoDecoderType`,`ktx2DecoderPath`,`public-key`,`version`,`tone-mapping`,`tone-mapping-exposure`,`background-blurriness`,`background-color`,`environment-intensity`,`focus-rect`,`loadstart`,`progress`,`loadfinished`],js=class extends HTMLElement{static get observedAttributes(){return As}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){let e=this.getAttribute(`camera-controls`);return e==null?null:!(e===null||e===`False`||e===`false`||e===`0`||e===`none`)}set cameraControls(e){e===null?this.removeAttribute(`camera-controls`):this.setAttribute(`camera-controls`,e?`true`:`false`)}getContext(){return new Promise((e,t)=>{if(this._context&&this.loadingFinished)e(this._context);else{let t=()=>{this.removeEventListener(`loadfinished`,t),this._context&&this.loadingFinished&&e(this._context)};this.addEventListener(`loadfinished`,t)}})}get context(){return this._context}_context;_overlay_ar;_loadingProgress01=0;_loadingView;_previousSrc=null;_didFullyLoad=!1;_didInitialize=!1;constructor(){super(),this.attachShadow({mode:`open`,delegatesFocus:!0});let e=document.createElement(`template`);e.innerHTML=` +
+ +
+
+ +
+`,this.shadowRoot.appendChild(e.content.cloneNode(!0)),we(Ge,{element:this.shadowRoot}),this.addEventListener(`ready`,this.onReady),this.addEventListener(`error`,this.onError)}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}initializeDom(){rt(),this.setAttribute(`role`,`application`),this.setAttribute(`aria-label`,`Needle Engine 3D scene`)}connectedCallback(){if(K&&console.log(` connected`),this.ensureInitialized(),this.setPublicKey(),this.setVersion(),(this.getAttribute(`tabindex`)===null||this.getAttribute(`tabindex`)===void 0)&&this.setAttribute(`tabindex`,`0`),this._overlay_ar=new Ss,this.getOrCreateContext(),this.addEventListener(`xr-session-started`,this.onXRSessionStarted),this.onSetupDesktop(),!this.getAttribute(`src`)){let e=globalThis[`needle:codegen_files`];K&&console.log(`src is null, trying to load from globalThis["needle:codegen_files"]`,e),e&&(K&&console.log(`globalThis["needle:codegen_files"]`,e),this.setAttribute(`src`,e))}K&&console.log(`src`,this.getAttribute(`src`));let e=this._loadId;setTimeout(()=>{this.isConnected!==!1&&e===this._loadId&&this.onLoad()},1)}disconnectedCallback(){this.removeEventListener(`xr-session-started`,this.onXRSessionStarted),this._didFullyLoad=!1;let e=this.getAttribute(`keep-alive`),t=e==null||e?.length>0&&e!==`true`&&e!==`1`;K&&console.warn(` disconnected, keep-alive: "`+e+`"`,typeof e,`Dispose=`,t),t?(K&&console.warn(` dispose`),this._context?.dispose(),this._context=null,this._lastSourceFiles=null,this._loadId+=1):K&&console.warn(` is not disposed because keep-alive is set`)}connectedMoveCallback(){}attributeChangedCallback(e,t,n){switch(K&&console.log(`attributeChangedCallback`,e,t,n),e){case`src`:K&&console.warn(` +changed from "`,t,`" to "`,n,`"`),this.onLoad();break;case`hash`:this._context&&(this._context.hash=n);break;case`loadstart`:case`progress`:case`loadfinished`:typeof n==`string`&&n.length>0&&(K&&console.log(e+` attribute changed`,n),this.registerEventFromAttribute(e,n));break;case`dracoDecoderPath`:K&&console.log(`dracoDecoderPath`,n),vn(n);break;case`dracoDecoderType`:n===`wasm`||n===`js`?(K&&console.log(`dracoDecoderType`,n),gn(n)):console.error(`Invalid dracoDecoderType`,n,`expected js or wasm`);break;case`ktx2DecoderPath`:K&&console.log(`ktx2DecoderPath`,n),Mn(n);break;case`tonemapping`:case`tone-mapping`:case`tone-mapping-exposure`:case`background-blurriness`:case`background-color`:case`environment-intensity`:this.applyAttributes();break;case`public-key`:n!=`npk_95953b9200a35d0aaefda4761b4646dd1e3a100122be365466f01340a7236289`&&this.setPublicKey();break;case`version`:n!=`5.0.3`&&this.setVersion();break;case`focus-rect`:{let e=this.getAttribute(`focus-rect`);if(e){let t=this.getOrCreateContext();if(e===null)t.setCameraFocusRect(null);else if(typeof e==`string`&&e.length>0){let n=document.querySelector(e);n||console.warn(`No element found for focus-rect selector: ${e}`),t.setCameraFocusRect(n instanceof HTMLElement?n:null)}else e instanceof HTMLElement?t.setCameraFocusRect(e):console.warn(`Invalid focus-rect value. Expected a CSS selector string or an HTMLElement.`,e)}}break}}get toneMapping(){return this.getAttribute(`tonemapping`)||this.getAttribute(`tone-mapping`)}_loadId=0;_abortController=null;_lastSourceFiles=null;_createContextPromise=null;getOrCreateContext(){return this._context||=(K&&console.warn(`Create new context`),new _t({domElement:this})),this._context}async onLoad(){if(!this.isConnected)return;let e=this.getOrCreateContext(),t=this.getSourceFiles();if(!this.checkIfSourceHasChanged(t,this._lastSourceFiles))return;this._abortController&&=(K&&console.warn(`Abort previous loading process`),this._abortController.abort(),null),this._lastSourceFiles=t;let n=++this._loadId;if((t==null||t.length<=0)&&(K&&console.warn(`Clear scene`,t),e.clear(),n!==this._loadId))return;let r=this.getAttribute(`alias`);this.classList.add(`loading`);let i=Et();this.ensureLoadStartIsRegistered();let a=this.dispatchEvent(new CustomEvent(`loadstart`,{detail:{context:e,alias:r},cancelable:!0}));if(i){let e=this.getAttribute(`hide-loading-overlay`);e!=null&&e!==`0`&&(a=!1)}a===!1&&!i&&(h()||(a=!0),console.warn(`Needle Engine: You need a commercial license to override the default loading view. Visit https://needle.tools/pricing`),h()&&E(`You need a commercial license to override the default loading view. This will not work in production.`)),!this._loadingView&&a&&(this._loadingView=new Es(this)),a&&(this._didFullyLoad===!0?setTimeout(()=>{this._loadingView&&this._loadingProgress01<.3&&this._loadId===n&&this._loadingView.onLoadingBegin(`begin load`)},300):this._loadingView?.onLoadingBegin(`begin load`)),K&&console.warn(`-------------- +Needle Engine: Begin loading `+n+` +`,t),this.onBeforeBeginLoading();let o=[],s={context:this._context,name:``,progress:{},index:0,count:t.length,totalProgress01:this._loadingProgress01},c=new CustomEvent(`progress`,{detail:s}),l=[],u=new AbortController;this._abortController=u;let ee={files:t,abortSignal:u.signal,onLoadingProgress:e=>{if(K&&console.debug(`Loading progress: `,e),u.signal.aborted)return;let t=e.index;!l[t]&&e.name&&(l[t]=Ms(e.name)),e.name=l[t],a&&this._loadingView?.onLoadingUpdate(e),s.name=e.name,s.progress=e.progress,this._loadingProgress01=Ts(e),s.totalProgress01=this._loadingProgress01,this.dispatchEvent(c)},onLoadingFinished:(e,t,n)=>{K&&console.debug(`Finished loading \"${t}\" (aborted? ${u.signal.aborted})`),!u.signal.aborted&&n&&o.push({src:t,file:n})}};Ns(this);let te=this.getAttribute(`hash`);te!=null&&(e.hash=te),e.alias=r,this._createContextPromise=e.create(ee);let ne=await this._createContextPromise;if(this.applyAttributes(),K&&console.warn(`-------------- +Needle Engine: finished loading `+n+` +`,t,`Aborted? ${u.signal.aborted}`),u.signal.aborted){console.log(`Loading finished but aborted...`);return}if(this._loadId!==n){console.log(`Load id changed during loading process`);return}this._loadingProgress01=1,a&&ne&&this._loadingView?.onLoadingUpdate(1,`creating scene`),this._didFullyLoad=!0,this.classList.remove(`loading`),this.classList.add(`loading-finished`),this.dispatchEvent(new CustomEvent(`loadfinished`,{detail:{context:this._context,src:r,loadedFiles:o}}))}applyAttributes(){let e=this.getOrCreateContext();if(e.renderer){let t=ct(this.toneMapping);t!==void 0&&(e.renderer.toneMapping=t);let n=this.getAttribute(`tone-mapping-exposure`);if(n!=null){let t=parseFloat(n);isNaN(t)||(e.renderer.toneMappingExposure=t)}}let t=this.getAttribute(`background-blurriness`);if(t!=null){let n=parseFloat(t);isNaN(n)||(e.scene.backgroundBlurriness=n)}let n=this.getAttribute(`environment-intensity`);if(n!=null){let t=parseFloat(n);isNaN(t)||(e.scene.environmentIntensity=t)}let r=this.getAttribute(`background-color`);if(e.renderer)if(typeof r==`string`&&r.length>0){let t=S.fromColorRepresentation(r);K&&console.debug(` background-color changed, str:`,r,`→`,t),e.renderer.setClearColor(t,t.alpha),e.scene.background=null}else this.getAttribute(`background-image`)&&this.setAttribute(`background-image`,this.getAttribute(`background-image`))}onXRSessionStarted=()=>{let e=this.getOrCreateContext(),t=e.xrSessionMode;t===`immersive-ar`?this.onEnterAR(e.xrSession):t===`immersive-vr`&&this.onEnterVR(e.xrSession),e.xrSession?.addEventListener(`end`,()=>{this.dispatchEvent(new CustomEvent(`xr-session-ended`,{detail:{session:e.xrSession,context:this._context,sessionMode:t}})),t===`immersive-ar`?this.onExitAR(e.xrSession):t===`immersive-vr`&&this.onExitVR(e.xrSession)})};onReady=()=>this._loadingView?.onLoadingFinished();onError=()=>this._loadingView?.setMessage(`Loading failed!`);getSourceFiles(){let e=this.getAttribute(`src`);if(!e)return[];let t;t=Array.isArray(e)?e:e.startsWith(`[`)&&e.endsWith(`]`)?JSON.parse(e):e.includes(`,`)?e.split(`,`):[e];for(let e=t.length-1;e>=0;e--){let n=t[e];(n===`null`||n===`undefined`||n?.length<=0)&&t.splice(e,1)}return t}checkIfSourceHasChanged(e,t){if(e?.length!==t?.length||e==null&&t!==null||e!==null&&t==null)return!0;if(e!==null&&t!==null){for(let n=0;n0)try{let n=(0,eval)(t);typeof n==`function`&&(this._previouslyRegisteredMap.set(e,n),this.addEventListener(e,e=>n?.call(globalThis,this.getOrCreateContext(),e)))}catch(n){console.error(`Error registering event `+e+`="`+t+`" failed with the following error: +`,n)}}setPublicKey(){this.setAttribute(`public-key`,lt)}setVersion(){this.setAttribute(`version`,Ee)}getAROverlayContainer(){return this._overlay_ar.createOverlayContainer(this)}getVROverlayContainer(){for(let e=0;ethis.setupElementsForMode(e,`ar`))}onSetupVR(){this.classList.remove(q),this.classList.remove(J),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Ds))}onSetupDesktop(){this.classList.remove(q),this.classList.add(J);let e=this.getAROverlayContainer();e&&(e.classList.remove(q),e.classList.add(J)),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Os))}setupElementsForMode(e,t,n=null){if(e!==this._context?.renderer?.domElement&&!(e.id===`VRButton`||e.id===`ARButton`))if(e.classList.contains(t))e.style.visibility=`visible`,e.style.display===`none`&&(e.style.display=`block`);else for(let t of ks)e.classList.contains(t)&&(e.style.visibility=`hidden`,e.style.display=`none`)}foreachHtmlElement(e){for(let t=0;t0&&(n=n.substring(0,r));let i=n.indexOf(`=`);i>0&&(n=n.substring(i));let a=n.split(`.`).pop(),o=a?[`glb`,`gltf`,`usdz`,`usd`,`fbx`,`obj`,`mtl`].indexOf(a.toLowerCase()):-1;if(a&&o>=0&&(n=n.substring(0,n.length-a.length-1)),n=decodeURIComponent(n),n.length>3){let e=``,t=!1,r=[`(`,`)`,`[`,`]`,`{`,`}`,`:`,`;`,`,`,`.`,`!`,`?`];for(let i=0;i{let n=e.getAttribute(`loading-blur`);if(n!==null&&n!==`0`&&t.domElement===e){let r=t.lodsManager.manager?.awaitLoading({frames:5,signal:AbortSignal.timeout(1e4),maxPromisesPerObject:1}).catch(e=>{}),i=`20px`;if(n.endsWith(`px`)&&(i=n),t.scene.background===null){let n=e,a=t.renderer.domElement,o=a.style.filter,s=a.style.overflow;a.style.filter+=`blur(${i})`,n.style.overflow=`hidden`,r?.then(()=>{let e=a.animate([{filter:`blur(0px)`}],{duration:170,easing:`ease-in`});e.onfinish=()=>{a.style.filter=o,n.style.overflow=s}})}else{let e=document.createElement(`div`);t.domElement.prepend(e),e.style.cssText=`position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; pointer-events: none`,e.style.backdropFilter=`blur(${i})`,r?.then(()=>{let t=e.animate([{backdropFilter:`blur(0px)`,opacity:0}],{duration:170,easing:`ease-in`});t.onfinish=()=>{e.remove()}})}}},{once:!0})}function Ps(){typeof window>`u`||(window.customElements.get(`needle-engine`)||window.customElements.define(`needle-engine`,js),window.customElements.get(`needle-button`)||window.customElements.define(`needle-button`,bs),window.customElements.get(`needle-logo-element`)||window.customElements.define(`needle-logo-element`,$t),window.customElements.get(`needle-menu`)||window.customElements.define(`needle-menu`,_e))}var Fs=!1;function Is(){Fs||(Fs=!0,Ps(),er(),ke(),Vr(),gs(),ot(),vs(),Qi(),is(),setTimeout(Jo,1e3),Ko(),Wo(),vi(),ca())}var Y=b(`debugphysics`),Ls=b(`debugcolliderplacement`),Rs=b(`debugcollisions`),zs=b(`showcolliders`),Bs=b(`debugraycasts`),X=Symbol(`needle component`),Z=Symbol(`physics body`),Vs=Symbol(`rigidbody`);globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER===void 0?!0:globalThis.NEEDLE_USE_RAPIER,Y&&console.log(`Use Rapier`,!0,globalThis.NEEDLE_USE_RAPIER),ut.registerCallback(at.ContextCreationStart,e=>{Y&&console.log(`Register rapier physics backend`),e.context.physics.engine=new Hs(e.context)});var Hs=class e{debugRenderColliders=!1;debugRenderRaycasts=!1;removeBody(e){if(Y&&console.log(`REMOVE BODY`,e?.name,e[Z]),!e)return;this.validate();let t=e[Z];if(e[Z]=null,t&&this.world){let t=this.objects.findIndex(t=>t===e);if(t>=0){let e=this.bodies[t];if(this.bodies.splice(t,1),this.objects.splice(t,1),e instanceof w.RAPIER_PHYSICS.MODULE.Collider){let t=e;this.world?.removeCollider(t,!0);let n=t.parent();n&&n.numColliders()<=0&&(n[X]||this.world?.removeRigidBody(n))}else e instanceof w.RAPIER_PHYSICS.MODULE.RigidBody&&(e.numColliders()<=0?this.world?.removeRigidBody(e):h()&&(e.did_log_removing||setTimeout(()=>{e.numColliders()>0&&(e.did_log_removing=!0,console.warn(`RapierPhysics: removing rigidbody with colliders from the physics world is not possible right now, please remove the colliders first`))},1)))}}}setColliderEnabled(e,t){let n=e[Z];return n?(n.setEnabled(t),Y&&console.log(`SET COLLIDER ENABLED`,e.name,t),!0):!1}updateBody(e,t,n){if(this.validate(),this.enabled&&!(e.destroyed||!e.gameObject)&&!(!t&&!n))if(e.isCollider===!0)console.warn(`TODO: implement updating collider position`);else{let r=e,i=r[Z];i&&this.syncPhysicsBody(r.gameObject,i,t,n)}}updateProperties(e){if(this.validate(),e.isCollider){let t=e,n=t[Z];n&&(this.internalUpdateColliderProperties(t,n),t.sharedMaterial&&this.updatePhysicsMaterial(t))}else{let t=e,n=this.internal_getRigidbody(t);n&&this.internalUpdateRigidbodyProperties(t,n)}}addForce(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.addForce(t,n):this._isInitialized&&console.warn(`Physics Body doesn't exist: can not apply force (does your object with the Rigidbody have a collider?)`)}addImpulse(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.applyImpulse(t,n):this._isInitialized&&console.warn(`Physics Body doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)`)}getLinearVelocity(e){this.validate();let t=this.internal_getRigidbody(e);return t?t.linvel():null}getAngularVelocity(e){this.validate();let t=this.internal_getRigidbody(e);return t?t.angvel():null}resetForces(e,t){this.validate(),this.internal_getRigidbody(e)?.resetForces(t)}resetTorques(e,t){this.validate(),this.internal_getRigidbody(e)?.resetTorques(t)}applyImpulse(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.applyImpulse(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)`)}wakeup(e){this.validate();let t=this.internal_getRigidbody(e);t?t.wakeUp():this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not wake up (does your object with the Rigidbody have a collider?)`)}isSleeping(e){return this.validate(),this.internal_getRigidbody(e)?.isSleeping()}setAngularVelocity(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.setAngvel(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not set angular velocity (does your object with the Rigidbody have a collider?)`)}setLinearVelocity(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.setLinvel(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not set linear velocity (does your object with the Rigidbody have a collider?)`)}context;_initializePromise;_isInitialized=!1;constructor(e){this.context=e}get isInitialized(){return this._isInitialized}async initialize(){return this._initializePromise||=this.internalInitialization(),this._initializePromise}async internalInitialization(){return b(`__nophysics`)?(console.warn(`Physics are disabled`),!1):(Y&&console.log(`Initialize rapier physics engine`),`env`in import.meta,this._hasCreatedWorld?(console.error(`Invalid call to create physics world: world is already created`),!0):(this._hasCreatedWorld=!0,w.RAPIER_PHYSICS.MAYBEMODULE??(Y&&console.trace(`Loading rapier physics engine`),await(await w.RAPIER_PHYSICS.load()).init()),Y&&console.log(`Physics engine initialized, creating world...`),this._world=new w.RAPIER_PHYSICS.MODULE.World(this._gravity),this.rapierRay=new w.RAPIER_PHYSICS.MODULE.Ray({x:0,y:0,z:0},{x:0,y:0,z:1}),this.enabled=!0,this._isInitialized=!0,Y&&console.log(`Physics world created`),!0))}validate(){this._isInitialized||Y&&(this._lastWarnTime=this._lastWarnTime??0,Date.now()-this._lastWarnTime>1e3&&(this._lastWarnTime=Date.now(),console.warn(`Physics engine is not initialized`)))}rapierRay;raycastVectorsBuffer=new de(()=>new n,10);raycast(e,t,n){if(!this._isInitialized)return console.log(`Physics engine is not initialized`),null;let r=n?.maxDistance,i=n?.solid;r===void 0&&(r=1/0),i===void 0&&(i=!0);let a=this.getPhysicsRay(this.rapierRay,e,t);if(!a)return null;(this.debugRenderRaycasts||Bs)&&O.DrawRay(a.origin,a.dir,255,1);let o=this.world?.castRay(a,r,i,n?.queryFilterFlags,n?.filterGroups,void 0,void 0,e=>{let t=e[X];return n?.filterPredicate?n.filterPredicate(t):n?.useIgnoreRaycastLayer===!1?!0:!t?.gameObject.layers.isEnabled(2)});if(o){let e=a.pointAt(o.timeOfImpact),t=this.raycastVectorsBuffer.get();return t.set(e.x,e.y,e.z),{point:t,collider:o.collider[X]}}return null}raycastAndGetNormal(e,t,n){if(!this._isInitialized)return null;let r=n?.maxDistance,i=n?.solid;r===void 0&&(r=1/0),i===void 0&&(i=!0);let a=this.getPhysicsRay(this.rapierRay,e,t);if(!a)return null;(this.debugRenderRaycasts||Bs)&&O.DrawRay(a.origin,a.dir,255,1);let o=this.world?.castRayAndGetNormal(a,r,i,n?.queryFilterFlags,n?.filterGroups,void 0,void 0,e=>{let t=e[X];return n?.filterPredicate?n.filterPredicate(t):n?.useIgnoreRaycastLayer===!1?!0:!t?.gameObject.layers.isEnabled(2)});if(o){let e=a.pointAt(o.timeOfImpact),t=o.normal,n=this.raycastVectorsBuffer.get(),r=this.raycastVectorsBuffer.get();return n.set(e.x,e.y,e.z),r.set(t.x,t.y,t.z),{point:n,normal:r,collider:o.collider[X]}}return null}getPhysicsRay(e,t,n){let r=this.context?.mainCamera;if(t===void 0){let e=this.context?.input.getPointerPosition(0);if(e)t=e;else return null}if(t.z===void 0){if(!r)return console.error(`Can not perform raycast from 2d point - no main camera found`),null;let e=this.raycastVectorsBuffer.get();e.x=t.x,e.y=t.y,e.z=0,(e.x>1||e.y>1||e.y<-1||e.x<-1)&&(Y&&console.warn(`Converting screenspace to raycast space`,e),this.context?.input.convertScreenspaceToRaycastSpace(e)),e.unproject(r),t=e}let i=t;e.origin.x=i.x,e.origin.y=i.y,e.origin.z=i.z;let a=this.raycastVectorsBuffer.get();if(n)a.set(n.x,n.y,n.z);else{if(!r)return console.error(`Can not perform raycast - no camera found`),null;a.set(e.origin.x,e.origin.y,e.origin.z);let t=v(r);a.sub(t)}return a.normalize(),e.dir.x=a.x,e.dir.y=a.y,e.dir.z=a.z,e}rapierSphere=null;rapierBox=null;rapierColliderArray=[];rapierIdentityRotation={x:0,y:0,z:0,w:1};rapierForwardVector={x:0,y:0,z:1};sphereOverlap(e,t){return this.rapierSphere??=new w.RAPIER_PHYSICS.MODULE.Ball(t),this.rapierSphere.radius=t,(this.debugRenderRaycasts||Bs)&&O.DrawWireSphere(e,t,3359999,1),this.shapeOverlap(e,this.rapierIdentityRotation,this.rapierSphere)}boxOverlap(e,t,n=null){return n===null&&(n=this.rapierIdentityRotation),this.rapierBox??=new w.RAPIER_PHYSICS.MODULE.Cuboid(1,1,1),this.rapierBox.halfExtents.x=t.x*.5,this.rapierBox.halfExtents.y=t.y*.5,this.rapierBox.halfExtents.z=t.z*.5,(this.debugRenderRaycasts||Bs)&&O.DrawWireBox(e,t,3359999,1,!0,n),this.shapeOverlap(e,n,this.rapierBox)}shapeOverlap(e,t,n){return this.rapierColliderArray.length=0,!this._isInitialized||!this.world||this.world.intersectionsWithShape(e,t,n,e=>{let t=e[X],n=new Je(t.gameObject,t);return this.rapierColliderArray.push(n),!0},void 0,void 0,void 0,void 0,e=>e.isSensor()?!1:e[X].gameObject.layers.isEnabled(2)==0),this.rapierColliderArray}enabled=!1;get world(){return this._world}_tempPosition=new n;_tempQuaternion=new le;_tempScale=new n;_tempMatrix=new te;static _didLoadPhysicsEngine=!1;_isUpdatingPhysicsWorld=!1;get isUpdating(){return this._isUpdatingPhysicsWorld}_world;_hasCreatedWorld=!1;eventQueue;collisionHandler;objects=[];bodies=[];_meshCache=new Map;_gravity={x:0,y:-9.81,z:0};get gravity(){return this.world?.gravity??this._gravity}set gravity(e){this.world?this.world.gravity=e:this._gravity=e}clearCaches(){this._meshCache.clear(),this.eventQueue?.raw&&this.eventQueue?.free(),this.world?.bodies&&this.world?.free()}async addBoxCollider(e,t){if(this._isInitialized||await this.initialize(),!e.activeAndEnabled)return;if(!this.enabled){Y&&console.warn(`Physics are disabled`);return}let n=e.gameObject,r=y(n,this._tempPosition).multiply(t);r.multiplyScalar(.5),r.x<0&&(r.x=Math.abs(r.x)),r.y<0&&(r.y=Math.abs(r.y)),r.z<0&&(r.z=Math.abs(r.z));let i=1e-7;r.x1e-4||Math.abs(c.y-1)>1e-4||Math.abs(c.z-1)>1e-4){let t=`${i.uuid}_${c.x}_${c.y}_${c.z}_${n}`;if(this._meshCache.has(t))Y&&console.warn(`Use cached mesh collider`),a=this._meshCache.get(t);else{(Y||h())&&console.debug(`[Performance] Your MeshCollider \"${e.name}\" is scaled: consider applying the scale to the collider mesh instead (${c.x}, ${c.y}, ${c.z})`);let n=new Float32Array(a.length);for(let e=0;e31?console.error(`Rapier only supports 32 layers, layer ${t} is not supported`):r|=1<31?console.error(`Rapier only supports 32 layers, layer ${t} is not supported`):a|=1<=-127?t.setDominanceGroup(Math.floor(e.dominanceGroup)):t.setDominanceGroup(0),e.autoMass){t.setAdditionalMass(0,!1);for(let e=0;ee.isEnabled());this.lines.geometry.setAttribute(`position`,new p(t.vertices,3)),this.lines.geometry.setAttribute(`color`,new p(t.colors,4));let n=e.debugRender(void 0,e=>!e.isEnabled());this.disabledLines.geometry.setAttribute(`position`,new p(n.vertices,3)),this.disabledLines.geometry.setAttribute(`color`,new p(n.colors,4)),this.disabledLines.visible=n.vertices.length>0,(this.context.time.frame%30==0||this.lines.geometry.boundingSphere?.radius===0)&&(this.lines.geometry.computeBoundingSphere(),this.disabledLines.geometry.computeBoundingSphere())}else this.lines&&this.context?.scene.remove(this.lines),this.disabledLines&&this.context?.scene.remove(this.disabledLines)}syncObjects(){if(!Ls)for(let e=0;e=0;e--)r.multiply(i[e]);return r}return i.push(t.matrix),t.parent&&this.getRigidbodyRelativeMatrix(t.parent,n,r,i),r}static centerConnectionPos={x:0,y:0,z:0};static centerConnectionRot={x:0,y:0,z:0,w:1};addFixedJoint(t,n){if(!this.world){console.error(`Physics world not initialized`);return}let r=t[Z],i=n[Z];this.calculateJointRelativeMatrices(t.gameObject,n.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=w.RAPIER_PHYSICS.MODULE.JointData.fixed(e.centerConnectionPos,e.centerConnectionRot,this._tempPosition,this._tempQuaternion),o=this.world.createImpulseJoint(a,r,i,!0);Y&&console.log(`ADD FIXED JOINT`,o)}addHingeJoint(e,t,n,r){if(!this.world){console.error(`Physics world not initialized`);return}let i=e[Z],a=t[Z];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let o=w.RAPIER_PHYSICS.MODULE.JointData.revolute(n,this._tempPosition,r),s=this.world.createImpulseJoint(o,i,a,!0);Y&&console.log(`ADD HINGE JOINT`,s)}calculateJointRelativeMatrices(e,t,n){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);let r=e.matrixWorld,i=t.matrixWorld;r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.elements[0]=1,i.elements[5]=1,i.elements[10]=1,n.copy(i).premultiply(r.invert()).invert()}},Us=class{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,n)=>{let r=this.world.getCollider(e),i=this.world.getCollider(t);if(!r||!i)return;let a=r[X],o=i[X];Rs&&console.log(`EVT`,a.name,o.name,n,r,i),a&&o&&(n?(this.onCollisionStarted(a,r,o,i),this.onCollisionStarted(o,i,a,r)):(this.onCollisionEnded(a,o),this.onCollisionEnded(o,a)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,n,r){let i=null;if(e.isTrigger||n.isTrigger)Pt(e.gameObject,t=>{t.onTriggerEnter&&!t.destroyed&&t.onTriggerEnter(n),this.activeTriggers.push({collider:e,component:t,otherCollider:n})});else{let a=e.gameObject;this.world.contactPair(t,r,(t,r)=>{Pt(a,r=>{if(r.destroyed)return;let o=r.onCollisionEnter||r.onCollisionStay||r.onCollisionExit;if(o||Rs){if(!i){let e=[],r=t.normal();n instanceof Un&&n.convex&&(r.x=-r.x,r.y=-r.y,r.z=-r.z);for(let n=0;n0}var qs={binary:!0,animations:!0};async function Js(e){if(!e.context)throw Error(`No context provided to exportAsGLTF`);e.scene||=e.context.scene;let t={...qs,...e},{context:n}=t,r=new on;r.register(e=>new hi(e)),r.register(e=>new Zr(e)),r.register(e=>new pi(e)),Nn(r,t.context);let i={binary:t.binary,animations:Zs(n,t.scene,[])},a=new Xs;console.debug(`Exporting GLTF`,i),a.onBeforeExport(t),Gs(!0);let o=await r.parseAsync(t.scene,i).catch(e=>(console.error(e),null));if(Gs(!1),a.onAfterExport(t),!o)throw Error(`Failed to export GLTF`);if(t.downloadAs!=null){let e=null;if(o instanceof ArrayBuffer?e=new Blob([o],{type:`application/octet-stream`}):console.error(`Can not download GLTF as a blob`,o),e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n;let i=t.downloadAs;!i.endsWith(`.glb`)&&!i.endsWith(`.gltf`)&&(i+=t.binary?`.glb`:`.gltf`),r.download=i,r.click()}}return o}var Ys=Symbol(`needle:weight`),Xs=class{_undo=[];onBeforeExport(e){e.context.animations.mixers.forEach(e=>{let t=Ze.tryGetActionsFromMixer(e);if(t)for(let e=0;e{n.weight=n[Ys]})}e.update(0)}),e.context.scene.traverse(e=>{if(!mi(e)){let t=e.parent;t&&(e.removeFromParent(),this._undo.push(()=>t.add(e)))}})}onAfterExport(e){this._undo.forEach(e=>e()),this._undo.length=0}};function Zs(e,t,n){e.animations.mixers.forEach(e=>{let t=Ze.tryGetActionsFromMixer(e);if(t)for(let e=0;ee.layers.set(2))}},$s=class{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error(`Can not create avatar: failed to provide id or root object`),null;let n=null;if(typeof t==`string`){if(n=await this.loadAvatar(e,t),!n){let r=new Ke;n=x.instantiate(Qe(t,e.scene),r)}}else n=t;if(!n)return null;let r=this.findAvatar(n);return r.isValid?(Q&&console.log(`[Custom Avatar] valid config`,t,Q?r:``),r):(console.warn(`[Custom Avatar] config isn't valid`,t,Q?r:``),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t==`string`,`Avatar id must not be null`),t.length<=0||!t)return null;if(Q&&console.log(`[Custom Avatar] `+t+`, loading...`),t.endsWith(`.glb`)||(t+=`.glb`),this.avatarRegistryUrl===null){let n=await fetch(`./`+t),r=null;if(n.ok){let e=await n.blob();e&&(r=await e.arrayBuffer())}return r?(await be().parseSync(e,r,null,0))?.scene??null:null}let n=new A;return Vn(n,e),new Promise((r,i)=>{let a=this.avatarRegistryUrl+`/`+t;n.load(a,async t=>{await be().createBuiltinComponents(e,a,t,null,void 0),r(t.scene)},e=>{Q&&console.log(`[Custom Avatar] `+e.loaded/e.total*100+`% loaded of `+e.total/1024+`kB`)},e=>{console.error(`[Custom Avatar] Error when loading: `+e),r(null)})})}cacheModel(e,t){}findAvatar(e){let t=e,r=t;r.children.length==1&&(r=e.children[0]);let i=this.findAvatarPart(r,[`head`]),a=this.findAvatarPart(r,[`left`,`hand`]),o=this.findAvatarPart(r,[`right`,`hand`]);if(!i){i=t;let e=new n;new re().setFromObject(i).getSize(e);let r=Math.max(e.x,e.y,e.z);console.warn(`[Custom Avatar] Normalizing head scale, it's too big: `+r+` meters! Should be < 0.3m`),r>.3&&i.scale.multiplyScalar(1/r*.3)}return new Qs(t,i,a,o)}findAvatarPart(e,t){let n=e.name.toLowerCase(),r=!0;for(let e of t){if(!r)break;n.indexOf(e)===-1&&(r=!1)}if(r)return e;if(e.children)for(let n of e.children){let e=this.findAvatarPart(n,t);if(e)return e}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}},ec=class{get extensionName(){return`DocumentExtension`}onAfterBuildDocument(e){}},tc=e({ActionBuilder:()=>jr,ActionCollection:()=>ei,ActionModel:()=>br,AlignmentConstraint:()=>Mi,Animation:()=>vr,AnimationCurve:()=>fa,AnimationExtension:()=>Fn,AnimationTrackHandler:()=>ui,Animator:()=>Xe,AnimatorController:()=>ue,Antialiasing:()=>Ba,Attractor:()=>qr,AudioExtension:()=>Zn,AudioListener:()=>wr,AudioSource:()=>lr,AudioTrackHandler:()=>Gr,Avatar:()=>mr,AvatarBlink_Simple:()=>kn,AvatarEyeLook_Rotation:()=>Sn,AvatarLoader:()=>$s,AvatarMarker:()=>gr,AvatarModel:()=>Qs,Avatar_Brain_LookAt:()=>kr,Avatar_MouthShapes:()=>Qn,Avatar_MustacheShake:()=>Yn,Avatar_POI:()=>ar,AxesHelper:()=>Vi,BaseUIComponent:()=>en,BasicIKConstraint:()=>qi,BehaviorExtension:()=>rr,BehaviorModel:()=>Or,BloomEffect:()=>Ua,BoxCollider:()=>pn,BoxGizmo:()=>cr,BoxHelperComponent:()=>Oi,Button:()=>Wt,CallInfo:()=>pt,Camera:()=>he,CameraTargetReachedEvent:()=>tt,Canvas:()=>Gt,CanvasGroup:()=>Bt,CapsuleCollider:()=>Gn,ChangeMaterialOnClick:()=>fn,ChangeTransformOnClick:()=>Wn,CharacterController:()=>ea,CharacterControllerInput:()=>Ei,ChromaticAberration:()=>Ka,ClickThrough:()=>Wi,ColorAdjustments:()=>La,ColorBySpeedModule:()=>Ta,ColorOverLifetimeModule:()=>Oa,ContactShadows:()=>Rn,ControlTrackHandler:()=>ia,CursorFollow:()=>yi,CustomBranding:()=>Cr,Deletable:()=>bi,DeleteBox:()=>Gi,DepthOfField:()=>Xa,DeviceFlag:()=>Pi,DocumentExtension:()=>ec,DragControls:()=>Ui,DropListener:()=>Ji,Duplicatable:()=>$r,EffectWrapper:()=>Ha,EmissionModule:()=>_a,EmphasizeOnClick:()=>Cn,EnvironmentScene:()=>Si,EventList:()=>_,EventListEvent:()=>ht,EventSystem:()=>ve,EventTrigger:()=>Xr,FieldWithDefault:()=>Nr,FixedJoint:()=>ri,Fog:()=>Qr,GltfExport:()=>la,GltfExportBox:()=>Ur,Gradient:()=>Ca,Graphic:()=>Dt,GraphicRaycaster:()=>Ft,GridHelper:()=>Yr,GridLayoutGroup:()=>Lt,GroundProjectedEnv:()=>Ut,GroupActionModel:()=>pr,HideOnStart:()=>Hn,HingeJoint:()=>oi,HorizontalLayoutGroup:()=>Jt,HoverAnimation:()=>Ni,Image:()=>kt,InheritVelocityModule:()=>Aa,InputField:()=>Rt,InstanceHandle:()=>hn,InstancingHandler:()=>Fr,Interactable:()=>Zi,Keyframe:()=>da,LODGroup:()=>Hr,LODModel:()=>Fi,Light:()=>ti,LimitVelocityOverLifetimeModule:()=>va,LogStats:()=>zi,LookAt:()=>Ci,LookAtConstraint:()=>Te,MainModule:()=>ya,MarkerTrackHandler:()=>fi,MaskableGraphic:()=>Tt,MeshCollider:()=>Un,MeshRenderer:()=>zr,MinMaxCurve:()=>Ea,MinMaxGradient:()=>wa,NeedleMenu:()=>dn,NestedGltf:()=>Li,Networking:()=>ai,NoiseModule:()=>xa,ObjectRaycaster:()=>pe,OffsetConstraint:()=>Kr,OpenURL:()=>Xi,OrbitControls:()=>Ce,Outline:()=>gt,Padding:()=>St,ParticleBurst:()=>ba,ParticleSubEmitter:()=>ha,ParticleSystem:()=>ka,ParticleSystemRenderer:()=>Da,PhysicsExtension:()=>Rr,PixelationEffect:()=>Ia,PlayAnimationOnClick:()=>Kn,PlayAudioOnClick:()=>xn,PlayableDirector:()=>oa,PlayerColor:()=>di,PointerEventData:()=>Be,PostProcessingHandler:()=>Wa,PreliminaryAction:()=>On,PreliminaryTrigger:()=>Tr,RawImage:()=>vt,Rect:()=>Yt,RectTransform:()=>nn,ReflectionProbe:()=>Tn,RegisteredAnimationInfo:()=>un,RemoteSkybox:()=>Ai,Renderer:()=>ir,RendererLightmap:()=>Bn,Rigidbody:()=>Le,RotationBySpeedModule:()=>ja,RotationOverLifetimeModule:()=>Pa,SceneSwitcher:()=>na,ScreenCapture:()=>Wr,ScreenSpaceAmbientOcclusion:()=>Ja,ScreenSpaceAmbientOcclusionN8:()=>Ga,ScrollFollow:()=>Yi,SeeThrough:()=>li,SetActiveOnClick:()=>En,ShadowCatcher:()=>aa,ShapeModule:()=>ga,SharpeningEffect:()=>Fa,SignalAsset:()=>Ii,SignalReceiver:()=>ni,SignalReceiverEvent:()=>ii,SignalTrackHandler:()=>Jr,Size:()=>bt,SizeBySpeedModule:()=>Na,SizeOverLifetimeModule:()=>pa,SkinnedMeshRenderer:()=>Lr,SmoothFollow:()=>xi,SpatialGrabRaycaster:()=>At,SpatialHtml:()=>qt,SpatialTrigger:()=>ta,SpatialTriggerReceiver:()=>sa,SpectatorCamera:()=>_i,SphereCollider:()=>qn,SplineContainer:()=>ji,SplineData:()=>ki,SplineWalker:()=>Bi,Sprite:()=>bn,SpriteData:()=>wn,SpriteRenderer:()=>An,SpriteSheet:()=>Ln,SubEmitterSystem:()=>Sa,SyncedCamera:()=>Ki,SyncedRoom:()=>Di,SyncedTransform:()=>qe,TapGestureTrigger:()=>Xn,TeleportTarget:()=>mn,TestRunner:()=>$i,TestSimulateUserData:()=>Ti,Text:()=>Ht,TextBuilder:()=>ur,TextExtension:()=>$n,TextureSheetAnimationModule:()=>ua,TiltShiftEffect:()=>Va,ToneMappingEffect:()=>Ra,TrailModule:()=>Ma,TransformData:()=>sr,TransformGizmo:()=>Ri,TriggerBuilder:()=>nr,TriggerModel:()=>Sr,UIRaycastUtils:()=>Ue,UIRootComponent:()=>$e,USDZExporter:()=>_r,USDZText:()=>Mr,USDZUIExtension:()=>dr,UsageMarker:()=>wi,VariantAction:()=>ci,VelocityOverLifetimeModule:()=>ma,VerticalLayoutGroup:()=>Ct,VideoPlayer:()=>ra,ViewBox:()=>Hi,Vignette:()=>qa,VisibilityAction:()=>Jn,Voip:()=>In,Volume:()=>Ya,VolumeParameter:()=>Za,VolumeProfile:()=>za,WebARCameraBackground:()=>xr,WebARSessionRoot:()=>Pn,WebXR:()=>Ir,WebXRImageTracking:()=>Dr,WebXRImageTrackingModel:()=>fr,WebXRPlaneTracking:()=>yr,WebXRTrackedImage:()=>tr,XRControllerFollow:()=>or,XRControllerModel:()=>Pr,XRControllerMovement:()=>zn,XRFlag:()=>Er,XRRig:()=>Ar,XRState:()=>Dn,__Ignore:()=>nc}),nc=class{},rc;(function(e){function t(e,t=!1,r=.75){let i=new ji,a=1-g.clamp(r,0,1);return e.forEach((r,o)=>{let s=new n;o1&&s.subVectors(e[0],r).normalize().multiplyScalar(a);let c=new ki;c.position.copy(r),c.tangentIn.copy(s),c.tangentOut.copy(s),i.addKnot(c)}),i.closed=t,i}e.createFromPoints=t})(rc||={}),Is();var $={VERSION:Ee,Context:_t,NeedleXRSession:wt,assets:{loadFromURL:cs},types:fe,onStart:Qt,onUpdate:nt,onBeforeRender:xt,onAfterRender:rn,onInitializedContext:ge,onDestroyContext:et,onClearContext:tn};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function ic(e){for(let t in e)$[t]=e[t]}ic(Kt),ic(tc);for(let e of Object.getOwnPropertyNames(x))switch(e){case`prototype`:case`constructor`:case`length`:case`name`:continue;default:$[e]=x[e];break}if(!globalThis.Needle)globalThis.Needle=$;else for(let e in $)globalThis.Needle[e]=$[e];globalThis.THREE?console.warn(`Three.js is already imported`):globalThis.THREE=l;var ac=class extends $a{constructor(){super(new Worker(new URL(``+new URL(`generateMeshBVH.worker-BRfdalWV.js`,import.meta.url).href,``+import.meta.url),{type:`module`})),this.name=`GenerateMeshBVHWorker`}runTask(e,t,n={}){return new Promise((r,i)=>{if(t.getAttribute(`position`).isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw Error(`GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.`);e.onerror=e=>{i(Error(`[GenerateMeshBVHWorker] ${e.message||`Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js`}`))},e.onmessage=a=>{let{data:o}=a;if(o.error)i(Error(o.error)),e.onmessage=null;else if(o.serialized){let{serialized:i,position:a}=o,s=Qa.deserialize(i,t,{setIndex:!1}),c=Object.assign({setBoundingBox:!0},n);if(t.attributes.position.array=a,i.index)if(t.index)t.index.array=i.index;else{let e=new p(i.index,1,!1);t.setIndex(e)}c.setBoundingBox&&(t.boundingBox=s.getBoundingBox(new re)),n.onProgress&&n.onProgress(o.progress),r(s),e.onmessage=null}else n.onProgress&&n.onProgress(o.progress)};let a=t.index?t.index.array:null,o=t.attributes.position.array,s=[o];a&&s.push(a),e.postMessage({index:a,position:o,options:{...n,onProgress:null,includedProgressCallback:!!n.onProgress,groups:[...t.groups]}},s.map(e=>e.buffer).filter(e=>typeof SharedArrayBuffer>`u`||!(e instanceof SharedArrayBuffer)))})}};export{Ro as C,ro as E,Fo as S,io as T,ls as _,$s as a,Po as b,Ks as c,Es as d,Cs as f,us as g,cs as h,ec as i,Hs as l,bs as m,rc as n,Qs as o,Ts as p,nc as r,Js as s,ac as t,js as u,Vo as v,Io as w,Lo as x,Ho as y}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/needle-engine@5.0.3.js.gz b/Needle/MenuScene/dist/assets/needle-engine@5.0.3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7b3ba24dc903a5f24ccf4636598a834943ec4bf GIT binary patch literal 32233 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 IWa5tj0Aft=e*gdg literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js b/Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js new file mode 100644 index 0000000..28db05c --- /dev/null +++ b/Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js @@ -0,0 +1,78 @@ +import{n as e,r as t,t as n}from"./rolldown-runtime.CYVBeYYp.js";var r=n(((e,t)=>{var n={};n.useBlobBuilder=(function(){try{return new Blob([]),!1}catch{return!0}})(),n.useArrayBufferView=!n.useBlobBuilder&&(function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}})(),t.exports.binaryFeatures=n;var r=t.exports.BlobBuilder;typeof window<`u`&&(r=t.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function i(){this._pieces=[],this._parts=[]}i.prototype.append=function(e){typeof e==`number`?this._pieces.push(e):(this.flush(),this._parts.push(e))},i.prototype.flush=function(){if(this._pieces.length>0){var e=new Uint8Array(this._pieces);n.useArrayBufferView||(e=e.buffer),this._parts.push(e),this._pieces=[]}},i.prototype.getBuffer=function(){if(this.flush(),n.useBlobBuilder){for(var e=new r,t=0,i=this._parts.length;t{var n=r().BufferBuilder,i=r().binaryFeatures;t.exports={unpack:function(e){return new a(e).unpack()},pack:function(e){var t=new o;return t.pack(e),t.getBuffer()}};function a(e){this.index=0,this.dataBuffer=e,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}a.prototype.unpack=function(){var e=this.unpack_uint8();if(e<128)return e;if((e^224)<32)return(e^224)-32;var t;if((t=e^160)<=15)return this.unpack_raw(t);if((t=e^176)<=15)return this.unpack_string(t);if((t=e^144)<=15)return this.unpack_array(t);if((t=e^128)<=15)return this.unpack_map(t);switch(e){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return t=this.unpack_uint16(),this.unpack_string(t);case 217:return t=this.unpack_uint32(),this.unpack_string(t);case 218:return t=this.unpack_uint16(),this.unpack_raw(t);case 219:return t=this.unpack_uint32(),this.unpack_raw(t);case 220:return t=this.unpack_uint16(),this.unpack_array(t);case 221:return t=this.unpack_uint32(),this.unpack_array(t);case 222:return t=this.unpack_uint16(),this.unpack_map(t);case 223:return t=this.unpack_uint32(),this.unpack_map(t)}},a.prototype.unpack_uint8=function(){var e=this.dataView[this.index]&255;return this.index++,e},a.prototype.unpack_uint16=function(){var e=this.read(2),t=(e[0]&255)*256+(e[1]&255);return this.index+=2,t},a.prototype.unpack_uint32=function(){var e=this.read(4),t=((e[0]*256+e[1])*256+e[2])*256+e[3];return this.index+=4,t},a.prototype.unpack_uint64=function(){var e=this.read(8),t=((((((e[0]*256+e[1])*256+e[2])*256+e[3])*256+e[4])*256+e[5])*256+e[6])*256+e[7];return this.index+=8,t},a.prototype.unpack_int8=function(){var e=this.unpack_uint8();return e<128?e:e-256},a.prototype.unpack_int16=function(){var e=this.unpack_uint16();return e<32768?e:e-65536},a.prototype.unpack_int32=function(){var e=this.unpack_uint32();return e<2**31?e:e-2**32},a.prototype.unpack_int64=function(){var e=this.unpack_uint64();return e<2**63?e:e-2**64},a.prototype.unpack_raw=function(e){if(this.length>31,n=(e>>23&255)-127,r=e&8388607|8388608;return(t===0?1:-1)*r*2**(n-23)},a.prototype.unpack_double=function(){var e=this.unpack_uint32(),t=this.unpack_uint32(),n=e>>31,r=(e>>20&2047)-1023,i=(e&1048575|1048576)*2**(r-20)+t*2**(r-52);return(n===0?1:-1)*i},a.prototype.read=function(e){var t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw Error(`BinaryPackFailure: read index out of range`)};function o(){this.bufferBuilder=new n}o.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},o.prototype.pack=function(e){var t=typeof e;if(t===`string`)this.pack_string(e);else if(t===`number`)Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if(t===`boolean`)e===!0?this.bufferBuilder.append(195):e===!1&&this.bufferBuilder.append(194);else if(t===`undefined`)this.bufferBuilder.append(192);else if(t===`object`)if(e===null)this.bufferBuilder.append(192);else{var n=e.constructor;if(n==Array)this.pack_array(e);else if(n==Blob||n==File||e instanceof Blob||e instanceof File)this.pack_bin(e);else if(n==ArrayBuffer)i.useArrayBufferView?this.pack_bin(new Uint8Array(e)):this.pack_bin(e);else if(`BYTES_PER_ELEMENT`in e)i.useArrayBufferView?this.pack_bin(new Uint8Array(e.buffer)):this.pack_bin(e.buffer);else if(n==Object||n.toString().startsWith(`class`))this.pack_object(e);else if(n==Date)this.pack_string(e.toString());else if(typeof e.toBinaryPack==`function`)this.bufferBuilder.append(e.toBinaryPack());else throw Error(`Type "`+n.toString()+`" not yet supported`)}else throw Error(`Type "`+t+`" not yet supported`);this.bufferBuilder.flush()},o.prototype.pack_bin=function(e){var t=e.length||e.byteLength||e.size;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this.bufferBuilder.append(218),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(t);else throw Error(`Invalid length`);this.bufferBuilder.append(e)},o.prototype.pack_string=function(e){var t=c(e);if(t<=15)this.pack_uint8(176+t);else if(t<=65535)this.bufferBuilder.append(216),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(t);else throw Error(`Invalid length`);this.bufferBuilder.append(e)},o.prototype.pack_array=function(e){var t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this.bufferBuilder.append(220),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(t);else throw Error(`Invalid length`);for(var n=0;n=-32&&e<=127)this.bufferBuilder.append(e&255);else if(e>=0&&e<=255)this.bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this.bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this.bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this.bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this.bufferBuilder.append(210),this.pack_int32(e);else if(e>=-0x8000000000000000&&e<=0x8000000000000000)this.bufferBuilder.append(211),this.pack_int64(e);else if(e>=0&&e<=0x10000000000000000)this.bufferBuilder.append(207),this.pack_uint64(e);else throw Error(`Invalid integer`)},o.prototype.pack_double=function(e){var t=0;e<0&&(t=1,e=-e);var n=Math.floor(Math.log(e)/Math.LN2),r=e/2**n-1,i=Math.floor(r*2**52),a=2**32,o=t<<31|n+1023<<20|i/a&1048575,s=i%a;this.bufferBuilder.append(203),this.pack_int32(o),this.pack_int32(s)},o.prototype.pack_object=function(e){var t=Object.keys(e).length;if(t<=15)this.pack_uint8(128+t);else if(t<=65535)this.bufferBuilder.append(222),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(t);else throw Error(`Invalid length`);for(var n in e)e.hasOwnProperty(n)&&(this.pack(n),this.pack(e[n]))},o.prototype.pack_uint8=function(e){this.bufferBuilder.append(e)},o.prototype.pack_uint16=function(e){this.bufferBuilder.append(e>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_uint32=function(e){var t=e&4294967295;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255)},o.prototype.pack_uint64=function(e){var t=e/2**32,n=e%2**32;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255),this.bufferBuilder.append((n&4278190080)>>>24),this.bufferBuilder.append((n&16711680)>>>16),this.bufferBuilder.append((n&65280)>>>8),this.bufferBuilder.append(n&255)},o.prototype.pack_int8=function(e){this.bufferBuilder.append(e&255)},o.prototype.pack_int16=function(e){this.bufferBuilder.append((e&65280)>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_int32=function(e){this.bufferBuilder.append(e>>>24&255),this.bufferBuilder.append((e&16711680)>>>16),this.bufferBuilder.append((e&65280)>>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_int64=function(e){var t=Math.floor(e/2**32),n=e%2**32;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255),this.bufferBuilder.append((n&4278190080)>>>24),this.bufferBuilder.append((n&16711680)>>>16),this.bufferBuilder.append((n&65280)>>>8),this.bufferBuilder.append(n&255)};function s(e){var t=e.charCodeAt(0);return t<=2047?`00`:t<=65535?`000`:t<=2097151?`0000`:t<=67108863?`00000`:`000000`}function c(e){return e.length>600?new Blob([e]).size:e.replace(/[^\u0000-\u007F]/g,s).length}}))(),1),a=!0,o=!0;function s(e,t,n){let r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}function c(e,t,n){if(!e.RTCPeerConnection)return;let r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);let a=e=>{let t=n(e);t&&(r.handleEvent?r.handleEvent(t):r(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(r,a),i.apply(this,[e,a])};let a=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(n))return a.apply(this,arguments);let r=this._eventMap[t].get(n);return this._eventMap[t].delete(n),this._eventMap[t].size===0&&delete this._eventMap[t],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[e,r])},Object.defineProperty(r,`on`+t,{get(){return this[`_on`+t]},set(e){this[`_on`+t]&&(this.removeEventListener(t,this[`_on`+t]),delete this[`_on`+t]),e&&this.addEventListener(t,this[`_on`+t]=e)},enumerable:!0,configurable:!0})}function l(e){return typeof e==`boolean`?(a=e,e?`adapter.js logging disabled`:`adapter.js logging enabled`):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function u(e){return typeof e==`boolean`?(o=!e,`adapter.js deprecation warnings `+(e?`disabled`:`enabled`)):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function d(){if(typeof window==`object`){if(a)return;typeof console<`u`&&typeof console.log==`function`&&console.log.apply(console,arguments)}}function f(e,t){o&&console.warn(e+` is deprecated, please use `+t+` instead.`)}function p(e){let t={browser:null,version:null};if(e===void 0||!e.navigator)return t.browser=`Not a browser.`,t;let{navigator:n}=e;if(n.mozGetUserMedia)t.browser=`firefox`,t.version=s(n.userAgent,/Firefox\/(\d+)\./,1);else if(n.webkitGetUserMedia||e.isSecureContext===!1&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser=`chrome`,t.version=s(n.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(n.mediaDevices&&n.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser=`edge`,t.version=s(n.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(e.RTCPeerConnection&&n.userAgent.match(/AppleWebKit\/(\d+)\./))t.browser=`safari`,t.version=s(n.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&`currentDirection`in e.RTCRtpTransceiver.prototype;else return t.browser=`Not a supported browser.`,t;return t}function m(e){return Object.prototype.toString.call(e)===`[object Object]`}function h(e){return m(e)?Object.keys(e).reduce(function(t,n){let r=m(e[n]),i=r?h(e[n]):e[n],a=r&&!Object.keys(i).length;return i===void 0||a?t:Object.assign(t,{[n]:i})},{}):e}function ee(e,t,n){!t||n.has(t.id)||(n.set(t.id,t),Object.keys(t).forEach(r=>{r.endsWith(`Id`)?ee(e,e.get(t[r]),n):r.endsWith(`Ids`)&&t[r].forEach(t=>{ee(e,e.get(t),n)})}))}function g(e,t,n){let r=n?`outbound-rtp`:`inbound-rtp`,i=new Map;if(t===null)return i;let a=[];return e.forEach(e=>{e.type===`track`&&e.trackIdentifier===t.id&&a.push(e)}),a.forEach(t=>{e.forEach(n=>{n.type===r&&n.trackId===t.id&&ee(e,n,i)})}),i}var _=d;function v(e,t){let n=e&&e.navigator;if(!n.mediaDevices)return;let r=function(e){if(typeof e!=`object`||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(n=>{if(n===`require`||n===`advanced`||n===`mediaSource`)return;let r=typeof e[n]==`object`?e[n]:{ideal:e[n]};r.exact!==void 0&&typeof r.exact==`number`&&(r.min=r.max=r.exact);let i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):t===`deviceId`?`sourceId`:t};if(r.ideal!==void 0){t.optional=t.optional||[];let e={};typeof r.ideal==`number`?(e[i(`min`,n)]=r.ideal,t.optional.push(e),e={},e[i(`max`,n)]=r.ideal,t.optional.push(e)):(e[i(``,n)]=r.ideal,t.optional.push(e))}r.exact!==void 0&&typeof r.exact!=`number`?(t.mandatory=t.mandatory||{},t.mandatory[i(``,n)]=r.exact):[`min`,`max`].forEach(e=>{r[e]!==void 0&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])})}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if(e=JSON.parse(JSON.stringify(e)),e&&typeof e.audio==`object`){let t=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};e=JSON.parse(JSON.stringify(e)),t(e.audio,`autoGainControl`,`googAutoGainControl`),t(e.audio,`noiseSuppression`,`googNoiseSuppression`),e.audio=r(e.audio)}if(e&&typeof e.video==`object`){let a=e.video.facingMode;a&&=typeof a==`object`?a:{ideal:a};let o=t.version<66;if(a&&(a.exact===`user`||a.exact===`environment`||a.ideal===`user`||a.ideal===`environment`)&&!(n.mediaDevices.getSupportedConstraints&&n.mediaDevices.getSupportedConstraints().facingMode&&!o)){delete e.video.facingMode;let t;if(a.exact===`environment`||a.ideal===`environment`?t=[`back`,`rear`]:(a.exact===`user`||a.ideal===`user`)&&(t=[`front`]),t)return n.mediaDevices.enumerateDevices().then(n=>{n=n.filter(e=>e.kind===`videoinput`);let o=n.find(e=>t.some(t=>e.label.toLowerCase().includes(t)));return!o&&n.length&&t.includes(`back`)&&(o=n[n.length-1]),o&&(e.video.deviceId=a.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=r(e.video),_(`chrome: `+JSON.stringify(e)),i(e)})}e.video=r(e.video)}return _(`chrome: `+JSON.stringify(e)),i(e)},a=function(e){return t.version>=64?e:{name:{PermissionDeniedError:`NotAllowedError`,PermissionDismissedError:`NotAllowedError`,InvalidStateError:`NotAllowedError`,DevicesNotFoundError:`NotFoundError`,ConstraintNotSatisfiedError:`OverconstrainedError`,TrackStartError:`NotReadableError`,MediaDeviceFailedDueToShutdown:`NotAllowedError`,MediaDeviceKillSwitchOn:`NotAllowedError`,TabCaptureError:`AbortError`,ScreenCaptureError:`AbortError`,DeviceCaptureError:`AbortError`}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&`: `)+this.message}}};if(n.getUserMedia=function(e,t,r){i(e,e=>{n.webkitGetUserMedia(e,t,e=>{r&&r(a(e))})})}.bind(n),n.mediaDevices.getUserMedia){let e=n.mediaDevices.getUserMedia.bind(n.mediaDevices);Object.getOwnPropertyDescriptor(n.mediaDevices,`getUserMedia`)?.writable&&(n.mediaDevices.getUserMedia=function(t){return i(t,t=>e(t).then(e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach(e=>{e.stop()}),new DOMException(``,`NotFoundError`);return e},e=>Promise.reject(a(e))))})}}function y(e,t){if(!(e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices)&&e.navigator.mediaDevices){if(typeof t!=`function`){console.error(`shimGetDisplayMedia: getSourceId argument is not a function`);return}e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then(t=>{let r=n.video&&n.video.width,i=n.video&&n.video.height;return n.video={mandatory:{chromeMediaSource:`desktop`,chromeMediaSourceId:t,maxFrameRate:n.video&&n.video.frameRate||3}},r&&(n.video.mandatory.maxWidth=r),i&&(n.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(n)})}}}var b=e({fixNegotiationNeeded:()=>D,shimAddTrackRemoveTrack:()=>T,shimAddTrackRemoveTrackWithNative:()=>w,shimGetDisplayMedia:()=>y,shimGetSendersWithDtmf:()=>ne,shimGetStats:()=>S,shimGetUserMedia:()=>v,shimMediaStream:()=>te,shimOnTrack:()=>x,shimPeerConnection:()=>E,shimSenderReceiverGetStats:()=>C});function te(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function x(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`ontrack`in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,`ontrack`,{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener(`track`,this._ontrack),this.addEventListener(`track`,this._ontrack=e)},enumerable:!0,configurable:!0});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener(`addtrack`,n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.track.id):{track:n.track};let i=new Event(`track`);i.track=n.track,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)}),t.stream.getTracks().forEach(n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.id):{track:n};let i=new Event(`track`);i.track=n,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)})},this.addEventListener(`addstream`,this._ontrackpoly)),t.apply(this,arguments)}}else c(e,`track`,e=>(e.transceiver||Object.defineProperty(e,`transceiver`,{value:{receiver:e.receiver}}),e))}function ne(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`getSenders`in e.RTCPeerConnection.prototype)&&`createDTMFSender`in e.RTCPeerConnection.prototype){let t=function(e,t){return{track:t,get dtmf(){return this._dtmf===void 0&&(t.kind===`audio`?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){let i=n.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};let r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){r.apply(this,arguments);let t=this._senders.indexOf(e);t!==-1&&this._senders.splice(t,1)}}let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{this._senders.push(t(this,e))})};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach(e=>{let t=this._senders.find(t=>t.track===e);t&&this._senders.splice(this._senders.indexOf(t),1)})}}else if(typeof e==`object`&&e.RTCPeerConnection&&`getSenders`in e.RTCPeerConnection.prototype&&`createDTMFSender`in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!(`dtmf`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e},Object.defineProperty(e.RTCRtpSender.prototype,`dtmf`,{get(){return this._dtmf===void 0&&(this.track.kind===`audio`?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function S(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,n,r]=arguments;if(arguments.length>0&&typeof e==`function`)return t.apply(this,arguments);if(t.length===0&&(arguments.length===0||typeof e!=`function`))return t.apply(this,[]);let i=function(e){let t={};return e.result().forEach(e=>{let n={id:e.id,timestamp:e.timestamp,type:{localcandidate:`local-candidate`,remotecandidate:`remote-candidate`}[e.type]||e.type};e.names().forEach(t=>{n[t]=e.stat(t)}),t[n.id]=n}),t},a=function(e){return new Map(Object.keys(e).map(t=>[t,e[t]]))};return arguments.length>=2?t.apply(this,[function(e){n(a(i(e)))},e]):new Promise((e,n)=>{t.apply(this,[function(t){e(a(i(t)))},n])}).then(n,r)}}function C(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!(`getStats`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>g(t,e.track,!0))}}if(!(`getStats`in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),c(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>g(t,e.track,!1))}}if(!(`getStats`in e.RTCRtpSender.prototype&&`getStats`in e.RTCRtpReceiver.prototype))return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e=arguments[0],t,n,r;return this.getSenders().forEach(n=>{n.track===e&&(t?r=!0:t=n)}),this.getReceivers().forEach(t=>(t.track===e&&(n?r=!0:n=t),t.track===e)),r||t&&n?Promise.reject(new DOMException(`There are more than one sender or receiver for the track.`,`InvalidAccessError`)):t?t.getStats():n?n.getStats():Promise.reject(new DOMException(`There is no sender or receiver for the track.`,`InvalidAccessError`))}return t.apply(this,arguments)}}function w(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?this._shimmedLocalStreams[n.id].indexOf(r)===-1&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)});let t=this.getSenders();n.apply(this,arguments);let r=this.getSenders().filter(e=>t.indexOf(e)===-1);this._shimmedLocalStreams[e.id]=[e].concat(r)};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};let i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let n=this._shimmedLocalStreams[t].indexOf(e);n!==-1&&this._shimmedLocalStreams[t].splice(n,1),this._shimmedLocalStreams[t].length===1&&delete this._shimmedLocalStreams[t]}),i.apply(this,arguments)}}function T(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return w(e);let n=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=n.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)}),!this._reverseStreams[t.id]){let n=new e.MediaStream(t.getTracks());this._streams[t.id]=n,this._reverseStreams[n.id]=t,t=n}r.apply(this,[t])};let i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);let r=[].slice.call(arguments,1);if(r.length!==1||!r[0].getTracks().find(e=>e===t))throw new DOMException(`The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.`,`NotSupportedError`);if(this.getSenders().find(e=>e.track===t))throw new DOMException(`Track already exists.`,`InvalidAccessError`);this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let i=this._streams[n.id];if(i)i.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event(`negotiationneeded`))});else{let r=new e.MediaStream([t]);this._streams[n.id]=r,this._reverseStreams[r.id]=n,this.addStream(r)}return this.getSenders().find(e=>e.track===t)};function a(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,`g`),r.id)}),new RTCSessionDescription({type:t.type,sdp:n})}function o(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,`g`),i.id)}),new RTCSessionDescription({type:t.type,sdp:n})}[`createOffer`,`createAnswer`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){let e=arguments;return arguments.length&&typeof arguments[0]==`function`?n.apply(this,[t=>{let n=a(this,t);e[0].apply(null,[n])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):n.apply(this,arguments).then(e=>a(this,e))}};e.RTCPeerConnection.prototype[t]=r[t]});let s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type||(arguments[0]=o(this,arguments[0])),s.apply(this,arguments)};let c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,`localDescription`);Object.defineProperty(e.RTCPeerConnection.prototype,`localDescription`,{get(){let e=c.get.apply(this);return e.type===``?e:a(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);if(!e._pc)throw new DOMException(`Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.`,`TypeError`);if(e._pc!==this)throw new DOMException(`Sender was not created by this connection.`,`InvalidAccessError`);this._streams=this._streams||{};let t;Object.keys(this._streams).forEach(n=>{this._streams[n].getTracks().find(t=>e.track===t)&&(t=this._streams[n])}),t&&(t.getTracks().length===1?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event(`negotiationneeded`)))}}function E(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]})}function D(e,t){c(e,`negotiationneeded`,e=>{let n=e.target;if(!((t.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics===`plan-b`)&&n.signalingState!==`stable`))return e})}function O(e,t){let n=!1;return e=JSON.parse(JSON.stringify(e)),e.filter(e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&f(`RTCIceServer.url`,`RTCIceServer.urls`);let r=typeof t==`string`;return r&&(t=[t]),t=t.filter(e=>{if(e.indexOf(`stun:`)===0)return!1;let t=e.startsWith(`turn`)&&!e.startsWith(`turn:[`)&&e.includes(`transport=udp`);return t&&!n?(n=!0,!0):t&&!n}),delete e.url,e.urls=r?t[0]:t,!!t.length}})}var re=n(((e,t)=>{var n={};n.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},n.localCName=n.generateIdentifier(),n.splitLines=function(e){return e.trim().split(` +`).map(function(e){return e.trim()})},n.splitSections=function(e){return e.split(` +m=`).map(function(e,t){return(t>0?`m=`+e:e).trim()+`\r +`})},n.getDescription=function(e){var t=n.splitSections(e);return t&&t[0]},n.getMediaSections=function(e){var t=n.splitSections(e);return t.shift(),t},n.matchPrefix=function(e,t){return n.splitLines(e).filter(function(e){return e.indexOf(t)===0})},n.parseCandidate=function(e){for(var t=e.indexOf(`a=candidate:`)===0?e.substring(12).split(` `):e.substring(10).split(` `),n={foundation:t[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r0?t[0].split(`/`)[1]:`sendrecv`,uri:t[1]}},n.writeExtmap=function(e){return`a=extmap:`+(e.id||e.preferredId)+(e.direction&&e.direction!==`sendrecv`?`/`+e.direction:``)+` `+e.uri+`\r +`},n.parseFmtp=function(e){for(var t={},n,r=e.substr(e.indexOf(` `)+1).split(`;`),i=0;i-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},n.parseSsrcGroup=function(e){var t=e.substr(13).split(` `);return{semantics:t.shift(),ssrcs:t.map(function(e){return parseInt(e,10)})}},n.getMid=function(e){var t=n.matchPrefix(e,`a=mid:`)[0];if(t)return t.substr(6)},n.parseFingerprint=function(e){var t=e.substr(14).split(` `);return{algorithm:t[0].toLowerCase(),value:t[1]}},n.getDtlsParameters=function(e,t){return{role:`auto`,fingerprints:n.matchPrefix(e+t,`a=fingerprint:`).map(n.parseFingerprint)}},n.writeDtlsParameters=function(e,t){var n=`a=setup:`+t+`\r +`;return e.fingerprints.forEach(function(e){n+=`a=fingerprint:`+e.algorithm+` `+e.value+`\r +`}),n},n.parseCryptoLine=function(e){var t=e.substr(9).split(` `);return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},n.writeCryptoLine=function(e){return`a=crypto:`+e.tag+` `+e.cryptoSuite+` `+(typeof e.keyParams==`object`?n.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?` `+e.sessionParams.join(` `):``)+`\r +`},n.parseCryptoKeyParams=function(e){if(e.indexOf(`inline:`)!==0)return null;var t=e.substr(7).split(`|`);return{keyMethod:`inline`,keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(`:`)[0]:void 0,mkiLength:t[2]?t[2].split(`:`)[1]:void 0}},n.writeCryptoKeyParams=function(e){return e.keyMethod+`:`+e.keySalt+(e.lifeTime?`|`+e.lifeTime:``)+(e.mkiValue&&e.mkiLength?`|`+e.mkiValue+`:`+e.mkiLength:``)},n.getCryptoParameters=function(e,t){return n.matchPrefix(e+t,`a=crypto:`).map(n.parseCryptoLine)},n.getIceParameters=function(e,t){var r=n.matchPrefix(e+t,`a=ice-ufrag:`)[0],i=n.matchPrefix(e+t,`a=ice-pwd:`)[0];return r&&i?{usernameFragment:r.substr(12),password:i.substr(10)}:null},n.writeIceParameters=function(e){return`a=ice-ufrag:`+e.usernameFragment+`\r +a=ice-pwd:`+e.password+`\r +`},n.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=n.splitLines(e)[0].split(` `),i=3;i0?`9`:`0`,r+=` UDP/TLS/RTP/SAVPF `,r+=t.codecs.map(function(e){return e.preferredPayloadType===void 0?e.payloadType:e.preferredPayloadType}).join(` `)+`\r +`,r+=`c=IN IP4 0.0.0.0\r +`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r +`,t.codecs.forEach(function(e){r+=n.writeRtpMap(e),r+=n.writeFmtp(e),r+=n.writeRtcpFb(e)});var i=0;return t.codecs.forEach(function(e){e.maxptime>i&&(i=e.maxptime)}),i>0&&(r+=`a=maxptime:`+i+`\r +`),r+=`a=rtcp-mux\r +`,t.headerExtensions&&t.headerExtensions.forEach(function(e){r+=n.writeExtmap(e)}),r},n.parseRtpEncodingParameters=function(e){var t=[],r=n.parseRtpParameters(e),i=r.fecMechanisms.indexOf(`RED`)!==-1,a=r.fecMechanisms.indexOf(`ULPFEC`)!==-1,o=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`cname`}),s=o.length>0&&o[0].ssrc,c,l=n.matchPrefix(e,`a=ssrc-group:FID`).map(function(e){return e.substr(17).split(` `).map(function(e){return parseInt(e,10)})});l.length>0&&l[0].length>1&&l[0][0]===s&&(c=l[0][1]),r.codecs.forEach(function(e){if(e.name.toUpperCase()===`RTX`&&e.parameters.apt){var n={ssrc:s,codecPayloadType:parseInt(e.parameters.apt,10)};s&&c&&(n.rtx={ssrc:c}),t.push(n),i&&(n=JSON.parse(JSON.stringify(n)),n.fec={ssrc:s,mechanism:a?`red+ulpfec`:`red`},t.push(n))}}),t.length===0&&s&&t.push({ssrc:s});var u=n.matchPrefix(e,`b=`);return u.length&&(u=u[0].indexOf(`b=TIAS:`)===0?parseInt(u[0].substr(7),10):u[0].indexOf(`b=AS:`)===0?parseInt(u[0].substr(5),10)*1e3*.95-2e3*8:void 0,t.forEach(function(e){e.maxBitrate=u})),t},n.parseRtcpParameters=function(e){var t={},r=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`cname`})[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);var i=n.matchPrefix(e,`a=rtcp-rsize`);return t.reducedSize=i.length>0,t.compound=i.length===0,t.mux=n.matchPrefix(e,`a=rtcp-mux`).length>0,t},n.parseMsid=function(e){var t,r=n.matchPrefix(e,`a=msid:`);if(r.length===1)return t=r[0].substr(7).split(` `),{stream:t[0],track:t[1]};var i=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`msid`});if(i.length>0)return t=i[0].value.split(` `),{stream:t[0],track:t[1]}},n.parseSctpDescription=function(e){var t=n.parseMLine(e),r=n.matchPrefix(e,`a=max-message-size:`),i;r.length>0&&(i=parseInt(r[0].substr(19),10)),isNaN(i)&&(i=65536);var a=n.matchPrefix(e,`a=sctp-port:`);if(a.length>0)return{port:parseInt(a[0].substr(12),10),protocol:t.fmt,maxMessageSize:i};if(n.matchPrefix(e,`a=sctpmap:`).length>0){var o=n.matchPrefix(e,`a=sctpmap:`)[0].substr(10).split(` `);return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:i}}},n.writeSctpDescription=function(e,t){var n=[];return n=e.protocol===`DTLS/SCTP`?[`m=`+e.kind+` 9 `+e.protocol+` `+t.port+`\r +`,`c=IN IP4 0.0.0.0\r +`,`a=sctpmap:`+t.port+` `+t.protocol+` 65535\r +`]:[`m=`+e.kind+` 9 `+e.protocol+` `+t.protocol+`\r +`,`c=IN IP4 0.0.0.0\r +`,`a=sctp-port:`+t.port+`\r +`],t.maxMessageSize!==void 0&&n.push(`a=max-message-size:`+t.maxMessageSize+`\r +`),n.join(``)},n.generateSessionId=function(){return Math.random().toString().substr(2,21)},n.writeSessionBoilerplate=function(e,t,r){var i,a=t===void 0?2:t;return i=e||n.generateSessionId(),`v=0\r +o=`+(r||`thisisadapterortc`)+` `+i+` `+a+` IN IP4 127.0.0.1\r +s=-\r +t=0 0\r +`},n.writeMediaSection=function(e,t,r,i){var a=n.writeRtpDescription(e.kind,t);if(a+=n.writeIceParameters(e.iceGatherer.getLocalParameters()),a+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r===`offer`?`actpass`:`active`),a+=`a=mid:`+e.mid+`\r +`,e.direction?a+=`a=`+e.direction+`\r +`:e.rtpSender&&e.rtpReceiver?a+=`a=sendrecv\r +`:e.rtpSender?a+=`a=sendonly\r +`:e.rtpReceiver?a+=`a=recvonly\r +`:a+=`a=inactive\r +`,e.rtpSender){var o=`msid:`+i.id+` `+e.rtpSender.track.id+`\r +`;a+=`a=`+o,a+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` `+o,e.sendEncodingParameters[0].rtx&&(a+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` `+o,a+=`a=ssrc-group:FID `+e.sendEncodingParameters[0].ssrc+` `+e.sendEncodingParameters[0].rtx.ssrc+`\r +`)}return a+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` cname:`+n.localCName+`\r +`,e.rtpSender&&e.sendEncodingParameters[0].rtx&&(a+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` cname:`+n.localCName+`\r +`),a},n.getDirection=function(e,t){for(var r=n.splitLines(e),i=0;i{var n=re();function r(e){return{inboundrtp:`inbound-rtp`,outboundrtp:`outbound-rtp`,candidatepair:`candidate-pair`,localcandidate:`local-candidate`,remotecandidate:`remote-candidate`}[e.type]||e.type}function i(e,t,r,i,a){var o=n.writeRtpDescription(e.kind,t);if(o+=n.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r===`offer`?`actpass`:a||`active`),o+=`a=mid:`+e.mid+`\r +`,e.rtpSender&&e.rtpReceiver?o+=`a=sendrecv\r +`:e.rtpSender?o+=`a=sendonly\r +`:e.rtpReceiver?o+=`a=recvonly\r +`:o+=`a=inactive\r +`,e.rtpSender){var s=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=s;var c=`msid:`+(i?i.id:`-`)+` `+s+`\r +`;o+=`a=`+c,o+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` `+c,e.sendEncodingParameters[0].rtx&&(o+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` `+c,o+=`a=ssrc-group:FID `+e.sendEncodingParameters[0].ssrc+` `+e.sendEncodingParameters[0].rtx.ssrc+`\r +`)}return o+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` cname:`+n.localCName+`\r +`,e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` cname:`+n.localCName+`\r +`),o}function a(e,t){var n=!1;return e=JSON.parse(JSON.stringify(e)),e.filter(function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&!e.urls&&console.warn(`RTCIceServer.url is deprecated! Use urls instead.`);var i=typeof r==`string`;return i&&(r=[r]),r=r.filter(function(e){return e.indexOf(`turn:`)===0&&e.indexOf(`transport=udp`)!==-1&&e.indexOf(`turn:[`)===-1&&!n?(n=!0,!0):e.indexOf(`stun:`)===0&&t>=14393&&e.indexOf(`?transport=udp`)===-1}),delete e.url,e.urls=i?r[0]:r,!!r.length}})}function o(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n0;s--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=n.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(p.prototype,`localDescription`,{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(p.prototype,`remoteDescription`,{configurable:!0,get:function(){return this._remoteDescription}}),p.prototype.onicecandidate=null,p.prototype.onaddstream=null,p.prototype.ontrack=null,p.prototype.onremovestream=null,p.prototype.onsignalingstatechange=null,p.prototype.oniceconnectionstatechange=null,p.prototype.onconnectionstatechange=null,p.prototype.onicegatheringstatechange=null,p.prototype.onnegotiationneeded=null,p.prototype.ondatachannel=null,p.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),typeof this[`on`+e]==`function`&&this[`on`+e](t))},p.prototype._emitGatheringStateChange=function(){var e=new Event(`icegatheringstatechange`);this._dispatchEvent(`icegatheringstatechange`,e)},p.prototype.getConfiguration=function(){return this._config},p.prototype.getLocalStreams=function(){return this.localStreams},p.prototype.getRemoteStreams=function(){return this.remoteStreams},p.prototype._createTransceiver=function(e,t){var n=this.transceivers.length>0,r={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&n)r.iceTransport=this.transceivers[0].iceTransport,r.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();r.iceTransport=i.iceTransport,r.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(r),r},p.prototype.addTrack=function(t,n){if(this._isClosed)throw l(`InvalidStateError`,`Attempted to call addTrack on a closed peerconnection.`);if(this.transceivers.find(function(e){return e.track===t}))throw l(`InvalidAccessError`,`Track already exists.`);for(var r,i=0;i=15025)e.getTracks().forEach(function(t){n.addTrack(t,e)});else{var r=e.clone();e.getTracks().forEach(function(e,t){var n=r.getTracks()[t];e.addEventListener(`enabled`,function(e){n.enabled=e.enabled})}),r.getTracks().forEach(function(e){n.addTrack(e,r)})}},p.prototype.removeTrack=function(t){if(this._isClosed)throw l(`InvalidStateError`,`Attempted to call removeTrack on a closed peerconnection.`);if(!(t instanceof e.RTCRtpSender))throw TypeError(`Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.`);var n=this.transceivers.find(function(e){return e.rtpSender===t});if(!n)throw l(`InvalidAccessError`,`Sender was not created by this connection.`);var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,this.transceivers.map(function(e){return e.stream}).indexOf(r)===-1&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},p.prototype.removeStream=function(e){var t=this;e.getTracks().forEach(function(e){var n=t.getSenders().find(function(t){return t.track===e});n&&t.removeTrack(n)})},p.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})},p.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})},p.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,`state`,{value:`new`,writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){i.state=!e.candidate||Object.keys(e.candidate).length===0?`completed`:`gathering`,r.transceivers[t].bufferedCandidateEvents!==null&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener(`localcandidate`,this.transceivers[t].bufferCandidates),i},p.prototype._gather=function(t,r){var i=this,a=this.transceivers[r].iceGatherer;if(!a.onlocalcandidate){var o=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,a.removeEventListener(`localcandidate`,this.transceivers[r].bufferCandidates),a.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var o=new Event(`icecandidate`);o.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate,c=!s||Object.keys(s).length===0;if(c)(a.state===`new`||a.state===`gathering`)&&(a.state=`completed`);else{a.state===`new`&&(a.state=`gathering`),s.component=1,s.ufrag=a.getLocalParameters().usernameFragment;var l=n.writeCandidate(s);o.candidate=Object.assign(o.candidate,n.parseCandidate(l)),o.candidate.candidate=l,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var u=n.getMediaSections(i._localDescription.sdp);c?u[o.candidate.sdpMLineIndex]+=`a=end-of-candidates\r +`:u[o.candidate.sdpMLineIndex]+=`a=`+o.candidate.candidate+`\r +`,i._localDescription.sdp=n.getDescription(i._localDescription.sdp)+u.join(``);var d=i.transceivers.every(function(e){return e.iceGatherer&&e.iceGatherer.state===`completed`});i.iceGatheringState!==`gathering`&&(i.iceGatheringState=`gathering`,i._emitGatheringStateChange()),c||i._dispatchEvent(`icecandidate`,o),d&&(i._dispatchEvent(`icecandidate`,new Event(`icecandidate`)),i.iceGatheringState=`complete`,i._emitGatheringStateChange())}},e.setTimeout(function(){o.forEach(function(e){a.onlocalcandidate(e)})},0)}},p.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,`state`,{value:`failed`,writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},p.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},p.prototype._transceive=function(e,r,i){var a=o(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(a.encodings=e.sendEncodingParameters,a.rtcp={cname:n.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(a)),i&&e.rtpReceiver&&a.codecs.length>0&&(e.kind===`video`&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach(function(e){delete e.rtx}),e.recvEncodingParameters.length?a.encodings=e.recvEncodingParameters:a.encodings=[{}],a.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(a.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(a))},p.prototype.setLocalDescription=function(e){var t=this;if([`offer`,`answer`].indexOf(e.type)===-1)return Promise.reject(l(`TypeError`,`Unsupported type "`+e.type+`"`));if(!s(`setLocalDescription`,e.type,t.signalingState)||t._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not set local `+e.type+` in state `+t.signalingState));var r,i;if(e.type===`offer`)r=n.splitSections(e.sdp),i=r.shift(),r.forEach(function(e,r){var i=n.parseRtpParameters(e);t.transceivers[r].localCapabilities=i}),t.transceivers.forEach(function(e,n){t._gather(e.mid,n)});else if(e.type===`answer`){r=n.splitSections(t._remoteDescription.sdp),i=r.shift();var a=n.matchPrefix(i,`a=ice-lite`).length>0;r.forEach(function(e,r){var s=t.transceivers[r],c=s.iceGatherer,l=s.iceTransport,u=s.dtlsTransport,d=s.localCapabilities,f=s.remoteCapabilities;if(!(n.isRejected(e)&&n.matchPrefix(e,`a=bundle-only`).length===0)&&!s.rejected){var p=n.getIceParameters(e,i),m=n.getDtlsParameters(e,i);a&&(m.role=`server`),(!t.usingBundle||r===0)&&(t._gather(s.mid,r),l.state===`new`&&l.start(c,p,a?`controlling`:`controlled`),u.state===`new`&&u.start(m));var h=o(d,f);t._transceive(s,h.codecs.length>0,!1)}})}return t._localDescription={type:e.type,sdp:e.sdp},e.type===`offer`?t._updateSignalingState(`have-local-offer`):t._updateSignalingState(`stable`),Promise.resolve()},p.prototype.setRemoteDescription=function(r){var i=this;if([`offer`,`answer`].indexOf(r.type)===-1)return Promise.reject(l(`TypeError`,`Unsupported type "`+r.type+`"`));if(!s(`setRemoteDescription`,r.type,i.signalingState)||i._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not set remote `+r.type+` in state `+i.signalingState));var a={};i.remoteStreams.forEach(function(e){a[e.id]=e});var p=[],m=n.splitSections(r.sdp),h=m.shift(),ee=n.matchPrefix(h,`a=ice-lite`).length>0,g=n.matchPrefix(h,`a=group:BUNDLE `).length>0;i.usingBundle=g;var _=n.matchPrefix(h,`a=ice-options:`)[0];return _?i.canTrickleIceCandidates=_.substr(14).split(` `).indexOf(`trickle`)>=0:i.canTrickleIceCandidates=!1,m.forEach(function(s,l){var f=n.splitLines(s),m=n.getKind(s),_=n.isRejected(s)&&n.matchPrefix(s,`a=bundle-only`).length===0,v=f[0].substr(2).split(` `)[2],y=n.getDirection(s,h),b=n.parseMsid(s),te=n.getMid(s)||n.generateIdentifier();if(_||m===`application`&&(v===`DTLS/SCTP`||v===`UDP/DTLS/SCTP`)){i.transceivers[l]={mid:te,kind:m,protocol:v,rejected:!0};return}!_&&i.transceivers[l]&&i.transceivers[l].rejected&&(i.transceivers[l]=i._createTransceiver(m,!0));var x,ne,S,C,w,T,E,D,O,re=n.parseRtpParameters(s),ie,k;_||(ie=n.getIceParameters(s,h),k=n.getDtlsParameters(s,h),k.role=`client`),E=n.parseRtpEncodingParameters(s);var ae=n.parseRtcpParameters(s),oe=n.matchPrefix(s,`a=end-of-candidates`,h).length>0,A=n.matchPrefix(s,`a=candidate:`).map(function(e){return n.parseCandidate(e)}).filter(function(e){return e.component===1});if((r.type===`offer`||r.type===`answer`)&&!_&&g&&l>0&&i.transceivers[l]&&(i._disposeIceAndDtlsTransports(l),i.transceivers[l].iceGatherer=i.transceivers[0].iceGatherer,i.transceivers[l].iceTransport=i.transceivers[0].iceTransport,i.transceivers[l].dtlsTransport=i.transceivers[0].dtlsTransport,i.transceivers[l].rtpSender&&i.transceivers[l].rtpSender.setTransport(i.transceivers[0].dtlsTransport),i.transceivers[l].rtpReceiver&&i.transceivers[l].rtpReceiver.setTransport(i.transceivers[0].dtlsTransport)),r.type===`offer`&&!_){x=i.transceivers[l]||i._createTransceiver(m),x.mid=te,x.iceGatherer||=i._createIceGatherer(l,g),A.length&&x.iceTransport.state===`new`&&(oe&&(!g||l===0)?x.iceTransport.setRemoteCandidates(A):A.forEach(function(e){c(x.iceTransport,e)})),D=e.RTCRtpReceiver.getCapabilities(m),t<15019&&(D.codecs=D.codecs.filter(function(e){return e.name!==`rtx`})),T=x.sendEncodingParameters||[{ssrc:(2*l+2)*1001}];var j=!1;if(y===`sendrecv`||y===`sendonly`){if(j=!x.rtpReceiver,w=x.rtpReceiver||new e.RTCRtpReceiver(x.dtlsTransport,m),j){var M;O=w.track,b&&b.stream===`-`||(b?(a[b.stream]||(a[b.stream]=new e.MediaStream,Object.defineProperty(a[b.stream],`id`,{get:function(){return b.stream}})),Object.defineProperty(O,`id`,{get:function(){return b.track}}),M=a[b.stream]):(a.default||=new e.MediaStream,M=a.default)),M&&(u(O,M),x.associatedRemoteMediaStreams.push(M)),p.push([O,w,M])}}else x.rtpReceiver&&x.rtpReceiver.track&&(x.associatedRemoteMediaStreams.forEach(function(e){var t=e.getTracks().find(function(e){return e.id===x.rtpReceiver.track.id});t&&d(t,e)}),x.associatedRemoteMediaStreams=[]);x.localCapabilities=D,x.remoteCapabilities=re,x.rtpReceiver=w,x.rtcpParameters=ae,x.sendEncodingParameters=T,x.recvEncodingParameters=E,i._transceive(i.transceivers[l],!1,j)}else r.type===`answer`&&!_&&(x=i.transceivers[l],ne=x.iceGatherer,S=x.iceTransport,C=x.dtlsTransport,w=x.rtpReceiver,T=x.sendEncodingParameters,D=x.localCapabilities,i.transceivers[l].recvEncodingParameters=E,i.transceivers[l].remoteCapabilities=re,i.transceivers[l].rtcpParameters=ae,A.length&&S.state===`new`&&((ee||oe)&&(!g||l===0)?S.setRemoteCandidates(A):A.forEach(function(e){c(x.iceTransport,e)})),(!g||l===0)&&(S.state===`new`&&S.start(ne,ie,`controlling`),C.state===`new`&&C.start(k)),!o(x.localCapabilities,x.remoteCapabilities).codecs.filter(function(e){return e.name.toLowerCase()===`rtx`}).length&&x.sendEncodingParameters[0].rtx&&delete x.sendEncodingParameters[0].rtx,i._transceive(x,y===`sendrecv`||y===`recvonly`,y===`sendrecv`||y===`sendonly`),w&&(y===`sendrecv`||y===`sendonly`)?(O=w.track,b?(a[b.stream]||(a[b.stream]=new e.MediaStream),u(O,a[b.stream]),p.push([O,w,a[b.stream]])):(a.default||=new e.MediaStream,u(O,a.default),p.push([O,w,a.default]))):delete x.rtpReceiver)}),i._dtlsRole===void 0&&(i._dtlsRole=r.type===`offer`?`active`:`passive`),i._remoteDescription={type:r.type,sdp:r.sdp},r.type===`offer`?i._updateSignalingState(`have-remote-offer`):i._updateSignalingState(`stable`),Object.keys(a).forEach(function(t){var n=a[t];if(n.getTracks().length){if(i.remoteStreams.indexOf(n)===-1){i.remoteStreams.push(n);var r=new Event(`addstream`);r.stream=n,e.setTimeout(function(){i._dispatchEvent(`addstream`,r)})}p.forEach(function(e){var t=e[0],r=e[1];n.id===e[2].id&&f(i,t,r,[n])})}}),p.forEach(function(e){e[2]||f(i,e[0],e[1],[])}),e.setTimeout(function(){i&&i.transceivers&&i.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.state===`new`&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn(`Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification`),e.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},p.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState(`closed`)},p.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event(`signalingstatechange`);this._dispatchEvent(`signalingstatechange`,t)},p.prototype._maybeFireNegotiationNeeded=function(){var t=this;this.signalingState!==`stable`||this.needNegotiation===!0||(this.needNegotiation=!0,e.setTimeout(function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event(`negotiationneeded`);t._dispatchEvent(`negotiationneeded`,e)}},0))},p.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++}),e=`new`,t.failed>0?e=`failed`:t.checking>0?e=`checking`:t.disconnected>0?e=`disconnected`:t.new>0?e=`new`:t.connected>0?e=`connected`:t.completed>0&&(e=`completed`),e!==this.iceConnectionState){this.iceConnectionState=e;var n=new Event(`iceconnectionstatechange`);this._dispatchEvent(`iceconnectionstatechange`,n)}},p.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)}),t.connected+=t.completed,e=`new`,t.failed>0?e=`failed`:t.connecting>0?e=`connecting`:t.disconnected>0?e=`disconnected`:t.new>0?e=`new`:t.connected>0&&(e=`connected`),e!==this.connectionState){this.connectionState=e;var n=new Event(`connectionstatechange`);this._dispatchEvent(`connectionstatechange`,n)}},p.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not call createOffer after close`));var a=r.transceivers.filter(function(e){return e.kind===`audio`}).length,o=r.transceivers.filter(function(e){return e.kind===`video`}).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw TypeError(`Legacy mandatory/optional constraints not supported.`);s.offerToReceiveAudio!==void 0&&(a=s.offerToReceiveAudio===!0?1:s.offerToReceiveAudio===!1?0:s.offerToReceiveAudio),s.offerToReceiveVideo!==void 0&&(o=s.offerToReceiveVideo===!0?1:s.offerToReceiveVideo===!1?0:s.offerToReceiveVideo)}for(r.transceivers.forEach(function(e){e.kind===`audio`?(a--,a<0&&(e.wantReceive=!1)):e.kind===`video`&&(o--,o<0&&(e.wantReceive=!1))});a>0||o>0;)a>0&&(r._createTransceiver(`audio`),a--),o>0&&(r._createTransceiver(`video`),o--);var c=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach(function(i,a){var o=i.track,s=i.kind;i.mid=i.mid||n.generateIdentifier(),i.iceGatherer||=r._createIceGatherer(a,r.usingBundle);var c=e.RTCRtpSender.getCapabilities(s);t<15019&&(c.codecs=c.codecs.filter(function(e){return e.name!==`rtx`})),c.codecs.forEach(function(e){e.name===`H264`&&e.parameters[`level-asymmetry-allowed`]===void 0&&(e.parameters[`level-asymmetry-allowed`]=`1`),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach(function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)})}),c.headerExtensions.forEach(function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach(function(t){e.uri===t.uri&&(e.id=t.id)})});var l=i.sendEncodingParameters||[{ssrc:(2*a+1)*1001}];o&&t>=15019&&s===`video`&&!l[0].rtx&&(l[0].rtx={ssrc:l[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=c,i.sendEncodingParameters=l}),r._config.bundlePolicy!==`max-compat`&&(c+=`a=group:BUNDLE `+r.transceivers.map(function(e){return e.mid}).join(` `)+`\r +`),c+=`a=ice-options:trickle\r +`,r.transceivers.forEach(function(e,t){c+=i(e,e.localCapabilities,`offer`,e.stream,r._dtlsRole),c+=`a=rtcp-rsize\r +`,e.iceGatherer&&r.iceGatheringState!==`new`&&(t===0||!r.usingBundle)&&(e.iceGatherer.getLocalCandidates().forEach(function(e){e.component=1,c+=`a=`+n.writeCandidate(e)+`\r +`}),e.iceGatherer.state===`completed`&&(c+=`a=end-of-candidates\r +`))});var u=new e.RTCSessionDescription({type:`offer`,sdp:c});return Promise.resolve(u)},p.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not call createAnswer after close`));if(!(r.signalingState===`have-remote-offer`||r.signalingState===`have-local-pranswer`))return Promise.reject(l(`InvalidStateError`,`Can not call createAnswer in signalingState `+r.signalingState));var a=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(a+=`a=group:BUNDLE `+r.transceivers.map(function(e){return e.mid}).join(` `)+`\r +`),a+=`a=ice-options:trickle\r +`;var s=n.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach(function(e,n){if(!(n+1>s)){if(e.rejected){e.kind===`application`?e.protocol===`DTLS/SCTP`?a+=`m=application 0 DTLS/SCTP 5000\r +`:a+=`m=application 0 `+e.protocol+` webrtc-datachannel\r +`:e.kind===`audio`?a+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r +a=rtpmap:0 PCMU/8000\r +`:e.kind===`video`&&(a+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r +a=rtpmap:120 VP8/90000\r +`),a+=`c=IN IP4 0.0.0.0\r +a=inactive\r +a=mid:`+e.mid+`\r +`;return}if(e.stream){var c;e.kind===`audio`?c=e.stream.getAudioTracks()[0]:e.kind===`video`&&(c=e.stream.getVideoTracks()[0]),c&&t>=15019&&e.kind===`video`&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1})}var l=o(e.localCapabilities,e.remoteCapabilities);!l.codecs.filter(function(e){return e.name.toLowerCase()===`rtx`}).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,a+=i(e,l,`answer`,e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(a+=`a=rtcp-rsize\r +`)}});var c=new e.RTCSessionDescription({type:`answer`,sdp:a});return Promise.resolve(c)},p.prototype.addIceCandidate=function(e){var t=this,r;return e&&!(e.sdpMLineIndex!==void 0||e.sdpMid)?Promise.reject(TypeError(`sdpMLineIndex or sdpMid required`)):new Promise(function(i,a){if(!t._remoteDescription)return a(l(`InvalidStateError`,`Can not add ICE candidate without a remote description`));if(!e||e.candidate===``)for(var o=0;o0?n.parseCandidate(e.candidate):{};if(f.protocol===`tcp`&&(f.port===0||f.port===9)||f.component&&f.component!==1)return i();if((s===0||s>0&&d.iceTransport!==t.transceivers[0].iceTransport)&&!c(d.iceTransport,f))return a(l(`OperationError`,`Can not add ICE candidate`));var p=e.candidate.trim();p.indexOf(`a=`)===0&&(p=p.substr(2)),r=n.getMediaSections(t._remoteDescription.sdp),r[s]+=`a=`+(f.type?p:`end-of-candidates`)+`\r +`,t._remoteDescription.sdp=n.getDescription(t._remoteDescription.sdp)+r.join(``)}else return a(l(`OperationError`,`Can not add ICE candidate`))}i()})},p.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var n=null;if(this.transceivers.forEach(function(e){e.rtpSender&&e.rtpSender.track===t?n=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(n=e.rtpReceiver)}),!n)throw l(`InvalidAccessError`,`Invalid selector.`);return n.getStats()}var r=[];return this.transceivers.forEach(function(e){[`rtpSender`,`rtpReceiver`,`iceGatherer`,`iceTransport`,`dtlsTransport`].forEach(function(t){e[t]&&r.push(e[t].getStats())})}),Promise.all(r).then(function(e){var t=new Map;return e.forEach(function(e){e.forEach(function(e){t.set(e.id,e)})}),t})},[`RTCRtpSender`,`RTCRtpReceiver`,`RTCIceGatherer`,`RTCIceTransport`,`RTCDtlsTransport`].forEach(function(t){var n=e[t];if(n&&n.prototype&&n.prototype.getStats){var i=n.prototype.getStats;n.prototype.getStats=function(){return i.apply(this).then(function(e){var t=new Map;return Object.keys(e).forEach(function(n){e[n].type=r(e[n]),t.set(n,e[n])}),t})}}});var m=[`createOffer`,`createAnswer`];return m.forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[0]==`function`||typeof e[1]==`function`?t.apply(this,[arguments[2]]).then(function(t){typeof e[0]==`function`&&e[0].apply(null,[t])},function(t){typeof e[1]==`function`&&e[1].apply(null,[t])}):t.apply(this,arguments)}}),m=[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`],m.forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[1]==`function`||typeof e[2]==`function`?t.apply(this,arguments).then(function(){typeof e[1]==`function`&&e[1].apply(null)},function(t){typeof e[2]==`function`&&e[2].apply(null,[t])}):t.apply(this,arguments)}}),[`getStats`].forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[1]==`function`?t.apply(this,arguments).then(function(){typeof e[1]==`function`&&e[1].apply(null)}):t.apply(this,arguments)}}),p}}))());function k(e){let t=e&&e.navigator,n=function(e){return{name:{PermissionDeniedError:`NotAllowedError`}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}},r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,`getUserMedia`)?.writable&&(t.mediaDevices.getUserMedia=function(e){return r(e).catch(e=>Promise.reject(n(e)))})}function ae(e){`getDisplayMedia`in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}var oe=e({shimGetDisplayMedia:()=>ae,shimGetUserMedia:()=>k,shimPeerConnection:()=>A,shimReplaceTrack:()=>j});function A(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||=function(e){return e},e.RTCSessionDescription||=function(e){return e},t.version<15025)){let t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,`enabled`);Object.defineProperty(e.MediaStreamTrack.prototype,`enabled`,{set(e){t.set.call(this,e);let n=new Event(`enabled`);n.enabled=e,this.dispatchEvent(n)}})}e.RTCRtpSender&&!(`dtmf`in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,`dtmf`,{get(){return this._dtmf===void 0&&(this.track.kind===`audio`?this._dtmf=new e.RTCDtmfSender(this):this.track.kind===`video`&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);let n=(0,ie.default)(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=O(e.iceServers,t.version),d(`ICE servers after filtering:`,e.iceServers)),new n(e)},e.RTCPeerConnection.prototype=n.prototype}function j(e){e.RTCRtpSender&&!(`replaceTrack`in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}function M(e,t){let n=e&&e.navigator,r=e&&e.MediaStreamTrack;if(n.getUserMedia=function(e,t,r){f(`navigator.getUserMedia`,`navigator.mediaDevices.getUserMedia`),n.mediaDevices.getUserMedia(e).then(t,r)},!(t.version>55&&`autoGainControl`in n.mediaDevices.getSupportedConstraints())){let e=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},t=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(Object.getOwnPropertyDescriptor(n.mediaDevices,`getUserMedia`)?.writable&&(n.mediaDevices.getUserMedia=function(n){return typeof n==`object`&&typeof n.audio==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n.audio,`autoGainControl`,`mozAutoGainControl`),e(n.audio,`noiseSuppression`,`mozNoiseSuppression`)),t(n)}),r&&r.prototype.getSettings){let t=r.prototype.getSettings;r.prototype.getSettings=function(){let n=t.apply(this,arguments);return e(n,`mozAutoGainControl`,`autoGainControl`),e(n,`mozNoiseSuppression`,`noiseSuppression`),n}}if(r&&r.prototype.applyConstraints){let t=r.prototype.applyConstraints;r.prototype.applyConstraints=function(n){return this.kind===`audio`&&typeof n==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n,`autoGainControl`,`mozAutoGainControl`),e(n,`noiseSuppression`,`mozNoiseSuppression`)),t.apply(this,[n])}}}}function se(e,t){e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){let e=new DOMException(`getDisplayMedia without video constraints is undefined`);return e.name=`NotFoundError`,e.code=8,Promise.reject(e)}return n.video===!0?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}var ce=e({shimAddTransceiver:()=>he,shimCreateAnswer:()=>ve,shimCreateOffer:()=>_e,shimGetDisplayMedia:()=>se,shimGetParameters:()=>ge,shimGetUserMedia:()=>M,shimOnTrack:()=>le,shimPeerConnection:()=>ue,shimRTCDataChannel:()=>me,shimReceiverGetStats:()=>fe,shimRemoveStream:()=>pe,shimSenderGetStats:()=>de});function le(e){typeof e==`object`&&e.RTCTrackEvent&&`receiver`in e.RTCTrackEvent.prototype&&!(`transceiver`in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,`transceiver`,{get(){return{receiver:this.receiver}}})}function ue(e,t){if(typeof e!=`object`||!(e.RTCPeerConnection||e.mozRTCPeerConnection))return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]});let n={inboundrtp:`inbound-rtp`,outboundrtp:`outbound-rtp`,candidatepair:`candidate-pair`,localcandidate:`local-candidate`,remotecandidate:`remote-candidate`},r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,i,a]=arguments;return r.apply(this,[e||null]).then(e=>{if(t.version<53&&!i)try{e.forEach(e=>{e.type=n[e.type]||e.type})}catch(t){if(t.name!==`TypeError`)throw t;e.forEach((t,r)=>{e.set(r,Object.assign({},t,{type:n[t.type]||t.type}))})}return e}).then(i,a)}}function de(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function fe(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),c(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function pe(e){!e.RTCPeerConnection||`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){f(`removeStream`,`removeTrack`),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function me(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function he(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1],n=e&&`sendEncodings`in e;n&&e.sendEncodings.forEach(e=>{if(`rid`in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError(`Invalid RID value provided.`);if(`scaleResolutionDownBy`in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError(`scale_resolution_down_by must be >= 1.0`);if(`maxFramerate`in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError(`max_framerate must be >= 0.0`)});let r=t.apply(this,arguments);if(n){let{sender:t}=r,n=t.getParameters();(!(`encodings`in n)||n.encodings.length===1&&Object.keys(n.encodings[0]).length===0)&&(n.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(n).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return r})}function ge(e){if(!(typeof e==`object`&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return`encodings`in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function _e(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function ve(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}var ye=e({shimAudioContext:()=>Oe,shimCallbacksAPI:()=>Se,shimConstraints:()=>we,shimCreateOfferLegacy:()=>De,shimGetUserMedia:()=>Ce,shimLocalStreamsAPI:()=>be,shimRTCIceServerUrls:()=>Te,shimRemoteStreamsAPI:()=>xe,shimTrackEventTransceiver:()=>Ee});function be(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)){if(`getLocalStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||=[],this._localStreams}),!(`addStream`in e.RTCPeerConnection.prototype)){let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||=[],this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(n=>t.call(this,n,e)),e.getVideoTracks().forEach(n=>t.call(this,n,e))},e.RTCPeerConnection.prototype.addTrack=function(e,...n){return n&&n.forEach(e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]}),t.apply(this,arguments)}}`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||=[];let t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);let n=e.getTracks();this.getSenders().forEach(e=>{n.includes(e.track)&&this.removeTrack(e)})})}}function xe(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)&&(`getRemoteStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!(`onaddstream`in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,`onaddstream`,{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener(`addstream`,this._onaddstream),this.removeEventListener(`track`,this._onaddstreampoly)),this.addEventListener(`addstream`,this._onaddstream=e),this.addEventListener(`track`,this._onaddstreampoly=e=>{e.streams.forEach(e=>{if(this._remoteStreams||=[],this._remoteStreams.includes(e))return;this._remoteStreams.push(e);let t=new Event(`addstream`);t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let e=this;return this._onaddstreampoly||this.addEventListener(`track`,this._onaddstreampoly=function(t){t.streams.forEach(t=>{if(e._remoteStreams||=[],e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);let n=new Event(`addstream`);n.stream=t,e.dispatchEvent(n)})}),t.apply(e,arguments)}}}function Se(e){if(typeof e!=`object`||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){let r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){let n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};let s=function(e,t,n){let r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=s,s=function(e,t,n){let r=a.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=s,s=function(e,t,n){let r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=s}function Ce(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,n=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>n(we(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t))}function we(e){return e&&e.video!==void 0?Object.assign({},e,{video:h(e.video)}):e}function Te(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){let t=[];for(let n=0;ne.receiver.track.kind===`audio`);e.offerToReceiveAudio===!1&&t?t.direction===`sendrecv`?t.setDirection?t.setDirection(`sendonly`):t.direction=`sendonly`:t.direction===`recvonly`&&(t.setDirection?t.setDirection(`inactive`):t.direction=`inactive`):e.offerToReceiveAudio===!0&&!t&&this.addTransceiver(`audio`),e.offerToReceiveVideo!==void 0&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);let n=this.getTransceivers().find(e=>e.receiver.track.kind===`video`);e.offerToReceiveVideo===!1&&n?n.direction===`sendrecv`?n.setDirection?n.setDirection(`sendonly`):n.direction=`sendonly`:n.direction===`recvonly`&&(n.setDirection?n.setDirection(`inactive`):n.direction=`inactive`):e.offerToReceiveVideo===!0&&!n&&this.addTransceiver(`video`)}return t.apply(this,arguments)}}function Oe(e){typeof e!=`object`||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var ke=e({removeExtmapAllowMixed:()=>Ne,shimAddIceCandidateNullOrEmpty:()=>Pe,shimConnectionState:()=>Me,shimMaxMessageSize:()=>N,shimRTCIceCandidate:()=>je,shimSendThrowTypeError:()=>P}),Ae=t(re());function je(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&`foundation`in e.RTCIceCandidate.prototype)return;let t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if(typeof e==`object`&&e.candidate&&e.candidate.indexOf(`a=`)===0&&(e=JSON.parse(JSON.stringify(e)),e.candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){let n=new t(e),r=Ae.default.parseCandidate(e.candidate),i=Object.assign(n,r);return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,c(e,`icecandidate`,t=>(t.candidate&&Object.defineProperty(t,`candidate`,{value:new e.RTCIceCandidate(t.candidate),writable:`false`}),t))}function N(e,t){if(!e.RTCPeerConnection)return;`sctp`in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,`sctp`,{get(){return this._sctp===void 0?null:this._sctp}});let n=function(e){if(!e||!e.sdp)return!1;let t=Ae.default.splitSections(e.sdp);return t.shift(),t.some(e=>{let t=Ae.default.parseMLine(e);return t&&t.kind===`application`&&t.protocol.indexOf(`SCTP`)!==-1})},r=function(e){let t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(t===null||t.length<2)return-1;let n=parseInt(t[1],10);return n===n?n:-1},i=function(e){let n=65536;return t.browser===`firefox`&&(n=t.version<57?e===-1?16384:2147483637:t.version<60?t.version===57?65535:65536:2147483637),n},a=function(e,n){let r=65536;t.browser===`firefox`&&t.version===57&&(r=65535);let i=Ae.default.matchPrefix(e.sdp,`a=max-message-size:`);return i.length>0?r=parseInt(i[0].substr(19),10):t.browser===`firefox`&&n!==-1&&(r=2147483637),r},o=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,t.browser===`chrome`&&t.version>=76){let{sdpSemantics:e}=this.getConfiguration();e===`plan-b`&&Object.defineProperty(this,`sctp`,{get(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(n(arguments[0])){let e=r(arguments[0]),t=i(e),n=a(arguments[0],e),o;o=t===0&&n===0?1/0:t===0||n===0?Math.max(t,n):Math.min(t,n);let s={};Object.defineProperty(s,`maxMessageSize`,{get(){return o}}),this._sctp=s}return o.apply(this,arguments)}}function P(e){if(!(e.RTCPeerConnection&&`createDataChannel`in e.RTCPeerConnection.prototype))return;function t(e,t){let n=e.send;e.send=function(){let r=arguments[0],i=r.length||r.size||r.byteLength;if(e.readyState===`open`&&t.sctp&&i>t.sctp.maxMessageSize)throw TypeError(`Message too large (can send a maximum of `+t.sctp.maxMessageSize+` bytes)`);return n.apply(e,arguments)}}let n=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){let e=n.apply(this,arguments);return t(e,this),e},c(e,`datachannel`,e=>(t(e.channel,e.target),e))}function Me(e){if(!e.RTCPeerConnection||`connectionState`in e.RTCPeerConnection.prototype)return;let t=e.RTCPeerConnection.prototype;Object.defineProperty(t,`connectionState`,{get(){return{completed:`connected`,checking:`connecting`}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,`onconnectionstatechange`,{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener(`connectionstatechange`,this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener(`connectionstatechange`,this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),[`setLocalDescription`,`setRemoteDescription`].forEach(e=>{let n=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{let t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;let n=new Event(`connectionstatechange`,e);t.dispatchEvent(n)}return e},this.addEventListener(`iceconnectionstatechange`,this._connectionstatechangepoly)),n.apply(this,arguments)}})}function Ne(e,t){if(!e.RTCPeerConnection||t.browser===`chrome`&&t.version>=71||t.browser===`safari`&&t.version>=605)return;let n=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&t.sdp.indexOf(` +a=extmap-allow-mixed`)!==-1){let n=t.sdp.split(` +`).filter(e=>e.trim()!==`a=extmap-allow-mixed`).join(` +`);e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return n.apply(this,arguments)}}function Pe(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let n=e.RTCPeerConnection.prototype.addIceCandidate;!n||n.length===0||(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(t.browser===`chrome`&&t.version<78||t.browser===`firefox`&&t.version<68||t.browser===`safari`)&&arguments[0]&&arguments[0].candidate===``?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Fe({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){let n=d,r=p(e),i={browserDetails:r,commonShim:ke,extractVersion:s,disableLog:l,disableWarnings:u};switch(r.browser){case`chrome`:if(!b||!E||!t.shimChrome)return n(`Chrome shim is not included in this adapter release.`),i;if(r.version===null)return n(`Chrome shim can not determine version, not shimming.`),i;n(`adapter.js shimming chrome.`),i.browserShim=b,Pe(e,r),v(e,r),te(e,r),E(e,r),x(e,r),T(e,r),ne(e,r),S(e,r),C(e,r),D(e,r),je(e,r),Me(e,r),N(e,r),P(e,r),Ne(e,r);break;case`firefox`:if(!ce||!ue||!t.shimFirefox)return n(`Firefox shim is not included in this adapter release.`),i;n(`adapter.js shimming firefox.`),i.browserShim=ce,Pe(e,r),M(e,r),ue(e,r),le(e,r),pe(e,r),de(e,r),fe(e,r),me(e,r),he(e,r),ge(e,r),_e(e,r),ve(e,r),je(e,r),Me(e,r),N(e,r),P(e,r);break;case`edge`:if(!oe||!A||!t.shimEdge)return n(`MS edge shim is not included in this adapter release.`),i;n(`adapter.js shimming edge.`),i.browserShim=oe,k(e,r),ae(e,r),A(e,r),j(e,r),N(e,r),P(e,r);break;case`safari`:if(!ye||!t.shimSafari)return n(`Safari shim is not included in this adapter release.`),i;n(`adapter.js shimming safari.`),i.browserShim=ye,Pe(e,r),Te(e,r),De(e,r),Se(e,r),be(e,r),xe(e,r),Ee(e,r),Ce(e,r),Oe(e,r),je(e,r),N(e,r),P(e,r),Ne(e,r);break;default:n(`Unsupported browser!`);break}return i}var Ie=Fe({window:typeof window>`u`?void 0:window}),Le=e({Peer:()=>Tt,default:()=>Et,util:()=>L});function F(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var Re=Ie.default||Ie,I=new(function(){function e(){this.isIOS=[`iPad`,`iPhone`,`iPod`].includes(navigator.platform),this.supportedBrowsers=[`firefox`,`chrome`,`safari`],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return e.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<`u`},e.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion();return this.supportedBrowsers.includes(e)?e===`chrome`?t>=this.minChromeVersion:e===`firefox`?t>=this.minFirefoxVersion:e===`safari`?!this.isIOS&&t>=this.minSafariVersion:!1:!1},e.prototype.getBrowser=function(){return Re.browserDetails.browser},e.prototype.getVersion=function(){return Re.browserDetails.version||0},e.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=Re.browserDetails.version||0;if(e===`chrome`&&t=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!(`currentDirection`in RTCRtpTransceiver.prototype))return!1;var n,r=!1;try{n=new RTCPeerConnection,n.addTransceiver(`audio`),r=!0}catch{}finally{n&&n.close()}return r},e.prototype.toString=function(){return`Supports: + browser:${this.getBrowser()} + version:${this.getVersion()} + isIOS:${this.isIOS} + isWebRTCSupported:${this.isWebRTCSupported()} + isBrowserSupported:${this.isBrowserSupported()} + isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`},e}()),ze={iceServers:[{urls:`stun:stun.l.google.com:19302`},{urls:[`turn:eu-0.turn.peerjs.com:3478`,`turn:us-0.turn.peerjs.com:3478`],username:`peerjs`,credential:`peerjsp`}],sdpSemantics:`unified-plan`},L=new(function(){function e(){this.CLOUD_HOST=`0.peerjs.com`,this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=ze,this.browser=I.getBrowser(),this.browserVersion=I.getVersion(),this.supports=function(){var e={browser:I.isBrowserSupported(),webRTC:I.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(ze),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel(`_PEERJSTEST`,{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType=`blob`,e.binaryBlob=!I.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e}(),this.pack=i.default.pack,this.unpack=i.default.unpack,this._dataCount=1}return e.prototype.noop=function(){},e.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},e.prototype.chunk=function(e){for(var t=[],n=e.size,r=Math.ceil(n/L.chunkedMTU),i=0,a=0;aTt,e=>Tt=e);var R={},Ve=Object.prototype.hasOwnProperty,z=`~`;function B(){}Object.create&&(B.prototype=Object.create(null),new B().__proto__||(z=!1));function He(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function Ue(e,t,n,r,i){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var a=new He(n,r||e,i),o=z?z+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function We(e,t){--e._eventsCount===0?e._events=new B:delete e._events[t]}function V(){this._events=new B,this._eventsCount=0}V.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)Ve.call(t,n)&&e.push(z?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},V.prototype.listeners=function(e){var t=z?z+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=Array(i);rG,e=>G=e),F(H,`default`,()=>Ke,e=>Ke=e);var U=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a},W=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r=G.All&&this._print.apply(this,W([G.All],U(e),!1))},e.prototype.warn=function(){var e=[...arguments];this._logLevel>=G.Warnings&&this._print.apply(this,W([G.Warnings],U(e),!1))},e.prototype.error=function(){var e=[...arguments];this._logLevel>=G.Errors&&this._print.apply(this,W([G.Errors],U(e),!1))},e.prototype.setLogFunction=function(e){this._print=e},e.prototype._print=function(e){var t=[...arguments].slice(1),n=W([Ge],U(t),!1);for(var r in n)n[r]instanceof Error&&(n[r]=`(`+n[r].name+`) `+n[r].message);e>=G.All?console.log.apply(console,W([],U(n),!1)):e>=G.Warnings?console.warn.apply(console,W([`WARNING`],U(n),!1)):e>=G.Errors&&console.error.apply(console,W([`ERROR`],U(n),!1))},e}()),qe={};F(qe,`Socket`,()=>$e,e=>$e=e);var K;(function(e){e.Data=`data`,e.Media=`media`})(K||={});var q;(function(e){e.BrowserIncompatible=`browser-incompatible`,e.Disconnected=`disconnected`,e.InvalidID=`invalid-id`,e.InvalidKey=`invalid-key`,e.Network=`network`,e.PeerUnavailable=`peer-unavailable`,e.SslUnavailable=`ssl-unavailable`,e.ServerError=`server-error`,e.SocketError=`socket-error`,e.SocketClosed=`socket-closed`,e.UnavailableID=`unavailable-id`,e.WebRTC=`webrtc`})(q||={});var J;(function(e){e.Binary=`binary`,e.BinaryUTF8=`binary-utf8`,e.JSON=`json`})(J||={});var Y;(function(e){e.Message=`message`,e.Disconnected=`disconnected`,e.Error=`error`,e.Close=`close`})(Y||={});var X;(function(e){e.Heartbeat=`HEARTBEAT`,e.Candidate=`CANDIDATE`,e.Offer=`OFFER`,e.Answer=`ANSWER`,e.Open=`OPEN`,e.Error=`ERROR`,e.IdTaken=`ID-TAKEN`,e.InvalidKey=`INVALID-KEY`,e.Leave=`LEAVE`,e.Expire=`EXPIRE`})(X||={});var Je={};Je=JSON.parse(`{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu ","afrokick ","ericz ","Jairo ","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana ","Carlos Caballero ","hc ","Muhammad Asif ","PrashoonB ","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski ","lmb ","Jairooo ","Moritz Stückler ","Simon ","Denis Lukov ","Philipp Hancke ","Hans Oksendahl ","Jess ","khankuan ","DUODVK ","XiZhao ","Matthias Lohr ","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt ","Chris Cowan ","Alex Chuev ","alxnull ","Yemel Jardi ","Ben Parnell ","Benny Lichtner ","fresheneesz ","bob.barstead@exaptive.com ","chandika ","emersion ","Christopher Van ","eddieherm ","Eduardo Pinho ","Evandro Zanatta ","Gardner Bickford ","Gian Luca ","PatrickJS ","jonnyf ","Hizkia Felix ","Hristo Oskov ","Isaac Madwed ","Ilya Konanykhin ","jasonbarry ","Jonathan Burke ","Josh Hamit ","Jordan Austin ","Joel Wetzell ","xizhao ","Alberto Torres ","Jonathan Mayol ","Jefferson Felix ","Rolf Erik Lekang ","Kevin Mai-Husan Chia ","Pepijn de Vos ","JooYoung ","Tobias Speicher ","Steve Blaurock ","Kyrylo Shegeda ","Diwank Singh Tomer ","Sören Balko ","Arpit Solanki ","Yuki Ito ","Artur Zayats "],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}`);var Ye=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Xe=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a},Ze=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},$e=function(e){Ye(t,e);function t(t,n,r,i,a,o){o===void 0&&(o=5e3);var s=e.call(this)||this;return s.pingInterval=o,s._disconnected=!0,s._messagesQueue=[],s._baseUrl=(t?`wss://`:`ws://`)+n+`:`+r+i+`peerjs?key=`+a,s}return t.prototype.start=function(e,t){var n=this;this._id=e;var r=`${this._baseUrl}&id=${e}&token=${t}`;this._socket||!this._disconnected||(this._socket=new WebSocket(r+`&version=`+Je.version),this._disconnected=!1,this._socket.onmessage=function(e){var t;try{t=JSON.parse(e.data),H.default.log(`Server message received:`,t)}catch{H.default.log(`Invalid server message`,e.data);return}n.emit(Y.Message,t)},this._socket.onclose=function(e){n._disconnected||(H.default.log(`Socket closed.`,e),n._cleanup(),n._disconnected=!0,n.emit(Y.Disconnected))},this._socket.onopen=function(){n._disconnected||(n._sendQueuedMessages(),H.default.log(`Socket open`),n._scheduleHeartbeat())})},t.prototype._scheduleHeartbeat=function(){var e=this;this._wsPingTimer=setTimeout(function(){e._sendHeartbeat()},this.pingInterval)},t.prototype._sendHeartbeat=function(){if(!this._wsOpen()){H.default.log(`Cannot send heartbeat, because socket closed`);return}var e=JSON.stringify({type:X.Heartbeat});this._socket.send(e),this._scheduleHeartbeat()},t.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},t.prototype._sendQueuedMessages=function(){var e,t,n=Ze([],Xe(this._messagesQueue),!1);this._messagesQueue=[];try{for(var r=Qe(n),i=r.next();!i.done;i=r.next()){var a=i.value;this.send(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype.send=function(e){if(!this._disconnected){if(!this._id){this._messagesQueue.push(e);return}if(!e.type){this.emit(Y.Error,`Invalid message`);return}if(this._wsOpen()){var t=JSON.stringify(e);this._socket.send(t)}}},t.prototype.close=function(){this._disconnected||=(this._cleanup(),!0)},t.prototype._cleanup=function(){this._socket&&=(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),void 0),clearTimeout(this._wsPingTimer)},t}(R.EventEmitter),et={};F(et,`MediaConnection`,()=>dt,e=>dt=e);var tt={};F(tt,`Negotiator`,()=>it,e=>it=e);var nt=function(){return nt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1]))&&(o[0]===6||o[0]===2)){n=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]st,e=>st=e);var ot=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),st=function(e){ot(t,e);function t(t,n,r){var i=e.call(this)||this;return i.peer=t,i.provider=n,i.options=r,i._open=!1,i.metadata=r.metadata,i}return Object.defineProperty(t.prototype,`open`,{get:function(){return this._open},enumerable:!1,configurable:!0}),t}(R.EventEmitter),ct=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),lt=function(){return lt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},dt=function(e){ct(t,e);function t(n,r,i){var a=e.call(this,n,r,i)||this;return a._localStream=a.options._stream,a.connectionId=a.options.connectionId||t.ID_PREFIX+L.randomToken(),a._negotiator=new tt.Negotiator(a),a._localStream&&a._negotiator.startConnection({_stream:a._localStream,originator:!0}),a}return Object.defineProperty(t.prototype,`type`,{get:function(){return K.Media},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`localStream`,{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`remoteStream`,{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),t.prototype.addStream=function(t){H.default.log(`Receiving stream`,t),this._remoteStream=t,e.prototype.emit.call(this,`stream`,t)},t.prototype.handleMessage=function(e){var t=e.type,n=e.payload;switch(e.type){case X.Answer:this._negotiator.handleSDP(t,n.sdp),this._open=!0;break;case X.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:H.default.warn(`Unrecognized message type:${t} from peer:${this.peer}`);break}},t.prototype.answer=function(e,t){var n,r;if(t===void 0&&(t={}),this._localStream){H.default.warn(`Local stream already exists on this MediaConnection. Are you answering a call twice?`);return}this._localStream=e,t&&t.sdpTransform&&(this.options.sdpTransform=t.sdpTransform),this._negotiator.startConnection(lt(lt({},this.options._payload),{_stream:e}));var i=this.provider._getMessages(this.connectionId);try{for(var a=ut(i),o=a.next();!o.done;o=a.next()){var s=o.value;this.handleMessage(s)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}this._open=!0},t.prototype.close=function(){this._negotiator&&=(this._negotiator.cleanup(),null),this._localStream=null,this._remoteStream=null,this.provider&&=(this.provider._removeConnection(this),null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,e.prototype.emit.call(this,`close`))},t.ID_PREFIX=`mc_`,t}(at.BaseConnection),ft={};F(ft,`DataConnection`,()=>vt,e=>vt=e);var pt={};F(pt,`EncodingQueue`,()=>ht,e=>ht=e);var mt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),ht=function(e){mt(t,e);function t(){var t=e.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(e){t._processing=!1,e.target&&t.emit(`done`,e.target.result),t.doNextTask()},t.fileReader.onerror=function(e){H.default.error(`EncodingQueue error:`,e),t._processing=!1,t.destroy(),t.emit(`error`,e)},t}return Object.defineProperty(t.prototype,`queue`,{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`size`,{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`processing`,{get:function(){return this._processing},enumerable:!1,configurable:!0}),t.prototype.enque=function(e){this.queue.push(e),!this.processing&&this.doNextTask()},t.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},t.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},t}(R.EventEmitter),gt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),_t=function(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},vt=function(e){gt(t,e);function t(n,r,i){var a=e.call(this,n,r,i)||this;return a.stringify=JSON.stringify,a.parse=JSON.parse,a._buffer=[],a._bufferSize=0,a._buffering=!1,a._chunkedData={},a._encodingQueue=new pt.EncodingQueue,a.connectionId=a.options.connectionId||t.ID_PREFIX+L.randomToken(),a.label=a.options.label||a.connectionId,a.serialization=a.options.serialization||J.Binary,a.reliable=!!a.options.reliable,a._encodingQueue.on(`done`,function(e){a._bufferedSend(e)}),a._encodingQueue.on(`error`,function(){H.default.error(`DC#${a.connectionId}: Error occured in encoding from blob to arraybuffer, close DC`),a.close()}),a._negotiator=new tt.Negotiator(a),a._negotiator.startConnection(a.options._payload||{originator:!0}),a}return Object.defineProperty(t.prototype,`type`,{get:function(){return K.Data},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`dataChannel`,{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`bufferSize`,{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),t.prototype.initialize=function(e){this._dc=e,this._configureDataChannel()},t.prototype._configureDataChannel=function(){var e=this;(!L.supports.binaryBlob||L.supports.reliable)&&(this.dataChannel.binaryType=`arraybuffer`),this.dataChannel.onopen=function(){H.default.log(`DC#${e.connectionId} dc connection success`),e._open=!0,e.emit(`open`)},this.dataChannel.onmessage=function(t){H.default.log(`DC#${e.connectionId} dc onmessage:`,t.data),e._handleDataMessage(t)},this.dataChannel.onclose=function(){H.default.log(`DC#${e.connectionId} dc closed for:`,e.peer),e.close()}},t.prototype._handleDataMessage=function(t){var n=this,r=t.data,i=r.constructor,a=this.serialization===J.Binary||this.serialization===J.BinaryUTF8,o=r;if(a){if(i===Blob){L.blobToArrayBuffer(r,function(e){var t=L.unpack(e);n.emit(`data`,t)});return}else if(i===ArrayBuffer)o=L.unpack(r);else if(i===String){var s=L.binaryStringToArrayBuffer(r);o=L.unpack(s)}}else this.serialization===J.JSON&&(o=this.parse(r));if(o.__peerData){this._handleChunk(o);return}e.prototype.emit.call(this,`data`,o)},t.prototype._handleChunk=function(e){var t=e.__peerData,n=this._chunkedData[t]||{data:[],count:0,total:e.total};if(n.data[e.n]=e.data,n.count++,this._chunkedData[t]=n,n.total===n.count){delete this._chunkedData[t];var r=new Blob(n.data);this._handleDataMessage({data:r})}},t.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&=(this._negotiator.cleanup(),null),this.provider&&=(this.provider._removeConnection(this),null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&=(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),null),this.open&&(this._open=!1,e.prototype.emit.call(this,`close`))},t.prototype.send=function(t,n){if(!this.open){e.prototype.emit.call(this,`error`,Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===J.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===J.Binary||this.serialization===J.BinaryUTF8){var r=L.pack(t);if(!n&&r.size>L.chunkedMTU){this._sendChunks(r);return}L.supports.binaryBlob?this._bufferedSend(r):this._encodingQueue.enque(r)}else this._bufferedSend(t)},t.prototype._bufferedSend=function(e){(this._buffering||!this._trySend(e))&&(this._buffer.push(e),this._bufferSize=this._buffer.length)},t.prototype._trySend=function(e){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>t.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(e)}catch(e){return H.default.error(`DC#:${this.connectionId} Error when sending:`,e),this._buffering=!0,this.close(),!1}return!0},t.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var e=this._buffer[0];this._trySend(e)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},t.prototype._sendChunks=function(e){var t,n,r=L.chunk(e);H.default.log(`DC#${this.connectionId} Try to send ${r.length} chunks...`);try{for(var i=_t(r),a=i.next();!a.done;a=i.next()){var o=a.value;this.send(o,!0)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.handleMessage=function(e){var t=e.payload;switch(e.type){case X.Answer:this._negotiator.handleSDP(e.type,t.sdp);break;case X.Candidate:this._negotiator.handleCandidate(t.candidate);break;default:H.default.warn(`Unrecognized message type:`,e.type,`from peer:`,this.peer);break}},t.ID_PREFIX=`dc_`,t.MAX_BUFFERED_AMOUNT=8388608,t}(at.BaseConnection),yt={};F(yt,`API`,()=>St,e=>St=e);var bt=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},xt=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(o){if(r)throw TypeError(`Generator is already executing.`);for(;n;)try{if(r=1,i&&(a=o[0]&2?i.return:o[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,o[1])).done)return a;switch(i=0,a&&(o=[o[0]&2,a.value]),o[0]){case 0:case 1:a=o;break;case 4:return n.label++,{value:o[1],done:!1};case 5:n.label++,i=o[1],o=[0];continue;case 7:o=n.ops.pop(),n.trys.pop();continue;default:if((a=n.trys,!(a=a.length>0&&a[a.length-1]))&&(o[0]===6||o[0]===2)){n=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},wt=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a};(function(){function e(){}return e})();var Tt=function(e){Ct(t,e);function t(n,r){var i=e.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var a;return n&&n.constructor==Object?r=n:n&&(a=n.toString()),r=Q({debug:0,host:L.CLOUD_HOST,port:L.CLOUD_PORT,path:`/`,key:t.DEFAULT_KEY,token:L.randomToken(),config:L.defaultConfig,referrerPolicy:`strict-origin-when-cross-origin`},r),i._options=r,i._options.host===`/`&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!==`/`&&(i._options.path=`/`+i._options.path),i._options.path[i._options.path.length-1]!==`/`&&(i._options.path+=`/`)),i._options.secure===void 0&&i._options.host!==L.CLOUD_HOST?i._options.secure=L.isSecure():i._options.host==L.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&H.default.setLogFunction(i._options.logFunction),H.default.logLevel=i._options.debug||0,i._api=new yt.API(r),i._socket=i._createServerConnection(),!L.supports.audioVideo&&!L.supports.data?(i._delayedAbort(q.BrowserIncompatible,`The current browser does not support WebRTC`),i):a&&!L.validateId(a)?(i._delayedAbort(q.InvalidID,`ID "${a}" is invalid`),i):(a?i._initialize(a):i._api.retrieveId().then(function(e){return i._initialize(e)}).catch(function(e){return i._abort(q.ServerError,e)}),i)}return Object.defineProperty(t.prototype,`id`,{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`options`,{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`open`,{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`socket`,{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`connections`,{get:function(){var e,t,n=Object.create(null);try{for(var r=$(this._connections),i=r.next();!i.done;i=r.next()){var a=wt(i.value,2),o=a[0];n[o]=a[1]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`destroyed`,{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`disconnected`,{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),t.prototype._createServerConnection=function(){var e=this,t=new qe.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return t.on(Y.Message,function(t){e._handleMessage(t)}),t.on(Y.Error,function(t){e._abort(q.SocketError,t)}),t.on(Y.Disconnected,function(){e.disconnected||(e.emitError(q.Network,`Lost connection to server.`),e.disconnect())}),t.on(Y.Close,function(){e.disconnected||e._abort(q.SocketClosed,`Underlying socket is already closed.`)}),t},t.prototype._initialize=function(e){this._id=e,this.socket.start(e,this._options.token)},t.prototype._handleMessage=function(e){var t,n,r=e.type,i=e.payload,a=e.src;switch(r){case X.Open:this._lastServerId=this.id,this._open=!0,this.emit(`open`,this.id);break;case X.Error:this._abort(q.ServerError,i.msg);break;case X.IdTaken:this._abort(q.UnavailableID,`ID "${this.id}" is taken`);break;case X.InvalidKey:this._abort(q.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case X.Leave:H.default.log(`Received leave message from ${a}`),this._cleanupPeer(a),this._connections.delete(a);break;case X.Expire:this.emitError(q.PeerUnavailable,`Could not connect to peer ${a}`);break;case X.Offer:var o=i.connectionId,s=this.getConnection(a,o);if(s&&(s.close(),H.default.warn(`Offer received for existing Connection ID:${o}`)),i.type===K.Media){var c=new et.MediaConnection(a,this,{connectionId:o,_payload:i,metadata:i.metadata});s=c,this._addConnection(a,s),this.emit(`call`,c)}else if(i.type===K.Data){var l=new ft.DataConnection(a,this,{connectionId:o,_payload:i,metadata:i.metadata,label:i.label,serialization:i.serialization,reliable:i.reliable});s=l,this._addConnection(a,s),this.emit(`connection`,l)}else{H.default.warn(`Received malformed connection type:${i.type}`);return}var u=this._getMessages(o);try{for(var d=$(u),f=d.next();!f.done;f=d.next()){var p=f.value;s.handleMessage(p)}}catch(e){t={error:e}}finally{try{f&&!f.done&&(n=d.return)&&n.call(d)}finally{if(t)throw t.error}}break;default:if(!i){H.default.warn(`You received a malformed message from ${a} of type ${r}`);return}var o=i.connectionId,s=this.getConnection(a,o);s&&s.peerConnection?s.handleMessage(e):o?this._storeMessage(o,e):H.default.warn(`You received an unrecognized message:`,e);break}},t.prototype._storeMessage=function(e,t){this._lostMessages.has(e)||this._lostMessages.set(e,[]),this._lostMessages.get(e).push(t)},t.prototype._getMessages=function(e){var t=this._lostMessages.get(e);return t?(this._lostMessages.delete(e),t):[]},t.prototype.connect=function(e,t){if(t===void 0&&(t={}),this.disconnected){H.default.warn(`You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available.`),this.emitError(q.Disconnected,`Cannot connect to new Peer after disconnecting from server.`);return}var n=new ft.DataConnection(e,this,t);return this._addConnection(e,n),n},t.prototype.call=function(e,t,n){if(n===void 0&&(n={}),this.disconnected){H.default.warn(`You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect.`),this.emitError(q.Disconnected,`Cannot connect to new Peer after disconnecting from server.`);return}if(!t){H.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var r=new et.MediaConnection(e,this,Q(Q({},n),{_stream:t}));return this._addConnection(e,r),r},t.prototype._addConnection=function(e,t){H.default.log(`add connection ${t.type}:${t.connectionId} to peerId:${e}`),this._connections.has(e)||this._connections.set(e,[]),this._connections.get(e).push(t)},t.prototype._removeConnection=function(e){var t=this._connections.get(e.peer);if(t){var n=t.indexOf(e);n!==-1&&t.splice(n,1)}this._lostMessages.delete(e.connectionId)},t.prototype.getConnection=function(e,t){var n,r,i=this._connections.get(e);if(!i)return null;try{for(var a=$(i),o=a.next();!o.done;o=a.next()){var s=o.value;if(s.connectionId===t)return s}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return null},t.prototype._delayedAbort=function(e,t){var n=this;setTimeout(function(){n._abort(e,t)},0)},t.prototype._abort=function(e,t){H.default.error(`Aborting!`),this.emitError(e,t),this._lastServerId?this.disconnect():this.destroy()},t.prototype.emitError=function(e,t){H.default.error(`Error:`,t);var n=typeof t==`string`?Error(t):t;n.type=e,this.emit(`error`,n)},t.prototype.destroy=function(){this.destroyed||(H.default.log(`Destroy peer with ID:${this.id}`),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit(`close`))},t.prototype._cleanup=function(){var e,t;try{for(var n=$(this._connections.keys()),r=n.next();!r.done;r=n.next()){var i=r.value;this._cleanupPeer(i),this._connections.delete(i)}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this.socket.removeAllListeners()},t.prototype._cleanupPeer=function(e){var t,n,r=this._connections.get(e);if(r)try{for(var i=$(r),a=i.next();!a.done;a=i.next())a.value.close()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.disconnect=function(){if(!this.disconnected){var e=this.id;H.default.log(`Disconnect peer with ID:${e}`),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=e,this._id=null,this.emit(`disconnected`,e)}},t.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)H.default.log(`Attempting reconnection to server with ID ${this._lastServerId}`),this._disconnected=!1,this._initialize(this._lastServerId);else if(this.destroyed)throw Error(`This peer cannot reconnect to the server. It has already been destroyed.`);else if(!this.disconnected&&!this.open)H.default.error(`In a hurry? We're still trying to make the initial connection!`);else throw Error(`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`)},t.prototype.listAllPeers=function(e){var t=this;e===void 0&&(e=function(e){}),this._api.listAllPeers().then(function(t){return e(t)}).catch(function(e){return t._abort(q.ServerError,e)})},t.DEFAULT_KEY=`peerjs`,t}(R.EventEmitter),Et=Be.Peer;export{Le as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js.gz b/Needle/MenuScene/dist/assets/peerjs.UdR1_Ath.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..174c92c0eb108dece05b536682acca5fd0560c0c GIT binary patch literal 35531 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js b/Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js new file mode 100644 index 0000000..de6f214 --- /dev/null +++ b/Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js @@ -0,0 +1,947 @@ +import{$t as e,A as t,Ar as n,Bt as r,Dn as i,E as a,En as o,Er as s,Fr as c,H as l,It as u,Jn as d,O as f,On as p,Qn as m,Rt as h,S as g,Un as _,Ut as v,V as y,Vt as b,X as x,Xt as S,Y as ee,Zn as C,Zt as te,f as w,gn as T,gr as ne,it as re,jr as E,kr as D,mn as O,nt as ie,on as k,ot as A,qn as ae,qt as oe,tn as se,tr as j,wr as ce,x as le,xr as M}from"./three@0.169.19.js";var ue=`6.39.0`,de=class{dispose(){}},fe=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),n=new g;return n.setAttribute(`position`,new le(e,3)),n.setAttribute(`uv`,new le(t,2)),n})(),N=class e{static get fullscreenGeometry(){return fe}constructor(e=`Pass`,t=new m,n=new O){this.name=e,this.renderer=null,this.scene=t,this.camera=n,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthBlit=!1,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;t!==null&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return this.screen===null?null:this.screen.material}set fullscreenMaterial(t){let n=this.screen;n===null?(n=new te(e.fullscreenGeometry,t),n.frustumCulled=!1,this.scene===null&&(this.scene=new m),this.scene.add(n),this.screen=n):n.material=t}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=w){}render(e,t,n,r,i){throw Error(`Render method not implemented!`)}setSize(e,t){}initialize(e,t,n){}dispose(){for(let t of Object.keys(this)){let n=this[t];(n instanceof c||n instanceof oe||n instanceof ne||n instanceof e)&&this[t].dispose()}this.fullscreenMaterial!==null&&this.fullscreenMaterial.dispose()}},pe=class extends N{constructor(){super(`ClearMaskPass`,null,null),this.needsSwap=!1}render(e,t,n,r,i){let a=e.state.buffers.stencil;a.setLocked(!1),a.setTest(!1)}},me=`#ifdef COLOR_WRITE +#include +#include +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#endif +#ifdef DEPTH_WRITE +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +} +#endif +#ifdef USE_WEIGHTS +uniform vec4 channelWeights; +#endif +uniform float opacity;varying vec2 vUv;void main(){ +#ifdef COLOR_WRITE +vec4 texel=texture2D(inputBuffer,vUv); +#ifdef USE_WEIGHTS +texel*=channelWeights; +#endif +gl_FragColor=opacity*texel; +#ifdef COLOR_SPACE_CONVERSION +#include +#endif +#include +#else +gl_FragColor=vec4(0.0); +#endif +#ifdef DEPTH_WRITE +gl_FragDepth=readDepth(vUv); +#endif +}`,P=`varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,he=class extends j{constructor(){super({name:`CopyMaterial`,defines:{COLOR_SPACE_CONVERSION:`1`,DEPTH_PACKING:`0`,COLOR_WRITE:`1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),channelWeights:new M(null),opacity:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:me,vertexShader:P}),this.depthFunc=1}get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=e!==null;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=e!==null;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get colorSpaceConversion(){return this.defines.COLOR_SPACE_CONVERSION!==void 0}set colorSpaceConversion(e){this.colorSpaceConversion!==e&&(e?this.defines.COLOR_SPACE_CONVERSION=!0:delete this.defines.COLOR_SPACE_CONVERSION,this.needsUpdate=!0)}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){e===null?delete this.defines.USE_WEIGHTS:(this.defines.USE_WEIGHTS=`1`,this.uniforms.channelWeights.value=e),this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}},ge=class extends N{constructor(e,t=!0){super(`CopyPass`),this.fullscreenMaterial=new he,this.needsSwap=!1,this.renderTarget=e,e===void 0&&(this.renderTarget=new c(1,1,{minFilter:u,magFilter:u,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name=`CopyPass.Target`),this.autoResize=t}get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,n,r,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,n){n!==void 0&&(this.renderTarget.texture.type=n,n===1009?e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C):this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},_e=new t,ve=class extends N{constructor(e=!0,t=!0,n=!1){super(`ClearPass`,null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=n,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,n){this.color=e,this.depth=t,this.stencil=n}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,n,r,i){let a=this.overrideClearColor,o=this.overrideClearAlpha,s=e.getClearAlpha(),c=a!==null,l=o>=0;c?(e.getClearColor(_e),e.setClearColor(a,l?o:s)):l&&e.setClearAlpha(o),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),c?e.setClearColor(_e,s):l&&e.setClearAlpha(s)}},ye=class extends N{constructor(e,t){super(`MaskPass`,e,t),this.needsSwap=!1,this.clearPass=new ve(!1,!1,!0),this.inverse=!1}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,n,r,i){let a=e.getContext(),o=e.state.buffers,s=this.scene,c=this.camera,l=this.clearPass,u=+!this.inverted,d=1-u;o.color.setMask(!1),o.depth.setMask(!1),o.color.setLocked(!0),o.depth.setLocked(!0),o.stencil.setTest(!0),o.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),o.stencil.setFunc(a.ALWAYS,u,4294967295),o.stencil.setClear(d),o.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?l.render(e,null):(l.render(e,t),l.render(e,n))),this.renderToScreen?(e.setRenderTarget(null),e.render(s,c)):(e.setRenderTarget(t),e.render(s,c),e.setRenderTarget(n),e.render(s,c)),o.color.setLocked(!1),o.depth.setLocked(!1),o.stencil.setLocked(!1),o.stencil.setFunc(a.EQUAL,1,4294967295),o.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),o.stencil.setLocked(!0)}},be=1/1e3,xe=1e3,Se=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(e){typeof document<`u`&&document.hidden!==void 0&&(e?document.addEventListener(`visibilitychange`,this):document.removeEventListener(`visibilitychange`,this),this._autoReset=e)}get delta(){return this._delta*be}get fixedDelta(){return this._fixedDelta*be}set fixedDelta(e){this._fixedDelta=e*xe}get elapsed(){return this._elapsed*be}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(e===void 0?performance.now():e)-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},Ce=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:n=!1,multisampling:r=0,frameBufferType:i}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,n,i,r),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new ge,this.depthTexture=null,this.depthRenderTarget=null,this.passes=[],this.timer=new Se,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples}set multisampling(e){let t=this.inputBuffer,n=this.multisampling;n>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):n!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,e!==null){let t=e.getSize(new D),n=e.getContext().getContextAttributes().alpha,r=this.inputBuffer.texture.type;r===1009&&e.outputColorSpace===`srgb`&&(this.inputBuffer.texture.colorSpace=C,this.outputBuffer.texture.colorSpace=C,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height);for(let t of this.passes)t.initialize(e,n,r)}}replaceRenderer(e,t=!0){let n=this.renderer,r=n.domElement.parentNode;return this.setRenderer(e),t&&r!==null&&(r.removeChild(n.domElement),r.appendChild(e.domElement)),n}createDepthTexture(){let e=this.inputBuffer,t=new x;this.depthTexture=t,e.stencilBuffer?(t.format=ee,t.type=s):t.type=A;let n=t.clone();return n.name=`EffectComposer.StableDepth`,this.depthRenderTarget=new c(e.width,e.height,{depthBuffer:!0,stencilBuffer:e.stencilBuffer,depthTexture:n}),n}blitDepthBuffer(e){let t=this.renderer,n=this.depthRenderTarget,r=t.properties,i=t.getContext();t.setRenderTarget(n);let a=r.get(e).__webglFramebuffer,o=r.get(n).__webglFramebuffer,s=e.stencilBuffer?i.DEPTH_BUFFER_BIT|i.STENCIL_BUFFER_BIT:i.DEPTH_BUFFER_BIT;i.bindFramebuffer(i.READ_FRAMEBUFFER,a),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,o),i.blitFramebuffer(0,0,e.width,e.height,0,0,n.width,n.height,s,i.NEAREST),i.bindFramebuffer(i.READ_FRAMEBUFFER,null),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),t.setRenderTarget(null)}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.depthRenderTarget.dispose(),this.depthRenderTarget=null,this.inputBuffer.depthTexture=null,this.outputBuffer.depthTexture=null;for(let e of this.passes)e.setDepthTexture(null)}}createBuffer(e,t,n,r){let i=this.renderer,a=i===null?new D:i.getDrawingBufferSize(new D),o={minFilter:u,magFilter:u,stencilBuffer:t,depthBuffer:e,type:n},s=new c(a.width,a.height,o);return r>0&&(s.samples=r),n===1009&&i!==null&&i.outputColorSpace===`srgb`&&(s.texture.colorSpace=C),s.texture.name=`EffectComposer.Buffer`,s.texture.generateMipmaps=!1,s}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let n=this.passes,r=this.renderer,i=r.getDrawingBufferSize(new D),a=r.getContext().getContextAttributes().alpha,o=this.inputBuffer.texture.type;if(e.renderer=r,e.setSize(i.width,i.height),e.initialize(r,a,o),this.autoRenderToScreen&&(n.length>0&&(n[n.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),t===void 0?n.push(e):n.splice(t,0,e),this.autoRenderToScreen&&(n[n.length-1].renderToScreen=!0),e.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){let t=this.createDepthTexture();for(e of n)e.setDepthTexture(t)}else{let t=this.depthRenderTarget.depthTexture;e.setDepthTexture(t)}}removePass(e){let t=this.passes,n=t.indexOf(e);if(n!==-1&&t.splice(n,1).length>0){if(this.depthTexture!==null&&!t.reduce((e,t)=>e||t.needsDepthTexture,!1)){let t=this.depthRenderTarget.depthTexture;e.getDepthTexture()===t&&e.setDepthTexture(null),this.deleteDepthTexture()}this.autoRenderToScreen&&n===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0))}}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t=this.renderer,n=this.copyPass,r=this.inputBuffer,i=this.outputBuffer,a,o=!1;e===void 0&&(this.timer.update(),e=this.timer.getDelta());for(let s of this.passes)if(s.enabled){if(r.depthTexture=this.depthTexture,i.depthTexture=null,s.render(t,r,i,e,o),s.needsDepthBlit&&this.depthRenderTarget!==null&&this.blitDepthBuffer(r),s.needsSwap){if(o){n.renderToScreen=s.renderToScreen;let a=t.getContext(),c=t.state.buffers.stencil;c.setFunc(a.NOTEQUAL,1,4294967295),n.render(t,r,i,e,o),c.setFunc(a.EQUAL,1,4294967295)}a=r,r=i,i=a}s instanceof ye?o=!0:s instanceof pe&&(o=!1)}}setSize(e,t,n){let r=this.renderer,i=r.getSize(new D);(e===void 0||t===void 0)&&(e=i.width,t=i.height),(i.width!==e||i.height!==t)&&r.setSize(e,t,n);let a=r.getDrawingBufferSize(new D);this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.depthRenderTarget!==null&&this.depthRenderTarget.setSize(a.width,a.height);for(let e of this.passes)e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),N.fullscreenGeometry.dispose()}},F={NONE:0,DEPTH:1,CONVOLUTION:2},I={FRAGMENT_HEAD:`FRAGMENT_HEAD`,FRAGMENT_MAIN_UV:`FRAGMENT_MAIN_UV`,FRAGMENT_MAIN_IMAGE:`FRAGMENT_MAIN_IMAGE`,VERTEX_HEAD:`VERTEX_HEAD`,VERTEX_MAIN_SUPPORT:`VERTEX_MAIN_SUPPORT`},we=class{constructor(){this.shaderParts=new Map([[I.FRAGMENT_HEAD,null],[I.FRAGMENT_MAIN_UV,null],[I.FRAGMENT_MAIN_IMAGE,null],[I.VERTEX_HEAD,null],[I.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=F.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=r}};function Te(e){let t;if(e===0)t=new Float64Array;else if(e===1)t=new Float64Array([1]);else if(e>1){let n=new Float64Array(e),r=new Float64Array(e);for(let i=1;i<=e;++i){for(let e=0;e1020)throw Error(`The kernel size must be in the range [3, 1020]`);let n=e+t*2,r=t>0?Te(n).slice(t,-t):Te(n),i=Math.floor((r.length-1)/2),a=r.reduce((e,t)=>e+t,0),o=r.slice(i),s=[...Array(i+1).keys()],c=new Float64Array(Math.floor(s.length/2)),l=new Float64Array(c.length);c[0]=o[0]/a;for(let e=1,t=1,n=s.length-1;ee+t,0)-c[0]*.5)*2;if(u!==0)for(let e=0,t=c.length,n=1/u;e{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case 2:t=this.materialsFlatShadedDoubleSide;break;case 1:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case 2:t=this.materialsDoubleSide;break;case 1:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof j))return e.clone();let t=e.uniforms,n=new Map;for(let e in t){let r=t[e].value;r.isRenderTargetTexture&&(t[e].value=null,n.set(e,r))}let r=e.clone();for(let e of n)t[e[0]].value=e[1],r.uniforms[e[0]].value=e[1];return r}setMaterial(e){if(this.disposeMaterials(),this.material=e,e!==null){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let n of t)n.uniforms=Object.assign({},e.uniforms),n.side=0;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.side=1,n}),this.materialsDoubleSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.side=2,n}),this.materialsFlatShaded=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n}),this.materialsFlatShadedBackSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n.side=1,n}),this.materialsFlatShadedDoubleSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n.side=2,n})}}render(e,t,n){let r=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,ke){let r=this.originalMaterials;this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,n);for(let e of r)e[0].material=e[1];this.meshCount!==r.size&&r.clear()}else{let r=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,n),t.overrideMaterial=r}e.shadowMap.enabled=r}disposeMaterials(){if(this.material!==null){let e=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(let t of e)t.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return ke}static set workaroundEnabled(e){ke=e}},je=class{setSize(e,t){}},L=-1,R=class extends ie{constructor(e,t=L,n=L,r=1){super(),this.resizable=e,this.baseSize=new D(1,1),this.preferredSize=new D(t,n),this.target=this.preferredSize,this.s=r,this.effectiveSize=new D,this.addEventListener(`change`,()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,n=this.effectiveSize,r=this.scale;t.width===L?t.height===L?n.width=Math.round(e.width*r):n.width=Math.round(t.height*(e.width/Math.max(e.height,1))):n.width=t.width,t.height===L?t.width===L?n.height=Math.round(e.height*r):n.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):n.height=t.height}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(L),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return L}},Me=new class{constructor(e=0){this.nextId=e}getNextId(){return this.nextId++}reset(e=0){return this.nextId=e,this}}(2),Ne=class extends Set{constructor(e,t=Me.getNextId()){super(),this.exclusive=!1,this._layer=t,(this._layer<1||this._layer>31)&&(console.warn(`Layer out of range, resetting to 2`),Me.reset(2),this._layer=Me.getNextId()),e!==void 0&&this.set(e)}get layer(){return this._layer}set layer(e){let t=this._layer;for(let n of this)n.layers.disable(t),n.layers.enable(e);this._layer=e}getLayer(){return this.layer}setLayer(e){this.layer=e}isExclusive(){return this.exclusive}setExclusive(e){this.exclusive=e}clear(){let e=this.layer;for(let t of this)t.layers.disable(e);return super.clear()}set(e){this.clear();for(let t of e)this.add(t);return this}indexOf(e){return this.has(e)?0:-1}add(e){return this.exclusive?e.layers.set(this.layer):e.layers.enable(this.layer),super.add(e)}delete(e){return this.has(e)&&e.layers.disable(this.layer),super.delete(e)}toggle(e){let t;return this.has(e)?(this.delete(e),t=!1):(this.add(e),t=!0),t}setVisible(e){for(let t of this)e?t.layers.enable(0):t.layers.disable(0);return this}},z={SKIP:9,SET:30,ADD:0,ALPHA:1,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},Pe=new Map([[z.ADD,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.ALPHA,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,src.a*opacity);}`],[z.AVERAGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=(dst.rgb+src.rgb)*0.5;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.xy,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR_BURN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/max(b,1e-9))),vec3(1.0),step(1.0,a));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR_DODGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DARKEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DIFFERENCE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=abs(dst.rgb-src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DIVIDE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb/max(src.rgb,1e-9);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DST,null],[z.EXCLUSION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-2.0*dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HARD_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb,1.0);vec3 b=min(src.rgb,1.0);vec3 c=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HARD_MIX,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=step(1.0,dst.rgb+src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HUE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.x,a.yz));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.INVERT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.INVERT_RGB,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=src.rgb*max(1.0-dst.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LIGHTEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_BURN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_DODGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb+src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(2.0*src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LUMINOSITY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.xy,b.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.MULTIPLY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.NEGATION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-abs(1.0-dst.rgb-src.rgb),0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.NORMAL,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,opacity);}`],[z.OVERLAY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=2.0*src.rgb*dst.rgb;vec3 b=1.0-2.0*(1.0-src.rgb)*(1.0-dst.rgb);vec3 c=mix(a,b,step(0.5,dst.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.PIN_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 c=mix(mix(src2,dst.rgb,step(0.5*dst.rgb,src.rgb)),max(src2-1.0,vec3(0.0)),step(dst.rgb,src2-1.0));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.REFLECT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb*dst.rgb/max(1.0-src.rgb,1e-9),1.0);vec3 c=mix(a,src.rgb,step(1.0,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SATURATION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.x,b.y,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SCREEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-min(dst.rgb*src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SOFT_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 d=dst.rgb+(src2-1.0);vec3 w=step(0.5,src.rgb);vec3 a=dst.rgb-(1.0-src2)*dst.rgb*(1.0-dst.rgb);vec3 b=mix(d*(sqrt(dst.rgb)-dst.rgb),d*dst.rgb*((16.0*dst.rgb-12.0)*dst.rgb+3.0),w*(1.0-step(0.25,dst.rgb)));vec3 c=mix(a,b,w);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SRC,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return src;}`],[z.SUBTRACT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.VIVID_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=mix(max(1.0-min((1.0-dst.rgb)/(2.0*src.rgb),1.0),0.0),min(dst.rgb/(2.0*(1.0-src.rgb)),1.0),step(0.5,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`]]),Fe=class extends ie{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new M(t)}getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:`change`})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return Pe.get(this.blendFunction)}},Ie=class extends a{constructor({characters:e=` .:,'-^=*+?!|0#X%WM@`,font:t=`Arial`,fontSize:n=54,size:r=1024,cellCount:i=16}={}){super(document.createElement(`canvas`),void 0,d,d);let a=this.image;a.width=a.height=r;let o=a.getContext(`2d`),s=r/i;o.font=`${n}px ${t}`,o.textAlign=`center`,o.textBaseline=`middle`,o.fillStyle=`#ffffff`;for(let t=0,n=e.length;tthis.setChanged()),this._inputColorSpace=r,this._outputColorSpace=``}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:`change`})}setDepthTexture(e,t=w){}update(e,t,n){}setSize(e,t){}initialize(e,t,n){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof c||t instanceof oe||t instanceof ne||t instanceof N)&&this[e].dispose()}}},Le=`uniform sampler2D asciiTexture;uniform vec4 cellCount; +#ifdef USE_COLOR +uniform vec3 color; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 pixelizedUv=cellCount.zw*(0.5+floor(uv*cellCount.xy));vec4 texel=texture(inputBuffer,pixelizedUv);float lum=min(luminance(texel.rgb),1.0); +#ifdef INVERTED +lum=1.0-lum; +#endif +float characterIndex=floor(CHAR_COUNT_MINUS_ONE*lum);vec2 characterPosition=vec2(mod(characterIndex,TEX_CELL_COUNT),floor(characterIndex*INV_TEX_CELL_COUNT));vec2 offset=vec2(characterPosition.x,-characterPosition.y)*INV_TEX_CELL_COUNT;vec2 characterUv=mod(uv*(cellCount.xy*INV_TEX_CELL_COUNT),INV_TEX_CELL_COUNT);characterUv=characterUv-vec2(0.0,INV_TEX_CELL_COUNT)+offset;float asciiCharacter=texture(asciiTexture,characterUv).r; +#ifdef USE_COLOR +outputColor=vec4(color*asciiCharacter,inputColor.a); +#else +outputColor=vec4(texel.rgb*asciiCharacter,inputColor.a); +#endif +}`,Re=class extends B{constructor({asciiTexture:e=new Ie,cellSize:n=16,color:r=null,inverted:i=!1}={}){super(`ASCIIEffect`,Le,{uniforms:new Map([[`asciiTexture`,new M(null)],[`cellCount`,new M(new E)],[`color`,new M(new t)]])}),this._cellSize=-1,this.resolution=new D,this.asciiTexture=e,this.cellSize=n,this.color=r,this.inverted=i}get asciiTexture(){return this.uniforms.get(`asciiTexture`).value}set asciiTexture(e){let t=this.uniforms.get(`asciiTexture`).value;if(this.uniforms.get(`asciiTexture`).value=e,t!==null&&t!==e&&t.dispose(),e!==null){let t=e.cellCount;this.defines.set(`CHAR_COUNT_MINUS_ONE`,(e.characterCount-1).toFixed(1)),this.defines.set(`TEX_CELL_COUNT`,t.toFixed(1)),this.defines.set(`INV_TEX_CELL_COUNT`,(1/t).toFixed(9)),this.setChanged()}}get color(){return this.uniforms.get(`color`).value}set color(e){e!==null&&this.uniforms.get(`color`).value.set(e),this.defines.has(`USE_COLOR`)&&e===null?(this.defines.delete(`USE_COLOR`),this.setChanged()):!this.defines.has(`USE_COLOR`)&&e!==null&&(this.defines.set(`USE_COLOR`,`1`),this.setChanged())}get inverted(){return this.defines.has(`INVERTED`)}set inverted(e){this.inverted!==e&&(e?this.defines.set(`INVERTED`,`1`):this.defines.delete(`INVERTED`),this.setChanged())}get cellSize(){return this._cellSize}set cellSize(e){this._cellSize!==e&&(this._cellSize=e,this.updateCellCount())}updateCellCount(){let e=this.uniforms.get(`cellCount`).value,t=this.resolution;e.x=t.width/this.cellSize,e.y=t.height/this.cellSize,e.z=1/e.x,e.w=1/e.y}setSize(e,t){this.resolution.set(e,t),this.updateCellCount()}dispose(){this.asciiTexture!==null&&this.asciiTexture.dispose(),super.dispose()}},V={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},ze=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25; +#include +}`,Be=`uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}`,Ve=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],He=class extends j{constructor(e=new E){super({name:`KawaseBlurMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new E),scale:new M(1),kernel:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:ze,vertexShader:Be}),this.setTexelSize(e.x,e.y),this.kernelSize=V.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return Ve[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,e*.5,t*.5)}setSize(e,t){let n=1/e,r=1/t;this.uniforms.texelSize.value.set(n,r,n*.5,r*.5)}},H=class extends N{constructor({kernelSize:e=V.MEDIUM,resolutionScale:t=.5,width:n=R.AUTO_SIZE,height:r=R.AUTO_SIZE,resolutionX:i=n,resolutionY:a=r}={}){super(`KawaseBlurPass`),this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`Blur.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`Blur.Target.B`;let o=this.resolution=new R(this,i,a,t);o.addEventListener(`change`,e=>this.setSize(o.baseWidth,o.baseHeight)),this._blurMaterial=new He,this._blurMaterial.kernelSize=e,this.copyMaterial=new he}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial,u=l.kernelSequence,d=t;this.fullscreenMaterial=l;for(let t=0,n=u.length;t +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef RANGE +uniform vec2 range; +#elif defined(THRESHOLD) +uniform float threshold;uniform float smoothing; +#endif +varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0; +#ifdef RANGE +float low=step(range.x,l);float high=step(l,range.y);mask=low*high; +#elif defined(THRESHOLD) +mask=smoothstep(threshold,threshold+smoothing,l); +#endif +#ifdef COLOR +gl_FragColor=texel*mask; +#else +gl_FragColor=vec4(l*mask); +#endif +}`,We=class extends j{constructor(e=!1,t=null){super({name:`LuminanceMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``)},uniforms:{inputBuffer:new M(null),threshold:new M(0),smoothing:new M(1),range:new M(null)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ue,vertexShader:P}),this.colorOutput=e,this.luminanceRange=t}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD=`1`:delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD=`1`:delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return this.defines.COLOR!==void 0}set colorOutput(e){e?this.defines.COLOR=`1`:delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return this.luminanceRange!==null}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){e===null?delete this.defines.RANGE:this.defines.RANGE=`1`,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}},Ge=class extends N{constructor({renderTarget:e,luminanceRange:t,colorOutput:n,resolutionScale:r=1,width:i=R.AUTO_SIZE,height:a=R.AUTO_SIZE,resolutionX:o=i,resolutionY:s=a}={}){super(`LuminancePass`),this.fullscreenMaterial=new We(n,t),this.needsSwap=!1,this.renderTarget=e,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`LuminancePass.Target`);let l=this.resolution=new R(this,o,s,r);l.addEventListener(`change`,e=>this.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,n,r,i){let a=this.fullscreenMaterial;a.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}initialize(e,t,n){n!==void 0&&n!==1009&&(this.renderTarget.texture.type=n,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},Ke=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#define WEIGHT_INNER 0.125 +#define WEIGHT_OUTER 0.05556 +varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c; +#include +}`,qe=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}`,Je=class extends j{constructor(){super({name:`DownsamplingMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ke,vertexShader:qe})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Ye=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer; +#else +uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; +#endif +uniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius); +#include +}`,Xe=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}`,Ze=class extends j{constructor(){super({name:`UpsamplingMaterial`,uniforms:{inputBuffer:new M(null),supportBuffer:new M(null),texelSize:new M(new D),radius:new M(.85)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ye,vertexShader:Xe})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Qe=class extends N{constructor(){super(`MipmapBlurPass`),this.needsSwap=!1,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`Upsampling.Mipmap0`,this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new Je,this.upsamplingMaterial=new Ze,this.resolution=new D}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(e){if(this.levels!==e){let t=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let n=0;n=0;--t){let n=u[t];c.setSize(d.width,d.height),c.inputBuffer=d.texture,c.supportBuffer=l[t].texture,e.setRenderTarget(n),e.render(a,o),d=n}}setSize(e,t){let n=this.resolution;n.set(e,t);let r=n.width,i=n.height;for(let e=0,t=this.downsamplingMipmaps.length;ethis.setSize(m.baseWidth,m.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get distinction(){return console.warn(this.name,`distinction was removed`),1}set distinction(e){console.warn(this.name,`distinction was removed`)}get intensity(){return this.uniforms.get(`intensity`).value}set intensity(e){this.uniforms.get(`intensity`).value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}update(e,t,n){let r=this.renderTarget,i=this.luminancePass;i.enabled?(i.render(e,t),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,i.renderTarget):this.blurPass.render(e,i.renderTarget,r)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,t):this.blurPass.render(e,t,r)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.blurPass.resolution.copy(n),this.luminancePass.setSize(e,t),this.mipmapBlurPass.setSize(e,t)}initialize(e,t,n){this.blurPass.initialize(e,t,n),this.luminancePass.initialize(e,t,n),this.mipmapBlurPass.initialize(e,t,n),n!==void 0&&(this.renderTarget.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C))}},tt=`uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect); +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearDepth=depth; +#endif +float focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(linearDepth,focusNear);float high=step(focusFar,linearDepth);float factor=(linearDepth-focusNear)*low+(linearDepth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}`,nt=class extends B{constructor({blendFunction:e,focus:t=.5,dof:n=.02,aperture:r=.015,maxBlur:i=1}={}){super(`BokehEffect`,tt,{blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`focus`,new M(t)],[`dof`,new M(n)],[`aperture`,new M(r)],[`maxBlur`,new M(i)]])})}},rt=`uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(color+vec3(0.5),inputColor.a);}`,it=class extends B{constructor({blendFunction:e=z.SRC,brightness:t=0,contrast:n=0}={}){super(`BrightnessContrastEffect`,rt,{blendFunction:e,uniforms:new Map([[`brightness`,new M(t)],[`contrast`,new M(n)]])}),this.inputColorSpace=C}get brightness(){return this.uniforms.get(`brightness`).value}set brightness(e){this.uniforms.get(`brightness`).value=e}getBrightness(){return this.brightness}setBrightness(e){this.brightness=e}get contrast(){return this.uniforms.get(`contrast`).value}set contrast(e){this.uniforms.get(`contrast`).value=e}getContrast(){return this.contrast}setContrast(e){this.contrast=e}},at=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}`,ot=class extends B{constructor(e){super(`ColorAverageEffect`,at,{blendFunction:e})}},st=`uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}`,ct=class extends B{constructor({blendFunction:e,bits:t=16}={}){super(`ColorDepthEffect`,st,{blendFunction:e,uniforms:new Map([[`factor`,new M(1)]])}),this.bits=0,this.bitDepth=t}get bitDepth(){return this.bits}set bitDepth(e){this.bits=e,this.uniforms.get(`factor`).value=2**(e/3)}getBitDepth(){return this.bitDepth}setBitDepth(e){this.bitDepth=e}},lt=`#ifdef RADIAL_MODULATION +uniform float modulationOffset; +#endif +varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=inputColor.ra;vec2 ba=inputColor.ba; +#ifdef RADIAL_MODULATION +const vec2 center=vec2(0.5);float d=distance(uv,center)*2.0;d=max(d-modulationOffset,0.0);if(vActive>0.0&&d>0.0){ra=texture2D(inputBuffer,mix(uv,vUvR,d)).ra;ba=texture2D(inputBuffer,mix(uv,vUvB,d)).ba;} +#else +if(vActive>0.0){ra=texture2D(inputBuffer,vUvR).ra;ba=texture2D(inputBuffer,vUvB).ba;} +#endif +outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}`,ut=`uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}`,dt=class extends B{constructor({offset:e=new D(.001,5e-4),radialModulation:t=!1,modulationOffset:n=.15}={}){super(`ChromaticAberrationEffect`,lt,{vertexShader:ut,attributes:F.CONVOLUTION,uniforms:new Map([[`offset`,new M(e)],[`modulationOffset`,new M(n)]])}),this.radialModulation=t}get offset(){return this.uniforms.get(`offset`).value}set offset(e){this.uniforms.get(`offset`).value=e}get radialModulation(){return this.defines.has(`RADIAL_MODULATION`)}set radialModulation(e){e?this.defines.set(`RADIAL_MODULATION`,`1`):this.defines.delete(`RADIAL_MODULATION`),this.setChanged()}get modulationOffset(){return this.uniforms.get(`modulationOffset`).value}set modulationOffset(e){this.uniforms.get(`modulationOffset`).value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}},ft=`void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){ +#ifdef INVERTED +vec3 color=vec3(1.0-depth); +#else +vec3 color=vec3(depth); +#endif +outputColor=vec4(color,inputColor.a);}`,pt=class extends B{constructor({blendFunction:e=z.SRC,inverted:t=!1}={}){super(`DepthEffect`,ft,{blendFunction:e,attributes:F.DEPTH}),this.inverted=t}get inverted(){return this.defines.has(`INVERTED`)}set inverted(e){this.inverted!==e&&(e?this.defines.set(`INVERTED`,`1`):this.defines.delete(`INVERTED`),this.setChanged())}isInverted(){return this.inverted}setInverted(e){this.inverted=e}},U={RED:0,GREEN:1,BLUE:2,ALPHA:3},mt={DISCARD:0,MULTIPLY:1,MULTIPLY_RGB_SET_ALPHA:2,MULTIPLY_RGB:3},ht=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#if PASS == 1 +uniform vec4 kernel64[32]; +#else +uniform vec4 kernel16[8]; +#endif +uniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){ +#ifdef FOREGROUND +vec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x; +#else +float coc=texture2D(cocBuffer,vUv).g*scale; +#endif +if(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{ +#ifdef FOREGROUND +vec2 step=texelSize*max(cocNearFar.x,cocNearFar.y); +#else +vec2 step=texelSize*coc; +#endif +#if PASS == 1 +vec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0; +#else +vec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue; +#endif +}}`,gt=class extends j{constructor(e=!1,t=!1){super({name:`BokehMaterial`,defines:{PASS:e?`2`:`1`},uniforms:{inputBuffer:new M(null),cocBuffer:new M(null),texelSize:new M(new D),kernel64:new M(null),kernel16:new M(null),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:ht,vertexShader:P}),t&&(this.defines.FOREGROUND=`1`),this.generateKernel()}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.scale}setScale(e){this.scale=e}generateKernel(){let e=new Float64Array(128),t=new Float64Array(32),n=0,r=0;for(let i=0,a=Math.sqrt(80);i<80;++i){let o=i*2.39996323,s=Math.sqrt(i)/a,c=s*Math.cos(o),l=s*Math.sin(o);i%5==0?(t[r++]=c,t[r++]=l):(e[n++]=c,e[n++]=l)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},_t=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform mat4 projectionMatrix;uniform mat4 projectionMatrixInverse;uniform float cameraNear;uniform float cameraFar;uniform float focusDistance;uniform float focusRange;varying vec2 vUv;float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#ifdef PERSPECTIVE_CAMERA +#define getViewZ(depth) perspectiveDepthToViewZ(depth, cameraNear, cameraFar) +#else +#define getViewZ(depth) orthographicDepthToViewZ(depth, cameraNear, cameraFar) +#endif +vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(projectionMatrixInverse*clipPosition).xyz;}vec3 getViewPosition(const in vec2 screenPosition,const in float depth){return getViewPosition(screenPosition,depth,getViewZ(depth));} +#define getDistance(viewPosition) length(viewPosition) +void main(){float depth=readDepth(vUv);vec3 viewPosition=getViewPosition(vUv,depth);float distance=getDistance(viewPosition);float signedDistance=distance-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,vt=class extends j{constructor(e=null){super({name:`CircleOfConfusionMaterial`,defines:{DEPTH_PACKING:`0`},uniforms:{depthBuffer:new M(null),projectionMatrix:new M(null),projectionMatrixInverse:new M(null),cameraNear:new M(.3),cameraFar:new M(1e3),focusDistance:new M(0),focusRange:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:_t,vertexShader:P}),this.uniforms.focalLength=this.uniforms.focusRange,e!==null&&this.copyCameraSettings(e)}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){return this.focusDistance}set worldFocusDistance(e){this.focusDistance=e}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){return this.focusRange}set worldFocusRange(e){this.focusRange=e}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){this.uniforms.projectionMatrix.value=e.projectionMatrix,this.uniforms.projectionMatrixInverse.value=e.projectionMatrixInverse,this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far;let t=this.defines.PERSPECTIVE_CAMERA!==void 0;e instanceof T?t||(this.defines.PERSPECTIVE_CAMERA=!0,this.needsUpdate=!0):t&&(delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},yt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef MASK_PRECISION_HIGH +uniform mediump sampler2D maskTexture; +#else +uniform lowp sampler2D maskTexture; +#endif +#if MASK_FUNCTION != 0 +uniform float strength; +#endif +varying vec2 vUv;void main(){ +#if COLOR_CHANNEL == 0 +float mask=texture2D(maskTexture,vUv).r; +#elif COLOR_CHANNEL == 1 +float mask=texture2D(maskTexture,vUv).g; +#elif COLOR_CHANNEL == 2 +float mask=texture2D(maskTexture,vUv).b; +#else +float mask=texture2D(maskTexture,vUv).a; +#endif +#if MASK_FUNCTION == 0 +#ifdef INVERTED +mask=(mask>0.0)?0.0:1.0; +#else +mask=(mask>0.0)?1.0:0.0; +#endif +#else +mask=clamp(mask*strength,0.0,1.0); +#ifdef INVERTED +mask=1.0-mask; +#endif +#endif +#if MASK_FUNCTION == 3 +vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a); +#elif MASK_FUNCTION == 2 +gl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask); +#else +gl_FragColor=mask*texture2D(inputBuffer,vUv); +#endif +}`,bt=class extends j{constructor(e=null){super({name:`MaskMaterial`,uniforms:{maskTexture:new M(e),inputBuffer:new M(null),strength:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:yt,vertexShader:P}),this.colorChannel=U.RED,this.maskFunction=mt.DISCARD}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,e.type!==1009&&(this.defines.MASK_PRECISION_HIGH=`1`),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return this.defines.INVERTED!==void 0}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED=`1`),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}},W=class extends N{constructor(e,t=`inputBuffer`){super(`ShaderPass`),this.fullscreenMaterial=e,this.input=t}setInput(e){this.input=e}render(e,t,n,r,i){let a=this.fullscreenMaterial.uniforms;t!==null&&a!==void 0&&a[this.input]!==void 0&&(a[this.input].value=t.texture),e.setRenderTarget(this.renderToScreen?null:n),e.render(this.scene,this.camera)}initialize(e,t,n){n!==void 0&&n!==1009&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},xt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer; +#else +uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer; +#endif +#if MASK_FUNCTION != 1 && MASK_FUNCTION != 2 +uniform lowp sampler2D farCoCBuffer; +#endif +uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv); +#if MASK_FUNCTION == 1 || MASK_FUNCTION == 2 +vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0); +#else +vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);colorFar.a*=cocNearFar.y; +#endif +vec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}`,St=new n,Ct=class extends B{constructor(e,{blendFunction:t,worldFocusDistance:n,worldFocusRange:r,focalLength:i,focusDistance:a=n||3,focusRange:o=r||i||2,bokehScale:s=1,resolutionScale:l=.5,width:u,height:d,resolutionX:f=u||R.AUTO_SIZE,resolutionY:p=d||R.AUTO_SIZE}={}){super(`DepthOfFieldEffect`,xt,{blendFunction:t,attributes:F.DEPTH,uniforms:new Map([[`nearColorBuffer`,new M(null)],[`farColorBuffer`,new M(null)],[`nearCoCBuffer`,new M(null)],[`farCoCBuffer`,new M(null)],[`scale`,new M(1)]])}),this.camera=e,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`DoF.Intermediate`,this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name=`DoF.Masked.Far`,this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name=`DoF.Bokeh.Near`,this.uniforms.get(`nearColorBuffer`).value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name=`DoF.Bokeh.Far`,this.uniforms.get(`farColorBuffer`).value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name=`DoF.CoC`,this.uniforms.get(`farCoCBuffer`).value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name=`DoF.CoC.Blurred`,this.uniforms.get(`nearCoCBuffer`).value=this.renderTargetCoCBlurred.texture,this.cocPass=new W(new vt(e));let m=this.cocMaterial;m.focusDistance=a,m.focusRange=o,this.blurPass=new H({resolutionScale:l,resolutionX:f,resolutionY:p,kernelSize:V.MEDIUM}),this.maskPass=new W(new bt(this.renderTargetCoC.texture));let h=this.maskPass.fullscreenMaterial;h.colorChannel=U.GREEN,this.maskFunction=mt.MULTIPLY_RGB,this.bokehNearBasePass=new W(new gt(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new W(new gt(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new W(new gt(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new W(new gt(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;let g=this.resolution=new R(this,f,p,l);g.addEventListener(`change`,e=>this.setSize(g.baseWidth,g.baseHeight)),this.bokehScale=s}set mainCamera(e){this.camera=e,this.cocMaterial.copyCameraSettings(e)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(e){this.maskFunction!==e&&(this.defines.set(`MASK_FUNCTION`,e.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=e,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get(`scale`).value}set bokehScale(e){this.bokehNearBasePass.fullscreenMaterial.scale=e,this.bokehNearFillPass.fullscreenMaterial.scale=e,this.bokehFarBasePass.fullscreenMaterial.scale=e,this.bokehFarFillPass.fullscreenMaterial.scale=e,this.maskPass.fullscreenMaterial.strength=e,this.uniforms.get(`scale`).value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){return this.camera.getWorldPosition(St).distanceTo(e)}setDepthTexture(e,t=w){this.cocMaterial.depthBuffer=e,this.cocMaterial.depthPacking=t}update(e,t,n){let r=this.renderTarget,i=this.renderTargetCoC,a=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){let e=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=e}this.cocPass.render(e,null,i),this.blurPass.render(e,i,a),this.maskPass.render(e,t,o),this.bokehFarBasePass.render(e,o,r),this.bokehFarFillPass.render(e,r,this.renderTargetFar),this.bokehNearBasePass.render(e,t,r),this.bokehNearFillPass.render(e,r,this.renderTargetNear)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.cocPass.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.renderTargetFar.setSize(e,t),this.renderTargetCoC.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.renderTarget.setSize(r,i),this.renderTargetNear.setSize(r,i),this.renderTargetCoCBlurred.setSize(r,i),this.bokehNearBasePass.fullscreenMaterial.setSize(e,t),this.bokehNearFillPass.fullscreenMaterial.setSize(e,t),this.bokehFarBasePass.fullscreenMaterial.setSize(e,t),this.bokehFarFillPass.fullscreenMaterial.setSize(e,t)}initialize(e,t,n){this.cocPass.initialize(e,t,n),this.maskPass.initialize(e,t,n),this.bokehNearBasePass.initialize(e,t,n),this.bokehNearFillPass.initialize(e,t,n),this.bokehFarBasePass.initialize(e,t,n),this.bokehFarFillPass.initialize(e,t,n),this.blurPass.initialize(e,t,ce),e.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH=`1`),n!==void 0&&(this.renderTarget.texture.type=n,this.renderTargetNear.texture.type=n,this.renderTargetFar.texture.type=n,this.renderTargetMasked.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C,this.renderTargetNear.texture.colorSpace=C,this.renderTargetFar.texture.colorSpace=C,this.renderTargetMasked.texture.colorSpace=C))}},wt=`uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}`,Tt=class extends B{constructor({blendFunction:e,angle:t=Math.PI*.5,scale:n=1}={}){super(`DotScreenEffect`,wt,{blendFunction:e,uniforms:new Map([[`angle`,new M(new D)],[`scale`,new M(n)]])}),this.angle=t}get angle(){return Math.acos(this.uniforms.get(`angle`).value.y)}set angle(e){this.uniforms.get(`angle`).value.set(Math.sin(e),Math.cos(e))}getAngle(){return this.angle}setAngle(e){this.angle=e}get scale(){return this.uniforms.get(`scale`).value}set scale(e){this.uniforms.get(`scale`).value=e}},Et=`#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5)) +#define ONE_OVER_TWELVE 0.08333333333333333 +varying vec2 vUvDown;varying vec2 vUvUp;varying vec2 vUvLeft;varying vec2 vUvRight;varying vec2 vUvDownLeft;varying vec2 vUvUpRight;varying vec2 vUvUpLeft;varying vec2 vUvDownRight;vec4 fxaa(const in vec4 inputColor,const in vec2 uv){float lumaCenter=luminance(inputColor.rgb);float lumaDown=luminance(texture2D(inputBuffer,vUvDown).rgb);float lumaUp=luminance(texture2D(inputBuffer,vUvUp).rgb);float lumaLeft=luminance(texture2D(inputBuffer,vUvLeft).rgb);float lumaRight=luminance(texture2D(inputBuffer,vUvRight).rgb);float lumaMin=min(lumaCenter,min(min(lumaDown,lumaUp),min(lumaLeft,lumaRight)));float lumaMax=max(lumaCenter,max(max(lumaDown,lumaUp),max(lumaLeft,lumaRight)));float lumaRange=lumaMax-lumaMin;if(lumaRange=edgeVertical);float stepLength=isHorizontal?texelSize.y:texelSize.x;float luma1=isHorizontal?lumaDown:lumaLeft;float luma2=isHorizontal?lumaUp:lumaRight;float gradient1=abs(luma1-lumaCenter);float gradient2=abs(luma2-lumaCenter);bool is1Steepest=gradient1>=gradient2;float gradientScaled=0.25*max(gradient1,gradient2);float lumaLocalAverage=0.0;if(is1Steepest){stepLength=-stepLength;lumaLocalAverage=0.5*(luma1+lumaCenter);}else{lumaLocalAverage=0.5*(luma2+lumaCenter);}vec2 currentUv=uv;if(isHorizontal){currentUv.y+=stepLength*0.5;}else{currentUv.x+=stepLength*0.5;}vec2 offset=isHorizontal?vec2(texelSize.x,0.0):vec2(0.0,texelSize.y);vec2 uv1=currentUv-offset*QUALITY(0);vec2 uv2=currentUv+offset*QUALITY(0);float lumaEnd1=luminance(texture2D(inputBuffer,uv1).rgb);float lumaEnd2=luminance(texture2D(inputBuffer,uv2).rgb);lumaEnd1-=lumaLocalAverage;lumaEnd2-=lumaLocalAverage;bool reached1=abs(lumaEnd1)>=gradientScaled;bool reached2=abs(lumaEnd2)>=gradientScaled;bool reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(1);}if(!reached2){uv2+=offset*QUALITY(1);}if(!reachedBoth){for(int i=2;i=gradientScaled;reached2=abs(lumaEnd2)>=gradientScaled;reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(i);}if(!reached2){uv2+=offset*QUALITY(i);}if(reachedBoth){break;}}}float distance1=isHorizontal?(uv.x-uv1.x):(uv.y-uv1.y);float distance2=isHorizontal?(uv2.x-uv.x):(uv2.y-uv.y);bool isDirection1=distance1distortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}`,Ft=`Glitch.Generated`;function G(e,t){return e+Math.random()*(t-e)}var It=class extends B{constructor({chromaticAberrationOffset:e=null,delay:t=new D(1.5,3.5),duration:n=new D(.6,1),strength:r=new D(.3,1),columns:i=.05,ratio:a=.85,perturbationMap:o=null,dtSize:s=64}={}){if(super(`GlitchEffect`,Pt,{uniforms:new Map([[`perturbationMap`,new M(null)],[`columns`,new M(i)],[`active`,new M(!1)],[`random`,new M(1)],[`seeds`,new M(new D)],[`distortion`,new M(new D)]])}),o===null){let e=new Nt(s,s,p);e.name=Ft,this.perturbationMap=e}else this.perturbationMap=o;this.time=0,this.distortion=this.uniforms.get(`distortion`).value,this.delay=t,this.duration=n,this.breakPoint=new D(G(this.delay.x,this.delay.y),G(this.duration.x,this.duration.y)),this.strength=r,this.mode=jt.SPORADIC,this.ratio=a,this.chromaticAberrationOffset=e}get seeds(){return this.uniforms.get(`seeds`).value}get active(){return this.uniforms.get(`active`).value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(e){this.delay.x=e}getMinDelay(){return this.delay.x}setMinDelay(e){this.delay.x=e}get maxDelay(){return this.delay.y}set maxDelay(e){this.delay.y=e}getMaxDelay(){return this.delay.y}setMaxDelay(e){this.delay.y=e}get minDuration(){return this.duration.x}set minDuration(e){this.duration.x=e}getMinDuration(){return this.duration.x}setMinDuration(e){this.duration.x=e}get maxDuration(){return this.duration.y}set maxDuration(e){this.duration.y=e}getMaxDuration(){return this.duration.y}setMaxDuration(e){this.duration.y=e}get minStrength(){return this.strength.x}set minStrength(e){this.strength.x=e}getMinStrength(){return this.strength.x}setMinStrength(e){this.strength.x=e}get maxStrength(){return this.strength.y}set maxStrength(e){this.strength.y=e}getMaxStrength(){return this.strength.y}setMaxStrength(e){this.strength.y=e}getMode(){return this.mode}setMode(e){this.mode=e}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(e){this.ratio=Math.min(Math.max(1-e,0),1)}get columns(){return this.uniforms.get(`columns`).value}set columns(e){this.uniforms.get(`columns`).value=e}getGlitchColumns(){return this.columns}setGlitchColumns(e){this.columns=e}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(e){this.chromaticAberrationOffset=e}get perturbationMap(){return this.uniforms.get(`perturbationMap`).value}set perturbationMap(e){let t=this.perturbationMap;t!==null&&t.name===Ft&&t.dispose(),e.minFilter=e.magFilter=k,e.wrapS=e.wrapT=d,e.generateMipmaps=!1,this.uniforms.get(`perturbationMap`).value=e}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(e){this.perturbationMap=e}generatePerturbationMap(e=64){let t=new Nt(e,e,p);return t.name=Ft,t}update(e,t,n){let r=this.mode,i=this.breakPoint,a=this.chromaticAberrationOffset,o=this.strength,s=this.time,c=!1,l=0,u=0,d;r!==jt.DISABLED&&(r===jt.SPORADIC&&(s+=n,d=s>i.x,s>=i.x+i.y&&(i.set(G(this.delay.x,this.delay.y),G(this.duration.x,this.duration.y)),s=0)),l=Math.random(),this.uniforms.get(`random`).value=l,d&&l>this.ratio||r===jt.CONSTANT_WILD?(c=!0,l*=o.y*.03,u=G(-Math.PI,Math.PI),this.seeds.set(G(-o.y,o.y),G(-o.y,o.y)),this.distortion.set(G(0,1),G(0,1))):(d||r===jt.CONSTANT_MILD)&&(c=!0,l*=o.x*.03,u=G(-Math.PI,Math.PI),this.seeds.set(G(-o.x,o.x),G(-o.x,o.x)),this.distortion.set(G(0,1),G(0,1))),this.time=s),a!==null&&(c?a.set(Math.cos(u),Math.sin(u)).multiplyScalar(l):a.set(0,0)),this.uniforms.get(`active`).value=c}dispose(){let e=this.perturbationMap;e!==null&&e.name===Ft&&e.dispose()}},Lt=`#include +#include +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i +}`,Rt=class extends j{constructor(e){super({name:`GodRaysMaterial`,defines:{SAMPLES_INT:`60`,SAMPLES_FLOAT:`60.0`},uniforms:{inputBuffer:new M(null),lightPosition:new M(e),density:new M(1),decay:new M(1),weight:new M(1),exposure:new M(1),clampMax:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Lt,vertexShader:P})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(e){this.uniforms.lightPosition.value=e}get density(){return this.uniforms.density.value}set density(e){this.uniforms.density.value=e}getDensity(){return this.uniforms.density.value}setDensity(e){this.uniforms.density.value=e}get decay(){return this.uniforms.decay.value}set decay(e){this.uniforms.decay.value=e}getDecay(){return this.uniforms.decay.value}setDecay(e){this.uniforms.decay.value=e}get weight(){return this.uniforms.weight.value}set weight(e){this.uniforms.weight.value=e}getWeight(){return this.uniforms.weight.value}setWeight(e){this.uniforms.weight.value=e}get exposure(){return this.uniforms.exposure.value}set exposure(e){this.uniforms.exposure.value=e}getExposure(){return this.uniforms.exposure.value}setExposure(e){this.uniforms.exposure.value=e}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(e){this.uniforms.clampMax.value=e}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(e){this.uniforms.clampMax.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){let t=Math.floor(e);this.defines.SAMPLES_INT=t.toFixed(0),this.defines.SAMPLES_FLOAT=t.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}},zt=class extends N{constructor(e,t,n=null){super(`RenderPass`,e,t),this.needsSwap=!1,this.needsDepthBlit=!0,this.clearPass=new ve,this.overrideMaterialManager=n===null?null:new Ae(n),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return e===null?null:e.material}set overrideMaterial(e){let t=this.overrideMaterialManager;e===null?t!==null&&(t.dispose(),this.overrideMaterialManager=null):t===null?this.overrideMaterialManager=new Ae(e):t.setMaterial(e)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.selection,c=o.layers.mask,l=a.background,u=e.shadowMap.autoUpdate,d=this.renderToScreen?null:t;s!==null&&o.layers.set(s.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(a.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(d),this.overrideMaterialManager===null?e.render(a,o):this.overrideMaterialManager.render(e,a,o),o.layers.mask=c,a.background=l,e.shadowMap.autoUpdate=u}},Bt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv);}`,Vt=new n,Ht=new S,Ut=class extends B{constructor(e,t,{blendFunction:n=z.SCREEN,samples:r=60,density:i=.96,decay:a=.9,weight:o=.4,exposure:s=.6,clampMax:l=1,blur:u=!0,kernelSize:d=V.SMALL,resolutionScale:f=.5,width:p=R.AUTO_SIZE,height:h=R.AUTO_SIZE,resolutionX:g=p,resolutionY:_=h}={}){super(`GodRaysEffect`,Bt,{blendFunction:n,attributes:F.DEPTH,uniforms:new Map([[`map`,new M(null)]])}),this.camera=e,this._lightSource=t,this.lightSource=t,this.lightScene=new m,this.screenPosition=new D,this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`GodRays.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`GodRays.Target.B`,this.uniforms.get(`map`).value=this.renderTargetB.texture,this.renderTargetLight=new c(1,1),this.renderTargetLight.texture.name=`GodRays.Light`,this.renderTargetLight.depthTexture=new x,this.renderPassLight=new zt(this.lightScene,e),this.renderPassLight.clearPass.enabled=!1,this.blurPass=new H({kernelSize:d}),this.blurPass.enabled=u,this.copyPass=new ge(this.renderTargetLight),this.copyPass.fullscreenMaterial.channelWeights=new E(0,0,0,1),this.godRaysPass=new W(new Rt(this.screenPosition));let v=this.godRaysMaterial;v.density=i,v.decay=a,v.weight=o,v.exposure=s,v.maxIntensity=l,v.samples=r;let y=this.resolution=new R(this,g,_,f);y.addEventListener(`change`,e=>this.setSize(y.baseWidth,y.baseHeight))}set mainCamera(e){this.camera=e,this.renderPassLight.mainCamera=e}get lightSource(){return this._lightSource}set lightSource(e){this._lightSource=e,e!==null&&(e.material.depthWrite=!1,e.material.transparent=!0)}getBlurPass(){return this.blurPass}get texture(){return this.renderTargetB.texture}getTexture(){return this.texture}get godRaysMaterial(){return this.godRaysPass.fullscreenMaterial}getGodRaysMaterial(){return this.godRaysMaterial}getResolution(){return this.resolution}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.godRaysMaterial.dithering}set dithering(e){let t=this.godRaysMaterial;t.dithering=e,t.needsUpdate=!0}get blur(){return this.blurPass.enabled}set blur(e){this.blurPass.enabled=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}get samples(){return this.godRaysMaterial.samples}set samples(e){this.godRaysMaterial.samples=e}setDepthTexture(e,t=w){this.copyPass.fullscreenMaterial.depthBuffer=e,this.copyPass.fullscreenMaterial.depthPacking=t}update(e,t,n){let r=this.lightSource,i=r.parent,a=r.matrixAutoUpdate,o=this.renderTargetA,s=this.renderTargetLight;r.material.depthWrite=!0,r.matrixAutoUpdate=!1,r.updateWorldMatrix(!0,!1),i!==null&&(a||Ht.copy(r.matrix),r.matrix.copy(r.matrixWorld)),this.lightScene.add(r),this.copyPass.render(e,t),this.renderPassLight.render(e,s),r.material.depthWrite=!1,r.matrixAutoUpdate=a,i!==null&&(a||r.matrix.copy(Ht),i.add(r)),Vt.setFromMatrixPosition(r.matrixWorld).project(this.camera),this.screenPosition.set(Math.min(Math.max((Vt.x+1)*.5,-1),2),Math.min(Math.max((Vt.y+1)*.5,-1),2));let c=s;this.blurPass.enabled&&(this.blurPass.render(e,c,o),c=o),this.godRaysPass.render(e,c,this.renderTargetB)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.renderTargetLight.setSize(e,t),this.renderTargetA.setSize(r,i),this.renderTargetB.setSize(r,i),this.blurPass.resolution.copy(n)}initialize(e,t,n){this.blurPass.initialize(e,t,n),this.renderPassLight.initialize(e,t,n),this.copyPass.initialize(e,t,n),this.godRaysPass.initialize(e,t,n),n!==void 0&&(this.renderTargetA.texture.type=n,this.renderTargetB.texture.type=n,this.renderTargetLight.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetA.texture.colorSpace=C,this.renderTargetB.texture.colorSpace=C,this.renderTargetLight.texture.colorSpace=C))}},Wt=`uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}`,Gt=class extends B{constructor({blendFunction:e=z.OVERLAY,scale:t=1,lineWidth:n=0}={}){super(`GridEffect`,Wt,{blendFunction:e,uniforms:new Map([[`scale`,new M(new D)],[`lineWidth`,new M(n)]])}),this.resolution=new D,this.s=0,this.scale=t,this.l=0,this.lineWidth=n}get scale(){return this.s}set scale(e){this.s=Math.max(e,1e-6),this.setSize(this.resolution.width,this.resolution.height)}getScale(){return this.scale}setScale(e){this.scale=e}get lineWidth(){return this.l}set lineWidth(e){this.l=e,this.setSize(this.resolution.width,this.resolution.height)}getLineWidth(){return this.lineWidth}setLineWidth(e){this.lineWidth=e}setSize(e,t){this.resolution.set(e,t);let n=e/t,r=this.scale*(t*.125);this.uniforms.get(`scale`).value.set(n*r,r),this.uniforms.get(`lineWidth`).value=r/t+this.lineWidth}},Kt=`uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}`,qt=class extends B{constructor({blendFunction:e=z.SRC,hue:t=0,saturation:r=0}={}){super(`HueSaturationEffect`,Kt,{blendFunction:e,uniforms:new Map([[`hue`,new M(new n)],[`saturation`,new M(r)]])}),this.hue=t}get saturation(){return this.uniforms.get(`saturation`).value}set saturation(e){this.uniforms.get(`saturation`).value=e}getSaturation(){return this.saturation}setSaturation(e){this.saturation=e}get hue(){let e=this.uniforms.get(`hue`).value;return Math.acos((e.x*3-1)/2)}set hue(e){let t=Math.sin(e),n=Math.cos(e);this.uniforms.get(`hue`).value.set((2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3)}getHue(){return this.hue}setHue(e){this.hue=e}},Jt=`uniform vec2 distortion;uniform vec2 principalPoint;uniform vec2 focalLength;uniform float skew;float mask(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void mainUv(inout vec2 uv){vec2 xn=2.0*(uv.st-0.5);vec3 xDistorted=vec3((1.0+distortion*dot(xn,xn))*xn,1.0);mat3 kk=mat3(vec3(focalLength.x,0.0,0.0),vec3(skew*focalLength.x,focalLength.y,0.0),vec3(principalPoint.x,principalPoint.y,1.0));uv=(kk*xDistorted).xy*0.5+0.5;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=mask(uv)*inputColor;}`,Yt=class extends B{constructor({distortion:e=new D(0,0),principalPoint:t=new D(0,0),focalLength:n=new D(1,1),skew:r=0}={}){super(`LensDistortionEffect`,Jt,{uniforms:new Map([[`distortion`,new M(e)],[`principalPoint`,new M(t)],[`focalLength`,new M(n)],[`skew`,new M(r)]])})}get distortion(){return this.uniforms.get(`distortion`).value}set distortion(e){this.uniforms.get(`distortion`).value=e}get principalPoint(){return this.uniforms.get(`principalPoint`).value}set principalPoint(e){this.uniforms.get(`principalPoint`).value=e}get focalLength(){return this.uniforms.get(`focalLength`).value}set focalLength(e){this.uniforms.get(`focalLength`).value=e}get skew(){return this.uniforms.get(`skew`).value}set skew(e){this.uniforms.get(`skew`).value=e}},Xt=`#ifdef LUT_PRECISION_HIGH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D lut; +#else +uniform mediump sampler2D lut; +#endif +#else +uniform lowp sampler2D lut; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(texture2D(lut,vec2(inputColor.r,0.5)).r,texture2D(lut,vec2(inputColor.g,0.5)).r,texture2D(lut,vec2(inputColor.b,0.5)).r,inputColor.a);}`,Zt=class extends B{constructor(e,{blendFunction:t=z.SRC}={}){super(`LUT1DEffect`,Xt,{blendFunction:t,uniforms:new Map([[`lut`,new M(null)]])}),this.lut=e}get lut(){return this.uniforms.get(`lut`).value}set lut(e){this.uniforms.get(`lut`).value=e,e!==null&&(e.type===1015||e.type===1016)&&this.defines.set(`LUT_PRECISION_HIGH`,`1`)}},Qt={SCALE_UP:`lut.scaleup`};function $t(e,t,n){let r=document.createElement(`canvas`),i=r.getContext(`2d`);if(r.width=e,r.height=t,n instanceof Image)i.drawImage(n,0,0);else{let r=i.createImageData(e,t);r.data.set(n),i.putImageData(r,0,0)}return r}var K=class e{constructor(e=0,t=0,n=null){this.width=e,this.height=t,this.data=n}toCanvas(){return typeof document>`u`?null:$t(this.width,this.height,this.data)}static from(t){let{width:n,height:r}=t,i;if(t instanceof Image){let e=$t(n,r,t);e!==null&&(i=e.getContext(`2d`).getImageData(0,0,n,r).data)}else i=t.data;return new e(n,r,i)}},en=`"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;t.operation===O.SCALE_UP&&(r=v.expand(r,t.size)),postMessage(r,[r.buffer]),close()});})(); +`,tn=new t,nn=class e extends y{constructor(e,t){super(e,t,t,t),this.type=A,this.format=p,this.minFilter=u,this.magFilter=u,this.wrapS=f,this.wrapT=f,this.wrapR=f,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=r,this.domainMin=new n(0,0,0),this.domainMax=new n(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(t,n=!0){let r=this.image,i;return i=t<=r.width?Promise.reject(Error(`The target size must be greater than the current size`)):new Promise((i,a)=>{let o=URL.createObjectURL(new Blob([en],{type:`text/javascript`})),s=new Worker(o);s.addEventListener(`error`,e=>a(e.error)),s.addEventListener(`message`,n=>{let r=new e(n.data,t);this.colorSpace=r.colorSpace,r.type=this.type,r.name=this.name,URL.revokeObjectURL(o),i(r)});let c=n?[r.data.buffer]:[];s.postMessage({operation:Qt.SCALE_UP,data:r.data,size:t},c)}),i}applyLUT(e){let t=this.image,n=e.image,r=Math.min(t.width,t.height,t.depth);if(r!==Math.min(n.width,n.height,n.depth))console.error(`Size mismatch`);else if(e.type!==1015||this.type!==1015)console.error(`Both LUTs must be FloatType textures`);else if(e.format!==1023||this.format!==1023)console.error(`Both LUTs must be RGBA textures`);else{let e=t.data,i=n.data,a=r,o=a**2,s=a-1;for(let t=0,n=a**3;ti){o=new Uint8Array(e.length);for(let t=0;t=f.g){if(f.g>f.b){frac=f.rgb;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else if(f.r>=f.b){frac=f.rbg;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v1.y,v4.z);}else{frac=f.brg;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v4.x,v1.y,v4.z);}}else{if(f.b>f.g){frac=f.bgr;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v1.x,v4.y,v4.z);}else if(f.r>=f.b){frac=f.grb;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else{frac=f.gbr;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v1.x,v4.y,v4.z);}}vec4 n1=texture(lut,v1);vec4 n2=texture(lut,v2);vec4 n3=texture(lut,v3);vec4 n4=texture(lut,v4);vec4 weights=vec4(1.0-frac.x,frac.x-frac.y,frac.y-frac.z,frac.z);vec4 result=weights*mat4(vec4(n1.r,n2.r,n3.r,n4.r),vec4(n1.g,n2.g,n3.g,n4.g),vec4(n1.b,n2.b,n3.b,n4.b),vec4(1.0));return vec4(result.rgb,1.0); +#else +return texture(lut,rgb); +#endif +} +#else +#ifdef LUT_PRECISION_HIGH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D lut; +#else +uniform mediump sampler2D lut; +#endif +#else +uniform lowp sampler2D lut; +#endif +vec4 applyLUT(const in vec3 rgb){float slice=rgb.b*LUT_SIZE;float slice0=floor(slice);float interp=slice-slice0;float centeredInterp=interp-0.5;float slice1=slice0+sign(centeredInterp); +#ifdef LUT_STRIP_HORIZONTAL +float xOffset=clamp(rgb.r*LUT_TEXEL_HEIGHT,LUT_TEXEL_WIDTH*0.5,LUT_TEXEL_HEIGHT-LUT_TEXEL_WIDTH*0.5);vec2 uv0=vec2(slice0*LUT_TEXEL_HEIGHT+xOffset,rgb.g);vec2 uv1=vec2(slice1*LUT_TEXEL_HEIGHT+xOffset,rgb.g); +#else +float yOffset=clamp(rgb.g*LUT_TEXEL_WIDTH,LUT_TEXEL_HEIGHT*0.5,LUT_TEXEL_WIDTH-LUT_TEXEL_HEIGHT*0.5);vec2 uv0=vec2(rgb.r,slice0*LUT_TEXEL_WIDTH+yOffset);vec2 uv1=vec2(rgb.r,slice1*LUT_TEXEL_WIDTH+yOffset); +#endif +vec4 sample0=texture2D(lut,uv0);vec4 sample1=texture2D(lut,uv1);return mix(sample0,sample1,abs(centeredInterp));} +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 c=inputColor.rgb; +#ifdef CUSTOM_INPUT_DOMAIN +if(c.r>=domainMin.r&&c.g>=domainMin.g&&c.b>=domainMin.b&&c.r<=domainMax.r&&c.g<=domainMax.g&&c.b<=domainMax.b){c=applyLUT(scale*c+offset).rgb;}else{c=inputColor.rgb;} +#else +#if !defined(LUT_3D) || defined(TETRAHEDRAL_INTERPOLATION) +c=clamp(c,0.0,1.0); +#endif +c=applyLUT(scale*c+offset).rgb; +#endif +outputColor=vec4(c,inputColor.a);}`,an=class extends B{constructor(e,{blendFunction:t=z.SRC,tetrahedralInterpolation:r=!1,inputColorSpace:i=C}={}){super(`LUT3DEffect`,rn,{blendFunction:t,uniforms:new Map([[`lut`,new M(null)],[`scale`,new M(new n)],[`offset`,new M(new n)],[`domainMin`,new M(null)],[`domainMax`,new M(null)]])}),this.tetrahedralInterpolation=r,this.inputColorSpace=i,this.lut=e}get lut(){return this.uniforms.get(`lut`).value}set lut(e){let t=this.defines,n=this.uniforms;if(this.lut!==e&&(n.get(`lut`).value=e,e!==null)){let r=e.image,i=this.tetrahedralInterpolation;if(t.clear(),t.set(`LUT_SIZE`,Math.min(r.width,r.height).toFixed(16)),t.set(`LUT_TEXEL_WIDTH`,(1/r.width).toFixed(16)),t.set(`LUT_TEXEL_HEIGHT`,(1/r.height).toFixed(16)),n.get(`domainMin`).value=null,n.get(`domainMax`).value=null,(e.type===1015||e.type===1016)&&t.set(`LUT_PRECISION_HIGH`,`1`),r.width>r.height?t.set(`LUT_STRIP_HORIZONTAL`,`1`):e instanceof y&&t.set(`LUT_3D`,`1`),e instanceof nn){let r=e.domainMin,i=e.domainMax;(r.x!==0||r.y!==0||r.z!==0||i.x!==1||i.y!==1||i.z!==1)&&(t.set(`CUSTOM_INPUT_DOMAIN`,`1`),n.get(`domainMin`).value=r.clone(),n.get(`domainMax`).value=i.clone())}this.tetrahedralInterpolation=i}}getLUT(){return this.lut}setLUT(e){this.lut=e}updateScaleOffset(){let e=this.lut;if(e!==null){let t=Math.min(e.image.width,e.image.height),n=this.uniforms.get(`scale`).value,r=this.uniforms.get(`offset`).value;if(this.tetrahedralInterpolation&&e instanceof y)if(this.defines.has(`CUSTOM_INPUT_DOMAIN`)){let i=e.domainMax.clone().sub(e.domainMin);n.setScalar(t-1).divide(i),r.copy(e.domainMin).negate().multiply(n)}else n.setScalar(t-1),r.setScalar(0);else if(this.defines.has(`CUSTOM_INPUT_DOMAIN`)){let i=e.domainMax.clone().sub(e.domainMin).multiplyScalar(t);n.setScalar(t-1).divide(i),r.copy(e.domainMin).negate().multiply(n).addScalar(1/(2*t))}else n.setScalar((t-1)/t),r.setScalar(1/(2*t))}}configureTetrahedralInterpolation(){let e=this.lut;e!==null&&(e.minFilter=u,e.magFilter=u,this.tetrahedralInterpolation&&(e instanceof y?(e.minFilter=k,e.magFilter=k):console.warn(`Tetrahedral interpolation requires a 3D texture`)),e.needsUpdate=!0)}get tetrahedralInterpolation(){return this.defines.has(`TETRAHEDRAL_INTERPOLATION`)}set tetrahedralInterpolation(e){e?this.defines.set(`TETRAHEDRAL_INTERPOLATION`,`1`):this.defines.delete(`TETRAHEDRAL_INTERPOLATION`),this.configureTetrahedralInterpolation(),this.updateScaleOffset(),this.setChanged()}setTetrahedralInterpolationEnabled(e){this.tetrahedralInterpolation=e}},on={FULL:0,SINGLE:1},sn={DEFAULT:0,KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},cn={DEPTH:0,LUMA:1,COLOR:2},ln={DISABLED:0,DEPTH:1,CUSTOM:2},un={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},q={LINEAR:0,REINHARD:1,REINHARD2:2,REINHARD2_ADAPTIVE:3,UNCHARTED2:4,OPTIMIZED_CINEON:5,CINEON:5,ACES_FILMIC:6,AGX:7,NEUTRAL:8},dn={DEFAULT:0,ESKIL:1},fn={DERIVATIVES:`derivatives`,FRAG_DEPTH:`fragDepth`,DRAW_BUFFERS:`drawBuffers`,SHADER_TEXTURE_LOD:`shaderTextureLOD`},pn=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*(1.0+time))); +#ifdef PREMULTIPLY +outputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a); +#else +outputColor=vec4(noise,inputColor.a); +#endif +}`,mn=class extends B{constructor({blendFunction:e=z.SCREEN,premultiply:t=!1}={}){super(`NoiseEffect`,pn,{blendFunction:e}),this.premultiply=t}get premultiply(){return this.defines.has(`PREMULTIPLY`)}set premultiply(e){this.premultiply!==e&&(e?this.defines.set(`PREMULTIPLY`,`1`):this.defines.delete(`PREMULTIPLY`),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(e){this.premultiply=e}},hn=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform float cameraNear;uniform float cameraFar;centroid varying float vViewZ;centroid varying vec4 vProjTexCoord;void main(){ +#include +vec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5; +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord)); +#else +float depth=texture2D(depthBuffer,projTexCoord).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +float viewZ=orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +float depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}`,gn=`#include +#include +#include +#include +varying float vViewZ;varying vec4 vProjTexCoord;void main(){ +#include +#include +#include +#include +#include +vViewZ=mvPosition.z;vProjTexCoord=gl_Position; +#include +}`,_n=class extends j{constructor(e=null,t){super({name:`DepthComparisonMaterial`,defines:{DEPTH_PACKING:`0`},uniforms:{depthBuffer:new M(null),cameraNear:new M(.3),cameraFar:new M(1e3)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:hn,vertexShader:gn}),this.depthBuffer=e,this.depthPacking=i,this.copyCameraSettings(t)}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=i){this.depthBuffer=e,this.depthPacking=t}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},vn=`uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}`,yn=`uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}`,bn=class extends j{constructor(e=new D){super({name:`OutlineMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:vn,vertexShader:yn}),this.uniforms.texelSize.value.set(e.x,e.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},xn=class extends N{constructor(t,n,{renderTarget:r,resolutionScale:a=1,width:o=R.AUTO_SIZE,height:s=R.AUTO_SIZE,resolutionX:l=o,resolutionY:u=s}={}){super(`DepthPass`),this.needsSwap=!1,this.renderPass=new zt(t,n,new e({depthPacking:i}));let d=this.renderPass;d.skipShadowMapUpdate=!0,d.ignoreBackground=!0,this.renderTarget=r,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{minFilter:k,magFilter:k}),this.renderTarget.texture.name=`DepthPass.Target`);let f=this.resolution=new R(this,l,u,a);f.addEventListener(`change`,e=>this.setSize(f.baseWidth,f.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}initialize(e,n,r){let i=e.capabilities.reversedDepthBuffer?0:16777215,a=this.renderPass.clearPass;a.overrideClearColor=new t(i),a.overrideClearAlpha=1}},Sn=`uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength; +#ifdef USE_PATTERN +uniform lowp sampler2D patternTexture;varying vec2 vUvPattern; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg; +#ifndef X_RAY +edge.y=0.0; +#endif +edge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0; +#ifdef USE_PATTERN +vec4 patternColor=texture2D(patternTexture,vUvPattern); +#ifdef X_RAY +float hiddenFactor=0.5; +#else +float hiddenFactor=0.0; +#endif +visibilityFactor=(1.0-mask.y>0.0)?1.0:hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb; +#endif +float alpha=max(max(edge.x,edge.y),visibilityFactor); +#ifdef ALPHA +outputColor=vec4(color,alpha); +#else +outputColor=vec4(color,max(alpha,inputColor.a)); +#endif +}`,Cn=`uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}`,wn=class extends B{constructor(e,n,{blendFunction:r=z.SCREEN,patternTexture:i=null,patternScale:a=1,edgeStrength:o=1,pulseSpeed:s=0,visibleEdgeColor:l=16777215,hiddenEdgeColor:u=2230538,kernelSize:d=V.VERY_SMALL,blur:f=!1,xRay:p=!0,multisampling:m=0,resolutionScale:h=.5,width:g=R.AUTO_SIZE,height:_=R.AUTO_SIZE,resolutionX:v=g,resolutionY:y=_}={}){super(`OutlineEffect`,Sn,{uniforms:new Map([[`maskTexture`,new M(null)],[`edgeTexture`,new M(null)],[`edgeStrength`,new M(o)],[`visibleEdgeColor`,new M(new t(l))],[`hiddenEdgeColor`,new M(new t(u))],[`pulse`,new M(1)],[`patternScale`,new M(a)],[`patternTexture`,new M(null)]])}),this.blendMode.addEventListener(`change`,e=>{this.blendMode.blendFunction===z.ALPHA?this.defines.set(`ALPHA`,`1`):this.defines.delete(`ALPHA`),this.setChanged()}),this.blendMode.blendFunction=r,this.patternTexture=i,this.xRay=p,this.scene=e,this.camera=n,this.renderTargetMask=new c(1,1),this.renderTargetMask.samples=m,this.renderTargetMask.texture.name=`Outline.Mask`,this.uniforms.get(`maskTexture`).value=this.renderTargetMask.texture,this.renderTargetOutline=new c(1,1,{depthBuffer:!1}),this.renderTargetOutline.texture.name=`Outline.Edges`,this.uniforms.get(`edgeTexture`).value=this.renderTargetOutline.texture,this.clearPass=new ve,this.clearPass.overrideClearColor=new t(0),this.clearPass.overrideClearAlpha=1,this.depthPass=new xn(e,n),this.maskPass=new zt(e,n,new _n(this.depthPass.texture,n));let b=this.maskPass.clearPass;b.overrideClearColor=new t(16777215),b.overrideClearAlpha=1,this.blurPass=new H({resolutionScale:h,resolutionX:v,resolutionY:y,kernelSize:d}),this.blurPass.enabled=f;let x=this.blurPass.resolution;x.addEventListener(`change`,e=>this.setSize(x.baseWidth,x.baseHeight)),this.outlinePass=new W(new bn);let S=this.outlinePass.fullscreenMaterial;S.inputBuffer=this.renderTargetMask.texture,this.time=0,this.forceUpdate=!0,this.selection=new Ne,this.pulseSpeed=s}set mainScene(e){this.scene=e,this.depthPass.mainScene=e,this.maskPass.mainScene=e}set mainCamera(e){this.camera=e,this.depthPass.mainCamera=e,this.maskPass.mainCamera=e,this.maskPass.overrideMaterial.copyCameraSettings(e)}get resolution(){return this.blurPass.resolution}getResolution(){return this.blurPass.getResolution()}get multisampling(){return this.renderTargetMask.samples}set multisampling(e){this.renderTargetMask.samples=e,this.renderTargetMask.dispose()}get patternScale(){return this.uniforms.get(`patternScale`).value}set patternScale(e){this.uniforms.get(`patternScale`).value=e}get edgeStrength(){return this.uniforms.get(`edgeStrength`).value}set edgeStrength(e){this.uniforms.get(`edgeStrength`).value=e}get visibleEdgeColor(){return this.uniforms.get(`visibleEdgeColor`).value}set visibleEdgeColor(e){this.uniforms.get(`visibleEdgeColor`).value=e}get hiddenEdgeColor(){return this.uniforms.get(`hiddenEdgeColor`).value}set hiddenEdgeColor(e){this.uniforms.get(`hiddenEdgeColor`).value=e}getBlurPass(){return this.blurPass}getSelection(){return this.selection}getPulseSpeed(){return this.pulseSpeed}setPulseSpeed(e){this.pulseSpeed=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get selectionLayer(){return this.selection.layer}set selectionLayer(e){this.selection.layer=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get blur(){return this.blurPass.enabled}set blur(e){this.blurPass.enabled=e}get xRay(){return this.defines.has(`X_RAY`)}set xRay(e){this.xRay!==e&&(e?this.defines.set(`X_RAY`,`1`):this.defines.delete(`X_RAY`),this.setChanged())}isXRayEnabled(){return this.xRay}setXRayEnabled(e){this.xRay=e}get patternTexture(){return this.uniforms.get(`patternTexture`).value}set patternTexture(e){e===null?(this.defines.delete(`USE_PATTERN`),this.setVertexShader(null)):(e.wrapS=e.wrapT=d,this.defines.set(`USE_PATTERN`,`1`),this.setVertexShader(Cn)),this.uniforms.get(`patternTexture`).value=e,this.setChanged()}setPatternTexture(e){this.patternTexture=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}setSelection(e){return this.selection.set(e),this}clearSelection(){return this.selection.clear(),this}selectObject(e){return this.selection.add(e),this}deselectObject(e){return this.selection.delete(e),this}update(e,t,n){let r=this.scene,i=this.camera,a=this.selection,o=this.uniforms.get(`pulse`),s=r.background,c=i.layers.mask;(this.forceUpdate||a.size>0)&&(r.background=null,o.value=1,this.pulseSpeed>0&&(o.value=Math.cos(this.time*this.pulseSpeed*10)*.375+.625),this.time+=n,a.setVisible(!1),this.depthPass.render(e),a.setVisible(!0),i.layers.set(a.layer),this.maskPass.render(e,this.renderTargetMask),i.layers.mask=c,r.background=s,this.outlinePass.render(e,null,this.renderTargetOutline),this.blurPass.enabled&&this.blurPass.render(e,this.renderTargetOutline,this.renderTargetOutline)),this.forceUpdate=a.size>0}setSize(e,t){this.blurPass.setSize(e,t),this.renderTargetMask.setSize(e,t);let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.depthPass.setSize(r,i),this.renderTargetOutline.setSize(r,i),this.outlinePass.fullscreenMaterial.setSize(r,i)}initialize(e,t,n){this.blurPass.initialize(e,t,ce),n!==void 0&&(this.depthPass.initialize(e,t,n),this.maskPass.initialize(e,t,n),this.outlinePass.initialize(e,t,n))}},Tn=`uniform bool active;uniform vec4 d;void mainUv(inout vec2 uv){if(active){uv=d.xy*(floor(uv*d.zw)+0.5);}}`,En=class extends B{constructor(e=30){super(`PixelationEffect`,Tn,{uniforms:new Map([[`active`,new M(!1)],[`d`,new M(new E)]])}),this.resolution=new D,this._granularity=0,this.granularity=e}get granularity(){return this._granularity}set granularity(e){let t=Math.floor(e);t%2>0&&(t+=1),this._granularity=t,this.uniforms.get(`active`).value=t>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(e){this.granularity=e}setSize(e,t){let n=this.resolution;n.set(e,t);let r=this.granularity,i=r/n.x,a=r/n.y;this.uniforms.get(`d`).value.set(i,a,1/i,1/a)}},Dn=`uniform float focus;uniform float focalLength;uniform float fStop;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe; +#ifdef MANUAL_DOF +uniform vec4 dof; +#endif +#ifdef PENTAGON +float pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);} +#endif +vec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i); +#ifdef PENTAGON +float p=pentagon(wh); +#else +float p=1.0; +#endif +color+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){ +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearDepth=depth; +#endif +#ifdef MANUAL_DOF +float focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)?farDoF:nearDoF; +#else +const float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*fStop*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF; +#endif +const int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;} +#ifdef SHOW_FOCUS +float edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2); +#endif +outputColor=vec4(color,inputColor.a);}`,On=class extends B{constructor({blendFunction:e,focus:t=1,focalLength:n=24,fStop:r=.9,luminanceThreshold:i=.5,luminanceGain:a=2,bias:o=.5,fringe:s=.7,maxBlur:c=1,rings:l=3,samples:u=2,showFocus:d=!1,manualDoF:f=!1,pentagon:p=!1}={}){super(`RealisticBokehEffect`,Dn,{blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`focus`,new M(t)],[`focalLength`,new M(n)],[`fStop`,new M(r)],[`luminanceThreshold`,new M(i)],[`luminanceGain`,new M(a)],[`bias`,new M(o)],[`fringe`,new M(s)],[`maxBlur`,new M(c)],[`dof`,new M(null)]])}),this.rings=l,this.samples=u,this.showFocus=d,this.manualDoF=f,this.pentagon=p}get rings(){return Number.parseInt(this.defines.get(`RINGS_INT`))}set rings(e){let t=Math.floor(e);this.defines.set(`RINGS_INT`,t.toFixed(0)),this.defines.set(`RINGS_FLOAT`,t.toFixed(1)),this.setChanged()}get samples(){return Number.parseInt(this.defines.get(`SAMPLES_INT`))}set samples(e){let t=Math.floor(e);this.defines.set(`SAMPLES_INT`,t.toFixed(0)),this.defines.set(`SAMPLES_FLOAT`,t.toFixed(1)),this.setChanged()}get showFocus(){return this.defines.has(`SHOW_FOCUS`)}set showFocus(e){this.showFocus!==e&&(e?this.defines.set(`SHOW_FOCUS`,`1`):this.defines.delete(`SHOW_FOCUS`),this.setChanged())}get manualDoF(){return this.defines.has(`MANUAL_DOF`)}set manualDoF(e){this.manualDoF!==e&&(e?(this.defines.set(`MANUAL_DOF`,`1`),this.uniforms.get(`dof`).value=new E(.2,1,.2,2)):(this.defines.delete(`MANUAL_DOF`),this.uniforms.get(`dof`).value=null),this.setChanged())}get pentagon(){return this.defines.has(`PENTAGON`)}set pentagon(e){this.pentagon!==e&&(e?this.defines.set(`PENTAGON`,`1`):this.defines.delete(`PENTAGON`),this.setChanged())}},kn=`uniform float count; +#ifdef SCROLL +uniform float scrollSpeed; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float y=uv.y; +#ifdef SCROLL +y+=time*scrollSpeed; +#endif +vec2 sl=vec2(sin(y*count),cos(y*count));outputColor=vec4(sl.xyx,inputColor.a);}`,An=class extends B{constructor({blendFunction:e=z.OVERLAY,density:t=1.25,scrollSpeed:n=0}={}){super(`ScanlineEffect`,kn,{blendFunction:e,uniforms:new Map([[`count`,new M(0)],[`scrollSpeed`,new M(0)]])}),this.resolution=new D,this.d=t,this.scrollSpeed=n}get density(){return this.d}set density(e){this.d=e,this.setSize(this.resolution.width,this.resolution.height)}getDensity(){return this.density}setDensity(e){this.density=e}get scrollSpeed(){return this.uniforms.get(`scrollSpeed`).value}set scrollSpeed(e){this.uniforms.get(`scrollSpeed`).value=e,e===0?this.defines.delete(`SCROLL`)&&this.setChanged():this.defines.has(`SCROLL`)||(this.defines.set(`SCROLL`,`1`),this.setChanged())}setSize(e,t){this.resolution.set(e,t),this.uniforms.get(`count`).value=Math.round(t*this.density)}},jn=`uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distanceNn,o.value&&(a.get(`cameraDistance`).value=i.position.distanceTo(r),Pn.copy(r).project(i),this.screenPosition.set((Pn.x+1)*.5,(Pn.y+1)*.5)),this.time+=n*this.speed;let t=this.time-e;a.get(`radius`).value=t,t>=(a.get(`maxRadius`).value+e)*2&&(this.active=!1,o.value=!1)}}},Ln=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1; +#else +uniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1; +#endif +uniform sampler2D inputBuffer;uniform vec2 cameraNearFar;float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#else +return orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#endif +}varying vec2 vUv;void main(){vec2 depth; +#if DEPTH_PACKING_0 == 3201 +depth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv)); +#else +depth.x=texture2D(depthBuffer0,vUv).r; +#endif +#if DEPTH_PACKING_1 == 3201 +depth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv)); +#else +depth.y=texture2D(depthBuffer1,vUv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);float c=log2(cameraNearFar.y+1.0);float d=pow(2.0,depth.x*c)-1.0;depth.x=a+b/d;d=pow(2.0,depth.y*c)-1.0;depth.y=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth.x=1.0-depth.x;depth.y=1.0-depth.y; +#endif +bool isMaxDepth=(depth.x==1.0); +#ifdef PERSPECTIVE_CAMERA +depth.x=viewZToOrthographicDepth(getViewZ(depth.x),cameraNearFar.x,cameraNearFar.y);depth.y=viewZToOrthographicDepth(getViewZ(depth.y),cameraNearFar.x,cameraNearFar.y); +#endif +#if DEPTH_TEST_STRATEGY == 0 +bool keep=depthTest(depth.x,depth.y); +#elif DEPTH_TEST_STRATEGY == 1 +bool keep=isMaxDepth||depthTest(depth.x,depth.y); +#else +bool keep=!isMaxDepth&&depthTest(depth.x,depth.y); +#endif +if(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}`,Rn=class extends j{constructor(){super({name:`DepthMaskMaterial`,defines:{DEPTH_EPSILON:`0.0001`,DEPTH_PACKING_0:`0`,DEPTH_PACKING_1:`0`,DEPTH_TEST_STRATEGY:sn.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new M(null),depthBuffer0:new M(null),depthBuffer1:new M(null),cameraNearFar:new M(new D(1,1))},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ln,vertexShader:P}),this.depthMode=2}set depthBuffer0(e){this.uniforms.depthBuffer0.value=e}set depthPacking0(e){this.defines.DEPTH_PACKING_0=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(e,t=w){this.depthBuffer0=e,this.depthPacking0=t}set depthBuffer1(e){this.uniforms.depthBuffer1.value=e}set depthPacking1(e){this.defines.DEPTH_PACKING_1=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(e,t=w){this.depthBuffer1=e,this.depthPacking1=t}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(e){this.defines.DEPTH_TEST_STRATEGY=e.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(e){this.maxDepthStrategy=e?sn.KEEP_MAX_DEPTH:sn.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(e){this.maxDepthStrategy=e}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(e){this.defines.DEPTH_EPSILON=e.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(e){this.epsilon=e}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(e){let t;switch(e){case 0:t=`false`;break;case 1:t=`true`;break;case 4:t=`abs(d1 - d0) <= DEPTH_EPSILON`;break;case 7:t=`abs(d1 - d0) > DEPTH_EPSILON`;break;case 2:t=`d0 > d1`;break;case 3:t=`d0 >= d1`;break;case 5:t=`d0 <= d1`;break;default:t=`d0 < d1`;break}this.defines.DEPTH_MODE=e.toFixed(0),this.defines[`depthTest(d0, d1)`]=t,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(e){this.depthMode=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},zn=class extends et{constructor(e,n,r){super(r),this.setAttributes(this.getAttributes()|F.DEPTH),this.camera=n,this.depthPass=new xn(e,n),this.clearPass=new ve(!0,!1,!1),this.clearPass.overrideClearColor=new t(0),this.depthMaskPass=new W(new Rn);let a=this.depthMaskMaterial;a.copyCameraSettings(n),a.depthBuffer1=this.depthPass.texture,a.depthPacking1=i,a.depthMode=4,this.renderTargetMasked=new c(1,1,{depthBuffer:!1}),this.renderTargetMasked.texture.name=`Bloom.Masked`,this.selection=new Ne,this._inverted=!1,this._ignoreBackground=!1}set mainScene(e){this.depthPass.mainScene=e}set mainCamera(e){this.camera=e,this.depthPass.mainCamera=e,this.depthMaskMaterial.copyCameraSettings(e)}getSelection(){return this.selection}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get inverted(){return this._inverted}set inverted(e){this._inverted=e,this.depthMaskMaterial.depthMode=e?7:4}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get ignoreBackground(){return this._ignoreBackground}set ignoreBackground(e){this._ignoreBackground=e,this.depthMaskMaterial.maxDepthStrategy=e?sn.DISCARD_MAX_DEPTH:sn.KEEP_MAX_DEPTH}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}setDepthTexture(e,t=w){this.depthMaskMaterial.depthBuffer0=e,this.depthMaskMaterial.depthPacking0=t}update(e,t,n){let r=this.camera,i=this.selection,a=this.inverted,o=t;if(this.ignoreBackground||!a||i.size>0){let n=r.layers.mask;r.layers.set(i.layer),this.depthPass.render(e),r.layers.mask=n,o=this.renderTargetMasked,this.clearPass.render(e,o),this.depthMaskPass.render(e,t,o)}super.update(e,o,n)}setSize(e,t){super.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.depthPass.setSize(e,t)}initialize(e,t,n){super.initialize(e,t,n),this.clearPass.initialize(e,t,n),this.depthPass.initialize(e,t,n),this.depthMaskPass.initialize(e,t,n),e!==null&&e.capabilities.logarithmicDepthBuffer&&(this.depthMaskPass.fullscreenMaterial.defines.LOG_DEPTH=`1`),n!==void 0&&(this.renderTargetMasked.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetMasked.texture.colorSpace=C))}},Bn=`uniform vec3 weightsR;uniform vec3 weightsG;uniform vec3 weightsB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,weightsR),dot(inputColor.rgb,weightsG),dot(inputColor.rgb,weightsB));outputColor=vec4(color,inputColor.a);}`,Vn=class extends B{constructor({blendFunction:e,intensity:t=1}={}){super(`SepiaEffect`,Bn,{blendFunction:e,uniforms:new Map([[`weightsR`,new M(new n(.393,.769,.189))],[`weightsG`,new M(new n(.349,.686,.168))],[`weightsB`,new M(new n(.272,.534,.131))]])})}get intensity(){return this.blendMode.opacity.value}set intensity(e){this.blendMode.opacity.value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}get weightsR(){return this.uniforms.get(`weightsR`).value}get weightsG(){return this.uniforms.get(`weightsG`).value}get weightsB(){return this.uniforms.get(`weightsB`).value}},Hn=`varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +#if EDGE_DETECTION_MODE != 0 +varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5; +#endif +#if EDGE_DETECTION_MODE == 1 +#include +#endif +#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1 +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);} +#elif PREDICATION_MODE == 2 +uniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);} +#endif +#if PREDICATION_MODE != 0 +vec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);} +#endif +#if EDGE_DETECTION_MODE != 0 +uniform sampler2D inputBuffer; +#endif +void main(){ +#if EDGE_DETECTION_MODE == 0 +const vec2 threshold=vec2(DEPTH_THRESHOLD); +#elif PREDICATION_MODE != 0 +vec2 threshold=calculatePredicatedThreshold(); +#else +const vec2 threshold=vec2(EDGE_THRESHOLD); +#endif +#if EDGE_DETECTION_MODE == 0 +vec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0); +#elif EDGE_DETECTION_MODE == 1 +float l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0); +#elif EDGE_DETECTION_MODE == 2 +vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0); +#endif +}`,Un=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +#if EDGE_DETECTION_MODE != 0 +varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5; +#endif +void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0); +#if EDGE_DETECTION_MODE != 0 +vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0); +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Wn=class extends j{constructor(e=new D,t=cn.COLOR){super({name:`EdgeDetectionMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``),LOCAL_CONTRAST_ADAPTATION_FACTOR:`2.0`,EDGE_THRESHOLD:`0.1`,DEPTH_THRESHOLD:`0.01`,PREDICATION_MODE:`0`,PREDICATION_THRESHOLD:`0.01`,PREDICATION_SCALE:`2.0`,PREDICATION_STRENGTH:`1.0`,DEPTH_PACKING:`0`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),predicationBuffer:new M(null),texelSize:new M(e)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Hn,vertexShader:Un}),this.edgeDetectionMode=t}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(e){this.defines.EDGE_DETECTION_MODE=e.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(e){this.edgeDetectionMode=e}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed(`6`),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(e){this.localContrastAdaptationFactor=e}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(e){this.defines.EDGE_THRESHOLD=e.toFixed(`6`),this.defines.DEPTH_THRESHOLD=(e*.1).toFixed(`6`),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(e){this.edgeDetectionThreshold=e}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(e){this.defines.PREDICATION_MODE=e.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(e){this.predicationMode=e}set predicationBuffer(e){this.uniforms.predicationBuffer.value=e}setPredicationBuffer(e){this.uniforms.predicationBuffer.value=e}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(e){this.defines.PREDICATION_THRESHOLD=e.toFixed(`6`),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(e){this.predicationThreshold=e}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(e){this.defines.PREDICATION_SCALE=e.toFixed(`6`),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(e){this.predicationScale=e}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(e){this.defines.PREDICATION_STRENGTH=e.toFixed(`6`),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(e){this.predicationStrength=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Gn=`#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize) +#if __VERSION__ < 300 +#define round(v) floor(v + 0.5) +#endif +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;iend&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;iend&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){ +#if !defined(DISABLE_CORNER_DETECTION) +vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0); +#endif +}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){ +#if !defined(DISABLE_CORNER_DETECTION) +vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0); +#endif +}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){ +#if !defined(DISABLE_DIAG_DETECTION) +weights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){ +#endif +vec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d); +#if !defined(DISABLE_DIAG_DETECTION) +}else{e.r=0.0;} +#endif +}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,Kn=`uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}`,qn=class extends j{constructor(e=new D,t=new D){super({name:`SMAAWeightsMaterial`,defines:{MAX_SEARCH_STEPS_INT:`16`,MAX_SEARCH_STEPS_FLOAT:`16.0`,MAX_SEARCH_STEPS_DIAG_INT:`8`,MAX_SEARCH_STEPS_DIAG_FLOAT:`8.0`,CORNER_ROUNDING:`25`,CORNER_ROUNDING_NORM:`0.25`,AREATEX_MAX_DISTANCE:`16.0`,AREATEX_MAX_DISTANCE_DIAG:`20.0`,AREATEX_PIXEL_SIZE:`(1.0 / vec2(160.0, 560.0))`,AREATEX_SUBTEX_SIZE:`(1.0 / 7.0)`,SEARCHTEX_SIZE:`vec2(66.0, 33.0)`,SEARCHTEX_PACKED_SIZE:`vec2(64.0, 16.0)`},uniforms:{inputBuffer:new M(null),searchTexture:new M(null),areaTexture:new M(null),resolution:new M(t),texelSize:new M(e)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Gn,vertexShader:Kn})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(e){this.uniforms.searchTexture.value=e}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(e){this.uniforms.areaTexture.value=e}setLookupTextures(e,t){this.searchTexture=e,this.areaTexture=t}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(e){let t=Math.min(Math.max(e,0),112);this.defines.MAX_SEARCH_STEPS_INT=t.toFixed(`0`),this.defines.MAX_SEARCH_STEPS_FLOAT=t.toFixed(`1`),this.needsUpdate=!0}setOrthogonalSearchSteps(e){this.orthogonalSearchSteps=e}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(e){let t=Math.min(Math.max(e,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=t.toFixed(`0`),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=t.toFixed(`1`),this.needsUpdate=!0}setDiagonalSearchSteps(e){this.diagonalSearchSteps=e}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION=`1`,this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(e){this.diagonalDetection=e}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(e){let t=Math.min(Math.max(e,0),100);this.defines.CORNER_ROUNDING=t.toFixed(`4`),this.defines.CORNER_ROUNDING_NORM=(t/100).toFixed(`4`),this.needsUpdate=!0}setCornerRounding(e){this.cornerRounding=e}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION=`1`,this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(e){this.cornerDetection=e}setSize(e,t){let n=this.uniforms;n.texelSize.value.set(1/e,1/t),n.resolution.value.set(e,t)}},Jn=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC`,Yn=`data:image/png;base64,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`,Xn=`uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}`,Zn=`varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}`,Qn=class extends B{constructor({blendFunction:e=z.SRC,preset:n=un.MEDIUM,edgeDetectionMode:r=cn.COLOR,predicationMode:i=ln.DISABLED}={}){super(`SMAAEffect`,Xn,{vertexShader:Zn,blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`weightMap`,new M(null)]])});let a,o;arguments.length>1&&(a=arguments[0],o=arguments[1],arguments.length>2&&(n=arguments[2]),arguments.length>3&&(r=arguments[3])),this.renderTargetEdges=new c(1,1,{depthBuffer:!1}),this.renderTargetEdges.texture.name=`SMAA.Edges`,this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name=`SMAA.Weights`,this.uniforms.get(`weightMap`).value=this.renderTargetWeights.texture,this.clearPass=new ve(!0,!1,!1),this.clearPass.overrideClearColor=new t(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new W(new Wn),this.edgeDetectionMaterial.edgeDetectionMode=r,this.edgeDetectionMaterial.predicationMode=i,this.weightsPass=new W(new qn);let s=new v;s.onLoad=()=>{let e=new ne(a);e.name=`SMAA.Search`,e.magFilter=k,e.minFilter=k,e.generateMipmaps=!1,e.needsUpdate=!0,e.flipY=!0,this.weightsMaterial.searchTexture=e;let t=new ne(o);t.name=`SMAA.Area`,t.magFilter=u,t.minFilter=u,t.generateMipmaps=!1,t.needsUpdate=!0,t.flipY=!1,this.weightsMaterial.areaTexture=t,this.dispatchEvent({type:`load`})},s.itemStart(`search`),s.itemStart(`area`),a!==void 0&&o!==void 0?(s.itemEnd(`search`),s.itemEnd(`area`)):typeof Image<`u`&&(a=new Image,o=new Image,a.addEventListener(`load`,()=>s.itemEnd(`search`)),o.addEventListener(`load`,()=>s.itemEnd(`area`)),a.src=Jn,o.src=Yn),this.applyPreset(n)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(e){this.edgeDetectionMaterial.edgeDetectionThreshold=e}setOrthogonalSearchSteps(e){this.weightsMaterial.orthogonalSearchSteps=e}applyPreset(e){let t=this.edgeDetectionMaterial,n=this.weightsMaterial;switch(e){case un.LOW:t.edgeDetectionThreshold=.15,n.orthogonalSearchSteps=4,n.diagonalDetection=!1,n.cornerDetection=!1;break;case un.MEDIUM:t.edgeDetectionThreshold=.1,n.orthogonalSearchSteps=8,n.diagonalDetection=!1,n.cornerDetection=!1;break;case un.HIGH:t.edgeDetectionThreshold=.1,n.orthogonalSearchSteps=16,n.diagonalSearchSteps=8,n.cornerRounding=25,n.diagonalDetection=!0,n.cornerDetection=!0;break;case un.ULTRA:t.edgeDetectionThreshold=.05,n.orthogonalSearchSteps=32,n.diagonalSearchSteps=16,n.cornerRounding=25,n.diagonalDetection=!0,n.cornerDetection=!0;break}}setDepthTexture(e,t=w){this.edgeDetectionMaterial.depthBuffer=e,this.edgeDetectionMaterial.depthPacking=t}update(e,t,n){this.clearPass.render(e,this.renderTargetEdges),this.edgeDetectionPass.render(e,t,this.renderTargetEdges),this.weightsPass.render(e,this.renderTargetEdges,this.renderTargetWeights)}setSize(e,t){this.edgeDetectionMaterial.setSize(e,t),this.weightsMaterial.setSize(e,t),this.renderTargetEdges.setSize(e,t),this.renderTargetWeights.setSize(e,t)}dispose(){let{searchTexture:e,areaTexture:t}=this.weightsMaterial;e!==null&&t!==null&&(e.dispose(),t.dispose()),super.dispose()}static get searchImageDataURL(){return Jn}static get areaImageDataURL(){return Yn}};function $n(e,t,n){return e*(t-n)-t}function er(e,t,n){return Math.min(Math.max((e+t)/(t-n),0),1)}var tr=`#include +#include +uniform vec2 cameraNearFar; +#define cameraNear cameraNearFar.x +#define cameraFar cameraNearFar.y +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a; +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#endif +return depth;} +#else +uniform lowp sampler2D normalBuffer; +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#endif +return depth;} +#endif +uniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform float intensity;uniform float minRadiusScale;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +return orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){float radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;float noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i1.0||coords.t<0.0||coords.t>1.0){continue;}float sampleDepth=readDepth(coords);float viewZ=getViewZ(sampleDepth); +#ifdef PERSPECTIVE_CAMERA +float linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearSampleDepth=sampleDepth; +#endif +float proximity=abs(depth-linearSampleDepth);if(proximity +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +#ifdef DOWNSAMPLE_NORMALS +uniform lowp sampler2D normalBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]this.setSize(s.baseWidth,s.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e,t=w){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,n,r,i){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,n){let r=e.getContext();if(!(r.getExtension(`EXT_color_buffer_float`)||r.getExtension(`EXT_color_buffer_half_float`)))throw Error(`Rendering to float texture is not supported.`)}},cr=`uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;uniform float intensity; +#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH) +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +#endif +#ifdef COLORIZE +uniform vec3 color; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float aoLinear=texture2D(aoBuffer,uv).r; +#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH) && __VERSION__ == 300 +vec4 normalDepth[4];normalDepth[0]=textureOffset(normalDepthBuffer,uv,ivec2(0,0));normalDepth[1]=textureOffset(normalDepthBuffer,uv,ivec2(0,1));normalDepth[2]=textureOffset(normalDepthBuffer,uv,ivec2(1,0));normalDepth[3]=textureOffset(normalDepthBuffer,uv,ivec2(1,1));float dot01=dot(normalDepth[0].rgb,normalDepth[1].rgb);float dot02=dot(normalDepth[0].rgb,normalDepth[2].rgb);float dot03=dot(normalDepth[0].rgb,normalDepth[3].rgb);float minDot=min(dot01,min(dot02,dot03));float s=step(THRESHOLD,minDot);float smallestDistance=1.0;int index;for(int i=0;i<4;++i){float distance=abs(depth-normalDepth[i].a);if(distancethis.setSize(E.baseWidth,E.baseHeight)),this.camera=e,this.depthDownsamplingPass=new sr({normalBuffer:t,resolutionScale:te}),this.depthDownsamplingPass.enabled=a===null,this.ssaoPass=new W(new rr(e));let D=new Nt(lr,lr,p);D.wrapS=D.wrapT=d;let O=this.ssaoMaterial;O.normalBuffer=t,O.noiseTexture=D,O.minRadiusScale=v,O.samples=r,O.radius=b,O.rings=i,O.fade=ee,O.bias=S,O.distanceThreshold=m,O.distanceFalloff=h,O.proximityThreshold=g,O.proximityFalloff=_,s!==void 0&&(O.worldDistanceThreshold=s),l!==void 0&&(O.worldDistanceFalloff=l),u!==void 0&&(O.worldProximityThreshold=u),f!==void 0&&(O.worldProximityFalloff=f),a!==null&&(this.ssaoMaterial.normalDepthBuffer=a,this.defines.set(`NORMAL_DEPTH`,`1`)),this.depthAwareUpsampling=o,this.color=C}set mainCamera(e){this.camera=e,this.ssaoMaterial.copyCameraSettings(e)}get normalBuffer(){return this.ssaoMaterial.normalBuffer}set normalBuffer(e){this.ssaoMaterial.normalBuffer=e,this.depthDownsamplingPass.fullscreenMaterial.normalBuffer=e}getResolution(){return this.resolution}get ssaoMaterial(){return this.ssaoPass.fullscreenMaterial}getSSAOMaterial(){return this.ssaoMaterial}get samples(){return this.ssaoMaterial.samples}set samples(e){this.ssaoMaterial.samples=e}get rings(){return this.ssaoMaterial.rings}set rings(e){this.ssaoMaterial.rings=e}get radius(){return this.ssaoMaterial.radius}set radius(e){this.ssaoMaterial.radius=e}get depthAwareUpsampling(){return this.defines.has(`DEPTH_AWARE_UPSAMPLING`)}set depthAwareUpsampling(e){this.depthAwareUpsampling!==e&&(e?this.defines.set(`DEPTH_AWARE_UPSAMPLING`,`1`):this.defines.delete(`DEPTH_AWARE_UPSAMPLING`),this.setChanged())}isDepthAwareUpsamplingEnabled(){return this.depthAwareUpsampling}setDepthAwareUpsamplingEnabled(e){this.depthAwareUpsampling=e}get distanceScaling(){return!0}set distanceScaling(e){}get color(){return this.uniforms.get(`color`).value}set color(e){let n=this.uniforms,r=this.defines;e===null?r.has(`COLORIZE`)&&(r.delete(`COLORIZE`),n.get(`color`).value=null,this.setChanged()):r.has(`COLORIZE`)?n.get(`color`).value.set(e):(r.set(`COLORIZE`,`1`),n.get(`color`).value=new t(e),this.setChanged())}get luminanceInfluence(){return this.uniforms.get(`luminanceInfluence`).value}set luminanceInfluence(e){this.uniforms.get(`luminanceInfluence`).value=e}get intensity(){return this.uniforms.get(`intensity`).value}set intensity(e){this.uniforms.get(`intensity`).value=e}getColor(){return this.color}setColor(e){this.color=e}setDistanceCutoff(e,t){this.ssaoMaterial.distanceThreshold=e,this.ssaoMaterial.distanceFalloff=t}setProximityCutoff(e,t){this.ssaoMaterial.proximityThreshold=e,this.ssaoMaterial.proximityFalloff=t}setDepthTexture(e,t=w){this.depthDownsamplingPass.setDepthTexture(e,t),this.ssaoMaterial.depthBuffer=e,this.ssaoMaterial.depthPacking=t}update(e,t,n){let r=this.renderTarget;this.depthDownsamplingPass.enabled&&this.depthDownsamplingPass.render(e),this.ssaoPass.render(e,null,r)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.ssaoMaterial.copyCameraSettings(this.camera),this.ssaoMaterial.setSize(r,i),this.renderTarget.setSize(r,i),this.depthDownsamplingPass.resolution.scale=n.scale,this.depthDownsamplingPass.setSize(e,t)}initialize(e,t,n){try{let r=this.uniforms.get(`normalDepthBuffer`).value;r===null&&(this.depthDownsamplingPass.initialize(e,t,n),r=this.depthDownsamplingPass.texture,this.uniforms.get(`normalDepthBuffer`).value=r,this.ssaoMaterial.normalDepthBuffer=r,this.defines.set(`NORMAL_DEPTH`,`1`))}catch{this.depthDownsamplingPass.enabled=!1}}},dr=`#ifdef TEXTURE_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +varying vec2 vUv2;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){ +#ifdef UV_TRANSFORM +vec4 texel=texture2D(map,vUv2); +#else +vec4 texel=texture2D(map,uv); +#endif +outputColor=TEXEL;outputColor.a=max(inputColor.a,outputColor.a);}`,fr=`#ifdef ASPECT_CORRECTION +uniform float scale; +#else +uniform mat3 uvTransform; +#endif +varying vec2 vUv2;void mainSupport(const in vec2 uv){ +#ifdef ASPECT_CORRECTION +vUv2=uv*vec2(aspect,1.0)*scale; +#else +vUv2=(uvTransform*vec3(uv,1.0)).xy; +#endif +}`,pr=class extends B{constructor({blendFunction:e,texture:t=null,aspectCorrection:n=!1}={}){super(`TextureEffect`,dr,{blendFunction:e,defines:new Map([[`TEXEL`,`texel`]]),uniforms:new Map([[`map`,new M(null)],[`scale`,new M(1)],[`uvTransform`,new M(null)]])}),this.texture=t,this.aspectCorrection=n}get texture(){return this.uniforms.get(`map`).value}set texture(e){let t=this.texture,n=this.uniforms,r=this.defines;t!==e&&(n.get(`map`).value=e,n.get(`uvTransform`).value=e.matrix,r.delete(`TEXTURE_PRECISION_HIGH`),e!==null&&(e.matrixAutoUpdate?(r.set(`UV_TRANSFORM`,`1`),this.setVertexShader(fr)):(r.delete(`UV_TRANSFORM`),this.setVertexShader(null)),e.type!==1009&&r.set(`TEXTURE_PRECISION_HIGH`,`1`),(t===null||t.type!==e.type||t.encoding!==e.encoding)&&this.setChanged()))}getTexture(){return this.texture}setTexture(e){this.texture=e}get aspectCorrection(){return this.defines.has(`ASPECT_CORRECTION`)}set aspectCorrection(e){this.aspectCorrection!==e&&(e?this.defines.set(`ASPECT_CORRECTION`,`1`):this.defines.delete(`ASPECT_CORRECTION`),this.setChanged())}get uvTransform(){let e=this.texture;return e!==null&&e.matrixAutoUpdate}set uvTransform(e){let t=this.texture;t!==null&&(t.matrixAutoUpdate=e)}setTextureSwizzleRGBA(e,t=e,n=e,r=e){let i=`rgba`,a=``;(e!==U.RED||t!==U.GREEN||n!==U.BLUE||r!==U.ALPHA)&&(a=[`.`,i[e],i[t],i[n],i[r]].join(``)),this.defines.set(`TEXEL`,`texel`+a),this.setChanged()}update(e,t,n){this.texture.matrixAutoUpdate&&this.texture.updateMatrix()}},mr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec4 maskParams;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;float linearGradientMask(const in float x){return smoothstep(maskParams.x,maskParams.y,x)-smoothstep(maskParams.w,maskParams.z,x);}void main(){vec2 dUv=vOffset*(1.0-linearGradientMask(vUv2.y));vec4 sum=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y-dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y-dUv.y));gl_FragColor=sum*0.25; +#include +}`,hr=`uniform vec4 texelSize;uniform float kernel;uniform float scale;uniform float aspect;uniform vec2 rotation;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;void main(){vec2 uv=position.xy*0.5+0.5;vUv=uv;vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));vOffset=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;gl_Position=vec4(position.xy,1.0,1.0);}`,gr=class extends He{constructor({kernelSize:e=V.MEDIUM,offset:t=0,rotation:n=0,focusArea:r=.4,feather:i=.3}={}){super(),this.fragmentShader=mr,this.vertexShader=hr,this.kernelSize=e,this.uniforms.aspect=new M(1),this.uniforms.rotation=new M(new D),this.uniforms.maskParams=new M(new E),this._offset=t,this._focusArea=r,this._feather=i,this.rotation=n,this.updateParams()}updateParams(){let e=this.uniforms.maskParams.value,t=Math.max(this.focusArea,0),n=Math.max(t-this.feather,0);e.set(this.offset-t,this.offset-n,this.offset+t,this.offset+n)}get rotation(){return Math.acos(this.uniforms.rotation.value.x)}set rotation(e){this.uniforms.rotation.value.set(Math.cos(e),Math.sin(e))}get offset(){return this._offset}set offset(e){this._offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.updateParams()}setSize(e,t){super.setSize(e,t),this.uniforms.aspect.value=e/t}},_r=class extends H{constructor({offset:e=0,rotation:t=0,focusArea:n=.4,feather:r=.3,kernelSize:i=V.MEDIUM,resolutionScale:a=.5,resolutionX:o=R.AUTO_SIZE,resolutionY:s=R.AUTO_SIZE}={}){super({kernelSize:i,resolutionScale:a,resolutionX:o,resolutionY:s}),this.blurMaterial=new gr({kernelSize:i,offset:e,rotation:t,focusArea:n,feather:r})}},vr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +uniform vec2 maskParams;varying vec2 vUv2;float linearGradientMask(const in float x){return step(maskParams.x,x)-step(maskParams.y,x);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float mask=linearGradientMask(vUv2.y);vec4 texel=texture2D(map,uv);outputColor=mix(texel,inputColor,mask);}`,yr=`uniform vec2 rotation;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));}`,br=class extends B{constructor({blendFunction:e,offset:t=0,rotation:n=0,focusArea:r=.4,feather:i=.3,kernelSize:a=V.MEDIUM,resolutionScale:o=.5,resolutionX:s=R.AUTO_SIZE,resolutionY:l=R.AUTO_SIZE}={}){super(`TiltShiftEffect`,vr,{vertexShader:yr,blendFunction:e,uniforms:new Map([[`rotation`,new M(new D)],[`maskParams`,new M(new D)],[`map`,new M(null)]])}),this._offset=t,this._focusArea=r,this._feather=i,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`TiltShift.Target`,this.uniforms.get(`map`).value=this.renderTarget.texture,this.blurPass=new _r({kernelSize:a,resolutionScale:o,resolutionX:s,resolutionY:l,offset:t,rotation:n,focusArea:r,feather:i});let u=this.resolution=new R(this,s,l,o);u.addEventListener(`change`,e=>this.setSize(u.baseWidth,u.baseHeight)),this.rotation=n,this.updateParams()}updateParams(){let e=this.uniforms.get(`maskParams`).value,t=Math.max(this.focusArea-this.feather,0);e.set(this.offset-t,this.offset+t)}get rotation(){return Math.acos(this.uniforms.get(`rotation`).value.x)}set rotation(e){this.uniforms.get(`rotation`).value.set(Math.cos(e),Math.sin(e)),this.blurPass.blurMaterial.rotation=e}get offset(){return this._offset}set offset(e){this._offset=e,this.blurPass.blurMaterial.offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.blurPass.blurMaterial.focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.blurPass.blurMaterial.feather=e,this.updateParams()}get bias(){return 0}set bias(e){}update(e,t,n){this.blurPass.render(e,t,this.renderTarget)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.blurPass.resolution.copy(n)}initialize(e,t,n){this.blurPass.initialize(e,t,n),n!==void 0&&(this.renderTarget.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C))}},xr=`#include +#define packFloatToRGBA(v) packDepthToRGBA(v) +#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) +uniform lowp sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=unpackRGBAToFloat(texture2D(luminanceBuffer0,vUv)); +#if __VERSION__ < 300 +float l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r; +#else +float l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r; +#endif +l0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor=(adaptedLum==1.0)?vec4(1.0):packFloatToRGBA(adaptedLum);}`,Sr=class extends j{constructor(){super({name:`AdaptiveLuminanceMaterial`,defines:{MIP_LEVEL_1X1:`0.0`},uniforms:{luminanceBuffer0:new M(null),luminanceBuffer1:new M(null),minLuminance:new M(.01),deltaTime:new M(0),tau:new M(1)},extensions:{shaderTextureLOD:!0},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:xr,vertexShader:P})}set luminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}setLuminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}set luminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}setLuminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}set mipLevel1x1(e){this.defines.MIP_LEVEL_1X1=e.toFixed(1),this.needsUpdate=!0}setMipLevel1x1(e){this.mipLevel1x1=e}set deltaTime(e){this.uniforms.deltaTime.value=e}setDeltaTime(e){this.uniforms.deltaTime.value=e}get minLuminance(){return this.uniforms.minLuminance.value}set minLuminance(e){this.uniforms.minLuminance.value=e}getMinLuminance(){return this.uniforms.minLuminance.value}setMinLuminance(e){this.uniforms.minLuminance.value=e}get adaptationRate(){return this.uniforms.tau.value}set adaptationRate(e){this.uniforms.tau.value=e}getAdaptationRate(){return this.uniforms.tau.value}setAdaptationRate(e){this.uniforms.tau.value=e}},Cr=class extends N{constructor(e,{minLuminance:t=.01,adaptationRate:n=1}={}){super(`AdaptiveLuminancePass`),this.fullscreenMaterial=new Sr,this.needsSwap=!1,this.renderTargetPrevious=new c(1,1,{minFilter:k,magFilter:k,depthBuffer:!1}),this.renderTargetPrevious.texture.name=`Luminance.Previous`;let r=this.fullscreenMaterial;r.luminanceBuffer0=this.renderTargetPrevious.texture,r.luminanceBuffer1=e,r.minLuminance=t,r.adaptationRate=n,this.renderTargetAdapted=this.renderTargetPrevious.clone(),this.renderTargetAdapted.texture.name=`Luminance.Adapted`,this.copyPass=new ge(this.renderTargetPrevious,!1)}get texture(){return this.renderTargetAdapted.texture}getTexture(){return this.renderTargetAdapted.texture}set mipLevel1x1(e){this.fullscreenMaterial.mipLevel1x1=e}get adaptationRate(){return this.fullscreenMaterial.adaptationRate}set adaptationRate(e){this.fullscreenMaterial.adaptationRate=e}render(e,t,n,r,i){this.fullscreenMaterial.deltaTime=r,e.setRenderTarget(this.renderToScreen?null:this.renderTargetAdapted),e.render(this.scene,this.camera),this.copyPass.render(e,this.renderTargetAdapted)}},wr=`#include +uniform float whitePoint; +#if TONE_MAPPING_MODE == 2 || TONE_MAPPING_MODE == 3 +uniform float middleGrey; +#if TONE_MAPPING_MODE == 3 +uniform lowp sampler2D luminanceBuffer; +#else +uniform float averageLuminance; +#endif +vec3 Reinhard2ToneMapping(vec3 color){color*=toneMappingExposure;float l=luminance(color); +#if TONE_MAPPING_MODE == 3 +float lumAvg=unpackRGBAToFloat(texture2D(luminanceBuffer,vec2(0.5))); +#else +float lumAvg=averageLuminance; +#endif +float lumScaled=(l*middleGrey)/max(lumAvg,1e-6);float lumCompressed=lumScaled*(1.0+lumScaled/(whitePoint*whitePoint));lumCompressed/=(1.0+lumScaled);return clamp(lumCompressed*color,0.0,1.0);} +#elif TONE_MAPPING_MODE == 4 +#define A 0.15 +#define B 0.50 +#define C 0.10 +#define D 0.20 +#define E 0.02 +#define F 0.30 +vec3 Uncharted2Helper(const in vec3 x){return((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}vec3 Uncharted2ToneMapping(vec3 color){color*=toneMappingExposure;return clamp(Uncharted2Helper(color)/Uncharted2Helper(vec3(whitePoint)),0.0,1.0);} +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){ +#if TONE_MAPPING_MODE == 2 || TONE_MAPPING_MODE == 3 +outputColor=vec4(Reinhard2ToneMapping(inputColor.rgb),inputColor.a); +#elif TONE_MAPPING_MODE == 4 +outputColor=vec4(Uncharted2ToneMapping(inputColor.rgb),inputColor.a); +#else +outputColor=vec4(toneMapping(inputColor.rgb),inputColor.a); +#endif +}`,Tr=class extends B{constructor({blendFunction:e=z.SRC,adaptive:t=!1,mode:n=t?q.REINHARD2_ADAPTIVE:q.AGX,resolution:r=256,maxLuminance:i=4,whitePoint:a=i,middleGrey:o=.6,minLuminance:s=.01,averageLuminance:l=1,adaptationRate:u=1}={}){super(`ToneMappingEffect`,wr,{blendFunction:e,uniforms:new Map([[`luminanceBuffer`,new M(null)],[`maxLuminance`,new M(i)],[`whitePoint`,new M(a)],[`middleGrey`,new M(o)],[`averageLuminance`,new M(l)]])}),this.renderTargetLuminance=new c(1,1,{minFilter:h,depthBuffer:!1}),this.renderTargetLuminance.texture.generateMipmaps=!0,this.renderTargetLuminance.texture.name=`Luminance`,this.luminancePass=new Ge({renderTarget:this.renderTargetLuminance}),this.adaptiveLuminancePass=new Cr(this.luminancePass.texture,{minLuminance:s,adaptationRate:u}),this.uniforms.get(`luminanceBuffer`).value=this.adaptiveLuminancePass.texture,this.resolution=r,this.mode=n}get mode(){return Number(this.defines.get(`TONE_MAPPING_MODE`))}set mode(e){if(this.mode===e)return;let t=`169.19`.replace(/\D+/g,``)>=168?`CineonToneMapping(texel)`:`OptimizedCineonToneMapping(texel)`;switch(this.defines.clear(),this.defines.set(`TONE_MAPPING_MODE`,e.toFixed(0)),e){case q.LINEAR:this.defines.set(`toneMapping(texel)`,`LinearToneMapping(texel)`);break;case q.REINHARD:this.defines.set(`toneMapping(texel)`,`ReinhardToneMapping(texel)`);break;case q.CINEON:case q.OPTIMIZED_CINEON:this.defines.set(`toneMapping(texel)`,t);break;case q.ACES_FILMIC:this.defines.set(`toneMapping(texel)`,`ACESFilmicToneMapping(texel)`);break;case q.AGX:this.defines.set(`toneMapping(texel)`,`AgXToneMapping(texel)`);break;case q.NEUTRAL:this.defines.set(`toneMapping(texel)`,`NeutralToneMapping(texel)`);break;default:this.defines.set(`toneMapping(texel)`,`texel`);break}this.adaptiveLuminancePass.enabled=e===q.REINHARD2_ADAPTIVE,this.setChanged()}getMode(){return this.mode}setMode(e){this.mode=e}get whitePoint(){return this.uniforms.get(`whitePoint`).value}set whitePoint(e){this.uniforms.get(`whitePoint`).value=e}get middleGrey(){return this.uniforms.get(`middleGrey`).value}set middleGrey(e){this.uniforms.get(`middleGrey`).value=e}get averageLuminance(){return this.uniforms.get(`averageLuminance`).value}set averageLuminance(e){this.uniforms.get(`averageLuminance`).value=e}get adaptiveLuminanceMaterial(){return this.adaptiveLuminancePass.fullscreenMaterial}getAdaptiveLuminanceMaterial(){return this.adaptiveLuminanceMaterial}get resolution(){return this.luminancePass.resolution.width}set resolution(e){let t=Math.max(0,Math.ceil(Math.log2(e))),n=2**t;this.luminancePass.resolution.setPreferredSize(n,n),this.adaptiveLuminanceMaterial.mipLevel1x1=t}getResolution(){return this.resolution}setResolution(e){this.resolution=e}get adaptive(){return this.mode===q.REINHARD2_ADAPTIVE}set adaptive(e){this.mode=e?q.REINHARD2_ADAPTIVE:q.REINHARD2}get adaptationRate(){return this.adaptiveLuminanceMaterial.adaptationRate}set adaptationRate(e){this.adaptiveLuminanceMaterial.adaptationRate=e}get distinction(){return console.warn(this.name,`distinction was removed.`),1}set distinction(e){console.warn(this.name,`distinction was removed.`)}update(e,t,n){this.adaptiveLuminancePass.enabled&&(this.luminancePass.render(e,t),this.adaptiveLuminancePass.render(e,null,null,n))}initialize(e,t,n){this.adaptiveLuminancePass.initialize(e,t,n)}},Er=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb; +#if VIGNETTE_TECHNIQUE == 0 +float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset)); +#else +vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord)); +#endif +outputColor=vec4(color,inputColor.a);}`,Dr=class extends B{constructor({blendFunction:e,eskil:t=!1,technique:n=t?dn.ESKIL:dn.DEFAULT,offset:r=.5,darkness:i=.5}={}){super(`VignetteEffect`,Er,{blendFunction:e,defines:new Map([[`VIGNETTE_TECHNIQUE`,n.toFixed(0)]]),uniforms:new Map([[`offset`,new M(r)],[`darkness`,new M(i)]])})}get technique(){return Number(this.defines.get(`VIGNETTE_TECHNIQUE`))}set technique(e){this.technique!==e&&(this.defines.set(`VIGNETTE_TECHNIQUE`,e.toFixed(0)),this.setChanged())}get eskil(){return this.technique===dn.ESKIL}set eskil(e){this.technique=e?dn.ESKIL:dn.DEFAULT}getTechnique(){return this.technique}setTechnique(e){this.technique=e}get offset(){return this.uniforms.get(`offset`).value}set offset(e){this.uniforms.get(`offset`).value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}get darkness(){return this.uniforms.get(`darkness`).value}set darkness(e){this.uniforms.get(`darkness`).value=e}getDarkness(){return this.darkness}setDarkness(e){this.darkness=e}},Or=class extends b{load(e,t=()=>{},n=()=>{},r=null){let i=this.manager,a=new v,o=new re(a);o.setPath(this.path),o.setResponseType(`text`),i.itemStart(e),o.load(e,n=>{try{let r=this.parse(n);i.itemEnd(e),t(r)}catch(t){a.onError(e),r(t)}},n)}loadAsync(e,t=()=>{}){let n=this.manager,r=new v;return new Promise((i,a)=>{r.onError=e=>{n.itemError(e),a(`Failed to load ${e}`)},this.load(e,i,t)})}parse(e){let t=/^[\d ]+$/m,n=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm,r=t.exec(e);if(r===null)throw Error(`Missing grid information`);let i=r[0].trim().split(/\s+/g).map(e=>Number(e)),a=i[1]-i[0],o=i.length,s=o**2;for(let e=1,t=i.length;e{},n=()=>{},r=null){let i=this.manager,a=new v,o=new re(a);o.setPath(this.path),o.setResponseType(`text`),o.load(e,n=>{try{let r=this.parse(n);i.itemEnd(e),t(r)}catch(t){a.onError(e),r(t)}},n)}loadAsync(e,t=()=>{}){let n=this.manager,r=new v;return new Promise((i,a)=>{r.onError=e=>{n.itemError(e),a(`Failed to load ${e}`)},this.load(e,i,t)})}parse(e){let t=/TITLE +"([^"]*)"/,r=/LUT_3D_SIZE +(\d+)/,i=/DOMAIN_MIN +([\d.]+) +([\d.]+) +([\d.]+)/,a=/DOMAIN_MAX +([\d.]+) +([\d.]+) +([\d.]+)/,o=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm,s=t.exec(e),c=s===null?null:s[1];if(s=r.exec(e),s===null)throw Error(`Missing LUT_3D_SIZE information`);let l=Number(s[1]),u=new Float32Array(l**3*4),d=new n(0,0,0),f=new n(1,1,1);if(s=i.exec(e),s!==null&&d.set(Number(s[1]),Number(s[2]),Number(s[3])),s=a.exec(e),s!==null&&f.set(Number(s[1]),Number(s[2]),Number(s[3])),d.x>f.x||d.y>f.y||d.z>f.z)throw d.set(0,0,0),f.set(1,1,1),Error(`Invalid input domain`);let p=0;for(;(s=o.exec(e))!==null;)u[p++]=Number(s[1]),u[p++]=Number(s[2]),u[p++]=Number(s[3]),u[p++]=1;let m=new nn(u,l);return m.domainMin.copy(d),m.domainMax.copy(f),c!==null&&(m.name=c),m}},Ar=class extends b{load(e=()=>{},t=null){arguments.length===4?(e=arguments[1],t=arguments[3]):(arguments.length===3||typeof arguments[0]!=`function`)&&(e=arguments[1],t=null);let n=this.manager,r=new v;return new Promise((i,a)=>{let o=new Image,s=new Image;r.onError=e=>{n.itemError(e),t===null?a(`Failed to load ${e}`):(t(`Failed to load ${e}`),i())},r.onLoad=()=>{let t=[o,s];e(t),i(t)},o.addEventListener(`error`,e=>{r.itemError(`smaa-search`)}),s.addEventListener(`error`,e=>{r.itemError(`smaa-area`)}),o.addEventListener(`load`,()=>{n.itemEnd(`smaa-search`),r.itemEnd(`smaa-search`)}),s.addEventListener(`load`,()=>{n.itemEnd(`smaa-area`),r.itemEnd(`smaa-area`)}),n.itemStart(`smaa-search`),n.itemStart(`smaa-area`),r.itemStart(`smaa-search`),r.itemStart(`smaa-area`),o.src=Jn,s.src=Yn})}},jr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef BILATERAL +#include +uniform vec2 cameraNearFar; +#define cameraNear cameraNearFar.x +#define cameraFar cameraNearFar.y +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a; +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#else +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#endif +float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#else +return orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#endif +} +#ifdef PERSPECTIVE_CAMERA +#define linearDepth(v) viewZToOrthographicDepth(getViewZ(readDepth(v)), cameraNearFar.x, cameraNearFar.y) +#else +#define linearDepth(v) readDepth(v) +#endif +#endif +#define getTexel(v) texture2D(inputBuffer, v) +#if KERNEL_SIZE == 3 +varying vec2 vUv00,vUv01,vUv02;varying vec2 vUv03,vUv04,vUv05;varying vec2 vUv06,vUv07,vUv08; +#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13 +varying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24; +#else +uniform vec2 texelSize;uniform float scale;varying vec2 vUv; +#endif +void main(){ +#if KERNEL_SIZE == 3 +vec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08)); +#ifdef BILATERAL +float z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08)); +#endif +#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13 +vec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08),getTexel(vUv09),getTexel(vUv10),getTexel(vUv11),getTexel(vUv12),getTexel(vUv13),getTexel(vUv14),getTexel(vUv15),getTexel(vUv16),getTexel(vUv17),getTexel(vUv18),getTexel(vUv19),getTexel(vUv20),getTexel(vUv21),getTexel(vUv22),getTexel(vUv23),getTexel(vUv24)); +#ifdef BILATERAL +float z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08),linearDepth(vUv09),linearDepth(vUv10),linearDepth(vUv11),linearDepth(vUv12),linearDepth(vUv13),linearDepth(vUv14),linearDepth(vUv15),linearDepth(vUv16),linearDepth(vUv17),linearDepth(vUv18),linearDepth(vUv19),linearDepth(vUv20),linearDepth(vUv21),linearDepth(vUv22),linearDepth(vUv23),linearDepth(vUv24)); +#endif +#endif +vec4 result=vec4(0.0); +#ifdef BILATERAL +float w=0.0; +#if KERNEL_SIZE == 3 || (KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13) +float centerDepth=z[KERNEL_SIZE_SQ_HALF];for(int i=0;i= 13) +for(int i=0;i= 13 +varying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24; +#else +varying vec2 vUv; +#endif +void main(){vec2 uv=position.xy*0.5+0.5; +#if KERNEL_SIZE == 3 +vec2 s=texelSize*scale;vUv00=uv+s*vec2(-1.0,-1.0);vUv01=uv+s*vec2(0.0,-1.0);vUv02=uv+s*vec2(1.0,-1.0);vUv03=uv+s*vec2(-1.0,0.0);vUv04=uv;vUv05=uv+s*vec2(1.0,0.0);vUv06=uv+s*vec2(-1.0,1.0);vUv07=uv+s*vec2(0.0,1.0);vUv08=uv+s*vec2(1.0,1.0); +#elif KERNEL_SIZE == 5 +vec2 s=texelSize*scale;vUv00=uv+s*vec2(-2.0,-2.0);vUv01=uv+s*vec2(-1.0,-2.0);vUv02=uv+s*vec2(0.0,-2.0);vUv03=uv+s*vec2(1.0,-2.0);vUv04=uv+s*vec2(2.0,-2.0);vUv05=uv+s*vec2(-2.0,-1.0);vUv06=uv+s*vec2(-1.0,-1.0);vUv07=uv+s*vec2(0.0,-1.0);vUv08=uv+s*vec2(1.0,-1.0);vUv09=uv+s*vec2(2.0,-1.0);vUv10=uv+s*vec2(-2.0,0.0);vUv11=uv+s*vec2(-1.0,0.0);vUv12=uv;vUv13=uv+s*vec2(1.0,0.0);vUv14=uv+s*vec2(2.0,0.0);vUv15=uv+s*vec2(-2.0,1.0);vUv16=uv+s*vec2(-1.0,1.0);vUv17=uv+s*vec2(0.0,1.0);vUv18=uv+s*vec2(1.0,1.0);vUv19=uv+s*vec2(2.0,1.0);vUv20=uv+s*vec2(-2.0,2.0);vUv21=uv+s*vec2(-1.0,2.0);vUv22=uv+s*vec2(0.0,2.0);vUv23=uv+s*vec2(1.0,2.0);vUv24=uv+s*vec2(2.0,2.0); +#else +vUv=uv; +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Nr=class extends j{constructor({bilateral:e=!1,kernelSize:t=5}={}){super({name:`BoxBlurMaterial`,defines:{DEPTH_PACKING:`0`,DISTANCE_THRESHOLD:`0.1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),normalDepthBuffer:new M(null),texelSize:new M(new D),cameraNearFar:new M(new D),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:jr,vertexShader:Mr}),this.bilateral=e,this.kernelSize=t,this.maxVaryingVectors=8}set maxVaryingVectors(e){this.defines.MAX_VARYING_VECTORS=e.toFixed(0)}get kernelSize(){return Number(this.defines.KERNEL_SIZE)}set kernelSize(e){if(e%2==0)throw Error(`The kernel size must be an odd number`);this.defines.KERNEL_SIZE=e.toFixed(0),this.defines.KERNEL_SIZE_HALF=Math.floor(e/2).toFixed(0),this.defines.KERNEL_SIZE_SQ=(e**2).toFixed(0),this.defines.KERNEL_SIZE_SQ_HALF=Math.floor(e**2/2).toFixed(0),this.defines.INV_KERNEL_SIZE_SQ=(1/e**2).toFixed(6),this.needsUpdate=!0}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}get near(){return this.uniforms.cameraNearFar.value.x}get far(){return this.uniforms.cameraNearFar.value.y}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set normalDepthBuffer(e){this.uniforms.normalDepthBuffer.value=e,e===null?delete this.defines.NORMAL_DEPTH:this.defines.NORMAL_DEPTH=`1`,this.needsUpdate=!0}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get bilateral(){return this.defines.BILATERAL!==void 0}set bilateral(e){e===null?delete this.defines.BILATERAL:this.defines.BILATERAL=`1`,this.needsUpdate=!0}get worldDistanceThreshold(){return-$n(Number(this.defines.DISTANCE_THRESHOLD),this.near,this.far)}set worldDistanceThreshold(e){let t=er(-e,this.near,this.far);this.defines.DISTANCE_THRESHOLD=t.toFixed(12),this.needsUpdate=!0}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Pr=`#include +varying vec2 vUv; +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;} +#else +#if INPUT_DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if INPUT_DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +} +#endif +void main(){ +#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING +gl_FragColor=texture2D(depthBuffer,vUv); +#else +float depth=readDepth(vUv); +#if OUTPUT_DEPTH_PACKING == 3201 +gl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth); +#else +gl_FragColor=vec4(vec3(depth),1.0); +#endif +#endif +}`,Fr=`varying vec2 vUv; +#if DEPTH_COPY_MODE == 1 +uniform vec2 texelPosition; +#endif +void main(){ +#if DEPTH_COPY_MODE == 1 +vUv=texelPosition; +#else +vUv=position.xy*0.5+0.5; +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Ir=class extends j{constructor(){super({name:`DepthCopyMaterial`,defines:{INPUT_DEPTH_PACKING:`0`,OUTPUT_DEPTH_PACKING:`0`,DEPTH_COPY_MODE:`0`},uniforms:{depthBuffer:new M(null),texelPosition:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Pr,vertexShader:Fr}),this.depthCopyMode=on.FULL}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set inputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.inputDepthPacking=t}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(e){this.uniforms.texelPosition.value=e}get mode(){return this.depthCopyMode}set mode(e){this.depthCopyMode=e,this.defines.DEPTH_COPY_MODE=e.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(e){this.mode=e}},Lr=`#include +#include +#include +#define packFloatToRGBA(v) packDepthToRGBA(v) +#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const in vec4 value){return vec4(mix(pow(value.rgb*0.9478672986+vec3(0.0521327014),vec3(2.4)),value.rgb*0.0773993808,vec3(lessThanEqual(value.rgb,vec3(0.04045)))),value.a);}float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;}float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +return orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0; +#ifdef ENCODE_OUTPUT +#include +#endif +#include +}`,Rr=`uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}`,zr=class extends j{constructor(e,t,n,r,i=!1){super({name:`EffectMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``),DEPTH_PACKING:`0`,ENCODE_OUTPUT:`1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),resolution:new M(new D),texelSize:new M(new D),cameraNear:new M(.3),cameraFar:new M(1e3),aspect:new M(1),time:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:i}),e&&this.setShaderParts(e),t&&this.setDefines(t),n&&this.setUniforms(n),this.copyCameraSettings(r)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader=Lr.replace(I.FRAGMENT_HEAD,e.get(I.FRAGMENT_HEAD)||``).replace(I.FRAGMENT_MAIN_UV,e.get(I.FRAGMENT_MAIN_UV)||``).replace(I.FRAGMENT_MAIN_IMAGE,e.get(I.FRAGMENT_MAIN_IMAGE)||``),this.vertexShader=Rr.replace(I.VERTEX_HEAD,e.get(I.VERTEX_HEAD)||``).replace(I.VERTEX_MAIN_SUPPORT,e.get(I.VERTEX_MAIN_SUPPORT)||``),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){this.extensions={};for(let t of e)this.extensions[t]=!0;return this}get encodeOutput(){return this.defines.ENCODE_OUTPUT!==void 0}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT=`1`:delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let n=this.uniforms;n.resolution.value.set(e,t),n.texelSize.value.set(1/e,1/t),n.aspect.value=e/t}static get Section(){return I}},Br=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec2 kernel[STEPS];varying vec2 vOffset;varying vec2 vUv;void main(){vec4 result=texture2D(inputBuffer,vUv)*kernel[0].y;for(int i=1;i +}`,Vr=`uniform vec2 texelSize;uniform vec2 direction;uniform float scale;varying vec2 vOffset;varying vec2 vUv;void main(){vOffset=direction*texelSize*scale;vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,Hr=class extends j{constructor({kernelSize:e=35}={}){super({name:`GaussianBlurMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D),direction:new M(new D),kernel:new M(null),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Br,vertexShader:Vr}),this._kernelSize=0,this.kernelSize=e}set inputBuffer(e){this.uniforms.inputBuffer.value=e}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this.generateKernel(e)}get direction(){return this.uniforms.direction.value}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}generateKernel(e){let t=new Ee(e),n=t.linearSteps,r=new Float64Array(n*2);for(let e=0,i=0;ethis.setSize(o.baseWidth,o.baseHeight)),this.iterations=t}set mainCamera(e){this.blurMaterial.copyCameraSettings(e)}setDepthTexture(e,t=w){this.blurMaterial.depthBuffer=e,this.blurMaterial.depthPacking=t}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial;this.fullscreenMaterial=l;let u=t;for(let t=0,n=Math.max(this.iterations,1);t=167?qr:Kr;return(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3])/255}var Yr=class extends Wr{constructor({depthPacking:e=i,mode:t=on.SINGLE}={}){if(e!==3201&&e!==3200)throw Error(`Unsupported depth packing: ${e}`);super({depthPacking:e}),this.name=`DepthPickingPass`,this.fullscreenMaterial.mode=t,this.pixelBuffer=e===3201?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(e){return this.fullscreenMaterial.texelPosition.set(e.x*.5+.5,e.y*.5+.5),new Promise(e=>{this.callback=e})}render(e,t,n,r,i){let a=this.fullscreenMaterial,o=a.mode;if(o===on.FULL&&super.render(e),this.callback!==null){let t=this.renderTarget,n=this.pixelBuffer,r=t.texture.type!==A,i=0,s=0;if(o===on.SINGLE)super.render(e);else{let e=a.texelPosition;i=Math.round(e.x*t.width),s=Math.round(e.y*t.height)}e.readRenderTargetPixels(t,i,s,1,1,n),this.callback(r?Jr(n):n[0]),this.callback=null}}setSize(e,t){this.fullscreenMaterial.mode===on.FULL&&super.setSize(e,t)}};function Xr(e,t,n){for(let r of t){let t=`$1`+e+r.charAt(0).toUpperCase()+r.slice(1),i=RegExp(`([^\\.])(\\b`+r+`\\b)`,`g`);for(let e of n.entries())e[1]!==null&&n.set(e[0],e[1].replace(i,t))}}function Zr(e,t,n){let r=t.getFragmentShader(),i=t.getVertexShader(),a=r!==void 0&&/mainImage/.test(r),o=r!==void 0&&/mainUv/.test(r);if(n.attributes|=t.getAttributes(),r===void 0)throw Error(`Missing fragment shader (${t.name})`);if(o&&(n.attributes&F.CONVOLUTION)!==0)throw Error(`Effects that transform UVs are incompatible with convolution effects (${t.name})`);if(!a&&!o)throw Error(`Could not find mainImage or mainUv function (${t.name})`);{let s=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,c=n.shaderParts,l=c.get(I.FRAGMENT_HEAD)||``,u=c.get(I.FRAGMENT_MAIN_UV)||``,d=c.get(I.FRAGMENT_MAIN_IMAGE)||``,f=c.get(I.VERTEX_HEAD)||``,p=c.get(I.VERTEX_MAIN_SUPPORT)||``,m=new Set,h=new Set;if(o&&(u+=` ${e}MainUv(UV); +`,n.uvTransformation=!0),i!==null&&/mainSupport/.test(i)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(i);p+=` ${e}MainSupport(`,p+=t?`vUv); +`:`); +`;for(let e of i.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(let t of e[1].split(/\s*,\s*/))n.varyings.add(t),m.add(t),h.add(t);for(let e of i.matchAll(s))h.add(e[1])}for(let e of r.matchAll(s))h.add(e[1]);for(let e of t.defines.keys())h.add(e.replace(/\([\w\s,]*\)/g,``));for(let e of t.uniforms.keys())h.add(e);h.delete(`while`),h.delete(`for`),h.delete(`if`),t.uniforms.forEach((t,r)=>n.uniforms.set(e+r.charAt(0).toUpperCase()+r.slice(1),t)),t.defines.forEach((t,r)=>n.defines.set(e+r.charAt(0).toUpperCase()+r.slice(1),t));let g=new Map([[`fragment`,r],[`vertex`,i]]);Xr(e,h,n.defines),Xr(e,h,g),r=g.get(`fragment`),i=g.get(`vertex`);let _=t.blendMode;if(n.blendModes.set(_.blendFunction,_),a){t.inputColorSpace!==null&&t.inputColorSpace!==n.colorSpace&&(d+=t.inputColorSpace===`srgb`?`color0 = sRGBTransferOETF(color0); + `:`color0 = sRGBToLinear(color0); + `),t.outputColorSpace===``?t.inputColorSpace!==null&&(n.colorSpace=t.inputColorSpace):n.colorSpace=t.outputColorSpace,d+=`${e}MainImage(color0, UV, `,(n.attributes&F.DEPTH)!==0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(r)&&(d+=`depth, `,n.readDepth=!0),d+=`color1); + `;let i=e+`BlendOpacity`;n.uniforms.set(i,_.opacity),d+=`color0 = blend${_.blendFunction}(color0, color1, ${i}); + + `,l+=`uniform float ${i}; + +`}if(l+=r+` +`,i!==null&&(f+=i+` +`),c.set(I.FRAGMENT_HEAD,l),c.set(I.FRAGMENT_MAIN_UV,u),c.set(I.FRAGMENT_MAIN_IMAGE,d),c.set(I.VERTEX_HEAD,f),c.set(I.VERTEX_MAIN_SUPPORT,p),t.extensions!==null)for(let e of t.extensions)n.extensions.add(e)}}var Qr=class extends N{constructor(e,...t){super(`EffectPass`),this.fullscreenMaterial=new zr(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){this.fullscreenMaterial.copyCameraSettings(e);for(let t of this.effects)t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener(`change`,this.listener);this.effects=e.sort((e,t)=>t.attributes-e.attributes);for(let e of this.effects)e.addEventListener(`change`,this.listener)}updateMaterial(){let e=new we,t=0;for(let n of this.effects)if(n.blendMode.blendFunction===z.DST)e.attributes|=n.getAttributes()&F.DEPTH;else if((e.attributes&n.getAttributes()&F.CONVOLUTION)!==0)throw Error(`Convolution effects cannot be merged (${n.name})`);else Zr(`e`+ t++,n,e);let n=e.shaderParts.get(I.FRAGMENT_HEAD),r=e.shaderParts.get(I.FRAGMENT_MAIN_IMAGE),i=e.shaderParts.get(I.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())n+=t.getShaderCode().replace(a,`blend${t.blendFunction}`)+` +`;(e.attributes&F.DEPTH)===0?this.needsDepthTexture=!1:(e.readDepth&&(r=`float depth = readDepth(UV); + + `+r),this.needsDepthTexture=this.getDepthTexture()===null),e.colorSpace===`srgb`&&(r+=`color0 = sRGBToLinear(color0); + `),e.uvTransformation?(i=`vec2 transformedUv = vUv; +`+i,e.defines.set(`UV`,`transformedUv`)):e.defines.set(`UV`,`vUv`),e.shaderParts.set(I.FRAGMENT_HEAD,n),e.shaderParts.set(I.FRAGMENT_MAIN_IMAGE,r),e.shaderParts.set(I.FRAGMENT_MAIN_UV,i);for(let[t,n]of e.shaderParts)n!==null&&e.shaderParts.set(t,n.trim().replace(/^#/,` +#`));this.skipRendering=t===0,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=w){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t;for(let n of this.effects)n.setDepthTexture(e,t)}render(e,t,n,r,i){for(let n of this.effects)n.update(e,t,r);if(!this.skipRendering||this.renderToScreen){let i=this.fullscreenMaterial;i.inputBuffer=t.texture,i.time+=r*this.timeScale,e.setRenderTarget(this.renderToScreen?null:n),e.render(this.scene,this.camera)}}setSize(e,t){this.fullscreenMaterial.setSize(e,t);for(let n of this.effects)n.setSize(e,t)}initialize(e,t,n){this.renderer=e;for(let r of this.effects)r.initialize(e,t,n);this.updateMaterial(),n!==void 0&&n!==1009&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}dispose(){super.dispose();for(let e of this.effects)e.removeEventListener(`change`,this.listener),e.dispose()}handleEvent(e){switch(e.type){case`change`:this.recompile();break}}},$r=class extends N{constructor({kernelSize:e=35,iterations:t=1,resolutionScale:n=1,resolutionX:r=R.AUTO_SIZE,resolutionY:i=R.AUTO_SIZE}={}){super(`GaussianBlurPass`),this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`Blur.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`Blur.Target.B`,this.blurMaterial=new Hr({kernelSize:e}),this.copyMaterial=new he,this.copyMaterial.inputBuffer=this.renderTargetB.texture;let a=this.resolution=new R(this,r,i,n);a.addEventListener(`change`,e=>this.setSize(a.baseWidth,a.baseHeight)),this.iterations=t}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial;this.fullscreenMaterial=l;let u=t;for(let t=0,n=Math.max(this.iterations,1);t1&&(u=c);this.fullscreenMaterial=this.copyMaterial,e.setRenderTarget(this.renderToScreen?null:n),e.render(a,o)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.renderTargetA.setSize(r,i),this.renderTargetB.setSize(r,i),this.blurMaterial.setSize(e,t)}initialize(e,t,n){n!==void 0&&(this.renderTargetA.texture.type=n,this.renderTargetB.texture.type=n,n===1009?e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetA.texture.colorSpace=C,this.renderTargetB.texture.colorSpace=C):(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`,this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`))}},ei=class extends N{constructor(e){super(`LambdaPass`,null,null),this.needsSwap=!1,this.f=e}render(e,t,n,r,i){this.f()}},ti=class extends N{constructor(e,n,{renderTarget:r,resolutionScale:i=1,width:a=R.AUTO_SIZE,height:o=R.AUTO_SIZE,resolutionX:s=a,resolutionY:l=o}={}){super(`NormalPass`),this.needsSwap=!1,this.renderPass=new zt(e,n,new se);let u=this.renderPass;u.ignoreBackground=!0,u.skipShadowMapUpdate=!0;let d=u.getClearPass();d.overrideClearColor=new t(7829503),d.overrideClearAlpha=1,this.renderTarget=r,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{minFilter:k,magFilter:k}),this.renderTarget.texture.name=`NormalPass.Target`);let f=this.resolution=new R(this,s,l,i);f.addEventListener(`change`,e=>this.setSize(f.baseWidth,f.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a,a)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}},ni=[new Float32Array(3),new Float32Array(3)],Y=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],ri=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function ii(e,t,n,r){let i=n[0]-t[0],a=n[1]-t[1],o=n[2]-t[2],s=e[0]-t[0],c=e[1]-t[1],l=e[2]-t[2],u=a*l-o*c,d=o*s-i*l,f=i*c-a*s,p=Math.sqrt(u*u+d*d+f*f),m=p*.5,h=u/p,g=d/p,_=f/p,v=-(e[0]*h+e[1]*g+e[2]*_),y=r[0]*h+r[1]*g+r[2]*_;return Math.abs(y+v)*m/3}function ai(e,t,n,r,i,a){let o=(n+r*t+i*t*t)*4;a[0]=e[o+0],a[1]=e[o+1],a[2]=e[o+2]}function oi(e,t,n,r,i,a){let o=n*(t-1),s=r*(t-1),c=i*(t-1),l=Math.floor(o),u=Math.floor(s),d=Math.floor(c),f=Math.ceil(o),p=Math.ceil(s),m=Math.ceil(c),h=o-l,g=s-u,_=c-d;if(l===o&&u===s&&d===c)ai(e,t,o,s,c,a);else{let n;h>=g&&g>=_?n=ri[0]:h>=_&&_>=g?n=ri[1]:_>=h&&h>=g?n=ri[2]:g>=h&&h>=_?n=ri[3]:g>=_&&_>=h?n=ri[4]:_>=g&&g>=h&&(n=ri[5]);let[r,i,o,s]=n,c=ni[0];c[0]=h,c[1]=g,c[2]=_;let v=ni[1],y=f-l,b=p-u,x=m-d;v[0]=y*r[0]+l,v[1]=b*r[1]+u,v[2]=x*r[2]+d,ai(e,t,v[0],v[1],v[2],Y[0]),v[0]=y*i[0]+l,v[1]=b*i[1]+u,v[2]=x*i[2]+d,ai(e,t,v[0],v[1],v[2],Y[1]),v[0]=y*o[0]+l,v[1]=b*o[1]+u,v[2]=x*o[2]+d,ai(e,t,v[0],v[1],v[2],Y[2]),v[0]=y*s[0]+l,v[1]=b*s[1]+u,v[2]=x*s[2]+d,ai(e,t,v[0],v[1],v[2],Y[3]);let S=ii(i,o,s,c)*6,ee=ii(r,o,s,c)*6,C=ii(r,i,s,c)*6,te=ii(r,i,o,c)*6;Y[0][0]*=S,Y[0][1]*=S,Y[0][2]*=S,Y[1][0]*=ee,Y[1][1]*=ee,Y[1][2]*=ee,Y[2][0]*=C,Y[2][1]*=C,Y[2][2]*=C,Y[3][0]*=te,Y[3][1]*=te,Y[3][2]*=te,a[0]=Y[0][0]+Y[1][0]+Y[2][0]+Y[3][0],a[1]=Y[0][1]+Y[1][1]+Y[2][1]+Y[3][1],a[2]=Y[0][2]+Y[1][2]+Y[2][2]+Y[3][2]}}var si=class{static expand(e,t){let n=Math.cbrt(e.length/4),r=new Float32Array(3),i=new e.constructor(t**3*4),a=e instanceof Uint8Array?255:1,o=t**2,s=1/(t-1);for(let c=0;c=e&&ce&&l<=n)if(Math.sign(u)===Math.sign(d)||Math.abs(u)<1e-4||Math.abs(d)<1e-4){let e=(u+d)/2;e<0?(a[0]=Math.abs(e),a[1]=0):(a[0]=0,a[1]=Math.abs(e))}else{let r=-t*o/s+e,i=Math.trunc(r),c=r>e?u*(r-i)/2:0,l=rMath.abs(l)?c:-l)<0?(a[0]=Math.abs(c),a[1]=Math.abs(l)):(a[0]=Math.abs(l),a[1]=Math.abs(c))}else a[0]=0,a[1]=0;return a}function yi(e,t,n,r,i){let a=X[0],o=X[1],s=.5+r,c=.5+r-1,l=t+n+1;switch(e){case 0:i[0]=0,i[1]=0;break;case 1:t<=n?Z(0,c,l/2,0,t,i):(i[0]=0,i[1]=0);break;case 2:t>=n?Z(l/2,0,l,c,t,i):(i[0]=0,i[1]=0);break;case 3:Z(0,c,l/2,0,t,a),Z(l/2,0,l,c,t,o),vi(l,X),i[0]=a[0]+o[0],i[1]=a[1]+o[1];break;case 4:t<=n?Z(0,s,l/2,0,t,i):(i[0]=0,i[1]=0);break;case 5:i[0]=0,i[1]=0;break;case 6:Math.abs(r)>0?(Z(0,s,l,c,t,a),Z(0,s,l/2,0,t,o),Z(l/2,0,l,c,t,i),o[0]+=i[0],o[1]+=i[1],i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2):Z(0,s,l,c,t,i);break;case 7:Z(0,s,l,c,t,i);break;case 8:t>=n?Z(l/2,0,l,s,t,i):(i[0]=0,i[1]=0);break;case 9:Math.abs(r)>0?(Z(0,c,l,s,t,a),Z(0,c,l/2,0,t,o),Z(l/2,0,l,s,t,i),o[0]+=i[0],o[1]+=i[1],i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2):Z(0,c,l,s,t,i);break;case 10:i[0]=0,i[1]=0;break;case 11:Z(0,c,l,s,t,i);break;case 12:Z(0,s,l/2,0,t,a),Z(l/2,0,l,s,t,o),vi(l,X),i[0]=a[0]+o[0],i[1]=a[1]+o[1];break;case 13:Z(0,c,l,s,t,i);break;case 14:Z(0,s,l,c,t,i);break;case 15:i[0]=0,i[1]=0;break}return i}function bi(e,t,n,r,i,a){let o=e===n&&t===r;if(!o){let s=(e+n)/2,c=(t+r)/2,l=r-t,u=e-n;o=l*(i-s)+u*(a-c)>0}return o}function xi(e,t,n,r,i,a){let o=0;for(let s=0;s0&&(t+=o[0],n+=o[1]),u>0&&(r+=o[0],i+=o[1]),s[0]=1-xi(t,n,r,i,1+a,0+a),s[1]=xi(t,n,r,i,1+a,1+a),s}function Si(e,t,n,r,i){let a=X[0],o=X[1],s=t+n+1;switch(e){case 0:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 1:Q(e,1,0,0+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 2:Q(e,0,0,1+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 3:Q(e,1,0,1+s,0+s,t,r,i);break;case 4:Q(e,1,1,0+s,0+s,t,r,a),Q(e,1,1,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 5:Q(e,1,1,0+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 6:Q(e,1,1,1+s,0+s,t,r,i);break;case 7:Q(e,1,1,1+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 8:Q(e,0,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,1+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 9:Q(e,1,0,1+s,1+s,t,r,i),Q(e,1,0,1+s,1+s,t,r,i);break;case 10:Q(e,0,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 11:Q(e,1,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 12:Q(e,1,1,1+s,1+s,t,r,i);break;case 13:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,1+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 14:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,1,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 15:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break}return i}function Ci(e,t,n){let r=new Float32Array(2);for(let i=0,a=e.length;i{function q(t,a,s){let e=document.createElement("canvas"),n=e.getContext("2d");if(e.width=t,e.height=a,s instanceof Image)n.drawImage(s,0,0);else{let r=n.createImageData(t,a);r.data.set(s),n.putImageData(r,0,0)}return e}var F=class t{constructor(a=0,s=0,e=null){this.width=a,this.height=s,this.data=e}toCanvas(){return typeof document=="undefined"?null:q(this.width,this.height,this.data)}static from(a){let{width:s,height:e}=a,n;if(a instanceof Image){let r=q(s,e,a);r!==null&&(n=r.getContext("2d").getImageData(0,0,s,e).data)}else n=a.data;return new t(s,e,n)}};var M=[new Float32Array(2),new Float32Array(2)],D=16,W=20,I=30,j=32,v=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),N=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],z=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],p=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];function C(t,a,s){return t+(a-t)*s}function B(t){return Math.min(Math.max(t,0),1)}function _(t){let a=M[0],s=M[1],e=Math.sqrt(a[0]*2)*.5,n=Math.sqrt(a[1]*2)*.5,r=Math.sqrt(s[0]*2)*.5,o=Math.sqrt(s[1]*2)*.5,c=B(t/j);a[0]=C(e,a[0],c),a[1]=C(n,a[1],c),s[0]=C(r,s[0],c),s[1]=C(o,s[1],c)}function d(t,a,s,e,n,r){let o=s-t,c=e-a,h=n,i=n+1,w=a+c*(h-t)/o,b=a+c*(i-t)/o;if(h>=t&&ht&&i<=s)if(Math.sign(w)===Math.sign(b)||Math.abs(w)<1e-4||Math.abs(b)<1e-4){let g=(w+b)/2;g<0?(r[0]=Math.abs(g),r[1]=0):(r[0]=0,r[1]=Math.abs(g))}else{let g=-a*o/c+t,k=Math.trunc(g),m=g>t?w*(g-k)/2:0,U=gMath.abs(U)?m:-U)<0?(r[0]=Math.abs(m),r[1]=Math.abs(U)):(r[0]=Math.abs(U),r[1]=Math.abs(m))}else r[0]=0,r[1]=0;return r}function J(t,a,s,e,n){let r=M[0],o=M[1],c=.5+e,h=.5+e-1,i=a+s+1;switch(t){case 0:{n[0]=0,n[1]=0;break}case 1:{a<=s?d(0,h,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 2:{a>=s?d(i/2,0,i,h,a,n):(n[0]=0,n[1]=0);break}case 3:{d(0,h,i/2,0,a,r),d(i/2,0,i,h,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 4:{a<=s?d(0,c,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 5:{n[0]=0,n[1]=0;break}case 6:{Math.abs(e)>0?(d(0,c,i,h,a,r),d(0,c,i/2,0,a,o),d(i/2,0,i,h,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,c,i,h,a,n);break}case 7:{d(0,c,i,h,a,n);break}case 8:{a>=s?d(i/2,0,i,c,a,n):(n[0]=0,n[1]=0);break}case 9:{Math.abs(e)>0?(d(0,h,i,c,a,r),d(0,h,i/2,0,a,o),d(i/2,0,i,c,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,h,i,c,a,n);break}case 10:{n[0]=0,n[1]=0;break}case 11:{d(0,h,i,c,a,n);break}case 12:{d(0,c,i/2,0,a,r),d(i/2,0,i,c,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 13:{d(0,h,i,c,a,n);break}case 14:{d(0,c,i,h,a,n);break}case 15:{n[0]=0,n[1]=0;break}}return n}function K(t,a,s,e,n,r){let o=t===s&&a===e;if(!o){let c=(t+s)/2,h=(a+e)/2,i=e-a,w=t-s;o=i*(n-c)+w*(r-h)>0}return o}function G(t,a,s,e,n,r){let o=0;for(let c=0;c0&&(a+=o[0],s+=o[1]),w>0&&(e+=o[0],n+=o[1]),c[0]=1-G(a,s,e,n,1+r,0+r),c[1]=G(a,s,e,n,1+r,1+r),c}function Q(t,a,s,e,n){let r=M[0],o=M[1],c=a+s+1;switch(t){case 0:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 1:{A(t,1,0,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 2:{A(t,0,0,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 3:{A(t,1,0,1+c,0+c,a,e,n);break}case 4:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 5:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 6:{A(t,1,1,1+c,0+c,a,e,n);break}case 7:{A(t,1,1,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 8:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 9:{A(t,1,0,1+c,1+c,a,e,n),A(t,1,0,1+c,1+c,a,e,n);break}case 10:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 11:{A(t,1,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 12:{A(t,1,1,1+c,1+c,a,e,n);break}case 13:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 14:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 15:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}}return n}function R(t,a,s){let e=new Float32Array(2);for(let n=0,r=t.length;n{let a=S.generate(),s=E.generate();postMessage({areaImageData:a,searchImageData:s},[a.data.buffer,s.data.buffer]),close()});})(); +`;function Di(e=!0){let t=URL.createObjectURL(new Blob([Ei],{type:`text/javascript`})),n=new Worker(t);return URL.revokeObjectURL(t),new Promise((t,r)=>{n.addEventListener(`error`,e=>r(e.error)),n.addEventListener(`message`,n=>{let r=K.from(n.data.searchImageData),i=K.from(n.data.areaImageData),a=[r.toCanvas().toDataURL(`image/png`,1),i.toCanvas().toDataURL(`image/png`,1)];e&&(localStorage.setItem(`smaa-search`,a[0]),localStorage.setItem(`smaa-area`,a[1])),t(a)}),n.postMessage(null)})}var Oi=class{constructor(){this.disableCache=!1}setCacheEnabled(e){this.disableCache=!e}generate(){let e=!this.disableCache&&window.localStorage!==void 0,t=e?[localStorage.getItem(`smaa-search`),localStorage.getItem(`smaa-area`)]:[null,null];return(t[0]!==null&&t[1]!==null?Promise.resolve(t):Di(e)).then(e=>new Promise((t,n)=>{let r=new Image,i=new Image,a=new v;a.onLoad=()=>t([r,i]),a.onError=n,r.addEventListener(`error`,e=>a.itemError(`smaa-search`)),i.addEventListener(`error`,e=>a.itemError(`smaa-area`)),r.addEventListener(`load`,()=>a.itemEnd(`smaa-search`)),i.addEventListener(`load`,()=>a.itemEnd(`smaa-area`)),a.itemStart(`smaa-search`),a.itemStart(`smaa-area`),r.src=e[0],i.src=e[1]}))}},ki=new Map([[$(0,0,0,0),new Float32Array([0,0,0,0])],[$(0,0,0,1),new Float32Array([0,0,0,1])],[$(0,0,1,0),new Float32Array([0,0,1,0])],[$(0,0,1,1),new Float32Array([0,0,1,1])],[$(0,1,0,0),new Float32Array([0,1,0,0])],[$(0,1,0,1),new Float32Array([0,1,0,1])],[$(0,1,1,0),new Float32Array([0,1,1,0])],[$(0,1,1,1),new Float32Array([0,1,1,1])],[$(1,0,0,0),new Float32Array([1,0,0,0])],[$(1,0,0,1),new Float32Array([1,0,0,1])],[$(1,0,1,0),new Float32Array([1,0,1,0])],[$(1,0,1,1),new Float32Array([1,0,1,1])],[$(1,1,0,0),new Float32Array([1,1,0,0])],[$(1,1,0,1),new Float32Array([1,1,0,1])],[$(1,1,1,0),new Float32Array([1,1,1,0])],[$(1,1,1,1),new Float32Array([1,1,1,1])]]);function Ai(e,t,n){return e+(t-e)*n}function $(e,t,n,r){return Ai(Ai(e,t,.75),Ai(n,r,.75),.875)}function ji(e,t){let n=0;return t[3]===1&&(n+=1),n===1&&t[2]===1&&e[1]!==1&&e[3]!==1&&(n+=1),n}function Mi(e,t){let n=0;return t[3]===1&&e[1]!==1&&e[3]!==1&&(n+=1),n===1&&t[2]===1&&e[0]!==1&&e[2]!==1&&(n+=1),n}var Ni=class{static generate(){let e=new Uint8ClampedArray(2178),t=new Uint8ClampedArray(1024*4);for(let t=0;t<33;++t)for(let n=0;n<66;++n){let r=.03125*n,i=.03125*t;if(ki.has(r)&&ki.has(i)){let a=ki.get(r),o=ki.get(i),s=t*66+n;e[s]=127*ji(a,o),e[s+33]=127*Mi(a,o)}}for(let n=0,r=17;r<33;++r)for(let i=0;i<64;++i,n+=4)t[n]=e[r*66+i],t[n+3]=255;return new K(64,16,t)}};export{Ut as $,gr as $t,Ct as A,ln as At,F as B,un as Bt,Ir as C,Nt as Ct,sr as D,Ae as Dt,or as E,bn as Et,Tt as F,R as Ft,I as G,An as Gt,zr as H,qn as Ht,Je as I,Ti as It,Ee as J,Vn as Jt,Ot as K,Ne as Kt,Wn as L,Qn as Lt,Yr as M,On as Mt,sn as N,zt as Nt,pt as O,N as Ot,de as P,je as Pt,jt as Q,pr as Qt,cn as R,Oi as Rt,_n as S,mn as St,Wr as T,wn as Tt,Qr as U,ur as Ut,Ce as V,Ni as Vt,we as W,rr as Wt,$r as X,In as Xt,Hr as Y,W as Yt,It as Z,si as Zt,ot as _,Ge as _t,z as a,Ze as an,He as at,he as b,ye as bt,nt as c,fn as cn,Zt as ct,Ur as d,kr as dt,_r as en,Rt as et,it as f,Qt as ft,ve as g,We as gt,pe as h,nn as ht,Cr as i,q as in,Oe as it,xn as j,K as jt,Rn as k,En as kt,gt as l,ue as ln,an as lt,vt as m,Yt as mt,Ie as n,Se as nn,qt as nt,Fe as o,Dr as on,H as ot,dt as p,ei as pt,At as q,zn as qt,Sr as r,Tr as rn,De as rt,et as s,dn as sn,V as st,Re as t,br as tn,Gt as tt,Nr as u,Or as ut,U as v,mt as vt,on as w,ti as wt,ge as x,Qe as xt,ct as y,bt as yt,B as z,Ar as zt}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js.gz b/Needle/MenuScene/dist/assets/postprocessing.Wy71DpiM.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..951fc3edd263b9625913b5e64c757d113abb6f46 GIT binary patch literal 111140 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 L#zx~Uupj>g#~*wH literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/postprocessing.ao.BRYreHJS.js b/Needle/MenuScene/dist/assets/postprocessing.ao.BRYreHJS.js new file mode 100644 index 0000000..5ad30e7 --- /dev/null +++ b/Needle/MenuScene/dist/assets/postprocessing.ao.BRYreHJS.js @@ -0,0 +1,842 @@ +import{A as e,Ar as t,Er as n,Fr as r,H as i,It as a,J as o,Jn as s,On as c,Or as l,S as u,X as d,Xt as f,Y as p,Zt as m,ft as h,kr as g,lr as _,mn as v,on as y,ot as b,qn as x,tr as S,x as C}from"./three@0.169.19.js";import{Ot as w}from"./postprocessing.Wy71DpiM.js";import{t as T}from"./three-examples.extras@0.169.19.js";var E=new class extends u{boundingSphere=new _;constructor(){super(),this.setAttribute(`position`,new C(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute(`uv`,new C(new Float32Array([0,0,2,0,0,2]),2))}computeBoundingSphere(){}},D=new v,O=class{constructor(e){this._mesh=new m(E,e),this._mesh.frustumCulled=!1}render(e){e.render(this._mesh,D)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}},k={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new f},viewMat:{value:new f},projViewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},biasAdjustment:{value:new g},time:{value:0},samples:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},ortho:{value:!1},screenSpaceRadius:{value:!1},frame:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` +varying vec2 vUv; +void main() { + vUv = uv; + gl_Position = vec4(position, 1); +}`,fragmentShader:` + #define SAMPLES 16 + #define FSAMPLES 16.0 +uniform sampler2D sceneDiffuse; +uniform highp sampler2D sceneNormal; +uniform highp sampler2D sceneDepth; +uniform mat4 projectionMatrixInv; +uniform mat4 viewMatrixInv; +uniform mat4 projMat; +uniform mat4 viewMat; +uniform mat4 projViewMat; +uniform vec3 cameraPos; +uniform vec2 resolution; +uniform vec2 biasAdjustment; +uniform float time; +uniform vec3[SAMPLES] samples; +uniform float radius; +uniform float distanceFalloff; +uniform float near; +uniform float far; +uniform float frame; +uniform bool ortho; +uniform bool screenSpaceRadius; +uniform sampler2D bluenoise; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + /*return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ);*/ + #ifdef ORTHO + + return linearize_depth_ortho(d, nearZ, farZ); + + #else + return linearize_depth(linDepth, nearZ, farZ); + #endif + } + + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); +} + +mat3 makeRotationZ(float theta) { + float c = cos(theta); + float s = sin(theta); + return mat3(c, - s, 0, + s, c, 0, + 0, 0, 1); + } + +void main() { + vec4 diffuse = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + if (depth == 1.0) { + gl_FragColor = vec4(vec3(1.0), 1.0); + return; + } + vec3 worldPos = getWorldPos(depth, vUv); + #ifdef HALFRES + vec3 normal = texture2D(sceneNormal, vUv).rgb; + #else + vec3 normal = computeNormal(worldPos, vUv); + #endif + vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0); + vec2 harmoniousNumbers = vec2( + 1.618033988749895, + 1.324717957244746 + ); + noise.rg += harmoniousNumbers * frame; + noise.rg = fract(noise.rg); + vec3 helperVec = vec3(0.0, 1.0, 0.0); + if (dot(helperVec, normal) > 0.99) { + helperVec = vec3(1.0, 0.0, 0.0); + } + vec3 tangent = normalize(cross(helperVec, normal)); + vec3 bitangent = cross(normal, tangent); + mediump mat3 tbn = mat3(tangent, bitangent, normal) * makeRotationZ( noise.r * 3.1415962 * 2.0) ; + + mediump float occluded = 0.0; + mediump float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + float bias = (min( + 0.1, + distanceFalloffToUse * 0.1 + ) / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse; + bias = biasAdjustment.x + biasAdjustment.y * bias; + mediump float offsetMove = noise.g; + mediump float offsetMoveInv = 1.0 / FSAMPLES; + float farTimesNear = far * near; + float farMinusNear = far - near; + + for(int i = 0; i < SAMPLES; i++) { + mediump vec3 sampleDirection = tbn * samples[i]; + + float moveAmt = fract(offsetMove); + offsetMove += offsetMoveInv; + vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection; + vec4 offset = projMat * vec4(samplePos, 1.0); + offset.xyz /= offset.w; + offset.xyz = offset.xyz * 0.5 + 0.5; + + if (all(greaterThan(offset.xyz * (1.0 - offset.xyz), vec3(0.0)))) { + #ifdef REVERSEDEPTH + float sampleDepth = 1.0 - textureLod(sceneDepth, offset.xy, 0.0).x; + #else + float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x; + #endif + + /*#ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + #ifdef ORTHO + float distSample = near + farMinusNear * sampleDepth; + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif*/ + #ifdef ORTHO + float distSample = near + sampleDepth * farMinusNear; + #else + #ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif + + #ifdef ORTHO + float distWorld = near + offset.z * farMinusNear; + #else + float distWorld = (farTimesNear) / (far - offset.z * farMinusNear); + #endif + + mediump float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld))); + vec2 diff = gl_FragCoord.xy - floor(offset.xy * resolution); + occluded += rangeCheck * float(distSample != distWorld) * float(sampleDepth != depth) * step(distSample + bias, distWorld) * step( + 1.0, + dot(diff, diff) + ); + + totalWeight ++; + } + } + float occ = clamp(1.0 - occluded / (totalWeight == 0.0 ? 1.0 : totalWeight), 0.0, 1.0); + gl_FragColor = vec4(occ, 0.5 + 0.5 * normal); +}`},A={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},transparencyDWFalse:{value:null},transparencyDWTrue:{value:null},transparencyDWTrueDepth:{value:null},transparencyAware:{value:!1},projMat:{value:new f},viewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},color:{value:new t(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0},aoTones:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform highp sampler2D downsampledDepth; + uniform highp sampler2D transparencyDWFalse; + uniform highp sampler2D transparencyDWTrue; + uniform highp sampler2D transparencyDWTrueDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform vec2 resolution; + uniform vec3 color; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform float intensity; + uniform float renderMode; + uniform float near; + uniform float far; + uniform float aoTones; + uniform bool gammaCorrection; + uniform bool ortho; + uniform bool screenSpaceRadius; + uniform bool fog; + uniform bool fogExp; + uniform bool colorMultiply; + uniform bool transparencyAware; + uniform float fogDensity; + uniform float fogNear; + uniform float fogFar; + uniform float radius; + uniform float distanceFalloff; + uniform vec3 cameraPos; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ); + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + // } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + + #include + #include + void main() { + //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0); + vec4 sceneTexel = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + #ifdef HALFRES + vec4 texel; + if (depth == 1.0) { + texel = vec4(0.0, 0.0, 0.0, 1.0); + } else { + vec3 worldPos = getWorldPos(depth, vUv); + vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv); + // vec4 texel = texture2D(tDiffuse, vUv); + // Find closest depth; + float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : distanceFalloff; + for(float x = -1.0; x <= 1.0; x++) { + for(float y = -1.0; y <= 1.0; y++) { + vec2 offset = vec2(x, y); + ivec2 p = ivec2( + (vUv * resolution * 0.5) + offset + ); + vec2 pUv = vec2(p) / (resolution * 0.5); + float sampleDepth = texelFetch(downsampledDepth,p, 0).x; + vec4 sampleInfo = texelFetch(tDiffuse, p, 0); + vec3 normalSample = sampleInfo.gba * 2.0 - 1.0; + vec3 worldPosSample = getWorldPos(sampleDepth, pUv); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0); + float weight = rangeCheck; + totalWeight += weight; + texel += sampleInfo * weight; + } + } + if (totalWeight == 0.0) { + texel = texture2D(tDiffuse, vUv); + } else { + texel /= totalWeight; + } + } + #else + vec4 texel = texture2D(tDiffuse, vUv); + #endif + + #ifdef LOGDEPTH + texel.r = clamp(texel.r, 0.0, 1.0); + if (texel.r == 0.0) { + texel.r = 1.0; + } + #endif + + float finalAo = pow(texel.r, intensity); + if (aoTones > 0.0) { + finalAo = ceil(finalAo * aoTones) / aoTones; + } + float fogFactor; + float fogDepth = distance( + cameraPos, + getWorldPos(depth, vUv) + ); + if (fog) { + if (fogExp) { + fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth ); + } else { + fogFactor = smoothstep( fogNear, fogFar, fogDepth ); + } + } + if (transparencyAware) { + float transparencyDWOff = texture2D(transparencyDWFalse, vUv).a; + float transparencyDWOn = texture2D(transparencyDWTrue, vUv).a; + float adjustmentFactorOff = transparencyDWOff; + #ifdef REVERSEDEPTH + float depthSample = 1.0 - texture2D(sceneDepth, vUv).r; + float trueDepthSample = 1.0 - texture2D(transparencyDWTrueDepth, vUv).r; + #else + float depthSample = texture2D(sceneDepth, vUv).r; + float trueDepthSample = texture2D(transparencyDWTrueDepth, vUv).r; + #endif + float adjustmentFactorOn = (1.0 - transparencyDWOn) * ( + trueDepthSample == depthSample ? 1.0 : 0.0 + ); + float adjustmentFactor = max(adjustmentFactorOff, adjustmentFactorOn); + finalAo = mix(finalAo, 1.0, adjustmentFactor); + } + finalAo = mix(finalAo, 1.0, fogFactor); + vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply)); + if (renderMode == 0.0) { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 1.0) { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 2.0) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (renderMode == 3.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } else if (renderMode == 4.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } + #include + if (gammaCorrection) { + gl_FragColor = sRGBTransferOETF(gl_FragColor); + } + } + `},j={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new f},viewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1.0); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform vec2 resolution; + uniform float r; + uniform float radius; + uniform float worldRadius; + uniform float index; + uniform float near; + uniform float far; + uniform float distanceFalloff; + uniform bool screenSpaceRadius; + varying vec2 vUv; + + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + highp float z_n = 2.0 * d - 1.0; + return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear)); + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return linearize_depth(linDepth, nearZ, farZ); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + #include + #define NUM_SAMPLES 16 + uniform vec2 poissonDisk[NUM_SAMPLES]; + void main() { + const float pi = 3.14159; + vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y); + vec2 uv = vUv; + vec4 data = texture2D(tDiffuse, vUv); + float occlusion = data.r; + float baseOcc = data.r; + vec3 normal = data.gba * 2.0 - 1.0; + float count = 1.0; + float d = texture2D(sceneDepth, vUv).x; + if (d == 1.0) { + gl_FragColor = data; + return; + } + vec3 worldPos = getWorldPos(d, vUv); + float size = radius; + float angle; + if (index == 0.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2; + } else if (index == 1.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2; + } else if (index == 2.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2; + } else { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2; + } + + mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(d, vUv + + vec2(worldRadius, 0.0) / resolution) + ) : worldRadius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + + float invDistance = (1.0 / distanceFalloffToUse); + for(int i = 0; i < NUM_SAMPLES; i++) { + vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size; + vec4 dataSample = texture2D(tDiffuse, uv + offset); + float occSample = dataSample.r; + vec3 normalSample = dataSample.gba * 2.0 - 1.0; + float dSample = texture2D(sceneDepth, uv + offset).x; + vec3 worldPosSample = getWorldPos(dSample, uv + offset); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = float(dSample != 1.0) * exp(-1.0 * tangentPlaneDist * invDistance ) * max(dot(normal, normalSample), 0.0); + occlusion += occSample * rangeCheck; + count += rangeCheck; + } + if (count > 0.0) { + occlusion /= count; + } + occlusion = clamp(occlusion, 0.0, 1.0); + if (occlusion == 0.0) { + occlusion = 1.0; + } + gl_FragColor = vec4(occlusion, 0.5 + 0.5 * normal); + } + `},M={uniforms:{sceneDepth:{value:null},resolution:{value:new g},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new f},projectionMatrixInv:{value:new f},logDepth:{value:!1},ortho:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform highp sampler2D sceneDepth; + uniform vec2 resolution; + uniform float near; + uniform float far; + uniform bool logDepth; + uniform bool ortho; + uniform mat4 viewMatrixInv; + uniform mat4 projectionMatrixInv; + varying vec2 vUv; + layout(location = 1) out vec4 gNormal; + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + if (logDepth && !ortho) { + return getWorldPosLog(vec3(coord, depth)); + } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + void main() { + vec2 uv = vUv - vec2(0.5) / resolution; + vec2 pixelSize = vec2(1.0) / resolution; + highp vec2[4] uvSamples; + uvSamples[0] = uv; + uvSamples[1] = uv + vec2(pixelSize.x, 0.0); + uvSamples[2] = uv + vec2(0.0, pixelSize.y); + uvSamples[3] = uv + pixelSize; + #ifdef REVERSEDEPTH + float depth00 = 1.0 - texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = 1.0 - texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = 1.0 - texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = 1.0 - texture2D(sceneDepth, uvSamples[3]).r; + #else + float depth00 = texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = texture2D(sceneDepth, uvSamples[3]).r; + #endif + float minDepth = min(min(depth00, depth10), min(depth01, depth11)); + float maxDepth = max(max(depth00, depth10), max(depth01, depth11)); + float targetDepth = minDepth; + // Checkerboard pattern to avoid artifacts + if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { + targetDepth = maxDepth; + } + int chosenIndex = 0; + float[4] samples; + samples[0] = depth00; + samples[1] = depth10; + samples[2] = depth01; + samples[3] = depth11; + for(int i = 0; i < 4; ++i) { + if (samples[i] == targetDepth) { + chosenIndex = i; + break; + } + } + gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0); + gNormal = vec4(computeNormal( + getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex] + ), 0.0); + }`},N=Uint8Array.from(atob(`5L7pP4UXrOIr/VZ1G3f6p89FIWU7lqc7J3DPxKjJUXODJoHQzf/aNVM+ABlvhXeBGN7iC0WkmTjEaAqOItBfBdaK5KSGV1ET5SOKl3x9JOX5w2sAl6+6KjDhVUHgbqq7DZ5EeYzbdSNxtrQLW/KkPJoOTG4u5CBUZkCKHniY9l7DUgjuz708zG1HIC8qfohi1vPjPH9Lq47ksjRrjwXD4MlVCjdAqYFGodQ8tRmHkOfq4wVRIAHvoavPHvN1lpk3X4Y1yzAPGe8S9KBs3crc4GwlU1dEOXiWol/mgQqxkNqB1xd04+0Bmpwj0GcCc4NUi+c731FUxjvaexCkCJ0qhrJJ++htWqetNC4NewClu8aFRSwrqiJEGe+qtTg4CYCHaF1wJI0sy/ZBQAI0qAMyBvVjWZlv2pdkCaro9eWDLK5I4mbb8E4d7hZr9dDJiTJm6Bmb5S+2F7yal/JPdeLUfwq7jmVLaQfhv4tWMJAt7V4sG9LuAv2oPJgSj1nnlBvPibfHM2TrlWHwGCLGxW/5Jm2TotaDL+pHDM5pn1r0UuTZ24N8S5k68bLHW9tfD+2k4zGev23ExJb4YTRKWrj82N5LjJ26lj1BkGZ0CsXLGGELoPaYQomjTqPxYqhfwOwDliNGVqux9ffuybqOKgsbB51B1GbZfG8vHDBE2JQGib1mnCmWOWAMJcHN0cKeDHYTflbDTVXajtr68mwfRje6WueQ/6yWqmZMLWNH7P27zGFhMFqaqfg11Q88g/9UA/FROe9yfq0yOO0pnNAxvepFy2BpEbcgG+mCyjCC01JWlOZlIPdf1TtlyOt7L94ToYGCukoFt4OqwOrofamjECpSgKLLmrRM+sNRAw12eaqk8KtdFk7pn2IcDQiPXCh16t1a+psi+w9towHTKPyQM0StKr61b2BnN1HU+aezFNBLfHTiXwhGTbdxLLmrsAGIVSiNAeCGE8GlB0iOv2v78kP0CTmAPUEqnHYRSDlP+L6m/rYjEK6Q85GRDJi2W20/7NLPpSOaMR++IFvpkcwRuc59j8hh9tYlc1xjdt2jmp9KJczB7U9P43inuxLOv11P5/HYH5d6gLB0CsbGC8APjh+EcCP0zFWqlaACZweLhVfv3yiyd8R3bdVg8sRKsxPvhDaPpiFp9+MN+0Ua0bsPr+lhxfZhMhlevkLbR4ZvcSRP6ApQLy3+eMh9ehCB3z5DVAaN3P6J8pi5Qa88ZQsOuCTWyH6q8yMfBw8y8nm6jaOxJhPH6Hf0I4jmALUBsWKH4gWBnyijHh7z3/1HhQzFLRDRrIQwUtu11yk7U0gDw/FatOIZOJaBx3UqbUxSZ6dboFPm5pAyyXC2wYdSWlpZx/D2C6hDO2sJM4HT9IKWWmDkZIO2si/6BKHruXIEDpfAtz3xDlIdKnnlqnkfCyy6vNOPyuoWsSWBeiN0mcfIrnOtp2j7bxjOkr25skfS/lwOC692cEp7TKSlymbsyzoWg/0AN66SvQYo6BqpNwPpTaUu25zMWlwVUdfu1EEdc0O06TI0JmHk4f6GZQbfOs//OdgtGPO6uLoadJycR8Z80rkd88QoNmimZd8vcpQKScCFkxH1RMTkPlN3K7CL/NSMOiXEvxrn9VyUPFee63uRflgaPMSsafvqMgzTt3T1RaHNLLFatQbD0Vha4YXZ/6Ake7onM65nC9cyLkteYkDfHoJtef7wCrWXTK0+vH38VUBcFJP0+uUXpkiK0gDXNA39HL/qdVcaOA16kd2gzq8aHpNSaKtgMLJC6fdLLS/I/4lUWV2+djY9Rc3QuJOUrlHFQERtXN4xJaAHZERCUQZ9ND2pEtZg8dsnilcnqmqYn3c1sRyK0ziKpHNytEyi2gmzxEFchvT1uBWxZUikkAlWuyqvvhteSG9kFhTLNM97s3X1iS2UbE6cvApgbmeJ/KqtP0NNT3bZiG9TURInCZtVsNZzYus6On0wcdMlVfqo8XLhT5ojaOk4DtCyeoQkBt1mf5luFNaLFjI/1cnPefyCQwcq5ia/4pN4NB+xE/3SEPsliJypS964SI6o5fDVa0IERR8DoeQ+1iyRLU1qGYexB61ph4pkG1rf3c2YD6By1pFCmww9B0r2VjFeaubkIdgWx4RKLQRPLENdGo8ezI5mkNtdCws19aP1uHhenD+HKa8GDeLulb2fiMRhU2xJzzz9e4yOMPvEnGEfbCiQ17nUDpcFDWthr68mhZ4WiHUkRpaVWJNExuULcGkuyVLsQj59pf6OHFR7tofhy9FMrWPCEvX1d5sCVJt8yBFiB6NoOuwMy4wlso9I2G4E5/5B2c6vIZUUY9fFujT3hpkdTuVhbhBwLCtnlIjBpN4cq+waZ0wXSrmebcl+dcrb7sPh9jKxFINkScDTBgjSUfLkC3huJJs/M4M8AOFxbbSIVpBUarYFmLpGsv+V6TJnWNTwI41tubwo7QSI1VOdRKT/Pp8U3oK2ciDbeuWnAGAANvQjGfcewdAdo6H83XzqlK/4yudtFHJSv9Y+qJskwnVToH1I0+tJ3vsLBXtlvMzLIxUj/8LcqZnrNHfVRgabFNXW0qpUvDgxnP3f54KooR3NI+2Q/VHAYFigMkQE5dLH6C6fGs/TKeE6E2jOhZQcP9/rrJjJKcLYdn5cw6XLCUe9F7quk5Yhac+nYL5HOXvp6Q/5qbiQHkuebanX77YSNx34YaWYpcEHuY1u/lEVTCQ7taPaw3oNcn/qJhMzGPZUs3XAq48wj/hCIO2d5aFdfXnS0yg57/jxzDJBwkdOgeVnyyh19Iz1UqiysT4J1eeKwUuWEYln23ydtP7g3R1BnvnxqFPAnOMgOIop2dkXPfUh/9ZKV3ZQbZNactPD4ql5Qg9CxSBnIwzlj/tseQKWRstwNbf17neGwDFFWdm/8f+nDWt/WlKV3MUiAm3ci6xXMDSL5ubPXBg/gKEE7TsZVGUcrIbdXILcMngvGs7unvlPJh6oadeBDqiAviIZ/iyiUMdQZAuf/YBAY0VP1hcgInuWoKbx31AOjyTN2OOHrlthB3ny9JKHOAc8BMvqopikPldcwIQoFxTccKKIeI815GcwaKDLsMbCsxegrzXl8E0bpic/xffU9y1DCgeKZoF2PIY77RIn6kSRdBiGd8NtNwT74dyeFBMkYraPkudN26x9NPuBt4iCOAnBFaNSKVgKiZQruw22kM1fgBKG7cPYAxdHJ8M4V/jzBn2jEJg+jk/jjV4oMmMNOpKB5oVpVh7tK529Z+5vKZ0NSY2A4YdcT0x4BdkoNEDrpsTmekSTjvx9ZBiTHrm9M/n/hGmgpjz4WEjttRfAEy5DYH5vCK/9GuVPa4hoApFaNlrFD/n2PpKOw24iKujKhVIz41p1E0HwsCd/c17OA0H0RjZi1V/rjJLexUzpmXTMIMuzaOBbU4dxvQMgyvxJvR6DyF3BaHkaqT4P3FRYlm+zh8EEGgmkNqD1WRUubDW62VqLoH8UEelIpL7C8CguWWGGCAIDPma9bnh+7IJSt0Cn6ACER2mYk8dLsrN70RUVLiE0ig+08yPY9IOtuqHf/KYsT84BwhMcVq7t8q1WVjpJGNyXdtIPIjhAzabtrX03Itn29QO3TCixE9WpkHIOdAoGvqCrw1D3x9g9Px8u0yZZuulZuGy0veSY34KDSlhsO1zx2ZMrpDBzCHPB4niwApk6NevIvmBxU3+4yaewDvgEQDJ6Of5iRxjAIpp9UO8EzNY4blj4qh8SCSZTqbe/lShE6tNU9Y5IoWHeJxPcHF9KwYQD7lFcIpcscHrcfkHJfL2lL1zczKywEF7BwkjXEirgBcvNWayatqdTVT5oLbzTmED3EOYBSXFyb2VIYk3t0dOZWJdG1nP+W7Qfyeb8MSIyUGKEA57ptPxrPHKYGZPHsuBqQuVSrn0i8KJX+rlzAqo8AawchsJ26FckxTf5+joTcw+2y8c8bushpRYEbgrdr64ltEYPV2AbVgKXV3XACoD1gbs01CExbJALkuItjfYN3+6I8kbiTYmdzBLaNC+xu9z/eXcRQV1Lo8cJoSsKyWJPuTncu5vcmfMUAWmuwhjymK1rhYR8pQMXNQg9X+5ha5fEnap+LhUL1d5SURZz9rGdOWLhrMcMKSaU3LhOQ/6a6qSCwgzQxCW2gFs53fpvfWxhH+xDHdKRV6w29nQ6rNqd9by+zm1OpzYyJwvFyOkrVXQUwt4HaapnweCa7Tj2Mp/tT4YcY3Q/tk1czgkzlV5mpDrdp1spOYB8ionAwxujjdhj5y9qEHu0uc36PAKAYsKLaEoiwPnob0pdluPWdv4sNSlG8GWViI+x/Z4DkW/kSs2iE3ADFjg4TCvgCbX3v0Hz0KZkerrpzEIukAusidDs2g/w0zgmLnZXvVr5kkpwQTLZ0L6uaTHl0LVikIuNIVPmL3fOQJqIdfzymUN0zucIrDintBn6ICl/inj5zteISv5hEMGMqtHc2ghcFJvmH3ZhIZi34vqqTFCb9pltTYz582Y3dwYaHb9khdfve1YryzEwEKbI8qm62qv+NyllC+WxLLAJjz0ZaEF2aTn35qeFmkbP6LDYcbwqWxA0WKsteB7vy8bRHE4r8LhubWDc0pbe90XckSDDAkRej0TQlmWsWwaz18Tx2phykVvwuIRzf4kt9srT8N7gsMjMs0NLAAldabFf2tiMoaaxHcZSX51WPc1BrwApMxih227qTZkcgtkdK1h314XvZKUKh/XysWYnk1ST4kiBI1B9OlfTjB3WHzTAReFLofsGtikwpIXzQBc/gOjz2Thlj36WN0sxyf4RmAFtrYt64fwm+ThjbhlmUTZzebLl4yAkAqzJSfjPBZS2H/IvkkTUdVh0qdB6EuiHEjEil5lk9BTPzxmoW4Jx543hiyy4ASdYA2DNoprsR9iwGFwFG3F2vIROy4L5CZrl230+k733JwboSNBKngsaFPtqo+q3mFFSjC1k0kIAFmKihaYSwaSF7konmYHZWmchuaq15TpneA2ADSRvA07I7US0lTOOfKrgxhzRl0uJihcEZhhYWxObjvNTJ/5sR4Aa5wOQhGClGLb746cJhQ2E6Jie1hbGgWxUH7YSKETptrTeR/xfcMNk2WM12S0XElC9klR8O7jLYekEOZdscP0ypSdoCVZAoK+2ju2PHE869Q9rxCs9DVQco4BriiPbCjN/8tBjsah4IuboR5QbmbyDpcdXVxGMxvWKIjocBuKbjb+B4HvkunbG0wX0IFCjQKoNMFIKcJSJXtkP3EO+J16uh4img0LQlBAOYwBLupu5r1NALMo0g3xkd9b4f7KoCBWHeyk24FmYUCy/PGLv0xErOTyORp8TJ5nnc2k1dOVBTJok7iHye9dwxwRVP3c7eAS8pMmJYHGpzIHz6ii2WJm8HMTPAZdA4q+ugj3PNCL/N45kyglqvQV4f/+ryDDG5RPy5HVoV9FVuJcq2dxF9Y0heVoipV6q1LyfAeuMzbsUV+rsSBmCSV+1CdKlxy0T0Y6Om0X6701URm2Ml6DIQgJ/3KO6kwcMYRrmKsY7TfxWhSXZll+1PfyRXe9HS0t1IKTQMZL7ZqQ8D/o+en57Y9XAQ9C+kZYykNr0xOMxEwu2+Cppm69mQyTm3H7QX6kHvXF201r+KVAf354qypJC5OHSeBU47bM1bTaVmdVEWQ+9CcvvHdu8Ue5UndHM+EeukmR82voQpetZ7WJjyXs+tPS60nk09gymuORoHNtbm0VuvyigiEvOsyHiRBW7V6FyTCppLPEHvesan91SlEh1/QEunq+qgREFXByDwNKcAH5s8/RFg8hP4wcPmFqX0xXGSKY087bqRLsBZe52jThx0XLkhKQUWPvI18WQQS3g2Ra1pzQ1oNFKdfJJjyaH5tJH6w0/upJobwB8KZ5cIs9LnVGxfBaHXBfvLkNpab7dpU6TdcbBIc+A4bqXE/Xt8/xsGQOdoXra4Us5nDAM6v2BNBQaGMmgMfQQV+ikTteSHvyl8wUxULiYRIEKaiDxpBJnyf9OoqQdZVJ8ahqOvuwqq5mnDUAUzUr/Lvs1wLu2F+r4eZMfJPL4gV5mKLkITmozRnTvA7VABaxZmFRtkhvU5iH9RQ1z26ku7aABokvptx7RKZBVL6dveLKOzg0NC7HAxcg5kE1wuyJiEQLOpO0ma3AtWD2Q2Wmn2oPZeDYAwVyEpxuwDy7ivmdUDSL95ol3h2JByTMovOCgxZ1q4E5nwwa7+4WtDAse6bDdr27XgAi5Px3IWbyZ/vRiECKwOMeJSuIl8A4Ds0emI3SgKVVWVO5uyiEUET+ucEq0casA+DQyhzRc8j+Plo0pxKynB/t0uXod1FVV4fX1sC4kDfwFaUDGQ4p9HYgaMqIWX3OF/S8+vcR0JS0bDapWKJwAIIQiRUzvh5YwtzkjccbbrT9Ky/qt5X7MAGA0lzh43mDF9EB6lCGuO/aFCMhdOqNryvd73KdJNy3mxtT8AqgmG4xq7eE1jKu6rV0g8UGyMatzyIMjiOCf4lIJFzAfwDbIfC72TJ/TK+cGsLR8blpjlEILjD8Mxr7IffhbFhgo12CzXRQ2O8JqBJ70+t12385tSmFC8Or+U8svOaoGoojT1/EmjRMT7x2iTUZ7Ny02VGeMZTtGy029tGN1/9k7x3mFu63lYnaWjfJT1m1zpWO3HSXpGkFqVd/m3kDMv4X9rmLOpwEeu8r6TI6C2zUG+MT6v90OU3y5hKqLhpyFLGtkZhDmUg/W1JGSmA8N1TapR4Kny+P6+DuMadZ9+xBbv06nfOjMwkoTsjG0zFmNbvlxEjw+Pl5QYK+V8Qyb+nknZ0Nb/Ofi9+V0eoNtTrtD1/0wzUGGG5u2D/J1ouO/PjXFJVx6LurVnPOyFVbZx7s3ZSjSq+7YN3wzTbFbUvP8GBh7cKieJt56SIowQ2I577+UEXrxUKMFO+XaLLCALuiJWB2vUdpsT+kQ+adoeTfwOulXhd/KZ7ygjj6PhvGT1xzfT7hTwd6dzSB4xV70CesHC0dsg2VyujlMGBKjg5snbrHHX/LNj3SsoLGSX+bZNTDDCNTXh+dCVPlj4K8+hJ/kVddrbtZw26Hx5qYiv3oNNg5blHRSPtmojhZmBQAz8sLC9nAuWNSz1dIofFtlryEKklbdkhBCcx5dhj7pinXDNlCeatCeTCEjYCpZ3HRf5QzUcRR1Tdb3gwtYtpPdgMxmWfJGoZSu1EsCJbIhS16Ed97+8br4Ar1mB1GcnZVx/HPtJl4CgbHXrrDPwlE4od8deRQYLt9IlsvCqgesMmLAVxB+igH7WGTcY/e3lLHJ4rkBgh2p1QpUBRb/cSQsJCbosFDkalbJigimldVK7TIHKSq2w8mezku9hgw8fXJxGdXoL1ggma52kXzjP78l0d0zMwtTVlt0FqnRyGLPGEjmICzgSp7XPFlUr7AeMclQ4opqwBFInziM5F8oJJ8qeuckGOnAcZZOLl1+ZhGF17pfIuujipwFJL7ChIIB2vlo0IQZGTJPNa2YjNcGUw+a/gWYLkCp+bOGIYhWr08UIE709ZEHlUoEbumzgpJv1D0+hWYNEpj+laoZIK5weO2DFwLL6UBYNrXTm9YvvxeN9U9oKsB3zKBwzFFwDgid5ESMhy68xBnVa55sCZd+l5AnzT8etYjIwF/BGwEx1jjzFv32bk6EeJulESARh8RZ48o7rKw67UZpudPa15SDnL8AL8xMV2SC0D1P53p190zhCFkMmEiir2olwxcJppl/kLm6/0QSUQLNaxi1AC3Pg1CTosX2YQr73PjEIxIlg4mJ62vP7ZyoHE55B0SX9YrrrCPtNsrJEwtn6KOSt7nLT3n3DLJTPbLulcqQ1kETP6Huts29oP+JLEqRGWgnrqMD+mhCl1XCZifjgQ39AeudE8pyu2DqnYU3PyPbJhStq1HbP+VxgseWL+hQ+4w1okADlA9WqoaRuoS7IY77Cm40cJiE6FLomUMltT+xO3Upcv5dzSh9F57hodSBnMHukcH1kd9tqlpprBQ/Ij9E+wMQXrZG5PlzwYJ6jmRdnQtRj64wC/7vsDaaMFteBOUDR4ebRrNZJHhwlNEK9Bz3k7jqOV5KJpL74p2sQnd7vLE374Jz+G7H3RUbX17SobYOe9wKkL/Ja/zeiKExOBmPo0X29bURQMxJkN4ddbrHnOkn6+M1zTZHo0efsB23WSSsByfmye2ZuTEZ12J3Y8ffT6Fcv8XVfA/k+p+xJGreKHJRVUIBqfEIlRt987/QXkssXuvLkECSpVEBs+gE1meB6Xn1RWISG6sV3+KOVjiE9wGdRHS8rmTERRnk0mDNU/+kOQYN/6jdeq0IHeh9c6xlSNICo9OcX1MmAiEuvGay43xCZgxHeZqD7etZMigoJI5V2q7xDcXcPort7AEjLwWlEf4ouzy2iPa3lxpcJWdIcHjhLZf1zg/Kv3/yN1voOmCLrI1Fe0MuFbB0TFSUt+t4Wqe2Mj1o2KS0TFQPGRlFm26IvVP9OXKIQkjfueRtMPoqLfVgDhplKvWWJA673+52FgEEgm+HwEgzOjaTuBz639XtCTwaQL/DrCeRdXun0VU3HDmNmTkc6YrNR6tTVWnbqHwykSBswchFLnvouR0KRhDhZiTYYYNWdvXzY+61Jz5IBcTJavGXr9BcHdk/3tqaLbwCbfpwjxCFSUs1xfFcRzRfMAl+QYuCpsYGz9H01poc1LyzhXwmODmUSg/xFq/RosgYikz4Om/ni9QCcr28ZPISaKrY7O+CspM/s+sHtnA9o9WgFWhcBX2LDN2/AL5uB6UxL/RaBp7EI+JHGz6MeLfvSNJnBgI9THFdUwmg1AXb9pvd7ccLqRdmcHLRT1I2VuEAghBduBm7pHNrZIjb2UVrijpZPlGL68hr+SDlC31mdis0BjP4aZFEOcw+uB17y5u7WOnho60Vcy7gRr7BZ9z5zY1uIwo+tW1YKpuQpdR0Vi7AxKmaIa4jXTjUh7MRlNM0W/Ut/CSD7atFd4soMsX7QbcrUZZaWuN0KOVCL9E09UcJlX+esWK56mre/s6UO9ks0owQ+foaVopkuKG+HZYbE1L1e0VwY2J53aCpwC77HqtpyNtoIlBVzOPtFvzBpDV9TjiP3CcTTGqLKh+m7urHvtHSB/+cGuRk4SsTma9sPCVJ19UPvaAv5WB8u57lNeUewwKpXmmKm5XZV91+FqCCT6nVrrrOgXfYmGFlVjqsSn3/yufkGIdtmdD0yVBcYFR3hDx43e3E4iuiEtP3Me9gcsBqveQdKojKR//qD2nEDY0IktMgFvH+SqVWi9mAorym92NEGbY8MeDjp553MiTXCRSASPt+Ga5q7pB9vwFQCTpaoevx0yEfrq9rMs3eU6wclBMJ9Ve8m6QuLYZ58J41YG3jW/khW92h6M/vbFIUPuopZ6VVtpciesU74Ef7ic8iSymDohGeUn4ubT0vRsXmbsjaJaYhL8f+8I5EiD5l680MJbxX/4GYrOg4iPQqpKp0qddSu/HKtznHeVyxgTwhfEORMCwnaqetVSzvidaWN9P+fXtGXfEP9cTdwx2gKVfDdICq7hecgRhIs0qlCt6+5pGlCc6kWoplHa/KjP+FJdXBU/IDoKMxRjFhSYkggIkhvRKiN/b2ud8URPF+lB87AGAwyMjr/Wju2Uj5IrppXZWjI3d14BdKE2fhALyQPmHqqA+AXd2LwvRHcBq4mhOQ4oNRWH7wpzc6Pggfcbv9kqhLxrJKEaJqA6Rxi+TDNOJstd5DoRVCDjmVspCVyHJsFEWPg9+NA8l1e4X2PDvOd5MPZAGw6LRhWqeZoSQcPf9/dGJYAyzCmttlRnx0BfrKQ/G9i5DVJft9fuJwMi3OD/0Dv1bRoxcXAyZ0wMJ6rwk9RjRTF4ZK8JviCCNuVt/BqQYiphOzWCpnbwOZt6qXuiAabQWrS4mNXQ7cEErXR/yJcbdFp5nWE1bPBjD0fmG3ovMxmOq5blpcOs0DtNQpci1t+9DKERWAO53IVV/S4yhMklvIp0j0FIQgwjdUptqmoMYGVWSI5YkTKLHZdXRDv9zs+HdFZt1QVcdlGOgATro3fg6ticCrDQKUJC7bYX50wdvetilEwVenHhlr85HMLRLTD6nDXWId4ORLwwe5IXiOhpuZTVTv+xdkTxJofqeCRM/jcZqQlU0gFVTlYlfwMi6HKR2YG4fQ8TOtgR+yV+BMZb6L5OwDc/28/xdfD7GXFaVA2ZSObiIxBwT2Zev637EuvpM6rxcogdM4FJFa0ZhF7nrqtNsqWg5M7hZMORpjd4szf/wS+Ahs1shY54Ct5J1dOBO4sdEtSnRc0P9PhgyOCt6aQW98R22DpAcNTDe72AHK40vutKTPfpokghRPuGvz0dulBPKfC3O4KVDCyWrJGO7Ikdu06A0keKlVfi0tGcpO0NhzXEh75NHyMysAMV19fq7//sPC0For1k2uFEvq8lwrMAfmP7afR69U2RqaILHe7glpc8HmVf87Qb2ohsw+Di9U+ePdHLecS66MhB/0OwdcXR5WBcWTZLGq/kiAaT+bzkjR8GIpWdv6pfIgQ+Q0xdiKvo+gNB7/Nf9knNJGxnh7LeZEFtMn517tNc74PPS0M4K3I6HHZqNPA+VZcBc/g5a2ARyqKrJ4Z3krsuA+VOJJz2KJpBMgCCWFln3u7k6/q3DETAubKG/pt3ObaNT0NI0Qug90L2ip5dHnZJUjPTvK5E96aX/4mRU2u8n8kh6MKbY7ANBro3huF06U+JvfyELQP25oIaj+n0ITQ4KT9rXZD4EtBIOj95fYNldDN3io/VMIvWNj9P/b95WEMq8UAVfG2XG0N6fSYdnBEC7sUEbatbDICH9qA8TTuW9kEt9DlFOZFP7bdfYLa/khSY8W5K/AkIIAPXtMvyVKyESjKx9nfragssxC0jFMVY94d8lOAwRocdS/l/P43cBGa3IqDa0ihGPcmwS8O8Vj16Uy55rOrnN0shhRJZdW8I7F0Q0KeHc35GFo4aJOFc25gNafBu1V/VO0qS4Qkb6wjRrnlepUWjtYyaDABZceValuOMtoDdeIITWKOJiwGPpB12lQgwkmXh9M86podb0D117mNQ8ElluFvbaS8RTKQ6lyj88dUwoJU/ofOeubhoXWBF8eNumkVJu+As3ED/AvLlrV91UowIWI2m8HBG+a3k247ZKAGYsOcWe7fTWqL8eqwM5ZFuoXbeugPKuMOAtOsN+4dSwkhrSAlfGNTzFwEmCNWtzpa9CgPbYNcmoHtO8pj8qMvlGET6nrkJoQ2lp5MEUV1E2A4ZH70JUlCLXvqTIpZlzyxdr5p/GZiD1/BuFOGbyfFzhuxaC/l3lC2jjt6GNRBa06AqqPlYtdA7kiidYa5Qi0/XpXiMDyMXNOj3kmJEaXufW0GO8+DF8OoMULX1vvjCePKNis4AmxQKLCF+cjf/wyilCJvuiyLVPSdsuRTPZ0AhpdDF/1uFmDwG7iP3qYwNsKzqd3sYdnMolCOuQOIHWy1eQpWhuV+jmSeAC5zCc0/KsOIXkZPdiw8vtB33jEBpezpGDBP4JLY2wH1J7Fzp8y8RICqVd25mDT2tDb/L1mh4fv9TOfDH5dTeATqu+diOZi+/sIt18hiTovPsVQVaqXLPRx/4R/uH/86tBMcF+WBkThKLfblcVCIECc8DgNRVX97KdrsCeIK+CvJZMfwrftcDZDZyp7G8HeKl7bPYnTKX88dXAwAyz66O2chkPDHy/2K2XcT/61XnlAKgPwtI8yP9Vu45yh55KHhJu93mL4nfo8szp/IyDjmFHtSMqqoWsj8WaVhbjXgzZxcqZcyOe7pUK6aXF/Y32LnBOt0WN28UmHRiOpL525C63I2JQPX8vvOU0fz2ij74OeJ1Apgu3JRObfdo9xGDpp7cv3TdULEfNS6Gu3EJu7drBsBsogUqUc6wAUW3ux0/1hLVI/JEKJrAGm8g72C2aJSsGAsKFW4CBvBXVlNIKa5r7HvT1BeGYBfxTR1vhNlFFNN8WQYwr39yT/13XzRGiF2IsfE8HcN0+lN1zN/OnzekVBKkFY11GgrK5CLxrE/2HCEMwQb9yOuP2rTXiZzTEETp/ismFGcTWmbM9G1Sn2D/x3G74uWYZY4rgKB2Zo2bTKS6QnM5x1Yee66Y1L7K44AyiY5K2MH5wrTwxMFh+S8LzNQ25z6sunWZyiRwFIIvSnioltUXNiOr+XMZ6O9h9HcHxZJkfF0tUm6QkU7iJ2ozXARitiL86aqVsMOpmvdIBROhUoanPtCjgft8up3hAaKpw9Qs9MzYtBA2ijHXotzarkV3zKEK0dFFQUwT74NgCmGGuSCEDmFCezXPC9BhyGhmzNa6rQeQQz+r9CmGUZjIQEPsHwe86oCOQhWaHERsv5ia9rZvJ//7UXO7B329YUkLLAiqpLRsVV5XpcfdawlJqi/BVcCqO6dr9YJTFFRMVGhfUbB9YWNvYPY6RyaydAFYq1YIBQxuNAGfYWLMAHtt2XRHoOKCLz+qf5HCVBDOPOktQ3SdJBfxUkaiD585bmTzMwU3oeXUHZ55EC99Kz9kk4ZXMIENwVVpqW2JmGIcUiutIMj2KkpjE2QD+dIZUCxcX57kH7hiuUPnKCTdaw4KN95XPeFRvMcvo5L8LexWqvaJPECzwXCs/4XPAlSMpWUzBBjK3pEnkbueMkMJQrYcnXf7PjbAoJra1VLX4YuscQLpaeYWbT+h24hCFrfcHjxxx6WTSe4AGY/KHRZCQKqTuFWt0D8RmGWmvXSdg1ptIefYPshuIVZT7CV4Ny67fvjJugy0TNYHqoCO45CB88kxrvIsih19DqjD0UqiJsTFPcGW3P/ULOG3nb8CjpgVTIoa5nO9ZYEX4uEHu8hLXrJPjV1lTQ5xTdZVagg+Wj8V0EE4yPsTc345KM6lVXqLiHtm+G6edC4GVEiPgd98g+twSYm18gCsPnjqlLcFm9e72CLJbYD+ocIZOxuVjrX6IKh9fh7WqdIZ66x9PWkDGOVVGkx7jM76Ywe16DX9ng205kg5eq+R2q2MguTJxYv/wWHliD9mOYpzZKNXYC3Wr4iBGkm54hBwkPzFhiX/VBHdVH/KJ1ZIMOHxIN6arKdxrm6EBsgwDt0mPe0MX1HRUMq8ctcmysU6xX0bzM1J07kAvq33jw1q0Pq2cyMWme8F7aVkfhzZEFdyi8fVBQav0YZqvAjZ83WKH726rBx5Bn7GHFthR6H4lFsltu+jWmsAibJ3kpWMG/QbncU7n9skIBL0MuXXtj9sJg+4Dl0XhKJ1LcrMydaIgyrgZgScP4k8YQvcsBmD26X1iYXKLzMYfZn2IfRjznsrJ1e5cnl/3a5xiNoI6n1x1U36FWckJbyx+hiSZg0QqAqeeSvzFYMlZ2REnO/a6yoQhu7PdHMYEPFIvfyGeyCU8e7rpju4DrlOhszj9rOIpNsvCkuD+TLyf5J7D/wsPkBpscFVI1q7oUSU9bN30vH5AqnO7bsf+9rGhtVjOJQ32H9hHSAzR2ape4L0Cz4WxaySm4jvuGXwkFp5NMMLrgZ8LdA+5uLuyxO5SMOmJNDBcbbLefv7z6LyxBwltnfQLd7qqpG1MmNcoLUcx73BkNF/xpdS0cKd6G646ntChXSeTZJJTFYGw39T7fqXDPKoG2cF7/ZcTvME42gXLVjTqzAER1Rt5m7GYsh0X0+XgOeW9MJqE5j/rpGzY6vUu6ACcCTzDMdZHiWELpDnvgE1hmztLcSYz0MtNyUBLqvylUJJnJu79Sku9NMHCTkgqozTnhMFfduV2NLCSYvAI5HUvQp1h/M02vKFD6eosIkGTg6mujUo1W8hy5Knf/erkBQC9LzNqPAYCgR+hczgevta88NNqSlBZryq9QNeUK7RpbvHjoNhUKAAeNYH55LeTW36KyFaXdAkBvyNP9xmRuBokPi2OhqDby6IZ61mwfzG+GmACkS+G80A4WGON5izgJWeeDK91jzusfOi0RmEsVJXwbVUr8u/J2LCQaMnHhi+wJTEPN9tS2b6W4GRGCNmtjAMgPsP357nOeD3H2tcDAPu5xQBKMHf/j4ZhXlkvvy3YmBJsjsd4pSOlfPZCnw5JvzxEXM5JIc+E2mU4CgB0mdJnH4NEsCHYNeVRDXFNuyZUE4nuvaJf1h+11AWLdAZ72D9XNRcxfb2+XHZN/SN48U7yl+sNZhg5gn/PD8wkBtnRj1zBUPIWnoMP6yGUEEzuT+VaX3x2jEIZAZsr3rs9wCfY1Ss0EdIFFzBbyruUup4EPanbSYew5tf16/ZWVup5iykttuqL4xoC/jdZWsAZeSfDSd3fP9kbyAFYXkf0Q2lmxaTkKRZrCo9XCoiUG4yP1URJ5G7+HSOhhJp0Anz0N07QZtyFUye6rcgiOFbtyoO1lkuV0iQ602MTyFK9xLqNHtNy4cJaTO6hjtiwNynVc34ZA6H7k8ai6S6eF6jIG0xJx+JfP97lzuCZr8vU5SIzImaNpiQhyvDbz23//PJcOk7hD4iIvJzfIgOGIR6ZPEJpWHZQoacbF+omeHw8aWHaNOfaIyGeG4lEryMfhtNmWh4RAIpn8dLs7ZE2eTVDwK++xDoSUgh47WDmKlZ/k6OosEUoQjk7Q+Kp7OxwgMFShAv6z4pTW8loVj2+qXLQ0T3hmIue8qHy1o/HXjm089m71t6mrrUyDftqMYtmfvQXKDlZ+K1HR/FkqPSqcjGlcPPIwbMw3wIFKBdVMJ4pFLt+oOIkWZMw8pkoYZ3byw4LmAF+7BdicGXFcb5PWtDw5XNNVc6eB9dv0rAEpgr5J+bLr010bpfGw+IkRoxDbkDFmQdEQUSElP5bViLo1ur/23KN0jEwl+rGC6AUMKxHcv+T9F1Ktpn8jSSrKxJnVkK8UD/tH5DN6nXB8mjUdFU539e9ywLtLYCwmHYVEVqnFmdubduaSd1ivIo4pTsX+mJcOAkrR1D60RIoocCBIdwJhCBM1rOE2XSlPo0U+khALvw+zfxYzwzd4roWlLJkZheFRR8QB8v4USwmAcDswUZ2P/7v7Xa51Fs7orYebYyww4YW5869Y/c6Kq2eTR9HLSjYuChTkXaDygoo8nz/yJ0KzfX8oowaNAwz8HvQdlLU9V9hjqYMURyYvPzZ60G0itmUdZwB+sY6rUkMAZZtWStbDFmnk/dQorhwr3121XQWffrK3as0g29ASwxbsZ3dZAq/96b7/XWckbjmo8+jwdE680DzoEUUivnBgowMuBQxHXoGyp+w/cSGY88rWtmwoyNNIvChs/QsZRnbdV7y8x7t2RkliJV/j8e6qfctrTsMV22zoqgQuTSNFh7U7p/Q49L0kygXNnEYXCBDgi5BeNWxu7VjULcUHI+lGj+OTCEATzWrDmaynq3wT9IAejtvh3esCu6sEu9JOsXxMDpqxm4Tzl+pt2Wa5Bq3TM5TKH4N7KLir8FGIPA569+uJ1VEL3fW8Jyigz/nEUjAVYrdCWq2MnS4hQVgcvXq9aF7Xke/k++rAtIQqckPNwjKrV2t7HCOrA1ps88Y5Rw1Zp+9itnB71j8tNiQc7mV1kUCQXkoi5fOsq1uC6hUPUL7Z69NAM6lg0c/aeiifHoi35v+pVBh7CDM1XfvYpiK5JIbIQFHafmnhHfRTnMagKcjdE7zzgtxkTPKVrObTySTT51g9bB5ro/dzn/sB24fNM2LGJuRQsmC49PLi1jTRfZaLpo8Txxxczij5Pl2vur+S1wQW3W5qyVcIUySZHtFDQHv+EYDoZG1T1J7D91vEIV8dHzUBzW1UyuxRbP+M/CM/vsas6RzmS5traXnQ0Jzv9hYXxKHcs15TQCP744XsLjzFjILYURXFnhM+nnV0iO6nwls9TR4tlz1J9/NvE8FGg5mgpZA4htS05AK0NnU2gxuqf2vjCyWlm3ypKvaX4vxh8Um1MHGB2NTeAFhbDyGm+5w2zqJAWxVlj6dVePb5yR+aMhuz05YubCQJ0BOtoYQ6PoDoW5fCwCtXj5SHvCgL/3B5z2mcXWaRTf8/GsFAfX/ntdWZWFc2xg8MJeenwZ4dZUToce43If4zVb1ex3BMAWGhgkPwR5EgktZhW3Yi+nsnZTUr9FYI160YhAraB0zMV+ouHz6hYm25/ETDM0MTmcypoGgZISSkfwYAQaHGY45yZ91K4A4Mm4fnbMk8GTc4orypT3NLBqAxYdcY/qCH82PpIkmVOEHi1NoYaUymuImLLcib5pmd2MHTB3JR+4rLdRc3gtQ9zeFdciciRiWviu3HkqaLSxJeI2rgc7OKQslItumACQow89elXmi4P3gTZeCauvMH5nF4VrBcLjjwGD+KlKqe/RWIEgT2wGqAgSuL6b+RTTPnQZzxZ5y5HQJkEEKJp5NfoB8hJBM8qn6xbOFtyzBjVBrwSS1zCJR3lEc9ODQ5Wu/xct9/2Q6qLHnmNx6XwZus/i8rEd6UsVxGtoDrm+Br0L5oUojlwdcqyVV4PIMsR60JhZwJtgX7izQWj+GOeF9DA8Wexdmv6DWjgR8LEBp9YuPAM8tJDu3uCumNqHnF2ATYX/tuVO55OgQuiUhmDmJbF9jJyifBRtxOVI9DCNLUY71IXZYTuiYcnILQ/XHuVJ8aHDStL0N+3eYNvXwHi2vEiTPnBqzsC4TsPnFVnYY042j5i7C11AVdBZ1pGSa52jM9dIL119rry0mgGxFzI8xPs+7bmMfYKh37A4HtA081olG1m9S4Zch2hoNCGVvVhd6UL7C2d5hKIBHoB+Uxarq/4aQXhh7IWjSj+ca7Vhqb4+ZwY3nHXh2S9JH4XZxQojbe/eINxYlozTYtT2rpU/xbj+W2hXjFQ+z+dQ8wh9751MP0UpjutQdxz3/FJYAEG5BF400JXWCBs7KrCRf/l+F+d9EuwVk6thOPDB+HNS9iWlLmDgXvY6K0vgiyoeA3An+jWufdAG1suUMBuJT+/w0FNJZbObUT8c5q5WtQxASQF6E+/u8UwVBs1eo8jTamCrcdhZJlADJbqn3crcDHQlBQNGq7btcGKiJXW6q0cn3F0xzf+k1JJS2testB3rx15ZPTDXm8QV5XE2qxBOdM2n6t5YbxyNOmEdsHx+hMp+y9pWkcgw1NikeXuafJvzcjaNwE1Ad6gG79S68aO7jWpKgBETYLmV4ONHhBk7Be8tjf2WVvWMDQvQdOnk448yeMv1tQKU1xev0L171e/qxkMZbmkfKnd29XRCK2hgNNJhwt1qiYWZGKz7Di6K3fGDT7DO2YQ7WU33svE/WKGbWQEvzUV2w+VNYDocI4yxQ6i3i4zU2TjmjCwu5Pk+Ja9HSwLpEoUswq3tFJ1jimthgMXd7KjSl6Qd0K+vxWT8G4/+xITHsWDGSfQTSdFQth5uVVfa8wrkDZHTGVgpJys2ik+3I0dSf6TNo6A/sVptyY/kx1hdAWKPI6t/xj6s+fPMU3hg1vkEB0RRHq/tCy3KUUhzU/d0JKxTyjvUms5iy1GbOFco0NA4t83SK9sBmtLWm4kOLLflyxqgQYP08iyXwYXzKnlQ6VTipuaspSJ9g5H5Lu3eLMnPKbhcwuEg0VZ80ppJWjUnhS3rL35erzysp+fJhxsUs86m28/UwW+IgrS5Y0zWaxlFJ8xML5wk8sg1ragF+eNajyI0Y4mwStxt1RZH2BjaAhvu+SnNNIK88thEgZEsoHv+ii+OMmXJL7dnAiINVDz3tCnqDgpQX9OguNGgZj3axcjq1UgxDw785yNIpqNiLgv57399jVmJ0/RStNswaFIs6FtnkilFZldxj6m562jL4p5g3Y9XCiXRJX6nq2PGJFifFR7EyPG4jDMnBM4t+O8ZpEp3th7TCxEw+ZG4afHl4sNFaqxyLh6+979tt0Aq9BrqI+CS2U7HJoKiGmyVU1lFa3/0O5mNC1bzRgNMy+GXyifLwJP7FwUSUmxmVRpn+gnXWoIuswPutsiciurvN6lsMG7yqEc2Y5ZI3jrPgPq0xEKPZpF7teJa0TQn8BQL4Th+hjv2ByfwKookyXEmj0d1KMcsmfKaeKK3cZZubiYqmSCrnGpYTwgPk5itKucVtjViuswQsDR6TuyGSIHYvlz7wkLg1Rr0K9kV1o8RgABlhbLrN74cVWJW6TnfXN0q12JFMpUbEa8t1+j440FA+17o8qa8PQ9igkctVROVIfB3jU5vtGm5pYYHYSDvU2TEc15pIz19ka1q6c/7WXfF8+POkApdOw7nn7Kqz6V4tru7NXgnA/u0g6+fPRT3hp/QrDQwMsjwNCZxdWrR6pgCBDJNc7/KAlwC0UZ4yWQs0KsuwbbOgcTxQPK54wiXr7s+221hzZ8RVxfoRUKM3e4lpxHC83JllxlrV760tl06f7/65qhE1jhMfivAUXIXfRMe3uY/G2TpWYzDrw5Cm5cS062Bx9lhHq9gtJp8xZwAtSdSuW/Kd7+orEAiswA76N8ezmVGYgNaYlQ/xk930LAWAtKVBC4U6R08L45IohB1kFia7XJs0TcaT2zBZoLFuOGu4iJaoAnfjL3uS6gnRH7G7A+aT6ETlmkYUfgrBuaSLLDJfhPJe01PfN0oqBTeQURasl3N8BZiQSgdr0aDv3hPTiog4NSyfAUyy98WP7dnTDWQTY+Qwzgk1uxwRqHl5MpC/84Cuw1TXfRlgJrwPop10kCHjmffnFdxCe2J3R3J5j+3H/sZn3IUu3Suy+I+dAOMWvzwExNR3RRPVelZAhtarKlXPWNjPRIVP4JsAFSRXs3o/fSYAPaV/zP8q6DltH47/rYhCLdy/LrpOsbaLf09eACcClJosNefetNElkSFSuCgeY7oTAAl+8Y2zOXJb/bgEDpoDXfQqc6lnlBr/WsmVznkBS1M7ufiqpxvKXjwvR4WxLbh5NbMNy8LsnX4UiuAi8XonbSUcVZKQOWBYUecSOMj6jMG8gHu7WNreBHY90lV7FocDprSrSbexkAtMW9KlXcnrOyLnZdodGYdxz8aw71HztIqLhRdCOB6NyzHPoS2hDy6wLk0I5Jr2t+U0A+A7EsgSn/Ih03A5CspHnVF4MOic+Lck3m61Um+GHDEe4DrHBhmgtDlRQl1XJ/V/VumCHtUDDcZCkgjVMBOmVOGYW0Rcdi1ahdjhBcFlfjA+5cRjBop1aNDvdrf7CxkLVgxiCxhRctW8wczM8+kVmIrGtkaHGlr8y2D098HXE23r7fnJFUU68zyeyM265igNOGPzFG0dIgUDWN6S3ZcfMERJdWVvpGhVEHXNLeWqHiTcF3wOt0FbJY4XHEpmkoG9MQPJJ4ueQ01+MB+SR0rCSGzlE8zod19q75LlLWgzogpnJoD4gPxUYcX+Gpc5Ly4nk+Zm8LDXcNR7SNVxLh6NAcx8ekjb/AC7ADlRnfuHaHJaBodZr7RBX9FLTvocY6kY8bavdAkQicE9bbwGLkZu6whTCJ56lOvM39ijehpTOFqR3V53nQx4hfOvwRPU2y2w7UU8yiRbcyaX6jGJ9CRvl9ybV1tebTp5MMuMnwLcx/lven0w9T0atJuiUE2WtYGiVMaP3EchABl5AsyaCpu/BKAWDFvU2vaCL2/fJBKCKLjxG6xzT4Mh4wHhH3/EqsGSoQAHu2wbHmXHj2LvoW19GXDa2oyeKRwGG1PU+S7mE/S+UmjHiDF1oqJ0R5QsdjAZYN1MzpNX5YDqWYfhfdjAXyFQaVyGKkp1oEGTR8MK6jaGfRDFd41u2Ex8ac8jKPYu3pXsk8gu+m9tr1RVzTTuDsACW4S1h32yFHX7qpXSmA0QVEcR8W9j2Juu0pcYqTmdis88VgT3gq7iYue5Hx/3K6hFQa9rZrNSDcjaSQlNn4LSqs20bypnKqpzvnnxjMdz5StbzvoAJKgVZa4DLCVoJW765/KyTF4s4YztmAT1c0pTmKJHTpa106FegDo8p2zD6uOnwpYi0vJlRMDe9wPT6964UfAf6lq3qWypUOx9q6BbKEYt7K3gWMXDNN6wAm1fNnSOnZ4JkbPq7jLQrl0wL1V7QwO/sXneKGfTgUL28I5iPVG9dA2gS7Ki005JUR7Vmw4gX4TJvy1WS74cIXD08LCF5obqcZwamuoZ+FPMJEck0TLHjyH1baPr55/Cy0ptDfRJ7d89pbP48tLMHG5dO11Z8xSSpPGQSgXDWmpsNsmm+MvxJjMCi7OFDHxxpmTtjgnOCq+c7Fi1DybfhAntviKccz+sj+OPKPYOKeYYPLvq6MpUx/chSvBccg9dfbeqetQNCs3eiCFZTU1mrDido/mib64STMgsa+IKLk9PyxGGbVSQB9GsHto6f5prAFIbRDSItDedz3t5+Nn69FFS0nEfmkF7hKBmNVce5xv65USKGBoHYxJyutSGnRIq7vMDsAMvirOEJOzNi5Kt7fypuSU2c2Npo6UH5jMOkePH0TwgpammO3Fb2FX6f11309z/mqRmQ949HHRj/wMzKNx95M9pwKf+UQkMEwisL3YVotvHhCv4y00Ui0Ql8dR7tGqFcSdYtmoAOuAodkBNs4PZSjAAF7S/szwLddFMdCyB/dWPgFUiUE+WmUUCjYrKfJLQfNNpQ4NKaF57w7Kp/isZVwQPUJyjJavN3fQNKU+F74jVBJYQEcEdw0Niinyea0l9PJ1/AcTm/LI91RZjDvLI81pnat7RKU2P4/TnIAa3hIEfeg4iGQ+wTDlURK6YjNpN5s5VkQW9w7sDYKU4XmjyZsCQLxztqd4SDQvLyuPDhURAJXKfR1c7tq3mRu4usFHPqz7HgS0X7kNxiWWR3fb3uVwbgKpmgLYkwKrXKt09COw4MjhxeZlDXKy7nNLHXAIKPtferWQnZLboonQXK81x+BB3oUidBehK1swSXxVbscj/LsfONu/xYEXYPM3aMqIYd+2hAnFvDHbdrJLhGEd3sG5PyxqhzejhQJo9wauFK3xmPYqxB99J8zYU9/yzrEZNzzbvPoR9vUlE3Ha4zspVDzHHffPZMJ1VLZkKqGCf8ZqupqMt6T+NRPfmPm2xeDgvzMrRJEL4/zzlu7Z35smvzbgeC25VP2CUrZkRxEi15A0769ojdO1d7C9OG+swj1ROMM3NgKdeBADoRMeJkRZcZ1FbQu6C0BS9NNSaoxtFzYT4lX7+PQ7BKa84yrN+ujVVef+SgnEie1G0N+eOtbZF/UU+wkeerWjloYqFiqo0vBnmxh+TwNMo9I/8lfU2XTCT0K4OoWE08ipyNHjxHvfhY6qa3x4HzdQ8+jkiO5+j91YkihS5memfpFREHP/2veN5XcRue2zCVuAub8V6vDlOvyP+PBm+owyRhMmng5wwGGIXsOkQekXrXpE/6dFjkHwwoFoj5bIFiqp+4wHpSWRbv2xGrRpd2c87FzMP6Hfj/3LWIBqFiNOAxBw+AAP1XqUBszdZhzOSQrQS4Ein4fyV7MaGsB0VsMF4bPb4lx/foTGQRJv45LpoxDd84xCawHaX7jpXUrOdkFxx2oUvY2xqpgIvcVufwd+zAnaaVTnEyDXD7S/o/xrrk4mgTjXhcjj5Rzrbr23NmuZQvpdNzny5MCR9bwvIRIqzOZZLsstZSCDYa56JTvzxgBs20dYTtTUbe21uljlWqGfSh2bYAzOpf6UguK30ZxNXgLHs6Y6urtxFA5iLYvlue5mDONW0MOtQjhqr8fRbCkYneiDkvzHkQVT4F9v9vxh2SIGPBH8bZb8ugo/BSgXojeSdNXbBAIDsB6DUNSXnwlu/bFLaCqSbvu4+YLplwO1JbtrMf9ZUfsxerAZjB7E/zl3qwgK27FswemUmSM4i37YAVhQSocuV8AcDI/CSeCDNPavESshDQ8A/lVIrAJAMdP/rHXouiNU8RL/TIvfQiuZEb6dkIKMGGOW5kT8vO8pivWnT4v7qmwuJo52AS1r/RyQ2g/7c9ZJgmMIzf0GvJJRfMNu1utRNuLWHOm9JIMcJK3qiDtVpGCDP45W1oTTMUnMC91kYhP0GHjhCW8V38xhjHgFFBfuWMsmSQ9MvNqKXiqtUhDAkIy0PW7YSKaKUv6zctAiIk+Jt17kG6LpNVOeMvJnlVBaJSkKe0HTJJUMvf8R2zna35/yh2wNlWLzIP3BJR5aRNxkV94ICOlycI1/JYRZtzvWMNoIpQrdNvyBuBydhSwhRwPo079Xk/XQZpbhzN/KK4NbdJQV0JIMP+Y5UBIM3TTYlFGYVjcvA5yVozkimco91Fx/eo+ydgAx1gMezTh+bYxCtXPYkMoPdtaElRusxlmdSV9zgF4Np+iylun3LVxCycAFxGCFsmARf6y4I6zXY0tx81aQyalr3/ih+ZjxGNWdhItgNLdEZ/BOIJpPoAveh2bKbEFxU/M0+4xqDo3Ox8MnNn8Lmv15NJigSvJV+y2W/ZogEXNiv0/nuFzZGr0pKujOShzcdkEVlMw8mNZXZCbtM9V+mfawtLxCTvo+enFWhJcFv8LVTFycDjPGBXRQKNN+z68HJtYdpH++g5WdhQpCO+DE7Qdu6TmZgtetrpU2ZlgpslOx+4hb3aXaqbdc92LCh51er8vm1GQ9uWD9+fAPRV50ixhgc5zi2Jsg1xQVxzlaELRWJ5biyF+eCwNV0oFnTbBHr3Glm9qlGVOpoOsQC8hlNG88fxeAekkCGnHFn6i5WzyO7ShDYbZ2KM4eqndyy01v+6TFhmkxgc0dndt7EzRCcEfBxSaWZwcev6MDZcuvSZQ9CNSd4Tx25TY6UAbrhikuP1vNFfPdZhCG1pe6vx4D6Ez3zIb0zDa42FPpxWvIpEeXb7YTcfZOahSpSYaWLH/vq0F3U1KO7ZxliZpoMBBYJs91IE0bOkrPNQ/USYY0qKCO3CU+AFbOYxzKWBkIglrX34377BZ18MKQCv1KWfIHEeguSpvrNH5RQOD4LeiH2gdx1MOAKphlL41F4RpxaU4dy8xERFgqoyICQq9XmQ8WJSokwqvhQM0fLtsvyCO2PAkJ3BZg5IqoR5q/GdTLgOWPFR53Nqw9Ma5vBzZcQ4+iZgetmKg5ZIn+/7Jbi+VlViXuD9CaAUtdEmnwWTS7wZWuskVvc/SDaaKV+Jz6HrZTHo3UrAu0IZDBkXWmL+mTTjdTb1A+MdhKkY/hvFNwXj1FzUngsN58u/kTdJ3Xi0hy7efR6faAOi4SKGaiOty8lxDFkiD9wq2GW1EZEsoWGw/WzxXhWDzYY8CC7WuLFHc+x19jhH+FiLXwDIARRtnkJPF2BUPZ9+grZ3tjqAWhhN3h74w5pooRQUNATy05A9HDLnILGSCtfESoSilqtqAIQ/TV2t3KhOc+teDf5t+DqZDdB8Ob9YXyklrSO73pR0QAxPvQj57c6FIR5dOciqeHZ2LRABMROo8Jk8V6JFewCL8TCd/A5MSbXLky1cW7mXobqgeEXdFDoEydKo5oCuyn+2JYI/7pIGFAzErlHZ5hOaiT17HC3zp2HpJwsIAb4/oIoZ8x8ak43Yp83Ermq55Dg8HxKGHXbXs47sh0PzQELTGFsf5eO3lYAuJjMneoYWk8W/3tW2WLntEKBZEW4hOFgo8K58Rj0vk5KLyezu1d8SO/JcuxpOJqFUM2sxBmbQ/9qqwb90R0WulpR/Ju84bQ5/fTh7po/pbBb7AQaYNdK3fatD3K4TLHAaa66MQzp/+ZGyCjzo5OXRzJ8UHyg/YpNHvvlOpwQIOjakpLHwGV4WsLDPjEIqG23ily3LL0dlkYQxj3Xx0ApCo35zYGoGOtIclYS83MnI5TwVdQ+Hg453WFQN694DaqhGaL/dm0KncXYqXLi5polgT4DOrzD4oSVhrkh8GW2PaXjOFDCLPcn4RQj8dRGIJuV81LxMPZ0UL6zpkaebhbFBxcRJe38UiTbUPDjFWk2jBqzrBvXcKmgdDcmRyJhIpuq+3DQY464AlY42z2EM0yIK0I6b+VgpanMfpdWo7OxKY8RM5tSJv340/qD8SxrYsybMuUkF8fHj7HcvxEPC5YYrH4LW1YKg6QaeFZLvPbrHZHvi4OXLKkN8cGQO8019OKqcv6QnBlj01e7qS5evoGm53rv+VmDxxCXDiOrDg+IaPeMPrn8TJ1oReXYI3yb+4HQbikxP5TQXHk4YXPUv95+KmkxGsRgTwP71YiMpqNXp0loHZeXRp9i3euKrVtxMM0e6XAoACwNtcc6sOuhZVb1htBLudzahrDFt5GkdlwHjZl5y0LbvSHwII+qYeDwRKTTzyXaInHIM+8rc5TrjUlPRVwB5LKFpQnV8e7vLv7T7V/iJTW9h9TnRtNCSGcofBWYm5P7wZcAq3AFamEW/GMbo27ldz0plt5HI53ddWkn9IuCZY+Iy0MATUh3YenRTbVgdLYtu893SuN6EL4e9V4NhlzUjI8nOS6B99ecyC1Ot8sDahQpWHbmt2YvWGyL3S9tEVLKYs+LnghBmmSl2uPWfqPobPwBHNLW21LUjfZb7jfLMTsMp3icGO1npK/rCsUgdBVKVg0Ys+/WKuTmVJoC8Oe5h3PK1TQhbpZ2ytP9nlutQPtLAEt+CVT90DfVkn7lHLOX8AfS6HLzfHeAhu1alnl19RHKV1LI0G7RPzYgVaSpX7th9f06uo2WpxjL86i/2uzK2qj/ClHbGDyQr3F9/axmq4kJ7zZFVXVVwfiFr5bhUGVZeQJHKFAcsnqPKsb8vHyB9SpFpT9U1U7D4aS9vYgqajxhC+hOkolJV2dKAxysCkWBo3SPiPUrSQYZxOWwWCoQzbV0oeaDEcgUtqI3nq9TSmpQ688/+wb26P2CHLY1H7q5lypXSrnwnnztq/jN1o9lyvLmLyGguV0VJnDCREkiUNrZqGG06MsyA+Phd9CuFoM5M1Pyk7S6TJaHdTw0ni3n5ysAup0kyxr65lFc81NcH8xSmpp+iOEtQZrH/y01k1rGMRJAGFhi+nDecpUlnrh+qBOCMZCcSCovOPJrxjZnZJDMLdpMVu+tBSVS1nKxsYjY9Dtq1/++riVfLUVhzofIcIgQQPOqHioELxU3EpCcZMoL9laa5YlOZAMEp5apx7CphrkL+fyKbBAf8ctwVd93FTo7F5Oc/alNsCgK6lHruPROtN2RybiLqx8P5LTUZXU+Aoyz08zYHasR3U8hPDKj+6arWXR9yWdJoMn45prCSURKKy3+JHgvs2Ot6v6GbEtdCumgCttv2VNoU3KOqUwqNIWHqYm4eMijTM9VWB7umEyp7UPOI8fduHJY0W9xSCZdvc2xMjo3Zdu2o/WZKDMOSh9UmLvo45IBppD2dG++HJu8kbfFdlwuIxk2KHhgHQeNKcHhFkYGRzL2VJVMOAb0Co64wvds5CaYl9ZmBm4zuGDeaO2eI1XM4+rD/HmZyRF62SabgAe8TF43VuMutigJJMfbW2UK0azGLFbOfujnHD+GGBYmSmOQbUCOY99HYvswBQA6r9hrc2jtsUUxLVjxnZ4JnIrTwIVdWCTPtpJpvlA7m01/4tbUMyz9mv1jdN1jkiHQCJXXKg8bJ+aqW6rbwbn5yDSHBTcFXIegrhHGAjJOZI1pyP83Z3vMYTAJoo8V9IwyS+U6OVg78+IhSYHDYjRs8FrF8smHQ9h4qAYxp49rRP2d5uxLAuP72GvZaYvfeLOkMrcg0PkPuq7NsXhMFmiZa6PKBH1l+oKHI5DBLdZCvCwTPdXqmnz8gLzVRb/ixLTSdit2nrzt0x+5rDeZT+ac31NKNskQs6noKlQccyD3UxzfVZFmcbpmrfPsZD0Ve34xpKWk/E9Khn4A5yVPVq+dwnv0EyYecPqXGU7R8suTW0A6NJWweLI3iSGDlQXzMYsSWkSMhFTfyA2vTDt/3wXk+mVU6bRNkZvNnyVHYiA4tmnNwdh/RVsk/EgSerfTIf5VBmuAc2IKSeL5Nbrg3acgFj80mI8SWsc3dNAGCBLLMP89gH5UnLTKq78d9SxQH/g7DVnBh/qnBdw5CDrw/uMzcdXSxWqGIFcnQZt/1aOHxUg88MN2w+FPx/V75gy2wzEVe6G51PQIR2tZsxbv62HhgjwtlzrVREw/yzlaAiuXC26cnpvQzWXp2mOgihyPCWqq38nEadX2T7f1Y5zGxEGBaT//IcL/BsquAJX5EDbX8X1p8nLWR2yyjFRvqC/jssoCJBCDJOsZvoBfXqQSEKhNARH1YfueeKBslAwLi24/wAO1BHptlf1kQFNsOPlDvlYednrEp3a4SAz/G7LIVEsZBu0EKWZu/euB/XKdkGonP6t6lgEcCOw8mceuzvEVzyoPnMyzrqoNQXJb9C8ZCXSiedKiCgNwfNkpVlHbUgE2Rb9WFScOeEad+T+jT8XlSc8rcvkIuhAv/gxRu2eb2GonLTyokjcGF1EBpCJbhy2H3lhL0rdZIw1okA5pBg2oRfQceXTPzhuNKorTEF7t1UIgDqIo7/loxyTgbtKu29o9K9KujvCqUGyPY7upcfiZLNBVKh5uXAAZjQjhlhBp0ukmO4Avxu4xAVhCtnsOIA/tAm94U3HEuSr3wq+ZLo8pyoC9EB/q3pOzQRyCTkozmJwo1Ln/2xEbtNnS2S0NUIS3yz3/mBIdxONHxqP9FW+uoGI1F415lI1nZwK0SoPA0+flaokBGEoXgZnO4GOExU7VOjdPns59ekmDxqNhEHeAF5i5N/3W2NC1XGFjTpqLrnCECiwVkOTrLtp2ehUIaejOG6+1336YQSKMSsL4zhUjw6SQKryVRz5Ldn3R5/r8AOi02RJkQXPdvPsl/FMg96E/cJmIFLmEDzr1Gkh9G3zisG4pqM/MV6XIz+CtDUh6hmJB97VzN8jaPSS90vgDjvnaNlKky2/zIhE9ObugwrftI+Oi2a4VVaB/Mwn3VmaWjsU9NOf2usbcN/GLQMjvfeU/YvyEERPKw1leXZWWk1HXzY3P9MUq6MZq1hkEgFzds51mv8mnp1i4pQprPwY0TId1szXwe5TG+R5mMD76nGPQr7/EhQWksjsgGs7Zy5QYvMcGV5tcXJR+6hlHFIAc/M6XjkKYtwm673Bi+K1tNO9i1YBePTur4I+gMsOK7f7980mcJXhgdWdhNzUN2JvFsvXq3zZRG2V30sJtJYxj0aUv1u4/ppVHi1iHnTY3gDHsrQS8YwMX5XwZ2gcFYYe2wd7ZO9swr0gb8zf/fXx8QWKPXcK1UdJk3760B/TMlpWLCbhkqVoSTsOqzgkmFmFteCCTGhNyvFhw1RrTIWzRxq8Tj5FirvKvtkp2GAVhnZ7vnr71pyI0rKwQbVxKZuqM7GAvn2mRBj5p8djlHUsh/r/eBECptpbbjP5nFyuN4mvQLZCaxeTkDUzd/kNGLIzBFv1CElQO+xmf7Dzt1f7GM1Bh+wLDCJZlhcVDXbtPuGssdEie3lZNiWcXMTjZtWAT5MCmpq6JCRuFSHZYGKcSFZ9kOYJfEqLIcWdzpTA+Hmu+ktgSUwXVSwkaa/aHdZXh7IOyrudCBalCZpgXGRNbhN2XpEY60DXXO1Ci5ayZSoxtG0WRCC50+XtgWz7qgX5MRA5S+jzXCYy7O7Nn0ljVxiBxQNCZKZMTqi6mPfy2LZx76uyRUXHjnpJJEimflHDUxyX7fFg7iJvSrsZMH6Uv2xbfQNx5eCbx3oKycUrBY22KPmgfg/w07CDVsw6tb5VxPg5/X38cQtXI47U7MAGGjO28II12T+PjaXHlstPtkUQNn0DKkCYis+kVAkA1wyAJgYKLGnKD3nlVCarYqCkNIZbiVwO2Ydjl7N6iOtvvbAfuq7VKZLo0jEdw1YdsRaHcuJQulgb51JyELzYBkP1hd03IDcZfPg5XmNvYQSOINsCSn3BuLtkCPZRalK7+S97zxvJHiJCZJM9XP785NZ8B8fqDe/Ot0BS3PH1ptErwxBtpgfOj4d/41nrSjJQf9bV1kfdBHJxYbHILxOsWkZvoP/Z4Sl0Yx3bDjTF96xf96+6uIoQ351Ce6DeTwTnkPr20YwATlnhskWIddUohklNITCq/07zkiEc3B58uiBG6d9YAc4h/7s44FN2RG1UuZWeojrOZIhElvDP4KqHcOYbqqS95o7ilQH5ONJfy+aYiB+sPpn35HfHG3duLpNvBjXc+Klf4IKrFHjeVty02xPTNnbdL4gtkqPqMLhSgR/fDXzxJbSScqewiF1wdVoJ/fGL/nGWZfVlDHOQKD+/i/mqwXqvNqxtZeRHwoe/bodk66B9soOnZp36gdzVMRRQsQiBFf+HXjRcrRf9FsGghw3+qoN0JeeMvDJrkSBPsESDai/uVOzn2Ohge+UVdi050fdWpsjP0D/QuTdYs6QyI9xnhU8WT2+KBKzoZ7Bq8fOdKPeLulUhJjT34/EOnUloqus8+pzqNh/UdUOhgTlrbkuTfsaIYDm87u/GNIl3N53uaU8bgaBjpz0jdu1f59K4KFDtwUUeEUoeYx6DEkWKHdi7dtHhQF44lbysk7PqERrsuAQu2D5tDMl7kFoGdI8r/s8rMytJzYBU40wqeFvTl0ZVLdOB6Ya9E/f8VPbGx5MdpYqYMLMyB0QxVdnoJ+tgAQVWfH+jtOHD3PsjuT8dOTSrupuvHWRHQoGI1Qj1Hc6k+Mg84FAZ/gzl3SEzuGWZKFwuo2D3EiG95D2Z1szTqAuFRmT1nEh20tkC4ysmXx6JtN0taK1iRR62s2uNW5rSAvMEJ8yotr3UhJe22brlQn8Gvcq1I0aODaHJucQKVe6SXyfcDWODMw8xf+2C7Zx5a4Qlh7pJs550DictL4OxcDXKvVmLgVWRwb3moxv4kcxzm89EERJXCl7X/BziBkGQWOHPGF+6K5NFJYOFVv4+NyFq+OPMaSWZKoydplufY+CYyL63T8MCMmwqLTmAE8h0prhi174wnx7DHZWYuRJSYZ63uz97AGOzyI3aebclnud77znbZetbWUripe+AadLQeZPtWsF+FNiaXCy/98km137lWewyc7Gamai1Hd3Ls+KMMVh0R3NKTQ08TIClDfMKwUGKy/7YZlJHU3uW60X0r74Afh02v5MJgVOYkjmors6GAaDU7yKHydfkXYd6nEjYc76xws1LDLWCNNKBtUHNyLseOyNDgmHiJ41lXvq638RzDGis8WIniOb/pbTs+HsQVGPi6mxG+CU+oflMR6/qx3pVP+GPgqa0U0lo8MVmI1cBgSnPGgrh+J+m9TVg8nivua0EQP7xai44ruC5gsAVOp9bLsDXfHQujo6IpBmpfbbU8PDavZpTuJtmflVQuOImnRQ5kKoQz2NBFjdiHH3cF9QLgDP5vz/W5trCy22Uk+TCjXjdbCCHB3rJhKYTwiyQUf8xu6yTKtIwrbw4tzFgXDODmWYEnnpDupk3b4AP3qz4AZ2En5wi6aZV287AgCF4vH8TlWLni1E5Hd93vLxSYLBWSuj3eXGFtWyWpBkIeKu+YsBh19VeakA8OePM0ILu6dYYl9DNIK3kU1ybH+A5xYhFI/EqSX3vtNs6V5eQgxYLvu0hYFjiG+n8JzqLQVROiVa8XNQDYJtDAetPFSuEtGI3B8rnbbrNo9TJn/z3lRYq0ecBIe7a03vLESwhKOm1bGTk2kPMv/Sh9wyCOmIore7JhSFT9HIjonBfi+gcdDLfFt7dpShJmW1gkcXmitWwm1cC480CraHm/or2MHphB9Q1bmt/SBXFqXJdcv5GTt3IS2fRgqThhInCjRkh7Dk1iS2vMBLSGtRPppb4FEu762JehUMQxxLQre365CKoJGvJwVde91XQ+bDp5ZsMu/QHmLgITmwGXSpQFQlQBajqquxlwIOe2cyfezaSHIoRNLcwjW+epnmAtmmWA9KU29v/cA2iuWbj9ZV7HR4anhHkjbxnzKPHnIZ7Mm5wAf2o/3xUhnfH++quS20TdhalHgNhusidPKWyKWV8ZjFLgb1fX2r7ifLyUtxuKHHIfCWXQJ/DKeU61vxmPT34MTi2Q9r7/sK1CYuHVqMBsgtfenn31bUzCoyPN89KiO5wHveqnk3uyHnJSUBVTQQ3NyRPmeRKTQvWEBZ4QWcSgMyZF0RQgvUXRcp6KflF056fwahSioP622TdcTVYi4cAwSZLWDvfjoKFLMowPQpzn6ogXHc93fFA5NZmnwslSuesOyNI1EE3RM8kzat6thkmpOiGmm69Yn8yNuxz1YuuPWekoybkee106T9WTPXo44ea9E5QH2Ig6FZn716DBa2FyXHG1B+YfnmhbEpANlOi61BoGO4+G3WMJDokJXj9GhNsFqdaLjA1pkhLP+/mGCZoYsxNI+A+sMvWyoj+PMWeR8koRz+r9pNVEWT70WhiAkNTrojdr0sBLwxIM7D4zT+cVy96ZE+ABi9CqkM9VK7iOfkJVp7AqCqQ9EZ9emn8rB8zfoQZUBrVd6YS2AqiTFt0nJ8HfPGmnBWf3Xi5CgyWoLAmHJp/AfTdHB0+Ns5DlhL6UJ+O/6xys+CWVKtL9S8fVHkpwZZMJn6jVtiUTtXjywmiVXw9a6f/G7Qd4tZtcoS3aytxXYA9aGGmEeBobjiammhUaMDicH3nlOkDvvz19NqWOvHC2SMv7OQHtDIykYerPuoLz6SQNOBtw6oX2Sj3ZLITBDcWNx9CuZYYVaE+vleXnATrwn+PnuQ34jL52tp85aIOk684SUlQ8uyO2t+eIOHndZ3oxD+BcMAba/JVxRYUAUZoEw3D80WWOz0/ul+fYbhFnffx3PgOy2LLiu82D5FMSpi+Pd4EkIFTgfv7p/0vnX1wp0VpNzyXs/5S/4z0RFS21vIF67k1ERTfFuhLM/8fdbKognohMqTNF/+oqvXXLuJB7IHeDdn1X2eParLBEpz8y9CAN2g5VdE7EimekAOhkw+tTzqeEsgyQL4iVDnWrP/RcBd6CDm16/5t+I1SAxCn9wo8knzmpg8DYP8V/vHw8Stu7cliAt+G/VR4XPNZXWF2rZBeQO75os2jFJrbtkfhN9BzHT4HGgXTjyTy8NGsiQdeOw12GjYKCyxP+34kRHZqYsn0pFvVubB0+/emKRgiGXNRWQwMSvAB1xvTprD0Zyt08BjP/4W9HGNfNBcA0Qb9qF5hdQ4dDqpKAFLoIW2gFEVKOganw3M9/4WP9ckP0/g6kaJDRurtxNgT+PjvWYEWlFa80wKYCkd/0ZChV94njjGyg0t98Pz3AL2AFAhvRRiJwdfRcQqqhWkv/o6X45d5w1YLJOye3v7rgta7Ya0jAl/an42ng5Wz4S5we7n2+1W94JnpoGyV8WW2HYjKLkKmp4hBKlNtb5y4W1MrsG/wfq2N5Xrz2kqhdPQL/YoxgCQd6Y2KNkADVu7TxugQRWVuNL0BUj3JRFyWNeCmB74Wsz54OPnbq0GFFxzSkoiJ3Rtq8yEJMKvOMMalFKH7YFHKjb2nwrKVfuUUuRtTfJDiBuaEHHoX+MUrM2bBaAsSdnY5PjqcMBn/wwojQxzt2MoOCC3OEArr09ghhsj2M0mue5ntQcmcC1R/sK3zfShGJuazS+mJUeKxk5u36CYj8+SJCq8ZEv7bNf1+BywGeDQoTDGq6Yh1xW3Suwo2O/ykazTPK/TdVOICyiwK8MuQpK+FX3mqSPzxfLwFJ/iYDjs0WgW2kqXYgm+gkNToB5+jYH83Xlt0cbtEmkkBaVGlHz61rVuWzrK1yjn5nYHKvKCrBPPRth3AKDQQB83fdrbgIeIfB3iHya5NPpEyxbzmtN5Dnk7GqrQ4uu4h3QSoHU+74zs31cWqIx4SZ2bwWLvIxUtR6gufZhNZoMcmSB5z1O9TKvHMORD+VmuiqzsyJKA1OaApB+b9x6u9FTvUkalgl0r7raV+wRqimc2D7B1z/OiSagdd5UME2igLGUcgPlMSX1VsKQp/9yDiYei87KTBA2NPCUmgaLwVdvQFFFxWp2vGCY/KCUvxt3FOu6xIgwS4Vybvbj6feUCkrQPpO/wPHJPhAobSj/aa5YrUvjHMcQkDZwfc9mvghrk/PIPvcJa5InhVBfjh3Xr9vIvA4ac+m+pywS/EqkSX55xgiyj0TB1EE0NT3W2CPFdVD88P72SpdFzHS/6XsmbGtM8JE/m8eojzd4PM1bNADliZ+XG/9hbcKg6PftVKyKKt/8Bz4lGsHyT0VKj2vDGp/qDGBajSHrqzmpEjW5LXsb5kTV6HgbMcnPW2dzQju9N1sI/gPVlgGmk0bHKOX2Ws1q4aPizhcM/XiJ5EZNUK6bZNUeFaUJVTvGxglRUY7vdnoVOe0Raho3huh1XDeTlHpk/2gBjjhUQXe8FN5A4zcRqkNtKpSVq0xyw9j3yQlQxq/Lnqklpz8lXmzHkz8sX9HJjHwyn8UAjblvN0ZFIk4liejx0lVACoKvpsT9+pQoLY4weMHRzcuVC60DUFkaqLfclS4UJti5WK4FE3dYcc0OilX50uscLJomlR6pXriD6ELNNBWOSMt50CJjPkyt3Zn/xj1dlPVP1t6XExK+b3jMoULLPOrEGvjELfAMM1qcuBb0AijkIuFca8f8xapUlkvLjmmJW7RK94r8HaPzvmHHSqX9MXdivNI4A+JHy0VCe79UZZJvzMGzpnsj+Q6k3EItDBiA12fTMlSbEOMAWCdQq9TtyUiAaAqJozMzryEg0k+yVHqCc/DyJcCE2V4WXIhEnsOc5c8f4ChWfUaONhPPWogpDs/lyVCvp3m0NSfrAJKNiVy5aNC9gZ6c9BqwYgj/cDO3kdam6gCjhR+akALFYmt4ixHkWxKhDTGs5K+CwRiKJnvxP9dbxRPCBHbiVa8gsd2GuiNHZD98MNwXMdMC0MubVodd7dnyk3UQFfCIIL1osPxY0ZJ6DvZXwtZ2I0th6aqlTMULVo+lhSIU/5qO63lTSa3MgPRJEOi0AJ8/UlZuvgqLw9dyEDQoHTKWOsq+6fzoAyvIpv14fLaY+braPd6NkSaq0RClMenK1QLH87NZriUaeuCo6SZ7/CfUt2K6VOt0AjIK2jR0vorf6R8+TVzxZb+QdLimH9pU5tQc73xW93QRPMGy/gCK+R+YzmV4fHK52GWBEBL05EEoTY6OYG1WWji66dWnVTg0uPNw839p/yjLxkCfdTaH+v6hVUCd6HlROj6W8Mil6AYGC7NI2+qkZvJh/dAw/iQspXQNwwWHr6slLIp0hBHYTDh/J7Ba7ZR6cp3iU4bSXdmzhTahYDev4yKiIHyN64EANhI5OHYv1G4KXfIOvQizYWchPhzQg5eVGNMxsqrvWVxjtIbkKuHzE+IcA2NZ83GKz0D8z5zmgRnoJGKigseP9TmMS7BgAqtqyixA/SLc1KEUWrhXOQ6kA5ZQRazp3wwSa404cppBnfsS8EsEpbr/gXyW36cZ9pt1RhzyxGxDUmnZeBz/Uf1AP+gyLIg9x04u1fThm2w/H1ZXGvVqsO1VqutV5gUhFkdkwoCjzz3F3FUr1v0njGYT2mSZYvoF/fSd1W11c5VIhkEO06US5wYRmHVPYXmZnbK5YHQ8pkIDJ0yqssqFK34CuHE8RWb+Dr4omk779QOOcYomAMYQ9ILt2KUk2uNlahW/IjGtenuGLxb/t3aFoVz4oNwMZ7iyp4td8mdzgJAfnCcYtklubGAUB9k6bGC5DSkf5VFarnGEBWz600VGR8QywZ+jIYFZbtKT2QdDOYP6k7D8qVgEZByGmRedZRWaQDTggLyNgDD6pQwEeSs82+hTxWypqwU3zuAWqfwil+mytzVnKztyvMFJyJwPFaPr4Z3mTjyxCR2Jv674JVGGMUSWb0l+GtcYtd+NBGChwr8mB2hlyccget9liJhQEb0XgXfgVRlHlbO+jlZ9CcAew0Nw+tRcWgNnz/GL9Kur7RohRhaYZBBmQA6JhvzkazHRcdZDn0zDkfBmYP1PfQjP3d6qqx6gE7vrb3lBKEfK3Y/nCe4COdpr23oZCoIpssGXmqE8CGpO2bEwkSN6uqeqR4UtWR+xsgOzNeR49PTLJpFEAkXha5YaecJ8t/KR+eG7/HKV23zPZAMvHDC1rdxQ0l+6wlIgZbUybjBe6yusL7isRuuYYwg4+8+4lia2ox8RCdvmXlt00ZshBnAIfLkSwIqUzCcsD/d1ZG6Az728L4FCIqBKpbA6bzkJ87lYQpbaHpwPpqu3S0UqNDCwgg3q9MEn02X16E4xibz/rLx7NMDtHcwMOt9r1dVU6Hws9TvJVH7THrnSFESgN5eBy53Nq2Fdb8mySTxz5CitvVE+ZjHaYS3hq9Bax+uS7TxMIT4qJE7HGdsHM1/9uPNBylhP04Lck39JMe8v2dPOSJzyQoy8m/8Fc6h+X+5/mBVA9jAsG4vmx/KdUW+NXxgRt//SS2Ib7aGILsjOz+ZZQu/NMeuAsP1pFRTN90rqIVULbJ20ZJlrjoZD1VxHEoDFFGVWCVOT3jGK+vFD06gc3yDUSnZ7ZHjGmw4ZiAglY2nm78aUpXxI4BfUHqL6YQKFDCazUIryLi53RczlaTh0ry7WN4WpWK9sPJ0J49fu6RGUMYZd3+NrRvEdOrS5n+EJOTkr4lNzo8vawcYnR/n1Dq0rCHu5o2BGBEHABJbsFLi/mlWFO1MjpvUu6UPJjXlXse6MtBROT/mQfyegWGmFRQ7Q/O+rJp471+tQF10+bvkExfBoTQrewd5UwhAUODpyeW+aK6vx2AroUo2bGBZ/ZjcsJFfMYEMsm47LdQSq7T7peI2Ex+4/9oIAJGfhidbXA9UYPNhxigFTg83CETNYfYVkoambj3vv4MZNtE/wrIfTguBNqkQk9ebLPTmY2U4UCzbYqPKO5vjaZXeVksobDAJzhVjoU7p9TdFmNMyLyCQJryBSOcm0hFk/pcwcV15KZ/+IIqeQGPkTbiY1haWSnuQYBeyW5uSPHGtYw28cQS/v3rToNAUGVBSQ6zpBt4CHvaOfEJhuDJYZCcxvPeOStdCzaoSQn9nDe8wDc1MXrJ0+9N9TAKcS6u8ANLCLY4UfHLGf884/LFIn4OLOlRcNl7FS1IJgu1/vLm4INkgHt5ISp2vC3MFJHz1zJnopnKS1AgJtCmhJRZDaW6wis8CJ0KAJW0Yy0+kWI3lJ9N8yqJht68FMNVgkgaAGi5LuKmkZWm+ztKvf9gT8hJrXZkM/QdHI6wy9BqVeWa7g7ZM1YLbUv37YSnLmGsCrl/UVi/tG+fZbzY4bGye0zH08VQpGmyd/v++fS9EtasmbkQEIYnmLZLxO+tNHp3myIGwYBZVXjlWvrCiQcsP/Fu9l0HWmLBu3gvuJ4phtJsXXllJdM8iZIQR8Z6zEMs+cqVL7+TYhxDd0c0l4sbyIEw6N+V0v3ZbUlidyekdcz/aIomGdZtmdI+1QUrrHw7eDXT+G3zbTZMXxpEgJc4zY5bH5az8eHzwoo8QUleUKpVRrsErGmSF6GPJ2OltKYL6/C4zx4rHdcfsrQTcWBmrBWMMiFiU4NGtpYeACqYafRyu8j8x7ltp3nxVbsPO0MSoaR8tv61/q+YCqHX3h4vy4HzjCYEl+4ZDtj2+mawuj4J0rBpcDw+spzuCQ2khFbks09lPGxK8HYJl0Y/lNLUxGLZ+2h6+EFSaD22bYzF7dk/EhCWh6u/v1HUVKC/r/Wl6JHtd1V68J9zdOTgbvJuQug4r4vUV3JJolQQ5tecHKqcNoYjOIs6BZTlfB+yHGfGdxTKsGxbU/4taKuH8Qpd/M7fIG5zebrpiDHV97T4jiUNt7K64/u1e/+erXV34aOjfddcKNO76EzIf1pfD+KivBsRlzlsjj17aDPq/lnKHQCLsD+3TK021HNzhZyuwpLRKS3KE0XH/0TqUOr3VqLMcsSZM6349QJDznPG+sUqeS6wwMWp28TAoDKdmjzW6f+2au71HsOzLIeWencRa5JapKkVTYpvwMIC8u2L+/hYGJmk0588rq6Nnqe041NMzU6lj1K5KmSj0ZRiVpzu2FSTl4PBYHAuhe5dtwnRQwvvNqIELVxKMFWedxxB7UO4zpYRe2x0zH4X6pI2m4g6YdCs08vR9B7omy/goQUYbUZA+wJamq7/c0FhkNm74Mp05NSCK1Dcy1+9qp82p8XVkUB4+SsVRJ/Tqtn8v2esmemr7zjCfjLicMb05JqNoL6zzz0KaYkXeStBrF9+T7EbZTo2Fa/wS5NhJvRoZc8QUfS46HX8HIZ8A6LK8zKtROnakAnEEFoonVlvYR71xYuBAXbjtxfu/bteN8WkArB3//qp+3btpi2SIMyK6rX03iCLnzOd2OrPnD6xqgVT35e6NUMpN7EJSz0DRRzyze1J+Dx3cfx0M577W84qifD51mZG8VNbBf+5PxmGGrGOmkO+Q41YnCkx51D+X3CXsNAjaz/XfcPJUXJ00vaQyfYDtmFq4kU1ZHdnep48T4IskzPsYT9or3rd/ubiYLqeBqjnGbuNWb9ZdPDxkeBmJwYTjsTU+VugQmtz5+C3QBX0piVh3d7BK+Hk4mO3q8qJVQXeIqs4hKuRvBfIwwUyKg9W1x8dv+EwESuk2Bgs1+Zc3wzx4eGasynWs3V360wH3fKXZFTckeHZdgtzTqcQPC2hCHhSXyFMyljvrneLE+c+b/YQ0XcDBam1oAPzvKmmcgER6AqnyC32Ic4HMP4FQN2rh4Y2ntrawByV+9oq/Z8hdwQEPYRYiELBCnuGGXDQbl3ZLuUo0vfKU/AuMwYfNXmNM2vkn/GRrpc5WDP+MEL80tbJDZfDNBRfpfcvVpf75u0LrkIIjnU4adaolZWzB2yjIVwNrF7zF//n4N5xHeaGc7Vh1EYRdc0h2l23qFvLBNQ5kHbmX8Yta2Vj4DU6eBN3XyJBvJf9iL4x+hw1hx/7Ej5U8EZr/Qhgoni5r9PxBfU3fdvXICGW9DzST7GV141bvyMDXblFG5PizNjJUVAWNSxIAStz6+eDAbkYeAKTj6DIR6ysFvZAloBLCgSdMFd3ol/WXDQh3BbBtLqO9hp08BfumZjLpTJGRAIHzDizXZfhbgqejNSS27BIXQLV0muwzgXGqYt9McSvtLWo1Fos3k6Nu2qGyFftqQyDz0/bmgvtZyiFce/SLYnjt2Q9BnlmUVBWOtbDPvUgOSizvJDhdiSkbLLP96MJ7dKO3eUK2nZnpb4s4b2XGF4T6gC4qo9TDv9z2SY4Rffb/RjPs76P0YiWADpPB/nQjC2tDRlxt4sdNCIjmMsLgU+cr8cpyaMSYI9maP4HHww2jTPkGKvF6H6+DFAF+jAZKT9oi23gpZ2zavE0xXPkF7a2FTNJ3bwxvsJV+o0fXZAkmouYq6B2+6ccHhnUIeL10QtZaPoZPJB7/Xry/2Nv+JJFmQ/p2NSiO5bYGA8ej1vh5QlWhaX3JMs5gMBnyyIfXIMf4im0WEUnCPAJzq9q04Tmxzy7nGKKEf31kAp6IFk95aj0AogL7iljLVJlOXNvV7BwZn4dKfuZweSEZBqy+Mvual0TVDHiwHuIuXbvaw+OkU7aeAfck0Hc6H0jgt9g6Rxb6dAuaiKEN1cUYtD88y0b9Arq1q6ML9B20/FunTnZNF+IHgsg641FfllDFpQ+dqrIPKQ8IkLx/2ppx0ivQSrehNaf5dwtBjnPHroRGzG/RWOdiW0COPzepxIqcsWjhfmBXSUD7YCvPm/qTGcSnhcriFKew6a5s0AgK03I1gEifX6y90cJBY9REbQ7yW/XB+zAXN1XZQVEs7r+0ajtx8KvVBKJksKj5YFGdhEennMbwgCJJIMdt/pJD6FIcNVegt2LiQS70DAJeiNNG86dQVNYNZmYEfo8oa002xKLh1+rHlBX40iY8Wlv7FqswQFktpyLn5oSdo1jBRz8V3aRIOmhSnrs2wxGwGBEVEXvRm8RZVvSQ0xlKMVWs9Y7nnmJ9jEVuDL08D2ES3plzvCNP3FpKQeSknFeVBXv5T1Yk0/X5vdj1J1LYa6Ffxxrv90ObLHARkCI+tz6+0i5cZTinvgIYLMVnV/OL+m4RCsTy/+9VQPsYv6X2qSSlVdQ3KM1SOntMNUBpb4C0MsDh10xHQ0cbJK0gsR6X93ru63BDYbRZmPISt1casVwVVE7+u3l55XJGJ0Ev6S+2zpNqOAH66RuzpVskXE6X8x6wHOfp5PAI/7YG3Zozh1U27IXGEEKIm13Rt/nTE3pKWA7i1NFdVQKQ0CNdqEsBkjiuM41dd5rIbR4DMnoDva07v1esxYBGU4JWJUJQyejYbI9p7pqjrpHZUNlz2exX1lTAks+WxY6CExoPlSlNNv6AIsE0VdPmHOj4m0a8bigDelTpIL1WoePLhblmhRlkPDKiZvkzz6eG8vLeJjCGJL1+VFa4QREBVyuhcpZm1ygJm9kuQ+8v4yEMw0VO+TKee6sMFRVc/kS4IirJupnw48LoR2aRk+GuDBZ25xnKFxdSYqZqvWlEcemsbzl7wvQg5z2xKxEUsquyGziyzd/X+XFl/ct9KRLzyyb6ComIL8Wam9x6LPNZXvhO0QQZmQ8T2MFjmRJ42WyRzfyLGkJKft94uO0Yy6Fflo3AoIEon3XBygpi3Je932ToU5EKoikvqkeLFACpsBN5dseemiMdHxOJKrVJDdTS0qCcTzPCyz506oyENFdelskwdghmUnWyXK2WeJX2CBXudNUBON/i8kMdtJm52REvmGqVmxe5aricuTCGLbgZtYvigT++E7xltEh/ZgUoMP+d8vaPU/HdhZaUjsgQ8OoqZeezvNR2JFm2on+IliVyYQ/58LmZ2stgKoBbs4SllwiTpNRw7ecL2WR8bbg05aTN00C8aGWtReWSsYsirJ0K0I97flI2gJRRN717wESryWahXUAFZAdyD08j9SIZQm+wq5GkoUkK5cQ3wk1x01x4fKLPgPIj6D6lZiylqvWGtl6KxCfoSQXlNZIHeDsrIRqhINxdrCinM0iMMkveNxhqrEzhnBn8F6nXVY5zUDLzOXpp338I2HycFa2pueObEof3HQgFEMnHS3/CDKwJAyYl3HyA4X5vXUE8MMa79gYELseTf0IEUJRsfSa873vl6n29lFq+GCqF1I+mB5PSyLFvgHv6hG5Hd14PAHTKhY+xzCgOwwRZxygPwNET0UiO9ynH0p3j7GAFEs+VSjl4ArhHJbySohRLfm6B7FxxYJLJxJlQr5UdD+5Vs0nM6CehSZZNYw4FzcpYoL6nS+wGGSNKLVLXgbgvzAbT4B1J4GMS16IKMlo5S/dzM/NM4NI+a1Fuk4qwaewoHqGp78vgp+SkuhLyAVhI2Or50Id4LlHwRon9o7JT3D2pibchFvFi2VTEx6cLX/qorW2YGSSmnu9+M8teW9DIRH1TfabuDIuLk16NFz3kNr5QLPGAd0JzN2IYFA140yqfi9LfBcZI3aUK/Gt2bfMMk8eqttN8c92OmUYKUaHbB9C9cpEwaOYs49MztuGtI0VMqDDHN8HiRP55BpRIJtIWbSyi0/LOC94XhzqGVyuzaVaBfg0f++sV8wy7ytxlQYA9w1ejE0XaCkpM9zbOrymf4OrEaIyQX84Z9e6wQ1czIvOihnSaq/fcFdkxJcMzE2kWcARwWT1U80dW6B+v6HdclWMyMWLYr49iKWrhm7o1yumJKxVGiv1Rx3Tw61jrh+vuNjikpFRxa0F9G7ZWs57nuhaIeT8ZRjYzuyq4WZBEXs4CyfvmZxGcS4/G2aWon2O/UkjqrfdbBUF0yavSPdNJacaaZxFQNejGDPK7SCF82XxiahbNpwFs/t07gbCJkDUvvKjqaYv1SNJBa21RKsOuGJNKO/F6HTjc1Q5t8lqLL4e83gWTT4aubYGtE+D4e9zdPPo2R3dvG7bDrCQosp62YhTaV3B/kEQGqtzvu59fbgA6lFyGe7urhYr3TWCBFYBmrEpB78fWnXUEd1z0LSzMcWL6vuh4CJYR0tg1jX4H0wkw9mkbM07MXopLJ2Rt7/aL3Hl3MjO8h/1lqNlK74QTbgkurmgd23XflEcMhjO52Y/Wsz+CqwkBCDN8SUcd0hvJ6srikURdDKw75ZZMyms8NdzvzfsXreeCzpVaPKbkgWo0BlD+qWqaXziVa7YTSezNkCD1UBphMwE3IFwG3+Oja0AILbwR+VMjirrIkRPt+DMtp+OKLpkiE15AVv3jn19brZGZkhhAsuT2sTiWSjLvxJkMICAGdQY6CcJ1bmQsycrXCCxoxrME8B5k7aYQkl31h4kmnvmUA1Uo5bGEJkzebQNuMeVIRwKr7shM3Y3iowzuO8Jm833ALhjeDbR9i+ajGdiv5nuQcBDW0PZ0CB/GHvnmE702e3iEmWKin/StmkbfvsVh9mXnjLzZCRfht3g5Fu6OpDSsq1DSVUie4hNThGTSTWkOhTKbARv54Bxp1m/BqW0CfvfUJMQYci+HzQBrAw7lHJI8klNzq1wbwtxf0zzTFIpYQcsU3ddDWDMuciKmN+BHJ47B6FkgX4uR5QSWzLqgN2wQK1aLp2hgMJGqMII4rLK56VcDk89QQhw6cy8PCM19olNpuDwdrQFvP+77wiyyKx8Z4MVJNxV5vJWOwvF+aDouZMW5HNno5d960qcPPO89qYm6Zh6UO7MyFx272aWYtu/0+UZ6eThOP3s/uMGRarrYNGVN2bkl0VbM7ZArP2AnCQLuPoIbkry4nTS/RsIdFmPg98zeYI4R0RY41FQsBym1OXnJcHtmKPjfEXuujVQGfCPrCZsaT+vFbMFWIvUy7OxquIvdi2DVp3+q3E3NGG06d/cz77wgHGWrfcy5LJIzCMZHkk6m2QnZCXYVXwMsVhJI9nJcgG/CrU5lgDb/DlVEsXG06BHIuqVfnTyLdAQZYmJlEEk43pdgF69V12XC+sB9W5Tfm3jPwiHn/VmGszkYx+Er49CLbyk3hDBSKuzDj+nzCo77ZO40EIP4ZROdSwWlf5S8wfYcAzjNdj/aZ8uknw3tur126RfCzMA+cUo5mPaZL9cVp33X0mRTUIS2vgtwDRgsSSX5xcJUWR8gZbdeqyqQEEAeDu3+BMlrgYP2SH/le2u1yfVFn5JX9VQ04X9mmABR/KOd3rAYqR+OQwLWao9MXVS1y+0OKo0FlXuirKuPaY1BQbY3Vo05Gf/+N+u4rDcFBQqiCrYhgRAEjvVW9eNCaOsukcJWEaDuo/pWCYGJLadm4ssTCPvVVEJNBfVXAcTIxH4EFtWFMJUy5of50QNXNZBl+oRuFIkdbt04DeU6j2A3vzzP+IkMahLD6zBVJv+xRBIc5fODvnJMmJRMI8kcyMFqxpeWZAHxC68tGFNyl6yyGN95SwNYXwDSIQCPlL9bzjZaWNWvs5puiP2lbEBlDw5vCHtVmb/sD8QBgOhRassChwM5o5g4lhlD4u86wmdmVmhmEXnCyLeQJ0rRtqYIWRhg72ieDnqmPvOkDTWtKR38TeJwrK/7IRYfbNspygrU6yV9YtJyw3I3uEkDgbPrpcNUpISYvzv3beFg3ZN+swedqf3IVKkcdiAezu/KpHGHPyvX9oT6qzTS342/DenW9ctM197UfFl4rk21KxSma1KnLIWlGGasMF4+G3dxTnqBscul4CqNda6Qy8ita7HCzKlYa86yljm+HQA2B5ArJoZy4LNxeT9izFuQhEoEhUTNJQj2pCc/O44h8GpQX6XgpaAvAQJLVNq0yXGFbzb3O54XQ6sm557+lT3A+VWPyCJn1MLbsssHIdFhJcMtBFQYi0bS+exQ4Rq74xNE2CIRSzi3nj5TNy2AoO0gdyBC0/2iH67UB581jmM92OHqgD4EzAzyxDauPnlIdZu0nWwB4dtxWN+meq/faIuQpK2hoRP/ULwIJ9r3xyxtXxfFwJ3YquXldSEnxoPiYD85u0OAHvKOG6+3eBraUiOgvdfp1EjiroeSLLFutuPPV9XqhAReYPaRy87OAkV5tzSqvyfufCvOMTtkpxApWsJ9n+cNM2uBWu4lj1oDjGasCfCt6cfgCzh6UbZanbL/qCgf/iHjKYaavIiRLJrU2BuzdsP97XHkXLYbbfsHVTlXSohKOXOJ+3LiR6ix9UFLo9qieejYk+P4e5wC64jGQLSxJzYt3cErx1Rtc2+xlJaEBynLN4hLl/qOrgBM7a+yswC0Mh2OieA4SR6MfM9WK/FOWbVyoUBIUAKOhhIZp2LOgukk0/DInn7sF7dRP6Nw77MaAcYg6k0gdjQN9/1wtGVSBm+6LwkI+xfcK9l+JiWepXul+/EEdV7XXp/9lUsW4RQmIkda9H38FJj3EYJTrG4hEU9YWtNd2lKI1683cXFVzSMkh+2nuu9K0JUBoAnrYkKVZpAKF9G7y5n/KMZrP2xPuUFSOaruqriffSEX9Euj/k5dgewEyQCFTif83LhkIjt5qJ1LyI4ynIznWl1SoAdecEp+I5WmKBB2fr5yw33NX94q6HIP0jW3Np2E0r1f7fUjqdxV+iCRULU+yAwPXFvTL7HqfFLj+wCfIbOg+nsW03rGTf1haLvAZA/nC52pSDnC4f0qOiA6WtK20BldZUaA6GO3m5ZOCGyemGK4a12hM3BXnbladA/yTRV+pH7IiT/9WOijGGNXzV+K4wmdmRjU3It+QwUCRat2mGkEHhOcQY06pWeQqBGjHkWcceX8/drkk+tYysHMXVk8hLhLGjUVgivK1Ra4K+RtUcZO5fkVkWQ4W8fyo2tafhGEDSsflUH7yj8wsATBE9YpskR+r7Ac8xqdxtEAfRioGXSprjbLI2DAZZz9HAYR7rUHzvh/UPpFvrLbd/hFf7sF3RimWNpiGsQRZ11RqfZkck9IJu/FPU2DYr/HWUdskJHuLufXCvDbKn0F9sM31Hn3zIuAMTUc+tQsO9ll6jnNnW9Ulo7d32jEQMqJIrWQL5+Se0a8lKRp+XhYp4IfyUaTRC58vFEjKupeFEpU4EOp1AjeALc7vZV0ovza8QSl3ru6xFpY0/ckElMOChkhLWSDHLCKaFK/qC/SIfT50GJZnkCr5SgXZRddXq8Gc6XNjIzSdCF+9YlUFKMiri/sn1Gp/dEMhARah97GidLqitLNBlF+H8XoQmdrM3GXBSCN6izNn2ON0OzpCxOuM917OZCw2ZC0DSvNuTOFCGGYf1TYgUbgK2KKc4zm/25dz3GhVpFqs6x4yhZBbiy/6FD1vXW/aIcDiSUoIhwrUtxuGGZijb47Jz8JfUTblzx4eNPbXeYpygkQo1xXonjeouTuJvAH/zH+FK50zOLAtbN9AO6xjfX09CsjKitMVlHWmmQybLoBHBPkC5IbAZxvs3cH1VAcy2X90WL6y/0SXNsGeLBdr1OWVuYg+/wUNiR7QnP2ec7jNrZZOosT6Olwn02Dh6zSwKoDnMFLfk7lBO0p9mWjex7gEFXNfxFO19qmaoISUZEgdTuy7sHgrD/36o3XeFdzLFoFnOJa4yaENBXdTSmVZacz+5IGdVkEgjQt/TxuhNGHGtQuzNDfM4iNZ28Ly9S9WkUGMNAfDRLr4ipZkJxUA6HnlOi4Yb04/Ze8rB+HEXpDGC5Jpr4fN62LQh8o6kxknE1P5/rNmz43jehFlRUvCyNi3Y5St7lC7a2ogCt3Za6M7AshQdbVV2+R2DuuiLEJz0MLhnn/1/F2Z2U3h560PrnhR0Gc/5GW5DwO/DGrR/4PvL046BKjUp1lfrtKfE4osRTS9/oB0GrNW3cYgvhU8ld61sHhKOf4P94t4n7h9zdRXDaFv4ORPHokkY+NA9QA49RmsGMfJLu1/RXuluq0J4fsUUBoa9dL9T0yDJXvGtuoln8aYrNzoapa7E8cR73/wX6KwBPpwCUUlxsBtOj0rnca7zu5FqJC5W0U8Yt529SAI0S6nmWnS8zguQLRzf/gRLaqSQ6E9T6Q84u1cs56dzBMv2eBG+zAKw2V0x1NJX1gC8M2MYZpScdXEKPG1442UFWTEUlkM9OjbR4FurtJNV4IqEu1htlgltESO0SeZMHZ1JM7bNtYegevwPSCmW+S8uEGj7FTSSV0HbDg1rOnt4Ws8DxqN2T/HOXNd5NGboZ8VTSD6g6rLWcoWOwsyeG08GPG6KHPiLRunEdTPNmY74ObRGT1VCHP7nmBYmjnH+kqK6rDyrEoNjdqc8uG8yZrHWBXU9weqD5rpQ6S/annq7P/GiYepA2ZDdJA/GbdxpHYatPgkXt5sop564gVHZamW6cq/cdADaLCXWt1WgK7y11WaQR90YOen8BECQ56pmJbLvzzfWBhUUJP+dAEEK4o4wZv2+IBAFEdNkNF3mKntsLE5PDLA/IEiV0rziyORzLJsoxRMCQV/HlpCkXsaizcHT/vxU9iadf2hOkKehGum3973fFs7uRlqxz/oDerFL0617PqG+VYIxjeRb2IRLZJGH8vp8ITzF7U7HUg8Crs3WpVY5r8wxn8tzGvUUwY5csVu15Vmm1xcs0UL/lUCkrOXdLtlaa4pHLeQgpd/vu1ZzjMOcgzfQaIwiZK+fMZjRLAHUf83TSCOkovb3xPkD0jElmb4TBqFrwn8G4KWr+RM58qhCnlVimQ390m8YLz+fNHbBRDs7GJgHSK+v5Z9cwZq4glnR2eTjnqTy8Wo7BEg24CL/RT1AKzOIE7muo8oegzn8R6qab08LzTcbb0ippsScfjQoJhsr4jKG2pMVczpCYqptZcGD5rxTHFbL3+NDnEUptRMyARhF2FMiM7pgaB/IpAna1AHa5EPt7oBdzMGg7kOdSOpxrPXbdP3l/+QCfCLMpCsxFd3VAxA/IPVvK8JaenCYCadhyZ6rJeGxTUh11+OOAjrXIJxb/EbIy8rv6h7hywPp9ZhPCcgt9BN808JhGIaKwtL85jO5nipQyAF690xJ9A2DMuCx55TSG88fN6rqBMYDI+I+DtFmoAqJB27B/xxN9xMLnQwLcLCHOx4GIFCq3/6i7gwJePjoG/HKNb0XjhuEQmYFzTgtt/uIo1bBX4C+y1jrb+R0mRj+RyaDkRus8W4WW73qbcjpjIh2tGUY6KJyhEaKiK+LHG5euQeYZO4zXoKbZOWiJTvJNNVrWugpXkIIIE4zK/g4JKATQjtaC1qbJ6khaJHxOTS2goU5zGyjmaPKvVPrBh27E7E2iZ/6omwpBARV/9EKeU1m4Msz8Q7y3MzEF0C8VIIqAxB+Fk8qG970lhV/ZIX6CsxiHqybemqil3Qv/cWKm96fPoMJWSA1dcF03dSwSyNMdvKKBCYVYLuqr2pISKPaNRJJw2R43RNE6avh/TNA1tGJ/ilW/e4LbOvIh7cS2OsbjyXcD6WS0DYaDa+og0lSxehZQiDSt2fVdtF+DO7/cEUAM3uju47Fl17rUPkRPaheA+6/jpSYK5Nh6rSwO8Pbi1y4/L0L5SStva0NcscpH0pw/3Y9+Eqw1SDVvRn2r2d8vRC6YhQywdhKWraKGBMILqjiU2l5d3jb1tnQIwi95QiTJW7MAjJD4Plr9FGRGlM4NQyAiG8wSAKUbRCpmxE+zk9YhXjiC/Rbt983pV0VzovJW+90dH65IOb2VS+Wk+MpsRgZ86uEuxeGPyB++07HlAwqFjq0sm5Lvom/rcHSaLduJrDdabujYJRWbbY2QZptvGwTHAiaqsAafE9NQa2oq6hV8+E2YRbdEcrirxyx9JVWpti7CsFfA/egMevH0MR40/X1jQzMYbw6mr01MI833RiE3EuU79cpspC8tuN6QxFB7ExHF8yrFQ4vRniEkTgKc8kT2tC2HgNJJ+l/FwYXky6qbHj1cMtBGVOw3SFMHn5l5odYVrLqhL6R4DujKq/CEsEj742QjUogvrSb9DOh1Mm5Z7n6MI+YHii3bWp2abi25FJIiX3GM/137MQVr4wwQ5IQETnYx0CoXX1nLeqLjQ2VlOulhy58iVxN5d0Q2TEV6MPr+wA6lluGEC5890db42elDUvTbbMcjHGrT7WA4eEhNLqVT35NhLruSPkwg1UCAUz94Dj23i6dqS1MPh40Oyi0W+wfoWYXIw+siweU3qKdQM/IWLUwDjgMQuiK+CTyRgR/Cg+XmfazCLiF1JChK7C2x+ROCl4t2WjYngGRxBWRQqqrNqx1EesLx8Z8GOimBJK3Ip3O0TWp1z6fhibUBvCtBpCBH7Wz0MrsYEtW/6gd/rLbB2IcMxOrxgW5u+/ZBOjd+9Zg9SRf7ln5tqXgM7wZE2rj4u7BOezWvuyca2TpJkQOR8U/bR+LRjmN6RAS7MCfYSPtJWSbZYnQL8vGmJb39SyiYiER2Via1nlShjJEe3JgCwTOTiIQJ5h+NQeEs7qWkpIDJiQHb7VwcR7T1gLGhKAqUT5DPO5zvGPny/DOh+Lo+Xhxf5wTkF5p5yY0vM1gw2UZQ2nhCedQ+PBxACaAeuBYTyBs9aNWvYATPBLUtXJ3H/+rMIUQ3Xz5MJKdV6OhLEEK73rb9hfjPlA0gKO4j120U6VHh4AJvL3WqjaY/KCbwpCzUCADZmnJdpD4p4U5ry6/YuhcWXcVV4dFm5J8qADBWw9jPITjUtkf0lhIJkzhXLTcXQBZaaunvCCxyWh6ifYzNTTCGJcUD6DyfGam2zj4qdBy7DwBaL2S2IxicF7F2ubPDvx0+DEQVydAIF4Utn+/niyxDQpGlaaG5eRQcfYEHaZeHBOfZ8x6KnSsZnB8YZbLVBcEF3Mv/87cj4r/BYDYAaUWrrm/rWPImSVpvPlB3xQvVG305B+bCj4kIW4ZWzFnX7/nApDibPZxncAV04laDsD872g54z55DZylkUKHXF7Y5iFwsc0HDovYpJ1P+XIAb4pKZnw/e2BrTZn6jCeAAvAt6Z8EdXqS/KoRwK37xhZL7w17n2PYpqnoCtRAvnU/CocUq+el+PFEwM2GkhLBAJXvVbqxBMfPWlA8XMNY1+dfsV9Uy0C+WgSzcXw/ylN23DlELK9DPZ1nzFCvyDWygh1ABv0LXhuVuDEraYOrX0J/NpbYoxjl/mfncXN1DorfumMjOo/dWEk/OvdZ8w/66CtISpGM2htGRpT929qEz+kRM+2XpAqcSS9GOrLWVVUVIm3Ez/yIqAWm019Td/ytbE6eeYJaY+mJpelcp0h+4Y1hmcF9J6cZQEJi7foY8n1psVTCzE0QYMX+ScYxKxb/bU9eproUaSNTxHeNhomtba4y/CfLAZYXndn5ndeIjFIsRWRpwX3HwrIsKxRgd52tRs/iun5uy44w8u2wZgayiPbOTWGXUn/BDqak5EZebXbdQHyE0yEhUO5HcDnE6xlAuZFDSKLDTTZz9bWcfe1wy8KhSOwh15cBRibt+faUQgl7/5na6Nl5d1o7iUWTjOhjQa4z2Pha1PNGSn0hZFeICMKGtHJ6EGQbB+HF6+M2e8YSQjJ2cnG2SVpdzXlnkzxYqwXv0s0WM8nggSh7Viq5joXNiF3RJ0A9637p1HFJd2I7GrQ4ZTOWRi8jcZaL/25Pox9feMT7VDPV6TT++0Ri3a1aLS8IABZh2dWfxnBmXDWPdvrxmBiF3eePVqd2ZM5bI9YAN23/3qVLElDeD61xvgRdjkXkl2tqif3zsX1gGp9mzEm6suh1kWL75XC2kXlrCreiNi2pfI+iWVFJDXPd3MBNp7VSAZRp1jpt3ug1pQEM470lZXwotpDljklvGxuNeKwTuKNJw0EK74nc0d851QXL9P4pxZdM7pkmbA7IU2S2Xa/AJRP2VOz3Kyp9oW6FgoQi4noNkoHeNnprbQod8n+dQSSbMzNRZIuL/riHaxoOHkaGYwROCZwqcbK1tUnU2Qt1J+3UTvklj6wOD/d8lrZG7ucjZiCyHxK5XVtzq9lDJ4N1FvARCTUfnLeOLc5bmrtGvb8mmsr0lDDyR5607k41wzglZH1fExfmsXrEjiNLSzSKGb7FVusl07/BgeCclDsQkds2G654GVeUpX7UHaqQBEmJsIyvfxvz85+WyRaoYuQfSH9WpJLeUoXpUt7+Crnl1Jqz+eARyCmzL59OUUBwBuoQAl5VddIrfG6xvDA/RZBOV5AfwjOrJ2xRo4N42rCSFCcnOY7xfewl6tVLetiM2tGLqRLc9k/owyHriX1A9BnluzfDc5xdEUKyuwzWPG+tZGNDV0WLl1JyHPflzcBpj92G0AR0lGaMSZuKui5/LUMn69X9wPKc6FVkNEHEjHjQKPQjuFCokjN+N/6DlMscpE48IhHIa0Ghrc36GwGEiPRymXWKD/di92yfjZjDM3fdHBdwSxJRSBVKHSwh6Ey1/zWZRZ4kk+KMS8HuroIw1UPa+PDVpsSIKvmqZnZisbfHFWNW/dl9n5+wM4VIzhmrETz3k9WU3s+z84SHh2f7dGT/G5WvoisBYAgwm+pqFS0A8xyhy4PiKfgS+6TgnQD5hDEerpzgFSaMcw3yvDZ0+xfL0yznf0uY8N6APiqHdoJZOWqTPnTIbeBLc5dvFdh+mvD+sDtl8BAWzYR7QkSgnx30Ru7TH5a/g4byacurCNvG0lTgpkj9w42uqBp1zMsKr2riOCQwfCRKkuSX9CGADOYGqCHh1JUsk6RwvI9OvM9fCJoL7Sap8NUQ7mAvdB2ougA01NdqxVo8NeGta0R9C7QybiN4uAtDxw2zLTG9+0we68JkqZrj9tJilUV/f4wOLc83GfstXOVF2bAJ6zf56YworQQEDj6QnC+lqyMkGAr0QuAikm0jqS7fy9bYSBz5hekPILc94b8aUau3Kt69QI1kFEmcb19aFQA4bSegA9/hFi61RDIVQ7iOBqViYdGaK8d3zH5qWIjed0hR9e6o4zELdXWhOVOcPCmZIYYXvgUsAyGUoCszsCiTdwOaPEL2kRnYh0mNSZGb6/kr8XfbyUdbEZ7mDBYy0yTDxhkrpIoJmVutN6FHk/E4cTEolaGnv7x+QxQIKZus8IEygpdtBDxj+lC5M6HaJ313pLDYbjpCA+oYl11ISRJ/fB2oIdDBHFLefQmF1uHk7vtSmIyI7Q9HG0qxu8QRWecP8ipKR1o4bGrAhR2KcGEDE6k8r2F7N9lNUZCswXi/EXaOlPb9fdsaw1Sspku1xrmyADIImEs//XiPqI3Jl8BlrsHf1mAVCBmlqE7usMbDEpilt45ia5CXzVqlIZ95Fesu48LEATS3dyXVEjwQAqVbFBttbLfXvX4LhaGKv6P3XBsKWvqEFfq1rPYdohHtQH03ehlVMpZ/BRCBFV6dffGCrIa7OngRAbORd6wsIcR/gQSxhfrfHFmb9Ws3Pk/SikwIvAIYljNbXbvIpKTROSiPcmBDp4hxLkrjR+MfBFZLV5I4usLY6WYmjhT2kzW9XAxxLYCELLIf6lg6p/GFgpoRTm+yQ6PYtmKVvdTHyBxv28y3vTiy+reYBZqmC7x0TDasiMCcA+TxdKgDY4s61MpZyI1+RUzeMfx1qh9MBXg1tI/HSKpcUj7+qTrwp35J3ezefo6UZiEWMPBtx0/tJyaej7NUmUHVRBJfB1q0bsw4yHfui2ZOPNh/6R2/I0j09t9QGeRxpuJzB6DNbaPTOmER6WTXYEGXq7DhzkvCP247uSz6r7MfaasDs419fVF4RAt4XoxkFRmk3sjrhpNSeuDoG5RpjE4pI3rH/ESPaF6RIIJBiAbVU/ct/nKrDmBQPBYlNob0WmW07GhOvvz0m/BXTsPB8qA8Iesm6PsDuOLEEm5+jbniDFyXfndwIXHgWBB1GCyGV52MU+5iXguncQS8T+WyxaPDqCCXMjwPJxGObdF8mBkG2+SpqaBQkeN+1IL8Cbb72d3ySQUR/uO+N9v36KAiKVEPx8EERU0vfKi53JWN50+LSYqgHmF0UrnnHCNpcwfX8ezokGL4sK/rgFZlXnIqg6a8EJh7DfMOwMgTwRjjZ+TrXsj7SA6EaMRroFgxXRIOGDPYZgkadllrCosfuVZqNQwAY1cDJzuD4ocR7PgZYXbCA3g9Jd1PRx7PyRTNad56qFMVIv/9AYYd32opL/KQOuEa2LIoyMUHWsHVeJEgDnTAizkdfigKSmZVUDrztoGXA+B+9B+MYT2q5BETXJUKRLiEw3upTpXnlh7hkEk8/0D3rV1lUxxSlnDzLfFArxdnXRhBNu085RxiTwTISjItGPuj0MQknBfLTi9AeLTT9QUKRG7bxHm7P2Kei6fVAeNBP31q/OVsTuBJZfKaxLodsCxObxFdyJNLV2tAt+2SCAO5/VWcDOd7Or0wzbVGwbXJr73+/PYn3VfNQ4CSxdqgXNPWDqh9ZFVRQbSeb+bFmOpdkO7C70y6dTSHVuHlIY33/KV1QHDJ226atG4ltS4fk0ZNDrmPZ2Lps6qyMYO+Wkmsyw/ECuxfXcZ0zM7vmLjkk/LsX/XG0vaL3KZb2C51I5TVf8fBJmMxHHzKvaXDwSTGiya0f8ZZ3olqbqcd2cjXM0jicXlX0cJsaB81POyuItwEiYZwsHn4gymrnlD0mfAro2YoSC7KxDdL1DQVO+0a7fN1fLkv8ElaXx46Z8EGJ/W6akIr6uEuiFIQB9fHujgNzIzAgaDEYVITJJO5XQkyimdgaTBvra1hUbw4jb8imqVpd7G9dSoQVNPatqBlbm7NLsdI/einfpw6HdFlo9bpLb/wBxf2BGK/YWhn6LhzEvBuRuBZJTDv7HV9WfnA2SyT3HV/F6f+23aOYC8rxO7QQ1FI4/0m/OAHdCwYedzx6F6TIlSh668B+Id3ZxNP3V+Z82Tt/AHYSzDsxyYC8mxyk+Za4Q6u8y70AKpUm1NPP2WMeSHfqCc5mUcG67RR+sJWZg7P5iG4FPnFmWKv1nwwk+fM0IIA5p7xmHnj1zbj89sN0hc81tzI6enBjIyPd6P5GXzsmp9IRHKS506SAEK7IxfjQLxkNK1x+M8YAYLrD1qWXqo03kTvXgYllmtbguZX1FQGpXYjbZzgqSLxcXTKqQ/GhYqBJzZtvPaYGODBTozt0Rw6/vP+hTUJGOAYcEWWr5Mqy4792lLWmElkf2k2HiF5268DSkEL2oQl+VXl2NXgbfa8xxQoI7lpuNkURcA/pNz/go3LD+w41q4eQy20ecjCwekr0XfODump0XPUm2vvNfk4P/tAVA2PLhl21zoFOrSKjd6D1AiMtz/f41uWlBWCDDY4tDRMhyGsls4GW7P8b0/dGx6VTgC6oCCWxMyJyOgl5RPaFDE/EzGGGL9XUm5X9L3crn0DvEELm/Vx6HwlGWtnfZK7dA8/zJkr9b7PBgLeFlmXyfUBxZHF8kxgW5tcxvkEz0roS70jNLvk3QNCTUIwCHnqk5NRDEaewDCzjTR5lKzNzx1RHHJNiZZJ0lXrAsSM03iKPyYNdJfMwUAvRlKP49yIx7XS9cvseBWVvGNAc2I0PmR6Xc9KjqauqjgG/Q8i16OIPtQ2Ll3qDkunTNq2O65AEFG5qycHaB2/159N4n67iMEpyNowNdkq/ZlDxsX4dRKNvBUJaYqhID70qa2Rgq8+AzqTaJhuYrqrDDO1n/0rWggrBcFsYwo7ujJZblKGamFf+3B5MTAXNUOKn5PW91Gx56gtqTqz1dYMML1dFR/KZUZom7Wky7v9EfKnYbBseAvDuBFBFFCuXnhvWc/JS4ipUIe59Ls/kL+W5lteo1xt5bkJYfug17vGw6cqrOjTG4nQXZ+RbEDCMTf5JZ4DBcuVv+tGPyucc3B6R9NMF/lc4ubulrqcBPhRUjGBILbQ+4uBJ9eUHMAj2ijfMskRMLcV5FdgqIWhiEvxNVlZSRrzTzySfBUjZHCJQtbgDZ8nRWLwk6rQKWD5aSHuJh0vBgvlNTP+a4P7p59l0FYBPtoNpiFl/dOo05KHesQCueTxj7IB6io9sqTWxTu2PK2C3ACiXWNyxs52441hxg3eco87pSRV1NUvQeac35o3tgUpXtmtl2yHh3QO1mQ55wSqIri3PtVxJ57l0nOuyav/0ixzLEq3QlLZmLb8Y2JVlrdQMjhpcC1j0DS+VHrYIB4JgyXacVu9PCRoC5Y2+p8qfeJA3OFreaabxWxz5omyn/l55+ufQkO5e9iODCdLWl2crwLrUpaMCi8EUcVXGb3Z8oBCUdwuuohn1sivwQp1O+DaRFYXIbHQibdPfq4dU8WeiYJ4WKMlNEuQr/BRIGwOrAIM3Ppjmzvh27Lyx6xK14sUHgNy2ggNG57CBbXznFP/0NVrUQef5mMdso3AJ33SJxInqYebzcZ2pEVYHYczXE/+mcptBHb4ANtGohwQabL1xmFHav/wFH/al8TKjzGnYiFLEifJHL7OJD0x/rtzWuCrDToEWPBNtRKXFZqz/kBH6gsxzy/TUzP6R+C/A456FbGm8soK/uYyafgNmX0re6fgXeehUvtDCXdAUJElJt7AMv+VMdIrrOK7TAaHo6E8Khx1rq48yOqMqtC08so9cQh/AV760CiEtSm6PBL7JKCZBV4m7t8Gbbc4TQRawpuwTFyS/vt1JBnAQUBDPdEddlJlVAfbGy+OKkohOw9BB/JY9rDZQK1o/kpfl82umHijUnj0gVqhJCsrzUxYl+ygkRPDEPZqUIo/+AtsGplmBSxL8bUE1iBc8lCtShF2iqMC1DdHIH1DcucbSNtxOF9LY4IMng4T9eTYzDr+gnOPVxWBYMambJUexTzxyvFOneFg3r4FBEHqG3QZRgnKISYUQKv9B23A8vhFRe8uNZpBtiMtXqOQlVEbO/HzkRbqVaGj4s2XRVlhO+ewkvEaTp4pNLXG1OVF6ncxf3Fq94KmGuG29LLsFI1fuX35J0TsRNGo+TCioyTrXLVEjPztNVQL1/q5tGSrMPhfJEaQxHcrnqhVVqN1gfF+JK9Pgcud/lGa+Ig7eKQpJuUN+PYhBYQ/b6ahi4nLNe5+d8rQlfK/gl3OQ3WDGWuUMOt1YlBKoX+99JWlZr6tTAVgDF0NSHs5fqbU0euO7cXKnvVB3taBFHP6/KKZCBfGqzNo6DgZgiAELh1EYOni64dmOWUuwAQCKu+L8tnTFLlL6uKkaNtO8YGlOBVU9mQFYx4aGPgGEI/HTycxYXBClfKbmSErtcsuhalOh73FnzRz/thPjvRJcRwPtZmCHs1nYjivLMWWGprl4fRUOlrCDiwNU+9TZuaVsuCxj/4DzKfcla139igH7Z+0uskWkEq/c0mrsRLlVpl8ln0G77hwK9rLKc+RLeI6KLKy3Um5C6Of3qiKNoY/7ad3EFvdP4VICsuTMTii/bee9efmKAiym0A+l3hS7SofuEJ46In7BEO+Kf597wnd6s5mL1d5zNRBdOEmfNKyPdUuCW3u/SfFQes7nYlfV/B1DOE9p/pmgK+bx+eZdZUMu44uBGlaPvej5wxU9aumiyt/uCCZ4PyO0OYfFAMMqTaYcI8GxYeHO/3tDJsJisLleLpS/gvPLbEksIm3R4OCJ21S4P//uyzQ4EJZyYmWZjtknKJbz0vFEi0zDWnZHl4kvpMSPlVI8cEAG5r0JoNN59joEsMhUcPZ1YtIDYX9cnR711x6SQEnBGgTz6d3b1iebIdotlgqE03w87xlD0+qEykcVizaOB3Z+ocaMGWybZTIdpR4niV9mDm65EzKK8VQq59iMlABk54A7zAlMdkYNmaRuWJN+bLJ7RqEZf8vrpM0+3cwD0NctuwJJA13JIJVFlPStNIXzAW4pp1OnTx3rMZQfF+o4p92WDkF2tx1MUdC14Er9l1RlYsEYnOubj2IotL4tkgKwnE219ZsjXb8PJFkzakaWhRBJAkgbR6myiYFsJgC/lellsN9g1ML0j4HX4rwIzHbq20FDkBdfqN9SUnIbJf0QQr+QxHx4f0kRekXaqKZYUXYMbRKa6OObLPOaKGft7xFAgT2pHuSw7kdfloER91zsJPWQJbkAzyDFkkgUg80kW7n7n+WBN3CMXA3lU6QR23Ipx/98577h2OGkpcp5YiTX/TikBkcza+iwBGNBi/j+GwW8tGbKxpiSNEQqUDdqfscbVMQ+OSYGoeQKSLwREfUGDjR/emc+ZAJsy3sraTZkpHFZAI69dwO1dvsOw/Q+O/2lgghmEsk6NKzmfI+OYuOG2UoagP9Le/y9UABk4VHk54+6fW891qe1yVDT2KUc5hNeePBaQwVb5BQYPt/+2xEpqsHC4GY37hXyRSGvfwYa7DGUDbMKd8vud28h67mpOl7fe4uFRe/HOKf3TFs+9RX+QpL0+C2b4R/8VfkUQOABt4tcaDV34nU/UFXBUDvPYMYe0F24AZPIWphY9bLwt+tWvmuWwhvAgPN1rxvo3hpXvQNSPsVKgFUKENrmSCjWPYCUoQfJFpepI6oqpsVwJt6IlBFGO4soABNOS2KtnF9P7E9sSLK1WWOdGvYNhxKO5/D5ACMSM3oLy6XvjzPe57hP26DKKsIbhLZqcz8tJOcm1zlVKV87cVqDh5iOgGkNIKp7JU8eBp4VRPvv6peu3DR+ROhro3GOnpo6Cdltkq395hUi+pDXzwcONA2YjC4BKvX3JGZi77wJboSzwwPelRCe5297Gau3hHdjkNfDMaoCdfo4BX1IthlFNEHUm2nTsuiPe/rOux7FSlxIwT09NqnvyBmWQYcleqlPEreuoCZRFvXL07v84AxlxNdJM/atDmCjpmzumIoYOf4uVqV/8ZnSwV78WW0S0R7AwI0EDq4B6IaI6AUBwPrNLY0eeSw24zQ6qVAgBGW5aK79Mg+Skj4XxdPl8axMl4x6nwmnAfEBIju1ssp4yr/gdi9kl+ScGW3r5NVqJ1fXRkW9O0A6JBottvWGypQioSH2C46bepNpt5dXRK28XY0hseEnW9fDBaUMHziavWy8Q7jttulrsjOd5WunqGz20rPiwX/3fdKuQgv0g4CDqGBMamo9htCyKqN0qTOxWP5MmZG0lur+eIMwtcrfYqJujT19J3dps8mrCySt1MRdmlNIykG8cIMszw/nMlRV1DmpxNn2zf3gflXm1sXSH00EqrICj29dnyNSbIteQOqjPLqBf2QDDVVCAgcCz7vER9m5X4XkTIeB4ppqaFa2UHE05QSkAhs7FkyPf40UFGlKG8GnrdKq0ZLUk9m5jleTBwhdDsYP8HCDKRE6LS48qLHD4pvSl3XFvmH8KBEmyeyNwwJzAJQd8MqhmKsdandB6Ec1bHOw8agmVGP/vvY2C60X8AnR2r2HhdkUbclW9+ozjmxmipA1AJIZnqxg4aa1Le0RHfU2vkpf68y/rFMYgCXue7eNqxoS0NkOw9a9/WcDFJOh0Grb8zYjPgaSDENIFMCM0H5OlIqq2r2FKGkaQSMzVm87r9L7fysa4xxVMD0h7CIExLBVbCe1/r/WavK3yPhHVe3XBjyVTDOqI4/90N/Cm5KnqxFrVYOHbwMIXa3GwNwVME+38OpXvNwD6l+jN8BDCRDEjGDFC+WObTdm+5/tfm0QeEfVUYFtA7gTobiCnl8rywroMyBHNClofz+W7OhssrGuos+fRhh8kBA+Ni0fYdhKK+qCZaY0LUDpn17UUKCX6dOZccCYzSsD2iSQP74pFnhlkOzACsapdT20zbjF6ZqLgELUPT8IglaX38zP6zfdyBF+NjNf247XNtmIz4QCO5iRy/GcS8jjaWMfTxI3EbUvzrprtgRQDOz/eMnyVQVbbFiTMZfhfQLeu+j6iY0Qs/QYGFdHefwzAYuVpPhVZK/tXsy6DAioLlmNDzAu1eQ5ihCnobO+MOZtSD0+uTpiOAvPwGWf52xDUHj4zbdFtZULPV4c1TmWflDGMkg/Ia6kPHprHErwFTGoBg+1D6oX8lSPdz5srAF0RbktUTmq44+USAYYowZQOVbM3BWMc603Oy9SQD3buNTgzJ7yaMBbo/pjkzVrpW5xYH0Ra11ykiz32vo4nBg9Zvm92KHWhJm7uQJV5DMPA1JHBWBMcjz/uZupwXqjoTffeHZ17N3waXUaR7cZDs94ewlhsbQrmI7/A4zJDUZj0qKiVQhn3f3AneEhDwl6GUdCBdKY14q9n6ay58twW2PRXXPJ6UE6TUs6oqH/0xgDpP3bx/mfcCUy5oo91agCPtpTfowGZ0tyw5mIOsUqvdURDhjuWLX/WIqaPlYx3zmJ3ahTcxtC5xQgKWrQskF57LaOvwYN0lzIwz/joNYkiZwLyB7Joi0CsWWRC6SapEN5TClIisNQtNPmfwKaKYb+Hguo76RtcQMXdRZWjEJNHq8KZKeg/uWWDOW6aygLP9JDrNNW7JfWDyHPR8GL+29zBAD5FY1WZXsmYfdKU1VTLLzAHERJJGTpwKZH5k0uZrDYM8zG9WX+RVDM8bsmN8cI2wKz0Td8GEq9T4DvY6FuhMsqPGHC1tkLdxuwBYP0Lu2RvjXaxodrZhKfkkIwGcfm+lFS4WMFPCz3FwWwuvNLNqv7c85xnk3aXWl49yCW0YTzTqwyKuKWSIFJum5G8BBjvxx2yDOZMh18M2WhRGX5VA0p3eAilBsGa54P+iEat2c0lLnTrXg7fzDLJrjO/213hRmT/92zHwHShntUiR+9KUWKWRcx9OrMWfefEo/p2FR7dbNWoP/P/se7JJUfBzJixcPvTzMvSTQrccDAmpwoLnh6pnsAF37U9Cakvwb0EZzywhYhfUyAZ4oAu4R1X55yrbJifKRbLIC6NaYqZxbpzV9ec4/SFSjJKEvmVGa9tHfUJayAvrPPbVHNaxlbdJOOn7f43GTTdGGufXu/daAhuYtol2y5rFVUxlDpyKCfYRz3fOyJZEjhxizetlF5kpK8kUuEpKNWnSG9VEdmcn7Tu0/U9Pho+IZiTincXepD9zQXGusmr6j19TKRCe4dmbGmRl1cDDNABYeOKT51fHc6+d1Q9T2n1UMmkd+aiSUgNIrogqtnInezaEs7HmtmpjKttWg7ulLhPvEEnGE5TqPY3iCItPzYojGET4V755b+cNmqdG6OBTlbYjDs4AAp+ho1Iq8R/eWa0/FOyB4K5JLQ/WqwpaNPuaoufHcJMEld4peiw/7uIRZ9U4otV2lACBY2PfSUUu7vJ/iZUtvPoJmd8K/BmbnNo2iumTtQxEeARnjsHdzf1JrE1L6NGFsI7t81c5GCgmWILKM5pWDA5HO53I6aju6916JkUl1YcYyk9Hwwf/waKzGbNaeXD2d1jBd+rriDyPgR5p32kxAb41vjMM5QjUrVztISMmbVDBnx2qArnLJ6ECRGZcfK4U6LCAMxRtE+Y32MobWIYqbeJLCsaF4pCXyZjPABVmN36NRAavX8RXO80JuF2m/Snmg2NL0dSW67EVH9I4fcFSjpL73r6ohLh/V+uK3786Tpz4u9p1byZEEFVjn4eK4wBNeQ7DGhdbFbRTt6/9b55EBMfJGakrqZ4U+Fgnh2uIpidUcG+iBjHE5HMRX2ZKkKLyYQElkw/Kbj2w8OvDaxd8rzWoSUnwkiP9DB4L1FBdrrf9anTqNfPehHTBlyG9cgcQLrR8tQEZN9zuxs8BV1Zf+cIk9kSStcCODphQCbZP7NYhgTuqPh967gyo6DhJVEeM/gq2arEo3NkVtX7D7mzM4zzsjwEazeZbygY6xwP5F5NLqPJ0Hxncni2XMn/GdHQmTbQF1zee4LOhZaDlBzMZLsKXcJ3sJsBmPODcSW/FKYiVgzz7wLdz0C3bFpTwedWpIZzG+H0kpS6hOFF5yNj/xUGHEQK75qxYUFuXq2vFITPVf7aaAWUF+eBV5VbBqFcUccHNaTmGaDdRTdXTurKJ8ATxX0DHWz2qNhGP4nrYJRCKI12hvvahdfR6RlR+zca42mjybVuHEEGrU2KvnHy9+mmlQDH4jYHZKC6knkne5Q28ldgrISAF0p2u8YVTy2bGLZqUkIV6zWDXi0DuZMiQhOJwUgZQNnrjzpboxif7CaCAFdxHukA5fPTubF6aLOTWCnS/EP8ZSOIyNGpkn86BVLEgxNoCo5XDdJHdnSB0Zy+5O4NQSsoKdZzikwg0eSvXAE6j6WW27irlXjNHHxiuOY/LaFsSgXv62JfK2/O09r1DMjpxv32Y457Wd8wFBf9V6i6CdLP2Z9qNFsxcP88S7N6b5FAkZAkO78T3f4mpUVnXed/QQC1AAudBr+gg118i202+jHf4m1tBvD2iwt/8PqoAWQSajReU2kDJ91lZ9cqfgKVbzge5mUlKDSh7aeClFOoVz9UEdTQyNyjj+u7JaX9DWyqtt6955fcvBJF1aKEjjPQjYV4+FQr9Fnd8NqWavBRL91OUcILzXVselzvLQtPmmvtdhkUNi8G+O+b/qcVyHvls9lJjRGbe0YWtuq9zXA02yIjtBjoQd1vY0EmEFvb3u3xiPt9Wix6NZ7ljWQVbw229SAPrh/hsIECHTLmxKxWD3/K6TUieQeqJIfpcIoOQcgmvHDyyRUevzKImeikRzg+ly1+qSicz7hh/DCm/39Fyk6M86XNkhcEgJKANNt1matUHBPuMmqkqR0Irsee0uIofjg8efSzC4Ml6OzAV1PuydANODV+SaVqKrg8qTvT2ROpiQHqoOAq3EdFRo1QW+1ak/AYmGEVA4cF99A82GRm5mLHhLHqOSqBVNF5d+tjFko2morW+bAtWqE3Mhi2uYPJEeL+puWOoJaLV9uHtQIj2GvjqEnPiF3gSNk2kq1rb+v31DDwcalu1nsmfE1n7J39uQgliDyyoBoudkZrUtnIUrDsC6iGs/DA1YU+EpC8VYQ4iw91D0O8kJIRK0Zo3YzUzYnm6vxq+9EDAP5SWf+Eyupwlhcyq7rgfu0UcsS/cyy18bZBvpooyg1q0GNkTJ+MwtXBtDoaChHEqMdF/a7GjUgboSb8jHDJrfqRhQ/bbI62r8nHoOa6UgOaJLxxg1EhXpXmkd3Rch7uNxgpPzxP/mBdrGsygnoth1z7Q/YLYJb7LwpuGREdhP+ef4imi3CBmJrq9pWR8/s43S4uxqNYHUv9ha9RBACBhuz+S4xTQTZaCKSoDHnxC8CxGhiHczvJUTlt4rrWQpu9+AvsrR2wMvwqpTTd2ETTsO/P3JJiLBUvcs0TXCPCRY2h9Nx8ZqMz8XSEqa9ByDLoNM8PxxK/62v/Wkztb9dlxfHsl4u4UjIZo5lD7knNDevOZvFRYHhwFE22lXrX+Sffrt3y9R1DKaG/GlAPLQQX/Hetzpmce0TT69U3cFZSUWj1hcJa25OoCXx3O5jXSizjPu68eF6JRu4ly0GPmihJAcdY54LAu+PeTtHdGWaRfb6RVp9zxwP+2PoTSQm+qFhD5LkhsYuT1IwWLIAUjU9P0z7IOUj2QP4sYABt2vX5hJCVUnjOBPVGQTmwyR8LSRc2WvhlmD4DMitovW8AmruHvsuxxMnY/ybXB0f6jgvY+7tMu0sJN5r4DBEBXa37SH5PepbiAlY5L6+09qF9dbg57qZdXr+Lkj+9ODwIdoY9Ogs9QXAMPBK9sNLNDM1mFaODMVpqeBBx3+/X8BkyPofOmxl+kYJsG1PP50FDBXj0A4uVUwSXOnyDvjHd5pupMiy5DyOMVDjPDi22YVTeKKPxtGz5/wLm/x/DzHO4PBKlriUyR2fdazZ8MZwZO2yzm40RwLqezNhsNT7aqhOqWBMfTbYcyVtVzrROKLQ/cw8h9MBYgLQZ5m7RtajLhjAmwWRubbOysVY9+MbTxulvSqQymjxTj0/yGmowXOk8LorLHbyciHZbi5Wipq5e028xOnXPq0SO1Ei/BmXFCr+iw4toQwld1d5KXZJaq1eDPduqLEuVRpKA9CzB7KJsTTpdrYpMaOsIFM7Wgr9Oh/caoRAohQN6A6HSrmbUuxffYlS4ymc4W40QYfauuqpQ/JTXe2l3gW1vBU3Q0CQWi+YnGMAlM7QCe806vIrrgQmejgYb3z21bFn0KNZj8qMbtk0fubcrDYYwmBhjZezZtAK7N3MQKKCODWwtmN/WYEGctudKJzRB3xrBGIXPbh2oyOsQ4psvw2packPl36ulG2AlW5rvS3xsDrZG0jPgcLNOBZVquBKudvtx5EyYnivmLREWPn30cbkfL4RsfTwuJVSFZZJFh6UkofGq/bkz/WqbPwyDk8xppCVNz7JQstijvxEWrb40THMQJebLnzyY2q2jx2SLecaR7/0b676f5ddR3aDQqQxzS6YlPvFcYbw+8vic5SAk75H9CSsEorQCVlJSk7DU5HBRkzDnV2QtTJe9fsfqy1sQNBXqUXzv+3HDVDSjlHNPKEmNGm5+zlEP/Pa0mLR8hxOG5PeuHfsO4YAaC+btxGwKVWC9Se7tv8fBJBx1n+Kox6GyPB1SVukkNQkjh9dl8s6dR8uwRo6Ep3zrpyoDHwNvpGU0zV5/27gpveUjCyrt2ZF4TOPsS/WygLkfE2dbNXsNDXjU0kggbh+REnbrOGVNbeYAoc4ZX0aRdyTYOFzlRKaGo4MoHLkMH9FMwYlY+jItBYVbIzsByLIUmu7xM7N3q4VtOAzdBtYpwYx/5yTIIJ9yh2VZWg/uPZimDRgASUeaIeF/TU+n3NBLOkQvsf4CKuJi9s4FqpE2p0HLaw6yIcFU8mcl8Jx6XPWv+eL9Uv+Eyr1QVYQfaJcVwJ6kjFn9GSZ3uvbIxaZMwi7x+nNLp60sgdzogotqc5oVT+LDsygUDk+S361me7L2BWYFkcDER/Rx+J0tgDZ6wwKRu7kFtxCpqtt19WgsF6LzpqmDlLORvOsY68JnuZgBdo7ozFmFR6uGXxbySNeCvPKl92vkVsYEYjZ70nSsNQz9WiIy0pcd4Cjnd16gHVj3X+IIr+ZH/gTnYy0JQvVtpoQKA3yqTH8ZK5WAWFLSXjNeHCwtYmaan6uJoOWW3ktmR0n9j0uxSEniCHfobcaa4adhh6U65iKCHer9DsvpoFJxkj5jhGLhPSjJ+hLddzatV/1Ocn1CE5uZoZAMtgkhUYN5zk9+VUjJxOTjDsX8kQFan+fCSw0rK8IhXNp3dynfHXSYCNq076Pn60lpsgbLC41pl75UNjAtdkXJ0OFBP9SOFxYd/qxoACmCf2c4BNjgll3P8P77ikGQPLbKe6Bprf5RR7SLTcoLj+WEriYD+XvlnCQ6gwN09MIkc6PH+xS8JfJD7iyBoSsLx/L/1AzaxG7e0eIP2dxroERhpC6jg8arrg7XQBksDHIJZIPRhy16WjWaucMUOLtxrgBU9rezETjoCtMnBYdaOAagkVHdueRkp+p0+SRoZ4ejQaCwhOiYRYYJC7NsV73oO8dwYLioC3qILoo9B/eMud5uERJdTB+L3gaZcXObntZ43fegezhpmSwHyw4dM10xfsXF1MY5XAR1XmGR9Qz8Yrc2BSBiUUf1wSye1tGQLKtmsheBI0zWEKzJu8/tdWQ84lcWgnXo9INPwDU5XiJi0OyBQbwRH1ahR14L10g9kAYWlDK/0N3VzcgYYursjTtw/2wSHmfTGJsx5NOXmMmVliBLLHGu6G0jFBLZtUkH7EzFzorhlKhKRrLqXXlXpO8crQ3CHEcZLu9XzwCc9SvkPe94gxwonijdizLHtGfLLKLF1cdtXMFa7Mf4P/JQHiBZIRXBzCKoqPaIuvh7X4/SQdEJnxbsIECUF90ZnrLUpBjTXiX4XAc3Mse7eTXKyZp8Q3Sf1S3esZyDQl+BBER4PmbGOeQ+K1112FbEeyqQZg56WiQ0jRCUmP+Kew9A1ZxSjutLVOfkpuBwoSkP4RGNoe7WrmyTXKI6nk1Tnz0oe2Vm3PjBDf8Gwhe+fwAYSAjlPra1TtCj1uu1GcdIAm6ViQn9Srqf1ym9fPIxInLxt48mCIl6DSTi4ZJ+XkJrz2dXWQqhpSF4nNWapdIjJH+p1Opedufkw0xHlr4vORb9BCJ3W8vAPdZSqI7VxbNaaOfqhI/8w7L9horVKv7MLnEr2l2XgUM6+i5Ix58xgRlYVxa+ltEdaupD5yktPEOlldMIatEHTM9j7h7hxVvQPEbtQP6BmDdVaPz2u/o7+Aiy4lsXGE+Km2ss6828uqY4y28croxcwQBaemP2+4hEA88WmmXnQTmIMFje/i5qVzP/dynhApy5GEB55hU7+jPdveexxyrULupZB1hjyqISvKscuKXOXZUnp8dPLlTkOIlOhMu9t4Vx5PLPIDK0SdUiZ95AlS0+/1macnq6hXYYejgXigt9NePxN2PY9CC0HftH0q8httvBeLZ48ootbmSIZgK7/Wm1zqq/lUDZBL6CYC5KDyLg/WfRKIQMNyN2X432uLr/f/9AoV132hvDNWvIbdgJKmzFwnqjd8+MjwrCINW480Y/0ve7EpvtXHg4WzJv5MuILg89gjdMk86QRO9Q/YKdmb+HV6eMqRTq/oudO/E6zvH3NzGgHNz/zI4Clc1kXUMDTrnDpBI2KbWe//7iI6d1A8nhX4F+4tGki7hfsA4VOK83fdLmcdAGqQRjtItVXa3J7vhE+x0h3K+fVJpM2FZDdY7gVF9ME1rtQmyQOE+F7b6vQAUregqMnIegpxtIKRhyTvfx+DFWZLf+VUZHUO+CicH8sE+9LpldACFUpG+WMfE56X+8xIB5l+Eu4ij2kBUNYythq4o1kyIEuD1kt9XQ97gS9+waaIHokWae6jm/Y8Govgmk31Z2M0SBZAIeudbA/y6RkBys3zsWVHoPxD73jIs92cougppJ3Uxf/pQcoOw/qt20epdVJgHhT5/Rg5mNf+bvQ4LJnwSxs7VE9Qc/myZF4IFBUAom49bMTIghVW6RJ2gfXkP6ovc0THTEpxZWx4zTkARVTfH75vftaIkZptS+h3ERciwL+zFBfxojqrdRqqdkYWAVmXpf+ueckOfXPrN5b9eEwl8OJWgoXwyPM73RDn5ix09+qYTUbhIRquBAIHnO03H3q5TFdSXzP+sPDF+FV61ALiJwLttts7/NF2qhFJI57p4sixeZfoEtm0Dg5wGwPCH6tc6aqO8oe5R+IkDR8TuyFEN2w2kBdTxxvejaSoap3bQlCW4svakUIjVrpe7zCbbcGL0xSe/T3hysCfb20Xj0oFitmmY1Q+1QAbHJj3MfeeZfxuvYYoF7mLnb9sF2SPQEFrRwt08qapY0ODw4ReEM3TamVg4j3BvgKWWLIeWrMXPSM+I3hBzjUn6TbqMNWIPDWj5FBYrWBwXYB71BOpmX+5iYomjHoQ7LUcQ867QRS3qZXYnBbLy/FO2tEGfzE/rGyNxED2nvMySIIs4Fx3fZIsIZn/tCkocG9krZ5TWha4eDI3zmyCQeBMYsXlRDNsMfjEEBFh6/Qhq12c9IUp606kEY5bwbG/QnU+IAyJhlftn2f8iRL5A7v4R9oAJGU2GYjNHqZUGg2z6az4YMtQyXcV9X9WBRlaYnfVIRsmuVGDhDBIoG6C8AkCK6LdXd0NgeShgVCNpx7iacd6L5r4rVi1Gco6rCBwBfwyIJs4Fhnq8IZrURn9zhkJ2FenUPijnbIom4cDNJT3zqMfvySGt4ko2KqwoGDH25QLfuWMbcuRhuQwYKgCX9VgClxETR6DM5DNjTv7F3ysG0kI8NKZ5AZDzjJnJD4VVPwVR/fNKHpzgM8QQGSapVEbQCuiSw0xjHphp0eDxZeames1Mp9WwQ2puhmhj5ql1Lv0eYJEpN8RFa01yfNY0KZkTpYzcO/Ckhbb36k9esVXSMPl1G/K7/sR9Mcqvz7tEmdFwGaO02c6azfLxlRg6byx5y5aqHXBgH+N8X+0pGSjHsaENs0tEcJU4XtLrRLBJGIFVEe3TvIYkvc3siaU1d3xi9t7TPq1L/+hMRqojqmp8jBLyo7KEuYZeOKHFM3mUkV+XkyhiFhmwxtLgSsGMbh8fE6hCR2rTOIinlmsF74yj7IpViQkLbyCbrvDt5/yX6I7Y1abrFs7QBI3D9QnlxlwbgZHvFTKeaFKcI3NvUQFQURMimQ5M+eF6vwSlYff+7/cWpYmvPrIh9BVONzVYOe2tQdAWWT5fJSYL5Upt0L6Dl/pZObBEdo+FPC4b2+iU09eJ6vb/kc2/uq9CvCUV9KB+C/CPAJdOu7vq8wf/Yxy8081PEnm7VGsIzzoFYnDvfYTUyPhdXV2yICWljxWqkyEe4e1n+SZCRACDyiLTdzj5Dq5ThMdA+CNJhV09iM2iW1Pgf2XiLDkIpNo8ugDtNdVTMEBsO+uHzrqEI+EwMOFr2gevD8TkmyjvrYH9Bw6rkARUFwc7DRpOCIaACn2Edjv7bmiS3MFeVgdj1y0Rv+v1DYqY6EwHst3CNlpq6XBW7Q/fu+F1R20aHUR5Z1LIZ7wvY0E/w99bKzAyUjG7671ZUYF6F5+Ynv4Cm0twLZ+GTrBp8VL/LMeq8XYgzYldrklMglyWJS7iWBhdA5GraO3m3rO2AorN4N62bHcpIhG8kbvIkybnRVTEWt5a5f7iIYJN61OO1gLp+lMKa9CuaUR/y9eoF3/jHgqh6iPSadglFYQ/GTsLkzIXMTFtBelXwJHtvmQtoXItuOsLGvL2IK/M295YD8SaNfSND8zTfgUXGYQRyrzsPYC1cxWOto+YkW9R3EinZBFUy/5HWXF6WeqLcPADGeJH3U642mjV9hMqA/GY+7DcN2bpls25VizlGv+FyH0qhDmmd0gUS8y90rDX+Xk6y6McJ6S7gM/DYcoTHv/2NeKg4rjMw8TqrlL9LBcLKWQxtuJxVX7ObKDCs6fNlfUj6iRrGPFdJD+ziFknCJKgixZ5RJQEQZi2MefRmUYi5crYu3Oh50a5Jf+upvNzFAo7KhxO8WRvoqnLO0wvvdcPsaVUOIcvfZoUierdTyFyoxwnJI91KCBroEodybtBGshuLseewOL8RJP+H2Oqsca/SYdeeRtivXY+FFQeTQ33eeX3DdtS0+wgHXVCCQk/CkG/az4aY+ExO9eyJRmpeKAXose57USPZEoRKo6m3uIY0rsGhjw0xAS7X1DuBTFVuo29v3dChgu70cPjpl5/xQmrPdA36PXNZRWOszr9FtTYYxG7dHUooremnYo1QnUGWsN/xygLq9TDGLLhVH/pc4pD+15uGiALFzU4PINmfD25G8LAsJea1dQlpC1s7rkYJUQqIwFNDY4Eh0dawLn8fCol/rhUCEbEHM1dJlCBpXxKfm7zt/ZpsbXgy68nEkEoLjs9rk0E9GFFZoYLZv/4qZR7nl7qBbeALu0FWvdWoNb4hCvlkME+i5nbMafn9uVxxXlpXBlOxHA7IKvKJLMXQanWkuK9A+2VI1JSDoY06+R0/g5TPJIHfO3roljfhM9ncx6Qrk66xY1H0+2UgF+oQgm28A27u9+T4rGo0sT6suA8Jdwthg1T9gojZro33dFb5pubkZ5ZHchLzsKkibaR3DHxf769V4iImNuKKrpgMMK8vcvF4YgFx9Asca63MVyNPtp5+zXPASns3bwdmsxnn1S54GTdkB4DwX4L7JXMnQGqIaS+mPgWxbIZbFcDNIrMilEIEGFczfvcACtmReTyzqnpITyfsh5QK4RKX9ZWtvUy4bWXjsLYbNV7MrrZsT82c9cmf4f8I0sSYqVIlcUYgI782imxBuEKs3OWcogWDmwlr9TGLtVSSTlyzHUW4PU9f7Wv06gLioBSoAf5esTj3FD9kKtTKQZfTKEIOcCYWcfIk4IkcfoFGKSLqsHhBpBOTfEJ6dxkBJXCSlknDrb8XJYO4/96XFd4ThAg4/Heg3u5p1kP3QG2yMuUrty2cFQaT3cWMABIB2diEu/1KfFFSKbfjTp8aUhb99C/ZA5m7h8JWsGwT5Ml9Uhw6CmNHyRA15TyVwIsOH0I1tFeVqQaoqT7wGjyqrJ9bI+WtpjMv5CAGQfj+k2aPOJZ/zLvxAtkd/Bzh9BZPEwVE0I0DI82uWK72P5+mHKig5zbXYrQE5bSNA9/gHvSND2qLV3hLPnoJp5q/NeZX7mhb2aWf7qkF8iM4HEHQ6YiYA+E+kPmfMGabHq62QBi8sSJ3yb68iTcA4YT6f+gJb6G3adGkY9eeu7XQZiQEi2fXRSKUOj/zLkyh4R3hOAX6xhT1yCvCHT2Jb9tAzSMxe0RFbM3g6b/VHgP8nyZkt45j1ZYBTwOpQIaFU7nU5focNbiclNOds9b6I+FOnBXwyAf1ViJPMKBBofmR8wg+77g5o3CiYUzQ+KdNxUo14XQc58/GKrIq3XSIefM9azql5sX7KlTsU8DGT1HlHIYnd10cJYsAEHoN0mLKcHTySHsjTFesKWsmK+siZFXhlavE6F44mweXOrX6FBoELRrvIrsst4OH+O47VaML4CK/cNrjlTodfRr3u2XZsHCcw9kXLGX/15sm10DYmP3G3387x7LDyVoplrs0pzIvfcy41eb2Ob/wM6tQNLxQKnfSbL0eyYL+RWR09qeHT/lWpCFvcISYlmdF/jMaIWDyxE/LA1tguYOSiQtSqHfgqHr1n/k5nFhnUBnU1J1eys/8qySmWwIplgfD3uNcFHlg6trf2B11Om/f7E9onO53sWHhas4nNuhBJsUn2OjOnOAFZi2dcAvexHytVxIdybjHcEdXUcp0jkab19hwZ0RddTUGjtyulBmpbfGD+4d+oynTEjmMlYS/pfoCyhEk9XbgbBf7wtFs5qleFrCmB0NrUYZLxmw+2wFqYEUy2hYP3ZxY8uhRZeFXZfhOD58zGBx7lo4yMjiBc0zvOGqVQm8d4tk1CRpyGJOGJWVU4EpHPxqgMP6hV7f0IxJugziIEJHavrZauRXe0/THYEOKpl/a4jm/fah+oAzHRBqwetjJBSjNp5LaZ3ZUNQElZJBDOF1e4muumSHF6da394Cvppq45QN1B2wYBfbx4Y9fnq5b+heTNTCmP9XhMQGniDhmdhGzfPUY5YPvTUhEcaaA2ucNDUO/xvaUVhXDIodrM/05R31bnFkjUjn34N7Aiuagl9VB9SjYsu83Ws9eoevaZVwZMC4uiZko2GtNzZCyMHRq6GKhvEGBiM1gLyvMZk3eR2dGcn19YX72JnDBY6RWncG7lGAg0YZR9lyoCyQ13gtnyBi05gPlO9yOeIYGqQrhgRpR+pAvx4czdaBMpVI7SgZMAhMSsdPUEQ9stTtwSabBmrln0uHsOMhDvi0bNRUWUmqnu3eiLgzk2XKGyTaHCe59vZZcmDkk8aOO6pTw5H+DWALBPMcCOmfIz4cF9E5zesXbQkQNDFk7vlnAcetbpid+Ce9MnTb3Clhv0lL7lyusJYCpLpalVXmQ67YNR+IIDh9vW7XeWnU3FFfdnO0yqCON1josSLVMTTaH/T3Q7Y+gOUofDwwXaGyGRB+4GRC2kk7zANlgd7PmE5kXda4IpmTbP2OqUJ/O9EXW4aslQR5PtYy3tNMamtk4Lwzb6WIFll7MVBneG5vPfEGslblvK4unzLLIvceI6WxhiZNc/nr10k9nn8ikKPz5jmA9oC+lWIE8QR4XYTcO6WZ7VMORykmWLBbTE1NQc8/TBpYSaYjlsyOK50EEwZC6/hyMiltFDU/OcVfSs/4s0Rk68qJkU5mIFxzQcySQSzLKmqQzkbb2ZlC8MLMP8Tt/ui2UK3r3IoyOWjDNfAV+2/iYAbaU/gcEuC9PqZbBCpHpobrsMSJpIpAbdk+lZArMaQfdQP2kY9Krk6TsjNb/ad7Ghc/HTlJyxRISEoijGyuLhUJB5Ch35PrR1oibmRE3vvhC5cWj/AFFMlliT5ELHoj9ieMLEG0BOkVRUXKuv2bfaF8AdXORnzTtMfXYqB8UVY5TvybX4Mkg9YXaiDDrp7KV8wVHpmx3MIlmRkznG4Q7DbYNTZBEi2yxQfQW37NrAOyCP8AXP/EHi/BLLFg/ip1tleZLojlnpdzKgSmJyi4IRDWNifCtFxTRjzh2z9DNa3KUZLZnixrksQWHwp2gRkmuu7HYPHYIQrdjih0WnNb7CL7hFDLjbfGaVLQh5Fu7SHtZTqDYzgY4QnM/x2PC8v6+qmCAMbOvWxZOIxjgpUF1ud2/e41K1bJAXPTZ0ctJLsigJDqNH6fNsXGGXNx7cwJPgP6INK3Qxc3ylfv0L1e9m37k+CqkJJTN6MvvQuae8WjO1l0JvBh6yHIrZgf/Bt/DNS1QULgHfUCLdwH6GVXxn8JChzrTEJL4dTZGD6nCwPWD+eeU/jxNc/wph/HYngIZcSTOnA7ZoHemc7pUYXx0Nr45Sbce9CyAvFnCzoIYbXxoDXYVwt/7sf509VEfvoLzjbFrRKr4vntb5dgeDiwRX6neO0yQZsOSoVjVvOOSAuP4PT+ezKgOTL5CMeBFh5fTyCTneXHNexLrs1pBpLHH3kmt/Gi6938ByjJyGR1wM7/rvRQQoS1drQjQ0vefqIJKlavxUAyi0PuILAyGGfaeCzz00DKjY1cowpRuwwf7rYPEZOByjttnqj6EUZ84F5gZp+4HJmTpMjNq0q/lyKFhwHKG0wkVp5h+gESx82VKGR+mbao8YOh23JnEy+eNJ45yos7d1gFc6GC67dt+OzE5TpAYicEpe2YtuuIHNt0hQpdLBdS8eqx9D9RSrya3h16jYIp9Ogfv58USTrQa6bOJgC6Fuw3VSohoUOQpQ/XY+PVKw2eV8Q1N6yxzymT6QIiLizm3kcA+jtFVJVj/IlTTGr7Tj6P8fQmh0ag3AJfRbLs8nmEQ1QHGUtaUv9djTgKNG5hVLyiujHLL77tNlHcYLwqquU6Z2V+WMoDwfBiMDqK39/tNhs7dXQhQTHYkold5VgNmV+WJr8ETyoKTHTS8g1RZL+KCbZw1LZoGTgR6eNleq+XGRggG9pbw1+WcW0jzJpvQle+pDWTA3yPaJogeuohg7EijR/48Se6kjwNpGStelAHWNOtzrfgmNxtH9r1eSRWLz79nRNF5th43Vy+rZ9FcwK7PlfJojQmk6yDIgDVpS2IJtFflHkl2pdrA/ZK4Grks9dfURGUNk54HimplKaYEZX5dE2M9W/60vxTLBE6XeIZ01h4YiHBHGMX+eAHZAHpSk2dFZUbQL/ylbq8VdzyOCnwzB532xAsz2XqmJFNJCZ6YuvEpyZtLa07GuhPki8MeZUI63KN4jC30SSX7/bWpsMyfpqrzmMI+cCYlmRUB0Mu4kG/untuIlFzWG2JnuSThOvNB87WuxDF4K9MPLtApA2nPV+2yMqZtQu/5eBgMzg8/6FBhddJz3kV0onK4Jbo71w6dhI4czF3ksh7/wVe0vAH8B/pVGb1v7xscPIhg6KL+hvTtq6g1+kCPpBURUhkj6yrfPgZ3/Xtc22MaQJp0ouI8smF0IW7P8ZfkCNRlxyoz5rOlXJ2YoBYf+hZJACLpIW6Ecg7s2fptIWtvuAgGvGV7dSNLkYv17ghjkJQx6tLucnApd6V56PAKNj/7Yyi6MOC9uwvXC4HnQSolMT49c6/5ZRIfWauOyw+arQBxET3gqjgZPldHDuhPDdYxffuJ1ityuwa75OUwVzCfQ3DhhKAfuieBFYqqN1i5usxjNFwKad4V39gjt2wLjcS1yX59qz0LCyVW9KbSYU9A28hy5DC7hdtdQxRU9PX4vfg8R4KZzpT7OhJe4Rwnuob88KsYJT3Xdb5uQj/iI2b9k+IAL2RazReg2nxwi3ia771jH8mWcStAs1NJu+cMgx6oarFqLe8b1HSRxQ7za0WtQhVKdhOSo+l5MyUbO7l4rtMf8vOidRDYSBoESyiDirZR/lirb7mNwOHR9B00U3KDHjR+/6/p0FjHCVpWNOzJcWfIRQkZ6XmbdXoGNbYi+/6K31kVQSpEiFHlf0XTAzQKDh03BJv6aoldSXInQfAEINY34mN7TGvaILI1iq1F8qQD9LdUyM1y1GkmIcoViAyaqPmTF6srtanuyTM4L1D0wyuj0tEVAfuycGdwEON4fnsCqlt5T6S1obgnUutprS4s5WpzQgzd4U9TRXJErli2+o2bS7A/uISBZhgh/679K/zLda6gWtuZwAvTGNdCbAN9uwZti3Hk9kKWrIq/zDHz00+fSYLcc5sgjgY5sWd/F9nGirgGojICMTxUzGmVVyjsC+0iZ7i++UKuLA2KCekIgylXj+DAZVKUFgBgXYW5+1bwyASMUltB5MhCcaMuivyyhZw3MJ7OjjmJyH+sH7zwWOwFaztw+KQpl6ETunGZ4wgXDkkep9RDpXHKdERy5R1KfOfi61l4kXklOVi+UvIPbGuKxTqSuKxjgg5aUU0X3V/EKdOugbYyeYKlYTyfe6Py6u2Z+A0k4k2giHiUVqkoC8MKxTXxmChSs68WryAMhUxyo84ORdwTONcLdmrVJbnyH+ugmyyx9iKEPADsMijuo2U3uJDa7Wnfr9gcycQq006VxIwrhk0FV/BDjqzquNOsEJXdrimGw0G+JVU4/5BNk+lE5kSCYz9cOOfNBtbtPUoVHnu1jfPwwGlaTc7GUxPcDFnEgwaHh5znVnSwPAAdXz5o6vI34Epz0NKfx11wmUjfW8nTAn60/CwPV4XjHM2yzXbq/EA9hUimpPyH+gMWQc8fiEpaTtk7l1iADxvDO8EMdlaQ0nXdXnhCuCrsoC+Uvlb9IaXpTbhDyzTzYYUPRsJ1khYU6+UMPk1YHn7mE5V3/F28Yia/wrwDdF+R6TmVzsqudzix7NyUGk46wXs0WaHIURcZDicGiV7SEhoVNTU0zgBoaSd49LNnCcmSgWRMUa0JKdpcVnfovdDcIyEcqOXD4VeP1baW1O5XKi8DuZzNuEL/drafxlkHz2RIla0Jp8ILNn7S3fdeg9UhAx9q0+SKtkZq2KsJrdjjyAjr3GfTjVIDAz98414NxYOtS7EWs2ZaFK7+4WBYoC5Hkeq4b/TVXen2W5sxGUXGVbea0PfIOieEzqtacY9iZH8JBwrLvaO9mQx8S8Xs1qoQA5mRuhLUFIcDGMj1wJK/K+vclB5Bl071Plrpq5+L4WJ77f/haemR3QBDVN+DYo/NMMFkqokI7b1nRwuzDmI5dEx4XMlGANd6UtZZVQ12+CHjwiLfAM9yPWaei6wRjGbxBRZUWxyt/lA3BanlqVbrdSdMBG5p3j4Pa9sSfYjUr77zB9h2qpnC6V8u1+XFmGBTP3y97KCCHykGfB6mbCNng2OYcDfFxSp12MaqtqOwry+xB9gUkHlnfW9DENAGqcYOxFOWwZHAJEeIuPuyLr3pc8euQGkJA6K1rmHJDoeAl370hmHY+Wk02WBNr6bOj8owlbEPXZobBQ/xU4JVN9l2GH0nnIedokXyCvBiq+jOf90wECFhhyXgaKiOos+J5t5i72+cySCooSeyr88ULT2mwUuMCLDw9Pty72PByiEtatpiqNeZF8Kladg4jD+8iY+w8ru/PveAVmrABMft/YevFyzmyB1LNidUz8yrnolKmitwK2bPJrQzSfyMg7RCZtnj801QmxB2Hh1RdODJ04NYCR84mkyeVmLrySQsPfWBiZawIPusj3W803YTrCIFZh55a7RhYSAh5uolGsv0TMC+pfZ8CJFMfhrjIkPX4iPlpoVij0m+1EDPaObMhssohxiQLjAb8un88eH/6Z8SnJxoDDY9JjIkM28xe9G9BMqE8CdRizNqXF+yzFoq+i0JXmGCunk6mGwVz7dw0Aht2yZLXL1jgrrUpP84ikBVljLiJmABWcOUt5aq4e2FLPP4IYwNw6/6kBGhUw92jqGvzzSz2IXFoSGkFThCZ6Hdi95k3hbTR+UyOtNXxKf3qOHtoG1+tO5u2H6XvCe4OZ0IsSdV2C22f4X0XRjnoLI9dkAJcmaPzyLbgrWgj/dizWHsrNz5PzGCCZ7zywhZMyk6RrEJ5ucZ5k4Fosm8+U94ZyJFHYaHthMhJSLgoHd9plpggxNFeaBMx2BdSg8d0qM1P9s3xHTr7n+uvFsfU5qJafAkyfAi/gC+OLxCw0uMl/XJ+id3bpdG4VxQwyKvZaxCWrPaRHIy9KcdR43jv9jfykGUTzB9KjyF1G0SkyMHMeY5wgAmcEp9B8ffD92GR4FQExXAD/Rm70xyf9mrg0HowJ+Y5o1trz3gJx6Em+pGPt0PvCVSXsmyA7BLMqIiL8iKyvmFzR0O7FJPoUD5dZJ1eKn4tDUJJ4Umb72XTHqR1qs8KsHPpu1Bas2jM6FoTMyoX5aScTz2RVJH0xso6SkxxuMBg3uUblz4fj83SnK1GADX8ZJtrY6l5lrbF1/ZuSi1BShVAdFnfBB3Sh1SW4KQz2mL+Y4svWwspzeGp4W6pTFKdMDjOxHzkJHkAfLjLjqf+T1Axa9og+Cl7gRTi70bSWjsQM9F19HqH1IdJOoerLMQTLpuVpFU//G6/hsxG6sFsnzMJ7n73SbIizBrcriqJQot6sKe+uP1gONUVuBIPlDJA49atkvafSdkS4NR+zciAFrwoHjdIsVSJKqDxAVrM15uFJb4cUI1Z5j3Wgo4gLqLZDMdNtYKJ1P7oBTGSBKZGTqguAYXj9FtcQ4sSbuwAvEKj0iSHfGzNYpAzMhIVEl+O5tVLe4s/3uEd9Gsrl6bogS5HKQwX3XK8Vnj7lf+5qIQiTSzRnfkEpdxxgU0LAZG7OSxjiHkVD2gFaZ1GjKhIedce7dFUwac8qA8Ut250wwH7O4rKHFECWEhhPfyyNNFFWeFrcIjCB9QkpXuz0U80DXFirexggv6bCvxlzrpYL2A02HykHogeIIum14ATyzZnKSfKNZqYUHkFr6qN2/mPO1WK01C9CpwXcl3fLEficn+qMiFNH5a/JFJBAF2ZZWJ5EP8mGzPCF9CDlr0z0YHruP+6bAUG47CNw5yDdR0WDTjq/DqDE8W+/fc6iTB4r9945YbHjR76ZqoOFAkp3KnRniRLdWK5iKvLCCH/Jf9vzHnX4LfdHlAiEucOADd6aaTJnMDTB0DnLoW9pvA/TvJPoH2GYOwUyBgDkGv7VLqRPzjz9nIWylnnWqIlm7L9YRAuucHIleKaTQCeUrXP0Wnyp2nmBxzeDiVOPsap6l6MYLHO4xg8HBAK3J1dgvBpIjcYDKZexJV5mf8c0hpw5ODKTwdkKCeeTezcPXh/9nI/FlRcIYy8sH3nKCQ0EEucVi+uinLNXGTmZXSuB5jYC2k1R6X8FYDLSs7G3qg+Wa30/SZZVsN+vbIWPDRqs9HMz/V2eXRrxClGwzMRZTnpwuqrD1GTjLUluOf9uPygJGxe+/EB6Ak5UCCsCWe2GLD5iZX8ywqGyaP9CGKOOsQ504tSVjAMPPpKo7Ex8LT3xYdh4QReijfasLvMKd8/bu689y+WY+S8IO9LXV7KYzmOOycnb7imsjeiBPCZgNd2Hd2fLIQOaLorPkKjFZcGRaNO6lp+pBPTMvw9QIbYuQZBlhu48VmV3i/3Y0m71BChUWR3cdNSS4D96YC5J0Y7ZFqMHBW6G9p9pf1EMvsoq2dzX2wSvNYXqdP47zyePLrk+nreb97cBNao7U34lHDXeFQ+HqT8XvcE26g42SyQZmHFRlH2UZ0kohpcgm7Li2wAo0IHMre/0XfRV0HtarB6og11KC3Z7/RUcqKzEPA7ZEJQgZNgBZE02MFT702HN67p516Nvqkm0Gjx83wQdQMeqxlml8LDK0V5SdTdnatEK7C+bhiQ3CLRBupVuTeGYhJY/BbrqiE1SY1vdXZ2SFuvNbcrI6ErGJV8/qH1acDEtu58Cm9IYXlR4R//8FS+sjKjiIPcuzVQ+9bV25MODrRYTzxFJYbLhp2Um/HKOncgLdKHj7tOrMZfxR6CrV1qRAGh+vD5dMMDkqvh3RtFI8M/B+95gOm4879zLjARkfVycAOqjJdoBfgWjWNsJnafTkmc7B3nIQv/Doeol9zaGW/DlpeEHHLSCVAFpPcoRFbXqIB0NIfCnsKcK8GmaNVe1S1WmDjR9kV2WjYdDpu3d+gX3edjZ363f9jQEbUhFXtuRXOQv+gmYCubqBrqUoagUdP7xj0HIFEZg93/KZ2CrZfN9t0A6WcpUJBI5WLyoLnqf11jJxzi7XP7icTGifXh8HPdPwOvmb7A1BFcfY2H1yrgpQ9LL1WPc8f4dqfuE91BNq8DtcEql3/06rGk4gsNyWI77GnH9IKwUsAFlrpUmA3zzUPojorig8/2Cbd3TjsCKM9wxliCLyKPngKsM1KFkqM6bMFtyxYYrU2eewcxYM6RkLIzuCbt2tjjkrWkSVoIS5lGaeH9ACsgsCD8uBJTg2FG+jOXwTTSCvGIWOiSPmrIKKcqEISVvUcMWhHEeUKjXTMdtBmPl8s4WipwTYa2j7rmaa0RNf7IXAOT77NGep/q0h0KdWRo5UPERTufgAqHgtum1dZEPq6OH8ILA+nokd8MXPhCko+zgkNqNlrLQew5ugiVBI+TSaF0+Nh/0lIpsCoBQWlDacVD+Vx3x3aSXTbkp6URafBo7r4W0YMJYL0MnwFM5mzSBvH459mHAZ0yzT09dEXgjVW9/ggg2LxRO6yGo5FTpGQS5EwMSjG3crtd3U4X4CO+KX5W46TC5B/X/DpEipFhWLaE6rpYO0r44KwsS9Ge9H2dfFY3QNvXA1sWHN6WR25HgQ091u/FmxcmTXpvXerH0b5xRi1MwmGmrK4ZAT1TapoD8+smzXuW4xfFWkVDOL7zk9xNtB53A3+dJrIzc5OTB601UXSFtQkX3hWaSnhB0fIWaxp9w7vGQDYtDAeTTDigrLMhVNfLUpJcIxhrMjO0Amicb+Ubauev6gApJbByzVQRTWq047GGRSYgxukHnlk5+xWTYTi31cQQCJ9ILZRJ3tV05M1AIgNeeDW2H8IBJqkzSl9nnKSajGYOD7eMyjHHWbG4SEV8CvAH8Iew6SodPSlX4spOyb4O8XdYQ2bne98jMMolgBIbc8j1VfPhmdPcqVcmf5qMjZcC2VzGSMF9s4863hYPVGq86Huy5cmg6zBz+qDU3yje9vmEr3yJ6kZhF5z8UdlkJdjq/581O9VuCR2B3lyEAfQoUZot9HdVILawreyRxAy11JlpE3UoO/fi5/5omkUs0A7Gvb5+bsteFVIW+9l+qR2dINow47smAidv0bLLEr/yqKcUanjvixyzAQCM5CVzq0r7rDR9M7wjLxBq9eBWRVmyK9TfSJqXHjL8T3l8phqzWGZrkRC5oiPO6C5Wf59fFDP+ituUaiEqytebX0Feyu7U5Leql5gBMTdDPsmK7KUOyA5TuWxjGc7dN7kJKEYpro0VWRhjMArMIGbutu6vN2OSHb6nvd508S4Q34uCRKu96bSAD7YHASNVhzXv8N8jroYf5Y7E9s4wTpkvo3BZkkWqpF0M1vka3jjUC/JuZvw9V8avX+D9bciICl12vr/bQJxDe+TN9MQwDJwOe5HRWZKtCtH/1/2brHVDE381FF3JIILjZf20UTFL4MLwmZtFv3M88Bv1x6hEyoaAlZ5p5QEWzlw8bJBt8orARhiododtduYtJBSF7octT9JzbeKdozaif0LBWL/u9RjbeVNLZ8UV44Ye6Sz56Vn8QlwftWL01WoPryii3ZZ930Zx6Ins/HGvGQmHAD+2qvuKQAs8Y6ublb+Dvhp3Y2NNMjsuzOvb6m4YtkPzbhlctKadex8tBQuo0zhmSxfDIZm5VnEDdG2vZ6kcykYFxgAz3wrkVyXQnwxyQIeYMIHQYT+257jBWD0yJIiC3PqmohMzTC/65XVgSsowG2kgnlR7pYY18nBQ8aVfJ64D79rH2pymM4xMU1Zk/OS14XiDcldhO0c0RhQxiPSY72XYxpiaKVYmzOcEvI1PzQa7+LVZ6pBIwn8ffWvhqa38b3IskTs4RBkYs9i+i9/AqdAQg2IOeWv2fuo5tEcFyefI9nATJXQchbBEQO2Cj3kaBe2X+81o97B22kYSwjOkgZybf53qZFQ6p/N0dL/VnuL1cYTGi8k6rMpkKGx4j+Mc/fcHUVNXTKhyO10FkvHiN+qSbJGepJ/aLXoLZ8RET0Bshv/4hAQgzeS7yl0n74cedqdnmAeHmQ2CyXvMM0MWpEvA2ezZIKU+WvUSaGpTt1kvMloerqnqxHLfT01Yh2n3iD29EWnrQsyjedi1I5SUgvQKBM9G+oAai15cO1con2QFz3UK7w7ZgzM+vPmbk2QqR87fzlbdTSAhrLXzqVfLnWBA/4+5aC+0BRMZ6iX9lH3QXtKU9D01K3HprdilL456y5lsl38VQaMbz9hk0LgquziMY01Znz2WE4ClHG9cF/e7stVmn89oNFUE9NZ1RAc97KzDEWHLoKwlCG6L20/2Gj7/M6PDhsvhY+FMzYRg+v/0jo2gPT0UTCfaLBDRVvKQgUSYPMG1dr6ox7ohepBUS0msHq/V7A6Y9WfKDgSLatqTzwhOXnuXAoFc1LsdlV/Nv7XHqg5TAohZGa1mOn44SyY1fyPMCxL1QmxvhBC7mxDyj9DUnBpbjdAzrBW0mUzZ51brDVW3f0A8oKL6FYBf0mwK6YxDMJogq94OPgpZyKHKBYvJXMfs6u0pYnEn/jPeTVQMK6uY9Egww5setjqwdQmwi1ea0/uoNw7QKPorCWZohFt4VB+HUy/ObjCDdxryIg/y0wXGMwFyftSyf0v/ESOVaUNOHg1aA0SQ0KOwx/oqBneMvSoxZc7SqvQaHcx3ZLg7I0FQgQ9799KuVGTfGNgWvzIMnHqMNnCyCLJMNoNQK9XA4Wkq+6tVuCUREehKj+szE6KlaSwgAPfb6JeGqIyBrjJK/wNw2yPaYB9wHia3A56M5r4OplAvdVjO1vrsc4I8LAy1zqqpo0yM1hfixHeLNDG6ufXaX/4mWxYpqL3hBHpPbnox49P3jj/wGgdZFaJe1JTer036xd0Xak5qCI6SV86xqAdAChv6sj7ESw0SU7w0leCi/08lfYfucRQHdzjO3JkA7lvHw0ouMCSCweP+ms5HlStT1HLlgQ/pkLQ0HiDkuoPtTY6fDW0UPlH3ebKJKJsiIlEwAnWQ1ExfQhfs1IRdbEO6sgyC7u2YqSye9WFoH3s0+d4P2X78UPcUsRitbiSflMds3+5ixk47wEAbwHOouv3l0AUb9zZIP32hh+8n3fJx3LXT4wqErJXRmufydvyJuKW5IkA+rD7B5y3hJGUFrf+je8x2WEZ93MMZZjKF3R4hY4E82J7y0z9znWEXqtnGce0dejOBkrf6CbP1VCh4ixhRvmOXO9yA0A2XQqeWYNfk1eUkRWlybRDBiE5SOOtjudxOpqC6Hv0XRqdL58/dsrEItVoppvb13l9MrZRKzOe/vtw9JP9aAkOa7ra6MbT/3YE4LlEJ5ticKWKe+rOGibg+N20Vx6Vg7J3byZG9+hIpULnZWH4Tq3LmlMA+oUfgAbbzPl3twbDuQozSElI95KSsXaBWevUxIWPQdY+4eolMlTtLwn+51SP6BWFEiioYy+r2Rza4OqKJPMbx7t0CZCtpMKxYQ5JCowbAH7J4Y3Eh3C04j1H/2a7qH3cVo01mg0KjVVR59qENmLLCnQ4LNMS3i2XshEK7QAIvi4D+egZPpMUywog3s+tqRiaGXIEMFp3rd3TuvLXVT9tpJGxjgQLGMKXmGL1MVjoN97by2NaOn0JoIbOQqeBIHTVbBYNON5DD3XP+rStPIfVbuHd+90TJpGh8BlfV0dLneK2wDMnndVGVvQLhvaQxu6sL3XsvtxmQzeFWUSHLeAlmTc9yNQKkXtOJWS9faewS8yotiXdJQ6EI1vpVOHgh46gljSllVDRx9qlH7i2QFU/dKpaQEbpAFUBI/eSUGbpgT2ORGcUGXXDWjQJQo+nCkQVnIMRUCP367os5Iw4Rb3LDvOi+/mwcBozzUa4WkjVcSIURKO3RTFCiY9j3O6C5MBS6Y0WbBooC0nOzhKxL8xMIIaM/tnyEzIdlABrz3f9XlCiQ0hh+C7/bNp14eUvnjcHWjBOSw8E7BjzeXkRQkpIuZSOriwZ8PiOLZxCkXFOQ4hbXa4Tu69lccJ9Hd0F1lxkg5QnAhhfx5WdcTkBH3SibBUMCLPb/cYypz6s4GGDMV5smYibldp//j9gbCEhqanpxLsoexOMik4SOt879z21iz+8V3wgG8CicQsmxcsqCc5QUqOZhnpO4qAFgzHF+noxN835P4xf5EsOcPvYWwtzK3WEYVGy5tuvxE5WZB246SGIDgeC4sMge0B4p70Tse4b6NjlPHW+90GmqnySqY83r0ilaew46qmwi4RzmOcPehbn4YPCoISjQ44RURV++dfU53vcKhkSj6cWuh75tdSSUNMysFwoP+lN2gGTwxOfrha9wWxDPpimhEBVrt6dcBIvdoUbCLTDQDZuUOVVhZP4sATqq8z7Ai0STnGxzKmAHG+3I+/tvrDN/OOTHwR6W5aWSRj+M5wmS5hfdvimlus2z4pE6RV+l6scSEX3XjFUVgbSuuufln4qZfmgBxNvIZmkPtMh4WHAtuqRVdgDOLksqdhjqc9jrNVpRsYL4L5fXaKhNXYNJfTorxbaoSpoqj6ZEp05xsc4y4Qryx7BRs3iYvuHRbCUsiCPmmGdUPXDn6H7woEjiz1YeriH6NPF5au5aVrtcw0DvEgLLKMuVq6QvzE1mu+x9AFhhIEE3jVvzGWs7x+IBGJ2hfG8Kb57q5sDsPmddrc0s2doavGt3j59SpKkbETAVxcSwwHbpAEsYTNPM1KhVl7EPpQp+gNotyPx7hI11xG47CrYE7+4xlCFpaDwvf9FWescjE9qNrcgCXvSeme0GAOo6QjsttWQcRguwWZb6OG1VPN2xZcfyUeEGLHhPkrziDDf4SHNaCcXXJ9CtFdyRMVueZNWqaoSKhpFI91MMLSXju3pGbSzJlM8FPf/oxZbRADvlZZCyb8fbb4mQVBZZ3GWV4hj4PCrLA1qQvEqs9XLsRnoal9WaSQhWRzLJmCurnGGRc6wxyAAejp0pAR70k0M8R+ziXphTbSz5jU2xp2cFe1EhegrqPqjFAtYWbYwsm9X969oYf76RSVpD5DfI8iDfFILBkfvnZaZtHikQ2tfNY1T0QOYafZ+dfiQjWZxqrDxXDWbc/jYZSbOzpgJ0HvC9wodOgTk5d5d9dmNrnM0LH8bvtI4zgktUZdf/DkYM10EF8yMhbFqvpMTi+TaLBUNd9aLSzSGAqu41xsKxsEYHFPhxozYZMPCafc4U5t8Ja7k34czb9pTsN2JFnwl8AmZSpI39KzBoEcD8fz0CAcio2KlaDIhPF8V0HkEbwc2c0mkpBazhOMI1d4cxnKG15nlJ+haP4D9g/H1z7jIEHS7enL9st+r19iJpqLFuJiKD2NT7LXyBzaAcFxIJ/fo4roeZSvHUyfgqUjSVcPiszEAuk4Fgqjxih+ln6TZW8b5sbDIvrB1Ul++c1B63XbFgHdVJTaRPzIXeh5f5u+QYvfa7pHyQV0ZUIv4SnfFMvTC0g0/fdaaBd9rcpxu/CBpbobKZgCIyVRDZGdPlZs8UGyu7+Hxb64E/k0YIIyG0d7ZSIcU1dOwyAQt25Ow5B4W/oUhgU+Gf+qB/Eqf+V11+GylEkiyGag2sSabnAwgaqTr549u7USX8FH6EnKLv1g9jl2zIU7C6GM3aeDn8kP+9aBM0Agrl165RV4/UHaXPnrBjs3YOHlrMK9jziNkwwt6+rC5FPPvSm2uVuOQouD4+Rk/8X2VoT+8bijB9PNpfsOsNhiSOVgntu7dzfzJItraFExs2ylPt0vanTgZJP3SIxPvZsgaDSBNmxIh0KPLS+EZkJ1Xy0gY8WVOZDbYF9v0GJta6+GUy7ek8lisYumJ1nyw90NF5n7L6H1aFMYqA/WI2COJA7pWaf9Ugf5pniETIJNyNXtonwZOLeCG380p2a2m5Fs4WDJIbVCtkJ77ah+h3HMvJJ0fzW8OXfnZDuzbWB935lP5zr2+vOc7CL44LjNt8p2deJJKd+d8n1mwKwxWxUjkxJRVlpIqwq1a+Sfeu1oNGDaOXyS/LVoiWAi4/RFFK77j8sVBWyTeqc13DCYWKdEbHTgEcIdtBewm3fvU99V8J4gYLJijdis2O/D+3FBz8kG/SwAXwjzKgO1TmXuA3syLPxxfnEUxttkUPpzQJgAzcN6o79tpHr3QWX3TVy4USKZJPX/G7/sFv7TB2RKaM9LvG8518UTl/oNK6/mqMpSOqsv0xRVzNjumgamqz/e3LG3e1lkrW5SquqlrDJIrN90AProjO2hsva2vAv1ZNPbHVfvH6K8KnMmDbXcZImS+YAXafdXLVILS/Q0MSKuRaLPQABT6AsH1SpBlkiSLXyhT/gT5IbfD6Z1Jx0n7l33o2uGW4lgd8BRn8WUeEHBHEn2SCXVQwlREQtvN7iSC2y8qSngF4ytc3vgOucrGccauebyUn9sdKmkhMom+XHRGLg4yr7NW/ZAq8UDCTjimw0unj204NYoihtZTNdXwgmCpqzA6Y4a3S/braI7FEXELgpjVSnB+dqkyFq3Tny2G8lAz1OtN0TZdE3wgbqL8XtsE5Ut1NayTqmPNmEhJVC0f6ZfMop0HP5VawTxA+lq1XoeRAoIGH0ojuV+9O13sh2V2zoxj5jVyNGuZDtqZVlEeSIRI05PVi7nZfKw+EuT5YTkdX/qnx/AmQXABJR8mEbt5A8Oab2RqMdG+P0zvDI0gODnGDSO2w4ZOrD1zi5LnYaIljibbOMhpDWcwsd6Ry5eUmiLQ24OpaErO6a3/sYLybm9xOJLqfn7DNg/5SKBxEfKNyyUYP4KtkSMQI5Xo7dHcIhqH4l3CRK/gB7WtFU6bj0mReNJIitL8grYbUyZpqDuMDT5s5WQsWjOEmRSbMiH7HIkEIPvRu0WxMnRCJKjGFWdlKGqK96T7jlsEHCjsPjk/9VEQ4W5qB2tRAFGJ5YGgbmyYxqxGxduvkNdd3IZKcIbvtEtH4X7aHeyV4Dcn4wkEzUNRRhISM51Av5I1mwi2lj3DP8d6K9iFzNVDCSb+eb9pBu+SEqYrvFC8WKSi8OcZDj50KV871120hgz6n6OZy1KOh8OzKNuCKFt9mVlUfJKzD9gcuL53q+oTHGGIKFz4+4/zLC13N3l3y4Fn9dzM02uGyBGoJXmF3jrwW9OguOsh1FVykE1suM6kC/e005VRngkgcn29tixbfGSx7k8JzTId+5wTXE1HgKXCtGlwA7L6FxS+RUGGP2az1Em91D7THACjjqlVdoDOltQ7Yb4S8n4kG/m/CvtFfQB0e/e/JMgICLGKds6v5THENB7WYOdJ0P5s3GQzdbeXjUAG5Y2WCUBs5LZ6xDZzv1L7jfUHqBbmnHW7U4g+UTYB/tW7B0Ya0JAbpzWFSoVQH6CbY6q9fM8ccelwWdxeWdjZm+TcmBAHpje+emw8T5mUgl7Omvks7D2xk04/HjynzVyBN2dI3dBgxTkB1keL9tMN0WgyjY0ddKI8pigHP9lOa8hb7F2bZIa/FqS6JJPPHnlyPbVl+weIG7j4ocmWH/OkvaT4qtcbnafk2ocwOkjSqUob66ehit1UDMwKXreD2R92MZugTHNe/PWAZesANg9eBbm2p+4kqK52j8MW3AhqaffDN+kK195DUM4FLVYm8BQhOF+OWoM5tTD8LImCNRenutbU6qRxpaMDXCBU37/K3Y7eobcg/IaZaBuw44FteI67Hdgufk5VqCDjlK7jDBUtVq07hpPI9ymWW/m3nNLQlusNGDSBNYXOUBDRWNnHira/1eo9GEwVgpXn2tG1PUUxT15p/fbfGXCvpsj0QlzwErC0ge/Oqlsh7E0QhpqDAcvlBJOiXDD/bv01SkM269rmghWHJPUbmpq4trj7H6cCMXMIwWgOLaTXR0w3tamzJpReC8FXDNwkxSCbmg/ag17JdPyptz7mR3k6KvXor6tFCfEv85TW7CDWLEap1AC12Ym+LK9/CxdKPnXz9Qz4xNXGn3sG1wAfthifQfjDyiCnLo2uhuMzI9yKxH4PUTt52mReMLmnHFrrLpDYcPC+cU7ge55guYhGv/ANB92YzoXrI+Hs6gdXnnfE8GGhfydGwvKBKCtpDecGnu41Mz28j9/LTVtSV9WZEoxANMgPGo4BDbY2p69ixYGQWATdyg9TRDAK7f/Lrlubat60yuVZ9wcwqZ7NBP71mX6NEgdvfK1EgMnkZzsDQl/wWDHdAoOYCo4pKwY5I/V26cKTO4aMYcV/YDdgglOtas2KtIXBJAcgotsV4YfF+CDN4T5WdX808VdXh3/UXLrAdcMDF3QIXj1HyUHIOkXBH7DXICbJt9eNiowRXiuB0d1J/FqjPFe2IlNdXnwFwpRusB5PLSv0Lk/AdI1gQmao8wwLmnoh/L9riMbMMsWAOI+5B71d+lGTKlxx4hQn4ixRfedyZUUsRcpGrgAS1XqCKzggl0/LFuyQpe9BsgvZGkEHQ4ELkl6bcLtiHZ+7uFxmRjnV7v8PP1Whug1igIT3OTMnmb/dGJPuGKY5fRdvWoatxfNU3ABi+fY7eHiPqC0gQDpAC19twVfWBtBur+ST+y7fzmSE5Q0C3mcp8/31XIdqm7sEZJHtFnXBgaTyG+fWRGAY70K10IBvKH2TE6IMzm1k92/Cn2payTupKTtojgP3uaWIgFVgV0lD0WGR0PanqiKtrBFwqznvb/rz2PgpSjWd2BESLQpxY+6tmKXZnjvY9xfR12CQ8o/aKz1t+XxCSzy0uE5f/kaFUCrwxjL8gT7SEUJshp//5/yvPFJHgJlgsvXp+gRQCSzz+vS6rl3BhMsbj/HzwJYz8GsWppOQDGVswlOHEaFE/qhImhDrt2DUfNxtt21GW7KwJRn9/mtYIjlnnwgESPEpwoLyTru3SsVGzRxnZG6x+BiseUs57lTdb3H8KG7UPeH1SSjy9wZHELnar9x5cOtOR7lOvyjWm4Ab18Q+qoMxxLCFit0V8SmOu7AU8XGY3eSXb6Ly+kaQmDkRlOstgmcj+rD34KNz7LTvLL0O1Z9J/nCjp+1flOFgtbd7Yg0t5eNrPuppxYxJfSpnJRNL4S3YTffnV+x+zVsuioseET/On2wNi/TnL2rAQIKswi7Er3Sv48D/+PLsa2WJOSk6DqcCLmusILDiz0FwKEhMewrxtNyM2IAE0/6hiopIQoUgC6U8CLirhWbfVibSnCGZlF5uywIcaUlcEaYP/evokbi1NSquO62XNnWR4+fB3M1N7LaI5pwdHYOKEjg9OaSiTtEDypKGOVxZhdQS0jEvZ46foNS4SBpwZfPn60p6pQldNUmimhWeU5LUnEpZYjPJU6hmAsh4AKaLFfJANrZ9ou428yoEIFuiY9UgOYkqtSUocWxyijxK+NTtuDdbh7NJcyLIl6CUBWQjZiL34Bk0Qe3vmT9tpIKus3r5CvEdEu5Va2Wxm8CQJT9bESzuFBeH0QIRybKFAUVqNa9tCXukd1jwLXYKWsuMuFda8R1UjVG2cvAZ+R3lBV+nLksL4Ti6lubX3hKFcSyFsG5rK9pJt5nlSGIkBLP/HFqLL/KX0S96NdOo4CS+GYPBk+lBZxz6Yie12vvUj8l4t1ik/5PmvbLOTPCcaoPeZ7APUQIKIcxcNUDin3R1okbeAUGwt7Ja3G0ntQokBhlajisyXeqbfPLrTTKpTauclKp+DGdyBsbzFHEYtIqZnlLe5wjluF/UID6EgwWPGj0FVKM59Jom3+0Y1QTb+IKqHZv/0FIEEuVItlJHSixdza2w0UN80Hyc/eUGv6SBybC/EEs9cOcLBR1eeQXXe7p7hfIhtxxBrGhk9n7jom/4LXF125WzPmMCUiNyE8iO7sVSmRf/iSNFBveZWGPeCirfJ8a43fk5jCfA3NPEJyMAamu3Q5im0DKo8aonWXtye9iE8vraixlVTAGSXFMjP3+XiOE9jrnXTDzARnt7+9gvHctQpaAI0za6N7bq9R1lb55jILwmx4Ih4OA0K1/Xx7B9jytPFBRhEO8xqXLhxotsIRjnGRvnkMK/KJ1YhE9T2mNmclLYgMSn+7dzik8BzoHt+EcXstV8yNpTspqsnS96ATq3A66NbF449w9JqViBt4gWi7yVzt3kR4XSJ8iEB5anMqG+EsSyrMQVv0sMeEysGx+yYs6G2xPJw3zqTq4RzDQXPhYra/VMlt7E8zzl4D7L3HS3kkWf4ZkmFmnjcENPQdkmohl6p/gqkOg+8McyzNxxb5Fl19DsSr3MTuSMqhSKDn95ibzYCEdrZXJiKaqu7BFBuju+jSObOPchog2IsE/u/3U/UK2mntvSnD0qNkPYoRTskBnLJ3NJamL0V4sEbryX8NMr7MKMJ0+h2+xMKY4KERpvUrd0c6ABXWHqLdY1QTugC/5dhdoLy3+KwgG5FnL0MZw6qvOvHkKQRoQrcKLuwUld15s05QxurH67A9eAr02a/vUWNBIgP6vOa69ZZuZKElWttIerRDGIAkZ54fw7HBctSZtfspPxaliwbOEH/Laxot3ZQonzvXknSVodzZHA1Jw7BcNRsYvl+KJ0Y6pMRPpIbaN/QSuHtnjUoej+vlVhq5021xMUPKxCK/D8rSRbOmduHG85/JrIimgo5wXWP83lLvRaxwCxeTGVt44fTUqsfUARmQcS3f5DbHR9SZ4nJYIEvcCjIqLezJ3I6S7xBop57j3ZyMQX0Xxr5mc6IUmrlOXM9fJG5iDZQQ9rWsGZ0Y26GzTAEsD6pjPuDa1XAT1MRpxyZ8zN53sl1YEV0E0EHvZqcnBnqMTXRh6zC9PwDXEk3OHs2zLLIjBhY5+7lDxp1X0qcm8XtWorat33mUx+kEDDgaDUdpclQq/ZM6mMYoF433nKbCKDxCozugSPVaRjNPosMDy8FujvIJSb763XuBGBIYLS9x+HZhYiUa9xod0xKV9aRt7yczWWlLgfK8qn4fULHMBSP48m/wTWfDBdTH8uDAKt5WM033+2bCpxDhmZtE+d7XP65yBTOf9/EWaCG+Gs9/5kVbWS0JlfoDH6Si2tVCzCRGfV0XZAUWfXOMJ5F9dkMagbwaeqVqqbVONDQGg8zID5MUV7IkazdAz4JLOXsn1RuZnoZNIGV2Na15+dRKYUAmXFmkWBJpPMBwT8N4bd8VZwBnhm3WzH9S0sbpoP0sgf2OmPvQ6smMyfkVK+OLjXYubmtioAhdwDb5/pLRg3PGwfHEz6v9OOe4AK8iw2cma49tV44In8Rc9jGcqSQlFXPdlC8366ke4U/ITFy0/SQBl1vWvGk40KycwWGaLf8cCtEi/4X2W8961i6lYnpfNQhGcQyC8s2oIOW+Pw545Thq3ZBEyNC8YDr/pzCEmBI8U3A4IiQJoHiD9kUMNd8wfzysC2Kqc4OGeWYsJxmDev4Jn4HV+vqpgN6xxSEMABhRMdTteHiJAgnQEX9BR2V1sNqh5EcMvQNYYa5+bblQn7Rli1UFCtQkP6ECmGkxmPNkg2CGS2mmf0/WEuTZSyPMtbbrnftPgleOmJ3jSm0m1EU9fQHQo1NZti+KczpJ8mSYIVtXzXh4rNJcL3Fm7Bbftpjmj5UnuDpPk8HvqKOj2DGJyk4R0Md1x7umiH0DTOXaLwO0EI94k7n6R8nfqiwekgUQZ1rRek0HViM5YN0JLWp4f4NRE8ErcGNSHZd58+9Kx8lmkc9ogfQmX0rX1kB8QQzNbH+eVDee0jOQNUgQcew3y+0QbifXrtLHXDIxsqsej41Kz7vfcQRE1zUnY2phYNILK8a657zyHNMzPiRhxs28s1JX2kiCMEloubOXnc8BzU+n7LM9wztf63eFWN/eWHXVivSdCWg5DfWsk2CF8aFJrOP277QEPdkWlOlewCVEkLjyd5wUn9ZzaKOJKnDQDLfliiRLTKlU8TOeQj8jOU8FfpM9tayJTDpxw6sVlZuJRAILfxn+QAGIB/W1FGDjuuVu62hFDBdvzVSfge95Ebf9pclp0GrpV3S+gwBWn5J7aGiim/fRyIN7YVVXJsnAnVeq90vDdAV0XearTqjT2Ck/AMkBW6T/ls/6VUVnFWs01wxkahKR0tRwyLRKgHefm3RWie/pTVQpUMZw+/7ozQSW+7vuZd8lsvT1iX5rwlpiaFnOnDbHsr1As6vLETd5HVbcBCGbJHcS7ax9Byd50jdYyagUtjAaHYX8ryyuR/bDkw1o4j8+hXMfbzy+CVmgrfRDyl4dn+5LxrqRAXLoDKpQREAHqdLSsVSJh1s8KnZ/SsUVq27cq+O6LMSBmhT4X3E750rmWwCsoCre6bT//oFWYALjp2SbcxnULBaTvnYDHtfEbO1m/3c9nJk8ZO5KHQTV88ivTWN/S2EXwmisTPdcupMrvI8e48QZdkZu9WHyKron7MKhGFJw6Z0KZ3tleVrvvJo89siUwByPY+Hs4gkKPBQbLQOaedcv/xeM+Ih8rl1eHEC/C65xWVciToVqSGp9HfbhVzFSrO6kBnv7mJwnRLvMEwqiNankVdJJMw4icU3lKyw/ecNSWIUddqlbThYMiq8nHjRRufs+28cq0OI9zhpvxFvFgSZE/eAYvm0x+9lZO+EH9NkBngaqU1NMYhdombNuy3awUN9p0mJQ//e9L65YbShgoc+ZUlNy+c6F6gDEHXV0JrzevPIZFAe2RyRa2dNqzLvihAAMCszYueqszzXRkSyobx5+LTLK2V3lfg3wbS9DzP3QW7VHdHbjZcttQRvtjrGveJnNn2DE2ZDIbvkCrT0H8RzbGDdmIq4P1ey+hoY/W6NuZKOz4dv4HUNznxdKV1Wf3MvqUv35r2jTKvpPWBUWNm5fytX/QJwp6qkIOsSx7Y67BSCbCDVLM8/VcMG+T0j+INrgL9sfT1ICtACH8BI0G6ViUZPVzzCmQHW2oVIwZjAoFl6+meO/pD8teO1E+1y03mCpYfW9S8qhtH2GhlFlebPf4NbezVv9xbXKWz0xezRNQWqUqtYRTUbuzK7KTvjG4rQHfzBpVmK4wDLnSIwdSzTSk1fPNeY0WOpPZTLlvQ59xwgfFrb326vT2hS1JAZ9E6sujFtKTiJ7bxI6o4cBhDaX+adXREThhR+MwA4TqD7rga/o9iY7d6TVRe14CS2S3iSQsD0R6ApnhG/2Wa0A0AY2NtWTjmabdKU+KgIRDP9RQYVjXiF1qC+xyNVG03I9vpmEpY/G/zC4nLOKgXAZ/uTikHI9Afbkhfgfgo9arWbix5eH7WUo9RQygDzwCnVSjbXc7MihEufVj6WGbK963pw8VjY3RS8IH1cy2yZbIcKLO5CgAUcXJfF2+McnDLKtXxyZaf7SPA6KJq+zF2NHyfoeTOwHhGqNcnHVr1hT73pcoyXyfvCYBnG1Bp/aR9t8hoI7CXM3UZOisWGA1SHZ2jf7k9GlRnp3mF/c1AV+JjvUsnZrsybEOQJg/dn/9eJkyykQHjbF56zgcPX6DdMG03WKUMlYz+uOZ+5DZy9E9MZOZ9GMoLFdrIPPQQLjv+GlCMpoyHPXkzIODjHAID2PrnaRpqWVHh0rnieDILKq+Emrd5RnjgE9pDUXWTmHaKuqqYlcgEz4zbi46dbWrAAFBjsQq1rLHIiPJEcwFLCOY4JNlXRXQJqCUKXk2d1RSBGzDP6HDSpo863BhVRFFF6uIpjQV7j5ebFe3UkkO/+coIo2BTAcgBqOtQ134s9a4QJvofuqBYMGOBMsWZ+sn/2AOxDx6SfAnDFGw==`),e=>e.charCodeAt(0)),P=parseInt(`169.19`.replace(/\D+/g,``))>=162?class extends r{constructor(e=1,t=1,n=1,r={}){super(e,t,{...r,count:n}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}:class extends r{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let e=0;e{F(e,t,n)},1)}var I=class extends w{constructor(t,n,o=512,l=512){super(),this.width=o,this.height=l,this.clear=!0,this.camera=n,this.scene=t,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new e(0,0,0),gammaCorrection:!0,depthBufferType:R.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,colorMultiply:!0,transparencyAware:!1,accumulate:!1},{set:(e,t,n)=>{let r=e[t];return e[t]=n,n.equals?n.equals(r)||this.firstFrame():r!==n&&this.firstFrame(),t===`aoSamples`&&r!==n&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`denoiseSamples`&&r!==n&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`halfRes`&&r!==n&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),t===`depthAwareUpsampling`&&r!==n&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`gammaCorrection`&&(this.autosetGamma=!1),t===`transparencyAware`&&r!==n&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frames=0,this.lastViewMatrix=new f,this.lastProjectionMatrix=new f,this.configureEffectCompositer(this.configuration.depthBufferType),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.copyQuad=new O(new S({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + } + `,fragmentShader:` + uniform sampler2D tDiffuse; + varying vec2 vUv; + void main() { + gl_FragColor = texture2D(tDiffuse, vUv); + } + `})),this.writeTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.readTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.outputTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1}),this.accumulationRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c,type:h,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.accumulationQuad=new O(new S({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D tDiffuse; + uniform float frame; + varying vec2 vUv; + void main() { + vec4 color = texture2D(tDiffuse, vUv); + gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0)); + } + `})),this.bluenoise=new i(N,128,128),this.bluenoise.colorSpace=``,this.bluenoise.wrapS=s,this.bluenoise.wrapT=s,this.bluenoise.minFilter=y,this.bluenoise.magFilter=y,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new g,this._c=new e}configureHalfResTargets(){this.firstFrame(),this.configuration.halfRes?(this.depthDownsampleTarget=new P(this.width/2,this.height/2,2),this.depthDownsampleTarget.textures[0].format=x,this.depthDownsampleTarget.textures[0].type=b,this.depthDownsampleTarget.textures[0].minFilter=y,this.depthDownsampleTarget.textures[0].magFilter=y,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=c,this.depthDownsampleTarget.textures[1].type=h,this.depthDownsampleTarget.textures[1].minFilter=y,this.depthDownsampleTarget.textures[1].magFilter=y,this.depthDownsampleTarget.textures[1].depthBuffer=!1,this.depthDownsampleQuad=new O(new S(M))):(this.depthDownsampleTarget&&=(this.depthDownsampleTarget.dispose(),null),this.depthDownsampleQuad&&=(this.depthDownsampleQuad.dispose(),null))}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),e&&(this.configuration.transparencyAware=!0)}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue.depthTexture=new d(this.width,this.height,l),this.depthCopyPass=new O(new S({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===R.Reverse}},vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D depthTexture; + uniform bool reverseDepthBuffer; + varying vec2 vUv; + void main() { + if (reverseDepthBuffer) { + float d = 1.0 - texture2D(depthTexture, vUv).r; + + d += 0.00001; + gl_FragDepth = 1.0 - d; + } else { + float d = texture2D(depthTexture, vUv).r; + d += 0.00001; + gl_FragDepth = d; + } + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}))):(this.transparencyRenderTargetDWFalse&&=(this.transparencyRenderTargetDWFalse.dispose(),null),this.transparencyRenderTargetDWTrue&&=(this.transparencyRenderTargetDWTrue.dispose(),null),this.depthCopyPass&&=(this.depthCopyPass.dispose(),null))}renderTransparency(t){let n=this.scene.background,r=t.getClearColor(new e),i=t.getClearAlpha(),a=new Map,o=t.autoClearDepth;this.scene.traverse(e=>{a.set(e,e.visible)}),this.scene.background=null,t.autoClearDepth=!1,t.setClearColor(new e(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===R.Reverse,t.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),t.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=a.get(e)}),t.setClearColor(r,i),this.scene.background=n,t.autoClearDepth=o}configureSampleDependentPasses(){this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(e=R.Default,t=!1){this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let n={...k};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.aoSamples).replace(`16.0`,this.configuration.aoSamples+`.0`),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new S(n)):this.effectShaderQuad=new O(new S(n))}configureDenoisePass(e=R.Default,t=!1){this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let n={...j};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.denoiseSamples),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new S(n)):this.poissonBlurQuad=new O(new S(n))}configureEffectCompositer(e=R.Default,t=!1){this.firstFrame();let n={...A};e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new S(n)):this.effectCompositerQuad=new O(new S(n))}generateHemisphereSamples(e){let n=[];for(let r=0;r{L(e,t,n)},1)}var R={Default:1,Log:2,Reverse:3},z=class extends T{constructor(t,u,m=512,_=512){super(),this.width=m,this.height=_,this.clear=!0,this.camera=u,this.scene=t,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new e(0,0,0),gammaCorrection:!0,depthBufferType:R.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,autoRenderBeauty:!0,colorMultiply:!0,transparencyAware:!1,stencil:!1,accumulate:!1},{set:(e,t,i)=>{let s=e[t];return e[t]=i,i.equals?i.equals(s)||this.firstFrame():s!==i&&this.firstFrame(),t===`aoSamples`&&s!==i&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`denoiseSamples`&&s!==i&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`halfRes`&&s!==i&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),t===`depthAwareUpsampling`&&s!==i&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`transparencyAware`&&s!==i&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),t===`stencil`&&s!==i&&(this.beautyRenderTarget.dispose(),this.beautyRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c,stencilBuffer:i}),this.beautyRenderTarget.depthTexture=new d(this.width,this.height,i?n:l),this.beautyRenderTarget.depthTexture.format=i?p:o),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frame=0,this.lastViewMatrix=new f,this.lastProjectionMatrix=new f,this.beautyRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c,stencilBuffer:!1}),this.beautyRenderTarget.depthTexture=new d(this.width,this.height,l),this.beautyRenderTarget.depthTexture.format=o,this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.writeTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.readTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.accumulationRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c,type:h,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.bluenoise=new i(N,128,128),this.accumulationQuad=new O(new S({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D tDiffuse; + uniform float frame; + varying vec2 vUv; + void main() { + vec4 color = texture2D(tDiffuse, vUv); + gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0)); + } + `})),this.bluenoise.colorSpace=``,this.bluenoise.wrapS=s,this.bluenoise.wrapT=s,this.bluenoise.minFilter=y,this.bluenoise.magFilter=y,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this._r=new g,this._c=new e}configureHalfResTargets(){if(this.firstFrame(),this.configuration.halfRes){this.depthDownsampleTarget=new P(this.width/2,this.height/2,2),this.depthDownsampleTarget.textures[0].format=x,this.depthDownsampleTarget.textures[0].type=b,this.depthDownsampleTarget.textures[0].minFilter=y,this.depthDownsampleTarget.textures[0].magFilter=y,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=c,this.depthDownsampleTarget.textures[1].type=h,this.depthDownsampleTarget.textures[1].minFilter=y,this.depthDownsampleTarget.textures[1].magFilter=y,this.depthDownsampleTarget.textures[1].depthBuffer=!1;let e={...M};this.configuration.depthBufferType===R.Reverse&&(e.fragmentShader=`#define REVERSEDEPTH +`+e.fragmentShader),this.depthDownsampleQuad=new O(new S(e))}else this.depthDownsampleTarget&&=(this.depthDownsampleTarget.dispose(),null),this.depthDownsampleQuad&&=(this.depthDownsampleQuad.dispose(),null)}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),this.configuration.transparencyAware=e}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue.depthTexture=new d(this.width,this.height,l),this.depthCopyPass=new O(new S({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===R.Reverse}},vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D depthTexture; + uniform bool reverseDepthBuffer; + varying vec2 vUv; + void main() { + if (reverseDepthBuffer) { + float d = 1.0 - texture2D(depthTexture, vUv).r; + + d += 0.00001; + gl_FragDepth = 1.0 - d; + } else { + float d = texture2D(depthTexture, vUv).r; + d += 0.00001; + gl_FragDepth = d; + } + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}))):(this.transparencyRenderTargetDWFalse&&=(this.transparencyRenderTargetDWFalse.dispose(),null),this.transparencyRenderTargetDWTrue&&=(this.transparencyRenderTargetDWTrue.dispose(),null),this.depthCopyPass&&=(this.depthCopyPass.dispose(),null))}renderTransparency(t){let n=this.scene.background,r=t.getClearColor(new e),i=t.getClearAlpha(),a=new Map,o=t.autoClearDepth;this.scene.traverse(e=>{a.set(e,e.visible)}),this.scene.background=null,t.autoClearDepth=!1,t.setClearColor(new e(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.beautyRenderTarget.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===R.Reverse,t.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),t.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=a.get(e)}),t.setClearColor(r,i),this.scene.background=n,t.autoClearDepth=o}configureSampleDependentPasses(){this.firstFrame(),this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(e=R.Default,t=!1){this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let n={...k};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.aoSamples).replace(`16.0`,this.configuration.aoSamples+`.0`),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new S(n)):this.effectShaderQuad=new O(new S(n))}configureDenoisePass(e=R.Default,t=!1){this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let n={...j};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.denoiseSamples),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new S(n)):this.poissonBlurQuad=new O(new S(n))}configureEffectCompositer(e=R.Default,t=!1){this.firstFrame();let n={...A};e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new S(n)):this.effectCompositerQuad=new O(new S(n))}generateHemisphereSamples(e){let n=[];for(let r=0;rs<|1($kMDW8iaRNZqLzt? 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,ActiveEvents:()=>ht,ActiveHooks:()=>gt,Ball:()=>tn,BroadPhase:()=>Zt,CCDSolver:()=>Vt,Capsule:()=>on,CharacterCollision:()=>wn,CoefficientCombineRule:()=>W,Collider:()=>jn,ColliderDesc:()=>Mn,ColliderSet:()=>Nn,ColliderShapeCastHit:()=>Xt,Cone:()=>vn,ConvexPolyhedron:()=>pn,Cuboid:()=>rn,Cylinder:()=>gn,DebugRenderBuffers:()=>Sn,DebugRenderPipeline:()=>Cn,DynamicRayCastVehicleController:()=>Dn,EventQueue:()=>An,FeatureType:()=>G,FixedImpulseJoint:()=>Et,FixedMultibodyJoint:()=>It,GenericImpulseJoint:()=>jt,HalfSpace:()=>nn,HeightFieldFlags:()=>ft,Heightfield:()=>hn,ImpulseJoint:()=>J,ImpulseJointSet:()=>Pt,IntegrationParameters:()=>wt,IslandManager:()=>Ht,JointAxesMask:()=>dt,JointData:()=>Nt,JointType:()=>U,KinematicCharacterController:()=>Tn,MassPropsMode:()=>q,MotorModel:()=>ut,MultibodyJoint:()=>Y,MultibodyJointSet:()=>Bt,NarrowPhase:()=>Qt,PhysicsPipeline:()=>bn,PidAxesMask:()=>mt,PidController:()=>En,PointColliderProjection:()=>Jt,PointProjection:()=>qt,Polyline:()=>un,PrismaticImpulseJoint:()=>kt,PrismaticMultibodyJoint:()=>Lt,Quaternion:()=>st,QueryFilterFlags:()=>vt,Ray:()=>Ut,RayColliderHit:()=>Kt,RayColliderIntersection:()=>Gt,RayIntersection:()=>Wt,RevoluteImpulseJoint:()=>At,RevoluteMultibodyJoint:()=>Rt,RigidBody:()=>bt,RigidBodyDesc:()=>xt,RigidBodySet:()=>Ct,RigidBodyType:()=>H,RopeImpulseJoint:()=>Dt,RotationOps:()=>V,RoundCone:()=>yn,RoundConvexPolyhedron:()=>mn,RoundCuboid:()=>an,RoundCylinder:()=>_n,RoundTriangle:()=>ln,SdpMatrix3:()=>ct,SdpMatrix3Ops:()=>lt,Segment:()=>sn,SerializationPipeline:()=>xn,Shape:()=>X,ShapeCastHit:()=>Yt,ShapeContact:()=>en,ShapeType:()=>K,SolverFlags:()=>_t,SphericalImpulseJoint:()=>Mt,SphericalMultibodyJoint:()=>zt,SpringImpulseJoint:()=>Ot,TempContactForceEvent:()=>kn,TempContactManifold:()=>$t,TriMesh:()=>fn,TriMeshFlags:()=>pt,Triangle:()=>cn,UnitImpulseJoint:()=>Tt,UnitMultibodyJoint:()=>Ft,Vector3:()=>ot,VectorOps:()=>B,Voxels:()=>dn,World:()=>On,default:()=>Wn,init:()=>Vn,reserveMemory:()=>Un,version:()=>Hn}),n,r=Array(128).fill(void 0);function i(e){return r[e]}r.push(void 0,null,!0,!1);var a=r.length;function o(e){a===r.length&&r.push(r.length+1);let t=a;return a=r[t],r[t]=e,t}function s(e,t){try{return e.apply(this,t)}catch(e){n.__wbindgen_export_0(o(e))}}var c=typeof TextDecoder<`u`?new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(`TextDecoder not available`)}};typeof TextDecoder<`u`&&c.decode();var l=null;function u(e,t){return e>>>=0,c.decode((l!==null&&l.byteLength!==0||(l=new Uint8Array(n.memory.buffer)),l).subarray(e,e+t))}function d(e){return e==null}var f=null;function p(){return(f===null||!0===f.buffer.detached||f.buffer.detached===void 0&&f.buffer!==n.memory.buffer)&&(f=new DataView(n.memory.buffer)),f}function m(e){let t=i(e);return function(e){e<132||(r[e]=a,a=e)}(e),t}function h(e,t){if(!(e instanceof t))throw Error(`expected instance of ${t.name}`)}var g=128;function _(e){if(g==1)throw Error(`out of js stack`);return r[--g]=e,g}var v=null;function y(e,t){return e>>>=0,(v!==null&&v.byteLength!==0||(v=new Int32Array(n.memory.buffer)),v).subarray(e/4,e/4+t)}var b=null;function ee(){return b!==null&&b.byteLength!==0||(b=new Float32Array(n.memory.buffer)),b}function te(e,t){return e>>>=0,ee().subarray(e/4,e/4+t)}var x=null;function ne(){return x!==null&&x.byteLength!==0||(x=new Uint32Array(n.memory.buffer)),x}var S=0;function C(e,t){let n=t(4*e.length,4)>>>0;return ne().set(e,n/4),S=e.length,n}function w(e,t){let n=t(4*e.length,4)>>>0;return ee().set(e,n/4),S=e.length,n}Object.freeze({Vertex:0,0:`Vertex`,Edge:1,1:`Edge`,Face:2,2:`Face`,Unknown:3,3:`Unknown`});var T=Object.freeze({LinX:0,0:`LinX`,LinY:1,1:`LinY`,LinZ:2,2:`LinZ`,AngX:3,3:`AngX`,AngY:4,4:`AngY`,AngZ:5,5:`AngZ`}),E=Object.freeze({Revolute:0,0:`Revolute`,Fixed:1,1:`Fixed`,Prismatic:2,2:`Prismatic`,Rope:3,3:`Rope`,Spring:4,4:`Spring`,Spherical:5,5:`Spherical`,Generic:6,6:`Generic`});Object.freeze({AccelerationBased:0,0:`AccelerationBased`,ForceBased:1,1:`ForceBased`}),Object.freeze({Dynamic:0,0:`Dynamic`,Fixed:1,1:`Fixed`,KinematicPositionBased:2,2:`KinematicPositionBased`,KinematicVelocityBased:3,3:`KinematicVelocityBased`});var D=Object.freeze({Ball:0,0:`Ball`,Cuboid:1,1:`Cuboid`,Capsule:2,2:`Capsule`,Segment:3,3:`Segment`,Polyline:4,4:`Polyline`,Triangle:5,5:`Triangle`,TriMesh:6,6:`TriMesh`,HeightField:7,7:`HeightField`,Compound:8,8:`Compound`,ConvexPolyhedron:9,9:`ConvexPolyhedron`,Cylinder:10,10:`Cylinder`,Cone:11,11:`Cone`,RoundCuboid:12,12:`RoundCuboid`,RoundTriangle:13,13:`RoundTriangle`,RoundCylinder:14,14:`RoundCylinder`,RoundCone:15,15:`RoundCone`,RoundConvexPolyhedron:16,16:`RoundConvexPolyhedron`,HalfSpace:17,17:`HalfSpace`,Voxels:18,18:`Voxels`}),re=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawbroadphase_free(e>>>0,1))),O=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,re.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,re.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawbroadphase_free(e,0)}constructor(){return this.__wbg_ptr=n.rawbroadphase_new()>>>0,re.register(this,this.__wbg_ptr,this),this}castRay(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z);let r=n.rawbroadphase_castRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m));return r===0?void 0:He.__wrap(r)}finally{r[g++]=void 0}}castRayAndGetNormal(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z);let r=n.rawbroadphase_castRayAndGetNormal(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m));return r===0?void 0:We.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithRay(e,t,i,a,o,s,c,l,u,f,p,m,v){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z),n.rawbroadphase_intersectionsWithRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,_(l),u,d(f)?4294967297:f>>>0,!d(p),d(p)?0:p,!d(m),d(m)?0:m,_(v))}finally{r[g++]=void 0,r[g++]=void 0}}intersectionWithShape(e,t,i,a,o,s,c,l,u,f,m){try{let r=n.__wbindgen_add_to_stack_pointer(-16);h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,R),n.rawbroadphase_intersectionWithShape(r,this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c,d(l)?4294967297:l>>>0,!d(u),d(u)?0:u,!d(f),d(f)?0:f,_(m));var v=p().getInt32(r+0,!0),y=p().getFloat64(r+8,!0);return v===0?void 0:y}finally{n.__wbindgen_add_to_stack_pointer(16),r[g++]=void 0}}projectPoint(e,t,i,a,o,s,c,l,u,f){try{h(e,F),h(t,I),h(i,k),h(a,z);let r=n.rawbroadphase_projectPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o,s,d(c)?4294967297:c>>>0,!d(l),d(l)?0:l,!d(u),d(u)?0:u,_(f));return r===0?void 0:Re.__wrap(r)}finally{r[g++]=void 0}}projectPointAndGetFeature(e,t,i,a,o,s,c,l,u){try{h(e,F),h(t,I),h(i,k),h(a,z);let r=n.rawbroadphase_projectPointAndGetFeature(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o,d(s)?4294967297:s>>>0,!d(c),d(c)?0:c,!d(l),d(l)?0:l,_(u));return r===0?void 0:Re.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithPoint(e,t,i,a,o,s,c,l,u,f){try{h(e,F),h(t,I),h(i,k),h(a,z),n.rawbroadphase_intersectionsWithPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,_(o),s,d(c)?4294967297:c>>>0,!d(l),d(l)?0:l,!d(u),d(u)?0:u,_(f))}finally{r[g++]=void 0,r[g++]=void 0}}castShape(e,t,i,a,o,s,c,l,u,f,p,m,v,y,b){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,z),h(c,R);let r=n.rawbroadphase_castShape(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l,u,f,p,d(m)?4294967297:m>>>0,!d(v),d(v)?0:v,!d(y),d(y)?0:y,_(b));return r===0?void 0:ue.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithShape(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,R),n.rawbroadphase_intersectionsWithShape(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,_(c),l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m))}finally{r[g++]=void 0,r[g++]=void 0}}collidersWithAabbIntersectingAabb(e,t,i,a,o,s){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z),n.rawbroadphase_collidersWithAabbIntersectingAabb(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,_(s))}finally{r[g++]=void 0}}},ie=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawccdsolver_free(e>>>0,1))),ae=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ie.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawccdsolver_free(e,0)}constructor(){return this.__wbg_ptr=n.rawccdsolver_new()>>>0,ie.register(this,this.__wbg_ptr,this),this}},oe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcharactercollision_free(e>>>0,1))),se=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,oe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcharactercollision_free(e,0)}constructor(){return this.__wbg_ptr=n.rawcharactercollision_new()>>>0,oe.register(this,this.__wbg_ptr,this),this}handle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}translationDeltaApplied(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}translationDeltaRemaining(){let e=n.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);return z.__wrap(e)}toi(){return n.rawcharactercollision_toi(this.__wbg_ptr)}worldWitness1(){let e=n.rawcharactercollision_worldWitness1(this.__wbg_ptr);return z.__wrap(e)}worldWitness2(){let e=n.rawcharactercollision_worldWitness2(this.__wbg_ptr);return z.__wrap(e)}worldNormal1(){let e=n.rawcharactercollision_worldNormal1(this.__wbg_ptr);return z.__wrap(e)}worldNormal2(){let e=n.rawcharactercollision_worldNormal2(this.__wbg_ptr);return z.__wrap(e)}},ce=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcolliderset_free(e>>>0,1))),k=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ce.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ce.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcolliderset_free(e,0)}coTranslation(e){let t=n.rawcolliderset_coTranslation(this.__wbg_ptr,e);return z.__wrap(t)}coRotation(e){let t=n.rawcolliderset_coRotation(this.__wbg_ptr,e);return L.__wrap(t)}coTranslationWrtParent(e){let t=n.rawcolliderset_coTranslationWrtParent(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coRotationWrtParent(e){let t=n.rawcolliderset_coRotationWrtParent(this.__wbg_ptr,e);return t===0?void 0:L.__wrap(t)}coSetTranslation(e,t,r,i){n.rawcolliderset_coSetTranslation(this.__wbg_ptr,e,t,r,i)}coSetTranslationWrtParent(e,t,r,i){n.rawcolliderset_coSetTranslationWrtParent(this.__wbg_ptr,e,t,r,i)}coSetRotation(e,t,r,i,a){n.rawcolliderset_coSetRotation(this.__wbg_ptr,e,t,r,i,a)}coSetRotationWrtParent(e,t,r,i,a){n.rawcolliderset_coSetRotationWrtParent(this.__wbg_ptr,e,t,r,i,a)}coIsSensor(e){return n.rawcolliderset_coIsSensor(this.__wbg_ptr,e)!==0}coShapeType(e){return n.rawcolliderset_coShapeType(this.__wbg_ptr,e)}coHalfspaceNormal(e){let t=n.rawcolliderset_coHalfspaceNormal(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coHalfExtents(e){let t=n.rawcolliderset_coHalfExtents(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coSetHalfExtents(e,t){h(t,z),n.rawcolliderset_coSetHalfExtents(this.__wbg_ptr,e,t.__wbg_ptr)}coRadius(e){let t=n.rawcolliderset_coRadius(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetRadius(e,t){n.rawcolliderset_coSetRadius(this.__wbg_ptr,e,t)}coHalfHeight(e){let t=n.rawcolliderset_coHalfHeight(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetHalfHeight(e,t){n.rawcolliderset_coSetHalfHeight(this.__wbg_ptr,e,t)}coRoundRadius(e){let t=n.rawcolliderset_coRoundRadius(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetRoundRadius(e,t){n.rawcolliderset_coSetRoundRadius(this.__wbg_ptr,e,t)}coVoxelData(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coVoxelData(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=y(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coVoxelSize(e){let t=n.rawcolliderset_coVoxelSize(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coSetVoxel(e,t,r,i,a){n.rawcolliderset_coSetVoxel(this.__wbg_ptr,e,t,r,i,a)}coPropagateVoxelChange(e,t,r,i,a,o,s,c){n.rawcolliderset_coPropagateVoxelChange(this.__wbg_ptr,e,t,r,i,a,o,s,c)}coCombineVoxelStates(e,t,r,i,a){n.rawcolliderset_coCombineVoxelStates(this.__wbg_ptr,e,t,r,i,a)}coVertices(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coVertices(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=te(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coIndices(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coIndices(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=function(e,t){return e>>>=0,ne().subarray(e/4,e/4+t)}(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coTriMeshFlags(e){let t=n.rawcolliderset_coTriMeshFlags(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightFieldFlags(e){let t=n.rawcolliderset_coHeightFieldFlags(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightfieldHeights(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coHeightfieldHeights(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=te(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coHeightfieldScale(e){let t=n.rawcolliderset_coHeightfieldScale(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coHeightfieldNRows(e){let t=n.rawcolliderset_coHeightfieldNRows(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightfieldNCols(e){let t=n.rawcolliderset_coHeightfieldNCols(this.__wbg_ptr,e);return t===4294967297?void 0:t}coParent(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coParent(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getFloat64(i+8,!0);return t===0?void 0:r}finally{n.__wbindgen_add_to_stack_pointer(16)}}coSetEnabled(e,t){n.rawcolliderset_coSetEnabled(this.__wbg_ptr,e,t)}coIsEnabled(e){return n.rawcolliderset_coIsEnabled(this.__wbg_ptr,e)!==0}coSetContactSkin(e,t){n.rawcolliderset_coSetContactSkin(this.__wbg_ptr,e,t)}coContactSkin(e){return n.rawcolliderset_coContactSkin(this.__wbg_ptr,e)}coFriction(e){return n.rawcolliderset_coFriction(this.__wbg_ptr,e)}coRestitution(e){return n.rawcolliderset_coRestitution(this.__wbg_ptr,e)}coDensity(e){return n.rawcolliderset_coDensity(this.__wbg_ptr,e)}coMass(e){return n.rawcolliderset_coMass(this.__wbg_ptr,e)}coVolume(e){return n.rawcolliderset_coVolume(this.__wbg_ptr,e)}coCollisionGroups(e){return n.rawcolliderset_coCollisionGroups(this.__wbg_ptr,e)>>>0}coSolverGroups(e){return n.rawcolliderset_coSolverGroups(this.__wbg_ptr,e)>>>0}coActiveHooks(e){return n.rawcolliderset_coActiveHooks(this.__wbg_ptr,e)>>>0}coActiveCollisionTypes(e){return n.rawcolliderset_coActiveCollisionTypes(this.__wbg_ptr,e)}coActiveEvents(e){return n.rawcolliderset_coActiveEvents(this.__wbg_ptr,e)>>>0}coContactForceEventThreshold(e){return n.rawcolliderset_coContactForceEventThreshold(this.__wbg_ptr,e)}coContainsPoint(e,t){return h(t,z),n.rawcolliderset_coContainsPoint(this.__wbg_ptr,e,t.__wbg_ptr)!==0}coCastShape(e,t,r,i,a,o,s,c,l){h(t,z),h(r,R),h(i,z),h(a,L),h(o,z);let u=n.rawcolliderset_coCastShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l);return u===0?void 0:tt.__wrap(u)}coCastCollider(e,t,r,i,a,o,s){h(t,z),h(i,z);let c=n.rawcolliderset_coCastCollider(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a,o,s);return c===0?void 0:ue.__wrap(c)}coIntersectsShape(e,t,r,i){return h(t,R),h(r,z),h(i,L),n.rawcolliderset_coIntersectsShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr)!==0}coContactShape(e,t,r,i,a){h(t,R),h(r,z),h(i,L);let o=n.rawcolliderset_coContactShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return o===0?void 0:rt.__wrap(o)}coContactCollider(e,t,r){let i=n.rawcolliderset_coContactCollider(this.__wbg_ptr,e,t,r);return i===0?void 0:rt.__wrap(i)}coProjectPoint(e,t,r){h(t,z);let i=n.rawcolliderset_coProjectPoint(this.__wbg_ptr,e,t.__wbg_ptr,r);return Be.__wrap(i)}coIntersectsRay(e,t,r,i){return h(t,z),h(r,z),n.rawcolliderset_coIntersectsRay(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)!==0}coCastRay(e,t,r,i,a){return h(t,z),h(r,z),n.rawcolliderset_coCastRay(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a)}coCastRayAndGetNormal(e,t,r,i,a){h(t,z),h(r,z);let o=n.rawcolliderset_coCastRayAndGetNormal(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a);return o===0?void 0:Ke.__wrap(o)}coSetSensor(e,t){n.rawcolliderset_coSetSensor(this.__wbg_ptr,e,t)}coSetRestitution(e,t){n.rawcolliderset_coSetRestitution(this.__wbg_ptr,e,t)}coSetFriction(e,t){n.rawcolliderset_coSetFriction(this.__wbg_ptr,e,t)}coFrictionCombineRule(e){return n.rawcolliderset_coFrictionCombineRule(this.__wbg_ptr,e)>>>0}coSetFrictionCombineRule(e,t){n.rawcolliderset_coSetFrictionCombineRule(this.__wbg_ptr,e,t)}coRestitutionCombineRule(e){return n.rawcolliderset_coRestitutionCombineRule(this.__wbg_ptr,e)>>>0}coSetRestitutionCombineRule(e,t){n.rawcolliderset_coSetRestitutionCombineRule(this.__wbg_ptr,e,t)}coSetCollisionGroups(e,t){n.rawcolliderset_coSetCollisionGroups(this.__wbg_ptr,e,t)}coSetSolverGroups(e,t){n.rawcolliderset_coSetSolverGroups(this.__wbg_ptr,e,t)}coSetActiveHooks(e,t){n.rawcolliderset_coSetActiveHooks(this.__wbg_ptr,e,t)}coSetActiveEvents(e,t){n.rawcolliderset_coSetActiveEvents(this.__wbg_ptr,e,t)}coSetActiveCollisionTypes(e,t){n.rawcolliderset_coSetActiveCollisionTypes(this.__wbg_ptr,e,t)}coSetShape(e,t){h(t,R),n.rawcolliderset_coSetShape(this.__wbg_ptr,e,t.__wbg_ptr)}coSetContactForceEventThreshold(e,t){n.rawcolliderset_coSetContactForceEventThreshold(this.__wbg_ptr,e,t)}coSetDensity(e,t){n.rawcolliderset_coSetDensity(this.__wbg_ptr,e,t)}coSetMass(e,t){n.rawcolliderset_coSetMass(this.__wbg_ptr,e,t)}coSetMassProperties(e,t,r,i,a){h(r,z),h(i,z),h(a,L),n.rawcolliderset_coSetMassProperties(this.__wbg_ptr,e,t,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr)}constructor(){return this.__wbg_ptr=n.rawcolliderset_new()>>>0,ce.register(this,this.__wbg_ptr,this),this}len(){return n.rawcolliderset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawcolliderset_contains(this.__wbg_ptr,e)!==0}createCollider(e,t,r,i,a,o,s,c,l,u,d,f,m,g,_,v,y,b,ee,te,x,ne,S,C,w){try{let D=n.__wbindgen_add_to_stack_pointer(-16);h(t,R),h(r,z),h(i,L),h(s,z),h(c,z),h(l,L),h(w,I),n.rawcolliderset_createCollider(D,this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u,d,f,m,g,_,v,y,b,ee,te,x,ne,S,C,w.__wbg_ptr);var T=p().getInt32(D+0,!0),E=p().getFloat64(D+8,!0);return T===0?void 0:E}finally{n.__wbindgen_add_to_stack_pointer(16)}}remove(e,t,r,i){h(t,N),h(r,I),n.rawcolliderset_remove(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}isHandleValid(e){return n.rawcolliderset_contains(this.__wbg_ptr,e)!==0}forEachColliderHandle(e){try{n.rawcolliderset_forEachColliderHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}},le=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcollidershapecasthit_free(e>>>0,1))),ue=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,le.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,le.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcollidershapecasthit_free(e,0)}colliderHandle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}witness1(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}witness2(){let e=n.rawcollidershapecasthit_witness2(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);return z.__wrap(e)}},de=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactforceevent_free(e>>>0,1))),fe=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,de.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,de.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactforceevent_free(e,0)}collider1(){return n.rawcharactercollision_handle(this.__wbg_ptr)}collider2(){return n.rawcontactforceevent_collider2(this.__wbg_ptr)}total_force(){let e=n.rawcontactforceevent_total_force(this.__wbg_ptr);return z.__wrap(e)}total_force_magnitude(){return n.rawcontactforceevent_total_force_magnitude(this.__wbg_ptr)}max_force_direction(){let e=n.rawcontactforceevent_max_force_direction(this.__wbg_ptr);return z.__wrap(e)}max_force_magnitude(){return n.rawcontactforceevent_max_force_magnitude(this.__wbg_ptr)}},pe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactmanifold_free(e>>>0,1))),me=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,pe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,pe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactmanifold_free(e,0)}normal(){let e=n.rawcontactmanifold_normal(this.__wbg_ptr);return z.__wrap(e)}local_n1(){let e=n.rawcontactmanifold_local_n1(this.__wbg_ptr);return z.__wrap(e)}local_n2(){let e=n.rawcontactmanifold_local_n2(this.__wbg_ptr);return z.__wrap(e)}subshape1(){return n.rawcontactmanifold_subshape1(this.__wbg_ptr)>>>0}subshape2(){return n.rawcontactmanifold_subshape2(this.__wbg_ptr)>>>0}num_contacts(){return n.rawcontactmanifold_num_contacts(this.__wbg_ptr)>>>0}contact_local_p1(e){let t=n.rawcontactmanifold_contact_local_p1(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}contact_local_p2(e){let t=n.rawcontactmanifold_contact_local_p2(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}contact_dist(e){return n.rawcontactmanifold_contact_dist(this.__wbg_ptr,e)}contact_fid1(e){return n.rawcontactmanifold_contact_fid1(this.__wbg_ptr,e)>>>0}contact_fid2(e){return n.rawcontactmanifold_contact_fid2(this.__wbg_ptr,e)>>>0}contact_impulse(e){return n.rawcontactmanifold_contact_impulse(this.__wbg_ptr,e)}contact_tangent_impulse_x(e){return n.rawcontactmanifold_contact_tangent_impulse_x(this.__wbg_ptr,e)}contact_tangent_impulse_y(e){return n.rawcontactmanifold_contact_tangent_impulse_y(this.__wbg_ptr,e)}num_solver_contacts(){return n.rawcontactmanifold_num_solver_contacts(this.__wbg_ptr)>>>0}solver_contact_point(e){let t=n.rawcontactmanifold_solver_contact_point(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}solver_contact_dist(e){return n.rawcontactmanifold_solver_contact_dist(this.__wbg_ptr,e)}solver_contact_friction(e){return n.rawcontactmanifold_solver_contact_friction(this.__wbg_ptr,e)}solver_contact_restitution(e){return n.rawcontactmanifold_solver_contact_restitution(this.__wbg_ptr,e)}solver_contact_tangent_velocity(e){let t=n.rawcontactmanifold_solver_contact_tangent_velocity(this.__wbg_ptr,e);return z.__wrap(t)}},he=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactpair_free(e>>>0,1))),ge=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,he.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,he.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactpair_free(e,0)}collider1(){return n.rawcontactpair_collider1(this.__wbg_ptr)}collider2(){return n.rawcontactpair_collider2(this.__wbg_ptr)}numContactManifolds(){return n.rawcontactpair_numContactManifolds(this.__wbg_ptr)>>>0}contactManifold(e){let t=n.rawcontactpair_contactManifold(this.__wbg_ptr,e);return t===0?void 0:me.__wrap(t)}},_e=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdebugrenderpipeline_free(e>>>0,1))),ve=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,_e.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdebugrenderpipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawdebugrenderpipeline_new()>>>0,_e.register(this,this.__wbg_ptr,this),this}vertices(){return m(n.rawdebugrenderpipeline_vertices(this.__wbg_ptr))}colors(){return m(n.rawdebugrenderpipeline_colors(this.__wbg_ptr))}render(e,t,i,a,o,s,c){try{h(e,I),h(t,k),h(i,j),h(a,P),h(o,F),n.rawdebugrenderpipeline_render(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,_(c))}finally{r[g++]=void 0}}},ye=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdeserializedworld_free(e>>>0,1))),be=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ye.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ye.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdeserializedworld_free(e,0)}takeGravity(){let e=n.rawdeserializedworld_takeGravity(this.__wbg_ptr);return e===0?void 0:z.__wrap(e)}takeIntegrationParameters(){let e=n.rawdeserializedworld_takeIntegrationParameters(this.__wbg_ptr);return e===0?void 0:M.__wrap(e)}takeIslandManager(){let e=n.rawdeserializedworld_takeIslandManager(this.__wbg_ptr);return e===0?void 0:N.__wrap(e)}takeBroadPhase(){let e=n.rawdeserializedworld_takeBroadPhase(this.__wbg_ptr);return e===0?void 0:O.__wrap(e)}takeNarrowPhase(){let e=n.rawdeserializedworld_takeNarrowPhase(this.__wbg_ptr);return e===0?void 0:F.__wrap(e)}takeBodies(){let e=n.rawdeserializedworld_takeBodies(this.__wbg_ptr);return e===0?void 0:I.__wrap(e)}takeColliders(){let e=n.rawdeserializedworld_takeColliders(this.__wbg_ptr);return e===0?void 0:k.__wrap(e)}takeImpulseJoints(){let e=n.rawdeserializedworld_takeImpulseJoints(this.__wbg_ptr);return e===0?void 0:j.__wrap(e)}takeMultibodyJoints(){let e=n.rawdeserializedworld_takeMultibodyJoints(this.__wbg_ptr);return e===0?void 0:P.__wrap(e)}},xe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdynamicraycastvehiclecontroller_free(e>>>0,1))),Se=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,xe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdynamicraycastvehiclecontroller_free(e,0)}constructor(e){return this.__wbg_ptr=n.rawdynamicraycastvehiclecontroller_new(e)>>>0,xe.register(this,this.__wbg_ptr,this),this}current_vehicle_speed(){return n.rawdynamicraycastvehiclecontroller_current_vehicle_speed(this.__wbg_ptr)}chassis(){return n.rawdynamicraycastvehiclecontroller_chassis(this.__wbg_ptr)}index_up_axis(){return n.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr)>>>0}set_index_up_axis(e){n.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr,e)}index_forward_axis(){return n.rawdynamicraycastvehiclecontroller_index_forward_axis(this.__wbg_ptr)>>>0}set_index_forward_axis(e){n.rawdynamicraycastvehiclecontroller_set_index_forward_axis(this.__wbg_ptr,e)}add_wheel(e,t,r,i,a){h(e,z),h(t,z),h(r,z),n.rawdynamicraycastvehiclecontroller_add_wheel(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i,a)}num_wheels(){return n.rawdynamicraycastvehiclecontroller_num_wheels(this.__wbg_ptr)>>>0}update_vehicle(e,t,i,a,o,s,c,l){try{h(t,O),h(i,F),h(a,I),h(o,k),n.rawdynamicraycastvehiclecontroller_update_vehicle(this.__wbg_ptr,e,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,d(c)?4294967297:c>>>0,_(l))}finally{r[g++]=void 0}}wheel_chassis_connection_point_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_chassis_connection_point_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_chassis_connection_point_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_chassis_connection_point_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_suspension_rest_length(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_rest_length(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_rest_length(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_rest_length(this.__wbg_ptr,e,t)}wheel_max_suspension_travel(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_max_suspension_travel(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_max_suspension_travel(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_travel(this.__wbg_ptr,e,t)}wheel_radius(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_radius(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_radius(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_radius(this.__wbg_ptr,e,t)}wheel_suspension_stiffness(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_stiffness(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_stiffness(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_stiffness(this.__wbg_ptr,e,t)}wheel_suspension_compression(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_compression(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_compression(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_compression(this.__wbg_ptr,e,t)}wheel_suspension_relaxation(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_relaxation(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_relaxation(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_relaxation(this.__wbg_ptr,e,t)}wheel_max_suspension_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_max_suspension_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_max_suspension_force(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_force(this.__wbg_ptr,e,t)}wheel_brake(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_brake(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_brake(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_brake(this.__wbg_ptr,e,t)}wheel_steering(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_steering(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_steering(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_steering(this.__wbg_ptr,e,t)}wheel_engine_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_engine_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_engine_force(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_engine_force(this.__wbg_ptr,e,t)}wheel_direction_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_direction_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_direction_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_direction_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_axle_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_axle_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_axle_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_axle_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_friction_slip(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_friction_slip(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_friction_slip(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_friction_slip(this.__wbg_ptr,e,t)}wheel_side_friction_stiffness(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_side_friction_stiffness(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_side_friction_stiffness(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_side_friction_stiffness(this.__wbg_ptr,e,t)}wheel_rotation(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_rotation(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_forward_impulse(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_forward_impulse(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_side_impulse(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_side_impulse(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_suspension_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_contact_normal_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_contact_normal_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_contact_point_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_contact_point_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_suspension_length(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_length(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_hard_point_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_hard_point_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_is_in_contact(e){return n.rawdynamicraycastvehiclecontroller_wheel_is_in_contact(this.__wbg_ptr,e)!==0}wheel_ground_object(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawdynamicraycastvehiclecontroller_wheel_ground_object(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getFloat64(i+8,!0);return t===0?void 0:r}finally{n.__wbindgen_add_to_stack_pointer(16)}}},Ce=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_raweventqueue_free(e>>>0,1))),we=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ce.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_raweventqueue_free(e,0)}constructor(e){return this.__wbg_ptr=n.raweventqueue_new(e)>>>0,Ce.register(this,this.__wbg_ptr,this),this}drainCollisionEvents(e){try{n.raweventqueue_drainCollisionEvents(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}drainContactForceEvents(e){try{n.raweventqueue_drainContactForceEvents(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}clear(){n.raweventqueue_clear(this.__wbg_ptr)}},Te=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawgenericjoint_free(e>>>0,1))),A=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Te.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Te.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawgenericjoint_free(e,0)}static generic(t,r,i,a){h(t,z),h(r,z),h(i,z);let o=n.rawgenericjoint_generic(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return o===0?void 0:e.__wrap(o)}static spring(t,r,i,a,o){h(a,z),h(o,z);let s=n.rawgenericjoint_spring(t,r,i,a.__wbg_ptr,o.__wbg_ptr);return e.__wrap(s)}static rope(t,r,i){h(r,z),h(i,z);let a=n.rawgenericjoint_rope(t,r.__wbg_ptr,i.__wbg_ptr);return e.__wrap(a)}static spherical(t,r){h(t,z),h(r,z);let i=n.rawgenericjoint_spherical(t.__wbg_ptr,r.__wbg_ptr);return e.__wrap(i)}static prismatic(t,r,i,a,o,s){h(t,z),h(r,z),h(i,z);let c=n.rawgenericjoint_prismatic(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o,s);return c===0?void 0:e.__wrap(c)}static fixed(t,r,i,a){h(t,z),h(r,L),h(i,z),h(a,L);let o=n.rawgenericjoint_fixed(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr);return e.__wrap(o)}static revolute(t,r,i){h(t,z),h(r,z),h(i,z);let a=n.rawgenericjoint_revolute(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr);return a===0?void 0:e.__wrap(a)}},Ee=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawimpulsejointset_free(e>>>0,1))),j=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ee.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ee.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawimpulsejointset_free(e,0)}jointType(e){return n.rawimpulsejointset_jointType(this.__wbg_ptr,e)}jointBodyHandle1(e){return n.rawimpulsejointset_jointBodyHandle1(this.__wbg_ptr,e)}jointBodyHandle2(e){return n.rawimpulsejointset_jointBodyHandle2(this.__wbg_ptr,e)}jointFrameX1(e){let t=n.rawimpulsejointset_jointFrameX1(this.__wbg_ptr,e);return L.__wrap(t)}jointFrameX2(e){let t=n.rawimpulsejointset_jointFrameX2(this.__wbg_ptr,e);return L.__wrap(t)}jointAnchor1(e){let t=n.rawimpulsejointset_jointAnchor1(this.__wbg_ptr,e);return z.__wrap(t)}jointAnchor2(e){let t=n.rawimpulsejointset_jointAnchor2(this.__wbg_ptr,e);return z.__wrap(t)}jointSetAnchor1(e,t){h(t,z),n.rawimpulsejointset_jointSetAnchor1(this.__wbg_ptr,e,t.__wbg_ptr)}jointSetAnchor2(e,t){h(t,z),n.rawimpulsejointset_jointSetAnchor2(this.__wbg_ptr,e,t.__wbg_ptr)}jointContactsEnabled(e){return n.rawimpulsejointset_jointContactsEnabled(this.__wbg_ptr,e)!==0}jointSetContactsEnabled(e,t){n.rawimpulsejointset_jointSetContactsEnabled(this.__wbg_ptr,e,t)}jointLimitsEnabled(e,t){return n.rawimpulsejointset_jointLimitsEnabled(this.__wbg_ptr,e,t)!==0}jointLimitsMin(e,t){return n.rawimpulsejointset_jointLimitsMin(this.__wbg_ptr,e,t)}jointLimitsMax(e,t){return n.rawimpulsejointset_jointLimitsMax(this.__wbg_ptr,e,t)}jointSetLimits(e,t,r,i){n.rawimpulsejointset_jointSetLimits(this.__wbg_ptr,e,t,r,i)}jointConfigureMotorModel(e,t,r){n.rawimpulsejointset_jointConfigureMotorModel(this.__wbg_ptr,e,t,r)}jointConfigureMotorVelocity(e,t,r,i){n.rawimpulsejointset_jointConfigureMotorVelocity(this.__wbg_ptr,e,t,r,i)}jointConfigureMotorPosition(e,t,r,i,a){n.rawimpulsejointset_jointConfigureMotorPosition(this.__wbg_ptr,e,t,r,i,a)}jointConfigureMotor(e,t,r,i,a,o){n.rawimpulsejointset_jointConfigureMotor(this.__wbg_ptr,e,t,r,i,a,o)}constructor(){return this.__wbg_ptr=n.rawimpulsejointset_new()>>>0,Ee.register(this,this.__wbg_ptr,this),this}createJoint(e,t,r,i){return h(e,A),n.rawimpulsejointset_createJoint(this.__wbg_ptr,e.__wbg_ptr,t,r,i)}remove(e,t){n.rawimpulsejointset_remove(this.__wbg_ptr,e,t)}len(){return n.rawimpulsejointset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawimpulsejointset_contains(this.__wbg_ptr,e)!==0}forEachJointHandle(e){try{n.rawimpulsejointset_forEachJointHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}forEachJointAttachedToRigidBody(e,t){try{n.rawimpulsejointset_forEachJointAttachedToRigidBody(this.__wbg_ptr,e,_(t))}finally{r[g++]=void 0}}},De=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawintegrationparameters_free(e>>>0,1))),M=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,De.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,De.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawintegrationparameters_free(e,0)}constructor(){return this.__wbg_ptr=n.rawintegrationparameters_new()>>>0,De.register(this,this.__wbg_ptr,this),this}get dt(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}get contact_erp(){return n.rawintegrationparameters_contact_erp(this.__wbg_ptr)}get normalizedAllowedLinearError(){return n.rawintegrationparameters_normalizedAllowedLinearError(this.__wbg_ptr)}get normalizedPredictionDistance(){return n.rawintegrationparameters_normalizedPredictionDistance(this.__wbg_ptr)}get numSolverIterations(){return n.rawintegrationparameters_numSolverIterations(this.__wbg_ptr)>>>0}get numInternalPgsIterations(){return n.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr)>>>0}get minIslandSize(){return n.rawintegrationparameters_minIslandSize(this.__wbg_ptr)>>>0}get maxCcdSubsteps(){return n.rawintegrationparameters_maxCcdSubsteps(this.__wbg_ptr)>>>0}get lengthUnit(){return n.rawcontactforceevent_total_force_magnitude(this.__wbg_ptr)}set dt(e){n.rawintegrationparameters_set_dt(this.__wbg_ptr,e)}set contact_natural_frequency(e){n.rawintegrationparameters_set_contact_natural_frequency(this.__wbg_ptr,e)}set normalizedAllowedLinearError(e){n.rawintegrationparameters_set_normalizedAllowedLinearError(this.__wbg_ptr,e)}set normalizedPredictionDistance(e){n.rawintegrationparameters_set_normalizedPredictionDistance(this.__wbg_ptr,e)}set numSolverIterations(e){n.rawintegrationparameters_set_numSolverIterations(this.__wbg_ptr,e)}set numInternalPgsIterations(e){n.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr,e)}set minIslandSize(e){n.rawintegrationparameters_set_minIslandSize(this.__wbg_ptr,e)}set maxCcdSubsteps(e){n.rawintegrationparameters_set_maxCcdSubsteps(this.__wbg_ptr,e)}set lengthUnit(e){n.rawintegrationparameters_set_lengthUnit(this.__wbg_ptr,e)}},Oe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawislandmanager_free(e>>>0,1))),N=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Oe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Oe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawislandmanager_free(e,0)}constructor(){return this.__wbg_ptr=n.rawislandmanager_new()>>>0,Oe.register(this,this.__wbg_ptr,this),this}forEachActiveRigidBodyHandle(e){try{n.rawislandmanager_forEachActiveRigidBodyHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}},ke=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawkinematiccharactercontroller_free(e>>>0,1))),Ae=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ke.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawkinematiccharactercontroller_free(e,0)}constructor(e){return this.__wbg_ptr=n.rawkinematiccharactercontroller_new(e)>>>0,ke.register(this,this.__wbg_ptr,this),this}up(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}setUp(e){h(e,z),n.rawkinematiccharactercontroller_setUp(this.__wbg_ptr,e.__wbg_ptr)}normalNudgeFactor(){return n.rawkinematiccharactercontroller_normalNudgeFactor(this.__wbg_ptr)}setNormalNudgeFactor(e){n.rawkinematiccharactercontroller_setNormalNudgeFactor(this.__wbg_ptr,e)}offset(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}setOffset(e){n.rawkinematiccharactercontroller_setOffset(this.__wbg_ptr,e)}slideEnabled(){return n.rawkinematiccharactercontroller_slideEnabled(this.__wbg_ptr)!==0}setSlideEnabled(e){n.rawkinematiccharactercontroller_setSlideEnabled(this.__wbg_ptr,e)}autostepMaxHeight(){let e=n.rawkinematiccharactercontroller_autostepMaxHeight(this.__wbg_ptr);return e===4294967297?void 0:e}autostepMinWidth(){let e=n.rawkinematiccharactercontroller_autostepMinWidth(this.__wbg_ptr);return e===4294967297?void 0:e}autostepIncludesDynamicBodies(){let e=n.rawkinematiccharactercontroller_autostepIncludesDynamicBodies(this.__wbg_ptr);return e===16777215?void 0:e!==0}autostepEnabled(){return n.rawkinematiccharactercontroller_autostepEnabled(this.__wbg_ptr)!==0}enableAutostep(e,t,r){n.rawkinematiccharactercontroller_enableAutostep(this.__wbg_ptr,e,t,r)}disableAutostep(){n.rawkinematiccharactercontroller_disableAutostep(this.__wbg_ptr)}maxSlopeClimbAngle(){return n.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr)}setMaxSlopeClimbAngle(e){n.rawkinematiccharactercontroller_setMaxSlopeClimbAngle(this.__wbg_ptr,e)}minSlopeSlideAngle(){return n.rawkinematiccharactercontroller_minSlopeSlideAngle(this.__wbg_ptr)}setMinSlopeSlideAngle(e){n.rawkinematiccharactercontroller_setMinSlopeSlideAngle(this.__wbg_ptr,e)}snapToGroundDistance(){let e=n.rawkinematiccharactercontroller_snapToGroundDistance(this.__wbg_ptr);return e===4294967297?void 0:e}enableSnapToGround(e){n.rawkinematiccharactercontroller_enableSnapToGround(this.__wbg_ptr,e)}disableSnapToGround(){n.rawkinematiccharactercontroller_disableSnapToGround(this.__wbg_ptr)}snapToGroundEnabled(){return n.rawkinematiccharactercontroller_snapToGroundEnabled(this.__wbg_ptr)!==0}computeColliderMovement(e,t,i,a,o,s,c,l,u,f,p,m){try{h(t,O),h(i,F),h(a,I),h(o,k),h(c,z),n.rawkinematiccharactercontroller_computeColliderMovement(this.__wbg_ptr,e,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c.__wbg_ptr,l,d(u)?4294967297:Math.fround(u),f,d(p)?4294967297:p>>>0,_(m))}finally{r[g++]=void 0}}computedMovement(){let e=n.rawkinematiccharactercontroller_computedMovement(this.__wbg_ptr);return z.__wrap(e)}computedGrounded(){return n.rawkinematiccharactercontroller_computedGrounded(this.__wbg_ptr)!==0}numComputedCollisions(){return n.rawkinematiccharactercontroller_numComputedCollisions(this.__wbg_ptr)>>>0}computedCollision(e,t){return h(t,se),n.rawkinematiccharactercontroller_computedCollision(this.__wbg_ptr,e,t.__wbg_ptr)!==0}},je=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawmultibodyjointset_free(e>>>0,1))),P=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,je.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,je.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawmultibodyjointset_free(e,0)}jointType(e){return n.rawmultibodyjointset_jointType(this.__wbg_ptr,e)}jointFrameX1(e){let t=n.rawmultibodyjointset_jointFrameX1(this.__wbg_ptr,e);return L.__wrap(t)}jointFrameX2(e){let t=n.rawmultibodyjointset_jointFrameX2(this.__wbg_ptr,e);return L.__wrap(t)}jointAnchor1(e){let t=n.rawmultibodyjointset_jointAnchor1(this.__wbg_ptr,e);return z.__wrap(t)}jointAnchor2(e){let t=n.rawmultibodyjointset_jointAnchor2(this.__wbg_ptr,e);return z.__wrap(t)}jointContactsEnabled(e){return n.rawmultibodyjointset_jointContactsEnabled(this.__wbg_ptr,e)!==0}jointSetContactsEnabled(e,t){n.rawmultibodyjointset_jointSetContactsEnabled(this.__wbg_ptr,e,t)}jointLimitsEnabled(e,t){return n.rawmultibodyjointset_jointLimitsEnabled(this.__wbg_ptr,e,t)!==0}jointLimitsMin(e,t){return n.rawmultibodyjointset_jointLimitsMin(this.__wbg_ptr,e,t)}jointLimitsMax(e,t){return n.rawmultibodyjointset_jointLimitsMax(this.__wbg_ptr,e,t)}constructor(){return this.__wbg_ptr=n.rawmultibodyjointset_new()>>>0,je.register(this,this.__wbg_ptr,this),this}createJoint(e,t,r,i){return h(e,A),n.rawmultibodyjointset_createJoint(this.__wbg_ptr,e.__wbg_ptr,t,r,i)}remove(e,t){n.rawmultibodyjointset_remove(this.__wbg_ptr,e,t)}contains(e){return n.rawmultibodyjointset_contains(this.__wbg_ptr,e)!==0}forEachJointHandle(e){try{n.rawmultibodyjointset_forEachJointHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}forEachJointAttachedToRigidBody(e,t){try{n.rawmultibodyjointset_forEachJointAttachedToRigidBody(this.__wbg_ptr,e,_(t))}finally{r[g++]=void 0}}},Me=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawnarrowphase_free(e>>>0,1))),F=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Me.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Me.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawnarrowphase_free(e,0)}constructor(){return this.__wbg_ptr=n.rawnarrowphase_new()>>>0,Me.register(this,this.__wbg_ptr,this),this}contact_pairs_with(e,t){n.rawnarrowphase_contact_pairs_with(this.__wbg_ptr,e,o(t))}contact_pair(e,t){let r=n.rawnarrowphase_contact_pair(this.__wbg_ptr,e,t);return r===0?void 0:ge.__wrap(r)}intersection_pairs_with(e,t){n.rawnarrowphase_intersection_pairs_with(this.__wbg_ptr,e,o(t))}intersection_pair(e,t){return n.rawnarrowphase_intersection_pair(this.__wbg_ptr,e,t)!==0}},Ne=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawphysicspipeline_free(e>>>0,1))),Pe=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ne.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawphysicspipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawphysicspipeline_new()>>>0,Ne.register(this,this.__wbg_ptr,this),this}set_profiler_enabled(e){n.rawphysicspipeline_set_profiler_enabled(this.__wbg_ptr,e)}is_profiler_enabled(){return n.rawphysicspipeline_is_profiler_enabled(this.__wbg_ptr)!==0}timing_step(){return n.rawphysicspipeline_timing_step(this.__wbg_ptr)}timing_collision_detection(){return n.rawphysicspipeline_timing_collision_detection(this.__wbg_ptr)}timing_broad_phase(){return n.rawphysicspipeline_timing_broad_phase(this.__wbg_ptr)}timing_narrow_phase(){return n.rawphysicspipeline_timing_narrow_phase(this.__wbg_ptr)}timing_solver(){return n.rawphysicspipeline_timing_solver(this.__wbg_ptr)}timing_velocity_assembly(){return n.rawphysicspipeline_timing_velocity_assembly(this.__wbg_ptr)}timing_velocity_resolution(){return n.rawphysicspipeline_timing_velocity_resolution(this.__wbg_ptr)}timing_velocity_update(){return n.rawphysicspipeline_timing_velocity_update(this.__wbg_ptr)}timing_velocity_writeback(){return n.rawphysicspipeline_timing_velocity_writeback(this.__wbg_ptr)}timing_ccd(){return n.rawphysicspipeline_timing_ccd(this.__wbg_ptr)}timing_ccd_toi_computation(){return n.rawphysicspipeline_timing_ccd_toi_computation(this.__wbg_ptr)}timing_ccd_broad_phase(){return n.rawphysicspipeline_timing_ccd_broad_phase(this.__wbg_ptr)}timing_ccd_narrow_phase(){return n.rawphysicspipeline_timing_ccd_narrow_phase(this.__wbg_ptr)}timing_ccd_solver(){return n.rawphysicspipeline_timing_ccd_solver(this.__wbg_ptr)}timing_island_construction(){return n.rawphysicspipeline_timing_island_construction(this.__wbg_ptr)}timing_user_changes(){return n.rawphysicspipeline_timing_user_changes(this.__wbg_ptr)}step(e,t,r,i,a,o,s,c,l,u){h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(o,I),h(s,k),h(c,j),h(l,P),h(u,ae),n.rawphysicspipeline_step(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr)}stepWithEvents(e,t,r,i,a,s,c,l,u,d,f,p,m,g){h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(s,I),h(c,k),h(l,j),h(u,P),h(d,ae),h(f,we),n.rawphysicspipeline_stepWithEvents(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr,d.__wbg_ptr,f.__wbg_ptr,o(p),o(m),o(g))}},Fe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpidcontroller_free(e>>>0,1))),Ie=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Fe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpidcontroller_free(e,0)}constructor(e,t,r,i){return this.__wbg_ptr=n.rawpidcontroller_new(e,t,r,i)>>>0,Fe.register(this,this.__wbg_ptr,this),this}set_kp(e,t){n.rawpidcontroller_set_kp(this.__wbg_ptr,e,t)}set_ki(e,t){n.rawpidcontroller_set_ki(this.__wbg_ptr,e,t)}set_kd(e,t){n.rawpidcontroller_set_kd(this.__wbg_ptr,e,t)}set_axes_mask(e){n.rawpidcontroller_set_axes_mask(this.__wbg_ptr,e)}reset_integrals(){n.rawpidcontroller_reset_integrals(this.__wbg_ptr)}apply_linear_correction(e,t,r,i,a){h(t,I),h(i,z),h(a,z),n.rawpidcontroller_apply_linear_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr)}apply_angular_correction(e,t,r,i,a){h(t,I),h(i,L),h(a,z),n.rawpidcontroller_apply_angular_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr)}linear_correction(e,t,r,i,a){h(t,I),h(i,z),h(a,z);let o=n.rawpidcontroller_linear_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr);return z.__wrap(o)}angular_correction(e,t,r,i,a){h(t,I),h(i,L),h(a,z);let o=n.rawpidcontroller_angular_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr);return z.__wrap(o)}},Le=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpointcolliderprojection_free(e>>>0,1))),Re=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Le.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Le.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpointcolliderprojection_free(e,0)}colliderHandle(){return n.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr)}point(){let e=n.rawpointcolliderprojection_point(this.__wbg_ptr);return z.__wrap(e)}isInside(){return n.rawpointcolliderprojection_isInside(this.__wbg_ptr)!==0}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},ze=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpointprojection_free(e>>>0,1))),Be=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ze.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ze.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpointprojection_free(e,0)}point(){let e=n.rawpointprojection_point(this.__wbg_ptr);return z.__wrap(e)}isInside(){return n.rawpointprojection_isInside(this.__wbg_ptr)!==0}},Ve=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawraycolliderhit_free(e>>>0,1))),He=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ve.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ve.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawraycolliderhit_free(e,0)}colliderHandle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}timeOfImpact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}},Ue=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawraycolliderintersection_free(e>>>0,1))),We=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ue.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ue.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawraycolliderintersection_free(e,0)}colliderHandle(){return n.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr)}normal(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},Ge=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrayintersection_free(e>>>0,1))),Ke=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ge.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ge.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrayintersection_free(e,0)}normal(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},qe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrigidbodyset_free(e>>>0,1))),I=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,qe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,qe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrigidbodyset_free(e,0)}rbTranslation(e){let t=n.rawrigidbodyset_rbTranslation(this.__wbg_ptr,e);return z.__wrap(t)}rbRotation(e){let t=n.rawrigidbodyset_rbRotation(this.__wbg_ptr,e);return L.__wrap(t)}rbSleep(e){n.rawrigidbodyset_rbSleep(this.__wbg_ptr,e)}rbIsSleeping(e){return n.rawrigidbodyset_rbIsSleeping(this.__wbg_ptr,e)!==0}rbIsMoving(e){return n.rawrigidbodyset_rbIsMoving(this.__wbg_ptr,e)!==0}rbNextTranslation(e){let t=n.rawrigidbodyset_rbNextTranslation(this.__wbg_ptr,e);return z.__wrap(t)}rbNextRotation(e){let t=n.rawrigidbodyset_rbNextRotation(this.__wbg_ptr,e);return L.__wrap(t)}rbSetTranslation(e,t,r,i,a){n.rawrigidbodyset_rbSetTranslation(this.__wbg_ptr,e,t,r,i,a)}rbSetRotation(e,t,r,i,a,o){n.rawrigidbodyset_rbSetRotation(this.__wbg_ptr,e,t,r,i,a,o)}rbSetLinvel(e,t,r){h(t,z),n.rawrigidbodyset_rbSetLinvel(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbSetAngvel(e,t,r){h(t,z),n.rawrigidbodyset_rbSetAngvel(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbSetNextKinematicTranslation(e,t,r,i){n.rawrigidbodyset_rbSetNextKinematicTranslation(this.__wbg_ptr,e,t,r,i)}rbSetNextKinematicRotation(e,t,r,i,a){n.rawrigidbodyset_rbSetNextKinematicRotation(this.__wbg_ptr,e,t,r,i,a)}rbRecomputeMassPropertiesFromColliders(e,t){h(t,k),n.rawrigidbodyset_rbRecomputeMassPropertiesFromColliders(this.__wbg_ptr,e,t.__wbg_ptr)}rbSetAdditionalMass(e,t,r){n.rawrigidbodyset_rbSetAdditionalMass(this.__wbg_ptr,e,t,r)}rbSetAdditionalMassProperties(e,t,r,i,a,o){h(r,z),h(i,z),h(a,L),n.rawrigidbodyset_rbSetAdditionalMassProperties(this.__wbg_ptr,e,t,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o)}rbLinvel(e){let t=n.rawrigidbodyset_rbLinvel(this.__wbg_ptr,e);return z.__wrap(t)}rbAngvel(e){let t=n.rawrigidbodyset_rbAngvel(this.__wbg_ptr,e);return z.__wrap(t)}rbVelocityAtPoint(e,t){h(t,z);let r=n.rawrigidbodyset_rbVelocityAtPoint(this.__wbg_ptr,e,t.__wbg_ptr);return z.__wrap(r)}rbLockTranslations(e,t,r){n.rawrigidbodyset_rbLockTranslations(this.__wbg_ptr,e,t,r)}rbSetEnabledTranslations(e,t,r,i,a){n.rawrigidbodyset_rbSetEnabledTranslations(this.__wbg_ptr,e,t,r,i,a)}rbLockRotations(e,t,r){n.rawrigidbodyset_rbLockRotations(this.__wbg_ptr,e,t,r)}rbSetEnabledRotations(e,t,r,i,a){n.rawrigidbodyset_rbSetEnabledRotations(this.__wbg_ptr,e,t,r,i,a)}rbDominanceGroup(e){return n.rawrigidbodyset_rbDominanceGroup(this.__wbg_ptr,e)}rbSetDominanceGroup(e,t){n.rawrigidbodyset_rbSetDominanceGroup(this.__wbg_ptr,e,t)}rbEnableCcd(e,t){n.rawrigidbodyset_rbEnableCcd(this.__wbg_ptr,e,t)}rbSetSoftCcdPrediction(e,t){n.rawrigidbodyset_rbSetSoftCcdPrediction(this.__wbg_ptr,e,t)}rbMass(e){return n.rawrigidbodyset_rbMass(this.__wbg_ptr,e)}rbInvMass(e){return n.rawrigidbodyset_rbInvMass(this.__wbg_ptr,e)}rbEffectiveInvMass(e){let t=n.rawrigidbodyset_rbEffectiveInvMass(this.__wbg_ptr,e);return z.__wrap(t)}rbLocalCom(e){let t=n.rawrigidbodyset_rbLocalCom(this.__wbg_ptr,e);return z.__wrap(t)}rbWorldCom(e){let t=n.rawrigidbodyset_rbWorldCom(this.__wbg_ptr,e);return z.__wrap(t)}rbInvPrincipalInertia(e){let t=n.rawrigidbodyset_rbInvPrincipalInertia(this.__wbg_ptr,e);return z.__wrap(t)}rbPrincipalInertiaLocalFrame(e){let t=n.rawrigidbodyset_rbPrincipalInertiaLocalFrame(this.__wbg_ptr,e);return L.__wrap(t)}rbPrincipalInertia(e){let t=n.rawrigidbodyset_rbPrincipalInertia(this.__wbg_ptr,e);return z.__wrap(t)}rbEffectiveWorldInvInertia(e){let t=n.rawrigidbodyset_rbEffectiveWorldInvInertia(this.__wbg_ptr,e);return Xe.__wrap(t)}rbEffectiveAngularInertia(e){let t=n.rawrigidbodyset_rbEffectiveAngularInertia(this.__wbg_ptr,e);return Xe.__wrap(t)}rbWakeUp(e){n.rawrigidbodyset_rbWakeUp(this.__wbg_ptr,e)}rbIsCcdEnabled(e){return n.rawrigidbodyset_rbIsCcdEnabled(this.__wbg_ptr,e)!==0}rbSoftCcdPrediction(e){return n.rawrigidbodyset_rbSoftCcdPrediction(this.__wbg_ptr,e)}rbNumColliders(e){return n.rawrigidbodyset_rbNumColliders(this.__wbg_ptr,e)>>>0}rbCollider(e,t){return n.rawrigidbodyset_rbCollider(this.__wbg_ptr,e,t)}rbBodyType(e){return n.rawrigidbodyset_rbBodyType(this.__wbg_ptr,e)}rbSetBodyType(e,t,r){n.rawrigidbodyset_rbSetBodyType(this.__wbg_ptr,e,t,r)}rbIsFixed(e){return n.rawrigidbodyset_rbIsFixed(this.__wbg_ptr,e)!==0}rbIsKinematic(e){return n.rawrigidbodyset_rbIsKinematic(this.__wbg_ptr,e)!==0}rbIsDynamic(e){return n.rawrigidbodyset_rbIsDynamic(this.__wbg_ptr,e)!==0}rbLinearDamping(e){return n.rawrigidbodyset_rbLinearDamping(this.__wbg_ptr,e)}rbAngularDamping(e){return n.rawrigidbodyset_rbAngularDamping(this.__wbg_ptr,e)}rbSetLinearDamping(e,t){n.rawrigidbodyset_rbSetLinearDamping(this.__wbg_ptr,e,t)}rbSetAngularDamping(e,t){n.rawrigidbodyset_rbSetAngularDamping(this.__wbg_ptr,e,t)}rbSetEnabled(e,t){n.rawrigidbodyset_rbSetEnabled(this.__wbg_ptr,e,t)}rbIsEnabled(e){return n.rawrigidbodyset_rbIsEnabled(this.__wbg_ptr,e)!==0}rbGravityScale(e){return n.rawrigidbodyset_rbGravityScale(this.__wbg_ptr,e)}rbSetGravityScale(e,t,r){n.rawrigidbodyset_rbSetGravityScale(this.__wbg_ptr,e,t,r)}rbResetForces(e,t){n.rawrigidbodyset_rbResetForces(this.__wbg_ptr,e,t)}rbResetTorques(e,t){n.rawrigidbodyset_rbResetTorques(this.__wbg_ptr,e,t)}rbAddForce(e,t,r){h(t,z),n.rawrigidbodyset_rbAddForce(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbApplyImpulse(e,t,r){h(t,z),n.rawrigidbodyset_rbApplyImpulse(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbAddTorque(e,t,r){h(t,z),n.rawrigidbodyset_rbAddTorque(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbApplyTorqueImpulse(e,t,r){h(t,z),n.rawrigidbodyset_rbApplyTorqueImpulse(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbAddForceAtPoint(e,t,r,i){h(t,z),h(r,z),n.rawrigidbodyset_rbAddForceAtPoint(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}rbApplyImpulseAtPoint(e,t,r,i){h(t,z),h(r,z),n.rawrigidbodyset_rbApplyImpulseAtPoint(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}rbAdditionalSolverIterations(e){return n.rawrigidbodyset_rbAdditionalSolverIterations(this.__wbg_ptr,e)>>>0}rbSetAdditionalSolverIterations(e,t){n.rawrigidbodyset_rbSetAdditionalSolverIterations(this.__wbg_ptr,e,t)}rbUserData(e){return n.rawrigidbodyset_rbUserData(this.__wbg_ptr,e)>>>0}rbSetUserData(e,t){n.rawrigidbodyset_rbSetUserData(this.__wbg_ptr,e,t)}rbUserForce(e){let t=n.rawrigidbodyset_rbUserForce(this.__wbg_ptr,e);return z.__wrap(t)}rbUserTorque(e){let t=n.rawrigidbodyset_rbUserTorque(this.__wbg_ptr,e);return z.__wrap(t)}constructor(){return this.__wbg_ptr=n.rawrigidbodyset_new()>>>0,qe.register(this,this.__wbg_ptr,this),this}createRigidBody(e,t,r,i,a,o,s,c,l,u,d,f,p,m,g,_,v,y,b,ee,te,x,ne,S,C,w){return h(t,z),h(r,L),h(s,z),h(c,z),h(l,z),h(u,z),h(d,L),n.rawrigidbodyset_createRigidBody(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a,o,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr,d.__wbg_ptr,f,p,m,g,_,v,y,b,ee,te,x,ne,S,C,w)}remove(e,t,r,i,a){h(t,N),h(r,k),h(i,j),h(a,P),n.rawrigidbodyset_remove(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr)}len(){return n.rawrigidbodyset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawrigidbodyset_contains(this.__wbg_ptr,e)!==0}forEachRigidBodyHandle(e){try{n.rawrigidbodyset_forEachRigidBodyHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}propagateModifiedBodyPositionsToColliders(e){h(e,k),n.rawrigidbodyset_propagateModifiedBodyPositionsToColliders(this.__wbg_ptr,e.__wbg_ptr)}},Je=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrotation_free(e>>>0,1))),L=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Je.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Je.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrotation_free(e,0)}constructor(e,t,r,i){return this.__wbg_ptr=n.rawrotation_new(e,t,r,i)>>>0,Je.register(this,this.__wbg_ptr,this),this}static identity(){let t=n.rawrotation_identity();return e.__wrap(t)}get x(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}get y(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}get z(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}get w(){return n.rawrotation_w(this.__wbg_ptr)}},Ye=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawsdpmatrix3_free(e>>>0,1))),Xe=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ye.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ye.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawsdpmatrix3_free(e,0)}elements(){return m(n.rawsdpmatrix3_elements(this.__wbg_ptr))}},Ze=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawserializationpipeline_free(e>>>0,1))),Qe=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ze.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawserializationpipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawccdsolver_new()>>>0,Ze.register(this,this.__wbg_ptr,this),this}serializeAll(e,t,r,i,a,o,s,c,l){return h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(o,I),h(s,k),h(c,j),h(l,P),m(n.rawserializationpipeline_serializeAll(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr))}deserializeAll(e){let t=n.rawserializationpipeline_deserializeAll(this.__wbg_ptr,o(e));return t===0?void 0:be.__wrap(t)}},$e=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshape_free(e>>>0,1))),R=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,$e.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,$e.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshape_free(e,0)}static cuboid(t,r,i){let a=n.rawshape_cuboid(t,r,i);return e.__wrap(a)}static roundCuboid(t,r,i,a){let o=n.rawshape_roundCuboid(t,r,i,a);return e.__wrap(o)}static ball(t){let r=n.rawshape_ball(t);return e.__wrap(r)}static halfspace(t){h(t,z);let r=n.rawshape_halfspace(t.__wbg_ptr);return e.__wrap(r)}static capsule(t,r){let i=n.rawshape_capsule(t,r);return e.__wrap(i)}static cylinder(t,r){let i=n.rawshape_cylinder(t,r);return e.__wrap(i)}static roundCylinder(t,r,i){let a=n.rawshape_roundCylinder(t,r,i);return e.__wrap(a)}static cone(t,r){let i=n.rawshape_cone(t,r);return e.__wrap(i)}static roundCone(t,r,i){let a=n.rawshape_roundCone(t,r,i);return e.__wrap(a)}static voxels(t,r){h(t,z);let i=C(r,n.__wbindgen_export_2),a=S,o=n.rawshape_voxels(t.__wbg_ptr,i,a);return e.__wrap(o)}static voxelsFromPoints(t,r){h(t,z);let i=w(r,n.__wbindgen_export_2),a=S,o=n.rawshape_voxelsFromPoints(t.__wbg_ptr,i,a);return e.__wrap(o)}static polyline(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=C(r,n.__wbindgen_export_2),s=S,c=n.rawshape_polyline(i,a,o,s);return e.__wrap(c)}static trimesh(t,r,i){let a=w(t,n.__wbindgen_export_2),o=S,s=C(r,n.__wbindgen_export_2),c=S,l=n.rawshape_trimesh(a,o,s,c,i);return l===0?void 0:e.__wrap(l)}static heightfield(t,r,i,a,o){let s=w(i,n.__wbindgen_export_2),c=S;h(a,z);let l=n.rawshape_heightfield(t,r,s,c,a.__wbg_ptr,o);return e.__wrap(l)}static segment(t,r){h(t,z),h(r,z);let i=n.rawshape_segment(t.__wbg_ptr,r.__wbg_ptr);return e.__wrap(i)}static triangle(t,r,i){h(t,z),h(r,z),h(i,z);let a=n.rawshape_triangle(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr);return e.__wrap(a)}static roundTriangle(t,r,i,a){h(t,z),h(r,z),h(i,z);let o=n.rawshape_roundTriangle(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return e.__wrap(o)}static convexHull(t){let r=w(t,n.__wbindgen_export_2),i=S,a=n.rawshape_convexHull(r,i);return a===0?void 0:e.__wrap(a)}static roundConvexHull(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=n.rawshape_roundConvexHull(i,a,r);return o===0?void 0:e.__wrap(o)}static convexMesh(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=C(r,n.__wbindgen_export_2),s=S,c=n.rawshape_convexMesh(i,a,o,s);return c===0?void 0:e.__wrap(c)}static roundConvexMesh(t,r,i){let a=w(t,n.__wbindgen_export_2),o=S,s=C(r,n.__wbindgen_export_2),c=S,l=n.rawshape_roundConvexMesh(a,o,s,c,i);return l===0?void 0:e.__wrap(l)}castShape(t,r,i,a,o,s,c,l,u,d){h(t,z),h(r,L),h(i,z),h(a,e),h(o,z),h(s,L),h(c,z);let f=n.rawshape_castShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l,u,d);return f===0?void 0:tt.__wrap(f)}intersectsShape(t,r,i,a,o){return h(t,z),h(r,L),h(i,e),h(a,z),h(o,L),n.rawshape_intersectsShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr)!==0}contactShape(t,r,i,a,o,s){h(t,z),h(r,L),h(i,e),h(a,z),h(o,L);let c=n.rawshape_contactShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s);return c===0?void 0:rt.__wrap(c)}containsPoint(e,t,r){return h(e,z),h(t,L),h(r,z),n.rawshape_containsPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr)!==0}projectPoint(e,t,r,i){h(e,z),h(t,L),h(r,z);let a=n.rawshape_projectPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i);return Be.__wrap(a)}intersectsRay(e,t,r,i,a){return h(e,z),h(t,L),h(r,z),h(i,z),n.rawshape_intersectsRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a)!==0}castRay(e,t,r,i,a,o){return h(e,z),h(t,L),h(r,z),h(i,z),n.rawshape_castRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o)}castRayAndGetNormal(e,t,r,i,a,o){h(e,z),h(t,L),h(r,z),h(i,z);let s=n.rawshape_castRayAndGetNormal(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o);return s===0?void 0:Ke.__wrap(s)}},et=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshapecasthit_free(e>>>0,1))),tt=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,et.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,et.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshapecasthit_free(e,0)}time_of_impact(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}witness1(){let e=n.rawshapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}witness2(){let e=n.rawcontactforceevent_total_force(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawshapecasthit_normal1(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawshapecasthit_normal2(this.__wbg_ptr);return z.__wrap(e)}},nt=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshapecontact_free(e>>>0,1))),rt=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,nt.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,nt.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshapecontact_free(e,0)}distance(){return n.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr)}point1(){let e=n.rawpointprojection_point(this.__wbg_ptr);return z.__wrap(e)}point2(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawcollidershapecasthit_witness2(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}},it=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawvector_free(e>>>0,1))),z=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,it.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,it.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawvector_free(e,0)}static zero(){let t=n.rawvector_zero();return e.__wrap(t)}constructor(e,t,r){return this.__wbg_ptr=n.rawvector_new(e,t,r)>>>0,it.register(this,this.__wbg_ptr,this),this}get x(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}set x(e){n.rawintegrationparameters_set_dt(this.__wbg_ptr,e)}get y(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}set y(e){n.rawvector_set_y(this.__wbg_ptr,e)}get z(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}set z(e){n.rawvector_set_z(this.__wbg_ptr,e)}xyz(){let t=n.rawvector_xyz(this.__wbg_ptr);return e.__wrap(t)}yxz(){let t=n.rawvector_yxz(this.__wbg_ptr);return e.__wrap(t)}zxy(){let t=n.rawvector_zxy(this.__wbg_ptr);return e.__wrap(t)}xzy(){let t=n.rawvector_xzy(this.__wbg_ptr);return e.__wrap(t)}yzx(){let t=n.rawvector_yzx(this.__wbg_ptr);return e.__wrap(t)}zyx(){let t=n.rawvector_zyx(this.__wbg_ptr);return e.__wrap(t)}};async function at(e){if(n!==void 0)return n;e!==void 0&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn(`using deprecated parameters for the initialization function; pass a single object instead`)),e===void 0&&(e=new URL(`rapier_wasm3d_bg.wasm`,``));let t=function(){let e={wbg:{}};return e.wbg.__wbg_bind_c8359b1cba058168=function(e,t,n,r){return o(i(e).bind(i(t),i(n),i(r)))},e.wbg.__wbg_buffer_609cc3eee51ed158=function(e){return o(i(e).buffer)},e.wbg.__wbg_call_672a4d21634d4a24=function(){return s((function(e,t){return o(i(e).call(i(t)))}),arguments)},e.wbg.__wbg_call_7cccdd69e0791ae2=function(){return s((function(e,t,n){return o(i(e).call(i(t),i(n)))}),arguments)},e.wbg.__wbg_call_833bed5770ea2041=function(){return s((function(e,t,n,r){return o(i(e).call(i(t),i(n),i(r)))}),arguments)},e.wbg.__wbg_call_b8adc8b1d0a0d8eb=function(){return s((function(e,t,n,r,a){return o(i(e).call(i(t),i(n),i(r),i(a)))}),arguments)},e.wbg.__wbg_length_3b4f022188ae8db6=function(e){return i(e).length},e.wbg.__wbg_length_a446193dc22c12f8=function(e){return i(e).length},e.wbg.__wbg_new_a12002a7f91c75be=function(e){return o(new Uint8Array(i(e)))},e.wbg.__wbg_newnoargs_105ed471475aaf50=function(e,t){return o(Function(u(e,t)))},e.wbg.__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a=function(e,t,n){return o(new Uint8Array(i(e),t>>>0,n>>>0))},e.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(e,t,n){return o(new Float32Array(i(e),t>>>0,n>>>0))},e.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(e){return o(new Float32Array(e>>>0))},e.wbg.__wbg_now_2c95c9de01293173=function(e){return i(e).now()},e.wbg.__wbg_performance_7a3ffd0b17f663ad=function(e){return o(i(e).performance)},e.wbg.__wbg_rawcontactforceevent_new=function(e){return o(fe.__wrap(e))},e.wbg.__wbg_rawraycolliderintersection_new=function(e){return o(We.__wrap(e))},e.wbg.__wbg_set_10bad9bee0e9c58b=function(e,t,n){i(e).set(i(t),n>>>0)},e.wbg.__wbg_set_65595bdd868b3009=function(e,t,n){i(e).set(i(t),n>>>0)},e.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07=function(){let e=typeof global>`u`?null:global;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0=function(){let e=typeof globalThis>`u`?null:globalThis;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819=function(){let e=typeof self>`u`?null:self;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40=function(){let e=typeof window>`u`?null:window;return d(e)?0:o(e)},e.wbg.__wbindgen_boolean_get=function(e){let t=i(e);return typeof t==`boolean`?+!!t:2},e.wbg.__wbindgen_is_function=function(e){return typeof i(e)==`function`},e.wbg.__wbindgen_is_undefined=function(e){return i(e)===void 0},e.wbg.__wbindgen_memory=function(){return o(n.memory)},e.wbg.__wbindgen_number_get=function(e,t){let n=i(t),r=typeof n==`number`?n:void 0;p().setFloat64(e+8,d(r)?0:r,!0),p().setInt32(e+0,!d(r),!0)},e.wbg.__wbindgen_number_new=function(e){return o(e)},e.wbg.__wbindgen_object_clone_ref=function(e){return o(i(e))},e.wbg.__wbindgen_object_drop_ref=function(e){m(e)},e.wbg.__wbindgen_throw=function(e,t){throw Error(u(e,t))},e}();(typeof e==`string`||typeof Request==`function`&&e instanceof Request||typeof URL==`function`&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:a}=await async function(e,t){if(typeof Response==`function`&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==`function`)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(e.headers.get(`Content-Type`)==`application/wasm`)throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return function(e,t){return n=e.exports,at.__wbindgen_wasm_module=t,f=null,b=null,v=null,x=null,l=null,n}(r,a)}var ot=class{constructor(e,t,n){this.x=e,this.y=t,this.z=n}},B=class e{static new(e,t,n){return new ot(e,t,n)}static intoRaw(e){return new z(e.x,e.y,e.z)}static zeros(){return e.new(0,0,0)}static fromRaw(t){if(!t)return null;let n=e.new(t.x,t.y,t.z);return t.free(),n}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z}},st=class{constructor(e,t,n,r){this.x=e,this.y=t,this.z=n,this.w=r}},V=class{static identity(){return new st(0,0,0,1)}static fromRaw(e){if(!e)return null;let t=new st(e.x,e.y,e.z,e.w);return e.free(),t}static intoRaw(e){return new L(e.x,e.y,e.z,e.w)}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w}},ct=class{constructor(e){this.elements=e}get m11(){return this.elements[0]}get m12(){return this.elements[1]}get m21(){return this.m12}get m13(){return this.elements[2]}get m31(){return this.m13}get m22(){return this.elements[3]}get m23(){return this.elements[4]}get m32(){return this.m23}get m33(){return this.elements[5]}},lt=class{static fromRaw(e){let t=new ct(e.elements());return e.free(),t}},H,U,ut,dt,W,G,K,ft,pt,mt,ht,gt,_t,vt,yt,q;(function(e){e[e.Dynamic=0]=`Dynamic`,e[e.Fixed=1]=`Fixed`,e[e.KinematicPositionBased=2]=`KinematicPositionBased`,e[e.KinematicVelocityBased=3]=`KinematicVelocityBased`})(H||={});var bt=class{constructor(e,t,n){this.rawSet=e,this.colliderSet=t,this.handle=n}finalizeDeserialization(e){this.colliderSet=e}isValid(){return this.rawSet.contains(this.handle)}lockTranslations(e,t){return this.rawSet.rbLockTranslations(this.handle,e,t)}lockRotations(e,t){return this.rawSet.rbLockRotations(this.handle,e,t)}setEnabledTranslations(e,t,n,r){return this.rawSet.rbSetEnabledTranslations(this.handle,e,t,n,r)}restrictTranslations(e,t,n,r){this.setEnabledTranslations(e,t,n,r)}setEnabledRotations(e,t,n,r){return this.rawSet.rbSetEnabledRotations(this.handle,e,t,n,r)}restrictRotations(e,t,n,r){this.setEnabledRotations(e,t,n,r)}dominanceGroup(){return this.rawSet.rbDominanceGroup(this.handle)}setDominanceGroup(e){this.rawSet.rbSetDominanceGroup(this.handle,e)}additionalSolverIterations(){return this.rawSet.rbAdditionalSolverIterations(this.handle)}setAdditionalSolverIterations(e){this.rawSet.rbSetAdditionalSolverIterations(this.handle,e)}enableCcd(e){this.rawSet.rbEnableCcd(this.handle,e)}setSoftCcdPrediction(e){this.rawSet.rbSetSoftCcdPrediction(this.handle,e)}softCcdPrediction(){return this.rawSet.rbSoftCcdPrediction(this.handle)}translation(){let e=this.rawSet.rbTranslation(this.handle);return B.fromRaw(e)}rotation(){let e=this.rawSet.rbRotation(this.handle);return V.fromRaw(e)}nextTranslation(){let e=this.rawSet.rbNextTranslation(this.handle);return B.fromRaw(e)}nextRotation(){let e=this.rawSet.rbNextRotation(this.handle);return V.fromRaw(e)}setTranslation(e,t){this.rawSet.rbSetTranslation(this.handle,e.x,e.y,e.z,t)}setLinvel(e,t){let n=B.intoRaw(e);this.rawSet.rbSetLinvel(this.handle,n,t),n.free()}gravityScale(){return this.rawSet.rbGravityScale(this.handle)}setGravityScale(e,t){this.rawSet.rbSetGravityScale(this.handle,e,t)}setRotation(e,t){this.rawSet.rbSetRotation(this.handle,e.x,e.y,e.z,e.w,t)}setAngvel(e,t){let n=B.intoRaw(e);this.rawSet.rbSetAngvel(this.handle,n,t),n.free()}setNextKinematicTranslation(e){this.rawSet.rbSetNextKinematicTranslation(this.handle,e.x,e.y,e.z)}setNextKinematicRotation(e){this.rawSet.rbSetNextKinematicRotation(this.handle,e.x,e.y,e.z,e.w)}linvel(){return B.fromRaw(this.rawSet.rbLinvel(this.handle))}velocityAtPoint(e){let t=B.intoRaw(e),n=B.fromRaw(this.rawSet.rbVelocityAtPoint(this.handle,t));return t.free(),n}angvel(){return B.fromRaw(this.rawSet.rbAngvel(this.handle))}mass(){return this.rawSet.rbMass(this.handle)}effectiveInvMass(){return B.fromRaw(this.rawSet.rbEffectiveInvMass(this.handle))}invMass(){return this.rawSet.rbInvMass(this.handle)}localCom(){return B.fromRaw(this.rawSet.rbLocalCom(this.handle))}worldCom(){return B.fromRaw(this.rawSet.rbWorldCom(this.handle))}invPrincipalInertia(){return B.fromRaw(this.rawSet.rbInvPrincipalInertia(this.handle))}principalInertia(){return B.fromRaw(this.rawSet.rbPrincipalInertia(this.handle))}principalInertiaLocalFrame(){return V.fromRaw(this.rawSet.rbPrincipalInertiaLocalFrame(this.handle))}effectiveWorldInvInertia(){return lt.fromRaw(this.rawSet.rbEffectiveWorldInvInertia(this.handle))}effectiveAngularInertia(){return lt.fromRaw(this.rawSet.rbEffectiveAngularInertia(this.handle))}sleep(){this.rawSet.rbSleep(this.handle)}wakeUp(){this.rawSet.rbWakeUp(this.handle)}isCcdEnabled(){return this.rawSet.rbIsCcdEnabled(this.handle)}numColliders(){return this.rawSet.rbNumColliders(this.handle)}collider(e){return this.colliderSet.get(this.rawSet.rbCollider(this.handle,e))}setEnabled(e){this.rawSet.rbSetEnabled(this.handle,e)}isEnabled(){return this.rawSet.rbIsEnabled(this.handle)}bodyType(){return this.rawSet.rbBodyType(this.handle)}setBodyType(e,t){return this.rawSet.rbSetBodyType(this.handle,e,t)}isSleeping(){return this.rawSet.rbIsSleeping(this.handle)}isMoving(){return this.rawSet.rbIsMoving(this.handle)}isFixed(){return this.rawSet.rbIsFixed(this.handle)}isKinematic(){return this.rawSet.rbIsKinematic(this.handle)}isDynamic(){return this.rawSet.rbIsDynamic(this.handle)}linearDamping(){return this.rawSet.rbLinearDamping(this.handle)}angularDamping(){return this.rawSet.rbAngularDamping(this.handle)}setLinearDamping(e){this.rawSet.rbSetLinearDamping(this.handle,e)}recomputeMassPropertiesFromColliders(){this.rawSet.rbRecomputeMassPropertiesFromColliders(this.handle,this.colliderSet.raw)}setAdditionalMass(e,t){this.rawSet.rbSetAdditionalMass(this.handle,e,t)}setAdditionalMassProperties(e,t,n,r,i){let a=B.intoRaw(t),o=B.intoRaw(n),s=V.intoRaw(r);this.rawSet.rbSetAdditionalMassProperties(this.handle,e,a,o,s,i),a.free(),o.free(),s.free()}setAngularDamping(e){this.rawSet.rbSetAngularDamping(this.handle,e)}resetForces(e){this.rawSet.rbResetForces(this.handle,e)}resetTorques(e){this.rawSet.rbResetTorques(this.handle,e)}addForce(e,t){let n=B.intoRaw(e);this.rawSet.rbAddForce(this.handle,n,t),n.free()}applyImpulse(e,t){let n=B.intoRaw(e);this.rawSet.rbApplyImpulse(this.handle,n,t),n.free()}addTorque(e,t){let n=B.intoRaw(e);this.rawSet.rbAddTorque(this.handle,n,t),n.free()}applyTorqueImpulse(e,t){let n=B.intoRaw(e);this.rawSet.rbApplyTorqueImpulse(this.handle,n,t),n.free()}addForceAtPoint(e,t,n){let r=B.intoRaw(e),i=B.intoRaw(t);this.rawSet.rbAddForceAtPoint(this.handle,r,i,n),r.free(),i.free()}applyImpulseAtPoint(e,t,n){let r=B.intoRaw(e),i=B.intoRaw(t);this.rawSet.rbApplyImpulseAtPoint(this.handle,r,i,n),r.free(),i.free()}userForce(){return B.fromRaw(this.rawSet.rbUserForce(this.handle))}userTorque(){return B.fromRaw(this.rawSet.rbUserTorque(this.handle))}},xt=class e{constructor(e){this.enabled=!0,this.status=e,this.translation=B.zeros(),this.rotation=V.identity(),this.gravityScale=1,this.linvel=B.zeros(),this.mass=0,this.massOnly=!1,this.centerOfMass=B.zeros(),this.translationsEnabledX=!0,this.translationsEnabledY=!0,this.angvel=B.zeros(),this.principalAngularInertia=B.zeros(),this.angularInertiaLocalFrame=V.identity(),this.translationsEnabledZ=!0,this.rotationsEnabledX=!0,this.rotationsEnabledY=!0,this.rotationsEnabledZ=!0,this.linearDamping=0,this.angularDamping=0,this.canSleep=!0,this.sleeping=!1,this.ccdEnabled=!1,this.softCcdPrediction=0,this.dominanceGroup=0,this.additionalSolverIterations=0}static dynamic(){return new e(H.Dynamic)}static kinematicPositionBased(){return new e(H.KinematicPositionBased)}static kinematicVelocityBased(){return new e(H.KinematicVelocityBased)}static fixed(){return new e(H.Fixed)}static newDynamic(){return new e(H.Dynamic)}static newKinematicPositionBased(){return new e(H.KinematicPositionBased)}static newKinematicVelocityBased(){return new e(H.KinematicVelocityBased)}static newStatic(){return new e(H.Fixed)}setDominanceGroup(e){return this.dominanceGroup=e,this}setAdditionalSolverIterations(e){return this.additionalSolverIterations=e,this}setEnabled(e){return this.enabled=e,this}setTranslation(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The translation components must be numbers.`);return this.translation={x:e,y:t,z:n},this}setRotation(e){return V.copy(this.rotation,e),this}setGravityScale(e){return this.gravityScale=e,this}setAdditionalMass(e){return this.mass=e,this.massOnly=!0,this}setLinvel(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The linvel components must be numbers.`);return this.linvel={x:e,y:t,z:n},this}setAngvel(e){return B.copy(this.angvel,e),this}setAdditionalMassProperties(e,t,n,r){return this.mass=e,B.copy(this.centerOfMass,t),B.copy(this.principalAngularInertia,n),V.copy(this.angularInertiaLocalFrame,r),this.massOnly=!1,this}enabledTranslations(e,t,n){return this.translationsEnabledX=e,this.translationsEnabledY=t,this.translationsEnabledZ=n,this}restrictTranslations(e,t,n){return this.enabledTranslations(e,t,n)}lockTranslations(){return this.enabledTranslations(!1,!1,!1)}enabledRotations(e,t,n){return this.rotationsEnabledX=e,this.rotationsEnabledY=t,this.rotationsEnabledZ=n,this}restrictRotations(e,t,n){return this.enabledRotations(e,t,n)}lockRotations(){return this.restrictRotations(!1,!1,!1)}setLinearDamping(e){return this.linearDamping=e,this}setAngularDamping(e){return this.angularDamping=e,this}setCanSleep(e){return this.canSleep=e,this}setSleeping(e){return this.sleeping=e,this}setCcdEnabled(e){return this.ccdEnabled=e,this}setSoftCcdPrediction(e){return this.softCcdPrediction=e,this}setUserData(e){return this.userData=e,this}},St=class{constructor(){this.fconv=new Float64Array(1),this.uconv=new Uint32Array(this.fconv.buffer),this.data=[],this.size=0}set(e,t){let n=this.index(e);for(;this.data.length<=n;)this.data.push(null);this.data[n]??(this.size+=1),this.data[n]=t}len(){return this.size}delete(e){let t=this.index(e);te!=null))}index(e){return this.fconv[0]=e,this.uconv[0]}},Ct=class{constructor(e){this.raw=e||new I,this.map=new St,e&&e.forEachRigidBodyHandle((t=>{this.map.set(t,new bt(e,null,t))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createRigidBody(e,t){let n=B.intoRaw(t.translation),r=V.intoRaw(t.rotation),i=B.intoRaw(t.linvel),a=B.intoRaw(t.centerOfMass),o=B.intoRaw(t.angvel),s=B.intoRaw(t.principalAngularInertia),c=V.intoRaw(t.angularInertiaLocalFrame),l=this.raw.createRigidBody(t.enabled,n,r,t.gravityScale,t.mass,t.massOnly,a,i,o,s,c,t.translationsEnabledX,t.translationsEnabledY,t.translationsEnabledZ,t.rotationsEnabledX,t.rotationsEnabledY,t.rotationsEnabledZ,t.linearDamping,t.angularDamping,t.status,t.canSleep,t.sleeping,t.softCcdPrediction,t.ccdEnabled,t.dominanceGroup,t.additionalSolverIterations);n.free(),r.free(),i.free(),a.free(),o.free(),s.free(),c.free();let u=new bt(this.raw,e,l);return u.userData=t.userData,this.map.set(l,u),u}remove(e,t,n,r,i){for(let t=0;tr.unmap(e))),i.forEachJointHandleAttachedToRigidBody(e,(e=>i.unmap(e))),this.raw.remove(e,t.raw,n.raw,r.raw,i.raw),this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}forEachActiveRigidBody(e,t){e.forEachActiveRigidBodyHandle((e=>{t(this.get(e))}))}getAll(){return this.map.getAll()}},wt=class{constructor(e){this.raw=e||new M}free(){this.raw&&this.raw.free(),this.raw=void 0}get dt(){return this.raw.dt}get contact_erp(){return this.raw.contact_erp}get lengthUnit(){return this.raw.lengthUnit}get normalizedAllowedLinearError(){return this.raw.normalizedAllowedLinearError}get normalizedPredictionDistance(){return this.raw.normalizedPredictionDistance}get numSolverIterations(){return this.raw.numSolverIterations}get numInternalPgsIterations(){return this.raw.numInternalPgsIterations}get minIslandSize(){return this.raw.minIslandSize}get maxCcdSubsteps(){return this.raw.maxCcdSubsteps}set dt(e){this.raw.dt=e}set contact_natural_frequency(e){this.raw.contact_natural_frequency=e}set lengthUnit(e){this.raw.lengthUnit=e}set normalizedAllowedLinearError(e){this.raw.normalizedAllowedLinearError=e}set normalizedPredictionDistance(e){this.raw.normalizedPredictionDistance=e}set numSolverIterations(e){this.raw.numSolverIterations=e}set numInternalPgsIterations(e){this.raw.numInternalPgsIterations=e}set minIslandSize(e){this.raw.minIslandSize=e}set maxCcdSubsteps(e){this.raw.maxCcdSubsteps=e}};(function(e){e[e.Revolute=0]=`Revolute`,e[e.Fixed=1]=`Fixed`,e[e.Prismatic=2]=`Prismatic`,e[e.Rope=3]=`Rope`,e[e.Spring=4]=`Spring`,e[e.Spherical=5]=`Spherical`,e[e.Generic=6]=`Generic`})(U||={}),function(e){e[e.AccelerationBased=0]=`AccelerationBased`,e[e.ForceBased=1]=`ForceBased`}(ut||={}),function(e){e[e.LinX=1]=`LinX`,e[e.LinY=2]=`LinY`,e[e.LinZ=4]=`LinZ`,e[e.AngX=8]=`AngX`,e[e.AngY=16]=`AngY`,e[e.AngZ=32]=`AngZ`}(dt||={});var J=class e{constructor(e,t,n){this.rawSet=e,this.bodySet=t,this.handle=n}static newTyped(t,n,r){switch(t.jointType(r)){case E.Revolute:return new At(t,n,r);case E.Prismatic:return new kt(t,n,r);case E.Fixed:return new Et(t,n,r);case E.Spring:return new Ot(t,n,r);case E.Rope:return new Dt(t,n,r);case E.Spherical:return new Mt(t,n,r);case E.Generic:return new jt(t,n,r);default:return new e(t,n,r)}}finalizeDeserialization(e){this.bodySet=e}isValid(){return this.rawSet.contains(this.handle)}body1(){return this.bodySet.get(this.rawSet.jointBodyHandle1(this.handle))}body2(){return this.bodySet.get(this.rawSet.jointBodyHandle2(this.handle))}type(){return this.rawSet.jointType(this.handle)}frameX1(){return V.fromRaw(this.rawSet.jointFrameX1(this.handle))}frameX2(){return V.fromRaw(this.rawSet.jointFrameX2(this.handle))}anchor1(){return B.fromRaw(this.rawSet.jointAnchor1(this.handle))}anchor2(){return B.fromRaw(this.rawSet.jointAnchor2(this.handle))}setAnchor1(e){let t=B.intoRaw(e);this.rawSet.jointSetAnchor1(this.handle,t),t.free()}setAnchor2(e){let t=B.intoRaw(e);this.rawSet.jointSetAnchor2(this.handle,t),t.free()}setContactsEnabled(e){this.rawSet.jointSetContactsEnabled(this.handle,e)}contactsEnabled(){return this.rawSet.jointContactsEnabled(this.handle)}},Tt=class extends J{limitsEnabled(){return this.rawSet.jointLimitsEnabled(this.handle,this.rawAxis())}limitsMin(){return this.rawSet.jointLimitsMin(this.handle,this.rawAxis())}limitsMax(){return this.rawSet.jointLimitsMax(this.handle,this.rawAxis())}setLimits(e,t){this.rawSet.jointSetLimits(this.handle,this.rawAxis(),e,t)}configureMotorModel(e){this.rawSet.jointConfigureMotorModel(this.handle,this.rawAxis(),e)}configureMotorVelocity(e,t){this.rawSet.jointConfigureMotorVelocity(this.handle,this.rawAxis(),e,t)}configureMotorPosition(e,t,n){this.rawSet.jointConfigureMotorPosition(this.handle,this.rawAxis(),e,t,n)}configureMotor(e,t,n,r){this.rawSet.jointConfigureMotor(this.handle,this.rawAxis(),e,t,n,r)}},Et=class extends J{},Dt=class extends J{},Ot=class extends J{},kt=class extends Tt{rawAxis(){return T.LinX}},At=class extends Tt{rawAxis(){return T.AngX}},jt=class extends J{},Mt=class extends J{},Nt=class e{constructor(){}static fixed(t,n,r,i){let a=new e;return a.anchor1=t,a.anchor2=r,a.frame1=n,a.frame2=i,a.jointType=U.Fixed,a}static spring(t,n,r,i,a){let o=new e;return o.anchor1=i,o.anchor2=a,o.length=t,o.stiffness=n,o.damping=r,o.jointType=U.Spring,o}static rope(t,n,r){let i=new e;return i.anchor1=n,i.anchor2=r,i.length=t,i.jointType=U.Rope,i}static generic(t,n,r,i){let a=new e;return a.anchor1=t,a.anchor2=n,a.axis=r,a.axesMask=i,a.jointType=U.Generic,a}static spherical(t,n){let r=new e;return r.anchor1=t,r.anchor2=n,r.jointType=U.Spherical,r}static prismatic(t,n,r){let i=new e;return i.anchor1=t,i.anchor2=n,i.axis=r,i.jointType=U.Prismatic,i}static revolute(t,n,r){let i=new e;return i.anchor1=t,i.anchor2=n,i.axis=r,i.jointType=U.Revolute,i}intoRaw(){let e,t,n=B.intoRaw(this.anchor1),r=B.intoRaw(this.anchor2),i=!1,a=0,o=0;switch(this.jointType){case U.Fixed:let s=V.intoRaw(this.frame1),c=V.intoRaw(this.frame2);t=A.fixed(n,s,r,c),s.free(),c.free();break;case U.Spring:t=A.spring(this.length,this.stiffness,this.damping,n,r);break;case U.Rope:t=A.rope(this.length,n,r);break;case U.Prismatic:e=B.intoRaw(this.axis),this.limitsEnabled&&(i=!0,a=this.limits[0],o=this.limits[1]),t=A.prismatic(n,r,e,i,a,o),e.free();break;case U.Generic:e=B.intoRaw(this.axis);let l=this.axesMask;t=A.generic(n,r,e,l);break;case U.Spherical:t=A.spherical(n,r);break;case U.Revolute:e=B.intoRaw(this.axis),t=A.revolute(n,r,e),e.free()}return n.free(),r.free(),t}},Pt=class{constructor(e){this.raw=e||new j,this.map=new St,e&&e.forEachJointHandle((t=>{this.map.set(t,J.newTyped(e,null,t))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createJoint(e,t,n,r,i){let a=t.intoRaw(),o=this.raw.createJoint(a,n,r,i);a.free();let s=J.newTyped(this.raw,e,o);return this.map.set(o,s),s}remove(e,t){this.raw.remove(e,t),this.unmap(e)}forEachJointHandleAttachedToRigidBody(e,t){this.raw.forEachJointAttachedToRigidBody(e,t)}unmap(e){this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}getAll(){return this.map.getAll()}},Y=class e{constructor(e,t){this.rawSet=e,this.handle=t}static newTyped(t,n){switch(t.jointType(n)){case E.Revolute:return new Rt(t,n);case E.Prismatic:return new Lt(t,n);case E.Fixed:return new It(t,n);case E.Spherical:return new zt(t,n);default:return new e(t,n)}}isValid(){return this.rawSet.contains(this.handle)}setContactsEnabled(e){this.rawSet.jointSetContactsEnabled(this.handle,e)}contactsEnabled(){return this.rawSet.jointContactsEnabled(this.handle)}},Ft=class extends Y{},It=class extends Y{},Lt=class extends Ft{rawAxis(){return T.LinX}},Rt=class extends Ft{rawAxis(){return T.AngX}},zt=class extends Y{},Bt=class{constructor(e){this.raw=e||new P,this.map=new St,e&&e.forEachJointHandle((e=>{this.map.set(e,Y.newTyped(this.raw,e))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}createJoint(e,t,n,r){let i=e.intoRaw(),a=this.raw.createJoint(i,t,n,r);i.free();let o=Y.newTyped(this.raw,a);return this.map.set(a,o),o}remove(e,t){this.raw.remove(e,t),this.map.delete(e)}unmap(e){this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}forEachJointHandleAttachedToRigidBody(e,t){this.raw.forEachJointAttachedToRigidBody(e,t)}getAll(){return this.map.getAll()}};(function(e){e[e.Average=0]=`Average`,e[e.Min=1]=`Min`,e[e.Multiply=2]=`Multiply`,e[e.Max=3]=`Max`})(W||={});var Vt=class{constructor(e){this.raw=e||new ae}free(){this.raw&&this.raw.free(),this.raw=void 0}},Ht=class{constructor(e){this.raw=e||new N}free(){this.raw&&this.raw.free(),this.raw=void 0}forEachActiveRigidBodyHandle(e){this.raw.forEachActiveRigidBodyHandle(e)}};(function(e){e[e.Vertex=0]=`Vertex`,e[e.Edge=1]=`Edge`,e[e.Face=2]=`Face`,e[e.Unknown=3]=`Unknown`})(G||={});var Ut=class{constructor(e,t){this.origin=e,this.dir=t}pointAt(e){return{x:this.origin.x+this.dir.x*e,y:this.origin.y+this.dir.y*e,z:this.origin.z+this.dir.z*e}}},Wt=class e{constructor(e,t,n,r){this.featureType=G.Unknown,this.featureId=void 0,this.timeOfImpact=e,this.normal=t,r!==void 0&&(this.featureId=r),n!==void 0&&(this.featureType=n)}static fromRaw(t){if(!t)return null;let n=new e(t.time_of_impact(),B.fromRaw(t.normal()),t.featureType(),t.featureId());return t.free(),n}},Gt=class e{constructor(e,t,n,r,i){this.featureType=G.Unknown,this.featureId=void 0,this.collider=e,this.timeOfImpact=t,this.normal=n,i!==void 0&&(this.featureId=i),r!==void 0&&(this.featureType=r)}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.time_of_impact(),B.fromRaw(n.normal()),n.featureType(),n.featureId());return n.free(),r}},Kt=class e{constructor(e,t){this.collider=e,this.timeOfImpact=t}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.timeOfImpact());return n.free(),r}},qt=class e{constructor(e,t){this.point=e,this.isInside=t}static fromRaw(t){if(!t)return null;let n=new e(B.fromRaw(t.point()),t.isInside());return t.free(),n}},Jt=class e{constructor(e,t,n,r,i){this.featureType=G.Unknown,this.featureId=void 0,this.collider=e,this.point=t,this.isInside=n,i!==void 0&&(this.featureId=i),r!==void 0&&(this.featureType=r)}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),B.fromRaw(n.point()),n.isInside(),n.featureType(),n.featureId());return n.free(),r}},Yt=class e{constructor(e,t,n,r,i){this.time_of_impact=e,this.witness1=t,this.witness2=n,this.normal1=r,this.normal2=i}static fromRaw(t,n){if(!n)return null;let r=new e(n.time_of_impact(),B.fromRaw(n.witness1()),B.fromRaw(n.witness2()),B.fromRaw(n.normal1()),B.fromRaw(n.normal2()));return n.free(),r}},Xt=class e extends Yt{constructor(e,t,n,r,i,a){super(t,n,r,i,a),this.collider=e}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.time_of_impact(),B.fromRaw(n.witness1()),B.fromRaw(n.witness2()),B.fromRaw(n.normal1()),B.fromRaw(n.normal2()));return n.free(),r}},Zt=class{constructor(e){this.raw=e||new O}free(){this.raw&&this.raw.free(),this.raw=void 0}castRay(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r.origin),f=B.intoRaw(r.dir),p=Kt.fromRaw(n,this.raw.castRay(e.raw,t.raw,n.raw,d,f,i,a,o,s,c,l,u));return d.free(),f.free(),p}castRayAndGetNormal(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r.origin),f=B.intoRaw(r.dir),p=Gt.fromRaw(n,this.raw.castRayAndGetNormal(e.raw,t.raw,n.raw,d,f,i,a,o,s,c,l,u));return d.free(),f.free(),p}intersectionsWithRay(e,t,n,r,i,a,o,s,c,l,u,d){let f=B.intoRaw(r.origin),p=B.intoRaw(r.dir);this.raw.intersectionsWithRay(e.raw,t.raw,n.raw,f,p,i,a,(e=>o(Gt.fromRaw(n,e))),s,c,l,u,d),f.free(),p.free()}intersectionWithShape(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r),f=V.intoRaw(i),p=a.intoRaw(),m=this.raw.intersectionWithShape(e.raw,t.raw,n.raw,d,f,p,o,s,c,l,u);return d.free(),f.free(),p.free(),m}projectPoint(e,t,n,r,i,a,o,s,c,l){let u=B.intoRaw(r),d=Jt.fromRaw(n,this.raw.projectPoint(e.raw,t.raw,n.raw,u,i,a,o,s,c,l));return u.free(),d}projectPointAndGetFeature(e,t,n,r,i,a,o,s,c){let l=B.intoRaw(r),u=Jt.fromRaw(n,this.raw.projectPointAndGetFeature(e.raw,t.raw,n.raw,l,i,a,o,s,c));return l.free(),u}intersectionsWithPoint(e,t,n,r,i,a,o,s,c,l){let u=B.intoRaw(r);this.raw.intersectionsWithPoint(e.raw,t.raw,n.raw,u,i,a,o,s,c,l),u.free()}castShape(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h=B.intoRaw(r),g=V.intoRaw(i),_=B.intoRaw(a),v=o.intoRaw(),y=Xt.fromRaw(n,this.raw.castShape(e.raw,t.raw,n.raw,h,g,_,v,s,c,l,u,d,f,p,m));return h.free(),g.free(),_.free(),v.free(),y}intersectionsWithShape(e,t,n,r,i,a,o,s,c,l,u,d){let f=B.intoRaw(r),p=V.intoRaw(i),m=a.intoRaw();this.raw.intersectionsWithShape(e.raw,t.raw,n.raw,f,p,m,o,s,c,l,u,d),f.free(),p.free(),m.free()}collidersWithAabbIntersectingAabb(e,t,n,r,i,a){let o=B.intoRaw(r),s=B.intoRaw(i);this.raw.collidersWithAabbIntersectingAabb(e.raw,t.raw,n.raw,o,s,a),o.free(),s.free()}},Qt=class{constructor(e){this.raw=e||new F,this.tempManifold=new $t(null)}free(){this.raw&&this.raw.free(),this.raw=void 0}contactPairsWith(e,t){this.raw.contact_pairs_with(e,t)}intersectionPairsWith(e,t){this.raw.intersection_pairs_with(e,t)}contactPair(e,t,n){let r=this.raw.contact_pair(e,t);if(r){let t=r.collider1()!=e,i;for(i=0;ie.free())),this.pidControllers.forEach((e=>e.free())),this.vehicleControllers.forEach((e=>e.free())),this.integrationParameters=void 0,this.islands=void 0,this.broadPhase=void 0,this.narrowPhase=void 0,this.bodies=void 0,this.colliders=void 0,this.ccdSolver=void 0,this.impulseJoints=void 0,this.multibodyJoints=void 0,this.physicsPipeline=void 0,this.serializationPipeline=void 0,this.debugRenderPipeline=void 0,this.characterControllers=void 0,this.pidControllers=void 0,this.vehicleControllers=void 0}static fromRaw(t){return t?new e(B.fromRaw(t.takeGravity()),t.takeIntegrationParameters(),t.takeIslandManager(),t.takeBroadPhase(),t.takeNarrowPhase(),t.takeBodies(),t.takeColliders(),t.takeImpulseJoints(),t.takeMultibodyJoints()):null}takeSnapshot(){return this.serializationPipeline.serializeAll(this.gravity,this.integrationParameters,this.islands,this.broadPhase,this.narrowPhase,this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints)}static restoreSnapshot(e){return new xn().deserializeAll(e)}debugRender(e,t){return this.debugRenderPipeline.render(this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints,this.narrowPhase,e,t),new Sn(this.debugRenderPipeline.vertices,this.debugRenderPipeline.colors)}step(e,t){this.physicsPipeline.step(this.gravity,this.integrationParameters,this.islands,this.broadPhase,this.narrowPhase,this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints,this.ccdSolver,e,t)}propagateModifiedBodyPositionsToColliders(){this.bodies.raw.propagateModifiedBodyPositionsToColliders(this.colliders.raw)}get timestep(){return this.integrationParameters.dt}set timestep(e){this.integrationParameters.dt=e}get lengthUnit(){return this.integrationParameters.lengthUnit}set lengthUnit(e){this.integrationParameters.lengthUnit=e}get numSolverIterations(){return this.integrationParameters.numSolverIterations}set numSolverIterations(e){this.integrationParameters.numSolverIterations=e}get numInternalPgsIterations(){return this.integrationParameters.numInternalPgsIterations}set numInternalPgsIterations(e){this.integrationParameters.numInternalPgsIterations=e}get maxCcdSubsteps(){return this.integrationParameters.maxCcdSubsteps}set maxCcdSubsteps(e){this.integrationParameters.maxCcdSubsteps=e}createRigidBody(e){return this.bodies.createRigidBody(this.colliders,e)}createCharacterController(e){let t=new Tn(e,this.integrationParameters,this.broadPhase,this.narrowPhase,this.bodies,this.colliders);return this.characterControllers.add(t),t}removeCharacterController(e){this.characterControllers.delete(e),e.free()}createPidController(e,t,n,r){let i=new En(this.integrationParameters,this.bodies,e,t,n,r);return this.pidControllers.add(i),i}removePidController(e){this.pidControllers.delete(e),e.free()}createVehicleController(e){let t=new Dn(e,this.broadPhase,this.narrowPhase,this.bodies,this.colliders);return this.vehicleControllers.add(t),t}removeVehicleController(e){this.vehicleControllers.delete(e),e.free()}createCollider(e,t){let n=t?t.handle:void 0;return this.colliders.createCollider(this.bodies,e,n)}createImpulseJoint(e,t,n,r){return this.impulseJoints.createJoint(this.bodies,e,t.handle,n.handle,r)}createMultibodyJoint(e,t,n,r){return this.multibodyJoints.createJoint(e,t.handle,n.handle,r)}getRigidBody(e){return this.bodies.get(e)}getCollider(e){return this.colliders.get(e)}getImpulseJoint(e){return this.impulseJoints.get(e)}getMultibodyJoint(e){return this.multibodyJoints.get(e)}removeRigidBody(e){this.bodies&&this.bodies.remove(e.handle,this.islands,this.colliders,this.impulseJoints,this.multibodyJoints)}removeCollider(e,t){this.colliders&&this.colliders.remove(e.handle,this.islands,this.bodies,t)}removeImpulseJoint(e,t){this.impulseJoints&&this.impulseJoints.remove(e.handle,t)}removeMultibodyJoint(e,t){this.impulseJoints&&this.multibodyJoints.remove(e.handle,t)}forEachCollider(e){this.colliders.forEach(e)}forEachRigidBody(e){this.bodies.forEach(e)}forEachActiveRigidBody(e){this.bodies.forEachActiveRigidBody(this.islands,e)}castRay(e,t,n,r,i,a,o,s){return this.broadPhase.castRay(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s))}castRayAndGetNormal(e,t,n,r,i,a,o,s){return this.broadPhase.castRayAndGetNormal(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s))}intersectionsWithRay(e,t,n,r,i,a,o,s,c){this.broadPhase.intersectionsWithRay(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a,o?o.handle:null,s?s.handle:null,this.colliders.castClosure(c))}intersectionWithShape(e,t,n,r,i,a,o,s){let c=this.broadPhase.intersectionWithShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s));return c==null?null:this.colliders.get(c)}projectPoint(e,t,n,r,i,a,o){return this.broadPhase.projectPoint(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i?i.handle:null,a?a.handle:null,this.colliders.castClosure(o))}projectPointAndGetFeature(e,t,n,r,i,a){return this.broadPhase.projectPointAndGetFeature(this.narrowPhase,this.bodies,this.colliders,e,t,n,r?r.handle:null,i?i.handle:null,this.colliders.castClosure(a))}intersectionsWithPoint(e,t,n,r,i,a,o){this.broadPhase.intersectionsWithPoint(this.narrowPhase,this.bodies,this.colliders,e,this.colliders.castClosure(t),n,r,i?i.handle:null,a?a.handle:null,this.colliders.castClosure(o))}castShape(e,t,n,r,i,a,o,s,c,l,u,d){return this.broadPhase.castShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a,o,s,c,l?l.handle:null,u?u.handle:null,this.colliders.castClosure(d))}intersectionsWithShape(e,t,n,r,i,a,o,s,c){this.broadPhase.intersectionsWithShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,this.colliders.castClosure(r),i,a,o?o.handle:null,s?s.handle:null,this.colliders.castClosure(c))}collidersWithAabbIntersectingAabb(e,t,n){this.broadPhase.collidersWithAabbIntersectingAabb(this.narrowPhase,this.bodies,this.colliders,e,t,this.colliders.castClosure(n))}contactPairsWith(e,t){this.narrowPhase.contactPairsWith(e.handle,this.colliders.castClosure(t))}intersectionPairsWith(e,t){this.narrowPhase.intersectionPairsWith(e.handle,this.colliders.castClosure(t))}contactPair(e,t,n){this.narrowPhase.contactPair(e.handle,t.handle,n)}intersectionPair(e,t){return this.narrowPhase.intersectionPair(e.handle,t.handle)}set profilerEnabled(e){this.physicsPipeline.raw.set_profiler_enabled(e)}get profilerEnabled(){return this.physicsPipeline.raw.is_profiler_enabled()}timingStep(){return this.physicsPipeline.raw.timing_step()}timingCollisionDetection(){return this.physicsPipeline.raw.timing_collision_detection()}timingBroadPhase(){return this.physicsPipeline.raw.timing_broad_phase()}timingNarrowPhase(){return this.physicsPipeline.raw.timing_narrow_phase()}timingSolver(){return this.physicsPipeline.raw.timing_solver()}timingVelocityAssembly(){return this.physicsPipeline.raw.timing_velocity_assembly()}timingVelocityResolution(){return this.physicsPipeline.raw.timing_velocity_resolution()}timingVelocityUpdate(){return this.physicsPipeline.raw.timing_velocity_update()}timingVelocityWriteback(){return this.physicsPipeline.raw.timing_velocity_writeback()}timingCcd(){return this.physicsPipeline.raw.timing_ccd()}timingCcdToiComputation(){return this.physicsPipeline.raw.timing_ccd_toi_computation()}timingCcdBroadPhase(){return this.physicsPipeline.raw.timing_ccd_broad_phase()}timingCcdNarrowPhase(){return this.physicsPipeline.raw.timing_ccd_narrow_phase()}timingCcdSolver(){return this.physicsPipeline.raw.timing_ccd_solver()}timingIslandConstruction(){return this.physicsPipeline.raw.timing_island_construction()}timingUserChanges(){return this.physicsPipeline.raw.timing_user_changes()}};(function(e){e[e.NONE=0]=`NONE`,e[e.COLLISION_EVENTS=1]=`COLLISION_EVENTS`,e[e.CONTACT_FORCE_EVENTS=2]=`CONTACT_FORCE_EVENTS`})(ht||={});var kn=class{free(){this.raw&&this.raw.free(),this.raw=void 0}collider1(){return this.raw.collider1()}collider2(){return this.raw.collider2()}totalForce(){return B.fromRaw(this.raw.total_force())}totalForceMagnitude(){return this.raw.total_force_magnitude()}maxForceDirection(){return B.fromRaw(this.raw.max_force_direction())}maxForceMagnitude(){return this.raw.max_force_magnitude()}},An=class{constructor(e,t){this.raw=t||new we(e)}free(){this.raw&&this.raw.free(),this.raw=void 0}drainCollisionEvents(e){this.raw.drainCollisionEvents(e)}drainContactForceEvents(e){let t=new kn;this.raw.drainContactForceEvents((n=>{t.raw=n,e(t),t.free()}))}clear(){this.raw.clear()}};(function(e){e[e.NONE=0]=`NONE`,e[e.FILTER_CONTACT_PAIRS=1]=`FILTER_CONTACT_PAIRS`,e[e.FILTER_INTERSECTION_PAIRS=2]=`FILTER_INTERSECTION_PAIRS`})(gt||={}),function(e){e[e.EMPTY=0]=`EMPTY`,e[e.COMPUTE_IMPULSE=1]=`COMPUTE_IMPULSE`}(_t||={}),function(e){e[e.EXCLUDE_FIXED=1]=`EXCLUDE_FIXED`,e[e.EXCLUDE_KINEMATIC=2]=`EXCLUDE_KINEMATIC`,e[e.EXCLUDE_DYNAMIC=4]=`EXCLUDE_DYNAMIC`,e[e.EXCLUDE_SENSORS=8]=`EXCLUDE_SENSORS`,e[e.EXCLUDE_SOLIDS=16]=`EXCLUDE_SOLIDS`,e[e.ONLY_DYNAMIC=3]=`ONLY_DYNAMIC`,e[e.ONLY_KINEMATIC=5]=`ONLY_KINEMATIC`,e[e.ONLY_FIXED=6]=`ONLY_FIXED`}(vt||={}),function(e){e[e.DYNAMIC_DYNAMIC=1]=`DYNAMIC_DYNAMIC`,e[e.DYNAMIC_KINEMATIC=12]=`DYNAMIC_KINEMATIC`,e[e.DYNAMIC_FIXED=2]=`DYNAMIC_FIXED`,e[e.KINEMATIC_KINEMATIC=52224]=`KINEMATIC_KINEMATIC`,e[e.KINEMATIC_FIXED=8704]=`KINEMATIC_FIXED`,e[e.FIXED_FIXED=32]=`FIXED_FIXED`,e[e.DEFAULT=15]=`DEFAULT`,e[e.ALL=60943]=`ALL`}(yt||={});var jn=class{constructor(e,t,n,r){this.colliderSet=e,this.handle=t,this._parent=n,this._shape=r}finalizeDeserialization(e){this.handle!=null&&(this._parent=e.get(this.colliderSet.raw.coParent(this.handle)))}ensureShapeIsCached(){this._shape||=X.fromRaw(this.colliderSet.raw,this.handle)}get shape(){return this.ensureShapeIsCached(),this._shape}clearShapeCache(){this._shape=null}isValid(){return this.colliderSet.raw.contains(this.handle)}translation(){return B.fromRaw(this.colliderSet.raw.coTranslation(this.handle))}translationWrtParent(){return B.fromRaw(this.colliderSet.raw.coTranslationWrtParent(this.handle))}rotation(){return V.fromRaw(this.colliderSet.raw.coRotation(this.handle))}rotationWrtParent(){return V.fromRaw(this.colliderSet.raw.coRotationWrtParent(this.handle))}isSensor(){return this.colliderSet.raw.coIsSensor(this.handle)}setSensor(e){this.colliderSet.raw.coSetSensor(this.handle,e)}setShape(e){let t=e.intoRaw();this.colliderSet.raw.coSetShape(this.handle,t),t.free(),this._shape=e}setEnabled(e){this.colliderSet.raw.coSetEnabled(this.handle,e)}isEnabled(){return this.colliderSet.raw.coIsEnabled(this.handle)}setRestitution(e){this.colliderSet.raw.coSetRestitution(this.handle,e)}setFriction(e){this.colliderSet.raw.coSetFriction(this.handle,e)}frictionCombineRule(){return this.colliderSet.raw.coFrictionCombineRule(this.handle)}setFrictionCombineRule(e){this.colliderSet.raw.coSetFrictionCombineRule(this.handle,e)}restitutionCombineRule(){return this.colliderSet.raw.coRestitutionCombineRule(this.handle)}setRestitutionCombineRule(e){this.colliderSet.raw.coSetRestitutionCombineRule(this.handle,e)}setCollisionGroups(e){this.colliderSet.raw.coSetCollisionGroups(this.handle,e)}setSolverGroups(e){this.colliderSet.raw.coSetSolverGroups(this.handle,e)}contactSkin(){return this.colliderSet.raw.coContactSkin(this.handle)}setContactSkin(e){return this.colliderSet.raw.coSetContactSkin(this.handle,e)}activeHooks(){return this.colliderSet.raw.coActiveHooks(this.handle)}setActiveHooks(e){this.colliderSet.raw.coSetActiveHooks(this.handle,e)}activeEvents(){return this.colliderSet.raw.coActiveEvents(this.handle)}setActiveEvents(e){this.colliderSet.raw.coSetActiveEvents(this.handle,e)}activeCollisionTypes(){return this.colliderSet.raw.coActiveCollisionTypes(this.handle)}setContactForceEventThreshold(e){return this.colliderSet.raw.coSetContactForceEventThreshold(this.handle,e)}contactForceEventThreshold(){return this.colliderSet.raw.coContactForceEventThreshold(this.handle)}setActiveCollisionTypes(e){this.colliderSet.raw.coSetActiveCollisionTypes(this.handle,e)}setDensity(e){this.colliderSet.raw.coSetDensity(this.handle,e)}setMass(e){this.colliderSet.raw.coSetMass(this.handle,e)}setMassProperties(e,t,n,r){let i=B.intoRaw(t),a=B.intoRaw(n),o=V.intoRaw(r);this.colliderSet.raw.coSetMassProperties(this.handle,e,i,a,o),i.free(),a.free(),o.free()}setTranslation(e){this.colliderSet.raw.coSetTranslation(this.handle,e.x,e.y,e.z)}setTranslationWrtParent(e){this.colliderSet.raw.coSetTranslationWrtParent(this.handle,e.x,e.y,e.z)}setRotation(e){this.colliderSet.raw.coSetRotation(this.handle,e.x,e.y,e.z,e.w)}setRotationWrtParent(e){this.colliderSet.raw.coSetRotationWrtParent(this.handle,e.x,e.y,e.z,e.w)}shapeType(){return this.colliderSet.raw.coShapeType(this.handle)}halfExtents(){return B.fromRaw(this.colliderSet.raw.coHalfExtents(this.handle))}setHalfExtents(e){let t=B.intoRaw(e);this.colliderSet.raw.coSetHalfExtents(this.handle,t)}radius(){return this.colliderSet.raw.coRadius(this.handle)}setRadius(e){this.colliderSet.raw.coSetRadius(this.handle,e)}roundRadius(){return this.colliderSet.raw.coRoundRadius(this.handle)}setRoundRadius(e){this.colliderSet.raw.coSetRoundRadius(this.handle,e)}halfHeight(){return this.colliderSet.raw.coHalfHeight(this.handle)}setHalfHeight(e){this.colliderSet.raw.coSetHalfHeight(this.handle,e)}setVoxel(e,t,n,r){this.colliderSet.raw.coSetVoxel(this.handle,e,t,n,r),this._shape=null}propagateVoxelChange(e,t,n,r,i,a,o){this.colliderSet.raw.coPropagateVoxelChange(this.handle,e.handle,t,n,r,i,a,o),this._shape=null}combineVoxelStates(e,t,n,r){this.colliderSet.raw.coCombineVoxelStates(this.handle,e.handle,t,n,r),this._shape=null}vertices(){return this.colliderSet.raw.coVertices(this.handle)}indices(){return this.colliderSet.raw.coIndices(this.handle)}heightfieldHeights(){return this.colliderSet.raw.coHeightfieldHeights(this.handle)}heightfieldScale(){let e=this.colliderSet.raw.coHeightfieldScale(this.handle);return B.fromRaw(e)}heightfieldNRows(){return this.colliderSet.raw.coHeightfieldNRows(this.handle)}heightfieldNCols(){return this.colliderSet.raw.coHeightfieldNCols(this.handle)}parent(){return this._parent}friction(){return this.colliderSet.raw.coFriction(this.handle)}restitution(){return this.colliderSet.raw.coRestitution(this.handle)}density(){return this.colliderSet.raw.coDensity(this.handle)}mass(){return this.colliderSet.raw.coMass(this.handle)}volume(){return this.colliderSet.raw.coVolume(this.handle)}collisionGroups(){return this.colliderSet.raw.coCollisionGroups(this.handle)}solverGroups(){return this.colliderSet.raw.coSolverGroups(this.handle)}containsPoint(e){let t=B.intoRaw(e),n=this.colliderSet.raw.coContainsPoint(this.handle,t);return t.free(),n}projectPoint(e,t){let n=B.intoRaw(e),r=qt.fromRaw(this.colliderSet.raw.coProjectPoint(this.handle,n,t));return n.free(),r}intersectsRay(e,t){let n=B.intoRaw(e.origin),r=B.intoRaw(e.dir),i=this.colliderSet.raw.coIntersectsRay(this.handle,n,r,t);return n.free(),r.free(),i}castShape(e,t,n,r,i,a,o,s){let c=B.intoRaw(e),l=B.intoRaw(n),u=V.intoRaw(r),d=B.intoRaw(i),f=t.intoRaw(),p=Yt.fromRaw(this.colliderSet,this.colliderSet.raw.coCastShape(this.handle,c,f,l,u,d,a,o,s));return c.free(),l.free(),u.free(),d.free(),f.free(),p}castCollider(e,t,n,r,i,a){let o=B.intoRaw(e),s=B.intoRaw(n),c=Xt.fromRaw(this.colliderSet,this.colliderSet.raw.coCastCollider(this.handle,o,t.handle,s,r,i,a));return o.free(),s.free(),c}intersectsShape(e,t,n){let r=B.intoRaw(t),i=V.intoRaw(n),a=e.intoRaw(),o=this.colliderSet.raw.coIntersectsShape(this.handle,a,r,i);return r.free(),i.free(),a.free(),o}contactShape(e,t,n,r){let i=B.intoRaw(t),a=V.intoRaw(n),o=e.intoRaw(),s=en.fromRaw(this.colliderSet.raw.coContactShape(this.handle,o,i,a,r));return i.free(),a.free(),o.free(),s}contactCollider(e,t){return en.fromRaw(this.colliderSet.raw.coContactCollider(this.handle,e.handle,t))}castRay(e,t,n){let r=B.intoRaw(e.origin),i=B.intoRaw(e.dir),a=this.colliderSet.raw.coCastRay(this.handle,r,i,t,n);return r.free(),i.free(),a}castRayAndGetNormal(e,t,n){let r=B.intoRaw(e.origin),i=B.intoRaw(e.dir),a=Wt.fromRaw(this.colliderSet.raw.coCastRayAndGetNormal(this.handle,r,i,t,n));return r.free(),i.free(),a}};(function(e){e[e.Density=0]=`Density`,e[e.Mass=1]=`Mass`,e[e.MassProps=2]=`MassProps`})(q||={});var Mn=class e{constructor(e){this.enabled=!0,this.shape=e,this.massPropsMode=q.Density,this.density=1,this.friction=.5,this.restitution=0,this.rotation=V.identity(),this.translation=B.zeros(),this.isSensor=!1,this.collisionGroups=4294967295,this.solverGroups=4294967295,this.frictionCombineRule=W.Average,this.restitutionCombineRule=W.Average,this.activeCollisionTypes=yt.DEFAULT,this.activeEvents=ht.NONE,this.activeHooks=gt.NONE,this.mass=0,this.centerOfMass=B.zeros(),this.contactForceEventThreshold=0,this.contactSkin=0,this.principalAngularInertia=B.zeros(),this.angularInertiaLocalFrame=V.identity()}static ball(t){return new e(new tn(t))}static capsule(t,n){return new e(new on(t,n))}static segment(t,n){return new e(new sn(t,n))}static triangle(t,n,r){return new e(new cn(t,n,r))}static roundTriangle(t,n,r,i){return new e(new ln(t,n,r,i))}static polyline(t,n){return new e(new un(t,n))}static voxels(t,n){return new e(new dn(t,n))}static trimesh(t,n,r){return new e(new fn(t,n,r))}static cuboid(t,n,r){return new e(new rn(t,n,r))}static roundCuboid(t,n,r,i){return new e(new an(t,n,r,i))}static heightfield(t,n,r,i,a){return new e(new hn(t,n,r,i,a))}static cylinder(t,n){return new e(new gn(t,n))}static roundCylinder(t,n,r){return new e(new _n(t,n,r))}static cone(t,n){return new e(new vn(t,n))}static roundCone(t,n,r){return new e(new yn(t,n,r))}static convexHull(t){return new e(new pn(t,null))}static convexMesh(t,n){return new e(new pn(t,n))}static roundConvexHull(t,n){return new e(new mn(t,null,n))}static roundConvexMesh(t,n,r){return new e(new mn(t,n,r))}setTranslation(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The translation components must be numbers.`);return this.translation={x:e,y:t,z:n},this}setRotation(e){return V.copy(this.rotation,e),this}setSensor(e){return this.isSensor=e,this}setEnabled(e){return this.enabled=e,this}setContactSkin(e){return this.contactSkin=e,this}setDensity(e){return this.massPropsMode=q.Density,this.density=e,this}setMass(e){return this.massPropsMode=q.Mass,this.mass=e,this}setMassProperties(e,t,n,r){return this.massPropsMode=q.MassProps,this.mass=e,B.copy(this.centerOfMass,t),B.copy(this.principalAngularInertia,n),V.copy(this.angularInertiaLocalFrame,r),this}setRestitution(e){return this.restitution=e,this}setFriction(e){return this.friction=e,this}setFrictionCombineRule(e){return this.frictionCombineRule=e,this}setRestitutionCombineRule(e){return this.restitutionCombineRule=e,this}setCollisionGroups(e){return this.collisionGroups=e,this}setSolverGroups(e){return this.solverGroups=e,this}setActiveHooks(e){return this.activeHooks=e,this}setActiveEvents(e){return this.activeEvents=e,this}setActiveCollisionTypes(e){return this.activeCollisionTypes=e,this}setContactForceEventThreshold(e){return this.contactForceEventThreshold=e,this}},Nn=class{constructor(e){this.raw=e||new k,this.map=new St,e&&e.forEachColliderHandle((e=>{this.map.set(e,new jn(this,e,null))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}castClosure(e){return t=>e?e(this.get(t)):void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createCollider(e,t,n){let r=n!=null&&n!=null;if(r&&isNaN(n))throw Error(`Cannot create a collider with a parent rigid-body handle that is not a number.`);let i=t.shape.intoRaw(),a=B.intoRaw(t.translation),o=V.intoRaw(t.rotation),s=B.intoRaw(t.centerOfMass),c=B.intoRaw(t.principalAngularInertia),l=V.intoRaw(t.angularInertiaLocalFrame),u=this.raw.createCollider(t.enabled,i,a,o,t.massPropsMode,t.mass,s,c,l,t.density,t.friction,t.restitution,t.frictionCombineRule,t.restitutionCombineRule,t.isSensor,t.collisionGroups,t.solverGroups,t.activeCollisionTypes,t.activeHooks,t.activeEvents,t.contactForceEventThreshold,t.contactSkin,r,r?n:0,e.raw);i.free(),a.free(),o.free(),s.free(),c.free(),l.free();let d=r?e.get(n):null,f=new jn(this,u,d,t.shape);return this.map.set(u,f),f}remove(e,t,n,r){this.raw.remove(e,t.raw,n.raw,r),this.unmap(e)}unmap(e){this.map.delete(e)}get(e){return this.map.get(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}forEach(e){this.map.forEach(e)}getAll(){return this.map.getAll()}};function Pn(e,t,n,r){return new(n||=Promise)((function(i,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((r=r.apply(e,t||[])).next())}))}for(var Fn={byteLength:function(e){var t=zn(e),n=t[0],r=t[1];return 3*(n+r)/4-r},toByteArray:function(e){var t,n,r=zn(e),i=r[0],a=r[1],o=new In(function(e,t,n){return 3*(t+n)/4-n}(0,i,a)),s=0,c=a>0?i-4:i;for(n=0;n>16&255,o[s++]=t>>8&255,o[s++]=255&t;return a===2&&(t=Q[e.charCodeAt(n)]<<2|Q[e.charCodeAt(n+1)]>>4,o[s++]=255&t),a===1&&(t=Q[e.charCodeAt(n)]<<10|Q[e.charCodeAt(n+1)]<<4|Q[e.charCodeAt(n+2)]>>2,o[s++]=t>>8&255,o[s++]=255&t),o},fromByteArray:function(e){for(var t,n=e.length,r=n%3,i=[],a=16383,o=0,s=n-r;os?s:o+a));return r===1?(t=e[n-1],i.push(Z[t>>2]+Z[t<<4&63]+`==`)):r===2&&(t=(e[n-2]<<8)+e[n-1],i.push(Z[t>>10]+Z[t>>4&63]+Z[t<<2&63]+`=`)),i.join(``)}},Z=[],Q=[],In=typeof Uint8Array<`u`?Uint8Array:Array,Ln=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,$=0,Rn=Ln.length;$0)throw Error(`Invalid string. Length must be a multiple of 4`);var n=e.indexOf(`=`);return n===-1&&(n=t),[n,n===t?0:4-n%4]}function Bn(e,t,n){for(var r,i,a=[],o=t;o>18&63]+Z[i>>12&63]+Z[i>>6&63]+Z[63&i]);return a.join(``)}function Vn(){return Pn(this,void 0,void 0,(function*(){yield at(Fn.toByteArray(`AGFzbQEAAAAB6QykAWACf38AYAN/f38AYAR/f39/AGACf38Bf2ABfwF/YAN/f38Bf2ABfwBgBX9/f39/AGACf3wBf2AGf39/f31/AGAGf39/f39/AGABfwF9YAV/f399fwBgA39/fQBgBX9/f399AGADf3x/AGABfwF8YAR/f39/AX9gDH9/f39/f39/f399fwF/YAZ/f39/f30AYAR/f399AX9gAAF/YAR/f39/AX1gA39/fwF9YAN/f30Bf2ACf38BfGADf39/AX5gAn99AGAGf39/f39/AX9gAn98AX1gA398fQBgBH98f38AYAV/f39/fwF/YAd/f39/f39/AGACf3wBfGAIf39/f39/f38AYAF9AX1gAn9/AX1gAABgCX9/f39/f39/fwBgBH9+f38Bf2AIf39/f39/f30AYAR/f399AGADf398AGALf39/f39/f399fX8AYAh/f39/fX9/fwBgCX9/f39/fX9/fwBgBX9/fX9/AGAGf3x/f39/AGADf3x/AX9gA398fwF9YAN9fX0Bf2AGf31/f399AGAJf39/f39/fX9/AX9gBX98f39/AGAGf3x9fX19AGAFf3x9fX0AYAN/fX8AYAJ9fQF/YAF8AX9gBH99f38AYAt/f39/f39/f31/fwBgCn9/f39/f31/f38AYAZ/f319f38AYAt/f39/f39/fX9/fwBgCH9/f399fX9/AGAGf319f399AGAMf39/f31/f39/fX9/AGAPf39/f39/f39/fH98f3x/AGAPf39/f39/fX9/fH98f3x/AX9gBn9/f399fQBgBn99f3x/fwF/YAZ/fX98f38AYAV/fX1/fwBgAn5/AX9gBn9/fX9/fwBgBX9/fHx/AXxgA398fAF/YAR/fH1/AGAFf3x/fX0AYAF9AX9gAn98AGAEfX19fQF/YA5/f39/f39/f39/f39/fwBgB39/f39/f30AYA9/f39/f39/f39/f399fX8AYAt/f399f399f319fwBgCX99f39/f39/fwF/YAd/f39/f39/AX1gCn9/f39/f399fX8AYAt/f39/f39/f319fwF/YBJ/f39/f39/f39/f399f319fX0AYAd/f39/f399AX9gD39/f39/f39/f39/f39/fwBgCn9/f39/f39/f38Bf2ASf39/f39/f399fX9/fH98f3x/AX9gC39/f39/f39/f39/AGAJf39/f39/fX9/AGAGf3x/f399AX9gG39/f399fX9/f39/f39/f39/f319f39/fX9/fwF8YBB/f39/f399f39/fH98f3x/AGAIf31/f39/f38AYBt/f39/f39/fX9/f319fX9/f39/f39/fX1/fH8AYAx/f39/f39/f39/f38AYAp/fX9/f39/f39/AGAMf39/f31/f39/f39/AGAHf39/f399fwF/YAp/fH9/f39/fX1/AX9gDX9/f39/f398f3x/fH8AYAt/f39/fX9/f39/fwBgCH9/f39/fX9/AGAJf39/f39/f39/AX1gBn99f39/fwBgBH9/fX8AYA1/f39/f39/fH98f3x/AX9gB39/f39/fX8BfWAMf39/f39/fH98f3x/AX9gBn9/f39/fQF/YAZ/f39/fX0Bf2AIf31/fX99f38AYA1/fX9/f398f398f3x/AGASf39/f39/f39/f39/f39/f39/AGAGf3x/f31/AX9gBX98f39/AX9gCX99f39/f398fwBgCH98f3x/fX1/AX9gCn9/f39/f39/f38AYAd/fH1/f39/AGAGf3x/f31/AX1gAn9+AX9gBn98fX9/fwBgBX98f399AX9gDX9/f39/f399fX19fX0AYAR/fH9/AX9gBX19fX9/AX9gA31/fwF/YAl/f39/f39+fn4AYAR/fHx9AX9gB39/f39/f38Bf2ANf39/f39/f39/f39/fwBgA398fwF8YAZ/fH99fX0AYAd/fH99fX19AGACf34AYAh/f39/f39/fwF/YAd/fH19fX1/AGAJf3x8f39/f39/AGAFf39/f30Bf2AGf3x9fX1/AGAGf3x8f39/AGAEf39+fwBgA39/fgF/YAV/fn9+fwBgA39+fgBgBH19fX8Bf2ADf399AX1gAn19AGAEf319fwBgBn9/fX19fQBgA319fwF/YAV/f3x/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0CqwkgA3diZxVfX3diaW5kZ2VuX251bWJlcl9uZXcAOwN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9nZXQAAAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZyRfX3diZ19yYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9uZXcABAN3YmceX193YmdfcmF3Y29udGFjdGZvcmNlZXZlbnRfbmV3AAQDd2JnIl9fd2JnX3BlcmZvcm1hbmNlXzdhM2ZmZDBiMTdmNjYzYWQABAN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcaX193Ymdfbm93XzJjOTVjOWRlMDEyOTMxNzMAEAN3YmcbX193YmluZGdlbl9vYmplY3RfY2xvbmVfcmVmAAQDd2JnIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAMDd2JnG19fd2JnX2NhbGxfNjcyYTRkMjE2MzRkNGEyNAADA3diZxtfX3diZ19jYWxsXzdjY2NkZDY5ZTA3OTFhZTIABQN3YmcbX193YmdfY2FsbF84MzNiZWQ1NzcwZWEyMDQxABEDd2JnG19fd2JnX2NhbGxfYjhhZGM4YjFkMGEwZDhlYgAgA3diZxtfX3diZ19iaW5kX2M4MzU5YjFjYmEwNTgxNjgAEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgABAN3YmcyX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF9USElTXzU2NTc4YmU3ZTlmODMyYjAAFQN3YmcrX193Ymdfc3RhdGljX2FjY2Vzc29yX1NFTEZfMzdjNWQ0MThlNGJmNTgxOQAVA3diZy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfV0lORE9XXzVkZTM3MDQzYTkxYTljNDAAFQN3YmctX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF84OGE5MDJkMTNhNTU3ZDA3ABUDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2Q5N2U2MzdlYmUxNDVhOWEABQN3YmcaX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmUABAN3YmcaX193Ymdfc2V0XzY1NTk1YmRkODY4YjMwMDkAAQN3YmcdX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjgABAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZTZiN2U2OWFjZDRjNzM1NAAFA3diZxpfX3di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BgYGBgYAAAYGBgYCBwYAAA0BAgMDGBgYGBgYGBgYGBgYGBgYACYmBgMmAwoKCgoKAAufAQEEBgMGCwYGBgYGBgYDFQMBAAAAAwMDAAMDAwMDAwMLCwQDHAcgoAGhAS8GAgADAwUDDQYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEQYGBgYGAgANAAAAAAAAAREBAQEBAQEBAQEKCgoKCgoKCgoKCg0BAwcAAAAAAAADAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADAwADAQcHBwcLAQEBBgMEAwMDAwMDACYmAwEBAQENCwMDAwADAwMDAwMAAQQHowEGCwsLJCQkAwQLBAQLAwUECwQEBAQEBAQLBAQLBAQEBAQEBAc0AAYEBwFwAfgI+AgFAwEAEgYJAX8BQYCAwAALB4yeAZoEBm1lbW9yeQIAB3ZlcnNpb24A1wwqX193YmdfcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9mcmVlALsII3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfbmV3AMwHJXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0VXAA9AUxcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9ub3JtYWxOdWRnZUZhY3RvcgDoCzRyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE5vcm1hbE51ZGdlRmFjdG9yAJQMJnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfb2Zmc2V0AOkLKXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0T2Zmc2V0AOoLLHJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2xpZGVFbmFibGVkAOsLL3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0U2xpZGVFbmFibGVkAI4MMXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBNYXhIZWlnaHQArAswcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9hdXRvc3RlcE1pbldpZHRoAK0LPXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBJbmNsdWRlc0R5bmFtaWNCb2RpZXMAngsvcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9hdXRvc3RlcEVuYWJsZWQA2wsucmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9lbmFibGVBdXRvc3RlcACLCy9yYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2Rpc2FibGVBdXRvc3RlcACVDDJyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX21heFNsb3BlQ2xpbWJBbmdsZQDsCzVyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE1heFNsb3BlQ2xpbWJBbmdsZQCWDDJyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX21pblNsb3BlU2xpZGVBbmdsZQDtCzVyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE1pblNsb3BlU2xpZGVBbmdsZQCXDDRyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NuYXBUb0dyb3VuZERpc3RhbmNlAK4LMnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfZW5hYmxlU25hcFRvR3JvdW5kAO4LM3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfZGlzYWJsZVNuYXBUb0dyb3VuZACYDDNyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NuYXBUb0dyb3VuZEVuYWJsZWQA3As3cmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9jb21wdXRlQ29sbGlkZXJNb3ZlbWVudADIAjByYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2NvbXB1dGVkTW92ZW1lbnQA1AgwcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9jb21wdXRlZEdyb3VuZGVkAO8LNXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfbnVtQ29tcHV0ZWRDb2xsaXNpb25zAPALMXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfY29tcHV0ZWRDb2xsaXNpb24A1wYgX193YmdfcmF3Y2hhcmFjdGVyY29sbGlzaW9uX2ZyZWUArAkZcmF3Y2hhcmFjdGVyY29sbGlzaW9uX25ldwDwChxyYXdjaGFyYWN0ZXJjb2xsaXNpb25faGFuZGxlAPELLXJhd2NoYXJhY3RlcmNvbGxpc2lvbl90cmFuc2xhdGlvbkRlbHRhQXBwbGllZADVCC9yYXdjaGFyYWN0ZXJjb2xsaXNpb25fdHJhbnNsYXRpb25EZWx0YVJlbWFpbmluZwDWCBlyYXdjaGFyYWN0ZXJjb2xsaXNpb25fdG9pAPILI3Jhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZFdpdG5lc3MxANcII3Jhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZFdpdG5lc3MyANMFInJhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZE5vcm1hbDEA2AgicmF3Y2hhcmFjdGVyY29sbGlzaW9uX3dvcmxkTm9ybWFsMgCOBhtfX3diZ19yYXdwaWRjb250cm9sbGVyX2ZyZWUArQkUcmF3cGlkY29udHJvbGxlcl9uZXcA1AoXcmF3cGlkY29udHJvbGxlcl9zZXRfa3AApAgXcmF3cGlkY29udHJvbGxlcl9zZXRfa2kApQgXcmF3cGlkY29udHJvbGxlcl9zZXRfa2QApggecmF3cGlkY29udHJvbGxlcl9zZXRfYXhlc19tYXNrALgLIHJhd3BpZGNvbnRyb2xsZXJfcmVzZXRfaW50ZWdyYWxzAO4JKHJhd3BpZGNvbnRyb2xsZXJfYXBwbHlfbGluZWFyX2NvcnJlY3Rpb24AsAMpcmF3cGlkY29udHJvbGxlcl9hcHBseV9hbmd1bGFyX2NvcnJlY3Rpb24AsQMicmF3cGlkY29udHJvbGxlcl9saW5lYXJfY29ycmVjdGlvbgCJAyNyYXdwaWRjb250cm9sbGVyX2FuZ3VsYXJfY29ycmVjdGlvbgCKAy1fX3diZ19yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2ZyZWUA7AYmcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9uZXcAjAs4cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9jdXJyZW50X3ZlaGljbGVfc3BlZWQA8wsqcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9jaGFzc2lzAPQLMHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfaW5kZXhfdXBfYXhpcwD1CzRyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF9pbmRleF91cF9heGlzAJkMNXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfaW5kZXhfZm9yd2FyZF9heGlzAPYLOXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X2luZGV4X2ZvcndhcmRfYXhpcwCaDCxyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2FkZF93aGVlbADWAy1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX251bV93aGVlbHMA9wsxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl91cGRhdGVfdmVoaWNsZQCNA0RyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2NoYXNzaXNfY29ubmVjdGlvbl9wb2ludF9jcwD5BkhyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9jaGFzc2lzX2Nvbm5lY3Rpb25fcG9pbnRfY3MA1QU/cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX3Jlc3RfbGVuZ3RoAL8KQ3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fcmVzdF9sZW5ndGgAiQk+cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9tYXhfc3VzcGVuc2lvbl90cmF2ZWwAwApCcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfbWF4X3N1c3BlbnNpb25fdHJhdmVsAIoJL3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfcmFkaXVzAMEKM3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3JhZGl1cwCLCT1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fc3RpZmZuZXNzAMIKQXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fc3RpZmZuZXNzAIwJP3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9jb21wcmVzc2lvbgDDCkNyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdXNwZW5zaW9uX2NvbXByZXNzaW9uAI0JPnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9yZWxheGF0aW9uAMQKQnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fcmVsYXhhdGlvbgCOCT1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX21heF9zdXNwZW5zaW9uX2ZvcmNlAMUKQXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX21heF9zdXNwZW5zaW9uX2ZvcmNlAI8JLnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfYnJha2UAxgoycmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfYnJha2UAkAkxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdGVlcmluZwDHCjVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdGVlcmluZwCRCTVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2VuZ2luZV9mb3JjZQDICjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9lbmdpbmVfZm9yY2UAkgk1cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9kaXJlY3Rpb25fY3MA+gY5cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfZGlyZWN0aW9uX2NzANYFMHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfYXhsZV9jcwD7BjRyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9heGxlX2NzANcFNnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfZnJpY3Rpb25fc2xpcADJCjpyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9mcmljdGlvbl9zbGlwAJMJQHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc2lkZV9mcmljdGlvbl9zdGlmZm5lc3MAygpEcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfc2lkZV9mcmljdGlvbl9zdGlmZm5lc3MAlAkxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9yb3RhdGlvbgDLCjhyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2ZvcndhcmRfaW1wdWxzZQDMCjVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3NpZGVfaW1wdWxzZQDNCjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fZm9yY2UAzgo6cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9jb250YWN0X25vcm1hbF93cwD8BjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2NvbnRhY3RfcG9pbnRfd3MA/QY6cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX2xlbmd0aADPCjZyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2hhcmRfcG9pbnRfd3MA/gY2cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9pc19pbl9jb250YWN0ANUKNnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfZ3JvdW5kX29iamVjdACnCRdfX3diZ19yYXdjY2Rzb2x2ZXJfZnJlZQCuCRxyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRUeXBlAIcHI3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUxAOEHI3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUyAOIHH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEZyYW1lWDEAjwYfcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50RnJhbWVYMgCQBh9yYXdpbXB1bHNlam9pbnRzZXRfam9pbnRBbmNob3IxAJEGH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEFuY2hvcjIAkgYicmF3aW1wdWxzZWpvaW50c2V0X2pvaW50U2V0QW5jaG9yMQDbBSJyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRBbmNob3IyANwFJ3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbnRhY3RzRW5hYmxlZADjBypyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRDb250YWN0c0VuYWJsZWQAvAglcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzRW5hYmxlZACAByFyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRMaW1pdHNNaW4AowchcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzTWF4AKQHIXJhd2ltcHVsc2Vqb2ludHNldF9qb2ludFNldExpbWl0cwCzBytyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3Rvck1vZGVsAIQHLnJhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbmZpZ3VyZU1vdG9yVmVsb2NpdHkAxgcucmF3aW1wdWxzZWpvaW50c2V0X2pvaW50Q29uZmlndXJlTW90b3JQb3NpdGlvbgDHByZyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3RvcgDIBx1fX3diZ19yYXdpbXB1bHNlam9pbnRzZXRfZnJlZQDNBxZyYXdpbXB1bHNlam9pbnRzZXRfbmV3ANYKHnJhd2ltcHVsc2Vqb2ludHNldF9jcmVhdGVKb2ludADGBhlyYXdpbXB1bHNlam9pbnRzZXRfcmVtb3ZlAJkJFnJhd2ltcHVsc2Vqb2ludHNldF9sZW4A9QsbcmF3aW1wdWxzZWpvaW50c2V0X2NvbnRhaW5zANkIJXJhd2ltcHVsc2Vqb2ludHNldF9mb3JFYWNoSm9pbnRIYW5kbGUAkwYycmF3aW1wdWxzZWpvaW50c2V0X2ZvckVhY2hKb2ludEF0dGFjaGVkVG9SaWdpZEJvZHkAmgkjX193YmdfcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2ZyZWUArwkccmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX25ldwCfCxtyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfZHQA+AskcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2NvbnRhY3RfZXJwAN8KNXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19ub3JtYWxpemVkQWxsb3dlZExpbmVhckVycm9yAPkLNXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlAPoLLHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19udW1Tb2x2ZXJJdGVyYXRpb25zAPsLJnJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19taW5Jc2xhbmRTaXplAPwLJ3Jhd2ludGVncmF0aW9ucGFyYW1ldGVyc19tYXhDY2RTdWJzdGVwcwD9Cx9yYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2R0AJsMNnJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfY29udGFjdF9uYXR1cmFsX2ZyZXF1ZW5jeQCcDDlyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X25vcm1hbGl6ZWRBbGxvd2VkTGluZWFyRXJyb3IAnQw5cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlAJ4MMHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfbnVtU29sdmVySXRlcmF0aW9ucwCfDCpyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X21pbklzbGFuZFNpemUAoAwrcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9tYXhDY2RTdWJzdGVwcwChDCdyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2xlbmd0aFVuaXQAogwbX193YmdfcmF3aXNsYW5kbWFuYWdlcl9mcmVlAKoGFHJhd2lzbGFuZG1hbmFnZXJfbmV3ALkLLXJhd2lzbGFuZG1hbmFnZXJfZm9yRWFjaEFjdGl2ZVJpZ2lkQm9keUhhbmRsZQCmBhpfX3diZ19yYXdnZW5lcmljam9pbnRfZnJlZQCwCRdyYXdnZW5lcmljam9pbnRfZ2VuZXJpYwDOAhZyYXdnZW5lcmljam9pbnRfc3ByaW5nALYEFHJhd2dlbmVyaWNqb2ludF9yb3BlAMEEGXJhd2dlbmVyaWNqb2ludF9zcGhlcmljYWwAxQQZcmF3Z2VuZXJpY2pvaW50X3ByaXNtYXRpYwDCAhVyYXdnZW5lcmljam9pbnRfZml4ZWQAqgIYcmF3Z2VuZXJpY2pvaW50X3Jldm9sdXRlANwCHnJhd211bHRpYm9keWpvaW50c2V0X2pvaW50VHlwZQDBBiFyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludEZyYW1lWDEAxgUhcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRGcmFtZVgyAMcFIXJhd211bHRpYm9keWpvaW50c2V0X2pvaW50QW5jaG9yMQDIBSFyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludEFuY2hvcjIAyQUpcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRDb250YWN0c0VuYWJsZWQA8wYscmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRTZXRDb250YWN0c0VuYWJsZWQAnAcncmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRMaW1pdHNFbmFibGVkALcGI3Jhd211bHRpYm9keWpvaW50c2V0X2pvaW50TGltaXRzTWluANEGI3Jhd211bHRpYm9keWpvaW50c2V0X2pvaW50TGltaXRzTWF4ANIGH19fd2JnX3Jhd211bHRpYm9keWpvaW50c2V0X2ZyZWUAzgcYcmF3bXVsdGlib2R5am9pbnRzZXRfbmV3ANcKIHJhd211bHRpYm9keWpvaW50c2V0X2NyZWF0ZUpvaW50AMcGG3Jhd211bHRpYm9keWpvaW50c2V0X3JlbW92ZQCiCR1yYXdtdWx0aWJvZHlqb2ludHNldF9jb250YWlucwCtCCdyYXdtdWx0aWJvZHlqb2ludHNldF9mb3JFYWNoSm9pbnRIYW5kbGUAngk0cmF3bXVsdGlib2R5am9pbnRzZXRfZm9yRWFjaEpvaW50QXR0YWNoZWRUb1JpZ2lkQm9keQCbCR1yYXdyaWdpZGJvZHlzZXRfcmJUcmFuc2xhdGlvbgCUBhpyYXdyaWdpZGJvZHlzZXRfcmJSb3RhdGlvbgCVBhdyYXdyaWdpZGJvZHlzZXRfcmJTbGVlcACFCRxyYXdyaWdpZGJvZHlzZXRfcmJJc1NsZWVwaW5nAPUHGnJhd3JpZ2lkYm9keXNldF9yYklzTW92aW5nAJ4IIXJhd3JpZ2lkYm9keXNldF9yYk5leHRUcmFuc2xhdGlvbgCWBh5yYXdyaWdpZGJvZHlzZXRfcmJOZXh0Um90YXRpb24AlwYgcmF3cmlnaWRib2R5c2V0X3JiU2V0VHJhbnNsYXRpb24AwgkdcmF3cmlnaWRib2R5c2V0X3JiU2V0Um90YXRpb24AvAkbcmF3cmlnaWRib2R5c2V0X3JiU2V0TGludmVsAIYGG3Jhd3JpZ2lkYm9keXNldF9yYlNldEFuZ3ZlbACHBi1yYXdyaWdpZGJvZHlzZXRfcmJTZXROZXh0S2luZW1hdGljVHJhbnNsYXRpb24A9gcqcmF3cmlnaWRib2R5c2V0X3JiU2V0TmV4dEtpbmVtYXRpY1JvdGF0aW9uALIGNnJhd3JpZ2lkYm9keXNldF9yYlJlY29tcHV0ZU1hc3NQcm9wZXJ0aWVzRnJvbUNvbGxpZGVycwClBiNyYXdyaWdpZGJvZHlzZXRfcmJTZXRBZGRpdGlvbmFsTWFzcwD3By1yYXdyaWdpZGJvZHlzZXRfcmJTZXRBZGRpdGlvbmFsTWFzc1Byb3BlcnRpZXMAtQMYcmF3cmlnaWRib2R5c2V0X3JiTGludmVsAJgGGHJhd3JpZ2lkYm9keXNldF9yYkFuZ3ZlbACZBiFyYXdyaWdpZGJvZHlzZXRfcmJWZWxvY2l0eUF0UG9pbnQAyAQicmF3cmlnaWRib2R5c2V0X3JiTG9ja1RyYW5zbGF0aW9ucwDEBihyYXdyaWdpZGJvZHlzZXRfcmJTZXRFbmFibGVkVHJhbnNsYXRpb25zAMoFH3Jhd3JpZ2lkYm9keXNldF9yYkxvY2tSb3RhdGlvbnMAxQYlcmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZFJvdGF0aW9ucwDLBSByYXdyaWdpZGJvZHlzZXRfcmJEb21pbmFuY2VHcm91cAD4ByNyYXdyaWdpZGJvZHlzZXRfcmJTZXREb21pbmFuY2VHcm91cADYBxtyYXdyaWdpZGJvZHlzZXRfcmJFbmFibGVDY2QA2ggmcmF3cmlnaWRib2R5c2V0X3JiU2V0U29mdENjZFByZWRpY3Rpb24A9QgWcmF3cmlnaWRib2R5c2V0X3JiTWFzcwDDBxlyYXdyaWdpZGJvZHlzZXRfcmJJbnZNYXNzAPkHInJhd3JpZ2lkYm9keXNldF9yYkVmZmVjdGl2ZUludk1hc3MAmgYacmF3cmlnaWRib2R5c2V0X3JiTG9jYWxDb20AmwYacmF3cmlnaWRib2R5c2V0X3JiV29ybGRDb20AnAYlcmF3cmlnaWRib2R5c2V0X3JiSW52UHJpbmNpcGFsSW5lcnRpYQCdBixyYXdyaWdpZGJvZHlzZXRfcmJQcmluY2lwYWxJbmVydGlhTG9jYWxGcmFtZQCeBiJyYXdyaWdpZGJvZHlzZXRfcmJQcmluY2lwYWxJbmVydGlhAM0GKnJhd3JpZ2lkYm9keXNldF9yYkVmZmVjdGl2ZVdvcmxkSW52SW5lcnRpYQDMBSlyYXdyaWdpZGJvZHlzZXRfcmJFZmZlY3RpdmVBbmd1bGFySW5lcnRpYQCuBhhyYXdyaWdpZGJvZHlzZXRfcmJXYWtlVXAA0wcecmF3cmlnaWRib2R5c2V0X3JiSXNDY2RFbmFibGVkAPoHI3Jhd3JpZ2lkYm9keXNldF9yYlNvZnRDY2RQcmVkaWN0aW9uAPsHHnJhd3JpZ2lkYm9keXNldF9yYk51bUNvbGxpZGVycwD8BxpyYXdyaWdpZGJvZHlzZXRfcmJDb2xsaWRlcgCIBxpyYXdyaWdpZGJvZHlzZXRfcmJCb2R5VHlwZQD9Bx1yYXdyaWdpZGJvZHlzZXRfcmJTZXRCb2R5VHlwZQDsBxlyYXdyaWdpZGJvZHlzZXRfcmJJc0ZpeGVkANQHHXJhd3JpZ2lkYm9keXNldF9yYklzS2luZW1hdGljANUHG3Jhd3JpZ2lkYm9keXNldF9yYklzRHluYW1pYwDZBx9yYXdyaWdpZGJvZHlzZXRfcmJMaW5lYXJEYW1waW5nAP4HIHJhd3JpZ2lkYm9keXNldF9yYkFuZ3VsYXJEYW1waW5nAP8HInJhd3JpZ2lkYm9keXNldF9yYlNldExpbmVhckRhbXBpbmcA9ggjcmF3cmlnaWRib2R5c2V0X3JiU2V0QW5ndWxhckRhbXBpbmcA9wgccmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZADbCBtyYXdyaWdpZGJvZHlzZXRfcmJJc0VuYWJsZWQAgAgecmF3cmlnaWRib2R5c2V0X3JiR3Jhdml0eVNjYWxlAIEIIXJhd3JpZ2lkYm9keXNldF9yYlNldEdyYXZpdHlTY2FsZQClBx1yYXdyaWdpZGJvZHlzZXRfcmJSZXNldEZvcmNlcwDcCB5yYXdyaWdpZGJvZHlzZXRfcmJSZXNldFRvcnF1ZXMA3QgacmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2UAiAYecmF3cmlnaWRib2R5c2V0X3JiQXBwbHlJbXB1bHNlAIkGG3Jhd3JpZ2lkYm9keXNldF9yYkFkZFRvcnF1ZQCKBiRyYXdyaWdpZGJvZHlzZXRfcmJBcHBseVRvcnF1ZUltcHVsc2UAiwYhcmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2VBdFBvaW50ANEEJXJhd3JpZ2lkYm9keXNldF9yYkFwcGx5SW1wdWxzZUF0UG9pbnQAnQQscmF3cmlnaWRib2R5c2V0X3JiQWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMAgggvcmF3cmlnaWRib2R5c2V0X3JiU2V0QWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMA+AgacmF3cmlnaWRib2R5c2V0X3JiVXNlckRhdGEA7QcdcmF3cmlnaWRib2R5c2V0X3JiU2V0VXNlckRhdGEAzQgbcmF3cmlnaWRib2R5c2V0X3JiVXNlckZvcmNlANMGHHJhd3JpZ2lkYm9keXNldF9yYlVzZXJUb3JxdWUA1AYaX193YmdfcmF3cmlnaWRib2R5c2V0X2ZyZWUA7gcTcmF3cmlnaWRib2R5c2V0X25ldwDiCh9yYXdyaWdpZGJvZHlzZXRfY3JlYXRlUmlnaWRCb2R5AOEBFnJhd3JpZ2lkYm9keXNldF9yZW1vdmUA+gITcmF3cmlnaWRib2R5c2V0X2xlbgD+CxhyYXdyaWdpZGJvZHlzZXRfY29udGFpbnMA+QgmcmF3cmlnaWRib2R5c2V0X2ZvckVhY2hSaWdpZEJvZHlIYW5kbGUAnwk5cmF3cmlnaWRib2R5c2V0X3Byb3BhZ2F0ZU1vZGlmaWVkQm9keVBvc2l0aW9uc1RvQ29sbGlkZXJzAIEHGF9fd2JnX3Jhd2Jyb2FkcGhhc2VfZnJlZQDPBxFyYXdicm9hZHBoYXNlX25ldwCVCRVyYXdicm9hZHBoYXNlX2Nhc3RSYXkAmQIhcmF3YnJvYWRwaGFzZV9jYXN0UmF5QW5kR2V0Tm9ybWFsAIoCInJhd2Jyb2FkcGhhc2VfaW50ZXJzZWN0aW9uc1dpdGhSYXkA5AEjcmF3YnJvYWRwaGFzZV9pbnRlcnNlY3Rpb25XaXRoU2hhcGUA1AEacmF3YnJvYWRwaGFzZV9wcm9qZWN0UG9pbnQAtAIncmF3YnJvYWRwaGFzZV9wcm9qZWN0UG9pbnRBbmRHZXRGZWF0dXJlALcCJHJhd2Jyb2FkcGhhc2VfaW50ZXJzZWN0aW9uc1dpdGhQb2ludACbAhdyYXdicm9hZHBoYXNlX2Nhc3RTaGFwZQDIASRyYXdicm9hZHBoYXNlX2ludGVyc2VjdGlvbnNXaXRoU2hhcGUA1wEvcmF3YnJvYWRwaGFzZV9jb2xsaWRlcnNXaXRoQWFiYkludGVyc2VjdGluZ0FhYmIAxQIccmF3Y29sbGlkZXJzZXRfY29UcmFuc2xhdGlvbgCfBhlyYXdjb2xsaWRlcnNldF9jb1JvdGF0aW9uAKAGJXJhd2NvbGxpZGVyc2V0X2NvVHJhbnNsYXRpb25XcnRQYXJlbnQA9wUicmF3Y29sbGlkZXJzZXRfY29Sb3RhdGlvbldydFBhcmVudAD4BR9yYXdjb2xsaWRlcnNldF9jb1NldFRyYW5zbGF0aW9uANoHKHJhd2NvbGxpZGVyc2V0X2NvU2V0VHJhbnNsYXRpb25XcnRQYXJlbnQAxAcccmF3Y29sbGlkZXJzZXRfY29TZXRSb3RhdGlvbgCvBiVyYXdjb2xsaWRlcnNldF9jb1NldFJvdGF0aW9uV3J0UGFyZW50AM8JGXJhd2NvbGxpZGVyc2V0X2NvSXNTZW5zb3IAgwgacmF3Y29sbGlkZXJzZXRfY29TaGFwZVR5cGUAnAkgcmF3Y29sbGlkZXJzZXRfY29IYWxmc3BhY2VOb3JtYWwAtAUccmF3Y29sbGlkZXJzZXRfY29IYWxmRXh0ZW50cwCjBR9yYXdjb2xsaWRlcnNldF9jb1NldEhhbGZFeHRlbnRzAOAGF3Jhd2NvbGxpZGVyc2V0X2NvUmFkaXVzAL0IGnJhd2NvbGxpZGVyc2V0X2NvU2V0UmFkaXVzAN4JG3Jhd2NvbGxpZGVyc2V0X2NvSGFsZkhlaWdodAC+CB5yYXdjb2xsaWRlcnNldF9jb1NldEhhbGZIZWlnaHQA3wkccmF3Y29sbGlkZXJzZXRfY29Sb3VuZFJhZGl1cwC/CB9yYXdjb2xsaWRlcnNldF9jb1NldFJvdW5kUmFkaXVzAOAJGnJhd2NvbGxpZGVyc2V0X2NvVm94ZWxEYXRhALgGGnJhd2NvbGxpZGVyc2V0X2NvVm94ZWxTaXplALkFGXJhd2NvbGxpZGVyc2V0X2NvU2V0Vm94ZWwAmAclcmF3Y29sbGlkZXJzZXRfY29Qcm9wYWdhdGVWb3hlbENoYW5nZQC9CSNyYXdjb2xsaWRlcnNldF9jb0NvbWJpbmVWb3hlbFN0YXRlcwDQCRlyYXdjb2xsaWRlcnNldF9jb1ZlcnRpY2VzALkGGHJhd2NvbGxpZGVyc2V0X2NvSW5kaWNlcwC6Bh1yYXdjb2xsaWRlcnNldF9jb1RyaU1lc2hGbGFncwDoBiFyYXdjb2xsaWRlcnNldF9jb0hlaWdodEZpZWxkRmxhZ3MA6QYjcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRmaWVsZEhlaWdodHMAuwYhcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRmaWVsZFNjYWxlAKEFIXJhd2NvbGxpZGVyc2V0X2NvSGVpZ2h0ZmllbGROUm93cwDOBiFyYXdjb2xsaWRlcnNldF9jb0hlaWdodGZpZWxkTkNvbHMAzwYXcmF3Y29sbGlkZXJzZXRfY29QYXJlbnQAmQcbcmF3Y29sbGlkZXJzZXRfY29TZXRFbmFibGVkAKYHGnJhd2NvbGxpZGVyc2V0X2NvSXNFbmFibGVkANsHH3Jhd2NvbGxpZGVyc2V0X2NvU2V0Q29udGFjdFNraW4A+ggccmF3Y29sbGlkZXJzZXRfY29Db250YWN0U2tpbgCECBlyYXdjb2xsaWRlcnNldF9jb0ZyaWN0aW9uAIUIHHJhd2NvbGxpZGVyc2V0X2NvUmVzdGl0dXRpb24AhggYcmF3Y29sbGlkZXJzZXRfY29EZW5zaXR5AJ8IFXJhd2NvbGxpZGVyc2V0X2NvTWFzcwCgCBdyYXdjb2xsaWRlcnNldF9jb1ZvbHVtZQChCCByYXdjb2xsaWRlcnNldF9jb0NvbGxpc2lvbkdyb3VwcwC4Bx1yYXdjb2xsaWRlcnNldF9jb1NvbHZlckdyb3VwcwC5BxxyYXdjb2xsaWRlcnNldF9jb0FjdGl2ZUhvb2tzAIcIJXJhd2NvbGxpZGVyc2V0X2NvQWN0aXZlQ29sbGlzaW9uVHlwZXMAiAgdcmF3Y29sbGlkZXJzZXRfY29BY3RpdmVFdmVudHMAiQgrcmF3Y29sbGlkZXJzZXRfY29Db250YWN0Rm9yY2VFdmVudFRocmVzaG9sZACKCB5yYXdjb2xsaWRlcnNldF9jb0NvbnRhaW5zUG9pbnQAlgUacmF3Y29sbGlkZXJzZXRfY29DYXN0U2hhcGUAiAIdcmF3Y29sbGlkZXJzZXRfY29DYXN0Q29sbGlkZXIAlQMgcmF3Y29sbGlkZXJzZXRfY29JbnRlcnNlY3RzU2hhcGUA5wIdcmF3Y29sbGlkZXJzZXRfY29Db250YWN0U2hhcGUA3AEgcmF3Y29sbGlkZXJzZXRfY29Db250YWN0Q29sbGlkZXIAtQUdcmF3Y29sbGlkZXJzZXRfY29Qcm9qZWN0UG9pbnQAlwQecmF3Y29sbGlkZXJzZXRfY29JbnRlcnNlY3RzUmF5ANoDGHJhd2NvbGxpZGVyc2V0X2NvQ2FzdFJheQC3AyRyYXdjb2xsaWRlcnNldF9jb0Nhc3RSYXlBbmRHZXROb3JtYWwA3QIacmF3Y29sbGlkZXJzZXRfY29TZXRTZW5zb3IA1gcfcmF3Y29sbGlkZXJzZXRfY29TZXRSZXN0aXR1dGlvbgD7CBxyYXdjb2xsaWRlcnNldF9jb1NldEZyaWN0aW9uAPwIJHJhd2NvbGxpZGVyc2V0X2NvRnJpY3Rpb25Db21iaW5lUnVsZQCLCCdyYXdjb2xsaWRlcnNldF9jb1NldEZyaWN0aW9uQ29tYmluZVJ1bGUAwAgncmF3Y29sbGlkZXJzZXRfY29SZXN0aXR1dGlvbkNvbWJpbmVSdWxlAIwIKnJhd2NvbGxpZGVyc2V0X2NvU2V0UmVzdGl0dXRpb25Db21iaW5lUnVsZQDBCCNyYXdjb2xsaWRlcnNldF9jb1NldENvbGxpc2lvbkdyb3VwcwCUByByYXdjb2xsaWRlcnNldF9jb1NldFNvbHZlckdyb3VwcwCVBx9yYXdjb2xsaWRlcnNldF9jb1NldEFjdGl2ZUhvb2tzAK4IIHJhd2NvbGxpZGVyc2V0X2NvU2V0QWN0aXZlRXZlbnRzAMIIKHJhd2NvbGxpZGVyc2V0X2NvU2V0QWN0aXZlQ29sbGlzaW9uVHlwZXMAwwgZcmF3Y29sbGlkZXJzZXRfY29TZXRTaGFwZQDYBS5yYXdjb2xsaWRlcnNldF9jb1NldENvbnRhY3RGb3JjZUV2ZW50VGhyZXNob2xkAP0IG3Jhd2NvbGxpZGVyc2V0X2NvU2V0RGVuc2l0eQD+CBhyYXdjb2xsaWRlcnNldF9jb1NldE1hc3MA/wgicmF3Y29sbGlkZXJzZXRfY29TZXRNYXNzUHJvcGVydGllcwDBAxlfX3diZ19yYXdjb2xsaWRlcnNldF9mcmVlAMoGEnJhd2NvbGxpZGVyc2V0X25ldwCXCRJyYXdjb2xsaWRlcnNldF9sZW4A/wsXcmF3Y29sbGlkZXJzZXRfY29udGFpbnMAgAkdcmF3Y29sbGlkZXJzZXRfY3JlYXRlQ29sbGlkZXIA6AEVcmF3Y29sbGlkZXJzZXRfcmVtb3ZlAJsEJHJhd2NvbGxpZGVyc2V0X2ZvckVhY2hDb2xsaWRlckhhbmRsZQCgCRpfX3diZ19yYXdzaGFwZWNvbnRhY3RfZnJlZQCxCRlfX3diZ19yYXduYXJyb3dwaGFzZV9mcmVlALUIEnJhd25hcnJvd3BoYXNlX25ldwCgCyFyYXduYXJyb3dwaGFzZV9jb250YWN0X3BhaXJzX3dpdGgAqAkbcmF3bmFycm93cGhhc2VfY29udGFjdF9wYWlyAOoGJnJhd25hcnJvd3BoYXNlX2ludGVyc2VjdGlvbl9wYWlyc193aXRoAKkJIHJhd25hcnJvd3BoYXNlX2ludGVyc2VjdGlvbl9wYWlyAO8HHV9fd2JnX3Jhd2NvbnRhY3RtYW5pZm9sZF9mcmVlALIJGHJhd2NvbnRhY3RwYWlyX2NvbGxpZGVyMQChCxhyYXdjb250YWN0cGFpcl9jb2xsaWRlcjIAogsicmF3Y29udGFjdHBhaXJfbnVtQ29udGFjdE1hbmlmb2xkcwCjCx5yYXdjb250YWN0cGFpcl9jb250YWN0TWFuaWZvbGQAhgkZcmF3Y29udGFjdG1hbmlmb2xkX25vcm1hbACNCBtyYXdjb250YWN0bWFuaWZvbGRfbG9jYWxfbjEAjggbcmF3Y29udGFjdG1hbmlmb2xkX2xvY2FsX24yAI8IHHJhd2NvbnRhY3RtYW5pZm9sZF9zdWJzaGFwZTEApAsccmF3Y29udGFjdG1hbmlmb2xkX3N1YnNoYXBlMgClCx9yYXdjb250YWN0bWFuaWZvbGRfbnVtX2NvbnRhY3RzAKYLI3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2xvY2FsX3AxAPAGI3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2xvY2FsX3AyAPEGH3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2Rpc3QAtAofcmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfZmlkMQC1Ch9yYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9maWQyALYKInJhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2ltcHVsc2UAtwoscmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfdGFuZ2VudF9pbXB1bHNlX3gAuAoscmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfdGFuZ2VudF9pbXB1bHNlX3kAuQomcmF3Y29udGFjdG1hbmlmb2xkX251bV9zb2x2ZXJfY29udGFjdHMApwsncmF3Y29udGFjdG1hbmlmb2xkX3NvbHZlcl9jb250YWN0X3BvaW50APIGJnJhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF9kaXN0ALoKKnJhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF9mcmljdGlvbgCUCi1yYXdjb250YWN0bWFuaWZvbGRfc29sdmVyX2NvbnRhY3RfcmVzdGl0dXRpb24AlQoycmF3Y29udGFjdG1hbmlmb2xkX3NvbHZlcl9jb250YWN0X3RhbmdlbnRfdmVsb2NpdHkAkAcdX193YmdfcmF3cG9pbnRwcm9qZWN0aW9uX2ZyZWUAswkYcmF3cG9pbnRwcm9qZWN0aW9uX3BvaW50AN4IG3Jhd3BvaW50cHJvamVjdGlvbl9pc0luc2lkZQCADCVfX3diZ19yYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9mcmVlALQJKXJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2NvbGxpZGVySGFuZGxlAIEMIHJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX3BvaW50AN8II3Jhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2lzSW5zaWRlAIIMJnJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2ZlYXR1cmVUeXBlAIMMJHJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2ZlYXR1cmVJZACvCx1fX3diZ19yYXdyYXlpbnRlcnNlY3Rpb25fZnJlZQC1CRxfX3diZ19yYXdyYXljb2xsaWRlcmhpdF9mcmVlALYJE19fd2JnX3Jhd3NoYXBlX2ZyZWUAyQcPcmF3c2hhcGVfY3Vib2lkAI0LFHJhd3NoYXBlX3JvdW5kQ3Vib2lkAIILDXJhd3NoYXBlX2JhbGwAsAsScmF3c2hhcGVfaGFsZnNwYWNlAKsGEHJhd3NoYXBlX2NhcHN1bGUA1AkRcmF3c2hhcGVfY3lsaW5kZXIAqAsWcmF3c2hhcGVfcm91bmRDeWxpbmRlcgCOCw1yYXdzaGFwZV9jb25lAKkLEnJhd3NoYXBlX3JvdW5kQ29uZQCPCw9yYXdzaGFwZV92b3hlbHMA9AYZcmF3c2hhcGVfdm94ZWxzRnJvbVBvaW50cwD1BhFyYXdzaGFwZV9wb2x5bGluZQCBChByYXdzaGFwZV90cmltZXNoAL4JFHJhd3NoYXBlX2hlaWdodGZpZWxkAKUFEHJhd3NoYXBlX3NlZ21lbnQAwgURcmF3c2hhcGVfdHJpYW5nbGUAmQQWcmF3c2hhcGVfcm91bmRUcmlhbmdsZQCYBBNyYXdzaGFwZV9jb252ZXhIdWxsAIIKGHJhd3NoYXBlX3JvdW5kQ29udmV4SHVsbAD7CRNyYXdzaGFwZV9jb252ZXhNZXNoAMMJGHJhd3NoYXBlX3JvdW5kQ29udmV4TWVzaAC/CRJyYXdzaGFwZV9jYXN0U2hhcGUAiwEYcmF3c2hhcGVfaW50ZXJzZWN0c1NoYXBlAIwCFXJhd3NoYXBlX2NvbnRhY3RTaGFwZQC0ARZyYXdzaGFwZV9jb250YWluc1BvaW50AIADFXJhd3NoYXBlX3Byb2plY3RQb2ludADeAhZyYXdzaGFwZV9pbnRlcnNlY3RzUmF5AMACEHJhd3NoYXBlX2Nhc3RSYXkAtQIccmF3c2hhcGVfY2FzdFJheUFuZEdldE5vcm1hbACAAhpfX3diZ19yYXdzaGFwZWNhc3RoaXRfZnJlZQC3CRhyYXdzaGFwZWNhc3RoaXRfd2l0bmVzczEA4AgXcmF3c2hhcGVjYXN0aGl0X25vcm1hbDEA4QgXcmF3c2hhcGVjYXN0aGl0X25vcm1hbDIA4ggiX193YmdfcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfZnJlZQC4CSZyYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF90aW1lX29mX2ltcGFjdACEDCByYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF93aXRuZXNzMQDjCCByYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF93aXRuZXNzMgDkCA9yYXdyb3RhdGlvbl9uZXcArgwUcmF3cm90YXRpb25faWRlbnRpdHkA2AwNcmF3cm90YXRpb25fdwCFDA5yYXd2ZWN0b3JfemVybwDlDA1yYXd2ZWN0b3JfbmV3AL0MD3Jhd3ZlY3Rvcl9zZXRfeQCjDA9yYXd2ZWN0b3Jfc2V0X3oApAwNcmF3dmVjdG9yX3h5egDhCQ1yYXd2ZWN0b3JfeXh6AOIJDXJhd3ZlY3Rvcl96eHkA4wkNcmF3dmVjdG9yX3h6eQDkCQ1yYXd2ZWN0b3JfeXp4AOUJDXJhd3ZlY3Rvcl96eXgA5gkWcmF3c2RwbWF0cml4M19lbGVtZW50cwDKByFfX3diZ19yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2ZyZWUA0AcacmF3ZGVidWdyZW5kZXJwaXBlbGluZV9uZXcA/AkfcmF3ZGVidWdyZW5kZXJwaXBlbGluZV92ZXJ0aWNlcwCBCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2NvbG9ycwCCCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX3JlbmRlcgCWAhhfX3diZ19yYXdldmVudHF1ZXVlX2ZyZWUAggcfX193YmdfcmF3Y29udGFjdGZvcmNlZXZlbnRfZnJlZQC5CR5yYXdjb250YWN0Zm9yY2VldmVudF9jb2xsaWRlcjIAhgwgcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2UA5QgqcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2VfbWFnbml0dWRlAIcMKHJhd2NvbnRhY3Rmb3JjZWV2ZW50X21heF9mb3JjZV9kaXJlY3Rpb24A5ggocmF3Y29udGFjdGZvcmNlZXZlbnRfbWF4X2ZvcmNlX21hZ25pdHVkZQCIDBFyYXdldmVudHF1ZXVlX25ldwDVCSJyYXdldmVudHF1ZXVlX2RyYWluQ29sbGlzaW9uRXZlbnRzAMsJJXJhd2V2ZW50cXVldWVfZHJhaW5Db250YWN0Rm9yY2VFdmVudHMAzAkTcmF3ZXZlbnRxdWV1ZV9jbGVhcgDkBx1fX3diZ19yYXdwaHlzaWNzcGlwZWxpbmVfZnJlZQDRBxZyYXdwaHlzaWNzcGlwZWxpbmVfbmV3ALEEJ3Jhd3BoeXNpY3NwaXBlbGluZV9zZXRfcHJvZmlsZXJfZW5hYmxlZACPDCZyYXdwaHlzaWNzcGlwZWxpbmVfaXNfcHJvZmlsZXJfZW5hYmxlZACJDB5yYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX3N0ZXAAkAstcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jb2xsaXNpb25fZGV0ZWN0aW9uAOUKJXJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfYnJvYWRfcGhhc2UA5gomcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19uYXJyb3dfcGhhc2UA5wogcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19zb2x2ZXIA6AorcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV9hc3NlbWJseQCRCy1yYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX3ZlbG9jaXR5X3Jlc29sdXRpb24A6QopcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV91cGRhdGUA6goscmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV93cml0ZWJhY2sAkgsdcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jY2QA6wotcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jY2RfdG9pX2NvbXB1dGF0aW9uAJMLKXJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfY2NkX2Jyb2FkX3BoYXNlAJQLKnJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfY2NkX25hcnJvd19waGFzZQCVCyRyYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX2NjZF9zb2x2ZXIAlgstcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19pc2xhbmRfY29uc3RydWN0aW9uAOwKJnJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfdXNlcl9jaGFuZ2VzAJcLF3Jhd3BoeXNpY3NwaXBlbGluZV9zdGVwAMkBIXJhd3BoeXNpY3NwaXBlbGluZV9zdGVwV2l0aEV2ZW50cwC4AR9fX3diZ19yYXdkZXNlcmlhbGl6ZWR3b3JsZF9mcmVlAPAHIHJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VHcmF2aXR5AJYILnJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VJbnRlZ3JhdGlvblBhcmFtZXRlcnMAsgQmcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUlzbGFuZE1hbmFnZXIAmwUjcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUJyb2FkUGhhc2UA5QckcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZU5hcnJvd1BoYXNlAJwFH3Jhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VCb2RpZXMA/wUicmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUNvbGxpZGVycwDeBSZyYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlSW1wdWxzZUpvaW50cwDmAyhyYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlTXVsdGlib2R5Sm9pbnRzAOcDJXJhd3NlcmlhbGl6YXRpb25waXBlbGluZV9zZXJpYWxpemVBbGwAwgEncmF3c2VyaWFsaXphdGlvbnBpcGVsaW5lX2Rlc2VyaWFsaXplQWxsAN0GHHJhd2NvbGxpZGVyc2V0X2lzSGFuZGxlVmFsaWQAgAkccmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVJZACvCyRyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlSWQArws1cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMAmQwPcmF3dmVjdG9yX3NldF94AJsMDnJlc2VydmVfbWVtb3J5ALsLInJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfdXAA1QgXcmF3c2hhcGVjb250YWN0X25vcm1hbDIA1QgWcmF3c2hhcGVjb250YWN0X3BvaW50MQDeCBZyYXdzaGFwZWNvbnRhY3RfcG9pbnQyAOMIGXJhd3JheWludGVyc2VjdGlvbl9ub3JtYWwA4wghcmF3cmF5Y29sbGlkZXJpbnRlcnNlY3Rpb25fbm9ybWFsAOMIF3Jhd3NoYXBlY29udGFjdF9ub3JtYWwxAOQIH3Jhd2NvbGxpZGVyc2hhcGVjYXN0aGl0X25vcm1hbDEA1QgfcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfbm9ybWFsMgDWCBhyYXdzaGFwZWNhc3RoaXRfd2l0bmVzczIA5QgxcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX251bUludGVybmFsUGdzSXRlcmF0aW9ucwD1CxhyYXdzaGFwZWNvbnRhY3RfZGlzdGFuY2UA7AsecmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVUeXBlAIMMKXJhd3JheWNvbGxpZGVyaW50ZXJzZWN0aW9uX2NvbGxpZGVySGFuZGxlAIEMIXJhd3JheWludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACEDCZyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlVHlwZQCDDCByYXdyYXljb2xsaWRlcmhpdF9jb2xsaWRlckhhbmRsZQDxCylyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACEDB5yYXdzaGFwZWNhc3RoaXRfdGltZV9vZl9pbXBhY3QA+AsmcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfY29sbGlkZXJIYW5kbGUA8QsecmF3cmF5Y29sbGlkZXJoaXRfdGltZU9mSW1wYWN0AIQMDXJhd3JvdGF0aW9uX3gA+AsNcmF3cm90YXRpb25feQDpCw1yYXdyb3RhdGlvbl96AIQMC3Jhd3ZlY3Rvcl94APgLC3Jhd3ZlY3Rvcl95AOkLC3Jhd3ZlY3Rvcl96AIQMHnJhd2NvbnRhY3Rmb3JjZWV2ZW50X2NvbGxpZGVyMQDxCyNyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfbGVuZ3RoVW5pdACHDBlfX3diZ19yYXdjb250YWN0cGFpcl9mcmVlALIJJV9fd2JnX3Jhd3JheWNvbGxpZGVyaW50ZXJzZWN0aW9uX2ZyZWUAtAkWX193YmdfcmF3cm90YXRpb25fZnJlZQCzCRRfX3diZ19yYXd2ZWN0b3JfZnJlZQC2CRhfX3diZ19yYXdzZHBtYXRyaXgzX2ZyZWUAtQkjX193YmdfcmF3c2VyaWFsaXphdGlvbnBpcGVsaW5lX2ZyZWUArgkQcmF3Y2Nkc29sdmVyX25ldwCvDRxyYXdzZXJpYWxpemF0aW9ucGlwZWxpbmVfbmV3AK8NE19fd2JpbmRnZW5fZXhwb3J0XzAAvg4fX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCTDxNfX3diaW5kZ2VuX2V4cG9ydF8xAJUOE19fd2JpbmRnZW5fZXhwb3J0XzIApA0J3BEBAEEBC/cIqw7qArsMrQ+FD5UPlA/VDdQNgQ2XD60MtwuhDaENuAW4BecMvQ+ICYgJ7QPuA4QGmA/6CbEFtgygCvkJrg3WBuwFwQWTB60OrQ6tDq0OgQvBCbQLowT5AqsEogrCBvMM8gqsCMAJogf+DL4Psg6/D7wPuw+xDq4PgA7pCOwI4AflBO0JuAKvBZ0LvQXIA+4G2AauDq4Org6uDrMKzAjeCoUE4QKKBNsM4Qz0DM8MgAvQBaEHsgi7D7AOwA2vDv8NiQ/tCI0Mlg+hCaEJrw+6D9gP1g/XD9wMqQT+BdgPV3ditQzdC90L1gmKDPYKmAt0UHpmQ6MBSyH1DNcN2A2jDdoN1g32DNkNww3eDIENlw+vDKENoQ24BbgFvQ/gB+UE7Qm4Aq8FnQu9BcgD7gbYBrgOuA64DrgOswrMCN4KhQThAooE9AyhB7sPsA68D7sPug6uD4EO7Qi1DrUOtQ61DrQO1QO3DrcOtw63DrwOqQO5DrkOuQ65DrsOkAOWA+YMrwiwCPoJsQW2DKAK+QmuDdYG7AXBBZMHtg62DrYOtg6BC8EJtAujBPkCqwTzDKIHvg+yDr8PvQ6CDuwIng5boQ5foA5Ynw6TAqIOWYgJiAntA+4DkAyZD8YNpgnFDcYNxA3PDcsNxQ3FDckNxw3IDcAFhQ6GDocOiA6JDuQLmA2KDJkLxAnNCbEL3wuLDPcKxQnOCcYJgwvdC9oO9QzmDeIN3Q3tDfQN8QfnDe8N6A3fDNsNmArhDbMP8Q33DN8Now3gDfYM7g31DesN3QflDeQN7A2lDeMNrQXzDekN5gfqDd4N+AzyDfAN3A2BDd4M3gz6CpcPsQydD5EMpw7qAdQO1A7UDtQO2w79A6UO2AGkDmzKDsoOyg7KDtwO6QOoDm3SDtIO0g7SDt0O/gOmDmrmDK8IsAj9Cf8DugyhCv4JsA3VBO4FnASWB80OzQ7NDs0OgQvBCbQLowT5AqsE8gquBL4Psg6/D7wPuw/lDq4PjQ6oBdkO2Q7ZDtkO3g7qA8cOxw7HDscO3w7dBcsOyw7LDssOvA6jDl7gB8cD7Qm4Aq8FnQuABMgDywTYBtgO2A7YDtgOswrOBd4K0wK8AuUCzwzCB7sPsA7iDosO2gLMDswOzA7MDrsOvw6/Dr8Ovw60Djwi9AffA9sJmwu5DIINpASaB9MEvwfADsAOwA7ADsgGkAWbB6cDqwLQA54N9g2SDZINkQPmC9EInwq9D+AOtA/DD+EOrg+rC6sImw2mAZkN6AOdDYgEnA2UApoN4AGDCvwDwAy8C4QKtw3SBOoFpQSRB9AO0A7QDtAOxwytAo8N6gSiA/0E4QazCIwMjAzYCa4DsAXFD+YO5w6ODooP8AjnCLgD1gvaBbYInAuMBJ0F9wKkBs8Ozw7PDs8OyAyeAYMN8ASjA4EF5waFA+AL4AuSCqoOrAf0CsoP8Q7LBssP8g6PDowPsQjYC7EN/grNDKENoQ24BbgFvQ+uCvgDhASWDocK2wrgBOYFzwT2BcUOxQ7FDsUOzAz5AYkN7QSmA4kF1wm7CrYLtguDA5EEqQaMDsQP4w61D+QO9w2xD+8IvgfcCd4DmgT5CvkKxATDBPAFiAmICe0D7gOqCvMDhQGNAZAKlQLeBOcFzQSpB9UO1Q7VDtUOuQGOAYoN9gSgA/8Esg3cCvwM1wKdAugOtQapDsYP6Q7eBt8G6g7PCKoMsA+sCvUDlAGpAZEK7QHcBOEFzASqB8gOyA7IDsgOmwGCAYUN9wShA/wE7QbFBf0MkgTdA58PqwfHD+sO7A7zCOgHwg/VC6AE2QyrCf8J0wHUBO0F2wOoB9MO0w7TDtMO2wG2AYcN+ASaA4cF7QbFBb4Lvgv8Cp8PqwfRDcgP7Q7uDosP8wi2BsIPnAG4BPsBmA6LCsAP3wTpBboEwQ/XDtcO1w7XDsYMmQGRDekEnAOFBbMN3Qq9C70LngfvDrQGyQ/wDs4IjwSLBL8ClAXWAacF5AKPBYMGlwXaDPwCvAOCA6cHww7DDsMOww7BDLECjA3uBJsDggXiDLQN0QzRDJ8HoA/pB6QJzA/zDrYP9A6QDocEhAuEC/sE+wSoA6gK9wP7ApcOjAq7DdcE4gW/BIwH1g7WDtYO1g7DDJACiA3rBJgD/gS8CtIM0gygB6EP0gjND/UOnw32DpEOhgTICccJngSeBKYE3gfcA9EJ+ArgDLYNoQS1B8IE1wfRDtEO0Q7RDoUKwQfxCrAE8wLzBJIO9w7TDNMM8wmTDugIzw/4Ds4Pig6pCvIDhAGHAY8KuQ3hBOUFzgSLB8QOxA7EDsQOyQy+AYQN7ASfA4QF7QbFBeEL4QvRCrMGqweiD9AP+Q7BDbwPvQ+uD64PsQ/zCKsK9AMmmg6ICr8N3QToBbsEigfBDsEOwQ7BDsoM3gGQDfEEmQODBbIHtwXzCvMK3weSB64H0g/8DqMP/Q75DZQErQrxAyecDooKvg3Y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IH04AgAgEUE0aiB8OAIAIBFBMGogIzYCACARQRxqIC02AgAgEUEYaiAJNgIAIBFBFGogDzYCACARQRBqIDQ2AgAgEUEIaiBFNgIAIBFBBGogMzYCACARQcQAaiACKQO4EjcCACARQcwAaiAYKQMANwIAIBFB1ABqIBcpAwA3AgAgEUHcAGogEDYCACARQfgAaiAUNgIAIBFB/ABqIIEBOAIAIBFBgAFqIAs2AgAgEUGEAWogdTcCACARQYwBaiAeNgIAIBFBkAFqIHY3AgAgEUGYAWogLjYCACARQZwBaiByNwIAIBFBpAFqIDA2AgAgEUGoAWogbTcCACARQbABaiAsNgIAIBFBtAFqIHc3AgAgEUG8AWogNjYCACARQcABaiBuNwIAIBFByAFqIIkBOAIAIBFBzAFqIA42AgAgEUHQAWogbzcCACARQdgBaiAkNgIAIBFB3AFqIGs3AgAgEUHoAWogQTYCACARQewBaiCKATgCACARQfABaiCLATgCACARQfQBaiCFATgCACARQfgBaiCGATgCACARQfwBaiCHATgCACARQYACaiA3NgIAIBFBhAJqIHA3AgAgEUGMAmogOTYCACARQZACaiBqNwIAIBFBmAJqIB02AgAgEUHkAWogMjoAACARQeAAaiACKQOgEjcCACARQegAaiACKQOoEjcCACARQfAAaiAMKQMANwIAIBFBxAJqIBo2AgAgEUHIAmogMTYCACARQcwCaiA1NgIAIBFB0AJqIB82AgAgEUHUAmogLzYCACARQdgCaiB+OAIAIBFB3AJqIH84AgAgEUHgAmoggAE4AgAgEUHkAmogPzoAACARQbwCaiAEKQMANwIAIBFBtAJqIAgpAwA3AgAgEUGsAmogGykDADcCACARQaQCaiAWKQMANwIAIBFBnAJqIAIpA/gRNwIAIBFB9AJqICs6AAAgEUH1AmogQDoAACARQfYCaiAHOgAAIBFB8AJqIDg2AgAgEUHsAmogEjYCACARQegCaiBGNgIAIBFB5wJqIAEtAAA6AAAgEUHlAmogAi8B9BE7AAAgAiANQQFqIg02AvARIBVBgANqIRUgCiANRw0ACyACKALoESIKQYKAgIB4Tg0TIAYhAwwXC0EEIARBuKvBABDTDQALQQQgHkG4q8EAENMNAAtBBCAKQbirwQAQ0w0AC0EQIARBuKvBABDTDQALIAJCgcoANwOYCiACQZgKahCiDSEDDA0LIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwMCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMCwsgAkEAOgCbCiACQSU7AJkKIAJBADYCnAogAkEBOgCYCiACQZgKahCiDSEDDAoLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwJCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMCAsgAkEAOgCbCiACQSU7AJkKIAJBADYCnAogAkEBOgCYCiACQZgKahCiDSEDDAcLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwGCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMBQsgHSEDDAQLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hEgwBC0EEQeTVwQBBhKvBABC+CiEBIABBAjYCxAcgACABNgIADA4LIBoEQCAaQTBBBBCIDwsgEiEDDAELIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwsgAigC7BEhBCANBEAgBCEBA0ACQCABKAIARQ0AIAFBxAJqKAIAIgYEQCAGQTBBBBCIDwsgAUHoAmooAgAiBkUNACABQewCaigCACAGQQN0QQQQiA8LIAFBgANqIQEgDUEBayINDQALCyACKALoESIBRQ0EIAQgAUGAA2xBEBCIDwwECwJAAkACQAJAIBMoAgQiBEEETwRAIBMgBEEEayIDNgIEIBMgEygCACIIQQRqNgIAIANFBEAgAkKBygA3A5gKIAJBmApqEKINIQMMBAsgCDUAACFoIBMgBEEFayIVNgIEIBMgCEEFaiIaNgIAAkACQCAILQAEIgEOAgQAAQsgA0EESw0CIAJCgcoANwOYCiACQZgKahCiDSEDDAQLQQxBBBCzDiIDRQ0aIAMgATYCBCADQYSAgIB4NgIADAMLIAJCgcoANwOYCiACQZgKahCiDSEDDAILIBMgBEEJ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GGogBSkDADcCACAUQRBqIAIpAwA3AgAgFEEIaiAAKQMANwIAIBRBMGogFigCADYCACAMIA9BAWoiADYC3AIgACAERgRAIBpBgPHBABCbCCAMKALUAiEEIAwoAtgCIQMLIAMgAEE0bGoiAiAMKQOQBDcCACACQShqIAxBkARqIgBBKGopAwA3AgAgAkEgaiAAQSBqKQMANwIAIAJBGGogAEEYaikDADcCACACQRBqIABBEGopAwA3AgAgAkEIaiAAQQhqKQMANwIAIAJBMGogAEEwaigCADYCACAMIA9BAmoiADYC3AIgACAERgRAIBpBkPHBABCbCCAMKALUAiEEIAwoAtgCIQMLIAMgAEE0bGoiAiAMKQPIBDcCACACQShqIAxByARqIgBBKGopAwA3AgAgAkEgaiAAQSBqKQMANwIAIAJBGGogAEEYaikDADcCACACQRBqIABBEGopAwA3AgAgAkEIaiAAQQhqKQMANwIAIAJBMGogAEEwaigCADYCACAMIA9BA2oiADYC3AIgACAERgRAIBpBoPHBABCbCCAMKALYAiEDCyADIABBNGxqIgIgDCkDgAU3AgAgAkEoaiAMQYAFaiIAQShqKQMANwIAIAJBIGogAEEgaikDADcCACACQRhqIABBGGopAwA3AgAgAkEQaiAAQRBqKQMANwIAIAJBCGogAEEIaikDADcCACACQTBqIABBMGooAgA2AgAgDCAPQQRqIgA2AtwCAkAgF0EBcUUNAAJAIAAEQCAMKALQAkUNASADKgIYIAwoAswCIgAqAgCUIANBHGoqAgAgAEEEaioCAJSSIANBIGoqAgAgAEEIaioCAJSSIgpDAACgtV0NByAKjCEKIAwoAvQCIgUgDCgC7AJGBEAgGUG03sEAELgICyAFQQN0IgIgDCgC8AJqIgAgCjgCBEEAIQMgAEEANgIAIAwgBUEBajYC9AIgDCgC8AIiDSACaiIAKgIEIQogACgCACEEAkAgBUUNAANAIAogDSAFQQFrIgJBAXYiA0EDdGoiAEEEaioCAF5FBEAgBSEDDAILIA0gBUEDdGogACkCADcCACADIQUgAkEBSw0ACwsgDSADQQN0aiIAIAo4AgQgACAENgIADAILQQBBAEGw8cEAEIgLAAtBAEEAQcDxwQAQiAsACwJAIBhBAXFFDQACQCAMKALcAiIAQQJP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AAsLQgEhMyAOQQFxRQRAIAUgCCAkIAMqAgCUICUgA0EEaioCAJSSICIgA0EIaioCAJSSICNeIgMbIQggAyAKciEKCyAKQQFxRQ0HICWMISUCQCAJQQxJBEBBACEKQ///f/8hIyAQIQNBACEFDAELIAZB/v///wNxIQlBACEKQ///f/8hIyAQIQNBACEFA0AgA0EEaioCACAllCAkIAMqAgCUkyAiIANBCGoqAgCUkyImICNeIQsgA0EQaioCACAllCAkIANBDGoqAgCUkyAiIANBFGoqAgCUkyInICYgIyALGyIjXiEMICcgIyAMGyEjIAVBAWogBSANIAsbIAwbIQ0gCyAMciAKciEKIANBGGohAyAJIAVBAmoiBUcNAAsLIA5BAXFFBEAgBSANIANBBGoqAgAgJZQgJCADKgIAlJMgIiADQQhqKgIAlJMgI14iAxshDSADIApyIQoLIApBAXFFDQcgAiAITQ0FIAIgDU0iDkUEQCAQIA1BDGxqIgMqAgAiKCAQIAhBDGxqIgwqAgAiKpMiIiAilCADKgIEIisgDCoCBCIskyIiICKUkiADKgIIIikgDCoCCCItkyIiICKUkpEhJEF/IQlBACELIBAhA0MAAAAAIScDQCADIQUgByEDICogBSoCACIjkyIiICKUICwgBSoCBCIlkyIiICKUkiAtIAUqAggiJpMiIiAilJKRISICQAJAAkAgIyAokyIjICOUICUgK5MiIyAjlJIgJiApkyIjICOUkpEiJiAkXUUEQCAiICRdRQ0BICYhJSAkISMMAwsgIiAkXQ0BICIhJSAkISMgJiEiDAILICYgIiAiICZdIgUbISUgIiAmIAUbISMgJCEiDAELICYgIiAiICZdIgUbISMgIiAmIAUbISIgJCElC0MAAAAAQwAAAAAgJSAjICKTkiAiICUgI5MiJpIgIiAmkyAlICMgIpKSlJSUIiIgIkMAAAAAXRsgIiAiXBuRQwAAgD6UIiIgJ14hBSAiICcgBRshJyALIAkgBRshCSADQQxBACADIA9HG2ohByAGIAtBAWoiC0cNAAsMBwsgDSACQajuwwAQiAsACyAAQoCAgIAoNwIADBALIAMgFkHY1cIAENMNAAtBBEEMQZDExAAoAgAiAEHMCCAAGxEAAAALIAcgAkHAwMMAEIgLAAsgBiACQcDAwwAQiAsACyAI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QwAAAABDAAAAACCMASCMAUMAAAAAXRsgjAEgjAFcGyAVKAJQIBUoAlQiHigCCEEBa0F4cWpBCGoiECAeKAKoARELACBGKAJQIEYoAlQiGCgCCEEBa0F4cWpBCGoiFCAYKAKoARELAJKSIJUBII4BII0BIKkBlJKUXg0AIB9B+AJqEKUMAkAgOi0APEUEQCAfQfAFaiAjEPsKDAELIEcgOykCADcCACAuICcpAgA3AgAgPyBAKQIANwIAIB9B8AVqIg5BGGogKEEYaigCADYCACAOQRBqIChBEGopAgA3AwAgDkEIaiAoQQhqKQIANwMAIEdBCGogO0EIaigCADYCACAuQQhqICdBCGooAgA2AgAgP0EIaiBAQQhqKAIANgIAIB8gKCkCADcD8AULIB9BuANqIiZBOGogH0HwBWoiDkE4aikDADcDACAmQTBqIA5BMGopAwA3AwAgJkEoaiAuKQMANwMAICZBIGogDkEgaikDADcDACAmQRhqIA5BGGopAwA3AwAgJkEQaiAOQRBqKQMANwMAICZBCGogDkEIaikDADcDACAfIB8pA/AFNwO4AyAfQfgCaiEOAkAgAUUNACABLQAsRQRAIB9BsAZqIg4gAUHMAGoQ+woMAQsgMyABKQKYAjcCACA4IAEpAogBNwIAICEgASkClAE3AgAgH0GwBmoiDkEYaiABQcgAaigCADYCACAOQRBqIAFBQGspAgA3AwAgDkEIaiABQThqKQIANwMAIDNBCGogAUGgAmooAgA2AgAgOEEIaiABQZABaigCADYCACAhQQhqIAFBnAFqKAIANgIAIB8gASkCMDcDsAYLIB9B+ANqIjRBOGogDkE4aikCADcDACA0QTBqIA5BMGopAgA3AwAgNEEoaiAOQShqKQIANwMAIDRBIGogDkEgaikCADcDACA0QRhqIA5BGGopAgA3AwAgNEEQaiAOQRBqKQIANwMAIDRBCGogDkEIaikCADcDACAfIA4pAgA3A/gDIB9B+ARqIiZBGGogFUEsQYQBICAbaiIBQRhqKAIANgIAICZBEGogAUEQaikCADcDACAmQQhqIAFBCGopAgA3AwAgHyABKQIANwP4BCAfQbgEaiIBIB9BuANqICYQzAIgH0G4BWoiIEEYaiBGQSxBhAEgGRtqIg5BGGooAgA2AgAgIEEQaiAOQRBqKQIANwMAICBBCGogDkEIaikCADcDACAfIA4pAgA3A7gFICYgNCAgEMwCICAgIiABIBAgHiAmIBQgGEMAAAAAIJUBQQAgEhEsACAfLQDsBUEGcUEERg0AIJUBIJUBIB8qArgFIowBIIwBIJUBXhsgjAEgjAFcGyGVAQsgH0GwBmogH0HMAWogFxCSAyAfKAK0BiEOIB8oArAGIQEgHygCuAYNAgwFC0GwvMIAQShB2LzCABDWDAALIB9BsAZqIB9BzAFqIBcQkgMgHygCtAYhDiAfKAKwBiEBIB8oArgGDQALDAILQYS4wgBBLEGwuMIAENcLAAtBsInCAEETQfS3wgAQ1wsACyAfKALQAiIBQSFJDQAgHygC1AEgAUECdEEEEIgPDAALAAtBsInCAEETQeS3wgAQ1wsACyACIAIgL0dBA3RqIQEgLyACIg5HDQALIB8oAmQiAUUNACAfKAJgIAFBA3RrQQhrIAFBCWxBEWpBCBCIDwsgGyCVATgCBCAbIJUBILEBXTYCACAfQfAGaiQADAILIAItADxBAUcNACASQcQAaioCACGsASASQUBrKgIAIaYBIBJBPGoqAgAhqAEgEkE4aioCACGqASASQTRqKgIAIacBIBJBMGoqAgAhqwEgEkEsaioCACGtASACKgKMASGZASACKgLoASGWASACKgKQASGSASACKgLsASGeASACKgL0ASGTASACKgKUASGUASACKgLEASGkASACKgL8ASGRASACKgK8ASGyASACKgLwASGiASACKgLAASGaASACKgL4ASGdASACKgKAASGQASACKgKMAiGPASACKgKwASGOASACKgKEASGNASACKgKQAiGMASACKgK0ASGVASAfILEBIAIqArgBIAIqApQClJQgAioCiAGSOALUASAfII0BILEBIJUBIIwBlJSSOALQASAfIJABILEBII4BII8BlJSSOALMASAfIJQBILEBIKIBILIBlCCdASCaAZSSIJEBIKQBlJKUkjgC4AEgHyCSASCxASCeASCyAZQgkwEgmgGUkiCdASCkAZSSlJI4AtwBIB8gmQEgsQEglgEgsgGUIJ4BIJoBlJIgogEgpAGUkpSSOALYASAfQRxqIB9BzAFqIhMgsQEgAkFAayACQagCahCcAiAfIKoBIB8qAigijgGUIK0BIB8qAhwikQGUkyCrASAfKgIgIpAB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AnQiDiADKAIcaigCACECIA8oAiwhASAXQQhqIA9BxAD8CgAAIBBBADYCxAIgEEEANgKMAiAQQQA2AoACIBcgFyoCCCABIAJqInmzlSKdATgCCCADKAIUIgEgR00NAQJAIEdBAWoiAiABSQRAIAMoAhAiASACQQJ0aiJxKAIAIicgASAOaiJyKAIAIiZJDQQgAygCCCJjICdPDQEgJyBjQaiMwgAQjw8ACyACIAFBmIzCABCICwALIAYoAowDIVIgBigCiAMhUyAPKgIAIcQBIAMoAgQhayAnICZrIhghDyAQQfgBaiIOIkMoAggiAiAYSQR/IBggAiIBayEeIB4gQygCACABa0sEQCBDIAEgHkEEQRgQ9gYgQygCCCEBCyAOKAIEIhkgAUEYbGohIyAeQQJPBEAgDyACQX9zakEYbCISBEAgI0EAIBL8CwALIBkgAkFobGogASAPakEYbGpBGGshIyABIB5qQQFrIQELICNCADcCACAjQRBqQgA3AgAgI0EIakIANwIAIAFBAWoFIBgLIQEgQyABNgIIIA4gDigCFCICIA9JBH8gDyACIgFrIRkgGSAOKAIMIAFrSwRAIA5BDGogASAZQQRBwAAQ9gYgDigCFCEBCyAOKAIQIAFBBnRqIRIgGUECTwRAIA8gAkF/c2oiD0EDcSECIBlBAmtBA08EQCAPQXxxISMDQCASQgA3AgAgEkEQakIANwIAIBJBCGpCgICAgICAgMA/NwIAIBJBGGpCADcCACASQSBqQgA3AgAgEkEoakIANwIAIBJBMGpCADcCACASQThqQgA3AgAgEkHQAGpCADcCACASQcgAakKAgICAgICAwD83AgAgEkFAa0IANwIAIBJB2ABqQgA3AgAgEkHgAGpCADcCACASQegAakIANwIAIBJB8ABqQgA3AgAgEkH4AGpCADcCACASQYgBakKAgICAgICAwD83AgAgEkGAAWpCADcCACASQbgBakIANwIAIBJBsAFqQgA3AgAgEkGoAWpCADcCACASQaABakIANwIAIBJBmAFqQgA3AgAgEkGQAWpCADcCACASQcABakIANwIAIBJByAFqQoCAgICAgIDAPzcCACASQdABakIANwIAIBJB2AFqQgA3AgAgEkHgAWpCADcCACASQegBakIANwIAIBJB8AFqQgA3AgAgEkH4AWpCADcCACAS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aiItKAIAQYCAgIB4Rg0DIC0oAqACICIoAghHDQMgIigCECIQIC0oAghPDQQgGigC5AEhGCAgIQIgLSgCBCAQQfADbGoQnQciHgRAIBggD0HgA2xqIiMgIkEEaiIQKQIANwIAICNBCGogEEEIaikCADcCACAjQQM2AswDICMgAjYCFCAjIBI2AhAgHiAtKAKUAmxBAXQgEmoiEiAaKAKUAUsEQCBBIBIQzQILIB4gIGohIAsgDyACICBHaiEPCyAOQQhqIQ4gAUEIayIBDQALDAMLDAMLQbCJwgBBE0HYqcIAENcLAAtB6KnCABCRDwALIBooAtABIgEgIEkEQCAgIAEiAmsiESAaKALIASABa0sEQCAaQcgBaiABIBFBBEHIABD2BiAaKALQASECCyAaKALMASACQcgAbGohDiARQQJPBEAgICABQX9zaiIQQQFxIQ8gASAgQQJrRwRAIBBBfnEhAQNAIA5CADcCACAOQQhqQn83AgAgDkEQakJ/NwIAIA5BGGpCfzcCACAOQSBqQX82AgAgDkHIAGpCADcCACAOQcQAakEAOwEAIA5BPGpC////+/f//7//ADcCACAOQTRqQv////v3//+//wA3AgAgDkEsakL////79///v/8ANwIAIA5BJGpCgICAgPD//79/NwIAIA5B0ABqQn83AgAgDkHYAGpCfzcCACAOQeAAakJ/NwIAIA5B6ABqQX82AgAgDkGEAWpC////+/f//7//ADcCACAOQfwAakL////79///v/8ANwIAIA5B9ABqQv////v3//+//wA3AgAgDkHsAGpCgICAgPD//79/NwIAIA5BjAFqQQA7AQAgDkGQAWohDiABQQJrIgENAAsLIA8EQCAOQn83AgggDkIANwIAIA5BADsBRCAOQv////v3//+//wA3AjwgDkL////79///v/8ANwI0IA5C////+/f//7//ADcCLCAOQoCAgIDw//+/fzcCJCAOQRBqQn83AgAgDkEYakJ/NwIAIA5BIGpBfzYCACAOQcgAaiEOCyACIBFqQQFrIQILIA5CfzcCCCAOQgA3AgAgDkEAOwFEIA5C////+/f//7//ADcCPCAOQv////v3//+//wA3AjQgDkL////79///v/8ANwIsIA5CgICAgPD//79/NwIkIA5BEGpCfzcCACAOQRhqQn83AgAgDkEgakF/NgIAIAJBAWohIAsgGiAgNgLQASAAKAJwIgJBgJTr3ANHBEAgACkDaCHIASAXQZgEaiIBENAKIBdBgAFqIAEgyAEgAhD2CSAAKQN4IsgBIBcpA4ABfCLJASDIAVQNBiAAKAKAASAXKAKIAWoiAUGAlOvcA08EQCDJAUJ/UQ0HIMkBQgF8IckBIAFBgJTr3ANrIQELIAAgATYCgAEgACDJATcDeAsgAEGAlOvcAzYCcCAXQYABahDQCiAXKQOAASHIASAAIBcoAogBIg42AlAgACDIATcDSAJAAkACQCB5RQ0AIBooApgCIgEgGigCgAIiAiABIAJJGyEiIBooApQCIYIBIBooAvwBITMgGigCqAIieiAaKAK4AiIBRgRAIBpBnAJqIWIgFyoCFEPbD8lAlCKMASAXKgIIIrABIIwBlCAXKgIQIo4BII4BkpKVIbwBQwAAAABDAACAP0MAAIA/ILABILwBlCKMAZVDAACAv5IijQEgjQGUII4BII4BII0BQwAAgD+SQwAAgECUlJSVQwAAgD+SlSCMAUMAAAAAWxshvgFDAAAAAEMAAIA/ILABlSCwAUMAAAAAWxshuQEgFyoCLCKNAUP//39/XCEBII0BIBcqAiQijAGMlEP//3//IAEbIb0BIIwBII0BlEP//39/IAEbIrIBjCG/ASAaKAKMAiJeIAIgAiBeSxshLCAaKAJgIg8gGigChAEiASABIA9LGyGDASAaKAJUIg4gGigCeCIBIAEgDksbITUgGigCSCICIBooAmwiASABIAJLGyE2ILABQwAAAD+UIcABIIwBIBcqAiiUIcEBIHlBAWshTSAaKALAAiInIBooAsQCImxBBHRqIW0gGigC2AEiIyAaKALcASJ7QYgBbGohXSAaKALMASItIBooAtABImdByABsaiFfIBooAlwiEiAPQcAEbGohfCAaKAJQIh4gDkGsB2xqIX0gGigCRCIZIAJBuAdsaiFoIBooAoABISogGigCdCExIBooAmghKyAaKALwASFuIBdBmAFqIWAgF0GwBGohYSAaKALkASEfIBooAogCISEgCSgCTCFpIAkoAkghaiAaKAKwAiFzIBooAqACIXQgFygCPCFkIBcoAjghZiAXKgIgIbcBIBJB/ABqISYgGigC9AEiOkHQAmwhFSAaKALoASJGQeADbCFPIBooArQC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osIAEJEPAAtBsInCAEETQciiwgAQ1wsACyABIHtByKrCABCODwALIAEgZ0GoqcIAEI4PAAtBmKnCABCRDwALQbCJwgBBE0GIqcIAENcLAAtB+KjCABCRDwALQbCJwgBBE0HoqMIAENcLAAsgECBnQZiqwgAQjg8AC0GIqsIAEJEPAAtBsInCAEETQfipwgAQ1wsACyAiBEBBACECA0AgAiCCAWoiA0EIaioCACGxASADQQRqKgIAIZUBIAIgM2oiBCADKgIAIAQqAgCSOAIAIARBBGoiACCVASAAKgIAkjgCACAEQQhqIgAgsQEgACoCAJI4AgAgA0EUaioCACGxASADQRBqKgIAIZUBIARBDGoiACADQQxqKgIAIAAqAgCSOAIAIARBEGoiACCVASAAKgIAkjgCACAEQRRqIgAgsQEgACoCAJI4AgAgAkEYaiECICJBAWsiIg0ACwsgF0EBNgKcBCAXIAE2ApgEIBdBATYCVCAXIHo2AlAgF0IANwKMASAXQoGAgIDAADcChAEgF0GE/8EANgKAASAXQdAAaiAXQZgEaiAXQYABakGM/8EAEPkMAAsgACkDSCHIASAXQZgEaiIBENAKIBdBgAFqIAEgyAEgDhD2CSAAKQNYIsgBIBcpA4ABfCLJASDIAVQNASAAKAJgIBcoAogBaiIBQYCU69wDTwRAIMkBQn9RDQIgyQFCAXwhyQEgAUGAlOvcA2shAQsgACABNgJgIAAgyQE3A1gLIABBgJTr3AM2AlAgF0GAAWoQ0AogFykDgAEhyQEgACAXKAKIASItNgKwASAAIMkBNwOoASAaKALYASICIBooAtwBQYgBbGohDyAaKALMASIOIBooAtABQcgAbGohAQNAAkAgDkUNACABIA5GDQAjAEEgayIRJAACQCAOKAIgIhBBf0YNAAJAAkACQAJAAkACQCAQID9JBEAgMiAQQYADbGohECAOKAIEIRIgDigCAEEBaw4CAgMBCyAQID9B6KfCABCICwALIBJBBk8NAyAQIBJBAnRqQdACaiAOKgIkOAIADAULIBJBBkkNASASQQZBiKjCABCICwALIBJBBkkNAiASQQZBmKjCABCICwALIBAgEkEMbGpBGGogDioCJDgCAAwCCyARQQA2AhggEUEBNgIMIBFBzP7BADYCCCARQgQ3AhAgEUEIakH4p8IAELgNAAsgECASQRxsakGkAWogDioCJDgCAAsgEUEgaiQAIA5ByABqIQ4MAQsgAiAPRwRAIwBBIGsiECQAAkACQAJAAkACQAJAAkAgAigCECIOID9JBEAgMiAOQYADbGohDiACKAIEIREgAigCAEEBaw4CAgMBCyAOID9B+KzCABCICwALIBFBBk8NAiAOIBFBAnRqQdACaiACKgIUOAIADAULIBFBBkkNAyARQQZBmK3CABCICwALIBFBBkkNASARQQZBqK3CABCICwALIBBBADYCGCAQQQE2AgwgEEHM/sEANgIIIBBCBDcCECAQQQhqQYitwgAQuA0ACyAOIBFBHGxqQaQBaiACKgIUOAIADAELIA4gEUEMbGpBGGogAioCFDgCAAsgEEEgaiQAIAJBiAFqIQJBACEODAELCyAaKAJcIgIgGigCYEHABGxqIRIgGigCUCIRIBooAlRBrAdsaiEQIBooAkQiHCAaKAJIQbgHbGohGANAIBAgEUchAUEBIQ4CQANAAkAgDkEBcQRAAkAgHEUNACAYIBxGDQAgHCBAIDsQ0gMgHEG4B2ohDgNAIA4gGEYNASAOIEAgOxDSAyAOQbgHaiEODAALAAtBACEcIAENAQsgAiASRg0CAkAgAi0AuAQiGUUNAAJAIAIoArQEIg5Bf0YEQCAZQQVrQXxPDQIMAQsCQCAOIDtJBEAgAi0AuQQiDyBAIA5BAnRqKAIAIh4oAoQBIiBPDQEgAioCkAQhjQEgAikC2AMhyAEgHigCgAEgD0EGdGoiDiACKgJ4IowBOAI4IA4gjAEgAioCfJI4AjQgDiCNATgCPCAOIMgBNwIsIBlBAUYNAyACLQC6BCIPIB4oAoQBIiBPDQEgHigCgAEgD0EGdGoiDiACKgLEASKMATgCOCAOIIwBIAIqAsgBkjgCNCAOII0BOAI8IA4gyAE3AiwgGUECRg0DIAItALsEIg8gHigChAEiIE8NASAeKAKAASAPQQZ0aiIOIAIqApACIowBOAI4IA4gjAEgAioClAKSOAI0IA4gjQE4AjwgDiDIATcCLCAZQQNGDQMgAi0AvAQiDyAeKAKEASIgTw0BIB4oAoABIA9BBnRqIg4gAioC3AIijAE4AjggDiCMASACKgLgApI4AjQgDiCNATgCPCAOIMgBNwIsIBlBBEcNAgwDCyAOIDtByKXCABCICwALIA8gIEHYpcIAEIgLAAtBBEEEQbilwgAQiAsACyACQcAEaiECQQAhDgwBCwsCQCARLQCkByIORQ0AAkAgESgCoAciAUF/RgRAIA5BBWtBfE8NAgwBCwJAIAEgO0kEQCARLQClByIPIEAgAUECdGooAgAiGSgChAEiIE8NASAZKAKAASAPQQZ0aiIBIBEqAngijAE4AjggASCMASARKgJ8kjgCNCABIBEpAtgDNwIsIAEgESoC2AMgESkC4AMiyAGnvpK8rSARKgLcAyDIAUIgiKe+krytQiCGhDcCJCAOQQFGDQMgES0ApgciDyAZKAKEASIgTw0BIBkoAoABIA9BBnRqIgEgESoCxAEijAE4AjggASCMASARKgLIAZI4AjQgASARKQLkBDcCLCABIBEqAuQEIBEpAuwEIsgBp76SvK0gESoC6AQgyAFCIIinvpK8rUIghoQ3AiQgDkECRg0DIBEtAKcHIg8gGSgChAEiIE8NASAZKAKAASAPQQZ0aiIBIBEqApACIowBOAI4IAEgjAEgESoClAKSOAI0IAEgESkC8AU3AiwgASARKgLwBSARKQL4BSLIAae+krytIBEqAvQFIMgBQiCIp76SvK1CIIaENwIkIA5BA0YNAyARLQCoByIPIBkoAoQBIiBPDQEgGSgCgAEgD0EGdGoiASARKgLcAiKMATgCOCABIIwBIBEqAuACkjgCNCABIBEpAvwGNwIsIAEgESoC/AYgESkChAciyAGnvpK8rSARKgKAByDIAUIgiKe+krytQiCGhDcCJCAOQQRHDQIMAwsgASA7QdihwgAQiAsACyAPICBB6KHCABCICwALQQRBBEHIocIAEIgLAAsgEUGsB2ohEQwBCwsgcigCACIBIHEoAgAiAk0EQCACIGNNBEAgASACRwRAIGsgAkEDdGohI0MAAAAAQwAAgD8gxAGVIMQBQwAAAABbGyGdASBrIAFBA3RqIRwgGigC/AEhICAaKAKIAiEeIBooAowCITAgGigCgAIhJyAaKAKgAiExIBooAqgCIRkgCSgCSCEYIAkoAkwhEiAaKALEAiERA0AgHCgCBCEBIBwoAgAhDgJAAkACQAJAAkACQAJAAkACQCARRQ0AIA4gWU8NACABIFogDkEUbGoiAigCAEcNACACKAIEIgEgEk8NASAYIAFBpAJsaiIPKAIAQYCAgIB4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HCAVQTBqIMkBNwMAIBVCidm54o7TvpcINwM4IBUgyAE3AyggBygCECJRQbABbCEQIAEqAhxDCtcjPJQhjQEgBigCiAMhEyAGKAKMAyESIAcoAgwhTwNAAkACQAJAAkAgDiAQRwRAIA4gT2oiESgCAEUNAyARQfIAai0AAA0DIBFBIGooAgBFDQMCQCARQSRqKAIAIgEgEk8NACATIAFBgANsaiIBKAIAQQFHDQAgASgCBCARQShqKAIARg0CC0GwicIAQRNBoLzCABDXCwALIBUgBzYCmAEgFSAGNgKUASAVIAQ2ApABIBVCADcCfCAVQQA2AnAgFUEANgJkIBVBADYCWCAVIAUoAkAiJDYCjAEgFSAFKAI8ICQoAghBAWtBeHFqQQhqIjk2AogBIJUBIYwBIAMoAggiAkUNASADKAIEIgEgAkEDdGohRyABQQhqIQ4gFUGIAmohJSAFKAIUIScgBSgCECEXIAUoAgQhJiAFKAIIIRogBSgCOCEsIAUoAjQhKiAVQegDaiEcIAYoAogDITQgBigCjAMhLyAkQSBqISIDQAJAIAEoAgAiAiAvTw0AIDQgAkGAA2xqIgIoAgBBAUcNACACKAIEIAEoAgRHDQAgDiEYAkAgAi0APEUNACACKgKkASGdASACKgLoASGbASACKgKoASGZASACKgLsASGaASACKgL0ASGWASACKgKsASGSASACKgLEASGoASACKgL8ASGTASACKgK8ASGkASACKgLwASGeASACKgLAASGyASACKgL4ASGiASACKgKYASGUASACKgKMAiGRASACKgKwASGQASACKgKcASGPASACKgKQAiGOASACKgK0ASGNASAVIJUBIAIqArgBIAIqApQClJQgAioCoAGSOALIAiAVII8BIJUBII0BII4BlJSSOALEAiAVIJQBIJUBIJABIJEBlJSSOALAAiAVIJIBIJUBIJ4BIKQBlCCiASCyAZSSIJMBIKgBlJKUkjgC1AIgFSCZASCVASCaASCkAZQglgEgsgGUkiCiASCoAZSSlJI4AtACIBUgnQEglQEgmwEgpAGUIJoBILIBlJIgngEgqAGUkpSSOALMAiAVQZwBaiAVQcACaiCVASACQUBrIAJBqAJqEJwCIAIoAvACIgFFDQAgAigC7AIiEyABQQN0aiErIBNBCGohDiAVKgK0ASGQASAV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AAAgKCgABCEmICggATYABCAoKAAMIQ4gKCAUNgAMICgoABQhESAoIBA2ABQgKCgAHCEiICggEjYAHCAoQQhqIiooAAAhHiAqIAI2AAAgKEEQaiISKAAAIQ8gEiATNgAAIChBGGoiEyoAACGNASATIIwBOAAAIChBIGoiAigAACEQIAIgGDYAACAoKAAkIRQgKCAgNgAkIChBKGoiASgAACEYIAEgIzYAACAoKAAsISAgKCAtNgAsIBVBwAJqIiNBKGoiJyABKQIANwMAICNBIGoiKyACKQIANwMAICNBGGoiMCATKQIANwMAICNBEGoiISASKQIANwMAICNBCGoiOCAqKQIANwMAIBUgKCkCADcDwAJBACETQQEhAiAyQQRPBEAgGUECayIBQQAgASAZTRshI0EAIQEDQCAoIAFBMGxqIhIgKCACICggAkEwbGoiAUEYaioCACABQcgAaioCAF1FaiITQTBsaiIBKQIANwIAIBJBKGogAUEoaikCADcCACASQSBqIAFBIGopAgA3AgAgEkEYaiABQRhqKQIANwIAIBJBEGogAUEQaikCADcCACASQQhqIAFBCGopAgA3AgAgE0EBdCISQQFyIQIgEyEBIBIgI0kNAAsLAkACQAJAIDJBAmsgAkYEQCAoIBNBMGxqIgEgKCACQTBsaiIyKQIANwIAIAFBKGogMkEoaiIjKQIANwIAIAFBIGogMkEgaiISKQIANwIAIAFBGGogMkEYaiItKQIANwIAIAFBEGogMkEQaiITKQIANwIAIAFBCGogMkEIaiIBKQIANwIAIDIgFSkDwAI3AgAgASA4KQMANwIAIBMgISkDADcCACAtIDApAwA3AgAgEiArKQMANwIAICMgJykDADcCACAtKgIAIakBDAELICggE0EwbGoiAkEYaiIBIDApAwA3AgAgAiAVKQPAAjcCACACQShqICcpAwA3AgAgAkEgaiArKQMANwIAIAJBEGogISkDADcCACACQQhqIDgpAwA3AgAgASoCACGpASATRQ0BIBMhAgsDQCCpASAoIAJBAWsiEkEBdiIBQTBsaiIjQRhqIhMqAgBdRQ0CICggAkEwbGoiAiAjKQIANwIAIAJBKGogI0EoaikCADcCACACQSBqICNBIGopAgA3AgAgAkEYaiATKQIANwIAIAJBEGogI0EQaikCADcCACAC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ENYMAAsgBCAHKQIANwOgAyAEIAdBCGooAgA2AqgDIARB+ABqIgFBC2pCADcAACAEQfwBaiIGQQtqQgA3AAAgBEHpAWoiBUELakIANwAAIARB1gFqIgdBC2pCADcAACAEQcMBaiIIQQtqQgA3AAAgBEIANwB7IARCADcA/wEgBEIANwDsASAEQgA3ANkBIARCADcAxgFBACEJIARBtANqQQA2AgAgBEIANwKsAyAEQbABaiINQQ9qIg4gAUEPaigAADYAACANQQhqIg0gAUEIaikAADcDACAEIAQpAHg3A7ABIARB4ABqIgFBD2oiESAGQQ9qKAAANgAAIAFBCGoiASAGQQhqKQAANwMAIAQgBCkA/AE3A2AgBEHIAGoiBkEPaiIMIAVBD2ooAAA2AAAgBkEIaiIGIAVBCGopAAA3AwAgBCAEKQDpATcDSCAEQTBqIgVBD2oiEiAHQQ9qKAAANgAAIAVBCGoiBSAHQQhqKQAANwMAIAQgBCkA1gE3AzAgBEEYaiIHQQ9qIg8gCEEPaigAADYAACAHQQhqIgcgCEEIaikAADcDACAEIAQpAMMBNwMYIARBogJqIARBsANqKQMANwEAIARBmgJqIAQpA6gDNwEAIAQgBCkDoAM3AZICIANCADcDGCADQgA3AxAgA0H////7BzYCYCADQoCAgIDw//+/fzcDWCADQv////v///+//wA3A1AgA0L////7BzcDSCADQoCAgIDw//+/fzcDQCADQv////v///+//wA3AzggA0L////7BzcDMCADQoCAgIDw//+/fzcDKCADQv////v///+//wA3AyAgAyAaOAIMIAMgFzgCCCADIBk4AgQgAyAYOAIAIANCADcCZCADQewAakIANwIAIANBgICA/AM2AnQgAy0AyAIhCCADQYgBakIANwMAIANBgAFqQgA3AwAgA0IANwN4IANBgICA/AM2ApABIANCADcClAEgA0GcAWpCADcCACADQaQBakIANwIAIANBrAFqQQA2AgAgA0L////7BzcDsAEgA0EAOgC4ASADQQA6ANQBIANC////+wc3AswBIAMgBCkDsAE3ALkBIANBwQFqIA0pAwA3AAAgA0HIAWogDigAADYAACADQQA6APABIANC////+wc3A+gBIANBADoAjAIgA0L////7BzcChAIgA0HkAWogESgAADYA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QRBqKQMANwMAIA5BCGoiCSANKQMANwMAIAQgBCkDoAM3A3ggBEHgAGoiDUEPaiIOIAFBD2ooAAA2AAAgDUEIaiINIAFBCGopAAA3AwAgBCAEKQD8ATcDYCAEQcgAaiIBQQ9qIgwgBkEPaigAADYAACABQQhqIgEgBkEIaikAADcDACAEIAQpAOkBNwNIIARBMGoiBkEPaiISIAVBD2ooAAA2AAAgBkEIaiIGIAVBCGopAAA3AwAgBCAEKQDWATcDMCAEQRhqIgVBD2oiDyAHQQ9qKAAANgAAIAVBCGoiBSAHQQhqKQAANwMAIAQgBCkAwwE3AxggBEEPaiIHIAhBD2ooAAA2AAAgBEEIaiIVIAhBCGopAAA3AwAgBCAEKQCwATcDACADQgA3AxggA0IANwMQIAMgGjgCdCADIBc4AnAgAyAZOAJsIAMgGDgCaCADQv////sHNwNgIANCgICAgPD//79/NwNYIANC////+////7//ADcDUCADQv////sHNwNIIANCgICAgPD//79/NwNAIANC////+////7//ADcDOCADQv////sHNwMwIANCgICAgPD//79/NwMoIANC////+////7//ADcDICADQoCAgICAgIDAPzcDCCADQgA3AwAgAy0AyAIhCCADQYCAgPwDNgKQASADQgA3ApQBIANBnAFqQgA3AgAgA0GkAWpCADcCACADQawBakEANgIAIANC////+wc3A7ABIANBADoAuAEgA0GIAWogESkDADcDACADQYABaiAJKQMANwMAIAMgBCkDeDcDeCADIAQpA2A3ALkBIANBwQFqIA0pAwA3AAAgA0HIAWogDigAADYAACADQQA6ANQBIANC////+wc3AswBIANBADoA8AEgA0L////7BzcD6AEgA0EAOgCMAiADQv////sHNwKEAiADQeQBaiAMKAAANgAAIANB3QFqIAEpAwA3AAAgAyAEKQNINwDVASADQYACaiASKAAANgAAIANB+QFqIAYpAwA3AAAgAyAEKQMwNwDxASADQZwCaiAPKAAANgAAIANBlQJqIAUpAwA3AAAgAyAEKQMYNwCNAiADQQA6AKgCIANC////+wc3A6ACIANBuAJqIAcoAAA2AAAgA0GxAmogFSkDADcAACADIAQpAwA3AKkCIANBgAI7AcwCIANBPzYCyAIgA0EAOgDE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IAxBAWoiATYC1AEgASALRgRAIBNBgIbDABCbCCAEKALMASELIAQoAtABIQMLIAMgAUE0bGoiBSAEKQOIAzcCACAFQShqIARBiANqIgFBKGopAwA3AgAgBUEgaiABQSBqKQMANwIAIAVBGGogAUEYaikDADcCACAFQRBqIAFBEGopAwA3AgAgBUEIaiABQQhqKQMANwIAIAVBMGogAUEwaigCADYCACAEIAxBAmoiATYC1AEgASALRgRAIBNBkIbDABCbCCAEKALMASELIAQoAtABIQMLIAMgAUE0bGoiBSAEKQPAAzcCACAFQShqIARBwANqIgFBKGopAwA3AgAgBUEgaiABQSBqKQMANwIAIAVBGGogAUEYaikDADcCACAFQRBqIAFBEGopAwA3AgAgBUEIaiABQQhqKQMANwIAIAVBMGogAUEwaigCADYCACAEIAxBA2oiATYC1AEgASALRgRAIBNBoIbDABCbCCAEKALQASEDCyADIAFBNGxqIgUgBCkD+AM3AgAgBUEoaiAEQfgDaiIBQShqKQMANwIAIAVBIGogAUEgaikDADcCACAFQRhqIAFBGGopAwA3AgAgBUEQaiABQRBqKQMANwIAIAVBCGogAUEIaikDADcCACAFQTBqIAFBMGooAgA2AgAgBCAMQQRqIgE2AtQBAkAgDkEBcUUNAAJAIAEEQCAEKALIAUUNASADKgIYIAQoAsQBIgEqAgCUIANBHGoqAgAgAUEEaioCAJSSIANBIGoqAgAgAUEIaioCAJSSIhVDAACgtV0NByAVjCEWIAQoAuwBIgEgBCgC5AFGBEAgEUHA08IAELgICyAEKALoASIHIAFBA3RqIgMgFjgCBCADQQA2AgAgBCABQQFqNgLsAUEAIQMCQCABRQ0AA0AgByABQQFrIgZBAXYiA0EDdGoiBUEEaioCACAWXUUEQCABIQMMAgsgByABQQN0aiAFKQIANwIAIAMhASAGQQFLDQALCyAHIANBA3RqIgEgFjgCBCABQQA2AgAMAgtBAEEAQbCGwwAQiAsAC0EAQQBBwIbDABCICwALAkAgEkEBcUUNAAJAIAQoAtQBIgFBAk8EQCAEKALIASIBQQFNDQEgBCgC0AEiAyoCTCAEKALEASIBKgIklCADQdAAaioCACABQShqKgIAlJIgA0HUAGoqAgAgAUEsaioCAJSS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NwMAIAhBGGoiEyAJQRhqIg4pAgA3AwAgCEEQaiIZIAlBEGoiDSkCADcDACAIQQhqIhogCUEIaiISKQIANwMAIAcgBykCgAc3A4gDIActALQHIREgCSAHKAL8ASAHKAKAAiAHQbQCaiAHQeQCahDPAiAHQcADaiIIQTBqIAooAgA2AgAgCEEoaiALKQIANwMAIAhBIGogDCkCADcDACAIQRhqIA4pAgA3AwAgCEEQaiANKQIANwMAIAhBCGogEikCADcDACAHIAcpAoAHNwPAAyAHLQC0ByEPIAkgBygC/AEgBygCgAIgB0HAAmogB0HwAmoQzwIgB0H4A2oiCEEwaiAKKAIANgIAIAhBKGogCykCADcDACAIQSBqIAwpAgA3AwAgCEEYaiAOKQIANwMAIAhBEGogDSkCADcDACAIQQhqIBIpAgA3AwAgByAHKQKABzcD+AMgBy0AtAchFiAJIAcoAvwBIAcoAoACIAdBzAJqIAdB/AJqEM8CIAdBsARqIghBMGogCigCADYCACAIQShqIAspAgA3AwAgCEEgaiAMKQIANwMAIAhBGGogDikCADcDACAIQRBqIA0pAgA3AwAgCEEIaiASKQIANwMAIAcgBykCgAc3A7AEIActALQHIQ4gBygChAIiCCAHKAKMAiILRgRAIBVB8IXDABCbCCAHKAKEAiEICyAHKAKIAiIJIAtBNGxqIgogBykDiAM3AgAgCkEoaiAYKQMANwIAIApBIGogFCkDADcCACAKQRhqIBMpAwA3AgAgCkEQaiAZKQMANwIAIApBCGogGikDADcCACAKQTBqIBcoAgA2AgAgByALQQFqIgo2AowCIAggCkYEQCAVQYCGwwAQmwggBygCiAIhCSAHKAKEAiEICyAJIApBNGxqIgogBykDwAM3AgAgCkEoaiAHQcADaiIMQShqKQMANwIAIApBIGogDEEgaikDADcCACAKQRhqIAxBGGopAwA3AgAgCkEQaiAMQRBqKQMANwIAIApBCGogDEEIaikDADcCACAKQTBqIAxBMGooAgA2AgAgByALQQJqIgo2AowCIAggCkYEQCAVQZCGwwAQmwggBygCiAIhCSAHKAKEAiEICyAJIApBNGxqIgogBykD+AM3AgAgCkEoaiAHQfgDaiIMQShqKQMANwIAIApBIGogDEEgaikDADcCACAKQRhqIAxBGGopAwA3AgAgCkEQaiAMQRBqKQMANwIAIApBCGogDEEIaikDADcCACAKQTBqIAxBMGooAgA2AgAgByALQQNqIgo2AowCIAggCkYEQCAVQaCGwwAQmwggBygCiAIhCQsgCSAKQTRsaiIIIAcpA7AENwIAIAhBKGogB0GwBGoiCkEoaikDADcCACAIQSBqIApBIGopAwA3AgAgCEEYaiAKQRhqKQMANwIAIAhBEGogCkEQaikDADcCACAIQQhqIApBCGopAwA3AgAgCEEwaiAKQTBqKAIANgIAIAcgC0EEaiIINgKMAgJAIBFBAXFFDQACQCAIBEAgBygCgAJFDQEgCSoCGCAHKAL8ASIIKgIAlCAJQRxqKgIAIAhBBGoqAgCUkiAJQSBqKgIAIAhBCGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEANgIAIAcgCEEBajYCpAJBACEJAkAgCEUNAANAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEANgIADAILQQBBAEGwhsMAEIgLAAtBAEEAQcCGwwAQiAsACwJAIA9BAXFFDQACQCAHKAKMAiIIQQJPBEAgBygCgAIiCEEBTQ0BIAcoAogCIggqAkwgBygC/AEiCSoCJJQgCEHQAGoqAgAgCUEoaioCAJSSIAhB1ABqKgIAIAlBLGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEBNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEBNgIADAILQQEgCEHQhsMAEIgLAAtBASAIQeCGwwAQiAsACwJAIBZBAXFFDQACQCAHKAKMAiIIQQNPBEAgBygCgAIiCEECTQ0BIAcoAogCIggqAoABIAcoAvwBIgkqAkiUIAhBhAFqKgIAIAlBzABqKgIAlJIgCEGIAWoqAgAgCUHQAGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUECNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEECNgIADAILQQIgCEHwhsMAEIgLAAtBAiAIQYCHwwAQiAsACwJAIA5BAXFFDQACQCAHKAKMAiIIQQRPBEAgBygCgAIiCEEDTQ0BIAcoAogCIggqArQBIAcoAvwBIgkqAmyUIAhBuAFqKgIAIAlB8ABqKgIAlJIgCEG8AWoqAgAgCUH0AGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEDNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEDNgIADAILQQMgCEGQh8MAEIgLAAtBAyAIQaCHwwAQiAsACyARQQFxDQAgD0EBcQ0AIBZBAXENACAOQQFxDQBBjMTEACgCAEEESQ0FIAdBADYCkAcgB0EBNgKEByAHQYSIwwA2AoAHIAdCBDcCiAcgB0GMiMMANgKgBiAHQRk2ApwGIAdBhIXDADYCmAYgB0EZNgKUBiAHQYSFwwA2ApAGIAdBgAdqIAdBkAZqEPEJDAULIAcoAqQCRQ0EIAcoAqACKAIAIQsgB0GEBmogEBCzBAJAAn0CQCAHKAKEBkEBRw0AIAdBkAZqIghBJGohFiAIQRhqIRIgB0GcBmohF0P//39/IRxBACERA0ACQAJAAkACQAJAAkACQAJAIAcoAogGIgkgBygCjAIiCEkEQCAHKgKMBiEbIAdB0AdqIg1BCGoiCiAJQTRsIg8gBygCiAJqIghBFGooAgA2AgAgByAIKQIMNwPQByAHQbgHaiIUQQhqIgwgCEEgaigCADYCACAHIAgpAhg3A7gHIAdBgAdqIhNBCGoiGCAIQSxqKAIANgIAIAgtADAhDiAIKQIAISogCCkCJCErIAdBmAZqIAhBCGooAgA2AgAgByArNwOAByAHICo3A5AGIBdBCGogCigCADYCACAXIAcpA9AHNwIAIBJBCGogDCgCADYCACASIAcpA7gHNwIAIBZBCGogGCgCADYCACAWIAcpA4AHNwIAIAcgDjoAwAYgDg0HIA0gAiASIAMRAQAgByAHKgKwBow4AogHIAcgByoCrAaMOAKEByAHIAcqAqgGjDgCgAcgFCAEIAEgEyAFEQIAIAdB4AZqIg4gCigCADYCACAHQdAGaiINIAwoAgA2AgAgByAHKQLQBzcD2AYgByAHKQK4BzcDyAYgCioCACAMKgIAkyEdIAcqAtQHIAcqArwHkyEeIAcqAtAHIAcqArgHkyEfIAcoAoACIgwgBygC+AFGBEAgB0H4AWpBzIjDABCRCAsgBygC/AEgDEEkbGoiCCAdOAIIIAggHjgCBCAIIB84AgAgCCAHKQPYBjcCDCAIIAcpA8gGNwIYIAhBFGogDigCADYCACAIQSBqIA0oAgA2AgAgByAMQQFqIgo2AoACIAkgCyAfIAcqAqgGlCAeIAcqAqwGlJIgHSAHKgKwBpSSIh0gHF0iDhshCyAHKAKMAiEIAkAgGyAdIBwgDhsiHJJDAABIN11FBEAgCCAJTQ0DIAcoAogCIA9qQQE6ADAgBygCnAYiCCAHKAKMAiIJTw0EIAcoAogCIAhBNGxqIAcoApAGEIMHIQkgBygCoAYiCCAHKAKMAiIKTw0FIAcoAogCIAhBNGxqIAcoApQGEIMHIQogBygCpAYiCCAHKAKMAiIOTw0GIAcoAogCIAhBNGxqIAcoApgGEIMHIQ4gB0H4AWoiCCAMIAcoApwGIAkQxgIgCCAMIAcoAqAGIAoQxgIgCCAMIAcoAqQGIA4QxgIgBygCmAIiCkUNEyAbjCEdIAcoAowCIQ4gBygClAIiCEEIaiEJIAggCkEDdGohFANAIAkhCgJAAkACQCAIKAIAIg0gBygCjAIiCUkEQCAHKAKIAiANQTRsaiIPLQAwDQMgByANNgL0BiAIKAIEIQ0gByAMNgLwBiAHIAlBAWs2AvwGIAcgCUEBajYC+AYgByAPIA1BAWpBA3BBAnRqKAIANgLsBiAHIA8gDUECakEDcEECdGooAgA2AugGIAdBgAdqIAcoAvwBIAcoAoACIAdB6AZqIAdB9AZqEM8CIA8gCCgCBEEBakEDcEECdGogCTYCDCAHKAKMAiIPIAcoAoQCRgRAIBVBzInDABCbCAsgBygCiAIiEyAPQTRsaiIIIAcpAoAHNwIAIAhBKGogB0GAB2oiDUEoaikCADcCACAIQSBqIA1BIGopAgA3AgAgCEEYaiANQRhqKQIANwIAIAhBEGogDUEQaikCADcCACAIQQhqIBgpAgA3AgAgCEEwaiANQTBqKAIANgIAIAcgD0EBaiIINgKMAiAHLQC0B0UNAyAIIAlNDQwgEyAJQTRsaiIIKAIAIg0gBygCgAIiD08NDSAHKAL8ASITIA1BJGxqIg0qAgAgCCoCGJQgDSoCBCAIQRxqKgIAlJIgDSoCCCAIQSBqKgIAlJIiGyAdXQ0GIBtDAACgtV0iDQ0YIBuMIRsgBygCpAIiCCAHKAKcAkYEQCAQQcDTwgAQuAgLIAYgGyANGyEGIBkgCSANGyEZIAcoAqACIg0gCEEDdGoiDyAbOAIEIA8gCTYCACAHIAhBAWo2AqQCIAgNAUEAIQkMAgsgDSAJQbyJwwAQiAsACwNAIAYgDSAIQQFrIg9BAXYiCUEDdGoiE0EEaioCAF5FBEAgCCEJDAILIA0gCEEDdGogEykCADcCACAJIQggD0EBSw0ACwsgDSAJQQN0aiIIIAY4AgQgCCAZNgIACyAKIAogFEdBA3RqIQkgFCAKIghHDQALDAoLIAggC0sEQCAHQYAHaiAHKAKIAiALQTRsaiICIAcoAvwBIAoQqQUgAioCHCEbIAIqAhghHSACKgIgDA0LIAsgCEH8icMAEIgLAAsgB0G4B2ogB0GQBmogEyAPEKkFIAcqArAGIRwgByoCrAYhGyAHKgKoBiEdIAcqAswHISAgByoCyAchIiAHKgLEByEjIAcqAsAHIQYgByoCvAchHyAHKgK4ByEeDA0LIAkgCEG8iMMAEIgLAAsgCSAIQdyIwwAQiAsACyAIIAlB7IjDABCICwALIAggCkH8iMMAEIgLAAsgCCAOQYyJwwAQiAsACyAJIAhB3InDABCICwALIA0gD0HsicMAEIgLAAsgB0GEBmogEBCzBCAHKAKEBg0BDAILIAcoAowCIgggDkYNCCAIIA5NDQYgBygCiAIgDkE0bGogCEEBazYCFCAHKAKMAiIIRQ0HIAcoAogCIAhBNGxqIghBNEYNByAIQSRrIA42AgAgB0EANgKYAiARQeQARg0BIAdBhAZqIBAQswQgEUEBaiERIAcoAoQGDQALCyAHKAKMAiICIAtNDQEgB0GAB2ogBygCiAIgC0E0bGoiAiAHKAL8ASAHKAKAAhCpBSACKgIcIRsgAioCGCEdIAIqAiALIRwgByoClAchICAHKgKQByEiIAcqAowHISMgByoCiAchBiAHKgKEByEfIAcqAoAHIR4MAQsgCyACQYyKwwAQiAsACyAHKAL4ASICBEAgBygC/AEgAkEkbEEEEIgPCyAHKAKEAiICBEAgBygCiAIgAkE0bEEEEIgPCyAHKAKQAiICBEAgBygClAIgAkEDdEEEEIgPCyAHKAKcAiICRQ0AIAcoAqACIAJBA3RBBBCIDwsgACAcOAIkIAAgGzgCICAAIB04AhwgACAGOAIMIAAgHzgCCCAAIB44AgQgACAcICAgBpOUIB0gIyAek5QgGyAiIB+TlJKSOAI0IAAgASoCDCIhIBsgASoCACIGlCAdIAEqAgQiHpSTIh8gH5IiKZQgHiAcIB6UIBsgASoCCCIflJMiJCAkkiIklCAGIB0gH5QgHCAGlJMiJSAlkiIllJOSIByTOAIwIAAgISAllCAGICmUIB8gJJSTkiAbkzgCLCAAICEgJJQgHyAllCAeICmUk5IgHZM4AiggHiAjICaTIh2UIAYgIiAnkyIilJMiHCAckiEcICIgH5QgICAokyIgIB6UkyIbIBuSIRsgACAgICEgHJQgHiAblCAGICAgBpQgHSAflJMiICAgkiIglJOSkjgCGCAAICIgISAglCAGIByUIB8gG5STkpI4AhQgACAdICEgG5QgHyAglCAeIByUk5KSOAIQQQEhCQwDCyAOIAhBnInDABCICwALQayJwwAQkQ8ACyAHKAL4ASIBBEAgBygC/AEgAUEkbEEEEIgPCyAHKAKEAiIBBEAgBygCiAIgAUE0bEEEEIgPCyAHKAKQAiIBBEAgBygClAIgAUEDdEEEEIgPCyAHKAKcAiIBBEAgBygCoAIgAUEDdEEEEIgPC0EAIQkLIAAgCTYCACAHQeAHaiQAC7VAAxF/CX0BfiMAQeAGayIGJAAgBEEIaiIHKgIAIRsgBCoCACEdIAQqAgQhHCAGQSBqIAcoAgA2AgAgBkKAgICAgICAwD83AhAgBkIANwIIIAYgBCkCADcCGEMAAIA/IRcgHSAdlCAcIByUkiAbIBuUkiIZQwAAgCheBEAgGyAZkSIXlSEaIBwgF5UhGCAdIBeVIRcLIAYgGjgCLCAGIBg4AiggBiAXOAIkIAZBMGoiByAGQQhqIAEgAiAGQSRqENcDIANBADYCrAEgA0EANgK8ASADIAYpAjA3AhAgA0EYaiAHQQhqKQIANwIAIANBIGogB0EQaikCADcCACADQShqIAdBGGopAgA3AgAgA0EwaiAHQSBqKAIANgIAIAZCgICAgIiAgMA/NwKQBSAGQoCAgICIgICAgH83AogFIAYgGyAcQwAAAICUIB1DAAAAAJSSIhcgF5IiHiAbQwAAAICUIBxDAAAAAJSSIhcgF5IiGUMAAAAAlCIaIB1DAAAAgJQgG0MAAAAAlJIiFyAXkiIXQwAAAACUIhiTkpIiHzgCoAUgBiAcIBcgHkMAAAAAlCIXIBqTkpIiGzgCnAUgBiAdIBkgGCAXk5KSIhw4ApgFIAZBqANqIAMQQgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYqAqgDIhcgF5QgBioCrAMiFyAXlJIgBioCsAMiGCAYlJJDAAAAAF5FDQBD//9/fyEXQeQAIQcCQAJAAkACQANAIAYqAqgDIh0gHZQgBioCrAMiGSAZlJIgBioCsAMiGCAYlJIiGkMAAMgrXkUNBSAGIBiMIBqRIhiVIh44ApgEIAYgGYwgGJUiGTgClAQgBiAdjCAYlSIaOAKQBCAXIBhfDQQgBkH4BWoiCSAGQYgFaiABIAIgBkGQBGoQ1wMgGiAGKgL4BZQgGSAGKgL8BZSSIB4gBioCgAaUkiIXvEH/////B3FBgICA/AdPDQYgF0P//3//XUUEQCAYIBeSIBhDvRuPOpRfDQQgAyAJEMYDRQ0CIAZBqANqIAMQQiADKAK8AUEDRg0DIBghFyAHQQFrIgcNAQsLQYDUwgBBKEGci8MAENYMAAsgBkHIBGogA0EAEL4CDA4LIBdDAACgtV9FDQIgBkHIBGogA0EBEL4CDA0LIAZByARqIANBABC+AgwMCyAGQcgEaiADQQEQvgIMCwsCQCAFRQRAIAZCgICAgMAANwJ4IAZCgICAgMAANwJsIAZCgICAgMAANwJgIAZCgICAgMAANwJUIAYgHzgCnAEgBiAbOAKYASAGIBw4ApQBIAZCgICAgIiAgMA/NwKMASAGQoCAgICIgICAgH83AoQBIAZBADYCgAEgBkEANgJoIAZBADYCXCAGQQA2AnQgBkH4AGohEyAGQeAAaiEVIAMoArwBIglBf0YEQEEEIQdBACEFDAULIAZB1ABqIgVBnIrDABCRCCAGKAJYIgcgA0EQaiIIKQIANwIAIAdBIGogCEEgaigCADYCACAHQRhqIAhBGGopAgA3AgAgB0EQaiAIQRBqKQIANwIAIAdBCGogCEEIaikCADcCACAGQQE2AlwgCUUNASAJQQJqIQkgA0E0aiEIIAYoAlRBAUYEQCAFQZyKwwAQkQggBigCWCEHCyAHIAgpAgA3AiQgB0HEAGogCEEgaigCADYCACAHQTxqIAhBGGopAgA3AgAgB0E0aiAIQRBqKQIANwIAIAdBLGogCEEIaikCADcCACAGQQI2AlwgCUEDRg0DIANB2ABqIQUgBigCVEECRgRAIAZB1ABqQZyKwwAQkQggBigCWCEHCyAHIAUpAgA3AkggB0HoAGogBUEgaigCADYCACAHQeAAaiAFQRhqKQIANwIAIAdB2ABqIAVBEGopAgA3AgAgB0HQAGogBUEIaikCADcCAEEDIQUgBkEDNgJcIAlBBEYNBCADQfwAaiEDIAYoAlRBA0YEQCAGQdQAakGcisMAEJEIIAYoAlghBwsgByADKQIANwJsIAdBjAFqIANBIGooAgA2AgAgB0GEAWogA0EYaikCADcCACAHQfwAaiADQRBqKQIANwIAIAdB9ABqIANBCGopAgA3AgAgBkEENgJcIAlBBUYNBUEEQQRBwIzDABCICwALIABBAToADCAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIADAwLIAZByAZqIgFBEGpCADcDACABQQhqQgA3AwAgBkIANwPIBgwFC0Gsi8MAQSdB1IvDABDWDAALIAcqAiwgByoCCJMiG0MAAAAAIAcqAiQgByoCAJMiHIsgByoCKCAHKgIEkyIYi14iAxsiFyAcjCAYIAMbIh4gHpRDAAAAACAbjCADGyIaIBqUIBcgF5SSkpEiF5UhGSAGIBggGZQgHCAaIBeVIhqUkzgCkAUgBiAcIB4gF5UiF5QgGyAZlJM4AowFIAYgGyAalCAYIBeUkzgCiAUgBkH4BWogBkGEAWogASACIAZBiAVqENcDIAYoAlwiAyAGKAJURgRAIAZB1ABqQayKwwAQkQgLIAYoAlggA0EkbGoiByAGKQL4BTcCACAHQSBqIAZB+AVqIgVBIGooAgA2AgAgB0EYaiAFQRhqKQIANwIAIAdBEGogBUEQaikCADcCACAHQQhqIAVBCGopAgA3AgAgBiADQQFqIgU2AlwgBigCWCEHCyAGQQI2AugDIAZCgICAgBA3AuADIAZBATYC9AMgBkKAgICAIDcC7AMgBkEBNgKABCAGQoGAgIAQNwL4AyAGQQA2AowEIAZCADcChAQgBkH4BWoiCiAHIAUgBkHgA2ogBkH4A2oQzwIgBkGQBGoiB0EwaiIOIApBMGoiFCgCADYCACAHQShqIhAgCkEoaiILKQIANwMAIAdBIGoiESAKQSBqIg8pAgA3AwAgB0EYaiIIIApBGGoiBSkCADcDACAHQRBqIgkgCkEQaiIDKQIANwMAIAdBCGoiByAKQQhqIhYpAgA3AwAgBiAGKQL4BTcDkAQgCiAGKAJYIAYoAlwgBkHsA2ogBkGEBGoQzwIgBkHIBGoiCkEwaiAUKAIANgIAIApBKGogCykCADcDACAKQSBqIA8pAgA3AwAgCkEYaiAFKQIANwMAIApBEGogAykCADcDACAKQQhqIBYpAgA3AwAgBiAGKQL4BTcDyAQgBigCYCIFIAYoAmgiD0YEQCAVQZyIwwAQmwggBigCYCEFCyAGKAJkIgMgD0E0bGoiCyAGKQOQBDcCACALQShqIBApAwA3AgAgC0EgaiARKQMANwIAIAtBGGogCCkDADcCACALQRBqIAkpAwA3AgAgC0EIaiAHKQMANwIAIAtBMGogDigCADYCACAGIA9BAWoiBzYCaCAFIAdGBEAgFUGsiMMAEJsIIAYoAmQhAwsgAyAHQTRsaiIFIAYpA8gENwIAIAVBKGogBkHIBGoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgD0ECajYCaCAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAGKAJ8IgggA0EDdGpCADcCACAGIANBAWo2AoABAkAgA0UEQEEAIQUMAQsDQCAIIANBAWsiCUEBdiIFQQN0aiIHQQRqKgIAQwAAAABdRQRAIAMhBQwCCyAIIANBA3RqIAcpAgA3AgAgBSEDIAlBAUsNAAsLIAggBUEDdGpCADcCACAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAGKAJ8IgggA0EDdGpCATcCACAGIANBAWo2AoABAkAgA0UEQEEAIQUMAQsDQCAIIANBAWsiCUEBdiIFQQN0aiIHQQRqKgIAQwAAAABdRQRAIAMhBQwCCyAIIANBA3RqIAcpAgA3AgAgBSEDIAlBAUsNAAsLIAggBUEDdGpCATcCAAwBCyAHKgJIIAcqAgAiH5MhGyAHKgIoIAcqAgQiGJMiHiAHKgJQIAcqAggiHJMiGZQgByoCLCAckyIXIAcqAkwgGJMiGpSTIAcqAmwgH5OUIBcgG5QgByoCJCAfkyIXIBmUkyAHKgJwIBiTlJIgFyAalCAeIBuUkyAHKgJ0IByTlJJDAAAAAF4EQCAHQSRqIgkpAgAhICAJIAdByABqIgopAgA3AgAgBkH4BWoiA0EgaiIOIAlBIGoiFCgCADYCACADQRhqIhAgCUEYaiILKQIANwMAIANBEGoiESAJQRBqIgUpAgA3AwAgA0EIaiIPIAlBCGoiAykCADcDACADIApBCGoiCCkCADcCACAFIApBEGoiCSkCADcCACALIApBGGoiBSkCADcCACAUIApBIGoiAygCADYCACAGICA3A/gFIAogBikD+AU3AgAgAyAOKAIANgIAIAUgECkDADcCACAJIBEpAwA3AgAgCCAPKQMANwIACyAGQQI2AqgBIAZCgICAgBA3AqABIAZBAjYCtAEgBkKBgICAMDcCrAEgBkEDNgLAASAGQoCAgIAgNwK4ASAGQQE2AswBIAZCgICAgDA3AsQBIAZBAjYC2AEgBkKDgICAEDcC0AEgBkEANgLkASAGQoOAgIAgNwLcASAGQQM2AvABIAZCgICAgBA3AugBIAZBADYC/AEgBkKCgICAEDcC9AEgBkH4BWoiDCAHQQQgBkGgAWogBkHQAWoQzwIgBkGAAmoiA0EwaiIPIAxBMGoiEigCADYCACADQShqIgggDEEoaiINKQIANwMAIANBIGoiCSAMQSBqIgopAgA3AwAgA0EYaiIWIAxBGGoiDikCADcDACADQRBqIgUgDEEQaiIRKQIANwMAIANBCGoiAyAMQQhqIgcpAgA3AwAgBiAGKQL4BTcDgAIgBi0ArAYhFCAMIAYoAlggBigCXCAGQawBaiAGQdwBahDPAiAGQbgCaiILQTBqIBIoAgA2AgAgC0EoaiANKQIANwMAIAtBIGogCikCADcDACALQRhqIA4pAgA3AwAgC0EQaiARKQIANwMAIAtBCGogBykCADcDACAGIAYpAvgFNwO4AiAGLQCsBiEQIAwgBigCWCAGKAJcIAZBuAFqIAZB6AFqEM8CIAZB8AJqIgtBMGogEigCADYCACALQShqIA0pAgA3AwAgC0EgaiAKKQIANwMAIAtBGGogDikCADcDACALQRBqIBEpAgA3AwAgC0EIaiAHKQIANwMAIAYgBikC+AU3A/ACIAYtAKwGIQsgDCAGKAJYIAYoAlwgBkHEAWogBkH0AWoQzwIgBkGoA2oiDEEwaiASKAIANgIAIAxBKGogDSkCADcDACAMQSBqIAopAgA3AwAgDEEYaiAOKQIANwMAIAxBEGogESkCADcDACAMQQhqIAcpAgA3AwAgBiAGKQL4BTcDqAMgBi0ArAYhESAGKAJgIg0gBigCaCIORgRAIBVB8IXDABCbCCAGKAJgIQ0LIAYoAmQiByAOQTRsaiIKIAYpA4ACNwIAIApBKGogCCkDADcCACAKQSBqIAkpAwA3AgAgCkEYaiAWKQMANwIAIApBEGogBSkDADcCACAKQQhqIAMpAwA3AgAgCkEwaiAPKAIANgIAIAYgDkEBaiIDNgJoIAMgDUYEQCAVQYCGwwAQmwggBigCYCENIAYoAmQhBwsgByADQTRsaiIFIAYpA7gCNwIAIAVBKGogBkG4AmoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgDkECaiIDNgJoIAMgDUYEQCAVQZCGwwAQmwggBigCYCENIAYoAmQhBwsgByADQTRsaiIFIAYpA/ACNwIAIAVBKGogBkHwAmoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgDkEDaiIDNgJoIAMgDUYEQCAVQaCGwwAQmwggBigCZCEHCyAHIANBNGxqIgUgBikDqAM3AgAgBUEoaiAGQagDaiIDQShqKQMANwIAIAVBIGogA0EgaikDADcCACAFQRhqIANBGGopAwA3AgAgBUEQaiADQRBqKQMANwIAIAVBCGogA0EIaikDADcCACAFQTBqIANBMGooAgA2AgAgBiAOQQRqIgM2AmgCQCAUQQFxRQ0AAkAgAwRAIAYoAlxFDQEgByoCGCAGKAJYIgMqAgCUIAdBHGoqAgAgA0EEaioCAJSSIAdBIGoqAgAgA0EIaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEANgIAIAYgA0EBajYCgAFBACEHAkAgA0UNAANAIAggA0EBayIJQQF2IgdBA3RqIgVBBGoqAgAgGF1FBEAgAyEHDAILIAggA0EDdGogBSkCADcCACAHIQMgCUEBSw0ACwsgCCAHQQN0aiIDIBg4AgQgA0EANgIADAILQQBBAEGwhsMAEIgLAAtBAEEAQcCGwwAQiAsACwJAIBBBAXFFDQACQCAGKAJoIgNBAk8EQCAGKAJcIgNBAU0NASAGKAJkIgUqAkwgBigCWCIDKgIklCAFQdAAaioCACADQShqKgIAlJIgBUHUAGoqAgAgA0EsaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEBNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0EBNgIADAILQQEgA0HQhsMAEIgLAAtBASADQeCGwwAQiAsACwJAIAtBAXFFDQACQCAGKAJoIgNBA08EQCAGKAJcIgNBAk0NASAGKAJkIgUqAoABIAYoAlgiAyoCSJQgBUGEAWoqAgAgA0HMAGoqAgCUkiAFQYgBaioCACADQdAAaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUECNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0ECNgIADAILQQIgA0HwhsMAEIgLAAtBAiADQYCHwwAQiAsACwJAIBFBAXFFDQACQCAGKAJoIgNBBE8EQCAGKAJcIgNBA00NASAGKAJkIgUqArQBIAYoAlgiAyoCbJQgBUG4AWoqAgAgA0HwAGoqAgCUkiAFQbwBaioCACADQfQAaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEDNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0EDNgIADAILQQMgA0GQh8MAEIgLAAtBAyADQaCHwwAQiAsACyAUQQFxDQAgEEEBcQ0AIAtBAXENACARQQFxDQBBjMTEACgCAEEESQ0EIAZBADYCiAYgBkEBNgL8BSAGQYSIwwA2AvgFIAZCBDcCgAYgBkGMiMMANgKYBSAGQRk2ApQFIAZBhIXDADYCkAUgBkEZNgKMBSAGQYSFwwA2AogFIAZB+AVqIAZBiAVqEPEJDAQLIAYoAoABRQ0DIAYoAnwoAgAhEiAGQfwEaiATELMEAkAgBigC/ARBAUcNACAGQYgFaiIDQSRqIQsgA0EYaiEOIAZBlAVqIRFD//9/fyEXQQAhFANAAkACQAJAAkACQAJAAkACQAJAIAYoAoAFIgggBigCaCIDSQRAIAYqAoQFIRkgESAIQTRsIgcgBigCZGoiAykCDDcCACAOIAMpAhg3AgAgCyADKQIkNwIAIAZBkAVqIANBCGooAgA2AgAgEUEIaiADQRRqKAIANgIAIA5BCGogA0EgaigCADYCACALQQhqIANBLGooAgA2AgAgBiADKQIANwOIBSAGIAMtADAiAzoAuAUgAw0IIAZBvAVqIAZBhAFqIAEgAiAOENcDIAYoAlwiDSAGKAJURgRAIAZB1ABqQcyIwwAQkQgLIAYoAlggDUEkbGoiBSAGKQK8BTcCACAFQSBqIAZBvAVqIgNBIGooAgA2AgAgBUEYaiADQRhqKQIANwIAIAVBEGogA0EQaikCADcCACAFQQhqIANBCGoiAykCADcCACAGIA1BAWoiBTYCXCAIIBIgBioCvAUgBioCoAWUIAYqAsAFIAYqAqQFlJIgAyoCACAGKgKoBZSSIhogF10iAxshEiAGKAJoIQkgGSAaIBcgAxsiF5JDAABIN11FBEAgCCAJTw0CIAYoAmQgB2pBAToAMCAGKAKUBSIQIAYoAmgiCU8NAyAGKAJkIgMgEEE0bGogBigCiAUQgwchByAGKAKYBSIPIAlPDQQgAyAPQTRsaiAGKAKMBRCDByEFIAYoApwFIgggCU8NBSADIAhBNGxqIAYoApAFEIMHIQMgBkHUAGoiCSANIBAgBxDGAiAJIA0gDyAFEMYCIAkgDSAIIAMQxgIgBigCdCIFRQ0QIBmMIRogBigCaCEKIAYoAnAiA0EIaiEHIAMgBUEDdGohDwNAIAchCQJAAkACQCADKAIAIgUgBigCaCIMSQRAIAYoAmQgBUE0bGoiBy0AMA0DIAYgBTYC7AUgAygCBCEFIAYgDTYC6AUgBiAMQQFrNgL0BSAGIAxBAWo2AvAFIAYgByAFQQFqQQNwQQJ0aigCADYC5AUgBiAHIAVBAmpBA3BBAnRqKAIANgLgBSAGQfgFaiAGKAJYIAYoAlwgBkHgBWogBkHsBWoQzwIgByADKAIEQQFqQQNwQQJ0aiAMNgIMIAYoAmgiBSAGKAJgRgRAIBVBzInDABCbCAsgBigCZCIDIAVBNGxqIgggBikC+AU3AgAgCEEoaiAGQfgFaiIHQShqKQIANwIAIAhBIGogB0EgaikCADcCACAIQRhqIAdBGGopAgA3AgAgCEEQaiAHQRBqKQIANwIAIAhBCGogB0EIaikCADcCACAIQTBqIAdBMGooAgA2AgAgBiAFQQFqIgU2AmggBi0ArAZFDQMgBSAMTQ0LIAMgDEE0bGoiCCgCACIFIAYoAlwiB08NDCAGKAJYIgMgBUEkbGoiBSoCACAIKgIYlCAFKgIEIAhBHGoqAgCUkiAFKgIIIAhBIGoqAgCUkiIZIBpdDQ0gGUMAAKC1XSIFDRUgGYwhGSAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAYIBkgBRshGCAWIAwgBRshFiAGKAJ8IhAgA0EDdGoiBSAZOAIEIAUgDDYCACAGIANBAWo2AoABIAMNAUEAIQUMAgsgBSAMQbyJwwAQiAsACwNAIBggECADQQFrIghBAXYiBUEDdGoiB0EEaioCAF5FBEAgAyEFDAILIBAgA0EDdGogBykCADcCACAFIQMgCEEBSw0ACwsgECAFQQN0aiIDIBg4AgQgAyAWNgIACyAJIAkgD0dBA3RqIQcgDyAJIgNHDQALDAoLIAkgEksEQCAGQfgFaiIBIAYoAmQgEkE0bGogBigCWCAFEKkFIAZB0AZqIAFBCGooAgA2AgAgBiAGKQL4BTcDyAYMDQsgEiAJQfyJwwAQiAsACyAIIANBvIjDABCICwALIAggCUHciMMAEIgLAAsgECAJQeyIwwAQiAsACyAPIAlB/IjDABCICwALIAggCUGMicMAEIgLAAsgDCAFQdyJwwAQiAsACyAFIAdB7InDABCICwALIAZBsAZqIgEgBkGIBWogAyAHEKkFIAZB0AZqIAFBCGooAgA2AgAgBiAGKQKwBjcDyAYMBAsgBkH8BGogExCzBCAGKAL8BA0BDAILIAYoAmgiAyAKRg0FIAMgCk0NAyAGKAJkIApBNGxqIANBAWs2AhQgBigCaCIDRQ0EIAYoAmQgA0E0bGoiA0E0Rg0EIANBJGsgCjYCACAGQQA2AnQgFEHkAEYNASAGQfwEaiATELMEIBRBAWohFCAGKAL8BA0ACwsgBigCaCIBIBJLBEAgBkH4BWoiASAGKAJkIBJBNGxqIAYoAlggBigCXBCpBSAGQdAGaiABQQhqKAIANgIAIAYgBikC+AU3A8gGDAELIBIgAUGMisMAEIgLAAsgAEEIaiAGQdAGaigCADYCACAAIAYpA8gGNwIAIABBAToADAwDCyAKIANBnInDABCICwALQayJwwAQkQ8ACyAAQQE6AAwgACAEKQIANwIAIABBCGogBEEIaigCADYCAAsgBigCVCIABEAgBigCWCAAQSRsQQQQiA8LIAYoAmAiAARAIAYoAmQgAEE0bEEEEIgPCyAGKAJsIgAEQCAGKAJwIABBA3RBBBCIDwsgBigCeCIARQ0BIAYoAnwgAEEDdEEEEIgPDAELIAYqAswEIRggBioCyAQhFyAAIAYqAtAEOAIIIAAgGDgCBCAAIBc4AgAgAEEAOgAMCyAGQeAGaiQAC8JLA21/A34nfSMAQaAMayIFJAACQAJAIAEgACgCOE8NACACIAAoAjQgAUEUbGoiBCgCAEcNAAJAAkACQAJAAkACQAJAIAQoAgQiFiAAKAJMTw0AIAAoAkggFkGkAmxqIgcoAgAiJEGAgICAeEYNACAEKAIIIAcoAqACRw0AIAQoAhAhJSAEKAIMIRIgACkCPCFxIAVB6AZqIgQgB0EEakGgAvwKAAAgByBxNwIEIAdBgICAgHg2AgAgACAWNgJAIABBATYCPCAAIAAoAlBBAWo2AlAgACAAKAJUQQFrNgJUIAVBFGogBEGcAvwKAAAgBSAkNgIQICUgBSgCGCITTw0BIAUoAhQiFiAlQfADbGoiBCgCkAMEQCAEKAKYAyIEIBNPDQMgFiAEQfADbGoiBygC8AIiGCAAKAI4Tw0EIAcoAvQCIhkgACgCNCAYQRRsaiIEKAIARw0EIAQoAgwiBCAAKAIgIhFPDQcgACgCLCEPIAAoAighDSAAKAIcIhQgBEEEdGpBCGoiByEIA0ACQCAPIAgoAgAiBE0EQANAIA8gBygCBCIETQ0LIA0gBEEEdGoiBygCCCASRw0ADAILAAsgDSAEQQR0aiIIKAIMIBJHDQELCyANIARBBHRqIgYpAggicqciByARTw0GIAYpAgAicachEiByQiCIpyEJIBQgB0EEdGoiBygCCCIIIARHBEADQCAIIA9PDQcgDSAIQQR0aiIHKAIAIgggBEcNAAsgByASNgIADAYLIAdBCGogEjYCAAwFCyAFQRBqEPUCDAcLQfi9wgAQkQ8AC0GIvsIAEJEPAAtBmL7CABCRDwALQai+wgAQkQ8ACyAJIBFPDQAgcUIgiKchEiAUIAlBBHRqIgcoAgwiCCAERwRAA0AgCCAPTw0CIA0gCEEEdGoiBygCBCIIIARHDQALIAdBBGogEjYCAAwBCyAHQQxqIBI2AgALIAAgD0EBayIJNgIsIA0gCUEEdGoiBykCACFxIAZBCGogB0EIaikCADcCACAGIHE3AgAgBCAJTw0AIA0gBEEEdGopAggicaciByARTw0AIHFCIIinIRICQCAJIBQgB0EEdGoiBygCCCIORwRAA0AgCSAOTQ0CIAkgDSAOQQR0aiIHKAIAIg5HDQALIAcgBDYCAAwBCyAHQQhqIAQ2AgALIBEgEk0NACAJIBQgEkEEdGoiBygCDCIORwRAA0AgCSAOTQ0CIAkgDSAOQQR0aiIHKAIEIg5HDQALIAdBBGogBDYCAAwBCyAHQQxqIAQ2AgALIAMEQCAAIAEgAhDkAyAAIBggGRDkAwsgBS0ArQIhHCAFKAKYAiFkIAUoApQCITUgBSgCkAIhJiAFKAKMAiEYIAUoAogCITYgBSgChAIhJyAFKAKAAiEJIAUoAvwBITcgBSgC8AEhZSAFKALsASE4IAUoAuQBIWYgBSgC4AEhOSAFKALQASFnIAUoAswBITogBSgCvAEhaCAFKAK4ASE7IAUoAqgBIWkgBSgCpAEhPCAFKAKYASFqIAUoApQBIT0gBSgChAEhayAFKAKAASE+IAUoAnAhbCAFKAJsIT8gBSgCXCFtIAUoAlghQCAFKAJUISggBSgCUCESIAUoAkwhQSAFKAJIIW4gBSgCQCEpIAUoAjwhQiAFKAI4IW8gBSgCMCEqIAUoAiwhQyAFKAIoIXAgBSgCICErIAUoAhwhRCAFQQA2ApQJIAVCgICAgMAANwKMCQJAAkACQAJAIBNBAnQiH0EEELMOIhAEQCAQIQEgE0EBRwRAIB9BBGsiAQRAIBBB/wEgAfwLAAsgASAQaiEBCyABQX82AgAgH0EEELMOIg9FDQEgDyEBIABBPGohRSAAQRhqIRkgE0EBRwRAIB9BBGsiAQRAIA9B/wEgAfwLAAsgASAPaiEBCyABQX82AgAgFiATQfADbGohFSAFQbgLaiEsIAVB3ARqIUYgBUHqC2ohRyAFQf0LaiFIIAVBkAxqIUkgBUHTC2ohSiAFQY8LaiFLIAVB1wJqIUxBACEOIBYhBEEAIQgDQCAEQegCai0AACJNQQJGDQUgBEHLAmotAAAhIiAEQckCai8AACEeIARBGGopAwAhcyAEQRBqKQMAIXIgBEGoA2oqAAAhdCAEQZgDaigAACEjIARBzQJqLQAAIQ0gBEHMAmotAAAhTiAEQcgCai0AACECIARBxAJqLQAAIU8gBEHAAmoqAgAhdSAEQbwCaioCACF2IARBqAJqLQAAIVAgBEGkAmoqAgAhdyAEQaACaioCACF4IARBjAJqLQAAIREgBEGIAmoqAgAheSAEQYQCaioCACF6IARB8AFqLQAAIRQgBEHsAWoqAgAheyAEQegBaioCACF8IARB1AFqLQAAIVEgBEHQAWoqAgAhfSAEQcwBaioCACF+IARBuAFqLQAAIVIgBEG0AWoqAgAhfyAEQbABaioCACGAASAEQZwBaioCACGBASAEQZgBaioCACGCASAEQZQBaioCACGDASAEQZABaioCACGEASAEQfQAaioCACGFASAEQeQAaigCACFTIARB4ABqKgIAIYYBIARB3ABqKgIAIYcBIARB2ABqKgIAIYgBIARB1ABqKgIAIYkBIARB0ABqKgIAIYoBIARBzABqKgIAIYsBIARByABqKgIAIYwBIARBxABqKgIAIY0BIARBQGsqAgAhjgEgBEE8aioCACGPASAEQThqKgIAIZABIARBNGoqAgAhkQEgBEEwaioCACGSASAEQSxqKgIAIZMBIARBKGoqAgAhlAEgBEEkaioCACGVASAEQSBqKgIAIZYBIARBDGoqAgAhlwEgBEEIaioCACGYASAEQQRqKgIAIZkBIAQqAgAhmgEgBUGIC2oiVCAEQfAAaigCADYCACAFQegKaiIBQQhqIlUgBEGAAWopAwA3AwAgAUEQaiJWIARBiAFqKQMANwMAIAVBuApqIgFBCGoiVyAEQcEBaikAADcDACABQQ9qIlggBEHIAWooAAA2AAAgBSAEQegAaikCADcDgAsgBSAEQfgAaikDADcD6AogBSAEQaABaikDADcD0AogBSAEQagBaikDADcD2AogBSAEQbkBaikAADcDuAogBUGgCmoiAUEPaiJZIARB5AFqKAAANgAAIAFBCGoiWiAEQd0BaikAADcDACAFQYgKaiIBQQhqIlsgBEH5AWopAAA3AwAgAUEPaiJcIARBgAJqKAAANgAAIAVB8AlqIgFBCGoiXSAEQZUCaikAADcDACABQQ9qIl4gBEGcAmooAAA2AAAgBSAEQdUBaikAADcDoAogBSAEQfEBaikAADcDiAogBSAEQY0CaikAADcD8AkgBUHYCWoiAUEPaiJfIARBuAJqKAAANgAAIAFBCGoiYCAEQbECaikAADcDACAFQdYJaiIaIARBxwJqLQAAOgAAIAVBuAlqIgFBGGoiYSAEQeYCai8BADsBACABQRBqImIgBEHeAmopAQA3AwAgAUEIaiJjIARB1gJqKQEANwMAIAUgBEGpAmopAAA3A9gJIAUgBEHFAmovAAA7AdQJIAUgBEHOAmopAQA3A7gJIEwgBEGQA2opAAA3AAAgBUGwAmoiAUEgaiIbIARBiQNqKQAANwMAIAFBGGoiLSAEQYEDaikAADcDACABQRBqIi4gBEH5AmopAAA3AwAgAUEIaiIvIARB8QJqKQAANwMAIAUgBEHpAmopAAA3A7ACIAVBsAlqIhcgBEGkA2ooAAA2AgAgBSAEQZwDaikAADcDqAkgBUGgCWoiHSAEQbQDaigAADYCACAFIARBrANqKQAANwOYCSAFQegGaiIBQTBqIjAgBEHoA2opAAA3AwAgAUEoaiIxIARB4ANqKQAANwMAIAFBIGoiMiAEQdgDaikAADcDACABQRhqIgogBEHQA2opAAA3AwAgAUEQaiILIARByANqKQAANwMAIAFBCGoiDCAEQcADaikAADcDACAFIARBuANqKQAANwPoBgJ/AkACQAJAAkACQCAIRSAIICVGciIGBEAgCCATTw0CIA4gEGogBSgClAkiMzYCACAFQQA2ApwLIAVCADcClAsgBUKAgICAwAA3AowLIAVB0ARqIAVBjAtqIgEQfCAFQQA2AuALIAVCADcC2AsgBUKAgICAwAA3AtALIAEgBUHQC2oQfCAFKAKMCSAzRgRAIwBBIGsiASQAQQQgBUGMCWoiNCgCACIhQQF0IgMgA0EETRsiB61CoAJ+InFCIIhCAFIEQEEAQQBBnJDCABDTDQALAkAgcaciA0H8////B00EfyABICEEfyABICFBoAJsNgIcIAEgNCgCBDYCFEEEBUEACzYCGCABQQhqQQQgAyABQRRqEPQJIAEoAghBAUcNASABKAIQISAgASgCDAVBAAsgIEGckMIAENMNAAsgASgCDCEDIDQgBzYCACA0IAM2AgQgAUEgaiQACyAFKAKQCSAzQaACbGoiA0EANgJYIANCADcCUCADQoCAgIDAADcCSCADQgQ3AkAgA0IANwI4IANCBDcCMCADQgA3AiggA0IENwIgIANCADcCGCADQgQ3AhAgA0IANwIIIANCgICAgIACNwIAIAMgBSkC0AQ3AlwgA0HkAGogBUHQBGoiAUEIaikCADcCACADQewAaiABQRBqKQIANwIAIANB9ABqIAFBGGopAgA3AgAgA0H8AGogAUEgaikCADcCACADQQA2AqQBIANCADcCnAEgA0KAgICAwAA3ApQBIANCgICAgHA3AowBIANCgICAgMAANwKEASADQQQ2AogCIANCgICAgMAANwLQASADQgA3AtgBIANCBDcC4AEgA0IANwLoASADQgQ3AvABIANCgICAgMAANwL4ASADQgA3AoACIAMgBSkCjAs3AqgBIANBsAFqIAVBjAtqIgFBCGopAgA3AgAgA0G4AWogAUEQaikCADcCACADQcABaiABQRhqKQIANwIAIANByAFqIAFBIGopAgA3AgAgA0GcAmpBADoAACADQZQCakIANwIAIANCADcCjAIgAyAcOgCdAiAFIDNBAWo2ApQJDAELIBMgI00NCSAIIBNPDQogDiAQaiAQICNBAnRqKAIANgIACyAIIBNGDQEgDiAQaigCACIDIAUoApQJIgFPDQIgDiAPaiAFKAKQCSADQaACbGoiBygCCCIDNgIAIAYNAyAeICJBEHRyDAQLIAggE0GMkMIAEIgLAAsgEyATQayQwgAQiAsACyADIAFBvJDCABCICwALIFQgFygCADYCACAFIAUpA6gJNwOACyAFQdAEaiICQQhqIgEgHSgCADYCACAFIAUpA5gJNwPQBEIAIXIgS0IANwAAIEtBCGpCADcAACBKQgA3AAAgSkEIakIANwAAIElCADcAACBJQQhqQgA3AAAgSEIANwAAIEhBCGpCADcAACBHQgA3AAAgR0EIakIANwAAIEZCADcCAEEAIU4gRkEIakEANgIAICxBEGpCADcBACAsQQhqQgA3AQAgLEIANwEAIAVCADcD0AogBUIANwPYCiBWIAJBEGopAwA3AwAgVSABKQMANwMAIAUgBSkD0AQ3A+gKIFggBUGMC2oiAUEPaigAADYAACBXIAFBCGopAAA3AwAgBSAFKQCMCzcDuAogWSAFQdALaiIBQQ9qKAAANgAAIFogAUEIaikAADcDACAFIAUpANALNwOgCiBcIAVBjQxqIgFBD2ooAAA2AAAgWyABQQhqKQAANwMAIAUgBSkAjQw3A4gKIF4gBUH6C2oiAUEPaigAADYAACBdIAFBCGopAAA3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AjwiC0H/////A3EiBrOUkiIwIBkgHZMgGiAek5QgGyAfk5QgCLOUIBwgKSAcIClgGyIZICAgLCAgICxfGyIdkyAhICggISAoYBsiGiAiICsgIiArXxsiHpOUICMgJyAjICdgGyIbICQgKiAkICpfGyIfk5QgBkEBarOUkiIcXUUEQCAGIAhNDQEgHCAwXA0BCyAIQQFHDQIgByADKQMANwMAIAcgASkCADcDICAHIANBGGopAwA3AxggByADQRBqKQMANwMQIAcgA0EIaikDADcDCCAHIAFBCGooAgA2AiggACgCACAFRgR/IABBiOHCABDICCAAKAIEBSAECyAFQQZ0aiIBIAcpAwA3AwAgASACNgIsIAEgFikCADcCMCABQShqIAcoAig2AgAgAUEgaiAHKQMgNwMAIAFBGGogBykDGDcDACABQRBqIAcpAxA3AwAgAUEIaiAHKQMINwMAIAFBOGogFkEIaigCADYCACABQYGAgIB8NgI8IAAgBUEBajYCCCAKQQF0IQMgACgCFCIBIAAoAgxGBEAgAEEMakGY4cIAELkICyAAKAIQIAFBAnRqIAM2AgAgACABQQFqNgIUIAAoAggiASAKTQ0HIAAoAgQgCkEGdGoiASgCDCIDIAAoAiBPDQggACgCHCADQQN0aiIDKAIARQ0IIAMgBUEBdCIDNgIEIAIgACgCIE8NASAAKAIcIAJBA3RqIgAoAgBFDQEgACADQQFyNgIEIAEgBTYCDCABIAEoAhxBAWo2AhwgASABKgIAIhkgLCAZICxfGzgCACABIAEqAgQiGSArIBkgK18bOAIEIAEgASoCCCIZICogGSAqXxs4AgggASABKgIQIhkgKSAZIClgGzgCECABIAEqAhQiGSAoIBkgKGAbOAIUIAEgASoCGCIZICcgGSAnYBs4AhggFSQADwsgBkEBRgRAIAcgAykDIDcDYCAHIANBOGopAwA3A3ggByADQTBqKQMANwNwIAcgA0EoaikDADcDaCAAKAIAIAVGBH8gAEG44MIAEMgIIAAoAgQFIAQLIAVBBnRqIgMgASkCADcCACADIAI2AgwgAyAWKQIANwIQIANBgYCAgHw2AhwgAyAHKQNgNwMgIANBCGogAUEIaigCADYCACADQRhqIBZBCGooAgA2AgAgA0EoaiAHKQNoNwMAIANBMGogBykDcDcDACADQThqIAcpA3g3AwAgACAFQQFqNgIIIApBAXRBAXIhAyAAKAIUIgEgACgCDEYEQCAAQQxqQcjgwgAQuQgLIAAoAhAgAUECdGogAzYCACAAIAFBAWo2AhQgACgCCCIBIApNDQUgAiAAKAIgTw0GIAAoAhwgAkEDdGoiASgCAEUNBiAAKAIEIQIgASAFQQF0IgE2AgQCQCACIApBBnRqIgIoAiwiAyAAKAIgTw0AIAAoAhwgA0EDdGoiACgCAEUNACAAIAFBAXI2AgQgAkEgaiIAIAU2AgwgACAAKAIcQQFqNgIcIAAgACoCACIZICwgGSAsXxs4AgAgACAAKgIEIhkgKyAZICtfGzgCBCAAIAAqAggiGSAqIBkgKl8bOAIIIAAgACoCECIZICkgGSApYBs4AhAgACAAKgIUIhkgKCAZIChgGzgCFCAAIAAqAhgiGSAnIBkgJ2AbOAIYIBUkAA8LQajdwgBBD0H44MIAENcLAAsgAyALQQFqNgI8IAMgGzgCOCADIBo4AjQgAyAZOAIwIAMgHzgCKCADIB44AiQgAyAdOAIgIAMoAiwhCgwIC0Go3cIAQQ9ByOHCABDXCwALIAMgLjgCGCADIDg4AhQgAyAlOAIQIAMgLzgCCCADIC04AgQgAyAmOAIAIAMgCUEBajYCHCADKAIMIQoMBgsgCCAGQcjiwgAQiAsACyAKIAVBqODCABCICwALIAogAUHY4MIAEIgLAAtBqN3CAEEPQejgwgAQ1wsACyAKIAFBqOHCABCICwALQajdwgBBD0G44cIAENcLAAsgACgCCCIEIApLDQALIAogBEHY4cIAEIgLAAsgAyACNgIsIANBgYCAgHw2AjwgAyABKQIANwIgIAMgASkCDDcCMCADQShqIAFBCGooAgA2AgAgA0E4aiABQRRqKAIANgIAIAVBATYCBCAVJAALpiwDHH8HfiZ9IwBBoBJrIgkkACAJIAg6ADcgCSAFOAIwAkACQAJAAkACfwJAAkAgBygCACIIRQ0AIAlBKGogCCAHKAIEKAIYEQAAIAlB0AdqIAkoAigiCCAJKAIsKAIMEQAAIAhFDQAgCSkD0AdC7KO27sHd7PlWhSAJKQPYB0KoieGE1YPfwVeFhFANAQtBIEEIELMOIghFDQMgCEEAOgAYIAhCidm54o7TvpcINwMQIAhBCGpBwNXCACkDADcDACAIQbjVwgApAwA3AwACQCAHKAIAIgxFDQAgBygCBCIKKAIAIgsEQCAMIAsRBgALIAooAgQiC0UNACAMIAsgCigCCBCIDwsgB0Hg+sIANgIEIAcgCDYCAEHg+sIADAELIAcoAgAiCEUNASAHKAIECyEHIAlBIGogCCAHKAIcEQAAIAlB0AdqIAkoAiAiDCAJKAIkKAIMEQAAAkAgDEUNACAJKQPQB0Lso7buwd3s+VaFIAkpA9gHQqiJ4YTVg9/BV4WEQgBSDQAgDCAMLQAYQX9zQQFxIhE6ABggBigCCCESIAYoAgQhFyAGQgQ3AgQgBigCACEYIAZBADYCACADIAQoAhAiCBEEACETIAkgAioCbCI+QwAAAD+UIkQ4AkAgCSACKgJoIj9DAAAAP5QiRTgCPCAJIAIqAmQiQEMAAAA/lCJGOAI4Q///f38hMUP//3//ITQCQCACKAIIRQRAQ///f/8hLUP//3//IQVD//9/fyEsQ///f38hLgwBC0P//3//IS1D//9//yEFQ///f38hLEP//39/IS4CQAJAIAIoAgQiBygCPEH/////A3EgBygCHEH/////A3FqDgICAAELIAcqAhghNCAHKgIUIS0gByoCECEFIAcqAgghMSAHKgIEISwgByoCACEuDAELIAcqAhgiBSAHKgI4Ii0gBSAtYBshNCAHKgIUIgUgByoCNCItIAUgLWAbIS0gByoCECIFIAcqAjAiLCAFICxgGyEFIAcqAggiLCAHKgIoIi4gLCAuXxshMSAHKgIEIiwgByoCJCIuICwgLl8bISwgByoCACIuIAcqAiAiLyAuIC9fGyEuCwJAAkACQAJAIAMgCBEEACIHKAIIRQ0AIAcoAgQiBygCPEH/////A3EgBygCHEH/////A3FqDgIAAQILIAlC////+////79/NwPgByAJQv////v3//+/fzcD2AcgCUL////79///v/8ANwPQBwwCCyAJQdgHaiAHQQhqKAIANgIAIAlB5AdqIAdBGGooAgA2AgAgCSAHKQIANwPQByAJIAcpAhA3AtwHDAELIAkgByoCGCIvIAcqAjgiMCAvIDBgGzgC5AcgCSAHKgIUIi8gByoCNCIwIC8gMGAbOALgByAJIAcqAhAiLyAHKgIwIjAgLyAwYBs4AtwHIAkgByoCCCIvIAcqAigiMCAvIDBf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KgKsAQwBCyADKgK4ASEmIAMqArQBISogAyoCsAEhJCADKgK8AQshICANIQYgCyEFIAohBCAIIQcCQAJAAkAgGS0A5QJBAWsOAwABAQILIAwhBiASIQUgESEEIBAhBwwBCyAcIQYgGCEFIBchBCATIQcLICYgBCoCAJQhJiAqIAUqAgCUISogJCAGKgIAlCEkICAgByoCAJQLISAgDkHQAGooAgAhBCAOQdQAaigCACIFKAIIIQYgAiAgOAK0ASACICY4ArABIAIgKjgCrAEgAiAkOAKoASADIAJBzABqIAJBDGogBCAGQQFrQXhxakEIaiAFIA5BhAFqIAJBqAFqEEQLIAFBAWohASAAQbABaiEADAALAAsgA0GgAWohCCADQbABaiEKAkAgAEHAAHFFDQAgA0HgAWohBCAPKAIQQbABbCEFIA8oAgwhAEEAIQEDQAJAIAUEQCAAKAIARQ0BIABBBGooAgAhCyAAQRBqIgYoAkQhByACQeAAaiINIAYoAkAgBygCCEEBa0F4cWpBCGogBkH0AGogBygClAERAQAgAiAGNgKQASACIAs2AowBIAIgATYCiAEgAkECNgKEASACIAIqAnQgAioCaJNDAAAAP5Q4AoABIAIgAioCcCACKgJkk0MAAAA/lDgCfCACIAIqAmwgAioCYJNDAAAAP5Q4AnggAiANNgKUASACQQxqIgYgAkGEAWoiBxCPA0UNASACQoCAgICAgIDAPzcCsAEgAkIANwKoASACIAIqAmggAioCdJJDAAAAP5Q4AsABIAIgAioCZCACKgJwkkMAAAA/lDgCvAEgAiACKgJgIAIqAmySQwAAAD+UOAK4ASACQZgBaiILQQhqIARBCGopAgA3AwAgAiAEKQIANwOYASADIAcgBiACQfgAakGQyMEAIAJBqAFqIAsQRAwBCyADKAKAAiEADAILIABBsAFqIQAgAUEBaiEBIAVBsAFrIQUMAAsACyACIAo2AmwgAiAINgJoIAIgFDYCZCACIAJBDGo2AmACQCAAQQhxRQ0AIBpFDQAgGkGAA2whCCADQfAAaiEFIANB4ABqIQcgAkHcAWohCiACQcwBaiEBIAJBvAFqIQRBACEGA0AgBiAbaiIAQegCaikDACFAIARBCGogB0EIaikCADcCACAEIAcpAgA3AgAgASAFKQIANwIAIAFBCGogBUEI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DQALCwJAIAAoAkAiAUGAgICAeEYNACABBEAgACgCRCABQQxsQQQQiA8LIAAoAkwiAUUNACAAKAJQIAFBJGxBBBCIDwsgACASNgJUIAAgBTYCUCAAIAI2AkwgACAONgJIIAAgEDYCRCAAIBo2AkAgBCgCNCIABEAgBCgCMCAAQQxsQRNqQXhxIgJrIAAgAmpBCWpBCBCIDwsgBCgCHCIABEAgBCgCGCAAQRRsQRtqQXhxIgJrIAAgAmpBCWpBCBCIDwsgBEHgAGokAA8LICQgAUGsycIAENMNAAvLJQMSf1d9BX4jAEGwAmsiBCQAIARC////+w83AtgBIARC////+////79/NwLQASAEQv////v3//+//wA3AsgBIARCgICAgPD//7//ADcCwAEgBEL////7////v383ArgBIARC////+/f//79/NwKwASAEQv////v3//+//wA3AqgBIARC////+w83AqABIARC////+////79/NwKYASAEQv////v3//+//wA3ApABIARCgICAgPD//7//ADcCiAEgBEL////7////v383AoABIARC////+/f//79/NwJ4IARC////+/f//7//ADcCcCAEQv////sPNwJoIARC////+////79/NwJgIARC////+/f//7//ADcCWCAEQoCAgIDw//+//wA3AlAgBEL////7////v383AkggBEL////79///v383AkAgBEL////79///v/8ANwI4IARC////+w83AjAgBEL////7////v383AiggBEL////79///v/8ANwIgIARCgICAgPD//7//ADcCGCAEQv////v///+/fzcCECAEQv////v3//+/fzcCCCAEQv////v3//+//wA3AgACQAJAAkACQCADQQFLBEAgAkEgaiEIIANBBXQiByACaiEFIAIqAgggAioCGJJDAAAAP5QiGyEcIAIqAgAgAioCEJJDAAAAP5QiFyEYIAIqAgQgAioCFJJDAAAAP5QiFiEZA0AgGyAIQQhqKgIAIAhBGGoqAgCSQwAAAD+UIhogGiAbXxshGyAZIAhBBGoqAgAgCEEUaioCAJJDAAAAP5QiHSAZIB1gGyEZIBwgGiAaIBxgGyEcIBYgHSAWIB1fGyEWIBggCCoCACAIQRBqKgIAkkMAAAA/lCIaIBggGmAbIRggFyAaIBcgGl8b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CyAFQcglaiABQQhqKAIANgIAIAVB1CVqIAFBGGooAgA2AgAgBSABKQIANwPAJSAFIAEpAhA3AswlDAELIAUgASoCGCIKIAEqAjgiESAKIBFgGzgC1CUgBSABKgIUIgogASoCNCIRIAogEWAbOALQJSAFIAEqAhAiCiABKgIwIhEgCiARYBs4AswlIAUgASoCCCIKIAEqAigiESAKIBFfGzgCyCUgBSABKgIEIgogASoCJCIRIAogEV8bOALEJSAFIAEqAgAiCiABKgIgIhEgCiARXxs4AsAlCyAMIAuSIScgDiANkiEqIAYgCZIhKCAFKgLAASExIAUqArwBITIgBSoCuAEhMyAFKgK0ASE0IAUqArABITUgBSoCrAEhNiAFKgKoASE3IAUqAqQBITggBSoCoAEhOSAFKgKcASE6IAUqApgBITsgBSoClAEhPCAFQcweaiAFQcAlaiADEMIDIBogBSoC4B6SIQkgGCAFKgLcHpIhCiAFKgLUHiAakyELIAUqAtAeIBiTIQ8CQAJAIAUqAsweIBuTIhAgFCAbkyIGIAYgEF8bIgwgGyAFKgLYHpIiFCAbICSSIgYgBiAUYBsiDl4NACAKIBggI5IiBiAGIApgGyIRIA8gJiAYkyIGIAYgD18bIg1dDQAgCSAaICCSIgYgBiAJYBsiBiALICUgGpMiEiALIBJgGyISXUUNAQsgECEMIA8hDSALIRIgFCEOIAohESAJIQYLICcgGZMhGSAqIB+TIR8gKCAekyEeIBWMIQ8gE4whIyAWjCEgIAUgBjgC2AEgBSAROALUASAFIA44AtABIAUgEjgCzAEgBSANOALIASAFIAw4AsQBQ///f/8hBkP//39/IQ4CQCBMRQRAQ///f38hCUP//39/IQ1D//9//yELQ///f/8hDAwBC0P//39/IQlD//9/fyENQ///f/8hC0P//3//IQwCQAJAIAQoAgQiASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghDCABKgIUIQsgASoCECEGIAEqAgghDSABKgIEIQkgASoCACEODAELIAEqAhgiBiABKgI4IgkgBiAJYBshDCABKgIUIgYgASoCNCIJIAYgCWAbIQsgASoCECIGIAEqAjAiCSAGIAlgGyEGIAEqAggiCSABKgIoIgogCSAKXxshDSABKgIEIgkg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AEEQcRsiUCBFayBHbGogTWxqrUIghoQhXQNAIAVBuCxqIgBBIGogA0EgaigCACJHNgIAIABBGGogA0EYaikCADcDACAAQRBqIANBEGopAgA3AwAgAEEIaiADQQhqKQIANwMAIAUgAykCADcDuCwgR0H/AXEiAEHBAE8NFSAAQYypwQBqLQAAIQACQAJAAkACQAJAIFYOAwABAgQLIABBAWtB/wFxQQNJDQIMAwsgAEEBa0H/AXFBAkkNAQwCCyAAQQFHDQELQ///f38hDQJAIEZFBEBD//9/fyEMQ///f38hDgwBC0P//39/IQxD//9/fyEOAkACQCABKAI8Qf////8DcSABKAIcQf////8DcWoOAgIAAQsgASoCCCENIAEqAgQhDCABKgIAIQ4MAQsgASoCCCIKIAEqAigiCyAKIAtfGyENIAEqAgQiCiABKgIkIgsgCiALXxshDCABKgIAIgogASoCICILIAogC18bIQ4LIA8gDZIgBpWO/ABBAWshRSAQIAySIAmVjvwAIldBAWshSSAdIA6SIByVjvwAIlhBAWshS0P//3//IQ0CQCBGRQRAQ///f/8hDEP//3//IQ4MAQtD//9//yEMQ///f/8hDgJAAkAgASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghDSABKgIUIQwgASoCECEODAELIAEqAhgiCiABKgI4IgsgCiALYBshDSABKgIUIgogASoCNCILIAogC2AbIQwgASoCECIKIAEqAjAiCyAKIAtgGyEOCyAFKALILCFIIAUoAsQsIUogBSgCwCwhTSAFIF03AqgXIAUgUDYCpBcgBSBONgKgFyAFIFE2ApwXIAUgTzYCmBcgBSBSNgKUFyAFIFM2ApAXIAUgSiAMIBCTIAmVjvwAQQFqIlkgR0E/c0EAIEdBP2tB/wFxQQJPGyIAQQRxGyJHNgLAFyAFIEggDSAPkyAGlY78AEEBaiAAQRBxGyJaNgLEFyAFIE0gDiAdkyAclY78AEEBaiJbIABBAXEbIlw2ArwXIAUgSiBJIABBCHEbIko2ArQXIAUgRSBIIABB/wFxQSBJGyJINgK4FyAFIE0gSyAAQQJxGyIANgKwFyAFIABBASBYayIAaiBbIEtrIksgSkEBIFdrIkpqIFkgSWsiSSBIIEVrbGpsaq0gACBcaiBHIEpqIFogRWsgSWxqIEtsaq1CIIaENwLIFyAFIAVBuCxqNgLQFyAFIAVBgB5qIgA2AowXIAVB9AFqIFUgVCAAIAMQRgsgBUGYEGogBUHAJWoQeSAFKAKYEA0ACwwBCwwTCyAFKALAJUECRg0AIAUoAsQmIgBBIUkNACAFKALIJSAAQQJ0QQQQiA8LIAVBiC1qIAVBzB5qEHkgBSgCiC0NAAsMBAtBqIHDABCRDwALIAVBADYC0CUgBUEBNgLEJSAFQYDawgA2AsAlIAVCBDcCyCUgBUHAJWpBiNrCABC4DQALQZiBwwAQkQ8AC0EIQSBBkMTEACgCACIAQcwIIAAbEQAAAAsCQCAFKALMHkECRg0AIAUoAtAfIgBBIUkNACAFKALUHiAAQQJ0QQQQiA8LIAUgNiAclY78ADYCzB4gBSAzIByVjfwANgLAJSAFIDQgAioCbCIGlY78ADYC1B4gBSA1IAIqAmgiCZWO/AA2AtAeIAUgMSAGlY38ADYCyCUgBSAyIAmVjfwANgLEJSAFQZgQaiIAIAIgBUHMHmogBUHAJWoQqAQgBUGMF2oiASAAQfQG/AoAACAFQYAeaiIAIAEQeSAFKAKAHkEBRgRAIBFDAAAAP5QhDiASQwAAAD+UIQ8gBUGsLWohVCAFQYwtaiFVIAQoAgQhASAFQbwsaiEDIABBBGohCANAIAVBqB5qIgBBIGogCEEgaigCACJHNgIAIABBGGogCEEYaikCADcDACAAQRBqIAhBEGopAgA3AwAgAEEIaiAIQQhqKQIANwMAIAUgCCkCADcDqB4CQAJAIEdB/wFxIgBBwQBJBEAgAEGMqcEAai0AACJWQQFrQf8BcUECTw0CIAUoArAeIUUgBSgCuB4hSSAFKAK0HiFLIAVBwCVqIkYgAhCLBSAFKALAJSFIIAUoAsglIU8gBSgCxCUhSiBGIAIQiwUgBSgCzCUhTSAFKALUJSFQIAUoAtAlIU4gBSgCLCIAKgIQIRsgACoCFCEcIAUqAsAeIhAgACoCACIGlCAFKgK8HiIUIAAqAgQiCZSTIgogCpIhDCAUIAAqAggiCpQgBSoCxB4iEyAGlJMiCyALkiENIAUgACoCGCATIAAqAgwiCyAMlCAGIA2UIAkgEyAJlCAQIAqUkyITIBOSIhOUk5KSkiIdIAUqAjAiFSAFKgJYkiIWIAogCpQiFyALIAuUIh8gBiAGlCIekyIZIAkgCZQiGpOSi5QgFSAFKgJUkiIYIAkgCpQiICAgkiIgIAYgC5QiIyAjkiIjkouUIBUgBSoCUJIiFSAKIAaUIiQgJJIiJCAJIAuUIiUgJZIiJZOLlJKSIiaTIBGVjvwANgKQLSAFIBwgECALIA2UIAogE5QgBiAMlJOSkpIiECAWICAgI5OLlCAVIAkgBpQiBiAGkiIGIAogC5QiHCAckiIckouUIBggGiAZkiAXk4uUkpIiGZMgEpWO/AA2AowtIAUgGyAUIAsgE5QgCSAMlCAKIA2Uk5KSkiIJIBYgJCAlkouUIBggBiAck4uUIBUgHiAfkiAakyAXk4uUkpIiBpMgIZWO/AA2AogtIAUgHSAmkiARlY38ADYCyCUgBSAQIBmSIBKVjfwANgLEJSAFIAkgBpIgIZWN/AA2AsAlIAVBzB5qIgAgBCAFQYgtaiBGEKgEIEYgAEH0BvwKAAAgBUG4LGogRhB5IAUoArgsQQFHDQEgRSBNIEdBP3NBACBHQT9rQf8BcUECTxsiAEEBcRshUSBOIEpBAWsiUmshRiBNIEhBAWsiTWshR0EBIEhrIkggRSBNIABBAnEbIk1qQQEgSmsiSiBLIFIgAEEIcRsiUmogRiBPQQFrIkUgSSAAQf8BcUEgSRsiTyBFa2xqIEdsaq0gSCBRaiBLIE4gAEEEcRsiTiBKaiBJIFAgAEEQcRsiUCBFayBGbGogR2xqrUIghoQhXQNAIAVB4CxqIgBBIGogA0EgaigCACJGNgIAIABBGGogA0EYaikCADcDACAAQRBqIANBEGopAgA3AwAgAEEIaiADQQhqKQIANwMAIAUgAykCADcD4CwgRkH/AXEiAEHBAE8NEQJAAkACQCAAQYypwQBqLQAAQQFrDgMBAQACCyBWQQFHDQELQ///f38hCQJAIExFBEBD//9/fyENQ///f38hDAwBC0P//39/IQ1D//9/fyEMAkACQCABKAI8Qf////8DcSABKAIcQf////8DcWoOAgIAAQsgASoCCCEJIAEqAgQhDSABKgIAIQwMAQsgASoCCCIGIAEqAigiCSAGIAlfGyEJIAEqAgQiBiABKgIkIgogBiAKXxshDSABKgIAIgYgASoCICIKIAYgCl8bIQwLIA4gCZIgEZWO/ABBAWshRyAPIA2SIBKVjvwAIlNBAWshRSAiIAySICGVjvwAIldBAWshSUP//3//IQkCQCBMRQRAQ///f/8hDUP//3//IQwMAQtD//9//yENQ///f/8hDAJAAkAgASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghCSABKgIUIQ0gASoCECEMDAELIAEqAhgiBiABKgI4IgkgBiAJYBshCSABKgIUIgYgASoCNCIKIAYgCmAbIQ0gASoCECIGIAEqAjAiCiAGIApgGyEMCyAFKALwLCFLIAUoAuwsIUggBSgC6CwhSiAFIF03AsQtIAUgUDYCwC0gBSBONgK8LSAFIFE2ArgtIAUgTzYCtC0gBSBSNgKwLSAFIE02AqwtIAUgSCANIA+TIBKVjvwAQQFqIlggRkE/c0EAIEZBP2tB/wFxQQJPGyIAQQRxGyJGNgKcLSAFIEsgCSAOkyARlY78AEEBaiAAQRBxGyJZNgKgLSAFIEogDCAikyAhlY78AEEBaiJaIABBAXEbIls2ApgtIAUgSCBFIABBCHEbIkg2ApAtIAUgRyBLIABB/wFxQSBJGyJLNgKULSAFIEogSSAAQQJxGyIANgKMLSAFIABBASBXayIAaiBaIElrIkkgSEEBIFNrIkhqIFggRWsiRSBLIEdrbGpsaq0gACBbaiBGIEhqIFkgR2sgRWxqIElsaq1CIIaENwKkLSAFIAVBqB5qIgA2AswtIAUgBUHgLGo2AogtIAVB9AFqIFUgVCADIAAQRgsgBUG4LGogBUHAJWoQeSAFKAK4LA0ACwwBCwwPCyAFKALAJUECRg0AIAUoAsQmIgBBIUkNACAFKALIJSAAQQJ0QQQQiA8LIAVBgB5qIAVBjBdqEHkgBSgCgB4NAAsLAkAgBSgCjBdBAkYNACAFKAKQGCIAQSFJDQAgBSgClBcgAEECdEEEEIgPCyAFLQA3IUcgRCgCDCIIRQ0AIEQoAgAiA0EIaiEEIAMpAwBCf4VCgIGChIiQoMCAf4MhXQNAAkAgXVAEQANAIANB4AFrIQMgBCkDACFdIARBCGohBCBdQoCBgoSIkKDAgH+DIl1CgIGChIiQoMCAf1ENAAsgXUKAgYKEiJCgwIB/hSFdCwJAIAMgXXqnQQN2QWRsaiIBQQRrLQAAIEdHDQAgAUEMaygCACIAIAcoAggiAk8NASAHKAIEIABB7ABsaiICKAJIIgBFDQAgAkFAayFMIABBAWshSSABQQhrIksoAgAhAUEAIUVBJCECAkACQANAIAEgRXZBAXFFDQEgAkEkaiECIAAgRUEBaiJFRw0AC0EAIUYMAQtBASFGIEUgSUYNACBFQQFqIQEgTCgCBCACaiFFA0ACQCBLKAIAIAF2QQFxRQRAIEZBAWohRgwBCyBFIEZBXGxqIgIgRSkCADcCACACQSBqIEVBIGooAgA2AgAgAkEYaiBFQRhqKQIANwIAIAJBEGogRUEQaikCADcCACACQQhqIEVBCGopAgA3AgALIEVBJGohRSAAIAFBAWoiAUcNAAsLIEwgACBGazYCCAsgXUIBfSBdgyFdIAhBAWsiCA0BDAILCyAAIAJBuIHDABCICwALIEQoAgwiAgRAIEQoAgQhByBEKAIAIgBBCGohBCAAKQMAQn+FQoCBgoSIkKDAgH+DIV0gRCgCCCEIIAAhAyACIQEDQCBdUARAA0AgA0HgAWshAyAEKQMAIV0gBEEIaiEEIF1CgIGChIiQoMCAf4MiXUKAgYKEiJCgwIB/UQ0ACyBdQoCBgoSIkKDAgH+FIV0LIF1CAX0hXiBHIAMgXXqnQQN2QWRsaiJGQQRrLQAARwRAQYABIUUgACBGa0EcbSJGIABqIkwpAAAiXyBfQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAAgRkEIayAHcWoiRikAACJfIF9CAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgRCAIQQFqIgg2AghB/wEhRQsgTCBFOgAAIEQgAUEBayIBNgIMIEZBCGogRToAAAsgXSBegyFdIAJBAWsiAg0ACwsgBSgCPCEAIAUoAkAiAwRAIABBxABqIQQDQCAEQQRrKAIAIgEEQCAEKAIAIAFBJGxBBBCIDwsgBEHsAGohBCADQQFrIgMNAAsLIAUoAjgiAUUNACAAIAFB7ABsQQQQiA8LIAVB0C1qJAAMBgsgASAIIAUqAgAgBiAHQQAQigEMBgsgRUH/AXFBBUYNACBJQf8BcUEFRw0BCyBEIEdyRQ0BIwBBQGoiRCQAIERBGGogAiADKAJgEQAAIERBIGogRCgCGCJGIEQoAhwoAgwRAAAgRCkDICFdIEQpAyghXiBEQRBqIAQgBSgCuAERAAACQAJAIEZBACBdQoHP7fuqjuWV5wCFIF5CqMee2eG4w5NHhYRQGyJGBEAgRCgCECJHDQELIERBCGogAiADKAK4AREAACBEKAIMIQMgRCgCCCECIEQgBCAFKAJgEQAAIERBIGoiBCBEKAIAIgUgRCgCBCgCDBEAACACRQ0BIAVBACBEKQMgQoHP7fuqjuWV5wCFIEQpAyhCqMee2eG4w5NHhYRQGyIFRQ0BIEQgASoCDCIMOAIsIEQgASoCCCIJjDgCKCBEIAEqAgQiCow4AiQgRCABKgIAIguMOAIgIEQgDCALIAEqAhQiDZQgCiABKgIQIhGUkyISIBKSIhKUIAogCiABKgIYIg6UIAkgDZSTIg8gD5IiD5QgCyAJIBGUIAsgDpSTIhAgEJIiEJSTkiAOkzgCOCBEIAwgEJQgCyASlCAJIA+Uk5IgDZM4AjQgRCAMIA+UIAkgEJQgCiASlJOSIBGTOAIwIAAgBCAFIAIgAyAGIAcgCEEBEDYMAQsgACABIEYgRyBEKAIUIAYgByAIQQAQNgsgREFAayQADAMLIEcEQEEAIUUgACABIEcgTEEMaigCACBMQRBqKAIAIAQgBSAGIAcgCEEAEKEBDAQLIEQEQCBDQcABaiIEIAEQ3AcgACAEIEQgRkEMaigCACBGQRBqKAIAIAIgAyAGIAcgCEEBEKEBDAMLIAcoAghFBEAgBygCAEUEQCAHQdSCwwAQnAgLIAcoAgQiAEIANwJIIABCgICAgMAANwJAIABBADYCICAAQQA2AgAgAEHQAGpCADcCACAAQdgAakIANwIAIABB4ABqQgA3AgAgAEHoAGpBADYCACAHQQE2AggLIAEgASACIAMgBCAFQQAgAUEAIAEgBiAHKAIEECIhRQwDCyMAQTBrIgAkACAAQQhqIAIgAygCYBEAACAAQRBqIAAoAggiRCAAKAIMKAIMEQAAAkACQCBERQ0AIAApAxBCgc/t+6qO5ZXnAIUgACkDGEKox57Z4bjDk0eFhEIAUg0AIAEgRCAEIAUgBiAHIAhBABAzDAELIAAgBCAFKAJgEQAAIABBEGoiBSAAKAIAIgQgACgCBCgCDBEAACAERQ0AIAApAxBCgc/t+6qO5ZXnAIUgACkDGEKox57Z4bjDk0eFhEIAUg0AIAAgASoCDCIMOAIcIAAgASoCCCIJjDgCGCAAIAEqAgQiCow4AhQgACABKgIAIguMOAIQIAAgDCALIAEqAhQiDZQgCiABKgIQIhGUkyISIBKSIhKUIAogCiABKgIYIg6UIAkgDZSTIg8gD5IiD5QgCyAJIBGUIAsgDpSTIhAgEJIiEJSTkiAOkzgCKCAAIAwgEJQgCyASlCAJIA+Uk5IgDZM4AiQgACAMIA+UIAkgEJQgCiASlJOSIBGTOAIgIAUgBCACIAMgBiAHIAhBARAzCyAAQTBqJAAMAQsgQyoCcCIJQwAAAABgRQ0CIBYgGJJDAAAAP5QiDCAPlCAXIBuSQwAAAD+UIhAgDpSTIgogCpIhCiAQIAaUIBUgGpJDAAAAP5QiFCAPlJMiCyALkiELIEMgCSAVIBqTQwAAAD+UIhMgBiAGlCIVIB4gHpQiHCAPIA+UIiGTIiIgDiAOlCIak5KLlCAWIBiTQwAAAD+UIhYgBiAOlCIYIBiSIhggHiAPlCIdIB2SIh2Si5QgFyAbk0MAAAA/lCIXIAYgD5QiGyAbkiIbIB4gDpQiHyAfkiIfk4uUkpIiGSAUIAogHpQgCyAPlCAUIA6UIAwgBpSTIhQgFJIiFCAOlJOSkiANkiIgkpIiDTgCrAEgQyAJIAwgCyAelCAUIAaUIAogD5STkpIgEZIiESATIBggHZOLlCAXIB4gBpQiDCAMkiIYIA4gD5QiDCAMkiIPkouUIBYgGiAikiAVk4uUkpIiIpKSIgw4AqgBIEMgCSAQIBQgHpQgCiAOlCALIAaUk5KSIBKSIhIgEyAfIBuSi5QgFiAPIBiTi5QgFyAcICGSIBqTIBWTi5SSkiIOkpIiBjgCpAEgQyAgIBmTIAmTIgo4AqABIEMgESAikyAJkyILOAKcASBDIBIgDpMgCZMiCTgCmAEgQ0G4AWogB0EIaiIBKAIANgIAIAFBADYCACAHKQIAIV0gB0KAgICAwAA3AgAgQyBdNwOwAQJAIEQgRigCEBEEACICKAIIRQRAQQAhBUEAIQgMAQtBACEFIAIoAgQiAUEAIAEqAhggCmAbQQAgASoCFCALYBtBACABKgIQIAlgG0EAIAEqAgggDV8bQQAgASoCBCAMXxtBACABKgIAIAZfGyEIIAEoAjxB/////wNxRQ0AIAEqAiAgBl8gASoCJCAMX3EgASoCKCANX3EgASoCMCAJYHEgASoCNCALYHEgASoCOCAKYHEhBSABQSBqIQELIEMgCDYC0AIgQyACNgLIAiBDIAU2AsQCIEMgATYCxAEgQ0EANgLAASBDIENBmAFqNgLMAiBDQdAAaiBDQcABahDiAyBDKAJQQQFxBEAgQygCVCEBIEYoAgwhAgNAIEMgATYC3AIgQ0GIgsMANgKMAyBDIAA2AogDIEMgBzYCgAMgQyBFNgL4AiBDIAM2AuwCIEMgBDYC6AIgQyBDQfcAajYChAMgQyBDQbABajYC/AIgQyBDQdwCajYC9AIgQyBDQZcBajYC8AIgQyBDQfAAajYC5AIgQyBDQfgAajYC4AIgRCABIENB4AJqQZjxwgAgAhECACBDQcgAaiBDQcABahDiAyBDKAJMIQEgQygCSEEBcQ0ACwsgQygCxAIiAEEhTwRAIEMoAsgBIABBAnRBBBCIDwsgRSgCDCIABEAgRSgCBCEEIEUoAgAiAkEIaiEBIAIpAwBCf4VCgIGChIiQoMCAf4MhXSBFKAIIIQMgQy0AdyEIIAIhRCAAIQUDQCBdUARAA0AgREGAAWshRCABKQMAIV0gAUEIaiEBIF1CgIGChIiQoMCAf4MiXUKAgYKEiJCgwIB/UQ0ACyBdQoCBgoSIkKDAgH+FIV0LIF1CAX0hXiAIIEQgXXqnQQF0QfABcWsiRkEEay0AAEcEQEGAASEHIAIgRmtBBHUiRiACaiJHKQAAIl8gX0IBhoNCgIGChIiQoMCAf4N6p0EDdiACIEZBCGsgBHFqIkYpAAAiXyBfQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHTQRAIEUgA0EBaiIDNgIIQf8BIQcLIEcgBzoAACBFIAVBAWsiBTYCDCBGQQhqIAc6AAALIF0gXoMhXSAAQQFrIgANAAsLIEMoArQBIQAgQygCuAEiRARAIABBxABqIQEDQCABQQRrKAIAIgIEQCABKAIAIAJBJGxBBBCIDwsgAUHsAGohASBEQQFrIkQNAAsLIEMoArABIgFFDQAgACABQewAbEEEEIgPC0EAIUULIENBkANqJAAgRQ8LIENBADYC0AEgQ0EBNgLEASBDQYDawgA2AsABIENCBDcCyAEgQ0HAAWpBiNrCABC4DQALIABBwQBB6NvDABCICwALtyUDIX8JfhJ9IwBBwBRrIgkkACAJIAg6ADcgCSAFOAIwAkACQAJAAkACfwJAAkAgBygCACIIRQ0AIAlBKGogCCAHKAIEKAIYEQAAIAlBoAhqIAkoAigiCCAJKAIsKAIMEQAAIAhFDQAgCSkDoAhC7KO27sHd7PlWhSAJKQOoCEKoieGE1YPfwVeFhFANAQtBIEEIELMOIghFDQMgCEEAOgAYIAhCidm54o7TvpcINwMQIAhBCGpBwOXBACkDADcDACAIQbjlwQApAwA3AwACQCAHKAIAIgpFDQAgBygCBCILKAIAIgwEQCAKIAwRBgALIAsoAgQiDEUNACAKIAwgCygCCBCIDwsgB0H85cEANgIEIAcgCDYCAEH85cEADAELIAcoAgAiCEUNASAHKAIECyEHIAlBIGogCCAHKAIcEQAAIAlBoAhqIgcgCSgCICILIAkoAiQoAgwRAAACQCALRQ0AIAkpA6AIQuyjtu7B3ez5VoUgCSkDqAhCqInhhNWD38FXhYRCAFINACALIAstABhBf3NBAXEiEjoAGCAGKAIIIRMgBigCBCEXIAZCBDcCBCAGKAIAIRsgBkEANgIAIAMgBCgCECIIEQQAIR8gCSACKgJsQwAAAD+UOAJAIAkgAioCaEMAAAA/lDgCPCAJIAIqAmRDAAAAP5Q4AjggCUHEAGoiCiACEO0GIAcgAyAIEQQAEO0GIAlB3ABqIgggByABEMIDIAkqAkAhBSAJKgJwITMgCSoCPCE0IAkqAmwhNyAJKgI4ITggCSoCaCE5IAkqAmQhOiAJKgJgITUgCSoCXCE2IAlB9ABqIAogCBCpCEEEIQ4gCSgCdEUNBCAJQaABaiAJQYgBaikCADcDACAJQZgBaiAJQYABaikCADcDACAJIAkpAng3A5ABIAlBrAFqIgggAiAJQZABahDqCSAHIAhB9Ab8CgAAIAlBoA9qIAcQiAEgCSgCoA9BAUcNAyAFQwAAIEGUIgUgM5IhPCA0QwAAIEGUIjMgN5IhPSA4QwAAIEGUIjQgOZIhPiA6IAWTIT8gNSAzkyFAIDYgNJMhQSAEKAIMISAgCUHwE2ohFCAJQbQTaiEcIAlB3A9qISEgASoCGCFCIAEqAhQhQyABKgIQIUQgCUHcE2ohHSAJQaQPaiEVA0AgCUHID2oiBEEYaiAVQRhqKQIANwMAIARBEGogFUEQaikCADcDACAEQQhqIBVBCGopAgA3AwAgBEEgaiAVQSBqKAIAIgQ2AgAgCSAVKQIANwPIDwJAAkAgBBDCDUH/AXEOBQEAAAABAAsgCUHwD2oiBCACIAlByA9qIgcQwwUgCSA8OAKMEiAJID04AogSIAkgPjgChBIgCSA/OAKAEiAJIEA4AvwRIAkgQTgC+BEgCUHQE2oiCCAEIAIgByAJQfgRaiIEEPoEIAlBmBBqIgcgCEEIaiIeKAIANgIAIAkgCSkC0BM3A5AQIAlBoBBqIghBCGogHUEIaigCADYCACAJIB0pAgA3A6AQIAlBuBBqIgogAUEIaikCADcDACAJIAEpAgA3A7AQIAkgQyAJKgKUEJMiNzgCxBAgCSBEIAkqApAQkyI4OALAECAJIEIgByoCAJMiOTgCyBAgCSAJKgK8ECI6OAKEEiAJIAoqAgAiBYw4AoASIAkgCSoCtBAiM4w4AvwRIAkgCSoCsBAiNIw4AvgRIAkgOiA0IDeUIDggM5STIjUgNZIiNZQgMyAzIDmUIAUgN5STIjYgNpIiNpQgNCA4IAWUIDQgOZSTIjsgO5IiO5STkiA5kzgCkBIgCSA6IDuUIDQgNZQgBSA2lJOSIDeTOAKMEiAJIDogNpQgBSA7lCAzIDWUk5IgOJM4AogSIAlBzBBqIgcgCCAEENAFIAlB5BBqIgggHyAHEP8GIAQgCEGUAfwKAAAgCUEYaiAEEOEDIAkoAhhBAXEEQCAJKAIcIQQDQCALKAIEIgcgBCALKQMQQoOAgIAQhSIqQiCIIisgCSgCjBAiCkG307CFfHOtIix+ICpC/////w+DIiogCSgCiBAiDEHdofHLfHOtIi1+hSAqICx+ICsgLX6FQiCJhSIqp3OtIitC3aHxywx+ICpCIIgiKkK307CFDH6FICtCt9OwhQx+ICpC3aHxywx+hUIgiYUiK6ciEXEhCCArQhmIIi1C/wCDQoGChIiQoMCAAX4hLiALKAIAIQ9BACEQIAkCfwJAAkACQAJAA0ACQCAIIA9qKQAAIiwgLoUiKkKBgoSIkKDAgAF9ICpCf4WDQoCBgoSIkKDAgH+DIipCAFIEQANAAkAgDCAPICp6p0EDdiAIaiAHcUFobGoiFkEYaygCAEcNACAKIBZBFGsoAgBHDQAgBCAWQRBrKAIARg0DCyAqQgF9ICqDIipCAFINAAsLICwgLEIBhoNCgIGChIiQoMCAf4NCAFINAiAQQQhqIhAgCGogB3EhCAwBCwsgFkEMayEMQQEgFkEEayIiLQAAIBJGDQQaIAwoAgAiByATTw0CIBcgB0GoAWxqIgopAnwhKiAKQoCAgIDAADcCfCAJQZgUaiIYIApBhAFqIgcoAgA2AgBBACERIAdBADYCACAJICo3A5AUIAooAmAiB0EGdCEPIAdB////H0sNASAPQfD///8HSw0BIAooAlwhGSAKKAJkISMgCikCUCEqIAooAkwhJCAKKQJEISsgCigCQCElIAooAqQBISYgCigCoAEhJwJAIA9FBEBBECEQQQAhCAwBC0EQIREgByEIIA9BEBCzDiIQRQ0CCyAPBEAgECAZIA/8CgAACyAJQcgTaiIPIApB8ABqKAIANgIAIBwgCSkDkBQ3AQAgHEEIaiAYKAIANgEAIAlBqBNqIhEgCkGQAWooAgA2AgAgCUGYE2oiGCAKQZwBaigCADYCACAJIAopAmg3A8ATIAkgCikCiAE3A6ATIAkgCikClAE3A5ATIAooAnQhGSAKLwF4ISggCUHQE2oiGkEYaiIpIApBGGopAgA3AwAgGkEQaiIaIApBEGopAgA3AwAgHiAKQQhqKQIANwMAIBQgCikCIDcCACAUQQhqIApBKGopAgA3AgAgFEEQaiAKQTBqKQIANwIAIBRBGGogCkE4aikCADcCACAJIAopAgA3A9ATIBZBCGtBADYCACAMIA02AgAgIiASOgAAIAYoAgAgDUYEfyAGQfDtwQAQlwggBigCBAUgDgsgDUGoAWxqIgogCSkD0BM3AgAgGikDACEsICkpAwAhLSAUKQMAIS4gCUHQE2oiDkEoaikDACEvIA5BMGopAwAhMCAOQThqKQMAITEgHikDACEyIAogIzYCZCAKIAc2AmAgCiAQNgJcIAogCDYCWCAKICo3AlAgCiAkNgJMIAogKzcCRCAKICU2AkAgCkEIaiAyNwIAIAogCSkDwBM3AmggCkHwAGogDygCADYCACAKICg7AXggCiAZNgJ0IApBOGogMTcCACAKQTBqIDA3AgAgCkEoaiAvNwIAIApBIGogLjcCACAKQRhqIC03AgAgCkEQaiAsNwIAIApBgAFqIAlBuBNqKQEANwEAIAogCSkBshM3AXogCkGQAWogESgCADYCACAKIAkpA6ATNwKIASAKQZwBaiAYKAIANgIAIAogCSkDkBM3ApQBIAogJjYCpAEgCiAnNgKgASAGIA1BAWoiDTYCCAwDCyAJKALMDyAJKALID0EJdGoiByAEIAktADciCBshECAEIAcgCBshCCAGKAIAIA1GBH8gBkGA7sEAEJcIIAYoAgQFIA4LIA1BqAFsaiIHQoCAgICAAjcCWCAHQQA2AkwgB0EANgJAIAdBADYCICAHQQA2AgAgB0IANwJgIAdCADcChAEgB0KAgICAwAA3AnwgByAQNgKkASAHIAg2AqABIAdB6ABqQgA3AgAgB0HwAGpCADcCACAHQfgAakEAOwEAIAdBjAFqQgA3AgAgB0GUAWpCADcCACAHQZwBakEANgIAIAYgDUEBajYCCCAJIBI6AKQUIAlBADYCoBQgCSANNgKcFCAJIAQ2ApgUIAkgCjYClBQgCSAMNgKQFCALKAIEIg0gEXEiCiALKAIAIghqKQAAQoCBgoSIkKDAgH+DIipQBEBBCCEMA0AgCiAMaiEHIAxBCGohDCAIIAcgDXEiCmopAABCgIGChIiQoMCAf4MiKlANAAsLAkAgCCAqeqdBA3YgCmogDXEiCmosAAAiB0EATgR/IAggCCkDAEKAgYKEiJCgwIB/g3qnQQN2IgpqLQAABSAHC0EBcSIHIAsoAggiDEVxRQRAIAggCmogLadB/wBxIg46AAAgCCAKQQhrIA1xakEIaiAOOgAAIAsgDCAHazYCCCALIAsoAgxBAWo2AgwgCCAKQWhsaiIKQRhrIgdBEGogCUGQFGoiCEEQaikCADcCACAHQQhqIAhBCGopAgA3AgAgByAJKQKQFDcCAAwBCyAJQRBqIAsgC0EQahDsASALICsgCygCACALKAIEICsQlgogCUGQFGoQ6AkhCgsgCkEMayEMIAYoAgghDQwCCyARIA9B4PnBABDTDQALIAcgE0Hg7cEAEIgLAAtBAAs6AI8TIAwoAgAiByANTwRAIAcgDUGQ7sEAEIgLAAsgBigCBCEOIAkgDEEEajYCvBQgCSAhNgK4FCAJQbDYwQA2AqgUIAkgADYCpBQgCSAOIAdBqAFsajYCnBQgCSAJQThqNgK0FCAJIAlBMGo2ArAUIAkgCUGgEGo2AqwUIAkgCUGQEGo2AqAUIAkgCUE3ajYCmBQgCSAJQY8TajYClBQgCSAJQbAQajYCkBQgAyAEIAlBkBRqQaDuwQAgIBECACAJQQhqIAlB+BFqEOEDIAkoAgwhBCAJKAIIQQFxDQALCyAJKAL8EiIEQSFJDQAgCSgCgBIgBEECdEEEEIgPCyAJQaAPaiAJQaAIahCIASAJKAKgDw0ACwwDC0HA7cEAEJEPAAtBsO3BABCRDwALQQhBIEGQxMQAKAIAIgBBzAggABsRAAAACyAJKAKgCEECRg0AIAkoAqQJIgBBIUkNACAJKAKoCCAAQQJ0QQQQiA8LAkAgCygCDCIMRQ0AIAsoAgAiBkEIaiEHIAYpAwBCf4VCgIGChIiQoMCAf4MhKgNAAkAgKlAEQANAIAZBwAFrIQYgBykDACEqIAdBCGohByAqQoCBgoSIkKDAgH+DIipCgIGChIiQoMCAf1ENAAsgKkKAgYKEiJCgwIB/hSEqCwJAIAYgKnqnQQN2QWhsaiIAQQRrLQAAIBJHDQAgAEEMaygCACIBIA1PDQEgDiABQagBbGoiAigChAEiAUUNACACQfwAaiEEIAFBAWshAyAAQQhrIhAoAgAhAEEAIQhBwAAhAgJAAkADQCAAIAh2QQFxRQ0BIAJBQGshAiABIAhBAWoiCEcNAAtBACEKDAELQQEhCiADIAhGDQAgCEEBaiEDIAQoAgQgAmohCANAAkAgECgCACADdkEBcUUEQCAKQQFqIQoMAQsgCCAKQQZ0ayIAIAgpAgA3AgAgAEE4aiAIQThqKQIANwIAIABBMGogCEEwaikCADcCACAAQShqIAhBKGopAgA3AgAgAEEgaiAIQSBqKQIANwIAIABBGGogCEEYaikCADcCACAAQRBqIAhBEGopAgA3AgAgAEEIaiAIQQhqKQIANwIACyAIQUBrIQggASADQQFqIgNHDQALCyAEIAEgCms2AggLICpCAX0gKoMhKiAMQQFrIgwNAQwCCwsgASANQdDtwQAQiAsACyALKAIMIgIEQCALKAIEIQEgCygCACIAQQhqIQcgACkDAEJ/hUKAgYKEiJCgwIB/gyEqIAsoAgghDiAAIQYgAiEKA0AgKlAEQANAIAZBwAFrIQYgBykDACEqIAdBCGohByAqQoCBgoSIkKDAgH+DIipCgIGChIiQoMCAf1ENAAsgKkKAgYKEiJCgwIB/hSEqCyAqQgF9ISsgEiAGICp6p0EDdkFobGoiA0EEay0AAEcEQEGAASEIIAAgA2tBGG0iAyAAaiIEKQAAIixCAYYgLINCgIGChIiQoMCAf4N6p0EDdiAAIANBCGsgAXFqIgMpAAAiLEIBhiAsg0KAgYKEiJCgwIB/g3mnQQN2akEHTQRAIAsgDkEBaiIONgIIQf8BIQgLIAQgCDoAACALIApBAWsiCjYCDCADQQhqIAg6AAALICogK4MhKiACQQFrIgINAAsLIBMEQCAXQYABaiEHA0AgB0EEaygCACIABEAgBygCACAAQQZ0QQQQiA8LIAdBKGsoAgAiAARAIAdBJGsoAgAgAEEGdEEQEIgPCyAHQagBaiEHIBNBAWsiEw0ACwsgGwRAIBcgG0GoAWxBBBCIDwsgCUHAFGokAAvQKQMafwZ+Bn0jAEHgAmsiBCQAIARBADYCCCAEQoCAgIDAADcCACAEQQA2AhQgBEKAgICAwAA3AgwgBEEANgIgIARCgICAgMAANwIYIARBADYCLCAEQoCAgIDAADcCJCAEQThqQcDVwgApAwA3AwAgBEKJ2bnijtO+lwg3A0AgBEG41cIAKQMANwMwIARBADYCUCAEQoCAgIDAADcCSCAEQQA2AlwgBEKAgICAwAA3AlQgBEEANgJoIARCgICAgMAANwJgIARBADYCdCAEQoCAgIDAADcCbAJAAkACQAJ/AkAgASgCCCILIANqIgVBA08EQCAEQQxqQQAgBUECa0EEQSAQ4wYgA0UNASACIANBDGxqIRkgAkEMaiEOIAEoAgQhESAEQYABaiEXQQQhGAJAAkADQCAXQX82AgAgBEJ/NwN4IAIoAgAiEiACKAIEIhNGDQYgAigCCCINIBJGDQYgDSATRg0GIA+tQoCAgIBwhCEjQQEhB0EAIQYDQCAEQYgBaiEDQQAhECAEQTBqIgUoAgQhCSAJIAIgBmooAgAiDCACIAdBACAGQQhHG0ECdGooAgAiCiAKIAxLG60gDCAKIAogDEkbrUIghoQiHyAFKQMQQjiJhSIeQiCIIiAgH0KXkpyq27a1wj+FIiFCIIgiIn4gHkL/////D4MiHiAhQv////8PgyIhfoUgICAhfiAeICJ+hUIgiYUiHkL/////D4NCAoUiIELdofHLDH4gHkIgiCIeQrfTsIUMfoUgIEK307CFDH4gHkLdofHLDH6FQiCJhSIgp3EhCCAgQhmIQv8Ag0KBgoSIkKDAgAF+ISIgBSgCACIUQQxrIRUCQAJAA0ACQCAIIBRqKQAAIiEgIoUiHkKBgoSIkKDAgAF9IB5Cf4WDQoCBgoSIkKDAgH+DIh5CAFIEQANAIB8gFUEAIB56p0EDdiAIaiAJcWsiFkEMbGopAgBRDQIgHkIBfSAegyIeQgBSDQALCyAhICFCAYaDQoCBgoSIkKDAgH+DQgBSDQIgEEEIaiIQIAhqIAlxIQgMAQsLIAMgBTYCDCADICA3AwAgAyAUIBZBDGxqNgIIIANBADYCEAwBCyADIB83AwggAyAgNwMAIAMgBTYCEAsCQAJAAn0CQAJAAkAgBCgCmAEiAwRAIAQpA4gBIR4gBCkDkAEhHyAEIAQoAhQiEDYC2AIgBCAfNwPQAiAEQfgAaiAGaiEbIARB0AJqIRQgA0EQaiEaIwBBEGsiFiQAIAMoAgQiFSAepyIccSIIIAMoAgAiCWopAABCgIGChIiQoMCAf4MiH1AEQEEIIQUDQCAFIAhqIQggBUEIaiEFIAkgCCAVcSIIaikAAEKAgYKEiJCgwIB/gyIfUA0ACwsgCSAfeqdBA3YgCGogFXEiCGosAAAiBUEATgRAIAkgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IghqLQAAIQULAkAgAygCCCIdQQEgBUEBcSIFGwRAIAggCWogHEEZdiIaOgAAIAkgCEEIayAVcWpBCGogGjoAACADIB0gBWs2AgggAyADKAIMQQFqNgIMIAkgCEF0bGoiA0EMayIFQQhqIBRBCGooAgA2AgAgBSAUKQIANwIADAELIBZBCGogAyAaEOsBIAMgHiADKAIAIAMoAgQgHhCWCiAUEJsKIQMLIBZBEGokACAbIANBBGsoAgA2AgAgCiALTw0BIAsgDE0NAiARIApBDGxqIgMqAgAgESAMQQxsaiIFKgIAkyIlICWUIAMqAgQgBSoCBJMiJyAnlJIgAyoCCCAFKgIIkyImICaUkiIkQwAAgCheIgMNA0MAAIA/ISZDAAAAACEkQwAAAAAMBAsgBCgCFCIJIAQoApABQQRrKAIAIgNNDQQgBCgCECIIIANBBXRqQQxqIgUoAgBBf0cNDSAFIA82AgAgBEH4AGogBmogAzYCAAwFCyAKIAtB0L7DABCICwALIAwgC0HgvsMAEIgLAAsgJiAkkSIolSEkICUgKJUhJiAnICiVCyElIANFIQUgDK0gCq1CIIaEIR4gBCgCDCAQRgRAIARBDGpB8L7DABDJCAsgBCgCECIIIBBBBXRqIgMgBToAHCADICQ4AhggAyAlOAIUIAMgJjgCECADICM3AgggAyAeNwIAIAMgBC8A0AI7AB0gA0EfaiAEQdICai0AADoAACAEIBBBAWoiCTYCFAwBCyADIAlBwL7DABCICwALIAdBAWohByAGQQRqIgZBDEcNAAsgCyASTQ0BIAsgE00NAgJ/AkAgCyANSwRAIBEgE0EMbGoiAyoCACARIBJBDGxqIgUqAgAiJZMiJiARIA1BDGxqIgYqAgQgBSoCBCIkkyInlCADKgIEICSTIiQgBioCACAlkyIolJMiJSAllCAkIAYqAgggBSoCCCIkkyIplCADKgIIICSTIiQgJ5STIicgJ5QgJCAolCAmICmUkyIkICSUkpIiJkMAAIAoXg0BQwAAAAAhJkMAAAAAISRDAAAAACElQQEMAgsgDSALQaC+wwAQiAsACyAlICaRIiWVISYgJCAllSEkICcgJZUhJUEACyEDIARBuAFqIgYgAkEIaigCADYCACAEQagBaiIHIBcoAgA2AgAgBCAEKQN4NwOgASAEIAIpAgA3A7ABIAQoAiQgD0YEQCAEQSRqQbC+wwAQmQggBCgCKCEYCyAYIA9BMGxqIgVBADYCACAFIAQpA7ABNwIIIAVBEGogBigCADYCACAFIAQpA6ABNwIUIAVBHGogBygCADYCACAFIAM6ACwgBSAmOAIoIAUgJDgCJCAFICU4AiAgBCAPQQFqIg82AiwgAkEMaiECIA5BDEEAIA4gGUciAxtqIQ4gAw0ACyAIIAlBBXRqDAQLIBIgC0GAvsMAEIgLAAsgEyALQZC+wwAQiAsACwwCCyAEKAIUIglFDQIgBCgCECIIIAlBBXRqCyEKIAhBIGohBiAEKAIoIQMgCCEFA0AgBSgCCCIHIA9PDQEgBUEMaigCACIOIA9PDQEgBiECIAMgB0EwbGoiBioCICADIA5BMGxqIgcqAiCUIAZBJGoqAgAgB0EkaioCAJSSIAZBKGoqAgAgB0EoaioCAJSSQ1/pfz9eBEAgBUEBOgAcCyACIApHIgUEQCACIAVBBXRqIQYgAiIFDQELCyAEKAIoIRIgBEHoAWohEEEBIQVBACEMA0AgDCEDIAUhDAJAIBIgA0EwbGoiBSgCAA0AAkAgCSAFKAIUIgdNDQBBASEGAkAgCCAHQQV0ai0AHEEBRwRAQQAhAgwBCyAJIAVBFGoiBigCBCIHTQ0BQQEhAiAIIAdBBXRqLQAcQQFHBEBBAiEGDAELIAkgBigCCCIHTQ0BIAggB0EFdGotABwNAkECIQJBACEGCyAQIAVBKGooAgA2AgAgBCAFKQIgNwPgASAEKAIgIREgBCgCaCITIAQoAmBGBEAgBEHgAGpBoLzDABC5CAsgBCgCZCIOIBNBAnRqIAc2AgAgBCATQQFqIgc2AmggBSACQQJ0aiICQQhqIQ0gAigCCCEFIAQoAnQiAiAEKAJsRgRAIARB7ABqQbC8wwAQuQgLIAQoAnAgAkECdGogBTYCAEEBIQUgBCACQQFqNgJ0IA0oAgAhFQNAIBIgA0EwbGoiAiAGQQJ0aiINKAIIIhQgFUYEQCAFQQNJDQMgBCgCGCARRgRAIARBGGpB0LzDABCUCAsgBCgCHCARQRRsaiICIAU2AgQgAiATNgIAIAIgBCkD4AE3AgggAkEQaiAQKAIANgIAIAQgEUEBajYCIAwDCyACIBE2AgQgAkEBNgIAAkACQAJAIA0oAhQiAiAJSQRAIAggAkEFdGoiDS0AHEUEQCAEKAJgIAdGBEAgBEHgAGpB8LzDABC5CCAEKAJkIQ4LIA4gB0ECdGogAjYCACAEIAdBAWoiBzYCaCAEKAJ0IgIgBCgCbEYEQCAEQewAakGAvcMAELkICyAEKAJwIAJBAnRqIBQ2AgAgBCACQQFqNgJ0IAZBAWoiAkEAIAJBA0cbIQYgBUEBaiEFDAQLIA8gDSgCDCANKAIIIgYgAyAGRhsiA00NAQJ/QQEgAiASIANBMGxqIg0oAhRGDQAaQQIgAiANKAIYRg0AGiANKAIcIAJHDQNBAAshBiAGQQJ0IA1qKAIIIBRGDQNBoL3DAEHQAEHwvcMAENYMAAsgAiAJQeC8wwAQiAsACyADIA9BkL3DABCICwALQYDUwgBBKEGQu8MAENYMAAsgAyAPSQ0ACyADIA9BwLzDABCICwALIAcgCUGQvMMAEIgLAAsgDCAPSSICIAxqIQUgAg0ACyAIQSBqIQYgBCgCLCECIAQoAighAwNAAkAgCCgCCCIFIAJPDQAgAyAFQTBsaiIFKAIAQQFGBEAgCCAFKAIENgIICyAIQQxqIgUoAgAiByACTw0AIAYhCCADIAdBMGxqIgYoAgBBAUYEQCAFIAYoAgQ2AgALIAggCkYNAyAIIAggCkdBBXRqIQYgCA0BDAMLCwsgAEGAgICAeDYCACAEKAJsIgAEQCAEKAJwIABBAnRBBBCIDwsgBCgCYCIABEAgBCgCZCAAQQJ0QQQQiA8LIAQoAlQiAARAIAQoAlggAEECdEEEEIgPCyAEKAJIIgAEQCAEKAJMIABBAnRBBBCIDwsgBCgCNCIABEAgBCgCMCAAQQxsQRNqQXhxIgJrIAAgAmpBCWpBCBCIDwsgBCgCJCIABEAgBCgCKCAAQTBsQQQQiA8LIAQoAhgiAARAIAQoAhwgAEEUbEEEEIgPCyAEKAIMIgAEQCAEKAIQIABBBXRBBBCIDwsgBCgCACIABEAgBCgCBCAAQQN0QQQQiA8LIAEoAgAiAEUNASABKAIEIABBDGxBBBCIDwwBCyAEIQIgBCgCCCIFIAsiA0kEQCADIAVrIgMgBCgCACAFa0sEQCAEIAUgA0EEQQgQ4wYgBCgCCCEFCyACKAIEIgYgBUEDdGohAiADQQJPBEAgA0EDdEEIayIHBEAgAkEAIAf8CwALIAMgBWoiAkEBayEFIAYgAkEDdGpBCGshAgsgAkIANwIAIAVBAWohAwsgBCADNgIIIAQoAhwiDiAEKAIgIgxBFGxqIREgBCgCCCELIAQoAgQhCCAMBEAgDkEUaiEFIAQoAnQhBiAEKAJwIQogDiEHA0AgByECIAUhByACKAIEIgUgAigCACIDaiECAkACQCACIAVPBEAgAiAGSw0BIAVFDQIgCiADQQJ0aiEDIAVBAnQhBQNAIAMoAgAiAiALSQRAIAggAkEDdGoiAiACKAIEQQFqNgIEIANBBGohAyAFQQRrIgUNAQwECwsgAiALQYC8wwAQiAsACyADIAJB8LvDABCQDwALIAIgBkHwu8MAEI8PAAsgB0EAQRQgByARRiICG2ohBSACRQ0ACwsCQCALBEAgC0EBa0H/////AXEiAkEBaiIKQQdxIQYCQCACQQdJBEBBACEFIAghAwwBCyAKQfj///8DcSEHQQAhBSAIIQMDQCADIAU2AgAgA0EIaiADQQRqKAIAIAVqIgU2AgAgA0EQaiADQQxqKAIAIAVqIgU2AgAgA0EYaiADQRRqKAIAIAVqIgU2AgAgA0EgaiADQRxqKAIAIAVqIgU2AgAgA0EoaiADQSRqKAIAIAVqIgU2AgAgA0EwaiADQSxqKAIAIAVqIgU2AgAgA0E4aiADQTRqKAIAIAVqIgU2AgAgA0E8aigCACAFaiEFIANBQGshAyAHQQhrIgcNAAsLIAYEQANAIAMgBTYCACADQQRqKAIAIAVqIQUgA0EIaiEDIAZBAWsiBg0ACwsgBEHIAGogBRC/BiAEQdQAaiAFEL8GIAghAyAKQQdxIgUEQANAIANBBGpBADYCACADQQhqIQMgBUEBayIFDQALCyACQQdJDQEgCCALQQN0aiECA0AgA0E8akEANgIAIANBNGpBADYCACADQSxqQQA2AgAgA0EkakEANgIAIANBHGpBADYCACADQRRqQQA2AgAgA0EMakEANgIAIANBBGpBADYCACACIANBQGsiA0cNAAsMAQsgBEHIAGpBABC/BiAEQdQAakEAEL8GCyAMBEAgDkEUaiEDIAQoAmQhFCAEKAJYIRUgBCgCXCESIAQoAmghDyAEKAJMIRcgBCgCUCETIAQoAnAhGCAEKAJ0IQlBASEGQQAhDANAIA4hAiADIQ4gDCEDIAYhDAJAIAIoAgAiByAHIAIoAgQiDWpPDQAgB0ECdCICIBhqIQYgAiAUaiECIAcgCSAHIAlLGyIWIAdrIQUgByAPIAcgD0sbIhkgB2shBwJAAkACQAJAA0AgBUUNASAGKAIAIgogC08NAiAIIApBA3RqIgooAgQgCigCAGoiECATTw0DIBcgEEECdGogAzYCACAHRQ0EIAooAgQgCigCAGoiECASSQRAIBUgEEECdGogAigCADYCACAKIAooAgRBAWo2AgQgBkEEaiEGIAJBBGohAiAFQQFrIQUgB0EBayEHIA1BAWsiDUUNBgwBCwsgECASQeC7wwAQiAsACyAWIAlBoLvDABCICwALIAogC0Gwu8MAEIgLAAsgECATQcC7wwAQiAsACyAZIA9B0LvDABCICwALIA4gEUciAiAMaiEGIA5BFEEAIAIbaiEDIAINAAsLIARBhAJqIARBCGooAgA2AgAgBEGQAmogBEEgaigCADYCACAEQZwCaiAEQRRqKAIANgIAIARBqAJqIARB0ABqKAIANgIAIARBtAJqIARB3ABqKAIANgIAIAQgBCkCADcC/AEgBCAEKQIYNwOIAiAEIAQpAgw3ApQCIAQgBCkCSDcDoAIgBCAEKQJUNwKsAiAEQcACaiAEQegAaigCADYCACAEQcwCaiAEQfQAaigCADYCACAEQfABaiICQQhq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QQEgDWshBCAHKAIEQUBrIQADQCAAQShrKgIAIhIgCGAgEkMAAAAAYHIEQCAAQUBrIQAgBEEBaiIEQQFHDQEMAgsLIARFBEBBASEGDAELQQAgBGshDEEBIQYDQCAAQRhqIQ4CQAJAIA8qAgAiCEMAAAAAYA0AIA4qAgAiEkMAAAAAYA0AIBIgCEMAAKBAlGANACAGQQFqIQYMAQsgACAGQQZ0ayIEIAApAgA3AgAgBEE4aiAAQThqKQIANwIAIARBMGogAEEwaikCADcCACAEQShqIABBKGopAgA3AgAgBEEgaiAAQSBqKQIANwIAIARBGGogDikCADcCACAEQRBqIABBEGopAgA3AgAgBEEIaiAAQQhqKQIANwIACyAAQUBrIQAgDEEBayIMDQALCyAHIA0gBms2AggLCyAJIAtBKGoiACALQRhqIgQgChsiBikCADcCiAEgCSAEIAAgChsiACkCADcClAEgCUGQAWogBkEIaigCADYCACAJQZwBaiAAQQhqKAIANgIAAkAgCSgChAEiAEUNACACRQ0AIAkoAoABIgogAEEGdGohBiADIAJBBnRqIQcgA0EkaiEEIANBQGshACAFQUBqIglBwABxIQ0DQCAKQSRqIQIgCigCHCEFIAMhDAJAIA0NACAAIQwgBSADKAIcRw0AIAooAiAgAygCIEcNACACIAQpAgA3AgAgAkEYaiAEQRhqKAIANgIAIAJBEGogBEEQaikCADcCACACQQhqIARBCGopAgA3AgALIAkEQANAAkAgBSAMQRxqKAIARw0AIAooAiAgDEEgaigCAEcNACACQRhqIAxBPGooAgA2AgAgAkEQaiAMQTRqKQIANwIAIAJBCGogDEEsaikCADcCACACIAxBJGopAgA3AgALAkAgBSAMQdwAaigCAEcNACAKKAIgIAxB4ABqKAIARw0AIAJBGGogDEH8AGooAgA2AgAgAkEQaiAMQfQAaikCADcCACACQQhqIAxB7ABqKQIANwIAIAIgDEHkAGopAgA3AgALIAcgDEGAAWoiDEcNAAsLIAYgCkFAayIKRw0ACwsgAUUNAyADIAFBBnRBBBCIDwwDCyANIAVB4PnBABDTDQALIAlBADYChAEMAQsgCUEANgKEAQsgC0GAAmokAAvvHAIpfx19IwBB4ABrIgQkAEECIRdBAiEYAn9BACAAKAKk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BUEIaiIGKQIANwIAIAogBUEQaiIKKQIANwIAIAggBUEYaiIIKQIANwIAIAcgBUEgaiIHKAIANgIAIAQgWzcDMCAFIAQpAzA3AgAgByACKAIANgIAIAggCSkDADcCACAKIAspAwA3AgAgBiADKQMANwIAQQgMBAsgBikCACFbIAYgAykCADcCACAEQTBqIgJBIGoiBSAGQSBqIgcoAgA2AgAgAkEYaiIJIAZBGGoiCCkCADcDACACQRBqIgsgBkEQaiIKKQIANwMAIAJBCGoiAiAGQQhqIgYpAgA3AwAgBiADQQhqIgYpAgA3AgAgCiADQRBqIgopAgA3AgAgCCADQRhqIggpAgA3AgAgByADQSBqIgcoAgA2AgAgBCBbNwMwIAMgBCkDMDcCACAHIAUoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACAGIAIpAwA3AgAMAgsgAikCACFbIAIgAykCADcCACAEQTBqIgVBIGoiBiACQSBqIgcoAgA2AgAgBUEYaiIJIAJBGGoiCCkCADcDACAFQRBqIgsgAkEQaiIKKQIANwMAIAVBCGoiBSACQQhqIgIpAgA3AwAgAiADQQhqIgIpAgA3AgAgCiADQRBqIgopAgA3AgAgCCADQRhqIggpAgA3AgAgByADQSBqIgcoAgA2AgAgBCBbNwMwIAMgBCkDMDcCACAHIAYoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACACIAUpAwA3AgBBDAwECyACKQIAIVsgAiAFKQIANwIAIARBMGoiB0EgaiIJIAJBIGoiCigCADYCACAHQRhqIgggAkEYaiIOKQIANwMAIAdBEGoiCyACQRBqIg8pAgA3AwAgB0EIaiIHIAJBCGoiAikCADcDACACIAVBCGoiAikCADcCACAPIAVBEGoiDykCADcCACAOIAVBGGoiDikCADcCACAKIAVBIGoiCigCADYCACAEIFs3AzAgBSAEKQMwNwIAIAogCSgCADYCACAOIAgpAwA3AgAgDyALKQMANwIAIAIgBykDADcCACABKAIIIQIgASABKAIANgIIIAEgAjYCACAJIAZBIGoiAigCADYCACAIIAZBGGoiBSkCADcDACALIAZBEGoiCikCADcDACAHIAZBCGoiDikCADcDACAGKQIAIVsgBiADKQIANwIAIA4gA0EIaiIGKQIANwIAIAogA0EQaiIKKQIANwIAIAUgA0EYaiIFKQIANwIAIAIgA0EgaiICKAIANgIAIAQgWzcDMCADIAQpAzA3AgAgAiAJKAIANgIAIAUgCCkDADcCACAKIAspAwA3AgAgBiAHKQMANwIAC0EMCyEDIAEoAgQhAiABIAEgA2oiAygCADYCBCADIAI2AgAMAgsgAikCACFbIAIgBSkCADcCACAEQTBqIgNBIGoiBiACQSBqIgcoAgA2AgAgA0EYaiIJIAJBGGoiCCkCADcDACADQRBqIgsgAkEQaiIKKQIANwMAIANBCGoiAyACQQhqIgIpAgA3AwAgAiAFQQhqIgIpAgA3AgAgCiAFQRBqIgopAgA3AgAgCCAFQRhqIggpAgA3AgAgByAFQSBqIgcoAgA2AgAgBCBbNwMwIAUgBCkDMDcCACAHIAYoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACACIAMpAwA3AgBBCAshAyABKAIAIQIgASABIANqIgMoAgA2AgAgAyACNgIAIBUhFyAWIRULIAEgFTgCtAEgASAXOAKwAQwHC0GA1MIAQShBkI3DABDWDAALIAEgCTYCuAEgASAVOAK0ASABIBY4ArABDAULIAEgCTYCuAEgASAVOAK0ASABIBY4ArABIAUgAykCADcCACAFQSBqIANBIGooAgA2AgAgBUEYaiADQRhqKQIANwIAIAVBEGogA0EQaikCADcCACAFQQhqIANBCGopAgA3AgAMBAsgASAVOAK4ASABIAk2ArQBIAEgFjgCsAEgBiADKQIANwIAIAZBIGogA0EgaigCADYCACAGQRhqIANBGGopAgA3AgAgBkEQaiADQRBqKQIANwIAIAZBCGogA0EIaikCADcCAAwDCyABIBU4ArgBIAEgFjgCtAEgASAJNgKwASACIAMpAgA3AgAgAkEgaiADQSBqKAIANgIAIAJBGGogA0EYaikCADcCACACQRBqIANBEGopAgA3AgAgAkEIaiADQQhqKQIANwIADAILIAVBBEH4i8MAEIgLAAsgB0EEQfiLwwAQiAsACyABIA02ArwBCyAAIAQpA3A3AgAgAEEIaiAMKAIANgIADAILIAEgFjgCtAEgASAVOAKwAQsgACAEKQNwNwIAIABBCGogBigCADYCAAsgBEGAAWokAAvwRAMJfx59An4jAEGAA2siCiQA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gAJqJAAMAwsgCyAAQcD5wwAQiAsACyAOIABB0PnDABCICwALQQRBoAJBkMTEACgCACIAQcwIIAAbEQAAAAsgBygCJCEAIAcoAhghASAHKAIsIQkgBygCKCEDIAcoAiAhCiAHKAIcIQQgB0GAgID8AzYCICAHQoCAgPyDgIDAPzcCGCACIAQgCiADIAkgBSAQIAYQqwMgAARAIAMgAEEDdEEEEIgPCyABRQ0MIAQgAUEMbEEEEIgPDAwLIAAgASACIAcoAhBBtMTBACAFIAYQRAwLCyAHQRhqIgwhBCAHKAIQIQkgACgC8AEhCCAAKAL0ASEDIwBB4ABrIgEkACABQTBqIgBBCGoiCkEANgIAIAFBADYCCCABQoCAgIDAADcCACABQQA2AhQgAUKAgICAwAA3AgwgAUEANgIgIAFBADYCLCABQQA2AkQgASAJKgIAIh44AiggASAeOAJAIAEgHowiHzgCHCABIAkqAgSMIh04AhggASAdOAIkIAEgHTgCMCABIB8gCSoCCCIgkzgCNCABIB0gIJMiITgCPCABQZD1wwAQkwggASgCBCIJIAEpAjA3AgAgCUEIaiAKKAIANgIAIAFBATYCCCABQQA2AlAgASAfOAJMIAEgITgCSCABQRhqIAAgAUHIAGogAyABEMkCIAEoAgAiCiABKAIIIglGBEAgAUGg9cMAEJMIIAEoAgAhCgsgICAekiEeIAEoAgQiACAJQQxsaiILQQA2AgggCyAfOAIEIAsgITgCACABIAlBAWoiCzYCCCAKIAtGBEAgAUGw9cMAEJMIIAEoAgQhAAsgACALQQxsaiIAIAEpAjw3AgAgAEEIaiABQTxqIgBBCGooAgA2AgAgASAJQQJqNgIIIAFBADYCUCABIB44AkwgASAdOAJIIAFBJGogACABQcgAaiADIAEQyQIgASgCCCIAIAEoAgBGBEAgAUHA9cMAEJMICyABQQhqIgkgAEEBajYCACABKAIEIABBDGxqIgBBADYCCCAAIB44AgQgACAdOAIAIAFCgICAgBA3AkggASADNgJQIAEgA0ECajYCVCABIANBAXQiAEECajYCXCABIABBAXI2AlhBACABQcgAakEDIAggASABQQxqIgAQjAEgBEEIaiAJKAIANgIAIAQgASkCADcCACAEIAEpAgw3AgwgBEEUaiAAQQhqKAIANgIA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AwA3AwAgAkEIaiAEQQhqKQMANwMAIAMgCEEEdGohAyAFIAhBAXNBBHRqIQUgBiAJQQR0IgRrIQYgBCAHakEQayEHIAJBEGshAiAAQRBqIQAgDUEBayINDQALIAZBEGohBCABQQFxBEAgACAFIAMgBCAFSyICGyIBKQMANwMAIABBCGogAUEIaikDADcDACADIAQgBU1BBHRqIQMgBSACQQR0aiEFCyAEIAVGIAMgB0EQakZxDQAQlw0ACyALQYAGaiQAC/kXAhx/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEGAwMQAKAIAIgohBSACQQNrQRhtIgRBACAEQQBKGyIOIQcgDkECdEGQwMQAaiEIQQAhBANAIAMgBEEDdGogB0EASAR8RAAAAAAAAAAABSAIKAIAtws5AwAgBCAFSSILBEAgCEEEaiEIIAdBAWohByAFIAQgC2oiBE8NAQsLIAJBGGshBUEAIQcDQCADQcACaiAHQQN0aiAAKwMAIAMgB0EDdGorAwCiRAAAAAAAAAAAoDkDACAHIApJIgQEQCAKIAQgB2oiB08NAQsLIAUgDkFobCIXaiIGQf4PSyEPQfBoIAYgBkHwaE0bQZIPaiAGQckHaiAGQblwSSISGyENRAAAAAAAAPB/RAAAAAAAAOB/IA8bRAAAAAAAAAAARAAAAAAAAGADIBIbRAAAAAAAAPA/IAZBgnhIIhMbIAZB/wdKIhQbQf0XIAYgBkH9F08bQf4PayAGQf8HayAPGyIQIA0gBiATGyAUG0H/B2qtQjSGv6IhICADQdwDaiIRIApBAnRqIRhBFyAGa0EfcSEZQRggBmtBH3EhFSADQbgCaiEaIAZBAEohGyAGQQFrIRwgCiEHAkADQCADQcACaiAHIgVBA3RqKwMAIR8CQCAFRQ0AIANB4ANqIQkgBSEEA0AgCSAfIB9EAAAAAAAAcD6i/AK3Ih9EAAAAAAAAcMGioPwCNgIAIBogBEEDdGorAwAgH6AhHyAEQQFGIgcNASAJQQRqIQlBASAEQQFrIAcbIgQNAAsLAn8CQCAURQRAIBMNASAGDAILIB9EAAAAAAAA4H+iIh9EAAAAAAAA4H+iIB8gDxshHyAQDAELIB9EAAAAAAAAYAOiIh9EAAAAAAAAYAOiIB8gEhshHyANCyEEIB8gBEH/B2qtQjSGv6IiHyAfRAAAAAAAAMA/opxEAAAAAAAAIMCioCIf/AIhDCAfIAy3oSEfAn8CQAJAAkACfyAbRQRAIAZFBEAgESAFQQJ0aigCAEEXdQwCC0ECIQtBACAfRAAAAAAAAOA/ZkUNBRoMAgsgESAFQQJ0aiIHKAIAIgggFXUhBCAHIAggBCAVdGsiBzYCACAEIAxqIQwgByAZdQsiC0EATA0BC0EBIQkCQCAFRQ0AIAVBAXEhHUEAIQcgBUEBRwRAIAVBHnEhHkEAIQggA0HgA2ohBANAIAQoAgAhCQJ/AkAgBCAIBH9B////BwUgCUUNAUGAgIAICyAJazYCAEEADAELQQELIQkgBEEEaiIIKAIAIRYCfwJAIAggCQR/IBZFDQFBgICACAVB////BwsgFms2AgBBACEJQQEMAQtBASEJQQALIQggBEEIaiEEIB4gB0ECaiIHRw0ACwsgHUUNACADQeADaiAHQQJ0aiIEKAIAIQcCQCAEIAkEfyAHRQ0BQYCAgAgFQf///wcLIAdrNgIAQQAhCQwBC0EBIQkLAkAgBkEATA0AQf///wMhBAJAAkAgHA4CAQACC0H///8BIQQLIBEgBUECdGoiByAHKAIAIARxNgIACyAMQQFqIQwgC0ECRg0BCyALDAELRAAAAAAAAPA/IB+hIh8gHyAgoSAJQQFxGyEfQQILIQsgH0QAAAAAAAAAAGEEQCAYIQQgBSEHAkAgCiAFQQFrIglLDQBBACEIA0ACQCADQeADaiAJQQJ0aigCACAIciEIIAkgCk0NACAKIAkgCSAKS2siCU0NAQsLIAUhByAIRQ0AIAVBAnQgA2pB3ANqIQQDQCAFQQFrIQUgBkEYayEGIAQoAgAhACAEQQRrIQQgAEUNAAsMAwsDQCAHQQFqIQcgBCgCACEIIARBBGshBCAIRQ0ACyAFIAdPDQEgBUEBaiEIA0AgAyAIQQN0aiAIIA5qQQJ0QZDAxABqKAIAtzkDACADQcACaiAIQQN0aiAAKwMAIAMgCEEDdGorAwCiRAAAAAAAAAAAoDkDACAHIAhNDQIgCCAHIAhLaiIIIAdNDQALDAELCwJAAkACQEEAIAZrIgRB/wdMBEAgBEGCeE4NAyAfRAAAAAAAAGADoiEfIARBuHBNDQFByQcgBmshBAwDCyAfRAAAAAAAAOB/oiEfIARB/g9LDQFBgXggBmshBAwCCyAfRAAAAAAAAGADoiEfQfBoIAQgBEHwaE0bQZIPaiEEDAELIB9EAAAAAAAA4H+iIR9B/RcgBCAEQf0XTxtB/g9rIQQLIB8gBEH/B2qtQjSGv6IiH0QAAAAAAABwQWYEQCADQeADaiAFQQJ0aiAfIB9EAAAAAAAAcD6i/AK3Ih9EAAAAAAAAcMGioPwCNgIAIAIgF2ohBiAFQQFqIQULIANB4ANqIAVBAnRqIB/8AjYCAAsCfAJAAkAgBkH/B0wEQCAGQYJ4SA0BRAAAAAAAAPA/DAMLIAZB/g9LDQEgBkH/B2shBkQAAAAAAADgfwwCCyAGQbhwSwRAIAZByQdqIQZEAAAAAAAAYAMMAgtB8GggBiAGQfBoTRtBkg9qIQZEAAAAAAAAAAAMAQtB/RcgBiAGQf0XTxtB/g9rIQZEAAAAAAAA8H8LIAZB/wdqrUI0hr+iIR8gBUEBcQR/IAUFIANBwAJqIAVBA3RqIB8gA0HgA2ogBUECdGooAgC3ojkDACAfRAAAAAAAAHA+oiEfIAVBAWsLIQAgBQRAIABBA3QgA2pBuAJqIQQgAEECdCADakHcA2ohAgNAIAQgH0QAAAAAAABwPqIiICACKAIAt6I5AwAgBEEIaiAfIAJBBGooAgC3ojkDACAEQRBrIQQgAkEIayECICBEAAAAAAAAcD6iIR8gAEEBRyEHIABBAmshACAHDQALCyAFQQFqIQYgA0HAAmogBUEDdGohCSAFIQQDQAJAIAogBSAEIgBrIgcgByAKSxsiCEUEQEEAIQJEAAAAAAAAAAAhHwwBCyAIQQFqQX5xIQ1EAAAAAAAAAAAhH0EAIQRBACECA0AgHyAEQZjCxABqKwMAIAQgCWoiECsDAKKgIARBoMLEAGorAwAgEEEIaisDAKKgIR8gBEEQaiEEIA0gAkECaiICRw0ACwsgA0GgAWogB0EDdGohBCAIQQFxRQRAIB8gAkEDdEGYwsQAaisDACADQcACaiAAIAJqQQN0aisDAKKgIR8LIAQgHzkDACAJQQhrIQkgAEEBayEEIAANAAsCQCAGQQNxIgBFBEBEAAAAAAAAAAAhHyAFIQIMAQsgA0GgAWogBUEDdGohBEQAAAAAAAAAACEfIAUhAgNAIAJBAWshAiAfIAQrAwCgIR8gBEEIayEEIABBAWsiAA0ACwsgBUEDTwRAIAJBA3QgA2pBiAFqIQQDQCAfIARBGGorAwCgIARBEGorAwCgIARBCGorAwCgIAQrAwCgIR8gBEEgayEEIAJBA0chACACQQRrIQIgAA0ACwsgASAfmiAfIAsbOQMAIANBsARqJAAgDEEHcQvHGQMUf1V9AX5BfyEMAkACQAJAAkACQCABLgF4IglBAEwEQEF/IQ0gAEF/RwRAIAEoAkBBAXFFDQUgASgCRCIKIAIoAowDTw0GIAIoAogDIApBgANsaiIKKAIAQQFHDQYgCigCBCABKAJIRw0GIAooAhghDAsgCUEASA0BCyAAQX9GBEBBfyENDAELIAEoAkxBAXFFDQEgASgCUCIKIAIoAowDTw0CIAIoAogDIApBgANsaiICKAIAQQFHDQIgAigCBCABKAJURw0CIAIoAhghDQsgAygCBCEKIAwgAygCCCIJSQRAIAogDEEYbGoiAioCFCFSIAIqAhAhUSACKgIMIVAgAioCCCFPIAIqAgQhTiACKgIAIUMLQwAAgD8hRCAMIAMoAhQiD0kEQCADKAIQIAxBBnRqIgIqAjwhUyACKgI4IVQgAioCNCFVIAIqAjAhRiACKgIsITQgAioCKCFFIAIqAiQhMyACKgIcIUIgAioCGCFjIAIqAhQhZCACKgIQIWUgAioCDCFEIAIqAgghOiACKgIEITsgAioCACE8IAIqAiAhMQsgCSANSwRAIAogDUEYbGoiAioCFCFbIAIqAhAhWiACKgIMIVkgAioCCCFYIAIqAgQhVyACKgIAIUcLQwAAgD8hSCANIA9JBEAgAygCECANQQZ0aiICKgI8IVYgAioCOCFcIAIqAjQhXSACKgIwIUkgAioCKCFKIAIqAiQhNSACKgIgITYgAioCHCFLIAIqAhghZiACKgIUIWcgAioCECFoIAIqAgwhSCACKgIIIT0gAioCBCE+IAIqAgAhPyACKgIsITILIAEoAmAiDkECdiAOQQNxQQBHaiIUBEBDAACAv0MAAIA/IAEqAnAiK4wiaZgiIiArk5UhISBOIFeTIh4gASoCbCIsjCJMlCBDIEeTIh8gASoCaCItlJMgKyBPIFiTIiCUkyEcICAgKyAclJIiICAglCAfIC0gHJSSIh8gH5QgHiAsIByUkiIeIB6UkpKRIhxDF7fROF0hAiArICIgLCAslCAhlJIgHiAclSACGyIulCAsICwgICAclSACGyIvlJMiNyA3IFUgXZIiIJSUIC0gL5QgKyAtICyUICGUIB8gHJUgAhsiMJSTIjggOCBUIFySIhyUlJIgLCAwlCAtIC6UkyI5IDkgUyBWkiIhlJSSIWogMCAgIDCUlCAuIBwgLpSUkiAvICEgL5SUkiFrIBwgTJQgTJQgLSAgIC2MImyUlJMgKyAhIGmUlJMhbUGlByERQQAhD0EEIQNBACECA0AgAiEKIAMhAgJAAkACQAJAIAogDk0EQCABKAJgIgMgDkkNASAKQQJ2IgMgB08NAiADIAVPDQMgASgCXCEJIAYgA0GsB2xqIgtBBCAOIAprIgMgA0EETxsiFjoApAcgCyAANgKgByALIA02ApwHIAsgDDYCmAcgCyBWOAIgIAsgXDgCHCALIF04AhggCyBTOAIUIAsgVDgCECALIFU4AgwgCyBpOAIIIAsgTDgCBCALIGw4AgAgCyAvOAI0IAsgLjgCMCALIDA4AiwgCiAORg0EIAkgEGohA0EAIRUgBCEJIA8iCiESIBEhEwNAIANBFGoqAgAhXiADQTRqKgIAIW4gA0EMaioCACFvIANBKGopAwAhcSADQSBqKgIAIV8gA0EYaioCACFgIANBHGoqAgAhYSADQQhqKgIAISIgA0EEaioCACEfIANBJGoqAgAhHCADQThqKAIAIQggAyoCACEeIAsgA0EQaioCADgCKCAGIBNqIAg6AAAgBiASaiIIQfgAaiAcOAIAIAhB1ABqICwgHiBokyIclCAtIB8gZ5MiIZSTIh04AgAgCEHQAGogLSAiIGaTIiCUICsgHJSTIiM4AgAgCEHMAGogKyAhlCAsICCUkyIkOAIAIAhByABqIC0gHyBkkyIflCAsIB4gZZMiHpSTIiU4AgAgCEHEAGogKyAelCAtICIgY5MiIpSTIiY4AgAgCEFAayAsICKUICsgH5STIic4AgAgCEHsAGogSSAdlCA1ICSUIDIgI5SSkiJNOAIAIAhB6ABqIDIgHZQgNiAklCBKICOUkpIiKDgCACAIQeQAaiA1IB2UIEsgJJQgNiAjlJKSIik4AgAgCEHgAGogRiAllCAzICeUIDQgJpSSkiIqOAIAIAhB3ABqIDQgJZQgMSAnlCBFICaUkpIiQDgCACAIQdgAaiAzICWUIEIgJ5QgMSAmlJKSIkE4AgAgCEGAAWpDAAAAAEMAAIA/IB0gTZQgJCAplCAjICiUkpIgbSAlICqUICcgQZQgJiBAlJKSkpIiHZUgHYtDCOU8Hl0bOAIAIAYgCmoiCEHQA2ogYCAwlCBhIC6UkiBfIC+UkiIoOAIAIAhBuANqIEkgISAwlCAcIC6UkyIdlCA1ICAgLpQgISAvlJMiI5QgMiAcIC+UICAgMJSTIiSUkpIiTTgCACAIQbQDaiIXIDIgHZQgNiAjlCBKICSUkpIiKTgCACAIQbADaiIYIDUgHZQgSyAjlCA2ICSUkpIiKjgCACAIQaADaiIZIEYgHiAulCAfIDCUkyIllCAzIB8gL5QgIiAulJMiJpQgNCAiIDCUIB4gL5STIieUkpIiQDgCACAIQZwDaiIaIDQgJZQgMSAmlCBFICeUkpIiQTgCACAIQZgDaiIbIDMgJZQgQiAmlCAxICeUkpIiYjgCACAIQYgDaiAdOAIAIAhBhANqICQ4AgAgCEGAA2ogIzgCACAIQfACaiAlOAIAIAhB7AJqICc4AgAgCEHoAmogJjgCACAIQdgDaiBxNwIAIAhB6ANqIB0gTZQgIyAqlCAkICmUkpIgayAlIECUICYgYpQgJyBBlJKSkpI4AgAgCEHIA2ogKDgCACAIQdQDaiBgIDeUIGEgOJSSIF8gOZSSIig4AgAgCEHEA2ogSSAhIDeUIBwgOJSTIh2UIDUgICA4lCAhIDmUkyIjlCAyIBwgOZQgICA3lJMiJJSSkiIpOAIAIAhBwANqIDIgHZQgNiAjlCBKICSUkpIiKjgCACAIQbwDaiA1IB2UIEsgI5QgNiAklJKSIkA4AgAgCEGsA2ogRiAeIDiUIB8gN5STIiWUIDMgHyA5lCAiIDiUkyImlCA0ICIgN5QgHiA5lJMiJ5SSkiJBOAIAIAhBqANqIDQgJZQgMSAmlCBFICeUkpIiYjgCACAIQaQDaiAzICWUIEIgJpQgMSAnlJKSInA4AgAgCEGUA2ogHTgCACAIQZADaiAkOAIAIAhBjANqICM4AgAgCEH8AmogJTgCACAIQfgCaiAnOAIAIAhB9AJqICY4AgAgCEHsA2ogHSAplCAjIECUICQgKpSSkiBqICUgQZQgJiBwlCAnIGKUkpKSkjgCACAIQcwDaiAoOAIAIAlBEGogHiBEIDogH5QgOyAilJMiKCAokiIolCA6IDwgIpQgOiAelJMiKSApkiIplCA7IDsgHpQgPCAflJMiKiAqkiIqlJOSkjgCACAJQRRqIB8gRCAplCA8ICqUIDogKJSTkpI4AgAgCUEYaiAiIEQgKpQgOyAolCA8ICmUk5KSOAIAIAlBHGogHCBIID0gIZQgPiAglJMiKCAokiIolCA9ID8gIJQgPSAclJMiKSApkiIplCA+ID4gHJQgPyAhlJMiKiAqkiIqlJOSkjgCACAJQSBqICEgSCAplCA/ICqUID0gKJSTkpI4AgAgCUEkaiAgIEggKpQgPiAolCA/ICmUk5KSOAIAIAkgYDgCACAJQQRqIGE4AgAgCUEIaiBfOAIAIAlBKGogbzgCACAIQfADaiAmIBsqAgCUICcgGioCAJSSICUgGSoCAJSSICMgGCoCAJQgJCAXKgIAlJIgHSBNlJKSIh0gHZI4AgAgCUEMaiBOIFIgHpQgUCAilJOSIFcgWyAclCBZICCUk5KTIEyUIC0gQyBRICKUIFIgH5STkiBHIFogIJQgWyAhlJOSk5STICsgTyBQIB+UIFEgHpSTkiBYIFkgIZQgWiAclJOSk5STIF4gXkMAAAAAXiBeQwAAgD9gIG5DAAAAAFwbs5SUOAIAIANBQGshAyAJQSxqIQkgCkGMAWohCiASQcwAaiESIBNBAWohEyAVQQFqIhUgFkkNAAsMBAsgCiAOQeigwgAQkA8ACyAOIANB6KDCABCPDwALIAMgB0H4oMIAEIgLAAsgAyAFQYihwgAQiAsACyAQQYACaiEQIARBsAFqIQQgD0GsB2ohDyARQawHaiERIAJBBGohAyAUQQFrIhQNAAsLDwtBwMDCABCRDwALQbCJwgBBE0HQwMIAENcLAAtBoMDCABCRDwALQbCJwgBBE0GwwMIAENcLAAuiTQMIfyF9A34jAEGAA2siCiQAIApBKGogAiADKAK4AREAACAKKAIsIQ4gCigCKCEJIApBIGogBCAFKAK4AREAACAKKAIkIQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJQQBHQQAgCigCICIMG0UEQCACIAMoAqABEQQAIg1B/wFxQQZHIAQgBSgCoAERBAAiD0H/AXFBBkdxDQIgAiADEMcLIgBFDQFBACENIAEgACAEIAUgBiAHIAhBABBgDBILIAogBjgCMCAIELoHIAgoAgAiAkUNAiAKQRhqIAIgCCgCBCgCHBEAACAKQbABaiAKKAIYIgMgCigCHCgCDBEAACAKKQOwAULcsfiFidHFjaZ/hSAKKQO4AULXo+iBsc/zsFaFhEIAUg0DIAMgAy0AGEF/c0EBcSICOgAYIAogAjoANyAJIA4oAhARBAAhAiAMIAsoAhARBAAhBCABKgIUIRogASoCECEUIAEqAhghFyABKgIAIRMgASoCBCEVIAEqAgghGCAKIAEoAgwiATYCRCAKIBiMIgY4AkAgCiAVjCIROAI8IAogE4wiEjgCOCAKIBMgGpQgFSAUlJMiGSAZkiIZIAG+Ih2UIBUgFSAXlCAYIBqUkyIWIBaSIhaUIBMgGCAUlCATIBeUkyIbIBuSIhuUk5IgF5MiJzgCUCAKIBsgHZQgGSATlCAWIBiUk5IgGpMiKDgCTCAKIBYgHZQgGyAYlCAZIBWUk5IgFJMiIzgCSCAKQdQAaiACEO0GIApB7ABqIAQQ7QYgCiAKKgJgIhkgCioCVCIWk0MAAAA/lCIbIBuUIAoqAmQiGyAKKgJYIiGTQwAAAD+UIh8gH5SSIAoqAmgiHyAKKgJcIiSTQwAAAD+UIh4gHpSSIAoqAngiHiAKKgJsIiCTQwAAAD+UIhwgHJQgCioCfCIcIAoqAnAiIpNDAAAAP5QiJSAllJIgCioCgAEiJSAKKgJ0IiaTQwAAAD+UIikgKZSSXSICOgCHASACDQQgJSEfICYhJCAcIRsgIiEhIB4hGSAgIRYgFyEnIBohKCAUISMgGCEGIBUhESATIRIgCyECIAwhBSAOIQsgCSEMDA8LQQAhDSAEIAUQxwsiAEUNECAKIAEqAgwiFTgCvAEgCiABKgIIIhGMOAK4ASAKIAEqAgQiEow4ArQBIAogASoCACITjDgCsAEgCiAVIBMgASoCFCIYlCASIAEqAhAiGpSTIhQgFJIiFJQgEiASIAEqAhgiF5QgESAYlJMiGSAZkiIZlCATIBEgGpQgEyAXlJMiFiAWkiIWlJOSIBeTOALIASAKIBUgFpQgEyAUlCARIBmUk5IgGJM4AsQBIAogFSAZlCARIBaUIBIgFJSTkiAakzgCwAEgCkGwAWogACACIAMgBiAHIAhBARBgDBALIA1B/wFxQQlHDQMgDEUNBCAKIAEqAgwiFTgCvAEgCiABKgIIIhGMOAK4ASAKIAEqAgQiEow4ArQBIAogASoCACITjDgCsAEgCiAVIBMgASoCFCIYlCASIAEqAhAiGpSTIhQgFJIiFJQgEiASIAEqAhgiF5QgESAYlJMiGSAZkiIZlCATIBEgGpQgEyAXlJMiFiAWkiIWlJOSIBeTOALIASAKIBUgFpQgEyAUlCARIBmUk5IgGJM4AsQBIAogFSAZlCARIBaUIBIgFJSTkiAakzgCwAEgAiADEMgLIgIEQEEAIQ0gACABIApBsAFqIAIgDCALIAYgByAIQQAQgAEMEAtB3NjBABCRDwALQbjvwQAQkQ8AC0HI78EAEJEPAAsgCiAXOAJQIAogGjgCTCAKIBQ4AkggCiABNgJEIAogGDgCQCAKIBU4AjwgCiATOAI4IAogIDgCVCAKIBY4AmwgCiAiOAJYIAogITgCcCAKICY4AlwgCiAkOAJ0IAogHjgCYCAKIBk4AnggCiAcOAJkIAogGzgCfCAKICU4AmggCiAfOAKAASAOIQIgCSEFDAoLAkACQCAPQf8BcQ4KAAcHBwcDBwcHAQcLIA1B/wFxQQVGDQMMCAsgCUUNACAKQbABaiICIAEQ3AcgBCAFEMgLIgMEQCAAIAIgASADIAkgDiAGIAcgCEEBEIABDAsLQezYwQAQkQ8ACyMAQSBrIgwkAAJAIAIgAxDICyILBEAgACABIAsgBCAFIAYgByAIQQAQgwEMAQsgBCAFEMgLIgRFDQAgDCABKgIMIhU4AhAgDCABKgIIIhGMOAIMIAwgASoCBCISjDgCCCAMIAEqAgAiE4w4AgQgDCAVIBMgASoCFCIYlCASIAEqAhAiGpSTIhQgFJIiFJQgEiASIAEqAhgiF5QgESAYlJMiGSAZkiIZlCATIBEgGpQgEyAXlJMiFiAWkiIWlJOSIBeTOAIcIAwgFSAWlCATIBSUIBEgGZSTkiAYkzgCGCAMIBUgGZQgESAWlCASIBSUk5IgGpM4AhQgACAMQQRqIAQgAiADIAYgByAIQQEQgwELIAxBIGokAAwJCyANQf8BcQ4GAAQEBAQBBAsgAiADEMULIgBBACAEIAUQvwsiCBsNAUEAIQ0gAiADEL8LIQAgBCAFEMULIQIgAEUNCCACRQ0IIAogASoCDCIVOAK8ASAKIAEqAggiEYw4ArgBIAogASoCBCISjDgCtAEgCiABKgIAIhOMOAKwASAKIBUgEyABKgIUIhiUIBIgASoCECIalJMiFCAUkiIUlCASIBIgASoCGCIXlCARIBiUkyIZIBmSIhmUIBMgESAalCATIBeUkyIWIBaSIhaUk5IgF5M4AsgBIAogFSAWlCATIBSUIBEgGZSTkiAYkzgCxAEgCiAVIBmUIBEgFpQgEiAUlJOSIBqTOALAASAKQbABaiACIAAqAgAgBiAHQQEQoAEMCAsjAEGwL2siCSQAIAIgAxDFCyECIAQgBRDFCyEEAkAgAkUNACAERQ0AIAkgBjgCICAJIAE2AhwCQAJAAkACQAJ/AkACQCAIKAIAIgFFDQAgCUEQaiABIAgoAgQoAhgRAAAgCUGAJ2ogCSgCECIBIAkoAhQoAgwRAAAgAUUNACAJKQOAJ0Kiz4Ly7qfFl6V/hSAJKQOIJ0Ljxsak8OmG8AyFhFANAQtBIEEIELMOIgNFDQMgA0EAOgAYIANCidm54o7TvpcINwMQIANBCGpBwOXBACkDADcDACADQbjlwQApAwA3AwACQCAIKAIAIgFFDQAgCCgCBCIFKAIAIgwEQCABIAwRBgALIAUoAgQiDEUNACABIAwgBSgCCBCIDwsgCEGw5sEANgIEIAggAzYCAEGw5sEADAELIAgoAgAiA0UNASAIKAIECyEBIAlBCGogAyABKAIcEQAAIAlBgCdqIgggCSgCCCIFIAkoAgwoAgwRAAACQAJAIAVFDQAgCSkDgCdCos+C8u6nxZelf4UgCSkDiCdC48bGpPDphvAMhYRCAFINACAFIAUtABhBf3NBAXEiAToAGCAJIAE6ACcgCUEoaiINQQhqIAdBCGoiASgCADYCACABQQA2AgAgBykCACEyIAdCgICAgMAANwIAIAkgMjcDKCAJIAIqAmxDAAAAP5Q4AkAgCSACKgJoQwAAAD+UOAI8IAkgAioCZEMAAAA/lDgCOCAEKgJkIQYgBCoCaCERIAkgBCoCbEMAAAA/lDgCTCAJIBFDAAAAP5Q4AkggCSAGQwAAAD+UOAJEIAlBjCBqIgEgAhDtBiAJKgIgQwAAAD+UIgZDAAAAAGBFDQEgCSAGIAkqAqAgkjgCZCAJIAYgCSoCnCCSOAJgIAkgBiAJKgKYIJI4AlwgCSAJKgKUICAGkzgCWCAJIAkqApAgIAaTOAJUIAkgCSoCjCAgBpM4AlAgCCAEEO0GIAkgBiAJKgKUJ5I4AnwgCSAGIAkqApAnkjgCeCAJIAYgCSoCjCeSOAJ0IAkgCSoCiCcgBpM4AnAgCSAJKgKEJyAGkzgCbCAJIAkqAoAnIAaTOAJoIAkoAhwiAyoCDCETIAMqAgQhBiADKgIUIRUgAyoCECEYIAMqAgghESADKgIYIRogAyoCACESIAlBADYCgAEgCUGEAWogCUHQAGoiDiADIAlB6ABqIg8QsgEgCSgChAFFDQUgCUG4AWoiDEEQaiAJQZgBaikCADcDACAMQQhqIAlBkAFqKQIANwMAIAkgCSkCiAE3A7gBIAlB0AFqIgNBEGogCUGwAWopAgA3AwAgA0EIaiAJQagBaikCADcDACAJIAkpAqABNwPQASAJIAkqAkwgCSoCQJJDAAAgQZQ4AvQBIAkgCSoCSCAJKgI8kkMAACBBlDgC8AEgCSAJKgJEIAkqAjiSQwAAIEGUOALsASAIIAQQ7QYgASAIIAkoAhwQwgMgCUH4AWoiCyABIAlB7AFqIgMQ1AsgASAOIAMQ1AsgCCALIAEQqQggCUGQAmoiDkEIaiAJQYQnaiIQIAsgCSgCgCcbIgtBCGopAgA3AwAgDkEQaiALQRBqKQIANwMAIAkgCykCADcDkAIgCCACEO0GIBIgEZQiFCAUkiIiIBMgBowiJZQiFCAUkiImk4sgCSoCjCciFCAJKgKAJyIXk0MAAAA/lCIZlCAGIBGUIhYgFpIiHSATIBKMIimUIhYgFpIiKpKLIAkqApAnIiggCSoChCciI5NDAAAAP5QiFpSSIBEgEZQiGyATIBOUIi0gEiASlCIukyIvIAYgBpQiIZOSiyAJKgKUJyIeIAkqAognIiCTQwAAAD+UIh+UkiEkIAYgFyAUkkMAAAA/lCInlCASICMgKJJDAAAAP5QiKJSTIhQgFJIhFCARICiUIAYgICAekkMAAAA/lCIjlJMiFyAXkiEXIAkgJCATIBIgFZQgBiAYlJMiHiAekiIelCAGIAYgGpQgESAVlJMiICAgkiIglCASIBEgGJQgEiAalJMiHCAckiIclJOSIBqTIjAgIyATIBSUIAYgF5QgEiASICOUIBEgJ5STIhogGpIiGpSTkpKSIiOSOAKgICAJIBIgBpQiKyArkiIrIBMgEYwiMZQiLCAskiIskosgGZQgISAvkiAbk4sgFpSSIB0gKpOLIB+UkiIdIBMgHJQgEiAelCARICCUk5IgFZMiKiAoIBMgGpQgEiAUlCARIBeUk5KSkiIVkjgCnCAgCSAuIC2SICGTIBuTiyAZlCArICyTiyAWlJIgIiAmkosgH5SSIhkgEyAglCARIByUIAYgHpSTkiAYkyIWICcgEyAXlCARIBqUIAYgFJSTkpKSIhiSOAKYICAJICMgJJM4ApQgIAkgFSAdkzgCkCAgCSAYIBmTOAKMICAJQagCaiILIAEgAxDUCyABIA8gAxDUCyAIIAsgARCpCCAJQcACaiIDQQhqIBAgCyAJKAKAJxsiCEEIaikCADcDACADQRBqIAhBEGopAgA3AwAgCSAIKQIANwPAAiAJQbDYwQA2AogDIAkgADYChAMgCSAENgL4AiAJIAI2AvACIAkgBzYC7AIgCSAFNgLgAiAJIAlBxABqNgKUAyAJIAlBOGo2ApADIAkgCUEgajYCjAMgCSAJQRxqNgKAAyAJIAM2AvwCIAkgDjYC9AIgCSANNgLoAiAJIAlBJ2o2AuQCIAkgCUGAAWo2AtwCIAlBmANqIgAgAiAMEOoJIAEgAEH0BvwKAAAgCUHoLmoiAyABEIgBIAkoAuguBEAgCUG4GGohDCAJQZgYaiEAIAlBpBFqIQEgA0EEaiEDA0AgCUGIH2oiCEEYaiADQRhqKQIANwMAIAhBEGogA0EQaikCADcDACAIQQhqIANBCGopAgA3AwAgCEEgaiADQSBqKAIAIgs2AgAgCSADKQIANwOIHwJAIAsQwg1B/wFxQQFrIg5BAk8NACAJQYwKaiACIAgQwwUgCSAJKgIgIhUgCSoCQJI4ApwYIAkgFSAJKgI8kjgCmBggCSAVIAkqAjiSOAKUGCAJIDE4AognIAkgJTgChCcgCSApOAKAJyAJKgKcHyEVIAkqAqQfIRggCSoCoB8hGiAJIBM4AownIAkgMCAYIBMgBiAVlCASIBqUkyIUIBSSIhSUIAYgESAalCAGIBiUkyIXIBeSIheUIBIgEiAYlCARIBWUkyIYIBiSIhiUk5KSkjgCmCcgCSAqIBogEyAYlCASIBSUIBEgF5STkpKSOAKUJyAJIBYgFSATIBeUIBEgGJQgBiAUlJOSkpI4ApAnIAlBoC5qIgsgCUGUGGogCUGAJ2oiCBDQBSAJQawKaiINIAQgCxDqCSAIIA1B9Ab8CgAAIAlBoBFqIAgQiAEgCSgCoBFBAUYEQANAIAlB+C1qIghBGGogAUEYaikCADcDACAIQRBqIAFBEGopAgA3AwAgCEEIaiABQQhqKQIANwMAIAhBIGogAUEgaigCACIINgIAIAkgASkCADcD+C0gCBDCDUH/AXEhCAJAAkACQAJAAkAgDg4DAAECBAsgCEEBa0EDSQ0CDAMLIAhBAWtBAkkNAQwCCyAIQQFHDQELIAwgBCAJQfgtaiIIEMMFIABBGGogCUGMCmoiC0EYaikCADcCACAAQRBqIAtBEGopAgA3AgAgAEEIaiALQQhqKQIANwIAIAAgCSkCjAo3AgAgCSAINgLYGCAJIAlBiB9qIgs2ApQYIAlB3AJqIAAgDCALIAgQPwsgCUGgEWogCUGAJ2oQiAEgCSgCoBENAAsLIAkoAoAnQQJGDQAgCSgChCgiCEEhSQ0AIAkoAognIAhBAnRBBBCIDwsgCUHoLmogCUGMIGoQiAEgCSgC6C4NAAsLAkAgCSgCjCBBAkYNACAJKAKQISIAQSFJDQAgCSgClCAgAEECdEEEEIgPCyAJQaARaiIAIAQgCUHQAWoQ6gkgCUGUGGoiASAAQfQG/AoAACAJQYgfaiIIIAEQiAEgCSgCiB9BAUYEQCAJQYwvaiEAIAlB7C5qIQEgCUH8LWohAyAIQQRqIQwDQCAJQbAfaiIIQRhqIAxBGGopAgA3AwAgCEEQaiAMQRBqKQIANwMAIAhBCGogDEEIaikCADcDACAIQSBqIAxBIGooAgAiCzYCACAJIAwpAgA3A7AfAkAgCxDCDUH/AXEiDkEBa0ECTw0AIAlB1B9qIAQgCBDDBSAJIAkqAiAiBiAJKgJMkjgC8C4gCSAGIAkqAkiSOALsLiAJIAYgCSoCRJI4AuguIAkoAhwiCEEIaiINKgIAIQYgCCoCDCETIAgqAgQhESAIKgIAIRIgCUGAJ2oiC0EIaiANKQIANwMAIAkgCCkCADcDgCcgESAJKgLMHyIalCAGIAkqAsgfIhSUkyIVIBWSIRUgFCASlCAJKgLEHyIXIBGUkyIYIBiSIRggCSAIKgIQIBcgEyAVlCARIBiUIAYgFyAGlCAaIBKUkyIXIBeSIheUk5KSkjgCkCcgCSAIKgIUIBQgEyAXlCAGIBWUIBIgGJSTkpKSOAKUJyAJIAgqAhggGiATIBiUIBIgF5QgESAVlJOSkpI4ApgnIAlB9B9qIgggCUHoLmogCxDQBSAJQYwgaiINIAIgCBDqCSALIA1B9Ab8CgAAIAlB+C1qIAsQiAECQCAJKAL4LUEBRw0AIA5BAUYEQANAIAlBoC5qIghBGGogA0EYaikCADcDACAIQRBqIANBEGopAgA3AwAgCEEIaiADQQhqKQIANwMAIAhBIGogA0EgaigCACILNgIAIAkgAykCADcDoC4gCxDCDUH/AXFBAWtBAk0EQCAJQcguaiILIAIgCBDDBSABQRhqIAtBGGopAgA3AgAgAUEQaiALQRBqKQIANwIAIAFBCGogC0EIaikCADcCACABIAkpAsguNwIAIAAgCSkC1B83AgAgAEEIaiAJQdQfaiILQQhqKQIANwIAIABBEGogC0EQaikCADcCACAAQRhqIAtBGGopAgA3AgAgCSAJQbAfaiILNgKsLyAJIAg2AuguIAlB3AJqIAEgACAIIAsQPwsgCUH4LWogCUGAJ2oQiAEgCSgC+C0NAAwCCwALA0AgCUGgLmoiCEEYaiADQRhqKQIANwMAIAhBEGogA0EQaikCADcDACAIQQhqIANBCGopAgA3AwAgCEEgaiADQSBqKAIAIgs2AgAgCSADKQIANwOgLiALEMINQf8BcUEBa0ECSQRAIAlByC5qIgsgAiAIEMMFIAFBGGogC0EYaikCADcCACABQRBqIAtBEGopAgA3AgAgAUEIaiALQQhqKQIANwIAIAEgCSkCyC43AgAgACAJKQLUHzcCACAAQQhqIAlB1B9qIgtBCGopAgA3AgAgAEEQaiALQRBqKQIANwIAIABBGGogC0EYaikCADcCACAJIAlBsB9qIgs2AqwvIAkgCDYC6C4gCUHcAmogASAAIAggCxA/CyAJQfgtaiAJQYAnahCIASAJKAL4LQ0ACwsgCSgCgCdBAkYNACAJKAKEKCIIQSFJDQAgCSgCiCcgCEECdEEEEIgPCyAJQYgfaiAJQZQYahCIASAJKAKIHw0ACwsCQCAJKAKUGEECRg0AIAkoApgZIgBBIUkNACAJKAKcGCAAQQJ0QQQQiA8LIAUoAgwiDEUNBSAFKAIAIgNBCGohBCADKQMAQn+FQoCBgoSIkKDAgH+DITIgCS0AJyEPA0AgMlAEQANAIANB4AFrIQMgBCkDACEyIARBCGohBCAyQoCBgoSIkKDAgH+DIjJCgIGChIiQoMCAf1ENAAsgMkKAgYKEiJCgwIB/hSEyCwJAIAMgMnqnQQN2QWRsaiIAQQRrLQAAIA9HDQAgAEEMaygCACIBIAcoAggiAk8NBiAHKAIEIAFBqAFsaiIBKAKEASIIRQ0AIAFB/ABqIQ4gCEEBayEBIABBCGsiECgCACEAQQAhDUHAACECAkACQANAIAAgDXZBAXFFDQEgAkFAayECIAggDUEBaiINRw0AC0EAIQsMAQtBASELIAEgDUYNACANQQFqIQAgDigCBCACaiENA0ACQCAQKAIAIAB2QQFxRQRAIAtBAWohCwwBCyANIAtBBnRrIgEgDSkCADcCACABQThqIA1BOGopAgA3AgAgAUEwaiANQTBqKQIANwIAIAFBKGogDUEoaikCADcCACABQSBqIA1BIGopAgA3AgAgAUEYaiANQRhqKQIANwIAIAFBEGogDUEQaikCADcCACABQQhqIA1BCGopAgA3AgALIA1BQGshDSAIIABBAWoiAEcNAAsLIA4gCCALazYCCAsgMkIBfSAygyEyIAxBAWsiDA0ACwwFC0Hs6sEAEJEPAAsgCUEANgKQJyAJQQE2AoQnIAlBlNfBADYCgCcgCUIENwKIJyAJQYAnakGc18EAELgNAAtB3OrBABCRDwALQQhBIEGQxMQAKAIAIgBBzAggABsRAAAACyABIAJB/OrBABCICwALIAUoAgwiAgRAIAUoAgQhByAFKAIAIgFBCGohBCABKQMAQn+FQoCBgoSIkKDAgH+DITIgBSgCCCEMIAktACchCCABIQMgAiEAA0AgMlAEQANAIANB4AFrIQMgBCkDACEyIARBCGohBCAyQoCBgoSIkKDAgH+DIjJCgIGChIiQoMCAf1ENAAsgMkKAgYKEiJCgwIB/hSEyCyAyQgF9ITQgCCADIDJ6p0EDdkFkbGoiC0EEay0AAEcEQEGAASENIAEgC2tBHG0iCyABaiIOKQAAIjMgM0IBhoNCgIGChIiQoMCAf4N6p0EDdiABIAtBCGsgB3FqIgspAAAiMyAzQgGGg0KAgYKEiJCgwIB/g3mnQQN2akEHTQRAIAUgDEEBaiIMNgIIQf8BIQ0LIA4gDToAACAFIABBAWsiADYCDCALQQhqIA06AAALIDIgNIMhMiACQQFrIgINAAsLIAkoAiwhACAJKAIwIgMEQCAAQYABaiEEA0AgBEEEaygCACIBBEAgBCgCACABQQZ0QQQQiA8LIARBKGsoAgAiAQRAIARBJGsoAgAgAUEGdEEQEIgPCyAEQagBaiEEIANBAWsiAw0ACwsgCSgCKCIBRQ0AIAAgAUGoAWxBBBCIDwsgCUGwL2okAAwGC0EAIQ0gASAAIAgqAgAgBiAHQQAQoAEMBgsgDUH/AXFBBUYNACAPQf8BcUEFRw0BCyAJIAxyRQ0BIwBBMGsiDCQAIAIgAxDFCyELIAxBCGogBCAFKAK4AREAAAJAAkAgCwRAIAwoAggiCQ0BCyAMIAIgAygCuAERAAAgDCgCBCELIAwoAgAhAiAEIAUQxQshAyACRQ0BIANFDQEgDCABKgIMIhU4AiAgDCABKgIIIhGMOAIcIAwgASoCBCISjDgCGCAMIAEqAgAiE4w4AhQgDCAVIBMgASoCFCIYlCASIAEqAhAiGpSTIhQgFJIiFJQgEiASIAEqAhgiF5QgESAYlJMiGSAZkiIZlCATIBEgGpQgEyAXlJMiFiAWkiIWlJOSIBeTOAIsIAwgFSAWlCATIBSUIBEgGZSTkiAYkzgCKCAMIBUgGZQgESAWlCASIBSUk5IgGpM4AiQgACAMQRRqIAMgAiALIAYgByAIQQEQPQwBCyAAIAEgCyAJIAwoAgwgBiAHIAhBABA9CyAMQTBqJAAMAwsgCQRAQQAhDSAAIAEgCSAOQQxqKAIAIA5BEGooAgAgBCAFIAYgByAIQQAQuwEMBAsgDARAIApBsAFqIgQgARDcByAAIAQgDCALQQxqKAIAIAtBEGooAgAgAiADIAYgByAIQQEQuwEMAwsgBygCCEUEQCAHKAIARQRAIAdB/NjBABCXCAsgBygCBCIAQoCAgICAAjcCWCAAQQA2AkwgAEEANgJAIABBADYCICAAQQA2AgAgAEIANwJgIABCADcChAEgAEKAgICAwAA3AnwgAEHoAGpCADcCACAAQfAAakIANwIAIABB+ABqQQA7AQAgAEGMAWpCADcCACAAQZQBakIANwIAIABBnAFqQgA3AgAgAEGkAWpBADYCACAHQQE2AggLIAEgASACIAMgBCAFQQAgAUEAIAEgBiAHKAIEECEhDQwDCyMAQSBrIgAkAAJAIAIgAxDFCyIMBEAgASAMIAQgBSAGIAcgCEEAEDQMAQsgBCAFEMULIgRFDQAgACABKgIMIhU4AhAgACABKgIIIhGMOAIMIAAgASoCBCISjDgCCCAAIAEqAgAiE4w4AgQgACAVIBMgASoCFCIYlCASIAEqAhAiGpSTIhQgFJIiFJQgEiASIAEqAhgiF5QgESAYlJMiGSAZkiIZlCATIBEgGpQgEyAXlJMiFiAWkiIWlJOSIBeTOAIcIAAgFSAWlCATIBSUIBEgGZSTkiAYkzgCGCAAIBUgGZQgESAWlCASIBSUk5IgGpM4AhQgAEEEaiAEIAIgAyAGIAcgCEEBEDQLIABBIGokAAwBCyAKKgIwIhNDAAAAAGBFDQIgGyAhkkMAAAA/lCIaIBKUIBkgFpJDAAAAP5QiFCARlJMiFSAVkiEVIBQgBpQgHyAkkkMAAAA/lCIXIBKUkyIYIBiSIRggCiATIBkgFpNDAAAAP5QiGSAGIBKUIhYgFpIiHiAdIBGUIhYgFpIiIJOLlCAbICGTQwAAAD+UIhYgBiARlCIbIBuSIhwgHSASlCIbIBuSIiKSi5SSIB8gJJNDAAAAP5QiGyAGIAaUIiEgHSAdlCIkIBIgEpQiJZMiJiARIBGUIh+TkouUkiIpIBcgFSAdlCAYIBKUIBcgEZQgGiAGlJMiFyAXkiIXIBGUk5KSICeSIieSkjgCnAEgCiATIBsgHCAik4uUIBkgHSAGlCIcIBySIhwgESASlCIiICKSIiKSi5QgFiAfICaSICGTi5SSkiImIBogGCAdlCAXIAaUIBUgEpSTkpIgKJIiEpKSOAKYASAKIBMgGyAgIB6Si5QgFiAiIByTi5QgGSAkICWSIB+TICGTi5SSkiIaIBQgFyAdlCAVIBGUIBggBpSTkpIgI5IiBpKSOAKUASAKICcgKZMgE5M4ApABIAogEiAmkyATkzgCjAEgCiAGIBqTIBOTOAKIASAKQagBaiAHQQhqIgEoAgA2AgAgAUEANgIAIAcpAgAhMiAHQoCAgIDAADcCACAKIDI3A6ABIApBsAFqIgEgDCALKAIQEQQAIApBiAFqEP8GIApBEGogARDhAyAKKAIQQQFxBEAgCigCFCEBIAsoAgwhBANAIAogATYCzAIgCkGw2MEANgL8AiAKIAA2AvgCIAogBzYC8AIgCiADNgLoAiAKIAI2AtwCIAogBTYC2AIgCiAKQTdqNgL0AiAKIApBoAFqNgLsAiAKIApBzAJqNgLkAiAKIApBhwFqNgLgAiAKIApBMGo2AtQCIAogCkE4ajYC0AIgDCABIApB0AJqQdjvwQAgBBECACAKQQhqIApBsAFqEOEDIAooAgwhASAKKAIIQQFxDQALCyAKKAK0AiIAQSFPBEAgCigCuAEgAEECdEEEEIgPCyADKAIMIgAEQCADKAIEIQggAygCACICQQhqIQEgAikDAEJ/hUKAgYKEiJCgwIB/gyEyIAMoAgghBSAKLQA3IQsgAiEMIAAhBANAIDJQBEADQCAMQYABayEMIAEpAwAhMiABQQhqIQEgMkKAgYKEiJCgwIB/gyIyQoCBgoSIkKDAgH9RDQALIDJCgIGChIiQoMCAf4UhMgsgMkIBfSE0IAsgDCAyeqdBAXRB8AFxayIJQQRrLQAARwRAQYABIQcgAiAJa0EEdSIJIAJqIg4pAAAiMyAzQgGGg0KAgYKEiJCgwIB/g3qnQQN2IAIgCUEIayAIcWoiCSkAACIzIDNCAYaDQoCBgoSIkKDAgH+DeadBA3ZqQQdNBEAgAyAFQQFqIgU2AghB/wEhBwsgDiAHOgAAIAMgBEEBayIENgIMIAlBCGogBzoAAAsgMiA0gyEyIABBAWsiAA0ACwsgCigCpAEhACAKKAKoASIMBEAgAEGAAWohAQNAIAFBBGsoAgAiAgRAIAEoAgAgAkEGdEEEEIgPCyABQShrKAIAIgIEQCABQSRrKAIAIAJBBnRBEBCIDwsgAUGoAWohASAMQQFrIgwNAAsLIAooAqABIgFFDQAgACABQagBbEEEEIgPC0EAIQ0LIApBgANqJAAgDQ8LIApBADYCwAEgCkEBNgK0ASAKQZTXwQA2ArABIApCBDcCuAEgCkGwAWpBnNfBABC4DQALwzwDHn8Gfgx9IwAiBSEhIAVBwAJrQUBxIgQkACAEQUBrQcDVwgApAwA3AwAgBEH8AGogAUEIaigCADYCACAEQgA3AzAgBEKAgICAwAA3AyggBEIENwMgIARCADcDGCAEQoCAgICACDcDECAEQQA2AnAgBEKAgICAwAA3A2ggBELAADcDYCAEQgA3A1ggBEKAgICAwAA3A1AgBEKJ2bnijtO+lwg3A0ggBEG41cIAKQMANwM4IAQgASkCADcCdAJAAkACQAJAAkACQAJAAn8gA0UEQEGw1cIAIQJBAAwBCyACIANBDGxqIQwgBEHcAGohCCAEQdAAaiEFIARBOGohAyAEQbABaiELA0AgAkEEaigCACETIAJBCGooAgAhFyACKAIAIgpBH3YhASAEIAEgCmpBCG0gAWsiBjYCgAIgBCAXQR92IgEgF2pBCG0gAWsiBzYCiAIgBCATQR92IgEgE2pBCG0gAWsiDTYChAIgBEGoAWogAyAEQYACahD0BAJ/IAQoArwBIg4EQCAEKQOoASEiIAQoAmQiECAEKAJcRgRAIAhBsN/DABDGCAsgBCgCYCAQQQl0akHAAEGABPwLACAEIBBBAWo2AmQgBCgCWCIJIAQoAlBGBEAgBUHA38MAEJMICyAEKAJUIAlBDGxqIgEgBzYCCCABIA02AgQgASAGNgIAIAQgCUEBajYCWCAEQYACaiIBQQhqIAtBCGooAgA2AgAgBEEANgKQAiAEIBA2AowCIAQgCykCADcDgAIgDiAiIAEgDkEQahC2BQwBCyAEKAKwAQsiCUEEayIBIAEoAgBBAWo2AgAgCUEIaygCACIJIAQoAmQiAU8NAiATIAZrQQN0IApqIAdBCXRrIBcgDWtBBnRqIgFBgARPDQMgBCgCYCAJQQl0aiABakE/OgAAIAwgAkEMaiICRw0ACyAEKAI4IQIgBCgCRAshASACKQMAISIgBEIANwKgASAEQoCAgIDAADcCmAEgBEIENwKQASAEQgA3AogBIARCgICAgIAINwKAASAEQQA2AvgBIARCEDcCuAEgBEIANwKwASAEQoCAgICACDcCqAEgBEIANwLwASAEQoCAgIDAADcC6AEgBEIANwLgASAEQoCAgIDAADcC2AEgBEIENwLQASAEQgA3AsgBIARCgICAgMAANwLAASABRQ0GIARBgAFqIgNBDGohCiAEQbQBaiIWQQAgAUEQQSAQ4wYgA0EYaiINQQAgAUEEQQgQ4wYgAkEIaiEDICJCf4VCgIGChIiQoMCAf4MhIyABIQwDQCAjUARAA0AgAkGgAWshAiADKQMAISIgA0EIaiEDICJCgIGChIiQoMCAf4MiIkKAgYKEiJCgwIB/UQ0ACyAiQoCBgoSIkKDAgH+FISMLIAQqAnwiKSACICN6p0EDdkFsbGoiDkEMaygCAEEDdCIJspQhLSAEKgJ4IiogDkEQaygCAEEDdCIIspQhLCAEKgJ0IiggDkEUaygCAEEDdCIFspQhKyApIAlBCGqylCEpICogCEEIarKUISogKCAFQQhqspQhKCAOQQhrKAIAIQsgBCgCvAEiBiAEKAK0AUYEQCAWQejswgAQxwgLIAQoArgBIAZBBXRqIgVBgYCAgHw2AhwgBSApOAIYIAUgKjgCFCAFICg4AhAgBSALNgIMIAUgLTgCCCAFICw4AgQgBSArOAIAIAQgBkEBajYCvAEgCyAEKAKgASIFTwRAAkACQCALIAVrIghBAWoiByAEKAKYASAFa0sEQCANIAUgB0EEQQgQ4wYgBCgCoAEhBQwBCyAHRQ0BCyAHQQNxIQ4gBCgCnAEhCSAIQQNPBEAgB0F8cSEIIAkgBUEDdGohBwNAIAdBADYCACAHQRhqQQA2AgAgB0EQakEANgIAIAdBCGpBADYCACAHQSBqIQcgBUEEaiEFIAhBBGsiCA0ACwsgDkUNACAFIA5qIQggCSAFQQN0aiEHA0AgB0EANgIAIAdBCGohByAOQQFrIg4NAAsgCCEFCyAEIAU2AqABCyAFIAtNDQMgI0IBfSEiIAQoApwBIAtBA3RqIggoAgAhBSAIQgE3AgAgBUUEQCAEIAQoAqQBQQFqNgKkAQsgIiAjgyEjIAxBAWsiDA0ACyAGQQFqDgMGBAMFCyAJIAFBkN/DABCICwALIAFBgARBoN/DABCICwALIAsgBUGo/cMAEIgLAAsgBCAEKAK4ASIBKQMANwOAAiAEIAEpAyA3A6ACIAQgAUEIaikDADcDiAIgBCABQRBqKQMANwOQAiAEIAFBGGopAwA3A5gCIAQgAUEoaikDADcDqAIgBCABQTBqKQMANwOwAiAEIAFBOGopAwA3A7gCIAQoAogBIgEgBCgCgAFGBEAgBEGAAWpBiOzCABDICAsgBCgChAEgAUEGdGoiAiAEKQOAAjcDACACQSBqIAQpA6ACNwMAIAJBGGogBCkDmAI3AwAgAkEQaiAEKQOQAjcDACACQQhqIAQpA4gCNwMAIAJBKGogBCkDqAI3AwAgAkEwaiAEKQOwAjcDACACQThqIAQpA7gCNwMAIAQgAUEBajYCiAEgBCgClAEiASAEKAKMAUYEQCAKQZjswgAQuQgLIAQoApABIAFBAnRqQQA2AgAgBCABQQFqNgKUAQJAIAQoAqABIgFFDQAgBCgCnAEiAigCAEEBRw0AIAJBADYCBAJAIAFBAUYNACACKAIIRQ0AIAJBATYCDAwEC0Go3cIAQQ9BuOzCABDXCwALQajdwgBBD0Go7MIAENcLAAsgBCAEKAK4ASIBKQMANwOAAiAEIAFBCGopAwA3A4gCIAQgAUEQaikDADcDkAIgBCABQRhqKQMANwOYAiAEKAKIASIBIAQoAoABRgRAIARBgAFqQdjrwgAQyAgLIAQoAoQBIAFBBnRqIgIgBCkDgAI3AwAgAkIANwMgIAJBGGogBCkDmAI3AwAgAkEQaiAEKQOQAjcDACACQQhqIAQpA4gCNwMAIAJBKGpCADcDACACQTBqQgA3AwAgAkE4akIANwMAIAQgAUEBajYCiAEgBCgClAEiASAEKAKMAUYEQCAKQejrwgAQuQgLIAQoApABIAFBAnRqQQA2AgAgBCABQQFqNgKUAQJAIAQoAqABRQ0AIAQoApwBIgEoAgBBAUcNACABQQA2AgQMAgtBqN3CAEEPQfjrwgAQ1wsACyAEKAKAASAEKAKIASICayABSQRAIARBgAFqIAIgAUHAAEHAABDjBgsgBCgCjAEgBCgClAEiAmsgAUkEQCAEQYwBaiACIAFBBEEEEOMGC0EAIQEgBEEANgKUASAEKAKIASICIAQoAoABRgRAIARBgAFqQcjswgAQyAggBCgClAEhAQsgBCgChAEgAkEGdGoiA0IANwMAIANBIGpCADcDACADQRhqQgA3AwAgA0EQakIANwMAIANBCGpCADcDACADQShqQgA3AwAgA0EwakIANwMAIANBOGpCADcDACAEIAJBAWo2AogBIAQoAowBIAFGBEAgCkHY7MIAELkICyAEKAKQASABQQJ0akEANgIAIAQgAUEBajYClAEgBEGAAWohEUEAIQVBACENIwBB0ABrIg8kAAJAAkACQAJAAkAgFigCCCIIBEBBASEHQQQhAQJAAkAgCEEBRwRAIBYoAgQiDCAIQQV0aiECIAxBIGohASAMKgIIIAwqAhiSQwAAAD+UIishKiAMKgIAIAwqAhCSQwAAAD+UIi4hLSAMKgIEIAwqAhSSQwAAAD+UIi8hLANAICsgAUEIaioCACABQRhqKgIAkkMAAAA/lCIpICkgK18bISsgLCABQQRqKgIAIAFBFGoqAgCSQwAAAD+UIiggKCAsXxshLCAqICkgKSAqYBshKiAvICggKCAvYBshLyAtIAEqAgAgAUEQaioCAJJDAAAAP5QiKCAoIC1fGyEtIC4gKCAoIC5gGyEuIAIgAUEgaiIBRw0ACyAIQQR0IgZBCBCzDiIDRQ0CQwAAgD8gKyAqk5UhK0MAAIA/ICwgL5OVISlDAACAPyAtIC6TlSEoIAwhASADIQIDQCACQQhqIAU2AgAgAiArIAFBCGoqAgAgAUEYaioCAJJDAAAAP5QgKpOUu0QAAAAAAABAQaL8A0H///8Aca0iIkIQhiAiQiCGhCAihEL/gYD4j4DAD4NCgQJ+Qo/gg/iAnsCHEINCEX5Cw+GwmIyGw+EQg0IUfkKkksmkksmkkskAgyApIAFBBGoqAgAgAUEUaioCAJJDAAAAP5QgL5OUu0QAAAAAAABAQaL8A0H///8Aca0iIkIQhiAiQiCGhCAihEL/gYD4j4DAD4NCgQJ+Qo/gg/iAnsCHEINCEX5Cw+GwmIyGw+EQg0IKfkKSyaSSyaSSySSDICggASoCACABQRBqKgIAkkMAAAA/lCAuk5S7RAAAAAAAAEBBovwDQf///wBxrSIiQhCGICJCIIaEICKEQv+BgPiPgMAPg0KBAn5Cj+CD+ICewIcQg0IRfkLD4bCYjIbD4RCDQgV+QsmkksmkksmkEoOEhDcDACABQSBqIQEgAkEQaiECIAggBUEBaiIFRw0ACwJAIAhBFU8EQCAPQRBqIQkgCEECSQ0BAkACQAJAIANBGGooAgAiASADQQhqKAIASSADKQMQIiIgAykDACIjVCAiICNRGyIFRQRAQQIhCyAIQQJGDQEgA0EoaiEQA0AgASECIAIgECgCACIBSyAQQQhrKQMAIiMgIlQgIiAjURsNAiAQQRBqIRAgIyEiIAggC0EBaiILRw0ACwwCC0ECIQsgCEECRg0AIANBKGohEANAIAEhAiACIBAoAgAiAUsgEEEIaykDACIjICJUICIgI1EbQQFHDQEgEEEQaiEQICMhIiAIIAtBAWoiC0cNAAsMAQsgCCALRw0BCyAFRQ0CIAMgCEEEdCIQaiEHQQAhASAIQQF2IgJBAUcEQCACQf7///8HcSEOQQAhCwNAIAMgC2oiCikDACEiIAogAyAQaiIJQRBrIg0pAwA3AwAgCkEIaiIFKAIAIQIgBSANQQhqKQMANwMAIA0gIjcDACAJQQhrIAI2AgAgCkEQaiICKQMAISIgAiAHIAFB/v///wBzQQR0aiIJKQMANwMAIApBGGoiAigCACEFIAIgCUEIaiICKQMANwMAIAIgBTYCACAJICI3AwAgEEEgayEQIAtBIGohCyAOIAFBAmoiAUcNAAsLIAhBAnFFDQIgAyABQQR0aiIJQQhqIgUoAgAhAiAFIAcgAUF/c0EEdGoiBUEIaiIBKQMANwMAIAkpAwAhIiAJIAUpAwA3AwAgASACNgIAIAUgIjcDAAwCCyADIAhBACAIQQFyZ0EBdEE+cyAJEEgMAQsgA0EQaiECIAMgBmohCSADIQEDQCACIQUgAUEYaigCACIOIAFBCGooAgBJIAEpAxAiIyABKQMAIiJUICIgI1EbQQFGBEAgDSECAn8DQCACIANqIgdBEGogBykDADcDACAHQRhqIAdBCGopAwA3AwAgAyIBIAJFDQEaIAJBEGshAiAOIAdBCGsoAgBJIAdBEGspAwAiIiAjViAiICNRGw0ACyABIAJqQRBqCyIBIA42AgggASAjNwMACyANQRBqIQ0gCSAFIgFBEGoiAkcNAAsLQQAhAkEBIQEDQCABIQUgAyACQQR0aiIBQQhqIQkgAiABKAIIIgFLBEADQCACIAMgAUEEdGooAggiAUsNAAsLIAkgATYCACABIAhPDQIgDCACQQV0aiIHKQMAISUgDCABQQV0aiINQRBqIg4pAwAhIiAHIA0pAwA3AwAgB0EQaiIBKQMAISYgASAiNwMAIAdBCGoiASkDACEkIA1BGGoiCSkDACEjIAEgDUEIaiICKQMANwMAIAdBGGoiASkDACEiIAEgIzcDACANICU3AwAgDiAmNwMAIAIgJDcDACAJICI3AwAgBSAISSIJIAVqIQEgBSECIAkNAAsgAyAGQQgQiA8gFigCCCIHRQ0IIAdBAnQhAQsgAUEEELMOIgwEQCAHQQFHBH8gAUEEayIBBEAgDEH/ASAB/AsACyABIAxqBSAMC0F/NgIAIAdBBXQiAUEQELMOIhgEQCAPQQA2AgwgDyAYNgIIIA8gBzYCBEEBIQ4gB0ECSQRAQQEhBwwICyAHQQV0IRwgEUEMaiEeIBYoAgQhDSAWKAIAIQEgByEIA0AgASEOIAhBAWshBkEAIQVBASEBA0AgASECQX8hAwJAIAVBEGsiAUEAIAEgBU0bIgEgBiAFQRBqIgkgBiAJSRsiCUsNACANIAVBBXRqIQtD//9/fyEqA0ACQCABIAVGDQAgASAISQRAIAsqAhQiKSANIAFBBXRqIgoqAhQiKCAoIClfGyALKgIEIikgCioCBCIoICggKWAbkyIsIAsqAhgiKSAKKgIYIiggKCApXxsgCyoCCCIpIAoqAggiKCAoIClgG5MiK5QgCyoCECIpIAoqAhAiKCAoIClfGyALKgIAIikgCioCACIoICggKWAbkyAsICuSlJIiKCAqXUUNASABIQMgKCEqDAELIAEgCEG46cIAEIgLAAsgASAJTw0BIAkgASABIAlJaiIBTw0ACwsgBSAHTw0HIAwgBUECdGogAzYCACACIAhJIgMgAmohASACIQUgAw0AC0EBIAggCEEBTRshH0EAIQEgDCEJQQAhAkEAIQNBACEFA0ACQAJAAkACQAJAAkACQCABIBxHBEAgCSgCACIGIAdPDQEgAiAMIAZBAnRqKAIARw0CIAIgBksNByAGIAhPDQQgASANaiIKKgIAITAgCkEcaigCACEUIApBGGoqAgAhMSAKQRRqKgIAITIgCkEQaioCACEzIApBDGooAgAhGiAKQQhqKgIAIS4gCkEEaioCACEvIA0gBkEFdGoiBigCHCEdIAYqAhghLSAGKgIUISwgBioCECErIAYoAgwhGyAGKgIIISkgBioCBCEqIAYqAgAhKCARKAIIIRUgCEECRw0DIBVFDQUgESgCBCIGIB02AjwgBiAtOAI4IAYgLDgCNCAGICs4AjAgBiAbNgIsIAYgKTgCKCAGICo4AiQgBiAoOAIgIAYgFDYCHCAGIDE4AhggBiAyOAIUIAYgMzgCECAGIBo2AgwgBiAuOAIIIAYgLzgCBCAGIDA4AgAgFEH/////A3EhIEEAIRUMBgsgByAHQejnwgAQiAsACyAGIAdB+OfCABCICwALIA9BEGoiA0EYaiIGIAEgDWoiCkEYaikDADcDACADQRBqIgMgCkEQaikDADcDACAPIAopAwA3AxAgDyAKQQhqKQMANwMYIA8oAgQgBUYEQCAPQQRqQYjowgAQxwggDygCCCEYCyAYIAVBBXRqIgogDykDEDcDACAKQRhqIAYpAwA3AwAgCkEQaiADKQMANwMAIApBCGogDykDGDcDACAPIAVBAWoiAzYCDCADIQUMBAsgFEH/////A3EhICAdQf////8DcSEGIBQgHXIhBSARKAIAIBVGBEAgEUG46MIAEMgICyAGICBqIRkgBUGAgICAfHEhBSAtIDFfIRMgLCAyXyEXICsgM18hECApIC5gIQsgKiAvYCEKICggMGAhBiARIBVBAWo2AgggESgCBCAVQQZ0aiISIB02AjwgEiAtOAI4IBIgLDgCNCASICs4AjAgEiAbNgIsIBIgKTgCKCASICo4AiQgEiAoOAIgIBIgFDYCHCASIDE4AhggEiAyOAIUIBIgMzgCECASIBo2AgwgEiAuOAIIIBIgLzgCBCASIDA4AgAgESgCFCIUIBEoAgxGBEAgHkHI6MIAELkICyAFIBlyIQUgMSAtIBMbIS0gMiAsIBcbISwgMyArIBAbISsgLiApIAsbISkgLyAqIAobISogMCAoIAYbISggESAUQQFqNgIUIBEoAhAgFEECdGpBADYCACAPKAIEIANGBEAgD0EEakHY6MIAEMcIIA8oAgghGAsgGCADQQV0aiIGIAU2AhwgBiAtOAIYIAYgLDgCFCAGICs4AhAgBiAVNgIMIAYgKTgCCCAGICo4AgQgBiAoOAIAIA8gA0EBaiIDNgIMIAMhBQwCCyAGIAhBmOjCABCICwALQQAgFUGo6MIAEIgLAAsCQCAgQQFGBEACQCAaIBEoAiBPDQAgESgCHCAaQQN0aiIGKAIARQ0AIAYgFUEBdDYCBAwCC0Go3cIAQQ9B6OjCABDXCwALIBEoAhQiBiAaTQRAIBogBkH46MIAEIgLAAsgESgCECAaQQJ0aiAVQQF0NgIACyAdQf////8DcUEBRgRAAkAgGyARKAIgTw0AIBEoAhwgG0EDdGoiBigCAEUNACAGIBVBAXRBAXI2AgQMAgtBqN3CAEEPQYjpwgAQ1wsACyARKAIUIgYgG00EQCAbIAZBmOnCABCICwALIBEoAhAgG0ECdGogFUEBdEEBcjYCAAsgCUEEaiEJIAFBIGohASAfIAJBAWoiAkcNAAsgFiAPKAIEIgE2AgAgFiADNgIIIBYoAgQhGCAWIA8oAggiDTYCBCAPIA42AgQgD0EANgIMIA8gGDYCCCADIghBAUsNAAsMBgtBECABQdjnwgAQ0w0AC0EEIAFByOfCABDTDQALIAEgCEHg08IAEIgLAAtBCCAGQazJwgAQ0w0AC0GY2sIAQdIAQfzawgAQ1wsACyAFIAdBqOnCABCICwALIA5FDQELIBggDkEFdEEQEIgPCyAMIAdBAnRBBBCIDwsgD0HQAGokACARIARBqAFqEN0BCyAEQYACaiICQSBqIARBgAFqIgFBIGopAgA3AwAgAkEYaiABQRhqKQIANwMAIAJBEGogAUEQaikCADcDACACQQhqIAFBCGopAgA3AwAgBCAEKQKAATcDgAIgBEGoAWoQuwkgBCgCECIBBEAgBCgCFCABQQZ0QcAAEIgPCyAEKAIcIgEEQCAEKAIgIAFBAnRBBBCIDwsgBCgCKCIBBEAgBCgCLCABQQN0QQQQiA8LIARBEGoiAkEgaiAEQYACaiIBQSBqKQMANwMAIAJBGGogAUEYaikDADcDACACQRBqIAFBEGopAwA3AwAgAkEIaiABQQhqKQMANwMAIAQgBCkDgAI3AxAgBCgCRCIHBEAgBCgCOCIDQQhqIQ0gBCkDSEKDgICAEIUiIkL/////D4MhJyAiQiCIISUgAykDAEJ/hUKAgYKEiJCgwIB/gyEjIAQoAmAhHiAEKAJkIRQgBCgCPCEcIAMhCANAIAdBAWshByAjUAR+A0AgCEGgAWshCCANKQMAISIgDUEIaiENICJCgIGChIiQoMCAf4MiIkKAgYKEiJCgwIB/UQ0ACyAiQoCBgoSIkKDAgH+FBSAjCyIiQgF9ICKDISNBACECIAggInqnQQN2QWxsaiIBQQxrIQogAUEQayEGIAFBCGshDiABQRRrIQkCQAJAAkADQCAKKAIAIQUgBigCACEBIAQgCSgCAEEDdCIMIAJBB3FyIh82AqgBIAQgAUEDdCIBIAJBA3ZBB3FyIhk2AqwBIAQgBUEDdCIFIAJBBnZyIhM2ArABIBwgAUEfdiIBIBlqQQhtIAFrIhdBt9OwhXxzrSIkICV+IAxBH3YiASAfakEIbSABayIQQd2h8ct8c60iIiAnfoUgJCAnfiAiICV+hUIgiYUiIqcgBUEfdiIBIBNqQQhtIAFrIgtzrSIkQt2h8csMfiAiQiCIIiJCt9OwhQx+hSAkQrfTsIUMfiAiQt2h8csMfoVCIIiFIiKncSEFICJCGYhC/wCDQoGChIiQoMCAAX4hJCAZIBBrQQN0IB9qIAtBCXRrIBMgF2tBBnRqIRkgAkEBaiEBQQAhDAJAAn8DQAJAIAMgBWopAAAiJiAkhSIiQoGChIiQoMCAAX0gIkJ/hYNCgIGChIiQoMCAf4MiIkIAUgRAA0ACQCAQIAMgInqnQQN2IAVqIBxxQWxsaiITQRRrKAIARw0AIBcgE0EQaygCAEcNACALIBNBDGsoAgBGDQMLICJCAX0gIoMiIkIAUg0ACwtBwAAgJiAmQgGGg0KAgYKEiJCgwIB/g0IAUg0CGiAMQQhqIgwgBWogHHEhBQwBCwsgE0EIaygCACIFIBRPDQEgGUGABE8NA0HAACAeIAVBCXRqIBlqLQAAQcAARg0AGiAEQRBqIARBqAFqENgCQf8BcQshEyAOKAIAIgUgFE8NAyAeIAVBCXRqIAJqIBM6AAAgASICQYAERg0EDAELCyAFIBRBjOLDABCICwALIBlBgARBnOLDABCICwALIAUgFEH84cMAEIgLAAsgBw0ACwsgACAEQRBqQfAA/AoAACAhJAALpzcCDX0tfyMAQZABayIQJAAgASoCACIGiyIEIAEqAgQiDosiAiACIARfGyIEIAEqAggiC4siAiACIARfGyIEIAEqAgwiCYsiAiACIARfGyIEIAEqAhAiB4siAiACIARfGyIEIAEqAhQiCIsiAiACIARfGyIEIAEqAhgiCosiAiACIARfGyIEIAEqAhwiBYsiAiACIARfGyIDIAEqAiAiBIsiAiACIANfGyINQwAAAABcBEAgASAEIA2VOAIgIAEgBSANlTgCHCABIAogDZU4AhggASAIIA2VOAIUIAEgByANlTgCECABIAkgDZU4AgwgASALIA2VOAIIIAEgDiANlTgCBCABIAYgDZU4AgALIBBBMGoiHEEgaiIrIAFBIGooAgA2AgAgHEEYaiABQRhqKQIANwMAIBxBEGogAUEQaikCADcDACAcQQhqIjggAUEIaikCADcDACAQIAEpAgA3AzAgEEHYAGohJUMAAAAAIQMjAEEwayIfJAAgH0IANwMQIBxBNGohLyAcQSRqITAgHEEUaiExIBxBDGohOSAfQRBqIhFBBHIhHSAfQQhqIRNBASEBA0AgASEnIBwgEiIVQQFqIgFBAnRqIiMgEkEMbCIbaiEZIAFBA3MhFiABQQNGIjJFBEBDAAAAACEDIBYhDyAZIQEDQCADIAEqAgAiAiAClJIhAyABQQRqIQEgD0EBayIPDQALCyADkSICIAKMIBkqAgAiBUMAAAAAYCIBGyEEIBkgBSAEkjgCAAJAIAMgAiAFIAWMIAEblJIiAiACkiIDQwAAAABcBEAgFkEBcSEoIAORIQNBACEPIBVBAXEiJkUEQCAWQQJxIRQgOCAVQQR0aiEBA0AgASABKgIAIAOVOAIAIAFBBGsiEiASKgIAIAOVOAIAIAFBCGohASAUIA9BAmoiD0cNAAsLICgEQCAZIA9BAnRqIgEgASoCACADlTgCAAsgMkUEQEMAAAAAIQMgFiEPIBkhAQNAIAMgASoCACICIAKUkiEDIAFBBGohASAPQQFrIg8NAAsLIAORIQJBACEPICZFBEAgFkECcSEUIDggFUEEdGohAQNAIAEgASoCACAClTgCACABQQRrIhIgEioCACAClTgCACABQQhqIQEgFCAPQQJqIg9HDQALCyAoBEAgGSAPQQJ0aiIBIAEqAgAgApU4AgALIBMgBIw4AgACQCAWQQIgFWtGBEAgIyAbQQxqaiEhIDJFBEAgGSoCACICIAKSIQIgFiESIBEhASAhIQ8DQCABIAIgDyoCAJQ4AgAgAUEEaiEBIA9BBGohDyASQQFrIhINAAsLICFBBGohIiAZQQRqIiwhHkEAIQ9BACEBQwAAAAAhAkMAAAAAIQlDAAAAACEHQwAAAAAhCEMAAAAAIQpDAAAAACEFQwAAAAAhA0MAAAAAIQQjAEFAaiIbJAACfSAVQQFzIiMiFEEISQRAQwAAAAAMAQsgFEF4cSEBIBQhEgNAIAIgDyAiaiIXKgIAIA8gHmoiEyoCAJSSIQIgBCAXQRxqKgIAIBNBHGoqAgCUkiEEIAMgF0EYaioCACATQRhqKgIAlJIhAyAFIBdBFGoqAgAgE0EUaioCAJSSIQUgCiAXQRBqKgIAIBNBEGoqAgCUkiEKIAggF0EMaioCACATQQxqKgIAlJIhCCAHIBdBCGoqAgAgE0EIaioCAJSSIQcgCSAXQQRqKgIAIBNBBGoqAgCUkiEJIA9BIGohDyASQQhrIhJBB0sNAAsgBCAIkiADIAeSIAUgCZIgCiACkkMAAAAAkpKSkgshAgJAIAEgFE8NAAJAIBRBA3EiEkUEQCABIQ8MAQsgAUECdCIPICJqIRcgDyAeaiETIAEhDwNAIA9BAWohDyACIBcqAgAgEyoCAJSSIQIgF0EEaiEXIBNBBGohEyASQQFrIhINAAsLIAEgFGtBfEsNACAPQQJ0IQEgFCAPayEPA0AgAiABICJqIhQqAgAgASAeaiISKgIAlJIgFEEEaioCACASQQRqKgIAlJIgFEEIaioCACASQQhqKgIAlJIgFEEMaioCACASQQxqKgIAlJIhAiAiQRBqISIgHkEQaiEeIA9BBGsiDw0ACwsgG0FAayQAIBEgAiACkiARKgIAkjgCACAWQQJJIjNFBEBBACAVayE0IBZBAWshLSAcIBVBBHQiKWohNSApICtqITYgKSA5aiE3QQEhEiARISIgIyEeIBwiFCEbQQAhKgNAQwAAAAAhAyAVICpqIS4CQCAWIBIiF2siJEEISQR/QQAFIBQhEiAbIQEgLSETQwAAAAAhBEMAAAAAIQlDAAAAACEHQwAAAAAhCEMAAAAAIQpDAAAAACEFQwAAAAAhAgNAIAIgEiApaiIgQTxqKgIAIAEgKWoiD0EkaioCAJSSIQIgBSAgQThqKgIAIA9BIGoqAgCUkiEFIAogIEE0aioCACAPQRxqKgIAlJIhCiAIICBBMGoqAgAgD0EYaioCAJSSIQggByAgQSxqKgIAIA9BFGoqAgCUkiEHIAkgIEEoaioCACAPQRBqKgIAlJIhCSAEICBBJGoqAgAgD0EMaioCAJSSIQQgAyAgQSBqKgIAIA9BCGoqAgCUkiEDIBJBIGohEiABQSBqIQEgE0EIayITQQdLDQALIAMgCJJDAAAAAJIgBCAKkpIgCSAFkpIgByACkpIhAyAkQXhxCyIPICRPDQAgDyAuaiETICMgKmtBA3EEQCAeQQNxIRIgKSAPQQJ0aiEBA0AgAyABIBRqQSBqKgIAIAEgG2pBCGoqAgCUkiEDIAFBBGohASAPQQFqIQ8gEkEBayISDQALCyATQQJqQQNJDQAgD0ECdCESIDYhASA3IRMDQCADIAEgEmoiICoCACASIBNqIiRBBGsqAgCUkiAgQQRqKgIAICQqAgCUkiAgQQhqKgIAICRBBGoqAgCUkiAgQQxqKgIAICRBCGoqAgCUkiEDIAFBEGohASATQRBqIRMgLSAPQQRqIg9HDQALCyAXQQJ0Ig8gEWoiASADIAOSIAEqAgCSOAIAAkAgFiAXQQFqIhJGDQAgDyAZaioCACICIAKSIQJBACAua0EBcSE6AkAgFSAqc0F/RgRAQQAhDwwBCyA0QX5xISBBACEBQQAhDwNAIAEgImoiLkEIaiITIAIgASA1aiIkQSRqKgIAlCATKgIAkjgCACAuQQxqIhMgAiAkQShqKgIAlCATKgIAkjgCACABQQhqIQEgICAPQQJqIg9HDQALCyA6RQ0AIA9BAnQiDyASQQJ0IhMgEWpqIgEgAiAhIBdBDGxqIBNqIA9qKgIAlCABKgIAkjgCAAsgNEEBayE0IDVBEGohNSAiQQRqISIgNkEQaiE2IDdBBGohNyAeQQNqIR4gFEEQaiEUIBtBBGohGyAtQQFrIS0gKkEBaiEqIBIgFkcNAAsLQwAAAAAhBCAyRQRAQwAAAAAhAyAWIRIgGSEBIBEhDwNAIAMgASoCACAPKgIAlJIhAyABQQRqIQEgD0EEaiEPIBJBAWsiEg0ACyADIAOSIQQLIBkqAgAhAkEAIRIgJkUEQCAWQQJxIRsgMSAVQQR0aiEBIBEhDwNAIAFBBGsiFCAUKgIAIAIgDyoCAJSTOAIAIAEgASoCACACIA9BBGoqAgCUkzgCACAPQQhqIQ8gAUEIaiEBIBsgEkECaiISRw0ACwsgKARAIBJBAnQiDyAhaiIBIAEqAgAgAiAPIBFqKgIAlJM4AgALAkAgMw0AICwqAgAhAkEAIRIgJ0EBcSIbRQRAIBFBCGohDyAwIBVBBHRqIQEDQCABIAEqAgAgAiAPKgIAlJM4AgAgAUEEayIUIBQqAgAgAiAPQQRrKgIAlJM4AgAgD0EIaiEPIAFBCGohASASQQJqIhINAAsLICZFBEAgEkECdCIPICFBEGpqIgEgASoCACACIBFBBGogD2oqAgCUkzgCAAsgGw0AIBFBDGohDyAvIBVBBHRqIQFBACAVayIUQX5xIRIgFEEBcSEbIBlBCGoqAgAhAgNAIAEgASoCACACIA8qAgCUkzgCACABQQRrIhQgFCoCACACIA9BBGsqAgCUkzgCACAPQQhqIQ8gAUEIaiEBIBJBAmsiEg0ACyAbRQ0AIAFBBGsiASABKgIAIAIgD0EEayoCAJSTOAIACyARKgIAIQJBACEPICYNASAWQQJxIRQgMSAVQQR0aiEBA0AgAUEEayISIBIqAgAgAiABQRBrKgIAlJM4AgAgASABKgIAIAIgAUEMayoCAJSTOAIAIAFBCGohASAUIA9BAmoiD0cNAAsMAQsgH0EANgIoIB9BATYCHCAfQcTWwgA2AhggH0IENwIgIB9BGGpBzNbCABC4DQALICgEQCAPQQJ0Ig8gIWoiASABKgIAIAIgDyAZaioCAJSTOAIACwJAIDMNACARQQRqKgIAIQJBACEPICdBAXEiFEUEQCAwIBVBBHRqIQEDQCABQQRrIhIgEioCACACIAFBHGsqAgCUkzgCACABIAEqAgAgAiABQRhrKgIAlJM4AgAgAUEIaiEBIA9BAmoiDw0ACwsgJkUEQCAPQQJ0Ig8gIUEQamoiASABKgIAIAIgDyAsaioCAJSTOAIACyAUDQAgLyAVQQR0aiEBQQAgFWsiEkF+cSEPIBJBAXEhEiARQQhqKgIAIQIDQCABQQRrIhEgESoCACACIAFBKGsqAgCUkzgCACABIAEqAgAgAiABQSRrKgIAlJM4AgAgAUEIaiEBIA9BAmsiDw0ACyASRQ0AIAFBBGsiESARKgIAIAIgAUEoayoCAJSTOAIACyAEIBkqAgCUIQNBACEPICZFBEAgFkECcSESIDEgFUEEdGohAQNAIAFBBGsiESADIAFBEGsqAgCUIBEqAgCSOAIAIAEgAyABQQxrKgIAlCABKgIAkjgCACABQQhqIQEgEiAPQQJqIg9HDQALCyAoBEAgD0ECdCIRICFqIgEgAyARIBlqKgIAlCABKgIAkjgCAAsgMw0BIAQgLCoCAJQhA0EAIQ8gJ0EBcUUEQCAwIBVBBHRqIQEDQCABQQRrIhEgAyABQRxrKgIAlCARKgIAkjgCACABIAMgAUEYayoCAJQgASoCAJI4AgAgAUEIaiEBIA9BAmoiDw0ACwsgJkUEQCAPQQJ0IhEgIUEQamoiASADIBEgLGoqAgCUIAEqAgCSOAIAC0EBIRIgH0EEaiETQQAhASAdIREgJ0EBcQ0CIC8gFUEEdGohAUEAIBVrIhFBfnEhDyARQQFxIRIgBCAZQQhqKgIAlCEDA0AgAUEEayIRIAMgAUEoayoCAJQgESoCAJI4AgAgASADIAFBJGsqAgCUIAEqAgCSOAIAIAFBCGohASAPQQJrIg8NAAsgEkUNASABQQRrIhEgAyABQShrKgIAlCARKgIAkjgCAAwBCyATIAQ4AgALQQEhEiAfQQRqIRNBACEBIB0hESAnQQFxDQALICUgHygCBDYCBCAlIB8oAgg2AgAgJSAcKQIANwIIICVBEGogHEEIaikCADcCACAlQRhqIBxBEGopAgA3AgAgJUEgaiAcQRhqKQIANwIAICVBKGogHEEgaigCADYCACAfQTBqJAAgEEEANgIcIBBBADYCECAQQoGAgICAgIDAPzcCAEMAAMB/QwAAgD8gECoCWCILmCALIAtcGyIMQwAAAACUIQkgDCAMkiIFIBAqAmQiDkMAAAAAlEMAAAAAkiICIBAqAmgiBkMAAAAAlJKUIQQgECAJIAYgBJSTOAIMIBAgCSAOIASUkzgCCEMAAMB/QwAAgD8gECoCXCIHmCAHIAdcGyIIIAiSIQMgBSACIAYgCCAQKgJ0IgogCkMAAAAAkiADlJSTIgKUkpQhBCAQIAwgApQgBiAElJM4AiQgECAJIA4gBJSTOAIgIAUgDkMAAAAAkiAGIAhDAAAAAJQgCiADIApDAAAAAJRDAAAAAJKUlJMiApSSlCEEIBAgDCAClCAGIASUkzgCGCAQIAwgDiAElJM4AhQgECoCcCEDIBAqAoABIQQgECAQKgJgIgI4AjAgECALiyIKOAIoIBAgAzgCNCAQIAQ4AjggECAHiyIFOAIsAkACfyAFIASLIAOLIgSSQwAAADSUXiIBBEBBASEaQQIMAQsgCiAEIAKLkkMAAAA0lF5FDQEgAiEDQQELIRggAUUEQEEAIRoMAQsCQCAaQQFrIg9BAnQiESAQQShqaiIBKgIAIgJDAAAAAFsNACACiyADiyAQQTBqIBFqKgIAi5JDAAAANJRfDQAgD0UEQEEAIRoMAgsgGkECdCAQakEgaiEBCyABQQA2AgBBASEaCyAQQTRqIRkgEEEkaiErIBBBLGohFCAQQQRqISMCQAJAAkADQCAYIBpGBEAgEEE4aiIRIA0gESoCAJQ4AgAgECANIBAqAjCUOAIwIBAgDSAQKgI0lDgCNCAQQdgAaiIPQQhqIgEgESgCADYCACAQQewAaiAQQQhqKQIANwIAIBBB9ABqIBBBEGopAgA3AgAgEEH8AGogEEEYaikCADcCACAQQYQBaiAQQSBqKQIANwIAIAAgECkCMDcCACAQIBApAgA3AmQgAEEIaiABKQMANwIAIABBEGogD0EQaikDADcCACAAQRhqIA9BGGopAwA3AgAgAEEgaiAPQSBqKQMANwIAIABBKGogD0EoaikDADcCACAAQTBqIA9BMGooAgA2AgAMBAsCQAJAAkACQAJAAkACQAJAAkACQAJAIBggGmtBAWoiAUECTQRAIAFBAkYNAQwLCyAYQQFrIh5BA08NAyAYQQNPDQQgHkECdCIRIBBBMGoiAWoiFioCACEEIAEgGEECdGoiEioCACIJIQggEEEoaiARaiIPKgIAIgcgB5QiAkMAAAAAXARAIAkgAiAEIAmTQwAAAD+UIgNDAADAf0MAAIA/IAOYIAMgA1wbIAIgAyADlJKRlJKVkyEICyAYIBpNDQggGkECdCIBIBBBKGpqIhMqAgAiA0MAAAAAWw0IIBBBMGoiESABaiIBKgIAIgkgCJMiBEMAAAAAYCEdIAMgA5QgBCAEjCAdGyICIAKUkpEhBSABIAIgBZUiBiAGlCIHIAmUIAOMIAUgBYwgHRuVIgsgC5QiCCAaQQFqIhdBAnQiGyARaiIRKgIAIgqUkiAGIAuUIgUgBZIgA5QiApM4AgAgESAIIAmUIAcgCpSSIAKSIg44AgAgEyAFIAkgCpOUIAMgByAIk5SSIgI4AgAgGiAeRg0CIBdBAkcNAQwNCyAaQQJ0IgEgEEEoamoqAgAiCiAKlCIDIBBBMGogAWoiESoCACIEIAEgGWoiASoCACIFk0MAAAA/lCICIAKUkiICQwAAAABgRQ0EIAEgBCAFkkMAAAA/lCIEIAKRIgKTOAIAIBEgBCACkiICOAIAIBAoAgBFDQggAiAFkyICQwAAAABgIREgAyACIAKMIBEbIgIgApSSkSIDQwAAADReDQUMCAsgEEEoaiAbaiIBKgIAIQQgASAGIASUOAIAIAQgC4yUIQMgAiEECyAQKAIAQQFGBEAgIyAaQQxsaiIdQQxqIgEgCyAdKgIAIgWUIAYgASoCACIClJI4AgAgHSAGIAWUIAsgApSTOAIAIB1BBGoiASoCACEFIAEgBiAFlCALIB1BEGoiASoCACIClJM4AgAgASALIAWUIAYgApSSOAIAIB1BCGoiASoCACEFIAEgBiAFlCALIB1BFGoiASoCACIClJM4AgAgASALIAWUIAYgApSSOAIACyAXIBhPDQQgA0MAAAAAWw0EIBMgAyADlCIKIAQgBIwiBSAEQwAAAABgIgEbIgcgB5SSkSIIIAiMIAEbIgI4AgAgGkUEQCARIAcgCJUiDCAMlCILIA6UIAOMIAKVIgYgBpQiCSAQQTBqIBpBAmoiHUECdGoiESoCACIHlJIgDCAGlCIIIAiSIBBBKGogG2oiASoCACIDlCICkzgCACARIAkgDpQgCyAHlJIgApI4AgAgASAIIA4gB5OUIAMgCyAJk5SSOAIAIBcgHkcNCyAQKAIAQQFGBEAgIyAXQQxsaiIRQQxqIgEgBiARKgIAIgOUIAwgASoCACIClJI4AgAgESAMIAOUIAYgApSTOAIAIBFBBGoiASoCACEDIAEgDCADlCAGIBFBEGoiASoCACIClJM4AgAgASAGIAOUIAwgApSSOAIAIBFBCGoiASoCACEDIAEgDCADlCAGIBFBFGoiASoCACIClJM4AgAgASAGIAOUIAwgApSSOAIACyAYIB1NDQUgKyAdQQJ0aiAKIAQgBSAEQwAAAABgIgAbIgIgApSSkSICIAKMIAAbOAIACyAQQQA2AmggEEEBNgJcIBBBlNbCADYCWCAQQgQ3AmAgEEHYAGpBhNjCABC4DQALIBBBADYCaCAQQQE2AlwgEEGU1sIANgJYIBBCBDcCYCAQQdgAakHk18IAELgNAAsgEEEANgJoIBBBATYCXCAQQZTWwgA2AlggEEIENwJgIBBB2ABqQfTXwgAQuA0AC0HU18IAEJEPAAsgIyAaQQxsaiIPQQxqIgEqAgAhBCABIAIgA5UiBSAElCAKIAMgA4wgERuVIgMgDyoCACIClJM4AgAgDyAFIAKUIAMgBJSSOAIAIA9BBGoiASoCACEEIAEgBSAElCADIA9BEGoiASoCACIClJI4AgAgASAFIAKUIAMgBJSTOAIAIA9BCGoiASoCACEEIAEgBSAElCADIA9BFGoiASoCACIClJI4AgAgASAFIAKUIAMgBJSTOAIADAILIBIqAgAhCSAWKgIAIQQgDyoCACEHCyAeIBggB4sgBIsgCYuSQwAAADSUXxshGAwBCyAYQQFrIRgLIBhBAksNAUEAIRoCQCAYRQ0AIBgiAUEBayIRQQJ0IhYgEEEwaiIPaiISKgIAIQMCQCAQQShqIBZqKgIAiyAPIAFBAnRqKgIAiyADi5JDAAAANJReBEAgESEBDAELIBFFBEAgESEYDAILIAFBAmsiGEECdCIPIBBBMGpqKgIAIQMgEEEoaiAPaioCAIsgEioCAIsgA4uSQwAAADSUXgRAIBghASARIRgMAQsgGEUNASAQQTBqIAFBA2siAUECdGoqAgAhAwsgAUEBaiESIAFBAnQiESAraiEBIBEgFGohEQNAIAEhDyASQQFrIhJFDQEgASoCACIEQwAAAABcBEAgAUEEayEBIAOLIQIgESoCACEDIBFBBGshESAEiyACIAOLkkMAAAA0lF9FDQELCyAPQQA2AgBBASEaCyA7QQFqIjsNAAsgAEECNgIMDAILIBBBADYCaCAQQQE2AlwgEEGU1sIANgJYIBBCBDcCYCAQQdgAakGk2MIAELgNAAsgEEEANgJoIBBBATYCXCAQQZTWwgA2AlggEEIENwJgIBBB2ABqQZTYwgAQuA0ACyAQQZABaiQAC7AbAwV/Nn0BfiMAQcACayILJABDAACAPyEXQwAAgD8hHCAIIhMhEQJAAkACQAJAA0AgC0GUAWogAiATEOICIAtBsAFqIAUgExDiAiALIAsqApwBIhAgCyoCuAEiEpQgCyoCmAEiFCALKgK0ASIZlCALKgKUASIVIAsqArABIhiUIAsqAqABIhYgCyoCvAEiHZSSkpI4AhggCyAUIBiUIBYgEpQgFSAZlJOSIBAgHZSTOAIUIAsgFiAZlCAVIBKUkiAUIB2UkyAQIBiUkzgCECALIBAgGZQgFiAYlCAVIB2UkyAUIBKUk5I4AgwgFCALKgLAASALKgKkAZMiGJQgFSALKgLEASALKgKoAZMiHZSTIhIgEpIhEiAQIB2UIBQgCyoCyAEgCyoCrAGTIiCUkyIZIBmSIRkgCyAgIBYgEpQgFCAZlCAVIBUgIJQgECAYlJMiICAgkiIglJOSkjgCJCALIB0gFiAglCAVIBKUIBAgGZSTkpI4AiAgCyAYIBYgGZQgECAglCAUIBKUk5KSOAIcIAtBNGogASALQQxqIARBlI/DACAHQZSPwwBD//9/fxBmAkACQAJAAkACQCALKAI0IgxBA0cEQCAMQQFGDQMgDEEBaw4CAQQCCyAAQQQ6ADQMCQsAC0EDQQIgCCATWxshDAwGCyALKgJIIh4gCyoCDCIQlCALKgJEIh8gCyoCECIUlJMiFSAVkiESIB8gCyoCFCIVlCALKgJMIiEgEJSTIhYgFpIhGSALKgIkICEgCyoCGCIWIBKUIBAgGZQgFCAhIBSUIB4gFZSTIhggGJIiGJSTkpKSIAsqAkAiJZMiHSAdlCALKgIcIB8gFiAYlCAUIBKUIBUgGZSTkpKSIAsqAjgiJ5MiICAglCALKgIgIB4gFiAZlCAVIBiUIBAgEpSTkpKSIAsqAjwiIpMiEiASlJKSIhlDAACAKF4NAUECIQwMBQtBAiEMQYzExAAoAgBBA0sNAgwECyALIAk4AjAgCyATOAIsIAsgEzgCKCALIB0gGZEiE5UiGjgCgAEgCyASIBOVIhs4AnwgCyAgIBOVIhc4AnggC0E0aiATIAIgAyAFIAYgC0H4AGogC0EoahDDAiAWIBAgG5QgFCAXlJMiEyATkiITlCAUIBQgGpQgFSAblJMiHCAckiIclCAQIBUgF5QgECAalJMiEiASkiISlJOSIBqTISMgFiASlCAQIBOUIBUgHJSTkiAbkyEkIBYgHJQgFSASlCAUIBOUk5IgF5MhHCALKgI4IRMgCyoCNCIQIBGTQwAAoDVdRQRAIAsoAkBFDQMgECERDAELCyALKgI8IhEgCVwNASALQcwBaiACIBEQ4gIgC0E0aiAFIBEQ4gIgCyoC0AEiESALKgJEIAsqAtwBkyISlCALKgLMASIQIAsqAkggCyoC4AGTIhmUkyIUIBSSIRQgCyoC1AEiFSAZlCARIAsqAkwgCyoC5AGTIhiUkyIWIBaSIRYgGiAYIAsqAtgBIh0gFJQgESAWlCAQIBAgGJQgFSASlJMiGCAYkiIYlJOSkiAGIBqUkyADIBqUk5QgFyASIB0gFpQgFSAYlCARIBSUk5KSIAYgF5STIAMgF5STlCAbIBkgHSAYlCAQIBSUIBUgFpSTkpIgBiAblJMgAyAblJOUkpJDAAAAAF5FDQEgAEEEOgA0DAMLQbSRwwAoAgAhDUGskcMAKQIAIUYgC0IANwJsIAtCgYCAgMAANwJkIAtBpJHDADYCYCALQdIANgJcIAtBvJHDADYCWCALQQQ2AlQgCyBGNwJMIAtC0gA3AkQgC0G8kcMANgJAIAtBADYCPCALIA02AjggC0EBNgI0QejDxAAoAgBBrP/DAEGIxMQAKAIAQQJGIg0bIAtBNGpB7MPEACgCAEGU/8MAIA0bKAIQEQAADAELQQEhDAsCQCAKKAIABEAgEyAIk4tDrMUnN10NASAAIAw6ADQgACAjOAIwIAAgJDgCLCAAIBw4AiggACAaOAIkIAAgGzgCICAAIBc4AhwgACAhOAIYIAAgHjgCFCAAIB84AhAgACAlOAIMIAAgIjgCCCAAICc4AgQgACATOAIAIAAgCy8ACTsANSAAQTdqIAtBC2otAAA6AAAMAgsgACAMOgA0IAAgIzgCMCAAICQ4AiwgACAcOAIoIAAgGjgCJCAAIBs4AiAgACAXOAIcIAAgITgCGCAAIB44AhQgACAfOAIQIAAgJTgCDCAAICI4AgggACAnOAIEIAAgEzgCACAAIAsvAAk7ADUgAEE3aiALQQtqLQAAOgAADAELQwAAAAAhJyAFKgI0Ii8gAioCNCIwkyIRIBGUIAUqAjgiMSACKgI4IjKTIhEgEZSSIAUqAjwiMyACKgI8IjSTIhEgEZSSIhFDAAAAAFwEQEMAAIA/IBGRlSEnC0PbD0lAIAoqAgiTICeUIhEgESAKKgIEIjUgBSoCKCI4IAIqAigiOZMiECAQlCAFKgIsIjogAioCLCI7kyIQIBCUkiAFKgIwIjwgAioCMCI9kyIQIBCUkiIQQwAAAABcBH1DAACAPyAQkZUFQwAAAAALlCIQIBAgEV4bIBAgEFwbIhAgECAJIAiTQwAAIEGVIhEgECARXRsgESARXBshEQJAAkAgCCAJXQRAIAkgESARQwAAAABbGyE+IAUqAiQhPyAFKgIgIUAgBSoCHCFBIAIqAiQhQiACKgIgIUMgAioCHCFEIAtB8AFqIQogC0HkAWohDCALQdwAaiENIAghEQNAIAtB+ABqIAIgERDiAiALQZQBaiAFIBEQ4gIgCyALKgKAASIQIAsqApwBIhuUIAsqAnwiEyALKgKYASIUlCALKgJ4IhcgCyoClAEiFZQgCyoChAEiGiALKgKgASIWlJKSkjgCvAEgCyATIBWUIBogG5QgFyAUlJOSIBAgFpSTOAK4ASALIBogFJQgFyAblJIgEyAWlJMgECAVlJM4ArQBIAsgECAUlCAaIBWUIBcgFpSTIBMgG5STkjgCsAEgEyALKgKkASALKgKIAZMiIZQgFyALKgKoASALKgKMAZMiHJSTIh4gHpIhHiAQIByUIBMgCyoCrAEgCyoCkAGTIhKUkyIfIB+SIR8gCyASIBogHpQgEyAflCAXIBcgEpQgECAhlJMiEiASkiISlJOSkjgCyAEgCyAcIBogEpQgFyAelCAQIB+Uk5KSOALEASALICEgGiAflCAQIBKUIBMgHpSTkpI4AsABIAtBNGogASALQbABaiAEQZSPwwAgB0GUj8MAQ///f38QeiALKAI0Ig5BAkYNAiALQYgCaiIPIA1BCGooAgA2AgAgCyANKQIANwOAAiAOQQFxRQ0CIAsqAlghHyALKgJUISEgCyoCUCEcIAsqAkwhEiALKgJIIRkgCyoCRCEYIAsqAkAhHSALKgI8ISAgCyoCOCElIAsqAmghHiAKIAspA4ACNwIAIApBCGogDygCADYCACALICA4AtABIAsgHTgC1AEgCyAlOALMASALIBk4AtwBIAsgEjgC4AEgCyAYOALYASALIBw4AuQBIAsgITgC6AEgCyAfOALsASALIB44AvwBIBsgGCBBkyIplCAVIBIgP5MiNpSTIiIgIpIhIiAUIDaUIBsgGSBAkyImlJMiIyAjkiEjIBAgJSBEkyIqlCAXIB0gQpMiN5STIiQgJJIhJCATIDeUIBAgICBDkyIrlJMiKCAokiEoIAkgEZMgHyAaIBcgIZQgEyAclJMiLCAskiIslCAXIBAgHJQgFyAflJMiLSAtkiItlCATIBMgH5QgECAhlJMiLiAukiIulJOSkiA8IC8gJiAWICKUIBsgI5QgFSAVICaUIBQgKZSTIiYgJpIiJpSTkpIiRZQgMSApIBYgI5QgFCAmlCAbICKUk5KSIimUk5IgPSAwICsgGiAklCAQICiUIBcgFyArlCATICqUkyIbIBuSIhuUk5KSIiuUIDIgKiAaICiUIBMgG5QgECAklJOSkiIqlJOSk5QgHCAaIC6UIBMgLJQgECAtlJOSkiA4IDEgNiAWICaUIBUgIpQgFCAjlJOSkiIUlCAzIEWUk5IgOSAyIDcgGiAblCAXICSUIBMgKJSTkpIiE5QgNCArlJOSk5QgISAaIC2UIBAgLpQgFyAslJOSkiA6IDMgKZQgLyAUlJOSIDsgNCAqlCAwIBOUk5KTlJKSjJQgNSA1IB6SIB5DAAAAAF8bXg0DICdDAAAAAFsNAiA+IBGSIhEgCV0NAAsLIABBBDoANAwCCyAAQQQ6ADQMAQsCQCAeQwAAAABeRQRAIAsgETgCpAIgCyAROAKgAiALIAg4ApwCIAsgHTgCsAIgCyAgOAKsAiALICU4AqgCIAsgEjgCvAIgCyAZOAK4AiALIBg4ArQCIAtBNGogHiACIAtBqAJqIAUgC0G0AmogDCALQZwCahDmAQwBCyALIAk4ApgCIAsgETgClAIgCyAROAKQAiALQTRqIB4gAiADIAUgBiAMIAtBkAJqEMMCCyALKgI4IQMgACALKQOAAjcCKCAAIB84AiQgACAhOAIgIAAgHDgCHCAAIBI4AhggACAZOAIUIAAgGDgCECAAIB04AgwgACAgOAIIIAAgJTgCBCAAIAM4AgAgAEEwaiALQYgCaigCADYCACAAQQE6ADQLIAtBwAJqJAALnxcCJ38ZfSMAQSBrIgQkAEECIRcCQAJAAn8gACgCpAciDUF/RgRAQQIhGEEADAELQQEhGEEAIAAtALQHQQFxDQAaIAIoAggiBSANTQ0BIAIoAgQgDUEYbGoiBSoCFCExIAUqAhAhMiAFKgIMITMgBSoCCCE0IAUqAgQhNSAFKAIAIQ1BACEYQQELISYCQAJAIAAoAqgHIg5Bf0YNACAALQC0B0ECcQRAQQEhFwwBCyACKAIIIgUgDk0NASACKAIEIA5BGGxqIgUqAhQhNiAFKgIQITcgBSoCDCE4IAUqAgghOSAFKgIEITogBSgCACEOQQAhF0EBISQLIAAtALUHIhBBBUkEQCAAKALoBiIKIAAoAuQGIglqIhRBBmwhJSADKAIMIRkgAygCBCEaIAEoAgwhEiABKAIEIQcgACgC4AYhEwJAAkACQCAQRQRAIAAqAuwGISwgACoC9AYhLSAAKgLwBiEwDAELIAAgEEHMAGxqIRUgByAJQQJ0IgEgE0ECdCIDamohDCAHIAlBA3QgCkECdGogA2pqIQUgFEEYbCEIIApBAXEhGyAJQQFxIRxBACAKQX5xayEdQQAgCUF+cWshHiAAKgL0BiItIAAqAowHlCEuIAAqAvAGIjAgACoCiAeUITsgACoC7AYiLCAAKgKEB5QhLyABIAdqIR8gACoCmAcgLYyUIT4gACoClAcgMIyUITwgACoCkAcgLIyUIT0gCUEBdCIgIApqIgEgCmohISAHIAFBAnRqISIgEyEPIAAhCwNAIAsqAkAhKwJAAkACQCAYQQFrDgIBAgALIDQgKyAulJIhNCA1ICsgO5SSITUgMSArIAsqAiiUkiExIDIgKyALKgIklJIhMiAzICsgCyoCIJSSITMgKyAvlCANvpK8IQ0MAQsgDyAgaiASSw0EIAkgDWogGUsNCCAaIA1BAnRqIRFBACEDAkACQCAJDgICAQALQQAhBiAMIQEgESEDA0AgAyArIAEqAgCUIAMqAgCSOAIAIANBBGoiFiArIAFBBGoqAgCUIBYqAgCSOAIAIAFBCGohASADQQhqIQMgHiAGQQJrIgZHDQALQQAgBmshAwsgHEUNACADQQJ0IgEgEWoiAyArIB8gD0ECdGogAWoqAgCUIAMqAgCSOAIACwJAAkACQCAXQQFrDgIBAgALIDkgKyA+lJIhOSA6ICsgPJSSITogNiArIAsqAjSUkiE2IDcgKyALKgIwlJIhNyA4ICsgCyoCLJSSITggKyA9lCAOvpK8IQ4MAQsgDyAhaiASSw0IIAogDmogGUsNCCAaIA5BAnRqIRFBACEDAkACQCAKDgICAQALQQAhBiAFIQEgESEDA0AgAyArIAEqAgCUIAMqAgCSOAIAIANBBGoiFiArIAFBBGoqAgCUIBYqAgCSOAIAIAFBCGohASADQQhqIQMgHSAGQQJrIgZHDQALQQAgBmshAwsgG0UNACADQQJ0IgEgEWoiAyArICIgD0ECdGogAWoqAgCUIAMqAgCSOAIACyAFIAhqIQUgCCAMaiEMIA8gJWohDyAVIAtBzABqIgtHDQALCyAQBEAgAEGwAmoiCCAQQYwBbGohISAHIBNBAnQiASAJQRhsIApBFGxqamohDyAHIApBDGwgCUEEdGogAWpqIREgByAJQRRsIApBBHRqIAFqaiEQIAcgCUEMbCAKQQN0aiABamohBSAUQRhsIRUgCkEBcSEbIAlBAXEhHCAKQQFrIR0gCUEBayEeIBRBAXQiASATaiEMQQAgCkF+cWshE0EAIAlBfnFrIRQgACoCmAciOyAsIAAqAvwGIiuUIDAgACoC+AYiLpSTIi+MlCE+IAAqApQHIjwgLSAulCAsIAAqAoAHIiyUkyI9jJQhQCAAKgKQByI/IDAgLJQgLSArlJMiLYyUITAgPyAujJQhPyA8ICuMlCE8IDsgLIyUITsgLyAAKgKMByIvlCFBID0gACoCiAciPZQhQiAtIAAqAoQHIi2UIUMgLiAtlCEtICsgPZQhLiAsIC+UIS8gByAJQQJ0aiEiIAEgCWoiAyAJaiEfIAcgA0ECdGohFiAJQQF0IicgCmoiAyAKaiEoIAcgA0ECdGohKSABIANqIgEgCmohICAHIAFBAnRqISoDQCAIKgJwISwCQAJAAkACQCAYQQFrDgIBAAILIAgqAnQhKwwCCwJAIBIgDCAnak8EQCAJIA1qIBlLDQECQCAJBEAgGiANQQJ0aiELIB4Ef0EAIQYgBSEBIAshAwNAIAMgLCABKgIAlCADKgIAkjgCACADQQRqIgcgLCABQQRqKgIAlCAHKgIAkjgCACABQQhqIQEgA0EIaiEDIBQgBkECayIGRw0AC0EAIAZrBUEACyEDIAxBAnQhByAcBEAgA0ECdCIBIAtqIgMgLCAHICJqIAFqKgIAlCADKgIAkjgCAAsgDCAfaiASTQ0BDA0LIAwgH2ogEksNDCAIKgJ0ISsMBAsgCCoCdCErIB4Ef0EAIQYgECEBIAshAwNAIAMgKyABKgIAlCADKgIAkjgCACADQQRqIiMgKyABQQRqKgIAlCAjKgIAkjgCACABQQhqIQEgA0EIaiEDIBQgBkECayIGRw0AC0EAIAZrBUEACyEDIBxFDQMgA0ECdCIBIAtqIgMgKyAHIBZqIAFqKgIAlCADKgIAkjgCAAwDCwwKCwwJCyA0ICwgL5SSIAgqAnQiKyBBlJIhNCA1ICwgLpSSICsgQpSSITUgMSAsIAgqAjiUkiArIAgqAkSUkiExIDIgLCAIKgI0lJIgKyAIKgJAlJIhMiAzICwgCCoCMJSSICsgCCoCPJSSITMgKyBDlCAsIC2UIA2+kpK8IQ0LAkACQAJAIBdBAWsOAgACAQsCQCASIAwgKGpPBEAgCiAOaiAZSw0BAn8CQCAKBEAgGiAOQQJ0aiELIB0Ef0EAIQYgESEBIAshAwNAIAMgLCABKgIAlCADKgIAkjgCACADQQRqIgcgLCABQQRqKgIAlCAHKgIAkjgCACABQQhqIQEgA0EIaiEDIBMgBkECayIGRw0AC0EAIAZrBUEACyEDIAxBAnQhByAbBEAgA0ECdCIBIAtqIgMgLCAHIClqIAFqKgIAlCADKgIAkjgCAAsgDCAgaiASSw0OIB0NAUEADAILIAwgIGogEk0NBQwNC0EAIQYgDyEBIAshAwNAIAMgKyABKgIAlCADKgIAkjgCACADQQRqIiMgKyABQQRqKgIAlCAjKgIAkjgCACABQQhqIQEgA0EIaiEDIBMgBkECayIGRw0AC0EAIAZrCyEDIBtFDQMgA0ECdCIBIAtqIgMgKyAHICpqIAFqKgIAlCADKgIAkjgCAAwDCwwKCwwJCyA5ICwgO5SSICsgPpSSITkgOiAsIDyUkiArIECUkiE6IDYgLCAIKgJQlJIgKyAIKgJclJIhNiA3ICwgCCoCTJSSICsgCCoCWJSSITcgOCAsIAgqAkiUkiArIAgqAlSUkiE4ICsgMJQgLCA/lCAOvpKSvCEOCyAPIBVqIQ8gESAVaiERIBAgFWohECAFIBVqIQUgDCAlaiEMICEgCEGMAWoiCEcNAAsLAkAgJgRAIAAoAqQHIgEgAigCCCIDTw0BIAIoAgQgAUEYbGoiASAxOAIUIAEgMjgCECABIDM4AgwgASA0OAIIIAEgNTgCBCABIA02AgALAkAgJARAIAAoAqgHIgAgAigCCCIBTw0BIAIoAgQgAEEYbGoiACA2OAIUIAAgNzgCECAAIDg4AgwgACA5OAIIIAAgOjgCBCAAIA42AgALIARBIGokAA8LIAAgAUHIo8IAEIgLAAsgASADQbijwgAQiAsACwALDAMLIBBBBEGoo8IAEI8PAAsgDiAFQZijwgAQiAsACyANIAVBiKPCABCICwALIARBADYCGCAEQQE2AgwgBEGQ+8EANgIIIARCBDcCECAEQQhqQZj7wQAQuA0AC8ciAwd/FX0CfiMAQdADayIHJAAgB0HoAGogAyAEKAJgIgsRAAAgB0HwAGoiCSIIIAcoAmgiCiAHKAJsKAIMEQAAIAcpA3AhIyAHKQN4ISQgB0HgAGogBSAGKAJgIg0RAAAgCCAHKAJgIgggBygCZCgCDBEAAAJ/An0CQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCEEAIAcpA3BC3fPzxO6x3LFshSAHKQN4Qr+++92x1LnldoWEUBsiDEEAR0EAIApBACAjQt3z88TusdyxbIUgJEK/vvvdsdS55XaFhFAbIggbRQRAIAhBACAFIAYoArABEQQAGw0BIAxBACADIAQoArABEQQAGw0CIAdB2ABqIAMgCxEAACAJIAcoAlgiCiAHKAJcKAIMEQAAIAcpA3AhIyAHKQN4ISQgB0HQAGogBSANEQAAIAkgBygCUCIIIAcoAlQoAgwRAAAgCkEAICNCsc7207iOlJTLAIUgJEK52YiMjb6psWaFhFAbIgoEQCAIQQAgBykDcEKxzvbTuI6UlMsAhSAHKQN4QrnZiIyNvqmxZoWEUBsiCA0ECyAHQcgAaiADIAsRAAAgB0HwAGoiCCAHKAJIIgogBygCTCgCDBEAACAHKQNwISMgBykDeCEkIAdBQGsgBSANEQAAIAggBygCQCIIIAcoAkQoAgwRAAAgCkEAICNC5ZTL2cyFlMymf4UgJEKnv6zhvbL9yjqFhFAbIgoEQCAIQQAgBykDcELllMvZzIWUzKZ/hSAHKQN4Qqe/rOG9sv3KOoWEUBsiCA0FCyAHQThqIAMgCxEAACAHQfAAaiAHKAI4IgggBygCPCgCDBEAACAHKQNwISMgBykDeCEkIAdBMGogBSAGKAK0ASIMEQAAIAhBACAjQoW5mIGx9LKaj3+FICRCvJnQkLGtvsqtf4WEUBsiCgRAIAcoAjAiCA0GCyAHQShqIAMgBCgCtAEiCREAACAHKAIsIQogBygCKCELIAdBIGogBSANEQAAIAdB8ABqIAcoAiAiCCAHKAIkKAIMEQAAIAsEQCAIQQAgBykDcEKFuZiBsfSymo9/hSAHKQN4QryZ0JCxrb7KrX+FhFAbIggNBwsgB0EYaiADIAkRAAAgBygCHCEJIAcoAhghCiAHQRBqIAUgDBEAACAKBEAgBygCECIIDQgLIAdBCGogAyAEKAK4AREAACAHKAIIIghFDQggB0HwAGogCCAHKAIMIAEgAiAFIAYQkQEgByoCeEP//39/IAcoAnAbDA0LQwAAAAAgAioCECIOIA6UIAIqAhQiDiAOlJIgAioCGCIOIA6UkiIOkSAIKgIAIAwqAgCSIg+TIA4gDyAPlF8bDAwLIAgqAgAhGCAGKAIsIQEgByACKgIMIhMgAioCACIdIAIqAhQiFJQgAioCBCIbIAIqAhAiHJSTIg4gDpIiGZQgGyAbIAIqAhgiEJQgAioCCCISIBSUkyIOIA6SIhGUIB0gEiAclCAdIBCUkyIOIA6SIg+Uk5IgEJMiEDgCuAIgByATIBGUIBIgD5QgGyAZlJOSIByTIg44ArACIAcgEyAPlCAdIBmUIBIgEZSTkiAUkyIPOAK0AiAHQfAAaiAFIAdBsAJqQQEgARECAEMAAAAAQwAAAAAgDiAHKgJwkyIOIA6UIA8gByoCdJMiDiAOlJIgECAHKgJ4kyIOIA6UkpEgGJMiDiAOQwAAAABdGyAOIA5cGyEOQQAMDAsgDCoCACEPIAQoAiwhBCAHQbgCaiIBIAJBGGooAgA2AgAgByACKQIQNwOwAiAHQfAAaiADIAdBsAJqQQEgBBECAEMAAAAAQwAAAAAgByoCsAIgByoCcJMiDiAOlCAHKgK0AiAHKgJ0kyIOIA6UkiABKgIAIAcqAniTIg4gDpSSkSAPkyIOIA5DAAAAAF0bIA4gDlwbIQ5BAAwLCyAHIAIqAgwiGjgCvAIgByACKgIIIhWMOAK4AiAHIAIqAgQiFow4ArQCIAcgAioCACIXjDgCsAIgByAaIBcgAioCFCIglCAWIAIqAhAiIZSTIg4gDpIiEJQgFiAWIAIqAhgiIpQgFSAglJMiDiAOkiIPlCAXIBUgIZQgFyAilJMiDiAOkiIOlJOSICKTIhw4AsgCIAcgGiAOlCAXIBCUIBUgD5STkiAgkyIZOALEAiAHIBogD5QgFSAOlCAWIBCUk5IgIZMiETgCwAIgB0HMAmogCiAIIAIQqAIgByoCzAIiEEP//39/Xg0FIAdB3AJqIAggCiAHQbACahCoAiAHKgLcAiIPQ///f39eDQUgB0HsAmogCiAIIAIQwQICQAJAIAcqAuwCIg5D//9/f14NAAJAIBBDAAAAAF9FDQAgD0MAAAAAX0UNACAOQwAAAABfDQELIA8gEF8gDiAQX3ENCCAOIA9fIA8gEGBxDQkgDiAPYCAOIBBgcQ0BQYDUwgBBKEGw78IAENYMAAtDAAAAAAwKCyAHKgLwAiEQIAcqAvQCIQ8gByAHKgL4AiIOOAJ4IAcgDzgCdCAHIBA4AnAgB0GIA2oiBCAKIAdB8ABqIgUQ0AYgByAOjDgCeCAHIA+MOAJ0IAcgEIw4AnAgB0GgA2oiAyAHQbACaiAFEIcJIAdBrANqIgEgCCADENAGIAUgAiAEIAFD//9/fxCHAkMAAAAAIAcoAnBBAUcNCRogByoCiAEhDiAHKgKEASEZIAcqAoABIREgByoCfCESIAcqAnghEyAHKgJ0IRQMCAsgB0HwAGogAiAKIAhD//9/fxCHAkMAAAAAIAcoAnBBAUcNCBogByoChAEiESACKgIAIhKUIAcqAoABIhggAioCBCITlJMiDiAOkiEUIBggAioCCCIclCAHKgKIASIPIBKUkyIOIA6SIRkgAioCGCAPIAIqAgwiECAUlCASIBmUIBMgDyATlCARIByUkyIOIA6SIg+Uk5KSkiAHKgJ8kyIOIA6UIAIqAhAgGCAQIA+UIBMgFJQgHCAZlJOSkpIgByoCdJMiDiAOlCACKgIUIBEgECAZlCAcIA+UIBIgFJSTkpKSIAcqAniTIg4gDpSSkpEMCAsgAiAKIAggBygCNEEYaigCABDkCiEOQQAMCAsgB0HwAGoiASACENwHIAEgCCALIApBGGooAgAQ5AoMBgsgBygCFCEBIAdBqAJqQgA3AgAgB0IANwKgAiAHQoKAgIAwNwJ4IAdCgICAgBA3AnAgB0GAAWpBAEGgAfwLACAHQQA2ArACIAlBDGooAgAhBiABQRRqKAIAIQUjAEHwAGsiCSQAIAdB8ABqIgQCfQJ9IAdBsAJqIgEoAgBBAUYEQCABKgIIIREgASoCBCEQIAEqAgwMAQsgAioCFIwhESACKgIQjCEQIAIqAhiMCyIOIA6UIBEgEZQgECAQlJKSIg9DAACAKF4EQCAJIBAgD5EiGJUiEDgCDCAJIBEgGJUiDzgCECAJIA4gGJUiDjgCFCAJQUBrIgMgCiAJQQxqIAYRAQAgCSAOjDgCICAJIA+MOAIcIAkgEIw4AhggCUHMAGoiASAIIAIgCUEYaiAFEQIAIARBADYCvAEgBEEANgKsASAEIAkpAkA3AhwgBEEkaiADQQhqIgMoAgA2AgAgBCAJKQJMNwIoIARBMGogAUEIaiIBKAIANgIAIAkqAkQgCSoCUJMhESAJKgJAIAkqAkyTIRAgAyoCACABKgIAkwwBCyAJQQA2AhQgCUKAgID8AzcCDCAJQdgAaiIDIAogCUEMaiAGEQEAIAlBgICAgHg2AiAgCUKAgID8i4CAgIB/NwIYIAlB5ABqIgEgCCACIAlBGGogBRECACAEQQA2ArwBIARBADYCrAEgBCAJKQJYNwIcIARBJGogA0EIaiIDKAIANgIAIAQgCSkCZDcCKCAEQTBqIAFBCGoiASgCADYCACAJKgJcIAkqAmiTIREgCSoCWCAJKgJkkyEQIAMqAgAgASoCAJMLOAIYIAQgETgCFCAEIBA4AhAgCUEYaiACIAogBiAIIAVD//9/f0EBIAQQzgFDAAAAACEOAkACQAJAIAkoAhhBAWsOAgEAAgtBgNTCAEEoQYSDwwAQ1gwACyAJKgIoIAkqAhyTIg4gDpQgCSoCLCAJKgIgkyIOIA6UkiAJKgIwIAkqAiSTIg4gDpSSkSEOCyAJQfAAaiQAQQAMBgsgByAFIAYoArgBEQAAQQEgBygCACIGRQ0FGiAHKAIEIQUjAEEwayIIJAAgCCACKgIMIhw4AhQgCCACKgIIIhKMOAIQIAggAioCBCITjDgCDCAIIAIqAgAiFIw4AgggCCAcIBQgAioCFCIZlCATIAIqAhAiEZSTIg4gDpIiGJQgEyATIAIqAhgiEJQgEiAZlJMiDiAOkiIPlCAUIBIgEZQgFCAQlJMiDiAOkiIOlJOSIBCTOAIgIAggHCAOlCAUIBiUIBIgD5STkiAZkzgCHCAIIBwgD5QgEiAOlCATIBiUk5IgEZM4AhggCEEkaiAGIAUgASAIQQhqIAMgBBCRASAIKAIkIQEgCCoCLCEOIAhBMGokACAOQ///f38gARshDkEADAULQwAAAAAMAwsgCioCCCIYjCAiIAgqAgggGiAXIAcqAtQCIhKUIBYgByoC0AIiE5STIg4gDpIiFJQgFiAWIAcqAtgCIg+UIBUgEpSTIg4gDpIiEJQgFyAVIBOUIBcgD5STIg4gDpIiDpSTkiAPk5giDyAaIBcgCCoCBCAaIA6UIBcgFJQgFSAQlJOSIBKTmCIdlCAWIAgqAgAgGiAQlCAVIA6UIBYgFJSTkiATk5giEJSTIg4gDpIiG5QgFyAVIBCUIBcgD5STIg4gDpIiEpQgFiAWIA+UIBUgHZSTIg4gDpIiE5STkpKSIh6TIRQgCioCACIPjCAhIBAgGiATlCAWIBuUIBUgEpSTkpKSIh+TIg5DAAAAACAOQwAAAABgGyAfIA+TIg5DAAAAACAOQwAAAABgG5MiEEMAAAAAXCAKKgIEIg+MICAgHSAaIBKUIBUgE5QgFyAblJOSkpIiG5MiDkMAAAAAIA5DAAAAAGAbIBsgD5MiDkMAAAAAIA5DAAAAAGAbkyIPQwAAAABcciAUQwAAAAAgFEMAAAAAYBsgHiAYkyIOQwAAAAAgDkMAAAAAYBuTIg5DAAAAAFxyIQEgHiAOkiAeIAEbIRIgGyAPkiAbIAEbIRMgHyAQkiAfIAEbIRQgHCAeIBogFiAflCAXIBuUkyIOIA6SIhiUIBYgFSAblCAWIB6UkyIOIA6SIhCUIBcgFyAelCAVIB+UkyIOIA6SIg+Uk5KSkiEOIBkgGyAaIA+UIBcgGJQgFSAQlJOSkpIhGSARIB8gGiAQlCAVIA+UIBYgGJSTkpKSIREMAQsgByAHKgLoAow4AnggByAHKgLkAow4AnQgByAHKgLgAow4AnAgB0H8AmoiBCAKIAdBsAJqIAdB8ABqIgMQuAUgCCoCACEPIAgqAgQhDiAHIAhBCGoiASoCAIw4ArQDIAcgDow4ArADIAcgD4w4AqwDIAdBwANqIAEoAgA2AgAgByAIKQIANwK4AyADIAdBrANqIARBARCLAyAHKgJ4IQ4gByoCdCEZIAcqAnAhESAHQcQDaiACIAQQhwkgIiAHKgLMA5IhEiAgIAcqAsgDkiETICEgByoCxAOSIRQLICIgDiAaIBcgGZQgFiARlJMiDyAPkiIYlCAXIBUgEZQgFyAOlJMiDyAPkiIQlCAWIBYgDpQgFSAZlJMiDiAOkiIPlJOSkpIgEpMiDiAOlCAhIBEgGiAPlCAWIBiUIBUgEJSTkpKSIBSTIg4gDpQgICAZIBogEJQgFSAPlCAXIBiUk5KSkiATkyIOIA6UkpKRCyEOQQALIQUgACAOOAIEIAAgBTYCACAHQdADaiQAC4caAhB/FX0jAEFAaiIFJAACQCAAKAKUAkUNACAAKAIwIQwCQCAAKAI4IghFDQAgDCEDIAgiBEEBcQRAIANBADYCACADIAhBAWsiBEEAR0ECdGohAwsgCEEBRg0AIAwgCEECdGohByAMIQYDQCAIQQJ0IgkgBmoiDSADIAMgB0YiChsiC0EANgIAIAsgBEEBR0ECdGoiCyADIAlqIAcgChsiB0YhAyANIAYgChsiBiAJaiIKIAsgAxsiDUEANgIAIAogBiADGyEGIAkgC2ogByADGyEHIA0gBEECR0ECdGohAyAEQQJrIgQNAAsLAkAgACgCCCILRQ0AIAAoAkAhESAAKAJEIQ0gACgC1AEhDyAAKALYASEKIAAoAgQhEEEAIQkCQANAAkACQCAQIAlB8ANsaiIEKALwAiIDIAJPDQAgASADQYADbGoiAygCAEEBRw0AIAMoAgQgBCgC9AJGDQELQbCJwgBBE0GMkcIAENcLAAsCQCAJRQRAQwAAAAAhHEMAAAAAIR1DAAAAACEeQwAAAAAhFkMAAAAAIRdDAAAAACEZDAELAkAgCyAEKAKYAyIGSwRAAkAgECAGQfADbGoiDigC8AIiByACTw0AIAEgB0GAA2xqIgcoAgBBAUcNACAHKAIEIA4oAvQCRw0AIAYgCk8NAiAEKgL8AiIcIAcqAowBIhaUIAQqAvgCIh0gByoCkAEiE5STIRogByoClAEiFCAEKgLUAyIXlCAWIAQqAtwDIhmUkyEVIBMgGZQgFCAEKgLYAyIblJMhGCAbIA8gBkEYbGoiBioCDCIflCAXIAYqAhAiIJSTIAYqAghDAAAAAJIgGiAakpIgFiAVlCATIBiUk5KSIR4gFyAGKgIUIhqUIBkgH5STIAYqAgRDAAAAAJIgHSAUlCAEKgKAAyIhIBaUkyIdIB2SkiAUIBiUIBYgFiAblCATIBeUkyIXlJOSkiEdIBkgIJQgGyAalJMgBioCAEMAAAAAkiAhIBOUIBwgFJSTIhkgGZKSIBMgF5QgFCAVlJOSkiEcIBpDAAAAAJIgFiAEKgKIAyIblCATIAQqAoQDIheUk5IhGSAgQwAAAACSIBQgF5QgFiAEKgKMAyIWlJOSIRcgH0MAAAAAkiATIBaUIBQgG5STkiEWDAMLQbCJwgBBE0GskcIAENcLAAsgBiALQZyRwgAQiAsACyAGIApBvJHCABCICwALAkAgCSAKRwRAIAMqApQBIRMgBCoC5AMhFCADKgKQASEbIAQqAugDIRogAyoCjAEhFSAEKgLgAyEYIA8gCUEYbGoiBCAZOAIUIAQgFzgCECAEIBY4AgwgBCAWIBSUIBcgGJSTIB4gFSAYIBOUIBogFZSTIh6UIBsgGiAblCAUIBOUkyIflJOSkiIjOAIIIAQgGSAYlCAWIBqUkyAdIBMgH5QgFSAUIBWUIBggG5STIhWUk5KSIiQ4AgQgBCAXIBqUIBkgFJSTIBwgGyAVlCATIB6Uk5KSIiU4AgBDAAAAACEeQwAAAAAhH0MAAAAAIRtDAAAAACEaQwAAAAAhIAJ9IAMqAuwBIhUgAyoC+AEiHJQgAyoC8AEiGEMAAIA/IAMqAvQBIAMtAMgCIgRBEHEiBhsiIZSTIRRDAAAAACAYIBSUQwAAgD8gAyoC6AEgBEEIcSIHGyIdICFDAACAPyADKgL8ASAEQSBxIgQbIiKUIBwgHJSTIiaUIBUgFSAilCAYIByUkyInlJOSIhNDAAAAAFsNABogFCATlSEbICYgE5UhICAnjCATlSEaICEgHZQgFSAVlJMgE5UhHyAiIB2UIBggGJSTIBOVIR4gFSAYlCAcIB2UkyATlQshFCAJIA1HDQEgDSANQdyRwgAQiAsACyAKIApBzJHCABCICwALIBEgCUEEdGoiDkEMaiISKAIAIAhGBEAgCARAIBogAyoCjAEiE5RDAAAAACAeIAYbIh0gAyoCkAEiFZSSIBQgAyoClAEiGJSSIRwgAyoCxAEgEyAclCAVQwAAAAAgICAHGyIeIBOUIBogFZSSIBsgGJSSIiCUk5MgGUMAAAAAIB8gBBsiH5QgFyAUlCAWIBuUkpKTISEgAyoCwAEgGCAglCATIBsgE5QgFCAVlJIgHyAYlJIiE5STkyAZIBSUIBcgHZQgFiAalJKSkyEUIAMqArwBIBUgE5QgGCAclJOTIBkgG5QgFyAalCAWIB6UkpKTIRYgAyoCuAEgI0MAAAAAQwAAgD8gAyoClAIiF5UgF4tDCOU8Hl8blJMhFyADKgK0ASAkQwAAAABDAACAPyADKgKQAiIZlSAZi0MI5TweXxuUkyEZIAMqArABICVDAAAAAEMAAIA/IAMqAowCIhOVIBOLQwjlPB5fG5STIRNBACEGQRQhByAMIQMDQCAGIBIoAgBPDQQgAyADKgIAIBMgDkEEaigCACAHaiIEQRRrKgIAlEMAAAAAkiAZIARBEGsqAgCUkiAXIARBDGsqAgCUkiAWIARBCGsqAgCUkiAUIARBBGsqAgCUkiAhIAQqAgCUkpI4AgAgB0EYaiEHIANBBGohAyAGQQFqIgYgCEcNAAsLIAsgCUEBaiIJRw0BDAMLCyAFQQA2AjggBUEBNgIsIAVB6PrBADYCKCAFQgQ3AjAgBUEoakHogMIAELgNAAsgBUEANgI4IAVBATYCLCAFQZD7wQA2AiggBUIENwIwIAVBKGpBqPvBABC4DQALIAAoAhghAyAAKAIQIQEgACgCICECIAAoAighBCAFQQE2AhQgBSAENgIQIAVBATYCDCAFIAg2AggCQAJAAkACQAJAAkAgBCAIRgRAIAVBATYCHCAFQQE2AiQgBSADNgIgIAUgCDYCGCADIAhHDQECQCAIRQ0AIAhBAXEhCUEAIQcgCEEBRwRAIAhBfnEhCiAMIQQgASEDIAIhBgNAIAQgBCoCACAGKgIAIAMqAgCUkzgCACAEQQRqIgsgCyoCACAGQQRqKgIAIANBBGoqAgCUkzgCACAEQQhqIQQgA0EIaiEDIAZBCGohBiAKIAdBAmoiB0cNAAsLIAlFDQAgB0ECdCIDIAxqIgQgBCoCACACIANqKgIAIAEgA2oqAgCUkzgCAAsgCCEBAkAgACgCkAEiAkF/Rg0AAkAgACgCjAEiAUUNACAAKAKIASEEIAhBAUcEQCABQQJ0IQcgDCACQQJ0aiEDIAIgCCACIAhJG0EBayEGA0AgBCgCACIJIAhPDQYgBkEBaiIGIAhGDQcgBEEEaiEEIAMgDCAJQQJ0aioCADgCACADQQRqIQMgB0EEayIHDQALDAELIAJBAWshAyABQQJ0IQYDQCAEKAIADQUgA0EBaiIDDQYgBEEEaiEEIAZBBGsiBg0ACwsgCCABIAJqIgFrIgRFDQAgAUEBaiEJIAhBAnQiBiAMaiEHIAFBAnQiCiAMaiEDAkAgBEEBcUUEQCADIQYMAQsgAyAGaiILIAMgBiAKRiIDGyIGQQA2AgAgCyAHIAMbIQcgBiAEQQFrIgRBAEdBAnRqIQMLIAggCUYNAANAIAhBAnQiCSAGaiINIAMgAyAHRiIKGyILQQA2AgAgCyAEQQFHQQJ0aiILIAMgCWogByAKGyIHRiEDIA0gBiAKGyIGIAlqIgogCyADGyINQQA2AgAgCiAGIAMbIQYgCSALaiAHIAMbIQcgDSAEQQJHQQJ0aiEDIARBAmsiBA0ACwsgAQRAIAEgCEsNBSAAQagBaiAMIAEQ2QELIAJBf0YNByAAKAKMASIBRQ0HIAAoAogBIQAgCEEBRwRAIAFBAnRBBGshBANAIARBAnYgAmoiASAITw0HIAAgBGooAgAiAyAITw0IIAwgA0ECdGogDCABQQJ0aiIBKgIAOAIAIAFBADYCACAEQQRrIgRBfEcNAAsMCAtBACACayECIAFBAnRBBGshBANAIARBAnYgAkcNBiAAIARqKAIADQcgDEEANgIAIARBBGsiBEF8Rw0ACwwHCyAFQgA3AjQgBUKBgICAwAA3AiwgBUHU/cEANgIoIAVBCGogBUEQaiAFQShqQdz9wQAQ+QwACyAFQgA3AjQgBUKBgICAwAA3AiwgBUHU/cEANgIoIAVBGGogBUEgaiAFQShqQdz9wQAQ+QwACyAFQQA2AjggBUEBNgIsIAVBzP7BADYCKCAFQgQ3AjAgBUEoakGsmcIAELgNAAsgBUEANgI4IAVBATYCLCAFQcz+wQA2AiggBUIENwIwIAVBKGpBvJnCABC4DQALIAVBADYCOCAFQQE2AiwgBUGQ+8EANgIoIAVCBDcCMCAFQShqQZj7wQAQuA0ACyAFQQA2AjggBUEBNgIsIAVBzP7BADYCKCAFQgQ3AjAgBUEoakHMmcIAELgNAAsgBUEANgI4IAVBATYCLCAFQcz+wQA2AiggBUIENwIwIAVBKGpB3JnCABC4DQALIAVBQGskAAv8GgIZfQJ/IwBB8ABrIh0kACAdIAEqAhQiCiABKgIIIgeTIhE4AhAgHSABKgIQIgsgASoCBCIJkyITOAIMIB0gASoCDCINIAEqAgAiDJMiFjgCCCAdIAEqAiAiCCAHkyIXOAIcIB0gASoCHCIOIAmTIhg4AhggHSABKgIYIg8gDJMiGTgCFCAdIAIqAgQiBSAJkyISOAIkIB0gAioCACIEIAyTIhA4AiAgHSACKgIIIgYgB5MiFDgCKAJAAn8CQAJAAkACQAJAAkACQCAWIBCUIBMgEpSSIBEgFJSSIhVDAAAAAF8gGSAQlCAYIBKUkiAXIBSUkiISQwAAAABfcUUEQCAdIAUgC5MiEDgCMCAdIAQgDZMiFDgCLCAdIAYgCpMiGjgCNCAZIBSUIBggEJSSIBcgGpSSIhsgFiAUlCATIBCUkiARIBqUkiIQXyAQQwAAAABgcQ0BIB0gBSAOkyIUOAI8IB0gBCAPkyIaOAI4IB0gBiAIkyIcOAJAIBYgGpQgEyAUlJIgESAclJIiEyAZIBqUIBggFJSSIBcgHJSSIhFfIBFDAAAAAGBxDQIgHSAIIAqTIgg4AkwgHSAOIAuTIg44AkggHSAPIA2TIg84AkQgHUHQAGogHUEIaiAdQRRqIB1BxABqIB1BIGogHUEsaiAdQThqIBUgECASIBEgGyATEIkEIB0oAlBBAWsOAwQFBgMLAkACQCAEIAxbDQBBACECIAyLIghDAACAf1sNASAEiyIKQwAAgH9bDQEgDCAEk4siBEMAAAA0Xw0AIAQgCiAIIAggCl0bQwAAADSUX0UNAQsCQCAFIAlbDQBBACECIAmLIgRDAACAf1sNASAFiyIIQwAAgH9bDQEgCSAFk4siBUMAAAA0Xw0AIAUgCCAEIAQgCF0bQwAAADSUX0UNAQtBASECIAYgB1sNAEEAIQIgB4siBUMAAIB/Ww0AIAaLIgRDAACAf1sNAEEBIQIgByAGk4siBkMAAAA0Xw0AIAYgBCAFIAQgBV4bQwAAADSUXyECCyAAQgA3AhAgACACOgAMIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAMCAsCQAJAIAQgDVsNAEEAIQEgDYsiCEMAAIB/Ww0BIASLIgdDAACAf1sNASANIASTiyIEQwAAADRfDQAgBCAHIAggByAIXhtDAAAANJRfRQ0BCwJAIAUgC1sNAEEAIQEgC4siBEMAAIB/Ww0BIAWLIghDAACAf1sNASALIAWTiyIFQwAAADRfDQAgBSAIIAQgBCAIXRtDAAAANJRfRQ0BC0EBIQEgBiAKWw0AQQAhASAKiyIFQwAAgH9bDQAgBosiBEMAAIB/Ww0AQQEhASAKIAaTiyIGQwAAADRfDQAgBiAEIAUgBCAFXhtDAAAANJRfIQELIABCgICAgBA3AhAgACABOgAMIAAgCjgCCCAAIAs4AgQgACANOAIADAcLAkACQCAEIA9bDQBBACEBIA+LIgdDAACAf1sNASAEiyIJQwAAgH9bDQEgDyAEk4siBEMAAAA0Xw0AIAQgCSAHIAcgCV0bQwAAADSUX0UNAQsCQCAFIA5bDQBBACEBIA6LIgRDAACAf1sNASAFiyIHQwAAgH9bDQEgDiAFk4siBUMAAAA0Xw0AIAUgByAEIAQgB10bQwAAADSUX0UNAQtBASEBIAYgCFsNAEEAIQEgCIsiBUMAAIB/Ww0AIAaLIgRDAACAf1sNAEEBIQEgCCAGk4siBkMAAAA0Xw0AIAYgBCAFIAQgBV4bQwAAADSUXyEBCyAAQoCAgIAgNwIQIAAgAToADCAAIAg4AgggACAOOAIEIAAgDzgCAAwGCyAVIB0qAggiCiAKlCAdKgIMIgsgC5SSIB0qAhAiDSANlJKVIQggByANIAiUkiEHIAkgCyAIlJIhCQJAAkAgBCAMIAogCJSSIgxbDQBBACEBIASLIgpDAACAf1sNASAMiyILQwAAgH9bDQEgDCAEk4siBEMAAAA0Xw0AIAQgCiALIAogC14bQwAAADSUX0UNAQsCQCAFIAlbDQBBACEBIAWLIgRDAACAf1sNASAJiyIKQwAAgH9bDQEgCSAFk4siBUMAAAA0Xw0AIAUgBCAKIAQgCl4bQwAAADSUX0UNAQtBASEBIAYgB1sNAEEAIQEgBosiBUMAAIB/Ww0AIAeLIgRDAACAf1sNAEEBIQEgByAGk4siBkMAAAA0Xw0AIAYgBSAEIAQgBV0bQwAAADSUXyEBC0MAAIA/IAiTIQUgAEIBNwIQDAMLIBIgHSoCFCIKIAqUIB0qAhgiCyALlJIgHSoCHCINIA2UkpUhCCAHIA0gCJSSIQcgCSALIAiUkiEJAkACQCAEIAwgCiAIlJIiDFsNAEEAIQEgBIsiCkMAAIB/Ww0BIAyLIgtDAACAf1sNASAMIASTiyIEQwAAADRfDQAgBCAKIAsgCiALXhtDAAAANJRfRQ0BCwJAIAUgCVsNAEEAIQEgBYsiBEMAAIB/Ww0BIAmLIgpDAACAf1sNASAJIAWTiyIFQwAAADRfDQAgBSAEIAogBCAKXhtDAAAANJRfRQ0BC0EBIQEgBiAHWw0AQQAhASAGiyIFQwAAgH9bDQAgB4siBEMAAIB/Ww0AQQEhASAHIAaTiyIGQwAAADRfDQAgBiAFIAQgBCAFXRtDAAAANJRfIQELQwAAgD8gCJMhBSAAQoGAgIAgNwIQDAILIB0qAkQiDCAdKgIslCAdKgJIIgkgHSoCMJSSIB0qAkwiByAdKgI0lJIgDCAMlCAJIAmUkiAHIAeUkpUhCCAKIAcgCJSSIQcgCyAJIAiUkiEJAkACQCAEIA0gDCAIlJIiDFsNAEEAIQEgBIsiCkMAAIB/Ww0BIAyLIgtDAACAf1sNASAMIASTiyIEQwAAADRfDQAgBCAKIAsgCiALXhtDAAAANJRfRQ0BCwJAIAUgCVsNAEEAIQEgBYsiBEMAAIB/Ww0BIAmLIgpDAACAf1sNASAJIAWTiyIFQwAAADRfDQAgBSAEIAogBCAKXhtDAAAANJRfRQ0BC0EBIQEgBiAHWw0AQQAhASAGiyIFQwAAgH9bDQAgB4siBEMAAIB/Ww0AQQEhASAHIAaTiyIGQwAAADRfDQAgBiAFIAQgBCAFXRtDAAAANJRfIQELQwAAgD8gCJMhBSAAQoGAgIAQNwIQDAELAkACQAJAAkAgHSoCWCAdKgJcIgWSIB0qAmAiBJIiBkMAAAAAWwRAIAMNAyAdKgIsIgUgBZQgHSoCMCIFIAWUkiAdKgI0IgUgBZSSIBsgEJMiBSATIAWSIBGTlSIFIAUgDyAPlCAOIA6UkiAIIAiUkpSUkyETIB0qAiAiBCAElCAdKgIkIgQgBJSSIB0qAigiBCAElJIiBiAVIBUgEJOVIgQgBCAdKgIIIhUgFZQgHSoCDCIQIBCUkiAdKgIQIhYgFpSSlJSTIhggBiASIBIgEZOVIgYgBiAdKgIUIhIgEpQgHSoCGCIRIBGUkiAdKgIcIhcgF5SSlJSTIhldDQIgEyAZXg0BIAogCCAFlJIhCCALIA4gBZSSIQcgDSAPIAWUkiEJQQEhAQwECyAdKAJUIR4gHSoCCCEKIB0qAhQhCyAdKgIMIQ0gHSoCGCEOIB0gByAFQwAAgD8gBpUiBpQiBSAdKgIQlJIgBCAGlCIIIB0qAhyUkiIPOAJsIB0gCSAFIA2UkiAIIA6UkiINOAJoIB0gDCAFIAqUkiAIIAuUkiIMOAJkQQAhAQJAAkAgHUHkAGoiAyoCACIEIAIqAgAiBlsNACAEiyIHQwAAgH9bDQEgBosiCUMAAIB/Ww0BIAQgBpOLIgRDAAAANF8NACAEIAkgByAHIAldG0MAAAA0lF9FDQELAkAgAyoCBCIEIAIqAgQiBlsNACAEiyIHQwAAgH9bDQEgBosiCUMAAIB/Ww0BIAQgBpOLIgRDAAAANF8NACAEIAkgByAHIAldG0MAAAA0lF9FDQELQQEhASADKgIIIgQgAioCCCIGWw0AQQAhASAEiyIHQwAAgH9bDQAgBosiCUMAAIB/Ww0AQQEhASAEIAaTiyIEQwAAADRfDQAgBCAJIAcgByAJXRtDAAAANJRfIQELIABDAACAPyAFkyAIkzgCGCAAIB42AhQgAEECNgIQIAAgAToADCAAIA84AgggACANOAIEIAAgDDgCAEEcIQJBIAwFCyAHIAYgF5SSIQggCSAGIBGUkiEHIAwgBiASlJIhCUECIQEgBiEFDAILIBMgGF5FBEAgCiAIIAWUkiEIIAsgDiAFlJIhByANIA8gBZSSIQlBASEBDAILIAcgBCAWlJIhCCAJIAQgEJSSIQcgDCAEIBWUkiEJQQAhASAEIQUMAQsgAEEDNgIQIABBAToADCAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIADAMLIAAgBTgCHCAAIAE2AhQgAEEBNgIQIABBAToADCAAIAg4AgggACAHOAIEIAAgCTgCACAAQwAAgD8gBZM4AhgMAgsgACABOgAMIAAgBzgCCCAAIAk4AgQgACAMOAIAQRghAkEcCyEBIAAgAmogBTgCACAAIAFqIAg4AgALIB1B8ABqJAALuBcCC38bfSMAQfAAayIDJAACQCABLQBQQQFxRQ0AAn0CQAJAAkACQAJAIAEoAgxBAWsiCARAIAEoAkxBAXYiByACSyEGIAEoAiQiCiACQQAgByAGG2siCyAIbiIETQ0BIAsgBCAIbGsiBSABKAIgIglPDQEgASgCGCIMIAQgCWxqIAVqLQAAIQIgA0EIaiABIAUgBBCiAiADKgJUISYgAyoCUCEnIAMqAkwhKCADKgJIIRwgAyoCRCEdIAMqAkAhHiADKgI8ISEgAyoCOCEiIAMqAjQhIyADKAIwIQ0gAyoCLCEZIAMqAighGiADKgIkIRggAyoCICEUIAMqAhwhFyADKgIYIQ4gAyoCFCEbIAMqAhAhJCADKgIMISUgAygCCCEHAkACfQJAAn0CQCAGRQRAQQAhBiANQQFxRQ0NIB4gI5MiEyAnICKTIg+UIB0gIpMiESAoICOTIhKUkyIWIBaUIBEgJiAhkyIVlCAcICGTIhEgD5STIg8gD5QgESASlCATIBWUkyISIBKUkpIiEUMAAIAoXkUNDSACQQFxIQIgFiARkSIRlSEVIBIgEZUhEiAPIBGVIREgB0EBcUUNASAVISAgESEfIBIgDiAlkyIQIBogJJMiDpQgFyAkkyIPIBggJZMiFpSTIhcgF5QgDyAZIBuTIhOUIBQgG5MiDyAOlJMiDiAOlCAPIBaUIBAgE5STIhMgE5SSkiIPQwAAgCheRQ0CGiAXIA+RIg+VISAgDiAPlSEfIBMgD5UMAgtBACEGIAdBAXFFDQwgDiAlkyITIBogJJMiD5QgFyAkkyIRIBggJZMiEpSTIhYgFpQgESAZIBuTIhWUIBQgG5MiESAPlJMiDyAPlCARIBKUIBMgFZSTIhIgEpSSkiIRQwAAgCheRQ0MIANBCGogASAFQQFrIAQQogIgFiARkSIRlSEVIBIgEZUhEiAPIBGVIREgAygCMEEBcUUNAiAVISAgEiEbIBEgAyoCUCADKgI4IhOTIhcgAyoCQCADKgI0Ig+TIhCUIAMqAkQgE5MiDiADKgJMIA+TIhaUkyIUIBSUIAMqAlQgAyoCPCIPkyITIA6UIAMqAkggD5MiDyAXlJMiDiAOlCAPIBaUIBMgEJSTIhMgE5SSkiIPQwAAgCheRQ0DGiAUIA+RIg+VISAgEyAPlSEbIA4gD5UMAwsgFSARQwAAgD9DAACAvyACGyIPIBWUkiIWlCASIBFDAAAAgJQgDyASlJMiE5STIh8gEiAVQwAAAACUIBKTIg+UIBEgFpSTIhYgFpQgHyAflCARIBOUIBUgD5STIhMgE5SSkpEiD5UhHyAWIA+VISAgEyAPlQshGyADQQhqIAEgBUEBaiAEEKICAn0gAygCCEEBcQRAIBUhFiASIRMgESADKgIoIAMqAhAiEJMiGiADKgIYIAMqAgwiDpMiGJQgAyoCHCAQkyIUIAMqAiQgDpMiF5STIhkgGZQgAyoCLCADKgIUIg6TIhAgFJQgAyoCICAOkyIOIBqUkyIUIBSUIA4gF5QgECAYlJMiECAQlJKSIg5DAACAKF5FDQEaIBkgDpEiD5UhFiAQIA+VIRMgFCAPlQwBCyASIBIgFUMAAAAAlCIPkyITlCARIA8gEZMiD5STIhYgFiAWlCAVIA+UIBIgEUMAAAAAlCASQwAAAACUkyIPlJMiDiAOlCARIA+UIBUgE5STIhMgE5SSkpEiD5UhFiATIA+VIRMgDiAPlQshDyACRQ0CDAYLIBIgEowgFUMAAACAlCIPkyITlCARIBEgD5IiD5STIhYgFiAWlCAVIA+UIBIgEkMAAAAAlCARQwAAAICUkiIPlJMiFiAWlCARIA+UIBUgE5STIhMgE5SSkpEiD5UhICATIA+VIRsgFiAPlQshHyACQQFxIQICfSANQQFxBEAgFSEWIBIhEyARIB4gI5MiGCAnICKTIhSUIB0gIpMiDiAoICOTIheUkyIaIBqUIA4gJiAhkyIQlCAcICGTIg4gFJSTIhQgFJQgDiAXlCAYIBCUkyIQIBCUkpIiDkMAAIAoXkUNARogGiAOkSIPlSEWIBAgD5UhEyAUIA+VDAELIBIgEiAVQwAAAACUkyIWlCARQwAAgL9DAACAPyACGyITIBWUIBGTIg+UkyIOIA4gDpQgFSAPlCASIBFDAAAAAJQgEyASlJMiD5STIg4gDpQgESAPlCAVIBaUkyITIBOUkpKRIg+VIRYgEyAPlSETIA4gD5ULIQ8gAkUNBAsCQCAEIAEoAhBBAmtPDQAgA0EIaiABIAUgBEEBaiIBEKICIAEgCk8NAwJ/IAwgASAJbGogBWotAABBAXEEQCADKgJUIRwgAyoCUCEYIAMqAkwhHSADKgJIIR4gAyoCRCEZIAMqAkAhFCADKgI8IRcgAyoCOCEQIAMqAjQhDiADKAIwDAELIAMqAiwhHCADKgIoIRggAyoCJCEdIAMqAiAhHiADKgIcIRkgAyoCGCEUIAMqAhQhFyADKgIQIRAgAyoCDCEOIAMoAggLQQFxRQ0AIBQgDpMiGiAYIBCTIhiUIBkgEJMiECAdIA6TIhSUkyIZIBmUIBAgHCAXkyIQlCAeIBeTIg4gGJSTIhggGJQgDiAUlCAaIBCUkyIQIBCUkpIiDkMAAIAoXkUNBSAZIA6RIg6VIRcgECAOlSEQIBggDpUMBwsgEiASQwAAAACUIBVDAAAAAJSTIheUIBEgFSARQwAAAACUIhCTIg6UkyIUIBQgFJQgFSAOlCASIBAgEpMiDpSTIhQgFJQgESAOlCAVIBeUkyIQIBCUkpKRIg6VIRcgECAOlSEQIBQgDpUMBgtB1MLDABCVDQALIANBADYCGCADQQE2AgwgA0GU1sIANgIIIANCBDcCECADQQhqQaTDwwAQuA0ACyADQQA2AmggA0EBNgJcIANBlNbCADYCWCADQgQ3AmAgA0HYAGpBtMPDABC4DQALIAggC0sNASADQQhqIAEgBSAEQQFrIgEQogIgASAKSQRAAn8gDCABIAlsaiAFai0AAEEBcQRAIAMqAiwhHCADKgIoIRggAyoCJCEdIAMqAiAhHiADKgIcIRkgAyoCGCEUIAMqAhQhFyADKgIQIRAgAyoCDCEOIAMoAggMAQsgAyoCVCEcIAMqAlAhGCADKgJMIR0gAyoCSCEeIAMqAkQhGSADKgJAIRQgAyoCPCEXIAMqAjghECADKgI0IQ4gAygCMAtBAXFFDQIgFCAOkyIaIBggEJMiGJQgGSAQkyIQIB0gDpMiFJSTIhkgGZQgECAcIBeTIhCUIB4gF5MiDiAYlJMiGCAYlCAOIBSUIBogEJSTIhAgEJSSkiIOQwAAgCheRQ0BIBkgDpEiDpUhFyAQIA6VIRAgGCAOlQwDCyADQQA2AmggA0EBNgJcIANBlNbCADYCWCADQgQ3AmAgA0HYAGpBxMPDABC4DQALIBUhFyASIRAgEQwBCyASIBVDAAAAAJQgEkMAAACAlJIiF5QgESAVjCARQwAAAICUIhCTIg6UkyIUIBQgFJQgFSAOlCASIBIgEJIiDpSTIhQgFJQgESAOlCAVIBeUkyIQIBCUkpKRIg6VIRcgECAOlSEQIBQgDpULIQ4gACAVOAIMIAAgEjgCCCAAIBE4AgQgFSAXkkMAAAA/lCIXIBeUIBIgEJJDAAAAP5QiECAQlCARIA6SQwAAAD+UIg4gDpSSkpEhFCAAIBcgFJU4AjAgACAQIBSVOAIsIAAgDiAUlTgCKCAWIBWSQwAAAD+UIhYgFpQgEyASkkMAAAA/lCITIBOUIA8gEZJDAAAAP5QiDyAPlJKSkSEOIAAgFiAOlTgCJCAAIBMgDpU4AiAgACAPIA6VOAIcICAgFZJDAAAAP5QiDyAPlCAbIBKSQwAAAD+UIhUgFZQgHyARkkMAAAA/lCIRIBGUkpKRIRIgACAPIBKVOAIYIAAgFSASlTgCFCAAIBEgEpU4AhBBASEGCyAAIAY2AgAgA0HwAGokAAuvFwIDfgZ/IwBBEGsiCSQAIAlBBGogACgCACAAKAIEIgAoAghBAWtBeHFqQQhqIAAoAqQBEQAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJKAIEQQFrDhMBAgMEBQYHCAkKCwwNDg8QERITAAsgASABKQMAQgh8NwMAQQAhAAwTCyABIAEpAwBCEHw3AwBBACEADBILIAEgASkDAEIgfDcDAEEAIQAMEQsgASABKQMAQhx8NwMAQQAhAAwQCyABIAEpAwBCKHw3AwBBACEADA8LIAEpAwAhAiAJKAIIIgUoAggiAAR+IAIgAEEGdEFAaq18QswAfAUgAkIMfAshAiAFKAIUIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIgIgdFDQAgBSgCHCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgBSgCNCIABH4gAEEBa61CHH4hAyAFKAIoIgApAwBCgIGChIiQoMCAf4NCgIGChIiQoMCAf1EEQCAAQQhqIQADQCAAKQMAIQQgAEEIaiEAIARCgIGChIiQoMCAf4NCgIGChIiQoMCAf1ENAAsLIAIgA3xCJHwFIAJCCHwLIQIgBSgCSCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQIgBSgCVCIABH4gAiAAQQl0QYAEa618QogEfAUgAkIIfAshAiABIAUoAmAiAAR+IAIgAEEBa0H/////A3GtQgOGfEIQfAUgAkIIfAtCDHw3AwBBACEADA4LIAEpAwAhAiAJKAIIIgUoAggiAAR+IAIgAEEGdEFAaq18QswAfAUgAkIMfAshAiAFKAIUIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIgIgdFDQAgBSgCHCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgBSgCMCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQIgBSgCPCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQICfiAFKAJAQYCAgIB4RwRAIAUoAlQhACAFKAJIIgYEfiACIAZBDGxBDGtBDG6tQgx+fEIVfAUgAkIJfAsiA0IIfCAARQ0BGiAAQSRsQSRrQSRurUIkfiADfEIsfAwBCyACQgF8CyECAkAgBSgCWEGAgICAeEcEQCAFKAJgIgAEfiACIABBAnRBBGutfEINfAUgAkIJfAshAiAFKAJsIgAEfiACIABBAnRBBGutfEIMfAUgAkIIfAsiA0IIfCECIAUoAngiAEUNASADIABBBHRBEGutfEIYfCECDAELIAJCAXwhAgsCQCAFKAJ8QYCAgIB4RwRAIAUoAoQBIgAEfiACIABBAnRBBGutfEINfAUgAkIJfAshAiAFKAKQASIABH4gAiAAQQJ0QQRrrXxCDHwFIAJCCHwLIgJCCHwhAyAFKAKcASIARQ0BIAIgAEEBa0H/////A3GtQgOGfEIQfCEDDAELIAJCAXwhAwsgASADQgJ8NwMAQQAhAAwNCyABKQMAIQIgCSgCCCIFKAIIIgAEfiACIABBBnRBQGqtfELMAHwFIAJCDHwLIQIgBSgCFCIABH4gAiAAQQFrQf////8Dca1CA4Z8QhB8BSACQgh8C0IQfCECAkAgBSgCICIHRQ0AIAUoAhwhBiAHQQFrQf////8BcSEKAkAgB0EHcSIIRQRAIAYhAAwBCyAGIQADQEIJQgEgACgCABsgAnwhAiAAQQhqIQAgCEEBayIIDQALCyAKQQdJDQAgBiAHQQN0aiEGA0BCCUIBIAAoAgAbIAJ8QglCASAAQQhqKAIAG3xCCUIBIABBEGooAgAbfEIJQgEgAEEYaigCABt8QglCASAAQSBqKAIAG3xCCUIBIABBKGooAgAbfEIJQgEgAEEwaigCABt8QglCASAAQThqKAIAG3whAiAGIABBQGsiAEcNAAsLIAUoAjAiAAR+IAIgAEEMbEEMa0EMbq1CDH58QhR8BSACQgh8CyECIAEgBSgCPCIABH4gAiAAQQN0QQhrrXxCEHwFIAJCCHwLNwMAQQAhAAwMCyABIAEpAwBCEHw3AwBBACEADAsLIAEpAwAhAiAJKAIIIgAoAggiBgR+IAIgBkECdEEEa618QhB8BSACQgx8CyECIAEgACgCHCIGBH4gAiAAKAIYIgAgBmogAEF/c2qtfEIZfAUgAkIYfAtCPXw3AwBBACEADAoLIAEgASkDAEIMfCICNwMAIAkoAggiBUEIaigCACIABEAgBUEEaigCAEEcaiEIIABBJGwhBgNAIAEgASkDAEIcfDcDACAIIAEQVCIADQsgCEEkaiEIIAZBJGsiBg0ACyABKQMAIQILIAUoAhQiAAR+IAIgAEEGdEFAaq18QsgAfAUgAkIIfAshAiAFKAIgIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIsIgdFDQAgBSgCKCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgASAFQTxqKAIAIgAEfiACIABBGGxBGGtBGG6tQhh+fEIgfAUgAkIIfAtCGHw3AwBBACEADAkLIAEgASkDAEIEfDcDACAJKAIIIAEQmAUhAAwICyABIAEpAwBCDHw3AwBBACEADAcLIAEgASkDAEIMfDcDAEEAIQAMBgsgASABKQMAQhR8NwMAQQAhAAwFCyABIAEpAwBCLHw3AwBBACEADAQLIAEgASkDAEIQfDcDAEEAIQAMAwsgASABKQMAQhB8NwMAQQAhAAwCCyABIAEpAwBCBHw3AwAgCSgCCCABEJgFIgANASABIAEpAwBCBHw3AwBBACEADAELQThBARCzDiIBRQ0BIAFBMGpB6LvBACkAADcAACABQShqQeC7wQApAAA3AAAgAUEgakHYu8EAKQAANwAAIAFBGGpB0LvBACkAADcAACABQRBqQci7wQApAAA3AAAgAUEIakHAu8EAKQAANwAAIAFBuLvBACkAADcAAEEMQQQQsw4iAEUNAiAAQTg2AgggACABNgIEIABBODYC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IJSTkiAhICeUkzgCyAEgCCAmICCUICMgH5SSICIgJ5STICEgJZSTOALEASAIICEgIJQgJiAllCAjICeUkyAiIB+Uk5I4AsABICIgByoCECABKgIQkyIllCAjIAcqAhQgASoCFJMiJ5STIh8gH5IhHyAhICeUICIgByoCGCABKgIYkyIklJMiICAgkiEgIAggJCAmIB+UICIgIJQgIyAjICSUICEgJZSTIiQgJJIiJJSTkpI4AtgBIAggJyAmICSUICMgH5QgISAglJOSkjgC1AEgCCAlICYgIJQgISAklCAiIB+Uk5KSOALQAQwCCyAJIAdBoO3BABCICwALIAhBwAFqIgFBGGogB0EYaigCADYCACABQRBqIAdBEGopAgA3AwAgAUEIaiAHQQhqKQIANwMAIAggBykCADcDwAELIAogCEHAAWogAiADIAAoAiQgACgCKCAEIAVBACAIIAAoAiwqAgAgCSAGKAIoERIAGgwBCyAAKAIgIQcCQCABBEAgCCAHKgIMIiYgASoCDCIflCAHKgIAIiEgASoCACIglJMgByoCBCIiIAEqAgQiJZSTIAcqAggiIyABKgIIIieUkzgCzAEgCCAjIB+UICEgJZQgJiAnlJIgIiAglJOSOALIASAIICMgIJQgIiAflCAmICWUICEgJ5STkpI4AsQBIAggIiAnlCAmICCUICEgH5SSkiAjICWUkzgCwAEgISABKgIUIiWUICIgASoCECInlJMiHyAfkiEfICMgJ5QgASoCGCIkICGUkyIgICCSISAgCCAHKgIYICQgJiAflCAhICCUICIgIiAklCAjICWUkyIkICSSIiSUk5KSkjgC2AEgCCAHKgIUICUgJiAglCAjICSUICEgH5STkpKSOALUASAIIAcqAhAgJyAmICSUICIgH5QgIyAglJOSkpI4AtABDAELIAhBwAFqIgFBGGogB0EYaigCADYCACABQRBqIAdBEGopAgA3AwAgAUEIaiAHQQhqKQIANwMAIAggBykCADcDwAELIAogCEHAAWogACgCJCAAKAIoIAIgA0EAIAggBCAFIAAoAiwqAgAgCSAGKAIoERIAGgsgCEHgAWokAAuKGAMGfx19AX4jAEHgAmsiCyQAAkACQCAKRQRAIAkgABD/Ag0CDAELIAkgARD/Ag0BCyALIAIgAyAAEM0BAkAgCyoCACIr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ArQDIAtBBToA9AMgCyALQaADajYC/AMgCyALQcADajYC+AMgASAKIAtB+ANqQYyUwwAgDRECACALQfACaiIKQQhqIhAgD0EIaikCADcDACAKQRBqIhogD0EQaikCADcDACAKQRhqIhIgD0EYaikCADcDACAKQSBqIhMgD0EgaikCADcDACAKQShqIhQgD0EoaikCADcDACALQe4CaiIbIBdBAmotAAA6AAAgCyAPKQIANwPwAiALIBcvAAA7AewCAkAgCy0A9AMiCkEFRg0AIAsqAsADIQggC0GAAmoiDUEoaiIcIBQpAwA3AwAgDUEgaiIUIBMpAwA3AwAgDUEYaiITIBIpAwA3AwAgDUEQaiISIBopAwA3AwAgDUEIaiINIBApAwA3AwAgC0H+AWoiECAbLQAAOgAAIAsgCykD8AI3A4ACIAsgCy8B7AI7AfwBIApBBEYNACAIIAldRQ0AIAtByAFqIg5BKGogHCkDADcDACAOQSBqIBQpAwA3AwAgDkEYaiATKQMANwMAIA5BEGogEikDADcDACAOQQhqIA0pAwA3AwAgC0HGAWogEC0AADoAACALIAspA4ACNwPIASALIAsvAfwBOwHEASACKAIMIRkgCCIhIQkgCiEOCwsgCSAfXkUNAyAfQ///f39bDQMgESgCHEH/////A3FBAUYNAQsgESgCDCEMDAMLQQAhAgsgESgCDCEKIAsgBzYCsAMgCyAGNgKsAyALIAU2AqgDIAsgBDYCpAMgCyADNgKgAyAeKAIAIQ0gCyALQRNqNgK8AyALIAtBDGo2ArgDIAsgC0EIajYCtAMgC0EFOgD0AyALIAtBoANqNgL8AyALIAtBwANqNgL4AyABIAogC0H4A2pBjJTDACANEQIAIAtB8AJqIgpBCGoiECAPQQhqKQIANwMAIApBEGoiGiAPQRBqKQIANwMAIApBGGoiEiAPQRhqKQIANwMAIApBIGoiEyAPQSBqKQIANwMAIApBKGoiFCAPQShqKQIANwMAIAtB7gJqIhsgF0ECai0AADoAACALIA8pAgA3A/ACIAsgFy8AADsB7AICQAJAIAstAPQDIgpBBUYNACALKgLAAyEIIAtBuAJqIg1BKGoiHCAUKQMANwMAIA1BIGoiFCATKQMANwMAIA1BGGoiEyASKQMANwMAIA1BEGoiEiAaKQMANwMAIA1BCGoiDSAQKQMANwMAIAtBtgJqIhAgGy0AADoAACALIAspA/ACNwO4AiALIAsvAewCOwG0AiAKQQRGDQAgCCAJXQ0BCyACRQ0BDAILIAtByAFqIg5BKGogHCkDADcDACAOQSBqIBQpAwA3AwAgDkEYaiATKQMANwMAIA5BEGogEikDADcDACAOQQhqIA0pAwA3AwAgC0HGAWogEC0AADoAACALIAspA7gCNwPIASALIAsvAbQCOwHEASARKAIMIRkgCCIhIQkgCiEOIAINAQsgFiEMIB0hAiALKALAASIKQSFPBEAgCygCQCEKIAsoAkQhDCAWIQILIApFDQIgAiAKQQFrIgI2AgAgDCACQQJ0aigCACEMCyAMIBhJDQALIAwgGEHI68IAEIgLAAsgDkH/AXFBBEcEQCAAIAspA8gBNwIIIAAgCy8BxAE7ADkgACAOOgA4IAAgITgCBCAAIBk2AgAgAEEwaiALQcgBaiIBQShqKQMANwIAIABBKGogAUEgaikDADcCACAAQSBqIAFBGGopAwA3AgAgAEEYaiABQRBqKQMANwIAIABBEGogC0HQAWopAwA3AgAgAEE7aiALQcYBai0AADoAAAwCCyAAQQQ6ADgMAQsgC0EkaiAVEKoFIAldRQRAIABBBDoAOAwBCyAVKAIMIQogCyAHNgKQAiALIAY2AowCIAsgBTYCiAIgCyAENgKEAiALIAM2AoACIAJBDGooAgAhAiALIAtBE2o2ApwCIAsgC0EMajYCmAIgCyALQQhqNgKUAiALQQU6APQDIAsgC0GAAmo2AswBIAsgC0HAA2oiAzYCyAEgASAKIAtByAFqQYyUwwAgAhECACALQfACaiIBQQhqIgQgA0EMaikCADcDACABQRBqIgMgC0HUA2opAgA3AwAgAUEYaiIFIAtB3ANqKQIANwMAIAFBIGoiBiALQeQDaikCADcDACABQShqIgcgC0HsA2opAgA3AwAgC0GiA2oiCiALQfcDai0AADoAACALIAspAsQDNwPwAiALIAsvAPUDOwGgAwJAIAstAPQDIgFBBUcEQCALKgLAAyEIIAtBuAJqIgJBKGogBykDADcDACACQSBqIAYpAwA3AwAgAkEYaiAFKQMANwMAIAJBEGogAykDADcDACACQQhqIAQpAwA3AwAgC0H6A2ogCi0AADoAACALIAspA/AC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AH4iRUIgiEIAUgRAQQBBAEHA0sEAENMNAAsCQCBFpyIfQfz///8HTQR/IAMgBgR/IAMgBkH0AGw2AhwgAyASKAIENgIUQQQFQQALNgIYIANBCGpBBCAfIANBFGoQ9AkgAygCCEEBRw0BIAMoAhAhCSADKAIMBUEACyAJQcDSwQAQ0w0ACyADKAIMIQkgEiAUNgIAIBIgCTYCBCADQSBqJAALIAEoAkQgBEH0AGxqIgMgCjYCBCADIAw2AgAgAyAFKQIANwIIIANBEGogGCkCADcCACADICA4AiAgAyAjOAIcIAMgITgCGCADIAIpA7gDNwIkIANBLGogGigCADYCACADQThqIBsoAgA2AgAgAyACKQP4AjcCMCADIA4pAgA3AjwgA0HEAGogBykCADcCACADQcwAaiALKQIANwIAIANB1ABqIA8pAgA3AgAgA0HcAGogFSkCADcCACADQeQAaiATKQIANwIAIANB7ABqIBkpAgA3AgAgASAEQQFqNgJIIAJB+AJqIQdDAAAAACEhIAJBwAJqIgMqAiAhIyADKgIcISAgAyoCJCEiAkACQCABKgIkIiQgJJQgASoCKCInICeUkiABKgIsIiggKJSSIitDAAAAAFwEQCAgICCUICMgI5SSICIgIpSSIilDAAAAAFwNAQsgJCAglCAnICOUkiAoICKUkiEjDAELQwAAgL9DAACAPyAkICCUICcgI5SSICggIpSSIiMgK5EgKZGUlSIgICBDAACAP14bICBDAACAv10bELkPISELIAcgAykCADcCACAHQQhqIANBCGopAgA3AgAgB0EQaiADQRBqKQIANwIAIAdBGGogA0EYaikCADcCACAHQSBqIANBIGopAgA3AgAgB0EoaiADQShqKQIANwIAIAdBMGogA0EwaikCADcCACAHICEgASoCNF86ADkgByAjQwAAAABdQX9zICEgASoCMGBxOgA4IAJBuANqIgMgAkHIAGpBxAD8CgAAIAJBgARqIgRBCGogGCkCADcDACAFKQIAIUUgAiAmIAIqAqgBkjgCmAQgAiAsIAIqAqQBkjgClAQgAiAlIAIqAqABkjgCkAQgAiBFNwOABCACQbABaiELIAJBuAFqIQkgAkGgAWohD0EAIRUjAEGAAmsiBiQAAkAgASgCCCITQQJGDQAgBy0AOEEBRw0AIAsqAgQhIyAB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AkG4AWoQYzoArAEgHkUNBEEBIQMgAioCuAEiIyAjlCACKgK8ASIgICCUkiACKgLAASIhICGUkiIiQ/7m2y5eDQEMBAsLIANBAXENAiACKgKoASEiIAIqAqQBISMgAioCoAEhIAwBCyACKgK8ASEjIAIqArgBISAgAkIANwO4ASACKgLAASEhIAJBADYCwAEgAiAgIAIqAqABkiIgOAKgASACICMgAioCpAGSIiM4AqQBIAIgISACKgKoAZIiITgCqAEgAkG4A2oiA0EIaiAFQQhqKQIANwMAIAIgBSkCADcDuAMgAiAmICGSOALQAyACICwgI5I4AswDIAIgJSAgkjgCyAMgAiABIDAgAkHIAGogCCANIAMgAkGwAWpBAEEAEGM6AKwBDAELIAJBuANqIgNBCGogBUEIaikCADcDACACIAUpAgA3A7gDIAIgJiAikjgC0AMgAiAsICOSOALMAyACICUgIJI4AsgDIAIgASAwIAJByABqIAggDSADIAJBsAFqQQBBABBjOgCsAQsgHQRAIAJB4AFqIgxBCGogBUEIaikCADcDACAFKQIAIUUgAiAlIAIqAqABkjgC8AEgAiAsIAIqAqQBkjgC9AEgAiAmIAIqAqgBkjgC+AEgAiBFNwPgASACQbgDaiEEIAJByABqIQYgAkGwAWohBSACQaABaiEJIwBB4ABrIgMkAAJAAkAgASgCHCIHQQJGDQAgCSoCACIlIAEqAiQiI5QgCSoCBCIkIAEqAigiIJSSIAkqAggiJyABKgIsIiGUkkOsxSe3XUUNACABKgIgISIgASgCACEOIAEqAgQhJiAFKgIEISwgAyAhjDgCUCADICCMOAJMIAMgI4w4AkggA0GAAjsBXCADICYgLCAmlCAOGzgCWCADICIgIiAslCAHQQFxGzgCVCADQQhqIgEgBiAMIANByABqIAggDSADQdQAahByIAMtAERBBEYNACAJQQE6AAwgBCADKQIINwIAIARBCGogAUEIaiIMKQIANwIAIARBEGogAUEQaikCADcCACAEQRhqIAFBGGopAgA3AgAgBEEgaiABQSBqKQIANwIAIARBKGogAUEoaikCADcCACAEQTBqIAFBMGopAgA3AgAgBEE4aiABQThqKQIANwIAIAkgJyAhIAwqAgAiIZSTOAIIIAkgJCAgICGUkzgCBCAJICUgIyAh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QyACQSU7AEEgAkEANgJEIAJBAToAQCACQUBrEKINDA4LIAEoADghICADIAVBQGoiBDYCBCADIAFBQGs2AgAgBEEESQ0LIAEoADwhISADIAVBxABrIgQ2AgQgAyABQcQAajYCACAEQQRJDQwgASgAQCEiIAMgBUHIAGsiBDYCBCADIAFByABqNgIAIARBBEkEQCACQQA6AEMgAkElOwBBIAJBADYCRCACQQE6AEAgAkFAaxCiDQwOCyABKABEISMgAyAFQcwAazYCBCADIAFBzABqNgIAIAEoAEghJCACQUBrIQEjAEHQAWsiAyQAQRghBAJAIAJBCGoiBSgCBCIIRQRAQQIhBQwBCyAFIAhBAWs2AgQgBSgCACEFIANBBjYCICADIAU2AhwgA0EkaiADQRxqEIcDIAECfyADLQA8IghBA0YEQCADKAIkDAELAkACQAJAIAhBAkcEQCADQUBrIANBHGoQhwMgAy0AWCIKQQNGBEAgAygCQAwFCyAKQQJGDQEgA0HcAGogA0EcahCHAyADLQB0IgtBA0YEQCADKAJcDAULIAtBAkYNAiADQfgAaiADQRxqEIcDIAMtAJABIgdBA0YEQCADKAJ4DAULIAdBAkYNAyADQZQBaiADQRxqEIcDIAMtAKwBIg1BA0YEQCADKAKUAQwFCwJAAkACQCANQQJHBEAgA0GwAWogA0EcahCHAyADLQDIASIFQQJrDgICAQMLQQQgA0HPAWpBuMvBABC+CgwHCyADKAKwAQwGC0EFIANBzwFqQbjLwQAQvgoMBQsgASADKQKwATcCjAEgASADLwDJATsApQEgASADKQIoNwIEIAFBnAFqIANBsAFqIgRBEGopAgA3AgAgAUGUAWogBEEIaikCADcCACABQacBaiADQcsBai0AADoAACABQQxqIANBJGoiBEEMaikCADcCACABQRRqIARBFGooAgA2AgAgAygCJCEEIANBAmogA0E9aiIGQQJqLQAAOgAAIANBE2ogA0FAayIJQRBqKQIANwAAIANBC2ogCUEIaikCADcAACABQTdqIANB2QBqIglBAmotAAA6AAAgASAJLwAAOwA1IAFByABqIANB3ABqIglBEGopAgA3AgAgAUFAayAJQQhqKQIANwIAIAEgAykCXDcCOCADIAYvAAA7AQAgAyADKQJANwADIAFB0wBqIANB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ACARIBQpAgA3AgAgEUEIaiAUQQhqKAIANgIAIBAgEykCADcCACAQQQhqIBNBCGooAgA2AgAgA0HQBWogDBCSAiADKALQBQ0MIA4gBCICRw0ACwsgAUEANgL0AQJAIAEoAoQDQQFHDQAgA0HQBWogHxCSAiADKALQBUEBRw0AIANB8AJqIApBCGooAgA2AgAgAyAKKQIANwPoAgwNCyABQQA2AoQDDAELCyABQQA2ArwBIAUgAkECdEEEEIgPCyABQQI2AjAgBiADQfgCakHAAfwKAAALIAFBAjYC9AEgDCADQRRqQdQC/AoAAAJAIAEoAswEIgRBAkYNAAJAIARBAXFFDQAgA0H4AmogFxCSAiADKAL4AkUNACADQfACaiAIQQhqKAIANgIAIAMgCCkCADcD6AIMCgsCQCABKALsBiINRQ0AIAEoApwHIgIgASgCoAciDk4NACABKALwBiEPIAEoApgHIQkgASgChAchByABKAL4BiEFA0AgASACQQFqIgQ2ApwHIAEgDzYCpAUgASANNgKgBSABQQA2AvgEIAFCATcCzAQgASACNgLABSABIAk2AtAFIAEgBTYC1AUgASAHNgLYBSAbIB4pAgA3AgAgG0EIaiAeQQhqKAIANgIAIBogHSkCADcCACAaQQhqIB1BCGooAgA2AgAgGSAcKQIANwIAIBlBCGogHEEIaigCADYCACADQfgCaiAXEJICIAMoAvgCDQogDiAEIgJHDQALCyABQQA2AswEIAEoAtwFQQFHDQAgA0H4AmogIBCSAiADKAL4AkEBRw0AIANB8AJqIAhBCGooAgA2AgAgAyAIKQIANwPoAgwJCyABQQI2AswEIBcgA0EUakHUAvwKAAACQCABKAIwIgZBA0YNACAGQQJGDQAgCygCACIGQSFJDQAgASgCOCAGQQJ0QQQQiA8LIAFBAzYCMAsgASgCGEEBRg0BQQAMAgsgA0HwAmogCEEIaigCADYCACADIAgpAgA3A+gCDAYLIAEoAhwiBiABKAIgRwRAQQEhAiABIAZBAWo2AhwgASAGQQJ0aigCJCEBDAcLIAFBADYCGEEACyECDAULQQEhAiABIAVBAWo2AgQgFiAFQQJ0aigCACEBDAQLIAUgBEHQqcEAEIgLAAsgA0HwAmogCkEIaigCADYCACADIAopAgA3A+gCDAELIANB8AJq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IAEgBEEYaikDADcDmAEgASAEQRBqKQMANwOQASABIARBCGopAwA3A4gBIAEgBEEoaikDADcDqAEgASAEQTBqKQMANwOwASABIARBOGopAwA3A7gBIAEoAgwiAiABKAIERgRAIAFBBGpBiOzCABDICAsgASgCCCACQQZ0aiIDIAEpA4ABNwMAIANBIGogASkDoAE3AwAgA0EYaiABKQOYATcDACADQRBqIAEpA5ABNwMAIANBCGogASkDiAE3AwAgA0EoaiABKQOoATcDACADQTBqIAEpA7ABNwMAIANBOGogASkDuAE3AwAgASACQQFqNgIMIAEoAhgiAiABKAIQRgRAIA1BmOzCABC5CAsgASgCFCACQQJ0akEANgIAIAEgAkEBajYCGAJAIAEoAiQiAkUNACABKAIgIgMoAgBBAUcNACADQQA2AgQCQCACQQFGDQAgAygCCEUNACADQQE2AgwMBAtBqN3CAEEPQbjswgAQ1wsAC0Go3cIAQQ9BqOzCABDXCwALIAEgBCkDADcDgAEgASAEQRhqKQMANwOYASABIARBEGopAwA3A5ABIAEgBEEIaikDADcDiAEgASgCDCICIAEoAgRGBEAgAUEEakHY68IAEMgICyABKAIIIAJBBnRqIgMgASkDgAE3AwAgA0IANwMgIANBGGogASkDmAE3AwAgA0EQaiABKQOQATcDACADQQhqIAEpA4gBNwMAIANBKGpCADcDACADQTBqQgA3AwAgA0E4akIANwMAIAEgAkEBajYCDCABKAIYIgIgASgCEEYEQCANQejrwgAQuQgLIAEoAhQgAkECdGpBADYCACABIAJBAWo2AhgCQCABKAIkRQ0AIAEoAiAiAigCAEEBRw0AIAJBADYCBAwCC0Go3cIAQQ9B+OvCABDXCwALIAEoAgQgASgCDCICayAHSQRAIAFBBGogAiAHQcAAQcAAEOMGCyABKAIQIAEoAhgiAmsgB0kEQCABQRBqIAIgB0EEQQQQ4wYLQQAhBSABQQA2AhggASgCDCICIAEoAgRGBEAgAUEEakHI7MIAEMgIIAEoAhghBQsgASgCCCACQQZ0aiIDQgA3AwAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0EIakIANwMAIANBKGpCADcDACADQTBqQgA3AwAgA0E4akIANwMAIAEgAkEBajYCDCABKAIQIAVGBEAgDUHY7MIAELkICyABKAIUIAVBAnRqQQA2AgAgASAFQQFqNgIYIAFBBGoiAkEAIAQgFxA6IAIgAUEsahDdAQsgAUGAAWoiA0EgaiABQQRqIgJBIGopAgA3AwAgA0EYaiACQRhqKQIANwMAIANBEGogAkEQaikCADcDACADQQhqIAJBCGopAgA3AwAgASABKQIENwOAASABQSxqELsJIAAoAgAiAgRAIAAoAgQgAkEGdEHAABCIDwsgACgCDCICBEAgACgCECACQQJ0QQQQiA8LIAAoAhgiAgRAIAAoAhwgAkEDdEEEEIgPCyAAIAEpA4ABNwIAIABBIGogAUGAAWoiAkEgaikDADcCACAAQRhqIAJBGGopAwA3AgAgAEEQaiACQRBqKQMANwIAIABBCGogAkEIaikDADcCACATJAALzQ8CJX8CfSMAQSBrIgUkACABKAIQIh4gASgCDCIKIAogHksbIhBBA3QhBwJAAkAgEEH/////AUsNACAHQfz///8HSw0AAkAgB0UEQEEEIRkMAQtBBCEDIBAhJCAHQQQQsw4iGUUNAQsgEEUNASAHBEAgGUEAIAf8CwALIApBAWshGiAKQQNqISEgCkEDdCEiIApBAmshGyABKAIEIhYgCkECdCIUQQRqIh9qISUgFkEEaiEmAkACQANAIBwiDCAQIAwgEEsbIRcgCiAMayEgIBYgDEECdGohAiAMIB9sIgcgJWohAyAHICZqIQtBACEGA0AgBiENIAshByADIREgAiEEIBwiCCAXRgRAIBAhCQwGCyAIQQJ0IhggFiAIIApsQQJ0aiIOaiESQQAhCQJAAkACQCAKIAhrIiMOAgACAQsgBUEANgIYIAVBATYCDCAFQeCDwgA2AgggBUIENwIQIAVBCGpB6IPCABC4DQALIBIqAgCLIShBASECIAchAwNAIAIgCSADKgIAiyInICheIhwbIQkgJyAoIBwbISggA0EEaiEDICAgAkEBaiICRw0ACwsgCCAJaiIPIApPDQMgCEEBaiEcIARBBGohAiARIB9qIQMgIEEBayEgIAcgH2ohCyANQQFqIQYgD0ECdCITIA5qIhUqAgAiJ0MAAAAAWw0ACyAJRQRAIAhBf3MiCCAKaiIJRQ0BQwAAgD8gJ5UhJyAJQQNxIQtBACECIBsgDCANaiIVa0EDTwRAQQAhA0EAIBogDGsgDWtBfHFrIQYgByECA0AgAiAnIAIqAgCUOAIAIAJBBGoiBCAnIAQqAgCUOAIAIAJBCGoiBCAnIAQqAgCUOAIAIAJBDGoiBCAnIAQqAgCUOAIAIAJBEGohAiAGIANBBGsiA0cNAAtBACADayECCyAIIB5qIRMgCwRAIAcgAkECdGohAiAhIAxrIA1rQQNxIQMDQCACICcgAioCAJQ4AgAgAkEEaiECIANBAWsiAw0ACwsgE0UNASASQQRqIRcgEiAUaiIYQQRqIQ4gCUEBcSEIQQAhD0EAIBogDGsgDWtBfnFrIQsDQCAKIA9sQQJ0IgYgGGoqAgAhJ0EAIQIgFSAbRwRAQQAhCSAHIQMgESECA0AgAiACKgIAICcgAyoCAJSTOAIAIAJBBGoiBCAEKgIAICcgA0EEaioCAJSTOAIAIANBCGohAyACQQhqIQIgCyAJQQJrIglHDQALQQAgCWshAgsgCARAIAJBAnQiAyAGIA5qaiICIAIqAgAgJyADIBdqKgIAlJM4AgALIBEgFGohESATIA9BAWoiD0cNAAsMAQsgECAdTQ0BIBkgHUEAIBBBAUcbQQN0aiICIA82AgQgAiAINgIAAkAgCEUNAEEAIQNBASAMayANRwRAIAhBfnEhDiATIBZqIQIDQCAEKAIAIQYgBCACKAIANgIAIAIgBjYCACAEIBRqIgYoAgAhCyAGIAIgFGoiBigCADYCACAGIAs2AgAgBCAiaiEEIAIgImohAiAOIANBAmoiA0cNAAsLIAhBAXFFDQAgFiADIApsQQJ0aiIEIBhqIgIoAgAhAyACIAQgE2oiAigCADYCACACIAM2AgALIAkgI0kEQEMAAIA/ICeVIScgEigCACECIBIgFSgCADYCACAVIAI2AgAgI0EBayIOQQNxIQtBACECIBsgDCANaiITa0EDTwRAQQAhA0EAIBogDGsgDWtBfHFrIQYgByECA0AgAiAnIAIqAgCUOAIAIAJBBGoiBCAnIAQqAgCUOAIAIAJBCGoiBCAnIAQqAgCUOAIAIAJBDGoiBCAnIAQqAgCUOAIAIAJBEGohAiAGIANBBGsiA0cNAAtBACADayECCyAeIAhBf3NqIQ8gCwRAIAcgAkECdGohAiAhIAxrIA1rQQNxIQMDQCACICcgAioCAJQ4AgAgAkEEaiECIANBAWsiAw0ACwsgHUEBaiEdIA9FDQEgEkEEaiEVIBIgFGoiF0EEaiEYIA5BAXEhDkEAIQZBACAaIAxrIA1rQX5xayEIA0AgBiAKbEECdCICIBdqIgMqAgAhJyADIAIgGGoiDSAJQQJ0akEEayICKAIANgIAIAIgJzgCACADKgIAISdBACECIBMgG0cEQEEAIQsgByEDIBEhAgNAIAIgAioCACAnIAMqAgCUkzgCACACQQRqIgQgBCoCACAnIANBBGoqAgCUkzgCACADQQhqIQMgAkEIaiECIAggC0ECayILRw0AC0EAIAtrIQILIA4EQCACQQJ0IgMgDWoiAiACKgIAICcgAyAVaioCAJSTOAIACyARIBRqIREgDyAGQQFqIgZHDQALDAELCyAFQQA2AhggBUEBNgIMIAVBiILCADYCCCAFQgQ3AhAgBUEIakGQgsIAELgNAAsgBUEANgIYIAVBATYCDCAFQaCEwgA2AgggBUIENwIQIAVBCGpBqITCABC4DQALIAVBADYCGCAFQQE2AgwgBUHM/sEANgIIIAVCBDcCECAFQQhqQbyFwgAQuA0ACyADIAdB8N3BABDTDQALIAAgHTYCJCAAIAk2AiAgACAJNgIcIAAgGTYCGCAAICQ2AhQgACABKQIANwIAIABBEGogAUEQaigCADYCACAAQQhqIAFBCGopAgA3AgAgBUEgaiQAC+sPAhd9CH8jAEFAaiIZJAAgASgCBCEbAkAgASgCCCIcIAAoApgHIgFNBEAgGUEQakIANwMAIBlBCGpCADcDACAZQgA3AwAMAQsgGUEQaiAbIAFBGGxqIgFBEGopAgA3AwAgGUEIaiABQQhqKQIANwMAIBkgASkCADcDAAsCQCAAKAKcByIBIBxPBEAgGUEoakIANwMAIBlBIGpCADcDACAZQgA3AxgMAQsgGUEYaiIaQRBqIBsgAUEYbGoiAUEQaikCADcDACAaQQhqIAFBCGopAgA3AwAgGSABKQIANwMYCwJAAkAgAC0ApAciGkEFSQRAIBkqAhghBSAZKgIAIQMgGkUNAiAAKgIMIRQgACoCECEHIAAqAhQhCCAAKgIYIQkgACoCHCEKIAAqAiAhCyAAIAAqAiQgACoCeCICIAAqAoABIAAqAnAgACoCACIGIAOUIAAqAgQiECAZKgIEIhWUkiAAKgIIIhEgGSoCCCIWlJIgGSoCDCIMIAAqAkCUIBkqAhAiDSAAKgJElJIgGSoCFCISIAAqAkiUkpIgBiAFlCAQIBkqAhwiF5SSIBEgGSoCICIYlJKTIBkqAiQiDiAAKgJMlCAZKgIoIg8gACoCUJSSIBkqAiwiBCAAKgJUlJKSkpSTIhNDAAAAACATQwAAAABgG5QiEzgCeCAEIBMgApMiAiAAKgJslJIhBCAPIAIgACoCaJSSIQ8gDiACIAAqAmSUkiEOIBggAiARIAuUIhiUkyELIBcgAiAQIAqUIheUkyEKIAUgAiAGIAmUIhOUkyEFIBIgAiAAKgJglJIhCSANIAIgACoCXJSSIQ0gDCACIAAqAliUkiEMIBYgESAIlCIWIAKUkiEIIBUgECAHlCIVIAKUkiEHIAMgBiAUlCIUIAKUkiEDIBpBzABsQThqIgFBhAFGDQEgACAAKgIkIAAqAsQBIgIgACoCzAEgACoCvAEgBiADlCAQIAeUkiARIAiUkiAMIAAqAowBlCANIAAqApABlJIgCSAAKgKUAZSSkiAGIAWUIBAgCpSSIBEgC5SSkyAOIAAqApgBlCAPIAAqApwBlJIgBCAAKgKgAZSSkpKUkyISQwAAAAAgEkMAAAAAYBuUIhI4AsQBIAQgEiACkyICIAAqArgBlJIhBCAPIAIgACoCtAGUkiEPIA4gAiAAKgKwAZSSIQ4gCyACIBiUkyELIAogAiAXlJMhCiAFIAIgE5STIQUgCSACIAAqAqwBlJIhCSANIAIgACoCqAGUkiENIAwgAiAAKgKkAZSSIQwgCCAWIAKUkiEIIAcgFSAClJIhByADIBQgApSSIQMgAUHQAUYNASAAIAAqAiQgACoCkAIiAiAAKgKYAiAAKgKIAiAGIAOUIBAgB5SSIBEgCJSSIAwgACoC2AGUIA0gACoC3AGUkiAJIAAqAuABlJKSIAYgBZQgECAKlJIgESALlJKTIA4gACoC5AGUIA8gACoC6AGUkiAEIAAqAuwBlJKSkpSTIhJDAAAAACASQwAAAABgG5QiEjgCkAIgBCASIAKTIgIgACoChAKUkiEEIA8gAiAAKgKAApSSIQ8gDiACIAAqAvwBlJIhDiALIAIgGJSTIQsgCiACIBeUkyEKIAUgAiATlJMhBSAJIAIgACoC+AGUkiEJIA0gAiAAKgL0AZSSIQ0gDCACIAAqAvABlJIhDCAIIBYgApSSIQggByAVIAKUkiEHIAMgFCAClJIhAyABQZwCRg0BIAAgACoCJCAAKgLcAiICIAAqAuQCIAAqAtQCIAYgA5QgECAHlJIgESAIlJIgDCAAKgKkApQgDSAAKgKoApSSIAkgACoCrAKUkpIgBiAFlCAQIAqUkiARIAuUkpMgDiAAKgKwApQgDyAAKgK0ApSSIAQgACoCuAKUkpKSlJMiBkMAAAAAIAZDAAAAAGAblCIGOALcAiAEIAYgApMiAiAAKgLQApSSIQQgDyACIAAqAswClJIhDyAOIAIgACoCyAKUkiEOIAsgAiAYlJMhCyAKIAIgF5STIQogBSACIBOUkyEFIAkgAiAAKgLEApSSIQkgDSACIAAqAsAClJIhDSAMIAIgACoCvAKUkiEMIAggFiAClJIhCCAHIBUgApSSIQcgAyAUIAKUkiEDDAELIBpBBEG4ocIAEI8PAAsgGSAJOAIUIBkgDTgCECAZIAw4AgwgGSAIOAIIIBkgBzgCBCAZIAQ4AiwgGSAPOAIoIBkgDjgCJCAZIAs4AiAgGSAKOAIcCyAZIAU4AhggGSADOAIAIBkgACoCMCIFIAAqAgAiA5QgACoCBCICIAAqAiwiBJSTOAI8IBkgBCAAKgIIIgSUIAMgACoCNCIDlJM4AjggGSACIAOUIAQgBZSTOAI0IBoEQCAAQegCaiEBIABB+ABqIR0gAEEsaiEeIABBGGohHyAAQQxqISADQCABIB4gGUE0aiAgIB8gACoCKCAdKgIAlCAZIBlBGGoQpAIgHUHMAGohHSABQYwBaiEBIBpBAWsiGg0ACwsgACgCmAciASAcSQRAIBsgAUEYbGoiASAZKQMANwIAIAFBEGogGUEQaikDADcCACABQQhqIBlBCGopAwA3AgALIAAoApwHIgAgHEkEQCAbIABBGGxqIgAgGSkDGDcCACAAQRBqIBlBGGoiAUEQaikDADcCACAAQQhqIAFBCGopAwA3AgALIBlBQGskAAuaEAELfyMAQSBrIgQkACADKAIEIQwCQCADKAIAIgcgAk8NACABIAdBsAFsaiIFKAIAQQFHDQAgBUEQakEAIAUoAgQgDEYbIQgLAkACQCADKAIIIgYgAk8NACABIAZBsAFsaiIJKAIAQQFHDQAgCEUNACADKAIMIg0gCSgCBEciCw0AIAQgBzYCACAEIAY2AgQCQAJAAkACQAJAIAYgB0cEQCAAKAI4IQMgBiAHTwRAIAMgBk0EQCADIQEgBiADayIKQQFqIgIgACgCMCADa0sEQCAAQTBqIAMgAkEEQQwQ9gYgACgCOCEBCyAAKAI0Ig4gAUEMbGohBSACQQJPBEAgCkEMbCIKBEAgBUH/ASAK/AsACyAOIANBdGxqIAEgBmpBDGxqIQUgASACakEBayEBCyAFQX82AgggBUJ/NwIAIAAgAUEBaiIDNgI4CyADIAZJDQIgBiAHTQ0DIAMgBkYNBAwGCwJAIAMgB0sEQCADIQEMAQsgB0EBaiIBIANLBEAgAyEFIAEgA2siAiAAKAIwIANrSwRAIABBMGogAyACQQRBDBD2BiAAKAI4IQULIAAoAjQiCiAFQQxsaiEBIAJBAk8EQCAHIANrQQxsIg4EQCABQf8BIA78CwALIAogA0F0bGogBSAHakEMbGohASACIAVqQQFrIQULIAFBfzYCCCABQn83AgAgBUEBaiEBCyAAIAE2AjgLIAEgB0kNBCABIAdHDQVBAEEAQZSKwgAQiAsACyAEQgA3AhQgBEKBgICAwAA3AgwgBEHIisIANgIIQQEgBCAEQQRqIARBCGpB0IrCABD6DAALIARBADYCGCAEQQE2AgwgBEGM3sEANgIIIARCBDcCECAEQQhqQdSJwgAQuA0ACyAHIAZB5InCABCICwALQQBBAEH0icIAEIgLAAsgBEEANgIYIARBATYCDCAEQYzewQA2AgggBEIENwIQIARBCGpBhIrCABC4DQALIAAoAjQiASAGQQxsaiEDIAwgASAHQQxsaiIBKAIARwRAIAFCfzcCBCABIAw2AgALIA0gAygCAEYEfyADQQRqBSADQn83AgQgAyANNgIAIANBBGoLIQUCQAJAIAgtAJgBRQRAQQAgCUEQaiALGy0AmAFBAUcNAQsgASgCCCIIQX9GBEAgACgCICIIIAAoAhhGBEAgAEEYakGAi8IAELoICyAAIAhBAWo2AiAgACgCHCAIQQR0aiICQn83AgggAiAMNgIEIAIgBzYCACABIAg2AggLAkACQAJAAn8gAygCCCICQX9GBEAgACgCICICIAAoAhhGBEAgAEEYakGAi8IAELoICyAAIAJBAWo2AiAgACgCHCACQQR0aiIFQn83AgggBSANNgIEIAUgBjYCACADIAI2AgggASgCCCEICyAIIAAoAiAiC0kEQCAAQSxqIQUgACgCLCEDIAAoAighCSAAKAIcIgYgCEEEdGpBCGoiASEHA0ACQCADIAcoAgAiB00EQANAIAEoAgQiASADTw0CIAIgCSABQRRsaiIBKAIIRw0ADAsLAAsgAiAJIAdBFGxqIgcoAgxHDQEMCQsLIABBJGoiByACIAhPDQEaDAILIAIgCEkNByAAQSxqIQUgACgCHCEGIAAoAiwhAyAAQSRqCyEHIAIgC08NBiACIAhGDQELIAYgCEEEdGoiASgCCCEJIAEgAzYCCCAGIAJBBHRqIgYoAgwhASAGIAM2AgwMAQsgBiACQQR0aiIGKAIMIQEgBiADNgIMIAYoAgghCSAGIAM2AggLIAcoAgAgA0YEQCAHQZCLwgAQlAgLIAAoAiggA0EUbGoiAEEAOwEQIAAgATYCBCAAIAk2AgAgACAIrSACrUIghoQ3AggMAQsgASgCBCIJQX9GBEAgACgCCCIJIAAoAgBGBEAgAEGAi8IAELoICyAAIAlBAWo2AgggACgCBCAJQQR0aiICQn83AgggAiAMNgIEIAIgBzYCACABIAk2AgQLAkACQCAFKAIAIgJBf0YEQCAAKAIIIgIgACgCAEYEQCAAQYCLwgAQuggLIAAgAkEBajYCCCAAKAIEIAJBBHRqIgNCfzcCCCADIA02AgQgAyAGNgIAIAUgAjYCACABKAIEIQkLAkACQAJAIAkgACgCCCIISQRAIAAoAhAhBSAAKAIEIgsgCUEEdGoiCigCCCIBIAAoAhQiA08NAQNAIAUgAUE4bGoiASgCNCACRg0IIAEoAigiASADSQ0ACwwBCyACIAlJDQcgAEEUaiEFIABBDGohASAAKAIEIQsgACgCFCEDDAELIAooAgwiASADSQRAA0AgBSABQThsaiIBKAIwIAJGDQcgAyABKAIsIgFLDQALCyAAQRRqIQUgAEEMaiEBIAIgCUkNAQsgAiAITw0FIAIgCUYNAQsgCyAJQQR0aiIKKAIIIQggCiADNgIIIAsgAkEEdGoiCigCDCELIAogAzYCDAwBCyALIAJBBHRqIgooAgwhCyAKIAM2AgwgCigCCCEIIAogAzYCCAsgASgCACADRgRAIAFBkIvCABCYCAsgACgCECADQThsaiIAIAs2AiwgACAINgIoIABBADsBJCAAQQA2AhwgACANNgIYIAAgBjYCFCAAIAw2AhAgACAHNgIMIABBADYCCCAAQoCAgIDAADcCACAAIAmtIAKtQiCGhDcCMAsgBSADQQFqNgIACyAEQSBqJAAPCyAEQQA2AhggBEEBNgIMIARBzIvCADYCCCAEQgQ3AhAgBEEIakHUi8IAELgNAAvCEQIRfwJ+IwBB4AFrIgIkAAJAIAEoAgQiA0UEQCAAQYCAgIB4NgIADAELIAEgA0EBazYCBAJAAn8gASgCACIFKAIEIgFBB00EQCACQoHKADcDkAEgAkGQAWoQog0hBEEBDAELIAUgAUEIazYCBCAFIAUoAgAiAUEIajYCACACQRBqIAEpAAAQpwggAigCFCEEIAIoAhALQQFxBEAgBCEJDAELAkACQAJAAkACQAJAAkACQAJAAkAgBEUEQEHAACEJDAELQYCAASAEIARBgIABTxsiCUEGdCIDQcAAELMOIgFFDQEgAkEANgIkIAIgATYCICACIAk2AhwgAkGkAWohDANAIAJBAjYCbCACIAU2AmggAkGQAWoiDSACQegAaiIBEMADIAIoAqABIQkgAikDmAEgAikDkAEiE0IChYRQDQogAkHwAGoiC0EYaiIQIAxBGGoiBygCADYCACALQRBqIgggDEEQaiIDKQIANwMAIAtBCGoiDiAMQQhqIgspAgA3AwAgAiAMKQIANwNwIBOnQQFxRQ0DIA0gARDAAyACKAKgASEBIAIpA5gBIAIpA5ABIhNCAoWEUARAIAEhCQwLCyACQcABaiIGQRhqIg0gBygCADYCACAGQRBqIgcgAykCADcDACAGQQhqIgMgCykCADcDACACIAwpAgA3A8ABIBOnQQFxRQRAQQFB6LDBAEGEq8EAEL4KIQkMCwsgAkEoaiIPQRhqIgYgDSgCADYCACAPQRBqIgsgBykDADcDACAPQQhqIg0gAykDADcDACACQcgAaiIDQQhqIhIgDikDADcDACADQRBqIgcgCCkDADcDACADQRhqIgMgECgCADYCACACIAIpA8ABNwMoIAIgAikDcDcDSCACKAIkIg4gAigCHEYEQCACQRxqQcirwQAQyAgLIAIoAiAgDkEGdGoiCCACKQNINwIEIAggCTYCACAIIAE2AiAgCCACKQMoNwIkIAhBDGogEikDADcCACAIQRRqIAcpAwA3AgAg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OgA0DAcLIAAgHCkCCDcCACAAQTBqIBxBCGoiAUEwaikCADcCACAAQShqIAFBKGopAgA3AgAgAEEgaiABQSBqKQIANwIAIABBGGogAUEYaikCADcCACAAQRBqIAFBEGopAgA3AgAgAEEIaiABQQhqKQIANwIADAYLIAEgA2ohAyACIAVqIQUgAkUNACAHICBPDQAgHSAhIB0gIUobIQEgHSEEA0AgASAERg0BIBxBQGsgBCAHEIQCIQIgBEEBaiEEIAJFDQALCyAAQQU6ADQMBAsgACAcKQIINwIAIABBMGogHEEIaiIBQTBqKQIANwIAIABBKGogAUEoaikCADcCACAAQSBqIAFBIGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgAMAwtBvtLCAEEcQdzSwgAQ1gwAC0G+0sIAQRxB3NLCABDWDAALIABBBDoANAsgHEHgAGokAAuxEAITfwR9IwBBkAJrIgUkACABKAIIIRMgASgCBCEOIAVBADYCGCAFQQA2ApwBAkACQCATRQ0AAkACQAJAAkAgDigCPEH/////A3EEQCAFQRxqIQsgBUGcAWohFiABKAIsIRAgASgCMCEMIAEoAjghFyABKAI8IREgBUGEAmohDyAFQewBaiESQQQhDQJAA0AgDyAOIAdBBnRqIgEpAhA3AgAgD0EIaiIUIAFBGGooAgA2AgAgBUH4AWoiCEEIaiIGIAFBCGooAgA2AgAgBSABKQIANwP4ASAFQRBqIAggAiADQQEQygQgBSoCFCEYIAUoAhAhCSAUIAFBOGooAgA2AgAgDyABKQIwNwIAIAYgAUEoaigCADYCACAFIAEpAiA3A/gBIAVBCGogCCACIANBARDKBCABQSBqIQYCQCAFKgIMQ///f38gBSgCCEEBcRsiGiAYQ///f38gCUEBcRsiGF1FBEAgGiEZIBghGiAGIQkgASEGDAELIBghGSABIQkLAkACQAJAAkACQCADIBpeRQRAIAMgGV5FDQQgGUP//39/Ww0EIAkoAhxB/////wNxQQFHDQEMAgsCQCAaQ///f39bBEAMAQsgBigCDCEBIAYoAhxB/////wNxQQFHBEAgAyAZXkUEQCABIQcMBwsgGUP//39/WwRAIAEhBwwHC0EBIQYgCSgCHEH/////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cUVyIRULIBAgD5MgGpQgEV0NAiASQQhqIhQQpQwgFCETAkAgCUUNACAJLQAsRQRAIBJBgANqIhMgCUHMAGoQ+woMAQsgEkGYA2ogCUHIAGooAgA2AgAgEkGQA2ogCUFAaykCADcDACASQYgDaiAJQThqKQIANwMAIBJBpANqIAlBoAJqKAIANgIAIBJBsANqIAlBkAFqKAIANgIAIBJBvANqIAlBnAFqKAIANgIAIBIgCSkCMDcDgAMgEiAJKQKYAjcCnAMgEiAJKQKIATcDqAMgEiAJKQKUATcCtAMgEkGAA2ohEwsgEkHIAGoiCUE4aiATQThqKQIANwMAIAlBMGogE0EwaikCADcDACAJQShqIBNBKGopAgA3AwAgCUEgaiATQSBqKQIANwMAIAlBGGogE0EYaikCADcDACAJQRBqIBNBEGopAgA3AwAgCUEIaiATQQhqKQIANwMAIBIgEykCADcDSAJAIApFDQAgCi0ALEUEQCASQcADaiIUIApBzABqEPsKDAELIBJB2ANqIApByABqKAIANgIAIBJB0ANqIApBQGspAgA3AwAgEkHIA2ogCkE4aikCADcDACASQeQDaiAKQaACaigCADYCACASQfADaiAKQZABaigCADYCACASQfwDaiAKQZwBaigCADYCACASIAopAjA3A8ADIBIgCikCmAI3AtwDIBIgCikCiAE3A+gDIBIgCikClAE3AvQDIBJBwANqIRQLIBJBiAFqIglBOGogFEE4aikCADcDACAJQTBqIBRBMGopAgA3AwAgCUEoaiAUQShqKQIANwMAIAlBIGogFEEgaikCADcDACAJQRhqIBRBGGopAgA3AwAgCUEQaiAUQRBqKQIANwMAIAlBCGogFEEIaikCADcDACASIBQpAgA3A4gBIAtBAXEEQCASQcgAaiAMEKcKCyANQQFxBEAgEkGIAWogDhCnCgsgEkGIAmoiCUEIaiAHQRxB9AAgBygCEEEBcSING2oiCkEIaikCADcDACAJQRBqIApBEGopAgA3AwAgCUEYaiAKQRhqKAIANgIAIBIgCikCADcDiAIgEkHIAWoiFCASQcgAaiAJEMwCIBJByAJqIgpBCGogCEEcQfQAIAgoAhBBAXEiExtqIgtBCGopAgA3AwAgCkEQaiALQRBqKQIANwMAIApBGGogC0EYaigCADYCACAS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IANCgICAgMAANwLQASADQgA3AtgBIANCBDcC4AEgA0IANwLoASADQgQ3AvABIANCgICAgMAANwL4ASADQgA3AoACIANCBDcCiAIgAyADKQK4BTcCqAEgA0GoA2pCADcDACADQaADakIANwMAIANByANqQgA3AwAgA0EBOgCcAiAGQQtqQgA3AAAgBEELakIANwAAIAVBC2pCADcAACADQY0GaiIIQQtqQgA3AAAgA0H6BWoiB0ELakIANwAAIANCADcDmAMgA0IANwPAAyADQgA3ALsFIANCADcAkwUgA0IANwDnBSADQgA3AJAGIANCADcA/QUgA0GEBWpBADYCACADQgA3AvwEIANCADcDuAIgA0IANwOwAiADQf////sHNgKAAyADQoCAgIDw//+/fzcD+AIgA0L////7////v/8ANwPwAiADQv////sHNwPoAiADQoCAgIDw//+/fzcD4AIgA0L////7////v/8ANwPYAiADQv////sHNwPQAiADQoCAgIDw//+/fzcDyAIgA0L////7////v/8ANwPAAiADQoCAgICAgIDAPzcDqAIgA0IANwOgAiADQaACaiIJQewAakIANwIAIANCADcChAMgA0EAOgDYAyADQv////sHNwPQAyADQgA3A7gDIANCgICA/AM3A7ADIANBgICA/AM2ApQDIAlByAFqIAZBD2ooAAA2AAAgA0HhA2ogCykAADcAACADIAMpALgFNwDZAyADQQA6APQDIANC////+wc3AuwDIANBhARqIARBD2ooAAA2AAAgA0H9A2ogCikAADcAACADIAMpAJAFNwD1AyADQQA6AJAEIANC////+wc3A4gEIAlBgAJqIAVBD2ooAAA2AAAgA0GZBGogBUEIaikAADcAACADIAMpAOQFNwCRBCADQQA6AKwEIANC////+wc3AqQEIANBvARqIAhBD2ooAAA2AAAgA0G1BGogCEEIaikAADcAACADIAMpAI0GNwCtBCADQQA6AMgEIANC////+wc3A8AEIANB2ARqIAdBD2ooAAA2AAAgA0HRBGogB0EIaikAADcAACADIAMpAPoFNwDJBCADQQA6AIgFIANBADYC+AQgA0IANwPwBCADQYACOwHsBCADQQA2AugEIANBADoA5AQgA0L////7BzcC3AQgAygCCCEGIANBDGogAygCGCII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NgIgIAAgLzYCHCAAIBE4AhggACAgOAIUIAAgITgCECAAIBY4AgwgACAMOAIIIAAgCTgCBCAAIAo4AgAgACAiKQNgNwIkIABBLGogLSkDADcCACAAQTRqICMpAwA3AgAgAEE8aiApKAIANgIAIAYgJEEBaiIkNgKEAQsgAkEMaiECICdBBGohJyAsIANBAWoiA0cNAAsLAkAgBwRAIAYgFzgCkAEgBiAYOAKMASAGIBk4AogBIAYgASkCADcClAEgBkGcAWogAUEIaigCADYCAAwBCyAGIBc4ApwBIAYgGDgCmAEgBiAZOAKUASAGQYgBaiIAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIACwJAICRFDQAgJUUNACAGKAKAASIHICRBBnRqIScgJiAlQQZ0aiEoICZBJGohAyAmQUBrIQEgJUEBcSEpICVB////H3FBAUYhKgNAIAdBJGohAiAHKAIcIQYgJiEAAkAgKUUNACABIQAgBiAmKAIcRw0AIAcoAiAgJigCIEcNACACIAMpAgA3AgAgAkEYaiADQRhqKAIANgIAIAJBEGogA0EQaikCADcCACACQQhqIANBCGopAgA3AgALICpFBEAgAkEYaiEjIAJBEGohJCACQQhqISUDQAJAIAYgAEEcaigCAEcNACAHKAIgIABBIGooAgBHDQAgIyAAQTxqKAIANgIAICQgAEE0aikCADcCACAlIABBLGopAgA3AgAgAiAAQSRqKQIANwIACwJAIAYgAEHcAGooAgBHDQAgBygCICAAQeAAaigCAEcNACAjIABB/ABqKAIANgIAICQgAEH0AGopAgA3AgAgJSAAQewAaikCADcCACACIABB5ABqKQIANwIACyAoIABBgAFqIgBHDQALCyAnIAdBQGsiB0cNAAsLICsEQCAmICtBBnRBBBCIDwsgIkGAAWokAAvYDQIHfwN9IwBB4AFrIgskACALQTBqIAMgBCgCtAERAAAgCygCNCENIAsoAjAhDCALQShqIAYgBygCtAERAAACQAJAAkACQAJAIAwEQCALKAIoIhANAQsgC0EgaiADIAQoArgBEQAAIAsoAiAiDEUNASALQaABaiAMIAsoAiQgASACIAUgBiAHIAggCSAKEGEgCy0A2AEiAUEERwRAIAtB6ABqIAtB1AFqKAIANgIAIAtB4ABqIAtBzAFqKQIANwMAIAtB2ABqIAtBxAFqKQIANwMAIAtB0ABqIAtBvAFqKQIANwMAIAtByABqIAtBtAFqKQIANwMAIAtBQGsgC0GsAWopAgA3AwAgC0GSAWogC0HbAWotAAA6AAAgCyALKQKkATcDOCALIAsvANkBOwGQAQsgACALKQM4NwIAIAAgAToANCAAIAsvAZABOwA1IABBMGogC0E4aiIBQTBqKAIANgIAIABBKGogAUEoaikDADcCACAAQSBqIAFBIGopAwA3AgAgAEEYaiABQRhqKQMANwIAIABBEGogAUEQaikDADcCACAAQQhqIAFBCGopAwA3AgAgAEE3aiALQZIBai0AADoAAAwECyALKAIsIQ4gCgR/QQAFIAcoAqwBIQogBCgCrAEhDyAHKAKoASERIAMgBCgCqAERCwAgBiAREQsAkiEUIAMgDxELACESIAYgChELACITIBMgEiASIBNdGyASIBJcGyESQQELIQogCyASOAJ4IAsgFDgCdCALIAo2AnAgDkEYaigCACEKIA5BEGooAgAhDiANQRhqKAIAIQ8gDUEQaigCACENIAtBgAFqIAMgBCgChAERAAAgC0GQAWogBiAHKAKEAREAACALKgKMASALKgKcAWANASALQaABaiIKIAEgBSAQIA4gBiAHIAIgDCAPIAMgBCAIIAkgC0HwAGoQRyALLQDUASICQQRHBEAgC0E4aiIBQRhqIApBDGooAgA2AgAgAUEMaiAKQRhqKAIANgIAIAFBMGogCkEkaigCADYCACABQSRqIApBMGooAgA2AgAgCyALKQKkATcCSCALIAspArABNwI8IAsgCykCvAE3AmAgCyALKQLIATcCVCALIAsqAqABOAI4CyALIAI6AGwMAgsgC0EYaiAGIAcoArgBEQAAIAsoAhgiDARAIAtBoAFqIAwgCygCHCABIAUgAiADIAQgCCAJIAoQYSALLQDYASIBQQRHBEAgC0GYAWogC0GwAWooAgA2AgAgC0FAayALQbwBaigCADYCACALQfgAaiALQcgBaigCADYCACALQYgBaiALQdQBaigCADYCACALIAspAqgBNwOQASALIAspArQBNwM4IAsgCykCwAE3A3AgCyALKQLMATcDgAEgCyoCpAEhCQsgACAJOAIAIAAgCykDODcCBCAAIAspA5ABNwIQIAAgCykDgAE3AhwgACALKQNwNwIoIAAgAToANCAAQQxqIAtBQGsoAgA2AgAgAEEYaiALQZgBaigCADYCACAAQSRqIAtBiAFqKAIANgIAIABBMGogC0H4AGooAgA2AgAgAEE3aiALQaIBai0AADoAACAAIAsvAKABOwA1DAMLIAtBEGogAyAEKAJgEQAAIAtBoAFqIAsoAhAiDCALKAIUKAIMEQAAAkAgDEUNACALKQOgAUKBz+37qo7llecAhSALKQOoAUKox57Z4bjDk0eFhEIAUg0AIAAgASACIAwgBSAGIAcgCCAJIAoQaQwDCyALQQhqIAYgBygCYBEAACALQaABaiALKAIIIgwgCygCDCgCDBEAAAJAIAxFDQAgCykDoAFCgc/t+6qO5ZXnAIUgCykDqAFCqMee2eG4w5NHhYRCAFINACMAQUBqIgYkACAGQQhqIgcgASAFIAwgAiADIAQgCCAJIAoQaSAGLQA8IgFBBEcEQCAAIAYpAgw3AhAgACAGKQIYNwIEIAAgBikCJDcCKCAAIAYpAjA3AhwgACAGKgIIOAIAIABBGGogB0EMaigCADYCACAAQQxqIAdBGGooAgA2AgAgAEEwaiAHQSRqKAIANgIAIABBJGogB0EwaigCADYCAAsgACABOgA0IAZBQGskAAwDCyAAQQU6ADQMAgsgC0E4aiABIAIgDCANIAMgBCAFIBAgCiAGIAcgCCAJIAtB8ABqEEcLIABBMGogC0E4aiIBQTBqKQIANwIAIABBKGogAUEoaikCADcCACAAQSBqIAFBIGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgAgACALKQI4NwIACyALQeABaiQAC5UMAwh/B30FfkPbD0lAIACzlSEMIAEoAggiB0EMbEEMaiEFIAchBANAIAUhAyALEPEBQwAAAD+UIQ0gCxD0AUMAAAA/lCEPIAEoAgAgBEYEQCABQZD4wwAQkwgLIAEgBEEBaiIGNgIIIAEoAgQiCCAEQQxsaiIEIA04AgggBEEANgIEIAQgDzgCACADQQxqIQUgDCALkiELIAAgCUchCiAGIQQgCUEBaiEJIAoNAAtDAAAAACELQX8hBANAIAsQ8QFDAAAAP5QhDSALEPQBQwAAAD+UIQ8gASgCACAEIAZqIglBAWpGBEAgAUGQ+MMAEJMIIAEoAgQhCAsgAyAIaiIFIA84AgAgBUEIaiANOAIAIAVBBGpBADYCACABIAlBAmo2AgggA0EMaiEDIAwgC5IhCyAEQQFqIgQgAEcNAAsCQAJAIABBAWoiAyAHaiIFIAQgBmpBAWoiBE0EQCAIIAdBDGxqIgEgA0EMbGohBgNAIAFBBGoiCSoCACIMQ/MENb+UIAEqAgAiDUMAAAAAlJIiCyALkiIQQ/MENT+UIQ8gDUMAAACAlCABQQhqIgoqAgAiDkPzBDU/lJIiCyALkiELIAogDiAPIAtD8wQ1v5QgDkMAAACAlCAMQwAAAACUkiIOIA6SIg5DAAAAAJSSkpJDAAAAAJI4AgAgCSAMIAtD8wQ1P5QgDkMAAACAlCAPkpKSQwAAAACSOAIAIAEgDSAOQ/MENT+UIBBDAAAAgJQgC0MAAAAAlJKSkkMAAAAAkjgCACAGIAFBDGoiAUcNAAsgByADQQF0aiIGIAVJDQEgBCAGSQ0CIAggBUEMbGoiASADQQxsaiEEA0AgAUEEaiIDKgIAIg9D////vpQiDSABKgIAIg5D////PpQiDJMiCyALkkP///8+lCELIAwgAUEIaiIIKgIAIhBD////PpQiEZIiDCAMkiEMIAggECALIAxD////vpQgESANkiINIA2SQ////z6UIg2TkpJDAAAAAJI4AgAgAyAPIAxD////PpQiDCANIAuSkpJDAAAAAJI4AgAgASAOIA0gCyAMk5KSQwAAAACSOAIAIAQgAUEMaiIBRw0ACyAAQQAgACAHaiIDIABPGyIEIAIoAgAgAigCCCIBa0sEQCACIAEgBEEEQQgQ4wYgAigCCCEBCyACKAIEIQQCQCAARQ0AAkAgA60iFiAHrSITfUIDgyIUUARAIBMhFQwBCyATIBR8IRUgASAAQQNxaiEAIAQgAUEDdGohASATQoGAgIAQfkKAgICAEHwhEgNAIAEgEjcCACABQQhqIQEgEkKBgICAEHwhEiAUQgF9IhRCAFINAAsgACEBCyATIBZ9QnxWDQAgFUIDfCEUQgAgFn0hEyAEIAFBA3RqIQMgFUKBgICAEH5Cg4CAgMAAfCESA0AgA0EYaiASNwIAIANBEGogEkKBgICAEH03AgAgA0EIaiASQoKAgIAgfTcCACADIBJCg4CAgDB9NwIAIANBIGohAyASQoSAgIDAAHwhEiABQQRqIQEgEyAUQgR8IhR8QgNSDQALCyACIAE2AgggBkEBayIAIAVrIgNBACAAIANPGyIDIAIoAgAgAWtLBEAgAiABIANBBEEIEOMGIAIoAgQhBCACKAIIIQELAkAgACAFTQ0AAkAgAK0iFiAFrSITfUIDgyIUUARAIBMhFQwBCyATIBR8IRUgBCABQQN0aiEDIBNCgYCAgBB+QoCAgIAQfCESA0AgAyASNwIAIANBCGohAyASQoGAgIAQfCESIAFBAWohASAUQgF9IhRCAFINAAsLIBMgFn1CfFYNACAVQgN8IRRCACAWfSETIAQgAUEDdGohAyAVQoGAgIAQfkKDgICAwAB8IRIDQCADQRhqIBI3AgAgA0EQaiASQoGAgIAQfTcCACADQQhqIBJCgoCAgCB9NwIAIAMgEkKDgICAMH03AgAgA0EgaiEDIBJChICAgMAAfCESIAFBBGohASATIBRCBHwiFHxCA1INAAsLIAIgATYCCA8LIAUgBEGw8sMAEI8PAAsgBSAGQcDywwAQkA8ACyAGIARBwPLDABCPDwALwwsCGn0CfyMAQTBrIh8kAAJAAkAgAyoCDCIMIAyUIAMqAhAiDSANlJIgAyoCFCISIBKUkiIFQwAAAABbDQAgBZEiFosiBUMAAIB/XARAIAVDAAAANF8NASAFIAVDAAAANJRfDQELIA0gFpUiGIwiDyASIBaVIhkgGZQgDCAWlSIaIBqUIBggGJSSkpEiBZUhCSADKgIIIRMgAyoCBCEUIAMqAgAhFQJAAkACQCAajCIMIAWVIgYgBpQgGYwiDSAFlSILIAuUkiIFQwAAAABcBEAgASoCACIRjCESIAkgEZQiCCALIAsgBZEiBZUgASoCBCIblCIHlCAGIAYgBZUgG5QiCpQgCJOSXg0BIBIhBQwDCyABKgIAIhEgCZghBSABKgIEIRsgEYwhEgwBC0MAAAAAIQcgESEFC0MAAAAAIQoLIAJBADYCvAEgAkEANgKsASACQQA2AjAgAkIANwIoIAIgByALIAEqAggiF5SSIgc4AiQgAiAFIAkgF5SSIgg4AiAgAiAKIAYgF5SSIgU4AhwgAiAHIBOTOAIYIAIgCCAUkzgCFCACIAUgFZM4AhAgHyACEEJD//9/fyEFQeQAIQECQAJAA0AgHyoCACIKIAqUIB8qAgQiDiAOlJIgHyoCCCIGIAaUkiIIQwAAyCteRQ0BIAaMIAiRIguVIQkgDowgC5UhByAKjCALlSEIAn0CQAJ9AkAgBSALXyIgRQRAIAcgCSAJlCAIIAiUIAcgB5SSkpEiBZUhCiAIIAWVIh0gHZQgCSAFlSIeIB6UkiIGQwAAAABbDQEgEiEFIBEgCpQiDiAeIBsgHiAGkSIGlZQiEJQgHSAbIB0gBpWUIgaUIA6Tkl5FDQNDAAAAACEQIBEMAgsgHEMAAAAAXg0FIBMgBpIhECAUIA6SIQUgFSAKkgwDC0MAAAAAIRAgESAKmAshBUMAAAAAIQYLIBcgHpQgEJIhECAXIAqUIAWSIQUgFyAdlCAGkgshCgJAAkACQCAZIAmUIBogCJQgGCAHlJKSIg5DAAAAAFsNACAOiyIGQwAAgH9cBEAgBkMAAAA0Xw0BIAYgBkMAAAA0lF8NAQsgCCAKIBWTlCAHIAUgFJOUkiAJIBAgE5OUkiAOlSIGQwAAAABgRQ0AIA5DAAAAAF0gBkMAAAAAXnENASAgRQ0CQQAhAwwFC0EAIQMgIA0EIA5DAACgNV4NBAwBCyAEIBwgBpIiHCAWlV0EQEEAIQMMBAsgEyAZIAaUIg+SIRMgFCAYIAaUIgySIRQgFSAaIAaUIg2SIRVD//9/fyELAkAgAigCvAEiA0EBaiIgRQ0AIAIgAioCECANkzgCECACIAIqAhQgDJM4AhQgAiACKgIYIA+TOAIYIANFDQAgAiACKgI0IA2TOAI0IAIgAioCOCAMkzgCOCACIAIqAjwgD5M4AjwgIEECRg0AIAIgAioCWCANkzgCWCACIAIqAlwgDJM4AlwgAiACKgJgIA+TOAJgICBBA0YNACACIAIqAnwgDZM4AnwgAiACKgKAASAMkzgCgAEgAiACKgKEASAPkzgChAEgCSENIAchDyAIIQwgIEEERg0BQQRBBEHQjcMAEIgLAAsgCSENIAchDyAIIQwLIAkgECATkyIJlCAHIAUgFJMiB5QgCCAKIBWTIgiUkpIiBrxB/////wdxQf////sHSwRAQayLwwBBJ0Hoi8MAENYMAAtBACEDIAsgBpIgC0O9G486lF8NAiAfQQA2AiwgH0IANwIkIB8gEDgCICAfIAU4AhwgHyAKOAIYIB8gCTgCFCAfIAc4AhAgHyAIOAIMIAIgH0EMahDGAxogHyACEEIgAigCvAFBA0cEQCALIQUgAUEBayIBDQEMAwsLIAZDAACgtV8NAQsgACANOAIQIAAgDzgCDCAAIAw4AgggACAcIBaVOAIEQQEhAwsgACADNgIADAELIABBADYCAAsgH0EwaiQAC/0KAhF9BX8jAEGwAWsiBCQAIAAoAgQhBQJAAkAgAQRAIAUoAgAhGSAEIAEqAggiCCAFKAIEIhcqAggiCZQgASoCBCIKIBcqAgQiC5QgASoCACIMIBcqAgAiB5QgASoCDCIOIBcqAgwiDZSSkpI4AjwgBCAKIAeUIA4gCZQgDCALlJOSIAggDZSTOAI4IAQgDiALlCAMIAmUkiAKIA2UkyAIIAeUkzgCNCAEIAggC5QgDiAHlCAMIA2UkyAKIAmUk5I4AjAgCiAXKgIQIAEqAhAiFJMiB5QgDCAXKgIUIAEqAhQiFZMiDZSTIgkgCZIhCSAIIA2UIAogFyoCGCABKgIYIhaTIgaUkyILIAuSIQsgBCAGIA4gCZQgCiALlCAMIAwgBpQgCCAHlJMiBiAGkiIGlJOSkjgCSCAEIA0gDiAGlCAMIAmUIAggC5STkpI4AkQgBCAHIA4gC5QgCCAGlCAKIAmUk5KSOAJAIAQgBSgCCCIBKgIIIgYgDiAKIAEqAgAiCZQgDCABKgIEIguUkyIHIAeSIgeUIAogCCALlCAKIAaUkyINIA2SIg2UIAwgDCAGlCAIIAmUkyIGIAaSIgaUk5KSOAJUIAQgCyAOIAaUIAwgB5QgCCANlJOSkjgCUCAEIAkgDiANlCAIIAaUIAogB5STkpI4AkwgBSgCDCEBIAUoAhAhFyAEQegAaiIaQQhqIhggBSgCFCIFQQhqKAIANgIAIAQgBSkCADcDaCAEQfgAaiAZIARBMGogBEHMAGogAiADIAEgFyAaEEMgBC0ArAEiAUEFRg0BIBggBEGQAWooAgA2AgAgBEHgAGoiAiAEQagBaigCADYCACAEIAQpAogBNwNoIAQgBCkCoAE3A1ggAUEERg0CIAQqAoQBIQcgBCoCgAEhDSAEKgJ8IREgBCoCeCETIAQqApQBIQsgBCoCmAEhCSAEKgKcASEGIARBKGogGCgCADYCACAEQRhqIAIoAgA2AgAgBCAEKQNoNwMgIAQgBCkDWDcDECAGIA4gDCAJlCAKIAuUkyIPIA+SIg+UIAwgCCALlCAMIAaUkyIQIBCSIhCUIAogCiAGlCAIIAmUkyIGIAaSIhKUk5KSIQYgCSAOIBCUIAggEpQgDCAPlJOSkiEJIAsgDiASlCAKIA+UIAggEJSTkpIhCyAWIAcgDiAMIA2UIAogEZSTIg8gD5IiD5QgDCAIIBGUIAwgB5STIhAgEJIiEJQgCiAKIAeUIAggDZSTIgcgB5IiEpSTkpKSIQcgFSANIA4gEJQgCCASlCAMIA+Uk5KSkiENIBQgESAOIBKUIAogD5QgCCAQlJOSkpIhEQwCCyAFKAIQIQEgBSgCDCEXIAUoAgghGSAFKAIEIRogBSgCACEYIARBMGoiG0EIaiAFKAIUIgVBCGooAgA2AgAgBCAFKQIANwMwIARB+ABqIBggGiAZIAIgAyAXIAEgGxBDIAQtAKwBIgFBBUYNACAEQShqIARBkAFqKAIANgIAIARBGGogBEGoAWooAgA2AgAgBEEOaiAEQa8Bai0AADoAACAEIAQpAogBNwMgIAQgBCkCoAE3AxAgBCAELwCtATsBDCAEKgKEASEHIAQqAoABIQ0gBCoCfCERIAQqAnghEyAEKgKUASELIAQqApgBIQkgBCoCnAEhBgwBC0EEIQELIAAoAgAiACAHOAIMIAAgDTgCCCAAIBE4AgQgACATOAIAIAAgBCkDIDcCECAAIAY4AiQgACAJOAIgIAAgCzgCHCAAIAQpAxA3AiggACABOgA0IABBGGogBEEoaigCADYCACAAQTBqIARBGGooAgA2AgAgACAELwEMOwA1IABBN2ogBEEOai0AADoAACAEQbABaiQAC4UMAhJ/FH0jAEGwAWsiBCQAAkACQCABKAIAIgUoAlQiBiACSwRAIAUoAkgiBiACSwRAIAEoAggtAAAhDCAFKAJQIQcgASgCBCEGIAQgBSoCbCIZIAUoAkQgAkEMbGoiASgCCCIQQQN0IgmylDgCFCAEIAUqAmgiGiABKAIEIhFBA3QiCrKUOAIQIAQgBSoCZCIbIAEoAgAiEkEDdCIFspQ4AgwgBCAZIAlBCGoiDbKUOAIgIAQgGiAKQQhqIguylDgCHCAEIBsgBUEIaiIOspQ4AhggBEGEAWogBEEMaiAGIAZBDGoiExCzAQJAIAQoAoQBQQFHDQAgBCoCnAEiF0MAAAAAXQ0AAkBDAAAAAEMAAAAAIAQqAogBIhggGEMAAAAAXRsgGCAYXBsiFiADXkUEQCAGKgIUIRwgBioCCCEgIAYqAhAhHSAGKgIEISEgBioCDCEeIAYqAgAhIiAFQfj///8HRg0BIApB+P///wdGDQEgCUH4////B0YNASAXIBcgAyADIBdeGyADIANcGyEYIAcgAkEJdGohFCAEIAkgICAWIByUkiAZlY78ACIBIA0gASANSBsgASAJSBsiBzYCLCAEIAogISAWIB2UkiAalY78ACIBIAsgASALSBsgASAKSBsiATYCKCAEIAUgIiAWIB6UkiAblY78ACIIIA4gCCAOSBsgBSAIShsiCDYCJCAEIAk2AjggBCAKNgI0IAQgBTYCMCAEIA02AkQgBCALNgJAIAQgDjYCPCAcQwAAAABeIQUgHkMAAAAAXiEJIB1DAAAAAF4hCiAZQwAAAD+UISMgGkMAAAA/lCEkIBtDAAAAP5QhJSAMQQFxIQ0DQCAEICMgGSAHskMAAAA/kpQiA5IiFzgCXCAEICQgGiABskMAAAA/kpQiFpIiJjgCWCAEICUgGyAIskMAAAA/kpQiH5IiJzgCVCAEIAMgI5MiKDgCUCAEIBYgJJMiKTgCTCAEIB8gJZMiHzgCSCAHQR92IgsgB2pBCG0hDiABQR92IgwgAWpBCG0hFQJAIAhBH3YiDyAIakEIbSAPayIPIBJHDQAgFSAMayIMIBFHDQAgDiALayILIBBHDQAgByAMa0EGdCIHIAEgD2tBA3QgCGoiCCALQQl0a2oiAUGABEkEQCABIBRqLQAAQcAARg0BIARBhAFqIARByABqIAYgExCzASAEKAKEAUEBRw0BAkAgBCoCiAEiA0MAAAAAXUUEQCADIBhfRQ0DIARBgAFqIARBlAFqKAIANgIAIAQgBCkCjAE3A3gMAQsgDUUEQCAYIAQqApwBIgNgRQ0DIARBgAFqIARBqAFqKAIANgIAIAQgBCkCoAE3A3gMAQsgBEGAAWpBADYCACAEQgA3A3hDAAAAACEDCyAAIAM4AgggAEECNgIAIAAgBCkDeDcCDCAAQRRqIARBgAFqKAIANgIAIAAgByACIBBrQQl0aiAIajYCBAwJCyABQYAEQZzgwwAQiAsAC0P//39/IRZD//9/fyEDIAkgHkMAAAAAXXIEQEP//39/ICcgHyAJGyAikyAelSIDIANDAAAAAF0bIQMLIAogHUMAAAAAXXIEQEP//39/ICYgKSAKGyAhkyAdlSIWIBZDAAAAAF0bIRYLIBxDAAAAAF0gBXIEfUP//39/IBcgKCAFGyAgkyAclSIXIBdDAAAAAF0bBUP//39/CyEXIAQgBToAdCAEIAo6AGwgBCAJOgBkAkAgAyAYXkUNACAWIBheRQ0AIBcgGF4NBwtBAiADIBZeIgEgFyAWIAMgARtdGyILQQJ0IgggBEEkamoiASgCACEHIAECfyAEQeAAaiALQQN0ai0ABEUEQCAHIARBMGogCGooAgBMDQhBfwwBCyAHIARBPGogCGooAgBBAWtODQdBAQsgB2o2AgAgBCgCLCEHIAQoAighASAEKAIkIQgMAAsACyAAQQQ2AgAMBQtBvtLCAEEcQdzSwgAQ1gwACyAAQQQ2AgAMAwsgAiAGQeDfwwAQiAsACyACIAZB0N/DABCICwALIABBBDYCAAsgBEGwAWokAAuLDAIefwN+IwBBMGsiDCQAIAxBCGogARCZBSABKAIwIhetQgx+IiCnIQICQAJAAkACQAJAAkACQAJAAkACQCAgQiCIpw0AIAJB/P///wdLDQAgASgCLCEDAkAgAkUEQEEEIRAMAQtBBCEHIBchGSACQQQQsw4iEEUNAQsgAgRAIBAgAyAC/AoAAAsgASgCPCIYrUIMfiIgpyECQQAhByAgQiCIpw0BIAJB/P///wdLDQEgASgCOCEDAkAgAkUEQEEEIREMAQtBBCEHIBghGiACQQQQsw4iEUUNAgsgAgRAIBEgAyAC/AoAAAtBgICAgHghBwJAIAEoAkBBgICAgHhGBEBBgICAgHghEgwBCyABKAJIIhKtIiFCDH4iIKchAiAgQiCIpw0DIAJB/P///wdLDQMgASgCRCEEAkAgAkUEQEEEIQVBACESDAELQQQhDSACQQQQsw4iBUUNBAsgAgRAIAUgBCAC/AoAAAsgASgCVCINrUIkfiIgpyECQQAhBCAgQiCIpw0EIAJB/P///wdLDQQgASgCUCEDAkAgAkUEQEEEIRMMAQtBBCEEIA0hGyACQQQQsw4iE0UNBQsgAgRAIBMgAyAC/AoAAAsgBa0gIUIghoQhIAsgASgCWEGAgICAeEcEQCABKAJgIgVBAnQhAkEAIQQgBUH/////A0sNBSACQfz///8HSw0FIAEoAlwhAwJAIAJFBEBBBCEGQQAhBwwBC0EEIQQgBSEHIAJBBBCzDiIGRQ0GCyACBEAgBiADIAL8CgAACyABKAJsIgJBAnQhBEEAIQMgAkH/////A0sNBiAEQfz///8HSw0GIAEoAmghCAJAIARFBEBBBCEUDAELQQQhAyACIRwgBEEEELMOIhRFDQcLIAQEQCAUIAggBPwKAAALIAEoAngiBEEEdCEDIARB/////wBLDQcgA0H8////B0sNByABKAJ0IQgCQCADRQRAQQQhFQwBC0EEIQogBCEdIANBBBCzDiIVRQ0ICyADBEAgFSAIIAP8CgAACyAGrSAFrUIghoQhIQtBgICAgHghAyABKAJ8QYCAgIB4RwRAIAEoAoQBIghBAnQhBUEAIQYgCEH/////A0sNCCAFQfz///8HSw0IIAEoAoABIQ4CQCAFRQRAQQQhFkEAIQMMAQtBBCEGIAghAyAFQQQQsw4iFkUNCQsgBQRAIBYgDiAF/AoAAAsgASgCkAEiBUECdCEGIAVB/////wNLDQkgBkH8////B0sNCSABKAKMASEPAkAgBkUEQEEEIQpBACEODAELQQQhCyAFIQ4gBkEEELMOIgpFDQoLIAYEQCAKIA8gBvwKAAALIAEoApwBIgZBAnQhCSAGQf////8DSw0KIAlB/P///wdLDQogASgCmAEhHgJAIAlFBEBBBCELQQAhDwwBC0EEIR8gBiEPIAlBBBCzDiILRQ0LCyAJBEAgCyAeIAn8CgAACyAWrSAIrUIghoQhIgsgACAMKQIINwIAIAAgBjYCnAEgACALNgKYASAAIA82ApQBIAAgBTYCkAEgACAKNgKMASAAIA42AogBIAAgIjcCgAEgACADNgJ8IAAgBDYCeCAAIBU2AnQgACAdNgJwIAAgAjYCbCAAIBQ2AmggACAcNgJkIAAgITcCXCAAIAc2AlggACANNgJUIAAgEzYCUCAAIBs2AkwgACAgNwJEIAAgEjYCQCAAIBg2AjwgACARNgI4IAAgGjYCNCAAIBc2AjAgACAQNgIsIAAgGTYCKCAAIAEvAaABOwGgASAAQQhqIAxBCGoiAUEIaikCADcCACAAQRBqIAFBEGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBIGogAUEgaikCADcCACAMQTBqJAAPCyAHIAJB2NXCABDTDQALIAcgAkHY1cIAENMNAAsgDSACQdjVwgAQ0w0ACyAEIAJB2NXCABDTDQALIAQgAkHY1cIAENMNAAsgAyAEQdjVwgAQ0w0ACyAKIANB2NXCABDTDQALIAYgBUHY1cIAENMNAAsgCyAGQdjVwgAQ0w0ACyAfIAlB2NXCABDTDQAL6AsCB30OfyMAQcABayIKJAAgASgCCCEUIAEoAgQhDiAKQQA2AgggCkEANgKMAQJAIBRFBEBBBCEPDAELAkAgDigCPEH/////A3EEQCAKQQxqIREgCkGMAWohFyAKQaQBaiESIAIqAgghByACKgIEIQggAioCACEJQQQhD0P//39/IQRBfyETAkADQCAOIBBBBnRqIgtBIGohDAJAIAsqAiAgCZMiAyAJIAsqAjCTIgUgAyAFYBsiA0MAAAAAIANDAAAAAGAbIgMgA5QgCyoCJCAIkyIDIAggCyoCNJMiBSADIAVgGyIDQwAAAAAgA0MAAAAAYBsiAyADlJIgCyoCKCAHkyIDIAcgCyoCOJMiBSADIAVgGyIDQwAAAAAgA0MAAAAAYBsiAyADlJKRIgUgCyoCACAJkyIDIAkgCyoCEJMiBiADIAZgGyIDQwAAAAAgA0MAAAAAYBsiAyADlCALKgIEIAiTIgMgCCALKgIUkyIGIAMgBmAbIgNDAAAAACADQwAAAABgGyIDIAOUkiALKgIIIAeTIgMgByALKgIYkyIGIAMgBmAbIgNDAAAAACADQwAAAABgGyIDIAOUkpEiBl1FBEAgBSEDIAYhBSAMIQ0gCyEMDAELIAYhAyALIQ0LAkACQAJ/AkACQCAEIAVeRQRAIAMgBF1FDQQgA0P//39/Ww0EIA0oAhxB/////wNxQQFHDQEMAgsCQCAFQ///f39bBEAMAQsgDCgCHEH/////A3FBAUcEQCAMKAIMIRAgAyAEXUUNBiADQ///f39bDQZBASANKAIcQf////8DcUEBRg0EGgJ/IAooAowBIhVBIUkEQCAVIQsgESEWQSAhFSAXDAELIAooAgwhCyAKKAIQIRYgEQshDCANKAIMIQ0gCyAVRgRAIApBCGoQrQQgCigCDCELIAooAhAhFiARIQwLIBYgC0ECdGogDTYCACAMIAwoAgBBAWo2AgAMBgsgCkGgAWogASACIAwoAgwQ2QUCQCAKKAK0ASILQQRGDQAgCioCoAEiBSAEXUUNACAKQZgBaiASQQhqKQIANwMAIAogEikCADcDkAEgDCgCDCETIAUhBCALIQ8LCyADIARdRQ0DIAND//9/f1sNAyANKAIcQf////8DcUEBRg0BCyANKAIMIRAMAwtBAAshCyAKQaABaiABIAIgDSgCDBDZBQJAIAooArQBIgxBBEYNACAKKgKgASIDIARdRQ0AIApBmAFqIBJBCGopAgA3AwAgCiASKQIANwOQASANKAIMIRMgAyEEIAwhDwsgCw0BCyAKKAKMASINIQsgESEQIBchDCANQSFPBEAgCigCDCELIAooAhAhECARIQwLIAtFDQIgDCALQQFrIgw2AgAgECAMQQJ0aigCACEQCyAQIBRJDQALIBAgFEHI68IAEIgLAAsgD0EERgRAQQQhDwwCCyAKQagBaiAKQZgBaikDADcDACAKIAopA5ABNwOgAQwBC0EEIQ8gDioCACACKgIAIgSTIgMgBCAOKgIQkyIEIAMgBGAbIgRDAAAAACAEQwAAAABgGyIEIASUIA4qAgQgAioCBCIEkyIDIAQgDioCFJMiBCADIARgGyIEQwAAAAAgBEMAAAAAYBsiBCAElJIgDioCCCACKgIIIgSTIgMgBCAOKgIYkyIEIAMgBGAbIgRDAAAAACAEQwAAAABgGyIEIASUkpFD//9/f11FDQEgCkGgAWogASACIA4oAgwQ2QUCQCAKKAK0ASIBQQRGBEAMAQsgCioCoAEhBCAKQZgBaiICIApBrAFqKQIANwMAIAogCikCpAE3A5ABIARD//9/f11FDQAgCkGoAWogAikDADcDACAKIAopA5ABNwOgASAOKAIMIRMgASEPCyAKKAKMASENCyANQSFJDQAgCigCECANQQJ0QQQQiA8LIA9BBEYEQEGgksMAEJEPAAsgACAKKQOgATcCACAAQQhqIApBqAFqKQMANwIAIAAgEzYCFCAAQQE2AhAgCkHAAWokAAv7DQIPfw99IwBBkAJrIgMkAEEEIQcCQCACIAEoAgAiBigCQCIEKAIQTw0AIAQoAgwgAkGwAWxqIgQoAgBBAUcNACABKAIcIQkgASgCGCEKIAEoAhQhCyABKAIQIQggASgCDCEFIAEoAgghDCABKAIEIQ0gBiAGKAI8IgFBiANqKAIAIAFBjANqKAIAIAIgBCgCBCAEQRBqEKwFRQ0AIAQoAlAhAiAEKAJUIgcoAgghBiADIAQqAowBIhQgBSoCCCIXlCAEKgKIASIVIAUqAgQiE5QgBCoChAEiFiAFKgIAIhqUIAQqApABIhkgBSoCDCIYlJKSkjgCgAEgAyAVIBqUIBkgF5QgFiATlJOSIBQgGJSTOAJ8IAMgGSATlCAWIBeUkiAVIBiUkyAUIBqUkzgCeCADIBQgE5QgGSAalCAWIBiUkyAVIBeUk5I4AnQgFSAFKgIQIAQqApQBkyIalCAWIAUqAhQgBCoCmAGTIhiUkyIXIBeSIRcgFCAYlCAVIAUqAhggBCoCnAGTIhKUkyITIBOSIRMgAyASIBkgF5QgFSATlCAWIBYgEpQgFCAalJMiEiASkiISlJOSkjgCjAEgAyAYIBkgEpQgFiAXlCAUIBOUk5KSOAKIASADIBogGSATlCAUIBKUIBUgF5STkpI4AoQBIBUgCCoCACIalCAWIAgqAgQiGJSTIhcgF5IhFyAUIBiUIBUgCCoCCCISlJMiEyATkiETIAMgEiAZIBeUIBUgE5QgFiAWIBKUIBQgGpSTIhIgEpIiEpSTkpI4ApgBIAMgGCAZIBKUIBYgF5QgFCATlJOSkjgClAEgAyAaIBkgE5QgFCASlCAVIBeUk5KSOAKQASADQQhqIgVBCGogCUEIaigCADYCACADIAkpAgA3AwggA0HYAWoiASANIANB9ABqIANBkAFqIAIgBkEBa0F4cWpBCGogByALIAogBSAMKAIcEScAAkACQCADLQCMAiIFQQVHBEAgA0GgAWoiAkEwaiIIIAFBMGoiBigCADYCACACQShqIgkgAUEoaiIKKQIANwMAIAJBIGoiCyABQSBqIgwpAgA3AwAgAkEYaiINIAFBGGoiDikCADcDACACQRBqIg8gAUEQaiIQKQIANwMAIAJBCGogAUEIaikCADcDACADQZ4BaiIRIAFBN2oiAS0AADoAACADIAMpAtgBNwOgASADIAMvAI0COwGcAUEEIQcgBUEERw0BC0EEIQEMAQsgBiAIKAIANgIAIAogCSkDADcDACAMIAspAwA3AwAgDiANKQMANwMAIBAgDykDADcDACADQdgBaiICQQhqIANBqAFqKQMANwMAIAEgES0AADoAACADIAMpA6ABNwPYASADIAMvAZwBOwCNAiADIAU6AIwCIANBPGoiBSIBIAIpAhA3AhAgAUEYaiACQRhqKAIANgIAIARBhAFqIgQqAhghHiAEKgIUIR8gBCoCECEgIAIqAgghFyACKgIEIRMgAioCDCEaIAQqAgwhGSACKgIgIRggBCoCBCEUIAQqAgghFSACKgIcIRIgBCoCACEWIAIqAiQhHSABIAIqAgA4AgAgAUEwaiACQTBqKAIANgIAIAEgAikCKDcCKCABIAItADQ6ADQgASASIBkgFCAdlCAVIBiUkyIbIBuSIhuUIBQgFiAYlCAUIBKUkyIcIBySIhyUIBUgFSASlCAWIB2UkyISIBKSIhKUk5KSOAIcIAEgGCAZIBKUIBUgG5QgFiAclJOSkjgCICABIB0gGSAclCAWIBKUIBQgG5STkpI4AiQgASAgIBMgGSAaIBSUIBcgFZSTIhggGJIiGJQgFCAXIBaUIBMgFJSTIhIgEpIiEpQgFSATIBWUIBogFpSTIhMgE5IiE5STkpKSOAIEIAEgHyAXIBkgE5QgFSAYlCAWIBKUk5KSkjgCCCABIB4gGiAZIBKUIBYgE5QgFCAYlJOSkpI4AgwgA0EIaiIBQQhqIAVBCGopAgA3AwAgAUEQaiAFQRBqKQIANwMAIAFBGGogBUEYaikCADcDACABQSBqIAVBIGopAgA3AwAgAUEoaiAFQShqKQIANwMAIAFBMGogBUEwaigCADYCACADIAMpAjw3AwggAy0AcCEBIAJBAmogBUE3ai0AADoAACADIAMvAHE7AdgBIAFBBUYNAQsgACADKQMINwIAIAAgAy8B2AE7ADUgAEEwaiADQQhqIgJBMGooAgA2AgAgAEEoaiACQShqKQMANwIAIABBIGogAkEgaikDADcCACAAQRhqIAJBGGopAwA3AgAgAEEQaiACQRBqKQMANwIAIABBCGogAkEIaikDADcCACAAQTdqIANB2gFqLQAAOgAAIAEhBwsgACAHOgA0IANBkAJqJAALvAwCIH8RfSMAQdADayIEJAAgAioCCCEoIAIqAgQhKSACKgIAISogASgCACIIKgJkISQgCCoCaCEmIAgqAmwhJSABKAIEIQ4gASgCCCIFKAIEIQcgBSgCCCECIAEoAgwhASAEIAUoAgBBA3QiBjYC0AIgBCABNgLMAiAEIAJBA3QiBTYCyAIgBCAHQQN0IgI2AsQCIAQgBjYCwAIgBCAFNgKwAiAEIAI2AqwCIAQgBjYCqAIgBCAONgKkAiAEIAg2AqACIARBADYCkAEgBEEANgIAIAQgBkEIaiIBNgLUAiAEIAVBCGo2ArwCIAQgAkEIajYCuAIgBCABNgK0AiAlQwAAAD+UIi+MITAgJkMAAAA/lCIxjCEyICRDAAAAP5QiM4whNCAEQRBqIRIgBEH4AGohEyAEQegAaiEUIARB3ABqIRUgBEHAAmohDyAEQbQCaiEWIARBqAJqIRcgBEGQAWohHkP//39/ISsgKiEsICkhLSAoIS4DQCAEQagDaiAEEIYCAkACQCAEKAKoA0UEQCAEKAKgAiIZRQ0BIAQoAqwCIhAgBCgCuAIiGiAQIBpKGyEbIAQoAqQCIRwgBCgCzAIhHSAEKALQAiIFIAQoAtQCIgEgASAFSBshHyAEKAIoIQcgBCgCJCEIIAQoAgwhCSAEKAIcIQogBCgCCCEMIAQoAiAhDQNAIAUgH0YNAiAVIBcpAgA3AgAgFCAWKQIANwIAIBMgDykCADcCACAVQQhqIBdBCGooAgA2AgAgFEEIaiAWQQhqKAIANgIAIBNBCGogD0EIaiIgKAIANgIAIAQgHDYCWCAEIBk2AlRBACELIARBADYCLCAEQgE3AgAgBCAFNgJ0IAQgBUEBaiIhNgLQAiAEIBo2AowBIAQgEDYCiAEgBCAdNgKEASAEKAJwISIgBCgCZCEjIBAhBiAIIQICfwJAAkADQAJAIAtFDQAgAiAHTg0AIAkgAkEGdGogCkEDdGogBCgCEGsgBCgCFEEDdGsgBCgCGEEGdGshAQNAIAFB/wNLDQMgASAMai0AACIOQcAARw0EIAFBQGshASAHIAJBAWoiAkcNAAsgByECCyAGIBtHBEAgEiAPKQIANwIAIBJBCGogICgCADYCACAiIQcgHSENIAUhCSAcIQwgBiIKQQFqIQYgGSELICMhAgwBCwsgBCAbNgKIASAEIAI2AiQgBCAHNgIoIAQgDTYCICAEIAo2AhwgBCAJNgIMIAQgDDYCCCAEQgA3AgAgAiEIQQAMAgsgAUGABEGs4MMAEIgLAAsgBCAGNgKIASAEIAc2AiggBCANNgIgIAQgDDYCCCAEIAJBAWoiCDYCJCAEIAs2AgQgArJDAAAAP5IgCyoCbJQhJSAEIAo2AhwgCrJDAAAAP5IgCyoCaJQhJiAEIAk2AgwgCbJDAAAAP5IgCyoCZJQhJEEBCyEGIAQgDjoAzAMgBCAlOALIAyAEICY4AsQDIAQgJDgCwAMgBCACNgK8AyAEIAo2ArgDIAQgCTYCtAMgBCABNgKwAyAEIA02AqwDIAQgBjYCqAMgISEFIAZFDQALCyAEQdgCaiICQSBqIARBqANqIgFBIGopAgA3AwAgAkEYaiABQRhqKQIANwMAIAJBEGogAUEQaikCADcDACACQQhqIAFBCGopAgA3AwAgBCAEKQKoAzcD2AIMAQsgBEHYAmogHhCGAgsgBCgC2AJBAUYEQCAEKALgAiECIAQoAtwCIQEgBCoC8AIhJyAEKgL0AiEmIAQgKCAEKgL4AiIkkzgCjAMgBCApICaTOAKIAyAEICogJ5M4AoQDIAQgLzgCpAMgBCAxOAKgAyAEIDM4ApwDIAQgMDgCmAMgBCAyOAKUAyAEIDQ4ApADIARBqANqIARBkANqIARBhANqIAMQiwMgKyAnIAQqAqgDkiInICqTIiUgJZQgJiAEKgKsA5IiJiApkyIlICWUkiAkIAQqArADkiIlICiTIiQgJJSSkSIkXkUNASAELQC0AyEYIAFBCXQgAmohESAnISwgJiEtICUhLiAkISsMAQsLQQIhASAAICtD//9/f10EfyAAIBE2AhAgACAuOAIIIAAgLTgCBCAAICw4AgAgGAVBAgs6AAwgBEHQA2okAAvpCwIIfxJ9IwBBwAFrIgYkACAGQQA2AiAgBkIANwIYIAZCgICAgICAgMA/NwIQIAZCADcCCAJAAkACQAJAAkAgBCoCDCIOIA6UIAQqAhAiECAQlJIgBCoCFCIRIBGUkiIPQwAAAABbDQAgD5EiFIsiD0MAAIB/XARAIA9DAAAANF8NASAPIA9DAAAANJRfDQELIAQqAgAhFSAEKgIEIRYgBCoCCCEXIAZBJGoiBEEIaiIHIBEgFJUiHYw4AgAgBiAQIBSVIh6MOAIoIAYgDiAUlSIfjDgCJCAGQThqIgkgBygCADYCACAGIAYpAiQ3AzAgBkE8aiAGQQhqIAEgAiAEENcDIANBADYCvAEgA0EANgKsASADIAYpAkg3AhwgA0EkaiAGQdAAaigCADYCACADIAYpAlQ3AiggA0EwaiAGQdwAaigCADYCACADIAYqAkQgF5M4AhggAyAGKgJAIBaTOAIUIAMgBioCPCAVkzgCECAGQeAAaiADEEIgBioCYCIQIBCUIAYqAmQiESARlJIgBioCaCISIBKUkiIPQwAAyCteBEAgBkGcAWoiBEEYaiEHIARBDGohCiAGQfgAaiIEQRhqIQsgBEEMaiEMQ///f38hDkHkACENA0AgBiASjCAPkSIPlSIaOAJ0IAYgEYwgD5UiGzgCcCAGIBCMIA+VIhw4AmwCQCAOIA9fIghFBEAgBkH4AGogBkEIaiABIAIgBkHsAGoQ1wMgBioCgAEhEiAGKgJ8IREgBioCeCEQDAELIAZBADYCmAEgBkIANwKQASAGIBIgF5IiEjgCjAEgBiARIBaSIhE4AogBIAYgECAVkiIQOAKEASAGIBI4AoABIAYgETgCfCAGIBA4AnggGEMAAAAAXg0FCwJAAkACQCAdIBqUIB4gG5QgHyAclJKSIhNDAAAAAFsNACATiyIOQwAAgH9cBEAgDkMAAAA0Xw0BIA4gDkMAAAA0lF8NAQsgGiASIBeTlCAbIBEgFpOUIBwgECAVk5SSkiATlSIOQwAAAABgRQ0AIBNDAAAAAF0gDkMAAAAAXnENASAIRQ0CIABBADYCAAwJC0EAIQQgE0MAAKA1Xg0HIAgNBwwBCyAJIAZB9ABqKAIANgIAIAYgBikCbDcDMCAFIBggDpIiGCAUlV0EQCAAQQA2AgAMCAsgFyAdIA6UIhOSIRcgFiAeIA6UIhmSIRYgFSAfIA6UIg6SIRVD//9/fyEPIAMoArwBIghBAWoiBEUNACADIAMqAhAgDpM4AhAgAyADKgIUIBmTOAIUIAMgAyoCGCATkzgCGCAIRQ0AIAMgAyoCNCAOkzgCNCADIAMqAjggGZM4AjggAyADKgI8IBOTOAI8IARBAkYNACADIAMqAlggDpM4AlggAyADKgJcIBmTOAJcIAMgAyoCYCATkzgCYCAEQQNGDQAgAyADKgJ8IA6TOAJ8IAMgAyoCgAEgGZM4AoABIAMgAyoChAEgE5M4AoQBIARBBEYNAEEEQQRB0I3DABCICwALIBogEiAXkyISlCAbIBEgFpMiEZQgHCAQIBWTIhCUkpIiDrxB/////wdxQf////sHSwRAQayLwwBBJ0Hoi8MAENYMAAtBACEEIA8gDpIgD0O9G486lF8NBSAKIAwpAgA3AgAgByALKQIANwIAIApBCGogDEEIaigCADYCACAHQQhqIAtBCGooAgA2AgAgBiASOAKkASAGIBE4AqABIAYgEDgCnAEgAyAGQZwBahDGAxogBkHgAGogAxBCIAMoArwBQQNGDQMgDUEBayINRQ0FIA8hDiAGKgJgIhAgEJQgBioCZCIRIBGUkiAGKgJoIhIgEpSSIg9DAADIK14NAAsLIAAgBikDMDcCCCAAQQE2AgAgACAYIBSVOAIEIABBEGogCSgCADYCAAwECyAAQQA2AgAMAwsgDkMAAKC1Xw0BCyAAIAYpAzA3AgggACAYIBSVOAIEIABBEGogBkE4aigCADYCAEEBIQQLIAAgBDYCAAsgBkHAAWokAAv+CwMJfwx9An4jAEEQayIDJAACQCAAKAIgIgQgAU0NACAAKAIcIgcgAUEDdGoiASgCACECIAFBADYCACACRQ0AIAEoAgQhBSAAIAAoAiRBAWsiATYCJCABRQRAIABBADYCFCAAQQA2AggMAQsgBUEBcyEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBAk8EQCAAKAIUIgYgBUEBdiIBTQ0BIAAoAggiBSABTQ0CIAAoAhAiCiABQQJ0aigCACECIAMgACgCBCIJIAFBBnRqIgA2AgggAyAAQSBqNgIMIANBCGogCEEBcUECdGooAgAiACgCDCEBIAAoAhxB/////wNxQQFHDQQgASAETw0DIAcgAUEDdGoiASgCAEUNAyABIAI2AgQMCgsgACgCCCIGRQ0EIAMgACgCBCIBNgIIIAMgAUEgaiICNgIMIANBCGogCEECdGoiCSgCACgCHEH/////A3FBAUYEQCAFQQFxRQRAIAEgAikDADcDACABQQhqIAJBCGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAFBGGogAkEYaikDADcDACABKAIsIgAgBE8NByAHIABBA3RqIgAoAgBBAUcNByAAQQA2AgQLIAJCADcDACACQRhqQgA3AwAgAkEQakIANwMAIAJBCGpCADcDAAwNCyADIAI2AgwgAyABNgIIIAkoAgAoAgwiAiAGTw0GIAFBGGogASACQQZ0aiICQRhqKQMANwMAIAFBCGogAkEIaikDADcDACABIAIpAwA3AwAgAUEQaiACQRBqKQMANwMAIAFBIGogAkEgaikDADcDACABQShqIAJBKGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBOGogAkE4aikDADcDACABKAIMIQIgASgCHEH/////A3FBAUYEQCACIARPDQggByACQQN0aiICKAIARQ0IIAJBADYCBAwMCyAAKAIUIgYgAksNCiACIAZByO3CABCICwALIAEgBkH47cIAEIgLAAsgASAFQYjuwgAQiAsAC0Go3cIAQQ9BmO7CABDXCwALIAEgBkkNBCABIAZBqO7CABCICwALQQBBAEGI7cIAEIgLAAtBqN3CAEEPQZjtwgAQ1wsACyACIAZBqO3CABCICwALQajdwgBBD0G47cIAENcLAAsgCiABQQJ0aiACNgIACwJAAkAgAkEBdiIBIAVJBEAgAyAJIAFBBnRqIgQ2AgggAyAEQSBqNgIMIABBEGopAwAhFyADQQhqIAJBAXFBAnRqKAIAIgQgACkDADcDACAAQRhqKQMAIRggBEEIaiAAQQhqKQMANwMAIARBEGogFzcDACAEQRhqIBg3AwAgAkECSQ0FA0AgASAGTw0DIAogAUECdGooAgAiBEEBdiIAIAVPDQIgCSABQQZ0aiICKAI8IQcgAigCHCEIIAIqAjghCyACKgIYIQwgAioCNCENIAIqAhQhDiACKgIwIQ8gAioCECEQIAIqAighESACKgIIIRIgAioCJCETIAIqAgQhFCACKgIgIRUgAioCACEWIAMgCSAAQQZ0aiICNgIIIAMgAkEgajYCDCADQQhqIARBAXFBAnRqKAIAIgIgB0H/////A3EgCEH/////A3FqIAcgCHJBgICAgHxxcjYCHCACIAwgCyALIAxfGzgCGCACIA4gDSANIA5fGzgCFCACIBAgDyAPIBBfGzgCECACIAE2AgwgAiASIBEgESASYBs4AgggAiAUIBMgEyAUYBs4AgQgAiAWIBUgFSAWYBs4AgAgACEBIARBAk8NAAsMBQsgASAFQbjuwgAQiAsACyAAIAVB2O7CABCICwALIAEgBkHI7sIAEIgLAAsgACgCECACQQJ0akEANgIACyABKAIsIQIgASgCPEH/////A3FBAUYEQAJAIAIgBE8NACAHIAJBA3RqIgAoAgBFDQAgAEEBNgIEDAILQajdwgBBD0HY7cIAENcLAAsgAiAAKAIUIgFPBEAgAiABQejtwgAQiAsACyAAKAIQIAJBAnRqQQE2AgALIANBEGokAAuZCwIbfQJ/IwBBMGsiICQAAkACQCADKgIMIgcgB5QgAyoCECIGIAaUkiADKgIUIgogCpSSIghDAAAAAFsNACAIkSITiyIIQwAAgH9cBEAgCEMAAAA0Xw0BIAggCEMAAAA0lF8NAQsgCiATlSIVjCEPIAYgE5UiFowhCiAHIBOVIheMIQggAyoCCCEQIAMqAgQhESADKgIAIRJDAACAPyELQwAAAAAhByACQQA2ArwBIAJBADYCrAEgAkEANgIwIAJCADcCKCAVIBWUIBcgF5QgFiAWlJKSIgZDAAAAAF4EQCAPIAaRIgaVIQcgCiAGlSELIAggBpUhBQsgBSABKgIAIhqUIAsgASoCBCIblJIgByABKgIIIhyUkiAFIAEqAgwiHZQgCyABKgIQIh6UkiAHIAEqAhQiH5SSXiEDIAIgByABKgIYIhSUIBwgHyADG5IiDDgCJCACIAsgFJQgGyAeIAMbkiIHOAIgIAIgBSAUlCAaIB0gAxuSIgY4AhwgAiAMIBCTOAIYIAIgByARkzgCFCACIAYgEpM4AhAgICACEEJD//9/fyEFQeQAIQECQAJAA0AgICoCACIJIAmUICAqAgQiDSANlJIgICoCCCIOIA6UkiIGQwAAyCteRQ0BIA6MIAaRIguVIQwgDYwgC5UhByAJjCALlSEGAn0gBSALXyIhRQRAQwAAAAAhCUMAAIA/IQ1DAAAAACEFIAwgDJQgBiAGlCAHIAeUkpIiDkMAAAAAXgRAIAwgDpEiBZUhCSAHIAWVIQ0gBiAFlSEFCyAUIAmUIBwgHyAcIAmUIBsgDZQgGiAFlJKSIB8gCZQgHiANlCAdIAWUkpJeIgMbkiEZIBQgBZQgGiAdIAMbkiEJIBQgDZQgGyAeIAMbkgwBCyAYQwAAAABeDQIgECAOkiEZIBIgCZIhCSARIA2SCyENAkACQAJAIBUgDJQgFyAGlCAWIAeUkpIiDkMAAAAAWw0AIA6LIgVDAACAf1wEQCAFQwAAADRfDQEgBSAFQwAAADSUXw0BCyAGIAkgEpOUIAcgDSARk5SSIAwgGSAQk5SSIA6VIgVDAAAAAGBFDQAgDkMAAAAAXSAFQwAAAABecQ0BICFFDQJBACEDDAULQQAhAyAhDQQgDkMAAKA1Xg0EDAELIAQgGCAFkiIYIBOVXQRAQQAhAwwECyAQIBUgBZQiD5IhECARIBYgBZQiCpIhESASIBcgBZQiCJIhEkP//39/IQsCQCACKAK8ASIDQQFqIiFFDQAgAiACKgIQIAiTOAIQIAIgAioCFCAKkzgCFCACIAIqAhggD5M4AhggA0UNACACIAIqAjQgCJM4AjQgAiACKgI4IAqTOAI4IAIgAioCPCAPkzgCPCAhQQJGDQAgAiACKgJYIAiTOAJYIAIgAioCXCAKkzgCXCACIAIqAmAgD5M4AmAgIUEDRg0AIAIgAioCfCAIkzgCfCACIAIqAoABIAqTOAKAASACIAIqAoQBIA+TOAKEASAMIQ8gByEKIAYhCCAhQQRGDQFBBEEEQdCNwwAQiAsACyAMIQ8gByEKIAYhCAsgDCAZIBCTIgyUIAcgDSARkyIHlCAGIAkgEpMiBpSSkiIFvEH/////B3FB////+wdLBEBBrIvDAEEnQeiLwwAQ1gwAC0EAIQMgCyAFkiALQ70bjzqUXw0CICBBADYCLCAgQgA3AiQgICAZOAIgICAgDTgCHCAgIAk4AhggICAMOAIUICAgBzgCECAgIAY4AgwgAiAgQQxqEMYDGiAgIAIQQiACKAK8AUEDRwRAIAshBSABQQFrIgENAQwDCwsgBUMAAKC1Xw0BCyAAIA84AhAgACAKOAIMIAAgCDgCCCAAIBggE5U4AgRBASEDCyAAIAM2AgAMAQsgAEEANgIACyAgQTBqJAAL1w8DEX8BfQF+IwBB0ARrIgIkACAAKAIAKAIAIQkgACgCBCIHKAIAQQFGBEAgBygCBCIDQf//A3EhCyADQRB2IQxBASEDCyAJQSBJIQcgACgCCCIIKAIAQQFGBEAgCCkDCCIUQiCIpyEEIBSnIQZBASEFCyAJQQAgBxshDUEBIQgCQCAAKAIMIgkoAgBBAUcEQEEAIQgMAQsgCSkDCCIUQiCIpyEOIBSnIQ8LIAJBGGoiB0EIaiIJIAAoAhAoAgAiCkEIaigCADYCACACQSxqIAAoAhQoAgAiEEEIaigCADYCACACIAopAgA3AxggAiAQKQIANwIkIAAoAhghECAAKAIkKAIAIREgACgCKCgCACESIAAoAiAoAgAhCiACIAAoAhwoAgA2AmwgAkGo0MEANgJgIAIgATYCXCACIA02AlggAiAONgJUIAIgDzYCUCACIAg2AkwgAiAENgJIIAIgBjYCRCACIAU2AkAgAiALNgI8IAIgDDYCOCACIAM2AjQgCigCPCEDIAooAkAhASACIBI2AnQgAiARNgJwIAIgATYCaCACIAMgASgCCEEBa0F4cWpBCGo2AmQgAkH4AGohASAAKAIsKgIAIRMgACgCMC0AACELQQAhA0EAIQYjAEHQAGsiACQAIAJBNGoiDCgCOCEEIABBGGoiCCIFQRBqIg0gB0EQaiIOKQIANwMAIAVBCGoiDyAJKQIANwMAIAAgEzgCMCAAIAcpAgA3AxgCf0EAIAQoAghFDQAaIABBzABqIhEgBCgCBCIDQRhqKAIANgIAIAAgAykCEDcCRCAAQThqIgpBCGogA0EIaigCADYCACAAIAMpAgA3AzggAEEQaiAKIAggE0EBEMoEIANBACAAKAIQQQFGGyEGQQAgAygCPEH/////A3FFDQAaIBEgA0E4aigCADYCACAAQUBrIANBKGooAgA2AgAgACADKQIwNwJEIAAgAykCIDcDOCAAQQhqIAogCCATQQEQygQgA0EgaiEDIAAoAghBAUYLIQUgASAAKQMYNwKQASABQagBaiAAQTBqKAIANgIAIAFBoAFqIA0pAwA3AgAgAUGYAWogDykDADcCACABIAw2AqwBIAEgBjYCjAEgASAENgKIASABIAU2AoQBIAEgAzYCBCABQQA2AgAgASALOgDMASABIBM4AsgBIAEgBykCADcCsAEgAUG4AWogCSkCADcCACABQcABaiAOKQIANwIAIABB0ABqJAAgAkHIAmoiACABQdAB/AoAACACQbQEaiEHIABBsAFqIQsgAkG8BGohCCACQdgDaiEKIABBBGohASAAQYQBaiEJAkACQAJAAkADQCACKALUAyIARQRAIAEhBCAJIQMgAigCzAMiBSIAQSFPBEAgAigC0AIhBCABIQMgAigCzAIhAAsgAEUNAiADIABBAWsiADYCACAEIABBAnRqKAIAIQALIAJBADYC1AMgACgCHEH/////A3FBAUcEQCAAKAIMIgAgAigC0AMiAygCCCIETw0EIAggAygCBCAAQQZ0aiIAKQIQNwIAIAhBCGoiAyAAQRhqKAIANgIAIAJBsARqIgRBCGoiBSAAQQhqKAIANgIAIAIgACkCADcDsAQgAkEQaiAEIAogAioC8ANBARDKBCAAQSBqIQYgAigCEEEBRgRAIAIgADYC1AMLIAggACkCMDcCACADIABBOGooAgA2AgAgBSAGQQhqKAIANgIAIAIgBikCADcDsAQgAkEIaiAC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BEAgDCALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgghLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgwhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhAhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhghLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhwhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAiAhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAiQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAighLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAo1AiwhKyAQKAIIIAtrQQdNBEAgEEEIaiALQQhBAUEBEOIGIBAoAhAhCwsgECgCDCALaiArNwAAIBAgC0EIaiILNgIQIAo1AjAhKyAQKAIIIAtrQQdNBEAgEEEIaiALQQhBAUEBEOIGIBAoAhAhCwsgECgCDCALaiArNwAAIBAgC0EIaiILNgIQIAo1AjQhKyAQKAIIIAtrQQdNBEAgEEEI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IApBADYChAELIAxB4ABqJAALrQwDDn8DfQF+IwBBsANrIgIkACAAKAIAKAIAIQMgACgCBCIGKAIAQQFGBEAgBigCBCIGQf//A3EhBEEBIQkgBkEQdiEFCyADQSBJIQdBACEGIAAoAggiCigCAEEBRgRAIAopAwgiE0IgiKchCCATpyELQQEhBgsgA0EAIAcbIQpBASEDAkAgACgCDCIHKAIAQQFHBEBBACEDDAELIAcpAwgiE0IgiKchDCATpyENCyAAKAIYKAIAIQ4gACgCHCgCACEPIAAoAhQoAgAhByACIAAoAhAoAgA2AkAgAkGI0cEANgI0IAIgATYCMCACIAo2AiwgAiAMNgIoIAIgDTYCJCACIAM2AiAgAiAINgIcIAIgCzYCGCACIAY2AhQgAiAENgIQIAIgBTYCDCACIAk2AgggBygCPCEEIAcoAkAhASACIA82AkggAiAONgJEIAIgATYCPCACIAQgASgCCEEBa0F4cWpBCGo2AjggACgCICEHIAJB+AFqIgFBCGogACgCJCgCACIAQQhqKAIANgIAIAIgACkCADcD+AEgAkHMAGohA0EAIQZBACEAQQAhBSABKgIIIRAgASoCBCERIAEqAgAhEgJAIAJBCGoiCSgCOCIIKAIIRQ0AAn9BACASIAgoAgQiBCoCAF0NABpBACASIAQqAhBeDQAaQQAgESAEKgIEXQ0AGkEAIBEgBCoCFF4NABpBAEEAIAQgECAEKgIYXhsgECAEKgIIXRsLIQAgBCgCPEH/////A3FFDQAgBCoCICASXg0AIAQqAjAgEl0NACAEKgIkIBFeDQAgBCoCNCARXQ0AIARBIGohBSAQIAQqAjheRSAQIAQqAihdQX9zcSEGCyADIAk2ApwBIAMgEDgCmAEgAyAROAKUASADIBI4ApABIAMgADYCjAEgAyAINgKIASADIAY2AoQBIAMgBTYCBCADQQA2AgAgAyABKQIANwKgASADQagBaiABQQhqKAIANgIAIAEgA0GsAfwKAAAgAkGYA2ohCSACQfwBaiEBIAJB/AJqIQYCQAJAAkADQCACKAKEAyIARQRAIAEhAyAGIQQgAigC/AIiBSIAQSFPBEAgAigCgAIhAyABIQQgAigC/AEhAAsgAEUNAyAEIABBAWsiADYCACADIABBAnRqKAIAIQALIAJBADYChAMgACgC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AEEANgIIIABCgYCAgBA3AgAgACAGKQM4NwIMIABBFGogBkFAaykDADcCACAAQRxqIAZByABqKQMANwIAIABBJGogBkHQAGopAwA3AgAgAEEsaiAGQdgAaikDADcCACAAQTRqIAZB4ABqKQMANwIAIABBPGogBkHoAGooAgA2AgAgAEEIaiECCyAGQYACaiQAIAIPCxCbDwsACxCcDwALQQRBwABBkMTEACgCACIAQcwIIAAbEQAAAAvNCQIKfwF+IwAiAiEJIAJBQGpBQHEiBCQAAkAgACgCCCIDRQRAIABBADYCFEEAIQMMAQsgACgCBCIFKAIcIQcCQAJAAkACQAJAIAUoAjxB/////wNxIAdB/////wNxakECTQRAIABBADYCFCABQQA2AgggBCAFQThqKQMANwM4IAQgBUEwaikDADcDMCAEIAVBKGopAwA3AyggBCAFQSBqKQMANwMgIAQgBUEYaikDADcDGCAEIAVBEGopAwA3AxAgBCAFQQhqKQMANwMIIAQgBSkDADcDACABKAIARQRAIAFB+OnCABDICAsgAEEMaiEGIAEoAgQiAiAEKQMANwMAIAJBCGogBCkDCDcDACACQRBqIAQpAxA3AwAgAkEYaiAEKQMYNwMAIAJBIGogBCkDIDcDACACQShqIAQpAyg3AwAgAkEwaiAEKQMwNwMAIAJBOGogBCkDODcDACACIAIoAhwiCEH/////B0H/////AyAIQf////97SxtxNgIcIAIoAjwiBEH/////A3EiCA0BDAULIAMgASgCCCIGSwRAIAEoAgAgBiICayADIAJrIghJBEAgASACIAhBwABBwAAQ4wYgASgCCCECCyABKAIEIgogAkEGdGohByAIQQJJBH8gAgUgAyAGQX9zakEGdCILBEAgB0EAIAv8CwALIAogAiADaiAGa0EGdGpBQGohByACIAhqQQFrCyEIIAdCADcDACAHQThqQgA3AwAgB0EwakIANwMAIAdBKGpCADcDACAHQSBqQgA3AwAgB0EYakIANwMAIAdBEGpCADcDACAHQQhqQgA3AwAgBSgCHCEHIAhBAWohAwsgAEEYaiEGIAEgAzYCCCAEQQE2AgAgBSgCLCEDAkAgB0H/////A3FBAUYEQCABKAIEIgJBGGogBUEYaikDADcDACACIAUpAwA3AwAgAkEIaiAFQQhqKQMANwMAIAJBEGogBUEQaikDADcDACACQf////8HQf////8DIAIoAhwiAkH/////e0sbIAJxNgIcDAELIAAgASAGIAAoAhAgACgCFCAFKAIMIARBABCCAiAAKAIIRQ0CCwJAIAAoAgQiAigCPEH/////A3FBAUcEQCAAIAEgBiAAKAIQIAAoAhQgAyAEQQEQggIMAQsgASgCCEUNAyABKAIEIgMgAikDIDcDICADQShqIAJBKGopAwA3AwAgA0EwaiACQTBqKQMANwMAIANBOGogAkE4aikDADcDACABKAIIRQ0EIAEoAgQiAigCPCIDQf////97TQRAIAIgA0H/////A3E2AjwMAQsgAiADQf////8HcTYCPAsgACgCCCIDIAQoAgAiAk8EQCAAIAI2AgggAiEDCyABKAIIIgYgAk8EQCABIAI2AgggAiEGCyACIAAoAhRLDQUgACACNgIUDAULIAIgCEGAgICABHIgCCAEQf////97Sxs2AjwMAwtBAEEAQcjpwgAQiAsAC0EAQQBB2OnCABCICwALQQBBAEHo6cIAEIgLAAsgBigCAEUEQCAGQYjqwgAQuQggACgCCCEDC0EBIQYgAEEBNgIUIAAoAhBBADYCAAsgACAGNgIIIAEgAzYCCCAAKQIAIQwgACABKQIANwIAIAEgDDcCACAJJAAL4QgCBX8ZfSMAQYACayIFJAAgBUG4AWpBADYCACAFQgA3ArABIAVCgoCAgDA3AgggBUKAgICAEDcCACAFQTRqQQBB+AD8CwAgAioCDCIOjCIcIA4gDpQgAioCECIPIA+UkiACKgIUIhAgEJSSkSIWlSIRIAEqAhgiC5QgD4wiHSAWlSITIAEqAhwiHpSSIBCMIh8gFpUiFCABKgIgIheUkiEMIAFBGGohBiABQQxqIQgCfSABKgIAIg0gEZQgEyABKgIEIiCUkiAUIAEqAggiIZSSIhIgESABKgIMIhqUIBMgASoCECIilJIgFCABKgIUIhWUkiIKXkUEQCAIIAYgCiAMXiIJGyEHIBogCyAJGwwBCyAGIQcgCyAMIBJdRQ0AGiABIQcgDQshCiAFQQA2ArwBIAVBADYCrAEgBUEANgIwIAVCADcCKCAFIAcqAgggFCABKgIkIhiUkiACKgIIIhuTIgw4AiQgBSAHKgIEIBMgGJSSIAIqAgQiE5MiEjgCICAFIAogESAYlJIgAioCACIUkyIKOAIcIAUgDDgCGCAFIBI4AhQgBSAKOAIQIAVBwAFqIAEgBSACIAMQnwEgBSgCwAEhAgJAAkACQCAERQRAIAIEQCAFKgLEASIKQwAAAABcBEAgACAFKQLIATcCDCAAIAo4AgggAEEDNgIAIABBFGogBUHQAWooAgA2AgAMBQsgECAWlSIZIBmUIA4gFpUiDiAOlCAPIBaVIg8gD5SSkpEhCiAZIAqVIhAgF5QgCyAOIAqVIhGUIA8gCpUiFyAelJKSIQwCQCAhIBCUIA0gEZQgICAXlJKSIhIgFSAQlCAaIBGUICIgF5SSkiIKXkUEQCAIIAYgCiAMXiICGyEGIBogCyACGyELDAELIAwgEl1FDQAgDSELIAEhBgsgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggBioCCCENIAYqAgQhCiAFIB84AugBIAUgHTgC5AEgBSAcOALgASAFIBsgGSAOIBEgGJQgC5IiDCAUk5QgDyAKIBcgGJSSIhIgE5OUkiAZIA0gECAYlJIiDSAbk5SSQ28SgzqSIhWUkiIKOALcASAFIA0gCpMiCzgCJCAFIBMgDyAVlJIiCjgC2AEgBSASIAqTIg04AiAgBSAUIA4gFZSSIgo4AtQBIAUgDCAKkyIKOAIcIAUgCzgCGCAFIA04AhQgBSAKOAIQIAVB7AFqIAEgBSAFQdQBaiAVQ28SgzqSEJ8BIAUoAuwBQQFHDQIgAyAVIAUqAvABkyIDYEUEQCAAQQQ2AgAMBQsgACADOAIIIABBAzYCACAAIAUqAvwBjDgCFCAAIAUqAvgBjDgCECAAIAUqAvQBjDgCDAwECyAAQQQ2AgAMAwsgAg0BIABBBDYCAAwCCyAAQQQ2AgAMAQsgACAFKQLIATcCDCAAIAUqAsQBOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIACyAFQYACaiQAC9AIAQh/AkAgAUGACkkEQCABQQV2IQcCQAJAIAAoAqABIgUEQCAFQQFrIQMgBUECdCAAakEEayECIAUgB2pBAnQgAGpBBGshBiAFQSlJIQUDQCAFRQ0CIAMgB2oiBEEoTw0DIAYgAigCADYCACAGQQRrIQYgAkEEayECIANBAWsiA0F/Rw0ACwsgAUEgSQ0DIABBADYCACAHQQFqIgJBAkYNAyAAQQA2AgQgAkEDRg0DIABBADYCCCACQQRGDQMgAEEANgIMIAJBBUYNAyAAQQA2AhAgAkEGRg0DIABBADYCFCACQQdGDQMgAEEANgIYIAJBCEYNAyAAQQA2AhwgAkEJRg0DIABBADYCICACQQpGDQMgAEEANgIkIAJBC0YNAyAAQQA2AiggAkEMRg0DIABBADYCLCACQQ1GDQMgAEEANgIwIAJBDkYNAyAAQQA2AjQgAkEPRg0DIABBADYCOCACQRBGDQMgAEEANgI8IAJBEUYNAyAAQQA2AkAgAkESRg0DIABBADYCRCACQRNGDQMgAEEANgJIIAJBFEYNAyAAQQA2AkwgAkEVRg0DIABBADYCUCACQRZGDQMgAEEANgJUIAJBF0YNAyAAQQA2AlggAkEYRg0DIABBADYCXCACQRlGDQMgAEEANgJgIAJBGkYNAyAAQQA2AmQgAkEbRg0DIABBADYCaCACQRxGDQMgAEEANgJsIAJBHUYNAyAAQQA2AnAgAkEeRg0DIABBADYCdCACQR9GDQMgAEEANgJ4IAJBIEYNAyAAQQA2AnwgAkEhRg0DIABBADYCgAEgAkEiRg0DIABBADYChAEgAkEjRg0DIABBADYCiAEgAkEkRg0DIABBADYCjAEgAkElRg0DIABBADYCkAEgAkEmRg0DIABBADYClAEgAkEnRg0DIABBADYCmAEgAkEoRg0DIABBADYCnAEgAkEpRg0DQShBKEGAvMQAEIgLAAsgA0EoQYC8xAAQiAsACyAEQShBgLzEABCICwALQaq8xABBHUGAvMQAENYMAAsgACgCoAEiAyAHaiECIAFBH3EiBkUEQCAAIAI2AqABIAAPCwJAIAJBAWsiBEEnTQRAIAIhBSAAIARBAnRqKAIAQQAgAWsiAXYiBEUNASACQSdNBEAgACACQQJ0aiAENgIAIAJBAWohBQwCCyACQShBgLzEABCICwALIARBKEGAvMQAEIgLAAsCQCAHQQFqIgggAk8NACABQR9xIQEgA0EBcUUEQCAAIAJBAWsiAkECdGoiBCAEKAIAIAZ0IARBBGsoAgAgAXZyNgIACyADQQJGDQAgAkECdCAAakEMayEDA0AgA0EIaiIEIAQoAgAgBnQgA0EEaiIEKAIAIgkgAXZyNgIAIAQgCSAGdCADKAIAIAF2cjYCACADQQhrIQMgCCACQQJrIgJJDQALCyAAIAdBAnRqIgEgASgCACAGdDYCACAAIAU2AqABIAALowgCD30DfyMAQUBqIgQkACAAKAIEIhUoAgAhFiAVKAIEIhcoAgAhBQJAAkACQAJAAkAgAQRAIAQgASoCCCIHIAUqAggiC5QgASoCBCIJIAUqAgQiDJQgASoCACIIIAUqAgAiBpQgASoCDCIKIAUqAgwiDZSSkpI4AiwgBCAJIAaUIAogC5QgCCAMlJOSIAcgDZSTOAIoIAQgCiAMlCAIIAuUkiAJIA2UkyAHIAaUkzgCJCAEIAcgDJQgCiAGlCAIIA2UkyAJIAuUk5I4AiAgCSAFKgIQIAEqAhAiE5MiC5QgCCAFKgIUIAEqAhQiFJMiDJSTIgYgBpIhDSAHIAyUIAkgBSoCGCABKgIYIg+TIgaUkyIQIBCSIRAgBCAGIAogDZQgCSAQlCAIIAggBpQgByALlJMiBiAGkiIGlJOSkjgCOCAEIAwgCiAGlCAIIA2UIAcgEJSTkpI4AjQgBCALIAogEJQgByAGlCAJIA2Uk5KSOAIwIARBBGogFiAEQSBqIAIgAyAVKAIIIBUoAgwgFSgCECoCABBmIAQoAgQiAUEDRw0BDAQLIARBIGoiAUEYaiAFQRhqKAIANgIAIAFBEGogBUEQaikCADcDACABQQhqIAVBCGopAgA3AwAgBCAFKQIANwMgIARBBGogFiABIAIgAyAVKAIIIBUoAgwgFSgCECoCABBmIAQoAgQiAUEDRg0DQ///f/8hDiAEKgIcIQ0gBCoCGCEQIAQqAhQhEiAEKgIQIQYgBCoCDCELIAQqAgghDCABQQFrDgIBAgQLQ///f/8hDiAEKgIcIQ0gBCoCGCEQIAQqAhQhEiAEKgIQIQYgBCoCDCELIAQqAgghDAJAIAFBAWsOAgACBAsgDyAGIAogCCALlCAJIAyUkyIOIA6SIg6UIAggByAMlCAIIAaUkyIPIA+SIg+UIAkgCSAGlCAHIAuUkyIGIAaSIhGUk5KSkiEGIBQgCyAKIA+UIAcgEZQgCCAOlJOSkpIhCyATIAwgCiARlCAJIA6UIAcgD5STkpKSIQwLIBcoAgAiASoCDCEHIAEqAhggDSAHIBAgASoCACIJlCASIAEqAgQiCJSTIgogCpIiDpQgCSASIAEqAggiCpQgDSAJlJMiDyAPkiIPlCAIIA0gCJQgECAKlJMiESARkiIRlJOSkpIgBpMiEyATlCABKgIQIBIgByARlCAIIA6UIAogD5STkpKSIAyTIgggCJQgASoCFCAQIAcgD5QgCiARlCAJIA6Uk5KSkiALkyIHIAeUkpKRIQ5BASEBDAILQ///f38hDkECIQEMAQtD//9/fyEOQQIhAQsgACgCACIAIA04AhwgACAQOAIYIAAgEjgCFCAAIAY4AhAgACALOAIMIAAgDDgCCCAAIAE2AgQgACAOOAIAIARBQGskAAu2GAMVfwF+AXwjAEHgAGsiHCQAAkACQAJAIABFDQAgAEEQayIfKAIAQQFqIR4gHyAeNgIAIB5FDQEgACgCAA0CIABBfzYCACAcIB82AgggHCAANgIEIBwgAEEQaiIeNgIAIAJFDQAgAkEIayIgKAIAQQFqIRsgICAbNgIAIBtFDQEgAigCACIbQX9GDQIgAiAbQQFqNgIAIBwgIDYCFCAcIAI2AhAgHCACQQRqIh02AgwgA0UNACADQQhrIiEoAgBBAWohGyAhIBs2AgAgG0UNASADKAIAIhtBf0YNAiADIBtBAWo2AgAgHCAhNgIgIBwgAzYCHCAcIANBBGoiKDYCGCAHRQ0AIAdBCGsiIigCAEEBaiEbICIgGzYCACAbRQ0BIAcoAgAiG0F/Rg0CIAcgG0EBajYCACAcICI2AiwgHCAHNgIoIBwgB0EEaiIrNgIkIAhFDQAgCEEIayIjKAIAQQFqIRsgIyAbNgIAIBtFDQEgCCgCACIbQX9GDQIgCCAbQQFqNgIAIBwgIzYCOCAcIAg2AjQgHCAIQQRqIik2AjAgCUUNACAJQQhrIiQoAgBBAWohGyAkIBs2AgAgG0UNASAJKAIAIhtBf0YNAiAJIBtBAWo2AgAgHCAkNgJEIBwgCTYCQCAcIAlBBGoiKjYCPCAKRQ0AIApBCGsiJSgCAEEBaiEbICUgGzYCACAbRQ0BIAooAgAiG0F/Rg0CIAogG0EBajYCACAcICU2AlAgHCAKNgJMIBwgCkEEaiIsNgJIIAtFDQAgC0EIayImKAIAQQFqIRsgJiAbNgIAIBtFDQEgCygCACIbQX9GDQIgCyAbQQFqNgIAIBwgJjYCXCAcIAs2AlggHCALQQRqIi02AlQgFEEDTQRAIwBBsAtrIhskACAbQRBqIidBEGoiLiAdKQIANwMAICdBCGoiLyAoQQhqKQIANwMAICdBGGoiJyAdQQhqKAIANgIAIBsgKCkCADcDECAbQcAIaiIdQgA3AhQgHUIANwNQIB1CgICAgICAgMA/NwNIIB1CADcDQCAdQQA6AI4BIB0gFDoAjQEgHUEANgJ8IB1CgICA/AM3AnQgHUIANwMAIB1BLGpBADYCACAdQSRqQgA3AgAgHUEcakIANwIAIB1B2ABqQgA3AwAgHUHgAGpCADcDACAdQegAakIANwMAIB1B8ABqQQA2AgAgHUEIakIANwMAIB1BgYCACDYCiAEgHUGAgID8AzYCECAdQQA6AI8BIB1CADcDgAEgHUEAOgCMASAdQgA3AzAgHUIANwM4IBtBwAFqIhRBEGogHUEQaikDADcDACAUQRhqIB1BGGopAwA3AwAgFEEgaiAdQSBqKQMANwMAIBRBKGogHUEoaikDADcDACAUQTBqIB1BMGopAwA3AwAgFEE4aiAdQThqKQMANwMAIBsgAUEARzoAywkgGyAbKQPACDcDwAEgGyAbKQPICDcDyAEgGykDyAkhMCAbQZgCaiAnKAIANgIAIBtBkAJqIC4pAwA3AwAgG0GIAmogLykDADcDACAbQaQCaiApQQhqKAIANgIAIBtBsAJqICpBCGooAgA2AgAgGyAbKQMQNwOAAiAbICkpAgA3ApwCIBsgKikCADcDqAIgG0EwaiAUQfQA/AoAACAbIDBCgICA+P//P4MgFUEAR61CgAJCACAWG4RCgIAEQgAgGBuEIBmtQjiGhIQgMEKAgICAgICA4ACDIAxFrUIAQgIgDRuEQgBCBCAOG4RCAEIIIA8bhEIAQhAgEBuEQgBCICARG4RCMIZCgICAgICAwP8Ag4SENwO4ASAbIBo2ArQBIBsgFzgCsAEgGyATOAKsASAbIBI4AqgBIBsgBDgCpAECfyAGRQRAIBtBtAJqICsgBSAsIC0Q8gkgHSAbQeAAakHgAPwKAAAgG0HYBWogG0HAAmopAgA3AwAgG0HgBWogG0HIAmopAgA3AwAgG0HoBWogG0HQAmopAgA3AwAgG0HwBWogG0HYAmopAgA3AwAgGyAbKQK4AjcD0AUgGyoCtAIhBUEADAELIBtB0AVqIgFBIGogG0HoAWopAwA3AwAgAUEYaiAbQcABaiIGQSBqKQMANwMAIAFBEGogBkEYaikDADcDACAbQdgFaiAGQRBqKQMANwMAIBsgGykDyAE3A9AFIBtBwAhqIBtB4ABqQeAA/AoAAEEBCyEBIBtBMGoiDEEQaiAbQdgFaikDADcDACAMQRhqIBtB0AVqIgZBEGopAwA3AwAgDEEgaiAGQRhqKQMANwMAIBtB2ABqIAZBIGopAwA3AwAgGyAFOAI0IBsgATYCMCAbIBspA9AFNwM4IBtB4ABqIBtBwAhqIhZB4AD8CgAAIBtB4AJqIgEgDBDaASABKALYAiIMBEAgASgC3AIgDEEDdEEEEIgPCyABQQA2AuACIAFCgICAgMAANwPYAiABQv////8PNwMIIAFCfzcDACAbIBsoApwFQf8BcjYCnAUgBiABQfAC/AoAACAWIB5B/AJqIg8gBhCoBgJ/IBsoApgLQYCAgIB4RwRAIBtBCGohGSMAQZADayIGJAAgDygCECIBQQF0IRAgDygCBCEUIA8oAgAhFSABIQ0gASAPKAIIIgwgAWsiDksEfwJAIAFBqtWqAUsEf0EABSABQYAGbCEOIAYgDAR/IAYgDEGAA2w2AogDIAYgDygCDDYCgANBEAVBAAs2AoQDIAZB9AJqQRAgDiAGQYADahD0CSAGKAL0AkEBRw0BIAYoAvwCIQwgBigC+AILIAxBkL/BABDTDQALIAYoAvgCIQwgDyAQNgIIIA8gDDYCDCABBSAOCyAQIAFrIgxBACAMIBBNGyIMSQRAIA9BCGogASAMQRBBgAMQ4gYgDygCECENCwJAIAFFDQAgDygCDCEOIBBBAWshGAJAIAFBAXFFBEAgASEMDAELIA4gDUGAA2xqIhEgFCABQQFqIgwgASAYRiIaGzYCCCARIBVBASAaGzYCBCARQQA2AgAgDUEBaiENCyABQQFGDQAgDCAQa0EBaiERIA4gDUGAA2xqIQ4DQCAOQQA2AgAgDkGAA2pBADYCACAOQQRqQQEgFSARGzYCACAOQQhqIAxBAWoiGiAUIBEbNgIAIA5BiANqIBQgDEECaiIMIBggGkYiGhs2AgAgDkGEA2ogFUEBIBobNgIAIBFBAmohESAOQYAGaiEOIA1BAmohDSAMIBBHDQALCyAPIAE2AgQgD0EBNgIAIA8gDTYCECAGIA8gFhCoBiAGKALYAkGAgICAeEcEQCAGKAK0AiIABEAgAEEwQQQQiA8LIAYoAtgCIgAEQCAGKALcAiAAQQN0QQQQiA8LQYS+wQBBPiAGQY8DakH0vcEAQcS+wQAQ2goACyAZIAYpAwA3AwAgBkGQA2okACAbKAIMIQYgGygCCAwBCyAbKALECCEGIBsoAsAICyEBAkACQCABIB4oAowDTw0AIB4oAogDIAFBgANsaiIMKAIAQQFHDQAgDCgCBCAGRw0AIAwgDCgCzAJBAXI2AswCIB4oAvgCIgwgHigC8AJGBEAgHkHwAmpB5L3BABC4CAsgHigC9AIgDEEDdGoiDSAGNgIEIA0gATYCACAeIAxBAWo2AvgCIBtBsAtqJAAgAa0gBq1CIIaEvyExDAELQZGAwABBE0GkwMEAENcLAAsgCyALKAIAQQFrNgIAICYgJigCAEEBayIBNgIAIAFFBEAgHEHcAGoQqw0LIAogCigCAEEBazYCACAlICUoAgBBAWsiATYCACABRQRAIBxB0ABqEKgNCyAJIAkoAgBBAWs2AgAgJCAkKAIAQQFrIgE2AgAgAUUEQCAcQcQAahCoDQsgCCAIKAIAQQFrNgIAICMgIygCAEEBayIBNgIAIAFFBEAgHEE4ahCoDQsgByAHKAIAQQFrNgIAICIgIigCAEEBayIBNgIAIAFFBEAgHEEsahCoDQsgAyADKAIAQQFrNgIAICEgISgCAEEBayIBNgIAIAFFBEAgHEEgahCrDQsgAiACKAIAQQFrNgIAICAgICgCAEEBayIBNgIAIAFFBEAgHEEUahCoDQsgAEEANgIAIB8gHygCAEEBayIANgIAIABFBEAgHEEIahDrDAsgHEHgAGokACAxDwtB0NLBAEEZEJoPAAsQmw8LAAsQnA8AC4MIAw5/GH0CfiMAQZABayIIJAAgACoCDCEdIAEqAgQhHyAAKgIEIRkgASoCCCEgIAAqAgAhGiABKgIAISEgACoCCCEbIAhBCGoiCkEAQdgA/AsAIAggICAdIBkgIZQgGiAflJMiFyAXkiIXlCAZIBsgH5QgGSAglJMiHCAckiIclCAaIBogIJQgGyAhlJMiFiAWkiIWlJOSkiIijCIjOAJoIAggHyAdIBaUIBogF5QgGyAclJOSkiIYjCIkOAJkIAggISAdIByUIBsgFpQgGSAXlJOSkiIXjCIlOAJgIAIgCEHgAGoiCSAKIgIgAxEBACAGKAJEIREgBkIENwJEIAYoAkAhDCAGQQA2AkAgCCgCXCISBEAgBkFAayENIAhBOGohCyAEICKUISYgBCAYlCEnIAQgF5QhKCAJQQxqIQ4gCEH4AGoiAyAIQYQBaiIJIAcbIQ8gCSADIAcbIRAgACoCGCEpIAAqAhQhKiAAKgIQIStBACEJIAIhAEEEIQpBACECA0ACQAJAIAJBBEcEQCAaIABBBGoqAgAiF5QgGSAAKgIAIhyUkyIWIBaSIRYgGyAclCAaIABBCGoqAgAiIpSTIhggGJIhGCAgICkgIiAdIBaUIBogGJQgGSAZICKUIBsgF5STIh4gHpIiHpSTkpKSIiyUICEgKyAcIB0gHpQgGSAWlCAbIBiUk5KSkiItlCAfICogFyAdIBiUIBsgHpQgGiAWlJOSkpIiGJSSkiIWIASTIh4gBV8NAQwCC0EEQQRBqPPCABCICwALIAggLCAgIBaUkzgCgAEgCCAYIB8gFpSTOAJ8IAggLSAhIBaUkzgCeCAIICIgJpM4AowBIAggFyAnkzgCiAEgCCAcICiTOAKEASAIQegAaiITIBBBCGooAgA2AgAgDiAPKQIANwIAIA5BCGogD0EIaigCADYCACAIIBApAgA3A2BBgICAgHwgCygCACIDIAcbIRQgA0GAgICAfCAHGyEVIA0oAgAgCUYEQCANQbjzwgAQkQggBigCRCEKCyAKIAlBJGxqIgMgCCkDYDcCACATKQMAIS4gCEHwAGopAwAhLyADIBQ2AiAgAyAVNgIcIAMgHjgCGCADQRBqIC83AgAgA0EIaiAuNwIAIAYgCUEBaiIJNgJICyAAQQxqIQAgC0EEaiELIBIgAkEBaiICRw0ACwsCQCAHBEAgBiAjOAJUIAYgJDgCUCAGICU4AkwgBiABKQIANwJYIAZB4ABqIAFBCGooAgA2AgAMAQsgBiAjOAJgIAYgJDgCXCAGICU4AlggBkHMAGoiACABKQIANwIAIABBCGogAUEIaigCADYCAAsgDARAIBEgDEEkbEEEEIgPCyAIQZABaiQAC6YIAg9/BX4jAEEwayIFJAAgBSACNgIoIAEoAgwhCiAFIAVBKGo2AiwCQCAKIApBAWoiAk0EQCABKAIEIgsgC0EBakEDdkEHbCALQQhJGyIDQQF2IAJJBEACQAJAAkACfyADQQFqIgMgAiACIANJGyICQQ9PBEAgAkH/////AUsNAkF/IAJBA3RBB25BAWtndkEBagwBC0EEQQhBECACQQhJGyACQQRJGwsiAq1CHH4iEkIgiKcNASASpyIDQXhLDQEgA0EHakF4cSIIIAJBCGoiDGohAyADIAhJDQEgA0H4////B0sNASADQQgQsw4iBg0CQQggA0GQxMQAKAIAIgBBzAggABsRAAAACxCmDCAFKAIkIQIgBSgCICEDDAQLEKYMIAUoAhQhAiAFKAIQIQMMAwsgBiAIaiEGIAwEQCAGQf8BIAz8CwALIAJBAWsiCSACQQN2QQdsIAlBCEkbIQ0CQCAKRQRAIAEoAgAhCAwBCyAGQQhqIQ4gASgCACIIKQMAQn+FQoCBgoSIkKDAgH+DIRIgBSgCKCEPQQAhAiAKIQwgCCEDA0AgElAEQANAIAJBCGohAiADQQhqIgMpAwBCgIGChIiQoMCAf4MiEkKAgYKEiJCgwIB/UQ0ACyASQoCBgoSIkKDAgH+FIRILIA8pAwBChICAgBCFIhVC/////w+DIRMgCCASeqdBA3YgAmoiEEFkbGoiBEEcazUCAELdofHLDIUhFCAEQRhrNQIAQrfTsIUMhSIWIBVCIIgiFX4gBEEUaykCACATIBR+hYUgEyAWfiAUIBV+hUIgiYUiE0IgiCIUQrfTsIUMfiATQv////8PgyITQt2h8csMfoUgFELdofHLDH4gE0K307CFDH6FQiCIhaciESAJcSIEIAZqKQAAQoCBgoSIkKDAgH+DIhNQBEBBCCEHA0AgBCAHaiEEIAdBCGohByAEIAlxIgQgBmopAABCgIGChIiQoMCAf4MiE1ANAAsLIBJCAX0gEoMhEiATeqdBA3YgBGogCXEiBCAGaiwAAEEATgRAIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEECyAEIAZqIBFBGXYiBzoAACAOIARBCGsgCXFqIAc6AAAgBiAEQX9zQRxsaiIEQRhqIAggEEF/c0EcbGoiB0EYaigAADYAACAEQRBqIAdBEGopAAA3AAAgBEEIaiAHQQhqKQAANwAAIAQgBykAADcAACAMQQFrIgwNAAsLIAEgCTYCBCABIAY2AgAgASANIAprNgIIQYGAgIB4IQMgC0UNAiAIIAtBHGxBI2pBeHEiAmsgAiALakEJakEIEIgPDAILIAEgBUEsakGSAkEcEMsCQYGAgIB4IQMMAQsQpgwgBSgCDCECIAUoAgghAwsgACACNgIEIAAgAzYCACAFQTBqJAAL9QgBDX8jAEHgAWsiECQAAkACQAJAIABFDQAgAEEIayIXKAIAQQFqIREgFyARNgIAIBFFDQEgACgCACIRQX9GDQIgACARQQFqNgIAIBAgFzYCECAQIAA2AgwgECAAQQhqIhg2AgggAUUNACABQQhrIhEoAgBBAWohEiARIBI2AgAgEkUNASABKAIAIhJBf0YNAiABIBJBAWo2AgAgECARNgIcIBAgATYCGCAQIAFBBGoiGTYCFCACRQ0AIAJBEGsiEigCAEEBaiETIBIgEzYCACATRQ0BIAIoAgAiE0F/Rg0CIAIgE0EBajYCACAQIBI2AiggECACNgIkIBAgAkEQaiIaNgIgIANFDQAgA0EIayITKAIAQQFqIRQgEyAUNgIAIBRFDQEgAygCACIUQX9GDQIgAyAUQQFqNgIAIBAgEzYCNCAQIAM2AjAgECADQQRqIhs2AiwgBEUNACAEQQhrIhQoAgBBAWohFSAUIBU2AgAgFUUNASAEKAIAIhVBf0YNAiAEIBVBAWo2AgAgECAUNgJAIBAgBDYCPCAQIARBBGoiHDYCOCAFRQ0AIAVBCGsiFSgCAEEBaiEWIBUgFjYCACAWRQ0BIAUoAgAiFkF/Rg0CIAUgFkEBajYCACAQIBU2AkwgECAFNgJIIBAgBUEEaiIWNgJEIBAgCDYCUCAQIA82AlQgECAJNgJ8IBAgB0EARzoAdyAQIAY4AnAgECAWNgJsIBAgHDYCaCAQIBs2AmQgECAaNgJgIBAgGTYCXCAQIBg2AlggECAQQdAAajYCeCAQIAr8AzYChAEgECAKRAAAEAAAAPBBYjYCgAEgECAMOQOQASAQIAtBAEetNwOIASAQIA45A6ABIBAgDUEAR603A5gBIBAgEEH3AGo2AtgBIBAgEEHwAGo2AtQBIBAgEEHkAGo2AtABIBAgEEHgAGo2AswBIBAgEEHcAGo2AsgBIBAgEEHYAGo2AsQBIBAgEEH4AGo2AsABIBAgEEHsAGo2ArwBIBAgEEHoAGo2ArgBIBAgEEGYAWo2ArQBIBAgEEGIAWo2ArABIBAgEEGAAWo2AqwBIBAgEEH8AGo2AqgBAkAgDxAEQQFGBEAgECAQQdQAajYC3AEgEEGoAWogEEHcAWoQrwEMAQsgEEGoAWpBABCvAQsgBSAFKAIAQQFrNgIAIBUgFSgCAEEBayIFNgIAIAVFBEAgEEHMAGoQqA0LIAQgBCgCAEEBazYCACAUIBQoAgBBAWsiBDYCACAERQRAIBBBQGsQqA0LIAMgAygCAEEBazYCACATIBMoAgBBAWsiAzYCACADRQRAIBBBNGoQ7wwLIAIgAigCAEEBazYCACASIBIoAgBBAWsiAjYCACACRQRAIBBBKGoQ6wwLIAEgASgCAEEBazYCACARIBEoAgBBAWsiATYCACABRQRAIBBBHGoQ7AwLIAAgACgCAEEBazYCACAXIBcoAgBBAWsiADYCACAARQRAIBBBEGoQ8QwLIBBB4AFqJAAPCxCbDwsACxCcDwALjwgCD38FfiMAQTBrIgUkACAFIAI2AiggASgCDCEKIAUgBUEoajYCLAJAIAogCkEBaiICTQRAIAEoAgQiCyALQQFqQQN2QQdsIAtBCEkbIgNBAXYgAkkEQAJAAkACQAJ/IANBAWoiAyACIAIgA0kbIgJBD08EQCACQf////8BSw0CQX8gAkEDdEEHbkEBa2d2QQFqDAELQQRBCEEQIAJBCEkbIAJBBEkbCyICrUIUfiISQiCIpw0BIBKnIgNBeEsNASADQQdqQXhxIgcgAkEIaiIMaiEDIAMgB0kNASADQfj///8HSw0BIANBCBCzDiIGDQJBCCADQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAUoAiQhAiAFKAIgIQMMBAsQpgwgBSgCFCECIAUoAhAhAwwDCyAGIAdqIQYgDARAIAZB/wEgDPwLAAsgAkEBayIJIAJBA3ZBB2wgCUEISRshDQJAIApFBEAgASgCACEHDAELIAZBCGohDiABKAIAIgcpAwBCf4VCgIGChIiQoMCAf4MhEiAFKAIoIQ9BACECIAohDCAHIQMDQCASUARAA0AgAkEIaiECIANBCGoiAykDAEKAgYKEiJCgwIB/gyISQoCBgoSIkKDAgH9RDQALIBJCgIGChIiQoMCAf4UhEgsgByASeqdBA3YgAmoiEEFsbGoiBEEQazUCAEK307CFDIUhEyAEQQxrKAIAIA8pAwBCg4CAgBCFIhRCIIgiFSATfiAEQRRrNQIAQt2h8csMhSIWIBRC/////w+DIhR+hSATIBR+IBUgFn6FQiCJhSITp3OtIhRC3aHxywx+IBNCIIgiE0K307CFDH6FIBRCt9OwhQx+IBNC3aHxywx+hUIgiIWnIhEgCXEiBCAGaikAAEKAgYKEiJCgwIB/gyITUARAQQghCANAIAQgCGohBCAIQQhqIQggBCAJcSIEIAZqKQAAQoCBgoSIkKDAgH+DIhNQDQALCyASQgF9IBKDIRIgE3qnQQN2IARqIAlxIgQgBmosAABBAE4EQCAGKQMAQoCBgoSIkKDAgH+DeqdBA3YhBAsgBCAGaiARQRl2Igg6AAAgDiAEQQhrIAlxaiAIOgAAIAYgBEF/c0EUbGoiBEEQaiAHIBBBf3NBFGxqIghBEGooAAA2AAAgBEEIaiAIQQhqKQAANwAAIAQgCCkAADcAACAMQQFrIgwNAAsLIAEgCTYCBCABIAY2AgAgASANIAprNgIIQYGAgIB4IQMgC0UNAiAHIAtBFGxBG2pBeHEiAmsgAiALakEJakEIEIgPDAILIAEgBUEsakGKAkEUEMsCQYGAgIB4IQMMAQsQpgwgBSgCDCECIAUoAgghAwsgACACNgIEIAAgAzYCACAFQTBqJAALtAcCAX8gfSMAQeAAayIIJAAgCEEMaiACIAcqAgQiDhDiAiAIKgIMIg8gBioCBCIUlCAIKgIQIhMgBioCACIVlJMiCSAJkiEJIAgqAhQiCiAVlCAPIAYqAggiEJSTIgsgC5IhCyAQIAgqAhgiFiAJlCAPIAuUIBMgEyAQlCAKIBSUkyIQIBCSIheUk5KSIRAgFCAWIAuUIAogF5QgDyAJlJOSkiEUIBUgFiAXlCATIAmUIAogC5STkpIhFSAHKgIIIQ8gBSoCCCEWIAUqAgQhFyAFKgIAIRsgAyoCCCEmIAMqAgQhJyADKgIAISggByoCACETQQAhBgJAA0AgByAOAn0gAUMAAAAAXUUEQCABQwAAoDVeRQ0DIAcgDjgCACAOIRMgDwwBCyAHIA44AgggDiEPIBMLkkMAAAA/lCIOOAIEIA8gE5NDAACgNV1FBEAgCEEoaiACIA4Q4gIgCEHEAGogBCAOEOICIBAgCCoCNCILIBUgCCoCLCIBlCAUIAgqAigiCZSTIgogCpIiHpQgASAUIAgqAjAiCpQgECABlJMiDSANkiIflCAJIBAgCZQgFSAKlJMiDSANkiIglJOSkiEhIAEgCCoCVCAIKgI4kyIilCAJIAgqAlggCCoCPJMiI5STIg0gDZIhDSAKICOUIAEgCCoCXCAIKgJAkyIMlJMiGCAYkiEYICEgDCALIA2UIAEgGJQgCSAJIAyUIAogIpSTIgwgDJIiJJSTkpIgFiAKIAgqAkwiDJQgASAIKgJIIhGUIAkgCCoCRCISlCALIAgqAlAiGZSSkpIiJSAKIBGUIAsgEpQgCSAZlJMgASAMlJOSIhwgF5QgCyARlCAJIAyUkiABIBmUkyAKIBKUkyIdIBuUkyIaIBqSIhqUIBwgASASlCALIAyUIAkgEZSTkiAKIBmUkyIMIBuUIBwgFpSTIhEgEZIiEZQgHSAdIBaUIAwgF5STIhIgEpIiEpSTkpKSlCAVIAsgH5QgCiAglCABIB6Uk5KSIhkgIiALIBiUIAogJJQgASANlJOSkiAbICUgEpQgHSAalCAMIBGUk5KSkpQgFCALICCUIAkgHpQgCiAflJOSkiIBICMgCyAklCAJIA2UIAogGJSTkpIgFyAlIBGUIAwgEpQgHCAalJOSkpKUkpIgGSAolCABICeUkiAhICaUkpMhASAGQQFqIQYMAQsLIAcgDzgCBAsgACAGNgIMIAAgBykCADcCACAAQQhqIAdBCGooAgA2AgAgCEHgAGokAAufCAIKfw19IwBBIGsiBiQAIAFBBGohByABQYQBaiEJIAIoAgghCyACKAIEIQwgAioCJCEXIAIqAiAhGCACKgIcIRkgAioCFCEQIAIqAhAhESACKgIMIRIgAioCGCETIAIoAgAhCAJAAkACQANAIAEoAowBIgJFBEAgByEEIAkiAygCACICQSFPBEAgASgCCCEEIAchAyABKAIEIQILIAJFDQMgAyACQQFrIgI2AgAgBCACQQJ0aigCACECCyABQQA2AowBIAIoAhxB/////wNxQQFHBEAgAigCDCIFIAEoAogBIgQoAggiAk8NAiABKgKkASEOIAEqAqABIQ9BASEDAkAgASoCnAEiDSAEKAIEIAVBBnRqIgIqAgBgRQ0AIAIqAgQgD19FDQAgAioCCCAOX0UNACACKgIQIAEqApABYEUNACACKgIUIAEqApQBYEUNACACKgIYIAEqApgBYEUNACABIAI2AowBQQAhAwsgAioCICANX0UNASACKgIkIA9fRQ0BIAIqAiggDl9FDQEgAioCMCABKgKQAWBFDQEgAioCNCABKgKUAWBFDQEgAioCOCABKgKYAWBFDQEgAkEgaiEKIANFBEACfyAJKAIAIgVBIUkEQCAFIQQgCSEDQSAhBSAHDAELIAEoAgQhBCAHIQMgASgCCAshAiAEIAVGBEAgARCqBCABKAIEIQQgByEDIAEoAgghAgsgAiAEQQJ0aiAKNgIAIAMgAygCAEEBajYCAAwCCyABIAo2AowBDAELIAIoAgwiBSAIKAJAIgMoAhBPDQAgAygCDCAFQbABbGoiAigCAEEBRw0AIAggCCgCPCAFIAIoAgQiBCACQRBqIgMQ0QVFDQAgBiAQIAIqAowBIhSUIBEgAioCiAEiDpQgEiACKgKEASIPlCATIAIqApABIg2UkpKSOAIQIAYgESAPlCATIBSUIBIgDpSTkiAQIA2UkzgCDCAGIBMgDpQgEiAUlJIgESANlJMgECAPlJM4AgggBiAQIA6UIBMgD5QgEiANlJMgESAUlJOSOAIEIBEgAioClAEgGZMiFJQgEiACKgKYASAYkyIOlJMiDSANkiEVIBAgDpQgESACKgKcASAXkyIPlJMiDSANkiEWIAYgDyATIBWUIBEgFpQgEiASIA+UIBAgFJSTIg0gDZIiDZSTkpI4AhwgBiAOIBMgDZQgEiAVlCAQIBaUk5KSOAIYIAYgFCATIBaUIBAgDZQgESAVlJOSkjgCFCAIKAIwIAZBBGogDCALIAIoAlAgAigCVCICKAIIQQFrQXhxakEIaiACIAgoAjQoAgwRHABBAXFFDQALIAAgBa0gBK1CIIaENwIADAILIAUgAkHQqcEAEIgLAAtBACEDIAFBADYCjAELIAAgAzYCCCAGQSBqJAALzhwCGH8DfiMAQfAAayIbJAACQAJAAkAgAUUNACABQQhrIiMoAgBBAWohHSAjIB02AgAgHUUNASABKAIADQIgAUF/NgIAIBsgIzYCCCAbIAE2AgQgGyABQQRqIh02AgAgA0UNACADQQhrIiQoAgBBAWohHCAkIBw2AgAgHEUNASADKAIAIhxBf0YNAiADIBxBAWo2AgAgGyAkNgIUIBsgAzYCECAbIANBBGoiHjYCDCAERQ0AIARBCGsiJSgCAEEBaiEcICUgHDYCACAcRQ0BIAQoAgAiHEF/Rg0CIAQgHEEBajYCACAbICU2AiAgGyAENgIcIBsgBEEEaiIhNgIYIAVFDQAgBUEIayImKAIAQQFqIRwgJiAcNgIAIBxFDQEgBSgCACIcQX9GDQIgBSAcQQFqNgIAIBsgJjYCLCAbIAU2AiggGyAFQQRqIiI2AiQgCEUNACAIQQhrIicoAgBBAWohHCAnIBw2AgAgHEUNASAIKAIAIhxBf0YNAiAIIBxBAWo2AgAgGyAnNgI4IBsgCDYCNCAbIAhBBGoiHDYCMCAJRQ0AIAlBCGsiKCgCAEEBaiEfICggHzYCACAfRQ0BIAkoAgAiH0F/Rg0CIAkgH0EBajYCACAbICg2AkQgGyAJNgJAIBsgCUEEaiIfNgI8IApFDQAgCkEIayIpKAIAQQFqISAgKSAgNgIAICBFDQEgCigCACIgQX9GDQIgCiAgQQFqNgIAIBsgKTYCUCAbIAo2AkwgGyAKQQRqIiA2AkggGkUNACAaQRBrIiooAgBBAWohKyAqICs2AgAgK0UNASAaKAIADQIgGkF/NgIAIBsgKjYCXCAbIBo2AlggGyAaQRBqIis2AlQgG0HgAGohLiACQQBHIS0gEEEARyEvIBhBAEchMCMAQfAGayIQJAAgEEEgaiIsQQhqIjEgIkEIaikCADcDACAsQRhqIjIgIUEIaigCADYCACAQIAY2AhwgECAiKQIANwMgIBAgISkCADcDMCAeKAIAIhgoAgAhAiAYIAJBAWo2AgACQAJAAkACQAJAAkACQCACQQBOBEAgHigCBCEeIBBB0AVqIgJCADcDCCACQgA3AwAgAiAeNgIcIAIgGDYCGCACQQA7AWggAkGAgID4AzYCMCACQoCAgICAgIDAPzcDECACQgA3AjQgAkIANwJMIAJCgICA/AM3AkQgAkIANwJUIAJCfzcDICACQY+AgAg2AmQgAkIANwJcIAJBPGpCADcCACACQShqQn83AwAgEEGwBGoiGEEYaiACQRhqKQMAIjM3AwAgGEEQaiACQRBqKQMAIjQ3AwAgEEFAayIYQQRqIAJB7gBqLwEAIgI7AQAgEEGQA2oiHkEQaiIhIDQ3AwAgHkEYaiIeIDM3AwAgEEHAAWoiIiACOwEAIBAgECkD0AUiMzcDsAQgECAQKAG6BiICNgJAIBAgMzcDkAMgECAQKQPYBTcDmAMgECACNgK8ASAYQRhqIB4pAwA3AwAgGEEQaiAhKQMANwMAIBAgECkDmAM3A0ggECAQKQOQAzcDQCAQQZABaiAyKAIANgIAIBBBiAFqICxBEGopAwA3AwAgEEGAAWogMSkDADcDACAQIBApAyA3A3ggGEHuAGogIi8BADsBACAQIBAoArwBNgGqASAQQQMgDyAPQQNPGzoAqQEgEEEDIA4gDkEDTxs6AKgBIBBBACATIBNB0CNxG0H//wNxQYCABEEAIC8bciAtQRh0cjYCpAEgECAXOAKgASAQIBY4ApwBIBAgFUEAIBVBBEkbNgKYASAQIBRBACAUQQhJGzYClAEgECANOAJ0IBAgDDgCcCAQIBJB//8DcTYCbCAQIBJBEHY2AmggECARQf//A3E2AmQgECARQRB2NgJgIAYOAwIDAQQLAAsgEEHEAWoiBiAcIAcgHyAgEPIJIBBB0AVqIg4gEEFAayIRQfAA/AoAACAQQbAEaiEPAkBBLEEEELMOIgIEQCACIAYpAgA3AgAgAkEoaiAGQShqKAIANgIAIAJBIGogBkEgaikCADcCACACQRhqIAZBGGopAgA3AgAgAkEQaiAGQRBqKQIANwIAIAJBCGogBkEIaikCADcCACAOKAIQQQJPBEAgDigCFEEsQQQQiA8LIA4gAjYCFCAOQQI2AhAgDyAOQfAA/AoAAAwBCwwFCyARIA9B8AD8CgAADAMLIBBB0AVqIgIgEEFAayIOQfAA/AoAACAQQbAEaiEGIAIoAhBBAk8EQCACKAIUQSxBBBCIDwsgAiALOAIUIAJBADYCECAGIAJB8AD8CgAAIA4gBkHwAPwKAAAMAgsgEEHQBWoiAiAQQUBrIg5B8AD8CgAAIBBBsARqIQYgAigCEEECTwRAIAIoAhRBLEEEEIgPCyACIAc4AhQgAkEBNgIQIAYgAkHwAPwKAAAgDiAGQfAA/AoAAAwBCyAQQQA2AtAFQQAgEEEcakH0ysEAIBBB0AVqQbjPwQAQ+gwACyAQQfABaiEOIBBBQGsiDygCGCIRKAIAIQIgESACQQFqNgIAAkACQCACQQBOBEAgDygCFCEGIA8tAGYhEiAPLQBnIRMgDygCWCEUIA8oAlQhFSAPLwFkIRggDygCLCEcIA8oAighHyAPKAIkISAgDygCICEeIA8tAGkhISAPLQBoISIgDyoCNCEHIA8qAjAhCyAPKAIcISwgDygCECItQQJPDQEgBiECDAILAAtBLEEEELMOIgJFDQEgAiAGKQIANwIAIAJBKGogBkEoaigCADYCACACQSBqIAZBIGopAgA3AgAgAkEYaiAGQRhqKQIANwIAIAJBEGogBkEQaikCADcCACACQQhqIAZBCGopAgA3AgALIA4gEjoAmAEgDiAsNgJEIA4gETYCQCAOQf8DNgJwIA4gAjYCPCAOIC02AjggDkEANgIQIA4gDykCODcCdCAOQfwAaiAPQUBrKQIANwIAIA5BhAFqIA9ByABqKQIANwIAIA5BjAFqIA9B0ABqKAIANgIAIA8pAwghMyAPKQMAITQgDykCXCE1IA4gIToAbSAOICI6AGwgDiAHOAJoIA4gCzgCZCAOIB42AkggDiAgNgJMIA4gHzYCUCAOIBw2AlQgDiAVNgJYIA4gFDYCXCAOIDVCIIk3A5ABIA4gGDsBYCAOQQBBAiATQQFxGzoAYiAOIDQ3AwAgDiAzNwMIAkACQAJAAkACQCAwRQRAIBBBkANqIgIgDkGgAfwKAAAgAkH/AzYCcCAQQQA2AqADIBBBsARqIgYgAkGgAfwKAAAgEEHQBWoiAiAdIAYQggYCfyAQKALgBUECRwRAIBBBEGogHSACEJMDIBAoAhAhBiAQKAIUDAELIBAoAtAFIQYgECgC1AULIQIgBiAdKAIQTw0CIB0oAgwgBkGwAWxqIg4oAgBBAUcNAiAOKAIEIAJHDQIgDiAOKAKAAUEBcjYCgAEgHSgCJCIOIB0oAhxGBEAgHUEcakHkvcEAELgICyAdKAIgIA5BA3RqIg8gAjYCBCAPIAY2AgAgHSAOQQFqNgIkDAELIBBBkANqIg4gEEHwAWpBoAH8CgAAIBm9IjNCIIinIQIgM6chBiAOQf8DNgJwIBAoAqADRQRAIBBBxANqIBBBnARqKAIANgIAIBBBvANqIBBBlARqKQIANwIAIBBBtANqIBBBjARqKQIANwIAIBAgECkChAQ3AqwDIBBBATYCoAMLIBAgAjYCqAMgECAGNgKkAyArIAYgAhDvCSIPRQ0CIBBBsARqIgIgEEGQA2pBoAH8CgAAIBBB0AVqIgYgHSACEIIGAn8gECgC4AVBAkcEQCAQQQhqIB0gBhCTAyAQKAIIIQYgECgCDAwBCyAQKALQBSEGIBAoAtQFCyECIAYgHSgCEE8NAyAdKAIMIAZBsAFsaiIOKAIAQQFHDQMgDigCBCACRw0DIA4gDigCgAFBAXI2AoABIB0oAiQiESAdKAIcRgRAIB1BHGpB5L3BABC4CAsgHSgCICARQQN0aiISIAI2AgQgEiAGNgIAIB0gEUEBajYCJCAOKAIgRQ0EIA9B2AJqIA8tAOUCIA9BvAJqIA9BIGogD0HYAWogD0EwaiAGIAIgDkGEAWogDkEkaiAOQdAAaiAOQcgAahDzAQsgLkIBNwMAIBAoAlgiDygCACEOIA8gDkEBazYCACAuIAatIAKtQiCGhDcDCCAOQQFGBEAgEEHYAGoQmgoLIBAoAlBBAk8EQCAQKAJUQSxBBBCIDwsgEEHwBmokAAwFC0GRgMAAQRNB4MHBABDXCwALQZTBwQBBHEGwwcEAENcLAAtBwMHBABCRDwALQdDBwQAQkQ8AC0EEQSxBkMTEACgCACIAQcwIIAAbEQAAAAsgGysDaCEZIBspA2AhMyAaQQA2AgAgKiAqKAIAQQFrIgI2AgAgAkUEQCAbQdwAahDrDAsgCiAKKAIAQQFrNgIAICkgKSgCAEEBayICNgIAIAJFBEAgG0HQAGoQqw0LIAkgCSgCAEEBazYCACAoICgoAgBBAWsiAjYCACACRQRAIBtBxABqEKgNCyAIIAgoAgBBAWs2AgAgJyAnKAIAQQFrIgI2AgAgAkUEQCAbQThqEKgNCyAFIAUoAgBBAWs2AgAgJiAmKAIAQQFrIgI2AgAgAkUEQCAbQSxqEKsNCyAEIAQoAgBBAWs2AgAgJSAlKAIAQQFrIgI2AgAgAkUEQCAbQSBqEKgNCyADIAMoAgBBAWs2AgAgJCAkKAIAQQFrIgI2AgAgAkUEQCAbQRRqEOMLCyABQQA2AgAgIyAjKAIAQQFrIgE2AgAgAUUEQCAbQQhqEO8MCyAAIDM+AgAgACAZRAAAAAAAAAAAIDOnGzkDCCAbQfAAaiQADwsQmw8LAAsQnA8AC8wIAgh/AX4jAEEgayIFJAAgAC0AACEDIABBAToAACAFIAM6AAcgA0EBRwRAAkAgAC0ANA0AIABBAToANAJAIAAoAgwiAUUNACAAKAIIIgIhAyABQQxsIgZBDGsiB0EMbiIBQQdxQQdHBEBBACABQQFqQQdxayEBA0AgAygCACIIKAIMIQQgCCAEQQIgBBs2AgwgA0EMaiEDIAFBAWoiAQ0ACwsgB0HUAEkNACACIAZqIQQDQCADKAIAIgIoAgwhASACIAFBAiABGzYCDCADQQxqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQRhqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQSRqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQTBqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQTxqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQcgAaigCACICKAIMIQEgAiABQQIgARs2AgwgA0HUAGooAgAiAigCDCEBIAIgAUECIAEbNgIMIAQgA0HgAGoiA0cNAAsLIAAoAhghASAAQQA2AhggAQRAIAAoAhQhAyABQQxsIQEDQCAFQQhqIgZBCGogA0EIaigCADYCACAFIAMpAgAiCTcDCCAJpyIEKAIMIQIgBCACIAUoAgwgAhs2AgwgBCAEKAIAIgRBAWs2AgAgBEEBRgRAIAYQ2gsLIANBDGohAyABQQxrIgENAAsLAkAgACgCJCIBRQ0AIAAoAiAiAiEDIAFBDGwiBkEMayIHQQxuIgFBB3FBB0cEQEEAIAFBAWpBB3FrIQEDQCADKAIAIggoAgwhBCAIIARBAiAEGzYCDCADQQxqIQMgAUEBaiIBDQALCyAHQdQASQ0AIAIgBmohBANAIAMoAgAiAigCDCEBIAIgAUECIAEbNgIMIANBDGooAgAiAigCDCEBIAIgAUECIAEbNgIMIANBGGooAgAiAigCDCEBIAIgAUECIAEbNgIMIANBJGooAgAiAigCDCEBIAIgAUECIAEbNgIMIANBMGooAgAiAigCDCEBIAIgAUECIAEbNgIMIANBPGooAgAiAigCDCEBIAIgAUECIAEbNgIMIANByABqKAIAIgIoAgwhASACIAFBAiABGzYCDCADQdQAaigCACICKAIMIQEgAiABQQIgARs2AgwgBCADQeAAaiIDRw0ACwsgACgCMCEBIABBADYCMCABRQ0AIAAoAiwhAyABQQxsIQEDQCAFQQhqIgZBCGogA0EIaigCADYCACAFIAMpAgAiCTcDCCAJpyIEKAIMIQIgBCACIAUoAgwgAhs2AgwgBCAEKAIAIgRBAWs2AgAgBEEBRgRAIAYQ2gsLIANBDGohAyABQQxrIgENAAsLIABBADoAACAFQSBqJAAPCyAFQgA3AhQgBUKBgICAwAA3AgwgBUGguMEANgIIIAVBB2ogBUEIakGouMEAEP8MAAvIBwIOfQJ/IwBB4ABrIgQkACAAKAIAIRUgACgCBCEFAkAgAQRAIAQgASoCCCIHIAUqAggiCJQgASoCBCIJIAUqAgQiCpQgASoCACIGIAUqAgAiC5QgASoCDCIMIAUqAgwiDZSSkpI4AkwgBCAJIAuUIAwgCJQgBiAKlJOSIAcgDZSTOAJIIAQgDCAKlCAGIAiUkiAJIA2UkyAHIAuUkzgCRCAEIAcgCpQgDCALlCAGIA2UkyAJIAiUk5I4AkAgCSAFKgIQIAEqAhCTIguUIAYgBSoCFCABKgIUkyINlJMiCCAIkiEIIAcgDZQgCSAFKgIYIAEqAhiTIg6UkyIKIAqSIQogBCAOIAwgCJQgCSAKlCAGIAYgDpQgByALlJMiDiAOkiIOlJOSkjgCWCAEIA0gDCAOlCAGIAiUIAcgCpSTkpI4AlQgBCALIAwgCpQgByAOlCAJIAiUk5KSOAJQDAELIARBQGsiFEEYaiAFQRhqKAIANgIAIBRBEGogBUEQaikCADcDACAUQQhqIAVBCGopAgA3AwAgBCAFKQIANwNACyAEQQhqIBUgBEFAayACIAMgACgCCCAAKAIMIAAoAhAqAgAQegJAIAQoAggiAkECRg0AIAJBAXFFDQAgBCoCPCETIAQqAiwhDCAEKgIoIQggBCoCJCEKIAQqAhQhCyAEKgIQIQ0gBCoCDCEOIAAoAhQiAigCAEEBcQRAIBMgAioCOF1FDQELIARBMGohAyAEQRhqIQUgAQRAIAwgASoCDCIRIAggASoCACIHlCAKIAEqAgQiCZSTIgYgBpIiEJQgByAKIAEqAggiBpQgDCAHlJMiDyAPkiIPlCAJIAwgCZQgCCAGlJMiDCAMkiISlJOSkiEMIAggESAPlCAGIBKUIAcgEJSTkpIhCCAKIBEgEpQgCSAQlCAGIA+Uk5KSIQogASoCGCALIBEgDSAHlCAOIAmUkyIQIBCSIhCUIAcgDiAGlCALIAeUkyIPIA+SIg+UIAkgCyAJlCANIAaUkyILIAuSIhKUk5KSkiELIAEqAhAgDiARIBKUIAkgEJQgBiAPlJOSkpIhDiABKgIUIA0gESAPlCAGIBKUIAcgEJSTkpKSIQ0LIAAoAhgoAgAhACACIAs4AhAgAiANOAIMIAIgDjgCCCACIAA2AgQgAkEBNgIAIAIgBSkCADcCFCACQRxqIAVBCGooAgA2AgAgAiAMOAIoIAIgCDgCJCACIAo4AiAgAiADKQIANwIsIAJBNGogA0EIaigCADYCACACIBM4AjgLIARB4ABqJAALgggCEH8FfiMAQTBrIgQkACAEIAI2AiggASgCDCEKIAQgBEEoajYCLAJAIAogCkEBaiICTQRAIAEoAgQiCyALQQFqQQN2QQdsIAtBCEkbIgNBAXYgAkkEQAJAAkACQAJ/IANBAWoiAyACIAIgA0kbIgJBD08EQCACQf////8BSw0CQX8gAkEDdEEHbkEBa2d2QQFqDAELQQRBCEEQIAJBCEkbIAJBBEkbCyICrUIMfiIUQiCIpw0BIBSnIgNBeEsNASADQQdqQXhxIgcgAkEIaiIMaiEDIAMgB0kNASADQfj///8HSw0BIANBCBCzDiIGDQJBCCADQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAQoAiQhAiAEKAIgIQMMBAsQpgwgBCgCFCECIAQoAhAhAwwDCyAGIAdqIQYgDARAIAZB/wEgDPwLAAsgAkEBayIJIAJBA3ZBB2wgCUEISRshDQJAIApFBEAgASgCACEHDAELIAZBCGohDiABKAIAIgdBDGshDyAHKQMAQn+FQoCBgoSIkKDAgH+DIRQgBCgCKCEQQQAhAiAKIQwgByEDA0AgFFAEQANAIAJBCGohAiADQQhqIgMpAwBCgIGChIiQoMCAf4MiFEKAgYKEiJCgwIB/UQ0ACyAUQoCBgoSIkKDAgH+FIRQLIA8gFHqnQQN2IAJqIhFBdGxqKQAAIhMgECkDAEI4iYUiFUIgiCIWIBNCl5Kcqtu2tcI/hSITQiCIIhd+IBVC/////w+DIhUgE0L/////D4MiE36FIBMgFn4gFSAXfoVCIImFIhNC/////w+DQgKFIhVC3aHxywx+IBNCIIgiE0K307CFDH6FIBVCt9OwhQx+IBNC3aHxywx+hUIgiIWnIhIgCXEiBSAGaikAAEKAgYKEiJCgwIB/gyITUARAQQghCANAIAUgCGohBSAIQQhqIQggBSAJcSIFIAZqKQAAQoCBgoSIkKDAgH+DIhNQDQALCyAUQgF9IBSDIRQgE3qnQQN2IAVqIAlxIgUgBmosAABBAE4EQCAGKQMAQoCBgoSIkKDAgH+DeqdBA3YhBQsgBSAGaiASQRl2Igg6AAAgDiAFQQhrIAlxaiAIOgAAIAYgBUF/c0EMbGoiBUEIaiAHIBFBf3NBDGxqIghBCGooAAA2AAAgBSAIKQAANwAAIAxBAWsiDA0ACwsgASAJNgIEIAEgBjYCACABIA0gCms2AghBgYCAgHghAyALRQ0CIAcgC0EMbEETakF4cSICayACIAtqQQlqQQgQiA8MAgsgASAEQSxqQZECQQwQywJBgYCAgHghAwwBCxCmDCAEKAIMIQIgBCgCCCEDCyAAIAI2AgQgACADNgIAIARBMGokAAuACAIPfwV+IwBBMGsiBSQAIAUgAjYCKCABKAIMIQogBSAFQShqNgIsAkAgCiAKQQFqIgJNBEAgASgCBCILIAtBAWpBA3ZBB2wgC0EISRsiA0EBdiACSQRAAkACQAJAAn8gA0EBaiIDIAIgAiADSRsiAkEPTwRAIAJB/////wFLDQJBfyACQQN0QQduQQFrZ3ZBAWoMAQtBBEEIQRAgAkEISRsgAkEESRsLIgKtQhh+IhJCIIinDQEgEqciByACQQhqIgxqIQMgAyAHSQ0BIANB+P///wdLDQEgA0EIELMOIgYNAkEIIANBkMTEACgCACIAQcwIIAAbEQAAAAsQpgwgBSgCJCECIAUoAiAhAwwECxCmDCAFKAIUIQIgBSgCECEDDAMLIAYgB2ohBiAMBEAgBkH/ASAM/AsACyACQQFrIgkgAkEDdkEHbCAJQQhJGyENAkAgCkUEQCABKAIAIQcMAQsgBkEIaiEOIAEoAgAiBykDAEJ/hUKAgYKEiJCgwIB/gyESIAUoAighD0EAIQIgCiEMIAchAwNAIBJQBEADQCACQQhqIQIgA0EIaiIDKQMAQoCBgoSIkKDAgH+DIhJCgIGChIiQoMCAf1ENAAsgEkKAgYKEiJCgwIB/hSESCyAHIBJ6p0EDdiACaiIQQWhsaiIEQRRrNQIAQrfTsIUMhSETIARBEGsoAgAgDykDAEKDgICAEIUiFEIgiCIVIBN+IARBGGs1AgBC3aHxywyFIhYgFEL/////D4MiFH6FIBMgFH4gFSAWfoVCIImFIhOnc60iFELdofHLDH4gE0IgiCITQrfTsIUMfoUgFEK307CFDH4gE0LdofHLDH6FQiCIhaciESAJcSIEIAZqKQAAQoCBgoSIkKDAgH+DIhNQBEBBCCEIA0AgBCAIaiEEIAhBCGohCCAEIAlxIgQgBmopAABCgIGChIiQoMCAf4MiE1ANAAsLIBJCAX0gEoMhEiATeqdBA3YgBGogCXEiBCAGaiwAAEEATgRAIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEECyAEIAZqIBFBGXYiCDoAACAOIARBCGsgCXFqIAg6AAAgBiAEQX9zQRhsaiIEQRBqIAcgEEF/c0EYbGoiCEEQaikAADcAACAEQQhqIAhBCGopAAA3AAAgBCAIKQAANwAAIAxBAWsiDA0ACwsgASAJNgIEIAEgBjYCACABIA0gCms2AghBgYCAgHghAyALRQ0CIAcgC0EYbEEfakF4cSICayACIAtqQQlqQQgQiA8MAgsgASAFQSxqQZACQRgQywJBgYCAgHghAwwBCxCmDCAFKAIMIQIgBSgCCCEDCyAAIAI2AgQgACADNgIAIAVBMGokAAueCAIMfwJ9IwBB0AFrIgIkAAJAIAAoAghFBEAMAQsCf0EAIAEqAgAiDyAAKAIEIgQqAgBdDQAaQQAgDyAEKgIQXg0AGkEAIAEqAgQiDiAEKgIEXQ0AGkEAIA4gBCoCFF4NABpBAEEAIAQgASoCCCIOIAQqAhheGyAOIAQqAghdGwshByAEKAI8Qf////8DcUUNACAEKgIgIA9eDQAgBCoCMCAPXQ0AIAEqAgQiDiAEKgIkXQ0AIAQqAjQgDl0NACAEQSBqIQYgASoCCCIOIAQqAjheRSAOIAQqAihdQX9zcSEDCyACIAc2ApQBIAIgATYCkAEgAiADNgKIASACIAY2AgggAkEANgIEIAJBpAFqIQkgAkGIAWohByACQQhqIQYgAiAANgKMASAAKAIsIQogACgCMCEIIAAoAjghDSAAKAI8IQsCfwJAAkACQAJAAkADQCACKAKUASIARQRAIAYhBCAHIQMgAigCiAEiBSIAQSFPBEAgAigCDCEEIAYhAyACKAIIIQALIABFDQYgAyAAQQFrIgA2AgAgBCAAQQJ0aigCACEACyACQQA2ApQBIAAoAhxB/////wNxQQFHBEAgACgCDCIEIAIoAowBIgMoAggiAE8NAkEBIQUCQCACKAKQASIAKgIAIg8gAygCBCAEQQZ0aiIDKgIAXQ0AIA8gAyoCEF4NACAAKgIEIg4gAyoCBF0NACAOIAMqAhReDQAgACoCCCIOIAMqAghdDQAgDiADKgIYXg0AIAIgAzYClAEgACoCACEPQQAhBQsgDyADKgIgXQ0BIA8gAyoCMF4NASAAKgIEIg4gAyoCJF0NASAOIAMqAjReDQEgACoCCCIOIAMqAihdDQEgDiADKgI4Xg0BIANBIGohDCAFRQRAAn8gAigCiAEiBUEhSQRAIAUhBCAHIQNBICEFIAYMAQsgAigCCCEEIAYhAyACKAIMCyEAIAQgBUYEQCACQQRqEK0EIAIoAgghBCAGIQMgAigCDCEACyAAIARBAnRqIAw2AgAgAyADKAIAQQFqNgIADAILIAIgDDYClAEMAQsgACgCDCIAIAtPDQIgDSAAQQN0aiIAKAIAIgQgCE8NAyAAKAIEIgAgCE8NBCAJIAogAEEMbGoiACkCADcCACAJQQhqIABBCGooAgA2AgAgAkGYAWoiA0EIaiAKIARBDGxqIgBBCGooAgA2AgAgAiAAKQIANwOYASACQbQBaiADIAEQ4wMgAi0AwAFBAXFFDQALIAIoAogBIQVBAQwFCyAEIABBuOvCABCICwALIAAgC0HQlsMAEIgLAAsgBCAIQeCWwwAQiAsACyAAIAhB8JbDABCICwALIAJBADYClAFBAAshACAFQSFPBEAgAigCDCAFQQJ0QQQQiA8LIAJB0AFqJAAgAAuYCAIQfwR+IwBBQGoiCSQAIAlBGGogARCZBSABKQM4IRMCfyABKAIsIgpFBEBBsNXCACEMQQAhCkEADAELAn8CQCAKQQFqrUIUfiISQiCIpw0AIBKnIgJBeEsNACAKQQlqIgMgAkEHakF4cSIGaiECIAIgBkkNACACQfj///8HSw0AIAJBCBCzDiIERQRAQQggAkGQxMQAKAIAIgBBzAggABsRAAAACyAEIAZqDAELEKYMIAkoAggiCkEJaiEDQQALIQwgASgCKCEEIAMEQCAMIAQgA/wKAAALIAEoAjQiDwRAIARBCGohAyAEKQMAQn+FQoCBgoSIkKDAgH+DIRIgDyEGIAQhAgNAIBJQBEADQCACQaABayECIAMpAwAhEiADQQhqIQMgEkKAgYKEiJCgwIB/gyISQoCBgoSIkKDAgH9RDQALIBJCgIGChIiQoMCAf4UhEgsgAiASeqdBA3ZBbGxqIgVBFGsiCEEIaikCACEUIAgpAgAhFSAMIAQgBWtBbG1BFGxqIghBBGsgBUEEaygCADYCACAIQRRrIgUgFTcCACAFQQhqIBQ3AgAgEkIBfSASgyESIAZBAWsiBg0ACwsgASgCMAshECABKAJIIgitQgx+IhKnIQICQAJAAkAgEkIgiKcNACACQfz///8HSw0AIAEoAkQhBAJAIAJFBEBBBCENQQAhBgwBC0EEIQsgCCEGIAJBBBCzDiINRQ0BCyACBEAgDSAEIAL8CgAACyABKAJUIgRBCXQhBUEAIQMgBEH///8DSw0BIAVBwP///wdLDQECQCAFRQRAQcAAIQ4MAQsgASgCUCEHQcAAIQMgBUHAABCzDiIORQ0CIARFDQBBACEDIAQhAgNAIAMgBUYNASADIA5qIAMgB2pBgAT8CgAAIANBgARqIQMgAkEBayICDQALCyABKAJgIgVBAnQhB0EAIQMgBUH/////A0sNAiAHQfz///8HSw0CIAEoAlwhEQJAIAdFBEBBBCELQQAhAgwBC0EEIQMgBSECIAdBBBCzDiILRQ0DCyAHBEAgCyARIAf8CgAACyAAIAU2AmAgACALNgJcIAAgAjYCWCAAIAQ2AlQgACAONgJQIAAgBDYCTCAAIAg2AkggACANNgJEIAAgBjYCQCAAIBM3AzggACAPNgI0IAAgEDYCMCAAIAo2AiwgACAMNgIoIABB7ABqIAFB7ABqKAIANgIAIAAgASkCZDcCZCAAIAkpAhg3AgAgAEEIaiAJQRhqIgFBCGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBGGogAUEYaikCADcCACAAQSBqIAFBIGopAgA3AgAgCUFAayQADwsgCyACQdjVwgAQ0w0ACyADIAVB6NXCABDTDQALIAMgB0HY1cIAENMNAAvtBwIMfwx9IwBB4AFrIgUkAAJ9IAAoAlwiBkUEQEMAAIA/IRNDAAAAAAwBCyAGKAIAIQkgBioCLCEbIAYqAighGiAGKgIkIRkgBioCICEcIAYqAhwhFCAGKgIYIRUgBioCFCEWIAYqAhAhEyAGKgIMIRggBioCCCEXIAYqAgQLIREgAEIANwJAIABCgICAgICAgMA/NwI4IABCADcCMCAAQcgAakIANwIAIABB0ABqQgA3AgAgAEHYAGpBADYCACAAQTBqIQggAigCCCIGBEAgBkEDdCACKAIEIgZqIQwgBUEIaiIHQQhqIQogBUHoAGohAiABKAIMIQ0gASgCECEOIAdBIGohDyAHQRhqIRADQAJAIAYoAgAiASAOTw0AIA0gAUGwAWxqIgEoAgBBAUcNACABKAIEIAZBBGooAgBHDQAgAS0Acg0AIAEoAiBBAUcNACAPIAFBxABqKAIANgIAIBAgAUE8aikCADcDACAFQRhqIAFBNGopAgA3AwAgCiABQSxqKQIANwMAIAUgASkCJDcDCCABKAJQIAEoAlQiBygCCEEBa0F4cWpBCGohCwJAAkACQAJAAkAgASgCSEEBaw4CAgABCyAFQdgAaiIHQQhqIAEoAkwiAUEIaikCADcDACACIAFBEGopAgA3AwAgB0EYaiABQRhqKQIANwMAIAdBIGogAUEgaikCADcDACAHQShqIAFBKGooAgA2AgAgBSABKQIANwNYDAMLIAEqAkwiEkMAAAAAWwRADAILIAVB2ABqIAsgEiAHKAKcARENAAwCCyABKgJMIhJDAAAAAFsEQAwBCyAFQbQBaiIBIAtDAACAPyAHKAKcARENACABIBIQsgsgBUHYAGoiB0EoaiABQShqKAIANgIAIAdBIGogAUEgaikCADcDACAHQRhqIAFBGGopAgA3AwAgAiABQRBqKQIANwMAIAdBCGogAUEIaikCADcDACAFIAUpArQBNwNYDAELIAJCADcCACACQQhqQgA3AgAgAkEQakIANwIAIAJBGGpBADYCACAFQgA3A1ggBUKAgICAgICAwD83A2ALIAVBLGoiASAFQdgAaiAKEPUEIAggARD3CQsgDCAGQQhqIgZHDQALCwJAIAlBAXEEQCAIIBFDAAAAAEMAAIA/IAAqAkwiEZUgEUMAAAAAWxuSELILDAELIAUgGzgCsAEgBSAaOAKsASAFIBk4AqgBIAUgHDgCpAEgBSAUOAKgASAFIBU4ApwBIAUgFjgCmAEgBSATOAKUASAFIBg4ApABIAUgFzgCjAEgBSAROAKIASAIIAVBiAFqEPcJCyAAIAMgBBCABiAFQeABaiQAC54IAgF/En0jAEGAAmsiBSQAIAVBuAFqQQA2AgAgBUIANwKwASAFQoKAgIAwNwIIIAVCgICAgBA3AgAgBUE0akEAQfgA/AsAIAIqAhAiB4wiEyACKgIMIg4gDpQgByAHlJIgAioCFCINIA2UkpEiCJUhEAJAAn0CQCAOjCIUIAiVIgsgC5QgDYwiFSAIlSIJIAmUkiIGQwAAAABcBEAgECABKgIAIgqUIhEgCSAJIAaRIgaVIAEqAgQiD5QiDJQgCyALIAaVIA+UIg+UIBGTkl4NASAKjCEGDAMLIAEqAgAiCiAQmAwBC0MAAAAAIQwgCgshBkMAAAAAIQ8LIAVBADYCvAEgBUEANgKsASAFQQA2AjAgBUIANwIoIAUgDCAJIAEqAggiCZSSIAIqAggiEZMiDDgCJCAFIAYgECAJlJIgAioCBCIQkyIGOAIgIAUgDyALIAmUkiACKgIAIg+TIgs4AhwgBSAMOAIYIAUgBjgCFCAFIAs4AhAgBUHAAWogASAFIAIgAxClASAFKALAASECAkACQAJAIARFBEAgAgRAIAUqAsQBIgZDAAAAAFwEQCAAIAUpAsgBNwIMIAAgBjgCCCAAQQM2AgAgAEEUaiAFQdABaigCADYCAAwFCyANIAiVIgYgBpQgDiAIlSILIAuUIAcgCJUiCCAIlJKSkSEHIAggB5UhDgJAAkAgCyAHlSIMIAyUIAYgB5UiByAHlJIiDUMAAAAAXARAIA4gCpQiFiAHIAcgDZEiEpUgASoCBCIXlCINlCAMIAwgEpUgF5QiEpQgFpOSXg0BIAqMIQoMAgsgCiAOmCEKC0MAAAAAIQ1DAAAAACESCyAFIBU4AugBIAUgEzgC5AEgBSAUOALgASAFQQA2ArwBIAVBADYCrAEgBUEANgIwIAVCADcCKCAFIBEgBiAGIAcgCZQgDZIiBiARk5QgCCAOIAmUIAqSIgcgEJOUIAsgDCAJlCASkiIJIA+TlJKSQ28SgzqSIgqUkiIMOALcASAFIAYgDJMiBjgCJCAFIBAgCCAKlJIiCDgC2AEgBSAHIAiTIgg4AiAgBSAPIAsgCpSSIgs4AtQBIAUgCSALkyIJOAIcIAUgBjgCGCAFIAg4AhQgBSAJOAIQIAVB7AFqIAEgBSAFQdQBaiAKQ28SgzqSEKUBIAUoAuwBQQFHDQIgAyAKIAUqAvABkyIDYEUEQCAAQQQ2AgAMBQsgACADOAIIIABBAzYCACAAIAUqAvwBjDgCFCAAIAUqAvgBjDgCECAAIAUqAvQBjDgCDAwECyAAQQQ2AgAMAwsgAg0BIABBBDYCAAwCCyAAQQQ2AgAMAQsgACAFKQLIATcCDCAAIAUqAsQBOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIACyAFQYACaiQAC8IKAgN8A38jAEEQayIFJAAgALshAQJAIAC8IgZB/////wdxIgRB25+k+gNPBEAgBEHSp+2DBE8EQCAEQdbjiIcETwRAAkACQAJAAkAgBEH////7B00EQCAFQgA3AwgCQCAEQdqfpO4ETQRAIAEgAUSDyMltMF/kP6JEAAAAAAAAOEOgRAAAAAAAADjDoCICRAAAAFD7Ifm/oqAgAkRjYhphtBBRvqKgIQEgAvwCIQQMAQsgBSAEIARBF3ZBlgFrIgRBF3Rrvrs5AwAgBSAFQQhqIAQQSSEEIAZBAE4EQCAFKwMIIQEMAQtBACAEayEEIAUrAwiaIQELIARBA3FBAWsOAwMEAQILIAAgAJMhAAwHCyABIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAYLIAEgASABoiICoiIDIAIgAqKiIAJEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgASADIAJEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYhAAwFCyABIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2IQAMBAsgASABoiICIAGaoiIDIAIgAqKiIAJEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAyACRLL7bokQEYE/okR3rMtUVVXFv6CiIAGhoLYhAAwDCyAEQeDbv4UETwRARBgtRFT7IRnARBgtRFT7IRlAIAZBAE4bIAGgIgIgAqIhASACIAGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtiEADAMLIAZBAE4EQCABRNIhM3982RLAoCIBIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAMLIAFE0iEzf3zZEkCgIgEgAaIiASABoiECIAFEgV4M/f//37+iRAAAAAAAAPA/oCACREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwCCyAEQeSX24AETwRARBgtRFT7IQnARBgtRFT7IQlAIAZBAE4bIAGgIgIgAqIiASACmqIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goiACoaC2IQAMAgsgBkEATgRAIAFEGC1EVPsh+b+gIgEgAaIiASABoiECIAFEgV4M/f//37+iRAAAAAAAAPA/oCACREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwCCyABRBgtRFT7Ifk/oCIBIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAELIARBgICAzANPBEAgASABoiICIAGiIgMgAiACoqIgAkSnRjuMh83GPqJEdOfK4vkAKr+goiADIAJEsvtuiRARgT+iRHesy1RVVcW/oKIgAaCgtiEADAELIAUgAEMAAIADlCAAQwAAgHuSIARBgICABEkbOAIIIAUqAggaCyAFQRBqJAAgAAvnHAINfhd/IwBBMGsiJCQAIAEpAxgiBSACKQIIIgqFQvPK0cunjNmy9ACFIgQgASkDECIHQuHklfPW7Nm87ACFfCEMIAwgBEIQiYUiBCAFQu3ekfOWzNy35ACFIgYgB0L1ys2D16zbt/MAhXwiBUIgiXwhCSAJIARCFYmFQoCAgICAgICACIUiBCAFIAZCDYmFIgYgDHwiBUIgiXwhDCAMIARCEImFIgcgBSAGQhGJhSIFIAkgCoV8IgRCIIl8IQkgBCAFQg2JhSIGIAx8IgVCIIlC/wGFIAkgB0IViYUiBHwhCiAKIARCEImFIgQgBSAGQhGJhSIGIAlCgICAgICAgIAIhXwiBUIgiXwhByAHIARCFYmFIgQgBSAGQg2JhSIGIAp8IgVCIIl8IQkgCSAEQhCJhSIEIAUgBkIRiYUiBiAHfCIFQiCJfCEKIAogBEIViYUiByAGQg2JIAWFIgYgCXwiBEIgiXwiBSAGQhGJIASFIgQgCnwgBEINiYUiBHwhBiAGIAdCEIkgBYVCFYkgBEIRiYUgBkIgiIWFIRAgASgCCEUEQCABQRBqIRgjAEEgayIcJAAgASgCDCIaQQFqIRICQCASIBpPBEAgASgCBCIZQQFqIhtBA3YhFQJAIBkgFUEHbCAZQQhJGyIgQQF2IBJJBEACQAJAAkACfyAgQQFqIhMgEiASIBNJGyITQQ9PBEAgE0H/////AUsNAkF/IBNBA3RBB25BAWtndkEBagwBC0EEQQhBECATQQhJGyATQQRJGwsiE61CKH4iBEIgiKcNASAEpyIWIBNBCGoiEmohESARIBZJDQEgEUH4////B0sNASARQQgQsw4iFQ0CQQggEUGQxMQAKAIAIgBBzAggABsRAAAACxCnDCAcKAIcIRMgHCgCGCEWDAULEKcMIBwoAgwhEyAcKAIIIRYMBAsgFSAWaiEUIBIEQCAUQf8BIBL8CwALIBNBAWsiFyATQQN2QQdsIBdBCEkbIR8gASgCACESIBoEQCAUQShrISAgFEEIaiEhIBJBKGshIiASQSBrISMgGCkDCCIGQu3ekfOWzNy35ACFIgUgGCkDACIHQvXKzYPXrNu38wCFfCIEQiCJIQ4gBCAFQg2JhSIEQhGJIQ8gB0Lh5JXz1uzZvOwAhSIMIAR8IQkgBkLzytHLp4zZsvQAhSEKIBIpAwBCf4VCgIGChIiQoMCAf4MhCyASIRZBACETIBohFQNAIAtQBEADQCATQQhqIRMgFkEIaiIWKQMAQoCBgoSIkKDAgH+DIgRCgIGChIiQoMCAf1ENAAsgBEKAgYKEiJCgwIB/hSELCyAjIAt6p0EDdiATaiIlQVhsaikAACIHIAqFIgQgDHwgBEIQiYUiBSAOfCEIIAggBUIViYVCgICAgICAgIAIhSIFIAQgCXwiBEIgiXwhDSANIAVCEImFIgUgBCAPhSIGIAcgCIV8IgRCIIl8IQggCCAFQhWJhSIFIAQgBkINiYUiBiANfCIEQiCJQv8BhXwhByAHIAVCEImFIgUgBCAGQhGJhSIGIAhCgICAgICAgIAIhXwiBEIgiXwhCCAIIAVCFYmFIgUgBCAGQg2JhSIGIAd8IgRCIIl8IQcgByAFQhCJhSIFIAQgBkIRiYUiBiAIfCIEQiCJfCEIIAcgBkINiSAEhSIHfCIEQiCJIAggBUIViYUiBnwiBSAHQhGJIASFIgQgCHwgBEINiYUiBHwhByAUIAcgBkIQiSAFhUIViSAEQhGJhSAHQiCIhYWnIhggF3EiEWopAABCgIGChIiQoMCAf4MiBFAEQEEIIR0DQCARIB1qIREgHUEIaiEdIBQgESAXcSIRaikAAEKAgYKEiJCgwIB/gyIEUA0ACwsgC0IBfSALgyELIBQgBHqnQQN2IBFqIBdxIhFqLAAAQQBOBEAgFCkDAEKAgYKEiJCgwIB/g3qnQQN2IRELIBEgFGogGEEZdiIYOgAAICEgEUEIayAXcWogGDoAACAgIBFBWGxqIhhBIGogIiAlQVhsaiIRQSBqKQAANwAAIBhBGGogEUEYaikAADcAACAYQRBqIBFBEGopAAA3AAAgGEEIaiARQQhqKQAANwAAIBggESkAADcAACAVQQFrIhUNAAsLIAEgFzYCBCABIBQ2AgAgASAfIBprNgIIQYGAgIB4IRYgGUUNASAZIBtBKGwiE2pBCWoiFUUNASASIBNrIBVBCBCIDwwBCyABKAIAIRcCQCAVIBtBB3FBAEdqIhVFDQAgFUEBcSESIBVBAUcEQCAVQf7///8DcSERA0AgEyAXaiIVKQMAIQQgFSAEQn+FQgeIQoGChIiQoMCAAYMgBEL//v379+/fv/8AhHw3AwAgFUEIaiIVKQMAIQQgFSAEQn+FQgeIQoGChIiQoMCAAYMgBEL//v379+/fv/8AhHw3AwAgE0EQaiETIBFBAmsiEQ0ACwsgEkUNACATIBdqIhMpAwAhBCATIARCf4VCB4hCgYKEiJCgwIABgyAEQv/+/fv379+//wCEfDcDAAsCQAJAIBtBCE8EQCAXIBtqIBcpAAA3AAAMAQsgGwRAIBdBCGogFyAb/AoAAAsgG0UNAQsgGCkDCCIGQu3ekfOWzNy35ACFIgUgGCkDACIHQvXKzYPXrNu38wCFfCIEQiCJIQ4gBCAFQg2JhSIEQhGJIQ8gB0Lh5JXz1uzZvOwAhSIMIAR8IQkgF0EIaiEfIBdBIGshJSAXQShrISEgBkLzytHLp4zZsvQAhSEKQQEhEUEAIRMDQCATIRUgESETAkAgFSAXaiIiLQAAQYABRw0AIBVBWGwiEiAhaiEUIBIgJWohGANAIBgpAAAiByAKhSIEIAx8IARCEImFIgUgDnwhCCAIIAVCFYmFQoCAgICAgICACIUiBSAEIAl8IgRCIIl8IQ0gDSAFQhCJhSIFIAQgD4UiBiAHIAiFfCIEQiCJfCEIIAggBUIViYUiBSAEIAZCDYmFIgYgDXwiBEIgiUL/AYV8IQcgByAFQhCJhSIFIAQgBkIRiYUiBiAIQoCAgICAgICACIV8IgRCIIl8IQggCCAFQhWJhSIFIAQgBkINiYUiBiAHfCIEQiCJfCEHIAcgBUIQiYUiBSAEIAZCEYmFIgYgCHwiBEIgiXwhCCAHIAZCDYkgBIUiB3wiBEIgiSAIIAVCFYmFIgZ8IgUgB0IRiSAEhSIEIAh8IARCDYmFIgR8IQcgFyAHIAZCEIkgBYVCFYkgBEIRiYUgB0IgiIWFpyIjIBlxIhYiEWopAABCgIGChIiQoMCAf4MiC1AEQEEIIR0DQCARIB1qIRIgHUEIaiEdIBcgEiAZcSIRaikAAEKAgYKEiJCgwIB/gyILUA0ACwsgFyALeqdBA3YgEWogGXEiEWosAABBAE4EQCAXKQMAQoCBgoSIkKDAgH+DeqdBA3YhEQsgESAWayAVIBZrcyAZcUEITwRAIBEgF2oiEi0AACEWIBIgI0EZdiISOgAAIB8gEUEIayAZcWogEjoAACAhIBFBWGxqIREgFkH/AUYEQCAiQf8BOgAAIB8gFUEIayAZcWpB/wE6AAAgEUEgaiAUQSBqKQAANwAAIBFBGGogFEEYaikAADcAACARQRBqIBRBEGopAAA3AAAgEUEIaiAUQQhqKQAANwAAIBEgFCkAADcAAAwDCyARKAAAIRIgESAUKAAANgAAIBQgEjYAACAUKAAEIRIgFCARKAAENgAEIBEgEjYABCARKAAIIRIgESAUKAAINgAIIBQgEjYACCAUKAAMIRIgFCARKAAMNgAMIBEgEjYADCARKAAQIRIgESAUKAAQNgAQIBQgEjYAECAUKAAUIRIgFCARKAAUNgAUIBEgEjYAFCARKAAYIRIgESAUKAAYNgAYIBQgEjYAGCAUKAAcIRIgFCARKAAcNgAcIBEgEjYAHCARKAAgIRIgESAUKAAgNgAgIBQgEjYAICAUKAAkIRIgFCARKAAkNgAkIBEgEjYAJAwBCwsgIiAjQRl2IhI6AAAgHyAVQQhrIBlxaiASOgAACyATIBtJIhUgE2ohESAVDQALCyABICAgGms2AghBgYCAgHghFgsMAQsQpwwgHCgCBCETIBwoAgAhFgsgJCAWNgIAICQgEzYCBCAcQSBqJAALIAEoAgAiEUEoayESIAEoAgQiGiAQp3EhFiAQQhmIIgpC/wCDQoGChIiQoMCAAX4hByACKQIIIQYgAikCACEFA0ACfwJAAkACQCARIBZqKQAAIgkgB4UiBEKBgoSIkKDAgAF9IARCf4WDQoCBgoSIkKDAgH+DIgRCAFIEQANAIAUgEkEAIAR6p0EDdiAWaiAacWsiFUEobGoiEykCAIUgBiATKQIIhYRQDQIgBEIBfSAEgyIEQgBSDQALCyAJQoCBgoSIkKDAgH+DIQQgJkUEQCAEUA0DIAR6p0EDdiAWaiAacSEeC0EBIAQgCUIBhoNQDQMaIBEgHmosAAAiFkEATgRAIBEgESkDAEKAgYKEiJCgwIB/g3qnQQN2Ih5qLQAAIRYLIBEgHmogCqdB/wBxIhM6AAAgESAeQQhrIBpxakEIaiATOgAAIAEgASgCCCAWQQFxazYCCCABIAEoAgxBAWo2AgwgESAeQVhsakEoayIBIAIpAgA3AgAgAUEIaiACQQhqKQIANwIAIAFBEGogAykCADcCACABQRhqIANBCGopAgA3AgAgAUEgaiADQRBqKQIANwIAIABBgICAgHg2AgAMAQsgACARIBVBKGxqQRhrIgIpAgA3AgAgAiADKQIANwIAIABBEGogAkEQaiIBKQIANwIAIABBCGogAkEIaiIAKQIANwIAIAAgA0EIaikCADcCACABIANBEGopAgA3AgALICRBMGokAA8LQQALISYgJ0EIaiInIBZqIBpxIRYMAAsAC44IAgF/CX0jAEGgAWsiDCQAIAIgAigCAEEJcjYCACAIIAUqAgwiEyAJKgIUIg+UIAUqAgAiDSAJKgIIIhCUkyAFKgIEIg4gCSoCDCIUlJMgBSoCCCIRIAkqAhAiFZSTOAIMIAggESAPlCANIBSUIBMgFZSSIA4gEJSTkjgCCCAIIBEgEJQgDiAPlCATIBSUIA0gFZSTkpI4AgQgCCAOIBWUIBMgEJQgDSAPlJKSIBEgFJSTOAIAIA0gCSoCHCIUlCAOIAkqAhgiFZSTIg8gD5IhDyARIBWUIA0gCSoCICISlJMiECAQkiEQIAggBSoCGCASIBMgD5QgDSAQlCAOIA4gEpQgESAUlJMiEiASkiISlJOSkpI4AhggCCAFKgIUIBQgEyAQlCARIBKUIA0gD5STkpKSOAIUIAggBSoCECAVIBMgEpQgDiAPlCARIBCUk5KSkjgCECADIAMqAgAiDiAOIAooAgAgCigCBCIIKAIIQQFrQXhxakEIaiIKIAgoAqgBEQsAIg0gDSAOXhsgDSANXBs4AgAgDEEMaiAKIAlBCGoiCSAIKAKYAREBACADIAwqAhggDCoCDCINIA2UIAwqAhAiDSANlJIgDCoCFCINIA2UkpGSIg4gDiADKgIEIg0gDSAOXRsgDSANXBs4AgQCQAJAAkACQCALKAIAQQFrDgICAAELIAxByABqIgNBCGogCygCBCICQQhqKQIANwMAIANBEGogAkEQaikCADcDACADQRhqIAJBGGopAgA3AwAgA0EgaiACQSBqKQIANwMAIANBKGogAkEoaigCADYCACAMIAIpAgA3A0gMAgsgCyoCBCINQwAAAABbBEAgDEHgAGpCADcDACAMQegAakIANwMAIAxB8ABqQQA2AgAgDEIANwNYIAxCADcDSCAMQoCAgICAgIDAPzcDUAwCCyAMQcgAaiAKIA0gCCgCnAERDQAMAQsgCyoCBCINQwAAAABbBEAgDEHgAGpCADcDACAMQegAakIANwMAIAxB8ABqQQA2AgAgDEIANwNYIAxCADcDSCAMQoCAgICAgIDAPzcDUAwBCyAMQfQAaiICIApDAACAPyAIKAKcARENACACIA0QsgsgDEHIAGoiA0EoaiACQShqKAIANgIAIANBIGogAkEgaikCADcDACADQRhqIAJBGGopAgA3AwAgA0EQaiACQRBqKQIANwMAIANBCGogAkEIaikCADcDACAMIAwpAnQ3A0gLIAxBHGogDEHIAGogCRD1BCAAKAIIIgIgACgCAEYEQCAAQficwgAQuAgLIAAgAkEBajYCCCAAKAIEIAJBA3RqIgAgBzYCBCAAIAY2AgAgBEEwaiAMQRxqEPcJIAQgASAFEIAGIAxBoAFqJAALogoCA3wDfyMAQRBrIgUkACAAuyEBAn0CQAJAIAC8IgZB/////wdxIgRB25+k+gNPBEAgBEHSp+2DBE8EQCAEQdbjiIcETwRAAkACQAJAAkAgBEH////7B00EQCAFQgA3AwgCQCAEQdqfpO4ETQRAIAEgAUSDyMltMF/kP6JEAAAAAAAAOEOgRAAAAAAAADjDoCICRAAAAFD7Ifm/oqAgAkRjYhphtBBRvqKgIQEgAvwCIQQMAQsgBSAEIARBF3ZBlgFrIgRBF3Rrvrs5AwAgBSAFQQhqIAQQSSEEIAZBAE4EQCAFKwMIIQEMAQtBACAEayEEIAUrAwiaIQELIARBA3FBAWsOAwMEAQILIAAgAJMMCQsgASABIAGiIgKiIgMgAiACoqIgAkSnRjuMh83GPqJEdOfK4vkAKr+goiABIAMgAkSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwICyABIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2DAcLIAEgAaIiAiABmqIiAyACIAKioiACRKdGO4yHzcY+okR058ri+QAqv6CiIAMgAkSy+26JEBGBP6JEd6zLVFVVxb+goiABoaC2DAYLIAEgAaIiASABoiECIAFEgV4M/f//37+iRAAAAAAAAPA/oCACREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLaMDAULIARB39u/hQRLDQIgBkEATgRAIAFE0iEzf3zZEsCgIgIgAqIhASACIAGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwFC0TSITN/fNkSwCABoSICIAKiIQEgAiABoiIDIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiADIAFEsvtuiRARgT+iRHesy1RVVcW/oKKgoLYMBAsgBEHjl9uABEsNAiAGQQBOBEBEGC1EVPsh+T8gAaEiAiACoiEBIAIgAaIiAyABIAGioiABRKdGO4yHzcY+okR058ri+QAqv6CiIAIgAyABRLL7bokQEYE/okR3rMtUVVXFv6CioKC2DAQLIAFEGC1EVPsh+T+gIgIgAqIhASACIAGiIgMgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAMgAUSy+26JEBGBP6JEd6zLVFVVxb+goqCgtgwDCyAEQYCAgMwDTwRAIAEgAaIiASABoiECIAFEgV4M/f//37+iRAAAAAAAAPA/oCACREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYMAwsgBSAAQwAAgHuSOAIIIAUqAggaQwAAgD8MAgtEGC1EVPshGcBEGC1EVPshGUAgBkEAThsgAaAiASABoiIBIAGiIQIgAUSBXgz9///fv6JEAAAAAAAA8D+gIAJEQjoF4VNVpT+ioCABIAKiIAFEaVDu4EKT+T6iRCceD+iHwFa/oKKgtgwBC0QYLURU+yEJwEQYLURU+yEJQCAGQQBOGyABoCIBIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jAshACAFQRBqJAAgAAvDBwIBfw59IwBBoAFrIgokACAKIAIgCSoCBCIREOICIAoqAgAiEiAIKgIEIhaUIAoqAgQiFCAIKgIAIheUkyILIAuSIQsgCioCCCIMIBeUIBIgCCoCCCITlJMiDyAPkiEPIBMgCioCDCINIAuUIBIgD5QgFCAUIBOUIAwgFpSTIhMgE5IiDpSTkpIhEyAWIA0gD5QgDCAOlCASIAuUk5KSIRYgFyANIA6UIBQgC5QgDCAPlJOSkiEXIAkqAgghEiAJKgIAIRRBACEIAkADQCAJIBECfSABQwAAAABdRQRAIAFDAACgNV5FDQMgCSAROAIAIBEhFCASDAELIAkgETgCCCARIRIgFAuSQwAAAD+UIhE4AgQgEiAUk0MAAKA1XUUEQCAKQRxqIAIgERDiAiAKQThqIAUgERDiAiAKIAoqAiQiASAKKgJAIg2UIAoqAiAiCyAKKgI8Ig6UIAoqAhwiDCAKKgI4IhCUIAoqAigiDyAKKgJEIhiUkpKSOAJgIAogCyAQlCAPIA2UIAwgDpSTkiABIBiUkzgCXCAKIA8gDpQgDCANlJIgCyAYlJMgASAQlJM4AlggCiABIA6UIA8gEJQgDCAYlJMgCyANlJOSOAJUIAsgCioCSCAKKgIskyIQlCAMIAoqAkwgCioCMJMiGJSTIg0gDZIhDSABIBiUIAsgCioCUCAKKgI0kyIVlJMiDiAOkiEOIAogFSAPIA2UIAsgDpQgDCAMIBWUIAEgEJSTIhUgFZIiFZSTkpI4AmwgCiAYIA8gFZQgDCANlCABIA6Uk5KSOAJoIAogECAPIA6UIAEgFZQgCyANlJOSkjgCZCAKIBMgDyAXIAuUIBYgDJSTIg0gDZIiDZQgCyAWIAGUIBMgC5STIg4gDpIiDpQgDCATIAyUIBcgAZSTIhAgEJIiEJSTkpI4AnggCiAWIA8gEJQgDCANlCABIA6Uk5KSOAJ0IAogFyAPIA6UIAEgEJQgCyANlJOSkjgCcCAKQfwAaiADIApB8ABqIAQRAQAgCiAKKgJ4jDgCnAEgCiAKKgJ0jDgCmAEgCiAKKgJwjDgClAEgCkGIAWogBiAKQdQAaiAKQZQBaiAHEQIAIAoqAogBIAoqAnAiAZQgCioCjAEgCioCdCILlJIgCioCkAEgCioCeCIMlJIgASAKKgJ8lCALIAoqAoABlJIgDCAKKgKEAZSSkyEBIAhBAWohCAwBCwsgCSASOAIECyAAIAg2AgwgACAJKQIANwIAIABBCGogCUEIaigCADYCACAKQaABaiQAC/oHAgZ/AX4gASgCBCEEIAEoAggiBq0hCCAAKAIAIgIoAgghAyACKAIAIANrQQdNBEAgAiADQQhBAUEBEOIGIAIoAgghAwsgAiADQQhqIgU2AgggAigCBCADaiAINwAAAkAgBgRAIAQgBkEGdGohBgNAIAQgABCQCCIDDQIgBEEMaigCACEFIAIoAgAgAigCCCIDa0EDTQRAIAIgA0EEQQFBARDiBiACKAIIIQMLIAIgA0EEajYCCCACKAIEIANqIAU2AAAgBEEQaiIEIAAQkAgiAw0CIARBDGooAgAhBSACKAIAIAIoAggiA2tBA00EQCACIANBBEEBQQEQ4gYgAigCCCEDCyACIANBBGo2AgggAigCBCADaiAFNgAAIARBEGoiBCAAEJAIIgMNAiAEQQxqKAIAIQUgAigCACACKAIIIgNrQQNNBEAgAiADQQRBAUEBEOIGIAIoAgghAwsgAiADQQRqNgIIIAIoAgQgA2ogBTYAACAEQRBqIgQgABCQCCIDDQIgBEEMaigCACEHIAIoAgAgAigCCCIDa0EDTQRAIAIgA0EEQQFBARDiBiACKAIIIQMLIAIgA0EEaiIFNgIIIAIoAgQgA2ogBzYAACAGIARBEGoiBEcNAAsLIAEoAhAhBCABKAIUIgOtIQggAigCACAFa0EHTQRAIAIgBUEIQQFBARDiBiACKAIIIQULIAIgBUEIaiIANgIIIAIoAgQgBWogCDcAACADBEAgA0ECdCEFA0AgBDUCACEIIARBBGohBCACIAIoAgAgAGtBB0sEfyAABSACIABBCEEBQQEQ4gYgAigCCAsiA0EIaiIANgIIIAIoAgQgA2ogCDcAACAFQQRrIgUNAAsLIAE1AiQhCCACKAIAIABrQQdNBEAgAiAAQQhBAUEBEOIGIAIoAgghAAsgAigCBCAAaiAINwAAIAIgAEEIaiIDNgIIIAEoAhwhBCABKAIgIgGtIQggAigCACADa0EHTQRAIAIgA0EIQQFBARDiBiACKAIIIQMLIAIgA0EIaiIANgIIIAIoAgQgA2ogCDcAACABBEAgBCABQQN0aiEBA0AgAgJ/IAQoAgBBAUYEQCAEQQRqNQIAIQggACACKAIARgRAIAIgAEEBQQFBARDiBiACKAIIIQALIAIoAgQgAGpBAToAACACIABBAWoiADYCCCACKAIAIABrQQdNBEAgAiAAQQhBAUEBEOIGIAIoAgghAAsgAigCBCAAaiAINwAAIABBCGoMAQsgACACKAIARgRAIAIgAEEBQQFBARDiBiACKAIIIQALIAIoAgQgAGpBADoAACAAQQFqCyIANgIIIAEgBEEIaiIERw0ACwtBACEDCyADC6QIAhp/AX4gASgCCCISrUIMfiIcpyEHAkACQAJAAkACQAJAAkACQCAcQiCIpw0AIAdB/P///wdLDQAgASgCBCECAkAgB0UEQEEEIQsMAQtBBCEDIBIhFCAHQQQQsw4iC0UNAQsgBwRAIAsgAiAH/AoAAAsgASgCFCIHQQN0IQJBACEDIAdB/////wFLDQEgAkH8////B0sNASABKAIQIQQCQCACRQRAQQQhDAwBC0EEIQMgByEVIAJBBBCzDiIMRQ0CCyACBEAgDCAEIAL8CgAACyABKAIgIhOtQhR+IhynIQJBACEDIBxCIIinDQIgAkH8////B0sNAiABKAIcIQQCQCACRQRAQQQhDQwBC0EEIQMgEyEWIAJBBBCzDiINRQ0DCyACBEAgDSAEIAL8CgAACyABKAIsIgJBBXQhA0EAIQQgAkH///8/Sw0DIANB/P///wdLDQMgASgCKCEFAkAgA0UEQEEEIQ4MAQtBBCEEIAIhFyADQQQQsw4iDkUNBAsgAwRAIA4gBSAD/AoAAAsgASgCOCIDQQJ0IQRBACEFIANB/////wNLDQQgBEH8////B0sNBCABKAI0IQYCQCAERQRAQQQhDwwBC0EEIQUgAyEYIARBBBCzDiIPRQ0FCyAEBEAgDyAGIAT8CgAACyABKAJEIgRBAnQhBUEAIQYgBEH/////A0sNBSAFQfz///8HSw0FIAEoAkAhCQJAIAVFBEBBBCEQDAELQQQhBiAEIRkgBUEEELMOIhBFDQYLIAUEQCAQIAkgBfwKAAALIAEoAlAiBUECdCEGIAVB/////wNLDQYgBkH8////B0sNBiABKAJMIQgCQCAGRQRAQQQhEUEAIQkMAQtBBCEKIAUhCSAGQQQQsw4iEUUNBwsgBgRAIBEgCCAG/AoAAAsgASgCXCIGQQJ0IQggBkH/////A0sNByAIQfz///8HSw0HIAEoAlghGgJAIAhFBEBBBCEBQQAhCgwBC0EEIRsgBiEKIAhBBBCzDiIBRQ0ICyAIBEAgASAaIAj8CgAACyAAIAY2AlwgACABNgJYIAAgCjYCVCAAIAU2AlAgACARNgJMIAAgCTYCSCAAIAQ2AkQgACAQNgJAIAAgGTYCPCAAIAM2AjggACAPNgI0IAAgGDYCMCAAIAI2AiwgACAONgIoIAAgFzYCJCAAIBM2AiAgACANNgIcIAAgFjYCGCAAIAc2AhQgACAMNgIQIAAgFTYCDCAAIBI2AgggACALNgIEIAAgFDYCAA8LIAMgB0HY1cIAENMNAAsgAyACQdjVwgAQ0w0ACyADIAJB2NXCABDTDQALIAQgA0HY1cIAENMNAAsgBSAEQdjVwgAQ0w0ACyAGIAVB2NXCABDTDQALIAogBkHY1cIAENMNAAsgGyAIQdjVwgAQ0w0AC9MHAg9/BX4jAEEwayIFJAAgBSACNgIoIAEoAgwhCiAFIAVBKGo2AiwCQCAKIApBAWoiAk0EQCABKAIEIgsgC0EBakEDdkEHbCALQQhJGyIDQQF2IAJJBEACQAJAAkACfyADQQFqIgMgAiACIANJGyICQQ9PBEAgAkH/////AUsNAkF/IAJBA3RBB25BAWtndkEBagwBC0EEQQhBECACQQhJGyACQQRJGwsiAq1CFH4iEkIgiKcNASASpyIDQXhLDQEgA0EHakF4cSIHIAJBCGoiDGohAyADIAdJDQEgA0H4////B0sNASADQQgQsw4iBg0CQQggA0GQxMQAKAIAIgBBzAggABsRAAAACxCmDCAFKAIkIQIgBSgCICEDDAQLEKYMIAUoAhQhAiAFKAIQIQMMAwsgBiAHaiEGIAwEQCAGQf8BIAz8CwALIAJBAWsiCSACQQN2QQdsIAlBCEkbIQ0CQCAKRQRAIAEoAgAhBwwBCyAGQQhqIQ4gASgCACIHKQMAQn+FQoCBgoSIkKDAgH+DIRIgBSgCKCEPQQAhAiAKIQwgByEDA0AgElAEQANAIAJBCGohAiADQQhqIgMpAwBCgIGChIiQoMCAf4MiEkKAgYKEiJCgwIB/UQ0ACyASQoCBgoSIkKDAgH+FIRILIAcgEnqnQQN2IAJqIhBBbGxqIgRBFGspAgAgDykDAIUiE0IgiCIUIARBCGs1AgBCt9OwhQyFIhV+IARBDGs1AgBC3aHxywyFIhYgE0L/////D4MiE36FIBMgFX4gFCAWfoVCIIiFpyIRIAlxIgQgBmopAABCgIGChIiQoMCAf4MiE1AEQEEIIQgDQCAEIAhqIQQgCEEIaiEIIAQgCXEiBCAGaikAAEKAgYKEiJCgwIB/gyITUA0ACwsgEkIBfSASgyESIBN6p0EDdiAEaiAJcSIEIAZqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQQLIAQgBmogEUEZdiIIOgAAIA4gBEEIayAJcWogCDoAACAGIARBf3NBFGxqIgRBEGogByAQQX9zQRRsaiIIQRBqKAAANgAAIARBCGogCEEIaikAADcAACAEIAgpAAA3AAAgDEEBayIMDQALCyABIAk2AgQgASAGNgIAIAEgDSAKazYCCEGBgICAeCEDIAtFDQIgByALQRRsQRtqQXhxIgJrIAIgC2pBCWpBCBCIDwwCCyABIAVBLGpB+ABBFBDLAkGBgICAeCEDDAELEKYMIAUoAgwhAiAFKAIIIQMLIAAgAjYCBCAAIAM2AgAgBUEwaiQAC4AIAgJ/FH0jAEGAAmsiBSQAIAVBuAFqQQA2AgAgBUIANwKwASAFQoKAgIAwNwIIIAVCgICAgBA3AgAgBUE0akEAQfgA/AsAIAIqAgwiDIwhFkMAAIA/IQggDCAMlCACKgIQIgogCpSSIAIqAhQiDyAPlJIiDUMAAAAAXgRAIA+MIA2RIgeVIQkgCowgB5UhCCAWIAeVIQcLIAVBADYCvAEgBUEANgKsASAFQQA2AjAgBUIANwIoIAcgASoCACIQlCAIIAEqAgQiEZSSIAkgASoCCCISlJIgByABKgIMIhOUIAggASoCECIUlJIgCSABKgIUIhWUkl4hBiAFIAkgASoCGCILlCASIBUgBhuSIAIqAggiF5MiCTgCJCAFIAggC5QgESAUIAYbkiACKgIEIhiTIgg4AiAgBSAHIAuUIBAgEyAGG5IgAioCACIZkyIHOAIcIAUgCTgCGCAFIAg4AhQgBSAHOAIQIAVBwAFqIAEgBSACIAMQrgEgBSgCwAEhAgJAAkACQCAERQRAIAIEQEMAAAAAIQkgBSoCxAEiCEMAAAAAXARAIAAgBSkCyAE3AgwgACAIOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIADAULQwAAgD8hCEMAAAAAIQcgDyANkSIOlSINIA2UIAwgDpUiDCAMlCAKIA6VIg4gDpSSkiIaQwAAAABeBEAgDSAakSIHlSEJIA4gB5UhCCAMIAeVIQcLIAUgFjgC4AEgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggBSAPjDgC6AEgBSAKjDgC5AEgBSAXIA0gDSALIAmUIBIgFSASIAmUIBEgCJQgECAHlJKSIBUgCZQgFCAIlCATIAeUkpJeIgIbkiIKIBeTlCAMIAsgB5QgECATIAIbkiIHIBmTlCAOIAsgCJQgESAUIAIbkiIIIBiTlJKSQ28SgzqSIgmUkiILOALcASAFIAogC5MiCzgCJCAFIBggDiAJlJIiCjgC2AEgBSAIIAqTIgg4AiAgBSAZIAwgCZSSIgo4AtQBIAUgByAKkyIHOAIcIAUgCzgCGCAFIAg4AhQgBSAHOAIQIAVB7AFqIAEgBSAFQdQBaiAJQ28SgzqSEK4BIAUoAuwBQQFHDQIgAyAJIAUqAvABkyIDYEUEQCAAQQQ2AgAMBQsgACADOAIIIABBAzYCACAAIAUqAvwBjDgCFCAAIAUqAvgBjDgCECAAIAUqAvQBjDgCDAwECyAAQQQ2AgAMAwsgAg0BIABBBDYCAAwCCyAAQQQ2AgAMAQsgACAFKQLIATcCDCAAIAUqAsQBOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIACyAFQYACaiQAC9EHAg9/BX4jAEEwayIFJAAgBSACNgIoIAEoAgwhCiAFIAVBKGo2AiwCQCAKIApBAWoiAk0EQCABKAIEIgsgC0EBakEDdkEHbCALQQhJGyIDQQF2IAJJBEACQAJAAkACfyADQQFqIgMgAiACIANJGyICQQ9PBEAgAkH/////AUsNAkF/IAJBA3RBB25BAWtndkEBagwBC0EEQQhBECACQQhJGyACQQRJGwsiAq1CFH4iEkIgiKcNASASpyIDQXhLDQEgA0EHakF4cSIHIAJBCGoiDGohAyADIAdJDQEgA0H4////B0sNASADQQgQsw4iBg0CQQggA0GQxMQAKAIAIgBBzAggABsRAAAACxCmDCAFKAIkIQIgBSgCICEDDAQLEKYMIAUoAhQhAiAFKAIQIQMMAwsgBiAHaiEGIAwEQCAGQf8BIAz8CwALIAJBAWsiCSACQQN2QQdsIAlBCEkbIQ0CQCAKRQRAIAEoAgAhBwwBCyAGQQhqIQ4gASgCACIHKQMAQn+FQoCBgoSIkKDAgH+DIRIgBSgCKCEPQQAhAiAKIQwgByEDA0AgElAEQANAIAJBCGohAiADQQhqIgMpAwBCgIGChIiQoMCAf4MiEkKAgYKEiJCgwIB/UQ0ACyASQoCBgoSIkKDAgH+FIRILIA8pAwBCgoCAgBCFIhNCIIgiFCAHIBJ6p0EDdiACaiIQQWxsaiIEQRBrNQIAQrfTsIUMhSIVfiAEQRRrNQIAQt2h8csMhSIWIBNC/////w+DIhN+hSATIBV+IBQgFn6FQiCIhaciESAJcSIEIAZqKQAAQoCBgoSIkKDAgH+DIhNQBEBBCCEIA0AgBCAIaiEEIAhBCGohCCAEIAlxIgQgBmopAABCgIGChIiQoMCAf4MiE1ANAAsLIBJCAX0gEoMhEiATeqdBA3YgBGogCXEiBCAGaiwAAEEATgRAIAYpAwBCgIGChIiQoMCAf4N6p0EDdiEECyAEIAZqIBFBGXYiCDoAACAOIARBCGsgCXFqIAg6AAAgBiAEQX9zQRRsaiIEQRBqIAcgEEF/c0EUbGoiCEEQaigAADYAACAEQQhqIAhBCGopAAA3AAAgBCAIKQAANwAAIAxBAWsiDA0ACwsgASAJNgIEIAEgBjYCACABIA0gCms2AghBgYCAgHghAyALRQ0CIAcgC0EUbEEbakF4cSICayACIAtqQQlqQQgQiA8MAgsgASAFQSxqQZMCQRQQywJBgYCAgHghAwwBCxCmDCAFKAIMIQIgBSgCCCEDCyAAIAI2AgQgACADNgIAIAVBMGokAAvYBwIXfwt9IwBB0AJrIgQkACACKgIIIR4gAioCBCEfIAIqAgAhICAEQQRqIAFBAEEAEKICIARBiAFqIgNBCGoiDCAEQRBqKQIANwMAIANBEGoiDSAEQRhqKQIANwMAIANBGGoiDiAEQSBqKQIANwMAIANBIGoiDyAEQShqKAIANgIAIARB4ABqIgNBCGoiEiAEQThqKQIANwMAIANBEGoiEyAEQUBrKQIANwMAIANBGGoiFCAEQcgAaikCADcDACADQSBqIhUgBEHQAGooAgA2AgAgBCAEKQIINwOIASAEIAQpAjA3A2AgBCgCBCEDIAQoAiwhCiABKAIQQQJrIRYgASgCDEEBayEXIARBjQJqIRAgBEGsAmohCCAEQYQCaiEJQ///f38hISAgISIgHyEjIB4hJANAAkAgBEHYAWoiBUEgaiIGIA8oAgA2AgAgBUEYaiIYIA4pAwA3AwAgBUEQaiIZIA0pAwA3AwAgBUEIaiIaIAwpAwA3AwAgBCAEKQOIATcD2AECQCADQQFxDQADQCAKQQFxBEAgBEHgAGohBSAKIQNBACEKDAILIBcgC0EBaiILTQRAIAcgFk8NA0EAIQsgB0EBaiEHCyAEQYACaiABIAsgBxCiAiAMIAlBCGopAgA3AwAgDSAJQRBqKQIANwMAIA4gCUEYaikCADcDACAPIAlBIGooAgA2AgAgEiAIQQhqKQIANwMAIBMgCEEQaikCADcDACAUIAhBGGopAgA3AwAgFSAIQSBqKAIANgIAIAQgCSkCADcDiAEgBCAIKQIANwNgIAQoAqgCIQogBCgCgAIhAyAaIAwpAwA3AwAgGSANKQMANwMAIBggDikDADcDACAGIA8oAgA2AgAgBCAEKQOIATcD2AEgA0EBcUUNAAsLIARBsAFqIgZBIGogBUEgaigCADYCACAGQRhqIAVBGGopAgA3AwAgBkEQaiAFQRBqKQIANwMAIAZBCGogBUEIaikCADcDACAEIAUpAgA3A7ABIANBAXFFDQBBACEDIARBgAJqIAYgAkEAEFYgBEHWAWoiBSAQQQJqLQAAOgAAIAQgEC8AADsB1AEgBCoCgAIiJSAgkyIbIBuUIAQqAoQCIhsgH5MiHCAclJIgBCoCiAIiHCAekyIdIB2UkiIdICFdRQ0BIAQtAIwCIREgBEECaiAFLQAAOgAAIAQgBC8B1AE7AQAgJSEiIBshIyAcISQgHSEhDAELCyAAIBE6AAwgACAkOAIIIAAgIzgCBCAAICI4AgAgACAELwAAOwANIABBD2ogBEECai0AADoAACAEQdACaiQAC+AIAgp/Bn4jAEEwayIFJAAgBSACNgIUIAUgATYCEAJAAkAgASACRwRAIAAoAgAiBygCECIIIAFNDQIgBygCDCIHIAFBsAFsaiIJKAIAQQFHDQIgAiAITw0CIAcgAkGwAWxqIgcoAgBBAUcNAiAJKAIEIQMgBygCBCEHIAEgAk0EQCACIQggByEJIAMhByABIQIMAgsgASEIIAMhCQwBCyAFQQA2AhhBASAFQRBqIAVBFGogBUEYakGYscIAEPoMAAsgACgCBCIDKQMQIAKtIAetQiCGhIUiDUIgiCIOIAlBt9OwhXxzrSIPfiANQv////8PgyINIAhB3aHxy3xzrSIQfoUgDSAPfiAOIBB+hUIgiYUiDkIZiCIQQv8Ag0KBgoSIkKDAgAF+IREgCK0gCa1CIIaEIRIgAygCACEGIAMoAgQiCiAOp3EiASEEAkADQCAEIAZqKQAAIg8gEYUiDUKBgoSIkKDAgAF9IA1Cf4WDQoCBgoSIkKDAgH+DIg1CAFIEQANAAkAgBiANeqdBA3YgBGogCnFBbGxqIgtBFGsoAgAgAkcNACALQRBrKAIAIAdHDQAgCCALQQxrKAIARw0AIAkgC0EIaygCAEYNBAsgDUIBfSANgyINQgBSDQALCyAPIA9CAYaDQoCBgoSIkKDAgH+DUARAIAxBCGoiDCAEaiAKcSEEDAELCyAFIAAoAggoAgA2AiggBSASNwIgIAUgBzYCHCAFIAI2AhggASAGaikAAEKAgYKEiJCgwIB/gyINUARAQQghBANAIAEgBGohASAEQQhqIQQgBiABIApxIgFqKQAAQoCBgoSIkKDAgH+DIg1QDQALCyADKAIIIQsgBiANeqdBA3YgAWogCnEiBGosAAAiAUEATgRAIAYgBikDAEKAgYKEiJCgwIB/g3qnQQN2IgRqLQAAIQELAkAgAUEBcSIBIAtFcUUEQCAEIAZqIBCnQf8AcSIMOgAAIAYgBEEIayAKcWpBCGogDDoAACADIAsgAWs2AgggAyADKAIMQQFqNgIMIAYgBEFsbGpBFGsiAUEQaiAFQRhqIgNBEGooAgA2AgAgAUEIaiADQQhqKQIANwIAIAEgBSkCGDcCAAwBCyAFQQhqIAMgA0EQahD4ASADKAIAIAMoAgQgDhCWCiIBIAMoAgAiBGoiBi0AACEKIAYgDqdBGXYiBjoAACAEIAMoAgQgAUEIa3FqQQhqIAY6AAAgAyADKAIMQQFqNgIMIAMgAygCCCAKQQFxazYCCCAEIAFBbGxqQRRrIgEgBUEYaiIDKQIANwIAIAFBCGogA0EIaikCADcCACABQRBqIANBEGooAgA2AgALIAAoAgwiACgCCCIDIAAoAgBGBEAgAEGIscIAEJQICyAAKAIEIANBFGxqIgEgCTYCECABIAg2AgwgASAHNgIIIAEgAjYCBCABQQA2AgAgACADQQFqNgIIDAELIAtBBGsgACgCCCgCADYCAAsgBUEwaiQAC7QGARx9IAEqAjQhGyABKgIwIRwgASoCLCEdIAIqAgAhDSACKgIEIQ4gAioCCCEFIAEqAhghCiABKgIUIRcgASoCECEYIAEqAgwiByABKgIkIg+UIAEqAgAiCCABKgIgIhCUIAEqAigiFiABKgIIIgmMlCABKgIEIgQgASoCHCIRlJOSkiISIBKMIAkgD5QgBCAQlCAIIBGUIAcgFpSSkpIiGUMAAAAAYCIBGyIMIAyUIAQgD5QgByARlCAIIBaUkyAJIBCUk5IiEyATjCABGyIUIBSUIAcgEJQgCSARlCAEIBaUk5IgCCAPlJMiFSAVjCABGyIaIBqUkpIiHkMAAAAAXgRAIAwgHpEiA5UgEiASlCATIBOUIBUgFZSSkpEgGYsQsg8iBiAGkiIMlCELIBogA5UgDJQhBiAUIAOVIAyUIQMLIAAgCzgCFCAAIAY4AhAgACADOAIMIAAgCiAFIAcgCCAOlCAEIA2UkyIDIAOSIgOUIAggCSANlCAIIAWUkyIGIAaSIgaUIAQgBCAFlCAJIA6UkyIFIAWSIguUk5KSkiIFIBkgFyAOIAcgBpQgCSALlCAIIAOUk5KSkiIOIBOUIBUgGCANIAcgC5QgBCADlCAJIAaUk5KSkiINlJMiAyADkiIDlCATIBIgDZQgBSATlJMiBiAGkiIGlCAVIBUgBZQgEiAOlJMiCyALkiILlJOSkiAbIAWTIAcgCCAXlCAEIBiUkyIFIAWSIgWUIAQgBCAKlCAJIBeUkyIMIAySIgyUIAggCSAYlCAIIAqUkyIUIBSSIhSUk5IgCpMiCiAWIBEgByAUlCAIIAWUIAkgDJSTkiAXkyIIlCAQIAcgDJQgCSAUlCAEIAWUk5IgGJMiCZSTIgQgBJIiBJQgESAPIAmUIBEgCpSTIgcgB5IiB5QgECAQIAqUIA8gCJSTIgogCpIiCpSTkpKSkjgCCCAAIA4gGSAGlCASIAuUIBMgA5STkpIgHCAOkyAIIBYgB5QgDyAKlCARIASUk5KSkpI4AgQgACANIBkgC5QgFSADlCASIAaUk5KSIB0gDZMgCSAWIAqUIBAgBJQgDyAHlJOSkpKSOAIAC+EHAgt/CX0jAEEgayIMJAACQAJAAkACQAJAIAgoAgwiDiABKAKUAiIPQQF0IhAgBygCACINak8EQCAAKgIAIRggAigClAMgBiANamohEyAIKAIEIQggAyoCECEeIAMqAgAhGSADKgIEIR8gAyoCDCEcIAMqAgghGyADLQAYIRYgEARAIAggDUECdGoiAyAQQQJ0aiENIBAhACADIQIDQCAOQQJ0IhQgAmoiFSADIAMgDUYiERsiEkEANgIAIBJBBGoiEiADIBRqIA0gERsiDUYhAyAVIAIgERsiAiAUaiIRIBIgAxsiFUEANgIAIBEgAiADGyECIBIgFGogDSADGyENIBUgAEECR0ECdGohAyAAQQJrIgANAAsLIA5BAUYiACATQQBHcQ0BIBNBACAOQQFHIgIbIgMgDk8NASAIIANBAnRqQYCAgPwDNgIAIAAgDyATaiIDQQBHcQ0CIANBACACGyIAIA5PDQIgCCAAQQJ0aiIAQYCAgPwDNgIAIAcoAgAiAyAPaiICIA9qIA5LDQUgAUHcAGogCCACQQJ0aiAPENkBIAAqAgAhHSAFKAIAQQFGBEBDAAAAAEMAAIA/IBiVIBhDAAAAAFsbIhogBSoCBCAEk5QiFyAaIAUqAgggBJOUIhpfRQ0EIBogFyAZIBcgGV4bIhkgGSAaXhshGQsgCygCACICIApJDQQgAiAKQeicwgAQiAsACwwECyAMQQA2AhggDEEBNgIMIAxBzP7BADYCCCAMQgQ3AhAgDEEIakHInMIAELgNAAsgDEEANgIYIAxBATYCDCAMQcz+wQA2AgggDEIENwIQIAxBCGpB2JzCABC4DQALIBcgGhCJCwALIAkgAkHIAGxqIgBBADsBRCAAIBggHpQiFzgCLCAAIBeMOAIoIABC/////w83AiAgACADNgIcIAAgDzYCGCAAQgA3AhAgACABKAKYAjYCDCAAQX82AgggACAGNgIEIABBATYCACAAQwAAAABDAACAPyAdlSAdi0MI5TweXxs4AjAgAEMAAAAAQwAAgD8gGCAYlCAblCAYIByUkiIXlSAXi0MI5TweXxsiF0MAAAAAIBZBAXEiARs4AkAgAEMAAAAAIBcgARs4AjwgACAEIB+TIBtDAAAAAEMAAIA/IBggG5QgHJIiBJUgBItDCOU8Hl8blCIElEMAAAAAkkMAAAAAIARDAAAAAFwbIBmTIgQ4AjggACAEOAI0IAcgAyAQajYCACALIAJBAWo2AgAgDEEgaiQADwsgDEEANgIYIAxBATYCDCAMQZD7wQA2AgggDEIENwIQIAxBCGpBmPvBABC4DQALkwgCCn8BfiMAQdAAayICJAACQCABKAIEIgNFBEAgAEGAgICAeDYCAAwBCyABIANBAWs2AgQCfyABKAIAIgcoAgQiAUEHTQRAIAJCgcoANwMgQQEhBCACQSBqEKINDAELIAcgAUEIazYCBCAHIAcoAgAiAUEIajYCACACIAEpAAAQpwggAigCACEEIAIoAgQLIQECQAJAAkACQCAEQQFxBEAgASEDDAELQQQhAyABRQRAQQAhBEEAIQEMBAtBgIAEIAEgAUGAgARPGyIGQQR0IgRBBBCzDiIDRQ0BQQAhBCACQQA2AhAgAiADNgIMIAIgBjYCCEEIIQgDQCACQQM2AkQgAiAHNgJAIAJBIGogAkFAaxCWBAJAAkACQAJAAkAgAigCICIGQYCAgIB4aw4CAQACCyACKAIkIQMMAgtBACACQTxqQcSswQAQvgohAwwBCyACKAIkIQkCQAJ/AkAgAigCRCIFBEAgBUEBRg0BIAIoAkAiBSgCBCILQQdNBEAgAkKBygA3AyAgAkEgahCiDQwDCyACKAIoIQogBSALQQhrNgIEIAUgBSgCACIFQQhqNgIAIAUpAAAiDEKAgICAEFQNAyACQQE6ACAgAiAMNwMoIAJBIGogAkE8akGAqsEAEO8KDAILQQEgAkE8akHErMEAEL4KDAELQQIgAkE8akHErMEAEL4KCyEDIAZFDQEgCSAGQQJ0QQQQiA8MAQsgDKdBA2wiBSAKRg0BIAIgBTYCOCACIAo2AjwgAkECNgIkIAJBlMvBADYCICACQgI3AiwgAiACQTxqrUKAgICAMIQ3A0ggAiACQThqrUKAgICAMIQ3A0AgAiACQUBrNgIoIAJBFGoiAyACQSBqIgEQjAUgASADEP0KQQxBBBCzDiIDRQ0FIAMgAikCIDcCACADQQhqIAFBCGooAgA2AgAgAigCFCIBBEAgAigCGCABQQEQiA8LIAZFDQAgCSAGQQJ0QQQQiA8LIAIoAgwhBiAEBEAgBiEBA0AgASgCACIHBEAgAUEEaigCACAHQQJ0QQQQiA8LIAFBEGohASAEQQFrIgQNAAsLIAIoAggiAUUNAiAGIAFBBHRBBBCIDwwCCyAKrSAMQiCGhCEMIAIoAgggBEYEQCACQQhqQcirwQAQugggAigCDCEDCyADIAhqIgUgDDcCACAFQQRrIAk2AgAgBUEIayAGNgIAIAIgBEEBaiIENgIQIAhBEGohCCABIARHDQALIAIoAgwhAyACKAIIIgFBgICAgHhHDQMLIABBgYCAgHg2AgAgACADNgIEDAMLQQQgBEG4q8EAENMNAAtBBEEMQZDExAAoAgAiAEHMCCAAGxEAAAALIAAgBDYCCCAAIAM2AgQgACABNgIACyACQdAAaiQAC/YHAQx/IwBBsAFrIgckAAJAAkACQAJAIABFDQAgAEEIayIKKAIAQQFqIQggCiAINgIAIAhFDQEgACgCACIIQX9GDQIgACAIQQFqNgIAIAcgCjYCFCAHIAA2AhAgByAAQQRqNgIMIAFFDQAgAUEIayILKAIAQQFqIQggCyAINgIAIAhFDQEgASgCACIIQX9GDQIgASAIQQFqNgIAIAcgCzYCICAHIAE2AhwgByABQQRqIgw2AhggAkUNACACQQhrIg0oAgBBAWohCCANIAg2AgAgCEUNASACKAIAIghBf0YNAiACIAhBAWo2AgAgByANNgIsIAcgAjYCKCAHIAJBBGoiDjYCJCADRQ0AIANBCGsiDygCAEEBaiEIIA8gCDYCACAIRQ0BIAMoAgAiCEF/Rg0CIAMgCEEBajYCACAHIA82AjggByADNgI0IAcgA0EEaiIJNgIwIARFDQAgBEEIayIQKAIAQQFqIQggECAINgIAIAhFDQEgBCgCACIIQX9GDQIgBCAIQQFqNgIAIAcgEDYCRCAHIAQ2AkAgByAEQQRqNgI8IAdB4ABqIhJBCGogDkEIaikCADcDACAHIA4pAgA3A2AgB0H4AGogDEEIaigCADYCACAHIAwpAgA3A3AgACgCBCEMIAAoAggiDigCCCEIIAdBmAFqIhFBCGogCUEIaigCADYCACAHIAkpAgA3A5gBIBFBFGogBEEMaigCADYCACAHIAQpAgQ3AqQBIAdBgAFqIgkgDCAIQQFrQXhxakEIaiASIBEgBSAGQQBHIA4oAhwRCQAgBygCgAEiBkEERwRAIAdB2ABqIAlBFGooAgA2AgAgB0HQAGogCUEMaikCADcDACAHIAcpAoQBNwNICyAEIAQoAgBBAWs2AgAgECAQKAIAQQFrIgQ2AgAgBEUEQCAHQcQAahCoDQsgAyADKAIAQQFrNgIAIA8gDygCAEEBayIDNgIAIANFBEAgB0E4ahCoDQsgAiACKAIAQQFrNgIAIA0gDSgCAEEBayICNgIAIAJFBEAgB0EsahCrDQsgASABKAIAQQFrNgIAIAsgCygCAEEBayIBNgIAIAFFBEAgB0EgahCoDQsgACAAKAIAQQFrNgIAIAogCigCAEEBayIANgIAIABFBEAgB0EUahDjCwtBACEAIAZBBEcEQEEkQQQQsw4iAEUNBCAAIAY2AgwgAEEANgIIIABCgYCAgBA3AgAgACAHKQNINwIQIABBGGogB0HQAGopAwA3AgAgAEEgaiAHQdgAaigCADYCACAAQQhqIQALIAdBsAFqJAAgAA8LEJsPCwALEJwPAAtBBEEkQZDExAAoAgAiAEHMCCAAGxEAAAALsgcCEH8DfiMAQTBrIgQkACAEIAI2AiggASgCDCEKIAQgBEEoajYCLAJAIAogCkEBaiICTQRAIAEoAgQiCyALQQFqQQN2QQdsIAtBCEkbIgNBAXYgAkkEQAJAAkACQAJ/IANBAWoiAyACIAIgA0kbIgJBD08EQCACQf////8BSw0CQX8gAkEDdEEHbkEBa2d2QQFqDAELQQRBCEEQIAJBCEkbIAJBBEkbCyICrUIMfiITQiCIpw0BIBOnIgNBeEsNASADQQdqQXhxIgcgAkEIaiIMaiEDIAMgB0kNASADQfj///8HSw0BIANBCBCzDiIGDQJBCCADQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAQoAiQhAiAEKAIgIQMMBAsQpgwgBCgCFCECIAQoAhAhAwwDCyAGIAdqIQYgDARAIAZB/wEgDPwLAAsgAkEBayIJIAJBA3ZBB2wgCUEISRshDQJAIApFBEAgASgCACEHDAELIAZBCGohDiABKAIAIgdBDGshDyAHKQMAQn+FQoCBgoSIkKDAgH+DIRMgBCgCKCEQQQAhAiAKIQwgByEDA0AgE1AEQANAIAJBCGohAiADQQhqIgMpAwBCgIGChIiQoMCAf4MiE0KAgYKEiJCgwIB/UQ0ACyATQoCBgoSIkKDAgH+FIRMLIA8gE3qnQQN2IAJqIhFBdGxqKAIAIBApAwAiFKdzrSIVQt2h8csMfiAUQiCIIhRCt9OwhQx+hSAVQrfTsIUMfiAUQt2h8csMfoVCIIiFpyISIAlxIgUgBmopAABCgIGChIiQoMCAf4MiFFAEQEEIIQgDQCAFIAhqIQUgCEEIaiEIIAUgCXEiBSAGaikAAEKAgYKEiJCgwIB/gyIUUA0ACwsgE0IBfSATgyETIBR6p0EDdiAFaiAJcSIFIAZqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQULIAUgBmogEkEZdiIIOgAAIA4gBUEIayAJcWogCDoAACAGIAVBf3NBDGxqIgVBCGogByARQX9zQQxsaiIIQQhqKAAANgAAIAUgCCkAADcAACAMQQFrIgwNAAsLIAEgCTYCBCABIAY2AgAgASANIAprNgIIQYGAgIB4IQMgC0UNAiAHIAtBDGxBE2pBeHEiAmsgAiALakEJakEIEIgPDAILIAEgBEEsakGNAkEMEMsCQYGAgIB4IQMMAQsQpgwgBCgCDCECIAQoAgghAwsgACACNgIEIAAgAzYCACAEQTBqJAALmAgCCH8MfSMAQRBrIgskACAGIAYoAgAiCEEBajYCAAJAAkACQAJAAkACQCAFIAAoAggiCUkEQCAAKAIEIg0gBUEGdGoiCSgCPCEOIAkoAiwhDwJAIAkoAhxB/////wNxQQFHBEAgACABIAIgAyAEIAkoAgwgBiAIQQF0EIICDAELIAEoAggiCiAITQ0CIAhBBnQiDCABKAIEaiIKIAkpAwA3AwAgCkEIaiAJQQhqKQMANwMAIApBEGogCUEQaikDADcDACAKQRhqIAlBGGopAwA3AwAgASgCCCIKIAhNDQMgASgCBCAMaiIMKAIcIQogDEH/////B0H/////AyAKQf////97SxsgCnE2AhwgCSgCDCIJIAIoAghPDQQgAigCBCAJQQN0aiIJKAIARQ0EIAkgCEEBdDYCBAsgDkH/////A3FBAUcEQCAAIAEgAiADIAQgDyAGIAhBAXRBAXIQggIMBwsgASgCCCIAIAhNDQQgASgCBCAIQQZ0aiIGIA0gBUEGdGpBIGoiACkDADcDICAGQShqIABBCGopAwA3AwAgBkEwaiAAQRBqKQMANwMAIAZBOGogAEEYaikDADcDACABKAIIIgUgCE0NBSABKAIEIAhBBnRqIgYoAjwhBSAGQf////8HQf////8DIAVB/////3tLGyAFcTYCPAJAIAAoAgwiACACKAIITw0AIAIoAgQgAEEDdGoiACgCAEUNACAAIAhBAXRBAXI2AgQMBwtBqN3CAEEPQfjqwgAQ1wsACyAFIAlBmOrCABCICwALIAggCkGo6sIAEIgLAAsgCCAKQbjqwgAQiAsAC0Go3cIAQQ9ByOrCABDXCwALIAggAEHY6sIAEIgLAAsgCCAFQejqwgAQiAsACwJAAkAgCCABKAIIIgBJBEAgB0EBdiICIABPDQEgASgCBCIGIAhBBnRqIgAoAjwhASAAKAIcIQUgACoCOCEQIAAqAhghESAAKgI0IRIgACoCFCETIAAqAjAhFCAAKgIQIRUgACoCKCEWIAAqAgghFyAAKgIkIRggACoCBCEZIAAqAiAhGiAAKgIAIRsgCyAGIAJBBnRqIgA2AgggCyAAQSBqNgIMIAtBCGogB0EBcUECdGooAgAiACABQf////8DcSAFQf////8DcWogASAFckGAgICAfHFyNgIcIAAgESAQIBAgEV8bOAIYIAAgEyASIBIgE18bOAIUIAAgFSAUIBQgFV8bOAIQIAAgCDYCDCAAIBcgFiAWIBdgGzgCCCAAIBkgGCAYIBlgGzgCBCAAIBsgGiAaIBtgGzgCACAEIAhNDQIgAyAIQQJ0aiAHNgIAIAtBEGokAA8LIAggAEGI68IAEIgLAAsgAiAAQZjrwgAQiAsACyAIIARBqOvCABCICwAL0wcCEH8XfSMAQSBrIgUkACABBEBBACABayEHIAAqAnggACoChAGSIRYgACoCdCAAKgKAAZIhFyAAKgJwIAAqAnySIRggACEIA0AgACAGQYgBbGoiAioCICESIAIgAioCaCACKgJsIBIgGCASlJQgAioCJCISIBcgEpSUkiACKgIoIhIgFiASlJSSIAIqAiwgAioCRJQgAioCMCACKgJIlJIgAioCNCACKgJMlJKSIAIqAjggAioCUJQgAioCPCACKgJUlJIgAioCQCACKgJYlJKSIhKUkiITOAJoIAJDAAAAAEMAAIA/IBIgE5IiE5UgE4tDCOU8Hl0bOAJcIAZBAWohBgJAIAIqAhhD//9//1wNACACQRxqKgIAQ///f39cDQAgASAGTQ0AQwAAAABDAACAPyASlSASi0MI5TweXRshE0F/IQkgCCEDA0AgCUUEQCAFQQA2AhggBUEBNgIMIAVBsLPCADYCCCAFQgQ3AhAgBUEIakHgs8IAELgNAAsgEyAYIAIqAiAiFJQgA0GoAWoiBCoCACIVlCAXIAIqAiQiGZQgA0GsAWoiCioCACIalJIgA0GwAWoiCyoCACIbIBYgAioCKCIclJSSIAIqAiwiHSADQcwBaiIMKgIAIh6UIAIqAjAiHyADQdABaiINKgIAIiCUkiACKgI0IiEgA0HUAWoiDioCACIilJKSIAIqAjgiIyADQdgBaiIPKgIAIiSUIAIqAjwiJSADQdwBaiIQKgIAIiaUkiACKgJAIicgA0HgAWoiESoCACIolJKSlCESIAsgGyAcIBKUkzgCACAKIBogGSASlJM4AgAgBCAVIBQgEpSTOAIAIANBtAFqIgQgBCoCACAdIBKUkzgCACADQbgBaiIEIAQqAgAgHyASlJM4AgAgA0G8AWoiBCAEKgIAICEgEpSTOAIAIANBwAFqIgQgBCoCACAjIBKUkzgCACADQcQBaiIEIAQqAgAgJSASlJM4AgAgA0HIAWoiBCAEKgIAICcgEpSTOAIAIAIqAkQhFCACKgJIIRUgDiAiIBIgAioCTJSTOAIAIA0gICASIBWUkzgCACAMIB4gEiAUlJM4AgAgAioCUCEUIAIqAlQhFSARICggEiACKgJYlJM4AgAgECAmIBIgFZSTOAIAIA8gJCASIBSUkzgCACADQewBaiIEIAQqAgAgEiACKgJklJM4AgAgA0HoAWoiBCAEKgIAIBIgAioCYJSTOAIAIANBiAFqIQMgCUEBayIJIAdHDQALCyAIQYgBaiEIIAdBAWohByABIAZHDQALCyAFQSBqJAALnAcCGH8BfSMAQaADayIDJAACQCABIAJyQQBIDQAgA0HUAGoiBCAAKAIAIAEgAhCiAiADQSBqIARBIGopAgA3AwAgA0EYaiAEQRhqKQIANwMAIANBEGogBEEQaikCADcDACADQQhqIARBCGopAgA3AwAgA0EwaiAEQTBqKQIANwMAIANBOGogBEE4aikCADcDACADQUBrIARBQGspAgA3AwAgA0HIAGogBEHIAGopAgA3AwAgAyADKQJUNwMAIAMgAykCfDcDKCADQQI2AlwgBEEMaiINIANB0AD8CgAAIANBAjYC2AEgA0ECNgKwASAAKAIcIgdBNWohCiAHQQRqIQUgA0GIAWohDiADQagCaiIBQTVqIQsgAUEEaiEGIAAoAhghDCAAKAIUIQ8gACgCECEQIAAoAgwhESAAKAIIIRIgACgCBCETIAMoAogBIQQgA0GAAmoiAEEgaiEUIABBGGohFSAAQRBqIRZBACECA0AgDSACQShsaiIAKAIAIgFBAkYNASACQQFqIQgCQCABQQFxBEAgCCECDAELQQIhAiAIQQJGDQIgBEECRg0CIA4hACAEIgFBAXFFDQILIAFBAXFFDQEgFCAAQSRqKAIANgIAIBUgAEEcaikCADcDACAWIABBFGopAgA3AwAgA0GAAmoiAUEIaiAAQQxqKQIANwMAIAMgACkCBDcDgAIgA0HgAmoiAEEIaiAMQQhqKAIANgIAIAMgDCkCADcD4AIgA0GoAmogEyASIBEgAUGw9sIAIBAgDyAAEEMgAy0A3AIiAUEFRgRAQQEhCQwCCyADQfACaiIAQQhqIgggBkEIaikCADcDACAAQRBqIhcgBkEQaikCADcDACAAQRhqIhggBkEYaikCADcDACAAQSBqIhkgBkEgaikCADcDACAAQShqIgAgBkEoaikCADcDACADQe4CaiIaIAtBAmotAAA6AAAgAyAGKQIANwPwAiADIAsvAAA7AewCAkAgAUEERg0AQ///f38hGyAHLQA0QQRHBH0gByoCAAVD//9/fwsgAyoCqAIiG15FDQAgByAbOAIAIAUgAykD8AI3AgAgByABOgA0IAogAy8B7AI7AAAgBUEIaiAIKQMANwIAIAVBEGogFykDADcCACAFQRhqIBgpAwA3AgAgBUEgaiAZKQMANwIAIAVBKGogACkDADcCACAKQQJqIBotAAA6AAALIAJBAkcNAAsLIANBoANqJAAgCQvPBwISfwN9AkAgASgCAEEBRgRAIAEoAgghDCABKAIcIQUgASgCDCEGIAEoAiQhAiABKAIoIQQgASgCBCEHAkACQCABAn8CQAJAIAECfwJAAkACQCABKAJUIg0EQCABQfgAaiEOIAFBEGoh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GEECRg0EIAUoApwBIgBBIUkNBCAFKAIgIABBAnRBBBCIDwwECyACQcEAQejbwwAQiAsACyAFQYwHaiAFQRhqEHkgBSgCjAcNAAsLQQAhBiAFKAIYQQJGDQAgBSgCnAEiAEEhSQ0AIAUoAiAgAEECdEEEEIgPCyAFQeAHaiQAIAYLqAcCCn8EfSMAQSBrIgskACABKAKUAiEMAn0gACoCEEPbD8lAlCIVIAAqAgAiFiAVlCAAKgIUIhcgF5KSlSEYQwAAAAAgFiAYlCIWQwAAAABbDQAaQwAAgD8gFpVDAACAv5IiFSAVlCAXIBcgFUMAAIA/kkMAAIBAlJSUlQshFQJAAkACQAJAIAcoAgwiDSAMQQF0Ig4gBigCACIAak8EQCADKgIEIRcgAyoCACEWIAIoApQDIAAgBWpqIRIgBygCBCEPIA4EQCAPIABBAnRqIgAgDkECdGohAyAOIQIgACEHA0AgDUECdCITIAdqIhQgACAAIANGIhAbIhFBADYCACARQQRqIhEgACATaiADIBAbIgNGIQAgFCAHIBAbIgcgE2oiECARIAAbIhRBADYCACAQIAcgABshByARIBNqIAMgABshAyAUIAJBAkdBAnRqIQAgAkECayICDQALCyANQQFGIgAgEkEAR3ENASASQQAgDUEBRyICGyIDIA1PDQEgDyADQQJ0akGAgID8AzYCACAAIAwgEmoiA0EAR3ENAiADQQAgAhsiACANTw0CIA8gAEECdGoiB0GAgID8AzYCACAGKAIAIgMgDGoiACAMaiANSw0EIAFB3ABqIA8gAEECdGogDBDZASAKKAIAIgIgCUkNAyACIAlBuJzCABCICwALDAMLIAtBADYCGCALQQE2AgwgC0HM/sEANgIIIAtCBDcCECALQQhqQZicwgAQuA0ACyALQQA2AhggC0EBNgIMIAtBzP7BADYCCCALQgQ3AhAgC0EIakGonMIAELgNAAsgCCACQcgAbGoiAEEAOwFEIABBADYCQCAAIBU4AjwgAEEANgI4IABD//9/f0MAAAAAIAQgF14bOAIsIABD//9//0MAAACAIAQgFl0bOAIoIABC/////w83AiAgACADNgIcIAAgDDYCGCAAQgA3AhAgACABKAKYAjYCDCAAQX82AgggACAFNgIEIABBATYCACAAQwAAAABDAACAPyAHKgIAIhWV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Qc0AaiIJQQtqQgA3AAAgBkE6aiIHQQtqQgA3AAAgBkEnaiINQQtqQgA3AAAgBkEUaiIOQQtqQgA3AAAgBkEBaiIPQQtqQgA3AAAgBEHcAGpCADcCACAGQgA3AFAgBkIANwA9IAZCADcAKiAGQgA3ABcgBkIANwAEIARCADcDCCAEQgA3AwAgBEEAOgCoASAEQv////sHNwOgASAEQgA3A4gBIARCgICA/AM3A4ABIARBgICA/AM2AmQgBEH////7BzYCUCAEQoCAgIDw//+/fzcDSCAEQv////v///+//wA3A0AgBEL////7BzcDOCAEQoCAgIDw//+/fzcDMCAEQv////v///+//wA3AyggBEL////7BzcDICAEQoCAgIDw//+/fzcDGCAEQv////v///+//wA3AxAgBCAGKQBNNwCpASAEQbEBaiAJQQhqKQAANwAAIARBuAFqIAlBD2ooAAA2AAAgBEEAOgDEASAEQv////sHNwK8ASAEQQA6AOABIARC////+wc3A9gBIARBADoA/AEgBEL////7BzcC9AEgBEHUAWogB0EPaigAADYAACAEQc0BaiAHQQhqKQAANwAAIAQgBikAOjcAxQEgBEHwAWogDUEPaigAADYAACAEQekBaiANQQhqKQAANwAAIAQgBikAJzcA4QEgBEGMAmogDkEPaigAADYAACAEQYUCaiAOQQhqKQAANwAAIAQgBikAFDcA/QEgBEEAOgCYAiAEQv////sHNwOQAiAEQagCaiAPQQ9qKAAANgAAIARBoQJqIA9BCGopAAA3AAAgBCAGKQABNwCZAiAEQYACOwG8AiAEQT82ArgCIARBADoAtAIgBEL////7BzcCrAIgBUHAAWogEigCADYCACAFQbgBaiARKQMANwMAIAVBsAFqIBApAwA3AgAgBUHMAWogEykDADcCACAFQdQBaiAUKQMANwIAIAVB3AFqIBUoAgA2AgAgBSAFKQMwNwOoASAFIAUpA5ADNwLEASADIAMoAgBBAWs2AgAgCCAIKAIAQQFrIgM2AgAgA0UEQCAFQSxqEKsNCyACIAIoAgBBAWs2AgAgDCAMKAIAQQFrIgI2AgAgAkUEQCAFQSBqEKgNCyABIAEoAgBBAWs2AgAgCyALKAIAQQFrIgE2AgAgAUUEQCAFQRRqEKsNCyAAIAAoAgBBAWs2AgAg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AkACQAJAAkACQCAOIA9dRQRAIA0gD11FDQQgDUP//39/Ww0EICMoAhxB/////wNxQQFHDQEMAgsgDkP//39/XARAIAYoAgwhCCAGKAIcQf////8DcUEBRwRAIA0gD11FBEAgCCEFDAcLIA1D//9/f1sEQCAIIQUMBwtBASEGICMoAhxB/////wNxQQFGBEAgCCEFDAULAn8gICgCjAEiJEEhSQRAICQhBSAKISpBICEkICwMAQsgICgCDCEFICAoAhAhKiAKCyEGICMoAgwhIyAFICRGBEAgIEEIahCsBCAgKAIQISogCiEGICAoAgwhBQsgBUECdCAqaiAjNgIAIAYgBigCAEEBajYCACAIIQUMBgsCQAJ/AkAgCCAzKAIQTw0AIDMoAgwgCEGwAWxqIiQoAgBBAUcNACApIDgoAgAgNygCACAIICQoAgQgJEEQahCsBUUNACAgQZABaiAkKAJQICQoAlQiCCgCCEEBa0F4cWpBCGogJEGEAWogKCA1IAhBPGooAgARBwAgIC0AnAFBAkYNACATICAqApABIhmTIg4gDpQgEiAgKgKUASIakyIOIA6UkiARICAqApgBIhuTIg4gDpSSkSEUICAoApwBDAELICVBgH5xQQJyCyIlQf8BcUECRg0AIA8gFF5FDQAgJUEIdiE0IAYoAgwhKyAZIRUgGiEWIBshFyAUIQ8gJSEMCwsgDSAPXUUNAyANQ///f39bDQMgIygCHEH/////A3FBAUYNAQsgIygCDCEFDAMLQQAhBgsCfwJAICMoAgwiJCAzKAIQTw0AIDMoAgwgJEGwAWxqIggoAgBBAUcNACApIDgoAgAgNygCACAkIAgoAgQgCEEQahCsBUUNACAgQZABaiAIKAJQIAgoAlQiJCgCCEEBa0F4cWpBCGogCEGEAWogKCA1ICRBPGooAgARBwAgIC0AnAFBAkYNACATICAqApABIhyTIg0gDZQgEiAgKgKUASIdkyINIA2UkiARICAqApgBIh6TIg0gDZSSkSEYICAoApwBDAELICJBgH5xQQJyCyIiQf8BcUECRyAPIBhecUUEQCAGRQ0BDAILICJBCHYhNCAjKAIMISsgHCEVIB0hFiAeIRcgGCEPICIhDCAGDQELIAohBSAsIQYgICgCjAEiCEEhTwRAICAoAgwhCCAFIQYgICgCECEFCyAIRQ0CIAYgCEEBayIGNgIAIAUgBkECdGooAgAhBQsgBSA2SQ0ACyAFIDZB9N/BABCICwALIAxB/wFxQQJHDQIMAQsgJyoCACAoKgIAIg+TIg0gDyAnKgIQkyIOIA0gDmAbIg1DAAAAACANQwAAAABgGyINIA2UICcqAgQgKCoCBCINkyIOIA0gJyoCFJMiECAOIBBgGyIOQwAAAAAgDkMAAAAAYBsiDiAOlJIgJyoCCCAoKgIIIg6TIhAgDiAnKgIYkyIUIBAgFGAbIhBDAAAAACAQQwAAAABgGyIQIBCUkpFD//9/f11FDQEgJygCDCIGICkoAkAiBSgCEE8NASAFKAIMIAZBsAFsaiIFKAIAQQFHDQEgKSApKAI8IghBiANqKAIAIAhBjANqKAIAIAYgBSgCBCAFQRBqEKwFRQ0BICBBkAFqIAUoAlAgBSgCVCIGKAIIQQFrQXhxakEIaiAFQYQBaiAoIDUgBkE8aigCABEHACAgLQCcAUECRg0BICAoApwBIgVB/wFxQQJGDQAgDyAgKgKQASIVkyIPIA+UIA0gICoClAEiFpMiDyAPlJIgDiAgKgKYASIXkyIPIA+UkpFD//9/f11FDQEgBUEIdiE0ICcoAgwhKyAFIQwMAQtBAiEMCyAgKAKMASIFQSFPBEAgICgCECAFQQJ0QQQQiA8LAkAgDEH/AXFBAkcEQAJAAkAgKSgCQCIFKAIQICtLBEAgBSgCDCArQbABbGoiBSgCAA0BCyAmQQI6ABQMAQsgJiA0OwAVICYgDDoAFCAmIBc4AhAgJiAWOAIMICYgFTgCCCAmICs2AgAgJkEXaiA0QRB2OgAAICYgBSgCBDYCBAsgIEGgAWokAAwBC0Gg9sEAEJEPAAsgMiAfLQBcQQJHBH8gMiAfKQJQNwIIIDIgHykCSDcCGCAyQRBqICZBEGopAgA3AgBBAwVBBAs2AgAgH0HwAGokACAEIAQoAgBBAWs2AgAgMSAxKAIAQQFrIgQ2AgAgBEUEQCAhQThqEKgNCyADIAMoAgBBAWs2AgAgMCAwKAIAQQFrIgM2AgAgA0UEQCAhQSxqEO8MCyACIAIoAgBBAWs2AgAgLyAvKAIAQQFrIgI2AgAgAkUEQCAhQSBqEOsMCyABIAEoAgBBAWs2AgAgLiAuKAIAQQFrIgE2AgAgAUUEQCAhQRRqEOwMCyAAIAAoAgBBAWs2AgAgLSAtKAIAQQFrIgA2AgAgAEUEQCAhQQhqEPEMC0EAIQAgISgCQEEERwRAQSxBBBCzDiIARQ0EIABBADYCCCAAQoGAgIAQNwIAIAAgISkCQDcCDCAAQRRqICFByABqKQIANwIAIABBHGogIUHQAGopAgA3AgAgAEEkaiAhQdgAaikCADcCACAAQQhqIQALICFB4ABqJAAgAA8LEJsPCwALEJwPAAtBBEEsQZDExAAoAgAiAEHMCCAAGxEAAAALzgYBDH8jAEGAAWsiByQAAkACQAJAIABFDQAgAEEIayINKAIAQQFqIQggDSAINgIAIAhFDQEgACgCACIIQX9GDQIgACAIQQFqNgIAIAcgDTYCFCAHIAA2AhAgByAAQQRqNgIMIAFFDQAgAUEIayIIKAIAQQFqIQkgCCAJNgIAIAlFDQEgASgCACIJQX9GDQIgASAJQQFqNgIAIAcgCDYCICAHIAE2AhwgByABQQRqIg42AhggAkUNACACQQhrIgkoAgBBAWohCiAJIAo2AgAgCkUNASACKAIAIgpBf0YNAiACIApBAWo2AgAgByAJNgIsIAcgAjYCKCAHIAJBBGoiDzYCJCADRQ0AIANBCGsiCigCAEEBaiELIAogCzYCACALRQ0BIAMoAgAiC0F/Rg0CIAMgC0EBajYCACAHIAo2AjggByADNgI0IAcgA0EEaiIQNgIwIARFDQAgBEEIayILKAIAQQFqIQwgCyAMNgIAIAxFDQEgBCgCACIMQX9GDQIgBCAMQQFqNgIAIAcgCzYCRCAHIAQ2AkAgByAEQQRqNgI8IAdByABqIgxBCGogD0EIaikCADcDACAHIA8pAgA3A0ggB0HgAGogDkEIaigCADYCACAHIA4pAgA3A1ggACgCBCEOIAAoAggiDygCCCERIAdB6ABqIhJBCGogEEEIaigCADYCACAHIBApAgA3A2ggB0H8AGogBEEMaigCADYCACAHIAQpAgQ3AnQgByAOIBFBAWtBeHFqQQhqIAwgEiAFIAZBAEcgDygCGBEJACAHKgIEIQUgBygCACEGIAQgBCgCAEEBazYCACALIAsoAgBBAWsiBDYCACAERQRAIAdBxABqEKgNCyADIAMoAgBBAWs2AgAgCiAKKAIAQQFrIgM2AgAgA0UEQCAHQThqEKgNCyACIAIoAgBBAWs2AgAgCSAJKAIAQQFrIgI2AgAgAkUEQCAHQSxqEKsNCyABIAEoAgBBAWs2AgAgCCAIKAIAQQFrIgE2AgAgAUUEQCAHQSBqEKgNCyAAIAAoAgBBAWs2AgAgDSANKAIAQQFrIgA2AgAgAEUEQCAHQRRqEOMLCyAHQYABaiQAIAVDAACAvyAGQQFxGw8LEJsPCwALEJwPAAuGBgEJfQJAIAEtAOUCQQFGBEAgACABKgI8IgkgACoCZCIDlCABKgIwIgUgACoCWCIElJMgASoCNCIGIAAqAlwiCpSTIAEqAjgiByAAKgJgIguUkzgCZCAAIAcgA5QgBSAKlCAJIAuUkiAGIASUk5I4AmAgACAHIASUIAYgA5QgCSAKlCAFIAuUk5KSOAJcIAAgBiALlCAJIASUIAUgA5SSkiAHIAqUkzgCWCAFIAAqAmwiCpQgBiAAKgJoIguUkyIDIAOSIQMgByALlCAFIAAqAnAiCJSTIgQgBJIhBCAAIAEqAkggCCAJIAOUIAUgBJQgBiAGIAiUIAcgCpSTIgggCJIiCJSTkpKSOAJwIAAgASoCRCAKIAkgBJQgByAIlCAFIAOUk5KSkjgCbCAAIAEqAkAgCyAJIAiUIAYgA5QgByAElJOSkpI4AmgMAQsgACAAKgJoIAEqApgCkzgCaCAAIAAqAmwgASoCnAKTOAJsIAAgACoCcCABKgKgApM4AnALIAItAOUCQQFGBEAgACACKgI8IgkgACoCgAEiA5QgAioCMCIFIAAqAnQiBJSTIAIqAjQiBiAAKgJ4IgqUkyACKgI4IgcgACoCfCILlJM4AoABIAAgByADlCAFIAqUIAkgC5SSIAYgBJSTkjgCfCAAIAcgBJQgBiADlCAJIAqUIAUgC5STkpI4AnggACAGIAuUIAkgBJQgBSADlJKSIAcgCpSTOAJ0IAUgACoCiAEiCpQgBiAAKgKEASILlJMiAyADkiEDIAcgC5QgBSAAKgKMASIIlJMiBCAEkiEEIAAgAioCSCAIIAkgA5QgBSAElCAGIAYgCJQgByAKlJMiCCAIkiIIlJOSkpI4AowBIAAgAioCRCAKIAkgBJQgByAIlCAFIAOUk5KSkjgCiAEgACACKgJAIAsgCSAIlCAGIAOUIAcgBJSTkpKSOAKEAQ8LIAAgACoChAEgAioCmAKTOAKEASAAIAAqAogBIAIqApwCkzgCiAEgACAAKgKMASACKgKgApM4AowBC88aAwx9Gn8EfiMAQeAAayIaJAACQAJAAkACQCAARQ0AIABBCGsiJygCAEEBaiEbICcgGzYCACAbRQ0BIAAoAgAiG0F/Rg0CIAAgG0EBajYCACAaICc2AgggGiAANgIEIBogAEEIaiIbNgIAIAFFDQAgAUEIayIoKAIAQQFqIR0gKCAdNgIAIB1FDQEgASgCACIdQX9GDQIgASAdQQFqNgIAIBogKDYCFCAaIAE2AhAgGiABQQRqIh02AgwgAkUNACACQRBrIikoAgBBAWohICApICA2AgAgIEUNASACKAIAIiBBf0YNAiACICBBAWo2AgAgGiApNgIgIBogAjYCHCAaIAJBEGoiIDYCGCADRQ0AIANBCGsiKigCAEEBaiEcICogHDYCACAcRQ0BIAMoAgAiHEF/Rg0CIAMgHEEBajYCACAaICo2AiwgGiADNgIoIBogA0EEaiIcNgIkIARFDQAgBEEIayIrKAIAQQFqIR8gKyAfNgIAIB9FDQEgBCgCACIfQX9GDQIgBCAfQQFqNgIAIBogKzYCOCAaIAQ2AjQgGiAEQQRqIh82AjAgGiALNgI8IBpBQGshJiAGRAAAEAAAAPBBYiEkIAb8AyELIAdBAEetITQgCUEAR60hNSMAQYABayIYJAAgCr0hMiAIvSEzAkAgGkE8aiIHKAIAEARBAUYEQCAYIAc2AgggGCAcNgJMIBggIDYCSCAYIBs2AkQgGEGg0cEANgI4IBggBUEAIAVBIEkbNgIwIBggNT4CJCAYIDQ+AhggGCALQf//A3E2AhQgGCALQRB2NgIQIBggJDYCDCAYIB0oAkAiBTYCQCAYIDI+AiggGCAyQiCIPgIsIBggMz4CHCAYIDNCIIg+AiAgGCAdKAI8IAUoAghBAWtBeHFqQQhqNgI8IBggGEEIajYCNAwBCyAYIBw2AkwgGCAgNgJIIBggGzYCRCAYQaDRwQA2AjggGCA1PgIkIBggND4CGCAYICQ2AgwgGCAdKAJAIgc2AkAgGCALQf//A3E2AhQgGCALQRB2NgIQIBhBADYCNCAYIAVBACAFQSBJGzYCMCAYIDI+AiggGCAyQiCIPgIsIBggMz4CHCAYIDNCIIg+AiAgGCAdKAI8IAcoAghBAWtBeHFqQQhqNgI8CyAYQfAAaiIcQQhqIB9BCGooAgA2AgAgGCAfKQIANwNwIBhB0ABqISJBACEHQQAhHyMAQbABayIZJAAgGEEMaiIjKAI4IgVBCGooAgAhLUEEIQsgBUEEaigCACEhIBlBADYCECAZQQA2ApQBIBlBDGohJAJAIC1FDQAgISgCPEH/////A3EEQCAZQRRqIQkgGUGUAWohICAjKAJAISwgHCoCCCERIBwqAgQhEiAcKgIAIRMgIygCPCIFQYwDaiEwIAVBiANqITFBBCEdQ///f38hD0F/ISUCQANAICEgB0EGdGoiC0EgaiEFAkAgCyoCICATkyIMIBMgCyoCMJMiDSAMIA1gGyIMQwAAAAAgDEMAAAAAYBsiDCAMlCALKgIkIBKTIgwgEiALKgI0kyINIAwgDWAbIgxDAAAAACAMQwAAAABgGyIMIAyUkiALKgIoIBGTIgwgESALKgI4kyINIAwgDWAbIgxDAAAAACAMQwAAAABgGyIMIAyUkpEiDSALKgIAIBOTIgwgEyALKgIQkyIOIAwgDmAbIgxDAAAAACAMQwAAAABgGyIMIAyUIAsqAgQgEpMiDCASIAsqAhSTIg4gDCAOYBsiDEMAAAAAIAxDAAAAAGAbIgwgDJSSIAsqAgggEZMiDCARIAsqAhiTIg4gDCAOYBsiDEMAAAAAIAxDAAAAAGAbIgwgDJSSkSIOXUUEQCANIQwgDiENIAUhGyALIQUMAQsgDiEMIAshGwsCQAJAAkACQAJAIA0gD11FBEAgDCAPXUUNBCAMQ///f39bDQQgGygCHEH/////A3FBAUcNAQwCCyANQ///f39cBEAgBSgCDCELIAUoAhxB/////wNxQQFHBEAgDCAPXUUEQCALIQcMBwsgDEP//39/WwRAIAshBwwHC0EBIQUgGygCHEH/////A3FBAUYEQCALIQcMBQsCfyAZKAKUASIeQSFJBEAgHiEHIAkhLkEgIR4gIAwBCyAZKAIUIQcgGSgCGCEuIAkLIQUgGygCDCEbIAcgHkYEQCAZQRBqEKwEIBkoAhQhByAZKAIYIS4gCSEFCyAuIAdBAnRqIBs2AgAgBSAFKAIAQQFqNgIAIAshBwwGCwJAIAsgLCgCEE8NACAsKAIMIAtBsAFsaiIeKAIAQQFHDQAgIyAxKAIAIDAoAgAgCyAeKAIEIB5BEGoQrAVFDQAgGUGYAWogHigCUCAeKAJUIgsoAghBAWtBeHFqQQhqIB5BhAFqIBwgC0HEAGooAgARAgAgGSgCqAEiC0EERg0AIBMgGSoCmAEiDZMiDiAOlCASIBkqApwBIg6TIhAgEJSSIBEgGSoCoAEiEJMiFCAUlJKRIhQgD11FDQAgGSgCrAEhHyAZKAKkASEvIAUoAgwhJSANIRUgDiEWIBAhFyAUIQ8gCyEdCwsgDCAPXUUNAyAMQ///f39bDQMgGygCHEH/////A3FBAUYNAQsgGygCDCEHDAMLQQAhBQsCQAJAIBsoAgwiHiAsKAIQTw0AICwoAgwgHkGwAWxqIgsoAgBBAUcNACAjIDEoAgAgMCgCACAeIAsoAgQgC0EQahCsBUUNACAZQZgBaiALKAJQIAsoAlQiHigCCEEBa0F4cWpBCGogC0GEAWogHCAeQcQAaigCABECACAZKAKoASILQQRGDQAgEyAZKgKYASIMkyINIA2UIBIgGSoCnAEiDZMiDiAOlJIgESAZKgKgASIOkyIQIBCUkpEiECAPXQ0BCyAFRQ0BDAILIBkoAqwBIR8gGSgCpAEhLyAbKAIMISUgDCEVIA0hFiAOIRcgECEPIAshHSAFDQELIAkhByAgIQUgGSgClAEiC0EhTwRAIBkoAhQhCyAZKAIYIQcgCSEFCyALRQ0CIAUgC0EBayIFNgIAIAcgBUECdGooAgAhBwsgByAtSQ0ACyAHIC1B9N/BABCICwALQQQhCyAdQQRGDQEgGSAdNgIMIBlBmAFqISQgHyELDAELICEqAgAgHCoCACIPkyIMIA8gISoCEJMiDSAMIA1gGyIMQwAAAAAgDEMAAAAAYBsiDCAMlCAhKgIEIBwqAgQiDJMiDSAMICEqAhSTIg4gDSAOYBsiDUMAAAAAIA1DAAAAAGAbIg0gDZSSICEqAgggHCoCCCINkyIOIA0gISoCGJMiECAOIBBgGyIOQwAAAAAgDkMAAAAAYBsiDiAOlJKRQ///f39dRQ0AICEoAgwiBSAjKAJAIgcoAhBPDQAgBygCDCAFQbABbGoiBygCAEEBRw0AICMgIygCPCIJQYgDaigCACAJQYwDaigCACAFIAcoAgQgB0EQahCsBUUNACAZQZgBaiIFIAcoAlAgBygCVCIJKAIIQQFrQXhxakEIaiAHQYQBaiAcIAlBxABqKAIAEQIAIBkoAqgBIgdBBEYNACAPIBkqApgBIhWTIg8gD5QgDCAZKgKcASIWkyIPIA+UkiANIBkqAqABIheTIg8gD5SSkUP//39/XUUNACAZKAKsASELIBkoAqQBIS8gGSAHNgIMICEoAgwhJSAFISQLICQgCzYCACAZKAKUASIFQSFPBEAgGSgCGCAFQQJ0QQQQiA8LQQQhCwJAIBkoAgwiBUEERwRAQRghBwJAICUgIygCQCIJKAIQTw0AIAkoAgwgJUGwAWxqIgkoAgBBAUcNACAZKAKYASELICIgBTYCGCAiICU2AhAgIiAvNgIMICIgFzgCCCAiIBY4AgQgIiAVOAIAICIgCSgCBDYCFEEcIQcLIAcgImogCzYCACAZQbABaiQADAELQbD2wQAQkQ8ACyAYKAJoIgVBBEcEQCAmIBgpAlA3AgggJiAYKQJgNwIYICYgGCgCbDYCBCAmQRBqICJBCGopAgA3AgALICYgBTYCACAYQYABaiQAIAQgBCgCAEEBazYCACArICsoAgBBAWsiBDYCACAERQRAIBpBOGoQqA0LIAMgAygCAEEBazYCACAqICooAgBBAWsiAzYCACADRQRAIBpBLGoQ7wwLIAIgAigCAEEBazYCACApICkoAgBBAWsiAjYCACACRQRAIBpBIGoQ6wwLIAEgASgCAEEBazYCACAoICgoAgBBAWsiATYCACABRQRAIBpBFGoQ7AwLIAAgACgCAEEBazYCACAnICcoAgBBAWsiADYCACAARQRAIBpBCGoQ8QwLQQAhACAaKAJAQQRHBEBBLEEEELMOIgBFDQQgAEEANgIIIABCgYCAgBA3AgAgACAaKQJANwIMIABBFGogGkHIAGopAgA3AgAgAEEcaiAaQdAAaikCADcCACAAQSRqIBpB2ABqKQIANwIAIABBCGohAAsgGkHgAGokACAADwsQmw8LAAsQnA8AC0EEQSxBkMTEACgCACIAQcwIIAAbEQAAAAvCBgIGfwR9IwBBQGoiAyQAIAFBCGoiBCoCACELIAEqAgAhCSABKgIEIQxBFCEFIANBFGogBCgCADYCACADIAuMOAIIIAMgDIw4AgQgAyAJjDgCACADIAEpAgA3AgxBACEBIANBJGoiBiADIAJBABCLAyADQSBqIgQgBkEIaigCADYCACADIAMpAiQ3AxggAy0AMCECAkACQAJAAkACQAJAIAMqAjxDAAAAAFsiBiADKgI4IgpDAAAAAFsiCCADKgI0QwAAAABbamoiB0ECaw4CAQIACyAAIAMpAxg3AgAgACACOgAMIAAgB0EARzYCECAAQQhqIAQoAgA2AgAgAyoCHCADKgIQIAyTQwAAAD+UXUEBdCADKgIYIAMqAgwgCZNDAAAAP5RdciAEKgIAIAMqAhQgC5NDAAAAP5RdQQJ0ciIBQQJ0QQIgCCAGG3IgASAHGyEBDAQLIApDAAAAAFxBAiAGGyIBQQJ0IgUgA0EYaiIEaioCACEKIAMgAyoCFCALk0MAAAA/lDgCLCADIAMqAhAgDJNDAAAAP5Q4AiggAyADKgIMIAmTQwAAAD+UOAIkIAogA0EkaiAFaioCAF1FBEAgACADKQMYNwIAIABBAjYCECAAIAI6AAwgAEEIaiAEQQhqKAIANgIADAILIAAgAykDGDcCACAAQQI2AhAgACACOgAMIABBCGogA0EgaigCADYCACABQQNqIQEMAQsCQAJAIAMqAhgiCiADKgIMQwAAALSSXg0AQwAAADQgCZMgCmAEQEEDIQEMAgsgAyoCHCIJIAMqAhBDAAAAtJJeBEBBASEBDAELQwAAADQgDJMgCWAEQEEEIQEMAgsgAyoCICIJIAMqAhRDAAAAtJJeBEBBAiEBDAELIAlDAAAANCALk19FDQNBBSEBDAELIAAgAykDGDcCACAAQQI2AhAgACACOgAMIABBCGogA0EgaigCADYCAAwBCyAAIAMpAxg3AgAgAEECNgIQIAAgAjoADCAAQQhqIANBIGooAgA2AgALQRQhBQwBCyAAIAMpAxg3AgAgACACOgAMIABBCGogA0EgaigCADYCAEEDIQFBECEFCyAAIAVqIAE2AgAgA0FAayQAC+AFAgx/A34jAEGgAWsiCSQAIAlBAEGgAfwLAAJAAkACQCAAKAKgASIEIAJPBEAgBEEpTw0BIAEgAkECdGohCwJAAkAgBARAIARBAWohCiAEQQJ0IQwDQCAJIAZBAnRqIQMDQCAGIQIgAyEFIAEgC0YNCCADQQRqIQMgAkEBaiEGIAEoAgAhCCABQQRqIg0hASAIRQ0ACyAIrSERQgAhDyAMIQggAiEBIAAhAwNAIAFBKE8NBCAFIA8gBTUCAHwgAzUCACARfnwiED4CACAQQiCIIQ8gBUEEaiEFIAFBAWohASADQQRqIQMgCEEEayIIDQALIAcgEEKAgICAEFoEfyACIARqIgFBKE8NAyAJIAFBAnRqIA8+AgAgCgUgBAsgAmoiASABIAdJGyEHIA0hAQwACwALA0AgASALRg0GIAVBAWohBSABKAIAIQIgAUEEaiEBIAJFDQAgByAFQQFrIgIgAiAHSRshBwwACwALIAFBKEGAvMQAEIgLAAsgAUEoQYC8xAAQiAsACyAEQSlPDQEgAkECdCEMIAJBAWohCyAAIARBAnRqIQ4gACEDAkADQCAJIAhBAnRqIQYDQCAIIQQgBiEFIAMgDkYNBSAFQQRqIQYgBEEBaiEIIAMoAgAhCiADQQRqIg0hAyAKRQ0ACyAKrSERQgAhDyAMIQogBCEDIAEhBgNAIANBKE8NAiAFIA8gBTUCAHwgBjUCACARfnwiED4CACAQQiCIIQ8gBUEEaiEFIANBAWohAyAGQQRqIQYgCkEEayIKDQALAkAgByAQQoCAgIAQWgR/IAIgBGoiA0EoTw0BIAkgA0ECdGogDz4CACALBSACCyAEaiIDIAMgB0kbIQcgDSEDDAELCyADQShBgLzEABCICwALIANBKEGAvMQAEIgLAAsgBEEoQYC8xAAQjw8ACyAEQShBgLzEABCPDwALIAAgCUGgAfwKAAAgACAHNgKgASAJQaABaiQAC94GAgh/An4jAEEwayIDJAAgASgCACEBIAAoAgAhCCAAKAIEIgQtAIABIQIgBEEBOgCAASADIAI6AAgCQAJAAkAgAkEBRwRAIAEgASgCACICQQFqNgIAIAJBAEgNASAEKAKMASICIAQoAoQBRgRAIARBhAFqQcTcwQAQkwgLIAQgAkEBaiIFNgKMASAEKAKIASACQQxsaiICQQA2AgggAiAINgIEIAIgATYCAEEAIQIgBUUEQCAEKAKYAUUhAgsgBEEAOgCAASAEIAI6AJwBIAQoAsQBIAQoAgBqIAQoAkAiAiAEKALIASIFQX9zcUcNAiACIAVxDQIMAwsgA0IANwIkIANCgYCAgMAANwIcIANBhN3BADYCGCADQQhqIANBGGpBjN3BABD/DAsACyABIAEoAgwiAkEBIAIbNgIMCwJAAkACQAJAAkAgACgCCCIAKAIIIgJBgJTr3ANHBEAgACkDACEKA0AgASgCDCIABEAgAEEBa0ECTw0EDAMLEJQNAkACQCAKIAMpAwgiC1EEQCACIAMoAhAiAEsNAQwCCyAKIAtYDQEgAygCECEACyADQRhqIAogAiALIAAQmQoMAQsLIAEgASgCDCIAQQEgABs2AgwgAEUNASAAQQFrQQJJDQEgAA0CQdzawQBBKEGE3MEAENYMAAsDQCABKAIMIgBFDQALIABBAWtBAk8NAQsgBC0AgAEhACAEQQE6AIABIAMgADoACCAAQQFGDQIgBCgCiAEiAEEMayECIAQoAowBIgVBDGwhAUF/IQYCQANAIAFFBEBBACEADAILIAZBAWohBiACQQxqIQIgAUEMayEBIAAoAgQhCSAAQQxqIQAgCCAJRw0ACyAFIAZNDQQgAkEEaikCACEKIAIoAgAhACABBEAgAiACQQxqIAH8CgAACyAEIAVBAWsiBTYCjAELIAVFBEAgBCgCmAFFIQcLIARBADoAgAEgBCAHOgCcASAARQ0BIAMgCjcCHCADIAA2AhggACAAKAIAIgBBAWs2AgAgAEEBRw0AIANBGGoQ2gsLIANBMGokAA8LQZTcwQAQkQ8ACyADQgA3AiQgA0KBgICAwAA3AhwgA0GE3cEANgIYIANBCGogA0EYakGM3cEAEP8MAAsgBiAFQbTcwQAQhwsAC9QNAxN/Bn4DfSMAQSBrIgskACAAKQIEIhZCl5Kcqtu2tcI/hSIZQiCIIhcgACkCACIbIAEpAxBCNImFIhhCIIgiGn4gGUL/////D4MiGSAYQv////8PgyIYfoUgGSAafiAXIBh+hUIgiYUiGUIZiCIYQv8Ag0KBgoSIkKDAgAF+IRogFkIgiKciDL4hHCABKAIAIQYgFqciB74hHSAbpyIJviEeIAEoAgQiCCAZp3EiAyEKAkACQANAIAYgCmopAAAiFyAahSIWQoGChIiQoMCAAX0gFkJ/hYNCgIGChIiQoMCAf4MiFkIAUgRAA0ACQCAGIBZ6p0EDdiAKaiAIcUEEdGsiBEEQayoCACAeXA0AIARBDGsqAgAgHVwNACAEQQhrKgIAIBxbDQQLIBZCAX0gFoMiFkIAUg0ACwsgFyAXQgGGg0KAgYKEiJCgwIB/g1AEQCAKIAVBCGoiBWogCHEhCgwBCwsgCyACKAIIIgo2AhwgCyAMNgIYIAsgBzYCFCALIAk2AhAgAyAGaikAAEKAgYKEiJCgwIB/gyIWUARAQQghBANAIAMgBGohAyAEQQhqIQQgBiADIAhxIgNqKQAAQoCBgoSIkKDAgH+DIhZQDQALCyAGIBZ6p0EDdiADaiAIcSIEaiwAACIDQQBOBH8gBiAGKQMAQoCBgoSIkKDAgH+DeqdBA3YiBGotAAAFIAMLQQFxIgMgASgCCCIMRXFFBEAgBCAGaiAYp0H/AHEiBzoAACAGIARBCGsgCHFqQQhqIAc6AAAgASAMIANrNgIIIAEgASgCDEEBajYCDCAGIARBBHRrIgRBEGsiAUEIaiALQRhqKQIANwIAIAEgCykCEDcCAAwCCyALQQhqIRAjAEEwayIHJAAgByABIgRBEGo2AiggASgCDCEGIAcgB0EoajYCLAJAAkACQAJ/AkAgBiAGQQFqIgFNBEAgBCgCBCIPIA9BAWpBA3ZBB2wgD0EISRsiA0EBdiABSQRAIANBAWoiAyABIAEgA0kbIgFBD0kNAiABQf////8BTQRAQX8gAUEDdEEHbkEBa2d2IgFB/v///wBLDQUgAUEBagwECxCmDCAHKAIkIQEgBygCICEDDAYLIAQgB0EsakGPAkEQEMsCQYGAgIB4IQMMBQsQpgwgBygCDCEBIAcoAgghAwwEC0EEQQhBECABQQhJGyABQQRJGwsiAUEEdCIIIAFBCGoiDCAIaiIDSw0AIANB+P///wdLDQAgA0EIELMOIgUNAUEIIANBkMTEACgCACIAQcwIIAAbEQAAAAsQpgwgBygCFCEBIAcoAhAhAwwBCyAFIAhqIQkgDARAIAlB/wEgDPwLAAsgAUEBayIOIAFBA3ZBB2wgDkEISRshEQJAIAZFBEAgBCgCACEIDAELIAlBCGohEiAEKAIAIggpAwBCf4VCgIGChIiQoMCAf4MhFiAHKAIoIRNBACEBIAYhDCAIIQMDQCAWUARAA0AgAUEIaiEBIANBCGoiAykDAEKAgYKEiJCgwIB/gyIWQoCBgoSIkKDAgH9RDQALIBZCgIGChIiQoMCAf4UhFgsgCSAIIBZ6p0EDdiABaiIUQQR0ayIFQQxrKQAAQpeSnKrbtrXCP4UiF0IgiCIbIAVBEGspAAAgEykDAEI0iYUiGEIgiCIafiAXQv////8PgyIXIBhC/////w+DIhh+hSAXIBp+IBggG36FQiCIhaciFSAOcSIFaikAAEKAgYKEiJCgwIB/gyIXUARAQQghDQNAIAUgDWohBSANQQhqIQ0gCSAFIA5xIgVqKQAAQoCBgoSIkKDAgH+DIhdQDQALCyAWQgF9IBaDIRYgCSAXeqdBA3YgBWogDnEiBWosAABBAE4EQCAJKQMAQoCBgoSIkKDAgH+DeqdBA3YhBQsgBSAJaiAVQRl2Ig06AAAgEiAFQQhrIA5xaiANOgAAIAkgBUF/c0EEdGoiBUEIaiAIIBRBf3NBBHRqIg1BCGopAAA3AAAgBSANKQAANwAAIAxBAWsiDA0ACwsgBCAONgIEIAQgCTYCACAEIBEgBms2AghBgYCAgHghAyAPRQ0AIAggD0EEdEEXakFwcSIBayABIA9qQQlqQQgQiA8LIBAgATYCBCAQIAM2AgAgB0EwaiQAIAQgGSAEKAIAIAQoAgQgGRCWCiALQRBqEKUKIQQMAQsgAigCCCEKCyAKIARBBGsiAygCACIBRgRAIAIoAgAgCkYEQCACQfTIwwAQkwgLIAIgCkEBajYCCCACKAIEIApBDGxqIgEgACkCADcCACABQQhqIABBCGooAgA2AgAgAygCACEBCyALQSBqJAAgAQvzBQIBfwl9IwBB4ABrIgYkACACKgIEIgwgAyoCDCIIlCACKgIAIg0gAyoCECIOlJMiCyALkiEHIAIqAggiCyAOlCAMIAMqAhQiCpSTIg8gD5IhCSAGIAogAioCDCIPIAeUIAwgCZQgDSANIAqUIAsgCJSTIgogCpIiCpSTkpI4AhggBiAOIA8gCpQgDSAHlCALIAmUk5KSOAIUIAYgCCAPIAmUIAsgCpQgDCAHlJOSkjgCECAMIAMqAgAgAioCEJMiCJQgDSADKgIEIAIqAhSTIg6UkyIHIAeSIQcgDiALlCADKgIIIAIqAhiTIgogDJSTIgkgCZIhCSAGIAogDyAHlCAMIAmUIA0gCiANlCAIIAuUkyIKIAqSIgqUk5KSOAIMIAYgDiAPIAqUIA0gB5QgCyAJlJOSkjgCCCAGIAggDyAJlCALIAqUIAwgB5STkpI4AgQgAUEIaiICKgIAIQcgASoCACEJIAEqAgQhCCAGQTBqIAIoAgA2AgAgBiAHjDgCJCAGIAiMOAIgIAYgCYw4AhwgBiABKQIANwIoIAZBNGogBkEcaiAGQQRqIAZBEGoQswECQAJAIAYoAjRBAUcNAEMAAAAAIQcCfSAGKgI4IghDAAAAAF1FBEAgBCAIYEUNAiAGKAJIIQIgBioCRCEHIAYqAjwhCSAGKgJADAELIAYoAlwhAiAFBEBDAAAAACEJQwAAAAAhCEMAAAAADAELIAYqAkwiCCAEX0UNASAGKgJYIQcgBioCUCEJIAYqAlQLIQQgACAIOAIIIABBAjYCACAAQQIgAmsgAkEBayACQQBIGzYCBCAAIAcgDyANIASUIAwgCZSTIgggCJIiCJQgDSALIAmUIA0gB5STIg4gDpIiDpQgDCAMIAeUIAsgBJSTIgcgB5IiB5STkpI4AhQgACAEIA8gDpQgCyAHlCANIAiUk5KSOAIQIAAgCSAPIAeUIAwgCJQgCyAOlJOSkjgCDAwBCyAAQQQ2AgALIAZB4ABqJAAL6gUBBH8CQAJAAkACQAJAAkACQAJAIAIgBEYgAyAFRnFFBEAgASgCECEIIAEoAgwhBiACIARHBEACfwJAAkAgAiAISQRAIAQgCE8NASAGIAQgAiACIARJG0GwAWxqIQcgAiAETw0CIAchCCAGIAJBsAFsagwDCyAEIAhPDQogBiAEQbABbGoiAigCAEUNCgwJCyAGIAJBsAFsaiIIKAIAQQFHDQkgCCgCBCADRw0JDAYLIAIgBE0NAyAGIARBsAFsaiEIIAcLIQZBACEHIAYoAgAEQCAGQRBqQQAgBigCBCADRhshCQsgCCgCAEEBRgRAIAhBEGpBACAIKAIEIAVGGyEHCyAJRQ0IDAULIAMgBUYNAiADIAVNBEAgAiAITw0HIAYgAkGwAWxqIgIoAgANBgwHCyACIAhPDQYgBiACQbABbGoiCCgCAEEBRw0GIAgoAgQgA0YNAwwGCyACIAEoAhBPDQcgASgCDCACQbABbGoiBCgCAEEBRw0HIAQoAgQgA0cNByAEQRBqIQkgBCgCgAEiBUEBcQ0HIAQgBUEBcjYCgAEgASgCJCIEIAEoAhxGBEAgAUEcakHoi8IAELgICyABIARBAWo2AiQgASgCICAEQQN0aiIBIAM2AgQgASACNgIADAcLIAQgBEHQiMIAEIgLAAtB4IjCAEEwQZCJwgAQ1gwACyAGIAJBsAFsakEQaiEJCyAJKAJwIgZBAXENAiAJIAZBAXI2AnAgASgCJCIGIAEoAhxGBEAgAUEcakHoi8IAELgICyABIAZBAWo2AiQgASgCICAGQQN0aiIGIAM2AgQgBiACNgIADAILIAJBEGpBACACKAIEIAVGGyEHCwsgB0UNACAHKAJwIgJBAXENACAHIAJBAXI2AnAgASgCJCICIAEoAhxGBEAgAUEcakHoi8IAELgICyABIAJBAWo2AiQgASgCICACQQN0aiIBIAU2AgQgASAENgIACyAAIAk2AgAgACAHNgIEC6EGAgd9A38CfQJAAkACQAJAAkAgAkUEQCABKAK8ASIKQQFqIgINAQwFCyABKAKsASIMQQFqIgpFDQQCQCABKAIAIgJBBE8NACABKgKgASIEIAFBEGoiCyACQSRsaiICKgIglEMAAAAAkiEFIAQgAioCHJRDAAAAAJIhBiAEIAIqAhiUQwAAAACSIQcgBCACKgIUlEMAAAAAkiEIIAQgAioCEJRDAAAAAJIhCSAEIAIqAgyUQwAAAACSIgQgDEUNBhogASgCBCICQQNLDQAgBSABKgKkASIDIAsgAkEkbGoiAioCIJSSIQUgBiADIAIqAhyUkiEGIAcgAyACKgIYlJIhByAIIAMgAioCFJSSIQggCSADIAIqAhCUkiEJIAQgAyACKgIMlJIiBCAKQQJGDQYaIAEoAggiAkEDTQ0CCyACQQRB4IzDABCICwALIAEqArABIgQgASoCMJRDAAAAAJIhBSAEIAEqAiyUQwAAAACSIQYgBCABKgIolEMAAAAAkiEHIAQgASoCJJRDAAAAAJIhCCAEIAEqAiCUQwAAAACSIQkgBCABKgIclEMAAAAAkiIEIApFDQQaIAUgASoCtAEiAyABKgJUlJIhBSAGIAMgASoCUJSSIQYgByADIAEqAkyUkiEHIAggAyABKgJIlJIhCCAJIAMgASoCRJSSIQkgBCADIAEqAkCUkiIEIAJBAkYNBBogAkEDRw0BIAUgASoCuAEiAyABKgJ4lJIhBSAGIAMgASoCdJSSIQYgByADIAEqAnCUkiEHIAggAyABKgJslJIhCCAJIAMgASoCaJSSIQkgBCADIAEqAmSUkgwECyAKQQNHDQEgBSABKgKoASIDIAsgAkEkbGoiASoCIJSSIQUgBiADIAEqAhyUkiEGIAcgAyABKgIYlJIhByAIIAMgASoCFJSSIQggCSADIAEqAhCUkiEJIAQgAyABKgIMlJIMAwtBA0EDQaCMwwAQiAsAC0EDQQNB0IzDABCICwALQwAAAAALIQQgACAFOAIUIAAgBjgCECAAIAc4AgwgACAIOAIIIAAgCTgCBCAAIAQ4AgAL2AUCCn0HfyACKgIIIQkgAioCACEKIAIqAgQhCyACKgIMIQwgASgCBCEOAkACQAJAAkAgASgCCCIQDgICAQALIAkgAyoCBCIIlCALIAMqAggiBpSTIgQgBJIhByAKIAaUIAkgAyoCACIElJMiBSAFkiEFIAQgDCAHlCAJIAWUIAsgCyAElCAKIAiUkyIEIASSIg2Uk5KSIgQgDioCDJQgCCAMIAWUIAogDZQgCSAHlJOSkiIIIA5BEGoqAgCUkiAGIAwgDZQgCyAHlCAKIAWUk5KSIgcgDkEUaioCAJSSIgUgBCAOKgIAlCAIIA5BBGoqAgCUkiAHIA5BCGoqAgCUkiIGXiIBIQ9BAiEDIBBBAkYNACAFIAYgARshBSAQQf3///8DaiESIA5BGGohASAQQf////8DcUEDRwRAIBJB/////wNxQQFqQf7///8HcSEUA0AgBCABKgIAlCAIIAFBBGoqAgCUkiAHIAFBCGoqAgCUkiIGIAVeIREgBCABQQxqKgIAlCAIIAFBEGoqAgCUkiAHIAFBFGoqAgCUkiINIAYgBSARGyIFXiETIA0gBSATGyEFIANBAWogAyAPIBEbIBMbIQ8gAUEYaiEBIAMgFEchESADQQJqIQMgEQ0ACwsgEkEBcQ0AIAMgDyAEIAEqAgCUIAggAUEEaioCAJSSIAcgAUEIaioCAJSSIAVeGyEPCyAPIBBPDQEgACACKgIYIA4gD0EMbGoiASoCCCIEIAwgCiABKgIEIgiUIAsgASoCACIHlJMiBSAFkiIFlCAKIAkgB5QgCiAElJMiBiAGkiIGlCALIAsgBJQgCSAIlJMiBCAEkiIElJOSkpI4AgggACACKgIUIAggDCAGlCAJIASUIAogBZSTkpKSOAIEIAAgAioCECAHIAwgBJQgCyAFlCAJIAaUk5KSkjgCAA8LQQBBAEGY/cMAEIgLAAsgDyAQQcDAwwAQiAsAC7AGAQx/IwBBgAFrIgYkAAJAAkACQCAARQ0AIABBCGsiDSgCAEEBaiEHIA0gBzYCACAHRQ0BIAAoAgAiB0F/Rg0CIAAgB0EBajYCACAGIA02AhQgBiAANgIQIAYgAEEEajYCDCABRQ0AIAFBCGsiBygCAEEBaiEIIAcgCDYCACAIRQ0BIAEoAgAiCEF/Rg0CIAEgCEEBajYCACAGIAc2AiAgBiABNgIcIAYgAUEEaiILNgIYIAJFDQAgAkEIayIIKAIAQQFqIQkgCCAJNgIAIAlFDQEgAigCACIJQX9GDQIgAiAJQQFqNgIAIAYgCDYCLCAGIAI2AiggBiACQQRqIg42AiQgA0UNACADQQhrIgkoAgBBAWohCiAJIAo2AgAgCkUNASADKAIAIgpBf0YNAiADIApBAWo2AgAgBiAJNgI4IAYgAzYCNCAGIANBBGoiDzYCMCAERQ0AIARBCGsiCigCAEEBaiEMIAogDDYCACAMRQ0BIAQoAgAiDEF/Rg0CIAQgDEEBajYCACAGIAo2AkQgBiAENgJAIAYgBEEEajYCPCAGQcgAaiIMQQhqIA5BCGopAgA3AwAgBiAOKQIANwNIIAZB4ABqIAtBCGooAgA2AgAgBiALKQIANwNYIAAoAgQhCyAAKAIIIg4oAgghECAGQegAaiIRQQhqIA9BCGooAgA2AgAgBiAPKQIANwNoIAZB/ABqIARBDGooAgA2AgAgBiAEKQIENwJ0IAsgEEEBa0F4cWpBCGogDCARIAUgDigCIBEUACELIAQgBCgCAEEBazYCACAKIAooAgBBAWsiBDYCACAERQRAIAZBxABqEKgNCyADIAMoAgBBAWs2AgAgCSAJKAIAQQFrIgM2AgAgA0UEQCAGQThqEKgNCyACIAIoAgBBAWs2AgAgCCAIKAIAQQFrIgI2AgAgAkUEQCAGQSxqEKsNCyABIAEoAgBBAWs2AgAgByAHKAIAQQFrIgE2AgAgAUUEQCAGQSBqEKgNCyAAIAAoAgBBAWs2AgAgDSANKAIAQQFrIgA2AgAgAEUEQCAGQRRqEOMLCyAGQYABaiQAIAsPCxCbDwsACxCcDwALjAkCA38SfSMAQZABayIEJAAgAyoCDCENIAMqAgghByADKgIAIQogAyoCBCEIIARBADYCcCAEQQA2AmAgBEIANwJMIARBADYCPCAEQgA3AiggBEEANgIYIARBADYCCCAEIA0gB0MAAAAAlCILIAqTIgwgDJIiCZQgByAIIAuTIgwgDJIiEZQgCiAKQwAAAACUIgwgCEMAAAAAlCIQkyIPIA+SIg+Uk5JDAAAAAJIiDjgCWCAEIA6MOAJoIAQgDSARlCAIIA+UIAcgCZSTkkMAAAAAkiIOOAJsIAQgDow4AmQgBCANIA+UIAogCZQgCCARlJOSQwAAgD+SIgk4AlwgBCAJjDgCVCAEIA0gCyAMkyIJIAmSIgmUIAcgECAHkyIRIBGSIhGUIAogCiAQkyIPIA+SIg+Uk5JDAACAP5IiDjgCNCAEIA6MOAJEIAQgDSARlCAIIA+UIAcgCZSTkkMAAAAAkiIOOAJIIAQgDow4AkAgBCANIA+UIAogCZQgCCARlJOSQwAAAACSIgk4AjggBCAJjDgCMCAEIA0gByAMkyIJIAmSIgmUIAcgECALkyILIAuSIguUIAogDCAIkyIMIAySIgyUk5JDAAAAAJIiEDgCECAEIBCMOAIgIAQgDSALlCAIIAyUIAcgCZSTkkMAAIA/kiIHOAIkIAQgB4w4AhwgBCANIAyUIAogCZQgCCALlJOSQwAAAACSIg04AhQgBCANjDgCDEP//3//IQ1DAAAAACERQwAAAAAhDwNAAkAgBEEIaiAGaiIFKgIAIgogCpQgBUEEaioCACIIIAiUkiAFQQhqKgIAIgsgC5SSkSIHQwAAADReRQ0AIAQgCyAHlTgCjAEgBCAIIAeVOAKIASAEIAogB5U4AoQBQwAAgD8gAyoCECIWIARBhAFqIgUqAgAiCpQgAyoCFCIXIAUqAgQiCJSSIAUqAggiCyADKgIYIgmUkpghByAEQfQAaiIFIAsgB5QiCzgCDCAFIAggB5QiDDgCCCAFIAogB5QiEDgCBCAFIAsgCSACKgIIIAMqAgwiCSADKgIAIgcgDJQgAyoCBCIKIBCUkyIIIAiSIg6UIAogCiALlCADKgIIIgggDJSTIhIgEpIiEpQgByAIIBCUIAcgC5STIhMgE5IiE5STkiALk5giFCAJIAcgAioCBCAJIBOUIAcgDpQgCCASlJOSIAyTmCIVlCAKIAIqAgAgCSASlCAIIBOUIAogDpSTkiAQk5giDpSTIhIgEpIiEpQgByAIIA6UIAcgFJSTIhMgE5IiE5QgCiAKIBSUIAggFZSTIhQgFJIiFJSTkpKSIAEqAgggC5iTlCAQIBYgDiAJIBSUIAogEpQgCCATlJOSkpIgASoCACAQmJOUIAwgFyAVIAkgE5QgCCAUlCAHIBKUk5KSkiABKgIEIAyYk5SSkjgCACAEKgJ0IgcgDV5FDQAgBCoCgAEhDyAEKgJ8IREgBCoCeCEYIAchDQsgBkEMaiIGQewARw0ACyAAIA84AgwgACAROAIIIAAgGDgCBCAAIA04AgAgBEGQAWokAAv6DAIRfwR9IwBBoAhrIgckAAJAAkACQAJAIABFDQAgAEEIayIKKAIAQQFqIQYgCiAGNgIAIAZFDQEgACgCACIGQX9GDQIgACAGQQFqNgIAIAcgCjYCFCAHIAA2AhAgByAAQQRqIgs2AgwgAUUNACABQQhrIgwoAgBBAWohBiAMIAY2AgAgBkUNASABKAIAIgZBf0YNAiABIAZBAWo2AgAgByAMNgIgIAcgATYCHCAHIAFBBGoiDTYCGCACRQ0AIAJBCGsiCSgCACIIQQFqIQYgCSAGNgIAIAZFDQEgAigCACIGQX9GDQIgAiAGQQFqNgIAIAcgCTYCLCAHIAI2AiggByACQQRqNgIkAkAgAioCBCIYIBiUIAIqAggiGSAZlJIgAioCDCIXIBeUkiIaQwAAAABeRQRAIAIgBjYCACAJIAg2AgBBAiEDDAELIAcgFyAakSIXlTgC/AIgByAZIBeVOAL4AiAHIBggF5U4AvQCIwBBkAFrIggkACAHQYADaiIGQgA3A5ABIAhBEGoiFEIANwMAIAZBmAFqQgA3AwAgCEHtAGoiDkELakIANwAAIAhB2gBqIg9BC2pCADcAACAIQccAaiIQQQtqQgA3AAAgCEE0aiIRQQtqQgA3AAAgCEEhaiISQQtqQgA3AAAgCEIANwMIIAhCADcAcCAIQgA3AF0gCEIANwBKIAhCADcANyAIQgA3ACQgCEGAAWoiEyAHQfQCaiIVELcEIAZB4ABqIBNBCGoiFigCADYCACAGIAgpAoABNwJYIAgqAowBIRggEyAVELcEIAhBHGogFigCADYCACAIIAgpAoABNwIUIAgqAowBIRkgBkIANwMIIAZCADcDACAGIBg4AmQgBkL////7BzcDUCAGQoCAgIDw//+/fzcDSCAGQv////v///+//wA3A0AgBkL////7BzcDOCAGQoCAgIDw//+/fzcDMCAGQv////v///+//wA3AyggBkL////7BzcDICAGQoCAgIDw//+/fzcDGCAGQv////v///+//wA3AxAgBkH4AGogCEEYaikDADcDACAGQfAAaiAUKQMANwMAIAYgCCkDCDcDaCAGQQA2AowBIAZC////+wc3A6ABIAZCADcChAEgBkEAOgCoASAGIBk4AoAB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IANB/wFxQT9NBEAgAioCBCIVIBWUIAIqAggiFiAWlJIgAioCDCIUIBSUkiIXQwAAAABeDQELIAVBAjoA7QIgAiAENgIAIAcgBjYCAAwBCyAFQfQCaiIRQQhqIhIgFCAXkSIUlTgCACAFIBYgFJU4AvgCIAUgFSAUlTgC9AIgBUHQBWoiBEIANwNoIARCADcDkAEgBEIANwJUIARB+ABqQgA3AwAgBEHwAGpCADcDACAEQZgBakIANwMAIwAiE0HgAGsiBkHNAGoiDEELakIANwAAIAZBOmoiDUELakIANwAAIAZBJ2oiDkELakIANwAAIAZBFGoiD0ELakIANwAAIAZBAWoiEEELakIANwAAIARB3ABqQgA3AgAgBkIANwBQIAZCADcAPSAGQgA3ACogBkIANwAXIAZCADcABCAEQgA3AwggBEIANwMAIARBADoAqAEgBEL////7BzcDoAEgBEIANwOIASAEQoCAgPwDNwOAASAEQYCAgPwDNgJkIARB////+wc2AlAgBEKAgICA8P//v383A0ggBEL////7////v/8ANwNAIARC////+wc3AzggBEKAgICA8P//v383AzAgBEL////7////v/8ANwMoIARC////+wc3AyAgBEKAgICA8P//v383AxggBEL////7////v/8ANwMQIAQgBikATTcAqQEgBEGxAWogDEEIaikAADcAACAEQbgBaiAMQQ9qKAAANgAAIARBADoAxAEgBEL////7BzcCvAEgBEEAOgDgASAEQv////sHNwPYASAEQQA6APwBIARC////+wc3AvQBIARB1AFqIA1BD2ooAAA2AAAgBEHNAWogDUEIaikAADcAACAEIAYpADo3AMUBIARB8AFqIA5BD2ooAAA2AAAgBEHpAWogDkEIaikAADcAACAEIAYpACc3AOEBIARBjAJqIA9BD2ooAAA2AAAgBEGFAmogD0EIaikAADcAACAEIAYpABQ3AP0BIARBADoAmAIgBEL////7BzcDkAIgBEGoAmogEEEPaigAADYAACAEQaECaiAQQQhqKQAANwAAIAQgBikAATcAmQIgBEGAAjsBvAIgBCADQf8BcTYCuAIgBEEAOgC0AiAEQv////sHNwKsAiAFQcAGaiAKQQhqKAIANgIAIAVB3AZqIAtBCGooAgA2AgAgBSAKKQIANwO4BiAF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aiIMQQtqQgA3AAAgBEHHAGoiDUELakIANwAAIARBNGoiDkELakIANwAAIARBIWoiD0ELakIANwAAIARCADcDCCAEQgA3AHAgBEIANwBdIARCADcASiAEQgA3ADcgBEIANwAkIARBgAFqIhAgBUH0AmoiEhC3BCADQeAAaiAQQQhqIhMoAgA2AgAgAyAEKQKAATcCWCAEKgKMASEVIBAgEhC3BCAEQRxqIBMoAgA2AgAgBCAEKQKAATcCFCAEKgKMASEWIANCADcDCCADQgA3AwAgAyAVOAJkIANC////+wc3A1AgA0KAgICA8P//v383A0ggA0L////7////v/8ANwNAIANC////+wc3AzggA0KAgICA8P//v383AzAgA0L////7////v/8ANwMoIANC////+wc3AyAgA0KAgICA8P//v383AxggA0L////7////v/8ANwMQIANB+ABqIARBGGopAwA3AwAgA0HwAGogESkDADcDACADIAQpAwg3A2ggA0EANgKMASADQv////sHNwOgASADQgA3AoQBIANBADoAqAEgAyAWOAKAASADQv////sHNwK8ASADQQA6AMQBIANC////+wc3A9gBIANBADoA4AEgA0G4AWogC0EPaigAADYAACADQbEBaiALQQhqKQAANwAAIAMgBCkAbTcAqQEgAyAEKQBaNwDFASADQc0BaiAMQQhqKQAANwAAIANB1AFqIAxBD2ooAAA2AAAgAyAEKQBHNwDhASADQekBaiANQQhqKQAANwAAIANB8AFqIA1BD2ooAAA2AAAgA0EAOgD8ASADQv////sHNwL0ASADQQA6AJgCIANC////+wc3A5ACIANBADoAtAIgA0L////7BzcCrAIgA0GAAjsBvAIgA0E3NgK4AiADQYwCaiAOQQ9qKAAANgAAIANBhQJqIA5BCGopAAA3AAAgAyAEKQA0NwD9ASADQagCaiAPQQ9qKAAANgAAIANBoQJqIA9BCGopAAA3AAAgAyAEKQAhNwCZAiAEQZABaiQAIAVB8ANqIAhBCGooAgA2AgAgBUGMBGogCkEIaigCADYCACAFIAgpAgA3A+gDIAUgCikCADcChAQgBUEwaiADQb0C/AoAACAGKAIAIQQgBS8BvgUhCCAFLQC9BSEDIAIgAigCAEEBazYCACAGIARBAWsiAjYCACACDQAgBUEsahCoDQsgASABKAIAQQFrNgIAIAkgCSgCAEEBayIBNgIAIAFFBEAgBUEgahCoDQsgACAAKAIAQQFrNgIAIAcgBygCAEEBayIANgIAIABFBEAgBUEUahCoDQtBACECIANBAkcEQCAFQYwDaiAFQTBqQb0C/AoAAEHgAkEQELMOIgBFDQQgAEEANgIQIABCgYCAgBA3AwAgAEEUaiAFQYADakHJAvwKAAAgACAIOwHeAiAAIAM6AN0CIABBEGohAgsgBUHQBWokACACDwsQmw8LAAsQnA8AC0EQQeACQZDExAAoAgAiAEHMCCAAGxEAAAAL6gUCCH8BfiMAQfAAayIGJAACQAJAAkACQAJAIABFDQAgAEEIayIKKAIAQQFqIQcgCiAHNgIAIAdFDQEgACgCACIHQX9GDQIgACAHQQFqNgIAIAYgCjYCDCAGIAA2AgggBiAAQQRqIgs2AgQgAkUNACACQQhrIgcoAgBBAWohCCAHIAg2AgAgCEUNASACKAIAIghBf0YNAiACIAhBAWo2AgAgBiAHNgIYIAYgAjYCFCAGIAJBBGoiDDYCECADRQ0AIANBCGsiCCgCAEEBaiEJIAggCTYCACAJRQ0BIAMoAgAiCUF/Rg0CIAMgCUEBajYCACAGIAg2AiQgBiADNgIgIAYgA0EEaiINNgIcIAsgAb0iDqcgDkIgiKcQuAwiCUUNAyAGQdgAaiILQQhqIAxBCGooAgA2AgAgBiAMKQIANwNYIAtBFGogDUEIaigCADYCACAGIA0pAgA3AmQgBkFAayIMIAkoAkAgCSgCRCINKAIIQQFrQXhxakEIaiAJQfQAaiALIAQgBUEARyANKAIcEQkAIAYoAkAiBUEERwRAIAZBOGogDEEUaigCADYCACAGQTBqIAZBzABqKQIANwMAIAYgBikCRDcDKAsgAyADKAIAQQFrNgIAIAggCCgCAEEBayIDNgIAIANFBEAgBkEkahCoDQsgAiACKAIAQQFrNgIAIAcgBygCAEEBayICNgIAIAJFBEAgBkEYahCoDQsgACAAKAIAQQFrNgIAIAogCigCAEEBayIANgIAIABFBEAgBkEMahDvDAtBACEAIAVBBEcEQEEkQQQQsw4iAEUNBSAAIAU2AgwgAEEANgIIIABCgYCAgBA3AgAgACAGKQMoNwIQIABBGGogBkEwaikDADcCACAAQSBqIAZBOGooAgA2AgAgAEEIaiEACyAGQfAAaiQAIAAPCxCbDwsACxCcDwALQczOwQBBzABBmM/BABDXCwALQQRBJEGQxMQAKAIAIgBBzAggABsRAAAAC+0FAQh/IwBB8ABrIgUkAAJAAkACQAJAIABFDQAgAEEIayIKKAIAQQFqIQYgCiAGNgIAIAZFDQEgACgCACIGQX9GDQIgACAGQQFqNgIAIAUgCjYCCCAFIAA2AgQgBSAAQQRqNgIAIAFFDQAgAUEIayIGKAIAQQFqIQcgBiAHNgIAIAdFDQEgASgCACIHQX9GDQIgASAHQQFqNgIAIAUgBjYCFCAFIAE2AhAgBSABQQRqIgs2AgwgAkUNACACQQhrIgcoAgBBAWohCCAHIAg2AgAgCEUNASACKAIAIghBf0YNAiACIAhBAWo2AgAgBSAHNgIgIAUgAjYCHCAFIAJBBGoiDDYCGCADRQ0AIANBCGsiCCgCAEEBaiEJIAggCTYCACAJRQ0BIAMoAgAiCUF/Rg0CIAMgCUEBajYCACAFIAg2AiwgBSADNgIoIAUgA0EEajYCJCAFQUBrIglBCGogDEEIaikCADcDACAFIAwpAgA3A0AgBUHYAGogC0EIaigCADYCACAFIAspAgA3A1AgBUHgAGoiC0EIaiADQQxqKAIANgIAIAUgAykCBDcDYCAFQTBqIAAoAgQgACgCCCIMKAIIQQFrQXhxakEIaiAJIAsgBEEARyAMKAI8EQcAIAMgAygCAEEBazYCACAIIAgoAgBBAWsiAzYCACADRQRAIAVBLGoQqA0LIAIgAigCAEEBazYCACAHIAcoAgBBAWsiAjYCACACRQRAIAVBIGoQqw0LIAEgASgCAEEBazYCACAGIAYoAgBBAWsiATYCACABRQRAIAVBFGoQqA0LIAAgACgCAEEBazYCACAKIAooAgBBAWsiADYCACAARQRAIAVBCGoQ4wsLQRxBBBCzDiIARQ0DIABBADYCCCAAQoGAgIAQNwIAIAAgBSkCMDcCDCAAQRRqIAVBOGopAgA3AgAgBUHwAGokACAAQQhqDwsQmw8LAAsQnA8AC0EEQRxBkMTEACgCACIAQcwIIAAbEQAAAAvbBQIHfwF+An8gAUUEQCAAKAIIIQdBLSELIAVBAWoMAQtBK0GAgMQAIAAoAggiB0GAgIABcSIBGyELIAFBFXYgBWoLIQkCQCAHQYCAgARxRQRAQQAhAgwBCwJAIANBEE8EQCACIAMQjwIhAQwBCyADRQRAQQAhAQwBCyADQQNxIQoCQCADQQRJBEBBACEBDAELIANBDHEhDEEAIQEDQCABIAIgCGoiBiwAAEG/f0pqIAZBAWosAABBv39KaiAGQQJqLAAAQb9/SmogBkEDaiwAAEG/f0pqIQEgDCAIQQRqIghHDQALCyAKRQ0AIAIgCGohBgNAIAEgBiwAAEG/f0pqIQEgBkEBaiEGIApBAWsiCg0ACwsgASAJaiEJCwJAIAkgAC8BDCIISQRAAkACQCAHQYCAgAhxRQRAIAggCWshCEEAIQFBACEJAkACQAJAIAdBHXZBA3FBAWsOAwABAAILIAghCQwBCyAIQf7/A3FBAXYhCQsgB0H///8AcSEKIAAoAgQhByAAKAIAIQADQCABQf//A3EgCUH//wNxTw0CQQEhBiABQQFqIQEgACAKIAcoAhARAwBFDQALDAQLIAAgACkCCCINp0GAgID/eXFBsICAgAJyNgIIQQEhBiAAKAIAIgcgACgCBCIKIAsgAiADEOgMDQNBACEBIAggCWtB//8DcSECA0AgAUH//wNxIAJPDQIgAUEBaiEBIAdBMCAKKAIQEQMARQ0ACwwDC0EBIQYgACAHIAsgAiADEOgMDQIgACAEIAUgBygCDBEFAA0CQQAhASAIIAlrQf//A3EhAgNAIAFB//8DcSIDIAJJIQYgAiADTQ0DIAFBAWohASAAIAogBygCEBEDAEUNAAsMAgsgByAEIAUgCigCDBEFAA0BIAAgDTcCCEEADwtBASEGIAAoAgAiASAAKAIEIgAgCyACIAMQ6AwNACABIAQgBSAAKAIMEQUAIQYLIAYLxgoBBX8jAEEgayIEJAAgAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDigCAQEBAQEBAQEDBQEBBAEBAQEBAQEBAQEBAQEBAQEBAQEBCAEBAQEHAAsgAUHcAEYNBQsgAkEBcUUNByABQf8FTQ0HQRFBACABQa+wBE8bIgNBCHIhAiADIAIgAkECdEHgvsQAaigCAEELdCABQQt0IgJLGyIFQQRyIQMgBSADIANBAnRB4L7EAGooAgBBC3QgAksbIgVBAnIhAyAFIAMgA0ECdEHgvsQAaigCAEELdCACSxsiBUEBaiEDIAUgAyADQQJ0QeC+xABqKAIAQQt0IAJLGyIFQQFqIQMgBSADIANBAnRB4L7EAGooAgBBC3QgAksbIgVBAnRB4L7EAGooAgBBC3QhAyACIANGIAIgA0tqIAVqIgVBAnRB4L7EAGoiBygCAEEVdiECQe8FIQMCQCAFQSBNBEAgBygCBEEVdiEDIAVFDQELIAdBBGsoAgBB////AHEhBgsCQCADIAJBf3NqRQ0AIAEgBmshBiADQQFrIQVBACEDA0AgBiADIAJBjIzEAGotAABqIgNJDQEgBSACQQFqIgJHDQALCyACQQFxRQ0HIARBDGoiA0ECakEAOgAAIARBADsBDCAEIAFBFHZB1qfEAGotAAA6AA8gBCABQQR2QQ9xQdanxABqLQAAOgATIAQgAUEIdkEPcUHWp8QAai0AADoAEiAEIAFBDHZBD3FB1qfEAGotAAA6ABEgBCABQRB2QQ9xQdanxABqLQAAOgAQIAFBAXJnQQJ2IgIgA2oiBkH7ADoAACAGQQFrQfUAOgAAIAMgAkECayICakHcADoAACADQQhqIgMgAUEPcUHWp8QAai0AADoAACAAIAQpAQw3AAAgBEH9ADoAFQwICyAAQgA3AQIgAEHc4AA7AQAMCgsgAEIANwECIABB3OgBOwEADAkLIABCADcBAiAAQdzkATsBAAwICyAAQgA3AQIgAEHc3AE7AQAMBwsgAEIANwECIABB3LgBOwEADAYLIAJBgAJxRQ0BIABCADcBAiAAQdzOADsBAAwFCyACQf///wdxQYCABE8NAwsCf0EAIAFBIEkNABpBASABQf8ASQ0AGiABQYCABE8EQCABQeD//wBxQeDNCkcgAUH+//8AcUGe8ApHcSABQcDuCmtBeklxIAFBsJ0La0FySXEgAUHw1wtrQXFJcSABQYDwC2tB3mxJcSABQYCADGtBnnRJcSABQdCmDGtBe0lxIAFBgII4a0GwxVRJcSABQfCDOElxIAFBgIAITw0BGiABQZiwxABBLEHwsMQAQdABQcCyxABB5gMQxAUMAQsgAUGmtsQAQShB9rbEAEGiAkGYucQAQakCEMQFCw0BIARBFmoiA0ECakEAOgAAIARBADsBFiAEIAFBFHZB1qfEAGotAAA6ABkgBCABQQR2QQ9xQdanxABqLQAAOgAdIAQgAUEIdkEPcUHWp8QAai0AADoAHCAEIAFBDHZBD3FB1qfEAGotAAA6ABsgBCABQRB2QQ9xQdanxABqLQAAOgAaIAFBAXJnQQJ2IgIgA2oiBkH7ADoAACAGQQFrQfUAOgAAIAMgAkECayICakHcADoAACADQQhqIgMgAUEPcUHWp8QAai0AADoAACAAIAQpARY3AAAgBEH9ADoAHwsgAEEIaiADLwEAOwAAQQoMAwsgACABNgIAQYABIQJBgQEMAgsgAEIANwECIABB3MQAOwEAC0EAIQJBAgs6AA0gACACOgAMIARBIGokAAuIBQIBfwl9IwBB0ABrIgYkACACKgIEIgwgAyoCDCILlCACKgIAIg0gAyoCECIOlJMiCiAKkiEHIAIqAggiCiAOlCAMIAMqAhQiCJSTIg8gD5IhCSAGIAggAioCDCIPIAeUIAwgCZQgDSANIAiUIAogC5STIgggCJIiCJSTkpI4AhwgBiAOIA8gCJQgDSAHlCAKIAmUk5KSOAIYIAYgCyAPIAmUIAogCJQgDCAHlJOSkjgCFCAMIAMqAgAgAioCEJMiC5QgDSADKgIEIAIqAhSTIg6UkyIHIAeSIQcgDiAKlCADKgIIIAIqAhiTIgggDJSTIgkgCZIhCSAGIAggDyAHlCAMIAmUIA0gCCANlCALIAqUkyIIIAiSIgiUk5KSOAIQIAYgDiAPIAiUIA0gB5QgCiAJlJOSkjgCDCAGIAsgDyAJlCAKIAiUIAwgB5STkpI4AgggAUEIaiICKgIAIQcgASoCACEJIAEqAgQhCyAGQTRqIAIoAgA2AgAgBiAHjDgCKCAGIAuMOAIkIAYgCYw4AiAgBiABKQIANwIsIAZBOGogBkEgaiAGQQhqIAQgBRDAByAAAn8gBigCOEEBRgRAIAYqAkAhBCAGKgJIIQcgBioCRCEJIAYoAkwhASAAIAYqAjw4AgggAEECIAFrIAFBAWsgAUEASBs2AgQgACAHIA8gDSAJlCAMIASUkyILIAuSIguUIA0gCiAElCANIAeUkyIOIA6SIg6UIAwgDCAHlCAKIAmUkyIHIAeSIgeUk5KSOAIUIAAgCSAPIA6UIAogB5QgDSALlJOSkjgCECAAIAQgDyAHlCAMIAuUIAogDpSTkpI4AgxBAgwBC0EECzYCACAGQdAAaiQAC/cEARR9IAEqAjAhEyABKgIsIRQgASoCKCEVIAEqAiQhAyABKgIgIQ4gASoCHCEPIAEqAhghDCABKgIUIRAgASoCECERIAEqAgwhBiABKgIIIQkgASoCBCEEIAEqAgAhCgJ9IAIgASoCNJRDAAAAP5QiCyALlCACIAEqAjiUQwAAAD+UIgcgB5SSIAIgASoCPJRDAAAAP5QiCCAIlJIiBUMAAIAoXwRAQwAAgD8hBUMAAAAAIQdDAAAAACEIQwAAAAAMAQsgCCAFkSIFEPEBIAWVIg2UIQggByANlCEHIAUQ9AEhBSALIA2UCyELIAAgBiAFlCAKIAuUkyAEIAeUkyAJIAiUkzgCDCAAIAYgCJQgBCALlCAJIAWUkiAKIAeUk5I4AgggACAKIAiUIAYgB5QgBCAFlCAJIAuUk5KSOAIEIAAgCSAHlCAGIAuUIAogBZSSkiAEIAiUkzgCACAMIAwgAyAGIAogDpQgBCAPlJMiDCAMkiIMlCAKIAkgD5QgCiADlJMiDSANkiINlCAEIAQgA5QgCSAOlJMiAyADkiISlJOSkpIiFpMhAyAAIAIgE5QgFpIgAyAFIBAgECAOIAYgDZQgCSASlCAKIAyUk5KSkiIOkyIKIAuUIBEgESAPIAYgEpQgBCAMlCAJIA2Uk5KSkiIPkyIJIAeUkyIEIASSIgSUIAsgCSAIlCADIAuUkyIGIAaSIgaUIAcgAyAHlCAKIAiUkyIDIAOSIgOUk5KSkjgCGCAAIAIgFJQgDpIgCiAFIAaUIAggA5QgCyAElJOSkpI4AhQgACACIBWUIA+SIAkgBSADlCAHIASUIAggBpSTkpKSOAIQC+wFAhV/A30jAEHgCGsiAiQAIAJBDGoiAyAAKAIAIgUgASABQQxqEKgEIAJBgAdqIAMQeSACKAKAB0EBRgRAIAAoAigiBkE1aiEIIAZBBGohASAAKAIkIQkgAkGoCGoiA0E1aiEKIANBBGohAyAAKAIgIQsgACgCHCEMIAAoAhghDSAAKAIUIQ4gACgCECEPIAAoAgwhECAAKAIIIREgACgCBCESA0ACQCACLQCkB0HAAEYNACAFKgJkIRcgBSoCaCEYIAIoAowHIQAgAigCkAchBCACKAKUByEHIAIgBSoCbCIZQwAAAD+UOAKwByACIBhDAAAAP5Q4AqwHIAIgF0MAAAA/lDgCqAcgAiAZIAeyQwAAAD+SlDgCsAggAiAYIASyQwAAAD+SlDgCrAggAiAXIACyQwAAAD+SlDgCqAggAkG0B2oiACASIAJBqAhqIgQQjAMgBCARIAAgAkGoB2pBvP3CACAQIA8gDiANKgIAIAwqAgAgCy0AABCjASACLQDcCCIEQQVGDQAgAkH4B2oiAEEIaiIHIANBCGopAgA3AwAgAEEQaiITIANBEGopAgA3AwAgAEEYaiIUIANBGGopAgA3AwAgAEEgaiIVIANBIGopAgA3AwAgAEEoaiIAIANBKGopAgA3AwAgAkH2B2oiFiAKQQJqLQAAOgAAIAIgAykCADcD+AcgAiAKLwAAOwH0ByAEQQRGDQAgAioCqAgiFyAJKgIAXUUNACAJIBc4AgAgBiAXOAIAIAEgAikD+Ac3AgAgBiAEOgA0IAggAi8B9Ac7AAAgAUEIaiAHKQMANwIAIAFBEGogEykDADcCACABQRhqIBQpAwA3AgAgAUEgaiAVKQMANwIAIAFBKGogACkDADcCACAIQQJqIBYtAAA6AAALIAJBgAdqIAJBDGoQeSACKAKABw0ACwsCQCACKAIMQQJGDQAgAigCkAEiAEEhSQ0AIAIoAhQgAEECdEEEEIgPCyACQeAIaiQAC/QEARN9IAMqAgAgAioCECIWkyIIIAIqAgQiDJQgAyoCBCACKgIUIheTIhQgAioCACINlJMiBiAGkiEJIBQgAioCCCIOlCADKgIIIAIqAhgiGJMiBiAMlJMiByAHkiEQIAYgAioCDCITIAmUIAwgEJQgDSAGIA2UIAggDpSTIgYgBpIiFZSTkpIhBiAIIBMgEJQgDiAVlCAMIAmUk5KSIhEgEZQgBiAGlJKRIgpDAAAANF8hAiABKgIEIgtDAAAAACAGIAqVIAIblCEHIAtDAACAPyARIAqVIAIblCEPAkACQAJAAkACQAJAAkACQAJAIAEqAgAiEowiCCAUIBMgFZQgDSAJlCAOIBCUk5KSIglfRQ0AIAkgEl9FDQAgCiALXw0BCyAJIBJeDQFBACEDIAggCV5FDQUgCiALX0UNBwwGC0EBIQMgBEUNASAGIQcgCSEIIBEhDwwGC0EAIQMgCiALXw0BIBIhCAwFCyALIAqTIQogEiAJkyILIBIgCZIiEF1FDQEgCiALXkUNAQsgBiEHIBIhCCARIQ8MAwsgCyAQXkUNACAKIBBeDQELIAkhCAwBCyAGIQcgESEPC0ECIQIgACAFIAYgB5MiBSAFlCAJIAiTIgUgBZQgESAPkyIFIAWUkpKRXQR/QQIFIAAgByATIA0gCJQgDCAPlJMiBSAFkiIFlCANIA4gD5QgDSAHlJMiBiAGkiIGlCAMIAwgB5QgDiAIlJMiByAHkiIHlJOSkiAYkjgCCCAAIAggEyAGlCAOIAeUIA0gBZSTkpIgF5I4AgQgACAWIA8gEyAHlCAMIAWUIA4gBpSTkpKSOAIAIAMLOgAMC9kFARV9IAIqAgQgASoCFJMiDCABKgIIIgWUIAIqAgggASoCGJMiEyABKgIEIgeUkyIEIASSIRAgEyABKgIAIgiUIAIqAgAgASoCEJMiBCAFlJMiCSAJkiERIAQgASoCDCIJIBCUIAUgEZQgByAEIAeUIAwgCJSTIgQgBJIiFJSTkpIhBkMAAAAAIQQgACoCCCESIAAqAgQhCyAAKgIAIg2MIRUgBSACKgIQIhaUIAcgAioCFCIXlJMiDiAOkiEOIAggF5QgBSACKgIMIgqUkyIPIA+SIQ8CQAJAIAogCSAOlCAFIA+UIAcgByAKlCAIIBaUkyIKIAqSIgqUk5KSIhhDAAAAAFwEQCANIAaTQwAAgD8gGJUiBJQiDSAVIAaTIASUIgZdIQAgAyADIAYgDSAAGyIEIAMgBF0bIAQgBFwbIgNDAAAAAEMAAAAAIA0gBiAAGyIEIARDAAAAAF0bIAQgBFwbIgRdRQ0BQQAPC0EAIQEgBiAVXQ0BIAYgDV4NAQsgDCAJIBGUIAggFJQgBSAQlJOSkiEGIAuMIQwCQCAWIAkgD5QgCCAKlCAFIA6Uk5KSIgVDAAAAAFwEQCALIAaTQwAAgD8gBZUiBZQiCyAMIAaTIAWUIgZdIQAgAyADIAYgCyAAGyIFIAMgBV0bIAUgBVwbIgMgCyAGIAAbIgUgBSAEIAQgBV0bIAQgBFwbIgRdRQ0BQQAPC0EAIQEgBiAMXQ0BIAYgC14NAQsgEyAJIBSUIAcgEJQgCCARlJOSkiEFIBKMIQYCQCAXIAkgCpQgByAOlCAIIA+Uk5KSIgdDAAAAAFwEQCASIAWTQwAAgD8gB5UiCJQiByAGIAWTIAiUIgVdIQAgByAFIAAbIgggCCAEIAQgCF0bIAQgBFwbIAMgAyAFIAcgABsiBCADIARdGyAEIARcG15FDQFBAA8LQQAhASAFIAZdDQEgBSASXg0BC0EBIQELIAEL7wUCCH8CfiMAQUBqIgIkAAJAAkAgASgCBCIERQRAIABBgICAgHg2AgAMAQsgASAEQQFrNgIEIAEoAgAhASACQQM2AjQgAiABNgIwIAJBEGogAkEwahCWBAJAAkACQAJ/AkACQAJAAkACQAJAIAIoAhAiBEGAgICAeGsOAgIAAQsgAigCFCEBDAcLIAIoAhQhByACKAI0IghFDQIgAigCMCIBKAIEIgZBB00EQCACQoHKADcDECACQRBqEKINDAULIAIoAhghAyABIAZBCGsiCTYCBCABIAEoAgAiBUEIajYCACAFKQAAIgpCgICAgBBUDQEgAkEBOgAQIAIgCjcDGCACQRBqIAJBLGpBgKrBABDvCgwEC0EAIAJBLGpBpKzBABC+CiEBDAULIAhBAUYNASAJQQdNBEAgAkKBygA3AxAgAkEQahCiDQwDCyABIAZBEGs2AgQgASAFQRBqNgIAIAUpAAgiC0KAgICAEFQNAyACQQE6ABAgAiALNwMYIAJBEGogAkEsakGAqsEAEO8KDAILQQEgAkEsakGkrMEAEL4KDAELQQIgAkEsakGkrMEAEL4KCyEBIARFDQEgByAEQQJ0QQQQiA8MAQsgC6ciASAKpyIFbCIGIANGDQEgAiAGNgIoIAIgAzYCLCACQQI2AhQgAkGUy8EANgIQIAJCAjcCHCACIAJBLGqtQoCAgIAwhDcDOCACIAJBKGqtQoCAgIAwhDcDMCACIAJBMGo2AhggAkEEaiIBIAJBEGoiAxCMBSADIAEQ/QpBDEEEELMOIgFFDQMgASACKQIQNwIAIAFBCGogA0EIaigCADYCACACKAIEIgMEQCACKAIIIANBARCIDwsgBEUNACAHIARBAnRBBBCIDwsgAEGBgICAeDYCACAAIAE2AgQMAQsgACABNgIQIAAgBTYCDCAAIAM2AgggACAHNgIEIAAgBDYCAAsgAkFAayQADwtBBEEMQZDExAAoAgAiAEHMCCAAGxEAAAALwgUCCH8BfiMAQdAAayIFJAACQAJAAkACQCAARQ0AIABBCGsiCygCAEEBaiEHIAsgBzYCACAHRQ0BIAAoAgAiB0F/Rg0CIAAgB0EBajYCACAFIAs2AgggBSAANgIEIAUgAEEEaiIMNgIAIAJFDQAgAkEIayIHKAIAQQFqIQggByAINgIAIAhFDQEgAigCACIIQX9GDQIgAiAIQQFqNgIAIAUgBzYCFCAFIAI2AhAgBSACQQRqNgIMIANFDQAgA0EIayIIKAIAQQFqIQkgCCAJNgIAIAlFDQEgAygCACIJQX9GDQIgAyAJQQFqNgIAIAUgCDYCICAFIAM2AhwgBSADQQRqIgY2AhggBEUNACAEQQhrIgkoAgBBAWohCiAJIAo2AgAgCkUNASAEKAIAIgpBf0YNAiAEIApBAWo2AgAgBSAJNgIsIAUgBDYCKCAFIARBBGo2AiQgBUEwaiIKQQhqIARBDGopAgA3AwAgBSAEKQIENwMwIAVByABqIAZBCGooAgA2AgAgBSAGKQIANwNAIAwgAb0iDacgDUIgiKcQuAwiBkUNAyAGQfQAaiAGKAJAIAYoAkQiBigCCEEBa0F4cWpBCGogBiAKIAIoAgQgAigCCCIGKAIIQQFrQXhxakEIaiAGEJMFIQYgBCAEKAIAQQFrNgIAIAkgCSgCAEEBayIENgIAIARFBEAgBUEsahCrDQsgAyADKAIAQQFrNgIAIAggCCgCAEEBayIDNgIAIANFBEAgBUEgahCoDQsgAiACKAIAQQFrNgIAIAcgBygCAEEBayICNgIAIAJFBEAgBUEUahDjCwsgBkH/AXEhAiAAIAAoAgBBAWs2AgAgCyALKAIAQQFrIgA2AgAgAEUEQCAFQQhqEO8MCyAFQdAAaiQAIAJBAXEPCxCbDwsACxCcDwALQczOwQBBzABBmM/BABDXCwALlAUCGX0Cf0ECIR0CfyABKgIMIhUgASoCACILkyIMIAIqAgwiBiALk5QgASoCECIWIAEqAgQiDZMiDiACKgIQIgcgDZOUkiABKgIUIhcgASoCCCIPkyIQIAIqAhQiBCAPk5SSIgggDCACKgIAIgUgC5OUIA4gAioCBCIKIA2TlJIgECACKgIIIgMgD5OUkiIJXUUEQCAEIREgByESIAYhEyADIQQgCiEHIAUhBiAIIQMgCSEIQQAMAQsgAiAFOAIMIAIgBjgCACACIAo4AhAgAiAHOAIEIAIgAzgCFCACIAQ4AghBACEdIAMhESAKIRIgBSETIAkhA0ECCyECAkAgA0MAAAAAXQ0AIAwgDJQgDiAOlJIgECAQlJIiFCAIXQ0AIAMgCJMhGAJ/IAhDAAAAAF5FBEAgBEMAAAAAIAiTIBiVIgkgESAEk5SSIRkgByAJIBIgB5OUkiEaIAYgCSATIAaTlJIhG0EBIQIgCyEFIA0hCiAPIQlBAAwBCyAQIAggFJUiBZQgD5IhCSAOIAWUIA2SIQogDCAFlCALkiEFIAYhGyAHIRogBCEZQQELIQECfyADIBRdRQRAIAQgFCAIkyAYlSIDIBEgBJOUkiERIAcgAyASIAeTlJIhEiAGIAMgEyAGk5SSIRNBASEdQQIMAQsgECADIBSVIgSUIA+SIRcgDiAElCANkiEWIAwgBJQgC5IhFUEBCyEcIAAgHTYCQCAAIBw2AjwgACAROAI4IAAgEjgCNCAAIBM4AjAgACAXOAIsIAAgFjgCKCAAIBU4AiQgACACNgIgIAAgATYCHCAAIBk4AhggACAaOAIUIAAgGzgCECAAIAk4AgwgACAKOAIIIAAgBTgCBEEBIRwLIAAgHDYCAAuWBQIGfQd/IwBBIGsiCSQAAkAgASgCCCIKBEAgASgCBCIIIApBDGwiDGohDSAIKgIIRAAAAAAAAPA/IAq4o7YiApQhBCAIKgIEIAKUIQUgCCoCACAClCEGAkAgCkEBRg0AIAhBDGohCgJAIAxBGGsiDkEMbkEBcQRAIAohCyAIIQoMAQsgCEEYaiELIAQgCCoCFCAClJIhBCAFIAgqAhAgApSSIQUgBiAIKgIMIAKUkiEGCyAOQQxJDQADQCAEIAoqAhQgApSSIAtBFGoqAgAgApSSIQQgBSAKKgIQIAKUkiALQRBqKgIAIAKUkiEFIAYgCyoCACAClJIgC0EMaiIKKgIAIAKUkiEGIA0gC0EYaiILRw0ACwsCQCAMQQxrIgpBDG5BAXEEQEMAAAAAIQIMAQsgBiAIKgIAkyICIAKUIAUgCCoCBJMiAiAClJIgBCAIKgIIkyICIAKUkiICQwAAAAAgAkMAAAAAXhshAiAIQQxqIQgLIApBDE8EQANAIAYgCEEMaioCAJMiAyADlCAFIAhBEGoqAgCTIgMgA5SSIAQgCEEUaioCAJMiAyADlJIiAyAGIAgqAgCTIgcgB5QgBSAIQQRqKgIAkyIHIAeUkiAEIAhBCGoqAgCTIgcgB5SSIgcgAiACIAddGyICIAIgA10bIQIgDSAIQRhqIghHDQALCyABKgJgIgNDAAAAAGBFDQEgACAEOAIIIAAgBTgCBCAAIAY4AgAgACACkSADkjgCDCAJQSBqJAAPCyAJQQA2AhggCUEBNgIMIAlBgPzDADYCCCAJQgQ3AhAgCUEIakGI/MMAELgNAAsgCUEANgIYIAlBATYCDCAJQYDawgA2AgggCUIENwIQIAlBCGpBuP3DABC4DQALlwcCAX8BfCMAQTBrIgIkAAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAABBAWsOEQECAwQFBgcICQoLDA0ODxARAAsgAiAALQABOgAIIAJBAjYCFCACQdj/wwA2AhAgAkIBNwIcIAIgAkEIaq1CgICAgLCIAYQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEL4DDBELIAIgACkDCDcDCCACQQI2AhQgAkH0/8MANgIQIAJCATcCHCACIAJBCGqtQoCAgICwDoQ3AyggAiACQShqNgIYIAEoAgAgASgCBCACQRBqEL4DDBALIAIgACkDCDcDCCACQQI2AhQgAkH0/8MANgIQIAJCATcCHCACIAJBCGqtQoCAgIDAiAGENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahC+AwwPCyAAKwMIIQMgAkECNgIUIAJBlIDEADYCECACQgE3AhwgAiACQShqrUKAgICA0IgBhDcDCCACIAM5AyggAiACQQhqNgIYIAEoAgAgASgCBCACQRBqEL4DDA4LIAIgACgCBDYCCCACQQI2AhQgAkGwgMQANgIQIAJCATcCHCACIAJBCGqtQoCAgIDgiAGENwMoIAIgAkEoajYCGCABKAIAIAEoAgQgAkEQahC+AwwNCyACIAApAgQ3AgggAkEBNgIUIAJByIDEADYCECACQgE3AhwgAiACQQhqrUKAgICA8IgBhDcDKCACIAJBKGo2AhggASgCACABKAIEIAJBEGoQvgMMDAsgASgCAEHE/8MAQQogASgCBCgCDBEFAAwLCyABKAIAQdCAxABBCiABKAIEKAIMEQUADAoLIAEoAgBB2oDEAEEMIAEoAgQoAgwRBQAMCQsgASgCAEHmgMQAQQ4gASgCBCgCDBEFAAwICyABKAIAQfSAxABBCCABKAIEKAIMEQUADAcLIAEoAgBB/IDEAEEDIAEoAgQoAgwRBQAMBgsgASgCAEH/gMQAQQQgASgCBCgCDBEFAAwFCyABKAIAQYOBxABBDCABKAIEKAIMEQUADAQLIAEoAgBBj4HEAEEPIAEoAgQoAgwRBQAMAwsgASgCAEGegcQAQQ0gASgCBCgCDBEFAAwCCyABKAIAQauBxABBDiABKAIEKAIMEQUADAELIAEoAgAgACgCBCAAKAIIIAEoAgQoAgwRBQALIQAgAkEwaiQAIAALvwUCDn8BfiMAQbABayIDJAAgASgCACgCACEEIAEoAgQiBigCAEEBRgRAIAYoAgQiBUH//wNxIQkgBUEQdiEKQQEhBQsgBEEgSSEHQQAhBiABKAIIIggoAgBBAUYEQCAIKQMIIhFCIIinIQsgEachDEEBIQYLIARBACAHGyEIIAEoAgwiBCgCAEEBRwR/QQAFIAQpAwgiEUIgiKchDSARpyEOQQELIQQgASgCGCgCACEPIAEoAhwoAgAhECABKAIUKAIAIQcgAyABKAIQKAIANgI8IANByM/BADYCMCADIAI2AiwgAyAINgIoIAMgDTYCJCADIA42AiAgAyAENgIcIAMgCzYCGCADIAw2AhQgAyAGNgIQIAMgCTYCDCADIAo2AgggAyAFNgIEIAcoAjwhBCAHKAJAIQIgAyAQNgJEIAMgDzYCQCADIAI2AjggAyAEIAIoAghBAWtBeHFqQQhqNgI0IANByABqIgJBGGogASgCICgCACIEQQhqKAIANgIAIAMgBCkCADcDWCACQQhqIAEoAiQoAgAiBEEIaikCADcDACADIAQpAgA3A0ggASgCKCgCACEEIAEoAiwoAgAiBSgCACEGIAUoAgQiBSgCCCEHIANBAToArQEgAyABKAI0LQAAOgCsASADIAEoAjgqAgA4AqgBIAMgASgCMCoCADgCpAEgA0HkAGoiASADQQRqIAIgBCAGIAdBAWtBeHFqQQhqIAUgA0GkAWoQcgJAIAMtAKABQQRHBEAgACADKQJsNwIIIAAgAykCZDcCACAAQRBqIAFBEGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBIGogAUEgaikCADcCACAAQShqIAFBKGopAgA3AgAgAEEwaiABQTBqKQIANwIAIABBOGogAUE4aikCADcCAAwBCyAAQQQ6ADwLIANBsAFqJAALvwUDB38EfgN9IwBBEGsiAyQAIAACfwJAAkACQCABKAIEIgRBBEkNACABKAIAIQIgASAEQQRrIgc2AgQgASACQQRqNgIAIAdBBEkNACACKAAAIQcgASAEQQhrIgU2AgQgASACQQhqNgIAIAVBBEkNACACNQAEIQkgASAEQQxrIgU2AgQgASACQQxqNgIAIAVBBEkNASACNQAIIQogASAEQRBrIgU2AgQgASACQRBqNgIAIAVBBEkNAiACKgAMIQ0gASAEQRRrIgU2AgQgASACQRRqNgIAIAVBBEkNAiACKAAQIQUgASAEQRhrIgY2AgQgASACQRhqNgIAIAZBBEkNAiACNQAUIQsgASAEQRxrIgY2AgQgASACQRxqNgIAAkAgBkEESQ0AIAI1ABghDCABIARBIGsiBjYCBCABIAJBIGo2AgAgBkEESQ0AIAIoABwhBiABIARBJGsiCDYCBCABIAJBJGo2AgAgCEEESQ0AIAIqACAhDiABIARBKGsiCDYCBCABIAJBKGo2AgAgCEEESQ0AIAIqACQhDyAAIAxCIIYgC4Q3AiggACAFNgIkIAAgDTgCICAAIApCIIYgCYQ3AhggACAHNgIUIAAgDzgCDCAAIA44AgggACAGNgIEIAEgBEEsazYCBCABIAJBLGo2AgAgACACKgAoOAIQQQAMBAsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBDAMLIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQog02AgRBAQwCCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggACADQQhqEKINNgIEQQEMAQsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBCzYCACADQRBqJAALwQUBDH8jAEEgayICJAACQCABKAIEIgNFBEAgAEGAgICAeDYCAAwBCyABIANBAWs2AgQCfyABKAIAIgUoAgQiBEEHTQRAIAJCgcoANwMIQQEhBiACQQhqEKINDAELIAUgBEEIayIENgIEIAUgBSgCACIBQQhqNgIAIAIgASkAABCnCCACKAIAIQYgAigCBAshAQJAAkAgBkEBcQRAIAEhAwwBC0EEIQMgAUUEQEEAIQZBACEBDAILAn8CQEGAgAQgASABQYCABE8bIgNBBHQiBkEEELMOIgkEQCACIAk2AgwgAiADNgIIQQAhAyACQQA2AhAgBSgCACEKQQAhBgNAIARBBEkNAiAFIARBBGsiBDYCBCAFIAMgCmoiCEEEaiIHNgIAIARBBEkEQCACQoHKADcDGCACQRhqEKINDAQLIAgoAAAhCyAFIARBBGsiBDYCBCAFIAdBBGoiCDYCACAEQQNNBEAgAkKBygA3AxggAkEYahCiDQwECyAHKAAAIQwgBSAEQQRrIgQ2AgQgBSAIQQRqIgc2AgAgBEEDTQRAIAJCgcoANwMYIAJBGGoQog0MBAsgCCgAACEIIAUgBEEEayIENgIEIAUgB0EEajYCACAHKAAAIQ0gAigCCCAGRgRAIAJBCGpByKvBABC6CCACKAIMIQkLIAMgCWoiByALNgIAIAdBDGogDTYCACAHQQhqIAg2AgAgB0EEaiAMNgIAIAIgBkEBaiIGNgIQIANBEGohAyABIAZHDQALIAIoAgwhAyACKAIIIgFBgICAgHhHDQQMAwtBBCAGQbirwQAQ0w0ACyACQoHKADcDGCACQRhqEKINCyEDIAIoAggiAUUNACACKAIMIAFBBHRBBBCIDwsgAEGBgICAeDYCACAAIAM2AgQMAQsgACAGNgIIIAAgAzYCBCAAIAE2AgALIAJBIGokAAvNBQMOfwF+AXwjAEHQAmsiAiQAIAAoAgAoAgAhBCAAKAIEIgMoAgBBAUYEQCADKAIEIgNB//8DcSEIIANBEHYhCUEBIQYLIARBIEkhBSAAKAIIIgMoAgBBAUYEQCADKQMIIhBCIIinIQogEKchC0EBIQcLIARBACAFGyEMQQAhBCAAKAIMIgUoAgBBAUYEQCAFKQMIIhBCIIinIQ1BASEEIBCnIQMLIAAoAhgoAgAhDiAAKAIcKAIAIQ8gACgCFCgCACEFIAIgACgCECgCADYCRCACQcDQwQA2AjggAiABNgI0IAIgDDYCMCACIA02AiwgAiADNgIoIAIgBDYCJCACIAo2AiAgAiALNgIcIAIgBzYCGCACIAg2AhQgAiAJNgIQIAIgBjYCDCAFKAI8IQMgBSgCQCEBIAIgDzYCTCACIA42AkggAiABNgJAIAIgAyABKAIIQQFrQXhxakEIajYCPCAAKAIgIQMgAkHoAGogACgCJCgCACIBQQhqKAIANgIAIAIgASkCADcDYCACQdAAaiIBQQhqIAAoAigoAgAiBEEIaikCADcDACACIAQpAgA3A1AgACgCLCgCACIEKAIEIQAgAkHwAGogAkEMaiABIAQoAgAgACgCCEEBa0F4cWpBCGogABDJBCACQZgCaiEEA0ACQCACQcACaiIAIAJB8ABqIAQQ5wEgAigCyAJFDQAgAisDwAIhESADKAIAIQEgAkGBATYCzAIgAiAREAA2AsACIAIgASACQcwCaiAAEL8MIAIoAgQhAAJAAkAgAigCAEEBcUUEQCAAEAFBAEchASAAQYMBSw0BDAILQQEhASAAQYQBSQ0BCyAAEAILIAIoAsACIgBBhAFPBEAgABACCyACKALMAiIAQYQBTwRAIAAQAgsgAQ0BCwsgAigC9AEiAEEhTwRAIAIoAnggAEECdEEEEIgPCyACQdACaiQAC6MFAQp/AkACQCAAKAIIIgQgAU8EQCAAIAE2AgggASAERwRAIAQgAWshBCAAKAIEIAFBBHRqIQMDQCADKAIAIgAEQCADQQRqKAIAIABBAnRBBBCIDwsgA0EQaiEDIARBAWsiBA0ACwsgAigCACIARQ0BIAIoAgQgAEECdEEEEIgPDwsgAigCDCEGIAIoAgghCCACKAIEIQogAigCACELIAQhBSABIARrIgkgACgCACAEa0sEQCAAIAQgCUEEQRAQ9gYgACgCCCEFCyAAKAIEIAVBBHRqIQMCQCAJQQJJDQAgCEECdCEHIAhB/////wNLDQIgB0H8////B0sNAiAHBEAgBEF/cyABaiECIAUgCWpBAWshBUEEIQwDQCAHQQQQsw4iAUUNBCAHBEAgASAKIAf8CgAACyADQQxqIAY2AgAgA0EIaiAINgIAIANBBGogATYCACADIAg2AgAgA0EQaiEDIAJBAWsiAg0ACwwBCyABIARBf3NqIgFBA3EhAiAJQQJrQQNPBEAgAUF8cSEBA0AgA0KAgICAwAA3AgAgA0E8aiAGNgIAIANBOGpBADYCACADQTBqQoCAgIDAADcCACADQSxqIAY2AgAgA0EoakEANgIAIANBIGpCgICAgMAANwIAIANBHGogBjYCACADQRhqQQA2AgAgA0EQakKAgICAwAA3AgAgA0EMaiAGNgIAIANBCGpBADYCACADQUBrIQMgAUEEayIBDQALCyACBEADQCADQoCAgIDAADcCACADQQxqIAY2AgAgA0EIakEANgIAIANBEGohAyACQQFrIgINAAsLIAUgCWpBAWshBQsgAyAGNgIMIAMgCDYC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aiAZIAdBCGoiCxCyAyAHLQB4IgxBBUYNASALQTBqIhAgCkEwaigCADYCACALQShqIhEgCkEoaikCADcDACALQSBqIhIgCkEgaikCADcDACALQRhqIhMgCkEYaikCADcDACALQRBqIhQgCkEQaikCADcDACALQQhqIApBCGopAgA3AwAgB0EGaiIKIAdB+wBqLQAAOgAAIAcgBykCRDcDCCAHIAcvAHk7AQQgDEEERg0BIAggBykDCDcCCCAIIAcvAQQ7AD0gCEE4aiAQKAIANgIAIAhBMGogESkDADcCACAIQShqIBIpAwA3AgAgCEEgaiATKQMANwIAIAhBGGogFCkDADcCACAIQRBqIAdBEGopAwA3AgAgCEE/aiAKLQAAOgAAIAggDDoAPCAIIBY2AgQgCCAVNgIADAILQczOwQBBzABBmM/BABDXCwALIAggBykCRDcCACAIQQQ6ADwgCCAHLwBBOwA9IAhBOGogB0HEAGoiCkE4aigCADYCACAIQTBqIApBMGopAgA3AgAgCEEoaiAKQShqKQIANwIAIAhBIGogCkEgaikCADcCACAIQRhqIApBGGopAgA3AgAgCEEQaiAKQRBqKQIANwIAIAhBCGogCkEIaikCADcCACAIQT9qIAdBwwBqLQAAOgAACyAHQYABaiQADAELQczOwQBBzABBoNPBABDXCwALIAQgBCgCAEEBazYCACAPIA8oAgBBAWsiBDYCACAERQRAIAlBLGoQqA0LIAIgAigCAEEBazYCACAOIA4oAgBBAWsiAjYCACACRQRAIAlBIGoQqA0LIAAgACgCAEEBazYCACANIA0oAgBBAWsiADYCACAARQRAIAlBFGoQ7wwLQQAhACAJLQBsQQRHBEBBzABBBBCzDiIARQ0EIABBADYCCCAAQoGAgIAQNwIAIAAgCSkCMDcCDCAAQRRqIAlBOGopAgA3AgAgAEEcaiAJQUBrKQIANwIAIABBJGogCUHIAGopAgA3AgAgAEEsaiAJQdAAaikCADcCACAAQTRqIAlB2ABqKQIANwIAIABBPGogCUHgAGopAgA3AgAgAEHEAGogCUHoAGopAgA3AgAgAEEIaiEACyAJQfAAaiQAIAAPCxCbDwsACxCcDwALQQRBzABBkMTEACgCACIAQcwIIAAbEQAAAAupBAINfQF/IABBDGpBAiABKgIAIgMgACoCGJQgASoCBCIFIAAqAhyUkiABKgIIIgQgACoCIJSSIgYgAyAAKgIMlCAFIAAqAhCUkiAEIAAqAhSUkiIHXiIPIAMgACoCJJQgBSAAKgIolJIgBCAAKgIslJIgBiAHIA8bXhtBDGxqIg9BBGoqAgAhCCADIAAqAgAiB5QgBSAAKgIEIgmUkiAEIAAqAggiCpSSIQYCQAJAIA8qAgAiDCAHXA0AIAggCVwNACAPKgIIIApbDQELQQEhAAJAIAYgByAMlCAJIAiUkiAKIA9BCGoqAgAiDZSSIgIgAiACkpRDAACAv5JgBH9BAQUgBCAKIAaUkyIEIASUIAMgByAGlJMiDiAOlCAFIAkgBpSTIgUgBZSSkpEiA0O9N4Y1Xw0BIA0gCiAClCINkyILIAuUIAwgByAClCIMkyILIAuUIAggCSAClCILkyICIAKUkpKRIQIgDSAEIAOVIAKUkiIEIASUIAwgDiADlSAClJIiCCAIlCALIAUgA5UgApSSIgMgA5SSkpEiAkO9N4Y1Xw0BIAogBCAClSIFlCAHIAggApUiBJQgCSADIAKVIgOUkpIiAiACkiECIAEgBSAClCAKkzgCCCABIAMgApQgCZM4AgQgASAEIAKUIAeTOAIAIAZDAAAAAGALDwsgBkMAAAAAYA8LIAEgACkCADcCACABQQhqIABBCGooAgA2AgAgBkMAAAAAYAuVBAEVfSABKgIkIQkCQAJAIAEqAiAiC0MAAAAAXA0AIAlDAAAAAFwNACABKgIoQwAAAABbDQELIAAgASoCDCIDIAIqAggiBpQgASoCCCIEIAIqAgwiBZQgASoCBCIMIAIqAgAiDZSSIAEqAgAiDiACKgIEIg+Uk5IiByAHlCISIAMgBZQgDiANlJMgDCAPlJMgBCAGlJMiCiAKlCITIA4gBZQgAyANlJIgBCAPlJIgDCAGlJMiCCAIlCIUkyIQIA4gBpQgAyAPlCAMIAWUIAQgDZSTkpIiAyADlCIMk5IiBiAGIAEqAigiDZSUIAggB5QiBCAEkiIOIAMgCpQiBCAEkiIPkyIEIAQgC5SUIAMgB5QiBSAFkiIRIAggCpQiBSAFkiIVkiIFIAkgBZSUkpI4AhQgACAEIAggA5QiCCAIkiIWIAcgCpQiByAHkiIXkiIHIAuUIgOUIAUgCSAMIBCSIBKTIgqUIhCUkiAGIA0gESAVkyIIlCIRlJI4AhAgACAHIAOUIAogEJSSIAggEZSSOAIMIAAgBCAUIBOSIAyTIBKTIgQgC5QiA5QgBSAWIBeTIgUgCZQiCZSSIAYgDSAOIA+SIgaUIguUkjgCCCAAIAcgA5QgCiAJlJIgCCALlJI4AgQgACAEIAOUIAUgCZSSIAYgC5SSOAIADwsgAEIANwIAIABBEGpCADcCACAAQQhqQgA3AgALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEJACIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRDeASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQtgEgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFELECIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC5wEAQl9IwBBMGsiBSQAIAIqAgQiCyADKgIMIg6UIAIqAgAiDCADKgIQIgiUkyIJIAmSIQYgAioCCCIJIAiUIAsgAyoCFCIHlJMiDSANkiEKIAUgByACKgIMIg0gBpQgCyAKlCAMIAwgB5QgCSAOlJMiByAHkiIHlJOSkjgCFCAFIAggDSAHlCAMIAaUIAkgCpSTkpI4AhAgBSAOIA0gCpQgCSAHlCALIAaUk5KSOAIMIAsgAyoCACACKgIQkyIOlCAMIAMqAgQgAioCFJMiCJSTIgYgBpIhBiAIIAmUIAMqAgggAioCGJMiByALlJMiCiAKkiEKIAUgByANIAaUIAsgCpQgDCAHIAyUIA4gCZSTIgcgB5IiB5STkpI4AgggBSAIIA0gB5QgDCAGlCAJIAqUk5KSOAIEIAUgDiANIAqUIAkgB5QgCyAGlJOSkjgCACAFQRhqIAEgBSAEQQAQmQEgBSgCGCIBQQRHBEAgACAFKgIgOAIIIAAgBSgCHDYCBCAMIAUqAigiCpQgCyAFKgIkIg6UkyIEIASSIQQgCSAOlCAMIAUqAiwiCJSTIgYgBpIhBiAAIAggDSAElCAMIAaUIAsgCyAIlCAJIAqUkyIIIAiSIgiUk5KSOAIUIAAgCiANIAaUIAkgCJQgDCAElJOSkjgCECAAIA4gDSAIlCALIASUIAkgBpSTkpI4AgwLIAAgATYCACAFQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFELICIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRDwASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQvgEgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEI4BIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRCCASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQrQIgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEJ4BIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRCeAiAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQkQIgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEPkBIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC5IEAQ99IAMqAgAgAioCEJMiDCACKgIEIgaUIAMqAgQgAioCFJMiDSACKgIAIgiUkyIHIAeSIQkgDSACKgIIIgeUIAMqAgggAioCGJMiCiAGlJMiCyALkiEOIAogAioCDCILIAmUIAYgDpQgCCAKIAiUIAwgB5STIgogCpIiCpSTkpIiECAQlCAMIAsgDpQgByAKlCAGIAmUk5KSIhEgEZQgDSALIAqUIAggCZQgByAOlJOSkiIKIAqUkpIgASoCACIJIAmUkyEOQwAAAAAhCSAGIAMqAgwiEpQgCCADKgIQIhOUkyIMIAySIQwgByATlCAGIAMqAhQiD5STIg0gDZIhDQJAIA8gCyAMlCAGIA2UIAggCCAPlCAHIBKUkyIPIA+SIg+Uk5KSIhQgFJQgEiALIA2UIAcgD5QgBiAMlJOSkiIGIAaUIBMgCyAPlCAIIAyUIAcgDZSTkpIiByAHlJKSIghDAAAAAFwEQCAQIBSUIBEgBpQgCiAHlJKSIQZBACECIA5DAAAAAF4gBkMAAAAAXnENASAGIAaUIA4gCJSTIgdDAAAAAF0NAUMAAAAAIAaMIAeRIgeTIAiVIgsgC0MAAAAAXyIBGyEJQQEhAiAFDQEgAUUNASAHIAaTIAiVIQkMAQtBASECIA5DAAAAAF5FDQBBACECCyAAIAk4AgQgACACQQAgBCAJYBtBACACGzYCAAuiBQICfwd9IwBBIGsiAyQAAn0gASoCACIGIAaUIAEqAggiBSAFlJKRIgdDAAAANF8EQEMAAIA/IQZDAAAAAAwBCyAGIAeVIQYgBSAHlQshBQJAIAEqAgQiCYtDAAAAP11FBEAgAiAAKgIEIgcgBoyUIgo4AiwgAiAAKgIAIAmYIgg4AiggAiAFIAeUIgs4AiQgAiAHIAWMlCIFOAIgIAIgCDgCHCACIAo4AhggAiAGIAeUIgY4AhQgAiAIOAIQIAIgBTgCDCACIAs4AgggAiAIOAIEIAIgBjgCACACQUBrIQAgCUMAAAAAXUUEQCADQpCAgICgAjcCGCADQoyAgIDgATcCECADIANBEGoiARDlBiAAQQhqIANBCGoiBCkCADcCACAAIAMpAgA3AgAgAkKTgICAzAA3AlAgA0KPgICAkAI3AhggA0KLgICA0AE3AhAgAyABEOQGIAJBOGogBCkCADcCAAwCCyADQoaAgICAATcCGCADQoKAgIDAADcCECADIANBEGoiARDlBiAAQQhqIANBCGoiBCkCADcCACAAIAMpAgA3AgAgAkKJgICAzAA3AlAgA0KFgICA8AA3AhggA0KBgICAMDcCECADIAEQ5AYgAkE4aiAEKQIANwIADAELIAIgACoCACIHOAIQIAIgBSAAKgIEIgWUIgg4AhQgAiAGIAWUIgU4AgwgAiAIOAIIIAIgB4w4AgQgAiAFOAIAIANBEGoiAEEIakIANwMAIANCADcDECADIAAQ5QYgAkHIAGogA0EIaiIBKQIANwIAIAIgAykCADcCQCACQoCAgIAsNwJQIANCi4CAgLABNwIYIANCgYCAgLABNwIQIAMgABDkBiACQThqIAEpAgA3AgALIAIgAykCADcCMCADQSBqJAAL2wQCA34PfyMAQTBrIggkACABKQMQIQMgAS0AGCEQAn8gASgCBCIJRQRAQbDVwgAhBkEAIQlBAAwBCwJ/AkAgCUEBaq1CGH4iAkIgiKcNACAJQQlqIgcgAqciBmohBSAFIAZJDQAgBUH4////B0sNACAFQQgQsw4iCkUEQEEIIAVBkMTEACgCACIAQcwIIAAbEQAAAAsgBiAKagwBCxCmDCAIKAIIIglBCWohB0EACyEGIAEoAgAhBSAHBEAgBiAFIAf8CgAACyABKAIMIg0EQCAGQRhrIREgBUEIaiEHIAUpAwBCf4VCgIGChIiQoMCAf4MhAiAIQSRqIQ4gDSEPIAUhCgNAIAJQBEADQCAKQcABayEKIAcpAwAhAiAHQQhqIQcgAkKAgYKEiJCgwIB/gyICQoCBgoSIkKDAgH9RDQALIAJCgIGChIiQoMCAf4UhAgsgCEEYaiISQQhqIhMgCiACeqdBA3ZBaGxqIgtBGGsiDEEIaigCADYCACAIIAwpAgAiBDcDGCAOIAtBDGsiDCkCADcCACAOQQhqIAxBCGooAgA2AgAgESAFIAtrQWhtQRhsaiILIAQ3AgAgC0EIaiATKQMANwIAIAtBEGogEkEQaikDADcCACACQgF9IAKDIQIgD0EBayIPDQALCyABKAIICyEFQSBBCBCzDiIBBEAgASAQOgAYIAEgAzcDECABIA02AgwgASAFNgIIIAEgCTYCBCABIAY2AgAgAEHg+sIANgIEIAAgATYCACAIQTBqJAAPC0EIQSBBkMTEACgCACIAQcwIIAAbEQAAAAv6BAIFfwF+IwBBQGoiAiQAAkACQCABKAIEIgRFBEAgAEGAgICAeDYCAAwBCyABIARBAWs2AgQgASgCACEBIAJBAzYCNCACIAE2AjAgAkEQaiACQTBqEJYEAkACQAJAAkACQCACKAIQIgRBgICAgHhrDgIBAAILIAIoAhQhAQwCC0EAIAJBLGpBtKzBABC+CiEBDAELIAIoAhQhBQJAAn8CQCACKAI0IgEEQCABQQFGDQEgAigCMCIBKAIEIgZBB00EQCACQoHKADcDECACQRBqEKINDAMLIAIoAhghAyABIAZBCGs2AgQgASABKAIAIgFBCGo2AgAgASkAACIHQoCAgIAQVA0DIAJBAToAECACIAc3AxggAkEQaiACQSxqQYCqwQAQ7woMAgtBASACQSxqQbSswQAQvgoMAQtBAiACQSxqQbSswQAQvgoLIQEgBEUNASAFIARBAnRBBBCIDwwBCyAHp0EGbCIBIANGDQEgAiABNgIoIAIgAzYCLCACQQI2AhQgAkGUy8EANgIQIAJCAjcCHCACIAJBLGqtQoCAgIAwhDcDOCACIAJBKGqtQoCAgIAwhDcDMCACIAJBMGo2AhggAkEEaiIBIAJBEGoiAxCMBSADIAEQ/QpBDEEEELMOIgFFDQMgASACKQIQNwIAIAFBCGogA0EIaigCADYCACACKAIEIgMEQCACKAIIIANBARCIDwsgBEUNACAFIARBAnRBBBCIDwsgAEGBgICAeDYCACAAIAE2AgQMAQsgACAFNgIEIAAgBDYCACAAIAOtIAdCIIaENwIICyACQUBrJAAPC0EEQQxBkMTEACgCACIAQcwIIAAbEQAAAAuPBAIPfQJ/IwBBIGsiFyQAAkACQCAEBEAgAyAEQQN0aiEYIAUqAhghESAFKgIUIRIgBSoCECETIAUqAgwhDiAFKgIAIQsgBSoCCCEMIAUqAgQhDSAGKgIIIRQgBioCBCEVIAYqAgAhFgNAIAMoAgAiBCACTw0DIBcgESAUIAEgBEEMbGoiBCoCCJQiCCAOIBUgBCoCBJQiDyALlCAWIAQqAgCUIhAgDZSTIgkgCZIiCZQgCyAQIAyUIAggC5STIgogCpIiCpQgDSANIAiUIA8gDJSTIgggCJIiCJSTkpKSOAIQIBcgEiAPIA4gCpQgDCAIlCALIAmUk5KSkjgCDCAXIBMgECAOIAiUIA0gCZQgDCAKlJOSkpI4AgggA0EEaigCACIEIAJPDQIgFyARIBQgASAEQQxsaiIEKgIIlCIIIA4gCyAVIAQqAgSUIg+UIA0gFiAEKgIAlCIQlJMiCSAJkiIJlCALIAwgEJQgCyAIlJMiCiAKkiIKlCANIA0gCJQgDCAPlJMiCCAIkiIIlJOSkpI4AhwgFyASIA8gDiAKlCAMIAiUIAsgCZSTkpKSOAIYIBcgEyAQIA4gCJQgDSAJlCAMIAqUk5KSkjgCFCAAIBdBCGogF0EUaiAHEM0DIBggA0EIaiIDRw0ACwsgF0EgaiQADwsgBCACQbDCwQAQiAsACyAEIAJBoMLBABCICwALkgQBE30CQAJAIAMEQCACKgIEIgcgASoCACIMlCACKgIAIgkgASoCBCINlJMiBCAEkiEGIAkgASoCCCIOlCACKgIIIgQgDJSTIgUgBZIhBSABKgIYIhQgBCABKgIMIhAgBpQgDCAFlCANIAQgDZQgByAOlJMiBCAEkiIKlJOSkpIhBCABKgIUIhUgByAQIAWUIA4gCpQgDCAGlJOSkpIhByABKgIQIhYgCSAQIAqUIA0gBpQgDiAFlJOSkpIhBiADQQFHDQEgBiEFIAchCSAEIQoMAgtBmNrCAEHSAEHs2sIAENcLAAsgAiADQQxsaiEDIAJBDGohASAEIQogByEJIAYhBQNAIAwgAUEEaioCACIPlCANIAEqAgAiEpSTIgggCJIhCCAOIBKUIAwgAUEIaioCACILlJMiESARkiERIAQgFCALIBAgCJQgDCARlCANIA0gC5QgDiAPlJMiCyALkiITlJOSkpIiCyAEIAtgGyEEIAkgFSAPIBAgEZQgDiATlCAMIAiUk5KSkiIPIAkgD2AbIQkgBSAWIBIgECATlCANIAiUIA4gEZSTkpKSIgggBSAIYBshBSAKIAsgCiALXxshCiAHIA8gByAPXxshByAGIAggBiAIXxshBiADIAFBDGoiAUcNAAsLIAAgBDgCFCAAIAk4AhAgACAFOAIMIAAgCjgCCCAAIAc4AgQgACAGOAIAC/cEAgZ/AX4jAEFAaiICJAACQCABKAIEIgRFBEAgAEGAgICAeDYCAAwBCyABIARBAWs2AgQgASgCACEBIAJBAzYCNCACIAE2AjAgAkEQaiACQTBqEJYEAkACfwJAAkACQAJAAkAgAigCECIEQYCAgIB4aw4CAgABCyACKAIUIQEMBQsgAigCFCEFIAIoAjQiBkUNASACKAIwIgEoAgQiB0EHTQRAIAJCgcoANwMQIAJBEGoQog0MBAsgAigCGCEDIAEgB0EIazYCBCABIAEoAgAiAUEIajYCACABKQAAIghCgICAgBBUDQIgAkEBOgAQIAIgCDcDGCACQRBqIAJBLGpBgKrBABDvCgwDC0EAIAJBLGpBlKzBABC+CiEBDAMLQQEgAkEsakGUrMEAEL4KDAELIAZBAUcEQAJAIAinIgEgA0cEQCACIAE2AiggAiADNgIsIAJBAjYCFCACQZTLwQA2AhAgAkICNwIcIAIgAkEsaq1CgICAgDCENwM4IAIgAkEoaq1CgICAgDCENwMwIAIgAkEwajYCGCACQQRqIgEgAkEQaiIDEIwFIAMgARD9CkEMQQQQsw4iAUUNASABIAIpAhA3AgAgAUEIaiADQQhqKAIANgIAIAIoAgQiAwRAIAIoAgggA0EBEIgPCyAERQ0EIAUgBEECdEEEEIgPDAQLIAAgBTYCBCAAIAQ2AgAgACADrSIIIAhCIIaENwIIDAQLQQRBDEGQxMQAKAIAIgBBzAggABsRAAAAC0ECIAJBLGpBlKzBABC+CgshASAERQ0AIAUgBEECdEEEEIgPCyAAQYGAgIB4NgIAIAAgATYCBAsgAkFAayQAC4cEARN9IAEqAgQiDSACKgIAIgWUIAEqAgAiCiACKgIEIgaUkyIEIASSIQkgCiACKgIIIgSUIAEqAggiByAFlJMiAyADkiELIAUgASoCECIRlCAGIAEqAgwiEpSTIgMgA5IhDCAEIBKUIAUgASoCFCIIlJMiAyADkiEOIAAgAioCGCIPIAcgAioCDCIDIAmUIAUgC5QgBiAHIAaUIA0gBJSTIgcgB5IiEJSTkpKSIgcgDyAIIAMgDJQgBSAOlCAGIAYgCJQgBCARlJMiCCAIkiIPlJOSkpIiCCAHIAIqAhAiFCAKIAMgEJQgBiAJlCAEIAuUk5KSkiIKQwAAAACUIhMgAioCFCIVIA0gAyALlCAEIBCUIAUgCZSTkpKSIglDAAAAAJQiC5IiEJIgCCAUIBIgAyAPlCAGIAyUIAQgDpSTkpKSIgZDAAAAAJQiDSAVIBEgAyAOlCAEIA+UIAUgDJSTkpKSIgVDAAAAAJQiDJIiDpJeGzgCFCAAIAkgBSAHQwAAAACUIgQgCSATkpIgCEMAAAAAlCIDIAUgDZKSXhs4AhAgACAKIAYgBCAKIAuSkiADIAYgDJKSXhs4AgwgACAHIAggECAHkyAOIAiTXhs4AgggACAJIAUgBCATIAmTkiADIA0gBZOSXhs4AgQgACAKIAYgBCALIAqTkiADIAwgBpOSXhs4AgAL/wMCDX0BfyACKgIEIgogAyoCACIGlCACKgIAIgsgAyoCBCIIlJMiByAHkiEHIAIqAggiDCAIlCAKIAMqAggiBZSTIgQgBJIhBCABKgIgIAUgAioCDCINIAeUIAogBJQgCyALIAWUIAwgBpSTIgUgBZIiBZSTkpIiCSAJIAmUIAYgDSAElCAMIAWUIAogB5STkpIiCSAJlCAIIA0gBZQgCyAHlCAMIASUk5KSIgQgBJSSkpEiBZUiBpQgASoCGCIHIAkgBZUiCJQgASoCHCAEIAWVIgWUkpIhCSABQRhqIQMCQCABKgIUIAaUIAEqAgwiDiAIlCABKgIQIAWUkpIiDyABKgIIIAaUIAEqAgAiBCAIlCABKgIEIAWUkpIiEF1FBEAgAUEMaiADIAkgD10iERshAyAOIAcgERshBwwBCyAJIBBdRQ0AIAQhByABIQMLIAAgAioCGCADKgIIIAYgASoCJCIElJIiBiANIAsgAyoCBCAFIASUkiIFlCAKIAcgCCAElJIiB5STIgQgBJIiBJQgCyAMIAeUIAsgBpSTIgggCJIiCJQgCiAKIAaUIAwgBZSTIgYgBpIiBpSTkpKSOAIIIAAgAioCFCAFIA0gCJQgDCAGlCALIASUk5KSkjgCBCAAIAIqAhAgByANIAaUIAogBJQgDCAIlJOSkpI4AgAL2wQCCX8BfiMAQdAAayIGJAACQAJAAkAgAEUNACAAQQhrIgkoAgBBAWohByAJIAc2AgAgB0UNASAAKAIADQIgAEF/NgIAIAYgCTYCECAGIAA2AgwgBiAAQQRqIg02AgggAkUNACACQRBrIgooAgBBAWohByAKIAc2AgAgB0UNASACKAIADQIgAkF/NgIAIAYgCjYCHCAGIAI2AhggBiACQRBqIgg2AhQgBEUNACAEQQhrIgsoAgBBAWohByALIAc2AgAgB0UNASAEKAIAIgdBf0YNAiAEIAdBAWo2AgAgBiALNgIoIAYgBDYCJCAGIARBBGoiDjYCICAFRQ0AIAVBCGsiDCgCAEEBaiEHIAwgBzYCACAHRQ0BIAUoAgAiB0F/Rg0CIAUgB0EBajYCACAGIAw2AjQgBiAFNgIwIAYgBUEEaiIHNgIsIAggA70iD6cgD0IgiKcQ7wkiCARAIAZBOGogDSABIAggDiAHEKIGIAYgCCoCeCAGKgJAkjgCTCAGIAgqAnQgBioCPJI4AkggBiAIKgJwIAYqAjiSOAJEIAggBkHEAGpBARCcCgsgBSAFKAIAQQFrNgIAIAwgDCgCAEEBayIFNgIAIAVFBEAgBkE0ahCoDQsgBCAEKAIAQQFrNgIAIAsgCygCAEEBayIENgIAIARFBEAgBkEoahCoDQsgAkEANgIAIAogCigCAEEBayICNgIAIAJFBEAgBkEcahDrDAsgAEEANgIAIAkgCSgCAEEBayIANgIAIABFBEAgBkEQahCpDQsgBkHQAGokAA8LEJsPCwALEJwPAAvdBAIJfwF+IwBB0ABrIgYkAAJAAkACQCAARQ0AIABBCGsiCSgCAEEBaiEHIAkgBzYCACAHRQ0BIAAoAgANAiAAQX82AgAgBiAJNgIQIAYgADYCDCAGIABBBGoiDTYCCCACRQ0AIAJBEGsiCigCAEEBaiEHIAogBzYCACAHRQ0BIAIoAgANAiACQX82AgAgBiAKNgIcIAYgAjYCGCAGIAJBEGoiCDYCFCAERQ0AIARBCGsiCygCAEEBaiEHIAsgBzYCACAHRQ0BIAQoAgAiB0F/Rg0CIAQgB0EBajYCACAGIAs2AiggBiAENgIkIAYgBEEEaiIONgIgIAVFDQAgBUEIayIMKAIAQQFqIQcgDCAHNgIAIAdFDQEgBSgCACIHQX9GDQIgBSAHQQFqNgIAIAYgDDYCNCAGIAU2AjAgBiAFQQRqIgc2AiwgCCADvSIPpyAPQiCIpxDvCSIIBEAgBkE4aiANIAEgCCAOIAcQrAYgBiAGKgJAIAgqAoQBkjgCTCAGIAYqAjwgCCoCgAGSOAJIIAYgBioCOCAIKgJ8kjgCRCAIIAZBxABqQQEQnQoLIAUgBSgCAEEBazYCACAMIAwoAgBBAWsiBTYCACAFRQRAIAZBNGoQqA0LIAQgBCgCAEEBazYCACALIAsoAgBBAWsiBDYCACAERQRAIAZBKGoQqw0LIAJBADYCACAKIAooAgBBAWsiAjYCACACRQRAIAZBHGoQ6wwLIABBADYCACAJIAkoAgBBAWsiADYCACAARQRAIAZBEGoQqQ0LIAZB0ABqJAAPCxCbDwsACxCcDwALiAQCCX0BfyMAQTBrIhMkACATIAEqAggiDSAFKgIIIgqUIAEqAgQiDiAFKgIEIguUIAEqAgAiDyAFKgIAIhCUIAEqAgwiESAFKgIMIhKUkpKSOAIUIBMgDiAQlCARIAqUIA8gC5STkiANIBKUkzgCECATIBEgC5QgDyAKlJIgDiASlJMgDSAQlJM4AgwgEyANIAuUIBEgEJQgDyASlJMgDiAKlJOSOAIIIA4gBSoCECABKgIQkyIQlCAPIAUqAhQgASoCFJMiEpSTIgogCpIhCiANIBKUIA4gBSoCGCABKgIYkyIMlJMiCyALkiELIBMgDCARIAqUIA4gC5QgDyAPIAyUIA0gEJSTIgwgDJIiDJSTkpI4AiAgEyASIBEgDJQgDyAKlCANIAuUk5KSOAIcIBMgECARIAuUIA0gDJQgDiAKlJOSkjgCGCAOIAYqAgAgAioCAJMiEJQgDyAGKgIEIAIqAgSTIhKUkyIKIAqSIQogDSASlCAOIAYqAgggAioCCJMiDJSTIgsgC5IhCyATIAwgESAKlCAOIAuUIA8gDyAMlCANIBCUkyIMIAySIgyUk5KSOAIsIBMgEiARIAyUIA8gCpQgDSALlJOSkjgCKCATIBAgESALlCANIAyUIA4gCpSTkpI4AiQgAEEBIBNBCGogE0EkaiADIAQgByAIIAkQQyATQTBqJAAL6QQCB38BfiMAQRBrIgMkAAJAIAAvAQwiAkUEQCAAKAIAIAAoAgQgARCGAyEBDAELIANBCGogAUEIaikCADcDACADIAEpAgA3AwACQAJ/IAApAggiCaciBkGAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEFAA0BIAAgBkGAgID/eXFBsICAgAJyIgY2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEHAkAgAygCDCIIRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIFDQFBAQwCCyABQQhqKAIADAELIAVB9v8XaiAFQZz/H2pxIAVBmPg3aiAFQfCxH2pxc0ERdkEBagshBSABQQxqIQEgBCAFaiEEIAhBAWsiCA0ACwsCQCAEIAdqIgEgAkH//wNxSQRAIAIgAWshBEEAIQFBACECAkACQAJAIAZBHXZBA3FBAWsOAwABAAILIAQhAgwBCyAEQf7/A3FBAXYhAgsgBkH///8AcSEIIAAoAgQhBSAAKAIAIQcDQCABQf//A3EgAkH//wNxTw0CIAFBAWohASAHIAggBSgCEBEDAEUNAAsMAgsgACgCACAAKAIEIAMQhgMhASAAIAk3AggMAgsgByAFIAMQhgMNAEEAIQYgBCACa0H//wNxIQIDQAJAIAZB//8DcSIEIAJJIQEgAiAETQ0AIAZBAWohBiAHIAggBSgCEBEDAEUNAQsLIAAgCTcCCAwBC0EBIQELIANBEGokACABC7kEAQh/AkACQCAAKAIIIgQgAU8EQCAAIAE2AgggASAERwRAIAQgAWshBCAAKAIEIAFBDGxqIQMDQCADKAIAIgAEQCADQQRqKAIAIABBAnRBBBCIDwsgA0EMaiEDIARBAWsiBA0ACwsgAigCACIARQ0BIAIoAgQgAEECdEEEEIgPDwsgAigCCCEGIAIoAgQhCCACKAIAIQkgASAEIgJrIgcgACgCACACa0sEQCAAIAIgB0EEQQwQ9gYgACgCCCECCyAAKAIEIAJBDGxqIQMCQCAHQQJJDQAgBkECdCEFIAZB/////wNLDQIgBUH8////B0sNAiAFBEAgBEF/cyABaiEBIAIgB2pBAWshAkEEIQoDQCAFQQQQsw4iBEUNBCAFBEAgBCAIIAX8CgAACyADQQhqIAY2AgAgA0EEaiAENgIAIAMgBjYCACADQQxqIQMgAUEBayIBDQALDAELIAEgBEF/c2oiAUEDcSEEIAdBAmtBA08EQCABQXxxIQEDQCADQoCAgIDAADcCACADQShqQgQ3AgAgA0EgakIANwIAIANBGGpCgICAgMAANwIAIANBEGpCBDcCACADQQhqQgA3AgAgA0EwaiEDIAFBBGsiAQ0ACwsgBARAA0AgA0KAgICAwAA3AgAgA0EIakEANgIAIANBDGohAyAEQQFrIgQNAAsLIAIgB2pBAWshAgsgAyAGNgIIIAMgCDYCBCADIAk2AgAgACACQQFqNgIICw8LIAogBUHg+cEAENMNAAvWBAIKfwF+IwBB4ABrIgckAAJAAkACQAJAIABFDQAgAEEQayIMKAIAQQFqIQogDCAKNgIAIApFDQEgACgCAA0CIABBfzYCACAHIAw2AgggByAANgIEIAcgAEEQaiINNgIAIANFDQAgA0EIayIKKAIAQQFqIQggCiAINgIAIAhFDQEgAygCACIIQX9GDQIgAyAIQQFqNgIAIAcgCjYCFCAHIAM2AhAgByADQQRqIg42AgwgBEUNACAEQQhrIggoAgBBAWohCSAIIAk2AgAgCUUNASAEKAIAIglBf0YNAiAEIAlBAWo2AgAgByAINgIgIAcgBDYCHCAHIARBBGoiDzYCGCAFRQ0AIAVBCGsiCSgCAEEBaiELIAkgCzYCACALRQ0BIAUoAgAiC0F/Rg0CIAUgC0EBajYCACAHIAk2AiwgByAFNgIoIAcgBUEEaiILNgIkIA0gAb0iEacgEUIgiKcQ7wkiDUUNAyAHQTBqIhBBBGogDiACIA8gCxDyCSAHQQA2AjAgDSAQIAZBAEcQjgQgBSAFKAIAQQFrNgIAIAkgCSgCAEEBayIFNgIAIAVFBEAgB0EsahCrDQsgBCAEKAIAQQFrNgIAIAggCCgCAEEBayIENgIAIARFBEAgB0EgahCoDQsgAyADKAIAQQFrNgIAIAogCigCAEEBayIDNgIAIANFBEAgB0EUahCoDQsgAEEANgIAIAwgDCgCAEEBayIANgIAIABFBEAgB0EIahDrDAsgB0HgAGokAA8LEJsPCwALEJwPAAtB3M3BAEHNAEG8zsEAENcLAAvmBAIOfwF+IwBB0AJrIgMkACABKAIAKAIAIQQgASgCBCIHKAIAQQFGBEAgBygCBCIFQf//A3EhCSAFQRB2IQpBASEFCyAEQSBJIQZBACEHIAEoAggiCCgCAEEBRgRAIAgpAwgiEUIgiKchCyARpyEMQQEhBwsgBEEAIAYbIQhBASEEAkAgASgCDCIGKAIAQQFHBEBBACEEDAELIAYpAwgiEUIgiKchDSARpyEOCyABKAIYKAIAIQ8gASgCHCgCACEQIAEoAhQoAgAhBiADIAEoAhAoAgA2AkQgA0HQ0cEANgI4IAMgAjYCNCADIAg2AjAgAyANNgIsIAMgDjYCKCADIAQ2AiQgAyALNgIgIAMgDDYCHCADIAc2AhggAyAJNgIUIAMgCjYCECADIAU2AgwgBigCPCEEIAYoAkAhAiADIBA2AkwgAyAPNgJIIAMgAjYCQCADIAQgAigCCEEBa0F4cWpBCGo2AjwgA0HoAGogASgCICgCACICQQhqKAIANgIAIANB0ABqIgRBCGogASgCJCgCACIFQQhqKQIANwMAIAMgAikCADcDYCADIAUpAgA3A1AgASgCKCgCACICKAIEIQEgA0HwAGoiBSADQQxqIAQgAigCACABKAIIQQFrQXhxakEIaiABEMkEIANBwAJqIAUgA0GYAmoQ5wECQCADKALIAgRAIAMpA8ACIREgAEIBNwMAIAAgETcDCCADKAL0ASIAQSFJDQEgAygCeCAAQQJ0QQQQiA8MAQsgAygC9AEiAUEhTwRAIAMoAnggAUECdEEEEIgPCyAAQgA3AwALIANB0AJqJAALzAQCCH8BfiMAQdAAayIGJAACQAJAAkACQCAARQ0AIABBCGsiCigCAEEBaiEHIAogBzYCACAHRQ0BIAAoAgAiB0F/Rg0CIAAgB0EBajYCACAGIAo2AhwgBiAANgIYIAYgAEEEaiIMNgIUIAJFDQAgAkEIayIHKAIAQQFqIQggByAINgIAIAhFDQEgAigCACIIQX9GDQIgAiAIQQFqNgIAIAYgBzYCKCAGIAI2AiQgBiACQQRqIgs2AiAgA0UNACADQQhrIggoAgBBAWohCSAIIAk2AgAgCUUNASADKAIAIglBf0YNAiADIAlBAWo2AgAgBiAINgI0IAYgAzYCMCAGIANBBGoiDTYCLCAMIAG9Ig6nIA5CIIinELgMIglFDQMgBkE4aiIMQQhqIAtBCGooAgA2AgAgBiALKQIANwM4IAZBzABqIA1BCGooAgA2AgAgBiANKQIANwJEIAZBCGogCSgCQCAJKAJEIgsoAghBAWtBeHFqQQhqIAlB9ABqIAwgBCAFQQBHIAsoAhgRCQAgBioCDCEEIAYoAgghBSADIAMoAgBBAWs2AgAgCCAIKAIAQQFrIgM2AgAgA0UEQCAGQTRqEKgNCyACIAIoAgBBAWs2AgAgByAHKAIAQQFrIgI2AgAgAkUEQCAGQShqEKgNCyAAIAAoAgBBAWs2AgAgCiAKKAIAQQFrIgA2AgAgAEUEQCAGQRxqEO8MCyAGQdAAaiQAIARDAACAvyAFQQFxGw8LEJsPCwALEJwPAAtBzM7BAEHMAEGYz8EAENcLAAuABAIBfw19IwBB4AFrIgYkACADKgIAIAIqAhAiEJMiCCACKgIEIguUIAMqAgQgAioCFCIRkyIMIAIqAgAiDZSTIgkgCZIhCiAMIAIqAggiCZQgAyoCCCACKgIYIhKTIg4gC5STIg8gD5IhByAGIA4gAioCDCIPIAqUIAsgB5QgDSAOIA2UIAggCZSTIg4gDpIiDpSTkpIiEzgCDCAGIAggDyAHlCAJIA6UIAsgCpSTkpIiCDgCBCAGIAwgDyAOlCANIAqUIAkgB5STkpIiCjgCCCAGQdgBakIANwIAIAZCADcC0AEgBkKCgICAMDcCKCAGQoCAgIAQNwIgIAZBMGpBAEGgAfwLACAGQRBqIAEoAgQgASgCCCAGQSBqIAZBBGogBBAuIAACf0ECIAUgCCAGKgIQIgWTIgcgB5QgCiAGKgIUIgqTIgcgB5SSIBMgBioCGCIHkyIIIAiUkpFdDQAaQQIgBi0AHCIBQQJGDQAaIAAgByAPIA0gCpQgCyAFlJMiCCAIkiIIlCANIAkgBZQgDSAHlJMiDCAMkiIMlCALIAsgB5QgCSAKlJMiByAHkiIHlJOSkiASkjgCCCAAIAogDyAMlCAJIAeUIA0gCJSTkpIgEZI4AgQgACAQIAUgDyAHlCALIAiUIAkgDJSTkpKSOAIAIAELOgAMIAZB4AFqJAALhAwCFn8GfiMAQRBrIg8kACAAKQMQQjiJIAGFIhhCIIgiGiABQpeSnKrbtrXCP4UiGUIgiCIbfiAYQv////8PgyIYIBlC/////w+DIhl+hSAZIBp+IBggG36FQiCJhSIYQv////8Pg0IChSIaQt2h8csMfiAYQiCIIhhCt9OwhQx+hSAaQrfTsIUMfiAYQt2h8csMfoVCIIiFIRogACgCCEUEQCAPQQhqIRAjAEEwayIEJAAgBCAAQRBqNgIoIAAoAgwhByAEIARBKGo2AiwCQAJAAkACfwJAIAcgB0EBaiICTQRAIAAoAgQiDCAMQQFqQQN2QQdsIAxBCEkbIgNBAXYgAkkEQCADQQFqIgMgAiACIANJGyICQQ9JDQIgAkH/////AU0EQEF/IAJBA3RBB25BAWtndiICQf7///8BSw0FIAJBAWoMBAsQpgwgBCgCJCECIAQoAiAhAwwGCyAAIARBLGpB9gBBCBDLAkGBgICAeCEDDAULEKYMIAQoAgwhAiAEKAIIIQMMBAtBBEEIQRAgAkEISRsgAkEESRsLIgJBA3QiBSACQQhqIgkgBWoiA0sNACADQfj///8HSw0AIANBCBCzDiIGDQFBCCADQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAQoAhQhAiAEKAIQIQMMAQsgBSAGaiEGIAkEQCAGQf8BIAn8CwALIAJBAWsiCiACQQN2QQdsIApBCEkbIRECQCAHRQRAIAAoAgAhBQwBCyAGQQhqIRIgACgCACIFQQhrIRMgBSkDAEJ/hUKAgYKEiJCgwIB/gyEYIAQoAighFEEAIQIgByEJIAUhAwNAIBhQBEADQCACQQhqIQIgA0EIaiIDKQMAQoCBgoSIkKDAgH+DIhhCgIGChIiQoMCAf1ENAAsgGEKAgYKEiJCgwIB/hSEYCyAGIBMgGHqnQQN2IAJqIhVBA3RrKQAAIhkgFCkDAEI4iYUiG0IgiCIcIBlCl5Kcqtu2tcI/hSIZQiCIIh1+IBtC/////w+DIhsgGUL/////D4MiGX6FIBkgHH4gGyAdfoVCIImFIhlC/////w+DQgKFIhtC3aHxywx+IBlCIIgiGUK307CFDH6FIBtCt9OwhQx+IBlC3aHxywx+hUIgiIWnIhYgCnEiCGopAABCgIGChIiQoMCAf4MiGVAEQEEIIQ0DQCAIIA1qIQggDUEIaiENIAYgCCAKcSIIaikAAEKAgYKEiJCgwIB/gyIZUA0ACwsgGEIBfSAYgyEYIAYgGXqnQQN2IAhqIApxIghqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQgLIAYgCGogFkEZdiINOgAAIBIgCEEIayAKcWogDToAACAGIAhBf3NBA3RqIAUgFUF/c0EDdGopAAA3AwAgCUEBayIJDQALCyAAIAo2AgQgACAGNgIAIAAgESAHazYCCEGBgICAeCEDIAxFDQAgBSAMQQN0QQ9qQXhxIgJrIAIgDGpBCWpBCBCIDwsgECACNgIEIBAgAzYCACAEQTBqJAALIAAoAgAiA0EIayEJIAAoAgQiByAap3EhAiAaQhmIIhlC/wCDQoGChIiQoMCAAX4hGwNAAn8CQAJAIAIgA2opAAAiGiAbhSIYQoGChIiQoMCAAX0gGEJ/hYNCgIGChIiQoMCAf4MiGEIAUgRAA0BBASEFIAEgCSAYeqdBA3YgAmogB3FBA3RrKQIAUQ0CIBhCAX0gGIMiGEIAUg0ACwsgGkKAgYKEiJCgwIB/gyEYIA5FBEAgGFANAiAYeqdBA3YgAmogB3EhCwtBASAYIBpCAYaDUA0CGkEAIQUgAyALaiwAACICQQBOBEAgAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhAgsgAyALaiAZp0H/AHEiDjoAACADIAtBCGsgB3FqQQhqIA46AAAgACAAKAIIIAJBAXFrNgIIIAAgACgCDEEBajYCDCADIAtBA3RrQQhrIAE3AgALIA9BEGokACAFDwtBAAshDiAXQQhqIhcgAmogB3EhAgwACwAL3gQCCX8BfiMAQSBrIgIkAAJAIAEoAgQiA0UEQCAAQYCAgIB4NgIADAELIAEgA0EBazYCBAJ/IAEoAgAiASgCBCIEQQdNBEAgAkKBygA3AwhBASEFIAJBCGoQog0MAQsgASAEQQhrIgQ2AgQgASABKAIAIgNBCGo2AgAgAiADKQAAEKcIIAIoAgAhBSACKAIECyEDAkACQAJAIAVBAXENACADRQRAQQQhA0EAIQVBACEBDAMLQdWqBSADIANB1aoFTxsiBUEMbCIGQQQQsw4iB0UNASACIAc2AgwgAiAFNgIIQQAhBiACQQA2AhAgASgCACEJQQAhBQNAAkACQCAEQQRJDQAgASAEQQRrIgQ2AgQgASAGIAlqIghBBGoiBzYCACAEQQRJDQAgCCgAACEKIAEgBEEEayIENgIEIAEgB0EEaiIINgIAIARBA0sNAQsgAkEAOgAbIAJBJTsAGSACQQA2AhwgAkEBOgAYIAJBGGoQog0hAyACKAIIIgFFDQIgAigCDCABQQxsQQQQiA8MAgsgBzUAACELIAEgBEEEayIENgIEIAEgCEEEajYCACALIAg1AABCIIaEIQsgAigCCCAFRgRAIAJBCGpByKvBABCTCAsgAigCDCAGaiIHIAo2AgAgB0EEaiALNwIAIAIgBUEBaiIFNgIQIAZBDGohBiADIAVHDQALIAIoAgwhAyACKAIIIgFBgICAgHhHDQILIABBgYCAgHg2AgAgACADNgIEDAILQQQgBkG4q8EAENMNAAsgACAFNgIIIAAgAzYCBCAAIAE2AgALIAJBIGokAAvzBAINfwF9IwBBsAJrIgMkACADIAE2AhwgA0EgaiIBQSBqIAJBIGooAgA2AgAgAUEYaiACQRhqKQIANwMAIAFBEGogAkEQaikCADcDACABQQhqIAJBCGopAgA3AwAgAyACKQIANwMgIANB+AFqIAIgACgCACIBEMAJIAAoAgQiAioCACIQQwAAAABgBEAgAyAQIAMqAowCkjgCXCADIBAgAyoCiAKSOAJYIAMgECADKgKEApI4AlQgAyADKgKAAiAQkzgCUCADIAMqAvwBIBCTOAJMIAMgAyoC+AEgEJM4AkggACgCMCEFIAAoAiwhBiAAKAIoIQcgACgCJCEIIAAoAiAhCSAAKAIcIQogACgCGCELIAAoAhQhDCAAKAIQIQ0gACgCDCEEIAAoAgghDiADQeAAaiIPIAAoAjQgA0HIAGoQ/wYgA0EQaiAPEOEDIAMoAhBBAXEEQCADKAIUIQAgBCgCDCEEA0AgAyAANgL0ASADIAU2AqwCIAMgAjYCqAIgAyABNgKgAiADIAY2ApwCIAMgBzYCmAIgAyAINgKUAiADIAk2ApACIAMgCjYCjAIgAyALNgKIAiADIAw2AoQCIAMgDTYC+AEgAyADQSBqNgKkAiADIANB9AFqNgKAAiADIANBHGo2AvwBIA4gACADQfgBakHk7sEAIAQRAgAgA0EIaiADQeAAahDhAyADKAIMIQAgAygCCEEBcQ0ACwsgAygC5AEiAEEhTwRAIAMoAmggAEECdEEEEIgPCyADQbACaiQADwsgA0EANgJwIANBATYCZCADQZTXwQA2AmAgA0IENwJoIANB4ABqQZzXwQAQuA0AC4IEARB9IAIqAgAgASoCEJMiCiABKgIEIgSUIAIqAgQgASoCFJMiESABKgIAIgeUkyIFIAWSIQUgESABKgIIIgaUIAIqAgggASoCGJMiCCAElJMiCSAJkiENIAggASoCDCISIAWUIAQgDZQgByAIIAeUIAogBpSTIgggCJIiE5STkpIhCSAKIBIgDZQgBiATlCAEIAWUk5KSIg8gD5QgCSAJlJKRIgtDAAAANF8hASAAKgIEIg5DAAAAACAJIAuVIAEblCEKIA5DAACAPyAPIAuVIAEblCEIAkACfSAAKgIAIgyMIRACQCALIA5fIgAgDCARIBIgE5QgByAFlCAGIA2Uk5KSIgZgcSAGIBBgcSIBRQRAAkACQCAGIAxeRQRAIBAgBiAGIBBdIgIbIQUgAg0BIAohBCAIIQcMBgsgAA0BIAohBCAMIQUgCCEHDAULIAohBCAIIQcgAA0CDAQLIAwhBSAJDAILIAkhBCAGIQUgDyEHIAMNAiAOIAuTIQsgDCAGkyINIAwgBpIiDl0EQCAMIQUgCyANXg0DCyANIA5eRQRAIAohBCAGIQUgCCEHDAMLIAohBCAGIQUgCCEHIAsgDl5FDQILIBAhBSAJCyEEIA8hBwsgBCAJkyIEIASUIAUgBpMiBCAElCAHIA+TIgQgBJSSkpEiBCAEjCAEIAEbIAMbC5sEAgp/An4jAEGAA2siCiQAAkAgAiABKAIUIgZPBEAgAEECOgC9AgwBCyABKAIEIQQCQCABKAIIIgsgASgCECIHIAJBgANsaiIFKQP4AiINpyIDTQ0AIAUpA/ACIg6nIQkgDUIgiKchCAJAIAIgBCADQQR0aiIMKAIIIgNHBEADQCADIAZPDQIgByADQYADbGoiDCgC8AIiAyACRw0ACyAMQfACaiAJNgIADAELIAxBCGogCTYCAAsgCCALTw0AIA5CIIinIQkgAiAEIAhBBHRqIggoAgwiA0cEQANAIAMgBk8NAiAHIANBgANsaiIIKAL0AiIDIAJHDQALIAhB9AJqIAk2AgAMAQsgCEEMaiAJNgIACyAKIAVBgAP8CgAAIAUgByAGQQFrIgNBgANsakGAA/wKAAAgASADNgIUAkAgAiADTw0AIAcgAkGAA2xqKQP4AiINpyIBIAtPDQAgDUIgiKchBgJAIAQgAUEEdGoiBSgCCCIBIANHBEADQCABIANPDQIgAyAHIAFBgANsaiIFKALwAiIBRw0ACyAFQfACaiACNgIADAELIAVBCGogAjYCAAsgBiALTw0AIAQgBkEEdGoiBCgCDCIBIANHBEADQCABIANPDQIgAyAHIAFBgANsaiIEKAL0AiIBRw0ACyAEQfQCaiACNgIADAELIARBDGogAjYCAAsgACAKQfAC/AoAAAsgCkGAA2okAAu+BAEIfyMAQRBrIgMkACADIAE2AgQgAyAANgIAIANCoICAgA43AggCfwJAAkACQCACKAIQIgkEQCACKAIUIgANAQwCCyACKAIMIgBFDQEgAigCCCIBIABBA3RqIQQgAEEBa0H/////AXFBAWohBiACKAIAIQADQAJAIABBBGooAgAiBUUNACADKAIAIAAoAgAgBSADKAIEKAIMEQUARQ0AQQEMBQtBASABKAIAIAMgAUEEaigCABEDAA0EGiAAQQhqIQAgAUEIaiIBIARHDQALDAILIABBGGwhCiAAQQFrQf////8BcUEBaiEGIAIoAgghBCACKAIAIQADQAJAIABBBGooAgAiAUUNACADKAIAIAAoAgAgASADKAIEKAIMEQUARQ0AQQEMBAtBACEHQQAhCAJAAkACQCAFIAlqIgFBCGovAQBBAWsOAgECAAsgAUEKai8BACEIDAELIAQgAUEMaigCAEEDdGovAQQhCAsCQAJAAkAgAS8BAEEBaw4CAQIACyABQQJqLwEAIQcMAQsgBCABQQRqKAIAQQN0ai8BBCEHCyADIAc7AQ4gAyAIOwEMIAMgAUEUaigCADYCCEEBIAQgAUEQaigCAEEDdGoiASgCACADIAEoAgQRAwANAxogAEEIaiEAIAVBGGoiBSAKRw0ACwwBCwsCQCAGIAIoAgRPDQAgAygCACACKAIAIAZBA3RqIgAoAgAgACgCBCADKAIEKAIMEQUARQ0AQQEMAQtBAAshASADQRBqJAAgAQuTBAEMfyABQQFrIQ4gACgCBCEKIAAoAgAhCyAAKAIIIQwCQANAIAUNAQJ/AkAgAiAESQ0AA0AgASAEaiEFAkACQAJAIAIgBGsiB0EHTQRAIAIgBEcNASACIQQMBQsCQCAFQQNqQXxxIgYgBWsiAwRAQQAhAANAIAAgBWotAABBCkYNBSADIABBAWoiAEcNAAsgB0EIayIAIANPDQEMAwsgB0EIayEACwNAIAYoAgAiCUGAgoQIIAlBipSo0ABza3IgBkEEaigCACIJQYCChAggCUGKlKjQAHNrcnFBgIGChHhxQYCBgoR4Rw0CIAZBCGohBiAAIANBCGoiA08NAAsMAQtBACEAA0AgACAFai0AAEEKRg0CIAcgAEEBaiIARw0ACyACIQQMAwsgAyAHRgRAIAIhBAwDCwNAIAMgBWotAABBCkYEQCADIQAMAgsgByADQQFqIgNHDQALIAIhBAwCCyAAIARqIgZBAWohBAJAIAIgBk0NACAAIAVqLQAAQQpHDQBBACEFIAQiBgwDCyACIARPDQALCyACIAhGDQJBASEFIAghBiACCyEAAkAgDC0AAARAIAtB1KrEAEEEIAooAgwRBQANAQsgACAIayEHQQAhAyAAIAhHBEAgACAOai0AAEEKRiEDCyABIAhqIQAgDCADOgAAIAYhCCALIAAgByAKKAIMEQUARQ0BCwtBASENCyANC8cEAgd/BH4jAEEQayIDJAACQCABKAIEIgJFBEAgAEIANwMIIABCADcDAAwBCyABIAJBAWs2AgQCfwJAAkACQCABKAIAIgEoAgQiBEEESQ0AIAEoAgAhAiABIARBBGsiBjYCBCABIAJBBGo2AgAgBkEESQ0AIAIoAAAhBiABIARBCGsiBTYCBCABIAJBCGo2AgAgBUEESQ0AIAI1AAQhCSABIARBDGsiBTYCBCABIAJBDGo2AgAgBUEESQ0BIAI1AAghCiABIARBEGsiBTYCBCABIAJBEGo2AgAgBUEESQ0CIAIoAAwhBSABIARBFGsiBzYCBCABIAJBFGo2AgAgB0EESQ0CIAIoABAhByABIARBGGsiCDYCBCABIAJBGGo2AgAgCEEESQ0CIAI1ABQhCyABIARBHGsiCDYCBCABIAJBHGo2AgAgCEEESQRAIANCgcoANwMIIANBCGoQog0MBAsgAjUAGCEMIAEgBEEgazYCBCABIAJBIGo2AgAgAigAHCEBIABCADcDCCAAQgE3AwAgACABNgIsIAAgDEIghiALhDcCJCAAIAc2AiAgACAFNgIcIAAgCkIghiAJhDcCFCAAIAY2AhAMBAsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQog0MAgsgA0KBygA3AwggA0EIahCiDQwBCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggA0EIahCiDQshASAAQgA3AwggAEICNwMAIAAgATYCEAsgA0EQaiQAC+cFAgp/AX4jAEHgAGsiByQAAkACQAJAAkAgAEUNACAAQQhrIgooAgBBAWohBiAKIAY2AgAgBkUNASAAKAIADQIgAEF/NgIAIAcgCjYCDCAHIAA2AgggByAAQQRqIgg2AgQgA0UNACADQQhrIgsoAgBBAWohBiALIAY2AgAgBkUNASADKAIAIgZBf0YNAiADIAZBAWo2AgAgByALNgIYIAcgAzYCFCAHIANBBGoiCTYCECAERQ0AIARBCGsiDCgCAEEBaiEGIAwgBjYCACAGRQ0BIAQoAgAiBkF/Rg0CIAQgBkEBajYCACAHIAw2AiQgByAENgIgIAcgBEEEaiIONgIcIAVFDQAgBUEIayINKAIAQQFqIQYgDSAGNgIAIAZFDQEgBSgCACIGQX9GDQIgBSAGQQFqNgIAIAcgDTYCMCAHIAU2AiwgByAFQQRqIgY2AiggCCABvSIQpyAQQiCIpxDwCSIPRQ0DIAdBNGoiCCAJIAIgDiAGEPIJIwBBEGsiCSQAQSxBBBCzDiIGRQRAQQRBLEGQxMQAKAIAIgBBzAggABsRAAAACyAGIAgpAgA3AgAgBkEoaiAIQShqKAIANgIAIAZBIGogCEEgaikCADcCACAGQRhqIAhBGGopAgA3AgAgBkEQaiAIQRBqKQIANwIAIAZBCGogCEEIaikCADcCACAJIAY2AgwgCUECNgIIIA8gCUEIahCBBiAJQRBqJAAgBSAFKAIAQQFrNgIAIA0gDSgCAEEBayIFNgIAIAVFBEAgB0EwahCrDQsgBCAEKAIAQQFrNgIAIAwgDCgCAEEBayIENgIAIARFBEAgB0EkahCoDQsgAyADKAIAQQFrNgIAIAsgCygCAEEBayIDNgIAIANFBEAgB0EYahCoDQsgAEEANgIAIAogCigCAEEBayIANgIAIABFBEAgB0EMahDvDAsgB0HgAGokAA8LEJsPCwALEJwPAAtBzM7BAEHMAEGoz8EAENcLAAvuAwEXfSABKgIEIgwgASoCECIHkkMAAAA/lCINIAIqAgAiA5QgASoCACIJIAEqAgwiCpJDAAAAP5QiEyACKgIEIgSUkyIFIAWSIRAgEyACKgIIIgWUIAEqAggiDiABKgIUIg+SQwAAAD+UIgggA5STIgYgBpIhESAAIAIqAhggCCACKgIMIgYgEJQgAyARlCAEIAQgCJQgDSAFlJMiCCAIkiIIlJOSkpIiFSAPIA6TQwAAAD+UIg4gBSAFlCIPIAYgBpQiFiADIAOUIheTIhIgBCAElCIUk5KLlCAHIAyTQwAAAD+UIgwgBCAFlCIHIAeSIgsgAyAGlCIHIAeSIhiSi5QgCiAJk0MAAAA/lCIHIAUgA5QiCSAJkiIJIAQgBpQiCiAKkiIKk4uUkpIiGZI4AhQgACACKgIUIA0gBiARlCAFIAiUIAMgEJSTkpKSIg0gDiALIBiTi5QgByAEIAOUIgMgA5IiAyAFIAaUIgsgC5IiC5KLlCAMIBQgEpIgD5OLlJKSIhKSOAIQIAAgAioCECATIAYgCJQgBCAQlCAFIBGUk5KSkiIEIA4gCSAKkouUIAwgAyALk4uUIAcgFyAWkiAUkyAPk4uUkpIiA5I4AgwgACAVIBmTOAIIIAAgDSASkzgCBCAAIAQgA5M4AgALuAQCCH8BfiMAQSBrIgMkACAALQAcRQRAIAAtAAAhASAAQQE6AAAgAyABOgAHAkACQCABQQFHBEAgAC0AHA0CIAAoAgwiAUUNASABQQxsIQcgACgCCCEIQQAhAUEBIQIDQAJAAkAgASAIaiIGKAIAIgQoAhRBmIjEAEYNACAEIAQoAgwiBSAGQQRqKAIAIAUbNgIMIAUNACACQQFrIQUgBkEIaigCACIGBEAgBCAGNgIQCyAAKAIMIgQgBU0NASADQRBqIAAoAgggAWoiAUEIaigCADYCACADIAEpAgA3AwggBCACa0EMbCICBEAgASABQQxqIAL8CgAACyAAIARBAWs2AgwgAygCCCIBRQ0EIAEgASgCACIBQQFrNgIAIAFBAUcNBCADQQhqENoLDAQLIAJBAWohAiAHIAFBDGoiAUcNAQwDCwsgBSAEQfC3wQAQhwsACyADQgA3AhQgA0KBgICAwAA3AgwgA0GguMEANgIIIANBB2ogA0EIakGouMEAEP8MAAsgACgCGCECQQAhBCAAQQA2AhggAgRAIAAoAhQhASACQQxsIQYDQCADQQhqIgdBCGogAUEIaigCADYCACADIAEpAgAiCTcDCCAJpyICKAIMIQUgAiAFIAMoAgwgBRs2AgwgAiACKAIAIgJBAWs2AgAgAkEBRgRAIAcQ2gsLIAFBDGohASAGQQxrIgYNAAsLIAAgACgCDAR/QQEFIAAoAhgLRToAHAsgAEEAOgAACyADQSBqJAALuAQCCH8BfiMAQSBrIgMkACAALQAcRQRAIAAtAAAhASAAQQE6AAAgAyABOgAHAkACQCABQQFHBEAgAC0AHA0CIAAoAgwiAUUNASABQQxsIQcgACgCCCEIQQAhAUEBIQIDQAJAAkAgASAIaiIGKAIAIgQoAhRBmIjEAEYNACAEIAQoAgwiBSAGQQRqKAIAIAUbNgIMIAUNACACQQFrIQUgBkEIaigCACIGBEAgBCAGNgIQCyAAKAIMIgQgBU0NASADQRBqIAAoAgggAWoiAUEIaigCADYCACADIAEpAgA3AwggBCACa0EMbCICBEAgASABQQxqIAL8CgAACyAAIARBAWs2AgwgAygCCCIBRQ0EIAEgASgCACIBQQFrNgIAIAFBAUcNBCADQQhqENoLDAQLIAJBAWohAiAHIAFBDGoiAUcNAQwDCwsgBSAEQaTcwQAQhwsACyADQgA3AhQgA0KBgICAwAA3AgwgA0GE3cEANgIIIANBB2ogA0EIakGM3cEAEP8MAAsgACgCGCECQQAhBCAAQQA2AhggAgRAIAAoAhQhASACQQxsIQYDQCADQQhqIgdBCGogAUEIaigCADYCACADIAEpAgAiCTcDCCAJpyICKAIMIQUgAiAFIAMoAgwgBRs2AgwgAiACKAIAIgJBAWs2AgAgAkEBRgRAIAcQ2gsLIAFBDGohASAGQQxrIgYNAAsLIAAgACgCDAR/QQEFIAAoAhgLRToAHAsgAEEAOgAACyADQSBqJAAL2gMBFH0CfSACKAIAQQFHBEBD//9//wwBCyACKgIEIgYgBCoCECIUIAEqAgAiFZOUIAIqAggiCSAEKgIUIhYgASoCBCIXk5SSIAIqAgwiCiAEKgIYIhAgASoCCCIYk5SSQwAAAABgIQEgAyoCCCAEKgIMIg4gBCoCACIHIAkgCYwgARsiCZQgBiAGjCABGyIGIAQqAgQiC5STIgggCJIiD5QgCyAKIAqMIAEbIgogC5QgCSAEKgIIIgiUkyIFIAWSIgyUIAcgBiAIlCAHIAqUkyIFIAWSIg2Uk5IgCpOYIQVD//9//yAKIBAgBSAOIAcgAyoCBCAOIA2UIAcgD5QgCCAMlJOSIAmTmCIQlCALIAMqAgAgDiAMlCAIIA2UIAsgD5STkiAGk5giD5STIgwgDJIiDJQgByAIIA+UIAcgBZSTIg0gDZIiDZQgCyALIAWUIAggEJSTIgUgBZIiBZSTkpKSIBiTlCAGIBQgDyAOIAWUIAsgDJQgCCANlJOSkpIgFZOUIAkgFiAQIA4gDZQgCCAFlCAHIAyUk5KSkiAXk5SSkiIHQ///f/9eRQ0AGiAKIREgCSESIAYhEyAHCyEGIAAgETgCDCAAIBI4AgggACATOAIEIAAgBjgCAAu7BAIJfQF/IABCgoCAgDA3AgggAEKAgICAEDcCACAAIAAoArwBIgs2AqwBIAAgACkCsAE3AqABIABBqAFqIABBuAFqKAIANgIAAkACQAJAAkACQAJAIAsOAwECAwALQYDUwgBBKEGIjMMAENYMAAsgACoCECABKgIAkyICIAKUIAAqAhQgASoCBJMiAiAClJIgACoCGCABKgIIkyICIAKUkkMAAKA1XUUNAwwCCyAAKgI0IAAqAhAiApMiBSABKgIEIAAqAhQiBJMiBpQgACoCOCAEkyIEIAEqAgAgApMiApSTIgMgA5QgBCABKgIIIAAqAhgiBJMiA5QgACoCPCAEkyIEIAaUkyIGIAaUIAQgApQgBSADlJMiAiAClJKSQwAAoDVdDQEMAgsgACoCNCAAKgIQIgSTIgcgACoCXCAAKgIUIgaTIgWUIAAqAjggBpMiAyAAKgJYIASTIgiUkyECIAMgACoCYCAAKgIYIgOTIgmUIAAqAjwgA5MiCiAFlJMhBSABKgIIIAOTIAIgAiAClCAFIAWUIAogCJQgByAJlJMiAiAClJKSkSIDlZQgASoCACAEkyAFIAOVlCABKgIEIAaTIAIgA5WUkpKLQwAAoDVdRQ0BC0EADwsgACALQQFqNgK8ASALQSRsIABqIgAgASkCADcCNCAAQdQAaiABQSBqKAIANgIAIABBzABqIAFBGGopAgA3AgAgAEHEAGogAUEQaikCADcCACAAQTxqIAFBCGopAgA3AgBBAQv9AwINfQF/IwBBQGoiEyQAIAMqAgAgAioCECIPkyIHIAIqAgQiDJQgAyoCBCACKgIUIhCTIgggAioCACINlJMiCSAJkiEKIAggAioCCCIJlCADKgIIIAIqAhgiEZMiCyAMlJMiDiAOkiEGIBMgCyACKgIMIg4gCpQgDCAGlCANIAsgDZQgByAJlJMiCyALkiILlJOSkiISOAIIIBMgByAOIAaUIAkgC5QgDCAKlJOSkiIHOAIAIBMgCCAOIAuUIA0gCpQgCSAGlJOSkiIKOAIEIAFBCGoiAioCACEGIAEqAgAhCCABKgIEIQsgE0EgaiACKAIANgIAIBMgBow4AhQgEyALjDgCECATIAiMOAIMIBMgASkCADcCGCATQSRqIBNBDGogEyAEEIsDQQIhAiAFIAcgEyoCJCIFkyIGIAaUIAogEyoCKCIKkyIGIAaUkiASIBMqAiwiBpMiByAHlJKRXUUEQCATLQAwIQIgACAGIA4gDSAKlCAMIAWUkyIHIAeSIgeUIA0gCSAFlCANIAaUkyIIIAiSIgiUIAwgDCAGlCAJIAqUkyIGIAaSIgaUk5KSIBGSOAIIIAAgCiAOIAiUIAkgBpQgDSAHlJOSkiAQkjgCBCAAIA8gBSAOIAaUIAwgB5QgCSAIlJOSkpI4AgALIAAgAjoADCATQUBrJAALmwQCAX8KfSMAQUBqIgQkACACKgIAIAEqAhCTIgkgASoCBCIHlCACKgIEIAEqAhSTIgwgASoCACILlJMiBSAFkiEFIAwgASoCCCIIlCACKgIIIAEqAhiTIgogB5STIgYgBpIhBiAEIAogASoCDCINIAWUIAcgBpQgCyAKIAuUIAkgCJSTIgogCpIiDpSTkpIiCjgCCCAEIAwgDSAOlCALIAWUIAggBpSTkpIiCzgCBCAEIAkgDSAGlCAIIA6UIAcgBZSTkpIiBzgCACAAQQhqIgEqAgAhBSAAKgIAIQYgACoCBCEIIARBIGoiAiABKAIANgIAIAQgACkCADcCGCAEIAWMIgU4AhQgBSAKkyIFIAogAioCAJMiCSAFIAlgGyIFQwAAAAAgBUMAAAAAYBshBSAEIAiMIgg4AhAgCCALkyIIIAsgBCoCHJMiCSAIIAlgGyIIQwAAAAAgCEMAAAAAYBshCCAEIAaMIgY4AgwgBiAHkyIGIAcgBCoCGJMiCSAGIAlgGyIGQwAAAAAgBkMAAAAAYBshBgJ9AkACQCADDQAgBkMAAAAAXA0AIAhDAAAAAFwNACAFQwAAAABbDQELIAYgBpQgCCAIlJIgBSAFlJKRDAELIARBJGogBEEMaiAEQQAQiwMgBCoCJCAHkyIHIAeUIAQqAiggC5MiByAHlJIgBCoCLCAKkyIHIAeUkpGMCyEHIARBQGskACAHC7YEAgd/BX4jAEEQayIDJAAgAAJ/AkACQCABKAIEIgRBBEkNACABKAIAIQIgASAEQQRrIgc2AgQgASACQQRqNgIAIAdBBEkNACACKAAAIQcgASAEQQhrIgU2AgQgASACQQhqNgIAIAVBBEkNACACNQAEIQkgASAEQQxrIgU2AgQgASACQQxqNgIAIAVBBEkNASACNQAIIQogASAEQRBrIgU2AgQgASACQRBqNgIAIAVBBEkNASACKAAMIQUgASAEQRRrIgY2AgQgASACQRRqNgIAIAZBBEkNASACNQAQIQsgASAEQRhrIgY2AgQgASACQRhqNgIAAkAgBkEESQ0AIAI1ABQhDCABIARBHGsiBjYCBCABIAJBHGo2AgAgBkEESQ0AIAIoABghBiABIARBIGsiCDYCBCABIAJBIGo2AgAgCEEESQ0AIAI1ABwhDSAAIAY2AhwgACAMQiCGIAuENwIUIAAgBTYCECAAIApCIIYgCYQ3AgggACAHNgIEIAEgBEEkazYCBCABIAJBJGo2AgAgACANIAI1ACBCIIaENwIgQQAMAwsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBDAILIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQog02AgRBAQwBCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggACADQQhqEKINNgIEQQELNgIAIANBEGokAAvGCwIWfwR+IwBBEGsiESQAIAApAxAgAa0gAq1CIIaEhSIaQiCIIhxCt9OwhQx+IBpC/////w+DIhpC3aHxywx+hSAcQt2h8csMfiAaQrfTsIUMfoVCIIiFIRwgACgCCEUEQCARQQhqIRIjAEEwayIGJAAgBiAAQRBqNgIoIAAoAgwhCiAGIAZBKGo2AiwCQCAKIApBAWoiBE0EQCAAKAIEIg8gD0EBakEDdkEHbCAPQQhJGyIFQQF2IARJBEACQAJAAkACfyAFQQFqIgUgBCAEIAVJGyIEQQ9PBEAgBEH/////AUsNAkF/IARBA3RBB25BAWtndkEBagwBC0EEQQhBECAEQQhJGyAEQQRJGwsiBK1CDH4iGkIgiKcNASAapyIFQXhLDQEgBUEHakF4cSIIIARBCGoiC2ohBSAFIAhJDQEgBUH4////B0sNASAFQQgQsw4iCQ0CQQggBUGQxMQAKAIAIgBBzAggABsRAAAACxCmDCAGKAIkIQQgBigCICEFDAQLEKYMIAYoAhQhBCAGKAIQIQUMAwsgCCAJaiEJIAsEQCAJQf8BIAv8CwALIARBAWsiDSAEQQN2QQdsIA1BCEkbIRMCQCAKRQRAIAAoAgAhCAwBCyAJQQhqIRQgACgCACIIQQxrIRUgCCkDAEJ/hUKAgYKEiJCgwIB/gyEaIAYoAighFkEAIQQgCiELIAghBQNAIBpQBEADQCAEQQhqIQQgBUEIaiIFKQMAQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1ENAAsgGkKAgYKEiJCgwIB/hSEaCyAJIBYpAwAgFSAaeqdBA3YgBGoiF0F0bGopAgCFIhtCIIgiHUK307CFDH4gG0L/////D4MiG0LdofHLDH6FIB1C3aHxywx+IBtCt9OwhQx+hUIgiIWnIhggDXEiB2opAABCgIGChIiQoMCAf4MiG1AEQEEIIQwDQCAHIAxqIQcgDEEIaiEMIAkgByANcSIHaikAAEKAgYKEiJCgwIB/gyIbUA0ACwsgGkIBfSAagyEaIAkgG3qnQQN2IAdqIA1xIgdqLAAAQQBOBEAgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IQcLIAcgCWogGEEZdiIMOgAAIBQgB0EIayANcWogDDoAACAJIAdBf3NBDGxqIgdBCGogCCAXQX9zQQxsaiIMQQhqKAAANgAAIAcgDCkAADcAACALQQFrIgsNAAsLIAAgDTYCBCAAIAk2AgAgACATIAprNgIIQYGAgIB4IQUgD0UNAiAIIA9BDGxBE2pBeHEiBGsgBCAPakEJakEIEIgPDAILIAAgBkEsakH0AEEMEMsCQYGAgIB4IQUMAQsQpgwgBigCDCEEIAYoAgghBQsgEiAENgIEIBIgBTYCACAGQTBqJAALIAAoAgQiCiAcp3EhBSAcQhmIIhtC/wCDQoGChIiQoMCAAX4hHSAAKAIAIQQDQAJ/AkACQCAEIAVqKQAAIhwgHYUiGkKBgoSIkKDAgAF9IBpCf4WDQoCBgoSIkKDAgH+DIhpCAFIEQANAIARBACAaeqdBA3YgBWogCnFrIghBDGxqIgtBDGsoAgAgAUYEQCACIAtBCGsoAgBGDQMLIBpCAX0gGoMiGkIAUg0ACwsgHEKAgYKEiJCgwIB/gyEaIBBFBEAgGlANAiAaeqdBA3YgBWogCnEhDgtBASAaIBxCAYaDUA0CGiAEIA5qLAAAIgVBAE4EQCAEIAQpAwBCgIGChIiQoMCAf4N6p0EDdiIOai0AACEFCyAEIA5qIBunQf8AcSIQOgAAIAQgDkEIayAKcWpBCGogEDoAACAAIAAoAgggBUEBcWs2AgggACAAKAIMQQFqNgIMIARBACAOayIIQQxsaiIAQQxrIAE2AgAgAEEIayACNgIACyAEIAhBDGxqQQRrIAM2AgAgEUEQaiQADwtBAAshECAZQQhqIhkgBWogCnEhBQwACwALxgsCFn8EfiMAQRBrIhEkACAAKQMQIAGtIAKtQiCGhIUiGkIgiCIcQrfTsIUMfiAaQv////8PgyIaQt2h8csMfoUgHELdofHLDH4gGkK307CFDH6FQiCIhSEcIAAoAghFBEAgEUEIaiESIwBBMGsiBiQAIAYgAEEQajYCKCAAKAIMIQogBiAGQShqNgIsAkAgCiAKQQFqIgRNBEAgACgCBCIPIA9BAWpBA3ZBB2wgD0EISRsiBUEBdiAESQRAAkACQAJAAn8gBUEBaiIFIAQgBCAFSRsiBEEPTwRAIARB/////wFLDQJBfyAEQQN0QQduQQFrZ3ZBAWoMAQtBBEEIQRAgBEEISRsgBEEESRsLIgStQgx+IhpCIIinDQEgGqciBUF4Sw0BIAVBB2pBeHEiCCAEQQhqIgtqIQUgBSAISQ0BIAVB+P///wdLDQEgBUEIELMOIgkNAkEIIAVBkMTEACgCACIAQcwIIAAbEQAAAAsQpgwgBigCJCEEIAYoAiAhBQwECxCmDCAGKAIUIQQgBigCECEFDAMLIAggCWohCSALBEAgCUH/ASAL/AsACyAEQQFrIg0gBEEDdkEHbCANQQhJGyETAkAgCkUEQCAAKAIAIQgMAQsgCUEIaiEUIAAoAgAiCEEMayEVIAgpAwBCf4VCgIGChIiQoMCAf4MhGiAGKAIoIRZBACEEIAohCyAIIQUDQCAaUARAA0AgBEEIaiEEIAVBCGoiBSkDAEKAgYKEiJCgwIB/gyIaQoCBgoSIkKDAgH9RDQALIBpCgIGChIiQoMCAf4UhGgsgCSAWKQMAIBUgGnqnQQN2IARqIhdBdGxqKQIAhSIbQiCIIh1Ct9OwhQx+IBtC/////w+DIhtC3aHxywx+hSAdQt2h8csMfiAbQrfTsIUMfoVCIIiFpyIYIA1xIgdqKQAAQoCBgoSIkKDAgH+DIhtQBEBBCCEMA0AgByAMaiEHIAxBCGohDCAJIAcgDXEiB2opAABCgIGChIiQoMCAf4MiG1ANAAsLIBpCAX0gGoMhGiAJIBt6p0EDdiAHaiANcSIHaiwAAEEATgRAIAkpAwBCgIGChIiQoMCAf4N6p0EDdiEHCyAHIAlqIBhBGXYiDDoAACAUIAdBCGsgDXFqIAw6AAAgCSAHQX9zQQxsaiIHQQhqIAggF0F/c0EMbGoiDEEIaigAADYAACAHIAwpAAA3AAAgC0EBayILDQALCyAAIA02AgQgACAJNgIAIAAgEyAKazYCCEGBgICAeCEFIA9FDQIgCCAPQQxsQRNqQXhxIgRrIAQgD2pBCWpBCBCIDwwCCyAAIAZBLGpB9QBBDBDLAkGBgICAeCEFDAELEKYMIAYoAgwhBCAGKAIIIQULIBIgBDYCBCASIAU2AgAgBkEwaiQACyAAKAIEIgogHKdxIQUgHEIZiCIbQv8Ag0KBgoSIkKDAgAF+IR0gACgCACEEA0ACfwJAAkAgBCAFaikAACIcIB2FIhpCgYKEiJCgwIABfSAaQn+Fg0KAgYKEiJCgwIB/gyIaQgBSBEADQCAEQQAgGnqnQQN2IAVqIApxayIIQQxsaiILQQxrKAIAIAFGBEAgAiALQQhrKAIARg0DCyAaQgF9IBqDIhpCAFINAAsLIBxCgIGChIiQoMCAf4MhGiAQRQRAIBpQDQIgGnqnQQN2IAVqIApxIQ4LQQEgGiAcQgGGg1ANAhogBCAOaiwAACIFQQBOBEAgBCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YiDmotAAAhBQsgBCAOaiAbp0H/AHEiEDoAACAEIA5BCGsgCnFqQQhqIBA6AAAgACAAKAIIIAVBAXFrNgIIIAAgACgCDEEBajYCDCAEQQAgDmsiCEEMbGoiAEEMayABNgIAIABBCGsgAjYCAAsgBCAIQQxsakEEayADOAIAIBFBEGokAA8LQQALIRAgGUEIaiIZIAVqIApxIQUMAAsAC+wDAQx9IAIqAgAiByABKgIcIg2UIAIqAgQiCCABKgIYIguUkyIFIAWSIQMgAioCCCIFIAuUIAcgASoCICIGlJMiCSAJkiEEIAAgAioCGCIMIAYgAioCDCIJIAOUIAcgBJQgCCAIIAaUIAUgDZSTIgYgBpIiBpSTkpKSOAIgIAAgAioCFCIOIA0gCSAElCAFIAaUIAcgA5STkpKSOAIcIAAgAioCECINIAsgCSAGlCAIIAOUIAUgBJSTkpKSOAIYIAcgASoCECILlCAIIAEqAgwiBpSTIgMgA5IhAyAFIAaUIAcgASoCFCIKlJMiBCAEkiEEIAAgDCAKIAkgA5QgByAElCAIIAggCpQgBSALlJMiCiAKkiIKlJOSkpI4AhQgACAOIAsgCSAElCAFIAqUIAcgA5STkpKSOAIQIAAgDSAGIAkgCpQgCCADlCAFIASUk5KSkjgCDCAHIAEqAgQiC5QgCCABKgIAIgaUkyIDIAOSIQMgBiAFlCABKgIIIgogB5STIgQgBJIhBCAAIAwgCiAJIAOUIAcgBJQgCCAKIAiUIAsgBZSTIgwgDJIiDJSTkpKSOAIIIAAgDiALIAkgBJQgBSAMlCAHIAOUk5KSkjgCBCAAIA0gBiAJIAyUIAggA5QgBSAElJOSkpI4AgAL1wQCBX0DfyAAKAI4IgooAgghCSAKKAIAIAlrQQJNBEAgCiAJQQNBBEEEEOIGIAooAgghCQsgCigCBCAJQQJ0aiILIAEpAgA3AgAgC0EIaiABQQhqKAIANgIAIAogCUEDaiIJNgIIIAooAgAgCWtBAk0EQCAKIAlBA0EEQQQQ4gYgCigCCCEJCyAKIAlBA2o2AgggCigCBCAJQQJ0aiIBIAIpAgA3AgAgAUEIaiACQQhqKAIANgIAIAMqAgwhBCADKgIIIQUgAyoCBCEHIAMqAgAhBiAAKAI8IgAoAgghAyAAKAIAIANrQQdNBEAgACADQQhBBEEEEOIGIAAoAgghAwsgACADQQhqNgIIIAAoAgQgA0ECdGoiACAEOAIcIAAgBDgCDCAGIAZDAAC0Q5WOQwAAtEOUk0MAAHBClSIEQwAAAD+UjiEGIAAgBSAHQwAAgD8gBSAFkkMAAIC/kouTlCIFQwAAAD+UkyIHIAVDAACAPyAEIAYgBpKTQwAAgL+Si5OUIgYgBiAFIAVDAAAAACAEQwAAAEBdIARDAACAP2BxIgEbIARDAABAQF0gBEMAAABAYHEiAxsgBEMAAIBAXSAEQwAAQEBgcSICGyAEQwAAgD9dIARDAAAAAGBxIgkbkiIIOAIUIAAgByAGIAZDAAAAAEMAAAAAIAUgAxsgAhsgBEMAAKBAXSAEQwAAgEBgcSIDGyABG5IiBDgCECAAIAg4AgQgACAEOAIAIAAgB0MAAAAAQwAAAAAgBSAFIAYgAhsgAxsgARsgCRuSIgQ4AhggACAEOAIIC5UEAg5/AX0jAEEgayIEJABBBCEHAkAgAygCDCIFRQRAQQAhAwwBCyADKAIAIgggAygCCCIMRiEGIAMoAgQiDSADKAIQIhBBAnQiDmoiDyAIIAYbIglFBEBBACEDDAELQQQgBSAFQQRNGyIKQQJ0IQMCQAJAIAVB/////wNLDQAgA0H8////B0sNACAJKgIAIRJBBCELIANBBBCzDiIHRQ0AIAcgEjgCAEEBIQMgBEEBNgIQIAQgBzYCDCAEIAo2AgggBUEBayIRDQEMAgsgCyADQfDdwQAQ0w0ACyAIIA5qIAwgBhshCyAPIA0gBhshCCAJIBFBAEdBAnRqIQYgBUECayEFQQQhCQJ/A0AgBCgCCCIKIBBBAnQiDiAIaiIPIAYgBiALRiIMGyINRQ0BGiANKgIAIRIgBiAOaiALIAwbIQsgDyAIIAwbIQggBUEAR0ECdCANaiEGIAMgCkYEQCAEQQhqIAMgBUEBakEEQQQQ9gYgBCgCDCEHCyAHIAlqIBI4AgAgBCADQQFqIgM2AhAgCUEEaiEJIAVBAWsiBUF/Rw0ACyAEKAIICyEKIAQoAgwhBwsgASACbCADRwRAIARBADYCGCAEQQE2AgwgBEGY2MEANgIIIARCBDcCECAEQQhqQaDYwQAQuA0ACyAAIAI2AhAgACABNgIMIAAgAzYCCCAAIAc2AgQgACAKNgIAIARBIGokAAv0AwIMfQF/IwBBIGsiEiQAIBIgAioCCCINjDgCHCASIAIqAgQiDow4AhggEiACKgIAIg+MOAIUIBJBCGogAyABIBJBFGogBBECAEEAIQMgACAFIA8gEioCCCIFlCAOIBIqAgwiBpSSIA0gEioCECIHlJIiCGAEfyAAIAIpAgA3AhwgACAHIA0gCJSTOAIMIAAgBiAOIAiUkzgCCCAAIAUgDyAIlJM4AgQgAEEkaiACQQhqKAIANgIAIAUgASoCEJMiECABKgIEIgWUIAYgASoCFJMiESABKgIAIgaUkyIJIAmSIQogESABKgIIIgmUIAcgASoCGJMiDCAFlJMiByAHkiELIAAgDCABKgIMIgcgCpQgBSALlCAGIAwgBpQgECAJlJMiDCAMkiIMlJOSkjgCGCAAIBEgByAMlCAGIAqUIAkgC5STkpI4AhQgACAQIAcgC5QgCSAMlCAFIAqUk5KSOAIQIAAgCDgCNCAAIAcgDiAGlCAPIAWUkyIIIAiSIgiUIAUgDSAFlCAOIAmUkyIKIAqSIgqUIAYgDyAJlCANIAaUkyILIAuSIguUk5IgDZM4AjAgACAHIAuUIAYgCJQgCSAKlJOSIA6TOAIsIAAgByAKlCAJIAuUIAUgCJSTkiAPkzgCKEEBBUEACzYCACASQSBqJAAL6AMBD30gAioCACABKgIQkyIKIAEqAgQiBJQgAioCBCABKgIUkyINIAEqAgAiBZSTIgYgBpIhCCANIAEqAggiBpQgAioCCCABKgIYkyIHIASUkyILIAuSIQkgByABKgIMIgsgCJQgBCAJlCAFIAcgBZQgCiAGlJMiByAHkiIHlJOSkiIOIA6UIAogCyAJlCAGIAeUIAQgCJSTkpIiDyAPlCANIAsgB5QgBSAIlCAGIAmUk5KSIg0gDZSSkiAAKgIAIgggCJSTIQhDAAAAACEHIAQgAioCDCIQlCAFIAIqAhAiEZSTIgkgCZIhCSAGIBGUIAQgAioCFCIMlJMiCiAKkiEKAkAgDCALIAmUIAQgCpQgBSAFIAyUIAYgEJSTIgwgDJIiDJSTkpIiEiASlCAQIAsgCpQgBiAMlCAEIAmUk5KSIgQgBJQgESALIAyUIAUgCZQgBiAKlJOSkiIFIAWUkpIiBkMAAAAAXARAIA4gEpQgDyAElCANIAWUkpIhBEEAIQEgCEMAAAAAXiAEQwAAAABecQ0BIAQgBJQgCCAGlJMiBUMAAAAAXQ0BQwAAAAAgBIwgBZGTIAaVIgQgBEMAAAAAXxshB0EBIQEMAQtBASEBIAhDAAAAAF5FDQBBACEBCyABIAMgB2BxC6EEAgN/Bn0CQCAAIAhJBEAgBCACQQxsaiELA0ACQAJAIAcgAEHIAGxqIgotAEQEQCAKLQBFDQIgCigCMCEJIAIgBU8NASAFIAlNDQUgCioCDCIMIAsqAgAiDSAEIAlBDGxqIgkqAgCTlCAKKgIQIg4gCyoCBCIPIAkqAgSTlJIgCioCFCIQIAsqAggiESAJKgIIk5SSQwAAAABgDQIgCigCNCIJIAVPDQUgECARIAQgCUEMbGoiCSoCCJOUIA4gDyAJKgIEk5QgDCANIAkqAgCTlJKSQwAAAABgDQIgCigCOCIJIAVPDQUgECARIAQgCUEMbGoiCSoCCJOUIA4gDyAJKgIEk5QgDCANIAkqAgCTlJKSQwAAAABgDQIgAygCCCICIAMoAgBGBEAgA0HI6MMAELgICyADIAJBAWo2AgggAygCBCACQQN0aiICIAE2AgQgAiAANgIACw8LIAUgCU0NAyACIAVBtPDDABCICwALIApBADoARCAGKAIIIgkgBigCAEYEQCAGQdjowwAQuQgLIAYoAgQgCUECdGogADYCACAGIAlBAWo2AgggCkEYaiIAIAFBAWpBA3BBAnQiCWooAgAgCkEkaiIKIAlqKAIAIAIgAyAEIAUgBiAHIAgQ0QMgCiABQQJqQQNwQQJ0IgpqKAIAIQEgCCAAIApqKAIAIgBLDQALCyAAIAhBuOjDABCICwALIAkgBUGk8MMAEIgLAAu2BAMCfgJ/AX0CQAJAAkAgAiAAKAKsByIFSwRAIAAtALUHIgZFDQICQCABIAVBAnRqKAIAIgUoAoQBIgEgAC0AsAciAk0NACAFKAKAASACQQZ0aiIBIAAqAkAiBzgCOCABIAApAqADIgM3AiwgASAHIAAqAkSSOAI0IAEgA6e+IAApAqgDIgSnvpI4AiQgASADQiCIp74gBEIgiKe+kjgCKCAGQQFGDQMgBSgChAEiASAALQCxByICTQ0AIAUoAoABIAJBBnRqIgEgACoCjAEiBzgCOCABIAApAqwEIgM3AiwgASAHIAAqApABkjgCNCABIAOnviAAKQK0BCIEp76SOAIkIAEgA0IgiKe+IARCIIinvpI4AiggBkECRg0DIAUoAoQBIgEgAC0AsgciAk0NACAFKAKAASACQQZ0aiIBIAAqAtgBIgc4AjggASAAKQK4BSIDNwIsIAEgByAAKgLcAZI4AjQgASADp74gACkCwAUiBKe+kjgCJCABIANCIIinviAEQiCIp76SOAIoIAZBA0YNAyAFKAKEASIBIAAtALMHIgJLDQILIAIgAUHIpMIAEIgLAAsgBSACQaikwgAQiAsACyAFKAKAASACQQZ0aiIBIAAqAqQCIgc4AjggASAAKQLEBiIDNwIsIAEgByAAKgKoApI4AjQgASADp74gACkCzAYiBKe+kjgCJCABIANCIIinviAEQiCIp76SOAIoIAZBBEcNAQsPC0EEQQRBuKTCABCICwAL/QMCDX8BfSMAQSBrIgMkAEEEIQUCQCACKAIMIgRFDQAgAigCACIIIAIoAggiC0YhBiACKAIEIgwgAigCECIPQQJ0Ig1qIg4gCCAGGyIJRQ0AQQQgBCAEQQRNGyIKQQJ0IQICQAJAIARB/////wNLDQAgAkH8////B0sNACAJKgIAIRBBBCEHIAJBBBCzDiIFRQ0AIAUgEDgCAEEBIQcgA0EBNgIQIAMgBTYCDCADIAo2AgggBEEBayICDQEMAgsgByACQfDdwQAQ0w0ACyAIIA1qIAsgBhshCCAOIAwgBhshBiAJIAJBAEdBAnRqIQIgBEECayEEQQQhCQJ/A0AgAygCCCIKIA9BAnQiDSAGaiIOIAIgAiAIRiILGyIMRQ0BGiAMKgIAIRAgAiANaiAIIAsbIQggDiAGIAsbIQYgBEEAR0ECdCAMaiECIAcgCkYEQCADQQhqIAcgBEEBakEEQQQQ9gYgAygCDCEFCyAFIAlqIBA4AgAgAyAHQQFqIgc2AhAgCUEEaiEJIARBAWsiBEF/Rw0ACyADKAIICyEKIAMoAgwhBQsgASAHRwRAIANBADYCGCADQQE2AgwgA0GY2MEANgIIIANCBDcCECADQQhqQaDYwQAQuA0ACyAAIAE2AgwgACABNgIIIAAgBTYCBCAAIAo2AgAgA0EgaiQAC5wEAQt/IwBBIGsiBCQAIAAoAhAiBSABaiEGIAAoAgQhCSAAKAIAIQogASAAKAIIIgcgBWsiAksEQAJAIAZBnPDAA0sEf0EABSAGQaQCbCEDQQAhAiAEIAcEfyAEIAdBpAJsNgIcIAQgACgCDDYCFEEEBUEACzYCGCAEQQhqQQQgAyAEQRRqEPQJIAQoAghBAUcNASAEKAIQIQIgBCgCDAsgAkGgicIAENMNAAsgBCgCDCECIAAgBjYCCCAAIAI2AgwgASECCyAFIQMgAiAGIAVrIgJBACACIAZNGyICSQRAIABBCGogBSACQQRBpAIQ9gYgACgCECEDCwJAIAFFDQAgACgCDCELIAZBAWshDAJAIAFBAXFFBEAgBSECDAELIAsgA0GkAmxqIgggCSAFQQFqIgIgBSAMRiIHGzYCCCAIIApBASAHGzYCBCAIQYCAgIB4NgIAIANBAWohAwsgAUEBRg0AIAJBf3MgBmohCCALIANBpAJsaiEBA0AgAUGAgICAeDYCACABQaQCakGAgICAeDYCACABQQRqQQEgCiAIGzYCACABQQhqIAJBAWoiByAJIAgbNgIAIAFBrAJqIAkgAkECaiICIAcgDEYiBxs2AgAgAUGoAmogCkEBIAcbNgIAIAhBAmshCCABQcgEaiEBIANBAmohAyACIAZHDQALCyAAIAU2AgQgAEEBNgIAIAAgAzYCECAEQSBqJAALrQQCDH8DfiMAQSBrIgkkACABKQMQIQ8gAS0AGCEMAn8gASgCBCIFRQRAQbDVwgAhA0EAIQVBAAwBCwJ/AkAgBUEBaq1CFH4iDkIgiKcNACAOpyICQXhLDQAgBUEJaiIEIAJBB2pBeHEiA2ohAiACIANJDQAgAkH4////B0sNACACQQgQsw4iBkUEQEEIIAJBkMTEACgCACIAQcwIIAAbEQAAAAsgAyAGagwBCxCmDCAJKAIAIgVBCWohBEEACyEDIAEoAgAhAiAEBEAgAyACIAT8CgAACyABKAIMIgoEQCACQQhqIQQgAikDAEJ/hUKAgYKEiJCgwIB/gyEOIAohCyACIQYDQCAOUARAA0AgBkGgAWshBiAEKQMAIQ4gBEEIaiEEIA5CgIGChIiQoMCAf4MiDkKAgYKEiJCgwIB/UQ0ACyAOQoCBgoSIkKDAgH+FIQ4LIAYgDnqnQQN2QWxsaiIHQQxrIghBCGooAgAhDSAIKQIAIRAgAyACIAdrQWxtQRRsaiIIQRRrIAdBFGspAgA3AgAgCEEMayIHIBA3AgAgB0EIaiANNgIAIA5CAX0gDoMhDiALQQFrIgsNAAsLIAEoAggLIQJBIEEIELMOIgEEQCABIAw6ABggASAPNwMQIAEgCjYCDCABIAI2AgggASAFNgIEIAEgAzYCACAAQeT/wgA2AgQgACABNgIAIAlBIGokAA8LQQhBIEGQxMQAKAIAIgBBzAggABsRAAAAC64KAxV/An4HfSMAQdAAayIHJAACQAJAAkAgAEUNACAAQQhrIgsoAgBBAWohBiALIAY2AgAgBkUNASAAKAIADQIgAEF/NgIAIAcgCzYCDCAHIAA2AgggByAAQQRqIgk2AgQgAUUNACABQQhrIgwoAgBBAWohBiAMIAY2AgAgBkUNASABKAIAIgZBf0YNAiABIAZBAWo2AgAgByAMNgIYIAcgATYCFCAHIAFBBGoiEjYCECACRQ0AIAJBCGsiDSgCAEEBaiEGIA0gBjYCACAGRQ0BIAIoAgAiBkF/Rg0CIAIgBkEBajYCACAHIA02AiQgByACNgIgIAcgAkEEaiIONgIcIANFDQAgA0EIayIPKAIAQQFqIQYgDyAGNgIAIAZFDQEgAygCACIGQX9GDQIgAyAGQQFqNgIAIAcgDzYCMCAHIAM2AiwgByADQQRqIhM2AiggB0GAgO6tBDYCTCAHQoCAgPyDgICUwQA3AkQgB0Kuj4X7g4CA0MAANwI8IAdC9tHwhZTcnqo/NwI0IwBBQGoiCCQAIAdBNGoiBioCECEdIAYqAhghHiAGKgIMIR8gBioCFCEgIAYqAgghISAGKgIEISIgBioCACEjIAkoAgghECAIQTxqIhVBADoAACAIQTRqIhZCADcCACAIQSxqIhdCADcCACAIQSRqIhhCADcCACAIQRxqIhlCADcCACAIQgA3AhQgCSgCACIKIBBGBEAjAEEgayIGJABBBCAKQQF0IhEgEUEETRsiEa1C1AF+IhtCIIhCAFIEQEEAQQBB5IbCABDTDQALAkAgG6ciGkH8////B00EfyAGIAoEfyAGIApB1AFsNgIcIAYgCSgCBDYCFEEEBUEACzYCGCAGQQhqQQQgGiAGQRRqEPQJIAYoAghBAUcNASAGKAIQIRQgBigCDAVBAAsgFEHkhsIAENMNAAsgBigCDCEKIAkgETYCACAJIAo2AgQgBkEgaiQACyAJKAIEIBBB1AFsaiIGQQA2AgAgBiAIKQIMNwIEIAZBADYCQCAGQgA3AjggBkEMaiAIQRRqKQIANwIAIAZBFGogGSkCADcCACAGQRxqIBgpAgA3AgAgBkEkaiAXKQIANwIAIAZBLGogFikCADcCACAGQTRqIBUtAAA6AAAgBkHNmbPuAzYCqAEgBkIANwKgASAGIB44AqwBIAYgHTgCnAEgBiAgOAKYASAGICE4ApQBIAYgIjgCkAEgBiAjOAKMASAGIAU4AogBIAYgHzgChAEgBiAEOAKAASAGQcwAaiAOQQhqKAIAIgo2AgAgBiAOKQIAIhs3AkQgBkHYAGogE0EIaigCACIONgIAIAYgEykCACIcNwJQIAZB5ABqIBJBCGooAgA2AgAgBiASKQIANwJcIAZB8ABqIAo2AgAgBiAbNwJoIAYgHDcCdCAGQfwAaiAONgIAIAZB0AFqQQA2AgAgBkHIAWpCADcCACAGQcABakIANwIAIAZBuAFqQgA3AgAgBkIANwKwASAJIBBBAWo2AgggCEFAayQAIAMgAygCAEEBazYCACAPIA8oAgBBAWsiAzYCACADRQRAIAdBMGoQqA0LIAIgAigCAEEBazYCACANIA0oAgBBAWsiAjYCACACRQRAIAdBJGoQqA0LIAEgASgCAEEBazYCACAMIAwoAgBBAWsiATYCACABRQRAIAdBGGoQqA0LIABBADYCACALIAsoAgBBAWsiADYCACAARQRAIAdBDGoQ0woLIAdB0ABqJAAPCxCbDwsACxCcDwALiQQCBn0GfwJAIAMEQAJAIANBAUYNACAEKgIAIgYgAioCDJQgBCoCBCIHIAJBEGoqAgCUkiAEKgIIIgggAkEUaioCAJSSIgUgBiACKgIAlCAHIAJBBGoqAgCUkiAIIAJBCGoqAgCUkiIJXiIEIQtBAiEMIANBAkYNACAFIAkgBBshBSADQf3///8DaiEOIAJBGGohBCADQf////8DcUEDRwRAIA5B/////wNxQQFqQf7///8HcSEQA0AgBiAEKgIAlCAHIARBBGoqAgCUkiAIIARBCGoqAgCUkiIJIAVeIQ0gBiAEQQxqKgIAlCAHIARBEGoqAgCUkiAIIARBFGoqAgCUkiIKIAkgBSANGyIFXiEPIAogBSAPGyEFIAxBAWogDCALIA0bIA8bIQsgBEEYaiEEIAwgEEchDSAMQQJqIQwgDQ0ACwsgDkEBcQ0AIAwgCyAGIAQqAgCUIAcgBEEEaioCAJSSIAggBEEIaioCAJSSIAVeGyELCyADIAtNDQEgACABKgIYIgY4AiAgACABKgIUIgc4AhwgACABKgIQIgg4AhggACACIAtBDGxqIgEqAggiBTgCFCAAIAEqAgQiCTgCECAAIAEqAgAiCjgCDCAAIAUgBpM4AgggACAJIAeTOAIEIAAgCiAIkzgCAA8LQQBBAEGY/cMAEIgLAAsgCyADQcDAwwAQiAsAC9kDAQx9IAIqAgAiCyADKgIIIgeUIAIqAggiDCADKgIAIgmUkyIKIAqSIQUgAioCBCIKIAmUIAsgAyoCBCIGlJMiDSANkiEEIAYgAioCDCINIAWUIAsgBJQgDCAMIAaUIAogB5STIgYgBpIiBpSTkpIiDiAHIA0gBJQgCiAGlCALIAWUk5KSIgcgB5QgCSANIAaUIAwgBZQgCiAElJOSkiIFIAWUIA4gDpSSkpEiBJUhCQJAAkACQCAFIASVIgUgBZQgByAElSIEIASUkiIGQwAAAABcBEAgCSABKgIAIgeUIg4gBCAEIAaRIgaVIAEqAgQiD5QiCJQgBSAFIAaVIA+UIgaUIA6Tkl4NASAHjCEHDAMLIAEqAgAgCZghBwwBC0MAAAAAIQgLQwAAAAAhBgsgACACKgIYIAggBCABKgIIIgSUkiIIIA0gCyAHIAkgBJSSIgeUIAogBiAFIASUkiIFlJMiBCAEkiIElCALIAwgBZQgCyAIlJMiCSAJkiIJlCAKIAogCJQgDCAHlJMiCCAIkiIIlJOSkpI4AgggACACKgIUIAcgDSAJlCAMIAiUIAsgBJSTkpKSOAIEIAAgAioCECAFIA0gCJQgCiAElCAMIAmUk5KSkjgCAAveAwINfQF/IAIqAggiCSADKgIEIgeUIAIqAgQiCiADKgIIIg2UkyIFIAWSIQYgAioCACILIA2UIAkgAyoCACIFlJMiDCAMkiEEIAUgAioCDCIMIAaUIAkgBJQgCiAKIAWUIAsgB5STIgUgBZIiDpSTkpIiCCABKgIYIgWUIAcgDCAElCALIA6UIAkgBpSTkpIiByABKgIclJIgDSAMIA6UIAogBpQgCyAElJOSkiIEIAEqAiCUkiENIAFBGGohAwJAIAEqAgwiDiAIlCAHIAEqAhCUkiAEIAEqAhSUkiIPIAEqAgggBJQgASoCACIGIAiUIAEqAgQgB5SSkiIQXUUEQCABQQxqIAMgDSAPXSIRGyEDIA4gBSARGyEFDAELIA0gEF1FDQAgBiEFIAEhAwsgACACKgIYIAMqAgggBCABKgIkIgaUkiIEIAwgCyADKgIEIAcgBpSSIgeUIAogBSAIIAaUkiIFlJMiBiAGkiIGlCALIAkgBZQgCyAElJMiCCAIkiIIlCAKIAogBJQgCSAHlJMiBCAEkiIElJOSkpI4AgggACACKgIUIAcgDCAIlCAJIASUIAsgBpSTkpKSOAIEIAAgAioCECAFIAwgBJQgCiAGlCAJIAiUk5KSkjgCAAuoBAIIfwF+IwBBQGoiBSQAAkACQAJAAkAgAEUNACAAQQhrIgkoAgBBAWohByAJIAc2AgAgB0UNASAAKAIAIgdBf0YNAiAAIAdBAWo2AgAgBSAJNgIMIAUgADYCCCAFIABBBGoiCzYCBCACRQ0AIAJBCGsiBygCAEEBaiEIIAcgCDYCACAIRQ0BIAIoAgAiCEF/Rg0CIAIgCEEBajYCACAFIAc2AhggBSACNgIUIAUgAkEEaiIKNgIQIANFDQAgA0EIayIIKAIAQQFqIQYgCCAGNgIAIAZFDQEgAygCACIGQX9GDQIgAyAGQQFqNgIAIAUgCDYCJCAFIAM2AiAgBSADQQRqIgw2AhwgCyABvSINpyANQiCIpxC4DCIGRQ0DIAVBKGoiC0EIaiAKQQhqKAIANgIAIAUgCikCADcDKCAFQTxqIAxBCGooAgA2AgAgBSAMKQIANwI0IAYoAkAgBigCRCIKKAIIQQFrQXhxakEIaiAGQfQAaiALIAQgCigCIBEUACEGIAMgAygCAEEBazYCACAIIAgoAgBBAWsiAzYCACADRQRAIAVBJGoQqA0LIAIgAigCAEEBazYCACAHIAcoAgBBAWsiAjYCACACRQRAIAVBGGoQqA0LIAAgACgCAEEBazYCACAJIAkoAgBBAWsiADYCACAARQRAIAVBDGoQ7wwLIAVBQGskACAGDwsQmw8LAAsQnA8AC0HMzsEAQcwAQZjPwQAQ1wsAC/cDAgF/DH0jAEFAaiIEJAAgAyoCACACKgIQIg6TIgkgAioCBCIKlCADKgIEIAIqAhQiD5MiCyACKgIAIgyUkyIHIAeSIQUgCyACKgIIIgeUIAMqAgggAioCGCIQkyIGIAqUkyINIA2SIQggBCAGIAIqAgwiDSAFlCAKIAiUIAwgBiAMlCAJIAeUkyIGIAaSIgaUk5KSOAIUIAQgCyANIAaUIAwgBZQgByAIlJOSkjgCECAEIAkgDSAIlCAHIAaUIAogBZSTkpI4AgwgAAJ/IAEoAkBBgICAgHhHBEAgBEEYaiABIARBDGpBAEP//39/EHEgBCgCLEEERwRAIAQtACQhAyAEKgIgIQUgBCoCHCEIIAQqAhghCSAEKAIoDAILQbCSwwAQkQ8ACyAEQRhqIAEgBEEMakEAEJIBIAQtACghAyAEKgIkIQUgBCoCICEIIAQqAhwhCSAEKAIYCzYCFCAAQQI2AhAgACADOgAMIAAgECAFIA0gDCAIlCAKIAmUkyILIAuSIguUIAwgByAJlCAMIAWUkyIGIAaSIgaUIAogCiAFlCAHIAiUkyIFIAWSIgWUk5KSkjgCCCAAIA8gCCANIAaUIAcgBZQgDCALlJOSkpI4AgQgACAOIAkgDSAFlCAKIAuUIAcgBpSTkpKSOAIAIARBQGskAAvTAwERfSADKgIAIAIqAhAiEZMiCSACKgIEIguUIAMqAgQgAioCFCISkyIOIAIqAgAiDJSTIgYgBpIhBiAOIAIqAggiDZQgAyoCCCACKgIYIhOTIgcgC5STIgggCJIhCCABKgIIIhQgByACKgIMIg8gBpQgCyAIlCAMIAcgDJQgCSANlJMiByAHkiIKlJOSkiIHlCABKgIAIhUgCSAPIAiUIA0gCpQgCyAGlJOSkiIQlCABKgIEIhYgDiAPIAqUIAwgBpQgDSAIlJOSkiIOlJKSIQoCfyAEBEAgByEGIA4hCCAQIQlBASAKQwAAAABfDQEaCyAHIBQgCpSTIQYgDiAWIAqUkyEIIBAgFSAKlJMhCSAKQwAAAABfCyEDQQIhAiAAIAUgByAGkyIFIAWUIA4gCJMiBSAFlCAQIAmTIgUgBZSSkpFdBH9BAgUgACAGIA8gDCAIlCALIAmUkyIFIAWSIgWUIAwgDSAJlCAMIAaUkyIHIAeSIgeUIAsgCyAGlCANIAiUkyIGIAaSIgaUk5KSIBOSOAIIIAAgCCAPIAeUIA0gBpQgDCAFlJOSkiASkjgCBCAAIBEgCSAPIAaUIAsgBZQgDSAHlJOSkpI4AgAgAws6AAwLmQoDCn8DfQF+IwBBgAFrIgMkACADIAEQmQUgASgCMCIGrUIMfiIRpyEFAkACQAJAIBFCIIinDQAgBUH8////B0sNACABKAIsIQQCQCAFRQRAQQQhCAwBC0EEIQcgBiEJIAVBBBCzDiIIRQ0BCyAFBEAgCCAEIAX8CgAACyABKAI8IgVBA3QhBCAFQf////8BSw0BIARB/P///wdLDQEgASgCOCEKAkAgBEUEQEEEIQFBACEHDAELQQQhCyAFIQcgBEEEELMOIgFFDQILIAQEQCABIAogBPwKAAALIANBQGsiBEEgaiADQSBqIgopAgA3AwAgBEEYaiADQRhqIgspAgA3AwAgBEEQaiADQRBqIgwpAgA3AwAgBEEIaiADQQhqIg0pAgA3AwAgAyAFNgJ8IAMgATYCeCADIAc2AnQgAyAGNgJwIAMgCDYCbCADIAk2AmggAyADKQIANwNAIwBBMGsiByQAAkAgBCgCMCIFRQ0AIAIqAgghDiACKgIEIQ8gAioCACEQIAQoAiwiBiEBIAVBDGwiBUEMayIJQQxuQQFxRQRAIAEgECABKgIAlDgCACABIA8gASoCBJQ4AgQgASAOIAEqAgiUOAIIIAFBDGohAQsgCUEMSQ0AIAUgBmohBQNAIAEgECABKgIAlDgCACABQQRqIgYgDyAGKgIAlDgCACABQQhqIgYgDiAGKgIAlDgCACABQQxqIgYgECAGKgIAlDgCACABQRBqIgYgDyAGKgIAlDgCACABQRRqIgYgDiAGKgIAlDgCACAFIAFBGGoiAUcNAAsLIAdBCGogBBCZBSAEQShqIQUgBygCECIBBEAgAUEGdCAHKAIMIgFqIQYgAioCCCEOIAIqAgQhDyACKgIAIRADQCABIBAgASoCAJQ4AgAgAUEEaiICIA8gAioCAJQ4AgAgAUEIaiICIA4gAioCAJQ4AgAgAUEQaiICIBAgAioCAJQ4AgAgAUEUaiICIA8gAioCAJQ4AgAgAUEYaiICIA4gAioCAJQ4AgAgAUEgaiICIBAgAioCAJQ4AgAgAUEkaiICIA8gAioCAJQ4AgAgAUEoaiICIA4gAioCAJQ4AgAgAUEwaiICIBAgAioCAJQ4AgAgAUE0aiICIA8gAioCAJQ4AgAgAUE4aiICIA4gAioCAJQ4AgAgBiABQUBrIgFHDQALCyADIAcpAgg3AgAgAyAFKQIANwIoIAMgBCkCNDcCNCADQTBqIAVBCGooAgA2AgAgA0E8aiAEQTxqKAIANgIAIANBCGogB0EIaiIBQQhqKQIANwIAIANBEGogAUEQaikCADcCACADQRhqIAFBGGopAgA3AgAgA0EgaiABQSBqKQIANwIAIAQoAgAiAQRAIAQoAgQgAUEGdEHAABCIDwsgBCgCDCIBBEAgBCgCECABQQJ0QQQQiA8LIAQoAhgiAQRAIAQoAhwgAUEDdEEEEIgPCyAHQTBqJABBwABBBBCzDiIBRQ0CIAEgAykCADcCACABQThqIANBOGopAgA3AgAgAUEwaiADQTBqKQIANwIAIAFBKGogA0EoaikCADcCACABQSBqIAopAgA3AgAgAUEYaiALKQIANwIAIAFBEGogDCkCADcCACABQQhqIA0pAgA3AgAgAEGApsMANgIEIAAgATYCACADQYABaiQADwsgByAFQdjVwgAQ0w0ACyALIARB2NXCABDTDQALQQRBwABBkMTEACgCACIAQcwIIAAbEQAAAAvVAwENfUMAAIA/IQoCfSACKgIEIgsgAyoCACIMlCACKgIAIg0gAyoCBCIPlJMiCCAIkiEEIAIqAggiCCAPlCALIAMqAggiCZSTIg4gDpIhBUMAAAAAIAkgAioCDCIOIASUIAsgBZQgDSANIAmUIAggDJSTIgkgCZIiCZSTkpIiECAQlCAMIA4gBZQgCCAJlCALIASUk5KSIgwgDJQgDyAOIAmUIA0gBJQgCCAFlJOSkiIEIASUkpIiBUMAAAAAXkUNABogECAFkSIHlSEGIAQgB5UhCiAMIAeVCyIHIAEqAgAiBZQgCiABKgIEIgyUkiAGIAEqAggiBJSSIAcgASoCDCIPlCAKIAEqAhAiCZSSIAYgASoCFCIQlJJeIQMgACACKgIYIAYgASoCGCIGlCAEIBAgAxuSIgQgDiANIAogBpQgDCAJIAMbkiIKlCALIAcgBpQgBSAPIAMbkiIGlJMiByAHkiIHlCANIAggBpQgDSAElJMiBSAFkiIFlCALIAsgBJQgCCAKlJMiBCAEkiIElJOSkpI4AgggACACKgIUIAogDiAFlCAIIASUIA0gB5STkpKSOAIEIAAgAioCECAGIA4gBJQgCyAHlCAIIAWUk5KSkjgCAAvHAwEQfSADKgIAIAIqAhAiE5MiCCACKgIEIgqUIAMqAgQgAioCFCIUkyILIAIqAgAiDJSTIgYgBpIhBiALIAIqAggiDZQgAyoCCCACKgIYIhWTIgcgCpSTIgkgCZIhCSAHIAIqAgwiDyAGlCAKIAmUIAwgByAMlCAIIA2UkyIHIAeSIg6Uk5KSIgcgB5QgCCAPIAmUIA0gDpQgCiAGlJOSkiIQIBCUIAsgDyAOlCAMIAaUIA0gCZSTkpIiCyALlJKSIQ4gASoCACIRIBGUIRICfyAEBEAgByEGIAshCSAQIQhBASAOIBJfDQEaCyAHIBEgDpGVIgiUIQYgCyAIlCEJIBAgCJQhCCAOIBJfCyEDQQIhAiAAIAUgByAGkyIFIAWUIAsgCZMiBSAFlCAQIAiTIgUgBZSSkpFdBH9BAgUgACAGIA8gDCAJlCAKIAiUkyIFIAWSIgWUIAwgDSAIlCAMIAaUkyIHIAeSIgeUIAogCiAGlCANIAmUkyIGIAaSIgaUk5KSIBWSOAIIIAAgCSAPIAeUIA0gBpQgDCAFlJOSkiAUkjgCBCAAIBMgCCAPIAaUIAogBZQgDSAHlJOSkpI4AgAgAws6AAwLlAQBC38jAEGAAWsiBCQAIAEoAgAhAiABQQA2AgAgBEEIaiIDQQhqIgkgAUEMaikCADcDACADQRBqIgogAUEUaikCADcDACADQRhqIgsgAUEcaikCADcDACADQSBqIgwgAUEkaigCADYCACAEIAEpAgQ3AwgCQAJAIAJBAXFFBEAgAUEEaiEDIAFBLGohBiABKAJYIQcgASgCVCEFIAEoAlAhCANAIAEoAighAiABQQA2AiggAkEBcQRAIAAgAjYCACAAIAYpAgA3AgQgAEEMaiAGQQhqKQIANwIAIABBFGogBkEQaikCADcCACAAQRxqIAZBGGopAgA3AgAgAEEkaiAGQSBqKAIANgIADAQLIAEgBUEBaiIFNgJUIAgoAgxBAWsgBU0EQCAHIAgoAhBBAmtPDQMgAUEANgJUIAEgB0EBaiIHNgJYQQAhBQsgBEEwaiICIAggBSAHEKICIAEgAkHQAPwKAAAgCSADQQhqKQIANwMAIAogA0EQaikCADcDACALIANBGGopAgA3AwAgDCADQSBqKAIANgIAIAEoAgAhAiABQQA2AgAgBCADKQIANwMIIAJBAXFFDQALCyAAIAI2AgAgACAEKQMINwIEIABBDGogCSkDADcCACAAQRRqIAopAwA3AgAgAEEcaiALKQMANwIAIABBJGogDCgCADYCAAwBCyAAQQA2AgALIARBgAFqJAALpAQCB38BfSABQQRqIQUgAUGEAWohBwNAAkACfyABKAKQASIDRQRAIAUhAiAHIgMoAgBBIU8EQCABKAIIIQIgBSEDCyADKAIAIgRFBEAgAUEANgKQAUEADAILIAMgBEEBayIDNgIAIAIgA0ECdGooAgAhAwsgAUEANgKQASADKAIcQf////8DcUEBRw0BIAMoAgwhAUEBCyEDIAAgATYCBCAAIAM2AgAPCyADKAIMIgIgASgCiAEiBigCCCIDSQRAQQEhAwJAIAEoAowBIgQqAgwiCSAGKAIEIAJBBnRqIgIqAgBgRQ0AIAIqAgQgBCoCEF9FDQAgAioCCCAEKgIUX0UNACACKgIQIAQqAgBgRQ0AIAIqAhQgBCoCBGBFDQAgAioCGCAEKgIIYEUNACABIAI2ApABIAQqAgwhCUEAIQMLIAIqAiAgCV9FDQEgAioCJCAEKgIQX0UNASACKgIoIAQqAhRfRQ0BIAIqAjAgBCoCAGBFDQEgAioCNCAEKgIEYEUNASACKgI4IAQqAghgRQ0BIAJBIGohCCADRQRAAn8gBygCACIEQSFJBEAgBCECIAUhBkEgIQQgBwwBCyABKAIEIQIgASgCCCEGIAULIQMgAiAERgRAIAEQrAQgASgCBCECIAEoAgghBiAFIQMLIAYgAkECdGogCDYCACADIAMoAgBBAWo2AgAMAgsgASAINgKQAQwBCwsgAiADQazXwQAQiAsAC6QEAgd/AX0gAUEEaiEFIAFBhAFqIQcDQAJAAn8gASgCkAEiA0UEQCAFIQIgByIDKAIAQSFPBEAgASgCCCECIAUhAwsgAygCACIERQRAIAFBADYCkAFBAAwCCyADIARBAWsiAzYCACACIANBAnRqKAIAIQMLIAFBADYCkAEgAygCHEH/////A3FBAUcNASADKAIMIQFBAQshAyAAIAE2AgQgACADNgIADwsgAygCDCICIAEoAogBIgYoAggiA0kEQEEBIQMCQCABKAKMASIEKgIMIgkgBigCBCACQQZ0aiICKgIAYEUNACACKgIEIAQqAhBfRQ0AIAIqAgggBCoCFF9FDQAgAioCECAEKgIAYEUNACACKgIUIAQqAgRgRQ0AIAIqAhggBCoCCGBFDQAgASACNgKQASAEKgIMIQlBACEDCyACKgIgIAlfRQ0BIAIqAiQgBCoCEF9FDQEgAioCKCAEKgIUX0UNASACKgIwIAQqAgBgRQ0BIAIqAjQgBCoCBGBFDQEgAioCOCAEKgIIYEUNASACQSBqIQggA0UEQAJ/IAcoAgAiBEEhSQRAIAQhAiAFIQZBICEEIAcMAQsgASgCBCECIAEoAgghBiAFCyEDIAIgBEYEQCABEK0EIAEoAgQhAiABKAIIIQYgBSEDCyAGIAJBAnRqIAg2AgAgAyADKAIAQQFqNgIADAILIAEgCDYCkAEMAQsLIAIgA0G468IAEIgLAAuLBAIOfQF/AkACQCABKgIMIgggASoCACIDkyILIAIqAgAiDCADk5QgASoCECIJIAEqAgQiBJMiDSACKgIEIg4gBJOUkiABKgIUIgogASoCCCIFkyIPIAIqAggiECAFk5SSIgZDAAAAAF8EQCADIQggBCEJIAUhCgwBCyAGIAsgC5QgDSANlJIgDyAPlJIiB2AEQEMBAAAAIQcMAQsgB0MAAAAAWw0BQwAAgD8gBiAHlSIGkyEHIAUgDyAGlJIhCiAEIA0gBpSSIQkgAyALIAaUkiEIQQEhEQsCQAJAIAggDFsNAEEAIQEgDIsiA0MAAIB/Ww0BIAiLIgRDAACAf1sNASAIIAyTiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfRQ0BCwJAIAkgDlsNAEEAIQEgDosiA0MAAIB/Ww0BIAmLIgRDAACAf1sNASAJIA6TiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfRQ0BC0EBIQEgCiAQWw0AQQAhASAQiyIDQwAAgH9bDQAgCosiBEMAAIB/Ww0AQQEhASAKIBCTiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfIQELIAAgBjgCGCAAIAc4AhQgACARNgIQIAAgAToADCAAIAo4AgggACAJOAIEIAAgCDgCAA8LQfCSwwBBHkGQk8MAENYMAAuICwIWfwR+IwBBEGsiECQAIAApAxAgAa0gAq1CIIaEhSIZQiCIIhtCt9OwhQx+IBlC/////w+DIhlC3aHxywx+hSAbQt2h8csMfiAZQrfTsIUMfoVCIIiFIRsgACgCCEUEQCAQQQhqIREjAEEwayIFJAAgBSAAQRBqNgIoIAAoAgwhByAFIAVBKGo2AiwCQAJAAkACfwJAIAcgB0EBaiIDTQRAIAAoAgQiDCAMQQFqQQN2QQdsIAxBCEkbIgRBAXYgA0kEQCAEQQFqIgQgAyADIARJGyIDQQ9JDQIgA0H/////AU0EQEF/IANBA3RBB25BAWtndiIDQf7///8BSw0FIANBAWoMBAsQpgwgBSgCJCEDIAUoAiAhBAwGCyAAIAVBLGpB9wBBCBDLAkGBgICAeCEEDAULEKYMIAUoAgwhAyAFKAIIIQQMBAtBBEEIQRAgA0EISRsgA0EESRsLIgNBA3QiCCADQQhqIg0gCGoiBEsNACAEQfj///8HSw0AIARBCBCzDiIGDQFBCCAEQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAUoAhQhAyAFKAIQIQQMAQsgBiAIaiEGIA0EQCAGQf8BIA38CwALIANBAWsiCiADQQN2QQdsIApBCEkbIRICQCAHRQRAIAAoAgAhCAwBCyAGQQhqIRMgACgCACIIQQhrIRQgCCkDAEJ/hUKAgYKEiJCgwIB/gyEZIAUoAighFUEAIQMgByENIAghBANAIBlQBEADQCADQQhqIQMgBEEIaiIEKQMAQoCBgoSIkKDAgH+DIhlCgIGChIiQoMCAf1ENAAsgGUKAgYKEiJCgwIB/hSEZCyAGIBUpAwAgFCAZeqdBA3YgA2oiFkEDdGspAgCFIhpCIIgiHEK307CFDH4gGkL/////D4MiGkLdofHLDH6FIBxC3aHxywx+IBpCt9OwhQx+hUIgiIWnIhcgCnEiCWopAABCgIGChIiQoMCAf4MiGlAEQEEIIQ4DQCAJIA5qIQkgDkEIaiEOIAYgCSAKcSIJaikAAEKAgYKEiJCgwIB/gyIaUA0ACwsgGUIBfSAZgyEZIAYgGnqnQQN2IAlqIApxIglqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQkLIAYgCWogF0EZdiIOOgAAIBMgCUEIayAKcWogDjoAACAGIAlBf3NBA3RqIAggFkF/c0EDdGopAAA3AwAgDUEBayINDQALCyAAIAo2AgQgACAGNgIAIAAgEiAHazYCCEGBgICAeCEEIAxFDQAgCCAMQQN0QQ9qQXhxIgNrIAMgDGpBCWpBCBCIDwsgESADNgIEIBEgBDYCACAFQTBqJAALIAAoAgQiByAbp3EhAyAbQhmIIhpC/wCDQoGChIiQoMCAAX4hHCAAKAIAIQQDQAJ/AkACQCADIARqKQAAIhsgHIUiGUKBgoSIkKDAgAF9IBlCf4WDQoCBgoSIkKDAgH+DIhlCAFIEQANAIAQgGXqnQQN2IANqIAdxQQN0ayIIQQhrKAIAIAFGBEAgAiAIQQRrKAIARg0DCyAZQgF9IBmDIhlCAFINAAsLIBtCgIGChIiQoMCAf4MhGSAPRQRAIBlQDQIgGXqnQQN2IANqIAdxIQsLQQEgGSAbQgGGg1ANAhogBCALaiwAACIDQQBOBEAgBCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhAwsgBCALaiAap0H/AHEiDzoAACAEIAtBCGsgB3FqQQhqIA86AAAgACAAKAIIIANBAXFrNgIIIAAgACgCDEEBajYCDCAEIAtBA3RrIgBBCGsgATYCACAAQQRrIAI2AgALIBBBEGokAA8LQQALIQ8gGEEIaiIYIANqIAdxIQMMAAsAC64EAQl/IwBBIGsiAiQAAkAgASgCBCIDRQRAIABBgICAgHg2AgAMAQsgASADQQFrNgIEAn8gASgCACIBKAIEIgVBB00EQCACQoHKADcDCEEBIQQgAkEIahCiDQwBCyABIAVBCGsiBTYCBCABIAEoAgAiA0EIajYCACACIAMpAAAQpwggAigCACEEIAIoAgQLIQMCQAJAIARBAXENACADRQRAQQQhA0EAIQRBACEBDAILAn8CQEGAgAggAyADQYCACE8bIgRBA3QiBkEEELMOIgcEQCACIAc2AgwgAiAENgIIQQAhBiACQQA2AhAgASgCACEJQQAhBANAIAVBBEkNAiABIAVBBGsiBTYCBCABIAYgCWoiCEEEaiIHNgIAIAVBBEkEQCACQoHKADcDGCACQRhqEKINDAQLIAgoAAAhCCABIAVBBGsiBTYCBCABIAdBBGo2AgAgBygAACEHIAIoAgggBEYEQCACQQhqQcirwQAQuAgLIAIoAgwgBmoiCiAINgIAIApBBGogBzYCACACIARBAWoiBDYCECAGQQhqIQYgAyAERw0ACyACKAIMIQMgAigCCCIBQYCAgIB4Rw0EDAMLQQQgBkG4q8EAENMNAAsgAkKBygA3AxggAkEYahCiDQshAyACKAIIIgFFDQAgAigCDCABQQN0QQQQiA8LIABBgYCAgHg2AgAgACADNgIEDAELIAAgBDYCCCAAIAM2AgQgACABNgIACyACQSBqJAALnQQBBX8jAEHgAGsiAiQAAkACQAJAIAAEQCAAQRBrIgEoAgAiBEEBaiEDIAEgAzYCACADRQ0BIAAoAgANAiAAKALcBSEDIABBAjYC3AUgASAENgIAQQAhASADQQJHBEAgAkEIaiIBQRBqIgQgAEHwBWopAwA3AwAgAUEIaiIFIABB6AVqKQMANwMAIAIgACkD4AU3AwggAkEgaiIBQTxqIABB2AVqKAIANgIAIAFBNGogAEHQBWopAgA3AgAgAUEsaiAAQcgFaikCADcCACABQSRqIABBwAVqKQIANwIAIAFBHGogAEG4BWopAgA3AgAgAUEUaiAAQbAFaikCADcC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AEIANwO4BCAAQYCU69wDNgKwBCAAQQA2AqAEIABCADcDmAQgAEGAlOvcAzYCkAQgAEEANgKABCAAQgA3A/gDIABBgJTr3AM2AvADIABBADYC4AMgAEIANwPYAyAAQYCU69wDNgLQAyAAQQA2AsADIABCADcDuAMgAEGAlOvcAzYCsAMgAEEANgKgAyAAQgA3A5gDIABBgJTr3AM2ApADIABBADYCgAMgAEIANwP4AiAAQYCU69wDNgLwAiAAQQA2AuACIABBADYC2AIgAEIANwPQAiAAQYCU69wDNgLIAiAAQQA2ArgCIABCADcDsAIgAEGAlOvcAzYCqAIgAEEANgKYAiAAQgA3A5ACIABBgJTr3AM2AogCIABBADYC+AEgAEIANwPwASAAQYCU69wDNgLoASAAQgA3A9gBIABBADYC0AEgAEIANwPIASAAQYCU69wDNgLAASAAQQA2ArABIABCADcDqAEgAEGAlOvcAzYCoAEgAEEANgKQASAAQgA3A4gBIABBgJTr3AM2AoABIABBADYCcCAAQgA3A2ggAEGAlOvcAzYCYCAAQQA2AlAgAEEANgJIIABCADcDQCAAQYCU69wDNgI4IABBADYCKCAAQgA3AyAgAEGAlOvcAzYCGCAAQQA2AgggAEKBgICAEDcDACAAQQhqC+kDAQp/IwBB0ABrIgEkAAJAAkACQCAABEAgAEEQayICKAIAIgRBAWohAyACIAM2AgAgA0UNASAAKAIADQIgAC0AiAghAyAAQQI6AIgIIAIgBDYCAEEAIQIgA0ECRwRAIAFByABqIgIgAEGACGopAgA3AwAgAUFAayIEIABB+AdqKQIANwMAIAFBOGoiBSAAQfAHaikCADcDACABQTBqIgYgAEHoB2opAgA3AwAgAUEoaiIHIABB4AdqKQIANwMAIAFBIGoiCCAAQdgHaikCADcDACABQRhqIgkgAEHQB2opAgA3AwAgAUEOaiIKIABBiwhqLQAAOgAAIAEgACkCyAc3AxAgASAALwCJCDsBDEHQAEEEELMOIgBFDQQgAEEANgIIIABCgYCAgBA3AgAgACABKQMQNwIMIABBFGogCSkDADcCACAAQRxqIAgpAwA3AgAgAEEkaiAHKQMANwIAIABBLGogBikDADcCACAAQTRqIAUpAwA3AgAgAEE8aiAEKQMANwIAIABBxABq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///7BzYCUCAFQoCAgIDw//+/fzcDSCAFQv////v///+//wA3A0AgBUL////7BzcDOCAFQoCAgIDw//+/fzcDMCAFQv////v///+//wA3AyggBUL////7BzcDICAFQoCAgIDw//+/fzcDGCAFQv////v///+//wA3AxAgBUL////7BzcCvAEgBUEAOgDEASAFQv////sHNwPYASAFQQA6AOABIAVBuAFqIAtBD2ooAAA2AAAgBUGxAWogC0EIaikAADcAACAFIAcpAE03AKkBIAUgBykAOjcAxQEgBUHNAWogDEEIaikAADcAACAFQdQBaiAMQQ9qKAAANgAAIAUgBykAJzcA4QEgBUHpAWogDUEIaikAADcAACAFQfABaiANQQ9qKAAANgAAIAVBADoA/AEgBUL////7BzcC9AEgBUEAOgCYAiAFQv////sHNwOQAiAFQQA7AbgCIAVBADoAtAIgBUL////7BzcCrAIgBUGBjoAINgG6AiAFQYwCaiAOQQ9qKAAANgAAIAVBhQJqIA5BCGopAAA3AAAgBSAHKQAUNwD9ASAFQagCaiAPQQ9qKAAANgAAIAVBoQJqIA9BCGopAAA3AAAgBSAHKQABNwCZAiAKQQhqKAIAIQUgCikCACEQIAQgBCgCAEEBazYCACAGQYABaiAFNgIAIAZBnAFqIARBDGooAgA2AgAgBCkCBCERIAkgCSgCAEEBayIENgIAIAYgEDcDeCAGIBE3ApQBIARFBEAgBkHcAmoQqA0LIAMgAygCAEEBazYCACAIIAgoAgBBAWsiAzYCACADRQRAIAZBDGoQqA0LIAZB4AJqIAZBEGpBwAL8CgAAQeACQRAQsw4iA0UNAyADQQA2AhAgA0KBgICAEDcDACADQRRqIAZB1AJqQcwC/AoAACAGQaAFaiQAIANBEGoPCxCbDwsACxCcDwALQRBB4AJBkMTEACgCACIDQcwIIAMbEQAAAAuaAwEJfUMAAIA/IAEqAggiBZgiBCABKgIEIgMgA5RDAACAvyAFIASSlSIIlJIhBiABKgIAIgIgAiAElJQgCJRDAACAP5IhCSACIASMlCEKAkACQCACIAQgAiADlCAIlCIIlCIEkiADkyIHQwAAAABeRQRAIAIgA4wiB14gAiAEXnENASAEIAdeRQRAIAogBpJDAACAPyADkyACkyAEk5EiAiAC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DiACKgIMIgYgBpQiEiACKgIAIgQgBJQiE5MiFCACKgIEIgggCJQiD5OSi5QgASoCBCIQIAggA5QiByAHkiIVIAQgBpQiByAHkiIWkouUIAEqAgAiByAEIAOUIgkgCZIiCSAIIAaUIgogCpIiCpOLlJKSIheSkjgCFCAAIBEgF5MgBZM4AgggACAFIAsgDSAVIBaTi5QgByAEIAiUIgQgBJIiBCADIAaUIgMgA5IiA5KLlCAQIA8gFJIgDpOLlJKSIgaSkjgCECAAIAUgDCANIAkgCpKLlCAQIAQgA5OLlCAHIBMgEpIgD5MgDpOLlJKSIgOSkjgCDCAAIAsgBpMgBZM4AgQgACAMIAOTIAWTOAIAIBhBIGokAAufCQILfwJ+IwBBoAVrIgQkAAJAAkACQAJAIAFFDQAgAUEIayIGKAIAQQFqIQMgBiADNgIAIANFDQEgASgCACIDQX9GDQIgASADQQFqNgIAIAQgBjYCDCAEIAE2AgggBCABQQRqIgg2AgQgAkUNACACQQhrIgcoAgBBAWohAyAHIAM2AgAgA0UNASACKAIAIgNBf0YNAiACIANBAWo2AgAgBCAHNgLcAiAEIAI2AtgCIAQgAkEEajYC1AIgBEEQaiIDQgA3A2ggA0IANwOQASADQgA3AlQgA0H4AGpCADcDACADQfAAakIANwMAIANBmAFqQgA3AwAjAEHgAGsiBUHNAGoiCUELakIANwAAIAVBOmoiCkELakIANwAAIAVBJ2oiC0ELakIANwAAIAVBFGoiDEELakIANwAAIAVBAWoiDUELakIANwAAIANB3ABqQgA3AgAgBUIANwBQIAVCADcAPSAFQgA3ACogBUIANwAXIAVCADcABCADQRBqQQA2AgAgA0EIakIANwMAIANCADcDACADIAA4AhQgA0KAgICA8P//v383AxggA0L////7BzcDICADQv////v///+//wA3AyggA0KAgICA8P//v383AzAgA0L////7BzcDOCADQv////v///+//wA3A0AgA0KAgICA8P//v383A0ggA0KAgID8AzcDgAEgA0IANwOIASADQv////sHNwOgASADQQA6AKgBIANBgICA/AM2AmQgA0H////7BzYCUCADIAUpAE03AKkBIANBsQFqIAlBCGopAAA3AAAgA0G4AWogCUEPaigAADYAACADQQA6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QQFqNgIAIAMgBTYCDCADIAA2AgggAyAAQQRqIgc2AgQgAUUNACABQQhrIgYoAgBBAWohAiAGIAI2AgAgAkUNASABKAIAIgJBf0YNAiABIAJBAWo2AgAgAyAGNgLcAiADIAE2AtgCIAMgAUEEajYC1AIgA0EQaiICQgA3A2ggAkIANwOQASACQgA3AlQgAkH4AGpCADcDACACQfAAakIANwMAIAJBmAFqQgA3AwAjAEHgAGsiBEHNAGoiCEELakIANwAAIARBOmoiCUELakIANwAAIARBJ2oiCkELakIANwAAIARBFGoiC0ELakIANwAAIARBAWoiDEELakIANwAAIAJB3ABqQgA3AgAgBEIANwBQIARCADcAPSAEQgA3ACogBEIANwAXIARCADcABCACQgA3AwggAkIANwMAIAJBADoAqAEgAkL////7BzcDoAEgAkIANwOIASACQoCAgPwDNwOAASACQYCAgPwDNgJkIAJB////+wc2AlAgAkKAgICA8P//v383A0ggAkL////7////v/8ANwNAIAJC////+wc3AzggAkKAgICA8P//v383AzAgAkL////7////v/8ANwMoIAJC////+wc3AyAgAkKAgICA8P//v383AxggAkL////7////v/8ANwMQIAIgBCkATTcAqQEgAkGxAWogCEEIaikAADcAACACQbgBaiAIQQ9qKAAANgAAIAJBADoAxAEgAkL////7BzcCvAEgAkEAOgDgASACQv////sHNwPYASACQQA6APwBIAJC////+wc3AvQBIAJB1AFqIAlBD2ooAAA2AAAgAkHNAWogCUEIaikAADcAACACIAQpADo3AMUBIAJB8AFqIApBD2ooAAA2AAAgAkHpAWogCkEIaikAADcAACACIAQpACc3AOEBIAJBjAJqIAtBD2ooAAA2AAAgAkGFAmogC0EIaikAADcAACACIAQpABQ3AP0BIAJBADoAmAIgAkL////7BzcDkAIgAkGoAmogDEEPaigAADYAACACQaECaiAMQQhqKQAANwAAIAIgBCkAATcAmQIgAkGAAjsBvAIgAkEHNgK4AiACQQA6ALQCIAJC////+wc3AqwCIAdBCGooAgAhAiAHKQIAIQ0gASABKAIAQQFrNgIAIANBgAFqIAI2AgAgA0GcAWogAUEMaigCADYCACABKQIEIQ4g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DWoQog0MAgsgAygABCEGIAEgBUEMayIKNgIEIAEgA0EMajYCACAKQQNLDQIgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwBCyACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINCyEBIARBFDYCACAEIAE2AgQMEAsgAyoACCE3IAEgBUEQazYCBCABIANBEGo2AgAgBCADKgAMOAIMIAQgNzgCCCAEIAY2AgQgBEERNgIADA8LAkACfyAHQQRPBEAgASAFQQhrIgY2AgQgASADQQhqNgIAIAZBBEkEQCACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINDAILIAMoAAQhBiABIAVBDGsiCjYCBCABIANBDGo2AgAgCkEDSw0CIAJBADoAkw0gAkElOwCRDSACQQA2ApQNIAJBAToAkA0gAkGQDWoQog0MAQsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQshASAEQRQ2AgAgBCABNgIEDA8LIAMqAAghNyABIAVBEGs2AgQgASADQRBqNgIAIAQgAyoADDgCDCAEIDc4AgggBCAGNgIEIARBEDYCAAwOCyACQZANaiIDIAEQyQMgAigClA0hCgJAIAIoApANRQRAIAJBkAlqIgZBGGoiBSADQSBqKQIANwMAIAZBEGoiBiADQRhqKQIANwMAIAJBmAlqIgcgA0EQaikCADcDACACIAIpApgNNwOQCSABKAIEIghBBE8NASACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAMQog0hCgsgBEEUNgIAIAQgCjYCBAwOCyABIAhBBGs2AgQgASABKAIAIgFBBGo2AgAgASoAACE3IAQgAikDkAk3AgggBEEQaiAHKQMANwIAIARBGGogBikDADcCACAEQSBqIAUpAwA3AgAgBCA3OAIoIAQgCjYCBCAEQQ82AgAMDQsCQAJ/AkACQCAHQQRJDQAgASAFQQhrIgY2AgQgASADQQhqNgIAIAZBBEkNACADKAAEIQYgASAFQQxrIgo2AgQgASADQQxqNgIAIApBA0sNAQsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwBCyADNQAIIS4gASAFQRBrIgo2AgQgASADQRBqNgIAIApBA0sNASACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINCyEBIARBFDYCACAEIAE2AgQMDQsgAzUADCEvIAEgBUEUazYCBCABIANBFGo2AgAgBCADKgAQOAIQIAQgBjYCBCAEQQ42AgAgBCAvQiCGIC6ENwMIDAwLAkACfyAHQQRPBEAgASAFQQhrIgY2AgQgASADQQhqNgIAIAZBBE8NAiACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINDAELIAJBADoAkw0gAkElOwCRDSACQQA2ApQNIAJBAToAkA0gAkGQDWoQog0LIQEgBEEUNgIAIAQgATYCBAwMCyADKgAEITcgASAFQQxrNgIEIAEgA0EMajYCACAEIAMqAAg4AgggBCA3OAIEIARBDTYCAAwLCwJAAn8gB0EETwRAIAEgBUEIayIGNgIEIAEgA0EIajYCACAGQQRPDQIgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwBCyACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINCyEBIARBFDYCACAEIAE2AgQMCwsgAyoABCE3IAEgBUEMazYCBCABIANBDGo2AgAgBCADKgAIOAIIIAQgNzgCBCAEQQw2AgAMCgsgAiABNgKUESACQQM2ApgRAkACfyAHQQdNBEAgAkKBygA3A5ANIAJBkA1qEKINIQdBAQwBCyABIAVBDGs2AgQgASADQQxqNgIAIAJB8ABqIAMpAAQQpwggAigCdCEHIAIoAnALQQFxBEAgByEGDAELAkAgB0UEQEEEIQZBACEDDAELQcfjASAHIAdBx+MBTxsiA0EkbCIGQQQQsw4iBUUNDCACQQA2AoABIAIgBTYCfCACIAM2AnggAkGYDWohBQNAIAIgATYCwBEgAkEBNgLEESACQZANaiIDIAEQ4wQCQAJ/IAIoApQNIgggAigCkA0NABogAkGQCWoiBkEQaiIKIAVBEGopAgA3AwAgBkEIaiIMIAVBCGopAgA3AwAgAiAFKQIANwOQCSADIAJBwBFqEOsFIAIoApQNIgYgAigCkA0NABogBg0BQQEgAkHPEWpBqKvBABC+CgshBiACKAJ8IQEgAigCgAEiCgRAIAFBHGohAwNAIAMoAgAiBygCACEFIAcgBUEBazYCACAFQQFGBEAgAxCaCgsgA0EkaiEDIApBAWsiCg0ACwsgAigCeCIDRQ0DIAEgA0EkbEEEEIgPDAMLIAJBqBFqIgNBCGoiCyAMKQMANwMAIANBEGoiDCAKKQMANwMAIAIgAikDkAk3A6gRIAIoApgNIQ8gAigCgAEiCiACKAJ4RgRAIAJB+ABqQcirwQAQkQgLIAIoAnwgCkEkbGoiAyACKQOoETcCBCADIAg2AgAgAyAPNgIgIAMgBjYCHCADQQxqIAspAwA3AgAgA0EUaiAMKQMANwIAIAIgCkEBaiIKNgKAASAHQQFrIgcNAAsgAigCfCEGIAIoAngiA0GCgICAeEgNAQsgAiAKNgKkESACIAY2AqARIAIgAzYCnBEgAkGQDWogAkGUEWoQfyACKAKUDSEBAkAgAigCkA0iBUGBgICAeEYEQCABIQYMAQsgAkGQBWoiB0EYaiIMIAJBkA1qIghBIGopAgA3AwAgB0EQaiILIAhBGGopAgA3AwAgAkGYBWoiDyAIQRBqKQIANwMAIAIgAikCmA03A5AFAkACQCAFQYCAgIB4RwRAIAJBkAlqIgdBIGogDCkDADcCACAHQRhqIAspAwA3AgAgB0EQaiAPKQMANwIAIAIgAikDkAU3ApgJIAIgATYClAkgAiAFNgKQCSMAQSBrIgUkAAJAIAJBlBFqIgEoAgQiB0UEQCAIQYCAgIB4NgIADAELIAEgB0EBazYCBAJ/IAEoAgAiBygCBCIPQQdNBEAgBUKBygA3AwhBASEUIAVBCGoQog0MAQsgByAPQQhrIg82AgQgByAHKAIAIgFBCGo2AgAgBSABKQAAEKcIIAUoAgAhFCAFKAIECyEBAkACQCAUQQFxDQAgAUUEQEEEIQFBACEUQQAhBwwCCwJ/AkBBqtUCIAEgAUGq1QJPGyIMQRhsIgtBBBCzDiITBEAgBSATNgIMIAUgDDYCCCAFQQA2AhAgBygCACETQQAhFANAIA9BBEkNAiAHIA9BBGsiDDYCBCAHIBAgE2oiD0EEaiILNgIAIAxBBEkNAiAPKAAAIQ0gByAMQQRrIgw2AgQgByALQQRqIg82AgAgDEEESQ0CIAs1AAAhLiAHIAxBBGsiDDYCBCAHIA9BBGoiCzYCAAJAAkAgDEEESQ0AIA81AAAhLyAHIAxBBGsiDDYCBCAHIAtBBGoiDzYCACAMQQRJDQAgCygAACEJIAcgDEEEayIMNgIEIAcgD0EEaiILNgIAIAxBBE8NAQsgBUEAOgAbIAVBJTsAGSAFQQA2AhwgBUEBOgAYIAVBGGoQog0MBAsgL0IghiAuhCEuIA81AAAhLyAHIAxBBGsiDzYCBCAHIAtBBGo2AgAgLyALNQAAQiCGhCEvIAUoAgggFEYEQCAFQQhqQcirwQAQkggLIAUoAgwgEGoiDCANNgIAIAxBEGogLzcCACAMQQxqIAk2AgAgDEEEaiAuNwIAIAUgFEEBaiIUNgIQIBBBGGohECABIBRHDQALIAUoAgwhASAFKAIIIgdBgICAgHhHDQQMAwtBBCALQbirwQAQ0w0ACyAFQQA6ABsgBUElOwAZIAVBADYCHCAFQQE6ABggBUEYahCiDQshASAFKAIIIgdFDQAgBSgCDCAHQRhsQQQQiA8LIAhBgYCAgHg2AgAgCCABNgIEDAELIAggFDYCCCAIIAE2AgQgCCAHNgIACyAFQSBqJAAgAigClA0iDyEFIAIoApANIgtBgYCAgHhGDQIgC0GAgICAeEYNASACKAKYDSEQIAJBkA1qIQgjAEEQayIHJAACQCACQZQRaiIBKAIEIgVFBEAgCEEANgIADAELIAEgBUEBazYCBAJ/AkAgASgCACIBKAIEIgxBBEkNACABKAIAIQUgASAMQQRrIhM2AgQgASAFQQRqNgIAIBNBBEkNACAFKAAAIRMgASAMQQhrIg02AgQgASAFQQhqNgIAIA1BBEkNACAFNQAEIS4gASAMQQxrIg02AgQgASAFQQxqNgIAAkACQCANQQRJDQAgBTUACCEvIAEgDEEQayINNgIEIAEgBUEQajYCACANQQRJDQAgBSgADCENIAEgDEEUayIJNgIEIAEgBUEUajYCACAJQQRPDQELIAdBADoACyAHQSU7AAkgB0EANgIMIAdBAToACCAHQQhqEKINDAILIAU1ABAhMCAIIA02AhAgCCAvQiCGIC6ENwIIIAggEzYCBCAIQQE2AgAgASAMQRhrNgIEIAEgBUEYajYCACAIIDAgBTUAFEIghoQ3AhQMAgsgB0EAOgALIAdBJTsACSAHQQA2AgwgB0EBOgAIIAdBCGoQog0LIQEgCEECNgIAIAggATYCBAsgB0EQaiQAIAIoApQNIQUCQCACKAKQDSIBQQJHBEAgAkGIAWoiB0EQaiIMIAhBGGooAgA2AgAgB0EIaiIHIAhBEGopAgA3AwAgAiACKQKYDTcDiAEgAUEBcQ0BQQNB9KzBAEGEq8EAEL4KIQULIAsEQCAPIAtBGGxBBBCIDwsMAwsgBCACKQOIATcCSCAEIAIpApAJNwIQIARB2ABqIAwoAgA2AgAgBEHQAGogBykDADcCACAEQRhqIAJBkAlqIgFBCGopAgA3AgAgBEEgaiABQRBqKQIANwIAIARBKGogAUEYaikCADcCACAEQTBqIAFBIGopAgA3AgAgBCAFNgJEIAQgEDYCQCAEIA82AjwgBCALNgI4IAQgCjYCDCAEIAY2AgggBCADNgIEIARBCjYCAAwOC0EBQfSswQBBhKvBABC+CiEGDAILQQJB9KzBAEGEq8EAEL4KIQULIAUhBiACQZAJaiIBKAIAIgMEQCABKAIEIANBBnRBwAAQiA8LIAEoAgwiAwRAIAEoAhAgA0ECdEEEEIgPCyABKAIYIgMEQCABKAIcIANBA3RBBBCIDwsLIAJBnBFqIgEoAgQhAyABKAIIIgUEQCADQRxqIQoDQCAKKAIAIggoAgAhByAIIAdBAWs2AgAgB0EBRgRAIAoQmgoLIApBJGohCiAFQQFrIgUNAAsLIAEoAgAiAQRAIAMgAUEkbEEEEIgPCwsgBEEUNgIAIAQgBjYCBAwJCyACQQY2AqARIAIgATYCnBEgAkGQDWoiAyACQZwRahDmAiACKAKUDSIPIQcCQCACKAKQDSIMQYGAgIB4Rg0AIAJBkAFqIgEgAkGgDWooAgA2AgAgAiACKQKYDTcDiAECQAJ/AkACQAJAIAxBgICAgHhHBEAgAkGAAWogASgCADYCACACIAIpA4gBNwN4IAIoAqARIgFFDQEgAiABQQFrNgKgEQJ/IAIoApwRIggoAgQiAUEHTQRAIAJCgcoANwOQDSADEKINIQdBAQwBCyAIIAFBCGsiATYCBCAIIAgoAgAiA0EIajYCACACQegAaiADKQAAEKcIIAIoAmwhByACKAJoC0EBcQ0FAkACQAJAIAdFBEBBASEFQQAhAwwBC0GAgMAAIAcgB0GAgMAATxsiA0EBELMOIgZFDQEgAiAGNgKUDSACIAM2ApANQQAhAyACQQA2ApgNIAgoAgAhDUF/IQoDQCABIANGBEAgAkKBygA3A5AJIAJBkAlqEKINIQcgAigCkA0iAUUNCiACKAKUDSABQQEQiA8MCgsgCCABIApqNgIEIAggAyANaiIFQQFqNgIAIAUtAAAhCSACKAKQDSADRgRAIwBBIGsiBiQAAkBBCCACQZANaiIFKAIAIhBBAXQiEyATQQhNGyITQQBOBH8gBiAQBH8gBiAQNgIcIAYgBSgCBDYCFEEBBUEACzYCGCAGQQhqQQEgEyAGQRRqEPQJIAYoAghBAUcNASAGKAIQIQsgBigCDAVBAAsgC0HIq8EAENMNAAsgBigCDCEQIAUgEzYCACAFIBA2AgQgBkEgaiQAIAIoApQNIQYLIAMgBmogCToAACACIANBAWoiAzYCmA0gCkEBayEKIAMgB0cNAAsgAigClA0hBSACKAKQDSIKQYKAgIB4SARAIAUhBwwJCyABIANrIQELAkACfyABQQdNBEAgAkKBygA3A5ANIAJBkA1qEKINDAELIAggAUEIayIHNgIEIAggCCgCACIGQQhqNgIAIAYpAAAiLkKAgICAEFoEQCACQQE6AJANIAIgLjcDmA0gAkGQDWogAkHPEWpBgKrBABDvCgwBCyAHQQdNBEAgAkKBygA3A5ANIAJBkA1qEKINDAELIAggAUEQazYCBCAIIAZBEGo2AgAgBikACCIvQoCAgIAQVA0BIAJBAToAkA0gAiAvNwOYDSACQZANaiACQc8RakGAqsEAEO8KCyEHIApFDQggBSAKQQEQiA8MCAsgL6ciCyAupyIQbCIBIANHBEAgAiABNgKUESACIAM2AsARIAJBAjYClA0gAkGUy8EANgKQDSACQgI3ApwNIAIgAkHAEWqtQoCAgIAwhDcDmAkgAiACQZQRaq1CgICAgDCENwOQCSACIAJBkAlqNgKYDSACQZAFaiIDIAJBkA1qIgEQjAUgASADEP0KQQxBBBCzDiIHRQ0CIAcgAikCkA03AgAgB0EIaiABQQhqKAIANgIAIAIoApAFIgEEQCACKAKUBSABQQEQiA8LIApFDQggBSAKQQEQiA8MCAsCQAJAAkAgAigCoBEiCARAAkACQCACKAKcESIBKAIEIgdBBEkNACABKAIAIQYgASAHQQRrIhM2AgQgASAGQQRqNgIAIBNBBEkNACAGKAAAIRMgASAHQQhrIg02AgQgASAGQQhqNgIAIA1BBE8NAQsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwLCyAGNQAEIS8gASAHQQxrIg02AgQgASAGQQxqNgIAIAhBAUYNAiANQQRJDQggBjUACCEwIAEgB0EQayINNgIEIAEgBkEQajYCACANQQRJDQggBigADCENIAEgB0EUayIJNgIEIAEgBkEUajYCACAJQQRJDQggBjUAECExIAEgB0EYayIJNgIEIAEgBkEYajYCAAJAIAlBBEkNACAGNQAUITMgASAHQRxrIgk2AgQgASAGQRxqNgIAIAlBBEkNACAGKAAYIQkgASAHQSBrIg42AgQgASAGQSBqNgIAIA5BBE8NAgsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwKC0ECQbiuwQBBhKvBABC+CgwJCyAGNQAcITQgASAHQSRrIg42AgQgASAGQSRqNgIAIAhBAkYNByAOQQdNBEAgAkKBygA3A5ANIAJBkA1qEKINDAkLIAY1ACAhMiABIAdBLGsiDjYCBCABIAZBLGo2AgAgBikAJCIuQoCAgIAQVA0BIAJBAToAkA0gAiAuNwOYDSACQZANaiACQc8RakGAqsEAEO8KDAgLQQNBuK7BAEGEq8EAEL4KDAcLAkAgCEEDRwRAIA4NASACQoHKADcDkA0gAkGQDWoQog0MCAtBBUG4rsEAQYSrwQAQvgoMBwsgASAHQS1rNgIEIAEgBkEtajYCACAGLQAsIQEgBEEUaiACQYABaigCADYCACAEIAIpA3g3AgwgBCABOgBUIAQgLj4CUCAEIDJCIIYgNIQ3A0ggBCAJNgJEIAQgM0IghiAxhDcCPCAEIA02AjggBCAwQiCGIC+ENwMwIAQgEzYCLCAEIAs2AiggBCAQNgIkIAQgAzYCICAEIAU2AhwgBCAKNgIYIAQgDzYCCCAEIAw2AgQgBEEJNgIADBELQQEgA0G4q8EAENMNAAsMFQtBAEG4rsEAQYSrwQAQvgohBwwFC0EBQbiuwQBBhKvBABC+CiEHDAMLIAJBADoAkw0gAkElOwCRDSACQQA2ApQNIAJBAToAkA0gAkGQDWoQog0MAQtBBEG4rsEAQYSrwQAQvgoLIQcgCkUNACAFIApBARCIDwsgDARAIA8gDEECdEEEEIgPCwsgBEEUNgIAIAQgBzYCBAwICwJAAkAgB0EESQ0AIAEgBUEIayIGNgIEIAEgA0EIajYCACAGQQRJDQAgAygABCEGIAEgBUEMayIKNgIEIAEgA0EMajYCACAKQQRPDQELIAJBADoAkw0gAkElOwCRDSACQQA2ApQNIAJBAToAkA0gAkGQDWoQog0hASAEQRQ2AgAgBCABNgIEDAgLIAM1AAghLiABIAVBEGs2AgQgASADQRBqNgIAIAM1AAwhLyAEIAY2AgQgBEEINgIAIAQgLiAvQiCGhDcDCAwHCyACQQM2ApQFIAIgATYCkAUgAkGQDWoiBiACQZAFaiIBEH8gAigClA0hBQJAIAIoApANIgdBgYCAgHhGDQACQCAHQYCAgIB4RwRAIAIpArANIS4gAigCrA0hECACKAKoDSELIAIoAqQNIQ4gAigCoA0hEyACKAKcDSEPIAIoApgNIRUgBiABELoDIAIoApQNIgkhCAJAAkACQCACKAKQDSIMQYGAgIB4Rg0AAkACQCAMQYCAgIB4RwRAIAIoApQFRQ0BIAIoApgNIRQCfyACKAKQBSIDKAIEIgFBB00EQCACQoHKADcDkA0gBhCiDSEIQQEMAQsgAyABQQhrIgE2AgQgAyADKAIAIgZBCGo2AgAgAkHgAGogBikAABCnCCACKAJkIQggAigCYAtBAXENAiAIRQ0EQYCACCAIIAhBgIAITxsiEUEDdCIGQQQQsw4iEkUNByACIBI2ApQNIAIgETYCkA0gAkEANgKYDSADKAIAIREDQAJAAn8gAUEDTQRAIAJCgcoANwOQCSACQZAJahCiDQwBCyADIAFBBGsiATYCBCADIA0gEWoiEkEEaiIGNgIAIAFBA0sNASACQoHKADcDkAkgAkGQCWoQog0LIQggAigCkA0iAUUNBCACKAKUDSABQQN0QQQQiA8MBAsgEigAACESIAMgAUEEayIBNgIEIAMgBkEEajYCACAGKAAAIQYgAigCkA0gCkYEQCACQZANakHIq8EAELgICyACKAKUDSANaiIYIBI2AgAgGEEEaiAGNgIAIAIgCkEBaiIKNgKYDSANQQhqIQ0gCCAKRw0ACyACKAKUDSEIIAIoApANIgNBgoCAgHhIDQIMBQtBAUGcrcEAQYSrwQAQvgohCAwCC0ECQZytwQBBhKvBABC+CiEICyAMBEAgCSAMQQxsQQQQiA8LCyAHBEAgBSAHQQZ0QcAAEIgPCyAPBEAgEyAPQQJ0QQQQiA8LIAsEQCAQIAtBA3RBBBCIDwsgCCEFDAQLQQQhCEEAIQMLIAQgCjYCQCAEIAg2AjwgBCADNgI4IAQgFDYCNCAEIAk2AjAgBCAMNgIsIAQgLjcCJCAEIBA2AiAgBCALNgIcIAQgDjYCGCAEIBM2AhQgBCAPNgIQIAQgFTYCDCAEIAU2AgggBCAHNgIEIARBBzYCAAwJC0EAQZytwQBBhKvBABC+CiEFDAELDAgLIARBFDYCACAEIAU2AgQMBgsgAkEHNgKMASACIAE2AogBIAJBkA1qIgEgAkGIAWoiBRB/IAIoApQNIiYhAwJAIAIoApANIh9BgYCAgHhGDQACQAJAAkACQAJAAkAgH0GAgICAeEcEQCACKQKwDSEuIAIoAqwNIScgAigCqA0hIiACKAKkDSEqIAIoAqANISggAigCnA0hIyACKAKYDSErIAEgBRC6AyACKAKUDSIpIQMgAigCkA0iIEGBgICAeEYNBgJAAkACfwJAICBBgICAgHhHBEAgAigCjAEiBUUNAyACKAKYDSEsAn8gAigCiAEiCSgCBCIHQQdNBEAgAkKBygA3A5ANQQEhDSABEKINDAELIAkgB0EIayIHNgIEIAkgCSgCACIBQQhqNgIAIAJB2ABqIAEpAAAQpwggAigCWCENIAIoAlwLIQMgDUEBcQ0KIANFDQFB1aoFIAMgA0HVqgVPGyIBQQxsIgZBBBCzDiIIRQ0TIAIgCDYClA0gAiABNgKQDUEAIQEgAkEANgKYDSAJKAIAIRNBACENA0ACQAJ/IAdBA00EQCACQoHKADcDkAkgAkGQCWoQog0MAQsgCSAHQQRrIgY2AgQgCSABIBNqIghBBGoiBzYCACAGQQNNBEAgAkKBygA3A5AJIAJBkAlqEKINDAELIAgoAAAhDiAJIAZBBGsiBjYCBCAJIAdBBGoiCDYCACAGQQNLDQEgAkKBygA3A5AJIAJBkAlqEKINCyEDIAIoApANIgFFDQwgAigClA0gAUEMbEEEEIgPDAwLIAc1AAAhLyAJIAZBBGsiBzYCBCAJIAhBBGo2AgAgLyAINQAAQiCGhCEvIAIoApANIA1GBEAgAkGQDWpByKvBABCTCAsgAigClA0gAWoiBiAONgIAIAZBBGogLzcCACACIA1BAWoiDTYCmA0gAUEMaiEBIAMgDUcNAAsgAigClA0iAyACKAKQDSIHQYKAgIB4Tg0CGgwKC0EBQfirwQBBhKvBABC+CiEDDAoLQQAhB0EAIQ1BBAshEyAFQQFGDQEgAiAFQQJrIg42AowBIAkoAgQiAUUEQCACQoHKADcDkA0gAkGQDWoQog0hAQwHCyAJIAFBAWsiAzYCBCAJIAkoAgAiCEEBaiIRNgIAQYCAgIB4IRUCQAJAIAgtAAAiBQ4CBwABCwJ/IAFBCE0EQCACQoHKADcDkA1BASEGIAJBkA1qEKINDAELIAkgAUEJayIDNgIEIAkgCEEJaiIRNgIAIAJB0ABqIAgpAAEQpwggAigCUCEGIAIoAlQLIQEgBkEBcQ0HAkAgAUUEQEEEIQpBACEGQQAhFQwBC0HVqgUgASABQdWqBU8bIgVBDGwiBkEEELMOIhJFDRJBACEIIAJBADYCmA0gAiASNgKUDSACIAU2ApANQQAhBgNAAkACQCADIgVBBEkNACAJIANBBGsiAzYCBCAJIAggEWoiD0EEaiIKNgIAIANBBEkNACAPKAAAIQ4gCSADQQRrIgM2AgQgCSAKQQRqIg82AgAgA0EDSw0BCyACQQA6AJMJIAJBJTsAkQkgAkEANgKUCSACQQE6AJAJIAJBkAlqEKINIQEgAigCkA0iA0UNCiACKAKUDSADQQxsQQQQiA8MCgsgCigAACEVIAkgA0EEayIDNgIEIAkgD0EEajYCACAPKAAAIQ8gAigCkA0gBkYEQCACQZANakHIq8EAEJMIIAIoApQNIRILIAggEmoiCiAONgIAIApBCGogDzYCACAKQQRqIBU2AgAgAiAGQQFqIgY2ApgNIAhBDGohCCABIAZHDQALIAIoApQNIQogAigCkA0iFUGCgICAeEgEQCAKIQEMCQsgBUEMayEDCwJ/IANBB00EQCACQoHKADcDkA1BASEIIAJBkA1qEKINDAELIAkgA0EIayIDNgIEIAkgCSgCACIBQQhqNgIAIAJByABqIAEpAAAQpwggAigCSCEIIAIoAkwLIQECQAJAIAhBAXENACABRQRAQQQhDwwIC0HH4wEgASABQcfjAU8bIgVBJGwiCEEEELMOIhJFDQYgAiASNgKUDSACIAU2ApANQQAhDiACQQA2ApgNIAkoAgAhDwNAAkACfwJAAkAgA0EESQ0AIAkgA0EEayIDNgIEIAkgDiAPaiIIQQRqIgU2AgAgA0EESQ0AIAgoAAAhGSAJIANBBGsiAzYCBCAJIAVBBGoiCDYCACADQQNLDQELIAJBADoAkwkgAkElOwCRCSACQQA2ApQJIAJBAToAkAkgAkGQCWoQog0MAQsgBSgAACEWIAkgA0EEayIDNgIEIAkgCEEEaiIFNgIAAkACQCADQQRJDQAgCCgAACEcIAkgA0EEayIDNgIEIAkgBUEEaiIINgIAIANBBEkNACAFKAAAIR4gCSADQQRrIgM2AgQgCSAIQQRqIgU2AgAgA0EDSw0BCyACQQA6AJMJIAJBJTsAkQkgAkEANgKUCSACQQE6AJAJIAJBkAlqEKINDAELIAgoAAAhLSAJIANBBGsiAzYCBCAJIAVBBGoiCDYCAAJAIANBBEkNACAFKAAAIRggCSADQQRrIgM2AgQgCSAIQQRqIgU2AgAgA0EESQ0AIAgoAAAhGiAJIANBBGsiAzYCBCAJIAVBBGoiCDYCACADQQNLDQILIAJBADoAkwkgAkElOwCRCSACQQA2ApQJIAJBAToAkAkgAkGQCWoQog0LIQEgAigCkA0iA0UNAiACKAKUDSADQSRsQQQQiA8MAgsgBSgAACEMIAkgA0EEayIDNgIEIAkgCEEEajYCACAIKAAAIREgAigCkA0gF0YEQCACQZANakHIq8EAEJEIIAIoApQNIRILIA4gEmoiCCAZNgIAIAhBIGogETYCACAIQRxqIAw2AgAgCEEYaiAaNgIAIAhBFGogGDYCACAIQRBqIC02AgAgCEEMaiAeNgIAIAhBCGogHDYCACAIQQRqIBY2AgAgAiAXQQFqIhc2ApgNIA5BJGohDiABIBdHDQALIAIoApQNIQ8gAigCkA0iHkGBgICAeEoNASAPIQELIBVFDQggCiAVQQxsQQQQiA8MCAsgFUGCgICAeE4NBSAKIQEMBwtBDEEEELMOIgFFDRUgASAFNgIEIAFBhICAgHg2AgAMBgtBAkH4q8EAQYSrwQAQvgohAwwGC0EDQfirwQBBhKvBABC+CiEBDAQLQQBB+KvBAEGEq8EAEL4KIQMMBgtBBCAIQbirwQAQ0w0ACyAVQYKAgIB4RgRAIAohAQwCCyACKAKMASEOCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA4EQCACIA5BAWsiFjYCjAEgAigCiAEiCSgCBCIORQRAIAJCgcoANwOQDSACQZANahCiDSEBDA4LIAkgDkEBayIDNgIEIAkgCSgCACIFQQFqIhI2AgBBgICAgHghGQJAAkAgBS0AACIcDgIFAAELAn8gDkEITQRAIAJCgcoANwOQDUEBIQggAkGQDWoQog0MAQsgCSAOQQlrIgM2AgQgCSAFQQlqIhI2AgAgAkFAayAFKQABEKcIIAIoAkAhCCACKAJECyEBIAhBAXENDiABRQRAQQQhDEEAIRlBACEIDAQLQYCAECABIAFBgIAQTxsiCEECdCIMQQQQsw4iBUUNAkEAIQ4gAkEANgKYDSACIAU2ApQNIAIgCDYCkA1BACEIA0AgA0EDTQRAIAJCgcoANwOQCSACQZAJahCiDSEBIAIoApANIgNFDRAgAigClA0gA0ECdEEEEIgPDBALIAkgA0EEayIDNgIEIAkgDiASaiIMQQRqNgIAIAwoAAAhDCACKAKQDSAIRgRAIAJBkA1qQcirwQAQuQggAigClA0hBQsgBSAOaiAMNgIAIAIgCEEBaiIINgKYDSAOQQRqIQ4gASAIRw0ACyACKAKUDSEMIAIoApANIhlBgoCAgHhODQMgDCEBDA4LQQxBBBCzDiIBRQ0dIAEgHDYCBCABQYSAgIB4NgIADA0LQQRB+KvBAEGEq8EAEL4KIQEMDAtBBCAMQbirwQAQ0w0ACwJ/IANBB00EQCACQoHKADcDkA1BASEOIAJBkA1qEKINDAELIAkgA0EIayIDNgIEIAkgCSgCACIBQQhqNgIAIAJBOGogASkAABCnCCACKAI4IQ4gAigCPAshASAOQQFxDQkCQCABRQRAQQQhEEEAIRhBACERDAELQYCAECABIAFBgIAQTxsiBUECdCIQQQQQsw4iDgRAIAIgDjYClA0gAiAFNgKQDUEAIQ4gAkEANgKYDSAJKAIAIQVBACERA0AgA0EDTQRAIAJCgcoANwOQCSACQZAJahCiDSEBIAIoApANIgNFDQ0gAigClA0gA0ECdEEEEIgPDA0LIAkgA0EEayIDNgIEIAkgBSAOaiIQQQRqNgIAIBAoAAAhECACKAKQDSARRgRAIAJBkA1qQcirwQAQuQgLIAIoApQNIA5qIBA2AgAgAiARQQFqIhE2ApgNIA5BBGohDiABIBFHDQALIAIoApQNIRAgAigCkA0iGEGCgICAeE4NASAQIQEMCwtBBCAQQbirwQAQ0w0ACwJ/IANBB00EQCACQoHKADcDkA0gAkGQDWoQog0hBUEBDAELIAkgA0EIayIDNgIEIAkgCSgCACIBQQhqNgIAIAJBMGogASkAABCnCCACKAI0IQUgAigCMAtBAXEEQCAFIQEMCQtBBCEBAkAgBQRAQYCABCAFIAVBgIAETxsiAUEEdCILQQQQsw4iDkUNAyACIA42ApQNIAIgATYCkA1BACEBIAJBADYCmA0gCSgCACELA0AgA0EESQ0KIAkgA0EEayIDNgIEIAkgASALaiISQQRqIg42AgAgA0EESQ0KIBIoAAAhFiAJIANBBGsiAzYCBCAJIA5BBGoiEjYCACADQQRJDQogDigAACEaIAkgA0EEayIDNgIEIAkgEkEEaiIONgIAIANBBEkNCiASKAAAIRIgCSADQQRrIgM2AgQgCSAOQQRqNgIAIA4oAAAhHCACKAKQDSAdRgRAIAJBkA1qQcirwQAQuggLIAIoApQNIAFqIg4gFjYCACAOQQxqIBw2AgAgDkEIaiASNgIAIA5BBGogGjYCACACIB1BAWoiHTYCmA0gAUEQaiEBIAUgHUcNAAsgAigClA0hASACKAKQDSIaQYKAgIB4Tg0BDAoLQQAhGgsgGUGDgICAeEgEQCAMIQEMCwsgAigCjAEhFgsgFkUNAyACIBZBAWs2AowBIAIoAogBIgkoAgQiA0UEQCACQoHKADcDkAkgAkGQCWoQog0hAwwGCyAJIANBAWs2AgQgCSAJKAIAIhJBAWo2AgBBgICAgHghDgJAAkACQAJAIBItAAAiEg4CAwABCyACQQM2ApQFIAIgCTYCkAUgAkGQCWoiCyACQZAFaiIJEK8EIAIoApQJIQMgAigCkAkiDkGBgICAeEYNCCAOQYCAgIB4Rg0EIAIoApgJIRwgCyAJEK8EIAIoApQJIQUgAigCkAkiFkGBgICAeEYNByAWQYCAgIB4Rg0FIAIoApgJISUgCyAJEIIEIAIoApQJIQsgAigCkAkiIUGBgICAeEcEQCAhQYCAgIB4Rw0CQQJBmK/BAEGEq8EAEL4KIQsLIBYEQCAFIBZBAnRBBBCIDwsgCyEFDAcLQQxBBBCzDiIDRQ0bIAMgEjYCBCADQYSAgIB4NgIADAcLIAIoApgJIRQLIAIgFDYCsA0gAiALNgKsDSACICE2AqgNIAIgJTYCpA0gAiAFNgKgDSACIBY2ApwNIAIgHDYCmA0gAiADNgKUDSACIA42ApANIAJBkAlqIQMjAEEQayIFJAACQCACQYgBaiIJKAIEIgtFBEBBACELIANBADsBAgwBCyAJIAtBAWs2AgRBASELIAkoAgAiCSgCBCIOQQFNBEAgBUKBygA3AwggAyAFQQhqEKINNgIEDAELIAkgDkECazYCBCAJIAkoAgAiC0ECajYCACADIAsvAAA7AQQgA0EBOwECQQAhCwsgAyALOwEAIAVBEGokACACKAKUCSEDAkAgAi8BkAlFBEAgAi8BkglBAXENAUEGQfirwQBBhKvBABC+CiEDCwJAIAJBkA1qIgYoAgAiBUGAgICAeEYNACAFBEAgBigCBCAFQQJ0QQQQiA8LIAYoAgwiBQRAIAYoAhAgBUECdEEEEIgPCyAGKAIYIgVFDQAgBigCHCAFQQJ0QQQQiA8LDAYLIAQgAikCkA03AoABIARBoAFqIAJBsA1qKAIANgIAIARBmAFqIAJBqA1qKQIANwIAIARBkAFqIAJBoA1qKQIANwIAIARBiAFqIAJBmA1qKQIANwIAIAQgAzsBpAEgBCAdNgJ8IAQgATYCeCAEIBo2AnQgBCARNgJwIAQgEDYCbCAEIBg2AmggBCAINgJkIAQgDDYCYCAEIBk2AlwgBCAXNgJYIAQgDzYCVCAEIB42AlAgBCAGNgJMIAQgCjYCSCAEIBU2AkQgBCANNgJAIAQgEzYCPCAEIAc2AjggBCAsNgI0IAQgKTYCMCAEICA2AiwgBCAuNwIkIAQgJzYCICAEICI2AhwgBCAqNgIYIAQgKDYCFCAEICM2AhAgBCArNgIMIAQgJjYCCCAEIB82AgQgBEEGNgIADBMLQQQgC0G4q8EAENMNAAtBAEGYr8EAQYSrwQAQvgohAwwDC0EBQZivwQBBhKvBABC+CiEFDAELQQVB+KvBAEGEq8EAEL4KIQMMAQsgDgRAIAMgDkECdEEEEIgPCyAFIQMLAkAgGUGAgICAeEYNACAZBEAgDCAZQQJ0QQQQiA8LIBgEQCAQIBhBAnRBBBCIDwsgGkUNACABIBpBBHRBBBCIDwsgAyEBDAMLIAJCgcoANwOQCSACQZAJahCiDSEBIAIoApANIgNFDQAgAigClA0gA0EEdEEEEIgPCyAYRQ0AIBAgGEECdEEEEIgPCyAZRQ0AIAwgGUECdEEEEIgPCyAVQYCAgIB4Rg0AIBUEQCAKIBVBDGxBBBCIDwsgHkUNACAPIB5BJGxBBBCIDwsgBwRAIBMgB0EMbEEEEIgPCyABIQMLICAEQCApICBBDGxBBBCIDwsLIB8EQCAmIB9BBnRBwAAQiA8LICMEQCAoICNBAnRBBBCIDwsgIgRAICcgIkEDdEEEEIgPCwsgBEEUNgIAIAQgAzYCBAwFC0EBQYyuwQBBhKvBABC+CiEBDAILIAJBmAVqQonZueKO076XCDcDACACQgA3A5AFQcjLwQAhDkEACyEFIAJBgAFqIAJBmAVqKQMANwMAIAIgAikDkAU3A3gCQAJAAn8CQCAfBEAgAiAJQQJrIgw2ApgRAn8gCygCBCIHQQdNBEAgAkKBygA3A5ANIAJBkA1qEKINIQNBAQwBCyALIAdBCGsiBzYCBCALIAsoAgAiAUEIajYCACACQRBqIAEpAAAQpwggAigCFCEDIAIoAhALQQFxDQQCfwJ/IAMEQEHVqgUgAyADQdWqBU8bIgFBDGwiBkEEELMOIgpFDQsgAiAKNgKUDSACIAE2ApANQQAhDSACQQA2ApgNIAsoAgAhFEEAIQoDQAJAAkAgB0EESQ0AIAsgB0EEayIBNgIEIAsgDSAUaiIHQQRqIgY2AgAgAUEESQ0AIAcoAAAhESALIAFBBGsiATYCBCALIAZBBGoiCDYCACABQQNLDQELIAJCgcoANwOQCSACQZAJahCiDSEDIAIoApANIgFFDQkgAigClA0gAUEMbEEEEIgPDAkLIAY1AAAhLiALIAFBBGsiBzYCBCALIAhBBGo2AgAgLiAINQAAQiCGhCEuIAIoApANIApGBEAgAkGQDWpByKvBABCTCAsgAigClA0gDWoiASARNgIAIAFBBGogLjcCACACIApBAWoiCjYCmA0gDUEMaiENIAMgCkcNAAsgAigClA0iAyACKAKQDSIIQYKAgIB4Tg0BGgwHC0EAIQhBACEKQQQLIQECQAJAIAwEQCACIAlBA2s2ApgRAn8gCygCBCIDQQdNBEAgAkKBygA3A5ANQQEhDSACQZANahCiDQwBCyALIANBCGsiAzYCBCALIAsoAgAiBkEIajYCACACQQhqIAYpAAAQpwggAigCCCENIAIoAgwLIQYgDUEBcQ0HIAZFDQJBgBAgBiAGQYAQTxsiB0EJdCIMQcAAELMOIg1FDQEgAkEANgKkESACIA02AqARIAIgBzYCnBEgAkGXDWohFCALKAIAIQwDQCAGQQFrIQZBACENIAMhBwNAIAMgDUYNByALIAdBAWsiETYCBCALIAwgDWoiF0EBaiIJNgIAIAJBkA1qIA1qIhYgFy0AADoAACARRQ0HIAsgB0ECayIHNgIEIAsgCUEBajYCACAWQQFqIAktAAA6AAAgDUECaiINQYAERyIJDQALIAkEQCANIAJBzxFqQdi6wQAQvgoMCAsgAiACLQCSDToAiAUgAi8BkA0hCSACKACTDSEHIAJBkAlqIhEgFEH5A/wKAAAgAkGQBWoiFyARQfkD/AoAACACQYgBaiAXQfkD/AoAACACIAc2AIkFIAdBGHYhESACKAKIBSEXIAIoApwRIBVGBEAgAkGcEWpByKvBABDGCAsgAigCoBEgFUEJdGoiByAROgAGIAcgFzYBAiAHIAk7AQAgB0EHaiACQYgBakH5A/wKAAAgAyANayEDIAwgDWohDCACIBVBAWoiFTYCpBEgBg0ACyACKAKgESIGIAIoApwRIg1BgoCAgHhODQMaDAcLQQNBjK7BAEGEq8EAEL4KIQYMBgtBwAAgDEG4q8EAENMNAAtBACENQcAACyEHIAJBkA1qIAJBlBFqEIIEIAIoApQNIgkhAwJAIAIoApANIgxBgYCAgHhGDQAgDEGAgICAeEcEQAJAAn8gAigCmBEiAwRAIAIoApgNIRQgAiADQQFrNgKYEQJAIAIoApQRIgMoAgQiC0EESQ0AIAMoAgAhBiADIAtBBGsiETYCBCADIAZBBGo2AgAgEUEESQ0AIAYoAAAhESADIAtBCGsiFzYCBCADIAZBCGo2AgAgF0EETw0DCyACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINDAELQQVBjK7BAEGEq8EAEL4KCyEDIAwEQCAJIAxBAnRBBBCIDwsMAgsgBjUABCEuIAMgC0EMazYCBCADIAZBDGo2AgAgBjUACCEvIARBQGsgAkGAAWopAwA3AwAgBCACKQN4NwM4IAQgLiAvQiCGhDcDcCAEIBE2AmwgBCAUNgJoIAQgCTYCZCAEIAw2AmAgBCAVNgJcIAQgBzYCWCAEIA02AlQgBCAKNgJQIAQgATYCTCAEIAg2AkggBCAFNgI0IAQgDjYCMCAEIDE3AyggBCAYNgIkIAQgEDYCICAEIBw2AhwgBCAZNgIYIAQgEzYCFCAEIB42AhAgBCASNgIMIAQgDzYCCCAEQQU2AgAMCQtBBEGMrsEAQYSrwQAQvgohAwsgAyEGIA0EQCAHIA1BCXRBwAAQiA8LDAMLQQJBjK7BAEGEq8EAEL4KIQMMAwsgAkKBygA3A8ARIAJBwBFqEKINCyEGIAIoApwRIgNFDQAgAigCoBEgA0EJdEHAABCIDwsgCARAIAEgCEEMbEEEEIgPCyAGIQMLIAUEQCAOIAVBFGxBG2pBeHEiAWsgASAFakEJakEIEIgPCyADIQELIA8EQCASIA9BBnRBwAAQiA8LIBMEQCAZIBNBAnRBBBCIDwsgEARAIBggEEEDdEEEEIgPCwsgBEEUNgIAIAQgATYCBAsgAkHQEWokAAwBC0EEIAZBuKvBABDTDQALIBsoAhQhAQJAIBsoAhAiA0EURwRAIBtBwAFqIARBCGpBoAH8CgAAIBsgATYCvAEgGyADNgK4ASAbQQhqIQVBACEBQQAhBgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBtBuAFqIgMoAgBBAWsOEwECAwQFBgcICQoLDA0ODxAREhMACyADKAIEIQNBDEEEELMOIgFFDSYgASADNgIIIAFCgYCAgBA3AgBBlI/DACEGDBILQRRBBBCzDiIBRQ0eIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaigCADYCAEG8/cIAIQYMEQtBJEEEELMOIgFFDREgAUKBgICAEDcCACABIAMpAgQ3AgggAUEQaiADQQxqKQIANwIAIAFBGGogA0EUaikCADcCACABQSBqIANBHGooAgA2AgBB+J7DACEGDBALQSBBBBCzDiIBRQ0RIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaikCADcCACABQRhqIANBFGopAgA3AgBBpJjDACEGDA8LQSxBBBCzDiIBRQ0RIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaikCADcCACABQRhqIANBFGopAgA3AgAgAUEgaiADQRxqKQIANwIAIAFBKGogA0EkaigCADYCAEGw9sIAIQYMDgtB+ABBCBCzDiIBRQ0RIAFCgYCAgBA3AwAgAUEIaiADQQhqQfAA/AoAAEGoucMAIQYMDQtBrAFBBBCzDiIBRQ0RIAFCgYCAgBA3AgAgAUEIaiADQQRqQaQB/AoAAEGAqcMAIQYMDAtByABBBBCzDiIBRQ0RIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaikCADcCACABQRhqIANBFGopAgA3AgAgAUEgaiADQRxqKQIANwIAIAFBKGogA0EkaikCADcCACABQTBqIANBLGopAgA3AgAgAUE4aiADQTRqKQIANwIAIAFBQGsgA0E8aikCADcCAEGApsMAIQYMCwtBFEEEELMOIgFFDRcgAUKBgICAEDcCACABIAMpAgQ3AgggAUEQaiADQQxqKAIANgIAQby2wwAhBgwKC0HcAEEEELMOIgFFDRAgAUKBgICAEDcCACABQQhqIANBBGpB1AD8CgAAQYCswwAhBgwJC0HgAEEEELMOIgFFDRAgAUKBgICAEDcCACABQQhqIANBBGpB2AD8CgAAQYCjwwAhBgwIC0HoAEEEELMOIgFFDRAgAUKBgICAEDcCACABQQhqIANBBGpB4AD8CgAAQbCbwwAhBgwHCyADKgIIITcgAyoCBCE4QRBBBBCzDiIBRQ0ZIAEgNzgCDCABIDg4AgggAUKBgICAEDcCAEGsr8MAIQYMBgsgAyoCCCE3IAMqAgQhOEEQQQQQsw4iAUUNGCABIDc4AgwgASA4OAIIIAFCgYCAgBA3AgBB2LLDACEGDAULQRhBBBCzDiIBRQ0OIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaikCADcCAEGQ2sMAIQYMBAtBMEEEELMOIgFFDQ4gAUKBgICAEDcCACABIAMpAgQ3AgggAUEQaiADQQxqKQIANwIAIAFBGGogA0EUaikCADcCACABQSBqIANBHGopAgA3AgAgAUEoaiADQSRqKQIANwIAQeDOwwAhBgwDC0EUQQQQsw4iAUUNDyABQoGAgIAQNwIAIAEgAykCBDcCCCABQRBqIANBDGooAgA2AgBBuNTDACEGDAILQRRBBBCzDiIBRQ0OIAFCgYCAgBA3AgAgASADKQIENwIIIAFBEGogA0EMaigCADYCAEHM0cMAIQYMAQtB7ABBBBCzDiIBRQ0MIAFCgYCAgBA3AgAgAUEIaiADQQRqQeQA/AoAAEGk18MAIQYLIAUgBjYCBCAFIAE2AgAMDQtBBEEkQZDExAAoAgAiAEHMCCAAGxEAAAALQQRBIEGQxMQAKAIAIgBBzAggABsRAAAAC0EEQSxBkMTEACgCACIAQcwIIAAbEQAAAAtBCEH4AEGQxMQAKAIAIgBBzAggABsRAAAAC0EEQawBQZDExAAoAgAiAEHMCCAAGxEAAAALQQRByABBkMTEACgCACIAQcwIIAAbEQAAAAtBBEHcAEGQxMQAKAIAIgBBzAggABsRAAAAC0EEQeAAQZDExAAoAgAiAEHMCCAAGxEAAAALQQRB6ABBkMTEACgCACIAQcwIIAAbEQAAAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAALQQRBMEGQxMQAKAIAIgBBzAggABsRAAAAC0EEQewAQZDExAAoAgAiAEHMCCAAGxEAAAALQQRBFEGQxMQAKAIAIgBBzAggABsRAAAACyAbKAIMIQEgGygCCCEFQSBBARCzDiIGRQ0DIAZBGGpB+KnBACkAADcAACAGQRBqQfCpwQApAAA3AAAgBkEIakHoqcEAKQAANwAAIAZB4KnBACkAADcAAEEMQQQQsw4iA0UNBSADQSA2AgggAyAGNgIEIANBIDYCACAFDQEgAyEBC0EBDAELIAMQ3QkgACAFNgIEQQghJEEACyEDIAAgJGogATYCACAAIAM2AgAgG0HgAmokAA8LQQFBIEHwvMEAENMNAAtBBEEQQZDExAAoAgAiAEHMCCAAGxEAAAALQQRBDEGQxMQAKAIAIgBBzAggABsRAAAAC6oCAgp9AX8jAEEwayIOJAAgAioCACABKgIQkyIKIAEqAgQiBJQgAioCBCABKgIUkyILIAEqAgAiCJSTIgUgBZIhBSALIAEqAggiCZQgAioCCCABKgIYkyIGIASUkyIHIAeSIQcgDiAGIAEqAgwiDCAFlCAEIAeUIAggBiAIlCAKIAmUkyIGIAaSIgaUk5KSIg04AgggDiAKIAwgB5QgCSAGlCAEIAWUk5KSIgQ4AgAgDiALIAwgBpQgCCAFlCAJIAeUk5KSIgg4AgQgDkEMaiAAIA4gAxBSIA4qAhAhBSAOKgIMIQkgDioCFCEHIA4tABghACAOQTBqJAAgCSAEkyIEIASUIAUgCJMiBCAElJIgByANkyIEIASUkpEiBCAEjCAEIABBAXEbIAMbC6sCAgp9AX8jAEEgayIOJAAgAioCACABKgIQkyIKIAEqAgQiBJQgAioCBCABKgIUkyILIAEqAgAiCJSTIgUgBZIhBSALIAEqAggiCZQgAioCCCABKgIYkyIGIASUkyIHIAeSIQcgDiAGIAEqAgwiDCAFlCAEIAeUIAggBiAIlCAKIAmUkyIGIAaSIgaUk5KSIg04AgggDiAKIAwgB5QgCSAGlCAEIAWUk5KSIgQ4AgAgDiALIAwgBpQgCCAFlCAJIAeUk5KSIgg4AgQgDkEMaiAAIA4gAxCSASAOKgIUIQUgDioCECEJIA4qAhghByAOLQAcIQAgDkEgaiQAIAkgBJMiBCAElCAFIAiTIgQgBJSSIAcgDZMiBCAElJKRIgQgBIwgBCAAQQFxGyADGwuqAgIKfQF/IwBBMGsiDiQAIAIqAgAgASoCEJMiCiABKgIEIgSUIAIqAgQgASoCFJMiCyABKgIAIgiUkyIFIAWSIQUgCyABKgIIIgmUIAIqAgggASoCGJMiBiAElJMiByAHkiEHIA4gBiABKgIMIgwgBZQgBCAHlCAIIAYgCJQgCiAJlJMiBiAGkiIGlJOSkiINOAIIIA4gCiAMIAeUIAkgBpQgBCAFlJOSkiIEOAIAIA4gCyAMIAaUIAggBZQgCSAHlJOSkiIIOAIEIA5BDGogACAOIAMQViAOKgIQIQUgDioCDCEJIA4qAhQhByAOLQAYIQAgDkEwaiQAIAkgBJMiBCAElCAFIAiTIgQgBJSSIAcgDZMiBCAElJKRIgQgBIwgBCAAQQFxGyADGwvGAgMEfwF+AX0gASgCBCEFIAEoAggiBK0hBiAAKAIAIgIoAgghAyACKAIAIANrQQdNBEAgAiADQQhBAUEBEOIGIAIoAgghAwsgAiADQQhqIgA2AgggAigCBCADaiAGNwAAIAQEQCAEQQJ0IQQDQCAFKgIAIQcgBUEEaiEFIAIgAigCACAAa0EDSwR/IAAFIAIgAEEEQQFBARDiBiACKAIICyIDQQRqIgA2AgggAigCBCADaiAHOAAAIARBBGsiBA0ACwsgATUCDCEGIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACKAIEIABqIAY3AAAgAiAAQQhqIgA2AgggATUCECEGIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACIABBCGo2AgggAigCBCAAaiAGNwAAQQALtAICBX8BfiMAQaABayIBJAAgAUGMAWogAEEUaigCACIENgIAIAFB4ABqIgNBCGoiBSAAQQhqKAIANgIAIANBFGogBDYCACADQRhqIgYgACkCDCIINwMAIANBIGoiByAENgIAIAEgCDcChAEgASAAKQIANwNgIAEgCDcCbCABQoGAgIAQNwKYASABQoCAgIAQNwKQASABQThqIAFBkAFqIgAQ5AYgAEEIakIANwMAIAFCADcDkAEgAUHIAGogABDlBiABQQhqIgBBCGogBSkDADcDACAAQRBqIANBEGopAwA3AwAgAEEYaiAGKQMANwMAIABBIGogBykDADcDACAAQShqIANBKGopAwA3AwAgAUKAgICALDcDWCABIAEpA2A3AwggAiAAQdgA/AoAACABQaABaiQAC68CAQN/IwBBkAFrIgMkAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASADQQhqIAAoAgAgA0EQahDUBSABQQFBAUEAIAMoAgggAygCDBDfAgwCCyAAKAIAIQBBACECA0AgAiADakGPAWogAEEPcSIEQTByIARB1wBqIARBCkkbOgAAIAJBAWshAiAAQQ9LIQQgAEEEdiEAIAQNAAsgAUEBQeuqxABBAiACIANqQZABakEAIAJrEN8CDAELIAAoAgAhAEEAIQIDQCACIANqQY8BaiAAQQ9xIgRBMHIgBEE3aiAEQQpJGzoAACACQQFrIQIgAEEPSyEEIABBBHYhACAEDQALIAFBAUHrqsQAQQIgAiADakGQAWpBACACaxDfAgshACADQZABaiQAIAAL5wICAn0CfwJAIAC8IgRB/////wdxIgNB////+wNNBEAgA0GAgID4A08EQCAEQQBOBEBDAACAPyAAk0MAAAA/lCIAkSICvEGAYHG+IQEgAiAAIAAgAENr0w28lEO6Ey+9kpRDdaoqPpKUIABDruU0v5RDAACAP5KVlCAAIAEgAZSTIAIgAZKVkiABkiIAIACSDwtD2g/JPyAAQwAAgD+SQwAAAD+UIgCRIgEgASAAIAAgAENr0w28lEO6Ey+9kpRDdaoqPpKUIABDruU0v5RDAACAP5KVlENoIaKzkpKTIgAgAJIhAQwCC0PaD8k/IQEgA0GBgICUA0kNAUNoIaIzIAAgACAAlCIBIAEgAUNr0w28lEO6Ey+9kpRDdaoqPpKUIAFDruU0v5RDAACAP5KVlJMgAJND2g/JP5IPCyADQYCAgPwDRwRAQwAAAAAgACAAk5UPC0MAAAAAQ9oPSUAgBEEAThsPCyABC8ICAgJ+B38gACgCBCIIBEAgACgCACEDIAAoAgwiCQRAIANBCGohBCADKQMAQn+FQoCBgoSIkKDAgH+DIQEgAyEFA0AgAVAEQANAIAVBwAJrIQUgBCkDACEBIARBCGohBCABQoCBgoSIkKDAgH+DIgFCgIGChIiQoMCAf1ENAAsgAUKAgYKEiJCgwIB/hSEBCyAFIAF6p0EDdkFYbGoiBkEYaygCACIHBEAgBkEUaygCACAHQQxsQQQQiA8LIAFCAX0hAiAGQQxrKAIAIgcEQCAGQQhrKAIAIAdBA3RBBBCIDwsgASACgyEBIAlBAWsiCQ0ACwsgAyAIQVhsakEoayAIQSlsQTFqQQgQiA8LIAAoAogCIgMEQCAAKAKMAiADQQJ0QQQQiA8LIAAoApQCIgMEQCAAKAKYAiADQQJ0QQQQiA8LC8sCAgR/BH0jAEEgayICJAACQAJAAkAgAEUNACAAQQhrIgUoAgBBAWohAyAFIAM2AgAgA0UNASAAKAIADQIgAEF/NgIAIAIgBTYCECACIAA2AgwgAiAAQQRqNgIIIAFFDQAgAUEIayIDKAIAQQFqIQQgAyAENgIAIARFDQEgASgCACIEQX9GDQIgASAEQQFqNgIAIAEqAgQiByAHlCABKgIIIgggCJSSIAEqAgwiCSAJlJKRIQYgACAJIAaVOAIwIAAgCCAGlTgCLCAAIAcgBpU4AiggASABKAIAQQFrNgIAIAMgAygCAEEBayIENgIAIAIgAzYCHCACIAE2AhggAiABQQRqNgIUIARFBEAgAkEcahCoDQsgAEEANgIAIAUgBSgCAEEBayIANgIAIABFBEAgAkEQahDnCwsgAkEgaiQADwsQmw8LAAsQnA8AC9MCAQN/IABBDGogACgCGCABaiIBEM0CIABBHGogARDNAiAAQSxqIAEQzQICQAJAIAAoAjwgACgCRCIDayACSQRAIABBPGogAyACQQRBEBD2BiAAKAJEIQMMAQsgAkUNAQsgAkEDcSEBIAAoAkAhBSACQQFrQQNPBEAgAkH8//8DcSEEIAUgA0EEdGohAgNAIAJCgICAgMAANwIAIAJBOGpCADcCACACQTBqQoCAgIDAADcCACACQShqQgA3AgAgAkEgakKAgICAwAA3AgAgAkEYakIANwIAIAJBEGpCgICAgMAANwIAIAJBCGpCADcCACACQUBrIQIgA0EEaiEDIARBBGsiBA0ACwsgAUUNACABIANqIQQgBSADQQR0aiECA0AgAkKAgICAwAA3AgAgAkEIakIANwIAIAJBEGohAiABQQFrIgENAAsgBCEDCyAAIAM2AkQLqwICCn0BfyMAQTBrIg0kACACKgIAIAEqAhCTIgkgASoCBCIDlCACKgIEIAEqAhSTIgogASoCACIFlJMiBiAGkiEGIAogASoCCCIIlCACKgIIIAEqAhiTIgQgA5STIgcgB5IhByANIAQgASoCDCILIAaUIAMgB5QgBSAEIAWUIAkgCJSTIgQgBJIiBJSTkpIiDDgCECANIAkgCyAHlCAIIASUIAMgBpSTkpIiAzgCCCANIAogCyAElCAFIAaUIAggB5STkpIiBTgCDCANQRRqIAAgDUEIahDjA0EBIQECQCADIA0qAhSTIgMgA5QgBSANKgIYkyIDIAOUkiAMIA0qAhyTIgMgA5SSIgNDAACAKF5FDQAgACoCGCADkWANAEEAIQELIA1BMGokACABC9UCAgR/AX4jAEEgayIDJAACQAJAAkACQCAABEAgAEEIayIEKAIAQQFqIQIgBCACNgIAIAJFDQEgACgCACICQX9GDQIgACACQQFqNgIAIAMgBDYCDCADIAA2AgggAyAAQQRqIgI2AgQgAiABvSIGpyAGQiCIpxC4DCICRQ0DIAIoAhAiBUEBRgRAIANBGGogAkE0aigCADYCACADIAIpAiw3AxALIAAgACgCAEEBazYCACAEIAQoAgBBAWsiADYCACAARQRAIANBDGoQ7wwLQQAhACAFBEBBGEEEELMOIgBFDQUgAEEANgIIIABCgYCAgBA3AgAgACADKQMQNwIMIABBFGogA0EYaigCADYCACAAQQhqIQALIANBIGok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DSECDAELIAEgBUEIayIENgIEIAEgASgCACICQQhqNgIAIAIpAAAiBkKAgICAEFoEQCADQQE6AAggAyAGNwMQIANBCGogA0EfakGAqsEAEO8KIQIMAQsgBEEDTQRAIANCgcoANwMIIANBCGoQog0hAgwBCyABIAVBDGsiBDYCBCABIAJBDGo2AgAgBEUEQCADQoHKADcDCCADQQhqEKINIQIMAQsgAigACCEEIAEgBUENazYCBCABIAJBDWo2AgAgAi0ADCIBQQJJDQFBDEEEELMOIgJFDQMgAiABOgAEIAJBgoCAgHg2AgALIAAgAjYCAEECIQEMAQsgACAENgIEIAAgBj4CAAsgACABOgAIIANBIGokAA8LQQRBDEGQxMQAKAIAIgBBzAggABsRAAAAC7QCAQJ/IwBBIGsiAiQAQYEBIQMgAiABKAIAQQFxBH8gASsCBBAABUGBAQs2AgwgAiABKAIMQQFxBH8gASsCEBAABUGBAQs2AhAgAiABKwIgEAA2AhggAiABKwIoEAA2AhwgAiAAQQhqIAAgAkEYaiACQRxqEIQONgIUIAIgAkEUaiAAIAJBDGogAkEQahC0DCACKAIEIQECQCACKAIAQQFxRQRAIAEQASEAIAFBhAFPBEAgARACCyAAQQFGIQAMAQtBACEAIAFBhAFJDQAgARACCyACKAIQIgFBhAFPBEAgARACCyACKAIMIgFBhAFPBEAgARACCyACKAIUIgFBhAFPBEAgARACCyACKAIcIgFBhAFPBEAgARACCyACKAIYIgFBhAFPBEAgARACCyACQSBqJAAgAAvTAgEEfyMAQbADayIBJAACQAJAAkAgAARAIABBEGsiAigCACIEQQFqIQMgAiADNgIAIANFDQEgACgCAA0CIAAoApwDIQMgAEECNgKcAyACIAQ2AgBBACECIANBAkcEQCABQRhqIgIgAEG4A2opAwA3AwAgAUEQaiIEIABBsANqKQMANwMAIAEgACkDoAM3AwAgASAAQagDaikDADcDCCABQTRqIABBIGpB/AL8CgAAQcADQRAQsw4iAEUNBCAAQQA2AhAgAEKBgICAEDcDACAAQRRqIAFBKGpBiAP8CgAAIAAgAzYCnAMgACABKQMANwOgAyAAQagDaiABKQMINwMAIABBsANqIAQpAwA3AwAgAEG4A2ogAikDADcDACAA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IAxrQXhNBEAgE0F4cSEIA0AgBEL/////DzcCACAEQThqQv////8PNwIAIARBMGpC/////w83AgAgBEEoakL/////DzcCACAEQSBqQv////8PNwIAIARBGGpC/////w83AgAgBEEQakL/////DzcCACAEQQhqQv////8PNwIAIARBQGshBCAIQQhrIggNAAsLIAsEQANAIARC/////w83AgAgBEEIaiEEIAtBAWsiCw0ACwsgBSAQakEBayEFCyAEQv////8PNwIAIAYgBUEBaiIINgI4CyAIIAxNDQQgBigCNCAMQQN0aiIEIAc2AgQgBCASNgIACyAJQX9GBEAgBigCICIJIAYoAhhGBEAgBkEYakH0v8EAELoICyAGIAlBAWo2AiAgBigCHCAJQQR0aiIEQn83AgggBCAPNgIEIAQgCjYCAAJAIAYoAjgiCCAKSwRAIAghBAwBCyAIIApBAWoiBEkEQCAEIAgiBWshECAQIAYoAjAgBWtLBEAgBkEwaiAFIBBBBEEIEOIGIAYoAjghBQsgBigCNCAFQQN0aiEEIBBBAk8EQCAKIAhrIhNBB3EhCyAIIAprQXhNBEAgE0F4cSEIA0AgBEL/////DzcCACAEQThqQv////8PNwIAIARBMGpC/////w83AgAgBEEoakL/////DzcCACAEQSBqQv////8PNwIAIARBGGpC/////w83AgAgBEEQakL/////DzcCACAEQQhqQv////8PNwIAIARBQGshBCAIQQhrIggNAAsLIAsEQANAIARC/////w83AgAgBEEIaiEEIAtBAWsiCw0ACwsgBSAQakEBayEFCyAEQv////8PNwIAIAVBAWohBAsgBiAENgI4CyAEIApNDQUgBigCNCAKQQN0aiIEIAk2AgQgBCAPNgIACyAGKAIgIQUgBigCHCEEIAYoAiwhCwJAAkAgByAJTQRAIAUgCU0NASAHIAlGDQIMCAsgBSAHSw0HCyANQQA2AjggDUEBNgIsIA1B3L/BADYCKCANQgQ3AjAgDUEoakHkv8EAELgNAAsgBCAHQQR0aiIEKAIMIQUgBCALNgIMIAQoAgghCCAEIAs2AggMBgsgDiAEQdS+wQAQiAsACyAMIARBhMDBABCICwALIAogCUGEwMEAEIgLAAsgDCAIQZTAwQAQiAsACyAKIARBlMDBABCICwAL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ACAEQRBqIgQgDCkDADcDACACQSBqIgkgDSkDADcDACACIAIpA+gPNwMYIANBDGogAkGIB2ooAgA2AgAgAyACKQOABzcCBCADQbgHaiACQYwHakHEAPwKAAAgA0HoA2ogAkGIAWopAwA3AwAgA0HgA2ogAUEwaikDADcDACADQdgDaiABQShqKQMANwMAIANB0ANqIAFBIGopAwA3AwAgA0HIA2ogAUEYaikDADcDACADQcADaiABQRBqKQMANwMAIANBuANqIAIpA1g3AwAgAyACKQNQNwOwAyADQfADaiACQZABakGgAfwKAAAgA0H0BmogAkHQB2pBxAD8CgAAIANBEGogAkGwAmpBoAP8CgAAIANB7AZqIAYpAwA3AgAgA0HkBmogBykDADcCACADQdwGaiAIKQMANwIAIANB1AZqIAQpAwA3AgAgA0HMBmogCSkDADcCACADIAIpAxg3AsQGIANBkAVqIAJB0AVqQdgA/AoAACADQegFaiACQagGakHYAPwKAAAgAyAFNgLABiADQQE2AgAgAigCDCIBBEAgAigCECABQQEQiA8LIAIoAggiAUGDAUsNAQwCCyACQQI2AuQPIAIgBjYCoAgCQCACQaAIaiIBKALEB0ECRwRAIAEQkwogAUFAaxCACiABQYAHahDSByABQeABahDrByABQcQHahCiCCABQYAFahDZCSABQdgFahC3CAwBCyABKAIAEN0JCyADQQI2AgAgAigCDCIBBEAgBCABQQEQiA8LIAIoAggiAUGEAUkNAQsgARACCyACQbAYaiQAIAAgACgCAEEBazYCACAKIAooAgBBAWsiADYCACAARQRAIANBjAhqEKcNC0EAIQAgAygCAEECRwRAIANBkAhqIANBgAj8CgAAQaAIQRAQsw4iAEUNBCAAQQA2AhAgAEKBgICAEDcDACAAQRRqIANBhAhqQYwI/AoAACAAQRBqIQALIANBkBBqJAAgAA8LEJsPCwALEJwPAAtBEEGgCEGQxMQAKAIAIgBBzAggABsRAAAAC7YCAgJ9Bn8gACgCCCIDRQRAQ///f38PCyAAKAIEIQUgA0EBcSEGAkAgA0EBRgRAQQAhA0P//39/IQEMAQsgBUHEAGohACADQX5xIQdBACEDQ///f38hAQNAIABBKGsoAgAgAEEkaygCACIEKAIIQQFrQXhxakEI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IAUoAgwiA00NAQNAIAYgA0E4bGoiBSgCMCAKRg0BIAQgBSgCLCIDSw0ACwwBCyADIARPDQAgBiADQThsaiIDQQAgAygCNCAJSRtBACADKAIwIAlJGyELCyAAIAAoAgBBAWs2AgAgCCAIKAIAQQFrIgA2AgAgAEUEQCAHQQxqEOwMCyALBH9BEEEEELMOIgBFDQQgACALNgIMIABBADYCCCAAQoGAgIAQNwIAIABBCGoFQQALIQAgB0EQaiQAIAAPCxCbDwsACxCcDwALQQRBEEGQxMQAKAIAIgBBzAggABsRAAAAC4QCAwR/AX4BfSABKAIEIQUgASgCCCIErSEGIAAoAgAiAigCCCEAIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACIABBCGoiAzYCCCACKAIEIABqIAY3AAAgBARAIARBAnQhBANAIAUqAgAhByAFQQRqIQUgAiACKAIAIANrQQNLBH8gAwUgAiADQQRBAUEBEOIGIAIoAggLIgBBBGoiAzYCCCACKAIEIABqIAc4AAAgBEEEayIEDQALCyABNQIMIQYgAigCACADa0EHTQRAIAIgA0EIQQFBARDiBiACKAIIIQMLIAIgA0EIajYCCCACKAIEIANqIAY3AABBAAuLAgEIfyMAQRBrIgIkAAJAAkACQCABRQRAIABFDQEgAEEIayIBKAIAQQFHDQIgACgCICEGIAAoAhwhAyAAKAIUIQcgACgCECEEIAAoAgghCCAAKAIEIQUgAUEANgIAAkAgAUF/Rg0AIABBBGsiCSgCAEEBayEAIAkgADYCACAADQAgAUHEAEEEEIgPCyAFBEAgCCAFQdQBbEEEEIgPCyAEBEAgByAEQQxsQQQQiA8LIANFDQMgBiADQQxsQQQQiA8MAwsgAEUNACAAQQhrIgAoAgBBAWshASAAIAE2AgAgAiAANgIMIAENAiACQQxqENMKDAILEJsPAAtBgNLBAEE/EJoPAAsgAkEQaiQAC7ICAQJ9AkACQAJAIAEoAghFDQAgASgCBCIBKAI8Qf////8DcSABKAIcQf////8DcWoOAgABAgsgAEL////7////v383AhAgAEL////79///v383AgggAEL////79///v/8ANwIADwsgACABKQIANwIAIAAgASkCEDcCDCAAQQhqIAFBCGooAgA2AgAg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AyABNgIAIAFFDQEgACgCACIBQX9GDQIgACABQQFqNgIAIAAoAgQiBUHwAGooAgAhBiAFKQJoIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL6wECBn8BfiMAQRBrIgIkAAJAAkACQCAABEAgAEEIayIDKAIAIgRBAWohASADIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCIFQZABaigCACEGIAUpAogBIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL6wECBn8BfiMAQRBrIgIkAAJAAkACQCAABEAgAEEIayIDKAIAIgRBAWohASADIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCIFQZwBaigCACEGIAUpApQBIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL2AECAX8BfSAAKgIAIQMgASgCACICKAIIIQEgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIoAgQgAWogAzgAACACIAFBBGoiATYCCCAAKgIEIQMgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIoAgQgAWogAzgAACACIAFBBGoiATYCCCAAKgIIIQMgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIgAUEEajYCCCACKAIEIAFqIAM4AABBAAvBAQIFfwF+IwBBIGsiAiQA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AAAAlCIrkiInICGTXhshLCAgICEgICAmkiAhICeSXhshJiAiICMgIEMAAAAAlCIgICkgIpOSICogI5MgIUMAAAAAlCIhkl4bIScgIiAjICAgIiApkpIgKiAjkiAhkl4bISIgJCAlICAgKCAkk5IgKyAlkyAhkl4bISMgJCAlICAgJCAokpIgJSArkiAhkl4bISAgAygCQCITIAMoAjhGBEAgGUHo7MIAEMcICyALQQFqIRUgAygCPCIIIBNBBXRqIgFBgYCAgHw2AhwgASAmOAIYIAEgIjgCFCABICA4AhAgASALNgIMIAEgLDgCCCABICc4AgQgASAjOAIAIAMgE0EBaiIbNgJAAkAgAygCJCIFIAtLBEAgBSEBDAELIAsgBSIBayEEIAQgAygCHCABa08EQCAaIAEgBEEBakEEQQgQ4wYgAygCJCEBCyAVIAVrQQNxIQ8gAygCICEWIARBA08EQCASIAVrQXxxIQkgFiABQQN0aiEEA0AgBEEANgIAIARBGGpBADYCACAEQRBqQQA2AgAgBEEIakEANgIAIARBIGohBCABQQRqIQEgCUEEayIJDQALCyAPBEAgASAPaiEPIBEgBWtBA3EhCSAWIAFBA3RqIQQDQCAEQQA2AgAgBEEIaiEEIAlBAWsiCQ0ACyAPIQELIAMgATYCJAsgASALTQ0EIAMoAiAgC0EDdGoiASgCACEFIAFCATcCACAFRQRAIAMgAygCKEEBajYCKAsgEUEBaiERIBJBAWohEiAVIQsgGCAOQQhqIg5HDQALIBNBAWoOAwcFBAYLIAogAUGsycIAENMNAAsgASANQbCWwwAQiAsACyAFIA1BwJbDABCICwALIAsgAUGo/cMAEIgLAAsgAyAIKQMANwOAASADIAgpAyA3A6ABIAMgCEEYaikDADcDmAEgAyAIQRBqKQMANwOQASADIAhBCGopAwA3A4gBIAMgCEEoaikDADcDqAEgAyAIQTBqKQMANwOwASADIAhBOGopAwA3A7gBIAMoAgwiBSADKAIERgRAIANBBGpBiOzCABDICAsgAygCCCAFQQZ0aiIBIAMpA4ABNwMAIAFBIGogAykDoAE3AwAgAUEYaiADKQOYATcDACABQRBqIAMpA5ABNwMAIAFBCGogAykDiAE3AwAgAUEoaiADKQOoATcDACABQTBqIAMpA7ABNwMA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KAIAIgBBzAggABsRAAAACyAAQgA3AzAgAEKAgICAwAA3AyggAEIENwMgIABCADcDGCAAQoCAgICACDcDECAAQQA2AgggAEKBgICAEDcDACAAQoCAgIDAADcDkAEgAEIANwOIASAAQoCAgIDAADcDgAEgAEIENwN4IABCADcDcCAAQoCAgIDAADcDaCAAQhA3A2AgAEIANwNYIABCgICAgIAINwNQIABCidm54o7TvpcINwNIIABB0MvBACkDADcDOCAAQUBrQdjLwQApAwA3AwAgAEGoAWpBADoAACAAQaABakIANwMAIABCADcDmAEgAEEIagvJAQEBfyMAQRBrIggkACAAKAIAIAFBBiAAKAIEKAIMEQUAIQEgCEEAOgANIAggAToADCAIIAA2AgggCEEIaiACQQQgAyAEELEGIAVBBSAGIAcQsQYhASAILQANIgIgCC0ADCIDciEAAkAgAkEBRw0AIANBAXENACABKAIAIgAtAApBgAFxRQRAIAAoAgBB46rEAEECIAAoAgQoAgwRBQAhAAwBCyAAKAIAQeKqxABBASAAKAIEKAIMEQUAIQALIAhBEGokACAAQQFxC7wDAQl/IwBBQGoiASQAIAFBDGohACMAQSBrIgIkACACQQA2AhggAkEIakEQQcAFIAJBFGoQ9AkgAigCCEEBRgRAIAIoAgwgAigCEEGgicIAENMNAAsgAigCDCIFIQMDQCADQQA2AgAgA0GwAWpBADYCACADQQRqIARBA0ciBjYCACADQbQBaiAEQQFqIgdBA0ciCDYCACADQQhqIAdBACAGGzYCACADQbgBaiAEQQJqIgRBACAIGzYCACADQeACaiEDIARBBEcNAAsgAEIANwIUIABBBDYCECAAIAU2AgwgAEEENgIIIABCATcCACACQSBqJAAgAEIENwIsIABCADcCJCAAQoCAgIDAADcCHEHAAEEEELMOIgBFBEBBBEHAAEGQxMQAKAIAIgBBzAggABsRAAAACyAAQQA2AgggAEKBgICAEDcCACAAIAEpAgw3AgwgAEEUaiABQRRqKQIANwIAIABBHGogAUEcaikCADcCACAAQSRqIAFBJGopAgA3AgAgAEEsaiABQSxqKQIANwIAIABBNGogAUE0aikCADcCACAAQTxqIAFBPGooAgA2AgAgAUFAayQAIABBCGoLtAEBBn8j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QQxqIAL8CgAACyAEIAVBAWs2AgwgA0UNAiABIAM2AkggASASNwJMIARBADoAACASQoCAgIAQVCIGDQUgEkIgiKciAi0ANUUEQANAIAItADRFDQALIAIoAgAhAyACQQA2AgAgA0EBcQRAIAFB4ABqIgNBKGogAkEsaikCADcDACADQSBqIAJBJGopAgA3AwAgA0EYaiACQRxqKQIANwMAIANBEGogAkEUaikCADcDACADQQhqIAJBDGopAgA3AwAgASACKQIENwNgIAJBOEEEEIgPIAEoAkghAwwGC0HQt8EAEJEPAAsgAigCACEFIAJBADYCACAFQQFxDQNB4LfBABCRDwALIAJBAWohAiAKIANBDGoiA0cNAAsLIARBADoAAAwDCyACQQE6ADQgAUHgAGoiBUEoaiACQSxqKQIANwMAIAVBIGogAkEkaikCADcDACAFQRhqIAJBHGopAgA3AwAgBUEQaiACQRRqKQIANwMAIAVBCGogAkEMaikCADcDACABIAIpAgQ3A2ALIAcgASkDYDcBACAHQShqIAFB4ABqIgJBKGopAwA3AQAgB0EgaiACQSBqKQMANwEAIAdBGGogAkEYaikDADcBACAHQRBqIAJBEGopAwA3AQAgB0EIaiACQQhqKQMANwEACyADIAMoAgAiAkEBazYCACACQQFGBEAgAUHIAGoQ2gsLIAZFDQMLIAEoAhAiBEGEAU8EQCAEEAILIAFBkAFqJAAMBAsgAUIANwJUIAFCgYCAgMAANwJMIAFBoLjBADYCSCABQccAaiABQcgAakGouMEAEP8MAAsgAiAFQfC3wQAQhwsAC0E8QQQQsw4iAgRAIAJBADYCCCACQoGAgIAQNwIAIAIgBykBADcBDCACQRRqIAdBCGopAQA3AQAgAkEcaiAHQRBqKQEANwEAIAJBJGogB0EYaikBADcBACACQSxqIAdBIGopAQA3AQAgAkE0aiAHQShqKQEANwEAIAEgAkEIahAGNgJgIAFBCGogDSABQRBqIAFB4ABqEL8MIAEoAgwiAkGEAU8EQCACEAILIAEoAmAiAkGEAUkNASACEAIMAQsLQQRBPEGQxMQAKAIAIgBBzAggABsRAAAACyAAQQA2AgAgDCAMKAIAQQFrIgA2AgAgAEUEQCAJQQhqEOkMCyAJQRBqJAAPCxCbDwsACxCcDwALpAEB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AkGA2sIANgIIIAJCBDcCECACQQhqQYjawgAQuA0ACyABKgIEIQQgASoCACEFIAAgASoCCCIGIAOSOAIUIAAgBCADkjgCECAAIAUgA5I4AgwgACAGjCADkzgCCCAAIASMIAOTOAIEIAAgBYwgA5M4AgAgAkEgaiQAC6YBAgF/AX0jAEHAAWsiAyQAIAEqAmAhBSADQeAAaiIEIAEQ9wEgAyAEIAIQ/QICQAJAIAMoAgBBgICAgHhHBEAgBCADQeAA/AoAAEHkAEEEELMOIgFFDQEgASAEQeAA/AoAACABIAU4AmAMAgtBACEBDAELQQRB5ABBkMTEACgCACIAQcwIIAAbEQAAAAsgAEGk18MANgIEIAAgATYCACADQcABaiQAC+MCAgV/AX0jAEEgayICJAAgAiAAOAIMIAIgAEMAAAAAlCIHOAIQIAIgBzgCCCACIACMOAIYIAIgB4wiADgCHCACIAA4AhQjAEEgayIDJAAgA0EQaiIFIAJBFGoiBEEIaigCADYCACADQRxqIAJBCGoiBkEIaigCADYCACADIAQpAgA3AwggAyAGKQIANwIUQSRBBBCzDiIERQRAQQRBJEGQxMQAKAIAIgJBzAggAhsRAAAACyAEQoGAgIAQNwIAIAQgAykDCDcCCCAEIAE4AiAgBEEQaiAFKQMANwIAIARBGGogA0EYaikDADcCACACQfiewwA2AgQgAiAENgIAIANBIGokACACKAIEIQQgAigCACEFQRRBBBCzDiIDRQRAQQRBFEGQxMQAKAIAIgJBzAggAhsRAAAACyADIAU2AgwgA0EANgIIIANCgYCAgBA3AgAgAyAENgIQIAJBIGokACADQQhqC8YDAQR/IwBBMGsiAyQAIANBDGohAiAAQQBHIQQCQAJAQYACQcAAELMOIgAEQCAAQQA6AMgBIABCgYCAgBA3A8ABIABBAToAnAEgAEIENwKUASAAQgA3AowBIABCgICAgMAANwKEASAAQQA6AIABIABCADcDQCAAQgA3AwBBgAJBwAAQsw4iAUUNAiABQQA6AMgBIAFCgYCAgBA3A8ABIAFBAToAnAEgAUIENwKUASABQgA3AowBIAFCgICAgMAANwKEASABQQA6AIABIAFCADcDQCABQgA3AwAgAiAEOgAgIAIgATYCHCACQQE2AhggAiAANgIUIAJBATYCECAC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IAEgATYCECAHIAFBEGpB+IHEACgCABEDAA0BIAEoAhBB4KrEAEECIAEoAhQoAgwRBQAhBgwBCyAHIAJB+IHEACgCABEDACEGCyAEQQE6AAUgBCAGOgAEIAFBIGokACAAQQFqIQAgBUEBayIFDQALC0EBIQAgA0EEaiIBLQAERQRAIAEoAgAiACgCAEHqqsQAQQEgACgCBCgCDBEFACEACyABIAA6AAQgA0EQaiQAIAALbwECfyMAQRBrIgQkAEGAgICAeEEEIAEgAUEETRsiA2sgAUEHakEAIAFrcSACaiIBSQRAQcyKxABBKyAEQQ9qQbyKxABBiIvEABDaCgALIAAgAzYCACAAIAEgA2pBAWtBACADa3E2AgQgBEEQaiQAC24BAX8jAEEwayIDJAAgAyACNgIEIAMgATYCACADQQI2AgwgA0GYucEANgIIIANCAjcCFCADIAOtQoCAgIAQhDcDKCADIACtQoCAgIAghDcDICADIANBIGo2AhAgA0EIahCGByEAIANBMGokACAAC5gBAQF/QYABQQQQsw4iAARAIABCgICAgICAgMA/NwIcIABCADcCFCAAQX82AhAgAEKAgICAcDcCCCAAQoGAgIAQNwIAIABBJGpBAEHEAPwLACAAQQI6AHwgAEEANgJ4IABCgICAgICAgMA/NwJwIABCgICA/AM3AmggAEEIag8LQQRBgAFBkMTEACgCACIAQcwIIAAbEQAAAAttAgR9AX9BASEHIAAqAgQiAyABKgIEjJQgASoCACAAKgIAIgSUkyABKgIIIAAqAggiBZSTIgZDAAAAAF4Ef0EBBSAGIAQgASoCDJQgAyABKgIQlJIgBSABKgIUlJKVIgNDAAAAAGAgAiADYHELC4QBAQF/QSRBBBCzDiICRQRAQQRBJEGQxMQAKAIAIgBBzAggABsRAAAACyACIAEpAgA3AgAgAkEgaiABQSBqKAIANgIAIAJBGGogAUEYaikCADcCACACQRBqIAFBEGopAgA3AgAgAkEIaiABQQhqKQIANwIAIABBsPbCADYCBCAAIAI2AgALhAEBAX9BKEEEELMOIgJFBEBBBEEoQZDExAAoAgAiAEHMCCAAGxEAAAALIAIgASkCADcCACACQSBqIAFBIGopAgA3AgAgAkEYaiABQRhqKQIANwIAIAJBEGogAUEQaikCADcCACAC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t9OwhQyFIgV+IAFBDGs1AgBC3aHxywyFIgYgA0L/////D4MiA36FIAMgBX4gBCAGfoVCIImFC28BBH4gASgCACACQQR0ayIBQQxrKQAAQpeSnKrbtrXCP4UiA0IgiCIFIAFBEGspAAAgACgCACgCACkDAEI0iYUiBEIgiCIGfiADQv////8PgyIDIARC/////w+DIgR+hSADIAZ+IAQgBX6FQiCJhQtuAQd9IABCAjcCECAAIAEqAgAiBCACKgIAIgWUIAEqAgQiBiACKgIEIgeUkiABKgIIIgggAioCCCIJlJIiA0MAAAAAXzoADCAAIAkgCCADlJM4AgggACAHIAYgA5STOAIEIAAgBSAEIAOUkzgCAAtqAQN9IAAgASABQQxqIAEqAgAgAioCACIDlCABKgIEIAIqAgQiBJSSIAEqAgggAioCCCIFlJIgAyABKgIMlCAEIAEqAhCUkiAFIAEqAhSUkl4bIgEpAgA3AgAgAEEIaiABQQhqKAIANgIAC4YBAQJ/IwBBIGsiAiQAIAAoAgAhAyACQQxqIgAgASgCAEEBQQAgASgCBCgCDBEFADoACCAAIAE2AgQgAEEBOgAJIABBADYCACACIAM2AhggAiADQQRqNgIcIAAgAkEYakGM08IAELAHIAAgAkEcakGM08IAELAHIAAQhgohACACQSBqJAAgAAtrACAAQgA3AhwgACABKQIANwIAIABBJGpCADcCACAAQSxqQgA3AgAgAEE0akIANwIAIABBPGpBADYCACAAQRhqIAFBGGooAgA2AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCAAvLDQINfQ5/IwBB0AJrIhYkACAWQawBaiIDIAEQqAEgFkEIaiERIwBBMGsiFSQAAkAgAygCMCITRQ0AIAIqAgghBCACKgIEIQUgAioCACEGIAMoAiwiEiEBIBNBDGwiE0EMayIUQQxuQQFxRQRAIAEgBiABKgIAlDgCACABIAUgASoCBJQ4AgQgASAEIAEqAgiUOAIIIAFBDGohAQsgFEEMSQ0AIBIgE2ohEwNAIAEgBiABKgIAlDgCACABQQRqIhIgBSASKgIAlDgCACABQQhqIhIgBCASKgIAlDgCACABQQxqIhIgBiASKgIAlDgCACABQRBqIhIgBSASKgIAlDgCACABQRRqIhIgBCASKgIAlDgCACATIAFBGGoiAUcNAAsLAkAgAygCQEGAgICAeEYNACADKAJIIhMEQCADKAJEIQEgE0EMbCETIAIqAgghByACKgIEIQggAioCACEJA0AgASAJIAEqAgCUIgY4AgAgCCABQQRqIhIqAgCUIQQgEiAEOAIAIAcgAUEIaiIUKgIAlCEFIBQgBTgCACAGIAaUIAQgBJSSIAUgBZSSIgpDAAAAAFwEQCAUIAUgCpEiBZU4AgAgEiAEIAWVOAIAIAEgBiAFlTgCAAsgAUEMaiEBIBNBDGsiEw0ACwsgAygCVCIBRQ0AIAMoAlAhHSABQSRsIR4gAioCCCENIAIqAgQhDiACKgIAIQ9BACETA0AgDyATIB1qIgEqAgCUIQQgASAEOAIAIA4gAUEEaiISKgIAlCEFIBIgBTgCACANIAFBCGoiFCoCAJQhBiAUIAY4AgAgDyABQQxqIhcqAgCUIQcgFyAHOAIAIA4gAUEQaiIYKgIAlCEIIBggCDgCACANIAFBFGoiGSoCAJQhCSAZIAk4AgAgDyABQRhqIhoqAgCUIQogGiAKOAIAIA4gAUEcaiIbKgIAlCELIBsgCzgCACANIAFBIGoiHCoCAJQhDCAcIAw4AgAgBCAElCAFIAWUkiAGIAaUkiIQQwAAAABcBEAgEiAFIBCRIgWVOAIAIAEgBCAFlTgCACAUIAYgBZU4AgALIAcgB5QgCCAIlJIgCSAJlJIiBEMAAAAAXARAIBggCCAEkSIElTgCACAXIAcgBJU4AgAgGSAJIASVOAIACyAKIAqUIAsgC5SSIAwgDJSSIgRDAAAAAFwEQCAbIAsgBJEiBJU4AgAgGiAKIASVOAIAIBwgDCAElTgCAAsgHiATQSRqIhNHDQALCyADQUBrIRMgFUEIaiADEJkFIANBKGohEiAVKAIQIgEEQCABQQZ0IBUoAgwiAWohFCACKgIIIQQgAioCBCEFIAIqAgAhBgNAIAEgBiABKgIAlDgCACABQQRqIgIgBSACKgIAlDgCACABQQhqIgIgBCACKgIAlDgCACABQRBqIgIgBiACKgIAlDgCACABQRRqIgIgBSACKgIAlDgCACABQRhqIgIgBCACKgIAlDgCACABQSBqIgIgBiACKgIAlDgCACABQSRqIgIgBSACKgIAlDgCACABQShqIgIgBCACKgIAlDgCACABQTBqIgIgBiACKgIAlDgCACABQTRqIgIgBSACKgIAlDgCACABQThqIgIgBCACKgIAlDgCACAUIAFBQGsiAUcNAAsLIBEgEikCADcCKCARIAMpAjQ3AjQgESATKQIANwJAIBEgAykCWDcCWCARQTBqIBJBCGooAgA2AgAgEUE8aiADQTxqKAIANgIAIBFByABqIBNBCGopAgA3AgAgEUHQAGogE0EQaikCADcCACARQeAAaiADQeAAaikCADcCACARQegAaiADQegAaikCADcCACARQfAAaiADQfAAaikCADcCACARQfgAaiADQfgAaigCADYCACARQZwBaiADQZwBaigCADYCACARQZQBaiADQZQBaikCADcCACARQYwBaiADQYwBaikCADcCACARQYQBaiADQYQBaikCADcCACARIAMpAnw3AnwgESAVKQIINwIAIBFBCGogFUEIaiIBQQhqKQIANwIAIBFBEGogAUEQaikCADcCACARQRhqIAFBGGopAgA3AgAgEUEgaiABQSBqKQIANwIAIBEgAy8BoAE7AaABIAMoAgAiAQRAIAMoAgQgAUEGdEHAABCIDwsgAygCDCIBBEAgAygCECABQQJ0QQQQiA8LIAMoAhgiAQRAIAMoAhwgAUEDdEEEEIgPCyAVQTBqJABBpAFBBBCzDiIBBEAgASARQaQB/AoAACAAQYCpwwA2AgQgACABNgIAIBZB0AJqJAAPC0EEQaQBQZDExAAoAgAiAEHMCCAAGxEAAAALawEDfwJAIAEoAggiAkEASA0AIAEoAgQhAwJAIAJFBEBBASEBDAELQQEhBCACQQEQsw4iAUUNAQsgAgRAIAEgAyAC/AoAAAsgACACNgIIIAAgATYCBCAAIAI2AgAPCyAEIAJB+IrEABDTDQALZQEFfSADKgIAIgUgBZQgAyoCBCIGIAaUkiADKgIIIgcgB5SSkSEEIAAgAioCGCABKgIAIgggByAElZSSOAIIIAAgAioCFCAIIAYgBJWUkjgCBCAAIAIqAhAgCCAFIASVlJI4AgALcAEBfyMAQRBrIgIkACACQgA3AwgCQAJAIAEoAgBBAUYEQCACIAEpAgQ3AwgMAQsgASgCBCIBQQFLDQEgAkEIaiABQQJ0akGAgID8AzYCAAsgACACKQMINwIAIAJBEGokAA8LIAFBAkHsmcMAEIgLAAuCAQEGfSACKgIIIQQgAioCBCEFIAIqAgAhBiABKgIIIQcgASoCBCEIIAEqAgAhCUEMQQQQsw4iAUUEQEEEQQxBkMTEACgCACIAQcwIIAAbEQAAAAsgASAHIASUOAIIIAEgCCAFlDgCBCABIAkgBpQ4AgAgAEG8/cIANgIEIAAgATYCAAtjAQF9IwBBMGsiBCQAIARBCGogASABQQxqIAFBGGogAhDQAgJ/AkAgBCgCCEEERwRAIAQqAhAiBSADXw0BC0EADAELIAQ1AghCBFILIQEgACAFOAIEIAAgATYCACAEQTBqJAAL0AEBBH8jAEEQayIFJAAgBUEIaiEGQRhBBBCzDiIERQRAQQRBGEGQxMQAKAIAIgRBzAggBBsRAAAACyAEIAM4AhQgBCACOAIQIAQgATgCDCAEIAA4AgggBEKBgICAEDcCACAGQZDawwA2AgQgBiAENgIAIAUoAgwhBiAFKAIIIQdBFEEEELMOIgRFBEBBBEEUQZDExAAoAgAiBEHMCCAEGxEAAAALIAQgBzYCDCAEQQA2AgggBEKBgICAEDcCACAEIAY2AhAgBUEQaiQAIARBCGoLZwEEfiAAKAIAKAIAKQMAQoKAgIAQhSIDQiCIIgQgASgCACACQWxsaiIAQRBrNQIAQrfTsIUMhSIFfiAAQRRrNQIAQt2h8csMhSIGIANC/////w+DIgN+hSADIAV+IAQgBn6FQiCJhQteAQV9IAIqAgAiBiAGlCACKgIIIgQgBJSSIgdDAAAAAFwEQCAEIAeRIgOVIAEqAgQiBJQhBSAGIAOVIASUIQMLIAAgBTgCCCAAIAM4AgAgACABKgIAIAIqAgSYOAIEC2kAIABCADcCACAAQgA3AjAgAEIANwJAIABBKGpCADcCACAAQSBqQgA3AgAgAEEYakIANwIAIABBEGpCADcCACAAQQhqQgA3AgAgAEE4akIANwIAIABByABqQgA3AgAgAEHQAGpCADcCAAsSACMAQTBrIgAkACAAQTBqJAALaQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAzYCDCADQfSLxAA2AgggA0ICNwIUIAMgA0EEaq1CgICAgDCENwMoIAMgA61CgICAgDCENwMgIAMgA0EgajYCECADQQhqIAIQuA0AC2kBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HoqMQANgIIIANCAjcCFCADIAOtQoCAgIAwhDcDKCADIANBBGqtQoCAgIAwhDcDICADIANBIGo2AhAgA0EIaiACELgNAAtwAQF/IwBBMGsiAiQAIAIgATgCBCACIAA4AgAgAkECNgIMIAJB8LvEADYCCCACQgI3AhQgAiACQQRqrUKAgICAoI4BhDcDKCACIAKtQoCAgICgjgGENwMgIAIgAkEgajYCECACQQhqQfSGwgAQuA0AC14BBH8gACgCBCECIAAoAggiAwRAIAIhAQNAIAEoAgAiBARAIAFBBGooAgAgBEECdEEEEIgPCyABQRBqIQEgA0EBayIDDQALCyAAKAIAIgAEQCACIABBBHRBBBCIDwsLaQEDfwJAAkAgAARAIABBCGsiBCgCACIGQQFqIQUgBCAFNgIAIAVFDQEgACgCAA0CIAAgAjgCGCAAQQE2AhQgACABOAIQIABBATYCDCAAIANBAEc6ABwgBCAGNgIADwsQmw8LAAsQnA8AC4cBAgF/AX5BxABBBBCzDiIBRQRAQQRBxABBkMTEACgCACIBQcwIIAEbEQAAAAsgAUIBNwI8IAFBADYCMCABQgQ3AiggAUIANwIgIAFCgICAgMAANwIYIAFCBDcCECABQgA3AgggAUKBgICAEDcCACABIAC9IgI+AjQgASACQiCIPgI4IAFBCGoLuQEBBH8jAEEQayIEJAAgBEEIaiEFAkBBFEEEELMOIgNFBEAMAQsgAyACOAIQIAMgATgCDCADIAA4AgggA0KBgICAEDcCACAFQbz9wgA2AgQgBSADNgIAIAQoAgwhBSAEKAIIIQZBFEEEELMOIgNFBEAMAQsgAyAGNgIMIANBADYCCCADQoGAgIAQNwIAIAMgBTYCECAEQRBqJAAgA0EIag8LQQRBFEGQxMQAKAIAIgNBzAggAxsRAAAAC9kBAQR/IwBBEGsiBCQAIARBCGohBQJAAkAgAbwgALxyQQBOBEBBFEEEELMOIgNFDQIgAyACOAIQIAMgATgCDCADIAA4AgggA0KBgICAEDcCACAFQbjUwwA2AgQgBSADNgIADAELQaDBwwBBzQBB8MHDABDWDAALIAQoAgwhBSAEKAIIIQZBFEEEELMOIgNFBEAMAQsgAyAGNgIMIANBADYCCCADQoGAgIAQNwIAIAMgBTYCECAEQRBqJAAgA0EIag8LQQRBFEGQxMQAKAIAIgNBzAggAxsRAAAAC7kBAQR/IwBBEGsiBCQAIARBCGohBQJAQRRBBBCzDiIDRQRADAELIAMgAjgCECADIAE4AgwgAyAAOAIIIANCgYCAgBA3AgAgBUHM0cMANgIEIAUgAzYCACAEKAIMIQUgBCgCCCEGQRRBBBCzDiIDRQRADAELIAMgBjYCDCADQQA2AgggA0KBgICAEDcCACADIAU2AhAgBEEQaiQAIANBCGoPC0EEQRRBkMTEACgCACIDQcwIIAMbEQAAAAtzAgN/AX4CQAJAIAAEQCAAQQhrIgEoAgAiA0EBaiECIAEgAjYCACACRQ0BIAAoAgBBf0YNAiAAKQPwAiEEIAAoAvgCIQAgASADNgIAIAC4RAAAAABlzc1BoyAEuqBEAAAAAABAj0CiDwsQmw8LAAsQnA8AC3MCA38BfgJAAkAgAARAIABBCGsiASgCACIDQQFqIQIgASACNgIAIAJFDQEgACgCAEF/Rg0CIAApA4ABIQQgACgCiAEhACABIAM2AgAgALhEAAAAAGXNzUGjIAS6oEQAAAAAAECPQKIPCxCbDwsACxCcDwALcwIDfwF+AkACQCAABEAgAEEIayIBKAIAIgNBAWohAiABIAI2AgAgAkUNASAAKAIAQX9GDQIgACkDwAEhBCAAKALIASEAIAEgAzYCACAAuEQAAAAAZc3NQaMgBLqgRAAAAAAAQI9Aog8LEJsPCwALEJwPAAtzAgN/AX4CQAJAIAAEQCAAQQhrIgEoAgAiA0EBaiECIAEgAjYCACACRQ0BIAAoAgBBf0YNAiAAKQPoASEEIAAoAvABIQAgASADNgIAIAC4RAAAAABlzc1BoyAEuqBEAAAAAABAj0CiDwsQmw8LAAsQnA8AC3MCA38BfgJAAkAgAARAIABBCGsiASgCACIDQQFqIQIgASACNgIAIAJFDQEgACgCAEF/Rg0CIAApA6gCIQQgACgCsAIhACABIAM2AgAgALhEAAAAAGXNzUGjIAS6oEQAAAAAAECPQKIPCxCbDwsACxCcDwALcwIDfwF+AkACQCAABEAgAEEIayIBKAIAIgNBAWohAiABIAI2AgAgAkUNASAAKAIAQX9GDQIgACkDyAIhBCAAKALQAiEAIAEgAzYCACAAuEQAAAAAZc3NQaMgBLqgRAAAAAAAQI9Aog8LEJsPCwALEJwPAAtzAgN/AX4CQAJAIAAEQCAAQQhrIgEoAgAiA0EBaiECIAEgAjYCACACRQ0BIAAoAgBBf0YNAiAAKQOIAiEEIAAoApACIQAgASADNgIAIAC4RAAAAABlzc1BoyAEuqBEAAAAAABAj0CiDwsQmw8LAAsQnA8AC3MCA38BfgJAAkAgAARAIABBCGsiASgCACIDQQFqIQIgASACNgIAIAJFDQEgACgCAEF/Rg0CIAApA9AEIQQgACgC2AQhACABIAM2AgAgALhEAAAAAGXNzUGjIAS6oEQAAAAAAECPQKIPCxCbDwsACxCcDwALfwECfyMAQSBrIgIkACACQQxqIgMgASgCAEEBQQAgASgCBCgCDBEFADoACCADIAE2AgQgA0EBOgAJIANBADYCACACIAA2AhggAiAAQQRqNgIcIAMgAkEYakGk3sEAELAHIAMgAkEcakGk3sEAELAHIAMQhgohACACQSBqJAAgAAt/AQJ/IwBBIGsiAiQAIAJBDGoiAyABKAIAQQFBACABKAIEKAIMEQUAOgAIIAMgATYCBCADQQE6AAkgA0EANgIAIAIgADYCGCACIABBBGo2AhwgAyACQRhqQYzTwgAQsAcgAyACQRxqQYzTwgAQsAcgAxCGCiEAIAJBIGokACAAC2EBAX8CQCAAKgIAIAEqAhBfRQ0AIAAqAgQgASoCFF9FDQAgACoCCCABKgIYX0UNACAAKgIQIAEqAgBgRQ0AIAAqAhQgASoCBGBFDQAgACoCGCABKgIIYEUNAEEBIQILIAILYQEFfSAAQgI3AhAgACACKgIAIgQgBJQgAioCBCIFIAWUkiACKgIIIgYgBpSSIgcgASoCACIDIAOUXzoADCAAIAYgAyAHkZUiA5Q4AgggACAFIAOUOAIEIAAgBCADlDgCAAtsAQF/IwBB0AFrIgIkACACQcgBakIANwIAIAJCADcCwAEgAkKCgICAMDcCGCACQoCAgIAQNwIQIAJBIGpBAEGgAfwLACACIAAoAgQgACgCCCACQRBqIAFBARAuIAItAAwhACACQdABaiQAIAALWQICfQF/AkAgASoCACIDIAAqAgAiAoxdDQAgAiADXQ0AIAEqAgQiAyAAKgIEIgKMXQ0AIAIgA10NACABKgIIIgIgACoCCCIDXkUgAiADjF1Bf3NxIQQLIAQLZAEDfwJAAkAgAARAIABBCGsiAigCACIDQQFqIQEgAiABNgIAIAFFDQEgACgCAEF/Rg0CQf///wchASAAKAIMQQJHBEAgAC0AHEEBcSEBCyACIAM2AgAgAQ8LEJsPCwALEJwPAAu8AQEBf0HQAEEEELMOIgBFBEBBBEHQAEGQxMQAKAIAIgBBzAggABsRAAAACyAAQQA6AEwgAEEBNgJIIABCgYCAgIAQNwJAIABChICAgBA3AjggAEKAgICJ9M3EgTs3AjAgAEKAgID8883EwTo3AiggAEKAgID8g4CAwD83AiAgAEKAgMCPhICJuskANwIYIABCv4a7yYOAgNDAADcCECAAQoCAgICQkaLEPDcCCCAAQoGAgIAQNwIAIABBCGoL+wIBB38jAEHQAGsiAiQAIAJBDGohAAJAAkACQAJAAkBBCEEEELMOIgEEQCABQoGAgIAQNwIAQaABQQQQsw4iA0UNAUGwBEEEELMOIgRFDQJBoAFBBBCzDiIFRQ0DQcgBQQQQsw4iBkUNBCAAQbDYwQA2AkAgACABNgI8IABCBDcCNCAAQgA3AiwgACAGNgIoIABCgICAgKABNwIgIAAgBTYCHCAAQoCAgICgATcCFCAAIAQ2AhAgAEKAgICAoAE3AgggACADNgIEIABBCjYCAAwFC0EEQQhBkMTEACgCACIAQcwIIAAbEQAAAAtBBEGgAUHgisIAENMNAAtBBEGwBEHwisIAENMNAAtBBEGgAUHgisIAENMNAAtBBEHIAUHwisIAENMNAAtB0ABBBBCzDiIBBEAgAUEANgIIIAFCgYCAgBA3AgAgAUEMaiAAQcQA/AoAACACQdAAaiQAIAFBCGoPC0EEQdAAQZDExAAoAgAiAEHMCCAAGxEAAAALZwIDfwF8AkACQCAABEAgAEEIayICKAIAIgNBAWohASACIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCsCDCEEIAAgATYCACACIAM2AgAgBA8LEJsPCwALEJwPAAtnAgN/AXwCQAJAIAAEQCAAQQhrIgIoAgAiA0EBaiEBIAIgATYCACABRQ0BIAAoAgAiAUF/Rg0CIAAgAUEBajYCACAAKAIEKwIUIQQgACABNgIAIAIgAzYCACAEDwsQmw8LAAsQnA8AC2UBBH8CQAJAIAAEQCAAQQhrIgIoAgAiA0EBaiEBIAIgATYCACABRQ0BIAAoAgAiAUF/Rg0CIAAgAUEBajYCACAAKAIEKAIIIQQgACABNgIAIAIgAzYCACAEDwsQmw8LAAsQnA8AC2YBBH8CQAJAIAAEQCAAQQhrIgIoAgAiA0EBaiEBIAIgATYCACABRQ0BIAAoAgAiAUF/Rg0CIAAgAUEBajYCACAAKAIEKAKgASEEIAAgATYCACACIAM2AgAgBA8LEJsPCwALEJwPAAtmAQR/AkACQCAABEAgAEEIayICKAIAIgNBAWohASACIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCgCpAEhBCAAIAE2AgAgAiADNgIAIAQPCxCbDwsACxCcDwALZgEEfwJAAkAgAARAIABBCGsiAigCACIDQQFqIQEgAiABNgIAIAFFDQEgACgCACIBQX9GDQIgACABQQFqNgIAIAAoAgQoAoQBIQQgACABNgIAIAIgAzYCACAEDwsQmw8LAAsQnA8AC2UBBH8CQAJAIAAEQCAAQQhrIgIoAgAiA0EBaiEBIAIgATYCACABRQ0BIAAoAgAiAUF/Rg0CIAAgAUEBajYCACAAKAIEKAJgIQQgACABNgIAIAIgAzYCACAEDwsQmw8LAAsQnA8AC+cBAQR/IwBBEGsiAyQAIANBCGohBAJAAkAgAbwgALxyQQBOBEBBEEEEELMOIgJFDQEgAiABOAIMIAIgADgCCCACQoGAgIAQNwIAIARBrK/DADYCBCAEIAI2AgAMAgtBoMHDAEHNAEHwwcMAENYMAAtBBEEQQZDExAAoAgAiAkHMCCACGxEAAAALIAMoAgwhBCADKAIIIQVBFEEEELMOIgJFBEBBBEEUQZDExAAoAgAiAkHMCCACGxEAAAALIAIgBTYCDCACQQA2AgggAkKBgICAEDcCACACIAQ2AhAgA0EQaiQAIAJBCGoLwgEBBH8jAEEQayIDJAAgA0EIaiEEQRBBBBCzDiICRQRAQQRBEEGQxMQAKAIAIgJBzAggAhsRAAAACyACIAE4AgwgAiAAOAIIIAJCgYCAgBA3AgAgBEHYssMANgIEIAQgAjYCACADKAIMIQQgAygCCCEFQRRBBBCzDiICRQRAQQRBFEGQxMQAKAIAIgJBzAggAhsRAAAACyACIAU2AgwgAkEANgIIIAJCgYCAgBA3AgAgAiAENgIQIANBEGokACACQQhqC2oAIAAgASkCADcCDCAAIAIpAgA3AhggACABKgIEIAIqAgSTOAIEIAAgASoCACACKgIAkzgCACAAQRRqIAFBCGoiASgCADYCACAAQSBqIAJBCGoiAigCADYCACAAIAEqAgAgAioCAJM4AggLXgEEfUEAIQEgACAEKgIAIgYgBpQgBCoCBCIHIAeUkiAEKgIIIgUgBZSSIghDAACAKF4EfyAAIAUgCJEiBZU4AgwgACAHIAWVOAIIIAAgBiAFlTgCBEEBBUEACzYCAAtoAgF8A38CQAJAIAAEQCAAQQhrIgIoAgAiBEEBaiEDIAIgAzYCACADRQ0BIAAoAgBBf0YNAkQAABAAAADwQSEBIAAoAgxBAkcEQCAAKgIQuyEBCyACIAQ2AgAgAQ8LEJsPCwALEJwPAAtoAgF8A38CQAJAIAAEQCAAQQhrIgIoAgAiBEEBaiEDIAIgAzYCACADRQ0BIAAoAgBBf0YNAkQAABAAAADwQSEBIAAoAgxBAkcEQCAAKgIYuyEBCyACIAQ2AgAgAQ8LEJsPCwALEJwPAAtoAgF8A38CQAJAIAAEQCAAQQhrIgIoAgAiBEEBaiEDIAIgAzYCACADRQ0BIAAoAgBBf0YNAkQAABAAAADwQSEBIAAoAiBBAkcEQCAAKgIkuyEBCyACIAQ2AgAgAQ8LEJsPCwALEJwPAAtoAgF8A38CQAJAIAAEQCAAQQhrIgIoAgAiBEEBaiEDIAIgAzYCACADRQ0BIAAoAgBBf0YNAkQAABAAAADwQSEBIAAoAgRBA0cEQCAAKAIIuCEBCyACIAQ2AgAgAQ8LEJsPCwALEJwPAAu7AQEEfyMAQRBrIgIkACACQQhqIQNBDEEEELMOIgFFBEBBBEEMQZDExAAoAgAiAUHMCCABGxEAAAALIAEgADgCCCABQoGAgIAQNwIAIANBlI/DADYCBCADIAE2AgAgAigCDCEDIAIoAgghBEEUQQQQsw4iAUUEQEEEQRRBkMTEACgCACIBQcwIIAEbEQAAAAsgASAENgIMIAFBADYCCCABQoGAgIAQNwIAIAEgAzYCECACQRBqJAAgAUEIagtiAQN+IAAoAgAoAgApAwAgASgCACACQXRsaiIAQQxrKQIAhSIDQv////8PgyIEIABBBGs1AgBC3aHxywyFIgV+IANCIIgiA0K307CFDH6FIAMgBX4gBEK307CFDH6FQiCJhQtmAQF9IAAgACoCIEMAAAAAQwAAgD8gAZUgAUMAAAAAWxsiAUMAAAAAQwAAgD8gACoCHCIClSACQwAAAABbG5QiApQ4AiAgACACIAAqAiSUOAIkIAAgAiAAKgIolDgCKCAAIAE4AhwLaAEBfwJAIAIgASgCVCIDSQRAIAEoAkgiAyACSw0BIAIgA0Hg38MAEIgLAAsgAiADQdDfwwAQiAsACyAAIAI2AgwgACABNgIAIAAgASgCRCACQQxsajYCCCAAIAEoAlAgAkEJdGo2AgQLVgEBfyMAQTBrIgMkACADQQhqIAAgAEEMaiAAQRhqIAEQ0AICfyADKAIIQQRHBEBBACADKgIQIAJfRQ0BGiADNQIIQgRSDAELQQALIQAgA0EwaiQAIAALcAIBfwF9IwBB4ABrIgIkACACIAEQ9wEgASoCYCEDQeQAQQQQsw4iAQRAIAEgAkHgAPwKAAAgASADOAJgIABBpNfDADYCBCAAIAE2AgAgAkHgAGokAA8LQQRB5ABBkMTEACgCACIAQcwIIAAbEQAAAAt0AQF/QRxBBBCzDiICRQRAQQRBHEGQxMQAKAIAIgBBzAggABsRAAAACyACIAEpAgA3AgAgAkEYaiABQRhqKAIANgIAIAJBEGogAUEQaikCADcCACACQQhqIAFBCGopAgA3AgAgAEH4nsMANgIEIAAgAjYCAAtcAQF/IwBBIGsiACQAIAEoAgQhAiABKAIAIQEgAEEBNgIEIABB0LrBADYCACAAQgE3AgwgAEK4usGAMDcDGCAAIABBGGo2AgggASACIAAQvgMhASAAQSBqJAAgAQtdAQN/AkACQCAABEAgAEEIayICKAIAIgRBAWohAyACIAM2AgAgA0UNASAAKAIADQIgAUH/AXFBP00EQCAAIAE6ADQLIABBADYCACACIAQ2AgAPCxCbDwsACxCcDwALhAEBAX9BzABBBBCzDiIARQRAQQRBzABBkMTEACgCACIAQcwIIAAbEQAAAAsgAEEANgJIIABCBDcCQCAAQgA3AjggAEKAgICAwAA3AjAgAEIENwIoIABCADcCICAAQoCAgIDAADcCGCAAQgQ3AhAgAEIANwIIIABCgYCAgBA3AgAgAEEIagtgAgF/AX0jAEEQayIDJAAgA0EEaiABIAIQiwQgACACKgIIIAEqAmAiBJQgAyoCDJI4AgggACAEIAIqAgSUIAMqAgiSOAIEIAAgAyoCBCAEIAIqAgCUkjgCACADQRBqJAALVQEBfyMAQRBrIgEkACABQQA2AgggAUKAgICAEDcCACAABEAgAUEAIABBAUEBEOIGCyABIAE2AgwgASgCACIABEAgASgCBCAAQQEQiA8LIAFBEGokAAtaAQJ/IwBBIGsiAyQAIANBBGoiBCABIAIQ4wMgAEEIaiAEQQhqKQIANwIAIAAgAykCBDcCACAAQQAgAygCGCADKAIUQQFxIgEbNgIUIAAgATYCECADQSBqJAALZQECfyMAQeAAayICJAAgAkEMaiIDIAEQzwVB1ABBBBCzDiIBBEAgASADQdQA/AoAACAAQYCswwA2AgQgACABNgIAIAJB4ABqJAAPC0EEQdQAQZDExAAoAgAiAEHMCCAAGxEAAAALZQECfyMAQbABayICJAAgAkEMaiIDIAEQqAFBpAFBBBCzDiIBBEAgASADQaQB/AoAACAAQYCpwwA2AgQgACABNgIAIAJBsAFqJAAPC0EEQaQBQZDExAAoAgAiAEHMCCAAGxEAAAALawIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIAIAIoAgwoAgwRAAAgAikDGCEDIAIpAxAhBCACQSBqJAAgAEEAIARC3fPzxO6x3LFshSADQr+++92x1LnldoWEUBsLbAIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIAIAIoAgwoAgwRAAAgAikDGCEDIAIpAxAhBCACQSBqJAAgAEEAIARCsc7207iOlJTLAIUgA0K52YiMjb6psWaFhFAbC20CAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQoW5mIGx9LKaj3+FIANCvJnQkLGtvsqtf4WEUBsLbAIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIAIAIoAgwoAgwRAAAgAikDGCEDIAIpAxAhBCACQSBqJAAgAEEAIARCx9yu5Nq0zdophSADQuX69PuNuf6di3+FhFAbC2wCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCZBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQsfcruTatM3aKYUgA0Ll+vT7jbn+nYt/hYRQGwttAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmARAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBEKMlPHKpOu5zMkAhSADQuSXjKHS7Pqeq3+FhFAbC2wCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQoHP7fuqjuWV5wCFIANCqMee2eG4w5NHhYRQGwtsAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmQRAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBEKBz+37qo7llecAhSADQqjHntnhuMOTR4WEUBsLbAIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIAIAIoAgwoAgwRAAAgAikDGCEDIAIpAxAhBCACQSBqJAAgAEEAIARC+rmPrJLGqMeJf4UgA0L/xf6P7pysu1SFhFAbC2sCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQq2MgIugq4+YHoUgA0LLzsCampvowT+FhFAbC2wCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQtCZq8uN9PaE+ACFIANC576imeai38c2hYRQGwtsAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmQRAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBELQmavLjfT2hPgAhSADQue+opnmot/HNoWEUBsLawIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIA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DQAaQQIgCkKAgICAgICA+P8AgyILQoCAgICAgID4/wBRDQAaIApC/////////weDIg5CgICAgICAgAiEIApCAYZC/v///////w+DIApCNIinQf8PcSIGGyIMQgGDIQ0gC1AEQEEEIA5QDQEaIAZBswhrIQZCASELIA1QDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiABshDEICQgEgABshC0HLd0HMdyAAGyAGaiEGIA1QCyEAIAMgBjsBeCADIAs3A3AgA0IBNwNoIAMgDDcDYCADIAA6AHoCfwJAAkACQAJAAkAgAEEBTQRAIANBIGoiBiADQeAAaiADQQ9qEJMBQe6mxABBASAKQgBTIgAbIQVB7qbEAEHvpsQAIAAbIQcgCkI/iKchACADKAIgRQ0BIANB2ABqIAZBCGooAgA2AgAgAyADKQIgNwNQDAILIABBAkYNA0EBIQZB7qbEAEHvpsQAIApCAFMiBxtB7qbEAEEBIAcbIAQbIQUgCkI/iKcgBHIhByAAQf8BcUEERg0CIANBAzYCKCADQfOmxAA2AiQgA0ECOwEgIANBIGoMBQsgA0HQAGogA0HgAGogA0EPahAyCyAHIAUgBBshBSAAIARyIQcgAyADKAJQIAMoAlQgAy8BWEEAIANBIGoQvAUgAygCBCEGIAMoAgAMAwsgA0ECOwEgDAELIANBAzYCKCADQfCmxAA2AiQgA0ECOwEgQQEhBUEAIQdBASEGIANBIGoMAQsgA0EBNgIoIANB9qbEADYCJCADQSBqCyEAIAMgBjYCXCADIAA2AlggAyAHNgJUIAMgBTYCUCABIANB0ABqELMDIQAgA0GAAWokACAADwsgBUEARyEIIAEvAQ4hByMAQfAIayICJAAgD70hCgJ/QQMgD5lEAAAAAAAA8H9hDQAaQQIgCkKAgICAgICA+P8AgyILQoCAgICAgID4/wBRDQAaIApC/////////weDIg5CgICAgICAgAiEIApCAYZC/v///////w+DIApCNIinQf8PcSIEGyIMQgGDIQ0gC1AEQEEEIA5QDQEaIARBswhrIQRCASELIA1QDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiABshDEICQgEgABshC0HLd0HMdyAAGyAEaiEEIA1QCyEAIAIgBDsB6AggAiALNwPgCCACQgE3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CCAAQoGAgIAQNwIAIABBgICA/AM2AhggAEEQakIANwIAIABBCGoLPAEBfyMAQSBrIgQkACAEQQxqIAEgAiADEJIBIABBCGogBEEYaikCADcCACAAIAQpAhA3AgAgBEEgaiQACzcBA30gASoCBCIDIAAqAgAiBF8gACoCBCABKgIAIgIgApQgASoCCCICIAKUkpFgcSADIASMYHELPwAgACABKQIANwIMIAAgASoCBIw4AgQgACABKgIAjDgCACAAQRRqIAFBCGoiASgCADYCACAAIAEqAgCMOAIICzoBAX8gACgCACIBQYQBTwRAIAEQAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBTwRAIAAQAgsLNgEBfyAAKAIAIgEEQCAAKAIEIAFBAnRBBBCIDwsgACgCFCIBBEAgACgCGCABQQN0QQQQiA8LCz8BAX8gACgCACEAIAEoAggiAkGAgIAQcUUEQCACQYCAgCBxRQRAIAAgARC7DA8LIAAgARCkCg8LIAAgARCjCgs2AQF/IAAoAgAiAQRAIAAoAgQgAUECdEEEEIgPCyAAKAIMIgEEQCAAKAIQIAFBAnRBBBCIDwsLPAEBfUMAAAAAIAAqAgAgASoCAJQgACoCBCABKgIElJIgACoCCCABKgIIlJIiAyADQwAAAABdGyADIAIbCzgBAX0gAEEANgIIIABCADcCACAAIAEqAgAiAiAClCABKgIEIgIgApSSIAEqAggiAiAClJKROAIMCz0BAn0gACABKgIEIgI4AhQgACACOAIMIAAgASoCAIsiAzgCECAAIAKMIgI4AgggACACOAIAIAAgA4w4AgQLxQMBA38gACgCACECIAEoAggiAEGAgIAQcUUEQCAAQYCAgCBxRQRAIwBBEGsiACQAQQMhAyACLQAAIgIhBCACQQpPBEAgACACIAJB5ABuIgRB5ABsa0H/AXFBAXQiA0HuqsQAai0AADoADyAAIANB7arEAGotAAA6AA5BASEDCyAERSACQQBHcUUEQCADQQFrIgMgAEENamogBEEBdEH+AXFB7qrEAGotAAA6AAALIAFBAUEBQQAgAEENaiADakEDIANrEN8CIQEgAEEQaiQAIAEPCyMAQYABayIEJAAgAi0AACEAQQAhAgNAIAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAA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akGw08IAIAIgAxC6BQALOQEBfyMAQRBrIgUkACAFIAI2AgwgBSABNgIIIAAgBUEIakH80sIAIAVBDGpB/NLCACADIAQQugUACz0AIABCADcCECAAQgA3AgAgAEKAgICAgICAwD83AgggAEEYakIANwIAIABBIGpCADcCACAAQShqQQA2AgALNgEBfyMAQRBrIgIkACACQQhqIAEQ1wIgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiQACzYBAX8jAEEQayICJAAgAkEIaiABEJIEIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAs9ACAAQgA3AhAgAEIANwIAIABCgICAgICAgMA/NwIIIABBGGpCADcCACAAQSBqQgA3AgAgAEEoakEANgIACzwBAX8jAEEQayIDJAAgA0HMqcEANgIMIAMgADYCCEEAIANBCGpBqILEACADQQxqQaiCxAAgASACELoFAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYipxAAgBEEMakGIqcQAIAIgAxC6BQALOAEBfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQuwwPCyAAIAEQpAoPCyAAIAEQowoLLwEBfSABKgIAIgIgApQgASoCBCICIAKUkiABKgIIIgIgApSSIAAqAgAiAiAClF8LMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQngEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEL4BIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBEGsiAyQAIANBCGogACABIAJBARCbASADKAIIIQAgA0EQaiQAIABBAUYLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ8AEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEQayIDJAAgA0EIaiAAIAEgAkEBENsBIAMoAgghACADQRBqJAAgAEEBRgswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCQAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ+QEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEQayIDJAAgA0EIaiAAIAEgAkEBELkBIAMoAgghACADQRBqJAAgAEEBRgswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCyAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQsQIgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEJ4CIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCRAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQrQIgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEN4BIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBABCZASADKAIIIQAgA0EgaiQAIABBBEcLSAEBfyABKAIAIQJBBEEEELMOIgFFBEBBBEEEQZDExAAoAgAiAEHMCCAAGxEAAAALIAEgAjYCACAAQZSPwwA2AgQgACABNgIACzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQbiFxAA2AgggAEIENwIQIABBCGpBwIXEABC4DQALOgEBfyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABBgIjEADYCCCAAQgQ3AhAgAEEIakGIiMQAELgNAAs3AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUH8vMQANgIIIAFCBDcCECABQQhqIAAQuA0ACzsBAX9BASECAkAgACABEPEFDQAgASgCAEHUp8QAQQIgASgCBCgCDBEFAA0AIABBBGogARDxBSECCyACCzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQYCuxAA2AgggAEIENwIQIABBCGpBiK7EABC4DQALngIBBn8jAEEQayICJAAgAiAANgIMIAJBDGohBCMAQSBrIgAkAEEBIQUCQCABKAIAIgNBlMzDAEEGIAEoAgQiBygCDCIGEQUADQACQCABLQAKQYABcUUEQCADQeWqxABBASAGEQUADQIgBCABQYjTwgAoAgARAwBFDQEMAgsgA0HmqsQAQQIgBhEFAA0BIABBAToADyAAIAc2AgQgACADNgIAIABBvKrE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gICAgHg2AgAgACABNgIMIABBoIfEACABKAIEIAEoAggiAC0ACCAALQAJEIQJAAsgACADNgIEIAAgAjYCACAAQYSHxAAgASgCBCABKAIIIgAtAAggAC0ACRCECQALKAEBfyMAQRBrIgIkACACIAAgAUEBEIQBIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQKCACLQAMIQAgAkEQaiQAIAALKAEBfyMAQRBrIgIkACACIAAgAUEBEPsCIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQKyACLQAMIQAgAkEQaiQAIAALJwEBfyMAQRBrIgIkACACIAAgAUEBECkgAi0ADCEAIAJBEGokACAACycBAX8jAEEQayICJAAgAiAAIAFBARAnIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQJiACLQAMIQAgAkEQaiQAIAALJwECfSAAKgIAIgEgACoCBCICIAEgAl8bIgEgACoCCCICIAEgAl8bCycBAn0gACoCZCIBIAAqAmgiAiABIAJfGyIBIAAqAmwiAiABIAJfGwsrACAAQf8BcSIAQcAATQRAIABBjKnBAGotAAAPCyAAQcEAQejbwwAQiAsACzMAIAEoAgAgACgCAC0AAEECdCIAQejEwgBqKAIAIABB2MTCAGooAgAgASgCBCgCDBEFAAslACAARQRAQfjFwgBBMhCaDwALIAAgAiADIAQgBSABKAIQESAACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEQIACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEREACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQER8ACyQAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEaIBAAsjACAARQRAQfjFwgBBMhCaDwALIAAgAiADIAQgASgCEBE8AAsoAQF/IAAoAgAiAUGAgICAeHJBgICAgHhHBEAgACgCBCABQQEQiA8LCyEAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgASgCEBEBAAsdACABKAIABEAgAEH0hsQANgIEIAAgATYCAA8LAAsnAQF/IAAoAgAiAgRAIAEoAgAgAiAAKAIEIAEoAgQoAgwRBQAPCwALJAAgAC0AAEUEQCABQYitxABBBRCBAw8LIAFBja3EAEEEEIEDCx8AIABFBEBB+MXCAEEyEJoPAAsgACACIAEoAhARAwALKQAgACAALQAEIAFBLkZyOgAEIAAoAgAiACgCACABIAAoAgQoAhARAwALHQAgACACIAEoAiwgASgCMCABKAI4IAEoAjwQpgILGgEBfyAAKAIAIgEEQCAAKAIEIAFBARCIDwsLUgAgAARAIAAgAUGQxMQAKAIAIgBBzAggABsRAAAACyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABBjInEADYCCCAAQgQ3AhAgAEEIaiACELgNAAsfACAAQQhqQbi3wQApAgA3AgAgAEGwt8EAKQIANwIACx8AIABBCGpByLfBACkCADcCACAAQcC3wQApAgA3AgALHwAgAEEIakGE2sEAKQIANwIAIABB/NnBACkCADcCAAsfACAAQQhqQZTawQApAgA3AgAgAEGM2sEAKQIANwIACx8AIABBCGpBtNrBACkCADcCACAAQazawQApAgA3AgALHwAgAEEIakHE2sEAKQIANwIAIABBvNrBACkCADcCAAsfACAAQQhqQdTawQApAgA3AgAgAEHM2sEAKQIANwIACx8AIABBCGpB1MnCACkCADcCACAAQczJwgApAgA3AgALHwAgAEEIakHkycIAKQIANwIAIABB3MnCACkCADcCAAsfACAAQQhqQfTJwgApAgA3AgAgAEHsycIAKQIANwIACx8AIABBCGpBhMrCACkCADcCACAAQfzJwgApAgA3AgALHwAgAEEIakGUysIAKQIANwIAIABBjMrCACkCADcCAAsfACAAQQhqQaTKwgApAgA3AgAgAEGcysIAKQIANwIACx8AIABBCGpBtMrCACkCADcCACAAQazKwgApAgA3AgALHwAgAEEIakHEysIAKQIANwIAIABBvMrCACkCADcCAAsfACAAQQhqQdTKwgApAgA3AgAgAEHMysIAKQIANwIACx8AIABBCGpB5MrCACkCADcCACAAQdzKwgApAgA3AgALHwAgAEEIakH0ysIAKQIANwIAIABB7MrCACkCADcCAAsfACAAQQhqQYTLwgApAgA3AgAgAEH8ysIAKQIANwIACx8AIABBCGpBlMvCACkCADcCACAAQYzLwgApAgA3AgALHwAgAEEIakGky8IAKQIANwIAIABBnMvCACkCADcCAAsfACAAQQhqQbTLwgApAgA3AgAgAEGsy8IAKQIANwIACx8AIABBCGpBxMvCACkCADcCACAAQbzLwgApAgA3AgALHwAgAEEIakHUy8IAKQIANwIAIABBzMvCACkCADcCAAsfACAAQQhqQeTLwgApAgA3AgAgAEHcy8IAKQIANwIACx8AIABBCGpB9MvCACkCADcCACAAQezLwgApAgA3AgALHwAgAEEIakGEzMIAKQIANwIAIABB/MvCACkCADcCAAsfACAAQQhqQZTMwgApAgA3AgAgAEGMzMIAKQIANwIACx8AIABBCGpBpMzCACkCADcCACAAQZzMwgApAgA3AgALHwAgAEEIakG0zMIAKQIANwIAIABBrMzCACkCADcCAAsfACAAQQhqQcTMwgApAgA3AgAgAEG8zMIAKQIANwIACx8AIABBCGpB1MzCACkCADcCACAAQczMwgApAgA3AgALHwAgAEEIakHkzMIAKQIANwIAIABB3MzCACkCADcCAAsfACAAQQhqQfTMwgApAgA3AgAgAEHszMIAKQIANwIACxoAIABBADYCCCAAQgA3AgAgACABKgIAOAIMCx0AIABB3KDDADYCBCAAIAE2AgAgACABKgIYOAIICx0AIABBsJ3DADYCBCAAIAE2AgAgACABKgIMOAIICx0AIABBnKHDADYCBCAAIAE2AgAgACABKgIkOAIICx0AIABBkLHDADYCBCAAIAE2AgAgACABKgIIOAIICx0AIABB9LTDADYCBCAAIAE2AgAgACABKgIIOAIICx0AIABB5K3DADYCBCAAIAE2AgAgACABKgJgOAIICx8AIABBCGpB1IHEACkCADcCACAAQcyBxAApAgA3AgALHwAgAEEIakHkgcQAKQIANwIAIABB3IHEACkCADcCAAsaACAAQQA2AgggAEGEu8EANgIEIAAgATYCAAsaACAAQQA2AgggAEHMvMEANgIEIAAgATYCAAsaACAAQQA2AgggAEHQ38EANgIEIAAgATYCAAsaACAAQQA2AgggAEG8+cEANgIEIAAgATYCAAsWACAAQdgBaiAALQDlAiAAQTBqEIAGCxgAIAAoAgAgASgCACACKAIAIAMoAgAQEAsXAQF/IAAQEiIBNgIEIAAgAUEARzYCAAsXAQF/IAAQEyIBNgIEIAAgAUEARzYCAAsXAQF/IAAQFCIBNgIEIAAgAUEARzYCAAsXAQF/IAAQFSIBNgIEIAAgAUEARzYCAAscACAAQQA2AhAgAEIANwIIIABCgICAgMAANwIACzEAIABC////9/f////+ADcCECAAQv////f//////gA3AgggAEL////3/////343AgALGgAgAEEANgIIIABBsJ3DADYCBCAAIAE2AgALrQUCFH0CfyABKgIYIQYgAAJ9QwAAgD8gAUEMaiIXKgIIIg8gASoCCCIQkyIKjCAKIBcqAgQiESABKgIEIhKTIgdDAAAAAF0iGBsiCyALlCAXKgIAIhMgASoCACIUkyIMjCAMIBgbIgggCJQgB4wgByAYGyINIA2UkpIiDkMAAAAAXkUNABogDSAOkSIDlSIOQwAAAACUIgQgCCADlSIFkyIIIAiUIAsgA5UiAyAEkyILIAuUIAVDAAAAAJQiBSADQwAAAACUIhWTIg0gDZSSkiIWQwAAgCheRQRAQwAAAAAhA0MAAAAAIQRDAACAPwwBC0MAAAAAIQNDAAAAACEEQwAAgD8gFSAOIAWSkiIOi0MAAIA/YA0AGiAIIBaRIgWVIA4Q8gVDAAAAP5QiCBDxASIJlCEEIA0gBZUgCZQhAyALIAWVIAmUIQkgCBD0AQs4AgwgACAEOAIIIAAgAzgCBCAAIAk4AgAgACAPIBCSQwAAAD+UOAIYIAAgESASkkMAAAA/lDgCFCAAIBMgFJJDAAAAP5Q4AhAgAEMAAAAAQwAAgD8gAiAGIAYgBkPbD0lAlJSUQwAAgECUQwAAQECVIgUgBiAGIAwgDJQgByAHlJIgCiAKlJKRQwAAAD+UIgOUlEPbD0lAlCIEIASSIgeSlCIElSAEQwAAAABbGzgCHCAAQwAAAABDAACAPyACIAYgBpQiBCAEkkMAAKBAlSAFlCIKIARDAAAAP5QgB5SSlCIMlSAMQwAAAABbGzgCJCAAQwAAAABDAACAPyACIAogByAEQwAAQECUIAMgA5RDAACAQJSSQwAAQEGVlJKUIAIgBSADIAOSIgIgApRDAACAPpQgBiAClEMAAEBAlEMAAAA+lJKUlJIiApUgAkMAAAAAWxsiAjgCKCAAIAI4AiALGgAgAEEANgIIIABBnKHDADYCBCAAIAE2AgALGgAgAEEANgIIIABB3KDDADYCBCAAIAE2AgALGgAgAEEANgIIIABB5K3DADYCBCAAIAE2AgALGgAgAEEANgIIIABBkLHDADYCBCAAIAE2AgALGgAgAEEANgIIIABB9LTDADYCBCAAIAE2AgALMQAgAEL////39/////4ANwIQIABC////9//////+ADcCCCAAQv////f/////fjcCAAsxACAAQv////f3/////gA3AhAgAEL////3//////4ANwIIIABC////9/////9+NwIAC58HAQR/An8gAEEIaygCBCIEQXhxIQUCQAJAAkACQAJAAkAgBUEEQQggBEEDcSIEGyABak8EQCAEQQBHIAUgAUEnaiIFS3ENAQJAAkAgAkEJTwRAIAIgAxC9BiICDQFBAAwKC0EAIQIgA0HM/3tLDQFBECADQQtqQXhxIANBC0kbIQEgAEEIayIFKAIEIgZBeHEhBCAEIAVqIQcCQAJAAkAgBkEDcUUEQCABQYACSQ0BIAZBeHEiBCABQQRySQ0BIAQgAWtBgYAITw0BDAMLIAEgBE0NAUHkx8QAKAIAIAdHBEBB4MfEACgCACAHRwRAIAcoAgQiBkECcQ0CIAZBeHEiBiAEaiIEIAFJDQIgByAGEKsFIAQgAWsiAEEQTw0MIAUgBCAFKAIEQQFxckECcjYCBCAEIAVqIgAgACgCBEEBcjYCBAwNC0HYx8QAKAIAIARqIgQgAUkNAQJAIAQgAWsiAkEPTQRAIAUgBCAFKAIEQQFxckECcjYCBCAEIAVqIgAgACgCBEEBcjYCBEEAIQJBACEADAELIAIgASAFaiIAaiEDIAUgASAFKAIEQQFxckECcjYCBCAAIAAoAgRBAXI2AgQgACACQQFyNgIEIAAgAmogAjYCACADIAMoAgRBfnE2AgQLQeDHxAAgADYCAEHYx8QAIAI2AgAMDAtB3MfEACgCACAEaiIEIAFLDQkLIAMQRSIBRQ0DIAMgBSgCBCICQXhxQXxBeCACQQNxG2oiAiACIANLGyICBEAgASAAIAL8CgAACyAAEI4DIAEMCwsgBCABayIAQQ9LDQgLDAgLIAMgASABIANLGyIDBEAgAiAAIAP8CgAACyAAQQhrKAIEIgRBeHEhAyADIAFBBEEIIARBA3EiBBtqSQ0DIARBAEcgAyAFS3ENBCAAEI4DCyACDAcLQYiD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AkEGdCABciEFDAILIAAgB0H/AXE2AiRBAQwECyADLQACQT9xIAFBBnRyIQEgB0FwSQRAIAEgAkEMdHIhBQwBCyACQRJ0QYCA8ABxIAMtAANBP3EgAUEGdHJyIgVBgIDEAEYNAQsgACAFNgIkIAVBgAFPDQFBAQwCCyAEEJEPAAtBAiAFQYAQSQ0AGkEDQQQgBUGAgARJGwshASAAIAY2AiggACABIAZqNgIsIABBBTYCNCAAQaCvxAA2AjAgAEIFNwI8IAAgAEEYaq1CgICAgOCNAYQ3A2ggACAAQRBqrUKAgICA4I0BhDcDYCAAIABBKGqtQoCAgICAjgGENwNYIAAgAEEkaq1CgICAgJCOAYQ3A1AgACAAQSBqrUKAgICAMIQ3A0gMAQsgAEEENgI0IABBwK7EADYCMCAAQgQ3AjwgACAAQRhqrUKAgICA4I0BhDcDYCAAIABBEGqtQoCAgIDgjQGENwNYIAAgAEEMaq1CgICAgDCENwNQIAAgAEEIaq1CgICAgDCENwNICyAAIABByABqNgI4IABBMGogBBC4DQALEwAgAEG4uMEANgIEIAAgATYCAAsTACAAQci4wQA2AgQgACABNgIACxMAIABB6LrBADYCBCAAIAE2AgALEAAgAEEBNgIAIAAgATYCBAsTACAAQbC8wQA2AgQgACABNgIACxAAIABBBDYCACAAIAE2AgQLGgACfyABQQlPBEAgASAAEL0GDAELIAAQRQsLEAAgACABNgIEIABBBTYCAAsTACAAQZzdwQA2AgQgACABNgIACxMAIABBrN3BADYCBCAAIAE2AgALEwAgAEG83cEANgIEIAAgATYCAAsTACAAQczdwQA2AgQgACABNgIACxMAIABB3N3BADYCBCAAIAE2AgALEwAgAEG038EANgIEIAAgATYCAAsQACAAIAE2AgQgAEEHNgIACxAAIAAgATYCBCAAQQY2AgALEwAgAEGg+cEANgIEIAAgATYCAAsWAEGExMQAIAA2AgBBgMTEAEEBNgIACxMAIABBjM/CADYCBCAAIAE2AgALEwAgAEGcz8IANgIEIAAgATYCAAsTACAAQazPwgA2AgQgACABNgIACxMAIABBvM/CADYCBCAAIAE2AgALEwAgAEHMz8IANgIEIAAgATYCAAsTACAAQdzPwgA2AgQgACABNgIACxMAIABB7M/CADYCBCAAIAE2AgALEwAgAEH8z8IANgIEIAAgATYCAAsTACAAQYzQwgA2AgQgACABNgIACxMAIABBnNDCADYCBCAAIAE2AgALEwAgAEGs0MIANgIEIAAgATYCAAsTACAAQbzQwgA2AgQgACABNgIACxMAIABBzNDCADYCBCAAIAE2AgALEwAgAEHc0MIANgIEIAAgATYCAAsTACAAQezQwgA2AgQgACABNgIACxMAIABB/NDCADYCBCAAIAE2AgALEwAgAEGM0cIANgIEIAAgATYCAAsTACAAQZzRwgA2AgQgACABNgIACxMAIABBrNHCADYCBCAAIAE2AgALEwAgAEG80cIANgIEIAAgATYCAAsTACAAQczRwgA2AgQgACABNgIACxMAIABB3NHCADYCBCAAIAE2AgALEwAgAEHs0cIANgIEIAAgATYCAAsTACAAQfzRwgA2AgQgACABNgIACxMAIABBjNLCADYCBCAAIAE2AgALEwAgAEGc0sIANgIEIAAgATYCAAsTACAAQazSwgA2AgQgACABNgIACxEAIAEgACgCACAAKAIEEIEDCxAAIAAgATYCBCAAQQM2AgALEAAgACABNgIEIABBBDYCAAsQACAAIAE2AgQgAEECNgIACxAAIAAgATYCBCAAQQE2AgALEAAgACABNgIEIABBADYCAAsQACAAQQA2AgAgACABNgIECxMAIABB+JzDADYCBCAAIAE2AgALEwAgAEGUncMANgIEIAAgATYCAAsQACAAQQI2AgAgACABNgIECxMAIABBwKDDADYCBCAAIAE2AgALEwAgAEGAocMANgIEIAAgATYCAAsQACAAQQM2AgAgACABNgIECxMAIABBwKHDADYCBCAAIAE2AgALDgAgACABQUBrIAIQwgMLEAAgAEEKNgIAIAAgATYCBAsTACAAQcikwwA2AgQgACABNgIACxAAIABBBzYCACAAIAE2AgQLEwAgAEHIp8MANgIEIAAgATYCAAsQACAAQQY2AgAgACABNgIECxMAIABByKrDADYCBCAAIAE2AgALDgAgACABQTRqIAIQwgMLEAAgAEEJNgIAIAAgATYCBAsQACAAQQs2AgAgACABNgIECxMAIABByK3DADYCBCAAIAE2AgALEAAgAEEMNgIAIAAgATYCBAsTACAAQfSwwwA2AgQgACABNgIA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eW5hbWljcy9yaWdpZF9ib2R5LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL2FycmF5LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWF0cml4LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWluX21heC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWF0cml4X3ZpZXcucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9jb25zdHJ1Y3Rpb25fdmlldy5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2dyaXN1LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2xpbmFsZy9sdS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfdHJhdmVyc2VfYnZ0dC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9saXN0LnJzAGxpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfaW5zZXJ0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdXRpbHMvcG9pbnRfY2xvdWRfc3VwcG9ydF9wb2ludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9qb2ludC9tdWx0aWJvZHlfam9pbnQvdW5pdF9tdWx0aWJvZHlfam9pbnQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9qb2ludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF92ZWxvY2l0eV9jb25zdHJhaW50LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci9qb2ludF9jb25zdHJhaW50L2dlbmVyaWNfam9pbnRfY29uc3RyYWludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2dlbmVyaWNfY29udGFjdF9jb25zdHJhaW50LnJzAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X3NlZ21lbnQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9zZWdtZW50LnJzAGxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3JlZml0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3JpZ2lkX2JvZHlfc2V0LnJzAGJ1aWxkcy9yYXBpZXIzZC8uLi8uLi9zcmMvZHluYW1pY3MvcmlnaWRfYm9keV9zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9qb2ludF9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9keW5hbWljcy9tdWx0aWJvZHlfam9pbnRfc2V0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL2pvaW50L2ltcHVsc2Vfam9pbnQvaW1wdWxzZV9qb2ludF9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9keW5hbWljcy9pbXB1bHNlX2pvaW50X3NldC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF9jb25zdHJhaW50c19zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvc29sdmVyL2NvbnRhY3RfY29uc3RyYWludC9jb250YWN0X2NvbnN0cmFpbnRzX3NldC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9jb2xsaWRlcl9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9jb2xsaWRlcl9zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi9jb252ZXhfaHVsbDMvdHJpYW5nbGVfZmFjZXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3JpZ2lkX2JvZHlfY29tcG9uZW50cy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9kYXRhL21vZGlmaWVkX29iamVjdHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9vcHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlLTEuMC4yMTkvc3JjL2RlL2ltcGxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vY29udmV4X2h1bGxfdXRpbHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9ib3VuZGluZ192b2x1bWUvYWFiYl91dGlscy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3V0aWxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3V0aWxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdm94ZWxzX3ZveGVscy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3ZveGVscy92b3hlbHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dlYi10aW1lLTEuMS4wL3NyYy90aW1lL2pzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvbWFzc19wcm9wZXJ0aWVzL21hc3NfcHJvcGVydGllcy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9waXBlbGluZS91c2VyX2NoYW5nZXMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9ibGFzLnJzAGxpYnJhcnkvYWxsb2Mvc3JjL2ZmaS9jX3N0ci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL2RlZmF1bHRfYWxsb2NhdG9yLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci92ZWxvY2l0eV9zb2x2ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3MvY2NkL2NjZF9zb2x2ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy91dGlscy9jZW50ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvY29udHJvbC9jaGFyYWN0ZXJfY29udHJvbGxlci5ycwBidWlsZHMvcmFwaWVyM2QvLi4vLi4vc3JjL2NvbnRyb2wvY2hhcmFjdGVyX2NvbnRyb2xsZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvY29udHJvbC9yYXlfY2FzdF92ZWhpY2xlX2NvbnRyb2xsZXIucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvd2FrZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9kZWZhdWx0X3F1ZXJ5X2Rpc3BhdGNoZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3MvaXNsYW5kX21hbmFnZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9jeWxpbmRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9nZW5lcmljX2pvaW50X2NvbnN0cmFpbnRfYnVpbGRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF9jb25zdHJhaW50X2J1aWxkZXIucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9jb2xsaWRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3V0aWxzL2NsZWFudXAucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvaW50ZXJzZWN0aW9uX3Rlc3QvaW50ZXJzZWN0aW9uX3Rlc3Rfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9ub25saW5lYXJfc2hhcGVfY2FzdC9ub25saW5lYXJfc2hhcGVfY2FzdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3QvY29udGFjdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2Nsb3Nlc3RfcG9pbnRzL2Nsb3Nlc3RfcG9pbnRzX3N1cHBvcnRfbWFwX3N1cHBvcnRfbWFwLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvZGlzdGFuY2UvZGlzdGFuY2Vfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19oYWxmc3BhY2Vfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy91dGlscy92ZWNfbWFwLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9jb252ZXhfcG9seWhlZHJvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X3RldHJhaGVkcm9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdm94ZWxzL3ZveGVsc19lZGl0aW9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvZWRpdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL2NvbnN0cnVjdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2NvbnRhY3Rfd2l0aF90d2lzdF9mcmljdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2NvbnRhY3Rfd2l0aF9jb3Vsb21iX2ZyaWN0aW9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci9jYXRlZ29yaXphdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL2NvbnZleF9odWxsMy92YWxpZGF0aW9uLnJzAGxpYnJhcnkvY29yZS9zcmMvbnVtL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2xpbmFsZy9zeW1tZXRyaWNfZWlnZW4ucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vYmlnbnVtLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfcGZtX3BmbS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX2hhbGZzcGFjZV9wZm0ucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi9jb252ZXhfaHVsbDMvY29udmV4X2h1bGwucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19jb252ZXhfYmFsbC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX3ZveGVsc19iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfYmFsbF9iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfYmFsbF9iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaW5jb2RlLTEuMy4zL3NyYy9pbnRlcm5hbC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3ZveGVscy92b3hlbHNfY2h1bmsucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9saW5rLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvZ2prL2dqay5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9icm9hZF9waGFzZV9idmgucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2N5bGluZGVyX3RvX3RyaW1lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2NvbnZleF9wb2x5aGVkcm9uX3RvX3RyaW1lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2JhbGxfdG9fdHJpbWVzaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX3RyaW1lc2gvY29uZV90b190cmltZXNoLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdHJpbWVzaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL2NvbnZleF9odWxsMy9pbml0aWFsX21lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZ2VvbWV0cnkvaW50ZXJhY3Rpb25fZ3JhcGgucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZGF0YS9ncmFwaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZW5hLTAuMTQuMy9zcmMvdW5kb19sb2cucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9pbmRleGluZy5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9wYXJ0aXRpb25pbmcvYnZoL2J2aF9vcHRpbWl6ZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3RyYXZlcnNlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvY29tcG9uZW50d2lzZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9uYXJyb3dfcGhhc2UucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9uYXJyb3dfcGhhc2UucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9ib3VuZGluZ192b2x1bWUvYm91bmRpbmdfc3BoZXJlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdm94ZWxzX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdHJpbWVzaF9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X2NvbXBvc2l0ZV9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX3ZveGVsc19jb21wb3NpdGVfc2hhcGUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19jb21wb3NpdGVfc2hhcGVfY29tcG9zaXRlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfaGVpZ2h0ZmllbGRfY29tcG9zaXRlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfY29tcG9zaXRlX3NoYXBlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfaGVpZ2h0ZmllbGRfc2hhcGUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9zaGFyZWRfc2hhcGUucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvcG9seWxpbmUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL3ZveGVsc190b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jeWxpbmRlcl90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jb252ZXhfcG9seWhlZHJvbl90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9iYWxsX3RvX291dGxpbmUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL3JvdW5kX2NvbmVfdG9fb3V0bGluZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX291dGxpbmUvY2Fwc3VsZV90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jdWJvaWRfdG9fb3V0bGluZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9waXBlbGluZS9waHlzaWNzX3BpcGVsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3BpcGVsaW5lL2RlYnVnX3JlbmRlcl9waXBlbGluZS9kZWJ1Z19yZW5kZXJfcGlwZWxpbmUucnMAbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwvd2FzbS8uLi91bnN1cHBvcnRlZC90aW1lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMAL3J1c3RjLzExNTllNzhjNDc0N2IwMmVmOTk2ZTU1MDgyYjcwNGMwOWI5NzA1ODgvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfY2Fwc3VsZV9jYXBzdWxlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfY3Vib2lkX3RyaWFuZ2xlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdHJpYW5nbGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL3ZlY19zdG9yYWdlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfdHJlZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9saW5hbGcvcGVybXV0YXRpb25fc2VxdWVuY2UucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdm94ZWxzL3ZveGVsc19uZWlnaGJvcmhvb2QucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2VuYS0wLjE0LjMvc3JjL3VuaWZ5L21vZC5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjQvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE2LjAvc3JjL3Jhdy9tb2QucnMAbGlicmFyeS9jb3JlL3NyYy9mbXQvbW9kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbW9kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdGMvMTE1OWU3OGM0NzQ3YjAyZWY5OTZlNTUwODJiNzA0YzA5Yjk3MDU4OC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL2NvbXBvdW5kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3BpcGVsaW5lL2RlYnVnX3JlbmRlcl9waXBlbGluZS9kZWJ1Z19yZW5kZXJfYmFja2VuZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX2Jpbm5lZF9idWlsZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3Bsb2NfYnVpbGQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19jdWJvaWRfY3Vib2lkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvY3Vib2lkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvZmVhdHVyZV9pZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZnJvbV9pdGVyX25lc3RlZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL21hc3NfcHJvcGVydGllcy9tYXNzX3Byb3BlcnRpZXNfdHJpbWVzaDNkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvcG9seWdvbmFsX2ZlYXR1cmUzZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMC9zcmMvZGxtYWxsb2MucnMAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJzAGxpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2VuYS0wLjE0LjMvc3JjL3NuYXBzaG90X3ZlYy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvYm91bmRpbmdfdm9sdW1lL2FhYmIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZGF0YS9jb2FyZW5hLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2RhdGEvYXJlbmEucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9namsvdm9yb25vaV9zaW1wbGV4My5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL2hlaWdodGZpZWxkMy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2VwYS9lcGEzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vY29udmV4X2h1bGwyLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL251bS9mMzIucnMAAQEBAgEBAQIBAQECAgICAwEBAQIBAQECAQEBAgICAgMBAQECAQEBAgEBAQICAgIDAgICAwICAgMCAgIDAwMDBAAAAADDNBAAeQAAADUAAAAsAAAAQ2Fubm90IGRlc2VyaWFsaXplIGN1c3RvbSBzaGFwZS4AAAAAAAAAAAEAAAAEAAAAQWxsb2NhdGlvbiBmcm9tIGl0ZXJhdG9yIGVycm9yOiB0aGUgaXRlcmF0b3IgZGlkIG5vdCB5aWVsZCB0aGUgY29ycmVjdCBudW1iZXIgb2YgZWxlbWVudHMuAAAQVRAAWgAAAIsYEABzAAAAhAAAAAkAAAAAAAAACAAAAAQAAAAFAAAAYSB0dXBsZSBvZiBzaXplIDIAQbCrwQALYQEAAAAGAAAAERIQAGMAAACVBAAAIgAAABESEABjAAAAmAQAABwAAABzdHJ1Y3QgVHJpTWVzaCB3aXRoIDcgZWxlbWVudHMAANhVEAAeAAAAYSB0dXBsZSBvZiBzaXplIDMAQZyswQALBQEAAAAHAEGsrMEACwUBAAAABwBBvKzBAAsFAQAAAAcAQcyswQALiQ4BAAAABwAAAHN0cnVjdCBDb21wb3VuZCB3aXRoIDQgZWxlbWVudHMAVFYQAB8AAABzdHJ1Y3QgUG9seWxpbmUgd2l0aCAzIGVsZW1lbnRzAHxWEAAfAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAypFYQABgAAABzdHJ1Y3QgQ29sbGlkZXIgd2l0aCAxMSBlbGVtZW50c8RWEAAgAAAAc3RydWN0IFZveGVscyB3aXRoIDYgZWxlbWVudHMAAADsVhAAHQAAAHN0cnVjdCBIZWlnaHRGaWVsZCB3aXRoIDYgZWxlbWVudHMAABRXEAAiAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyMAAAAEBXEAAZAAAAc3RydWN0IFRyaU1lc2hDb25uZWN0ZWRDb21wb25lbnRzIHdpdGggMyBlbGVtZW50cwAAAGRXEAAxAAAAc3RydWN0IEdyYXBoIHdpdGggMiBlbGVtZW50c6BXEAAcAAAAc3RydWN0IExVIHdpdGggMiBlbGVtZW50cwAAAMRXEAAZAAAAc3RydWN0IElzbGFuZE1hbmFnZXIgd2l0aCA0IGVsZW1lbnRz6FcQACQAAABzdHJ1Y3QgQ29udmV4UG9seWhlZHJvbiB3aXRoIDggZWxlbWVudHMAFFgQACcAAABzdHJ1Y3QgQnZoTm9kZVdpZGUgd2l0aCAyIGVsZW1lbnRzAABEWBAAIgAAAHN0cnVjdCBCcm9hZFBoYXNlQnZoIHdpdGggNCBlbGVtZW50c3BYEAAkAAAAc3RydWN0IENvbnRhY3RNYW5pZm9sZERhdGEgd2l0aCA3IGVsZW1lbnRzAACcWBAAKgAAAHN0cnVjdCBKb2ludE1vdG9yIHdpdGggNyBlbGVtZW50cwAAANBYEAAhAAAAc3RydWN0IEdlbmVyaWNKb2ludCB3aXRoIDExIGVsZW1lbnRz/FgQACQAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDMoWRAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgNEhZEAAYAAAAc3RydWN0IEludGVncmF0aW9uUGFyYW1ldGVycyB3aXRoIDE3IGVsZW1lbnRzAAAAaFkQAC0AAABzdHJ1Y3QgTXVsdGlib2R5IHdpdGggMTggZWxlbWVudHMAAACgWRAAIQAAAHN0cnVjdCBJbnRlcmFjdGlvbkdyYXBoIHdpdGggMSBlbGVtZW50AADMWRAAJgAAAHN0cnVjdCBJbmRleFNlcXVlbmNlIHdpdGggMiBlbGVtZW50c/xZEAAkAAAAc3RydWN0IEltcHVsc2VKb2ludCB3aXRoIDUgZWxlbWVudHMAKFoQACMAAAB0dXBsZSBzdHJ1Y3QgTW9kaWZpZWRPYmplY3RzIHdpdGggMiBlbGVtZW50c1RaEAAsAAAAc3RydWN0IE11bHRpYm9keUpvaW50IHdpdGggNCBlbGVtZW50cwAAAIhaEAAlAAAAc3RydWN0IEltcHVsc2VKb2ludFNldCB3aXRoIDQgZWxlbWVudHMAALhaEAAmAAAAc3RydWN0IE11bHRpYm9keUpvaW50U2V0IHdpdGggNCBlbGVtZW50c+haEAAoAAAAc3RydWN0IE11bHRpYm9keVdvcmtzcGFjZSB3aXRoIDIgZWxlbWVudHMAAAAYWxAAKQAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgOUxbEAAYAAAAc3RydWN0IFRyaU1lc2hTaGFwZUNvbnRhY3RNYW5pZm9sZHNXb3Jrc3BhY2Ugd2l0aCAzIGVsZW1lbnRzbFsQADwAAAAxp32Kc1AoS7ksgtHwpWLmDEpcSVrnmEnkCyMkZes9q44jEAB2AAAAhgAAADoAAACOIxAAdgAAAH4AAABBAAAAjxsQAHcAAABcAAAAKwAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AFwQACAAAAAFFxAAgQAAABMAAAAJAAAAAAAAACQAAAAEAAAACAAAAAAAAAAMAAAABAAAAAkAAAAoKQAADRgQAH0AAADrBwAACQAAAPNIEAB1AAAALgIAABEAAABpbnZhbGlkIHZhbHVlOiAsIGV4cGVjdGVkIAAAfFwQAA8AAACLXBAACwAAAGludmFsaWQgbGVuZ3RoIACoXBAADwAAAItcEAALAAAAAAAAAAQAAAAEAAAACgAAAAAAAAAEAAAABAAAAAsAAABMYXlvdXRzaXplYWxpZ25DYXBhY2l0eU92ZXJmbG93AAAAAAAEAAAABAAAAAwAAABBbGxvY0VycmxheW91dAAA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cGxpY2l0IHBhbmljAAAcFBEADgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAA0FBEAIAAAAFQUEQASAAAAAAAAAAQAAAAEAAAAcwQAAAAAAAAEAAAABAAAAHQEAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IACjFBEAEAAAALMUEQAXAAAAyhQRAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAoxQRABAAAADsFBEAEAAAAPwUEQAJAAAAyhQRAAkAAAA6IAAAAQAAAAAAAAAoFREAAgAAAAAAAAAMAAAABAAAAHUEAAB2BAAAdwQAACAgICAgeyAsICB7CiwKfSB9KCgKLApdMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAC9RxAAGwAAADUHAAAfAAAAZmFsc2V0cnVlAAAAvUcQABsAAACvCgAAJgAAAL1HEAAbAAAAuAoAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVytBYRAEwAAABsBhAALwAAAFwDAAAFAAAAWy4uLl1iZWdpbiA8PSBlbmQgKCA8PSApIHdoZW4gc2xpY2luZyBgYB0XEQAOAAAAKxcRAAQAAAAvFxEAEAAAAD8XEQABAAAAYnl0ZSBpbmRleCAgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlICAoYnl0ZXMgKSBvZiBgAGAX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`).buffer)}))}function Hn(){return function(){let e,t;try{let a=n.__wbindgen_add_to_stack_pointer(-16);n.version(a);var r=p().getInt32(a+0,!0),i=p().getInt32(a+4,!0);return e=r,t=i,u(r,i)}finally{n.__wbindgen_add_to_stack_pointer(16),n.__wbindgen_export_1(e,t,1)}}()}function Un(e){var t=e;n.reserve_memory(t)}Q[45]=62,Q[95]=63;var Wn=Object.freeze({__proto__:null,version:Hn,reserveMemory:Un,Vector3:ot,VectorOps:B,Quaternion:st,RotationOps:V,SdpMatrix3:ct,SdpMatrix3Ops:lt,get RigidBodyType(){return H},RigidBody:bt,RigidBodyDesc:xt,RigidBodySet:Ct,IntegrationParameters:wt,get JointType(){return U},get MotorModel(){return ut},get JointAxesMask(){return dt},ImpulseJoint:J,UnitImpulseJoint:Tt,FixedImpulseJoint:Et,RopeImpulseJoint:Dt,SpringImpulseJoint:Ot,PrismaticImpulseJoint:kt,RevoluteImpulseJoint:At,GenericImpulseJoint:jt,SphericalImpulseJoint:Mt,JointData:Nt,ImpulseJointSet:Pt,MultibodyJoint:Y,UnitMultibodyJoint:Ft,FixedMultibodyJoint:It,PrismaticMultibodyJoint:Lt,RevoluteMultibodyJoint:Rt,SphericalMultibodyJoint:zt,MultibodyJointSet:Bt,get CoefficientCombineRule(){return W},CCDSolver:Vt,IslandManager:Ht,BroadPhase:Zt,NarrowPhase:Qt,TempContactManifold:$t,Shape:X,get ShapeType(){return K},get HeightFieldFlags(){return ft},get TriMeshFlags(){return pt},Ball:tn,HalfSpace:nn,Cuboid:rn,RoundCuboid:an,Capsule:on,Segment:sn,Triangle:cn,RoundTriangle:ln,Polyline:un,Voxels:dn,TriMesh:fn,ConvexPolyhedron:pn,RoundConvexPolyhedron:mn,Heightfield:hn,Cylinder:gn,RoundCylinder:_n,Cone:vn,RoundCone:yn,get ActiveCollisionTypes(){return yt},Collider:jn,get MassPropsMode(){return q},ColliderDesc:Mn,ColliderSet:Nn,get FeatureType(){return G},Ray:Ut,RayIntersection:Wt,RayColliderIntersection:Gt,RayColliderHit:Kt,PointProjection:qt,PointColliderProjection:Jt,ShapeCastHit:Yt,ColliderShapeCastHit:Xt,ShapeContact:en,World:On,PhysicsPipeline:bn,SerializationPipeline:xn,get ActiveEvents(){return ht},TempContactForceEvent:kn,EventQueue:An,get ActiveHooks(){return gt},get SolverFlags(){return _t},DebugRenderBuffers:Sn,DebugRenderPipeline:Cn,get QueryFilterFlags(){return vt},init:Vn,CharacterCollision:wn,KinematicCharacterController:Tn,get PidAxesMask(){return mt},PidController:En,DynamicRayCastVehicleController:Dn});export{t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/rapier3d.DBFmcAzL.js.gz b/Needle/MenuScene/dist/assets/rapier3d.DBFmcAzL.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4af13c9c6b6bfcb0884f560f7363915a083480a2 GIT binary patch literal 829360 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%0A~Iw?ww1*Vdk;=bf7#{$j&0EO zU$i;-3`B=I@a4DT(wOh!e4mc<&SB;oh0XB*CGXe!IAZF%U*B)Kl29pI{hlIe+;MCJd4+u65qSzcKOFxui4dW*?zn+lCD*dGVbjZn*WxPqtxwpWV`r6%@^1wp+~u z>k#=ZEohu+TEq>M$@QTvir3%bo0`Tku4hLWvc9c++p|BW_AkT0(dPMNGxeP!@;{Hg z%E<@GVjdu=U)xxaTIJvWy$q#aV05-}5Awz6)MBHPyqMV$tkf>ogx}K><(NNu0YCpLj~}{+GI9q><5SOwCC)1LDJ>_RIFI+H6v_ z@7mB2#r~ILU5ib*uQpknd1lxF?YHAK-$eeT2$T(Wj?=)A^XX%jpZB%Jte$<$jm|0- zq=nMtU-Y5m)41rT@;~xcWgA+H*z9cOo_N@>p~k$&U&`Wy|2PjE5&5lZEwHk<;hy*9 zpx^GX#y{xINk$E)Cgyej0}*OCSD`?)NZA7I9;8jLpf%l|N9Ad;tQs z_?LK<&7aqkEb{k@nQt_|(k^|4c|IwCZmj+=!+(|E=kZp)wA3l}ofCpn=fBLg&vT*l z_Yab0`5mZc4cGq@x(|`RPhM1=K<5K&)?@4c=^QJ%3a*{+%sRr3@H(#5OEf78n|F6`p*H zztEM(d3N$&jx#e8VA&S?M|s8dER}k8jdN~hd6cU-77l!?|Ch1-34iwQ^Y$<+Yp>*b z(#NahALrV|U!M9kG57b!h!OkucHnH|Wv=iVm-G9%dwab&&D|s4JpH50R6jB|64a}_ zgVAZkg0#`U(pXn|CG#6+KX=}+;gN+;{}VsAzL&O3n*tf)RrHTECTe^?(Z|F3Khh`b zP`9N|Q_2z?ulLXPp~~T&>wW>Ru{*zx@mFEpJG69$Vne#?UIMz0ndKoZER-m)8M*K4Cr9|)Tcf5YukC(ai)F~HX=^`wx6+YG@-}3 zH26UthTMmd`$3r&3w%U}_n&BzGRUX?ycXvZXD0V?)7maFWh}_LrLX#f{PSoVH71A1 ztL^08?IfQRv%0gLcT?E&_~R!YS-tZS<=J{3SlQU`XtRdJW({Xsty5iehG+?EcaUW+9`Az7s zVs>ACrS4Dt))AbPTK9EB`ou=)JDX8S$H@jkD#F8k{LwB>CrMaOde!{bk^%je$%isZu^kB1TNY1ra&ncfV~H1_=r4?s)E7GKLeeARWB#{5Vdf zZn+v*h3))IU%9_=Ix}N*KElA2aaf`BC@^Y~-&(ye921iLW#5$_XJ${4@1mKx-_7fj zbX@ImxPf(;H7Kl^X#J>5Wt{PM<7qW*yZd+i$~{o8-YMq!%7pI`-E5WM|MK5N@q znjL3y&(UzUFS!RB5O06U(~a@P3BmKf?7Q+ojmgI}V6fq0_Q^g3PN8g&Z+wLQ{8IDO z+n7cvqmph@o_jLZ=lZ68TJ4+u`Cj_^u5YZSy4(lM>e0m7M)fRZc_)4GlJXn{!#PT} z*XzPM@>??hu&QkI$zK%Mo!@>ha}9yD4FwrM65WJ}8|X0gTWjctddbf`o8^GpHACVXDH{C^O&5Rmz`X5W&~(#ZY>Tk?i?(7i@gcJhaP(icF`D2|vwJ!l_ifv9T|e?T{EnZ}pNe~GkNPey z=MedZ7J20}uw&EwuJ4AdYv|M?hL_l_eK+=144O$>`i@I`b`SQh-?Zkb_8pHGTU6<0 z;L35|M850IYFBoN;aNrRLHSdrqM`B=E$>qe2*(~uw)bF1m)s7Xpk#gzZakCuR=`FT z58r~Z;+l-VCqmhF@CP^;??qNpr4W)j`#)-Tbug(x;|# zZ_F|)JJ&^dwIpshOrD#L0!y3vlcT$~b~CT6yNRSvB5;P5&Ud_^$aKqiEjNm>ZyaMm z8t72_U7H$GYht`E>qOs~9p2;rJRTM|&F(#&JC8+Ftx>mV@gsk~3+tKo;u)H!@?8uL zz?S#>?yROY_YnFm>4Q{$8PU-)`HtVS-Tpkzts~eQqkB)MQc2tUWp1x+*t0PEPA|?m z3FD#9<$5^j#(Ad}18Jhew_|>*O^C`k?N*x;|0Jw4sB@lwJ2&f{ ze6BmI$Uuk4cekgSp$_Bz-Ek@Pj-Y*Z*RIXhkt6FGV3>C4U7M!PXqP^umwn7rIY(^B zc{u$}CqjQuW_1m6aUX6{?;K{PtKimfe;h}CtL}BJ?JRe;v1t?|>Cdg*ZOHH(E$`ZG zCil_8dL}}DZ%Kc0Ze~eETj@_R{DPL&uiAsHnZ3V})ugPoleAyxB{mw}9S+qy61Anw;;8;Fx{`Cu`+fm4Dqq`)}>&HEi*n?#EiReUUP7ShpM8 zU(c`CByha$-SsZbj_zqMK#&NPvHz{U?W&$n5B*x@Q#8BuTf41l`L5vG_vdR?G=E4Z3K`1%C-WTVf6lutS|mO2Yy#ST`Ai<(_SWyoTC{~ z{k{*S_>_KKw4HaevAokFVmSLoKSq&ktCzJ0u^=%2Q>(%*SViRaG&aI zc|5-TUe(qwadO+fgbgbT12^-^cFG>YKu5+MdlC7y-8}c;fzvzv?Xwvt4|soj?WuB+ zTQvskjvsT$onPh2vrGIa($;M`D<3$C>N56~`!HEP^(SSlI6=Eu-VY-ExthDXI`?q| zs&`G}I!3n+v$~PSW|GA9$!VWsi1x}4UdDMRiMmMEcxF|OeS+P|jdyB)cN7LGm$;P zB+M!78I7yEsLnc6>GszceNpXYUE?qFDA)0356p7^>B<+X_NczZJ3+j5Sr}OAd{IYu z%R6*jVxDY%m>V+3tj;wxk=waLk6OPz#bw}Zy6SAh4Z8l!8GNQ~5Ai)2Nx$nl-?Br? z$u~4zQ+0>tJ=71k6-{w0S&*x(s)c{vOsK4IhZM~a(M8>%W`4OYe_haj~ z(lfmSu4?%_1uGzjIJ?7-%I$>yT<%Z%vqqB5 zbY~O#t#!n32alZFylKvE=F9lAYGXJuS0;T(hTVJiAS&awx*XrM%*)&wH@_ugt1K4y z2_>~VxZK0kt7UOLF=wW+js@9NIh-4`Ryv?Z+sNOiZoW^Vh7C_FT;0>}QV(3Ywic0I zweQ;SQTdNQwlOMyy{A`u6SwqpvW@DA7UfwsGu?rgtGcnlk9?RVALCT|eKs6L7~C7% zldZ~GJp0C0UE<$f*uAHBqu^?9!6~ZRq}zJO&ik>>o2+Gd;QZcvI`4US^2{d3`svK! zpZrIMbIeUW+P!DDf_;sUn?R+}1k#;MF3VUE%Ko?h=}-HFVd zBp9Rn^W}6-F;!<@<$h_iip_4>j>@M$!?w_Ve+PH9pXnvLS^fP8G^Y2~S|;TeM5i;s zsvc0~1_B$Fz~^`5gsL2jF_&v>*M=qIZ$FJ^6-$+E40j{XDoo8z5drSqwZ+<{X659U zW!$^Bz7geHR({VC==?jli$6>uWA?qZ(7N&^k0;zMaUb_Ze@oZ~==>+xYg*o!H~+>q zfAUc?!CwA~?%ZgBvmy6vER!{!hLyZ9+<=37Z!9X`K0EomXWyW~==2+Va`sJXJYIa~ zBSnGKN4Hkhay?_T|7MN8n*T#VtvkHAm-=urtJmb+ftk0S$XrOj+RytDzdT>A?j)R8 zH5rcy;Ol$-z$YHk^SU^it9*^1y>I=PYg_e|UV<=ozM=P~P4UnHedCY(VOJ(qUhYmG zUu;XSN$EHK^2xrq<(;+iEEVnj1^g|0Bm|GX)3GW>3el+by^P9QE>oTR@FsQXvrf!J zo^9I9>iZOi8a2OJ%iQwplJ>&L14hX=eU{EU6 z7yM=Ii@h=Ro4Tap^8mZnt+uL8@KF@^e1vnZf*Vb;{_>|A! zxU9$h+V)b<-$2P!)jP?!ox^Lj2RzFSSOw+QFdR?M|+9I%he(hkk1t<((or=}wtM;@Ovy~1j&S&@W$^BDVE7&{$ZC`xKKjnCob#6)@ z$2x4Gi0|TTIJIys&qt%o<~YM=`+9@U_2m7k-t-8)@N}2PEgG)QnpAW*U=Kquf7#{$ z!&5!~Piazp%!yaA#4K0^E{=3)|e?!k) z)&SO}|Jga$S_cgdAMjt=r|`ix`8PT$&+4Dgmt5wF4O>yHztNj=ZO%T~pmHB#NGqFi zTQ~pcOPwinH0W=7z2CLFoGatl!^_&;ag3|_(@*D>zQkS`E6<|-J-@ORcCPNbpI@C5 zNa1pCc6ld=%Eg{@v)6a=6e11p!kpykG|M%=`W|i4|UFtVIX+&={^{h zzcsJcwa;xUd&?|!&s>H7YMuN-^99f7boUR{?dpD(@7tbvX_t5D{Mc7^9H}#4ZU&T= z_viiCCd$fs>PdC>$+oTTui9A=;2r*a)%`U*nW{{H~*7hZ>~rXF9T?ysL!5D-{0qJ6R_)%U$x~@70|su{^^rY8PLq z^iMMArG4eweC0u&m0@^@Md!LrUFGQHy&(`r*Zs}QTw+<%HL2!;AT^X2*X_luzHg~J zei%kLLD%oJIM3dtFAe>s^+~Sv&-p6odB!IhHJmJ}m-mPX?tPNcylZV`4pPc5XY7`Y zyg1L2>i)P8A?K@%>QRu;xxX)f(w^D9EvtDxX^y&+Vg}?HyEkz-iZ|P~zQZy0C&ww^ z$I1sk?Swg%ilYg$vZBNIy6srWtIIZ*-p*ua$bYz&}2WsP-t?#{PKG%=NRS=eN8-yzQ$Hc zE{bU_A zO?IwfZ7n3e+1gd>X&r>~_5EC6gMjkW>ryA>Z+E=plfz7qj6m(v^YW~PW)o$1RgKo} zbWZ(+;T0+AI>VQH*BjVY{m#{T**OG_r1io{g4t*MFG2DI18S9a_>BMQrJF)iq+fA7 zy)csgiDTP@f%hklfJ2L?l}&Mly!$ZDv!-3^WHWQ}UhZj;9y%DG?gfi{s}{*Ra%q>> zXd9aobr0ETz0n|6IkCu`Ea(1Q?%}C*aT=gZ+0IEhHjj`let@f&wYF*x1XcCl-}Eni zh>ono#XrKHo^k9$l3eqbmAPG6+cP=y#Cg2|vpm!0%HN6Y-sjk^ya&WD^Fh^}EakJw^?e*oXmP&z z_IH`&eM!~*EfP;uZ*Aw@iS!*QLB=%SY=+nq&W^I z+1#HjqOK+L<+tubBxVQM9L32*N3>( zIoO*prA^RvtMo-TFM+cS8_u;}mpP)YwTtrX)BURv;32{Ham#zg?zFQ=xtDOW-CUki z@muRa-8&4BLh)Y421zTfXREkzJvUr=F8V|McGUG9mys#&2d(nX1Fu)sgWcp$t^wPb z`W+`#d$A~UL>{zw8880O?QO= zWqtXR*u4K8tgcFM5&jzta0{b{rGE<(b{;?$|0$970)3Tz9j$F3(UJg{+;3x@A4O z%sEWe83m(W?gfXmx`XRGcXUb}5iCxBZgbM3lMagVOv(2=p6_ITtm?47@8eUQ`wJ?4=6hqK$@=_D z?d?)Mj2O8+q2w zGv~+8cM6bNwJ-GNew>-f-+cU#{`oT$FMpxq=R9KXJT4dc{MqhKe)RsB-igDbU(KoV zybLB){C+D3x%zYelI-yz`r+pDOoG9-#Omcksf7Bf41I~5`&scvW#w~a)^bLQ*XlL7P{#sxgtPNj0kbZMm z@TW)eEQTNAVNYJ0Lk`bdJP@=Aiwq4k>jQc_6lwh(3n)A^%{oj!$ZK=(#-BdOo83FY z>IH8+y~%n#

(39W`RNZ4Ntzrh2#F%V+Wo0|E6N*|nV|dwj=KvorpX;HhrCiH9fB z;lmn#3`j@VuWbB)=6pD5%$M)%IL95WU*ma?48vXy@0!=$=IqHvqeHhwoY<*DeMROQ zr^Xv~;-rocjTb_7Cle1l($k#{t2fb%8$0&M(SxTyv%CqfZDY+oIw#s?qp z)Ff|wP>44hJI!9g#tCdTdIt^(dM<_qJhjPlG5nBxH}%0YTh_>%H+W}HHS)#=H8yCF zw|MX_o*Lv$3|`rwMc&fE2YYIfw_=dOz=wy>eiKW9ha0P4ex3B7_rUTGG7rsX2oQ?w z?mK^~lecj2&Yuu&>()Dbtk5vUuVQ>8J=)#zhXZ+Q4|nVdlMg}Hyfxdf)?x##a4nw3 z@Ja`M$gL%;-{GN2QaD7U9XeaSHb@*gduR+vTsV8yFi4y_d(ogI1|wllCfUS;B|KT= zgY|Q$_lTAD_po;GOz$_uN1qJi-kz-oI1Vi?c5~d>3_9$XlNahVSmT{6nA2v9HF;?} zPtaHpr*Lw3OUTR~wppV=oVK$O4NexJ{mdIR@=`brw#di}bDp7|kr&%}W5JQUq)v-3 zUdg=aJizfl7T`3Xj>x=eH~8@hZ{uOX4s+7d?X8?ob2g~Kvq#?9pe~*}@Z=5ZV5THL z_DHcA9QbpOyo~YV+3*^l2_VW^yjA*wY5h(?Oj*N8~*nH2Cu?wBx~EJaFEH?n>|hR+VJ7w zqd4MHPoI}$Qw-|7Z<9g{j__Jia%ML6S&?&53e6$Fq&K5>f)UoxQ zSO6*He0>H|a5DvehMr>bD*6msO{c@_BN9<3Wy2hIbh;L=9r6H!cX%Y^K_9&Fhd2CG z&|K7Wh*IYX26GZ}eGPRFwi~AjCc!&F1RUD9$$IaiF+zilv1KC{bzq>uGb8UX*o(tE zY}(EfA1&cg)0=F1#8lWTIEHxIBn1Qpc?btB@iZWt&9DutHSTj#(%cHnKFM zBYG(++JmEb9+ILxIKbfrLfdJ>Xa!B(Xo;x-572MI#|Xb}25+#?aIqP-*>fKi#jwqv zhGZj#1zUyqS$7`!oAcSOJbd6CCkc#vvWa_j@y5|0G>&3iN3l29vuA@8-rxww7KEwu z%tkphQ==yGXZ#lS-}wiDmaf0DsZ9ztY>KBEd0>N%sPD-`o9_4`#`7l0`M8C5X>Si> zf`(u$A*c97BhP&Bigz|inCU%LBY_vrkZ%|{;6Y}m2KA1UxaN~6Nh{I!B zFL)!yJ7L#EZw?=P@Xn@NQiQ`N_WXk0+vXF09^&4{F5scSJC9^wZXwcp&#W7xfo>dO z^orViaDZn@3O>k%i6Qiyju<8IDD-DGGtfe_Q$C(Ut37-bi!OO62G8((!~@{jp(2TkmY*5D@XySQH-t9qMm~{wa=K)4jXvT)ZJ8SlLeAmWXh1Vr9 zA3n3^53(tSZLzGQf)3YUHqo#^IXv}o0mFtEZ_#X{3-%b0_jphf&jBeyJ7=a#UQ&Gx z0|U)$r@>x3_*v_(`C>=jn0a82f)q`<5~Duqw{Zr657XFaL2rmc+ss5TB}0LCFu?E> zcZGN+q_77~ojRTvFu)~HN9vsqYJDfc}lb0qf*qeaEaz-|3 z?}ImHXuymej4afq1Hqp$Dd^xJ4lZn(PMeQ1XmaC8tUcl|yCY^#Xv!>2JU);GjpS`{& z))t;>-447>NRtkQm=f|R9F6-s{Lv=8RytU**EX4_dPDdRh&H=N{yZQ>b8wXO_9;gL0#xGj0EZ%9uw zU*Ta(o}}&fYh)_d(5EhGh0X)4Yj{hCZ}9L4Pr`l`Z5!OQx3%}t2Y(psnN7l=9W4^n zkw2|1ko!hCO#uU@pw}S<%)o-HzZ^y!BTRM1T>0Dc>N{ZFq@Z)8>-zLSiNmR`zNflA zmA}u9ft=vck^^8Ps^IAtczS_%`h@9y3Kjygfm8?%sh$l4b_oW|7}R0QZ1sM;ffVF> zlM!>nHe5?!B!7mM)}dfs^()Nd5CaH=4`4bBbQ)|pj6i2>|3m$Z`*XNqBfClmE(#*#ls7Qk1fHlh3kulS=ju0!`CdN&gdAw!&|X3rLy54-W5nC4c%8SfJjg zuz%Hi)FB}CCfopGNq|fFb-&23`#+YSiH&(BKmJ92ypkVgtf<3|;r|_fA_?s4V^?U18q@~yj<9ZqMOz0Jj@|?Vw&NQc zc!8PHXJcRLvl>qhX;(nLx#lzR4re|IV^)_ioqIwMtmzhumPf%5N_sm42tQyhFcwy+ zzopzNxdUbkz|(|i7@y_g-H?Y@%47R`c?=o7$iurK53iJm_Ir7BfS=_tS^g=H30Ly4 z|D!yD8}bNBdDQ-+JopWHa3v3t{$3tWT;kIpg}ov9uVho=yDi@mo{43c>e%HjFc;nA zNv%68weDcXSY7NUHntkm zYaF#J92zIy6%Mc-72J+tCGRDdye@I+Ye?T=NSMbV?V$sQ2DGF-WR?AWN1&N@VSkc& zpE8{jr577cJRQ$X6HE0mtDMSMOFK4&*yT>ySxZgn`2?X-_yNA@y=FxHkIpOrJvnVwGMx%br9<$#v3@vPs$xI+hC>YdcJx3bU6`1Cdeq)k(FdNc`@U85*M;1|omSjkfQeo7|{ zOx>QmWQ<1$o!0zKw+AF9ZRt~tbmwfdPHQ`=eBlE%l^=n0t}8!V&V}UcpAMu=I-~#y zuS+{ho0MrvZbMMxv0H>pGLLSWjp2FVfQ)K2V*xZo%06l`U3}!-l>zluwj6gtN{(FZ6hzo_4a zrJNV8lDD*7j5&42=7oHQy>#aAezSz(XZxwIPWH2B)o1JF>V5E#3EqGv5Q=m;M-w9T zY{Bt#sqaAp6~By_hO6LuX; z9OeIy%DMdjmQlqMo3l@_lzy{}cQ))n`MHi9=gQ{vHCR%QnuB#b(sgP&*bMn{ru83z zI+%w&eQ9AXD4@mC5R5@$sd>>Cu+$y-op9$ItI;lSgu$6EQvhteB_nIaHYQH!l5K1Z z5NJHqtj8pDFsGO2i>AGtrW8Ex0%#z81&Nza*RN}-ixk{firoG5K>KojNWYu8?witi zwC&0`Sk9;ELC$IDxk3YqJo(I4&-B;<3?m8&!e+4nj!eSrJ~g*k(lp(i`qu!9f={&` zTzE&1{9wFNXd&=ooniFqfrhEMecH-7z65=`1TP-x3~M@~=7vu-ijs}P2%}R98rRKD z0RYRsr^8szL(n)Gr3CaZ{WL0m6ZG0=0Cc4FtM+{MG)IpD?I~wZ0Kmxz7-Pwsl8c-h zOV9^guCFx&7}%Apq)mCFsEp5$k`wewJ#`T=3vP^0dM@$NGLBPgOusE-PdN`Be5GHQ|L{<+CRycS`P;yPP_Eb z)`7B`qF?!#GdU-#w#$^rb*sz|(Ji!i&k=*oDIctS9jrLQ7=3%&H^sI+C} zoUeSjM~Ult{j=5jhp%%|yvh6o<+D{xUZvl;goDF-sd|ri9bU`#O!`gb zdrSJDWqToWFY0}F9OATmKXZ7`F5Aa-*l=|6VO7jDLa(&+S9HB^4=8sGq$4DAjVvPi z9-#Ec^{$OEfVtPD>mk<}tl|>{jneLzqHarnL#{`R%iK{VlMO7{(vjP0$gXS*<&-z; z@WIC_Pqg~OpPtC)IdWh1VTD8b(u`m7s#SbyYbH9yMF2PQjQ@+j7>-QxD*blho_$%D zX{h|a^v~(F4{Mh`tn-Hto5H^IVUc&vhY=M!CvTd7?r-O zoCn58*Gs!FF$icATLO`KiIrZ3 zQZFs}{z2x#yjaH7Au%_J1uQwr2~<@dh&?&&~BNPgci4oNJ(yNUe1 zmG8}i4J-mOJy64f{~yNiI_JD@D;ZaL`Ju8MrQdkYuM!M)>2uc*y5v6fk+PAKlZ~XX z1cSx=WFs*yeKw%uqQaS6<8&@#s$v2MN_d@)MFqeA0>8h4Z#$~LN|z4Oj(A-vb1YJq z5ELAF)jH9ZHgI-xkK;!UpjvD6q-ouIZ{<2L|28IEN9_9=gEOP}MEKQDb` z14|i#rgz6*<&o-$y5bXEm5!_Y^;yR~J*@n1qq4zHj{(zrF{R*bBr6Kfh~uO5Ynjcv z=Ul0sbh()01CTOKVo5iZ`XuZwe@D$RaFBZmFS;1-izW8V4ftXyW0KOwxrU6lk*DIL z7)D@FV0Czxw$bBw9O9Z>H@q%`e3O{Mxz-uZ*j(lHuVt;)Km17-Wd7c!7|Hc=Ny$l; zLfKQbmviP{tuuO$0bKZpGyi+ZzuT<%*J5e^x~Zo#nWAx9ato85Ghw6p|0Qz=NUk2k&Z4QL&yO|!@$eT+^i`)QdR4Kzxmn`U?{rS^C19(ognPUuM}? zcr`cNSIX1U?=53bNbjiGyqANVyqN{c-uZpe>CnM>Hm=u2EMdeo{ZEd;MSjzsCbM9|s z=9F_E5*`1o%$gjRwBg&d-QuTtiuavca<0ZdxRx_HoOnrZ@e(Lr5`N7KqbPoryl|mk z+9dI*O<3|Dsy2ppYQq)(rlcLs6)*bu#7n8mM(NMEWo}hhwqwA_v$Dr>Pj8qidn?z^ zM`f4go*roe7Yls2*z5W5kKtaQs&^e^EP&q_uW zpE5ToZG>D4sHbvkr435ERK+?rqq6@VsClkre2NtfO>a+^SO%?f~Q~L=^yZ84-hue z3f}$#|0RFbR`3`b`wE_YfoFffmuoYv;Jq*K-Yxt(HkuWD_ys=v1n-vg8`wBj@bMS; zSix8RxvXs%D_=R?0OHB0vJ+I=339P5^#2m~b!~0qT-QIS2MsiB(?dy?9VKxd_pojQKL8dv&V#j? zZ+LHKaeHr!Y!=hr@H+cwVudrVJQ2mvNj$_3s2xEx#ZHEcv7*rtFEo#~O<2{(I77p3RIzf?J+wOqZt(m!PDd$E5{*eCe0wCF2Q z2}$P``YS}LPg2eER4HRO{>&M{XEqg?7#nNTA>w(urDL40;V-njMrJZ^bWb`1<$Tx| z_nU%zR)x648NlzGlJ83KJek%!#YS#iA|Bh*zPN>bMrZdB@hsMhs$;PgwJwc+E9lf_p49U(TZA*X7|(SyBVYUiYZf}{ z1I7Did`|a-$v0vy+3L~Caj`RL3j54%VV(rg9F?x@^J?&`;JJ|2D`h1HOorfnz z8TbpE^H3QV>(}QY+DjFm`u1t3efvB-Wo*+qVNP}xeWSaRDjLz6hpvk6fa_-)@r$!# z&bTD&Od%$ACcm4)(b-`NF~`~?c@tepQ7)##jM}H>0y?<(VD0p~xx;fT**;_a3)?3X zuWTQFUfy|LumjKK4-r2aX&;0X_Mvk0O@0WC?Glg0cpxnK79GW=W&@m+Q!!^fpU)z% z=jT_X=f_%G-h)qZG`oU*a2IqFl9`#9)OtUBLRf43t#jSe!ptr7{0*P`CC0m9J<5jh zpBZ)jXxvjAF^}s!|_Ph9dDih~{*r56!8!YivEIopUDi!QW-p+B3yw|GPNWwZ~=M$6w9!8#am`KRxS_ zpIx7AlP2b{rFr!Bhk@2XveC;SyDli^@@(CtmZdmXijAAF?f7WV8k=EU>V9n(s0Xr7 z{C9Y?XY$cV9olVIg;<7m<7DH8k#CpH9*q*A-Fj8X+iAt^;A0(y{${gBV=UW3>Vb4N zSFtTLhVG6?I@>OfG}p1*qPkW%qqB1jnFspQI?uw{+@MR9-gO(RbtO zv%Mg{XZ|e3J?rMvp4KzhBiy9uZKv|BJ|Pq4uf|QdBU!%s`@~r5Mp&EDy3t%GSCC!6 z9aYu3K1b4K-|m`yo7Vd_eXZLh)z+$=O$UB;th6qv2d!Jjfl#$-XLY7a!wZ z4S(qKqbUU0@X#%S{Z2Xubm6nLQuO!DF^Vl1*5k>2EVB}0_#g`BjFMv?pK?Z*9G_Bx z?Dc!0aoqr$OV<3tujZY1Ep#opH$#s9D_9CSA${P)A0Y4VM1IM!|G9$<~)U42h%O{^#o)l zZ1Eo)b3NlR{JCt1$(H_Oc{l$neL$v@j;zc6?*6~iC)j@c<99jztFegwzp+`;H@-Qp zPap^Ex_Itj9&{u&gn8Iah8@ga!uUyVh$zZwg$ z1^Vz@@_KsL$d+1W10yJEKN4cN%O1i}g`jvEWbZZk!oN|R71#qOmA-z}r{DL#?9*D` zr#~nB7(NJH48@FmB@Q;EUBGT5pEt)YQ;Z>@|400=Jq}>Vb{uCWc~R=pP*7i2O3!@`vQsFU#Qup@8^Nz>U zZ;i)>@yO$Cp>CV`kjI!0Df2$PV;%u%{WWdlDPTWD#@Q2PwTf&tQLZ$R^XCokVTwQsqexRlJ?qsBQ_#3SxMu=nheh!i}6MjW>n*sIle!lb!sm_8RzbZvWhA{~Ubc@V&A{j+tOYDYM~&C{ThH&9hG1ze*Q)?Cc_U28l+=~P+A zE6`>Rz22`^_=h)Gx8Ey1H{S~rY|_3cOwz*STfCpgU9kV;&U`y~ZXjP~C%zpzH?-RVbA&aqk4NynakA5HI(P&? zyBdE6?N{BzcVohX!51l9?Ta+Z+Zlx=U6XUxdNU(1z7)Fb=~*>IbLb$W% zCn-M6Bw4UqXC9tN)SI4lAY?w(1wMoKN*mBnH@1yK$QK=L2Ej^(kZEdCiTr*x_7Y47@B3Vc^Gt+bp~; zF?TrA_}uGa;9Z1uTZrkSnTe=%uC@F@{#$(FHU9Woo=w_kL5R)Qd%L%P{yx$;cpbOo z0b`A38{gk^r@w$5>OBCHxh%&dk9EB9J~91Cj2*q}@^&3Htwu>ydMYg(9mdH=A}m-RcKFyyDJXOn5S=$U1q zM)&sTK)Bvmx=m(EpqEAb&RoFPgWNFO=aiYn_&oxa{-&ze-pr`@5f~zKzjn(7@)7p> z`GWD^^e-a2QO)0n?;>+QgN3RsuzV7>t}L$~ucY{}aOPs;l3^^bl4rv8L^ZzNxTQAo zCX=PxjY@n8)(hpgSN&gD#D^(nWRjW1nXw#tEWASOBY!rwH?dZ`rIO#QOA>b^rs5eG z7%^KF74*8?T6u!Cr!z5wt=)Z&A9E31Y!JuH2?Im-%ln7k@Vyx7Lf#U#cLu#&C0o4P zBgJ0Df^hdF|GyHho@Hsk)l+;QSXz%y0j@rxzGBu1Eb<>8o3qC23BW6SB^^QdJj?9aIsDR3)TgGTK1CX5A`8C-WF%?T3*{YL32 zWRitlXG>?iK0&!h_y(Cy1%jQ`Hl4X`I{O=YZeR9IVEeY>=VW65r_C~Ox)%!uCfim| za+m(B@t|s+(3yKv=#5?89{m{9cu~TW%ChxN!cA)b^up##<@e-HkBqvKYPfo`MUj}V zX(}ti{J)avqN*l;B-6#Vk?AcNs*=VA_@ykLi(kreRsCaG-q->mhAGbFHpCQLa(pYe zpRpMC5L3kW;C#0YaW4>-a(z3gfF+!35qVo6>J9WwFMbc1ZUp3gB8(nfTF~6w+`bnd zVkwV5N^$Y@?Fus9oil!XMwnTX&9;o4ooy%ZmkyI>DUTnZ7rb9*X5{1X*tg_g<@tIb z9J+!Wc@u|TI(5IvO(tmG%zXG>WMcXr>zLo~yD8?-A3$+3yrg*Y9rTO_=ZO6x=9EK9 zwnhe@A?v9|>0>%`#knf3?mzZ7pU-|itj)B73=y%t)UdZ!jXq$bfH5YSpta)skV+En zDCANR4#O6z3_3RBEEVBo9@=sEfWhnNnIN_>}|5aEoLo1a36&*BRC5p&AZFkihNwxYcd+iN4CUt+vRE~XqU z&bh*v2l7bh&*B>S7e|BrANA8>xf2t6b({~@PlNTRUa|bv zcRok(&ZxU~jv(a#E_U+UO(E}0vSj^YF?Zu}&n4p{Wz0&O`|H@;vyQTy2OR}{HqTu2 zCRdxA;UwrTZQUm5F~8JZR)j<5bEXh;eUeIVCk;elE`1*1UC1L`mIw0)?*fLH?JK>+ zZ!M;6&KH+t;?Cz0ZcTDQ@3q%YCU5Pxcd>hwtH-*A)U0^eJ#E6HuE4%mo8)>Rs@MSi+5H&Umybcl=ymc|^ zX$AabTZfw2Bji4~(aT0i*v%f(N*F}3oj~TOQkz$J0pOCXZTs&UpXyAu$6@Q7geB!< z%*R%kIw#?w@jZX@IT_v;FgAjG&HsaZ`FtC4<)e@*pUX$&H27Tk@r*F+8y8({AU`d> zfnq(tdOcuY&a)qTOl#=FQp)2Be;Z}9?J?=>-u8dbKFE>JkB{x<+w#Zt_@wvw(^nO( zqk{aB$un|9V$9jXMXN$jDaVd2$YBkQ17} zhqqP5OsOaSXtM;PO>Z}Vj{$1{^$cv*b@TUk8*Ka|D#D`fGVOh^{zUhWE)lq8E6 zb)LU?B3Ya?dH%qhL~18X>)^Y{f}dha=Xmnm}eic>zp9`lZr$u<3EXNmk$N%|Jju zWqDQx`+l~@nol+^$Yk&z$b00b>BVJ2xRAwaCstuE$H~?$UxIvn{%(f$L(u2pFKF~q zBo|LP1{TgYmQTRb$n^!EY0Q(7liwnFp)o94{Z24e9?JvbOW;e2C)jsqTft+1{@(0O z&ij8`mTK{qEESRQ_~TrpskF=ipq02YDkpmoxGj9Mk!?5tY9B$%CqQ=Dw|+j>$i-g< zAHl@fJDD$h49Zfx`48;-@}JxHXZ>H>_x8WF@7)3W-Zl2U-nZ|a6O@bb-`n!>Tef@| zZ24ud<;QQ^@(ZUR!wa_MRk>%&AClq8TQXcWGJO1(GJMpM;q5#jpDRpxLgRyZLS;Ko zC~$Iy^+tIdEK{5B%<;aN^Z9CxUZ@&=Paor}V_C>y`2xLqVpT=?O`cm0>);Wb9X`JK z9&yWZK5gP%h?})J5}>|4d#+`|@%eB8qImD!%`ta*hsgt%dM&A0rl$;|d9js3i&HKUIoHD;4eY#r5+goj;p!M&_D+mr?CMA-hsTMm-=mb-9ywf5SVs)HUxMeR^C+njNbt1~0@TXJ>kSo5l!{|*~D4ECGqV69Yx zwVF??7@7k4rUS$YQ{a4oYXS!N6uwin{v;Szt7;sr0N)+>e;=fJh0!E_RNeMDhcio) zUu92D+lFuDT=v9k+}AwdzV7yLUkUMV{g33M9M0sRV@qn@pLJX~qWB}p#*vqequuokZ|U!#AB`LZ3%*Z6;f`O>fOSk}&ZD~i9!z{5&5 zXzXpH|Ah^TbGq@*UUmGle=RGMmaI%VvQh_G>HV{djtx2^SvEv$=77B^ZHS5D-ccQ| zY3#?p#f0t0P+R?~ow)o{Ojz`Hu}jt1l;tmM%6&}OsoVZWZ~qhjEOBp+Jcg?^2GhcJ zf}d>BU_Z3hSIHB72dVY!QtM@-`!4<{?kZbx*F77N@Nd08@a=AY>D!h63mi7Mm^$+K zB*^32sx6P>|5@zS&U*GHqS&k2i@h$}vDZ<+VEuoNy(&7pJRbt{kUe#9Q%4=#)bC`} zdJ?$Ml7jnFo&H+5s^Qrm_h;c-rv7xNzlK+_6biC{`1OUo@Okpcg(3V^Chw=!NmV}s z|6U8ZDif5ZtaD)`&VUY=(gEx^>!%pcMQaUWJQte+dJ%KV^`3+jgws0Uzmd@QaNZsA z-%zX*IC*fS%dE?hzHfUrKH-)fI(N%?z%l{j)L^n9&-0Apse8WQabuqr#EUYMkJ^;T zM~O%W1QzFU?d=D$wHN=;FFZTs7uNrcU-*EHit}&FJV_iIT`|Xy#X4;4)?ee44r8** z-(j*B2Qk^Q_mx0$^AxsfkiWQB)m-O)j7iG7 zn52C_a;slpl6K%POs5{-HV}nQY8|b(V>v{*65fZisUpO7aDEpe^|5&9170VjIOvnF z^+NvFp~o?e*?!y2O8UyqQS$Yoem~8kToD(yS z7OLNz&1<%qw%|@xA?9|(*B_>CV)=UNbDigu*T3WIi|?8E_I*BiFBXj5UiULSttKVs zhvmde4V{;C1^0FiqtBJ38aTwAd_!l-aD}};`*O6N1LxT{!kP#PX0md~gRg?kt;+e- z7EqW<<`)BAkn1drz;DRBWQOvKz-g%F+Ie0wiqA180B{bQ_WhRbuX)Y*e#Q5j`hK0P z->rcOS`a?n=(er9#=;qmZEBbojd@D^^8+XOnDb8j^8*(J*A4K`Pl;E}-rRnu9Oko1 zR8PB*ONIBB;r%_&J>}HV`#1Od{6OXhY(L-f`!}2yQtnPqsn#K|aW<1}odG^*r?N6q z_4xUIvp;@6fBD|?{ruVb`Ff}ash>a5oj?2E&fg;1`T2{w^M_o_|8o95p1$|*-c1m#1c4xM&yV+H0L;VQ~`9t(ql zAsDx8;wPFpEz4p5ajgYxfh+pz}Qwl+~DGb(hnVxCEJpID1D`SMX)D}zg2{@PJ?X?@~ z8CdvmLT#|gUX200b|V$!iyYGa&bMx)X^*x3PBBjW-R}LJ?Aj84H!V4(XdU_*Ptf}Z zg6b9oE{3MgW?iqKa-)vjD)+eIt9_2hy}GCE`g5InoYHdsO40bq#R0t4>$)T-hw7xx z86VU4HvS%m{=ChhPZ-%^|NUC^Nr{iDscY%@TYa}9s&iL>m$59QV-9*@VSj40b7Br| zGEKEoDaY8?8p1tWQ5Ir8ht3!o5zCV#tS$1LV(iBAJ^u=ijW#LOfhv=Qy5AJuPZQPp zN+sCGk9tqY_ig^RAb(EaO{Ka#a_D(weO;b$Uy;8Z?aaVJ+-HX;-h&#Lk ztvheaP6J09YJ!dJ$wJ){f7H~d>R8-b{2koU6>13$Zx?Dp_kdf4i8*B|vBaXwz|es;NG)K0w6S%>-{@Rig&Ef)9P5I@gN_R_h}fDhPG^1H7c zq;$e{a?G)KsK%jw<-OR{^(z(E796kgsNxzbR4+2B>qX`dO})t3c27SB4l8gPgnE(R z#6w++6Ey>;m9HuJ;Ks&rZdyDKK91Jj)4*SBo!UDS&T0R~XZvSD3%{mVzoHl}`Lpm` zP27)WBXUdmsD#NO-R6$!mb{G0hhp(=_e zs`*|#5q+P(I&ht5xM zn6G?Z_-ghyyiGRxuy`EpC!k{^{>yZw$6|N`=*(9DZ~28>-8)$Az9aa zXmk*^1IJB$7DKiN&yz9!+*&bC%GYJ#IL8`ilc2gR!}CWs2g%pOUR^v&s>||GMoC3E zz;sp=&&;P%h;686ZbTn;LrQ*{qJ75s8k}7B#^+z02hLs@_Eb{WaNoG-epAHr)_RmR zm+(1bko$Q5%l7^jncv@@j~4fzRXvGs5XlPrIMg+foqa4lS1#SRVE%1Eeqi_)!@82s zNmDbr=Bqqw>RjtB@Q6kse?*Y(Ai|lGY=SPZrn5M&{M;a~iE!i-BcDCzYS6jc`#Nwe zx@p4oGPioCkEtzcli5Di%-+)#a&b+yRSR)Eb(0O(O+_s;)~ScyKPC#|*k1E>?fqkh zcx{jP`pEmolu_3E$Bdi4uz!r}ZxIK*B7f(W>&C%<_Oq!Q=j*njK37w>b<5X{=cQ66 zNT{bNF?}cC|T2jVJIy zh~tWUgh!ShhpY#_C-F*n)jP}l5-o7MFzGvZ1|{+`pjP#>&o%eXPsrV|f! zY!SRNI>d0D=GurmamMG!GVFnUolGns3kri;3r;t65=V~oKQr!q5T8W-tXFjsX^s$I zio>2i^SCV?+HgbN{r5X8~UL#3|~}B-_0? zt!u>H++An>9a7Qzs%csJbqV?AGJ-gUTx!H z&bjUe)f*fK8}wdmrt!|tXJI7i*2UJ1n0vU_)X<0-Z?+TP*dI`}Y(VkN+kh2fyGEwA zUs-P(Y!K_BT83O#T7>sd_R^iz&&(?~RdsC+NzW+fE^7X!?3Lj56gw_mw5$Dtz7Orj zyH=f4wdOH?Mr}x{i5_i5`9XXM=ZP&mr^VQ>2i;x|nteb?lSkY7M&P6yZRz`ilkVPb ze2wh!nq_O)fBX9zYt+{+oBL;)&KeBon_o9*kGNg=Pa*_U`1zwaD$iZ}ON ztNoGSTJdK-UvRH|+&Xjo93bB^A^yCtbHA?h&brRqb2jyBat^)V_xoT#xyP8#6Q?d| zKEW3>D#zjc{YHDE*^dX#o+H!>y7Y5kI`3qD{Z4E1b>a8cY=4Z|?9e+o_)@riXAZJv z4njWlzkVlW^R+*pC!Kei{Q8|X=IffrcqaG9cqR|M)7G5%IXLUg!P)G;f2T;~YrnQn zI`4GStkqx(5^wK)Mg88LRBGAivekG`ZX7r}r&jccSA*WIvj)$e+clqLs4av2ccPL} z*nc+J?2XYT+xC89c^p-!K~3$SMQ6^}Ry2D&jp%K4a8&aFE zslTu4-j|B~vx47EJJfckck6ZE?MnPF-YrF*JB{(mcE>nx#yI~Y`8l=Hq81PLH}Cd$ zE^57`C(f1G9mH^D1K66oLl`cvhhV-^KI4Z=(OK8Wc7NYRwD07(IrIDUs@EOYRp(oz zw0GhXx%~7k`nK~euC-{_QEPp}BN6xVrC*;PU)?ts`!Yz7%vxmnqko@=?)!YQug{UG zm3QDQp!d0c^*&FX_c^6;B_-@X8rPsZt{c5St{IQ(GK-}j*HL#|UpnIg{$uRqvsrAy zJs-RGyzAam&^E83cd(V#U`Dhk%e@{aGw)Q>F#``ia`xkn}zdwf`#juy> zPV@I#%w=tRiKWczu`V8k(b6o|vetd^eV(JO_a(1Yp|67fH<}sRgE7ubij$)@1=Vsa z;-aPRQB2A~??jB@vaNSgKARG+bWx2ucJ<$k8|}EiduhEtmUX--)dWf1bWSn4u73B^ zHs2wBZJ*h2c3i5R_(^`zGn%6#u642q>+>h&Zqj-szwpY-5!@rePaSFpPUkxQy^T^$ z{FsyWm?u47Q>2yCguOjMoh;_vmYgHgwx5{$dQ+c=5Ax^u!z=FVA!1B?UbesIg0Wqp zK6%A$U46!_{W!<>hwc0topG6$4qfcy$;QO9=yQIlYVc*Pt4bxfb1m~Xo zsO^~j_U2W4u3@_K?bA;Cv|9s|WtTpJZF89gTc*aqp82z)!&Rt>Z#=DSnf>-1zH!OE zlYejq&rBNQ+i)G!huWX8|4ywssKFQXkIw8YlEA9#BOz_R^6xh6yxXwF!}xD>XYHyB z_%X=ukfq+Xku`Ue-tj&SSd}+@Tw$KFjTowU;O8mt%u^oZJk?#jeRvgz(&c@ zhT>4V+>1k9Gz+}wVAjp()}o zjU3iaKdZ>cmmr6;Iu2XbT=Ypan?o*npX{u`Y5eiJ*DMn`mWXG;&)WY}AIjf9udVBF zti}6Ke*WHv@~^%D`=X)q2%Fy&zxBWTI~$efGZ{P779Ds$Nk<2+d3)lw_gOtp8xg5Q z1lv`2bWnZK*g9I7_pfc8IF8P+*2H_Zb>i3cMqb5fPY%x`f2;G(w>p3Qt$z1TPUuV@ z`Tmxj{+2Bt=(#Cn@M-V)#BJ9neyw&LpSb__e>TtjtsXkx>ftZHRZk?D{_fxFvh!Y- z;k_nStc*L5>xvZ+!z7!Cxvbw#_@+^R`b2 zbFa;9ia53KYhV9fmtTjqKWf`ls@{7}$Sg(;g*>eY7r2+dJptA$N>^?povEv8vNt{iqlfEwe z?>_x@&2NX_oBH<`mw~efu~vJtzON=>>XSc9v3j&=%$Y4 zIqF!(nUB?H$niC^P|sD*k*^^i*lr`6%&pi?o7uVi&KP5A_hnUxcY$;GG}*Wl&yhiS zm&0D)x9hD6IiMP_GL~twafWd?GsHfO>V^IY6VI3mvQJ!8x08=1vZ0+>6*3O(WU_H- zXb1l?+j4z<>&Fb=ZXp(pEgH)s;%Qhnw&r}e1}}@pO3mzz6LpPT8O!%*Z?p{WK)7m; z)ztGugLm}m%s+2Yf%Eq|+*_jUaN(bmEYNmx>z}hkTe%D4dO+JKd6vzWa!Y=3Ei*9f4_03FMj-&^c>wD*AsC` zxYim@wzwy0>ZQ)?%HqC@_I=;zKJy^nyIJ_#7yM0aIZtptJVHO#=M&nS1^O6!n1VE>89tyJG94H^+oE>#Pe35rjf@W{{$ZacsWr6g0Lym z21_^D=*)~mj_jH1oq4XCuUw0Dzvia3)(y*~Pkz2>Iu%^Qb=;}pYP`{Y|7zUg-;8_xZ^oVcn{k5+Wmt2r{A2$S*F?QOJMZ8xr4dq! z+l6`-YX`lIbH4lVw?bcE*)v(^&gi;s*gu^M#_N5S#G}Cc3Q9}DZ!5-Xa{W<0?-+Bn zpgf`WI0VlB`wijIz=ulu03i9V$zLu!tYcY+lWg7nuZwAbyKX%$J5yXe>~OaeXB3i*i-vs9fh$P;Wk3d^R$N?1Na`!e~Ufz z{3&NX2O-#itC|;IGH=|fwtKCQ*)?|W>i2dpI5DR_xBEA1&tkm#mupYIT6_8r*WQ@d z+`_4{v*tqX2<7G&r(b{pEj#bCu^&Bt?3+LwF6555vB}Sy+!1SBJok84a0+BTmxeK; z(k|3d7msZu+36YK>Oa&ud1=_Y8?niiLhi9ZJUJQ((d4zv5f?%p)g5t=Ssyb}&{vX& z5L1evm+RAQinzUQ|9zI%_aOIjRfhP~RF3!VZ}*KhM`lSu|+t7n9 z9;CMsBRZ?@DaTWsIJq%mO8qP19}{9#q8_&s;5{+oj&kn4;u_}mw2G(>y|`n1BK}Lo z`)QT-ecLESThE0tty1I}s+$)Y|Hxij(H`e#%#~$*ThaH52FRcLAvDHKx;psPR^_l1 zrxoDc{=L&hc%CNiLgBH=cM?y2SFI_(l-rsTf1iN&Hrh%WhqE8VQ$_7DFTgS@zqe$x zRxk8>GQGb%J$8V$MuQJxYq|Z|MtpR*uE8B$QV!S8fuwJNTGyn*TJ`~mFJyH~kCe#8W zAL?l6ZC&J_6j@K}b>YWT4*TLKe?L(sM)H2P61IMC&vsXKLF0+q`RbU_&o)_drmxOAL%!EDdxoI{~5neK}Cf; zg@u;*eM0StCv8sG@%!wH6e^~A*b?{8@LN}=l5!xx12`xJbBeNTW-iBbIzPQ{obq=G z4{rz$uQ<>5YhBlwWzuQGuM>lJ(HQZCa*LZB*EPpA*k|_D$hFr$>R87q`DHyGKH|8s zF=BwRO^jW5>{l+uSM7Pebf}-6P`$nxF7DTsd(Dp_<#W~t?@D6V^B=&=>oTdtMOCPP zm(TnBPB;&8>!Ka`0jv=NvXLTOTfqi~u981ey=ls+(kbxrG2`X45D$oYHBXpq&kM#6 zd~CcE8RO+0$?SM1zJ|P;!+3ehohlMnfR~q%gpHJk*uqyM zM{T_PSI>>WXKFzlifiNm#3|MC zL7i6DJ58L&pOK$@K<&0d7w}=+@?1!qtNuPMGBaf^utCsUBI3Q{>q2B^!uux=vBcK? z(N4bH51~Cb~zHy4NG(0D^r)*a1!4?Os)O!1Nj{hv+&}hvC-Bi)K54x$LTnjCjLo?vx zkO0)wf!Jc*g!3ZfJa<95mH&3ofoGIscbz@$>1K{zyQosfExZfX;h5~K zqB_AD1+HM&W|{4s`|miaZ9l$$)Nm&J!TUPSag|w|`2ME;JekmWa?zY!D$}3qJukMD z+flEV-QHebqTMl_4Kt3{G+YuK6To>dbB;}T9Xi^sL9a7j$ke1c`KxmBdSNv?{waJr!DCZQ5oXsUq~N*tZ>GVf8zmXAIa0lO75LUe8#k6m=hyD zQtqUR!uO;)S*U>#Fk7aPIpmZ2PW{6tH7>dTXn}dfb>{HRyv(j+n!u)PDF^vf@iSHX znewTTe>MK-OT#gCxIe;KIE%e2PMCYcg}r!Lb8padU6IbcFJ%9Ge(s*n{X^%o+y42u zz=K>8_pu54E$P*K8kfYUak~uMk$WZp@!L6}i#YcEtvda! z_MdO4eO!QRn%ZA?+F$>Z=O=}J=ld%<{S~kG!teVV7W%#K@4nOD{Xgl?6tVFAJ$Cwg z{3rd53O)4w{pj@fqqSZiO$i*<>-B28I^p`zdQB(RE)T9(?K2z>>@M-h-jyvN!ZjDdU_#y+m zDvyt9B0xsugp-jSUAOc6sp{#`;pbNqYab4NGsINhw6Q9jmGf76_TIB?1w0PfK>1HqWSS^Qe}NA~XF2{LD~v@G}7uMVw{iV{hYUPDrk- zjac215B!n1jiODCx`<;Tj?JvcvS_^!wSFX@QU|$Y-7*+ z5PT^)=|__WlX6Pf@h?tJEA%{|{MJ(F526Qqo^^e`f4U)^WKK1T@Qh0AJ(Dot8RI#& zoiWtU%b4%0k8jY%bMQEh-3ReP&pjR6shd`56~>fB>nI_8%b-Sk0=yvk8Y)S7mb$PY zRlqn>V9`m3&Ob`=)fSXzZ)ekFXQtoh<4Sz(7r+h`zP5_BQVKmZO}rBR3AuULnKAgI z!NYlGXYYXp8#@0l`yY-)UI9OX=fT#S+Zpjiqdvfb?ehnz!9gfTz*X2UqI9}&N@<_p z02?Y7xgy)hq;gKa0TZ}XdK`nLYsNYklfMx9$ijKOCj;gMKIveutDU$uYDV~&B%J5K zdnB88UN@Sr3i+LVu{m-$op|x>kPi@TgAP^JF=dgHjWvlvf3lAG`*rpd+5s0b4DHT* ze!`3QNo(+o;rpij@O%q?+9q~x>;l*Yp+kR!`H0s3S;&I|-hzCa#@-OdBRfhVHtrq^BcOPfZU%Qlp(@x-_%ct@9EdqCnlOoQI^mftoM%~ z9;Mi41*Gnl?m_JO(UM#i#7VNJzZ`nzKeKNLTgtpRz`;>29AlK@gmp1m5BA;xQ;<%A zk1i&jqu?{!I%S!Il4|1El(}`pl=5bqm>+YSNUjB%5RYkDKQjr>6whj+nu&NVZ3|_YM-bzTl;>TSePBu}a8&vjpxlo;uf1PvWgR~(8v@9FKUJ)3s} znZFPnytUd1t|7$dUM{LB`(=ChP3tE{uCMSp8(do+xLw#F6vN>7!JIG=ksfWv%!i-T zTDEpXxx#|#7}5INHnHfb+!9x6ikKaIx+5QpX1$klX!h6Pu8tEVMy{=E`<;T1IWyBe zu2by2??M``dH7YEl+Q=#?cl}Sp{A`aln!y}HO?Hy#AoEoYsJqOggvJ{%(?Er-@`?S zyDZ2)Ujtx>nY?@+H1!=G#O)xHf6ub4JGU>_T)LWIcw*UlCGPg zzs0H;*>>*ffO1bYt^r$p*3KywMF~#J58|C05l3RlI0ny`bBTKN!17XDkLCP`^EekZ zCXxBUTewB$1`qLFzK3#0b(@ov@aV`b{Q>+%A+o6h52=q$gNIbkeVlYw$3cg>;jx20 z-V?}4>6b$5fjQIarl(biSCX$(Zcr0Jh8QJZqxuvl)`B0}x`=fmhxn!D`qk$lk0c7% zqA!B-7lws6u~#B)@#)$Qr>7;p#(gfY6OIowd|pxERHF2?5&ezGQKLpf23&JZRqoIpza=YF7Gs zlM&(QCJUJf%ey()zQRY=Ps*W{4c5J{lsFlS$y{c{51Sau7fi`+@iBwPkk=d)G|!JF?*q>f z`&cG8@T8F+JqI41XJgcp!nf*)c`?*A2Oi`D$$9vLaDAjm_DZ_1p!G#-4qTKYF?!Ey zqRqGXF>rojo+ZyS-l?h6tJOZ=qE>$XIp2fdg?TMy!?)OH8?V58n7P^^#`%Dl_%w1O zue;#WdmMsm_!cQvTk|c>m~U~96Qu9g#(0kT_B`zdzHyul_re8!&#|>G*KX?hLrFh4 z3Hm_~Ypi)!=m$3JqgG8K>$y$$_z7_q{6Fo}G8wdE z9>iN_tE`S8+I2I}A>Y^Y@z=G=I0nvjN5}A-M7uRLe9V6Za=#1~ihTd%J+SD~d^v{U#Q8BbE%;HSJUOvyZ$CC<2@FO=atr~L!m zQ%Ujzw&9?D9&jS19<1`{NffmllC{h#KDIEU6|X7vagS#_Vjj_`mLZT!XDo|7-zYFk z)b3Q7CF4V;!S-r>w{y(>x#xAExlJ;*VR&v!mxQ`M^%?h(FbQH;3c>Z>PpD4FY);RM z#1`@A^T0VO6?`Rw3D@nI5x*$a5bN-Zik`59<-56uL%wyHFX)kj1emZ7t8` z(Bxynxb|H_^^fK>UdcK3#50+2jjOtDL6V6j`(V#oIEGNe?w9+J-$Bl4A5N86`kGpy zw!)J2x?0XcCrV|;_yg3OkGXd2DdyDkdqiQ5zD&+u$2X})0oU*SYfY5d?wnQeIdft!`*DsZ!2 z5jQJ*lVy^M4*;m9(BrU9aSKd$e?>*IHZ68CEqux#jQmOn!%o`MY~K zH*Q()TZD6@YR<&J>JKbFE#+U{M4>I^mR^MCywG!8cn;-t#xH(MYs#BE4Q(sRd9=Q5@(yhy#`53V%O2YH zIkwSv6HRpiwj|HgjPp=33pu!Lbj^{0KM?2g3_b;))0m0gNlX5JkDO6a1&oZ8KgaJo zds3$n>O9X6)(c2~!TT>c9v;j7DHC}zUAbi#4+8pL_#R(W(OTDnG0P+XjK8uoXb zP@F9%8@!YkEu344c$-OZ27VUj4Q3L>O^Z@}5c3aW$GZNpm={v?fDL{%Mzz!0s6KP^ ztB+LYKI8|*bY7&CchltcY$?x;^B+r!SB;}J&c+edYXGOG3;7?g4}@)eRVC%_&K3Mk z_E?k^YCB|8H!@UD<#wTFxCUDU_7(dR2e<}){S#ahJ*wNIGUNxKZcjB)is`CM{Gb@FD2cyK=;0hVf0Gp77+3L@Em2PF4Ejzx2X_0Wt|5PO zT>vXs9+UyL>JUuS=Cg1^W6e>Y@*i#y=%Tm20yRr6*T z^4TMX+~F`OC|3-!qsxi$VAE-J0=v+2UWgR=Gw@YeJ4&dYhv##jWab+0Pj!&I&v;nk zy~TNx=l&7z>vY30cum-YR=)hO1pWYg_su=1{UTNCo;7gN@XKw}JiLCHcE4 zPX`s7DAz7uQGZAH{e$y>kT>+Dl?P;m`6^p^K)9d!e@DM5Pe|Mfod|uuE#%I&{2aC4 z9D8s=_U>)P_W1!H`fw+P>_e}d+=&~+Ss*utj7zV%m}H2P_7Q*5$R8Wpg_yQ{=r_#g z!v3b=PTX|;oU%tThL)dmO?El@g6*z$dW!RTNOj&JBYfPkI^Z||W$w=(`P-+ION5#_ zn(E1rpFMxBP`7Pr7wa`_;HXSWao_fzf@iFU_wY9Gns6DJ5<}wXKn3dFa3PO3x!w8s z3AF&S4X&B!c$1%IVrZ9kyeeWvKA>ciXY_4mJCm(Z1M-G_1J6O<9ES7S2|Pa$QRCCO z;kkci|2x|gH%1N^PaWzM?$t+glv_kOH=J8Eq&TfXjk-1G-1Oblh%4#D(c#=8)H0Kd zCyp|Hek-@=#^dLigH(}?U7|mIhB{>nzt+Z9I@B?$Yp%53ll)KXFoq__Y=FFrU{}*~ zbhEw|%pW66y}oi6*4J9?^ofzrA-C)VdX(YZvXhWo#yNf;DMt^_vuosp!S)_1t=XqO z5YsLEHoA$|#~3I4=XYX_ca!vPJFE+PEH>2;aTdR)qC#K@37u+As)ogFBbW`8KJ_sp_pLO;Z}t%*oQZJ{a#V{79-RS*$w1RH^>v@$a8&Aj&~G< zOB9q77jUs$N3h4ZjCh~ZalU}xzjuh!(Nt7_t$OO_!tlD$z%oR(^gghqlyl;Hr}4l~ z@BM=r;SVp`{>Gli$LKur?Nz6}dfomJc$(a5yklbRQSH~%giAT9>#=&?c{6rmWEKn3 zgJr2_jo;A#lQC=i9igu(wGmO43`NFciaTS9TVwJZ!9&8NnUwYmFlo*P*)`U*7VGu@ zdOzWLIs^BuVZO@!@hyW)!I~H4S_iyI>;2Bn*B;NutTP|81M?xo(##gzK8yF;XYrx= zyE0$BVl12%Y=CzHkR{X9La zTHj<`ukno-W#so8+C?>{Gk7gd+kTm_hh-sdxCRpTubrYkFZQ1ky{V%6TuSkH;C`c;tL9SL^)!JCS;Q>n7yF`tQebY-VuI8IA)i!nv2V{eixH7V7m4 zeXi(!`?kN2>%IK*?+y88j*#QEpffoqE?rscRinVA+ngMSv2yv9UpHwZ%d@(M5w)qn zhd#7dVn}BJ&V<%kuqHm!cxRF$@NVXpnS3A~(~A;%iIB%sS7O!J>{s$$Ts?xTL2(@l z+gzhsS~yp(n!l|>t?B3o>#M`DJvC7Td}jUIMa1i|_PnX_hR&o1JH&p+nQ<$w64uR< zR36tjo|PgU0Jyoe(|TBm<7YZIpeJc1u8a}D+owkM;2#Da@5&7OeVVHbeqYSf5%EgO z-q6anPh3(BZt+c|ZkWltQ>PYUC$3Dgcqc|S!u91#UzB`(V}{py3i=kbk@I6=xXmh) z$9c3C?@_}t6XU6iP+RiK$n~)}wF+&bmxUPc_1=k#Hgp|6>mPjmCUR8!a+onM;s^eJ z;!Hf||0h1hBkm*h^)IiCbf3k#PkoGEHsZz7^=OLjXq^3HG39YCc5;Vt9@G1Pb2D=M zzCCxfuph(;x05^6jaz@f@g08O0t0mB$-u_XF+dZ$pj0DP9}M zdAPFcDr$T$g4T{^zxgvTM3Qn~A+P)7v-IB`v3AIkRPM}4%V(aeUCRzxie#0mCogw& zlGjvsp)IJ!3QAb zL%r?z=(Vf9wfg`0X8*RV`=9RjA5;J3!Tw9db1;`hzz?h+#KuhxY>{2S4~*w*FJm8y z#5l*kp56hw4S2NKrtK>TTrUldK)As5(!vp3QO;KjM*!Q|QeVg&U>w1UFpe2)3t(#} zbGCKev3L?gu7%;TjO;gClP$ea0vH4G7aO7BV;O3#uju)VZ;9vg>DcRQgi$NRkoN5Z zc+l6BCv+<|Z9C1%9;%G`eK{ zWq=$PeAjAhq^!?6)TZ%g-6x)(u~mgWM_q9vfmtM+bjWFn=vxlNDaR^EKXa#9>v>Yv zbrPu&FWoNdR1A{9FkHPqFC1xJW zO&o2|=hamk&pjgyIq&lw_&>yi{5`zx#*n9c{%?v?-Q@F#LYy0mn#06X@M@h)QRT$3 zxPBGu(vbuf#lNp3o0d4A;yk(+MK~XfuHXOmuEFEXDw?Z}SU#Ft3!NCg?b{}HwRU5# zvx2AUq{a6ZWvI!#uvMjNJy;d>IkU2hB&?N7JmV41a8u|@#jp^MTocMR{&lWNYK(dy zxjSj_-4W~KsWZC+y7DKNH2%4VJzSB+cruc01^@Vv zxx#o4A;<4lY;FbkPj+TJ5_Gm+csvqg8AI+t!^?kxH4|+4xXvMXklz0>W=tA$evu8m zcQ!rvvne$mtNRycQrgKaA^**o>{qlW4(!zWei2u?Y5TW0Hsr76ipEO$k-!!sw-R|l z&36_FY{)ua1M$sRZaO#%wL`u`*n^B2jTGe)Xnx-22pHa#5-G=zEUp`VpUSNi>vYIf zP|S_uIQJmPseXN)o$SdG9SQd&U29)?UK4kCUwxr{<>Io=rNP?yLUZv2{BTB?=!k22H8H3!oUdx@ zJ$Aas_0MMt{4dX902z2ObrS)O7$YkCMY#GbNt&}H0`DDgj|p)BY$n#;$>+)GEBsF4 z$R{1uSiM@-(V1v>l_Q^?6Gw4mn{!K4)k^jB_`vt4`d}oNai8rKr)BW<`7?L6zHTVqs_Ue7lxF9)e_Pv~ieUG(u;W_A#qukmzj&rko zpL~w&VRJ7$?v~G?QcIt|GsibWUUQg_SiPS6ScSQNIz0FGU(J2`tGPE~{Y19p?H9_= z(II|T=pV>|Nt11nWR~lQ1=+XTpZiJq>P$B6Gnvm#JwtqMREVXunz-$fOw7P-N4YVK z!!*IKp3J>p{n@z$G3F+oH}gDRfiGv~V}^xjaJ@^~dwf1qP7E+zO6hyXhao2>^;p>@ ziaqPG4XDXPjf}FIIS0#%3K6J@dP@IEZs@8P(#9f zBDX$g?n8M;_PSAG#(pOH`#oYXit&%gFAAJ%As&h|s$#ys8EQ<>+8p|haXg$k>XN?J;WiHyeqrulZehE3JukVXXy6>pYoo7GC z1^dSqi1C^>&!Emw19FCX=^^(%_=lI|A68p@_q&ryJcN0h(0A3JgrYUE@oPe>o!pQg zBDvS_MNH3rJ|c)rs#IJN)Y7jOLPJ=*b-ZA+f==F`sqV1OA(jQ2_u0CX^DvEx;OBd;@i>zpcUgY_@OldA zWRpTH$JV%MW#&fpN!Dq!q4}U%G>Sf<|{GSuffCdhcbup3)kMYkNENL5RObk{ zd<@Y6+e=hctmu8vhnr5_WW&!(kHrs5@kD&beiKiuWnQqY_hJOuNbLJyj6sctgYpk) z@w52Qe2~r87tfE{Y$oIzLVP1vW8@Ee+rEexCrr6L5y>y;fq5%$yGPs-Y}fXXJGXDs za!u`PV>iqxn8Drze?Rg5-?V%?KQNvGx^2;S(2ncrUO|_GBS%fsI)B-{X|AOY_=?i|fd@ zkiEnq|0pKA!hEk|zAoq5t$shnRR7iVI3}?7ckIVg&jHl_yP?`nQLovPy+rtDaa|{! zcKb<#4+GEFub+S6pWk`ki2#@MrhdPPl`nYzIiDNs>&ASgZU2qEc94-vJoA%yer)>z zVtR>KNSD&Q|>f=e{5`)OfZ%QHJmf?qv-=a0O$wLp z248{MiGKTU$o)Q1;%D23zd^snz)jn}A)H-(;;6PV{Qlx%a6i<)2lRV^-}XjCtHP{l zZQah@xT!_9rgd0s-Bh*zCdp?KwcC+BHE?nBH_S2jOYy$7OS*mJ&PA&8ELXM8SwGfK zA_iVi?CN*JZ!383N4yqXvkrPmUmVkSUUt4?G!Pa(x+wha z-p!2ONA+urpe8(J`@-(RG@A(u5*ql4*T%$8mzk&)_7|ju8BK@C9G&;B z@LnIA_uk<52in`<^(qK^wRCFl+YxUUF#pgQUe9HTK8|bIEyV3Qngf^a<6$$`yC!|C ztcr~ML?b;TemRkkid1m@Y6o5njb}XL{Y&K}{T zv2I>!O}ui*xyvK)eqhgoM}~YY@JDF)0_Z%ii02M|fZbjVFS?e;g*2pVJK-`#F<|XE znj7st?4Jg+`F5K#Nt)}EZDv!l2 zT|1sSv&A*k)Em)#hIwTQkua~!!mXK4=7RX^a=P}J`D7MUUrte<+WWU+?2+??WZghp%y1%i_2k62F|;wVqAq zNziTh**|cf8nm7b&ZLc-W}Rn$6sUy)4yy}$O}ulb4M+P@_UZYy{SH*;WxVV3gPr;$ zXv|-T+iu;AnPMm4hMa8aIb64J(L9IWdmgRTJDPvgQyjy~bz!2xCozJrXyHz8H{u)6 z>{M%VyrAon>aWoC%iFcO`ySICy`8{66`6EIsEjs98IY;T6Z(cf zQOKjH3a(wTc7nOfFb`Y!e6hC1%FNl9{P9;<`{`?}J#iu+zx#ye*t(cwbFz&WpjczJ zhZiv5+`)6fJHVV}@pCjYRR5>Wy`XwHRR5-Ato?2&h_fV?FQYOd9s;fBmo0q2w46_& zYnW(pEVig^w5EK!N_=5HDUa3K!6;&XxCO2sJT~MTsyPDb-CDKjEa$!##LMbA=R#Y- zJV%9?dk(aKy`6iWBf_rLc->hVIFHWJuivNjb7a{(r^cveZ?4O)9XihWBQisjtHuF~7&%9>2#v=D++C z%>Vgs-gB;Y^5J3UeQ#TFYShf*GKL~*FlcjLhZ7y`^fCDROoVu48F*_)G(XT0cs|T( z7x-h5FSm96dyWXlDK^0;Q4;4=Vd0}Y^&Gvq2IrKTH8>2cOOFGp#Gpv$dz@1voV&5t zX(mb&Z_>>6PHJq`3;E!&k2Z$q@&B>+t=)<1+Lk|Pe+ZQ#wNoFLWB~#U5yq*IZz-xu z7$*TjQV#j`J?2`HZAkV$kK4EJ>CwH%IO9~XWy^Xjt>>H?^(34N13d%zD0Qwx?RRp2 zI@|c^vO4y)XvJ<_bDpe@attJAWLw9y3dGN1t`Xk1T1Nhdk8_P&2e^STc61ZD7Q%X| zxu9CHqd_}vqy&Rv!tWCoGc9L79$iE=- zK`pDMZoV|I5#`N@2qBQm#L#T0vVSwp1{|4esjYZAC&jqyLgXd z{sFR%dFLia`IgygXC`|c)_5z|U%p%7?>`h`Zie$S-Q>tG%~{?q{wG zZq*WxLk_jSv+gr}Vy>y6gYVh5ld&&n!?l~hMwu|a-k$YR=8VzqoZ!1ZFyDO#*HXbJ z9dnIvQ8A7R&CLfMJ*pJmX#`N4VF2fBxOd`udWRor96buUb;@q&c7k;QUxRECvaFkyNmKR+d-y?g>aE`=( zJ@*sJw8X7*f7RNrA}@k|5O5WG*~#8bZuxhe(fM&77s8>7`j*EABLbL~`apj&Ua{)< zY3Hba(;!2qh;w`gm!tfiMGQL0OI^0+lk0GkllupP>ms?bb8VLq6YZa|$AYb%2&OXh z`}REVA(s-t7ugGLKS{ow0d@ol&p77bn9ClR!<4d)T6q0NRgvUeui0nJ;UA0-p%}Nt z17l)fl4HDw&0S%yfidwLF|WEFOt6Rz^Q*eFCC`<_Xgu&5_Q{8s5<|5;c@}hj#k{mt zdW2uGq;XyA?tuX@SR^gJkMK-|XLk9S=@EYMJz{WQ{W$!cbny2j#^n>|OQ{UC2f&-~ z<4HAM)_-5pm}6fBky}*#hQ9>ofl@2Pa#h}77MsB(aB^B_1i4?Xcbwa&82hG;k4%Pf za@v>^6!>r(%n4GGAKb#6&>iNl(1K5a`CB#PX*w8}su@Q$#TbuTb1_E^bf%g%y@(-Q zkNrGgb~N+H*oW~w(?t@oJ4z29cZxaa5HL1|ssMk|9jU zz&$q;Kki^H+1}!ueiL86X6|6Vo+EEUu5;c5U(eUbo8arSi61Zddfxz-n6EDqU^4Ud zUyRAj?Yrl+m-pW=Mj~GaH?fiH`*YgM`@gLh`nO#Flk=|zJ2R<9p`Rsiw)ws!U@O3G zWvpk%If*^@bAJ8t*?g-mChu^Y6vmm>3mHqz`U@olY^xvt!u@va-0GjcA8YY}&$V*M z{O-UmU+Dt5(Sax0eW{jm?wdZntNR9L1naWUrvqmI;=Pf7o^is&KPvnJrfPH0f2sNG zXTmR#5B7n>p6$2R8Km3-v2c7x%a2H!pi^m1IhCb9B`EP;(Z) z8M+s)1-v08XHLMUr(O#Kb?^ILaJBm7kxpH*uQ8+YNT-2c4!L2hgLt2Ij@nGZd8qh2 zoFyZTF`Tb<%poHF#YxZ&`auWjyLme&CtdN}6<&W)X~A=$4f}j!&an8)5G!K&vN7k8 ztK?|BY&~8J=D8s48RxbhuRXBm%YLQ5)w#ubMB@$>*3{$m8!~XFdi__`Ki{gK1F$gd zp-Y%MaAlOnhHn=h@Rj~kXLQ3kvIn|x?zZEW014!K(lDm!kxrvlymrz8HeQ>f;Vb9^+L>J0|&)8mv#QD>EH^AQ4Ytb{P98iyAW|y41s7*U}5x9`1 z`a2$9aOWhZ?_N_!vL7IGy(hJw;Rbzq7?4Y^f4y$Ms+;bb%%B2)UZP##g9lNKnJL)z zTryRUHz7|-0Rt}|oY9S$YL{zW?FYKrj}zLn4sllX zUK3v$?d?eW%}Dz_ctIxej1J>CCCpopy5GS5D!A|RZ%umUItxpxhnz*qHriZ}>c6-b(`6Y31vih=%xHoBfo|4V6=Z0^HZ{wQpA}5wK z-A@twz_m5!DU#KjuIM>te^)ko%%s0)f%+$`NwUQ> zozi&0?R1Xyh~INt+~ro+`)hYUObeUQsw}YHXcMpXHP#l^+#S~T%Ibb*i;=9?1Fy%m z)miIWKQAw=9}d&5=ya7IX0(#~9&)Rf-paatDBnEmdWoicUW>SP>#&Bm_rqys^=>{T z)&Wz{4%`(MwE>LzWJX?Fs&;@OwuSNfz6+Z_bqnNka&E6r%wWMewZyTobmT{*GVI;$ zPsSxQgAMEq&Hi!YDrd2m(-HK}%#LpOJbMjwh&VToxSUhwKHq!JJ5!J+diVoA27CYM zHE|t0YjsoRlOEeouj&#QpS68gA%{Vxx__Y7kn7~!90AH9W*to0%AfX(>d ziKW|KGFu4$IQ(*$)2!=Nfwf{jTUzW;6F1d-&DuHfHO9%rHSbpGA*_)#&JvNc_d3Y3 z;*x($j@E`*$F(=kcQ_O?CwU8|-=R{%5Y8h?gI)1czn%l(s;Vo**=(o&$ zhviv#MqwehwxcZWf3)ps$kqkc-Tl3$XRG`C9D7mU>*Bpe+rsJ%?#0^s&F{oJn&+ly zi*Hog-t#^97RdD0w?Lj+eV)rTkF)1+JRXE|Vu!Um8an7BYkA+sk1rh7{&Q<@t+1}k zt?iO$`Bq|24iDU>{+`jW?xVr;ZGk?>-WVTfBlk}8@?w;gYtR1o5prt^?4^yi+WzKq zC^3F~krwvC@$ad&JKi&eE5^4e^0wZrKA&Shm%Q$6#}*~uJJNPj9_%O7g^bYu+bpy5 z1+b4H4>~r<(B_j(zU5_MF8)Gq_-vE@9P2CHIzQF)Rvs|_KhgHZCVFm*9CMP{^)|r? zJn4Pq^CgVqBi2S)KtA;Go+q2!hx;xkl&5@{+bs3df-dg0-SfH{^10f9jxfyV(>=~w z?zhERx#F`vnf>J0itg3VQzj)!)fuk)1B@Vj7pn8uJ8TyHk(`BzqUnB+8k&l-}UuJ zzZ2dczMXnqJa23hp5HabZF-v*HuUpG@GWC|jGKyjl+Cb)U*_-oZT_O);ok?d;yi@r zIZta%U+y!z4!RiLlhPOm2m`KIvuO$p3|W*!hD z{x|dFRWs0pNS~PtD7Kl-`CXYY&AS}qpPkM5Ss9+i*RqyAtpp#Ib?JiG=iJsA>^}ajwS9zsFw#+naK*@0UFP&U(if}` z=k_}4+|X4=a*wmcu65o&upSYvEo_nTIesL|w+?#8BkQEl8-^!xzMvAiz*Gkv<(BW? z*83mU~$Gy3m!1?1XtzCY_$jHLmaXidQuAjYUx60e58P??EQ5|8G5h-iltM8Qr$ z9t7frq}Z-Oj5YB&DRPEm=fU0qW=I0ljhx~CIX4bxH)-IqI12in8(UA`6L;S}-;F*X z&cWw9=>s@#hrMKGJ$x#r*7>Rey5?A)=zxWf^Ji>PVE)QD=cMf#b8hwjfd04kVZQo& z|LB(Gav}3|hxzJ+bymnb`m&Z}P3*8HQXO;&_%hhH%Glt2uAwSmL&MtT{SfX$Hm=vd z$-sv8iN?3v-pqA|a`t)1nw0r#oD2H6!JGg?MRau5*K+uxmg2{Pt;p+z%*d)l*|A%^ z-7*)GyQEsT7n_!AqF|e+nuzz5)DQ_iI`^4ehvUl8j_xUK7L19N2w$^2=c!W0iSF2| z*YxO;W}q~ZJP>@J*7m#Pv{W1H)q%+;iJa$4J9m6fUz=b2{VQ5cbNzBw-bv4U$ zS?^OG%b%QUdeV<-LocKx{*<$x@P*9Ea^1tYWck#{p7n|Bc|MgrvUc0Dr>JF*J zJ+f|s>}jvVoyeL)lsyl%ju+(%bb%4;OLz6!I*~owM)ssprtCz=%499y*0P7!I^JQW zPrKGyuEPFR`d~?LJs5+T{e)E3YpJMZ&&W1o-svyTm*AQ(SMV+A!v;CZ#js#|emwHX zQ?~c8{mX*?c9hvCt6$*z*z-A}S3h|jYkIQ!FtbJf+GbYlui(e9xA_XVq0%?29sK&> zN2Q_Wn%o3_e#EIl-lf>h+I{z`v8lmnzlCqu)30hAFa~pQgdpcSVV*`p94XA%!sGmC zba>Vs!<<>zgIUy5M!kz3pM|0mg){$hHLTBSn<~GDPP{5Ji|^vEz<1dL^kjUqOW~u^ z0e_QR1>at3we8Zbwn;anP>*Tu@%{8u1&ix3Yfh0p}p@t$HH+mLC3@cu!a} zk7D0?wr}G#9ep%!;Hh1-QuarDjLD>Qc}i#f*n0odd(PiCi*1`)b3gN z+mm1l|3JnZ%ZmcI?eNb_{URBuFO%H;R_u3*zk1> zF%>SRipLGVy`fL|E;sfxU&5_X_}g71b{ZuC=2JAU_+Mpj`?^&Ni0-$wo( z#lJ~qG_rc;flCp5O!eCFh;<*Wosm_G#*c@-tmqro&Qg4RkUP}F+Bt{(h-2e}vgULwO@NZreOjmlV0+|i3uaU3B3SU>XP4Z$uiMwjl_+1c6I zQfZyk|A8 z`(d8qciJq+H(7;sieMXbj^|1VFPrhYK;HQ^#{v~%fzd|FCbb z9S8g{33afqv`UuxlJ__E%^0Y zjv_V%YQZMZvx6TU{$aVs{^|0rFt=C_pCC(S8`&!~UQ%Yixtp)T*{i`PWLJSl=o{x$ z3STkj&P2J9NZonQIva7uOu!Y2emK_QEKROBr-yS|k%NkS_yMic6tT83=gvsK7mPJM zU+4t+?6*Z)Rq&a6uXsGH6JF7++S|7Te8Q4fGm{!J*3!jk+-Aa=K(+sJ%_GPp?LtbGe(dkMXbp|I-!wm5b4w&wboqRNijWVwmwW zQn~*nFAx0p-s=ARp3m?@xF32O+nwe8Fy-eiHI2%PEaO-f{HF!&p>>p6Dfj7_4p}#{%8QKbZ zCiM??WC{9<5xqao4at4*jh0(eAVxUi^J2k$w=5ICU0csO(|$^0=prffRp@s^jv0Kr zW}Eq7M;zY~JyqVL>51*~wbx&0DRS|g^#ndkx}2X=pCtv(h%a(>kMQpc`S<>v-cg+B z9XjeAuv@`K4ZS1oCHinLoqw>GAlI;$aAro`f%6W6j>0vDp7E*ceMM3?uccl&>Mw#D zLuD-kbdBjq!=rqpgym|p$Jln|SUq^Uf}B>calm)`$};T@JX}WX8=D}H34a6Ij5*s= zx9Ky#$D|rN{u^@p#qsmdm(P5Eki7?%+bI?NKJ~)6Y_Gx(mR{nlP+yqy7PwbxVNg&jT6pGYt?$nxA@k#T**4Soh#^$KTmoC_z=ryul&M)dTvR-gOO}otrE~xMTw(4aQ4SC#?+K^`e zXIoF5h52=$JNIM#2LI9nxV|-GT=y*DjGcr&Tki9Q7Lu1IeNH7$(vsu@rnS9}{!@cb zAT~XJgAyAd=3dHoP*cw@?X|SGNA2-F#OwOxn}$2&=7l*yZjhWaFO`lsWY3d7F*n^H zzmp%@iht=h>Bi4cv1~^T)7P*LFUexf6R%zPJHb~jwTFiB{PH~b@fhO{IpiapyGrt? zkOOrN8AP9FyeCzEvm=jK1N`Rsiac}nP58{jJ#p<}Yzot348VL3Y_c(*=cP%0a2^DW zV!STa#QdAzuKut8cB%%tGuV7Z-eC4al~>=9d;KlpoG0T|KA_9g1f3JL1xC9cNrm-Z z!1(SUzJ0B_R|&?+>I&=rD|iYD0`90bf5Jviz)#9DwLT-F{S)M-54NtIHF8PhCf9;6 zp2y-;ZcfAb^MTxC{q00?T+bW6A+spHk=u_Ou^WdMml;=(3^E&dp z6m_4+{o7L#eH5SMc{)DtjsKQ2*%YWBcu-Ht= zy3f49xfrtU)521g^+L^hF^t8AJskTtWZg%#+eEzA57q>5+2WcowSEH`%>EK>z4#FN z<)C6&JKS5j=CtM5B>wGn&;>i+g~tf;WFJO;Y{6k#xzW^_qhMOzTDKQsGo5E!#?mz zYCRe~hhsAhev;@pebI9k$9j_JIp(-Me^-NtB<)ja->%V+?|b<8`^ta$`>yQi_Z|Kd zzVH0w@7o-I-+~H*{Od&WG8;YC2i?2YV>yrSe^igXlDcj7jcfL)bc|Z&dB9cXIGe~b z_=z)0I0jPtQ`pCl3vVIxEIuR59dhvC>t_DJ`gdFZ?&0sz{`tBC-ow#an~~^-PFtU| zJo+=(;{Cke`3&6su?I(R4|(u1p3oJC>@U;Ejb)uMjXuf0(=GMi=#~>=U-|~Ttv%tP z87jJ2F#h-tiBZV+aSV^V$^?%z=%BdAlWy#J>vGJK$||YpNVuMH(h-00Cg#$brp84v z58>sqr8_d_R`OcwHlengZcv9xjbD|0v%{;FUlsjT;s=eg(C&b7)%G7D{zoOpO?Hi~ z9_MhVK7r3U=#^u>MRP@ju52;fT`FSlIo!H}H-r3gR`;ngt8Nf9pE5)+snlara=4-}`wO)j|0as;0-HAfSSjjW3xPhg9Lx_ZWEfSmo+ z+JhbBfhgs##`XMS{!r)K$j_*!z>$90$Wrd_WP(^v@OujcpGIk;| zw){&OtN%vEYL>B`BN?mzUdG~_=)22(OU9!9=`K06?8h6%m~sS63FIKMe$AW%90$QQ zrPk@(NPP(7`kQFGU9#_){jD4ycZ)e}({s)(3UN91W1D_@d5JSC)Bw!NPzU;|9^u zN^EvJulOF#{s+hZhV40n&7JH&)4D>A*5#x^UYqk*Z%f1<4D$#VT<`J6q(XkhjQc*| zcAd}QjRr^3gaKPD%V9b@3+nL2({UX0F3_^*Pr$DEL`mXA%$dGA>8 zUWIkrlR8JP*JG?HKHox~EPaY{1vP%6t8iTMV$wfgN&vQv91x2>Uh|wl#^G7~jwthH z;Vk6Z)HLor*!uDf^BSZCIwL6Pbd#)F@MW zjZD$CObIwaZCu48-hgs>ephC92OAP=&wqt8dqrjzQ5 z<7#f{2f!qZF%EN*=VDd5rIiQ9?w}oyVh-Pe=HMu8Z20t<63!=@$GvY3r5^I$M_XVW zFfLoWKYyYxob!_~#zLR5irGf4`>|lZ!yhz=_OSRR>gzdQzx3g{VE(o2<(tsH_7f*_ zq%JId0{sNsDhJ9>@{_viBtPjZ-5uvA{ic456Pl1)0{%>i3%;r~#~O_{F{eb%>bclE zUUXTuMTa~0OMH!`^W)kcQWG^~doN`_(HcCM694mJ?*YfaYPMHvU+6^a)$$0hKyXty z2eE}q(2=}ZnS0xg56+tyi{vGkqR!_V#BUEdF~Bducy$!#Cvhz)kJle`$9nxuVRipt zvRZ#}InHp->9hyZ{exYX&=-yW9O@>Zub~bk>N8#;cXGa=RAgnT3aeZC&=unI@m?y~ z_78tAoUfKElJVcXZ`p8}#`H9eO(e%wU?Ygm@uJc=rRq`Ddz&?0Q`dqsk ze*1#oR>!|FmV@HoxX&1=nd{6sUn;Xv4y;TTa)?>3t{4}GWdO?+Gv(U&gK02YB{!oT z_nTxc+63@p4}*V!_p#)0kv*p;%sJXR9uKS1b9#b2sHE2ZO=`yzEf{9t8snI}prl9_7wn;`Z=Mf8L(hW3_07_$1*$0Cse`5 zdW;)#9pqK3E&Eqyr~Z}XIQA+2V$nrXpX8m1V5xkH-yrkd$R2PjO^_>5+XcW8%4U1k z@mPN3J6aW?c8_yjmW{o~^?dlvw`>FCl=zmtxA?d0y+h01E26z;88hTB?LE{Cz=u{u zd(X1H2RneV-E`FREouffU+ef;u;mrS^W7Yu?~}i>-a!oMrBWOa%dHDca}EWbAC>r zxHcg}zju;<5@LfmcYf?@9hQ+4^j2lz>?_P($Hq`FS|{{w{D)7^^w#fA)7-)$7Cmg!o9E>jl}Uda|eBg8-l1 z%C&qe`9u{_hKLTvK7{$KkG;XUiwEYoqiD~4!FuQnNaL(z>qWo9ilhL!POw#J`xpKPqF3voBtNDUTDor6N{^N0Q0NB4Bw_kh459s~&D9mZpyW(*PBZ5YmqwX!S8DxVs(zf`FSLmBTdE?? zFZJX6e#ZWm`CX_Y%x^6pkW;^9d?pHOL=`~>y!d{U0T;B0GQg`M$be_`L1e%=`Vjm4 z_c_hL0NODB0OawbTP5IOgznhn$|sy>{rYvx*aYR^5?R-(v&Wtq13whCrL}#GL|DlM zW`0l@J@DIEC%D^YoKCH0-b}~`%*zDwCHc)5T`jDEUYv`EMz`1N zZKz+F(#T7lO4X&E@3(4B&QW_D>JBT;^$fKpDc4<ae^sF#B)xE`!LC}@Le0lv&iRz+N3!7B!c?$N-cW18^)eS}m*y2x4 z5)-jg?ooSkF5fj|ehR7>t5oV_mgk{9rqA4lp{|5|R)R+-KBbjDBmn~@akpI8DLLjF zZ!gl-#>Zn*xUPd%}LK{0*4{nbA#HC1s(gc{$1)g z%{JI=Jk<>riBKkOkoZ-k-E+lcrsisR0y7cwtr;Ii zSzQV~Ooo~w=+JMoQVv=)4ro*FjTGz$I)7xl2*becT4p1Oj(lK2VYr)%K$ z41w9B&1&Sh&)X@XCJ;Efn=WmT@4shkoPrGd`xX3dKa-0V{_U7?z6vu4GN^B9br3x< z$Sdf>f{`P>q(eQ9hH*;yK2p|kojvnEk2U?iM-3w58s&a+k!3L^Mx;E~_OOnv=pJVP za>Dw|U7#8F*yYe^doEi&u^#U?-hK;hh-fje9LEUv3I_w@VKNsEzI7~o917=UU*scs z`nF$b_W3Q6=!a5_?`Wm|&4*n3K0)S=tnP7N74wP6bGRt1|Jd0iVJIH-A#?herB zSL}b)0aI1#+;4#|&73&;K%XN1l}%=$2J87%*1;{~`BFiBS^vON$o*t!asKKsS3!P+ zGZM1J!RJMvk-)u&1Q{u(`I1*H$Oj-k-&ezdL2T(oj_^lGg1I(~SJo9}H%yPmQpIisp*-)VvGY|y;&3b!gzntd1 zQ~M>y;+MNW^2=%Q%MBZhRL0{2E@UFQh7Wc*;v4OEUxzw@@cxi14*ah6_!(LEZ9n{2 z#`+rZ_@*C--(|C=4^@2kU`eg_07KDY4gN%)ZQZA_?89qyM(Tt24?6Vzn|tmj;>%6H z(Efr{dmQ@s&9feGJqYpE0rW2i9JX=^8$4hw|L!?b{&HUgdy>vS3GfwfLI z&vC{-i;f;}LWXIeJ!u%L>u5%r;UtzetLX0*R& z?5&sPTJba1gBK&Ik9r0E6rMGa{yqslL*>V<8vKZ-WwT2^K^tBNdp{A|qAT`9sAJO| ztc#84FW>lClWlC@k@l?DRJ=w~O`oNGe~vmY;47vXo!@KPTU|)sZex4KgM6^b6j)Xp zV1(I%-k_h_1M1?8Pf`1paXqN$SrS7SyI&Q>JaIXfm3o{0ZgkcT;^}RDmAy%yVZZz% zY{PWT9Pt5n(M8-v7jYMp8h4Q~%hoZUXC!Ab9qFy6t+%SS-WqjB>08qWe}o6QVr<9X z5%&$aizebO3hv`3;yywK9pOG|IzS(1?h5GP+n@s{p85Rr0s1=2%Q0g$Zi%m>zHTko zSE%nM$2xY@bNRfrg4d&kt7?FH=wFC`;=Bvoj$=6|MORi1=gU3oph_E##j1!$@8IW0 zp67k!XhTc{<1^&?T;%A`<0aEt9T>AfxC`l3J#ma4_?>LW#49=<>8hVu%nLk zGWL(8jemr3`fzS6+J1SQGbOmKZBtL71y51xjLoon#WG&-P`NI0G;HlR!Dc9U{bP+^ z9OG#Kk3{hJtYEdAVr3j`F{KeWmQ#_}j0rIkT%re-0bDma_xhgLK7Ww<%$#k}22*2) zXJej?6<%xPotwLr{+S%)9KxC7-0Z+U<4o`&m~RAFAz}UCJ*Vr(-7-E-iw|YbF_tar zu{K^|od{m4DJW;G>cC+T>?LnuxAcENe`6o|q}K65eK=zoJF$y~E=LW)t*S`925t-u zea5;j>nsCph8Fx`yzWxQ;f8IbGtMaTjQVq6B8grzwX|!$y zj%qQb9-EG^;e}^{1P>gxk(-IG)_%9xH?>|hje6BpJ2q4X8)rUi**F)`#@V;~fwsd| zAL@7isOTe|vK#a_>C=Veujh)1aj zUq?O$Xqwn|t?@<2f*JCIaeWi_a6_-a&-3l_wOJ3AKAsl&0TNRqwm%a1=AIIO#Dt#r|pm{|3E$c`_DiB{QP~8zx=#D zUoB>?f8aCZo9Jrf*WPADqymn>?TNB37l_ zKqnJjvMBYhtc97)cul~}<}?1m>f##b%n(?mh`m5A5A!kbSAuUCzSvRi8*bxX149-5 ztwhd;;2ZA1=LihXQtW^obNR@*uxnkr7r8&3GrrxN(C4k3Q5(i*ooISI()Y4WxCc6^ zV@%o<{l-0vU(nCta}+#Mvthj1ty>Kbz`ot(z$<~A&rHzMn74~_^Ej7^Oh3Pb7jS5- zoaN@6O3!U(K>Xu6IslJpa>-Kguai9DUsq8Ng03ZcQ29;|8rFJH-ep{CxBmyvr>N)c zqMirYa-!!wMm-OhgVgj(_!Kj*7ree-S*Auj`bF3~az2JV@euPgh9z+40+t-FZ#&H7PZ z?fzTbU%;QqkN4NpVEXlW+Fft6{7~s$-0SY?@wTvs$?x66>+R;7$<@AKjBb{x#+_9b z|88&@-;fitj96OM7Q3{@dx&^j!1;Nu1}$vHjo|ulyT@ot^|W1!tsC}o8_y1QP8P3u z!MDTOZ15Wk(UUg3mKj6r1b-N@h$)RL!J4SCv>te01Z`J4mjSD4~QJAyZ~m#jqgyMV@E0OS0+VH z=Z5d=(xTA!oe8hAJ8p$W3|5&g8&OcoLKjZqBb4qeahMTzlzyHPhfBkxR zxtQ!aZ$CEMRYqUj%gvXsS1*&7UtfL{pZ^H!ADH3pc>V8xEuUWIchBkPyV0UKUoL(< zb^hp{Uz}~v$G^I={-Lk*YOJ`9SNaq)yvx5OzzqEeGyK4KcF&gFhnV4UO;5APmrxaH z7O}Cvv28srcrE@u#v|Dnk@A1%WvFS>FLFGUGwj%a*J>_~ryeIfdc>i|!92^5fU9iX*Q?|qFSGZom>&RGf zQm;bJz3$97)xr0s;JdvOcE3^hH~jRZeaG+ z(&!Jx`NOC;=|sH@>stQ+m$%h)MzOYH!_O3avXLXV=NLcx9xjB-nr@8wl~MBB*L4q5 zsR8XV9v(f;cIN+E|%_ zryX)B*k3%z{MG zPQAYW%Cd6IvDs{H*WxRK9#kF#KRCpM_wZ+qWM4ekZ>vWj|c&&9!g-kj zE1ugNxG(9p^?vp*blATzK13a|FW**}9rhT7lAghM${{Q4>Y8jVpt%Cv^sxVvD zkq>kZUm*AZF!vLzyDSx7O2YlTXa7OD3LGqKPagRMw^z_W1eZyCg23`Z8wV-He!w++ zZ6?I9HN8m;n|zu?j+0H~IN8=5CvTDCB#kvgz!wFH?D!u%|L=6z$M?RxJo@suUx}i| z-g9EN3Pun(oQFQ*BlG?aXQa`nw_+^hV2iPRIT8QMzhqaz6E`7!tmi#ST%)Duu`PbA z=dn$Gtml=|?*Fi!H`;LD{!Y)^Nnig?&)W$8ws1_Xi1nXT(?s%Y-(zyW66dV;5|xf? zu4wifoXi>K$@^f3+cfG&>@Up-Hf{Fr%o+2<2b~O9FC)fhCaL2I{4g5&AbcV!0Y-54 z_c-qte}nTbz6M}!v;7x!L2V}=txu4Gxz1?{FXZqv4}VH$l6 z>r-FDM0^dWHchhCFFzja+MfTh``&v9{(?m8)0Qr{IpmkiUHRqD$MoP@w$Mv7)#xj-fL^Ucigns$mN)JM(O?4 zV6>gST)d?viO%~`KjBlMf7|9`{QdvG|7HKP&z!UH-}5N+D#5cCz3~{UzNzgsH4Z;? z*q|qVA}ci}*S=!hauh_S@anuWn053?E%N?mz$D z@19}LfF&TrzrhjYMICnfJ;ab4j4zZOM*7iupn2i5RtnFRB4ux-_ z(Lcp^HlxYlAwr?b7U;MJUu`|zcuGIbV^bya&iqC{L zhXdzuN$&ciFZyLZVcT9}bKpG)7|E4Fd>8AZAhQ|-++)hXcZIgq%IfI58OEB5UP9G4 z`Xb`mYja1OgWtN$C!viV3+ZH=Qygw#eiw!s2ufPZVR>ll^q^7U(Z%qz#=L~mk&R*+uxo4 zaoBx2YwKh|Hpn?|KHyiF3crGKRjNCKPJ91?UtwPJO73@bPZ9r{uU+fNwP2rOeh1FW zVMb47W=qN2Fn&0UyaO3{2gY>`WR1Db*wQ4}($J5onpARL1PnFD7;2JJ44+XBoRbX= zE_FqIaDYy3mYf6ZtJNT*x<9D*3;Zq2sa3C?fNLK4TZC`H7N>bCj5Azg5YJ*Bc#+Uz z%$y3qw8i%o@%z}Pk8dx9Ye3>j8CAoYUt#N`&rou8euFbXG*w%j3K0l-8P^dXNMn3vHwVbbIJnw3`wyg&8Z9_%nVE?de zu(7FQwEKCut*RR50x?$Rnh*{F!Lnl;=?U0%k_Yw7*mV6x!0x?^IBiyS+Boo+1U{7D z+re195OX(*4~IDfTmqRAuvq1Jj4N;Ib9bNu4*YGzL7cJQ12xVjYhnH`h2Mo^nyd6Q z{=ZOfOa0XF0Px>0g4+N*2F7w@f9O-CgWqQma|_OCxf)9D0cxwtkgFMLt7tZo`fA2t zZuAqZw?-Gio{D-$V)_<-W5DJ8^SlGV>9=c^fi-tW;2PonQm^r++@A6dyp{$17GDN< z2krvzfML9Q@D2UI=WX|~Lk-rxaQ~sd zDRWcm$i+8u;Gl%xAO%TI&!s=c<7UZ+8AQh7Hf!W`HS%PGymO{vv;%zwb=^=PQxa?P=@hahU-gQ54C;ZIAB?5SP!Q; z=Mo?6Q{aT?vG2IB>)!@BJ!fa?b1(QDe_U}b2e>x%G`0Gb<-cXQ&vij1IQR_msln4* z(8&GS`M!SJI?0ejDdP_r8!#Wm zrnGVI3%`Ohp*}GWeo~A<$PdCgKE8AL{MyMjZr(#}ac?n7wDyc~GH7TkX9*`cD&5;dBkFTU)9{g5VC+P?C-RL62niuo= z9k0O$dVNyiRBn-`nN)x{Yu=g&JJ$FKVN!D%FQ$ zPL&J6?PWi4Mc`9uVf+f8N=hefsv0YJyccX>;5)e*3;57nXTOpA>5{v`+~E2f^sHIg zT6euOV3nX=lB%l5{R0MV*spP2kebj`<5DXD&bHFAyx(o;k{y z6J1O2URsSImoB_ZRVxiTd)v`=~SU^bx*{-84#UPE8Lqc4j}^z;*4 z9PyJ3kMKB%YZ*V_&EPynS$}PgFqPDO?#+A$HCZQoK+o#Q{!Yl4NB1KeW1K(vit*W< zo2ZR&{{;L-d|%(U+J^PVxTt%<+dysTH06IIFZ}@AjkFkU_WbXW+-tyHU3}^S*938v?xECFgqF=4>n4Vh^q@8}gS&!e44z*G-pR zoLtv@{ek@e!q2kNf`wzF{@kTiTYnx&J`d|`EByPD{QK#j(wF&6sBtG?JFQP~DLUk1 zU3;o^Ja@f~zSINus*Zc*Xua*@dJ7m4hWDA^rD)-#NhSA-?S1$G1?vO3GqA-Z7nC{g z?W96nkgz^SGSi#hXLmlk(kDy!Z*8*Jr%5Q@nT=IItpLKnpMa5V)rNJ6;q= zYj6iFe82=ZVO)89-S;Zgth;`Vxqcfk(-?Do(dN4f94HZ=Tm??Wx}Q#Rw;SFW=`ZPa z8{ObhHhERgq&crDa_1Z(jup<_>xjL%EFeoFZu!0f-(2J+O03`yF@8+2tzvE5w8pn@ zxLG{ov$wce;IB-wHlIttw{O}6eEX&i;tMUT?k5 zfI62pV!aAh*}+Oo_491!y!qV5tzuo2K*mgu5+~*k#C*=JU9MKOg69(r~xo z+~dFZ$W`IIC;gJg^BY`mmVM1BKeyp-vm8qZ{AGOYho*I#yDjh#mXQwwF<@X^qWlGN zwyme|8RI%FUlFRTF@=y5ITIYzi%GCQ9G5==&=8dcp?q=x8-4+iE z&bf+eUKeNh+*|}6mfwMg(<{Y+m27m9U> zoq;>?gLC;;C0r zdEj0tjryhd4>?D)-&OruPZBPaoby4h8ywZ%DG%IC>}cEW-$Kskrhi6wMVdC^Fa1#8 zsR9?uic;W6Ue)%LU|{juzsI_vSM}OjOMfsg-&f%yX<{Q+qCZfZrw;l<*5;{Wew;&# zr;hc9yxqng@z1o^#2NeR!%grb^3iv`VaWN$;aP!_rdpZ?L&^To8dS(J`k5%2re=4M&#(-UqM zSwjss%j}e!1@i8Qn}vMb5$^Y$KZIbCVw$kv(vds-p$pMJD#hD1JBh_287XD&8EW~+(lZ7I3?1c&rDeVKjDV}|3A&7&5?A8$*fWRaP)n{q^Iy={Q%;HKJ4l&h=Bpn>`>o|Wm<3J< z+t%BY=DG`<61L4bVNN+GYQIF}l<>kSLAmc24c+-iE!Mv9`0q3`me_PG9gx>dr=V>arJ)EDr3o#sEcH8n0;v^FH z;dn_YnBHO^`pX!jJBow8i4V6O2gUp|$GsAKPm8e`3inEnu{b>Y|4`$A{-UNn)EDsF zECSvjW445E?ulMZC)|Ua+anyf;9=1*4}%6Alag5b05Un`LUk27rLIueT}mLu~lcjP(r~^x{O>4e74N1j%n@^>VY3p<_PxX?!M}wwv66iuzTt0MMV}Sdx{B-> zb+|2Yy|{kQVL|pNU;D&&vM0e7{7tLiJIOgu9_M50S-vm4RdLRe7`KVOj5qrzzKpP+ zIvB@-^9J_fvx`0`%REV=Rvof%R@CS7ME1wr1}`PRrqh&_DcI(@4rk;kqe-?`x&#Vm5Jq>+Q73^Cvvw@koZ7I-Qm zSB)82)%AVN|Na@zbh}#kn$xq0cyE^HSI)eN@K+#?0<5V#@JjlH2n25@c`Rr=FOx1mee!yBUJK~-yKIESI8F4PTX0H4pdLa053L@(#jJ282W-M5) zvM1dS@MqS0(?srrW=}Lc1Otw}gNK0Q@$eUT!TffNCsnla#t~1}vX(ja4}5Onx!}CI zLBy>8TIWpzo1@N~w#Z|XoI#J=HP&ym4x9(iWMgi?8~K^mSsv!zM!Y|8M32JUYvdp^J}l!pN-k8G8_5AV*xJ|iDrZ&s zJ>b0RCjL$hFK*zQKE7wszUOm1^N#N++xL7qy+`stQzh$<+-++eb^5Yi>e@Q!Vrh$W z!zCYaZoIYcY3Bdvp7W!7s^lZijf?g@kbkF~8wZorxUQY|xp#suE?5{*hH(AG5qE{t zaUXZd#(lh`BJN|j4QzP{*yD>5DBgT0au{rt>BvIl*pw@ z>VOtpM-%H`9;7a3RoCByTG|Qnj6xmUbjb1IP$$P&v#4pxZ1KRj3pQiC*@qfShI6%m z!7G?yQ{;IuZi?~KVRH?2aV0nx7_XT7aV}V2Ua%aBfc3@oL1GItpTv-_1q=znoE#3p zC*fVyc`G@fTOJEPoj8lPsW5qsZ<^XtiZ;AT283QL`AG=OJ)U2`Gk@W-& zQl-u*;hM0z#=10wT*Wim6XTRzq^oI0PaM0STjU@Y<-xpJwQ1^)kZ;i9lj!q1xE@4* zz$ft-Y&M*I!Y83+4L{Hl7;$CICxQ81lONvKd=g$A?9S>Q^GS>|;M@Kb+z^cYq2`m= zFn(J`_hn%|*Z4Hx2dViae&RmV<8e;+@BluEpS&){GWT7<*XRm<2;<#ZuBT=`iHtUw zQ{*H}f!E8JA&0;x;eiQv9`Q&ROD7Xd-?A`|!04HvE)rP9Lkn!UUC4_Lds6n6lb8wP zzq!TR1#~UpKitc?wO$}U18q!@WjLo;uNg$#3&DKb)_57oJM7yc;$_r4%#6oDDRN%J zzRWE>^K<7Eu_QmK^T~~FV@U$@_F4yg$a}^|Ur%Y6at=$$>)I~MJaEt8JAp~hc`htN zfF;BG5xgGS`RVOH!SV30hm7Pg5bRO|98=}o>)-J_sBmwsiy!kmOd`(%)jSX9`xRmr z)=|y#K*IBo{2kAOw1ARX7H1sX0C&*gHA7j39;mA!x4*0hN{f;<{%ZM*qdbVFFt~YPw-0yQ9 z^{dr?pspeEHu##~413ryzs+l`={wTKo$=;cWn>4)Zn~U+cwd%-e8$tuNQ;n76@(v9>B=u+pKacWmM64<^-c z5$Yy|i|4%Y$?1?c&bgt@@9-s00xlcZgmTQR=G*!j&RRE)yetdG8FpQ|uL8C(-nr+x zFW#H*C&}I{WN)V9dVWWr^l;EErn@D0jLEv?$@xF~==^7_J!Rtge|yXy#d&7o{4eGF zSF9H;7$4#E{Kpx#Wqlcw{V&s1b3ip za0r@fzx^Hv=xjD(>^Q1-1&$jeN)R^k9CwYmTcpPmG!r+u>Ml1B}%{zLE)mY(Nr?SZA$aF2--rKMb4*?Q8X7u~^P>m) zj@nBLtPh>~QSb6Q*V8kG`ofRy@%IAtS0RVf)}V zYP_%~Eox8?b|YAVxgTDn=+lPlAN1XvxxR*3R&LE|#A7p533L#5DQ)G2wj_)u!aLXJ*f5C62i))dylgQ!Si}JU9O&wjEwytsRALb#M$(lC2 zE?3U0cFmZtU~iLf2h3WvWALxfI94{+WZE@kL;QUQ4r7yAMJtt`@N+=dt&p3tFOtH^ zTID(;j8j#p0(m;-nmJ|t%24?4GP(5hRIHyFj|VX)=BXEqU|oMdaDp{swmWcgQs69- zvs@tu=3wW}y}lp@82n&;_9Y9ZvheS^1=dfGF`c`@$OvKskFC@SqP313bpdLID^?&DbHj4{(k(fl6j$CYky{VCv5z_ zRI^Do&&GO?p|B|Z47QYz4s%ok?aD$Pk00h^E+_cJ>g#F4FncoVql+eTVVQO?{V9? z72g?uukiKYTmeVLn7InNT`JfQ5B`dhF*+0G6H0Ajy1>Ir0!Ib66TH2Y^?T0WqX)s; z6Mh}`*$2+JB;f6#4uSbvL~c)Ie|Xd@DB*~{Q2y$TW4s!54c>j`XQQ5>?AtT=^TwWK zhBEyM*geV&a(Za=8%%ikJ*9^RQ&*Y355Jp}-xu5xxnO2rA&&k$S?h+^)NSd>YdcRFYqla@vj#jDRKTz1wp^b* zcYOVg*jB^!J#p=-;}`=tY*g^84H^5%?dS=0#J)?9Xp6ZRR`7jH=1YAC>^s!nKk&7C zIn$k=BukvHM)WwowwCkN`SfiGo3BJ|vMuc64f|3`jL#}P(2)Dm@sZcfvVFqw^qlnw z!L7Hp$&2$|35T??N&1;O9`D0>o^$^n7?-@TSvuzZ((B+HoJp)X^(Jd`c+J$FW7RqG zZ|iqU+#`+s={NWD_ar;yCgS|%GmM{q^c@QM`I5sQIKQOtZbn>}sWBIBx}kO8x8t0? zR{r*Z%w0J!(2HRI665C%b9~dg8~`0~2YSqrx-JfuYXbe?>yoh=I@9alUl(sTRY!4c zyZG)p_q|KeZS_XqYP*j16MQtbyDtP2N1fe3_tlf+{`=Xt^wTAHme%o|li}=F;;h)p z8ubnB=g`q}z5x%S{TzM#9OP5zgTyhcYvuKof=R(#++4?5>qVURB3v>Z&i_-a&*$(R zvu+T0WhRN>6ME|O&7bhGPSOeXRAM4W>~#!q!>Cu28Rg$PXpwD{>wOUwO>W zH-(Pl|Jf7?b4(h0G%uffQqzm?bY;k?WPhJJ`^~o3EAz7)Ob_3$5Fgf-&ubDMoccTq z7`*k_hgjbzqxB8u6Kz;uXtkTE<94(9ImMXy3{tOO_l5n`T_xqt?$G(IPZ_z)nlCk_!gEPtecYxJQI_qmKSx#9ntAclof8Ps4&+-R%ply;OnqG#-MTdFR88$q+dqU zbKv5EQ%&qL=I6M#N-$pSg{$Qn+orf z^=EzFx(A%RSclNBCox7@;{3CE#5^mo>26-RE`B4wb2ia;v1w0jx4SuT!9TX$ejZ&r zw%xw9uD!F}zQM0+{k=;1-69DbxH|9iG__P;=H;u{(yN%ctD>)y6?5G$R^z zZOB7YX3zyU_3QL=!nv}VuU}dx+~Uc%4eOYK%gi|$1@uD?4k)f)Mw}R93hdj`C!OVY za6Pkr*IBG!)8fq2jIRm*KI_+vm8qEf(+4}7`8$v7>Ccb{a_#c;+E?iMar|#gp=Iu` zn461zIdOh1e1&m-A;+(R98Z>+nYpvGvtMVIn6E*t7xB8?2(CpqI|EivF8aWb&kK=X z@xIs7`%2aa3+nd|wzw(Ggz@JJny~){*Z?=y>w$$luVpweuKNeRXBhS^*2RqLz#rON zUl*K@Eq450^_7Yn<_B3Fc$_oH`1HGVafL%KIV0`+LQ?Z#4 z=5MBwv$L;fX9rX88m=mHGRD`;^_qV$ADqi}tJtn%KKaQ}J+>b<_#K>+R9M?ToQ$>A zdFx!_`eV*PB>&wO!=H9#zT>ZGls7Dswh0X*2rPb>Txjoug9nUi+CrXBmBEbG%2dZb_{i*CIRI1yN9 z;9~f0srrsRkNEzwpwW`$bgdIkPUVU724}+*@<4bVa_o~b>VNR}*1F+P>hEj$$A3?L zTA%Ve=^*bzyh)x1J^Wi5{F6iHUWWnCVD!;=ihXk%?3>AJ;6)w%)!3ittYu4QJs$f* zGxlsx9<`Z-b=$P-HSPY{v7aVKtYIT;3qdsRmPwSJsQzUiV;*JqUI1RZ;5!t1j-e`T_ux+r zzS)5DQ1Ugc?Q?x?YgR+kI}7tShE7a%ZqqUmT#B5}1Nc*w;MlKYd+;CQH>H_3JHGE( z{JFju#{LaQGw|ue_z&VAB9o@V*Lsl(1}b!>g0}Hm3GCs5%7Bppq`)8G$OZQ1Fca)e z_>(N|;ooii-46?37~3(g3+7Y0{b7CnJ>cp+Sjr{#!dS=VgZt9feXy_1y$)j&F{g$Z zWaWslhePg7G2F6F_fT@Y1pGRq?0%T#tdEDBhMO7pxwug;Gs!9Y!qwXgfkUUwnr+9(0o@g!Bl$GggVj`j)fRQ^pyFjeb>x(=z-iKm+c6_$F23pqwn-*| z)1!55q@#WL!uqOJlWJ6nz8dkN7=PFVY;NFapw`B)Zwr`-G}D4XXthH>@@U&`SQmpl zI3O>}<80g_RfO}>>)#anc40ST&YHdLR>D1ieOFDIdI8oiBo7d}LtA&`n7W@WIaj68 zZ&U2?Z&gR37LfD%AV=6g3VrIM=lGAFW5aVy;GadFtClz?;`=JzALTjDZ*xN(YQ;gl zLe6?`KT))oJ^$G8y6DhM_VGwKK^C6M%ZbL`QB?aCl;|N|7aN@n+c8v*H<|K4BjDi& zyV|y{*>ElA9Qm+UZ^~SJzQ%vPxv?vpd1I$1 z&9C1z#+2Ia!1Jv2e&4EHwJ#`~KB#rpJd8P}+C8fKqU@d#Xp@d@`Z5xI-*oPoc<(ED zs7JSpm{+yPZg1C>!y13dybroAH##tXxQg~T*o?=hL!AXa}(@wAJVUN#EYG9A-n0Z347*pbu;Hk9{TjDIZ(nQ&x zag(%_f;(wM+XU@#h!Idb|8y83-gs=s7bdNL;!u*^#~&Q*+VB(o`+kHul-rBWew6iw zZ=%k>vFxXJt^Na>jgr30(mLzvD7w{AO6UvF``WX-`&`yOM_>I>mswbxU#%XasqSwFh_JeV>AB^Lgg+F?#y7jH(9KczjnTK*LYY%6a=mmDH#(Tw_0GLOVHHXwE z7~>xICD<_^4w}5CDz+Wh9+kdtV?HI;N;CGsqTY6lyrv~F%+}u?^mUzIoS*Ff6Zi|p z-jBdf7i020eH6eppDWAQ4wU)5EpzPKG8qpsoSv4+TsZ$&=65W#gOpiG|Kc5`>R9GV znd^GEepRMb)jyY6DTz}vjM4c0qa(YHfqnZizw4ZrS2(LTl8->_s}XON`1+>)x?_*% zU6|l)X%k$Igo<1SL;B>FUH}7KoUgIqk@D`8U z7lu95IV*GNqfyWCoc|RxV&Ju@@m%uZ2H^;swtif2T$v;PP9_{z^^to=IIcSQgax@- z-(t-aam*{1Gk&qBv|1NBa!ricRMoPp-0B+4t&0FwzFETi)t2-~Z9R$fex2 zv4X#8=#<109^1rxeY ze&+OOlGfTsWx-ij_+pb{e(Q*14;HaEcfYrt`8XH@>rdRhit($EcN50!Aow!I2#fr1 zYpiSSFx=aBN$<{%vB;}ndVAn3YwnRT4l`@Sx9nhhJo==k$W|p8?Nhs)uKNlxuZ3V`q^^ycV~&i; zb7nzIP-P8mw#KPGzPE$^01meyv7tU_?jJmJW)e%kJ5vwdq_ef+`siQ^chGr!$bPS| zmt)VqjC;0V-HP@cjk)61(Cc2=id#<1s&h_O5ie(3+eYQSN36(tj-wIfnX%-Vso+l= zd$|T1LfKb4yzjKB?zE}L@3KurYEzJFu}#dC=7Y&r<^ed}LXBt0 zXQnOvdIOW@Kll3A^SnKeWlopDl&e|9Bp=UXlg{HZ&3WP+PTK_x${KTs>wx-lJcGBY z+g7&~y*Zwz56F-3=Xv^sv(IpDX2fj(n;`SZb@etcEt z23YogDsvZ%#3Te@;@9UFC$Yjf8-JYIhF+hql=oqG&5>`_g;lhG!QfxDFX6FT!_^Vj*2_Q_GRA_cS(DJ@F``|Ul9)?ab@_PQ&s%lPMP#Q$T)ue>U%rvz5n<< z=pO&}J!1|BZx~xKJ>%SvIk)f5Im+bJ+r-bw91JJ(twt=$#rgikhB@=!e&2U}N{oTH z9CqH5z44sBkA;4u3^yYmG3A^UV>DmMIh3DpPUS~F3b~G$CPRGm>GP7K?eDTrfDA*~ zr^j{q0sD-Na`3kRd40-uB^l`FK?8dhpWTpi18o)ABcr_XA($lNxYu$KOgIccy;fEGdsRTgsJ3p48YcM_I2Bx$?;UYNK4)z9X{LgVM9Zd?ztC4+$T! z!#?;!*8HvDBPM%QSmqps>@gNU%6}#6X3c+;br;8XJal^#^A{Xo_Ym#?S2*=9+P#P~ z5v%?6pX?<{aAxYqF%Dn#!0!Ut?HywvGcWNUorRxTC+}Yr~P>T^nFHRkFcaV1P`-@^x@^jHTjU-=mx|WDEz+ zJ~_8W(ic72zsVs3tc>^vs;ubbY#}cC-3b?%;H%I_58U@n1%K^AVw!rCxm&&p)`5K6 z-M)C%>gz)5d|#RIJChCj)$~KM$E}ZjQJwS!@dw7A^hLpID)q&hwtD(SHps0zog`Uv zEAnK)J)W{?06)1F-_^c?Y=L+%??c4=an6VyFJt+X=JAH-*z%b;i9?8X0lTq*xblMW zTR0yi{?=YMiF4+VuDR=8;!^b?i}f=Si!*YP<5PDqZ2UejIjnEJ!kEEFzIXnXepC3k zO`#^jU&M1xpVardtuK9OvCb7SYDT$~6A^o<;MBk+ICx6e!Lx0CC%Nlgl)E516U%}1 zE^Ah8;##bOIorXGj@(wnDOJ-So!D>8y}bXidj_JNS5nUyODJc1VKdnSX5eBvViUeZ z|2V#JNOGdx42p@{O^-Aro*<9BzihOHpr;_;+C2 z7~`&1GXIVG{8Xqc;^hzrmbgzo&w}fx7=Y}Bk^jEdi>t%ogYhG{Qca6Pq9iO;4NjLk1jW#Jz42TGhn zsC18Yn}QF8^)C?1k9B>k)epwuN{koqiNeEBw>p1$f&&`;*Rhwx%^{uw^4jPUcIZ*j z^~f1*q0+C@t%3imE**YUd#Tl z3r1%PCH9py->Znl$>={zIqi?n1bOE0_h))yLmwV`%r$L2FvrhnpG17tF=kco{o~;P zoCo$;V;Z}ZwkpP3XWaMP+9AFX`i60r;36V+kKZXfW2u0(jpqsU*9+(`WAt_O2aeKN zi~Yg-*&)f)Q-glM9O&Up9Y$Sfk)FkVZVNS(J?K`eau@Vhw-LTPkyBILX=dyt_k>K@}1qDU@I9r-j#PYo?~J#CVG*^B>R^!DO0_N=WeDgeXgeL&A5iuee^q& z;-77lTON8-tP8QTzQnk$#p^LVKps~$IoIa2GyQ1$guEWvVJ~^`>Y@9vJ~^kHzurD} z@^8~7lvUu)ZRMOP{BFdi++{Bvy)JY5S$~*=<1C$pWiWQw|8UB2X8daV(0vcN?LN)l z9`!+uu^qY(oilWRvu2ewC*LC$=EsTtsq1{#Z4>&<-<*7JNdD#dQ|CSL^$lfzSh+>Q zWjn-VZF0oyEJiKnE)$#jA=(v$M{?og{%PxhxW{LV#n>w3H`VEuoiik@nIL8J&7F1dZ~IwY*(n`aQA9X z7=L%tf2coV1-^2w7xq$oJF~b3VRzRy`3`i6Si=XcvYk@WzkBR4kX=Sezb+P!ekJp+ z)t{=sm>u#)xANI%kjlD9Bx*{L6tgA4{ zR>CWrWLoAy8Ndd9rYfzKqAz;oN-cYN zjCsqF&0%hwD+)IheUow!?f#HGsc%@0G5Yzbivcy2x~6@Exh#81xYn-p)(;*h9(i;I zzn%KrIA3y%^O}B|Di^GGoTEL+vqQ;$zJpH6`9zLd>w__NMm|TKKLbK~SGnI03CmtY zTRh@G)vUvdV%e^Vv8y3e@$IoF$k$R~>t-#GwE;F6$%e|FZTqWN>|(WSzq4Iyf6~p&{0kO5b7VT^@)F#bsZ#tI=cwGJA&ooVKTh)8NFWZoc|A zjvHO6*qv=mdKe9iV?{av6Z`_EFXYRip)ODTmWSr}B z;#ybfS;?E+s3q1fY$WM9$+J8Ytg;>qb37wH@*H~-<^2*IK#(z}kel)(V;DJ4E9_yp zaU=4PL)MCWJLu92+bx_NSXaxDun}p_-1faMI01tAH>Y!df;^vuMep6AhzqA-*JLV*cjRC zRtwr=7b%8qBl;rt2o?0=nVe6^p9X$T#=?C4L|m7t)aCNfn-Nz~N0~KDpCg}MCi1H2 zpc!J^wQ%`}9Y}nG&>w+cmUxV$M-uBu>~ieiLBuU*Ep9pCy)f^L#E;DeXy1Wl0*n1M z%IbEzGMD7?bbVD5(=WCqvCS*7LC*Ax=q>c;$~;QGPuOII>x25>c4hF4fgGXlhs+)I zL*}yfF$YRRc_qr`ux9`p=cdu;COKHNaF9a}Un0&<`=jh1SV!17;yO7<+$_g|c56$& z!p23JA;>yr{OU!FT}2L#Sl&Y9H){w(|6?CEMirued>U}ypuL`P7GLS-Mf)U=C~UF7 zc594hW(BWrT8^lZzH7i?p)ijSub<|+*!Bb;I*_@sPxgtNHX_E&{M($b|6$J8|1jrg zDQ|xukLiAhaUC?w{r5!Kt<5!n zd^jumOfg3XoKGYDp`*|8Y@%LKJ}dht+397JX zB34J@%coVEuSWPhonRE&`izld<;{tH9q%b}ZW_N@9!_uzx;-n}=P>W4MlG)!bt!Xf zA^D*NKZXAF{llu2)fv-?z1@f}3)g3m&EweznKJP!YWPVta?>2n)HY#1Y^7*_?x*!6 zx|^(-zVpyI4~X%dnO^Q7AN%!A`CE}q--UysZC20poB6Mk_#D+6?mk?c_{5j~cKg)n zgG=;TbMoF^VhK9=j@}^d$J%p$v;5WhCj0y6$-Ctr*nP+nes%Iq+AWUfSxwF!3%kzM z$#Xbc^kcVt9pi8oyQss$H`DP|LT`n9D7fd<>-hDW@$*r}X8qqqdCU%>_t`qeU{q1R zZPHx!X&>mjXxE<^>*Ab_x+U?;`3W}To8V-UPwPJVw5)Ke?FBo!Kf`_i?D~x7bxHq~ z*d4CKCnK0y!9Dg?SOCywxv8%+e6zAzy>*gVxM?Ro_6|C ztXd!%+0wVC<@@*C>lN1|VjI=)ZM3V={}TquUzaj0 ztw6tsZfysEC6DLyA9dEk1FS`Nv?qF%*e#Q++NZr7oXY0q znKmhN=;@r?%6r=W47jIE_nmXvF=!vD+PK9@ezu#qP%^H@A+GF*OVuf7itf>ef!H&# z>nQM$Q}#7Z-ClBBD>VYI{+#i4mh%9(Ejg=fFtAfBY0GmMYxqcocm2G@WS9eeqbO5< z09Rf&cSUd5f7{)cz>%}se(KnqX}@{u_*A_I$5g&=+IULIE1-eLh3^Kockhz#=E#Lw zsG*!4sQ0cKG(AN*vuMXga;l&X>+MBn&(q0=mkFoj6WLuLFUWk_r~KC7eKW$by=OjY z=Diu6;0kP^e#cz%G6uvzjUqP0@|l6e1kzqNm$j@VzKay-BJ5+i< z=E|E=Pj|m;Y zfGXlQBtEF+u~=cxF)2?5eFWIcT(}gu1>eqBf6U42*Yn|4|2&z?38yv?e_chNTEspq z^e^UmTIlb{^VnWj#F|~Uc&>!I8uyrY(x2vwmi)Yl<2>bzmN?H-?2med{n4+mKXTT> z$1ZcZcf^6h#-pMS!FJ@Hh&vcX`w@PR|F9j=?jGOA@5Af7C6=~2sb7q7Jgu8G>K1FK z#6-6?1Hx*XIm@6>h3y3S7P8V;ShvVTpduHI?J4j;=z48nJCfnLxC zmzBe5zax)naQ6Lc3}uUJ#N0oPhdG~ZRQ2#S|JvIkuOkMH=DOQ> z_<5DAFXB-%7e3Qwjd%hM?Z6-L^7rIinkFB3yawH9$x}9aT+Yf{O4lGgf zsf&%R+a^=BZ5l9^8ErzoO}xi@>lrw3u!mfz8P18}X&?E2>Lc6sQIq<}v;G6)7J`9F zb$=eg{-bN)FqHLo3gf3_%|#rdw!xh3{fEPpapaF`TFvq7H=nq*dcqqsUaQ76!s#7j z+P8CXgA9q2Zh!?^==bftpXnZQ6urT{etR!3>&BiVC&?7~K`Q38Xk1p5^@9tSmHG&t zzez9T&9o->yS>hr;6KTDUnFqM2G)uqIH9NhK`_(^_AzJ&{v)swRE{0`3- z{4R6UxDPJ-!W<;Pn9q%C@ZFhFy}GhJ^7*T)M|@{qs9(%sk|CE$FI*O?k$R91rE%G~ zaNA1qn{1urq(n~k@4GNH>RjI2g}LOo`6and+;8D=Tj)>xPKodI?~VH8%o{$B+$w0_ zOn6z*#+}>t!{ouU&LiVqT*llzeV0{*TL$EU_;4@J?p<{en73!U5A$=knKzsV`E{j! zA|)E0^keNOk?ly7p1mkL&}~)%2MIh+`r7CxDU0cV6(F z$+<_L_0!l%KS}P+xQ>Q0@2AB2wDZ1c=Y1A^3L&kZ$k#iJFrs7G)x|tCqVLXXgbtw&&947cRSAy6qWrD$Fa++dkLYx$6rq zbd5RlwyyAvvl8=QE;*d~E}NGazv+W~gFJUQ1J5Yq&&2n*t4zz?qjrq>BF8QB5f6Cn zev^||4f#R9og8*Se>qe}Y`nNObzv=W;=r$bwbbjAuS782kW&^~+1qF*Ey??;5Qk)9 zTrRKE-ai)IGaz3`l`&R@F-sMALv0x`shXU6dLe#Q!~zU>1_0Cfvad|J+6d3dntuZi z1H35TTkOG68|66KY6rsW8iM_@W6X=h>mhd0n)r=~PiIbtW1k@gI_$WQKd8ap1<7Bf zVr;KwjC-iGP1upo`p6Typ#K-PmG&E6Y;lrrZ;e=7UN_`uML#j-Zzy(}QsUq%2R^4o z>T@f7-eT3*e>vNQ=SB<4)xF4Ri}j1MbC351d4n@I=58Urro4gw1wsn^aPoHz?i}<* zvTsXUzV9ooqJ5j^?&m$n{fFO}T5!|aMy|u&o_Mbgc6!v|Ot6t_$#wIsh(9;kPGGy( zO=6A~<|Y!{DD4>IXva{Jk7;dvnybW(cI0WJ2D5-%GKw)=}o) zA570?H^$i(PkaD}?&l+xWWoG91HsPuXiwTD?B~!aVr2%2LmPWdF8=jB?eYi6#Su4M zvVUMZ2>R}jY_gMCn1BZ&=UDzkEYOPWJBPkoA%1cq*i`HX@X>zX`Hu(3_T4K7d)f3R z#xaOJY{u~xtjTPWalD2X_)}vpb8a~2d^l}edD6DYA8jkknel8}pK%Io+ikaPqgQPk z{9K!1vc0P&w+4VA@A>kHo+lc)esNgzE>XK ztKxfwO7Csbdye)%=8{}=@#eOGZP^18o#Nr8O^}<)z3u9YjMKgoISVq_1^Uq_-~_}j zh4|Dn;?#HGm{uiYcIMO{VGsW04bB(S%MaBW`37eC{b&Lk-B;K{lJ7d@O>@hKl=tO4 z-Mb8OTXPh(5DJ`r#_bE3WvI%0DEo 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 z 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
H+6=-Z+8z- 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%0Ar&tE*2>BvFyWh^|r%tz?);cX!noQr5FqE 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�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 z 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 TV>m! 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

L(hjA?#kjB>nDqog1o;f!+ek>}Gpe*F=(SNtMR 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 z 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 z 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.touches.length===2){this.isScaling=!0;let t=e.touches[0],n=e.touches[1];this.initialPinchDistance=Math.hypot(n.clientX-t.clientX,n.clientY-t.clientY),this.initialScale.copy(this.gameObject.scale)}};onTouchMove=t=>{if(t.preventDefault(),this.isScaling&&t.touches.length===2){let e=t.touches[0],n=t.touches[1],r=Math.hypot(n.clientX-e.clientX,n.clientY-e.clientY)/this.initialPinchDistance,i=this.initialScale.clone().multiplyScalar(r);this.gameObject.scale.copy(i)}else if(t.touches.length===1&&!this.isScaling){let n=t.touches[0],r=this.context.renderer.domElement.getBoundingClientRect();this.touchPos.set((n.clientX-r.left)/r.width*2-1,-((n.clientY-r.top)/r.height)*2+1),this.raycaster.setFromCamera(this.touchPos,this.context.mainCamera);let i=new e;this.raycaster.ray.intersectPlane(this.plane,i)&&this.gameObject.position.copy(i)}};onTouchEnd=e=>{e.touches.length<2&&(this.isScaling=!1)}};function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var h=new WeakMap,g=class extends l{isMobile=!1;isDesktop=!1;isXR=!1;dishName=``;dishes=[];webXROrigin;dishBobAmplitude=.05;dishBobSpeed=2.5;usdzExporter;arSessionBobPaused=!1;selectedDishIndex=0;onEnable(){if(this.dishName=new URLSearchParams(window.location.search).get(`dishName`)??``,this.webXROrigin&&(this.usdzExporter=this.webXROrigin.getComponent(u)??void 0),this.dishName){let e=!1;this.dishes.forEach((t,n)=>{t&&t.name===this.dishName&&(this.selectedDishIndex=n,e=!0)}),this.dishes.forEach(t=>{if(!t)return;let n=e&&t.name===this.dishName;n||this.restoreDishBaseY(t),s.setActive(t,n)}),e||this.ensureOnlySelectedDishVisible()}else this.ensureOnlySelectedDishVisible();this.updateUSDZExporterTarget(),this.checkForDeviceType().then(()=>{this.isMobile?console.log(`[MenuController] isMobile`):this.isDesktop?this.setupDesktopControls():this.isXR}),this.setupMobileControls(),this.disableDoubleTapZoom()}onEnterXR(e){e.xr.mode===`immersive-ar`&&(this.arSessionBobPaused=!0,this.snapActiveDishToBaseY())}onLeaveXR(e){this.arSessionBobPaused=!1}update(){if(this.arSessionBobPaused||this.dishBobAmplitude<=0||this.getValidDishIndices().length===0)return;let e=this.dishes[this.selectedDishIndex];if(!e)return;let t=h.get(e);t===void 0&&(t=e.position.y,h.set(e,t));let n=this.context.time.time;e.position.y=t+Math.sin(n*this.dishBobSpeed)*this.dishBobAmplitude}async checkForDeviceType(){await this.isXRDevice()?this.isXR=!0:(console.log(`DeviceUtilities.isMobileDevice()`,c.isMobileDevice()),this.isMobile=c.isMobileDevice(),this.isMobile||(this.isDesktop=c.isDesktop()))}async isXRDevice(){if(navigator.xr)try{return await navigator.xr.isSessionSupported(`immersive-vr`)}catch{return console.log(`XR check error!`),!1}return!1}setupMobileControls(){typeof document<`u`&&document.querySelector(`#asset-picker`)||this.createMenuMobileControls()}setupDesktopControls(){}createMenuMobileControls(){let e=document.createElement(`div`);e.id=`menuControlsZone`,e.style.cssText=` + position: absolute; + display: flex; + justify-content: space-between; + bottom: 10%; + left: 10%; + right: 10%; + height: 150px; + `,document.body.appendChild(e);let t=document.createElement(`button`);t.id=`previousButton`,t.style.cssText=` + height: 100px; + width: 100px; + background-color: #ffffff; + color: #111111; + border: none; + border-radius: 50px; + box-shadow: 0 8px 24px rgba(0,0,0,0.25); + display: flex; + align-items: center; + justify-content: center; + touch-action: manipulation; + `,t.setAttribute(`aria-label`,`Previous`),t.innerHTML=` + + + + `,t.onclick=this.selectPreviousDish.bind(this);let n=document.createElement(`button`);n.id=`nextButton`,n.style.cssText=` + height: 100px; + width: 100px; + background-color: #ffffff; + color: #111111; + border: none; + border-radius: 50px; + box-shadow: 0 8px 24px rgba(0,0,0,0.25); + display: flex; + align-items: center; + justify-content: center; + touch-action: manipulation; + `,n.setAttribute(`aria-label`,`Next`),n.innerHTML=` + + + + `,n.onclick=this.selectNextDish.bind(this),this.dishName&&(t.disabled=!0,t.style.display=`none`,n.disabled=!0,n.style.display=`none`),e.appendChild(t),e.appendChild(n)}disableDoubleTapZoom(){let e=0;document.addEventListener(`touchend`,t=>{let n=Date.now();n-e<=300&&t.preventDefault(),e=n},{passive:!1})}getValidDishIndices(){return this.dishes.map((e,t)=>e==null?-1:t).filter(e=>e>=0)}ensureOnlySelectedDishVisible(){let e=this.getValidDishIndices();if(e.length===0)return;let t=this.selectedDishIndex;e.indexOf(t)<0&&(t=e[0],this.selectedDishIndex=t),e.forEach(e=>{let t=e===this.selectedDishIndex,n=this.dishes[e];t||this.restoreDishBaseY(n),s.setActive(this.dishes[e],t)})}restoreDishBaseY(e){if(!e)return;let t=h.get(e);t!==void 0&&(e.position.y=t)}snapActiveDishToBaseY(){this.restoreDishBaseY(this.dishes[this.selectedDishIndex])}getDishSlotCount(){return this.getValidDishIndices().length}getPickerLabel(){let e=this.getValidDishIndices();if(e.length===0)return`Menu`;let t=Math.max(0,e.indexOf(this.selectedDishIndex)),n=this.dishes[this.selectedDishIndex]?.name?.trim();return n?`${n} (${t+1}/${e.length})`:`Dish ${t+1} / ${e.length}`}selectPreviousDish(){let e=this.getValidDishIndices();if(e.length===0)return;let t=e.indexOf(this.selectedDishIndex);t<0&&(t=0),this.restoreDishBaseY(this.dishes[e[t]]),s.setActive(this.dishes[e[t]],!1),t=(t-1+e.length)%e.length,this.selectedDishIndex=e[t],s.setActive(this.dishes[this.selectedDishIndex],!0),this.updateUSDZExporterTarget()}selectNextDish(){let e=this.getValidDishIndices();if(e.length===0)return;let t=e.indexOf(this.selectedDishIndex);t<0&&(t=0),this.restoreDishBaseY(this.dishes[e[t]]),s.setActive(this.dishes[e[t]],!1),t=(t+1)%e.length,this.selectedDishIndex=e[t],s.setActive(this.dishes[this.selectedDishIndex],!0),this.updateUSDZExporterTarget()}updateUSDZExporterTarget(){let e=this.dishes[this.selectedDishIndex];this.usdzExporter&&e&&(this.usdzExporter.objectToExport=e)}getUrlParameter(e){return new URLSearchParams(window.location.search).get(e)}};m([o(r)],g.prototype,`dishes`,void 0),m([o(r)],g.prototype,`webXROrigin`,void 0),m([o()],g.prototype,`dishBobAmplitude`,void 0),m([o()],g.prototype,`dishBobSpeed`,void 0);var _=class extends l{volume;start(){if(!this.volume){console.warn(`No PostProcessVolume assigned`);return}this.volume.addEffect(new d({intensity:3,luminanceThreshold:.2}))}};m([o(f)],_.prototype,`volume`,void 0);function v(){a.add(`ARObjectController`,p),a.add(`MenuController`,g),a.add(`PostProcessingVolumeController`,_)}v();export{v as registerTypes}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/register_types.C910Zu9b.js.gz b/Needle/MenuScene/dist/assets/register_types.C910Zu9b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5b012de638e8c39ed2dfe7a40f296b00d7e0c99c GIT binary patch literal 2818 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:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{s as n,l as r,o as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz b/Needle/MenuScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f6498208ae87ab14bfd26f4e77abbc957c71bda GIT binary patch literal 417 zcmV;S0bc$eiwFP!000023T;urZrd;n{T1h8NGM_SY)|QB*DVFwTM*QWOuHHsDxm0e zf$e`Ew9IHW>_8CjkreeFFO~~5yW=YS-Hk&u3PH5lsvI)UsFauqf1V>ts;6bq z)gJ(&K~|t4qaX+WuQ?+<`9o{;S^V7+-QGPeT6=iEbbkM-aa2Tj(G#IN^hE zfc^|l^p;51a&n&fNJ)Px0$fDMRz}UWGAdU_s=1l+3b--^M*{vNr=g!MZxIOig&F;E zV94q|l4l=7on$!sSQ)iZ`7ECFHwg}EBmZ3=&iBP!tyQkldr)gBr>THzx*?|9O~nta K>&(#80RRAU){y}K literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/three-examples@0.169.19.js b/Needle/MenuScene/dist/assets/three-examples@0.169.19.js new file mode 100644 index 0000000..b1fdf40 --- /dev/null +++ b/Needle/MenuScene/dist/assets/three-examples@0.169.19.js @@ -0,0 +1,464 @@ +import{A as e,An as t,Ar as n,B as r,Bn as i,Bt as a,Cn as o,Cr as s,Ct as c,Dr as l,E as u,En as d,F as f,Fn as p,Ft as m,Gn as h,H as g,Hn as _,Ht as v,I as y,In as b,Ir as x,It as S,Jn as C,Jt as w,Kn as T,Kt as E,Ln as D,Lr as O,M as k,Mn as ee,Mr as A,Mt as j,N as M,Nn as te,Nt as N,O as ne,On as re,P as ie,Pn as ae,Pt as oe,Qn as P,Qt as F,Rn as se,Rt as ce,S as le,Sr as ue,St as de,Tn as fe,Tr as pe,Tt as me,U as he,Un as ge,V as _e,Vn as ve,Vt as ye,W as be,Xt as I,Yt as xe,Z as L,Zn as R,Zt as z,_ as Se,_n as Ce,_r as we,_t as Te,an as Ee,ar as De,at as B,bn as Oe,br as ke,bt as Ae,cn as je,cr as Me,dn as Ne,dr as Pe,dt as Fe,en as Ie,er as Le,fn as Re,fr as ze,ft as Be,gn as Ve,gr as He,h as Ue,hr as We,i as Ge,in as Ke,ir as qe,it as Je,jn as Ye,jr as Xe,jt as Ze,kn as Qe,kr as V,ln as $e,lr as et,mn as tt,mt as nt,nn as rt,on as it,or as at,ot,pn as st,q as ct,qn as lt,qt as ut,r as dt,rn as ft,rt as pt,sr as mt,tr as ht,tt as gt,un as _t,ur as vt,vn as yt,vr as bt,vt as xt,wn as H,wr as St,wt as Ct,x as wt,xn as Tt,xr as Et,xt as Dt,y as Ot,yn as kt,yt as At,z as jt,zn as Mt,zt as Nt}from"./three@0.169.19.js";var Pt=class extends z{constructor(e,t,r,i=128){if(t<=0||r<=0||i<=0)throw Error(`GroundedSkybox height, radius, and resolution must be positive.`);let a=new vt(r,2*i,i);a.scale(1,1,-1);let o=a.getAttribute(`position`),s=new n;for(let e=0;e{let r=new e.array.constructor(e.count*e.itemSize);l[n][t]=new e.constructor(r,e.itemSize,e.normalized)}))}let p=t*.5,m=10**Math.log10(1/t),h=p*m;for(let t=0;t=2.0 are supported.`));return}this.json=i,this.jsonErrorData=a;let l=new Nn(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&s[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}l.setExtensions(o),l.setPlugins(s),l.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function Rt(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}var U={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},zt=class{constructor(e){this.parser=e,this.name=U.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},$t=class{constructor(e){this.parser=e,this.name=U.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: WebP required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},en=class{constructor(e){this.parser=e,this.name=U.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: AVIF required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},tn=class{constructor(e){this.name=U.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},nn=class{constructor(e){this.name=U.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||r.mesh===void 0)return null;let i=t.meshes[r.mesh];for(let e of i.primitives)if(e.mode!==mn.TRIANGLES&&e.mode!==mn.TRIANGLE_STRIP&&e.mode!==mn.TRIANGLE_FAN&&e.mode!==void 0)return null;let a=r.extensions[this.name].attributes,o=[],s={};for(let e in a)o.push(this.parser.getDependency(`accessor`,a[e]).then(t=>(s[e]=t,s[e])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],i=e[0].count,a=[];for(let e of r){let t=new I,r=new n,o=new H,c=new n(1,1,1),l=new Ae(e.geometry,e.material,i);for(let e=0;e0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:`image/png`}var Mn=new I,Nn=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Rt,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new we(this.options.manager):this.textureLoader=new nt(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Je(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return wn(i,a,r),Tn(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=gn[n.magFilter]||1006,t.minFilter=gn[n.minFilter]||1008,t.wrapS=_n[n.wrapS]||1e3,t.wrapT=_n[n.wrapT]||1e3,t.anisotropy=4,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new He(e);t.needsUpdate=!0,n(t)}),t.load(v.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),Tn(e,a),e.userData.mimeType=a.mimeType||jn(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[U.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[U.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[U.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new Tt,ut.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new N,ut.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return Ke}loadMaterial(t){let n=this,r=this.json,i=this.extensions,o=r.materials[t],s,c={},l=o.extensions||{},u=[];if(l[U.KHR_MATERIALS_UNLIT]){let e=i[U.KHR_MATERIALS_UNLIT];s=e.getMaterialType(),u.push(e.extendParams(c,o,n))}else{let r=o.pbrMetallicRoughness||{};if(c.color=new e(1,1,1),c.opacity=1,Array.isArray(r.baseColorFactor)){let e=r.baseColorFactor;c.color.setRGB(e[0],e[1],e[2],a),c.opacity=e[3]}r.baseColorTexture!==void 0&&u.push(n.assignTexture(c,`map`,r.baseColorTexture,R)),c.metalness=r.metallicFactor===void 0?1:r.metallicFactor,c.roughness=r.roughnessFactor===void 0?1:r.roughnessFactor,r.metallicRoughnessTexture!==void 0&&(u.push(n.assignTexture(c,`metalnessMap`,r.metallicRoughnessTexture)),u.push(n.assignTexture(c,`roughnessMap`,r.metallicRoughnessTexture))),s=this._invokeOne(function(e){return e.getMaterialType&&e.getMaterialType(t)}),u.push(Promise.all(this._invokeAll(function(e){return e.extendMaterialParams&&e.extendMaterialParams(t,c)})))}o.doubleSided===!0&&(c.side=2);let d=o.alphaMode||Sn.OPAQUE;if(d===Sn.BLEND?(c.transparent=!0,c.depthWrite=!1):(c.transparent=!1,d===Sn.MASK&&(c.alphaTest=o.alphaCutoff===void 0?.5:o.alphaCutoff)),o.normalTexture!==void 0&&s!==F&&(u.push(n.assignTexture(c,`normalMap`,o.normalTexture)),c.normalScale=new V(1,1),o.normalTexture.scale!==void 0)){let e=o.normalTexture.scale;c.normalScale.set(e,e)}if(o.occlusionTexture!==void 0&&s!==F&&(u.push(n.assignTexture(c,`aoMap`,o.occlusionTexture)),o.occlusionTexture.strength!==void 0&&(c.aoMapIntensity=o.occlusionTexture.strength)),o.emissiveFactor!==void 0&&s!==F){let t=o.emissiveFactor;c.emissive=new e().setRGB(t[0],t[1],t[2],a)}return o.emissiveTexture!==void 0&&s!==F&&u.push(n.assignTexture(c,`emissiveMap`,o.emissiveTexture,R)),Promise.all(u).then(function(){let e=new s(c);return o.name&&(e.name=o.name),Tn(e,o),n.associations.set(e,{materials:t}),o.extensions&&wn(i,e,o),e})}createUniqueName(e){let t=o.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[U.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return Fn(n,e,t)})}let a=[];for(let n=0,o=e.length;n0&&Dn(d,i),d.name=t.createUniqueName(i.name||`mesh_`+e),Tn(d,i),u.extensions&&wn(r,d,u),t.assignFinalMaterial(d),c.push(d)}for(let n=0,r=c.length;n1?new Fe:t.length===1?t[0]:new Re,o!==t[0])for(let e=0,n=t.length;e{let t=new Map;for(let[e,n]of r.associations)(e instanceof ut||e instanceof He)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];bn[i.path]===bn.weights?e.traverse(function(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}):s.push(o);let c;switch(bn[i.path]){case bn.weights:c=Ne;break;case bn.rotation:c=fe;break;case bn.position:case bn.scale:c=A;break;default:switch(n.itemSize){case 1:c=Ne;break;default:c=A;break}break}let l=r.interpolation===void 0?me:xn[r.interpolation],u=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})(),Ln=new WeakMap,Rn=class extends ye{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new Je(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,R,n).catch(n)}decodeDracoFile(e,t,n,r,i=a,o=()=>{}){let s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,s).then(t).catch(o)}decodeGeometry(e,t){let n=JSON.stringify(t);if(Ln.has(e)){let t=Ln.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),Ln.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new le;e.index&&t.setIndex(new wt(e.index.array,1));for(let n=0;n{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=zn.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=o.num_components(),c=n.num_points()*s,l=c*i.BYTES_PER_ELEMENT,u=a(e,i),d=e._malloc(l);t.GetAttributeDataArrayForAllPoints(n,o,u,l,d);let f=new i(e.HEAPF32.buffer,d,c).slice();return e._free(d),{name:r,array:f,itemSize:s}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}var Bn=class{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){let t=this.workerCreator();t.addEventListener(`message`,this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}},Vn=1000066e3,Hn=class{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let n=this._offset,r=0;for(;this._dataView.getUint8(this._offset)!==t&&re.arrayBuffer()).then(e=>WebAssembly.instantiate(e,Yn)).then(this._init):WebAssembly.instantiate(Buffer.from(Zn,`base64`),Yn).then(this._init),Kn)}_init(e){qn=e.instance,Yn.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!qn)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=qn.exports.malloc(n);Jn.set(e,r),t||=Number(qn.exports.ZSTD_findDecompressedSize(r,n));let i=qn.exports.malloc(t),a=qn.exports.ZSTD_decompress(i,t,r,n),o=Jn.slice(i,i+a);return qn.exports.free(r),qn.exports.free(i),o}},Zn=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`,Qn=`display-p3`,$n=`display-p3-linear`,er=new WeakMap,tr=0,nr,rr=class e extends ye{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Bn,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync(`texture-compression-etc1`),etc2Supported:await e.hasFeatureAsync(`texture-compression-etc2`),dxtSupported:await e.hasFeatureAsync(`texture-compression-bc`),bptcSupported:await e.hasFeatureAsync(`texture-compression-bptc`),pvrtcSupported:await e.hasFeatureAsync(`texture-compression-pvrtc`)},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:e.hasFeature(`texture-compression-etc1`),etc2Supported:e.hasFeature(`texture-compression-etc2`),dxtSupported:e.hasFeature(`texture-compression-bc`),bptcSupported:e.hasFeature(`texture-compression-bptc`),pvrtcSupported:e.hasFeature(`texture-compression-pvrtc`)}:this.workerConfig={astcSupported:e.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:e.extensions.has(`WEBGL_compressed_texture_astc`)&&e.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:e.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:e.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:e.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:e.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:e.extensions.has(`WEBGL_compressed_texture_pvrtc`)||e.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},this}init(){if(!this.transcoderPending){let t=new Je(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new Je(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),tr>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),tr++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new Je(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(er.has(e))return er.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:c,dfdFlags:l}}=e;if(n===`error`)return Promise.reject(r);let u;if(t.faceCount===6)u=new ie(i,s,c);else{let e=i[0].mipmaps;u=t.layerCount>1?new M(e,a,o,t.layerCount,s,c):new f(e,a,o,s,c)}return u.minFilter=i[0].mipmaps.length===1?S:ce,u.magFilter=S,u.generateMipmaps=!1,u.needsUpdate=!0,u.colorSpace=cr(t),u.premultiplyAlpha=!!(l&1),u}async _createTexture(e,t={}){let n=Gn(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return sr(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return er.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),tr--}};rr.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},rr.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},rr.EngineFormat={RGBAFormat:re,RGBA_ASTC_4x4_Format:Qe,RGB_BPTC_UNSIGNED_Format:se,RGBA_BPTC_Format:Ye,RGBA_ETC2_EAC_Format:ee,RGBA_PVRTC_4BPPV1_Format:te,RGBA_S3TC_DXT5_Format:b,RGB_ETC1_Format:Mt,RGB_ETC2_Format:i,RGB_PVRTC_4BPPV1_Format:ve,RGBA_S3TC_DXT1_Format:ae},rr.EngineType={UnsignedByteType:St,HalfFloatType:Be,FloatType:ot},rr.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o{let t=new Xn;await t.init(),e(t)}),n=await nr);let r=[];for(let i=0;i>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,c=e.levels[i],l;if(e.supercompressionScheme===0)l=c.levelData;else if(e.supercompressionScheme===2)l=n.decode(c.levelData,c.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let u;u=or[t]===1015?new Float32Array(l.buffer,l.byteOffset,l.byteLength/Float32Array.BYTES_PER_ELEMENT):or[t]===1016?new Uint16Array(l.buffer,l.byteOffset,l.byteLength/Uint16Array.BYTES_PER_ELEMENT):or[t]===35902||or[t]===35899?new Uint32Array(l.buffer,l.byteOffset,l.byteLength/Uint32Array.BYTES_PER_ELEMENT):l,r.push({data:u,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(ir.has(ar[t]))a=e.pixelDepth===0?new g(r[0].data,e.pixelWidth,e.pixelHeight):new _e(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?$e:it,a.magFilter=it,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new f(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?ce:S,a.magFilter=S}return a.mipmaps=r,a.type=or[t],a.format=ar[t],a.colorSpace=cr(e),a.needsUpdate=!0,Promise.resolve(a)}function cr(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?R:a:t.colorPrimaries===10?t.transferFunction===2?Qn:$n:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),``)}var lr=new _t;lr.camera=new Ve,Le.basic,Le.basic,Le.points,Le.standard,Le.physical,Le.phong;var ur=function(){var e=0,t=document.createElement(`div`);t.style.cssText=`position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000`,t.addEventListener(`click`,function(n){n.preventDefault(),r(++e%t.children.length)},!1);function n(e){return t.appendChild(e.dom),e}function r(n){for(var r=0;r=a+1e3&&(s.update(o*1e3/(e-a),100),a=e,o=0,l)){var t=performance.memory;l.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:t,setMode:r}};ur.Panel=function(e,t,n){var r=1/0,i=0,a=Math.round,o=a(window.devicePixelRatio||1),s=80*o,c=48*o,l=3*o,u=2*o,d=3*o,f=15*o,p=74*o,m=30*o,h=document.createElement(`canvas`);h.width=s,h.height=c,h.style.cssText=`width:80px;height:48px`;var g=h.getContext(`2d`);return g.font=`bold `+9*o+`px Helvetica,Arial,sans-serif`,g.textBaseline=`top`,g.fillStyle=n,g.fillRect(0,0,s,c),g.fillStyle=t,g.fillText(e,l,u),g.fillRect(d,f,p,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d,f,p,m),{dom:h,update:function(c,_){r=Math.min(r,c),i=Math.max(i,c),g.fillStyle=n,g.globalAlpha=1,g.fillRect(0,0,s,f),g.fillStyle=t,g.fillText(a(c)+` `+e+` (`+a(r)+`-`+a(i)+`)`,l,u),g.drawImage(h,d+o,f,p-o,m,d,f,p-o,m),g.fillRect(d+p-o,f,o,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d+p-o,f,o,a((1-c/_)*m))}}};var dr=class extends pt{constructor(e,t={}){let n=t.font;if(n===void 0)super();else{let r=n.generateShapes(e,t.size);t.depth===void 0&&t.height!==void 0&&console.warn(`THREE.TextGeometry: .height is now depreciated. Please use .depth instead`),t.depth=t.depth===void 0?t.height===void 0?50:t.height:t.depth,t.bevelThickness===void 0&&(t.bevelThickness=10),t.bevelSize===void 0&&(t.bevelSize=8),t.bevelEnabled===void 0&&(t.bevelEnabled=!1),super(r,t)}this.type=`TextGeometry`}},fr=class extends ye{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new Je(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){let n=i.parse(JSON.parse(e));t&&t(n)},n,r)}parse(e){return new pr(e)}},pr=class{constructor(e){this.isFont=!0,this.type=`Font`,this.data=e}generateShapes(e,t=100){let n=[],r=mr(e,t,this.data);for(let e=0,t=r.length;e>1|(G&21845)<<1;kr=(kr&52428)>>2|(kr&13107)<<2,kr=(kr&61680)>>4|(kr&3855)<<4,Or[G]=((kr&65280)>>8|(kr&255)<<8)>>1}for(var Ar=(function(e,t,n){for(var r=e.length,i=0,a=new gr(t);i>c]=l}else for(s=new gr(r),i=0;i>15-e[i]);return s}),jr=new W(288),G=0;G<144;++G)jr[G]=8;for(var G=144;G<256;++G)jr[G]=9;for(var G=256;G<280;++G)jr[G]=7;for(var G=280;G<288;++G)jr[G]=8;for(var Mr=new W(32),G=0;G<32;++G)Mr[G]=5;var Nr=Ar(jr,9,0),Pr=Ar(jr,9,1),Fr=Ar(Mr,5,0),Ir=Ar(Mr,5,1),Lr=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},Rr=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},zr=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},Br=function(e){return(e+7)/8|0},Vr=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new W(e.subarray(t,n))},Hr=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],Ur=function(e,t,n){var r=Error(t||Hr[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,Ur),!n)throw r;return r},Wr=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new W(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new W(i*3));var l=function(e){var t=n.length;if(e>t){var r=new W(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=Rr(e,d,1);var v=Rr(e,d+1,3);if(d+=3,!v){var y=Br(d)+4,b=e[y-4]|e[y-3]<<8,x=y+b;if(x>i){c&&Ur(0);break}s&&l(f+b),n.set(e.subarray(y,x),f),t.b=f+=b,t.p=d=x*8,t.f=u;continue}else if(v==1)p=Pr,m=Ir,h=9,g=5;else if(v==2){var S=Rr(e,d,31)+257,C=Rr(e,d+10,15)+4,w=S+Rr(e,d+5,31)+1;d+=14;for(var T=new W(w),E=new W(19),D=0;D>4;if(y<16)T[D++]=y;else{var j=0,M=0;for(y==16?(M=3+Rr(e,d,3),d+=2,j=T[D-1]):y==17?(M=3+Rr(e,d,7),d+=3):y==18&&(M=11+Rr(e,d,127),d+=7);M--;)T[D++]=j}}var te=T.subarray(0,S),N=T.subarray(S);h=Lr(te),g=Lr(N),p=Ar(te,h,1),m=Ar(N,g,1)}else Ur(1);if(d>_){c&&Ur(0);break}}s&&l(f+131072);for(var ne=(1<>4;if(d+=j&15,d>_){c&&Ur(0);break}if(j||Ur(2),ae<256)n[f++]=ae;else if(ae==256){ie=d,p=null;break}else{var oe=ae-254;if(ae>264){var D=ae-257,P=vr[D];oe=Rr(e,d,(1<>4;F||Ur(3),d+=F&15;var N=Er[se];if(se>3){var P=yr[se];N+=zr(e,d)&(1<_){c&&Ur(0);break}s&&l(f+131072);var ce=f+oe;if(f>8},Kr=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},qr=function(e,t){for(var n=[],r=0;rf&&(f=a[r].s);var p=new gr(f+1),m=Jr(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<t)h+=_-(1<>=g;h>0;){var y=a[r].s;p[y]=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new W(p),l:m}},Jr=function(e,t,n){return e.s==-1?Math.max(Jr(e.l,t,n+1),Jr(e.r,t,n+1)):t[e.s]=n},Yr=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new gr(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},Xr=function(e,t){for(var n=0,r=0;r>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a4&&!E[br[O-1]];--O);var k=l+5<<3,ee=Xr(i,jr)+Xr(a,Mr)+o,A=Xr(i,f)+Xr(a,h)+o+14+3*O+Xr(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&k<=ee&&k<=A)return Zr(t,u,e.subarray(c,c+l));var j,M,te,N;if(Gr(t,u,1+(A15&&(Gr(t,u,ae[w]>>5&127),u+=ae[w]>>12)}}else j=Nr,M=jr,te=Fr,N=Mr;for(var w=0;w255){var oe=P>>18&31;Kr(t,u,j[oe+257]),u+=M[oe+257],oe>7&&(Gr(t,u,P>>23&31),u+=vr[oe]);var F=P&31;Kr(t,u,te[F]),u+=N[F],F>3&&(Kr(t,u,P>>5&8191),u+=yr[F])}else Kr(t,u,j[P]),u+=M[P]}return Kr(t,u,j[256]),u+M[256]},$r=new _r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ei=new W(0),ti=function(e,t,n,r,i,a){var o=a.z||e.length,s=new W(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=$r[t-1],f=d>>13,p=d&8191,m=(1<7e3||E>24576)&&(j>423||!l)){u=Qr(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var M=0;M<286;++M)x[M]=0;for(var M=0;M<30;++M)S[M]=0}var te=2,N=0,ne=p,re=ee-A&32767;if(j>2&&k==y(T-re))for(var ie=Math.min(f,j)-1,ae=Math.min(32767,T),oe=Math.min(258,j);re<=ae&&--ne&&ee!=A;){if(e[T+te]==e[T+te-re]){for(var P=0;Pte){if(te=P,N=re,P>ie)break;for(var F=Math.min(re,P-2),se=0,M=0;Mse&&(se=le,A=ce)}}}ee=A,A=h[ee],re+=ee-A&32767}if(N){b[E++]=268435456|wr[te]<<18|Dr[N];var ue=wr[te]&31,de=Dr[N]&31;w+=vr[ue]+yr[de],++x[257+ue],++S[de],D=T+te,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T=o&&(c[u/8|0]=l,fe=o),u=Zr(c,u+1,e.subarray(T,fe))}a.i=o}return Vr(s,0,r+Br(u)+i)},ni=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),ri=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r>>8;e=n},d:function(){return~e}}},ii=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new W(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return ti(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},ai=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},oi=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},si=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&Ur(6,`invalid zlib data`),(e[1]>>5&1)==+!t&&Ur(6,`invalid zlib data: `+(e[1]&32?`need`:`unexpected`)+` dictionary`),(e[1]>>3&4)+2};function ci(e,t){return ii(e,t||{},0,0)}function li(e,t){return Wr(e.subarray(si(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}var ui=function(e,t,n,r){for(var i in e){var a=e[i],o=t+i,s=r;Array.isArray(a)&&(s=ai(r,a[1]),a=a[0]),a instanceof W?n[o]=[a,s]:(n[o+=`/`]=[new W(0),s],ui(a,o,n,r))}},di=typeof TextEncoder<`u`&&new TextEncoder,fi=typeof TextDecoder<`u`&&new TextDecoder;try{fi.decode(ei,{stream:!0})}catch{}function pi(e,t){if(t){for(var n=new W(e.length),r=0;r>1)),o=0,s=function(e){a[o++]=e},r=0;ra.length){var c=new W(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return Vr(a,0,o)}var mi=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&Ur(9),t+=r+4}return t},hi=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=mi(l);oi(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&Ur(10),oi(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&(oi(e,t,n.crc),oi(e,t+4,a<0?-a-2:a),oi(e,t+8,n.size)),oi(e,t+12,c),oi(e,t+14,d),t+=16,o!=null&&(oi(e,t,u),oi(e,t+6,n.attrs),oi(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;oi(e,t,+m),oi(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},gi=function(e,t,n,r,i){oi(e,t,101010256),oi(e,t+8,n),oi(e,t+10,n),oi(e,t+12,r),oi(e,t+16,i)};function _i(e,t){t||={};var n={},r=[];ui(e,``,n,t);var i=0,a=0;for(var o in n){var s=n[o],c=s[0],l=s[1],u=l.level==0?0:8,d=pi(o),f=d.length,p=l.comment,m=p&&pi(p),h=m&&m.length,g=mi(l.extra);f>65535&&Ur(11);var _=u?ci(c,l):c,v=_.length,y=ri();y.p(c),r.push(ai(l,{size:c.length,crc:y.d(),c:_,f:d,m,u:f!=o.length||m&&p.length!=h,o:i,compression:u})),i+=30+f+g+v,a+=76+2*(f+g)+(h||0)+v}for(var b=new W(a+22),x=i,S=a-i,C=0;C>3,r=65537,i=16384,o=i-1,s=65535,c=2.7182818**2.2;function l(e,n){let r=0;for(let i=0;i>3]&1<<(i&7))&&(n[r++]=i);let i=r-1;for(;r>n&(1<0;--e){let n=t+p[e]>>1;p[e]=t,t=n}for(let t=0;t0&&(e[t]=n|p[n]++<<6)}}function h(e,t,n,r,i,a){let o=t,s=0,c=0;for(;r<=i;r++){if(o.value-t.value>n)return!1;f(6,s,c,e,o);let l=d.l;if(s=d.c,c=d.lc,a[r]=l,l==63){if(o.value-t.value>n)throw Error(`Something wrong with hufUnpackEncTable`);f(8,s,c,e,o);let l=d.l+6;if(s=d.c,c=d.lc,r+l>i+1)throw Error(`Something wrong with hufUnpackEncTable`);for(;l--;)a[r++]=0;r--}else if(l>=59){let e=l-59+2;if(r+e>i+1)throw Error(`Something wrong with hufUnpackEncTable`);for(;e--;)a[r++]=0;r--}}m(a)}function g(e){return e&63}function _(e){return e>>6}function v(e,t,n,r){for(;t<=n;t++){let n=_(e[t]),i=g(e[t]);if(n>>i)throw Error(`Invalid table entry`);if(i>14){let e=r[n>>i-14];if(e.len)throw Error(`Invalid table entry`);if(e.lit++,e.p){let t=e.p;e.p=Array(e.lit);for(let n=0;n0;a--){let a=r[(n<<14-i)+e];if(a.len||a.p)throw Error(`Invalid table entry`);a.len=i,a.lit=t,e++}}}return!0}let y={c:0,lc:0};function b(e,t,n,r){e=e<<8|ye(n,r),t+=8,y.c=e,y.lc=t}let x={c:0,lc:0};function S(e,t,n,r,i,a,o,s,c){if(e==t){r<8&&(b(n,r,i,a),n=y.c,r=y.lc),r-=8;let e=n>>r;if(e=new Uint8Array([e])[0],s.value+e>c)return!1;let t=o[s.value-1];for(;e-- >0;)o[s.value++]=t}else if(s.value32767?t-65536:t}let T={a:0,b:0};function E(e,t){let n=w(e),r=w(t),i=n+(r&1)+(r>>1),a=i,o=i-r;T.a=a,T.b=o}function D(e,t){let n=C(e),r=C(t),i=n-(r>>1)&s;T.a=r+i-32768&s,T.b=i}function O(e,t,n,r,i,a,o){let s=o<16384,c=n>i?i:n,l=1,u,d;for(;l<=c;)l<<=1;for(l>>=1,u=l,l>>=1;l>=1;){d=0;let o=d+a*(i-u),c=a*l,f=a*u,p=r*l,m=r*u,h,g,_,v;for(;d<=o;d+=f){let i=d,a=d+r*(n-u);for(;i<=a;i+=m){let n=i+p,r=i+c,a=r+p;s?(E(e[i+t],e[r+t]),h=T.a,_=T.b,E(e[n+t],e[a+t]),g=T.a,v=T.b,E(h,g),e[i+t]=T.a,e[n+t]=T.b,E(_,v),e[r+t]=T.a,e[a+t]=T.b):(D(e[i+t],e[r+t]),h=T.a,_=T.b,D(e[n+t],e[a+t]),g=T.a,v=T.b,D(h,g),e[i+t]=T.a,e[n+t]=T.b,D(_,v),e[r+t]=T.a,e[a+t]=T.b)}if(n&l){let n=i+c;s?E(e[i+t],e[n+t]):D(e[i+t],e[n+t]),h=T.a,e[n+t]=T.b,e[i+t]=h}}if(i&l){let i=d,a=d+r*(n-u);for(;i<=a;i+=m){let n=i+p;s?E(e[i+t],e[n+t]):D(e[i+t],e[n+t]),h=T.a,e[n+t]=T.b,e[i+t]=h}}u=l,l>>=1}return d}function k(e,t,n,r,i,a,s,c,l){let u=0,d=0,f=s,p=Math.trunc(r.value+(i+7)/8);for(;r.value=14;){let i=t[u>>d-14&o];if(i.len)d-=i.len,S(i.lit,a,u,d,n,r,c,l,f),u=x.c,d=x.lc;else{if(!i.p)throw Error(`hufDecode issues`);let t;for(t=0;t=o&&_(e[i.p[t]])==(u>>d-o&(1<>=m,d-=m;d>0;){let e=t[u<<14-d&o];if(e.len)d-=e.len,S(e.lit,a,u,d,n,r,c,l,f),u=x.c,d=x.lc;else throw Error(`hufDecode issues`)}return!0}function ee(e,t,n,a,o,s){let c={value:0},l=n.value,d=ve(t,n),f=ve(t,n);n.value+=4;let p=ve(t,n);if(n.value+=4,d<0||d>=r||f<0||f>=r)throw Error(`Something wrong with HUF_ENCSIZE`);let m=Array(r),g=Array(i);if(u(g),h(e,n,a-(n.value-l),d,f,m),p>8*(a-(n.value-l)))throw Error(`Something wrong with hufUncompress`);v(m,d,f,g),k(m,g,e,n,p,f,s,o,c)}function A(e,t,n){for(let r=0;ra||(t[i++]=e[n++],i>a));)t[i++]=e[r++]}function te(e){let t=e.byteLength,n=[],r=0,i=new DataView(e);for(;t>0;){let e=i.getInt8(r++);if(e<0){let a=-e;t-=a+1;for(let e=0;e>8==255?i+=r&255:(n[i]=r,i++),e.value++}function ie(e,t){t[0]=z(e[0]),t[1]=z(e[1]),t[2]=z(e[5]),t[3]=z(e[6]),t[4]=z(e[14]),t[5]=z(e[15]),t[6]=z(e[27]),t[7]=z(e[28]),t[8]=z(e[2]),t[9]=z(e[4]),t[10]=z(e[7]),t[11]=z(e[13]),t[12]=z(e[16]),t[13]=z(e[26]),t[14]=z(e[29]),t[15]=z(e[42]),t[16]=z(e[3]),t[17]=z(e[8]),t[18]=z(e[12]),t[19]=z(e[17]),t[20]=z(e[25]),t[21]=z(e[30]),t[22]=z(e[41]),t[23]=z(e[43]),t[24]=z(e[9]),t[25]=z(e[11]),t[26]=z(e[18]),t[27]=z(e[24]),t[28]=z(e[31]),t[29]=z(e[40]),t[30]=z(e[44]),t[31]=z(e[53]),t[32]=z(e[10]),t[33]=z(e[19]),t[34]=z(e[23]),t[35]=z(e[32]),t[36]=z(e[39]),t[37]=z(e[45]),t[38]=z(e[52]),t[39]=z(e[54]),t[40]=z(e[20]),t[41]=z(e[22]),t[42]=z(e[33]),t[43]=z(e[38]),t[44]=z(e[46]),t[45]=z(e[51]),t[46]=z(e[55]),t[47]=z(e[60]),t[48]=z(e[21]),t[49]=z(e[34]),t[50]=z(e[37]),t[51]=z(e[47]),t[52]=z(e[50]),t[53]=z(e[56]),t[54]=z(e[59]),t[55]=z(e[61]),t[56]=z(e[35]),t[57]=z(e[36]),t[58]=z(e[48]),t[59]=z(e[49]),t[60]=z(e[57]),t[61]=z(e[58]),t[62]=z(e[62]),t[63]=z(e[63])}function ae(e){let t=.5*Math.cos(3.14159/4),n=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),i=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(5*3.14159/16),o=.5*Math.cos(3*3.14159/8),s=.5*Math.cos(7*3.14159/16),c=[,,,,],l=[,,,,],u=[,,,,],d=[,,,,];for(let f=0;f<8;++f){let p=f*8;c[0]=r*e[p+2],c[1]=o*e[p+2],c[2]=r*e[p+6],c[3]=o*e[p+6],l[0]=n*e[p+1]+i*e[p+3]+a*e[p+5]+s*e[p+7],l[1]=i*e[p+1]-s*e[p+3]-n*e[p+5]-a*e[p+7],l[2]=a*e[p+1]-n*e[p+3]+s*e[p+5]+i*e[p+7],l[3]=s*e[p+1]-a*e[p+3]+i*e[p+5]-n*e[p+7],u[0]=t*(e[p+0]+e[p+4]),u[3]=t*(e[p+0]-e[p+4]),u[1]=c[0]+c[3],u[2]=c[1]-c[2],d[0]=u[0]+u[1],d[1]=u[3]+u[2],d[2]=u[3]-u[2],d[3]=u[0]-u[1],e[p+0]=d[0]+l[0],e[p+1]=d[1]+l[1],e[p+2]=d[2]+l[2],e[p+3]=d[3]+l[3],e[p+4]=d[3]-l[3],e[p+5]=d[2]-l[2],e[p+6]=d[1]-l[1],e[p+7]=d[0]-l[0]}for(let f=0;f<8;++f)c[0]=r*e[16+f],c[1]=o*e[16+f],c[2]=r*e[48+f],c[3]=o*e[48+f],l[0]=n*e[8+f]+i*e[24+f]+a*e[40+f]+s*e[56+f],l[1]=i*e[8+f]-s*e[24+f]-n*e[40+f]-a*e[56+f],l[2]=a*e[8+f]-n*e[24+f]+s*e[40+f]+i*e[56+f],l[3]=s*e[8+f]-a*e[24+f]+i*e[40+f]-n*e[56+f],u[0]=t*(e[f]+e[32+f]),u[3]=t*(e[f]-e[32+f]),u[1]=c[0]+c[3],u[2]=c[1]-c[2],d[0]=u[0]+u[1],d[1]=u[3]+u[2],d[2]=u[3]-u[2],d[3]=u[0]-u[1],e[0+f]=d[0]+l[0],e[8+f]=d[1]+l[1],e[16+f]=d[2]+l[2],e[24+f]=d[3]+l[3],e[32+f]=d[3]-l[3],e[40+f]=d[2]-l[2],e[48+f]=d[1]-l[1],e[56+f]=d[0]-l[0]}function oe(e){for(let t=0;t<64;++t){let n=e[0][t],r=e[1][t],i=e[2][t];e[0][t]=n+1.5747*i,e[1][t]=n-.1873*r-.4682*i,e[2][t]=n+1.8556*r}}function P(e,t,n){for(let r=0;r<64;++r)t[n+r]=be.toHalfFloat(F(e[r]))}function F(e){return e<=1?Math.sign(e)*Math.abs(e)**2.2:Math.sign(e)*c**(Math.abs(e)-1)}function se(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function ce(e){let t=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),n=new Uint8Array(te(t)),r=new Uint8Array(n.length);return j(n),M(n,r),new DataView(r.buffer)}function le(e){let t=li(e.array.slice(e.offset.value,e.offset.value+e.size)),n=new Uint8Array(t.length);return j(t),M(t,n),new DataView(n.buffer)}function ue(e){let r=e.viewer,i={value:e.offset.value},a=new Uint16Array(e.columns*e.lines*(e.inputChannels.length*e.type)),o=new Uint8Array(n),s=0,c=Array(e.inputChannels.length);for(let t=0,n=e.inputChannels.length;t=n)throw Error(`Something is wrong with PIZ_COMPRESSION BITMAP_SIZE`);if(u<=d)for(let e=0;e0;){let e=pe(t.buffer,n),r=I(t,n),i=r>>2&3,s=(r>>4)-1,c=new Int8Array([s])[0],l=I(t,n);a.push({name:e,index:c,type:l,compression:i}),o-=e.length+3}let s=We.channels,c=Array(e.inputChannels.length);for(let t=0;t=0&&(l.idx[r.index]=t),e.offset=t)}}let u,d,f;if(i.acCompressedSize>0)switch(i.acCompression){case 0:u=new Uint16Array(i.totalAcUncompressedCount),ee(e.array,t,n,i.acCompressedSize,u,i.totalAcUncompressedCount);break;case 1:let r=li(e.array.slice(n.value,n.value+i.totalAcUncompressedCount));u=new Uint16Array(r.buffer),n.value+=i.totalAcUncompressedCount;break}if(i.dcCompressedSize>0){let t={array:e.array,offset:n,size:i.dcCompressedSize};d=new Uint16Array(le(t).buffer),n.value+=i.dcCompressedSize}i.rleRawSize>0&&(f=te(li(e.array.slice(n.value,n.value+i.rleCompressedSize)).buffer),n.value+=i.rleCompressedSize);let p=0,m=Array(c.length);for(let e=0;e>10,n=e&1023;return(e>>15?-1:1)*(t?t===31?n?NaN:1/0:2**(t-15)*(1+n/1024):n/1024*6103515625e-14)}function Se(e,t){let n=e.getUint16(t.value,!0);return t.value+=2,n}function Ce(e,t){return z(Se(e,t))}function we(e,t,n,r){let i=n.value,a=[];for(;n.value>4]}}function Ae(e,t){return[L(e,t),L(e,t)]}function je(e,t){return[L(e,t),L(e,t),L(e,t)]}function Me(e,t,n,r,i){if(r===`string`||r===`stringvector`||r===`iccProfile`)return me(t,n,i);if(r===`chlist`)return we(e,t,n,i);if(r===`chromaticities`)return Te(e,n);if(r===`compression`)return Ee(e,n);if(r===`box2i`)return De(e,n);if(r===`envmap`)return Oe(e,n);if(r===`tiledesc`)return ke(e,n);if(r===`lineOrder`)return B(e,n);if(r===`float`)return L(e,n);if(r===`v2f`)return Ae(e,n);if(r===`v3f`)return je(e,n);if(r===`int`)return _e(e,n);if(r===`rational`)return he(e,n);if(r===`timecode`)return ge(e,n);if(r===`preview`)return n.value+=i,`skipped`;n.value+=i}function Ne(e,t){let n=Math.log2(e);return t==`ROUND_DOWN`?Math.floor(n):Math.ceil(n)}function Pe(e,t,n){let r=0;switch(e.levelMode){case`ONE_LEVEL`:r=1;break;case`MIPMAP_LEVELS`:r=Ne(Math.max(t,n),e.roundingMode)+1;break;case`RIPMAP_LEVELS`:throw Error(`THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.`)}return r}function Fe(e,t,n,r){let i=Array(e);for(let a=0;ae.width?e.width-a:e.blockWidth,e.lines=o+e.blockHeight>e.height?e.height-o:e.blockHeight;let s=e.columns*e.totalBytes,c=e.sizee.height?e.height-i:e.blockHeight;let a=e.columns*e.totalBytes,o=e.size=e.height)continue;let c=t*a,l=(e.height-1-s)*e.outLineWidth;for(let t=0;te:o.scanOrder=e=>o.height-1-e,o.outputChannels==4?(o.format=re,o.colorSpace=a):(o.format=lt,o.colorSpace=``),e.spec.singleTile){o.blockHeight=e.tiles.ySize,o.blockWidth=e.tiles.xSize;let n=Pe(e.tiles,o.width,o.height),i=Fe(n,o.width,e.tiles.xSize,e.tiles.roundingMode),a=Fe(n,o.height,e.tiles.ySize,e.tiles.roundingMode);o.tileCount=i[0]*a[0];for(let e=0;e(i=s.indexOf(` +`))&&a=e.byteLength||!(l=n(e)))&&t(1,`no header found`),(u=l.match(r))||t(3,`bad initial token`),c.valid|=1,c.programtype=u[1],c.string+=l+` +`;l=n(e),!1!==l;){if(c.string+=l+` +`,l.charAt(0)===`#`){c.comments+=l+` +`;continue}if((u=l.match(i))&&(c.gamma=parseFloat(u[1])),(u=l.match(a))&&(c.exposure=parseFloat(u[1])),(u=l.match(o))&&(c.valid|=2,c.format=u[1]),(u=l.match(s))&&(c.valid|=4,c.height=parseInt(u[1],10),c.width=parseInt(u[2],10)),c.valid&2&&c.valid&4)break}return c.valid&2||t(3,`missing format specifier`),c.valid&4||t(3,`missing image size specifier`),c},i=function(e,n,r){let i=n;if(i<8||i>32767||e[0]!==2||e[1]!==2||e[2]&128)return new Uint8Array(e);i!==(e[2]<<8|e[3])&&t(3,`wrong scanline width`);let a=new Uint8Array(4*n*r);a.length||t(4,`unable to allocate buffer space`);let o=0,s=0,c=4*i,l=new Uint8Array(4),u=new Uint8Array(c),d=r;for(;d>0&&se.byteLength&&t(1),l[0]=e[s++],l[1]=e[s++],l[2]=e[s++],l[3]=e[s++],(l[0]!=2||l[1]!=2||(l[2]<<8|l[3])!=i)&&t(3,`bad rgbe scanline format`);let n=0,r;for(;n128;if(i&&(r-=128),(r===0||n+r>c)&&t(3,`bad scanline data`),i){let t=e[s++];for(let e=0;e.9&&(r.visible=!1)),this.axis===`Y`&&(K.setFromEuler(Fi.set(0,0,Math.PI/2)),r.quaternion.copy(t).multiply(K),Math.abs(q.copy(Ui).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Z`&&(K.setFromEuler(Fi.set(0,Math.PI/2,0)),r.quaternion.copy(t).multiply(K),Math.abs(q.copy(Wi).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`XYZE`&&(K.setFromEuler(Fi.set(0,Math.PI/2,0)),q.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(Li.lookAt(Ii,q,Ui)),r.quaternion.multiply(K),r.visible=this.dragging),this.axis===`E`&&(r.visible=!1)):r.name===`START`?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name===`END`?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name===`DELTA`?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),xi.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),xi.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(xi),r.visible=this.dragging):(r.quaternion.copy(t),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}if(r.quaternion.copy(t),this.mode===`translate`||this.mode===`scale`){let e=.99,n=.2;r.name===`X`&&Math.abs(q.copy(Hi).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Y`&&Math.abs(q.copy(Ui).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Z`&&Math.abs(q.copy(Wi).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XY`&&Math.abs(q.copy(Wi).applyQuaternion(t).dot(this.eye))Math.PI&&(r-=ia),i<-Math.PI?i+=ia:i>Math.PI&&(i-=ia),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.enableDamping?this._currentScale=w.lerp(this._currentScale,this._scale,this.dampingFactor):this._currentScale=this._scale,this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._currentScale),a=Math.abs(e-this._spherical.radius)>aa*100}if(J.setFromSpherical(this._spherical),J.applyQuaternion(this._quatInverse),t.copy(this.target).add(J),this.object.parent?this.object.parent.worldToLocal(t):this.object.position.copy(t),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=J.length();e=this._clampDistance(t*this._currentScale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=Math.abs(n)>aa}else if(this.object.isOrthographicCamera){let t=new n(this._mouse.x,this._mouse.y,0);t.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._currentScale)),this.object.updateProjectionMatrix(),a=Math.abs(r-this.object.zoom)>aa;let i=new n(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(t),this.object.updateMatrixWorld(),e=J.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(ta.origin.copy(this.object.position),ta.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ta.direction))aa&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,a||this._lastPosition.distanceToSquared(this.object.position)>aa||8*(1-this._lastQuaternion.dot(this.object.quaternion))>aa||this._lastTargetPosition.distanceToSquared(this.target)>aa?(this.dispatchEvent(Zi),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this._lastIsDamping=!0,this._isDamping=!0,!0):(this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this.state===Y.NONE&&(this._lastIsDamping=this._isDamping,this._isDamping=!1),this._lastIsDamping&&!this._isDamping&&this.state===Y.NONE&&(this._isDamping=!1,this._lastIsDamping=!1,this.dispatchEvent(ea)),this._performCursorZoom=!1,!1)}_getAutoRotationAngle(e){return e===null?ia/60/60*this.autoRotateSpeed:ia/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){J.setFromMatrixColumn(t,0),J.multiplyScalar(-e),this._panOffset.add(J)}_panUp(e,t){this.screenSpacePanning===!0?J.setFromMatrixColumn(t,1):(J.setFromMatrixColumn(t,0),J.crossVectors(this.object.up,J)),J.multiplyScalar(e),this._panOffset.add(J)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){this.object.getWorldPosition(J).sub(this.target);let r=J.length();r*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*r/n.clientHeight,this.object.matrixWorld),this._panUp(2*t*r/n.clientHeight,this.object.matrixWorld)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrixWorld),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrixWorld)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(ia*this._rotateDelta.x/t.clientHeight),this._rotateUp(ia*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateUp(ia*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateUp(-ia*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateLeft(ia*this.rotateSpeed/this.domElement.clientHeight):this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateLeft(-ia*this.rotateSpeed/this.domElement.clientHeight):this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(ia*this._rotateDelta.x/t.clientHeight),this._rotateUp(ia*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t4?n=e.array[i*e.itemSize+t]:(t===0?n=e.getX(i):t===1?n=e.getY(i):t===2?n=e.getZ(i):t===3&&(n=e.getW(i)),e.normalized===!0&&(n=w.normalize(n,e.array))),r.min[t]=Math.min(r.min[t],n),r.max[t]=Math.max(r.max[t],n)}return r}function Ua(e){return Math.ceil(e/4)*4}function Wa(e,t=0){let n=Ua(e.byteLength);if(n!==e.byteLength){let r=new Uint8Array(n);if(r.set(new Uint8Array(e)),t!==0)for(let i=e.byteLength;i`u`&&typeof OffscreenCanvas<`u`?new OffscreenCanvas(1,1):document.createElement(`canvas`)}function Ka(e,t){if(e.toBlob!==void 0)return new Promise(n=>e.toBlob(n,t));let n;return t===`image/jpeg`?n=.92:t===`image/webp`&&(n=.8),e.convertToBlob({type:t,quality:n})}var qa=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:`2.0`,generator:`THREE.GLTFExporter r`+d}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}async write(e,t,n={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},n),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),await Promise.all(this.pending);let r=this,i=r.buffers,a=r.json;n=r.options;let o=r.extensionsUsed,s=r.extensionsRequired,c=new Blob(i,{type:`application/octet-stream`}),l=Object.keys(o),u=Object.keys(s);if(l.length>0&&(a.extensionsUsed=l),u.length>0&&(a.extensionsRequired=u),a.buffers&&a.buffers.length>0&&(a.buffers[0].byteLength=c.size),n.binary===!0){let e=new FileReader;e.readAsArrayBuffer(c),e.onloadend=function(){let n=Wa(e.result),r=new DataView(new ArrayBuffer(Ia));r.setUint32(0,n.byteLength,!0),r.setUint32(4,Ra,!0);let i=Wa(Ba(JSON.stringify(a)),32),o=new DataView(new ArrayBuffer(Ia));o.setUint32(0,i.byteLength,!0),o.setUint32(4,La,!0);let s=new ArrayBuffer(Na),c=new DataView(s);c.setUint32(0,Pa,!0),c.setUint32(4,Fa,!0);let l=Na+o.byteLength+i.byteLength+r.byteLength+n.byteLength;c.setUint32(8,l,!0);let u=new Blob([s,o,i,r,n],{type:`application/octet-stream`}),d=new FileReader;d.readAsArrayBuffer(u),d.onloadend=function(){t(d.result)}}}else if(a.buffers&&a.buffers.length>0){let e=new FileReader;e.readAsDataURL(c),e.onloadend=function(){let n=e.result;a.buffers[0].uri=n,t(a)}}else t(a)}serializeUserData(e,t){if(Object.keys(e.userData).length===0)return;let n=this.options,r=this.extensionsUsed;try{let i=JSON.parse(JSON.stringify(e.userData));if(n.includeCustomExtensions&&i.gltfExtensions){t.extensions===void 0&&(t.extensions={});for(let e in i.gltfExtensions)t.extensions[e]=i.gltfExtensions[e],r[e]=!0;delete i.gltfExtensions}Object.keys(i).length>0&&(t.extras=i)}catch(t){console.warn(`THREE.GLTFExporter: userData of '`+e.name+`' won't be serialized because of JSON.stringify error - `+t.message)}}getUID(e,t=!1){if(this.uids.has(e)===!1){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let t=new n;for(let n=0,r=e.count;n5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let r=e.clone(),i=new n;for(let e=0,t=r.count;e4?r=e.array[i*e.itemSize+n]:(n===0?r=e.getX(i):n===1?r=e.getY(i):n===2?r=e.getZ(i):n===3&&(r=e.getW(i)),e.normalized===!0&&(r=w.normalize(r,e.array))),t===X.FLOAT?l.setFloat32(u,r,!0):t===X.INT?l.setInt32(u,r,!0):t===X.UNSIGNED_INT?l.setUint32(u,r,!0):t===X.SHORT?l.setInt16(u,r,!0):t===X.UNSIGNED_SHORT?l.setUint16(u,r,!0):t===X.BYTE?l.setInt8(u,r):t===X.UNSIGNED_BYTE&&l.setUint8(u,r),u+=o}u%s!==0&&(u+=s-u%s)}let d={buffer:this.processBuffer(l.buffer),byteOffset:this.byteOffset,byteLength:c};return i!==void 0&&(d.target=i),i===X.ARRAY_BUFFER&&(d.byteStride=s),this.byteOffset+=c,a.bufferViews.push(d),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,n=t.json;return n.bufferViews||=[],new Promise(function(r){let i=new FileReader;i.readAsArrayBuffer(e),i.onloadend=function(){let e=Wa(i.result),a={buffer:t.processBuffer(e),byteOffset:t.byteOffset,byteLength:e.byteLength};t.byteOffset+=e.byteLength,r(n.bufferViews.push(a)-1)}})}processAccessor(e,t,n,r){let i=this.json,a={1:`SCALAR`,2:`VEC2`,3:`VEC3`,4:`VEC4`,9:`MAT3`,16:`MAT4`},o;if(e.array.constructor===Float32Array)o=X.FLOAT;else if(e.array.constructor===Int32Array)o=X.INT;else if(e.array.constructor===Uint32Array)o=X.UNSIGNED_INT;else if(e.array.constructor===Int16Array)o=X.SHORT;else if(e.array.constructor===Uint16Array)o=X.UNSIGNED_SHORT;else if(e.array.constructor===Int8Array)o=X.BYTE;else if(e.array.constructor===Uint8Array)o=X.UNSIGNED_BYTE;else throw Error(`THREE.GLTFExporter: Unsupported bufferAttribute component type: `+e.array.constructor.name);if(n===void 0&&(n=0),(r===void 0||r===1/0)&&(r=e.count),r===0)return null;let s=Ha(e,n,r),c;t!==void 0&&(c=e===t.index?X.ELEMENT_ARRAY_BUFFER:X.ARRAY_BUFFER);let l=this.processBufferView(e,o,n,r,c),u={bufferView:l.id,byteOffset:l.byteOffset,componentType:o,count:r,max:s.max,min:s.min,type:a[e.itemSize]};return e.normalized===!0&&(u.normalized=!0),i.accessors||=[],i.accessors.push(u)-1}processImage(e,t,n,r=`image/png`){if(e!==null){let i=this,a=i.cache,o=i.json,s=i.options,c=i.pending;a.images.has(e)||a.images.set(e,{});let l=a.images.get(e),u=r+`:flipY/`+n.toString();if(l[u]!==void 0)return l[u];o.images||=[];let d={mimeType:r},f=Ga();f.width=Math.min(e.width,s.maxTextureSize),f.height=Math.min(e.height,s.maxTextureSize);let p=f.getContext(`2d`,{willReadFrequently:!0});if(n===!0&&(p.translate(0,f.height),p.scale(1,-1)),e.data!==void 0){t!==1023&&console.error(`GLTFExporter: Only RGBAFormat is supported.`,t),(e.width>s.maxTextureSize||e.height>s.maxTextureSize)&&console.warn(`GLTFExporter: Image size is bigger than maxTextureSize`,e);let n=new Uint8ClampedArray(e.height*e.width*4);for(let t=0;ti.processBufferViewImage(e)).then(e=>{d.bufferView=e})):f.toDataURL===void 0?c.push(Ka(f,r).then(e=>new FileReader().readAsDataURL(e)).then(e=>{d.uri=e})):d.uri=f.toDataURL(r);let m=o.images.push(d)-1;return l[u]=m,m}else throw Error(`THREE.GLTFExporter: No valid image data found. Unable to process texture.`)}processSampler(e){let t=this.json;t.samplers||=[];let n={magFilter:Aa[e.magFilter],minFilter:Aa[e.minFilter],wrapS:Aa[e.wrapS],wrapT:Aa[e.wrapT]};return t.samplers.push(n)-1}processTexture(e){let t=this.options,n=this.cache,r=this.json;if(n.textures.has(e))return n.textures.get(e);let i={keep:!0,newTexture:null};if(this._invokeAll(function(t){t.beforeWriteTexture&&t.beforeWriteTexture(e,i)}),i.keep===!1)return null;i.newTexture!=null&&(e=i.newTexture),r.textures||=[],e instanceof f&&(e=Ea(e,t.maxTextureSize));let a=e.userData.mimeType;a===`image/webp`&&(a=`image/png`);let o={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,a)};e.name&&(o.name=e.name),this._invokeAll(function(t){t.writeTexture&&t.writeTexture(e,o)});let s=r.textures.push(o)-1;return n.textures.set(e,s),s}processMaterial(e){let t=this.cache,n=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn(`GLTFExporter: THREE.ShaderMaterial not supported.`),null;n.materials||=[];let r={pbrMetallicRoughness:{}};e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn(`GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.`);let i=e.color.toArray().concat([e.opacity]);za(i,[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=i),e.isMeshStandardMaterial?(r.pbrMetallicRoughness.metallicFactor=e.metalness,r.pbrMetallicRoughness.roughnessFactor=e.roughness):(r.pbrMetallicRoughness.metallicFactor=.5,r.pbrMetallicRoughness.roughnessFactor=.5);let a=e.metalnessMap?.image?e.metalnessMap:void 0,o=e.roughnessMap?.image?e.roughnessMap:void 0;if(a||o){let e=this.buildMetalRoughTexture(a,o),t={index:this.processTexture(e),channel:e.channel};this.applyTextureTransform(t,e),r.pbrMetallicRoughness.metallicRoughnessTexture=t}if(e.map){let t={index:this.processTexture(e.map),texCoord:e.map.channel};this.applyTextureTransform(t,e.map),r.pbrMetallicRoughness.baseColorTexture=t}if(e.emissive){let t=e.emissive;if(Math.max(t.r,t.g,t.b)>0&&(r.emissiveFactor=e.emissive.toArray()),e.emissiveMap?.image){let t={index:this.processTexture(e.emissiveMap),texCoord:e.emissiveMap.channel};this.applyTextureTransform(t,e.emissiveMap),r.emissiveTexture=t}}if(e.normalMap?.image){let t={index:this.processTexture(e.normalMap),texCoord:e.normalMap.channel};e.normalScale&&e.normalScale.x!==1&&(t.scale=e.normalScale.x),this.applyTextureTransform(t,e.normalMap),r.normalTexture=t}if(e.aoMap?.image){let t={index:this.processTexture(e.aoMap),texCoord:e.aoMap.channel};e.aoMapIntensity!==1&&(t.strength=e.aoMapIntensity),this.applyTextureTransform(t,e.aoMap),r.occlusionTexture=t}e.transparent?r.alphaMode=`BLEND`:e.alphaTest>0&&(r.alphaMode=`MASK`,r.alphaCutoff=e.alphaTest),e.side===2&&(r.doubleSided=!0),e.name!==``&&(r.name=e.name),this.serializeUserData(e,r),this._invokeAll(function(t){t.writeMaterial&&t.writeMaterial(e,r)});let s=n.materials.push(r)-1;return t.materials.set(e,s),s}processMesh(e){let t={keep:!0};if(this._invokeAll(function(n){n.beforeWriteMesh&&n.beforeWriteMesh(e,t)}),t.keep!=1)return null;let n=this.cache,r=this.json,i=[e.geometry.uuid];if(Array.isArray(e.material))for(let t=0,n=e.material.length;t0){let t=[],r=[],i={};if(e.morphTargetDictionary!==void 0)for(let t in e.morphTargetDictionary)i[e.morphTargetDictionary[t]]=t;for(let a=0;a0&&(c.extras={},c.extras.targetNames=r)}let h=Array.isArray(e.material);if(h&&o.groups.length===0)return null;let g=!1;if(h&&o.index===null){let e=[];for(let t=0,n=o.attributes.position.count;t0&&(t.targets=d),o.index!==null){let r=this.getUID(o.index);(v[e].start!==void 0||v[e].count!==void 0)&&(r+=`:`+v[e].start+`:`+v[e].count),n.attributes.has(r)?t.indices=n.attributes.get(r):(t.indices=this.processAccessor(o.index,o,v[e].start,v[e].count),n.attributes.set(r,t.indices)),t.indices===null&&delete t.indices}let r=this.processMaterial(_[v[e].materialIndex]);r!==null&&(t.material=r),u.push(t)}g===!0&&o.setIndex(null),c.primitives=u,r.meshes||=[],this._invokeAll(function(t){t.writeMesh&&t.writeMesh(e,c)});let y=r.meshes.push(c)-1;return n.meshes.set(a,y),y}detectMeshQuantization(e,t){if(this.extensionsUsed[ka])return;let n;switch(t.array.constructor){case Int8Array:n=`byte`;break;case Uint8Array:n=`unsigned byte`;break;case Int16Array:n=`short`;break;case Uint16Array:n=`unsigned short`;break;default:return}t.normalized&&(n+=` normalized`);let r=e.split(`_`,1)[0];Da[r]&&Da[r].includes(n)&&(this.extensionsUsed[ka]=!0,this.extensionsRequired[ka]=!0)}processCamera(e){let t=this.json;t.cameras||=[];let n=e.isOrthographicCamera,r={type:n?`orthographic`:`perspective`};return n?r.orthographic={xmag:e.right*2,ymag:e.top*2,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:r.perspective={aspectRatio:e.aspect,yfov:w.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==``&&(r.name=e.type),t.cameras.push(r)-1}processAnimation(e,t){let n=this.json,r=this.nodeMap;n.animations||=[],e=Oa.Utils.mergeMorphTargetTracks(e.clone(),t);let i=e.tracks,a=[],s=[];for(let e=0;e0){let t=[];for(let n=0,i=e.children.length;n0&&(a.children=t)}this._invokeAll(function(t){t.writeNode&&t.writeNode(e,a)});let o=n.nodes.push(a)-1;return i.set(e,o),o}processScene(e){let t=this.json,n=this.options;t.scenes||(t.scenes=[],t.scene=0);let r={};e.name!==``&&(r.name=e.name),t.scenes.push(r);let i=[];for(let t=0,r=e.children.length;t0&&(r.nodes=i),this.serializeUserData(e,r)}processObjects(e){let t=new P;t.name=`AuxScene`;for(let n=0;n0&&this.processObjects(n);for(let e=0;e0&&(a.range=e.distance)):e.isSpotLight&&(a.type=`spot`,e.distance>0&&(a.range=e.distance),a.spot={},a.spot.innerConeAngle=(1-e.penumbra)*e.angle,a.spot.outerConeAngle=e.angle),e.decay!==void 0&&e.decay!==2&&console.warn(`THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2.`),e.target&&(e.target.parent!==e||e.target.position.x!==0||e.target.position.y!==0||e.target.position.z!==-1)&&console.warn(`THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1.`),i[this.name]||(r.extensions=r.extensions||{},r.extensions[this.name]={lights:[]},i[this.name]=!0);let o=r.extensions[this.name].lights;o.push(a),t.extensions=t.extensions||{},t.extensions[this.name]={light:o.length-1}}},Ya=class{constructor(e){this.writer=e,this.name=`KHR_materials_unlit`}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let n=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},n[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},Xa=class{constructor(e){this.writer=e,this.name=`KHR_materials_clearcoat`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.clearcoat===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.clearcoatFactor=e.clearcoat,e.clearcoatMap){let t={index:n.processTexture(e.clearcoatMap),texCoord:e.clearcoatMap.channel};n.applyTextureTransform(t,e.clearcoatMap),i.clearcoatTexture=t}if(i.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let t={index:n.processTexture(e.clearcoatRoughnessMap),texCoord:e.clearcoatRoughnessMap.channel};n.applyTextureTransform(t,e.clearcoatRoughnessMap),i.clearcoatRoughnessTexture=t}if(e.clearcoatNormalMap){let t={index:n.processTexture(e.clearcoatNormalMap),texCoord:e.clearcoatNormalMap.channel};e.clearcoatNormalScale.x!==1&&(t.scale=e.clearcoatNormalScale.x),n.applyTextureTransform(t,e.clearcoatNormalMap),i.clearcoatNormalTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},Za=class{constructor(e){this.writer=e,this.name=`KHR_materials_dispersion`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.dispersion===0)return;let n=this.writer.extensionsUsed,r={};r.dispersion=e.dispersion,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},Qa=class{constructor(e){this.writer=e,this.name=`KHR_materials_iridescence`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.iridescence===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.iridescenceFactor=e.iridescence,e.iridescenceMap){let t={index:n.processTexture(e.iridescenceMap),texCoord:e.iridescenceMap.channel};n.applyTextureTransform(t,e.iridescenceMap),i.iridescenceTexture=t}if(i.iridescenceIor=e.iridescenceIOR,i.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],i.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let t={index:n.processTexture(e.iridescenceThicknessMap),texCoord:e.iridescenceThicknessMap.channel};n.applyTextureTransform(t,e.iridescenceThicknessMap),i.iridescenceThicknessTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},$a=class{constructor(e){this.writer=e,this.name=`KHR_materials_transmission`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.transmissionFactor=e.transmission,e.transmissionMap){let t={index:n.processTexture(e.transmissionMap),texCoord:e.transmissionMap.channel};n.applyTextureTransform(t,e.transmissionMap),i.transmissionTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},eo=class{constructor(e){this.writer=e,this.name=`KHR_materials_volume`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.thicknessFactor=e.thickness,e.thicknessMap){let t={index:n.processTexture(e.thicknessMap),texCoord:e.thicknessMap.channel};n.applyTextureTransform(t,e.thicknessMap),i.thicknessTexture=t}e.attenuationDistance!==1/0&&(i.attenuationDistance=e.attenuationDistance),i.attenuationColor=e.attenuationColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},to=class{constructor(e){this.writer=e,this.name=`KHR_materials_ior`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.ior===1.5)return;let n=this.writer.extensionsUsed,r={};r.ior=e.ior,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},no=class{constructor(e){this.writer=e,this.name=`KHR_materials_specular`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.specularIntensity===1&&e.specularColor.equals(Ma)&&!e.specularIntensityMap&&!e.specularColorMap)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.specularIntensityMap){let t={index:n.processTexture(e.specularIntensityMap),texCoord:e.specularIntensityMap.channel};n.applyTextureTransform(t,e.specularIntensityMap),i.specularTexture=t}if(e.specularColorMap){let t={index:n.processTexture(e.specularColorMap),texCoord:e.specularColorMap.channel};n.applyTextureTransform(t,e.specularColorMap),i.specularColorTexture=t}i.specularFactor=e.specularIntensity,i.specularColorFactor=e.specularColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},ro=class{constructor(e){this.writer=e,this.name=`KHR_materials_sheen`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.sheen==0)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.sheenRoughnessMap){let t={index:n.processTexture(e.sheenRoughnessMap),texCoord:e.sheenRoughnessMap.channel};n.applyTextureTransform(t,e.sheenRoughnessMap),i.sheenRoughnessTexture=t}if(e.sheenColorMap){let t={index:n.processTexture(e.sheenColorMap),texCoord:e.sheenColorMap.channel};n.applyTextureTransform(t,e.sheenColorMap),i.sheenColorTexture=t}i.sheenRoughnessFactor=e.sheenRoughness,i.sheenColorFactor=e.sheenColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},io=class{constructor(e){this.writer=e,this.name=`KHR_materials_anisotropy`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.anisotropy==0)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.anisotropyMap){let t={index:n.processTexture(e.anisotropyMap)};n.applyTextureTransform(t,e.anisotropyMap),i.anisotropyTexture=t}i.anisotropyStrength=e.anisotropy,i.anisotropyRotation=e.anisotropyRotation,t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},ao=class{constructor(e){this.writer=e,this.name=`KHR_materials_emissive_strength`}writeMaterial(e,t){if(!e.isMeshStandardMaterial||e.emissiveIntensity===1)return;let n=this.writer.extensionsUsed,r={};r.emissiveStrength=e.emissiveIntensity,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},oo=class{constructor(e){this.writer=e,this.name=`EXT_materials_bump`}writeMaterial(e,t){if(!e.isMeshStandardMaterial||e.bumpScale===1&&!e.bumpMap)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.bumpMap){let t={index:n.processTexture(e.bumpMap),texCoord:e.bumpMap.channel};n.applyTextureTransform(t,e.bumpMap),i.bumpTexture=t}i.bumpFactor=e.bumpScale,t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},so=class{constructor(e){this.writer=e,this.name=`EXT_mesh_gpu_instancing`}writeNode(e,t){if(!e.isInstancedMesh)return;let r=this.writer,i=e,a=new Float32Array(i.count*3),o=new Float32Array(i.count*4),s=new Float32Array(i.count*3),c=new I,l=new n,u=new H,d=new n;for(let e=0;ee.times[e.times.length-1]){if(Math.abs(e.times[e.times.length-1]-t)t){i.set(e.times.slice(0,c+1),0),i[c+1]=t,i.set(e.times.slice(c+1),c+2),a.set(e.values.slice(0,(c+1)*r),0),a.set(o.evaluate(t),(c+1)*r),a.set(e.values.slice((c+1)*r),(c+2)*r),s=c+1;break}}return e.times=i,e.values=a,s},mergeMorphTargetTracks:function(e,t){let n=[],r={},i=e.tracks;for(let e=0;e{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=await co(a.profilePath),s;if(r){let t;if(t=e.handedness===`any`?o.layouts[Object.keys(o.layouts)[0]]:o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}}var fo={xAxis:0,yAxis:0,button:0,state:Z.ComponentState.DEFAULT};function po(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var mo=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Z.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(fo)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=po(e,t);switch(this.componentProperty){case Z.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case Z.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case Z.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case Z.ComponentProperty.STATE:this.valueNodeProperty===Z.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},ho=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new mo(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Z.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Z.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Z.ComponentState.PRESSED:(t.touched||this.values.button>Z.ButtonTouchThreshold)&&(this.values.state=Z.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Z.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Z.AxisTouchThreshold&&(this.values.state=Z.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Z.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Z.AxisTouchThreshold&&(this.values.state=Z.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},go=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new ho(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},_o=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,vo=`generic-trigger`,yo=class extends Re{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===Z.VisualResponseProperty.VISIBILITY?t.visible=i:a===Z.VisualResponseProperty.TRANSFORM&&(t.quaternion.slerpQuaternions(n.quaternion,r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function bo(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===Z.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new z(new vt(.001),new F({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===Z.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function xo(e,t){bo(e.motionController,t),e.envMap&&t.traverse(t=>{t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.layers.mask!=0&&t.traverse(t=>{t.layers.mask=e.layers.mask}),e.add(t)}var So=class{constructor(e=null,t=null){this.gltfLoader=e,this.path=_o,this._assetCache={},this.onLoad=t,this.gltfLoader||=new Lt}setPath(e){return this.path=e,this}createControllerModel(e){let t=new yo,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||r.hand||uo(r,this.path,vo).then(({profile:e,assetPath:i})=>{t.motionController=new go(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),xo(t,n),this.onLoad&&this.onLoad(n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.setPath(``),this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),xo(t,n),this.onLoad&&this.onLoad(n)},null,()=>{throw Error(`Asset ${t.motionController.assetUrl} missing or malformed.`)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},Co=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/`,wo=class{constructor(e,t,n,r,i=null,a=null){this.controller=t,this.handModel=e,this.bones=[],i===null&&(i=new Lt,i.setPath(n||Co)),i.load(`${r}.glb`,e=>{let t=e.scene.children[0];this.handModel.add(t),t.layers.mask=this.handModel.layers.mask;let n=t.getObjectByProperty(`type`,`SkinnedMesh`);n.frustumCulled=!1,n.castShadow=!0,n.receiveShadow=!0,[`wrist`,`thumb-metacarpal`,`thumb-phalanx-proximal`,`thumb-phalanx-distal`,`thumb-tip`,`index-finger-metacarpal`,`index-finger-phalanx-proximal`,`index-finger-phalanx-intermediate`,`index-finger-phalanx-distal`,`index-finger-tip`,`middle-finger-metacarpal`,`middle-finger-phalanx-proximal`,`middle-finger-phalanx-intermediate`,`middle-finger-phalanx-distal`,`middle-finger-tip`,`ring-finger-metacarpal`,`ring-finger-phalanx-proximal`,`ring-finger-phalanx-intermediate`,`ring-finger-phalanx-distal`,`ring-finger-tip`,`pinky-finger-metacarpal`,`pinky-finger-phalanx-proximal`,`pinky-finger-phalanx-intermediate`,`pinky-finger-phalanx-distal`,`pinky-finger-tip`].forEach(e=>{let n=t.getObjectByName(e);n===void 0?console.warn(`Couldn't find ${e} in ${r} hand mesh`):n.jointName=e,this.bones.push(n)}),a&&a(t)})}updateMesh(){let e=this.controller.joints;for(let t=0;t + #include + #include + #include + #include + + uniform float linewidth; + uniform vec2 resolution; + + attribute vec3 instanceStart; + attribute vec3 instanceEnd; + + attribute vec3 instanceColorStart; + attribute vec3 instanceColorEnd; + + #ifdef WORLD_UNITS + + varying vec4 worldPos; + varying vec3 worldStart; + varying vec3 worldEnd; + + #ifdef USE_DASH + + varying vec2 vUv; + + #endif + + #else + + varying vec2 vUv; + + #endif + + #ifdef USE_DASH + + uniform float dashScale; + attribute float instanceDistanceStart; + attribute float instanceDistanceEnd; + varying float vLineDistance; + + #endif + + void trimSegment( const in vec4 start, inout vec4 end ) { + + // trim end segment so it terminates between the camera plane and the near plane + + // conservative estimate of the near plane + float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column + float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column + float nearEstimate = - 0.5 * b / a; + + float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); + + end.xyz = mix( start.xyz, end.xyz, alpha ); + + } + + void main() { + + #ifdef USE_COLOR + + vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; + + #endif + + #ifdef USE_DASH + + vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; + vUv = uv; + + #endif + + float aspect = resolution.x / resolution.y; + + // camera space + vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); + vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); + + #ifdef WORLD_UNITS + + worldStart = start.xyz; + worldEnd = end.xyz; + + #else + + vUv = uv; + + #endif + + // special case for perspective projection, and segments that terminate either in, or behind, the camera plane + // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space + // but we need to perform ndc-space calculations in the shader, so we must address this issue directly + // perhaps there is a more elegant solution -- WestLangley + + bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column + + if ( perspective ) { + + if ( start.z < 0.0 && end.z >= 0.0 ) { + + trimSegment( start, end ); + + } else if ( end.z < 0.0 && start.z >= 0.0 ) { + + trimSegment( end, start ); + + } + + } + + // clip space + vec4 clipStart = projectionMatrix * start; + vec4 clipEnd = projectionMatrix * end; + + // ndc space + vec3 ndcStart = clipStart.xyz / clipStart.w; + vec3 ndcEnd = clipEnd.xyz / clipEnd.w; + + // direction + vec2 dir = ndcEnd.xy - ndcStart.xy; + + // account for clip-space aspect ratio + dir.x *= aspect; + dir = normalize( dir ); + + #ifdef WORLD_UNITS + + vec3 worldDir = normalize( end.xyz - start.xyz ); + vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) ); + vec3 worldUp = normalize( cross( worldDir, tmpFwd ) ); + vec3 worldFwd = cross( worldDir, worldUp ); + worldPos = position.y < 0.5 ? start: end; + + // height offset + float hw = linewidth * 0.5; + worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp; + + // don't extend the line if we're rendering dashes because we + // won't be rendering the endcaps + #ifndef USE_DASH + + // cap extension + worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir; + + // add width to the box + worldPos.xyz += worldFwd * hw; + + // endcaps + if ( position.y > 1.0 || position.y < 0.0 ) { + + worldPos.xyz -= worldFwd * 2.0 * hw; + + } + + #endif + + // project the worldpos + vec4 clip = projectionMatrix * worldPos; + + // shift the depth of the projected points so the line + // segments overlap neatly + vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd; + clip.z = clipPose.z * clip.w; + + #else + + vec2 offset = vec2( dir.y, - dir.x ); + // undo aspect ratio adjustment + dir.x /= aspect; + offset.x /= aspect; + + // sign flip + if ( position.x < 0.0 ) offset *= - 1.0; + + // endcaps + if ( position.y < 0.0 ) { + + offset += - dir; + + } else if ( position.y > 1.0 ) { + + offset += dir; + + } + + // adjust for linewidth + offset *= linewidth; + + // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... + offset /= resolution.y; + + // select end + vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; + + // back to clip space + offset *= clip.w; + + clip.xy += offset; + + #endif + + gl_Position = clip; + + vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation + + #include + #include + #include + + } + `,fragmentShader:` + uniform vec3 diffuse; + uniform float opacity; + uniform float linewidth; + + #ifdef USE_DASH + + uniform float dashOffset; + uniform float dashSize; + uniform float gapSize; + + #endif + + varying float vLineDistance; + + #ifdef WORLD_UNITS + + varying vec4 worldPos; + varying vec3 worldStart; + varying vec3 worldEnd; + + #ifdef USE_DASH + + varying vec2 vUv; + + #endif + + #else + + varying vec2 vUv; + + #endif + + #include + #include + #include + #include + #include + + vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) { + + float mua; + float mub; + + vec3 p13 = p1 - p3; + vec3 p43 = p4 - p3; + + vec3 p21 = p2 - p1; + + float d1343 = dot( p13, p43 ); + float d4321 = dot( p43, p21 ); + float d1321 = dot( p13, p21 ); + float d4343 = dot( p43, p43 ); + float d2121 = dot( p21, p21 ); + + float denom = d2121 * d4343 - d4321 * d4321; + + float numer = d1343 * d4321 - d1321 * d4343; + + mua = numer / denom; + mua = clamp( mua, 0.0, 1.0 ); + mub = ( d1343 + d4321 * ( mua ) ) / d4343; + mub = clamp( mub, 0.0, 1.0 ); + + return vec2( mua, mub ); + + } + + void main() { + + #include + + #ifdef USE_DASH + + if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps + + if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX + + #endif + + float alpha = opacity; + + #ifdef WORLD_UNITS + + // Find the closest points on the view ray and the line segment + vec3 rayEnd = normalize( worldPos.xyz ) * 1e5; + vec3 lineDir = worldEnd - worldStart; + vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd ); + + vec3 p1 = worldStart + lineDir * params.x; + vec3 p2 = rayEnd * params.y; + vec3 delta = p1 - p2; + float len = length( delta ); + float norm = len / linewidth; + + #ifndef USE_DASH + + #ifdef USE_ALPHA_TO_COVERAGE + + float dnorm = fwidth( norm ); + alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm ); + + #else + + if ( norm > 0.5 ) { + + discard; + + } + + #endif + + #endif + + #else + + #ifdef USE_ALPHA_TO_COVERAGE + + // artifacts appear on some hardware if a derivative is taken within a conditional + float a = vUv.x; + float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; + float len2 = a * a + b * b; + float dlen = fwidth( len2 ); + + if ( abs( vUv.y ) > 1.0 ) { + + alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 ); + + } + + #else + + if ( abs( vUv.y ) > 1.0 ) { + + float a = vUv.x; + float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; + float len2 = a * a + b * b; + + if ( len2 > 1.0 ) discard; + + } + + #endif + + #endif + + vec4 diffuseColor = vec4( diffuse, alpha ); + + #include + #include + + gl_FragColor = vec4( diffuseColor.rgb, alpha ); + + #include + #include + #include + #include + + } + `};var Oo=class extends ht{constructor(e){super({type:`LineMaterial`,uniforms:s.clone(Le.line.uniforms),vertexShader:Le.line.vertexShader,fragmentShader:Le.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return`WORLD_UNITS`in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS=``:delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return`USE_DASH`in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH=``:delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return`USE_ALPHA_TO_COVERAGE`in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE=``:delete this.defines.USE_ALPHA_TO_COVERAGE)}},ko=new Xe,Ao=new n,jo=new n,Mo=new Xe,No=new Xe,Po=new Xe,Fo=new n,Io=new I,Lo=new j,Ro=new n,zo=new Se,Bo=new et,Vo=new Xe,Ho,Uo;function Wo(e,t,n){return Vo.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),Vo.multiplyScalar(1/Vo.w),Vo.x=Uo/n.width,Vo.y=Uo/n.height,Vo.applyMatrix4(e.projectionMatrixInverse),Vo.multiplyScalar(1/Vo.w),Math.abs(Math.max(Vo.x,Vo.y))}function Go(e,t){let r=e.matrixWorld,i=e.geometry,a=i.attributes.instanceStart,o=i.attributes.instanceEnd,s=Math.min(i.instanceCount,a.count);for(let i=0,c=s;id&&No.z>d)continue;if(Mo.z>d){let e=Mo.z-No.z,t=(Mo.z-d)/e;Mo.lerp(No,t)}else if(No.z>d){let e=No.z-Mo.z,t=(No.z-d)/e;No.lerp(Mo,t)}Mo.applyMatrix4(i),No.applyMatrix4(i),Mo.multiplyScalar(1/Mo.w),No.multiplyScalar(1/No.w),Mo.x*=a.x/2,Mo.y*=a.y/2,No.x*=a.x/2,No.y*=a.y/2,Lo.start.copy(Mo),Lo.start.z=0,Lo.end.copy(No),Lo.end.z=0;let s=Lo.closestPointToPointParameter(Fo,!0);Lo.at(s,Ro);let u=w.lerp(Mo.z,No.z,s),f=u>=-1&&u<=1,p=Fo.distanceTo(Ro){this.scheduleUpdate||=setTimeout(()=>this.update(),16)});t.observe(e,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),this.observer=t}dispatchDOMEvent(e){e.data&&es(this.dom,e.type,e.data.x,e.data.y)}update(){this.image=$o(this.dom),this.needsUpdate=!0,this.scheduleUpdate=null}dispose(){this.observer&&this.observer.disconnect(),this.scheduleUpdate=clearTimeout(this.scheduleUpdate),super.dispose()}},Qo=new WeakMap;function $o(t){let n=document.createRange(),r=new e;function i(e){let t=[],n=!1;function r(){if(n&&(n=!1,e.restore()),t.length===0)return;let r=-1/0,i=-1/0,a=1/0,o=1/0;for(let e=0;eparseFloat(e[t])),c=(a-t)/(r-t)*(p-m);o(i,u+m/4,p,m/2,m/4),d.fillStyle=s,d.strokeStyle=n,d.lineWidth=1,d.fill(),d.stroke(),o(i,u+m/4,c+m/2,m/2,m/4),d.fillStyle=n,d.fill(),o(i+c,u,m,m,m/2),d.fillStyle=n,d.fill()}(e.type===`color`||e.type===`text`||e.type===`number`)&&(f.add({x:i,y:u,width:p,height:m}),a(t,i+parseInt(t.paddingLeft),u+parseInt(t.paddingTop),e.value),f.remove())}}let h=t.overflow===`auto`||t.overflow===`hidden`;h&&f.add({x:i,y:u,width:p,height:m});for(let n=0;na.left&&na.top&&rparseFloat(e[t])),i=a.width,o=(n-a.x)/i;e.value=t+(r-t)*o,e.dispatchEvent(new InputEvent(`input`,{bubbles:!0}))}for(let t=0;t0){let e=o[0],t=e.object,n=e.uv;ns.type=i.type,ns.data.set(n.x,1-n.y),t.dispatchEvent(ns)}}i.addEventListener(`pointerdown`,a),i.addEventListener(`pointerup`,a),i.addEventListener(`pointermove`,a),i.addEventListener(`mousedown`,a),i.addEventListener(`mouseup`,a),i.addEventListener(`mousemove`,a),i.addEventListener(`click`,a)}listenToXRControllerEvents(e){let t=this,n={move:`mousemove`,select:`click`,selectstart:`mousedown`,selectend:`mouseup`};function r(e){let r=e.target;rs.setFromXRController(r);let i=rs.intersectObjects(t.children,!1);if(i.length>0){let t=i[0],r=t.object,a=t.uv;ns.type=n[e.type],ns.data.set(a.x,1-a.y),r.dispatchEvent(ns)}}e.addEventListener(`move`,r),e.addEventListener(`select`,r),e.addEventListener(`selectstart`,r),e.addEventListener(`selectend`,r)}},as=new n,os=new n,ss=new xe,cs=class extends m{constructor(e,t=1,n=16711680){let r=new le,i=e.geometry.attributes.normal.count,a=new B(i*2*3,3);r.setAttribute(`position`,a),super(r,new N({color:n,toneMapped:!1})),this.object=e,this.size=t,this.type=`VertexNormalsHelper`,this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),ss.getNormalMatrix(this.object.matrixWorld);let e=this.object.matrixWorld,t=this.geometry.attributes.position,n=this.object.geometry;if(n){let r=n.attributes.position,i=n.attributes.normal,a=0;for(let n=0,o=r.count;n=n[r])return r-1;if(t<=n[e])return e;let i=e,a=r,o=Math.floor((i+a)/2);for(;t=n[o+1];)t=a&&(c[i][0]=c[t][0]/s[u+1][l],r=c[i][0]*s[l][u]);let d=l>=-1?1:-l,f=e-1<=u?a-1:n-e;for(let e=d;e<=f;++e)c[i][e]=(c[t][e]-c[t][e-1])/s[u+1][l+e],r+=c[i][e]*s[l+e][u];e<=u&&(c[i][a]=-c[t][a-1]/s[u+1][e],r+=c[i][a]*s[e][u]),o[a][e]=r;let p=t;t=i,i=p}}let u=n;for(let e=1;e<=r;++e){for(let t=0;t<=n;++t)o[e][t]*=u;u*=n-e}return o}function ps(e,t,n,r,i){let a=i0,a=typeof i.Content==`string`&&i.Content!==``;if(e||a){let e=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let n in e){let r=e[n];t[r]===void 0?e[n]=e[n].split(`\\`).pop():e[n]=t[r]}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(`.`)+1).toLowerCase(),i;switch(r){case`bmp`:i=`image/bmp`;break;case`jpg`:case`jpeg`:i=`image/jpeg`;break;case`png`:i=`image/png`;break;case`tif`:i=`image/tiff`;break;case`tga`:this.manager.getHandler(`.tga`)===null&&console.warn(`FBXLoader: TGA loader not found, skipping `,n),i=`image/tga`;break;default:console.warn(`FBXLoader: Image type "`+r+`" is not supported.`);return}if(typeof t==`string`)return`data:`+i+`;base64,`+t;{let e=new Uint8Array(t);return window.URL.createObjectURL(new Blob([e],{type:i}))}}parseTextures(e){let t=new Map;if(`Texture`in Q.Objects){let n=Q.Objects.Texture;for(let r in n){let i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let r=e.WrapModeU,i=e.WrapModeV,a=r===void 0?0:r.value,o=i===void 0?0:i.value;if(n.wrapS=a===0?C:ne,n.wrapT=o===0?C:ne,`Scaling`in e){let t=e.Scaling.value;n.repeat.x=t[0],n.repeat.y=t[1]}if(`Translation`in e){let t=e.Translation.value;n.offset.x=t[0],n.offset.y=t[1]}return n}loadTexture(e,t){let n=new Set([`tga`,`tif`,`tiff`,`exr`,`dds`,`hdr`,`ktx2`]),r=e.FileName.split(`.`).pop().toLowerCase(),i=n.has(r)?this.manager.getHandler(`.${r}`):this.textureLoader;if(!i)return console.warn(`FBXLoader: ${r.toUpperCase()} loader not found, creating placeholder texture for`,e.RelativeFilename),new He;let a=i.path;a||i.setPath(this.textureLoader.path);let o=$.get(e.id).children,s;o!==void 0&&o.length>0&&t[o[0].ID]!==void 0&&(s=t[o[0].ID],(s.indexOf(`blob:`)===0||s.indexOf(`data:`)===0)&&i.setPath(void 0));let c=i.load(s);return i.setPath(a),c}parseMaterials(e){let t=new Map;if(`Material`in Q.Objects){let n=Q.Objects.Material;for(let r in n){let i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let n=e.id,r=e.attrName,i=e.ShadingModel;if(typeof i==`object`&&(i=i.value),!$.has(n))return null;let a=this.parseParameters(e,t,n),o;switch(i.toLowerCase()){case`phong`:o=new rt;break;case`lambert`:o=new Ie;break;default:console.warn(`THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.`,i),o=new rt;break}return o.setValues(a),o.name=r,o}parseParameters(t,n,r){let i={};t.BumpFactor&&(i.bumpScale=t.BumpFactor.value),t.Diffuse?i.color=k.toWorkingColorSpace(new e().fromArray(t.Diffuse.value),R):t.DiffuseColor&&(t.DiffuseColor.type===`Color`||t.DiffuseColor.type===`ColorRGB`)&&(i.color=k.toWorkingColorSpace(new e().fromArray(t.DiffuseColor.value),R)),t.DisplacementFactor&&(i.displacementScale=t.DisplacementFactor.value),t.Emissive?i.emissive=k.toWorkingColorSpace(new e().fromArray(t.Emissive.value),R):t.EmissiveColor&&(t.EmissiveColor.type===`Color`||t.EmissiveColor.type===`ColorRGB`)&&(i.emissive=k.toWorkingColorSpace(new e().fromArray(t.EmissiveColor.value),R)),t.EmissiveFactor&&(i.emissiveIntensity=parseFloat(t.EmissiveFactor.value)),t.Opacity&&(i.opacity=parseFloat(t.Opacity.value)),i.opacity<1&&(i.transparent=!0),t.ReflectionFactor&&(i.reflectivity=t.ReflectionFactor.value),t.Shininess&&(i.shininess=t.Shininess.value),t.Specular?i.specular=k.toWorkingColorSpace(new e().fromArray(t.Specular.value),R):t.SpecularColor&&t.SpecularColor.type===`Color`&&(i.specular=k.toWorkingColorSpace(new e().fromArray(t.SpecularColor.value),R));let a=this;return $.get(r).children.forEach(function(e){let t=e.relationship;switch(t){case`Bump`:i.bumpMap=a.getTexture(n,e.ID);break;case`Maya|TEX_ao_map`:i.aoMap=a.getTexture(n,e.ID);break;case`DiffuseColor`:case`Maya|TEX_color_map`:i.map=a.getTexture(n,e.ID),i.map!==void 0&&(i.map.colorSpace=R);break;case`DisplacementColor`:i.displacementMap=a.getTexture(n,e.ID);break;case`EmissiveColor`:i.emissiveMap=a.getTexture(n,e.ID),i.emissiveMap!==void 0&&(i.emissiveMap.colorSpace=R);break;case`NormalMap`:case`Maya|TEX_normal_map`:i.normalMap=a.getTexture(n,e.ID);break;case`ReflectionColor`:i.envMap=a.getTexture(n,e.ID),i.envMap!==void 0&&(i.envMap.mapping=303,i.envMap.colorSpace=R);break;case`SpecularColor`:i.specularMap=a.getTexture(n,e.ID),i.specularMap!==void 0&&(i.specularMap.colorSpace=R);break;case`TransparentColor`:case`TransparencyFactor`:i.alphaMap=a.getTexture(n,e.ID),i.transparent=!0;break;default:console.warn(`THREE.FBXLoader: %s map is not supported in three.js, skipping texture.`,t);break}}),i}getTexture(e,t){return`LayeredTexture`in Q.Objects&&t in Q.Objects.LayeredTexture&&(console.warn(`THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.`),t=$.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if(`Deformer`in Q.Objects){let n=Q.Objects.Deformer;for(let r in n){let i=n[r],a=$.get(parseInt(r));if(i.attrType===`Skin`){let t=this.parseSkeleton(a,n);t.ID=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: skeleton attached to more than one geometry is not supported.`),t.geometryID=a.parents[0].ID,e[r]=t}else if(i.attrType===`BlendShape`){let e={id:r};e.rawTargets=this.parseMorphTargets(a,n),e.id=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: morph target attached to more than one geometry is not supported.`),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let n=[];return e.children.forEach(function(e){let r=t[e.ID];if(r.attrType!==`Cluster`)return;let i={ID:e.ID,indices:[],weights:[],transformLink:new I().fromArray(r.TransformLink.a)};`Indexes`in r&&(i.indices=r.Indexes.a,i.weights=r.Weights.a),n.push(i)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){let n=[];for(let r=0;r1?a=o:o.length>0?a=o[0]:(a=new rt({name:ye.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(a)),`color`in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,n=i.groups.length;t=o.length)&&(n.materialIndex=o.length,e=!0)}if(e){let e=new Ke;o.push(e)}}return i.FBX_Deformer?(r=new mt(i,a),r.normalizeSkinWeights()):r=new z(i,a),r}createCurve(e,t){return new Ze(e.children.reduce(function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e},null),new N({name:ye.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1}))}getTransformData(e,t){let n={};`InheritType`in t&&(n.inheritType=parseInt(t.InheritType.value)),`RotationOrder`in t?n.eulerOrder=Is(t.RotationOrder.value):n.eulerOrder=Is(0),`Lcl_Translation`in t&&(n.translation=t.Lcl_Translation.value),`PreRotation`in t&&(n.preRotation=t.PreRotation.value),`Lcl_Rotation`in t&&(n.rotation=t.Lcl_Rotation.value),`PostRotation`in t&&(n.postRotation=t.PostRotation.value),`Lcl_Scaling`in t&&(n.scale=t.Lcl_Scaling.value),`ScalingOffset`in t&&(n.scalingOffset=t.ScalingOffset.value),`ScalingPivot`in t&&(n.scalingPivot=t.ScalingPivot.value),`RotationOffset`in t&&(n.rotationOffset=t.RotationOffset.value),`RotationPivot`in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){`LookAtProperty`in t&&$.get(e.ID).children.forEach(function(t){if(t.relationship===`LookAtProperty`){let r=Q.Objects.Model[t.ID];if(`Lcl_Translation`in r){let t=r.Lcl_Translation.value;e.target===void 0?e.lookAt(new n().fromArray(t)):(e.target.position.fromArray(t),vs.add(e.target))}}})}bindSkeleton(e,t,n){let r=this.parsePoseNodes();for(let i in e){let a=e[i];$.get(parseInt(a.ID)).parents.forEach(function(e){if(t.has(e.ID)){let t=e.ID;$.get(t).parents.forEach(function(e){n.has(e.ID)&&n.get(e.ID).bind(new at(a.bones),r[e.ID])})}})}}parsePoseNodes(){let e={};if(`Pose`in Q.Objects){let t=Q.Objects.Pose;for(let n in t)if(t[n].attrType===`BindPose`&&t[n].NbPoseNodes>0){let r=t[n].PoseNode;Array.isArray(r)?r.forEach(function(t){e[t.Node]=new I().fromArray(t.Matrix.a)}):e[r.Node]=new I().fromArray(r.Matrix.a)}}return e}addGlobalSceneSettings(){if(`GlobalSettings`in Q){if(`AmbientColor`in Q.GlobalSettings){let t=Q.GlobalSettings.AmbientColor.value,n=t[0],r=t[1],i=t[2];if(n!==0||r!==0||i!==0){let t=new e().setRGB(n,r,i,R);vs.add(new dt(t,1))}}`UnitScaleFactor`in Q.GlobalSettings&&(vs.userData.unitScaleFactor=Q.GlobalSettings.UnitScaleFactor.value)}}},xs=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if(`Geometry`in Q.Objects){let n=Q.Objects.Geometry;for(let r in n){let i=$.get(parseInt(r)),a=this.parseGeometry(i,n[r],e);t.set(parseInt(r),a)}}return this.negativeMaterialIndices===!0&&console.warn(`THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.`),t}parseGeometry(e,t,n){switch(t.attrType){case`Mesh`:return this.parseMeshGeometry(e,t,n);case`NurbsCurve`:return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let r=n.skeletons,i=[],a=e.parents.map(function(e){return Q.Objects.Model[e.ID]});if(a.length===0)return;let o=e.children.reduce(function(e,t){return r[t.ID]!==void 0&&(e=r[t.ID]),e},null);e.children.forEach(function(e){n.morphTargets[e.ID]!==void 0&&i.push(n.morphTargets[e.ID])});let s=a[0],c={};`RotationOrder`in s&&(c.eulerOrder=Is(s.RotationOrder.value)),`InheritType`in s&&(c.inheritType=parseInt(s.InheritType.value)),`GeometricTranslation`in s&&(c.translation=s.GeometricTranslation.value),`GeometricRotation`in s&&(c.rotation=s.GeometricRotation.value),`GeometricScaling`in s&&(c.scale=s.GeometricScaling.value);let l=Fs(c);return this.genGeometry(t,o,i,l)}genGeometry(e,t,n,r){let i=new le;e.attrName&&(i.name=e.attrName);let a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new B(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute(`position`,s),o.colors.length>0&&i.setAttribute(`color`,new B(o.colors,3)),t&&(i.setAttribute(`skinIndex`,new ke(o.weightsIndices,4)),i.setAttribute(`skinWeight`,new B(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new xe().getNormalMatrix(r),t=new B(o.normal,3);t.applyNormalMatrix(e),i.setAttribute(`normal`,t)}if(o.uvs.forEach(function(e,t){let n=t===0?`uv`:`uv${t}`;i.setAttribute(n,new B(o.uvs[t],2))}),a.material&&a.material.mappingType!==`AllSame`){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(n,r){n!==e&&(i.addGroup(t,r-t,e),e=n,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],n=t.start+t.count;n!==o.materialIndex.length&&i.addGroup(n,o.materialIndex.length-n,e)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices===void 0?[]:e.Vertices.a,n.vertexIndices=e.PolygonVertexIndex===void 0?[]:e.PolygonVertexIndex.a,e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],u=[],d=this;return e.vertexIndices.forEach(function(f,p){let m,h=!1;f<0&&(f^=-1,h=!0);let g=[],_=[];if(a.push(f*3,f*3+1,f*3+2),e.color){let t=Ms(p,n,f,e.color);s.push(t[0],t[1],t[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(e){_.push(e.weight),g.push(e.id)}),_.length>4){i||=(console.warn(`THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.`),!0);let e=[0,0,0,0],t=[0,0,0,0];_.forEach(function(n,r){let i=n,a=g[r];t.forEach(function(t,n,r){if(i>t){r[n]=i,i=t;let o=e[n];e[n]=a,a=o}})}),g=e,_=t}for(;_.length<4;)_.push(0),g.push(0);for(let e=0;e<4;++e)l.push(_[e]),u.push(g[e])}if(e.normal){let t=Ms(p,n,f,e.normal);o.push(t[0],t[1],t[2])}e.material&&e.material.mappingType!==`AllSame`&&(m=Ms(p,n,f,e.material)[0],m<0&&(d.negativeMaterialIndices=!0,m=0)),e.uv&&e.uv.forEach(function(e,t){let r=Ms(p,n,f,e);c[t]===void 0&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])}),r++,h&&(d.genFace(t,e,a,m,o,s,c,l,u,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],u=[])}),t}getNormalNewell(e){let t=new n(0,0,0);for(let n=0;n.5?new n(0,1,0):new n(0,0,1)).cross(t).normalize();return{normal:t,tangent:r,bitangent:t.clone().cross(r).normalize()}}flattenVertex(e,t,n){return new V(e.dot(t),e.dot(n))}genFace(e,t,r,i,a,o,s,c,l,u){let d;if(u>3){let e=[],i=t.baseVertexPositions||t.vertexPositions;for(let t=0;t1&&console.warn(`THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.`);let a=e.get(i[0].ID);n[r]={name:t[r].attrName,layer:a}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(e){t=t.concat(n.generateTracks(e))}),new Ge(e.name,-1,t)}generateTracks(e){let t=[],r=new n,i=new n;if(e.transform&&e.transform.decompose(r,new H,i),r=r.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let n=this.generateVectorTrack(e.modelName,e.T.curves,r,`position`);n!==void 0&&t.push(n)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let n=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);n!==void 0&&t.push(n)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let n=this.generateVectorTrack(e.modelName,e.S.curves,i,`scale`);n!==void 0&&t.push(n)}if(e.DeformPercent!==void 0){let n=this.generateMorphTrack(e);n!==void 0&&t.push(n)}return t}generateVectorTrack(e,t,n,r){let i=this.getTimesForAllAxes(t),a=this.getKeyframeTrackValues(i,t,n);return new A(e+`.`+r,i,a)}generateRotationTrack(e,t,n,r,i){let a,o;if(t.x===void 0||t.y===void 0||t.z===void 0){console.warn(`THREE.FBXLoader: Missing rotation curves `+(t.x===void 0?`x `:``)+(t.y===void 0?`y `:``)+(t.z===void 0?`z `:``)+` for animation of `+e+`. This is currently not supported.`);return}if(t.x!==void 0&&t.y!==void 0&&t.z!==void 0){let e=this.interpolateRotations(t.x,t.y,t.z,i);a=e[0],o=e[1]}let s=Is(0);n!==void 0&&(n=n.map(w.degToRad),n.push(s),n=new gt().fromArray(n),n=new H().setFromEuler(n)),r!==void 0&&(r=r.map(w.degToRad),r.push(s),r=new gt().fromArray(r),r=new H().setFromEuler(r).invert());let c=new H,l=new gt,u=[];if(!(!o||!a)){for(let e=0;e2&&new H().fromArray(u,(e-3)/3*4).dot(c)<0&&c.set(-c.x,-c.y,-c.z,-c.w),c.toArray(u,e/3*4);return new fe(e+`.quaternion`,a,u)}}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(e){return e/100}),r=vs.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new Ne(e.modelName+`.morphTargetInfluences[`+r+`]`,t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(e,t){return e-t}),t.length>1){let e=1,n=t[0];for(let r=1;r=180||f[1]>=180||f[2]>=180){let t=Math.max(...f)/180,n=new gt(...c,r),s=new gt(...u,r),l=new H().setFromEuler(n),d=new H().setFromEuler(s);l.dot(d)&&d.set(-d.x,-d.y,-d.z,-d.w);let p=e.times[o-1],m=e.times[o]-p,h=new H,g=new gt;for(let e=0;e<1;e+=1/t)h.copy(l.clone().slerp(d.clone(),e)),i.push(p+e*m),g.setFromQuaternion(h,r),a.push(g.x),a.push(g.y),a.push(g.z)}else i.push(e.times[o]),a.push(w.degToRad(e.values[o])),a.push(w.degToRad(t.values[o])),a.push(w.degToRad(n.values[o]))}return[i,a]}},Cs=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),--this.currentIndent}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new Es,this.nodeStack=[],this.currentProp=[],this.currentPropName=``;let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),a=e.match(/^[\s\t]*$/);if(i||a)return;let o=e.match(`^\\t{`+t.currentIndent+`}(\\w+):(.*){`,``),s=e.match(`^\\t{`+t.currentIndent+`}(\\w+):[\\s\\t\\r\\n](.*)`),c=e.match(`^\\t{`+(t.currentIndent-1)+`}}`);o?t.parseNodeBegin(e,o):s?t.parseNodeProperty(e,s,n[++r]):c?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,``).replace(/"$/,``),r=t[2].split(`,`).map(function(e){return e.trim().replace(/^"/,``).replace(/"$/,``)}),i={name:n},a=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n===`PoseNode`?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),a.id!==``&&(o[n][a.id]=i)):typeof a.id==`number`?(o[n]={},o[n][a.id]=i):n!==`Properties70`&&(n===`PoseNode`?o[n]=[i]:o[n]=i),typeof a.id==`number`&&(i.id=a.id),a.name!==``&&(i.attrName=a.name),a.type!==``&&(i.attrType=a.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==``&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n=``,r=``;return e.length>1&&(n=e[1].replace(/^(\w+)::/,``),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,``).replace(/"$/,``).trim(),i=t[2].replace(/^"/,``).replace(/"$/,``).trim();r===`Content`&&i===`,`&&(i=n.replace(/"/g,``).replace(/,$/,``).trim());let a=this.getCurrentNode();if(a.name===`Properties70`){this.parseNodeSpecialProperty(e,r,i);return}if(r===`C`){let e=i.split(`,`).slice(1),t=parseInt(e[0]),n=parseInt(e[1]),o=i.split(`,`).slice(3);o=o.map(function(e){return e.trim().replace(/^"/,``)}),r=`connections`,i=[t,n],zs(i,o),a[r]===void 0&&(a[r]=[])}r===`Node`&&(a.id=i),r in a&&Array.isArray(a[r])?a[r].push(i):r===`a`?a.a=i:a[r]=i,this.setCurrentProp(a,r),r===`a`&&i.slice(-1)!==`,`&&(a.a=Ls(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==`,`&&(t.a=Ls(t.a))}parseNodeSpecialProperty(e,t,n){let r=n.split(`",`).map(function(e){return e.trim().replace(/^\"/,``).replace(/\s/,`_`)}),i=r[0],a=r[1],o=r[2],s=r[3],c=r[4];switch(a){case`int`:case`enum`:case`bool`:case`ULongLong`:case`double`:case`Number`:case`FieldOfView`:c=parseFloat(c);break;case`Color`:case`ColorRGB`:case`Vector3D`:case`Lcl_Translation`:case`Lcl_Rotation`:case`Lcl_Scaling`:c=Ls(c);break}this.getPrevNode()[i]={type:a,type2:o,flag:s,value:c},this.setCurrentProp(this.getPrevNode(),i)}},ws=class{parse(e){let t=new Ts(e);t.skip(23);let n=t.getUint32();if(n<6400)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+n);let r=new Es;for(;!this.endOfContent(t);){let e=this.parseNode(t,n);e!==null&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let a=e.getUint8(),o=e.getString(a);if(r===0)return null;let s=[];for(let t=0;t0?s[0]:``,l=s.length>1?s[1]:``,u=s.length>2?s[2]:``;for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);r!==null&&this.parseSubNode(o,n,r)}return n.propertyList=s,typeof c==`number`&&(n.id=c),l!==``&&(n.attrName=l),u!==``&&(n.attrType=u),o!==``&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let e=n.propertyList[0];Array.isArray(e)?(t[n.name]=n,n.a=e):t[n.name]=e}else if(e===`Connections`&&n.name===`C`){let e=[];n.propertyList.forEach(function(t,n){n!==0&&e.push(t)}),t.connections===void 0&&(t.connections=[]),t.connections.push(e)}else if(n.name===`Properties70`)Object.keys(n).forEach(function(e){t[e]=n[e]});else if(e===`Properties70`&&n.name===`P`){let e=n.propertyList[0],r=n.propertyList[1],i=n.propertyList[2],a=n.propertyList[3],o;e.indexOf(`Lcl `)===0&&(e=e.replace(`Lcl `,`Lcl_`)),r.indexOf(`Lcl `)===0&&(r=r.replace(`Lcl `,`Lcl_`)),o=r===`Color`||r===`ColorRGB`||r===`Vector`||r===`Vector3D`||r.indexOf(`Lcl_`)===0?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[e]={type:r,type2:i,flag:a,value:o}}else t[n.name]===void 0?typeof n.id==`number`?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name===`PoseNode`?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case`C`:return e.getBoolean();case`D`:return e.getFloat64();case`F`:return e.getFloat32();case`I`:return e.getInt32();case`L`:return e.getInt64();case`R`:return n=e.getUint32(),e.getArrayBuffer(n);case`S`:return n=e.getUint32(),e.getString(n);case`Y`:return e.getInt16();case`b`:case`c`:case`d`:case`f`:case`i`:case`l`:let r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(i===0)switch(t){case`b`:case`c`:return e.getBooleanArray(r);case`d`:return e.getFloat64Array(r);case`f`:return e.getFloat32Array(r);case`i`:return e.getInt32Array(r);case`l`:return e.getInt64Array(r)}let o=new Ts(li(new Uint8Array(e.getArrayBuffer(a))).buffer);switch(t){case`b`:case`c`:return o.getBooleanArray(r);case`d`:return o.getFloat64Array(r);case`f`:return o.getFloat32Array(r);case`i`:return o.getInt32Array(r);case`l`:return o.getInt64Array(r)}break;default:throw Error(`THREE.FBXLoader: Unknown property type `+t)}}},Ts=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t===void 0?!0:t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)==1}getBooleanArray(e){let t=[];for(let n=0;n=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}},Es=class{add(e,t){this[e]=t}};function Ds(e){return e.byteLength>=21&&Rs(e,0,21)===`Kaydara FBX Binary \0`}function Os(e){let t=[`K`,`a`,`y`,`d`,`a`,`r`,`a`,`\\`,`F`,`B`,`X`,`\\`,`B`,`i`,`n`,`a`,`r`,`y`,`\\`,`\\`],n=0;function r(t){let r=e[t-1];return e=e.slice(n+t),n++,r}for(let e=0;e=0?t.substring(0,o):t;s=s.toLowerCase();let c=o>=0?t.substring(o+1):``;if(c=c.trim(),s===`newmtl`)r={name:c},a[c]=r;else if(s===`ka`||s===`kd`||s===`ks`||s===`ke`){let e=c.split(i,3);r[s]=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])]}else r[s]=c}let o=new Hs(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},Hs=class{constructor(e=``,t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin=`anonymous`,this.side=this.options.side===void 0?0:this.options.side,this.wrap=this.options.wrap===void 0?C:this.options.wrap}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let n in e){let r=e[n],i={};t[n]=i;for(let e in r){let t=!0,n=r[e],a=e.toLowerCase();switch(a){case`kd`:case`ka`:case`ks`:this.options&&this.options.normalizeRGB&&(n=[n[0]/255,n[1]/255,n[2]/255]),this.options&&this.options.ignoreZeroRGBs&&n[0]===0&&n[1]===0&&n[2]===0&&(t=!1);break;default:break}t&&(i[a]=n)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(t){let n=this,r=this.materialsInfo[t],i={name:t,side:this.side};function a(e,t){return typeof t!=`string`||t===``?``:/^https?:\/\//i.test(t)?t:e+t}function o(e,t){if(i[e])return;let r=n.getTextureParams(t,i),o=n.loadTexture(a(n.baseUrl,r.url));o.repeat.copy(r.scale),o.offset.copy(r.offset),o.wrapS=n.wrap,o.wrapT=n.wrap,(e===`map`||e===`emissiveMap`)&&(o.colorSpace=R),i[e]=o}for(let t in r){let n=r[t],a;if(n!==``)switch(t.toLowerCase()){case`kd`:i.color=k.toWorkingColorSpace(new e().fromArray(n),R);break;case`ks`:i.specular=k.toWorkingColorSpace(new e().fromArray(n),R);break;case`ke`:i.emissive=k.toWorkingColorSpace(new e().fromArray(n),R);break;case`map_kd`:o(`map`,n);break;case`map_ks`:o(`specularMap`,n);break;case`map_ke`:o(`emissiveMap`,n);break;case`norm`:o(`normalMap`,n);break;case`map_bump`:case`bump`:o(`bumpMap`,n);break;case`map_d`:o(`alphaMap`,n),i.transparent=!0;break;case`ns`:i.shininess=parseFloat(n);break;case`d`:a=parseFloat(n),a<1&&(i.opacity=a,i.transparent=!0);break;case`tr`:a=parseFloat(n),this.options&&this.options.invertTrProperty&&(a=1-a),a>0&&(i.opacity=1-a,i.transparent=!0);break;default:break}}return this.materials[t]=new rt(i),this.materials[t]}getTextureParams(e,t){let n={scale:new V(1,1),offset:new V(0,0)},r=e.split(/\s+/),i;return i=r.indexOf(`-bm`),i>=0&&(t.bumpScale=parseFloat(r[i+1]),r.splice(i,2)),i=r.indexOf(`-s`),i>=0&&(n.scale.set(parseFloat(r[i+1]),parseFloat(r[i+2])),r.splice(i,4)),i=r.indexOf(`-o`),i>=0&&(n.offset.set(parseFloat(r[i+1]),parseFloat(r[i+2])),r.splice(i,4)),n.url=r.join(` `).trim(),n}loadTexture(e,t,n,r,i){let a=this.manager===void 0?ct:this.manager,o=a.getHandler(e);o===null&&(o=new we(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let s=o.load(e,n,r,i);return t!==void 0&&(s.mapping=t),s}},Us=/^[og]\s*(.+)?/,Ws=/^mtllib /,Gs=/^usemtl /,Ks=/^usemap /,qs=/\s+/,Js=new n,Ys=new n,Xs=new n,Zs=new n,Qs=new n,$s=new e;function ec(){let e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let n=this.object&&typeof this.object.currentMaterial==`function`?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize==`function`&&this.object._finalize(!0),this.object={name:e||``,fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){let n=this._finalize(!1);n&&(n.inherited||n.groupCount<=0)&&this.materials.splice(n.index,1);let r={index:this.materials.length,name:e||``,mtllib:Array.isArray(t)&&t.length>0?t[t.length-1]:``,smooth:n===void 0?this.smooth:n.smooth,groupStart:n===void 0?0:n.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){let t={index:typeof e==`number`?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(r),r},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){let t=this.currentMaterial();if(t&&t.groupEnd===-1&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(let e=this.materials.length-1;e>=0;e--)this.materials[e].groupCount<=0&&this.materials.splice(e,1);return e&&this.materials.length===0&&this.materials.push({name:``,smooth:this.smooth}),t}},n&&n.name&&typeof n.clone==`function`){let e=n.clone(0);e.inherited=!0,this.object.materials.push(e)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize==`function`&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){let r=this.vertices,i=this.object.geometry.vertices;i.push(r[e+0],r[e+1],r[e+2]),i.push(r[t+0],r[t+1],r[t+2]),i.push(r[n+0],r[n+1],r[n+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){let r=this.normals,i=this.object.geometry.normals;i.push(r[e+0],r[e+1],r[e+2]),i.push(r[t+0],r[t+1],r[t+2]),i.push(r[n+0],r[n+1],r[n+2])},addFaceNormal:function(e,t,n){let r=this.vertices,i=this.object.geometry.normals;Js.fromArray(r,e),Ys.fromArray(r,t),Xs.fromArray(r,n),Qs.subVectors(Xs,Ys),Zs.subVectors(Js,Ys),Qs.cross(Zs),Qs.normalize(),i.push(Qs.x,Qs.y,Qs.z),i.push(Qs.x,Qs.y,Qs.z),i.push(Qs.x,Qs.y,Qs.z)},addColor:function(e,t,n){let r=this.colors,i=this.object.geometry.colors;r[e]!==void 0&&i.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&i.push(r[t+0],r[t+1],r[t+2]),r[n]!==void 0&&i.push(r[n+0],r[n+1],r[n+2])},addUV:function(e,t,n){let r=this.uvs,i=this.object.geometry.uvs;i.push(r[e+0],r[e+1]),i.push(r[t+0],r[t+1]),i.push(r[n+0],r[n+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,r,i,a,o,s,c){let l=this.vertices.length,u=this.parseVertexIndex(e,l),d=this.parseVertexIndex(t,l),f=this.parseVertexIndex(n,l);if(this.addVertex(u,d,f),this.addColor(u,d,f),o!==void 0&&o!==``){let e=this.normals.length;u=this.parseNormalIndex(o,e),d=this.parseNormalIndex(s,e),f=this.parseNormalIndex(c,e),this.addNormal(u,d,f)}else this.addFaceNormal(u,d,f);if(r!==void 0&&r!==``){let e=this.uvs.length;u=this.parseUVIndex(r,e),d=this.parseUVIndex(i,e),f=this.parseUVIndex(a,e),this.addUV(u,d,f),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type=`Points`;let t=this.vertices.length;for(let n=0,r=e.length;n{i.materialsLoader.load(a.toString(),t=>{i.setMaterials(t),e()},null,t)})}t(i.createObjects(r))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}setMTLLoader(e){return this.materialsLoader=e,this}setMaterials(e){return this.materials=e,this}parse(e,t=!1){let n=new ec;e.indexOf(`\r +`)!==-1&&(e=e.replace(/\r\n/g,` +`)),e.indexOf(`\\ +`)!==-1&&(e=e.replace(/\\\n/g,``));let r=e.split(` +`),i=[];for(let e=0,t=r.length;e=7?($s.setRGB(parseFloat(e[4]),parseFloat(e[5]),parseFloat(e[6]),R),n.colors.push($s.r,$s.g,$s.b)):n.colors.push(void 0,void 0,void 0);break;case`vn`:n.normals.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]));break;case`vt`:n.uvs.push(parseFloat(e[1]),parseFloat(e[2]));break}}else if(a===`f`){let e=t.slice(1).trim().split(qs),r=[];for(let t=0,n=e.length;t0){let e=n.split(`/`);r.push(e)}}let i=r[0];for(let e=1,t=r.length-1;e1){let e=i[1].trim().toLowerCase();n.object.smooth=e!==`0`&&e!==`off`}else n.object.smooth=!0;let e=n.object.currentMaterial();e&&(e.smooth=n.object.smooth)}else{if(t===`\0`)continue;console.warn(`THREE.OBJLoader: Unexpected line: "`+t+`"`)}}return n.finalize(),t?n:this.createObjects(n)}createObjects(e){let t=new Fe;if(t.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0))for(let n=0,r=e.objects.length;n0&&l.setAttribute(`normal`,new B(i.normals,3)),i.colors.length>0&&(c=!0,l.setAttribute(`color`,new B(i.colors,3))),i.hasUVIndices===!0&&l.setAttribute(`uv`,new B(i.uvs,2));let u=[];for(let t=0,n=a.length;t1){for(let e=0,t=a.length;e0){let n=new Tt({size:1,sizeAttenuation:!1}),r=new le;r.setAttribute(`position`,new B(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(r.setAttribute(`color`,new B(e.colors,3)),n.vertexColors=!0);let i=new Oe(r,n);t.add(i)}return t}};export{Lt as A,fr as C,rr as D,lr as E,Pt as M,Rn as O,pr as S,ur as T,Yi as _,Xo as a,pi as b,Oo as c,Oa as d,xa as f,Oi as g,oa as h,is as i,Ft as j,In as k,wo as l,ya as m,ys as n,Yo as o,ba as p,cs as r,Jo as s,tc as t,So as u,yi as v,dr as w,_i as x,vi as y}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/three-examples@0.169.19.js.gz b/Needle/MenuScene/dist/assets/three-examples@0.169.19.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e14dea652560c412710ebd8897ecb67f93be5114 GIT binary patch literal 107289 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,t=r)}return t}function te(e,t){t.set(e)}function ne(e,t,n){let r,i;for(let a=0;a<3;a++){let o=a+3;r=e[a],i=t[a],n[a]=ri?r:i}}function E(e,t,n){for(let r=0;r<3;r++){let i=t[e+2*r],a=t[e+2*r+1],o=i-a,s=i+a;on[r+3]&&(n[r+3]=s)}}function D(e){let t=e[3]-e[0],n=e[4]-e[1],r=e[5]-e[2];return 2*(t*n+n*r+r*t)}function O(e,t){return t[e+15]===x}function k(e,t){return t[e+6]}function A(e,t){return t[e+14]}function j(e){return e+8}function M(e,t){return e+t[e+6]*8}function re(e,t){return t[e+7]}function N(e){return e}function ie(e,t,n,r,i){let a=1/0,o=1/0,s=1/0,c=-1/0,l=-1/0,u=-1/0,d=1/0,f=1/0,p=1/0,m=-1/0,h=-1/0,g=-1/0,_=e.offset||0;for(let r=(t-_)*6,i=(t+n-_)*6;rc&&(c=_),tm&&(m=t);let v=e[r+2],y=e[r+3],b=v-y,x=v+y;bl&&(l=x),vh&&(h=v);let S=e[r+4],C=e[r+5],w=S-C,T=S+C;wu&&(u=T),Sg&&(g=S)}r[0]=a,r[1]=o,r[2]=s,r[3]=c,r[4]=l,r[5]=u,i[0]=d,i[1]=f,i[2]=p,i[3]=m,i[4]=h,i[5]=g}var P=32,ae=(e,t)=>e.candidate-t.candidate,F=Array(P).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),oe=new Float32Array(6);function se(e,t,n,r,i,a){let o=-1,s=0;if(a===0)o=ee(t),o!==-1&&(s=(t[o]+t[o+3])/2);else if(a===1)o=ee(e),o!==-1&&(s=ce(n,r,i,o));else if(a===2){let a=D(e),c=b*i,l=n.offset||0,u=(r-l)*6,d=(r+i-l)*6;for(let e=0;e<3;e++){let r=t[e],l=(t[e+3]-r)/P;if(i

=a.candidate?E(r,n,a.rightCacheBounds):(E(r,n,a.leftCacheBounds),a.count++)}}for(let n=0;n=P&&(i=P-1);let a=F[i];a.count++,E(t,n,a.bounds)}let t=F[P-1];te(t.bounds,t.rightCacheBounds);for(let e=P-2;e>=0;e--){let t=F[e],n=F[e+1];ne(t.bounds,n.rightCacheBounds,t.rightCacheBounds)}let f=0;for(let t=0;t=c;)s--;if(ohe)throw Error(`MeshBVH: Cannot store relative child node offset greater than 32 bits.`);return fe[n+6]=c,fe[n+7]=a,ve(o,i)}}function ye(e,t,n,r,i){let{maxDepth:a,verbose:o,maxLeafSize:s,strategy:c,onProgress:l}=i,u=e.primitiveBuffer,d=e.primitiveBufferStride,f=new Float32Array(6),p=!1,m=new le;return ie(t,n,r,m.boundingData,f),g(m,n,r,f),m;function h(e){l&&l(e/r)}function g(e,n,r,i=null,l=0){if(!p&&l>=a&&(p=!0,o&&console.warn(`BVH: Max depth of ${a} reached when generating BVH. Consider increasing maxDepth.`)),r<=s||l>=a)return h(n+r),e.offset=n,e.count=r,e;let m=se(e.boundingData,i,t,n,r,c);if(m.axis===-1)return h(n+r),e.offset=n,e.count=r,e;let _=ue(u,d,t,n,r,m);if(_===n||_===n+r)h(n+r),e.offset=n,e.count=r;else{e.splitAxis=m.axis;let i=new le,a=n,o=_-n;e.left=i,ie(t,a,o,i.boundingData,f),g(i,a,o,f,l+1);let s=new le,c=_,u=r-o;e.right=s,ie(t,c,u,s.boundingData,f),g(s,c,u,f,l+1)}return e}}function be(e,t){let n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,r=e.getRootRanges(t.range),i=r[0],a=r[r.length-1],o={offset:i.offset,count:a.offset+a.count-i.offset},s=new Float32Array(6*o.count);s.offset=o.offset,e.computePrimitiveBounds(o.offset,o.count,s),e._roots=r.map(r=>{let i=ye(e,s,r.offset,r.count,t),a=new n(32*ge(i));return _e(0,i,a),a})}var xe=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}},I=new class{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;let e=[],t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}},L,Se,Ce=[],we=new xe(()=>new u);function Te(e,t,n,r,i,a){L=we.getPrimitive(),Se=we.getPrimitive(),Ce.push(L,Se),I.setBuffer(e._roots[t]);let o=Ee(0,e.geometry,n,r,i,a);I.clearBuffer(),we.releasePrimitive(L),we.releasePrimitive(Se),Ce.pop(),Ce.pop();let s=Ce.length;return s>0&&(Se=Ce[s-1],L=Ce[s-2]),o}function Ee(e,t,n,r,i=null,a=0,o=0){let{float32Array:s,uint16Array:c,uint32Array:l}=I,u=e*2;if(O(u,c)){let t=k(e,l),n=A(u,c);return T(N(e),s,L),r(t,n,!1,o,a+e/8,L)}else{let u=j(e),d=M(e,l),f=u,p=d,m,h,g,_;if(i&&(g=L,_=Se,T(N(f),s,g),T(N(p),s,_),m=i(g),h=i(_),hnew u),ke=new u,Ae=new u,je=new u,Me=new u,Ne=!1;function Pe(e,t,n,r){if(Ne)throw Error(`MeshBVH: Recursive calls to bvhcast not supported.`);Ne=!0;let i=e._roots,a=t._roots,o,c=0,l=0,u=new s().copy(n).invert();for(let e=0,t=i.length;es&&(s=u),tc&&(c=d),rl&&(l=f)}return n[r+0]=i,n[r+1]=a,n[r+2]=o,n[r+3]=s,n[r+4]=c,n[r+5]=l,n}computePrimitiveBounds(e,t,n){let r=n.offset||0;for(let i=e,a=e+t;i=0;e--){let t=e*8,n=t*2;if(O(n,i)){let e=k(t,r),o=A(n,i);this.writePrimitiveRangeBounds(e,o,Ie,0),a.set(Ie,t)}else{let e=j(t),n=M(t,r);for(let r=0;r<3;r++){let i=a[e+r],o=a[e+r+3],s=a[n+r],c=a[n+r+3];a[t+r]=ic?o:c}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{T(0,new Float32Array(t),Fe),e.union(Fe)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:r,intersectsPrimitive:i,scratchPrimitive:a,iterate:o}=e;if(r&&i){let e=r;r=(t,n,r,s,c)=>e(t,n,r,s,c)?!0:o(t,n,this,i,r,s,a)}else r||=i?(e,t,n,r)=>o(e,t,this,i,n,r,a):(e,t,n)=>n;let s=!1,c=0,l=this._roots;for(let e=0,i=l.length;e65535?new Uint32Array(new t(4*e)):new Uint16Array(new t(2*e))}function He(e,t){if(!e.index){let n=e.attributes.position.count,r=Ve(n,t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);e.setIndex(new v(r,1));for(let e=0;e({offset:e.start/t,count:e.count/t}))}function Ge(e,t,n){let r=Ue(e,t,n),i=We(e,n);if(!i.length)return[r];let a=[],o=r.offset,s=r.offset+r.count,c=ze(e)/n,l=[];for(let e of i){let{offset:t,count:n}=e,r=t,i=t+(isFinite(n)?n:c-t);ro&&(l.push({pos:Math.max(o,r),isStart:!0}),l.push({pos:Math.min(s,i),isStart:!1}))}l.sort((e,t)=>e.pos===t.pos?e.type===`end`?-1:1:e.pos-t.pos);let u=0,d=null;for(let e of l){let t=e.pos;u!==0&&t!==d&&a.push({offset:d,count:t-d}),u+=e.isStart?1:-1,d=t}return a}function Ke(e,t){let n=e[e.length-1],r=n.offset+n.count>2**16,i=e.reduce((e,t)=>e+t.count,0),a=r?4:2,o=t?new SharedArrayBuffer(i*a):new ArrayBuffer(i*a),s=r?new Uint32Array(o):new Uint16Array(o),c=0;for(let t=0;tthis._indirectBuffer[e]:e=>e,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...w,...t},t[C]||this.init(t)}init(e){let{geometry:t,primitiveStride:n}=this;e.indirect?this._indirectBuffer=Ke(Ge(t,e.range,n),e.useSharedArrayBuffer):He(t,e),super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new u))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Ge(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw Error(`BVH: raycastObject3D() not implemented`)}},B=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,r=-1/0;for(let i=0,a=e.length;ir?a:r}this.min=n,this.max=r}setFromPoints(e,t){let n=1/0,r=-1/0;for(let i=0,a=t.length;ir?o:r}this.min=n,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};B.prototype.setFromBox=(function(){let t=new e;return function(e,n){let r=n.min,i=n.max,a=1/0,o=-1/0;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let c=0;c<=1;c++){t.x=r.x*n+i.x*(1-n),t.y=r.y*s+i.y*(1-s),t.z=r.z*c+i.z*(1-c);let l=e.dot(t);a=Math.min(l,a),o=Math.max(l,o)}this.min=a,this.max=o}})(),(function(){let e=new B;return function(t,n){let r=t.points,i=t.satAxes,a=t.satBounds,o=n.points,s=n.satAxes,c=n.satBounds;for(let t=0;t<3;t++){let n=a[t],r=i[t];if(e.setFromPoints(r,o),n.isSeparated(e))return!1}for(let t=0;t<3;t++){let n=c[t],i=s[t];if(e.setFromPoints(i,r),n.isSeparated(e))return!1}}})();var Je=(function(){let t=new e,n=new e,r=new e;return function(e,i,a){let o=e.start,s=t,c=i.start,l=n;r.subVectors(o,c),t.subVectors(e.end,e.start),n.subVectors(i.end,i.start);let u=r.dot(l),d=l.dot(s),f=l.dot(l),p=r.dot(s),m=s.dot(s)*f-d*d,h,g;h=m===0?0:(u*d-p*f)/m,g=(u+h*d)/f,a.x=h,a.y=g}})(),Ye=(function(){let t=new h,n=new e,r=new e;return function(e,i,a,o){Je(e,i,t);let s=t.x,c=t.y;if(s>=0&&s<=1&&c>=0&&c<=1){e.at(s,a),i.at(c,o);return}else if(s>=0&&s<=1){c<0?i.at(0,o):i.at(1,o),e.closestPointToPoint(o,!0,a);return}else if(c>=0&&c<=1){s<0?e.at(0,a):e.at(1,a),i.closestPointToPoint(a,!0,o);return}else{let t;t=s<0?e.start:e.end;let l;l=c<0?i.start:i.end;let u=n,d=r;if(e.closestPointToPoint(l,!0,n),i.closestPointToPoint(t,!0,r),u.distanceToSquared(l)<=d.distanceToSquared(t)){a.copy(u),o.copy(l);return}else{a.copy(t),o.copy(d);return}}}})(),Xe=(function(){let t=new e,n=new e,r=new d,a=new i;return function(e,i){let{radius:o,center:s}=e,{a:c,b:l,c:u}=i;if(a.start=c,a.end=l,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o||(a.start=c,a.end=u,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o)||(a.start=l,a.end=u,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o))return!0;let d=i.getPlane(r);if(Math.abs(d.distanceToPoint(s))<=o){let e=d.projectPoint(s,n);if(i.containsPoint(e))return!0}return!1}})(),Ze=[`x`,`y`,`z`],V=1e-15,Qe=V*V;function H(e){return Math.abs(e)new e),this.satBounds=[,,,,].fill().map(()=>new B),this.points=[this.a,this.b,this.c],this.plane=new d,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new i,this.needsUpdate=!0}intersectsSphere(e){return Xe(e,this)}update(){let e=this.a,t=this.b,n=this.c,r=this.points,i=this.satAxes,a=this.satBounds,o=i[0],s=a[0];this.getNormal(o),s.setFromPoints(o,r);let c=i[1],l=a[1];c.subVectors(e,t),l.setFromPoints(c,r);let u=i[2],d=a[2];u.subVectors(t,n),d.setFromPoints(u,r);let f=i[3],p=a[3];f.subVectors(n,e),p.setFromPoints(f,r);let m=c.length(),h=u.length(),g=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,m0)g(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else if(a>0)g(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(s*c>0||o!=0)g(e.a,e.b,e.c,t,n,r,o,s,c,l,u);else if(s!=0)g(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(c!=0)g(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else return!0;return!1}function v(e,t,n,r){let i=t.degenerateSegment,o=e.plane.distanceToPoint(i.start),s=e.plane.distanceToPoint(i.end);return H(o)?H(s)?m(e,t,n,r):(n&&(n.start.copy(i.start),n.end.copy(i.start)),e.containsPoint(i.start)):H(s)?(n&&(n.start.copy(i.end),n.end.copy(i.end)),e.containsPoint(i.end)):e.plane.intersectLine(i,a)==null?!1:(n&&(n.start.copy(a),n.end.copy(a)),e.containsPoint(a))}function y(e,t,n){let r=t.a;return H(e.plane.distanceToPoint(r))&&e.containsPoint(r)?(n&&(n.start.copy(r),n.end.copy(r)),!0):!1}function b(e,t,n){let r=e.degenerateSegment,i=t.a;return r.closestPointToPoint(i,!0,a),i.distanceToSquared(a)1||p<0||p>1?!1:H(r.start.z+c.z*f-(i.start.z+l.z*p))?(n&&(n.start.copy(r.start).addScaledVector(c,f),n.end.copy(r.start).addScaledVector(c,f)),!0):!1}else if(t.isDegenerateIntoPoint)return b(e,t,n);else return v(t,e,n,r);else if(e.isDegenerateIntoPoint)return t.isDegenerateIntoPoint?t.a.distanceToSquared(e.a)0&&b>0)return!1;let S=a.distanceToPoint(e.a),C=a.distanceToPoint(e.b),w=a.distanceToPoint(e.c);H(S)&&(S=0),H(C)&&(C=0),H(w)&&(w=0);let T=S*C,ee=S*w;if(T>0&&ee>0)return!1;o.copy(a.normal),s.copy(c.normal);let te=o.cross(s),ne=0,E=Math.abs(te.x),D=Math.abs(te.y);D>E&&(E=D,ne=1),Math.abs(te.z)>E&&(ne=2);let O=Ze[ne],k=this.a[O],A=this.b[O],j=this.c[O],M=e.a[O],re=e.b[O],N=e.c[O];if(_(this,k,A,j,y,b,h,g,v,f,l)||_(e,M,re,N,T,ee,S,C,w,p,u))return m(this,e,n,r);if(f.yf.x?n.start.copy(u.start):n.start.copy(l.start),p.ynew e),this.satAxes=[,,,].fill().map(()=>new e),this.satBounds=[,,,].fill().map(()=>new B),this.alignedSatBounds=[,,,].fill().map(()=>new B),this.needsUpdate=!1,t&&this.min.copy(t),n&&this.max.copy(n),r&&this.matrix.copy(r)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};W.prototype.update=(function(){return function(){let e=this.matrix,t=this.min,n=this.max,r=this.points;for(let i=0;i<=1;i++)for(let a=0;a<=1;a++)for(let o=0;o<=1;o++){let s=r[1*i|2*a|4*o];s.x=i?n.x:t.x,s.y=a?n.y:t.y,s.z=o?n.z:t.z,s.applyMatrix4(e)}let i=this.satBounds,a=this.satAxes,o=r[0];for(let e=0;e<3;e++){let t=a[e],n=i[e],s=r[1<new i),r=Array(12).fill().map(()=>new i),a=new e,o=new e;return function(e,i=0,s=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(e))return(s||c)&&(e.getCenter(o),this.closestPointToPoint(o,a),e.closestPointToPoint(a,o),s&&s.copy(a),c&&c.copy(o)),0;let l=i*i,u=e.min,d=e.max,f=this.points,p=1/0;for(let e=0;e<8;e++){let t=f[e];o.copy(t).clamp(u,d);let n=t.distanceToSquared(o);if(nnew U)}},$e=new e,et=new e;function tt(e,t,n={},r=0,i=1/0){let a=r*r,o=i*i,s=1/0,c=null;if(e.shapecast({boundsTraverseOrder:e=>($e.copy(t).clamp(e.min,e.max),$e.distanceToSquared(t)),intersectsBounds:(e,t,n)=>n{e.closestPointToPoint(t,$e);let r=t.distanceToSquared($e);return r=169,rt=parseInt(t)<=161,K=new e,q=new e,J=new e,it=new h,at=new h,ot=new h,st=new e,ct=new e,lt=new e,ut=new e;function dt(e,t,n,r,i,a,o,s){let c;if(c=a===1?e.intersectTriangle(r,n,t,!0,i):e.intersectTriangle(t,n,r,a!==2,i),c===null)return null;let l=e.origin.distanceTo(i);return ls?null:{distance:l,point:i.clone()}}function ft(t,n,r,i,a,o,s,c,l,u,d){K.fromBufferAttribute(n,o),q.fromBufferAttribute(n,s),J.fromBufferAttribute(n,c);let f=dt(t,K,q,J,ut,l,u,d);if(f){if(i){it.fromBufferAttribute(i,o),at.fromBufferAttribute(i,s),ot.fromBufferAttribute(i,c),f.uv=new h;let e=y.getInterpolation(ut,K,q,J,it,at,ot,f.uv);nt||(f.uv=e)}if(a){it.fromBufferAttribute(a,o),at.fromBufferAttribute(a,s),ot.fromBufferAttribute(a,c),f.uv1=new h;let e=y.getInterpolation(ut,K,q,J,it,at,ot,f.uv1);nt||(f.uv1=e),rt&&(f.uv2=f.uv1)}if(r){st.fromBufferAttribute(r,o),ct.fromBufferAttribute(r,s),lt.fromBufferAttribute(r,c),f.normal=new e;let n=y.getInterpolation(ut,K,q,J,st,ct,lt,f.normal);f.normal.dot(t.direction)>0&&f.normal.multiplyScalar(-1),nt||(f.normal=n)}let n={a:o,b:s,c,normal:new e,materialIndex:0};if(y.getNormal(K,q,J,n.normal),f.face=n,f.faceIndex=o,nt){let t=new e;y.getBarycoord(ut,K,q,J,t),f.barycoord=t}}return f}function pt(e){return e&&e.isMaterial?e.side:e}function mt(e,t,n,r,i,a,o){let s=r*3,c=s+0,l=s+1,u=s+2,{index:d,groups:f}=e;e.index&&(c=d.getX(c),l=d.getX(l),u=d.getX(u));let{position:p,normal:m,uv:h,uv1:g}=e.attributes;if(Array.isArray(t)){let e=r*3;for(let s=0,d=f.length;s=d&&ef&&(f=n),op&&(p=o),sm&&(m=s)}return c[e+0]!==a||c[e+1]!==u||c[e+2]!==d||c[e+3]!==f||c[e+4]!==p||c[e+5]!==m?(c[e+0]=a,c[e+1]=u,c[e+2]=d,c[e+3]=f,c[e+4]=p,c[e+5]=m,!0):!1}else{let r=j(e),i=M(e,o),s=a,l=!1,u=!1;if(t){if(!s){let e=r/8+n/32,a=i/8+n/32;l=t.has(e),u=t.has(a),s=!l&&!u}}else l=!0,u=!0;let f=s||l,p=s||u,m=!1;f&&(m=d(r,n,s));let h=!1;p&&(h=d(i,n,s));let g=m||h;if(g)for(let t=0;t<3;t++){let n=r+t,a=i+t,o=c[n],s=c[n+3],l=c[a],u=c[a+3];c[e+t]=ou?s:u}return g}}}function X(e,t,n,r,i){let a,o,s,c,l,u,d=1/n.direction.x,f=1/n.direction.y,p=1/n.direction.z,m=n.origin.x,h=n.origin.y,g=n.origin.z,_=t[e],v=t[e+3],y=t[e+1],b=t[e+3+1],x=t[e+2],S=t[e+3+2];return d>=0?(a=(_-m)*d,o=(v-m)*d):(a=(v-m)*d,o=(_-m)*d),f>=0?(s=(y-h)*f,c=(b-h)*f):(s=(b-h)*f,c=(y-h)*f),a>c||s>o||((s>a||isNaN(a))&&(a=s),(c=0?(l=(x-g)*p,u=(S-g)*p):(l=(S-g)*p,u=(x-g)*p),a>u||l>o)?!1:((l>a||a!==a)&&(a=l),(u=r)}function yt(e,t,n,r,i,a,o,s){let{geometry:c,_indirectBuffer:l}=e;for(let e=r,u=r+i;e=0,d,f;u?(d=j(e),f=M(e,c)):(d=M(e,c),f=j(e));let p=X(d,o,r,i,a)?Et(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=X(f,o,r,i,a)?Et(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var Dt=new u,Ot=new U,kt=new U,At=new s,jt=new W,Mt=new W;function Nt(e,t,n,r){I.setBuffer(e._roots[t]);let i=Pt(0,e,n,r);return I.clearBuffer(),i}function Pt(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=I,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),jt.set(n.boundingBox.min,n.boundingBox.max,r),i=jt),O(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=k(e,s),m=A(c,o);if(At.copy(r).invert(),n.boundsTree)return T(N(e),a,Mt),Mt.matrix.copy(At),Mt.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>Mt.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let t=p*3,n=(m+p)*3;tIt.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:e=>Lt.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let o=t,s=t+i;op&&(p=a),om&&(m=o),sh&&(h=s)}}return c[n+0]!==l||c[n+1]!==d||c[n+2]!==f||c[n+3]!==p||c[n+4]!==m||c[n+5]!==h?(c[n+0]=l,c[n+1]=d,c[n+2]=f,c[n+3]=p,c[n+4]=m,c[n+5]=h,!0):!1}else{let e=j(n),r=M(n,o),i=l,s=!1,u=!1;if(t){if(!i){let n=e/8+a/32,o=r/8+a/32;s=t.has(n),u=t.has(o),i=!s&&!u}}else s=!0,u=!0;let f=i||s,p=i||u,m=!1;f&&(m=d(e,a,i));let h=!1;p&&(h=d(r,a,i));let g=m||h;if(g)for(let t=0;t<3;t++){let i=e+t,a=r+t,o=c[i],s=c[i+3],l=c[a],u=c[a+3];c[n+t]=ou?s:u}return g}}}function Wt(e,t,n,r,i,a,o){I.setBuffer(e._roots[t]),Gt(0,e,n,r,i,a,o),I.clearBuffer()}function Gt(e,t,n,r,i,a,o){let{float32Array:s,uint16Array:c,uint32Array:l}=I,u=e*2;if(O(u,c))yt(t,n,r,k(e,l),A(u,c),i,a,o);else{let c=j(e);X(c,s,r,a,o)&&Gt(c,t,n,r,i,a,o);let u=M(e,l);X(u,s,r,a,o)&&Gt(u,t,n,r,i,a,o)}}var Kt=[`x`,`y`,`z`];function qt(e,t,n,r,i,a){I.setBuffer(e._roots[t]);let o=Jt(0,e,n,r,i,a);return I.clearBuffer(),o}function Jt(e,t,n,r,i,a){let{float32Array:o,uint16Array:s,uint32Array:c}=I,l=e*2;if(O(l,s))return bt(t,n,r,k(e,c),A(l,s),i,a);{let s=re(e,c),l=Kt[s],u=r.direction[l]>=0,d,f;u?(d=j(e),f=M(e,c)):(d=M(e,c),f=j(e));let p=X(d,o,r,i,a)?Jt(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=X(f,o,r,i,a)?Jt(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var Yt=new u,Xt=new U,Zt=new U,Qt=new s,$t=new W,en=new W;function tn(e,t,n,r){I.setBuffer(e._roots[t]);let i=nn(0,e,n,r);return I.clearBuffer(),i}function nn(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=I,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),$t.set(n.boundingBox.min,n.boundingBox.max,r),i=$t),O(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=k(e,s),m=A(c,o);if(Qt.copy(r).invert(),n.boundsTree)return T(N(e),a,en),en.matrix.copy(Qt),en.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>en.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let n=p,r=m+p;nan.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree){let s=t.boundsTree;return s.shapecast({boundsTraverseOrder:e=>on.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let x=t,S=t+o;xe.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=i?i.slice():null):(o.roots=r,o.index=a?a.array:null,o.indirectBuffer=i),o}static deserialize(t,n,r={}){r={setIndex:!0,indirect:!!t.indirectBuffer,...r};let{index:i,roots:a,indirectBuffer:o}=t;t.version||(console.warn(`MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data.`),c(a));let s=new e(n,{...r,[C]:!0});if(s._roots=a,s._indirectBuffer=o||null,r.setIndex){let e=n.getIndex();if(e===null){let e=new v(t.index,1,!1);n.setIndex(e)}else e.array!==i&&(e.array.set(i),e.needsUpdate=!0)}return s;function c(e){for(let t=0;td&&(d=i),o>d&&(d=o),t[n+e]=s,t[n+e+3]=d}return t}computePrimitiveBounds(e,t,n){let r=this.geometry,i=this._indirectBuffer,a=r.attributes.position,o=r.index?r.index.array:null,s=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw Error(`MeshBVH: compute triangle bounds range is invalid.`);let c=a.array,l=a.offset||0,u=3;a.isInterleavedBufferAttribute&&(u=a.data.stride);let d=[`getX`,`getY`,`getZ`],f=n.offset;for(let r=e,p=e+t;ru&&(u=i),o>u&&(u=o);let f=(u-l)/2,g=e*2;n[t+g+0]=l+f,n[t+g+1]=f+(Math.abs(l)+f)*S}}return n}raycastObject3D(e,t,n=[]){let{material:r}=e;if(r===void 0)return;gn.copy(e.matrixWorld).invert(),mn.copy(t.ray).applyMatrix4(gn),_n.setFromMatrixScale(e.matrixWorld),hn.copy(mn.direction).multiply(_n);let i=hn.length(),a=t.near/i,o=t.far/i;if(t.firstHitOnly===!0){let i=this.raycastFirst(mn,r,a,o);i=fn(i,e,t),i&&n.push(i)}else{let i=this.raycast(mn,r,a,o);for(let r=0,a=i.length;r{Y(o,this.resolveTriangleIndex(e)*3,s,c)}:e=>{Y(o,e*3,s,c)},u=G.getPrimitive(),d=t.geometry.index,f=t.geometry.attributes.position,p=t.indirect?e=>{Y(u,t.resolveTriangleIndex(e)*3,d,f)}:e=>{Y(u,e*3,d,f)};if(a){if(!(t instanceof e))throw Error(`MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.`);let r=(e,t,r,i,s,c,d,f)=>{for(let m=r,h=r+i;mpn.intersectsBox(e),intersectsTriangle:e=>pn.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},r={},i=0,a=1/0){return(this.indirect?dn:Ht)(this,e,t,n,r,i,a)}closestPointToPoint(e,t={},n=0,r=1/0){return tt(this,e,t,n,r)}},bn={Mesh:l.prototype.raycast,Line:m.prototype.raycast,LineSegments:n.prototype.raycast,LineLoop:a.prototype.raycast,Points:f.prototype.raycast,BatchedMesh:_.prototype.raycast},Z=new l,xn=[];function Sn(e,t){if(this.isBatchedMesh)Cn.call(this,e,t);else{let{geometry:r}=this;if(r.boundsTree)r.boundsTree.raycastObject3D(this,e,t);else{let r;if(this instanceof l)r=bn.Mesh;else if(this instanceof n)r=bn.LineSegments;else if(this instanceof a)r=bn.LineLoop;else if(this instanceof m)r=bn.Line;else if(this instanceof f)r=bn.Points;else throw Error(`BVH: Fallback raycast function not found.`);r.call(this,e,t)}}}function Cn(e,t){if(this.boundsTrees){let n=this.boundsTrees,r=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,a=this.matrixWorld;Z.material=this.material,Z.geometry=this.geometry;let o=Z.geometry.boundsTree,s=Z.geometry.drawRange;Z.geometry.boundingSphere===null&&(Z.geometry.boundingSphere=new g);for(let o=0,s=r.length;o=2&&t.setY(a,e.getY(i)),r>=3&&t.setZ(a,e.getZ(i)),r>=4&&t.setW(a,e.getW(i))}}else{let r=t.array,i=r.constructor,a=r.BYTES_PER_ELEMENT*e.itemSize*n;new i(r.buffer,a,e.array.length).set(e.array)}}function In(e,t,n){let r=e.elements,i=t.elements;for(let e=0,t=i.length;e{e.traverseVisible(e=>{e.isMesh&&t.push(e)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=[`position`,`normal`,`color`,`tangent`,`uv`,`uv2`],this._intermediateGeometry=Array(t.length).fill().map(()=>new o),this._diffMap=new WeakMap}getMaterials(){let e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new o){let t=[],{meshes:n,useGroups:r,_intermediateGeometry:i,_diffMap:a}=this;for(let e=0,r=n.length;e{throw e.message?Error(`${this.name}: Could not create Web Worker with error "${e.message}"`):Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw Error(`GenerateMeshBVHWorker: Already running job.`);if(this.worker===null)throw Error(`GenerateMeshBVHWorker: Worker has been disposed.`);this.running=!0;let t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}};export{yn as a,qe as c,C as d,wn as i,Ke as l,Un as n,W as o,Sn as r,U as s,Wn as t,Le as u}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz b/Needle/MenuScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c95f54f628c3d4a17df95405da75f3a1f25f455b GIT binary patch literal 17657 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js b/Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js new file mode 100644 index 0000000..9df634e --- /dev/null +++ b/Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js @@ -0,0 +1,406 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,It as r,Qt as i,S as a,Zt as o,_n as s,_r as c,fn as l,gr as u,it as d,jr as f,kr as ee,nt as te,tr as ne,vn as re,x as ie}from"./three@0.169.19.js";var ae=e({BaseProperty:()=>xi,Behavior:()=>Si,Block:()=>Ci,DefaultValues:()=>wi,FontLibrary:()=>Ti,FontVariant:()=>Ei,InheritableProperty:()=>Di,Inline:()=>Oi,InlineBlock:()=>ki,InlineGlyph:()=>Ai,MSDFFontMaterialUtils:()=>ji,MaterialTransformers:()=>Mi,MeshUIBaseElement:()=>Ni,ShaderChunkUI:()=>Pi,Text:()=>Fi,TypographicFont:()=>Ii,TypographicGlyph:()=>Li,default:()=>Ri,update:()=>zi}),p={};p.d=(e,t)=>{for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})};var m={};p.d(m,{ti:()=>v,nS:()=>_i,eB:()=>mr,Yp:()=>h,VB:()=>W,BC:()=>E,zN:()=>y,cV:()=>Zr,hW:()=>hi,k2:()=>we,K6:()=>V,M7:()=>g,ls:()=>q,Hi:()=>hn,EY:()=>di,MR:()=>Tt,zf:()=>Ce,Ay:()=>bi,yo:()=>vi});var h={};p.r(h),p.d(h,{get:()=>se,set:()=>oe});var g={};p.r(g),p.d(g,{alphaTestTransformer:()=>R,asPreprocessorValueTransformer:()=>Mt,toPreprocessorTriggerTransformer:()=>z,toUserDataTransformer:()=>Nt,uniformOrUserDataTransformer:()=>B});var _={fontFamily:null,fontSize:.05,fontKerning:`auto`,fontStyle:`normal`,fontWeight:`normal`,offset:.005,lineHeight:1.2,lineBreak:`- ,.:?! +`,whiteSpace:`pre-line`,flexDirection:`column`,justifyContent:`start`,alignItems:`start`,backgroundImage:null,textAlign:`left`,boxSizing:`content-box`,position:`static`,color:16777215,fontColor:16777215,fontOpacity:1,opacity:1,fontPXRange:4,fontSupersampling:!0,fontSmooth:`antialiased`,borderRadius:0,borderWidth:0,borderColor:`black`,borderOpacity:1,backgroundSize:`cover`,backgroundColor:0,backgroundOpacity:0,overflow:`visible`,letterSpacing:0,invertAlpha:!1,segments:1},oe=function(e){for(let t in e)_[t]=e[t]},se=function(e){return Object.prototype.hasOwnProperty.call(_,e)||console.warn(`ThreeMeshUI::DefaultValues is trying to retrieve non-existing property '${e}'`),_[e]},v=class{constructor(e,t=null,n=!0){this._id=e,this._value=t,this._needsUpdate=!0,this._needsProcess=!1,this._needsRender=!1,this._isPrimitive=n}get id(){return this._id}get value(){return this._value}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}update(e,t){this.output(t)}output(e){}_outputValue(e){e[this._id]=this._value}process(e){}render(e){}getInheritedInput(e){if(this._value!==`inherit`)return this._value;let t=e._parent._value;return t&&t[`_${this._id}`]?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}getDefaultValue(){return se(this._id)}isValid(e){return!0}emptyStrategyLogic(){throw Error(`ThreeMeshUI::${this.constructor.name} has empty strategy. Update has not been processed.`)}requestUpdate(){this._needsUpdate=!0}requestProcess(){this._needsProcess=!1}requestRender(){this._needsRender=!1}},ce=class extends v{constructor(){super(`renderOrder`,`auto`,!0),this.output=this._outputValue,this._actualValue=0}set value(e){this.isValid(e)&&(this._value=e,this._needsUpdate=!0)}update(e,t){if(this._value!==`auto`)this._actualValue=this._value;else{let t=e._parent._value;t!==null&&(this._actualValue=t._renderOrder._actualValue+(1+t._children._uis.indexOf(e)))}for(let t of e._children._uis)t._renderOrder._value===`auto`&&(t._renderOrder._needsUpdate=!0);this._outputValue(t)}_outputValue(e){e[this._id]=this._actualValue}get value(){return this._value}},y=class extends v{constructor(e,t=null,n=!0){super(e,t,n),this.output=this._outputValue,this._notInheritedValue=null}update(e,t){this._notInheritedValue=this._value,this._notInheritedValue===`inherit`&&(this._notInheritedValue=this.getInheritedInput(e)),this.propagate(e),this._outputValue(t)}propagate(e){for(let t of e._children._uis){let e=t[`_${this._id}`];e!==void 0&&e._value===`inherit`&&(t[`_${this._id}`]._needsUpdate=!0)}}_outputValue(e){e[this._id]=this._notInheritedValue}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}get value(){return this._value===`inherit`?this._notInheritedValue:this._value}},le=class extends y{constructor(){super(`offset`,`inherit`,!1)}update(e,t){super.update(e,t),e._parent._value!==null&&(e.position.z=this._notInheritedValue)}},ue=class extends y{constructor(){super(`fontSmooth`,`inherit`,!0),this._needsUpdate=!1,this.isValid=fe,this.output=this._outputValue}},de=[`inherit`,`none`,`antialiased`];function fe(e){return de.indexOf(e)===-1?(console.warn(`.fontSmoothing value '${e}' is not valid. Aborted`),!1):!0}var b=(e=>{var t={};return p.d(t,e),t})({BackSide:()=>1,BufferAttribute:()=>ie,BufferGeometry:()=>a,Color:()=>t,DoubleSide:()=>2,EventDispatcher:()=>te,FileLoader:()=>d,FrontSide:()=>0,LinearFilter:()=>r,Mesh:()=>o,MeshBasicMaterial:()=>i,Object3D:()=>l,Plane:()=>s,PlaneGeometry:()=>re,ShaderMaterial:()=>ne,Texture:()=>u,TextureLoader:()=>c,Vector2:()=>ee,Vector3:()=>n,Vector4:()=>f}),x=class extends v{constructor(e,t,n=!0){super(e,`unset`,n),this._input=`inherit`,this._allowsInherit=!0,this._inheritedInput=void 0,this._inline=void 0}update(e,t){this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis){let e=t[`_${this._id}`];(e._input?e._input:e._value)===`inherit`&&(t[`_${this._id}`]._needsUpdate=!0)}this.output(t)}computeOutputValue(e){this._value=this._input}_computeFromInherited(e){this._value=this._inheritedInput}set value(e){console.warn(`.(style) sub-property cannot be directly set. It must comes from inline or computed setter.`)}set inline(e){this.isValidValue(e)&&e!==this._inline&&(this._input=this._inline=e,this._needsUpdate=!0)}get inline(){return this._inline}isValidValue(e){return!0}getInheritedInput(e){if(this._input!==`inherit`)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}},S=class extends x{constructor(e,t){super(e,t,!1),this._input=new b.Vector4(0,0,0,0),this._inline=null,this._value=new b.Vector4(0,0,0,0)}get value(){return this._value}computeOutputValue(e){this._vector4ValueSetter(this._value,this._input)}set inline(e){this._vector4ValueSetter(this._input,e),!this._input.equals(this._value)&&(this._needsUpdate=!0)}set top(e){this._input.x!==e&&(this._input.x=e,this._needsUpdate=!0)}get top(){return this._input.x}set right(e){this._input.y!==e&&(this._input.y=e,this._needsUpdate=!0)}get right(){return this._input.y}set bottom(e){this._input.z!==e&&(this._input.z=e,this._needsUpdate=!0)}get bottom(){return this._input.z}set left(e){this._input.w!==e&&(this._input.w=e,this._needsUpdate=!0)}get left(){return this._input.w}dispose(){this._computed=null,this._inline=null,this._input=null,this._output=null}_vector4ValueSetter(e,t){if(t instanceof b.Vector4){e.copy(t);return}if((typeof t==`string`||t instanceof String)&&(t=t.split(` `)),Array.isArray(t))switch(t=t.map(e=>parseFloat(e)),t.length){case 1:e.setScalar(t[0]);return;case 2:e.x=e.z=t[0],e.y=e.w=t[1];return;case 3:e.x=t[0],e.y=t[1],e.z=t[2];return;case 4:e.x=t[0],e.y=t[1],e.z=t[2],e.w=t[3];return;default:console.error(`StyleVector4Property::set() Four Dimension property had more than four values`);return}isNaN(t)||e.setScalar(t)}},pe=class extends S{constructor(){super(`padding`,new b.Vector4(0,0,0,0))}computeOutputValue(e){super.computeOutputValue(e),e._bounds._needsUpdate=!0,e._bounds._needsRender=!0,e._layouter._needsProcess=!0,e._renderer._needsRender=!0,e._parent._value&&(e._parent._value._layouter._needsProcess=!0)}},me=class extends S{constructor(){super(`margin`,new b.Vector4(0,0,0,0))}computeOutputValue(e){super.computeOutputValue(e),e._renderer._needsRender=!0,e._parent._value&&(e._parent._value._flexDirection._needsProcess=!0)}},he=function(e,t,n){e[t]=n},ge=function(e,t,n){n!==null&&(e[t]=n)},C=class{constructor(e){this._definition=e}set definition(e){this._definition=e}mediate(e,t,n,r=null){for(let e in this._definition){let i=this._definition[e];if(n[e]!==void 0){let a=i.t?i.t:he;a(t,i.m,n[e]),r&&a(r,i.m,n[e])}}}static mediate(e,t,n,r,i=null){if(t)for(let e in r){let a=r[e];if(n[e]!==void 0){let r=a.t?a.t:he;r(t,a.m,n[e]),i&&r(i,a.m,n[e])}}}},_e=class extends v{constructor(){super(`parent`,null,!1)}update(e,t){e.parent&&e.parent.isUI?this._value=e.parent:this._value=null}set value(e){console.warn(`ParentProperty is readonly`)}get value(){return this._value}find(e){return this._value?e(this._value)?this._value:this._value._parent.find(e):null}dispose(){this._value=null}},w=function(e,t,n=6){return e.toFixed(n)===t.toFixed(n)},ve=class extends v{constructor(e,t){super(e,t,!0),this.output=this._outputValue}set value(e){this.isValid(e)&&(w(this._value,e)||(this._value=e,this._needsUpdate=!0))}get value(){return this._value}},ye=class extends y{constructor(e){super(e,`inherit`,!0),this.isValid=xe}},be=[b.FrontSide,b.BackSide,b.DoubleSide];function xe(e){return be.indexOf(e)===-1?(console.warn(`SideProperty value '${e}' is not valid. Abort`),!1):!0}var Se=class{constructor(){this._offsetX=0,this._offsetY=0,this._lineBreak=null,this._kerning=0,this._fontFactor=1,this._fontSize=0,this._cumulativeWidth=0,this._paddingLeft=0,this._paddingRight=0,this._marginLeft=0,this._marginRight=0}resetOffsets(){this._offsetX=this._offsetY=0,this._cumulativeWidth=0}get xadvance(){return 0}get xoffset(){return 0}get yoffset(){return 0}get width(){return 0}get height(){return 0}set lineBreak(e){this._lineBreak=e}get lineBreak(){return this._lineBreak}get anchor(){return 0}get kerning(){return this._kerning*this._fontFactor}set kerning(e){this._kerning=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e}get lineHeight(){return 0}get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e}get cumulativeWidth(){return this._cumulativeWidth}set cumulativeWidth(e){this._cumulativeWidth=e}get marginLeft(){return this._marginLeft}set marginLeft(e){this._marginLeft=e}get marginRight(){return this._marginRight}set marginRight(e){this._marginRight=e}get paddingLeft(){return this._paddingLeft}set paddingLeft(e){this._paddingLeft=e}get paddingRight(){return this._paddingRight}set paddingRight(e){this._paddingRight=e}get lineBase(){return 0}set fontFactor(e){this._fontFactor=e}get fontFactor(){return this._fontFactor}},Ce=class{constructor(e){this._char=``,this._width=1,this._heigth=1,this._xadvance=1,this._xoffset=0,this._yoffset=0,this._font=e}get font(){return this._font}get char(){return this._char}get width(){return this._width}get height(){return this._heigth}get xadvance(){return this._xadvance}get xoffset(){return this._xoffset}get yoffset(){return this._yoffset}set yoffset(e){this._yoffset=e}clone(e){throw Error(`Abstract... Need to be implemented`)}asInlineGlyph(){throw Error(`Abstract... Need to be implemented`)}},we=class extends Se{constructor(e){super(),this._typographic=e}get typographic(){return this._typographic}get xadvance(){return this._typographic.xadvance*this._fontFactor}get xoffset(){return this._typographic.xoffset*this._fontFactor}get yoffset(){return this._typographic.yoffset*this._fontFactor}get width(){return this._typographic.width*this._fontFactor}get height(){return this._typographic.height*this._fontFactor}get char(){return this._typographic.char}get anchor(){return this.yoffset}get lineHeight(){return this._typographic.font.lineHeight*this._fontFactor}get lineBase(){return this._typographic.font.lineBase*this._fontFactor}},Te={light:`100`,normal:`400`,bold:`700`,bolder:`900`};function T(e){return isNaN(e)?Te[e]||e:e.toString()}var Ee=class extends b.EventDispatcher{constructor(e,t){super(),this._isReady=!1,this._weight=T(e),this._style=t,this._size=42,this._lineHeight=42,this._lineBase=42,this._font=null}get typographic(){return this._font}get isReady(){return this._isReady}get weight(){return this._weight}get style(){return this._style}get texture(){return this._texture}set fontMaterial(e){throw Error(`FontVariant('${this.id}')::fontMaterial - is abstract.`)}get fontMaterial(){throw Error(`FontVariant('${this.id}')::fontMaterial - is abstract.`)}get id(){return`${this._name}(w:${this.weight},s:${this.style})`}getTypographicGlyph(e){let t=this._chars[e];if(t)return t;if(e.match(/\s/))return this._chars[` `];let n=this._getFallbackCharacter(e);if(n&&(t=this._chars[n],t))return t;throw Error(`FontVariant('${this.id}')::getTypographicGlyph() - character('${e}') and/or fallback character were not found in provided msdf charset.`)}_getFallbackCharacter(e){throw Error(`FontVariant(${typeof this})::_getFallbackCharacter() is abstract and should therefore be overridden.`)}getGeometricGlyph(e,t){throw Error(`FontVariant(${typeof this})::getGeometryCharacter() is abstract and should therefore be overridden.`)}getKerningAmount(e){return this._kernings[e]?this._kernings[e]:0}adjustTypographicGlyphs(e){for(let t in e){let n=this.getTypographicGlyph(t),r=e[t];for(let i in r)n[`_`+i]=e[t][i]}}_checkReadiness(){this._readyCondition()&&Oe(this)}_alterElementProperties(e){throw Error(`FontVariant(${typeof this})::_alterElementProperties() is abstract and should therefore be overridden.`)}_readyCondition(){throw Error(`FontVariant(${typeof this})::_readyCondition() is abstract and should therefore be overridden.`)}},De={type:`ready`};function Oe(e){e._isReady=!0,e.dispatchEvent(De)}var E=Ee,ke=class extends v{constructor(e=null){super(`font`,e,!1),this._needsUpdate=!1,this._fontVariant=null,this._handleFontReadyClosure=null,this.isValid=Ae}output(e){e[this._id]=this._fontVariant}update(e,t){if(this._fontVariant&&!this._fontVariant.isReady&&this._fontVariant.removeEventListener(`ready`,this._handleFontReadyClosure),this._value&&this._value instanceof E)this._fontVariant=this._value;else{let t=e._fontFamily._value;t&&(this._fontVariant=t.getVariant(e._fontWeight._value,e._fontStyle._value))}this._fontVariant&&(this._fontVariant._alterElementProperties(e),this._handleFontReadyClosure=je(e,this),this._fontVariant.isReady?this._handleFontReadyClosure():this._fontVariant.addEventListener(`ready`,this._handleFontReadyClosure),(!e._fontMaterial._defaultMaterial||!(e._fontMaterial._defaultMaterial instanceof this._fontVariant.fontMaterial))&&(e._fontMaterial._defaultMaterial=new this._fontVariant.fontMaterial,e._fontMaterial._needsUpdate=!0))}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}get value(){return this._value}get fontVariant(){return this._fontVariant}dispose(){this._handleFontReadyClosure&&=(this._fontVariant.removeEventListener(`ready`,this._handleFontReadyClosure),null),this._value=null,this._fontVariant=null}};function Ae(e){return e instanceof E?!0:(console.warn(`.font value '${e}' is not valid. It requires a FontVariant instance. Aborted`),!1)}function je(e,t){return function(){t._needsUpdate=!0,e._glyphs._needsProcess=!0,t._fontVariant.removeEventListener(`ready`,t._handleFontReadyClosure),t._handleFontReadyClosure=null}}var Me=class extends x{constructor(e){super(`display`,e),this._value=`flex`,this._allowsInherit=!1,this._needsUpdate=!1,this.isValidValue=Pe}computeOutputValue(e){e._visible._value=this._output!==`none`}},Ne=[`none`,`flex`];function Pe(e){return Ne.indexOf(e)===-1?(console.warn(`(.style) display value '${e}' is not valid. Aborted`),!1):!0}var Fe=class extends x{constructor(e){super(`boxSizing`,e),this._allowsInherit=!1,this.isValidValue=Le}computeOutputValue(e){this._value=this._inheritedInput,e._bounds._needsUpdate=!0}},Ie=[`border-box`,`content-box`];function Le(e){return Ie.indexOf(e)===-1?(console.warn(`(.style) boxSizing value '${e}' is not valid. Aborted`),!1):!0}var D=class extends x{constructor(e,t){super(e,t,!1),this._value=new b.Color,this.output=this._outputValue}computeOutputValue(e){this._input!==`inherit`&&this._value.set(this._input)}set inline(e){this._input=this._inline=e,this._needsUpdate=!0}},O=class extends x{constructor(e,t){super(e,t,!0),this.isValidValue=Re,this._allowsInherit=!1,this._input=t,this._value=t,this.output=this._outputValue,this.computeOutputValue=this._computeFromInherited}_outputValue(e){e[this._id]=this._inheritedInput}};function Re(e){return e<0&&e>1?(console.warn(`(.style) styleFactorProperty('${this.id}') value '${e}' is not valid)`),!1):!0}var ze=class extends x{constructor(e){super(`backgroundImage`,e,!0),this._input=null,this._allowsInherit=!1,this._textureSize=new b.Vector2(1,1),this.isValidValue=Be}get value(){return this._value}output(e){e[this._id]=this._value,e.tSize=this._textureSize}computeOutputValue(e){if(this._value=this._inheritedInput,this._value instanceof b.Texture&&!this._value.image){console.warn(`ThreeMeshUI - .backgroundImage :: Please provide preloaded texture in order to have accurate sizing.`);return}this._needsProcess=!0}process(e){this._value?this._textureSize.set(this._value.image.width,this._value.image.height):this._textureSize.set(1,1)}};function Be(e){return!0}var Ve=class extends x{constructor(e){super(`backgroundSize`,e,!0),this.isValidValue=Ue,this.output=this._outputValue}},He=[`cover`,`contain`,`stretch`];function Ue(e){return He.indexOf(e)===-1?(console.warn(`(.style) backgroundSize value '${e}' is not valid. Aborted`),!1):!0}var We=class extends x{constructor(e){super(`overflow`,e,!0),this.isValidValue=Ke,this._clippingPlanes=null,this._renderStrategy=this._emptyRender}update(e,t){this._inline!==void 0&&this._inline!==`unset`?this._input=this._inline:this._computed!==void 0&&(this._input=this._computed),this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis)t._overflow._needsUpdate=!0;this.output(t)}output(e){e.clippingPlanes=this._clippingPlanes}computeOutputValue(e){super.computeOutputValue(e),this._value===`hidden`?this._renderStrategy=this._propagateRender:(this._renderStrategy=this._emptyRender,this._clippingPlanes=null);let t=e._parent._value;if(t!==null){let e=t._overflow;if((e._value===`hidden`||e._clippingPlanes!==null)&&!this._clippingPlanes){this._clippingPlanes=[new b.Plane(new b.Vector3(0,-1,0),1),new b.Plane(new b.Vector3(-1,0,0),1),new b.Plane(new b.Vector3(0,1,0),1),new b.Plane(new b.Vector3(1,0,0),1)];for(let e=0;ee.computeValue()),this._sideMediators.sort((e,t)=>e.value1&&this._sideMediators[0].mediate();while(this._sideMediators[0].value>1);let r=t>n?n/t:1,i=tn?n/t:1;this._valueUV.y*=e,this._valueUV.w*=e}if(n!==0){let e=t{switch(e._alignItems._value){case`inherit`:case`start`:return t/2;case`end`:return r-t/2;case`stretch`:case`center`:return r/2}})(),a=e._padding._value,o=e._borderWidth._value;i+=(-a.x+a.z)/2+(-o.x+o.z)/2,n.forEach(e=>{e.y+=i,e.forEach(e=>{e.offsetY+=i})})}},tt=[`start`,`center`,`end`,`stretch`],nt=function(e){return tt.indexOf(e)===-1?(console.warn(`(.style) alignItems value '${e}' is not valid. Aborted`),!1):!0},N=class extends x{constructor(){super(`alignItems`,`inherit`,!0),this.isValidValue=nt}},P=class extends x{constructor(){super(`textAlign`,`inherit`,!0),this.isValidValue=it}},rt=[`left`,`right`,`center`,`justify`,`justify-left`,`justify-right`,`justify-center`],it=function(e){return rt.indexOf(e)===-1?(console.warn(`(.style) textAlign value '${e}' is not valid. Aborted`),!1):!0},at=class extends x{constructor(){super(`flexDirection`,`inherit`,!0),this.isValid=st}},ot=[`row`,`row-reverse`,`column`,`column-reverse`];function st(e){return ot.indexOf(e)===-1?(console.warn(`(.style) flexDirection value '${e}' is not valid. Aborted`),!1):!0}var ct=class extends x{constructor(){super(`justifyContent`,`inherit`,!0),this.isValidValue=ut}},lt=[`start`,`center`,`end`,`space-between`,`space-around`,`space-evenly`];function ut(e){return lt.indexOf(e)===-1?(console.warn(`(.style) justifyContent value '${e}' is not valid. Aborted`),!1):!0}var dt=class extends x{constructor(){super(`order`,0,!0),this._value=0,this._input=0,this._allowsInherit=!1}computeOutputValue(e){this._value=this._inheritedInput,e._parent._value&&(e._parent._value._children._needsProcess=!0)}},ft=class extends x{constructor(){super(`position`,`static`,!0),this._allowsInherit=!1,this._value=`static`,this._needsUpdate=!1,this.computeOutputValue=this._computeFromInherited,this.isValidValue=mt}_computeFromInherited(e){super._computeFromInherited(e),e._parent._value&&(e._parent._value._children._needsProcess=!0)}},pt=[`static`,`absolute`];function mt(e){return pt.indexOf(e)===-1?(console.warn(`(.style) position value '${e}' is not valid. Aborted`),!1):!0}var ht=class extends x{constructor(e,t=null){super(e,t,!0),this._input=`auto`,this._auto=!0,this._relative=!1,this._updateRequired=!0}set inline(e){this.isValidValue(e)&&e!==this._inline&&(this._inline=e,this._input!==this._inline&&this._parseInput())}get inline(){return this._inline}_parseInput(){let e=!0;if(this._inline!==void 0&&this._inline!==`unset`?this._input=this._inline:this._computed===void 0?e=this._input===`inherit`:(this._computed===this._input&&(e=!1),this._input=this._computed),e){if(this._auto=!this._input||this._input===`auto`,this._auto)this._relative=!1;else if((typeof this._input==`string`||this._input instanceof String)&&this._input.endsWith(`%`)){this._relative=!0,this._value=0;let e=parseFloat(this._input.replace(`%`,``).trim());isNaN(e)||(this._value=e/100)}else this._relative=!1,this._value=this._input;this._needsUpdate=this._updateRequired=e}}update(e,t){if(this._updateRequired){this._updateRequired=!1,this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis)t[`_${this._id}`]._needsUpdate=!0;this.output(t),e._parent._value&&(e._parent._value._layouter._needsProcess=!0)}}computeOutputValue(e){e._bounds._needsUpdate=!0,e._renderer._needsRender=!0}getInheritedInput(e){if(this._input!==`inherit`&&!this._auto)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}getDefaultValue(){return 0}get value(){return this._value}},gt=class extends ht{constructor(){super(`width`)}},_t=class extends ht{constructor(){super(`height`)}computeOutputValue(e){super.computeOutputValue(e)}},vt=class extends M{constructor(){super(`textContent`),this._needsUpdate=!1}set value(e){}process(e){let t=``;for(let n=0;ne.char).join(``)}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}},Dt=class extends we{constructor(e){super(e)}get uv(){return this.typographic.uv}},Ot=class e extends Ce{constructor(e,t){super(e),this._char=t.char,this._width=t.width,this._heigth=t.height,this._xadvance=t.xadvance?t.xadvance:this._width,this._xoffset=t.xoffset?t.xoffset:0,this._yoffset=t.yoffset?t.yoffset:0,this._uv=t.uv?t.uv:null,isNaN(t.x)||(this._uv={left:t.x/e.textureWidth,right:(t.x+t.width)/e.textureWidth,top:1-(t.y+t.height)/e.textureHeight,bottom:1-t.y/e.textureHeight})}get uv(){return this._uv}clone(t){return new e(this._font,{char:t,width:this._width,height:this._heigth,xadvance:this._xadvance,xoffset:this._xoffset,yoffset:this._yoffset,uv:null})}asInlineGlyph(){return new Dt(this)}},kt=class extends b.PlaneGeometry{constructor(e,t){let n=1,r=1,i=e.typographic.font.size,a=t._segments.value;n=Math.ceil(e.typographic.width/i*a),r=Math.ceil(e.typographic.height/i*a),super(e.width,e.height,n,r),e.uv?(this._mapUVs(e),this._transformGeometry(e)):(this._nullifyUVs(),this.scale(0,0,1),this.translate(0,e.fontSize/2,0)),this.name=`GlyphGeometry`}_mapUVs(e){let t=e.uv.right-e.uv.left,n=e.uv.bottom-e.uv.top,r=this.getAttribute(`uv`).array.slice(),i=[];for(let a=0;a0)},z=function(e,t,n){e.defines&&(n?e.defines[t]===void 0&&(e.defines[t]=``,e.needsUpdate=!0):e.defines[t]!==void 0&&(delete e.defines[t],e.needsUpdate=!0))},Mt=function(e,t,n){e.defines[t]&&e.defines[t]===n||(e.defines[t]=n,e.needsUpdate=!0)},B=function(e,t,n){e.userData[t]?e.userData[t].value=n:e.uniforms[t].value=n},Nt=function(e,t,n){e.userData[t].value=n},V=class e{static ensureMaterialOptions(e){e.transparent=!0,e.alphaTest=e.alphaTest||.02}static ensureDefines(e){e.defines||={}}static ensureUserData(e,t){e.userData.glyphMap={value:t.glyphMap},e.userData.unitRange={value:new b.Vector2}}static bindUniformsWithUserData(e,t){e.uniforms.glyphMap=t.userData.glyphMap,e.uniforms.unitRange=t.userData.unitRange}static injectShaderChunks(t){e.injectVertexShaderChunks(t),e.injectFragmentShaderChunks(t)}static injectVertexShaderChunks(e){e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+At),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+jt),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+F)}static injectFragmentShaderChunks(e){e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+I),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+L)}static from(t){return class extends t{static get fontMaterialProperties(){return e.mediation}constructor(t={}){e.ensureMaterialOptions(t),super(t),e.ensureDefines(this),e.ensureUserData(this,t),this._userDefinedOnBeforeCompile=e=>{},this._onBeforeCompile=this._cumulativeOnBeforeCompile}set onBeforeCompile(e){this._userDefinedOnBeforeCompile=e}get onBeforeCompile(){return this._onBeforeCompile}_cumulativeOnBeforeCompile=t=>{e.bindUniformsWithUserData(t,this),e.injectShaderChunks(t),this._userDefinedOnBeforeCompile(t)}}}static get mediation(){return Pt}},Pt={clippingPlanes:{m:`clippingPlanes`},fontAlphaTest:{m:`alphaTest`,t:R},fontSide:{m:`side`},font:{m:`glyphMap`,t:function(e,t,n){let r=n?n.texture:null,i=n?n.unitRange:new b.Vector2;if(e[t]!==void 0){e.glyphMap=r,e.unitRange=i;return}e.userData&&e.userData.glyphMap&&(e.userData.glyphMap.value=r,e.userData.unitRange.value=i)}},color:{m:`color`},fontOpacity:{m:`opacity`},fontSmooth:{m:`NO_RGSS`,t:function(e,t,n){n&&n!==`antialiased`?e.defines.NO_RGSS=``:delete e.defines.NO_RGSS,e.needsUpdate=!0}},invertAlpha:{m:`INVERT_ALPHA`,t:z}},Ft=` +${At} +#include +void main() { + ${jt} + #include + #include + ${F} + #include +} +`,It=` +uniform vec3 diffuse; +uniform float opacity; +${I} +#include +#include +void main() { + // instead of : vec4 diffuseColor + vec4 diffuseColor = vec4( diffuse, opacity ); + ${L} + #include + // instead of + gl_FragColor = diffuseColor; + #include +} +`,Lt=.02,Rt=class e extends b.ShaderMaterial{static get mediation(){return V.mediation}constructor(e={}){super({uniforms:{glyphMap:{value:null},diffuse:{value:null},opacity:{value:1},unitRange:{value:new b.Vector2(0,0)},alphaTest:{value:Lt}},transparent:!0,clipping:!0,vertexShader:Ft,fragmentShader:It,extensions:{derivatives:!0}}),this.defines.USE_ALPHATEST=``,this.needsUpdate=!0,this.noRGSS=e.noRGSS||!1}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get opacity(){return this.uniforms.opacity.value}get unitRange(){return this.uniforms.unitRange.value}set unitRange(e){this.uniforms.unitRange.value.copy(e)}get glyphMap(){return this.uniforms.glyphMap.value}set glyphMap(e){this.uniforms.glyphMap.value=e}get isDefault(){return this.constructor===e}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms.alphaTest.value=e}},zt=class extends E{constructor(e,t,n,r){if(super(e,t),this._unitRange=new b.Vector2(1,1),n.pages?this._buildData(n):Bt(this,n),r instanceof b.Texture)this._texture=r,this._buildTexture(r);else if(typeof r==`string`||r instanceof String)Vt(this,r);else throw Error(`ThreeMeshUI::MSDFVariant provided 'texture' parameter is '${typeof r}'. Only Texture and String allowed.`);this._defaultMaterialClass=Rt,this._checkReadiness()}get texture(){return this._texture}get unitRange(){return this._unitRange}set fontMaterial(e){this._defaultMaterialClass=e}get fontMaterial(){return this._defaultMaterialClass}_buildData(e){this._font=new Et(e),this._kernings=this._buildKerningPairs(e),this._chars=this._buildCharacters(e),this._chars[` `]=this._buildCharacterWhite(e),this._chars[` +`]=this._buildCharacterWhite(e,` +`,.001,1),this._chars[` `]=this._buildCharacterWhite(e,` `,4,1),this._size=e.info.size,this._lineHeight=e.common.lineHeight,this._lineBase=e.common.base,this._distanceRange=e.distanceField.distanceRange,this._unitRange=new b.Vector2(this._distanceRange,this._distanceRange).divide(new b.Vector2(e.common.scaleW,e.common.scaleH))}_buildTexture(e){e.generateMipmaps=!1,e.minFilter=b.LinearFilter,e.magFilter=b.LinearFilter,e.needsUpdate=!0}_getFallbackCharacter(e){return W.missingCharacter(this,e)}getGeometricGlyph(e,t){return new kt(e,t)}_readyCondition(){return this._chars&&this._texture&&this._texture.image}_buildKerningPairs(e){let t={};for(let n=0;n{e._buildData(t),e._checkReadiness()})}function Vt(e,t){e._texture=new b.TextureLoader().load(t,t=>{e._buildTexture(t),e._checkReadiness()})}var H=class extends b.EventDispatcher{constructor(e){super(),this._name=e,this._variants=[],this._isReady=!1}get isReady(){return this._isReady}addVariant(e,t,n,r,i=!1){if(i||!this.getVariant(e,t)){this._isReady=!1;let i=new zt(e,t,n,r);this._variants.push(i),i.isReady?this._checkReadiness():i.addEventListener(`ready`,this._checkReadiness)}else console.warn(`FontFamily('${this._name}')::addVariant() - Variant(${e}, ${t}) already exists.`);return this}addCustomImplementationVariant(e,t=!1){return t||!this.getVariant(e.weight,e.style)?(this._isReady=!1,this._variants.push(e),e.isReady?this._checkReadiness():e.addEventListener(`ready`,this._checkReadiness)):console.warn(`FontFamily('${this._name}')::addCustomImplementationVariant() - Variant(${e.weight}, ${e.style}) already exists.`),this}getVariant(e,t){return e=T(e),this._variants.find(n=>n.weight===e&&n.style===t)}get name(){return this._name}_checkReadiness=()=>{this._variants.every(e=>e.isReady)&&Ut(this)}},Ht={type:`ready`};function Ut(e){e._isReady=!0,e.dispatchEvent(Ht)}var U={},Wt=function(e){let t=[...arguments];t.forEach(e=>{if(!(e instanceof H))throw Error(`FontLibrary::prepare() - One of the provided parameter is not a FontFamily. Instead ${typeof e} given.`)});let n=function(){return t.every(e=>e.isReady)};return new Promise((e,r)=>{if(n())e();else for(let r=0;r{n()&&e()})}})},Gt=function(e){return U[e]&&console.error(`FontLibrary::addFontFamily - Font('${e}') is already registered`),U[e]=new H(e),U[e]},Kt=function(e){return U[e]},qt=function(e){Jt=e},Jt=function(e,t){return console.error(`The character '${t}' is not included in the font characters set.`),` `};function Yt(e,t){return Jt(e,t)}var W={addFontFamily:Gt,getFontFamily:Kt,prepare:Wt,setMissingCharacterHandler:qt,missingCharacter:Yt},Xt=class extends x{constructor(){super(`fontFamily`,`inherit`,!0)}computeOutputValue(e){if(this._input instanceof H)this._value=this._input;else if(this._input!==`inherit`)if(typeof this._input==`string`){let e=W.getFontFamily(this._input);e?this._value=e:console.warn(`(.style) fontFamily, the font '${this._input}' is not registered. Aborted.`)}else console.warn(`(.style) fontFamily requires a registered fontFamily instance, or the id of a registered fontFamily.`),console.warn(`If you want to set a specific font, please use .font property instead.`)}get value(){return this._value}getInheritedInput(e){if(this._input!==`inherit`)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}},Zt=class extends x{constructor(){super(`lineHeight`,`inherit`,!0)}update(e,t){super.update(e,t),e._layouter._needsProcess=!0}},Qt=class extends x{constructor(){super(`whiteSpace`,`inherit`),this.isValidValue=en}},$t=[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`];function en(e){return $t.indexOf(e)===-1?(console.warn(`(.style) whiteSpace value '${e}' is not valid. Aborted`),!1):!0}var tn=class extends x{constructor(){super(`letterSpacing`,`inherit`,!0)}},nn=class extends x{constructor(){super(`fontSize`,`inherit`,!0)}},rn=class extends v{constructor(){super(`segments`,1,!1)}},an=class extends y{constructor(){super(`invertAlpha`,`inherit`)}},G=class extends x{constructor(){super(`fontKerning`,`inherit`),this.isValidValue=sn}},on=[`normal`,`none`,`inherit`];function sn(e){return on.indexOf(e)===-1?(console.warn(`(.style) fontKerning value '${e}' is not valid. Aborted`),!1):!0}var K=class extends y{constructor(e){super(e,`inherit`,!0)}},cn=class extends y{constructor(e){super(e,`inherit`,!1),this._mediation={},this._defaultMaterial=null}update(e,t){this._notInheritedValue=this._value,this._notInheritedValue===`inherit`?this._notInheritedValue=this.getInheritedInput(e):this.propagate(e),this._notInheritedValue?this._notInheritedValue.constructor.mediation?this._mediation={...this._notInheritedValue.constructor.mediation}:this._mediation={clippingPlanes:{m:`clippingPlanes`},fontAlphaTest:{m:`alphaTest`,t:R},fontSide:{m:`side`},color:{m:`color`},fontOpacity:{m:`opacity`}}:this._mediation={},e._transferToFontMaterial(),this._outputValue(t)}getInheritedInput(e){if(this._value!==`inherit`)return this._value;let t=e,n=null;for(;t._parent._value;)if(t=t._parent._value,t[`_${this._id}`]._value!==`inherit`){n=t[`_${this._id}`]._value;break}return n===null?this.getDefaultValue():n}getDefaultValue(){return this._defaultMaterial}},ln=function(e,t,n){e.traverse(e=>{e.renderOrder=n})},q=class extends b.Object3D{constructor(e,t){super(),Object.defineProperties(this,{isUI:{configurable:!1,enumerable:!0,value:!0}}),this._backgroundMesh=null,this._backgroundMaterial=null,this._backgroundCustomDepthMaterial=null,this._backgroundMaterialMediation={},this._backgroundMeshMediation={backgroundCastShadow:{m:`castShadow`},backgroundReceiveShadow:{m:`receiveShadow`},renderOrder:{m:`renderOrder`,t:ln}},this._fontMesh=null,this._fontMaterial=new cn(`fontMaterial`),this._fontCustomDepthMaterial=new cn(`fontCustomDepthMaterial`),this._fontMeshMediation={fontMaterial:{m:`material`},fontCustomDepthMaterial:{m:`customDepthMaterial`,t:ge},fontCastShadow:{m:`castShadow`},fontReceiveShadow:{m:`receiveShadow`},renderOrder:{m:`renderOrder`}},this._children=e.children?new e.children:new M(`children`),this._parent=new _e,this.addEventListener(`added`,this._rebuildParentUI),this.addEventListener(`removed`,this._rebuildParentUI),this._backgroundSide=new ye(`backgroundSide`),this._fontSide=new ye(`fontSide`),this._backgroundAlphaTest=new ve(`backgroundAlphaTest`,.02),this._fontAlphaTest=new ve(`fontAlphaTest`,.02),this._visible=new Qe(`visible`,!0),this._backgroundCastShadow=new K(`backgroundCastShadow`),this._fontCastShadow=new K(`fontCastShadow`),this._backgroundReceiveShadow=new K(`backgroundReceiveShadow`),this._fontReceiveShadow=new K(`fontReceiveShadow`),this._renderOrder=new ce,this._segments=e.segments?new e.segments:new rn,this._bounds=e.bounds?new e.bounds:new M(`bounds`),this._order=new dt,this._padding=new pe,this._margin=new me,this._position=new ft,this._flexDirection=e.flexDirection?new e.flexDirection:new at,this._justifyContent=e.justifyContent?new e.justifyContent:new ct,this._alignItems=e.alignItems?new e.alignItems:new N,this._display=new Me(`flex`),this._boxSizing=new Fe(`border-box`),this._width=new gt,this._height=new _t,this._backgroundColor=e.backgroundColor?new e.backgroundColor:new $e,this._backgroundOpacity=new O(`backgroundOpacity`,.5),this._backgroundImage=new ze,this._backgroundSize=new Ve(`cover`),this._color=e.color?new e.color:new D(`color`,`inherit`),this._fontOpacity=new O(`fontOpacity`,`inherit`),this._whiteSpace=e.whiteSpace?new e.whiteSpace:new Qt,this._fontFamily=e.fontFamily?new e.fontFamily:new Xt,this._fontStyle=e.fontStyle?new e.fontStyle:new yt(`normal`),this._fontWeight=e.fontWeight?new e.fontWeight:new St,this._fontSize=e.fontSize?new e.fontSize:new nn,this._lineHeight=e.lineHeight?new e.lineHeight:new Zt,this._fontKerning=e.fontKerning?new e.fontKerning:new G,this._letterSpacing=e.letterSpacing?new e.letterSpacing:new tn,this._overflow=new We(`visible`),this._borderRadius=new Xe(0),this._borderWidth=new Ze(0),this._borderColor=new D(`borderColor`,16711935),this._borderOpacity=new O(`borderOpacity`,1),this._font=new ke,this._lineBreak=e.lineBreak?new e.lineBreak:new M(`lineBreak`),this._textContent=e.textContent?new e.textContent:new vt,this._glyphs=e.glyphs?new e.glyphs:new M(`glyphs`),this._inlines=e.inlines?new e.inlines:new M(`inlines`),this._layouter=e.layouter?new e.layouter:new M(`layouter`),this._inlineJustificator=new et,this._textAlign=e.textAlign?new e.textAlign:new P,this._autoSize=e.autoSize?new e.autoSize:new M(`autoSize`),this._renderer=e.renderer?new e.renderer:new M(`renderer`),this._offset=new le,this._invertAlpha=new an,this._fontSmooth=e.fontSmooth?new e.fontSmooth:new ue,this._components=[this._textContent,this._children,this._parent,this._autoSize,this._fontFamily,this._fontStyle,this._fontWeight,this._font,this._whiteSpace,this._glyphs,this._inlines,this._visible,this._backgroundSide,this._fontSide,this._backgroundAlphaTest,this._fontAlphaTest,this._backgroundCastShadow,this._fontCastShadow,this._backgroundReceiveShadow,this._fontReceiveShadow,this._renderOrder,this._segments,this._padding,this._margin,this._width,this._height,this._borderWidth,this._boxSizing,this._bounds,this._position,this._flexDirection,this._justifyContent,this._alignItems,this._order,this._display,this._backgroundColor,this._backgroundOpacity,this._backgroundImage,this._backgroundSize,this._fontOpacity,this._color,this._fontSize,this._lineHeight,this._fontKerning,this._letterSpacing,this._borderRadius,this._borderColor,this._borderOpacity,this._lineBreak,this._offset,this._layouter,this._inlineJustificator,this._textAlign,this._invertAlpha,this._fontSmooth,this._fontMaterial,this._fontCustomDepthMaterial,this._overflow,this._renderer],this._onAfterUpdates=[],t.backgroundSide||=0,t&&this.set(t)}update(){let e={};for(let t of this._components)t._needsUpdate&&=(t.update(this,e),!1);this._transferToBackgroundMesh(e),this._transferToFontMesh(e),this._transferToBackgroundMaterial(e),this._transferToFontMaterial(e);for(let e of this._children._uis)e.update()}process(){for(let e of this._children._uis)e.process();for(let e of this._components)e._needsProcess&&=(e.process(this),!1)}render(){for(let e=0;e{this._parent._needsUpdate=!0,this.parent&&!this.parent.isUI?(J.register(this),this.activatePseudoState(`root`)):(J.remove(this),this.deactivatePseudoState(`root`))};add(e){let t=!1;for(let e=0;e{e.material&&e.material.dispose(),e.geometry&&e.geometry.dispose()}),super.clear(),this._backgroundMesh=null,this._backgroundMaterial=null,this._backgroundMaterialMediation=null,this._backgroundMeshMediation=null,this._children.dispose(),this._children=null,this._parent.dispose(),this._parent=null,this._backgroundSide=null,this._backgroundAlphaTest=null,this._visible=null,this._backgroundCastShadow=null,this._backgroundReceiveShadow=null,this._renderOrder=null,this._segments=null,this._bounds=null,this._boxSizing=null,this._padding=null,this._margin=null,this._position=null,this._flexDirection=null,this._justifyContent=null,this._alignItems=null,this._display=null,this._backgroundColor=null,this._backgroundOpacity=null,this._backgroundSize=null,this._fontOpacity=null,this._color=null,this._whiteSpace=null,this._fontFamily=null,this._fontStyle=null,this._fontWeight=null,this._lineHeight=null,this._fontKerning=null,this._letterSpacing=null,this._overflow=null,this._textAlign=null,this._font=null,this._lineBreak=null,this._layouter=null,this}get textContent(){return this._textContent.process(this),this._textContent._value}get backgroundMaterial(){return this._backgroundMaterial}set backgroundMaterial(e){this._backgroundMaterial=e,this._backgroundMaterialMediation={...e.constructor.mediation},this._transferToBackgroundMaterial(),this._backgroundMesh&&(this._backgroundMesh.material=this._backgroundMaterial,B(e,`frameSize`,this._backgroundMesh.scale))}set backgroundCustomDepthMaterial(e){this._backgroundCustomDepthMaterial=e,this._transferToBackgroundMaterial(),this._backgroundMesh&&(this._backgroundMesh.customDepthMaterial=this._backgroundCustomDepthMaterial)}get backgroundCustomDepthMaterial(){return this._backgroundCustomDepthMaterial}_transferToBackgroundMaterial(e=null){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._backgroundMaterial,e,this._backgroundMaterialMediation,this._backgroundCustomDepthMaterial)}set backgroundSide(e){this._backgroundSide.value=e,this._backgroundMaterial&&(this._backgroundMaterial.side=e)}get backgroundSide(){return this._backgroundSide.value}set backgroundAlphaTest(e){this._backgroundAlphaTest.value=e,this._backgroundMaterial&&(this._backgroundMaterial.alphaTest=e)}get backgroundAlphaTest(){return this._backgroundAlphaTest.value}get fontMaterial(){return this._fontMaterial.value}set fontMaterial(e){this._fontMaterial.value=e}set fontCustomDepthMaterial(e){this._fontCustomDepthMaterial.value=e}get fontCustomDepthMaterial(){return this._fontCustomDepthMaterial.value}_transferToFontMaterial(e=null){let t=this._fontMaterial.value;if(t){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,t,e,this._fontMaterial._mediation,this._fontCustomDepthMaterial.value)}}set fontSide(e){this._fontSide.value=e}get fontSide(){return this._fontSide.value}set fontAlphaTest(e){this._fontAlphaTest.value=e}get fontAlphaTest(){return this._fontAlphaTest.value}_transferToBackgroundMesh(e=null){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._backgroundMesh,e,this._backgroundMeshMediation)}setBackgroundMesh(e){this._backgroundMesh&&(this.remove(this._backgroundMesh),this.unbindBackgroundMeshProperties()),this._backgroundMesh=e,this._backgroundMesh&&(this.bindBackgroundMeshProperties(),this._backgroundCustomDepthMaterial&&(this._backgroundMesh.customDepthMaterial=this._backgroundCustomDepthMaterial),this._backgroundMaterial&&B(this._backgroundMaterial,`frameSize`,this._backgroundMesh.scale),this._transferToBackgroundMesh(),this.add(this._backgroundMesh))}bindBackgroundMeshProperties(){}unbindBackgroundMeshProperties(){}activatePseudoState(e){}deactivatePseudoState(e){}togglePseudoState(e){}hasPseudoState(e){return!1}set borderRadiusMediation(e){this._borderRadius.mediation=e}set backgroundCastShadow(e){this._backgroundCastShadow&&(this._backgroundCastShadow.value=e)}get backgroundCastShadow(){return this._backgroundCastShadow}set backgroundReceiveShadow(e){this._backgroundReceiveShadow&&(this._backgroundReceiveShadow.value=e)}get backgroundReceiveShadow(){return this._backgroundReceiveShadow}set renderOrder(e){this._renderOrder&&(this._renderOrder.value=e)}get renderOrder(){return this._renderOrder.value}_transferToFontMesh(e=null){if(this._fontMesh){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._fontMesh,e,this._fontMeshMediation)}}setFontMesh(e){this._fontMesh&&(this.remove(this._fontMesh),this._fontMesh.material&&this._fontMesh.material.dispose(),this._fontMesh.geometry&&this._fontMesh.geometry.dispose(),this._fontMesh=null,this.unbindFontMeshProperties()),this._fontMesh=e,this._fontMesh&&(this._fontMesh.raycast=()=>{},this.bindFontMeshProperties(),this._transferToFontMaterial(),this._transferToFontMesh(),this.add(this._fontMesh))}bindFontMeshProperties(){}unbindFontMeshProperties(){}set fontCastShadow(e){this._fontCastShadow&&(this._fontCastShadow.value=e)}get fontCastShadow(){return this._fontCastShadow}set fontReceiveShadow(e){this._fontReceiveShadow&&(this._fontReceiveShadow.value=e)}get fontReceiveShadow(){return this._fontReceiveShadow}set segments(e){this._segments.value=e}get segments(){return this._segments.value}set onAfterUpdate(e){console.warn("ThreeMeshUI v7xx : `onAfterUpdate()` property has been deprecated, please rely on `addAfterUpdate` instead."),this.addAfterUpdate(e)}addAfterUpdate(e){this._onAfterUpdates.push(e)}removeAfterUpdate(e){let t=this._onAfterUpdates.indexOf(e);t!==-1&&this._onAfterUpdates.splice(t,1)}performAfterUpdate(){for(let e=0;e 0.0 && vUvB.y > topBorderUVy ) +{ + + float w = fwidth( 1.0 - vUvB.y ) * mult; + float step = smoothstep( topBorderUVy , topBorderUVy + w , vUvB.y ); + diffuseColor = mix( diffuseColor, borderColor, step ); + +} + +// Left +float leftBorderUVx = borderWidth.w; +if( borderWidth.w > 0.0 && vUvB.x < leftBorderUVx ) +{ + + float w = fwidth( vUvB.x ) * mult ; + float step = smoothstep( leftBorderUVx , leftBorderUVx - w , vUvB.x ); + diffuseColor = mix( diffuseColor, borderColor, step ); + +} + +// Bottom +float bottomBorderUVy = borderWidth.z; +if( borderWidth.z > 0.0 && vUvB.y < bottomBorderUVy ) +{ + float w = fwidth( vUvB.y ) * mult; + float step = smoothstep( bottomBorderUVy , bottomBorderUVy - w , vUvB.y ); + diffuseColor = mix( diffuseColor, borderColor, step ); +} + +// Right +float rightBorderUVx = 1.0 - borderWidth.y; +if( borderWidth.y > 0.0 && vUvB.x > rightBorderUVx ) +{ + float w = fwidth( 1.0 - vUvB.x ) * mult; + float step = smoothstep( rightBorderUVx , rightBorderUVx + w , vUvB.x ); + diffuseColor = mix( diffuseColor, borderColor, step ); +} + + +// Step 2 ---------------------------------------------- +// Process each corners ( topLeft, topRight, bottomRight, bottomLeft ) +// To transparentize outside radiuses +// To draw ellipse border on the corner + + +// Top Left corner +if( vUvB.x < cornerTL.x && vUvB.y > cornerTL.y ) { + + // Only draw border if width is set + if( borderWidth.w + borderWidth.x > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerTL, cornerTL.x - borderWidth.w, ( 1.0 - cornerTL.y ) - borderWidth.x ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + // Then then radius + float radiusFactor = getEllipticFactor( vUvB, cornerTL, cornerTL.x, 1.0 - cornerTL.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Bottom Left +if( vUvB.x < cornerBL.x && vUvB.y < cornerBL.y ) { + + if( borderWidth.w + borderWidth.z > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerBL, cornerBL.x - borderWidth.w, cornerBL.y - borderWidth.z ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + + float radiusFactor = getEllipticFactor( vUvB, cornerBL, cornerBL.x, cornerBL.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Top Right +if( vUvB.x > cornerTR.x && vUvB.y > cornerTR.y ) { + + if( borderWidth.y + borderWidth.x > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerTR, ( 1.0 - cornerTR.x ) - borderWidth.y, ( 1.0 - cornerTR.y ) - borderWidth.x ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + float radiusFactor = getEllipticFactor( vUvB, cornerTR, 1.0 - cornerTR.x, 1.0 - cornerTR.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Bottom Right +if( vUvB.x > cornerBR.x && vUvB.y < cornerBR.y ) { + + if( borderWidth.y + borderWidth.z > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerBR, ( 1.0 - cornerBR.x ) - borderWidth.y, cornerBR.y - borderWidth.z ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + float radiusFactor = getEllipticFactor( vUvB, cornerBR, 1.0 - cornerBR.x, cornerBR.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} + +`,fn=` + +// To be removed - required for both border and background +uniform vec3 frameSize; +uniform vec2 textureSize; + +`,pn=` + +#ifdef USE_MAP + +vec4 sampleTexture() { + + vec2 uv = vUv; + + // default stretch + #if BACKGROUND_MAPPING != 0 + + float textureRatio = textureSize.x / textureSize.y; + float panelRatio = frameSize.x / frameSize.y; + float ratio = panelRatio / textureRatio; + float ratio2 = textureRatio / panelRatio; + + // contain + #if BACKGROUND_MAPPING == 1 + if ( textureRatio < panelRatio ) { // repeat on X + float newX = uv.x * ratio; + newX += 0.5 - 0.5 * ratio; + uv.x = newX; + } else { // repeat on Y + float newY = uv.y * ratio2; + newY += 0.5 - 0.5 * ratio2; + uv.y = newY; + } + #else + // cover + if ( textureRatio < panelRatio ) { // stretch on Y + float newY = uv.y * ratio2; + newY += 0.5 - 0.5 * ratio2; + uv.y = newY; + } else { // stretch on X + float newX = uv.x * ratio; + newX += 0.5 - 0.5 * ratio; + uv.x = newX; + } + + #endif + + #endif + + return texture2D( map, uv ); + +} +#endif +`,mn=` +#ifdef USE_MAP + + vec4 textureSample = sampleTexture(); + diffuseColor *= textureSample; + +#endif +`,hn={msdfAlphaglyphParsVertexGlsl:At,msdfAlphaglyphVertexGlsl:jt,msdfOffsetglyphVertexGlsl:F,msdfAlphaglyphParsFragmentGlsl:I,msdfAlphaglyphFragmentGlsl:L,frameBorderParsVertexGlsl:Y,frameBorderVertexGlsl:X,frameCommonParsFragmentGlsl:fn,frameBorderParsFragmentGlsl:un,frameBorderFragmentGlsl:dn,frameBackgroundParsFragmentGlsl:pn,frameBackgroundFragmentGlsl:mn},gn=` +// Would be automatic on three materials and from USE_UV +#ifdef USE_MAP +varying vec2 vUv; +#endif + +${Y} + +#include + +void main() { + + #ifdef USE_MAP + vUv = uv; + #endif + + ${X} + + vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); + gl_Position = projectionMatrix * mvPosition; + + #include + +} +`,_n=` + +// Basic +uniform vec3 diffuse; +uniform float opacity; + +#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif + +${fn} + +${un} + + +#ifdef USE_MAP +varying vec2 vUv; +uniform sampler2D map; +#endif + +${pn} + +#include + +void main() { + + vec4 diffuseColor = vec4( diffuse, opacity ); + + // map + ${mn} + + ${dn} + + #ifdef USE_ALPHATEST + + if ( diffuseColor.a < alphaTest ) discard; + + #endif + + // output + gl_FragColor = diffuseColor; + + + #include +} +`,vn=class e{static get mediation(){return yn}static ensureMaterialOptions(e){e.transparent=!0,e.alphaTest=e.alphaTest||.02}static ensureDefines(e){e.defines||={}}static ensureUserData(e,t){e.userData.borderColor={value:null},e.userData.borderRadius={value:new b.Vector4(0,0,0,0)},e.userData.cornerTL={value:new b.Vector2(0,1)},e.userData.cornerTR={value:new b.Vector2(1,1)},e.userData.cornerBR={value:new b.Vector2(1,0)},e.userData.cornerBL={value:new b.Vector2(0,0)},e.userData.borderWidth={value:new b.Vector4(0,0,0,0)},e.userData.borderOpacity={value:null},e.userData.frameSize={value:new b.Vector3(1,1,1)},e.userData.textureSize={value:new b.Vector2(1,1)}}static bindUniformsWithUserData(e,t){e.uniforms.borderColor=t.userData.borderColor,e.uniforms.borderRadius=t.userData.borderRadius,e.uniforms.cornerTL=t.userData.cornerTL,e.uniforms.cornerTR=t.userData.cornerTR,e.uniforms.cornerBR=t.userData.cornerBR,e.uniforms.cornerBL=t.userData.cornerBL,e.uniforms.borderWidth=t.userData.borderWidth,e.uniforms.borderOpacity=t.userData.borderOpacity,e.uniforms.frameSize=t.userData.frameSize,e.uniforms.textureSize=t.userData.textureSize}static injectShaderChunks(t){e.injectVertexShaderChunks(t),e.injectFragmentShaderChunks(t)}static injectVertexShaderChunks(e){e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+Y),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+X)}static injectFragmentShaderChunks(e){e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+pn),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+un),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+fn),e.fragmentShader=e.fragmentShader.replace(`#include `,mn),e.fragmentShader=e.fragmentShader.replace(`#include `,dn+` +#include `)}},yn={clippingPlanes:{m:`clippingPlanes`},backgroundAlphaTest:{m:`alphaTest`,t:R},backgroundSide:{m:`side`},backgroundImage:{m:`map`},backgroundColor:{m:`color`},backgroundOpacity:{m:`opacity`},backgroundSize:{m:`computedBackgroundSize`,t:function(e,t,n){n=[`stretch`,`contain`,`cover`].indexOf(n),Mt(e,`BACKGROUND_MAPPING`,n)}},borderWidth:{m:`borderWidth`,t:B},borderColor:{m:`borderColor`,t:B},cornerTL:{m:`cornerTL`,t:B},cornerTR:{m:`cornerTR`,t:B},cornerBR:{m:`cornerBR`,t:B},cornerBL:{m:`cornerBL`,t:B},borderOpacity:{m:`borderOpacity`,t:B},size:{m:`frameSize`,t:B},tSize:{m:`textureSize`,t:B}},bn=class extends b.ShaderMaterial{static get mediation(){return vn.mediation}constructor(){super({uniforms:{alphaTest:{value:.02},map:{value:null},diffuse:{value:new b.Color(16777215)},opacity:{value:1},borderColor:{value:new b.Color(0)},borderOpacity:{value:0},borderRadius:{value:new b.Vector4(0,0,0,0)},cornerTL:{value:new b.Vector2(0,1)},cornerTR:{value:new b.Vector2(1,1)},cornerBR:{value:new b.Vector2(1,0)},cornerBL:{value:new b.Vector2(0,0)},borderWidth:{value:new b.Vector4(0,0,0,0)},frameSize:{value:new b.Vector3(1,1,1)},textureSize:{value:new b.Vector2(1,1)}},side:b.FrontSide,transparent:!0,clipping:!0,vertexShader:gn,fragmentShader:_n,extensions:{derivatives:!0}}),this.defines.USE_ALPHATEST=``,this.needsUpdate=!0}set map(e){this.uniforms.map.value=e,e?this.defines.USE_UV===void 0&&(this.defines.USE_UV=``,this.needsUpdate=!0):this.defines.USE_UV!==void 0&&(delete this.defines.USE_UV,this.needsUpdate=!0),this.needsUpdate=!0}get map(){return this.uniforms.map.value}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms.alphaTest.value=e}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get opacity(){return this.uniforms.opacity.value}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}},xn=class extends v{constructor(){super(`children`,null,!1),this._uis=[],this._boxes=[]}update(e,t){this._compute(e),e._layouter._needsUpdate=!0,e._renderOrder._needsUpdate=!0}process(e){this._compute(e),e._flexDirection._needsProcess=!0,e._layouter._needsProcess=!0,e._overflow._needsRender=!0}_compute(e){this._uis=e.children.filter(e=>e.visible&&e.isUI),this._boxes=this._uis.filter(e=>e.isBox).sort(this._sortOrder)}dispose(){this._uis=null,this._boxes=null}_sortOrder=(e,t)=>e._order._valuet._order._value?1:this._uis.indexOf(e){let n=t._margin._value;return e+(t._bounds._offsetWidth+n.y+n.w)},0)}function Tn(e){return e._children._boxes.reduce((e,t)=>{let n=t._margin._value;return e+(t._bounds._offsetHeight+n.x+n.z)},0)}var En=class extends N{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!0,this._process=this.emptyStrategyLogic,this._childAlign=this.emptyStrategyLogic}computeOutputValue(e){switch(this._value=this._inheritedInput,e._flexDirection._value){case`row`:case`row-reverse`:switch(this._process=Nn,this._value){case`start`:this._childAlign=kn;break;case`end`:this._childAlign=On;break;default:this._childAlign=Dn}break;case`column`:case`column-reverse`:switch(this._process=Mn,this._value){case`start`:this._childAlign=jn;break;case`end`:this._childAlign=An;break;default:this._childAlign=Dn}break}this._needsProcess=!0,e._autoSize._needsProcess=!0,e._flexDirection._needsProcess=!0,e._justifyContent._needsProcess=!0,this._needsProcess=!0,e._fontSize._needsProcess=!0,e._layouter._needsProcess=!0}process(e){this._process(e,this._childAlign);let t=`center`,n=`center`,r=`center`,i=e._padding._value,a=e._borderWidth._value;t=e._flexDirection._value.indexOf(`column`)===-1?this._value===`start`?r=`top`:this._value===`end`?r=`bottom`:`centerY`:this._value===`start`?n=`left`:this._value===`end`?n=`right`:`centerX`;let o=-(i.x-i.z)/2-(a.x-a.z)/2,s=-(i.y-i.w)/2-(a.y-a.w)/2;n===`left`?s=(i.w-i.y)/2+(a.w-a.y)/2:n===`right`&&(s=-(i.y-i.w)/2-(a.y-a.w)/2),r===`top`?o=-(i.x-i.z)/2-(a.x-a.z)/2:r===`bottom`&&(o=(i.z-i.x)/2+(a.z-a.x)/2),e._children._boxes.forEach(n=>{let r=0,i=0;t===`top`?i=-n._margin._value.x:t===`bottom`?i=n._margin._value.z:t===`left`?r=n._margin._value.w:t===`right`?r=-n._margin._value.y:t===`centerX`?r=(n._margin._value.w-n._margin._value.y)/2:t===`centerY`&&(i=(-n._margin._value.x+n._margin._value.z)/2),e._layouter._childrenPos[n.id].x+=s+r,e._layouter._childrenPos[n.id].y+=o+i})}};function Dn(){return 0}function On(e,t){return-t+e._bounds._offsetHeight/2}function kn(e,t){return t-e._bounds._offsetHeight/2}function An(e,t){return t-e._bounds._offsetWidth/2}function jn(e,t){return-t+e._bounds._offsetWidth/2}function Mn(e,t){let n=e._bounds._innerWidth/2;e._children._boxes.forEach(r=>{e._layouter._childrenPos[r.id].x=t(r,n)})}function Nn(e,t){let n=e._bounds._innerHeight/2;e._children._boxes.forEach(r=>{e._layouter._childrenPos[r.id].y=t(r,n)})}var Pn=class extends at{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!0,this._offset=0,this._reverse=1,this._process=this.emptyStrategyLogic}computeOutputValue(e){switch(this._value=this._inheritedInput,this._value){case`row`:this._process=Fn;break;case`row-reverse`:this._process=In;break;case`column`:this._process=Ln;break;case`column-reverse`:this._process=Rn;break}e._justifyContent._needsUpdate||e._justifyContent.computeOutputValue(e),e._alignItems._needsUpdate||e._alignItems.computeOutputValue(e),this._needsProcess=!0}process(e){switch(this._value){case`row`:this._offset=-e._bounds._innerWidth/2;break;case`row-reverse`:this._offset=e._bounds._innerWidth/2;break;case`column`:this._offset=e._bounds._innerHeight/2;break;case`column-reverse`:this._offset=-e._bounds._innerHeight/2;break}this._reverse=-Math.sign(this._offset),this._reverse===0&&(this._reverse=1),this._process(e),e._justifyContent._needsProcess=!0,e._layouter._needsProcess=!0}};function Fn(e){let t=e._flexDirection._offset,n=e._flexDirection._reverse,r=e._children._boxes;for(let i=0;i{e._layouter._childrenPos[t.id].x-=a-o[n]})}function Vn(e){let t=e._flexDirection._offset,{usedDirectionSpace:n,remainingSpace:r}=Un(e),i=t*2-n*Math.sign(t),a=this._computeOffset(i),o=this._computeMargin(e,r,e._flexDirection._reverse);e._children._boxes.forEach((t,n)=>{e._layouter._childrenPos[t.id].y-=a-o[n]})}function Hn(e){let t=e._bounds._computeChildrenSideWidth(e);return{usedDirectionSpace:t,remainingSpace:e._bounds._innerWidth-t}}function Un(e){let t=e._bounds._computeChildrenSideHeight(e);return{usedDirectionSpace:t,remainingSpace:e._bounds._innerHeight-t}}function Q(e){return 0}function Wn(e){return e}function Gn(e){return e/2}function Kn(e,t=0,n=1){return Array(e._children._boxes.length).fill(0)}function qn(e,t=0,n=1){let r=e._children._boxes.length,i=Array(r).fill(0);if(t>0&&r>1){let e=t/(r-1)*n;i[0]=0;for(let t=1;t0){let e=t/(r+1)*n;for(let t=0;t0){let e=t/r*n,a=e/2;i[0]=a;for(let t=1;tt&&(t=r)}return t}function ur(e){let t=0;for(let n of e._children._boxes){if(n._position._value!==`static`)continue;let e=n._margin._value,r=n._bounds._offsetHeight+e.x+e.z;r>t&&(t=r)}return t}var dr=class e extends q{constructor(t,n){e.definePropertiesValues(t,n),super(t,n),e.init(this)}bindBackgroundMeshProperties(){this._bounds._size=this._backgroundMesh.scale,this._bounds._needsProcess=!0}unbindBackgroundMeshProperties(){this._bounds._size=new b.Vector3(1,1,1),this._bounds._needsProcess=!0}static definePropertiesValues(e,t){e.children||=xn,e.bounds||=Sn,e.flexDirection||=Pn,e.justifyContent||=zn,e.alignItems||=En,e.position||=tr,e.autoSize||=nr,e.renderer||=er,t.fontSide||=0,t.invertAlpha||=!1,t.fontCastShadow||=!1,t.fontReceiveShadow||=!1,t.backgroundCastShadow||=!1,t.backgroundReceiveShadow||=!1}static init(e){Object.defineProperties(e,{isBox:{configurable:!1,enumerable:!0,value:!0}}),e.backgroundMaterial=new bn,e._renderer.render(e),e._backgroundMesh.visible=!1}},fr=class extends Array{constructor(...e){super(...e),this.width=0,this.lineBase=0,this.lineHeight=0,this.y=0}},pr=class extends v{constructor(){super(`layouter`,null,!1),this._needsUpdate=!0,this._childrenPos={}}update(e,t){this._childrenPos={};for(let t of e._children._boxes)t._position._value===`static`&&(this._childrenPos[t.id]=t.position)}process(e){}},mr=class e extends dr{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}add(e){let t=[];for(let e=0;ee.asInlineGlyph()),this._value.length){this._value[0].paddingLeft=e._padding._value.w,this._value[0].marginLeft=e._margin._value.w;let t=this._value.length-1;this._value[t].paddingRight=e._padding._value.y,this._value[t].marginRight=e._margin._value.y}e._fontSize._needsProcess=!0,e._lineBreak._needsProcess=!0,e._fontKerning._needsProcess=!0,e._layouter._needsProcess=!0}get value(){return this._value}},_r=class extends v{constructor(){super(`glyphs`,null,!1),this._needsUpdate=!1,this._value=null}process(e){e._font._fontVariant&&e._font._fontVariant.isReady&&(this._value=e._whiteSpace._whiteSpacedContent.split(``).map(t=>e._font._fontVariant.getTypographicGlyph(t)),this._value&&(e._inlines._needsProcess=!0))}get value(){return this._value}},vr=class extends D{constructor(){super(`color`,`inherit`,!1),this.output=this._outputValue}computeOutputValue(e){this._input===`inherit`?this._value.set(this.getInheritedInput(e)):this._value.set(this._input)}},yr=class extends v{constructor(e=`- ,.:?! +`){super(`lineBreak`,e,!0),this._newLineBreakability=null}update(e,t){this._needsProcess=!0}process(e){let t=e._whiteSpace._newLineBreakability;if(e._inlines._value)for(let n=0;ne.isUI&&e.isText),this._needsProcess=!0}process(e){this._value&&(this._value._layouter._needsProcess=!0)}},xr=class extends D{constructor(e){super(`backgroundColor`,e,!1),this._allowsInherit=!1,this._input=0}computeOutputValue(e){this._input===`inherit`?this._value.set(this.getInheritedInput(e)):this._value.set(this._input)}},Sr=class extends yt{constructor(){super(),this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited}},Cr=class extends St{constructor(){super()}computeOutputValue(e){this._value=T(this.getInheritedInput(e))}},wr=class extends Xt{constructor(){super(`fontFamily`,`inherit`,!0),this._input=`inherit`,this._needsUpdate=!0,this._allowsInherit=!1}computeOutputValue(e){let t=this._inheritedInput;if(t===`inherit`&&(t=this.getInheritedInput(e)),t instanceof H)this._value=t,e._font._needsUpdate=!0;else if(typeof t==`string`){let n=W.getFontFamily(t);n?(this._value=n,e._font._needsUpdate=!0):console.warn(`(.style) fontFamily, the font '${t}' is not registered. Aborted.`)}else console.warn(`(.style) fontFamily requires a registered fontFamily instance, or the id of a registered fontFamily.`),console.warn(`If you want to set a specific font, please use .font property instead.`)}get value(){return this._value}},Tr=class extends Qt{constructor(){super(),this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited,this._whiteSpacedContent=``,this._stringCollapser=this.emptyStrategyLogic,this._inlineCollapser=this.emptyStrategyLogic,this._inlineWrapper=this.emptyStrategyLogic}_computeFromInherited(e){switch(super._computeFromInherited(e),this._newLineBreakability=Dr(this._value),this._value){case`nowrap`:case`normal`:this._stringCollapser=Or;break;case`pre-line`:this._stringCollapser=kr;break;default:this._stringCollapser=Ar}switch(this._value){case`pre-line`:case`nowrap`:case`normal`:this._inlineCollapser=Fr;break;case`pre-wrap`:this._inlineCollapser=Pr;break;default:this._inlineCollapser=Ir}switch(this._value){case`pre-line`:case`pre-wrap`:case`normal`:this._inlineWrapper=jr;break;case`pre`:this._inlineWrapper=Mr;break;default:this._inlineWrapper=Nr}this._needsProcess=!0}process(e){e.isInline&&!e.isInlineBlock&&(this._whiteSpacedContent=this._stringCollapser(e._textContent._value),e._glyphs._needsProcess=!0)}},Er={" ":` `,"\n":` +`,"\r":`\r`," ":` `},Dr=function(e){switch(e){case`pre`:case`pre-wrap`:case`pre-line`:return`mandatory`}return null};function Or(e){return kr(e.replace(/\n/g,` `))}function kr(e){return e.replace(/[ ]{2,}/g,` `)}function Ar(e){return e}function jr(e,t,n,r){let i=e[t];if(i.lineBreak===`mandatory`||n+i.xadvance+i.xoffset+i.kerning>r.INNER_WIDTH)return!0;let a=zr(e,t,r);return Br(e[t-1],n,a,r)}function Mr(e,t,n,r){return e[t].lineBreak===`mandatory`}function Nr(){return!1}function Pr(e){if(!e[0])return 0;let t=e[0],n=e[e.length-1];return t.char&&t.char===` +`&&e.length>1&&Rr([t],e[1]),n.char&&n.char===` +`&&e.length>1&&Lr([n],e[e.length-2]),t.offsetX}function Fr(e){if(!e[0])return 0;let t=[],n;for(let r=0;rr){t.push(i),n=e[r+1];continue}break}Rr(t,n),t=[],n=null;for(let r=e.length-1;r>0;r--){let i=e[r];if(i.char&&Er[i.char]&&r>0){t.push(i),n=e[r-1];continue}break}return Lr(t,n),e[0].offsetX}function Ir(e){return e[0]?e[0].offsetX:0}function Lr(e,t){if(t)for(let n=0;n-1}var Vr=class extends tn{constructor(){super(),this._input=`inherit`,this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited}_computeFromInherited(e){super._computeFromInherited(e),e._fontSize._needsProcess=!0,e._layouter._needsProcess=!0}},Hr=class extends x{constructor(){super(`fontSize`,`inherit`,!0),this._allowsInherit=!1}computeOutputValue(e){this._value=this._inheritedInput,e._font._fontVariant&&(e._bounds._needsProcess=!0,e._layouter._needsProcess=!0)}process(e){if(!e._font._fontVariant||!e._font._fontVariant.isReady)return;let t=this._value/e._font._fontVariant.typographic.size,n=e._inlines._value;for(let e=0;ee._font._fontVariant.getGeometricGlyph(t,e).translate(t.offsetX,t.offsetY,0)));e.setFontMesh(new b.Mesh(t,e.fontMaterial)),e._fontMesh.renderOrder=1/0}},Xr=class extends P{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!1}computeOutputValue(e){this._value=this._inheritedInput,e._layouter._needsProcess=!0}},Zr=class e extends q{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}add(e){let t=[];for(let e=0;e{super._rebuildParentUI(),this._layouter._needsUpdate=!0};set textContent(e){this._textContent.value=e}get textContent(){return this._textContent._value}set invertAlpha(e){this._invertAlpha.value=e}get invertAlpha(){return this._invertAlpha._value}static definePropertiesValues(e,t){e.children||=Kr,e.textContent||=hr,e.glyphs||=_r,e.inlines||=gr,e.layouter||=br,e.renderer||=Yr,e.fontFamily||=wr,e.fontWeight||=Cr,e.fontStyle||=Sr,e.fontSize||=Hr,e.color||=vr,e.backgroundColor||=xr,e.lineBreak||=yr,e.letterSpacing||=Vr,e.whiteSpace||=Tr,e.segments||=Wr,e.textAlign||=Xr,e.fontKerning||=Gr}static init(e){Object.defineProperties(e,{isInline:{configurable:!1,enumerable:!0,value:!0}})}},Qr=class extends vt{constructor(){super(`textContent`,null,!1),this._needsUpdate=!1}set value(e){this._value!==e&&(this._value=e,this._needsUpdate=!0)}update(e,t){this._needsUpdate=!1;for(let t=e.children.length-1;t>=0;t--){let n=e.children[t];n.isUI&&(e.remove(n),n.clear())}e._children._uis=[],this._value&&e.add(new Zr({name:`anonymousInline`,textContent:this._value}))}},$r=class extends Array{constructor(...e){super(...e),this.width=0,this.height=0}},ei=class extends v{constructor(){super(`layouter`,null,!1),this._value=null}update(e,t){}process(e){let t=e._width._value;t=e._width._auto?1/0:e._bounds._innerWidth;let n=e._lineHeight._value,r=new $r(new fr),i=0;e._children._inlines.forEach(e=>{if(!e._inlines.value)return;this._resetInlines(e);let n=e._fontSize._value,a=e._letterSpacing._value*n,o={WHITESPACE:e._whiteSpace._value,LETTERSPACING:a,BREAKON:e._lineBreak._value,INNER_WIDTH:t},s=e._whiteSpace._inlineWrapper;i+=e._margin._value.w+e._padding._value.w,e._inlines.value.forEach((e,t,n)=>{let c=r[r.length-1];if(s(n,t,i,o)){if(r.push(new fr(e)),e.offsetX=e.xoffset,e.width===0){i=0;return}e.cumulativeWidth=e.xadvance+a,i=e.cumulativeWidth;return}r[r.length-1].push(e),e.offsetX=i+e.xoffset+e.kerning,e.cumulativeWidth=e.xadvance+e.kerning+a,i+=e.cumulativeWidth,c.length-1==1&&c[c.length-2].width===0&&(e.offsetX-=e.xoffset,i-=e.xoffset)}),i+=e._margin._value.y+e._padding._value.y});let a=e._whiteSpace._inlineCollapser,o=0,s=0,c=0;r.forEach((e,t)=>{let i=a(e),l=0,u=0;if(e.forEach(e=>{l=Math.max(l,e.lineHeight),u=Math.max(u,e.lineBase),e.offsetX-=i}),e.lineHeight=l,e.lineBase=u,t===0?c=-(l*n-l)*.5:c-=r[t-1].lineHeight*n,e.y=c,e.x=0,e.forEach(t=>{t.offsetY=c-t.anchor,t.lineHeighte.visible&&e.isUI),this._inlines=this._uis.filter(e=>e.isInline).sort(this._sortOrder)}dispose(){this._inlines=null}_sortOrder=(e,t)=>e._order._valuet._order._value?1:this._uis.indexOf(e)0&&super.add(...t),n&&(this._children._needsUpdate=!0,this._layouter._needsProcess=!0),this}set textContent(e){this._textContent.value=e}get textContent(){return super.textContent}set invertAlpha(e){this._invertAlpha.value=e}get invertAlpha(){return this._invertAlpha._value}get lines(){return this._layouter._value}static definePropertiesValues(e,t){e.flexDirection=ii,e.justifyContent=ct,e.alignItems=N,e.bounds=si,e.autoSize=li,e.renderer=ui,e.children||=ci,e.textContent||=Qr,e.layouter||=ei,e.lineHeight||=ai,e.textAlign||=ti,e.whiteSpace||=Tr,e.fontKerning||=oi,e.segments||=Ur,t.width||=`100%`,t.fontSide||=0}static init(e){Object.defineProperties(e,{isText:{configurable:!1,enumerable:!0,value:!0}})}},fi=class extends v{constructor(){super(`inlines`,null,!1),this._value=[]}process(e){this._value[0].paddingLeft=e._padding._value.w,this._value[0].marginLeft=e._margin._value.w;let t=this._value.length-1;this._value[t].paddingRight=e._padding._value.y,this._value[t].marginRight=e._margin._value.y}},pi=class extends v{constructor(){super(`renderer`)}render(e){e._backgroundMesh||e.setBackgroundMesh(new Zn(e)),e._backgroundMesh.position.x=e._inlines._value[0].offsetX+e._inlines._value[0].width/2,e._backgroundMesh.position.y=e._inlines._value[0].offsetY+e._inlines._value[0].lineBase/2,e._bounds.render(e)}},mi=class extends v{constructor(){super(`bounds`,null,!1),this._size=new b.Vector3(1,1,1),this._offsetWidth=0,this._offsetHeight=0,this._innerWidth=0,this._innerHeight=0}update(e,t){this.output(t),this._needsProcess=!0}process(e){this._offsetWidth=this._innerWidth=e._inlines._value[0].width,this._offsetHeight=this._innerHeight=e._inlines._value[0].height,this._needsRender=!0,e._borderWidth._needsRender=!0,e._borderRadius._needsRender=!0}render(e){this._size.x=this._offsetWidth,this._size.y=this._offsetHeight}output(e){e.size=this._size}},hi=class e extends q{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}clear(){for(let e of this._inlines._value)e.clear();return super.clear()}bindBackgroundMeshProperties(){this._backgroundMesh.raycast=()=>{},this._bounds._size=this._backgroundMesh.scale,this._bounds._needsUpdate=!0}unbindBackgroundMeshProperties(){this._bounds._size=new b.Vector3(1,1,1),this._bounds._needsUpdate=!0}add(e){let t=[];for(let e=0;eJ.update(),yi={BaseProperty:v,Block:mr,Text:di,Inline:Zr,InlineBlock:hi,MeshUIBaseElement:q,FontLibrary:W,update:vi,MSDFFontMaterialUtils:V,ShaderChunkUI:hn,Behavior:_i,FontVariant:E};typeof global<`u`&&(global.ThreeMeshUI=yi);var bi=yi,xi=m.ti,Si=m.nS,Ci=m.eB,wi=m.Yp,Ti=m.VB,Ei=m.BC,Di=m.zN,Oi=m.cV,ki=m.hW,Ai=m.k2,ji=m.K6,Mi=m.M7,Ni=m.ls,Pi=m.Hi,Fi=m.EY,Ii=m.MR,Li=m.zf,Ri=m.Ay,zi=m.yo,Bi=class extends Si{constructor(e,t={}){super(e),e._simpleState__activeStates=[],e._simpleState__normalStyles={},e._simpleState__states=t,e._simpleState__statesProperties={};for(let n in t)for(let r in t[n])e._simpleState__statesProperties[r]||(e._simpleState__statesProperties[r]=[]),e._simpleState__statesProperties[r].push(n);for(let t of e._components)e._simpleState__statesProperties[t.id]&&(e._simpleState__normalStyles[t.id]=t.inline?t.inline:t._value);e.__overridedSet=e.set,e.set=this.storeSet.bind(e),e.renderStates=this.renderStates.bind(e),e.setupState=this.setupState.bind(e),e.setState=this.setState.bind(e),e.activatePseudoState=this.activatePseudoState.bind(e),e.deactivatePseudoState=this.deactivatePseudoState.bind(e),e.togglePseudoState=this.togglePseudoState.bind(e)}act(){}attach(){}detach(){}setupState(e,t){this._simpleState__states[e]=t;let n=[];for(let r in t)this._simpleState__statesProperties[r]||(this._simpleState__statesProperties[r]=[],n.push(r)),this._simpleState__statesProperties[r].push(e);for(let e of this._components)n.indexOf(e.id)>-1&&(this._simpleState__normalStyles[e.id]=e.inline?e.inline:e._value)}renderStates(){let e={...this._simpleState__normalStyles};for(let t in this._simpleState__states)this._simpleState__activeStates.indexOf(t)>-1&&(e={...e,...this._simpleState__states[t]});this.set(e,!1)}storeSet(e,t=!0){if(t)for(let t in e)this._simpleState__statesProperties[t]&&(this._simpleState__normalStyles[t]=e[t]);this.__overridedSet(e)}activatePseudoState(e){this._simpleState__activeStates.indexOf(e)===-1&&(this._simpleState__activeStates.push(e),this.renderStates())}deactivatePseudoState(e){let t=this._simpleState__activeStates.indexOf(e);t>-1&&(this._simpleState__activeStates.splice(t,1),this.renderStates())}togglePseudoState(e){let t=this._simpleState__activeStates.indexOf(e);t>-1?this._simpleState__activeStates.splice(t,1):this._simpleState__activeStates.push(e),this.renderStates()}setState(e){Array.isArray(e)?this._simpleState__activeStates=e:this._simpleState__activeStates=[e],this.renderStates()}};export{Fi as a,ae as c,Oi as i,Ci as n,Ri as o,Ti as r,zi as s,Bi as t}; \ No newline at end of file diff --git a/Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz b/Needle/MenuScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f37c13d52f2706871cf2648a99413eeca764ec88 GIT binary patch literal 26682 zcmV)5K*_%!iwFP!000023e>%QciT3yIQ)0~Dd^r_FBw6!N27|!>7z}3e>8vF5wg|E+!1Wm^ zr{Bc8q?}B~Sf8zfCFjOxy5@a~R;q5_I;n$>`VL}&!FiIX?=jZ@mWS4nK*!P

i3rupF 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 VcRWnd4i8z@{Reox;QjHr0RWD+0et`f literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/assets/three-quarks.DALdLWPD.js b/Needle/MenuScene/dist/assets/three-quarks.DALdLWPD.js new file mode 100644 index 0000000..addfe6f --- /dev/null +++ b/Needle/MenuScene/dist/assets/three-quarks.DALdLWPD.js @@ -0,0 +1,1039 @@ +import{$ as e,$n as t,Ar as n,At as r,Qt as i,S as a,Zt as o,_t as s,fn as c,in as l,rn as u,tr as d,vn as f,vt as p,x as m,xr as h,yr as g}from"./three@0.169.19.js";var _=`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(`.`),v=1234567,y=Math.PI/180,b=180/Math.PI;function x(){let e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(_[e&255]+_[e>>8&255]+_[e>>16&255]+_[e>>24&255]+`-`+_[t&255]+_[t>>8&255]+`-`+_[t>>16&15|64]+_[t>>24&255]+`-`+_[n&63|128]+_[n>>8&255]+`-`+_[n>>16&255]+_[n>>24&255]+_[r&255]+_[r>>8&255]+_[r>>16&255]+_[r>>24&255]).toLowerCase()}function S(e,t,n){return Math.max(t,Math.min(n,e))}function C(e,t){return(e%t+t)%t}function w(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function T(e,t,n){return e===t?0:(n-e)/(t-e)}function E(e,t,n){return(1-n)*e+n*t}function D(e,t,n,r){return E(e,t,1-Math.exp(-n*r))}function O(e,t=1){return t-Math.abs(C(e,t*2)-t)}function ee(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function k(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function A(e,t){return e+Math.floor(Math.random()*(t-e+1))}function j(e,t){return e+Math.random()*(t-e)}function M(e){return e*(.5-Math.random())}function N(e){e!==void 0&&(v=e);let t=v+=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 P(e){return e*y}function F(e){return e*b}function te(e){return(e&e-1)==0&&e!==0}function ne(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function re(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ie(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:console.warn(`../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function ae(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 oe(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 se={DEG2RAD:y,RAD2DEG:b,generateUUID:x,clamp:S,euclideanModulo:C,mapLinear:w,inverseLerp:T,lerp:E,damp:D,pingpong:O,smoothstep:ee,smootherstep:k,randInt:A,randFloat:j,randFloatSpread:M,seededRandom:N,degToRad:P,radToDeg:F,isPowerOfTwo:te,ceilPowerOfTwo:ne,floorPowerOfTwo:re,setQuaternionFromProperEuler:ie,normalize:oe,denormalize:ae},I=class e{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(o===0){e[t+0]=s,e[t+1]=c,e[t+2]=l,e[t+3]=u;return}if(o===1){e[t+0]=d,e[t+1]=f,e[t+2]=p,e[t+3]=m;return}if(u!==m||s!==d||c!==f||l!==p){let e=1-o,t=s*d+c*f+l*p+u*m,n=t>=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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 e(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:console.warn(`../math.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<2**-52?(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(S(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}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}},L=class e{constructor(t=0,n=0,r=0){this.isVector3=!0,e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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 e(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(le.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(le.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}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 ce.copy(this).projectOnVector(e),this.sub(ce)}reflect(e){return this.sub(ce.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(S(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)}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}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}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}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}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},ce=new L,le=new I,ue=2e3,R=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){this.isMatrix4=!0,e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}extractPosition(e){return console.warn(`THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().`),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error(`THREE.Matrix4: .multiplyToArray() has been removed.`),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/de.setFromMatrixColumn(e,0).length(),i=1/de.setFromMatrixColumn(e,1).length(),a=1/de.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(fe,e,pe)}lookAt(e,t,n){let r=this.elements;return V.subVectors(e,t),V.lengthSq()===0&&(V.z=1),V.normalize(),B.crossVectors(n,V),B.lengthSq()===0&&(Math.abs(n.z)===1?V.x+=1e-4:V.z+=1e-4,V.normalize(),B.crossVectors(n,V)),B.normalize(),me.crossVectors(V,B),r[0]=B.x,r[4]=me.x,r[8]=V.x,r[1]=B.y,r[5]=me.y,r[9]=V.y,r[2]=B.z,r[6]=me.z,r[10]=V.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],k=r[6],A=r[10],j=r[14],M=r[3],N=r[7],P=r[11],F=r[15];return i[0]=a*x+o*T+s*ee+c*M,i[4]=a*S+o*E+s*k+c*N,i[8]=a*C+o*D+s*A+c*P,i[12]=a*w+o*O+s*j+c*F,i[1]=l*x+u*T+d*ee+f*M,i[5]=l*S+u*E+d*k+f*N,i[9]=l*C+u*D+d*A+f*P,i[13]=l*w+u*O+d*j+f*F,i[2]=p*x+m*T+h*ee+g*M,i[6]=p*S+m*E+h*k+g*N,i[10]=p*C+m*D+h*A+g*P,i[14]=p*w+m*O+h*j+g*F,i[3]=_*x+v*T+y*ee+b*M,i[7]=_*S+v*E+y*k+b*N,i[11]=_*C+v*D+y*A+b*P,i[15]=_*w+v*O+y*j+b*F,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=de.set(r[0],r[1],r[2]).length(),a=de.set(r[4],r[5],r[6]).length(),o=de.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],z.copy(this);let s=1/i,c=1/a,l=1/o;return z.elements[0]*=s,z.elements[1]*=s,z.elements[2]*=s,z.elements[4]*=c,z.elements[5]*=c,z.elements[6]*=c,z.elements[8]*=l,z.elements[9]*=l,z.elements[10]*=l,t.setFromRotationMatrix(z),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=ue){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=ue){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`../math.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}},de=new L,z=new R,fe=new L(0,0,0),pe=new L(1,1,1),B=new L,me=new L,V=new L,he=new R,ge=new I,_e=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 e(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(S(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(-S(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(S(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(-S(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(S(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(-S(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:console.warn(`../math.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return he.makeRotationFromQuaternion(e),this.setFromRotationMatrix(he,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ge.setFromEuler(this),this.setFromQuaternion(ge,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(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};_e.DEFAULT_ORDER=`XYZ`;var H=class e{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 e(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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(S(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}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}};H.isVector2=!0;var U=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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 e(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}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}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)s&&e>_?e_?s0?Math.floor(t/n)*n:t,e){case G.Loop:i%=1;break;case G.PingPong:i=Math.abs(i%2-1);break}return i}var be=class e{constructor(e,t,n,r){this.p=[e,t,n,r]}genValue(e){let t=e*e,n=e*e*e,r=1-e,i=r*r,a=i*r;return this.p[0]*a+this.p[1]*i*e*3+this.p[2]*r*t*3+this.p[3]*n}derivativeCoefficients(e){let t=[];for(let n=e,r=n.length-1;r>0;r--){let e=[];for(let t=0;t1;){for(n=[],a=0,o=t.length-1;a({r:e.x,g:e.y,b:e.z,a:e.w}),Se=e=>new U(e.r,e.g,e.b,e.a),Ce=(e,t)=>{switch(t){case`Vector3`:return new L(e.x,e.y,e.z);case`Vector4`:return new U(e.x,e.y,e.z,e.w);case`Color`:return new L(e.r,e.g,e.b);case`Number`:return e;default:return e}},we=(e,t)=>{switch(t){case`Vector3`:return{x:e.x,y:e.y,z:e.z};case`Vector4`:return{x:e.x,y:e.y,z:e.z,w:e.w};case`Color`:return{r:e.x,g:e.y,b:e.z};case`Number`:return e;default:return e}},Te=class e{constructor(e,t){this.a=e,this.b=t,this.type=`value`}startGen(e){}genColor(e,t){let n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:`RandomColor`,a:xe(this.a),b:xe(this.b)}}static fromJSON(t){return new e(Se(t.a),Se(t.b))}clone(){return new e(this.a.clone(),this.b.clone())}},Ee=class e{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type=`value`}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:`ColorRange`,a:xe(this.a),b:xe(this.b)}}static fromJSON(t){return new e(Se(t.a),Se(t.b))}clone(){return new e(this.a.clone(),this.b.clone())}},De=class e{constructor(e,t){this.subType=t,this.type=`function`,this.keys=e}findKey(e){let t=0,n=0,r=this.keys.length-1;for(;n+1this.getEndX(t))n=t+1;else return t;for(let t=n;t<=r;t++)if(e>=this.getStartX(t)&&e<=this.getEndX(t))return t;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:`CLinearFunction`,subType:this.subType,keys:this.keys.map(([e,t])=>({value:we(e,this.subType),pos:t}))}}static fromJSON(t){return new e(t.keys.map(e=>[Ce(e.value,t.subType),e.pos]),t.subType)}clone(){return this.subType===`Number`?new e(this.keys.map(([e,t])=>[e,t]),this.subType):new e(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}},Oe=new L,ke=class e{constructor(e=[[new L(0,0,0),0],[new L(1,1,1),0]],t=[[1,0],[1,1]]){this.type=`function`,this.color=new De(e,`Color`),this.alpha=new De(t,`Number`)}genColor(e,t,n){return this.color.genValue(Oe,n),t.set(Oe.x,Oe.y,Oe.z,this.alpha.genValue(1,n))}toJSON(){return{type:`Gradient`,color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(t){if(t.functions){let n=t.functions.map(e=>[Ee.fromJSON(e.function).a,e.start]);return t.functions.length>0&&n.push([Ee.fromJSON(t.functions[t.functions.length-1].function).b,1]),new e(n.map(e=>[new L(e[0].x,e[0].y,e[0].z),e[1]]),n.map(e=>[e[0].w,e[1]]))}else{let n=new e;return n.alpha=De.fromJSON(t.alpha),n.color=De.fromJSON(t.color),n}}clone(){let t=new e;return t.alpha=this.alpha.clone(),t.color=this.color.clone(),t}startGen(e){}},Ae=new U,je=class e{constructor(e,t){this.indexCount=0,this.type=`function`,this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,Ae,n),e&&e[this.indexCount]!==void 0?t.lerp(Ae,e[this.indexCount]):t.lerp(Ae,Math.random()),t}toJSON(){return{type:`RandomColorBetweenGradient`,gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(t){return new e(ke.fromJSON(t.gradient1),ke.fromJSON(t.gradient2))}clone(){return new e(this.gradient1.clone(),this.gradient2.clone())}},Me=class e{constructor(e){this.color=e,this.type=`value`}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:`ConstantColor`,color:xe(this.color)}}static fromJSON(t){return new e(Se(t.color))}clone(){return new e(this.color.clone())}};function Ne(e){switch(e.type){case`ConstantColor`:return Me.fromJSON(e);case`ColorRange`:return Ee.fromJSON(e);case`RandomColor`:return Te.fromJSON(e);case`Gradient`:return ke.fromJSON(e);case`RandomColorBetweenGradient`:return je.fromJSON(e);default:return new Me(new U(1,1,1,1))}}var K=class e{constructor(e){this.value=e,this.type=`value`}startGen(e){}genValue(e){return this.value}toJSON(){return{type:`ConstantValue`,value:this.value}}static fromJSON(t){return new e(t.value)}clone(){return new e(this.value)}},Pe=class e{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type=`value`}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),se.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:`IntervalValue`,a:this.a,b:this.b}}static fromJSON(t){return new e(t.a,t.b)}clone(){return new e(this.a,this.b)}},Fe=class{constructor(){this.functions=[]}findFunction(e){let t=0,n=0,r=this.functions.length-1;for(;n+1this.getEndX(t))n=t+1;else return t;for(let t=n;t<=r;t++)if(e>=this.functions[t][1]&&e<=this.getEndX(t))return t;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1({function:e.toJSON(),start:t}))}}static fromJSON(t){return new e(t.functions.map(e=>[be.fromJSON(e.function),e.start]))}clone(){return new e(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}};function q(e){switch(e.type){case`ConstantValue`:return K.fromJSON(e);case`IntervalValue`:return Pe.fromJSON(e);case`PiecewiseBezier`:return Ie.fromJSON(e);default:return new K(0)}}var Le=class e{constructor(){this.indexCount=0,this.type=`rotation`}startGen(e){this.indexCount=e.length,e.push(new I);let t,n,r,i,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,r=t*t+n*n;while(r>1);do i=Math.random()*2-1,a=Math.random()*2-1,o=i*i+a*a;while(o>1);let s=Math.sqrt((1-r)/o);e[this.indexCount].set(t,n,s*i,s*a)}genValue(e,t,n,r){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:`RandomQuat`}}static fromJSON(t){return new e}clone(){return new e}},Re=class e{constructor(e,t){this.axis=e,this.angle=t,this.type=`rotation`}startGen(e){this.angle.startGen(e)}genValue(e,t,n,r){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,r)*n)}toJSON(){return{type:`AxisAngle`,axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(t){return new e(new L(t.axis.x,t.axis.y,t.axis.z),q(t.angle))}clone(){return new e(this.axis.clone(),this.angle.clone())}},ze=class e{constructor(e,t,n,r){this.angleX=e,this.angleY=t,this.angleZ=n,this.type=`rotation`,this.eular=new _e(0,0,0,r)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,r){return this.eular.set(this.angleX.genValue(e,r)*n,this.angleY.genValue(e,r)*n,this.angleZ.genValue(e,r)*n),t.setFromEuler(this.eular)}toJSON(){return{type:`Euler`,angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(t){return new e(q(t.angleX),q(t.angleY),q(t.angleZ),t.eulerOrder)}clone(){return new e(this.angleX,this.angleY,this.angleZ,this.eular.order)}};function Be(e){switch(e.type){case`AxisAngle`:return Re.fromJSON(e);case`Euler`:return ze.fromJSON(e);case`RandomQuat`:return Le.fromJSON(e);default:return new Le}}var Ve=class e{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type=`vec3function`}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:`Vector3Function`,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(t){return new e(q(t.x),q(t.y),q(t.z))}clone(){return new e(this.x,this.y,this.z)}};function He(e){switch(e.type){case`Vector3Function`:return Ve.fromJSON(e);default:return new Ve(new K(0),new K(0),new K(0))}}function Ue(e){switch(e.type){case`ConstantValue`:case`IntervalValue`:case`PiecewiseBezier`:return q(e);case`AxisAngle`:case`RandomQuat`:case`Euler`:return Be(e);case`Vector3Function`:return He(e);default:return new K(0)}}var We=class e{constructor(e={}){this.type=`cone`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.angle=e.angle??Math.PI/6,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[]}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=se.lerp(1-this.thickness,1,Math.random()),i=n*this.arc,a=Math.sqrt(r),o=Math.sin(i),s=Math.cos(i);e.position.x=a*s,e.position.y=a*o,e.position.z=0;let c=this.angle*a;e.velocity.set(0,0,Math.cos(c)).addScaledVector(e.position,Math.sin(c)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:`cone`,radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,angle:t.angle,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},Ge=class e{constructor(e={}){this.type=`circle`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=se.lerp(1-this.thickness,1,Math.random()),i=n*this.arc;e.position.x=Math.cos(i),e.position.y=Math.sin(i),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*r)}toJSON(){return{type:`circle`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}};function Ke(e,t){return Math.floor(Math.random()*(t-e))+e}var qe=new L(0,1,0),Je=new L(0,0,0),Ye=new L(1,1,1),Xe=new L(0,0,1),Ze=class e{constructor(e={}){this.type=`donut`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.donutRadius=e.donutRadius??this.radius*.2,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=r*Math.PI*2,s=Math.sin(a),c=Math.cos(a);e.position.x=this.radius*c,e.position.y=this.radius*s,e.position.z=0,e.velocity.z=this.donutRadius*i*Math.sin(o),e.velocity.x=this.donutRadius*i*Math.cos(o)*c,e.velocity.y=this.donutRadius*i*Math.cos(o)*s,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof I&&(this._m1.lookAt(Je,e.velocity,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`donut`,radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,donutRadius:t.donutRadius,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},Qe=class e{constructor(){this.type=`point`,this._m1=new R}update(e,t){}initialize(e){let t=Math.random(),n=Math.random(),r=t*Math.PI*2,i=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(r),s=Math.cos(r),c=Math.sin(i),l=Math.cos(i);e.velocity.x=a*c*s,e.velocity.y=a*c*o,e.velocity.z=a*l,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`point`}}static fromJSON(t){return new e}clone(){return new e}},$e=class e{constructor(e={}){this.type=`sphere`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*r-1),s=Math.sin(a),c=Math.cos(a),l=Math.sin(o),u=Math.cos(o);e.position.x=l*c,e.position.y=l*s,e.position.z=u,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`sphere`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},et=class e{constructor(e={}){this.type=`sphere`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(r),s=Math.sin(a),c=Math.cos(a),l=Math.sin(o),u=Math.cos(o);e.position.x=l*c,e.position.y=l*s,e.position.z=u,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`hemisphere`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},tt=class e{constructor(e={}){this.type=`grid`,this.width=e.width??1,this.height=e.height??1,this.column=e.column??10,this.row=e.row??10}initialize(e){let t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:`grid`,width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(t){return new e(t)}clone(){return new e({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}},nt={circle:{type:`circle`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:Ge,loadJSON:Ge.fromJSON},cone:{type:`cone`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:We,loadJSON:We.fromJSON},donut:{type:`donut`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`donutRadius`,[`number`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:Ze,loadJSON:Ze.fromJSON},point:{type:`point`,params:[],constructor:Qe,loadJSON:Qe.fromJSON},sphere:{type:`sphere`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:$e,loadJSON:$e.fromJSON},hemisphere:{type:`hemisphere`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:et,loadJSON:et.fromJSON},grid:{type:`grid`,params:[[`width`,[`number`]],[`height`,[`number`]],[`rows`,[`number`]],[`column`,[`number`]]],constructor:tt,loadJSON:tt.fromJSON}};function rt(e,t){return nt[e.type].loadJSON(e,t)}var it=class e{constructor(e){this.color=e,this.type=`ColorOverLife`}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(t){return new e(Ne(t.color))}clone(){return new e(this.color.clone())}reset(){}},at=class e{constructor(e){this.angularVelocity=e,this.type=`RotationOverLife`}initialize(e){typeof e.rotation==`number`&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation==`number`&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(t){return new e(q(t.angularVelocity))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone())}reset(){}},ot=class e{constructor(e){this.angularVelocity=e,this.type=`Rotation3DOverLife`,this.tempQuat=new I,this.tempQuat2=new I}initialize(e){e.rotation instanceof I&&(e.angularVelocity=new I,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof I&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(t){return new e(Be(t.angularVelocity))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone())}reset(){}},st=class e{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type=`ForceOverLife`,this._temp=new L,this._tempScale=new L,this._tempQ=new I}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace||this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t)}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(t){return new e(q(t.x),q(t.y),q(t.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){let e=this._temp,t=this._tempQ,n=this._tempScale;this.ps.emitter.matrixWorld.decompose(e,t,n),t.invert(),n.set(1/n.x,1/n.y,1/n.z)}}clone(){return new e(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}},ct=class e{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type=`SizeOverLife`}update(e){this.size instanceof Ve?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(t){return new e(Ue(t.size))}frameUpdate(e){}clone(){return new e(this.size.clone())}reset(){}},lt=class e{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type=`SpeedOverLife`}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(t){return new e(q(t.speed))}frameUpdate(e){}clone(){return new e(this.speed.clone())}reset(){}},ut=class e{constructor(e){this.frame=e,this.type=`FrameOverLife`}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof Ie&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(t){return new e(q(t.frame))}clone(){return new e(this.frame.clone())}reset(){}},dt=class e{constructor(e,t=new L(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type=`OrbitOverLife`,this.temp=new L,this.rotation=new I}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(t){return new e(q(t.orbitSpeed),t.axis?new L(t.axis[0],t.axis[1],t.axis[2]):void 0)}clone(){return new e(this.orbitSpeed.clone())}reset(){}},ft=class{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}},pt=class{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){let e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){let e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){let t=new ft(e);this.tail||=t,this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){let t=new ft(e);this.head||=t,this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){let n=new ft(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}},mt=class{constructor(){this.startSpeed=0,this.startColor=new U,this.startSize=new L(1,1,1),this.position=new L,this.velocity=new L,this.age=0,this.life=1,this.size=new L(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new U,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}},ht=class{constructor(e,t,n){this.position=e,this.size=t,this.color=n}},gt=class{constructor(){this.startSpeed=0,this.startColor=new U,this.startSize=new L(1,1,1),this.position=new L,this.velocity=new L,this.age=0,this.life=1,this.size=new L(1,1,1),this.length=100,this.speedModifier=1,this.color=new U,this.previous=new pt,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new ht(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}},_t=class e{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type=`WidthOverLength`}update(e){if(e instanceof gt){let t=e.previous.values();for(let n=0;n=e.life)&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;let n=new R;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{let n=this.subEmissions[t];n.particle&&n.particle.agem?(h=1,g=0):(h=0,g=1);let _=p-h+wt,v=m-g+wt,y=p-1+2*wt,b=m-1+2*wt,x=c&255,S=l&255,C=.5-p*p-m*m;if(C>=0){let e=n[x+r[S]]*3;C*=C,i=C*C*(X[e]*p+X[e+1]*m)}let w=.5-_*_-v*v;if(w>=0){let e=n[x+h+r[S+g]]*3;w*=w,a=w*w*(X[e]*_+X[e+1]*v)}let T=.5-y*y-b*b;if(T>=0){let e=n[x+1+r[S+1]]*3;T*=T,o=T*T*(X[e]*y+X[e+1]*b)}return 70*(i+a+o)}noise3D(e,t,n){let r=this.permMod12,i=this.perm,a,o,s,c,l=(e+t+n)*Tt,u=Math.floor(e+l),d=Math.floor(t+l),f=Math.floor(n+l),p=(u+d+f)*J,m=u-p,h=d-p,g=f-p,_=e-m,v=t-h,y=n-g,b,x,S,C,w,T;_>=v?v>=y?(b=1,x=0,S=0,C=1,w=1,T=0):_>=y?(b=1,x=0,S=0,C=1,w=0,T=1):(b=0,x=0,S=1,C=1,w=0,T=1):vx?w++:T++,b>S?w++:E++,b>C?w++:D++,x>S?T++:E++,x>C?T++:D++,S>C?E++:D++;let O=+(w>=3),ee=+(T>=3),k=+(E>=3),A=+(D>=3),j=+(w>=2),M=+(T>=2),N=+(E>=2),P=+(D>=2),F=+(w>=1),te=+(T>=1),ne=+(E>=1),re=+(D>=1),ie=b-O+Y,ae=x-ee+Y,oe=S-k+Y,se=C-A+Y,I=b-j+2*Y,L=x-M+2*Y,ce=S-N+2*Y,le=C-P+2*Y,ue=b-F+3*Y,R=x-te+3*Y,de=S-ne+3*Y,z=C-re+3*Y,fe=b-1+4*Y,pe=x-1+4*Y,B=S-1+4*Y,me=C-1+4*Y,V=d&255,he=f&255,ge=p&255,_e=m&255,H=.6-b*b-x*x-S*S-C*C;if(H<0)a=0;else{let e=i[V+i[he+i[ge+i[_e]]]]%32*4;H*=H,a=H*H*(Z[e]*b+Z[e+1]*x+Z[e+2]*S+Z[e+3]*C)}let U=.6-ie*ie-ae*ae-oe*oe-se*se;if(U<0)o=0;else{let e=i[V+O+i[he+ee+i[ge+k+i[_e+A]]]]%32*4;U*=U,o=U*U*(Z[e]*ie+Z[e+1]*ae+Z[e+2]*oe+Z[e+3]*se)}let W=.6-I*I-L*L-ce*ce-le*le;if(W<0)s=0;else{let e=i[V+j+i[he+M+i[ge+N+i[_e+P]]]]%32*4;W*=W,s=W*W*(Z[e]*I+Z[e+1]*L+Z[e+2]*ce+Z[e+3]*le)}let ve=.6-ue*ue-R*R-de*de-z*z;if(ve<0)c=0;else{let e=i[V+F+i[he+te+i[ge+ne+i[_e+re]]]]%32*4;ve*=ve,c=ve*ve*(Z[e]*ue+Z[e+1]*R+Z[e+2]*de+Z[e+3]*z)}let G=.6-fe*fe-pe*pe-B*B-me*me;if(G<0)l=0;else{let e=i[V+1+i[he+1+i[ge+1+i[_e+1]]]]%32*4;G*=G,l=G*G*(Z[e]*fe+Z[e+1]*pe+Z[e+2]*B+Z[e+3]*me)}return 27*(a+o+s+c+l)}};function Ot(e){let t=new Uint8Array(256);for(let e=0;e<256;e++)t[e]=e;for(let n=0;n<255;n++){let r=n+~~(e()*(256-n)),i=t[n];t[n]=t[r],t[r]=i}return t}function kt(e){let t=0,n=0,r=0,i=1,a=At();return t=a(` `),n=a(` `),r=a(` `),t-=a(e),t<0&&(t+=1),n-=a(e),n<0&&(n+=1),r-=a(e),r<0&&(r+=1),function(){let e=2091639*t+i*23283064365386963e-26;return t=n,n=r,r=e-(i=e|0)}}function At(){let e=4022871197;return function(t){t=t.toString();for(let n=0;n>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}var jt=class e{constructor(e,t,n,r){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=r,this.type=`TurbulenceField`,this.generator=new Dt,this.timeOffset=new L,this.temp=new L,this.temp2=new L,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){let n=e.position.x/this.scale.x,r=e.position.y/this.scale.y,i=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let e=0;e0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),Mt.set(Q[e.generatorIndex[0]].noise2D(0,e.age*n)*r*i,Q[e.generatorIndex[1]].noise2D(0,e.age*n)*r*i,Q[e.generatorIndex[2]].noise2D(0,e.age*n)*r*i),e.position.add(Mt),e.lastPosNoise.copy(Mt)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation==`number`?(e.rotation-=e.lastRotNoise,e.rotation+=Q[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*r*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),Nt.set(Q[e.generatorIndex[0]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[1]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[2]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[3]].noise2D(0,e.age*n)*r*a).normalize(),e.rotation.multiply(Nt),e.lastRotNoise.copy(Nt)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(t){return new e(q(t.frequency),q(t.power),q(t.positionAmount),q(t.rotationAmount))}clone(){return new e(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}},Ft=class e{constructor(e=0,t=0,n=new L){this.scaleX=e,this.scaleY=t,this.position=n,this.locations=[]}transform(e,t){e.x=this.locations[t%this.locations.length].x*this.scaleX+this.position.x,e.y=this.locations[t%this.locations.length].y*this.scaleY+this.position.y,e.z=this.position.z}static fromJSON(t){let n=new e(t.scaleX,t.scaleY,new L(t.position[0],t.position[1],t.position[2]));return n.locations=t.locations.map(e=>new H(e.x,e.y)),n}clone(){let t=new e(this.scaleX,this.scaleY,this.position.clone());return t.locations=this.locations.map(e=>e.clone()),t}toJSON(){return{scaleX:this.scaleX,scaleY:this.scaleY,position:this.position,locations:this.locations.map(e=>({x:e.x,y:e.y}))}}fromImage(e,t){let n=document.createElement(`canvas`);n.width=e.width,n.height=e.height;let r=n.getContext(`2d`);if(!r)return;r.drawImage(e,0,0);let i=r.getImageData(0,0,n.width,n.height,{colorSpace:`srgb`});n.remove(),this.locations.length=0;for(let e=0;et&&this.locations.push(new H(n,i.height-e))}};function It(e){switch(e.type){case`TextureSequencer`:return Ft.fromJSON(e);default:return new Ft}}var Lt=class e{constructor(e){this.type=`ApplySequences`,this.sequencers=[],this.time=0,this.index=0,this.pCount=0,this.tempV=new L,this.delay=e}initialize(e){e.id=this.pCount,e.dst=new L,e.begin=new L,e.inMotion=!1,this.pCount++}reset(){this.time=0,this.index=0,this.pCount=0}update(t,n){let r=this.sequencers[this.index],i=t.id*this.delay;this.time>=r[0].a+i&&this.time<=r[0].b+i?(t.inMotion||(t.inMotion=!0,t.begin.copy(t.position),r[1].transform(t.dst,t.id)),t.position.lerpVectors(t.begin,t.dst,e.BEZIER.genValue((this.time-r[0].a-i)/(r[0].b-r[0].a)))):this.time>r[0].b+i&&(t.inMotion=!1)}frameUpdate(e){for(;this.index+1=this.sequencers[this.index+1][0].a;)this.index++;this.time+=e}appendSequencer(e,t){this.sequencers.push([e,t])}toJSON(){return{type:this.type,delay:this.delay,sequencers:this.sequencers.map(([e,t])=>({range:e.toJSON(),sequencer:t.toJSON()}))}}static fromJSON(t){let n=new e(t.delay);return t.sequencers.forEach(e=>{n.sequencers.push([q(e.range),It(e.sequencer)])}),n}clone(){let t=new e(this.delay);return t.sequencers=this.sequencers.map(e=>[e[0].clone(),e[1].clone()]),t}};Lt.BEZIER=new be(0,0,1,1);var Rt=class e{constructor(e,t){this.color=e,this.speedRange=t,this.type=`ColorBySpeed`}initialize(e){this.color.startGen(e.memory)}update(e,t){let n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(Ne(t.color),Pe.fromJSON(t.speedRange))}clone(){return new e(this.color.clone(),this.speedRange.clone())}reset(){}},zt=class e{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type=`SizeBySpeed`}update(e){let t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof Ve?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(Ue(t.size),Pe.fromJSON(t.speedRange))}frameUpdate(e){}clone(){return new e(this.size.clone(),this.speedRange.clone())}reset(){}},Bt=class e{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type=`RotationBySpeed`,this.tempQuat=new I}initialize(e){typeof e.rotation==`number`&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation==`number`){let n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(q(t.angularVelocity),Pe.fromJSON(t.speedRange))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}},Vt=class e{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type=`LimitSpeedOverLife`}update(e,t){let n=e.velocity.length(),r=this.speed.genValue(e.memory,e.age/e.life);if(n>r){let i=(n-r)/n;e.velocity.multiplyScalar(1-i*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(t){return new e(q(t.speed),t.dampen)}frameUpdate(e){}clone(){return new e(this.speed.clone(),this.dampen)}reset(){}},Ht={ApplyForce:{type:`ApplyForce`,constructor:vt,params:[[`direction`,[`vec3`]],[`magnitude`,[`value`]]],loadJSON:vt.fromJSON},Noise:{type:`Noise`,constructor:Pt,params:[[`frequency`,[`value`]],[`power`,[`value`]],[`positionAmount`,[`value`]],[`rotationAmount`,[`value`]]],loadJSON:Pt.fromJSON},TurbulenceField:{type:`TurbulenceField`,constructor:jt,params:[[`scale`,[`vec3`]],[`octaves`,[`number`]],[`velocityMultiplier`,[`vec3`]],[`timeScale`,[`vec3`]]],loadJSON:jt.fromJSON},GravityForce:{type:`GravityForce`,constructor:yt,params:[[`center`,[`vec3`]],[`magnitude`,[`number`]]],loadJSON:yt.fromJSON},ColorOverLife:{type:`ColorOverLife`,constructor:it,params:[[`color`,[`colorFunc`]]],loadJSON:it.fromJSON},RotationOverLife:{type:`RotationOverLife`,constructor:at,params:[[`angularVelocity`,[`value`,`valueFunc`]]],loadJSON:at.fromJSON},Rotation3DOverLife:{type:`Rotation3DOverLife`,constructor:ot,params:[[`angularVelocity`,[`rotationFunc`]]],loadJSON:ot.fromJSON},SizeOverLife:{type:`SizeOverLife`,constructor:ct,params:[[`size`,[`value`,`valueFunc`,`vec3Func`]]],loadJSON:ct.fromJSON},ColorBySpeed:{type:`ColorBySpeed`,constructor:Rt,params:[[`color`,[`colorFunc`]],[`speedRange`,[`range`]]],loadJSON:Rt.fromJSON},RotationBySpeed:{type:`RotationBySpeed`,constructor:Bt,params:[[`angularVelocity`,[`value`,`valueFunc`]],[`speedRange`,[`range`]]],loadJSON:Bt.fromJSON},SizeBySpeed:{type:`SizeBySpeed`,constructor:zt,params:[[`size`,[`value`,`valueFunc`,`vec3Func`]],[`speedRange`,[`range`]]],loadJSON:zt.fromJSON},SpeedOverLife:{type:`SpeedOverLife`,constructor:lt,params:[[`speed`,[`value`,`valueFunc`]]],loadJSON:lt.fromJSON},FrameOverLife:{type:`FrameOverLife`,constructor:ut,params:[[`frame`,[`value`,`valueFunc`]]],loadJSON:ut.fromJSON},ForceOverLife:{type:`ForceOverLife`,constructor:st,params:[[`x`,[`value`,`valueFunc`]],[`y`,[`value`,`valueFunc`]],[`z`,[`value`,`valueFunc`]]],loadJSON:st.fromJSON},OrbitOverLife:{type:`OrbitOverLife`,constructor:dt,params:[[`orbitSpeed`,[`value`,`valueFunc`]],[`axis`,[`vec3`]]],loadJSON:dt.fromJSON},WidthOverLength:{type:`WidthOverLength`,constructor:_t,params:[[`width`,[`value`,`valueFunc`]]],loadJSON:_t.fromJSON},ChangeEmitDirection:{type:`ChangeEmitDirection`,constructor:bt,params:[[`angle`,[`value`]]],loadJSON:bt.fromJSON},EmitSubParticleSystem:{type:`EmitSubParticleSystem`,constructor:St,params:[[`particleSystem`,[`self`]],[`useVelocityAsBasis`,[`boolean`]],[`subParticleSystem`,[`particleSystem`]],[`mode`,[`number`]],[`emitProbability`,[`number`]]],loadJSON:St.fromJSON},LimitSpeedOverLife:{type:`LimitSpeedOverLife`,constructor:Vt,params:[[`speed`,[`value`,`valueFunc`]],[`dampen`,[`number`]]],loadJSON:Vt.fromJSON}};function Ut(e,t){return Ht[e.type]?Ht[e.type].loadJSON(e,t):null}var Wt=[];function Gt(e){if(!Wt.find(t=>t.id===e.id)){e.initialize();for(let t of e.emitterShapes)nt[t.type]||(nt[t.type]=t);for(let t of e.behaviors)Ht[t.type]||(Ht[t.type]=t)}}var Kt=` +#ifdef SOFT_PARTICLES + + /* #ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far); + #endif */ + + vec2 p2 = projPosition.xy / projPosition.w; + + p2 = 0.5 * p2 + 0.5; + + float readDepth = texture2D(depthTexture, p2.xy).r; + float viewDepth = linearize_depth(readDepth); + + float softParticlesFade = saturate(SOFT_INV_FADE_DISTANCE * ((viewDepth - SOFT_NEAR_FADE) - linearDepth)); + + gl_FragColor *= softParticlesFade; + + //gl_FragColor = vec4(softParticlesFade , 0, 0, 1); +#endif +`,qt=` +#ifdef SOFT_PARTICLES + + uniform sampler2D depthTexture; + uniform vec4 projParams; + uniform vec2 softParams; + + varying vec4 projPosition; + varying float linearDepth; + + #define SOFT_NEAR_FADE softParams.x + #define SOFT_INV_FADE_DISTANCE softParams.y + + #define zNear projParams.x + #define zFar projParams.y + + float linearize_depth(float d) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + +#endif +`,Jt=` +#ifdef SOFT_PARTICLES + varying vec4 projPosition; + varying float linearDepth; +#endif +`,Yt=` +#ifdef SOFT_PARTICLES + projPosition = gl_Position; + linearDepth = -mvPosition.z; +#endif +`,Xt=` +#ifdef USE_MAP + vec4 texelColor = texture2D( map, vUv); + #ifdef TILE_BLEND + texelColor = mix( texelColor, texture2D( map, vUvNext ), vUvBlend ); + #endif + diffuseColor *= texelColor; +#endif +`,Zt=` +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + + varying vec2 vUv; +#ifdef TILE_BLEND + varying vec2 vUvNext; + varying float vUvBlend; +#endif + +#endif +#ifdef USE_MAP + + uniform mat3 mapTransform; + varying vec2 vMapUv; +#ifdef TILE_BLEND + varying vec2 vMapUvNext; +#endif + +#endif +#ifdef USE_ALPHAMAP + + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; + +#endif +#ifdef USE_LIGHTMAP + + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; + +#endif +#ifdef USE_AOMAP + + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; + +#endif +#ifdef USE_BUMPMAP + + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; + +#endif +#ifdef USE_NORMALMAP + + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; + +#endif +#ifdef USE_DISPLACEMENTMAP + + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; + +#endif +#ifdef USE_EMISSIVEMAP + + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; + +#endif +#ifdef USE_METALNESSMAP + + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; + +#endif +#ifdef USE_ROUGHNESSMAP + + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; + +#endif +#ifdef USE_ANISOTROPYMAP + + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; + +#endif +#ifdef USE_CLEARCOATMAP + + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; + +#endif +#ifdef USE_SHEEN_COLORMAP + + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; + +#endif +#ifdef USE_IRIDESCENCEMAP + + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; + +#endif +#ifdef USE_SPECULARMAP + + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; + +#endif +#ifdef USE_SPECULAR_COLORMAP + + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; + +#endif +#ifdef USE_TRANSMISSIONMAP + + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; + +#endif +#ifdef USE_THICKNESSMAP + + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; + +#endif +`,Qt=` +#ifdef UV_TILE + attribute float uvTile; + uniform vec2 tileCount; + + mat3 makeTileTransform(float uvTile) { + float col = mod(uvTile, tileCount.x); + float row = (tileCount.y - floor(uvTile / tileCount.x) - 1.0); + + return mat3( + 1.0 / tileCount.x, 0.0, 0.0, + 0.0, 1.0 / tileCount.y, 0.0, + col / tileCount.x, row / tileCount.y, 1.0); + } +#else + mat3 makeTileTransform(float uvTile) { + return mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + + varying vec2 vUv; +#ifdef TILE_BLEND + varying vec2 vUvNext; + varying float vUvBlend; +#endif + +#endif +#ifdef USE_MAP + + uniform mat3 mapTransform; + varying vec2 vMapUv; +#ifdef TILE_BLEND + varying vec2 vMapUvNext; +#endif + +#endif +#ifdef USE_ALPHAMAP + + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; + +#endif +#ifdef USE_LIGHTMAP + + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; + +#endif +#ifdef USE_AOMAP + + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; + +#endif +#ifdef USE_BUMPMAP + + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; + +#endif +#ifdef USE_NORMALMAP + + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; + +#endif +#ifdef USE_DISPLACEMENTMAP + + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; + +#endif +#ifdef USE_EMISSIVEMAP + + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; + +#endif +#ifdef USE_METALNESSMAP + + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; + +#endif +#ifdef USE_ROUGHNESSMAP + + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; + +#endif +#ifdef USE_ANISOTROPYMAP + + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; + +#endif +#ifdef USE_CLEARCOATMAP + + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; + +#endif +#ifdef USE_SHEEN_COLORMAP + + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; + +#endif +#ifdef USE_IRIDESCENCEMAP + + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; + +#endif +#ifdef USE_SPECULARMAP + + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; + +#endif +#ifdef USE_SPECULAR_COLORMAP + + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; + +#endif +#ifdef USE_TRANSMISSIONMAP + + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; + +#endif +#ifdef USE_THICKNESSMAP + + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; + +#endif +`,$t=` +#ifdef UV_TILE + mat3 tileTransform = makeTileTransform(floor(uvTile)); + #ifdef TILE_BLEND + mat3 nextTileTransform = makeTileTransform(ceil(uvTile)); + vUvBlend = fract(uvTile); + #endif +#else + mat3 tileTransform = makeTileTransform(0.0); +#endif + +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + +vUv = (tileTransform *vec3( uv, 1 )).xy; +#if defined( TILE_BLEND ) && defined( UV_TILE ) + vUvNext = (nextTileTransform *vec3( uv, 1 )).xy; +#endif + +#endif +#ifdef USE_MAP + +vMapUv = ( tileTransform * (mapTransform * vec3( MAP_UV, 1 ) )).xy; +#if defined( TILE_BLEND ) && defined( UV_TILE ) + vMapUvNext = (nextTileTransform * (mapTransform * vec3( MAP_UV, 1 ))).xy; +#endif + +#endif +#ifdef USE_ALPHAMAP + +vAlphaMapUv = ( tileTransform * (alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_LIGHTMAP + +vLightMapUv = ( tileTransform * (lightMapTransform * vec3( LIGHTMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_AOMAP + +vAoMapUv = ( tileTransform * (aoMapTransform * vec3( AOMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_BUMPMAP + +vBumpMapUv = ( tileTransform * (bumpMapTransform * vec3( BUMPMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_NORMALMAP + +vNormalMapUv = ( tileTransform * (normalMapTransform * vec3( NORMALMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_DISPLACEMENTMAP + +vDisplacementMapUv = ( tileTransform * (displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_EMISSIVEMAP + +vEmissiveMapUv = ( tileTransform * (emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_METALNESSMAP + +vMetalnessMapUv = ( tileTransform * (metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_ROUGHNESSMAP + +vRoughnessMapUv = ( tileTransform * (roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_ANISOTROPYMAP + +vAnisotropyMapUv = ( tileTransform * (anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOATMAP + +vClearcoatMapUv = ( tileTransform * (clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + +vClearcoatNormalMapUv = ( tileTransform * (clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + +vClearcoatRoughnessMapUv = ( tileTransform * (clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_IRIDESCENCEMAP + +vIridescenceMapUv = ( tileTransform * (iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + +vIridescenceThicknessMapUv = ( tileTransform * (iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SHEEN_COLORMAP + +vSheenColorMapUv = ( tileTransform * (sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + +vSheenRoughnessMapUv = ( tileTransform * (sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULARMAP + +vSpecularMapUv = ( tileTransform * (specularMapTransform * vec3( SPECULARMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULAR_COLORMAP + +vSpecularColorMapUv = ( tileTransform * (specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + +vSpecularIntensityMapUv = ( tileTransform * (specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_TRANSMISSIONMAP + +vTransmissionMapUv = ( tileTransform * transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_THICKNESSMAP + +vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) )).xy; + +#endif + +`,en=t;function tn(){en.tile_pars_vertex=Qt,en.tile_vertex=$t,en.tile_pars_fragment=Zt,en.tile_fragment=Xt,en.soft_pars_vertex=Jt,en.soft_vertex=Yt,en.soft_pars_fragment=qt,en.soft_fragment=Kt}var nn=class extends c{constructor(e){super(),this.type=`ParticleEmitter`,this.system=e}clone(){let e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}toJSON(e,t={}){let n=this.children;this.children=this.children.filter(e=>e.type!==`ParticleSystemPreview`);let r=super.toJSON(e);return this.children=n,this.system!==null&&(r.object.ps=this.system.toJSON(e,t)),r}},$;(function(e){e[e.BillBoard=0]=`BillBoard`,e[e.StretchedBillBoard=1]=`StretchedBillBoard`,e[e.Mesh=2]=`Mesh`,e[e.Trail=3]=`Trail`,e[e.HorizontalBillBoard=4]=`HorizontalBillBoard`,e[e.VerticalBillBoard=5]=`VerticalBillBoard`})($||={});var rn=class extends o{constructor(e){super(),this.type=`VFXBatch`,this.maxParticles=1e3,this.systems=new Set;let t=new r;t.mask=e.layers.mask;let n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){let t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}},an=new L(0,0,1),on=new I,sn=new L,cn=new L;new L;var ln=60,un=new f(1,1,1,1),dn=class e{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=$.Trail&&e===$.Trail||this.rendererSettings.renderMode==$.Trail&&e!==$.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case $.Trail:this.rendererEmitterSettings={startLength:new K(30),followLocalOrigin:!1};break;case $.Mesh:this.rendererEmitterSettings={geometry:new f(1,1)},this.startRotation=new Re(new L(0,1,0),new K(0));break;case $.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===$.Mesh&&(this.startRotation=new K(0));break;case $.BillBoard:case $.VerticalBillBoard:case $.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===$.Mesh&&(this.startRotation=new K(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){if(this.temp=new L,this.travelDistance=0,this.normalMatrix=new W,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=e.duration??1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=e.startLife??new K(5),this.startSpeed=e.startSpeed??new K(0),this.startRotation=e.startRotation??new K(0),this.startSize=e.startSize??new K(1),this.startColor=e.startColor??new Me(new U(1,1,1,1)),this.emissionOverTime=e.emissionOverTime??new K(10),this.emissionOverDistance=e.emissionOverDistance??new K(0),this.emissionBursts=e.emissionBursts??[],this.onlyUsedByOther=e.onlyUsedByOther??!1,this.emitterShape=e.shape??new $e,this.behaviors=e.behaviors??[],this.worldSpace=e.worldSpace??!1,this.rendererEmitterSettings=e.rendererEmitterSettings??{},e.renderMode===$.StretchedBillBoard){let t=this.rendererEmitterSettings;e.speedFactor!==void 0&&(t.speedFactor=e.speedFactor),t.speedFactor=t.speedFactor??0,t.lengthFactor=t.lengthFactor??0}this.rendererSettings={instancingGeometry:e.instancingGeometry??un,renderMode:e.renderMode??$.BillBoard,renderOrder:e.renderOrder??0,material:e.material,uTileCount:e.uTileCount??1,vTileCount:e.vTileCount??1,blendTiles:e.blendTiles??!1,softParticles:e.softParticles??!1,softNearFade:e.softNearFade??0,softFarFade:e.softFarFade??0,layers:e.layers??new r},this.neededToUpdateRender=!0,this.particles=[],this.startTileIndex=e.startTileIndex||new K(0),this.emitter=new nn(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){on.setFromRotationMatrix(n);let r=sn,i=on,a=cn;n.decompose(r,i,a);for(let r=0;r{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!==`Scene`){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let e=0;e.1&&(e=.1),this.neededToUpdateRender&&=(this._renderer&&this._renderer.updateSystem(this),!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let t=0;tthis.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(e=>{e.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);let r=Math.ceil(t.waitEmiting);for(this.spawn(r,t,n),t.waitEmiting-=r;t.burstIndex0){let n=Math.floor(t.travelDistance*e);t.travelDistance-=n/e,t.waitEmiting+=n}}t.previousWorldPos===void 0&&(t.previousWorldPos=new L),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){if((e===void 0||typeof e==`string`)&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&this.texture?.source!==void 0){let t=this.texture.source;e.images[t.uuid]={uuid:t.uuid,url:this.texture.image.url}}let n;n=this.renderMode===$.Trail?{startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===$.Mesh?{}:this.renderMode===$.StretchedBillBoard?{speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:{};let r=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[r.uuid]&&(e.geometries[r.uuid]=r.toJSON()),{version:`3.0`,autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(e=>({time:e.time,count:e.count.toJSON(),probability:e.probability,interval:e.interval,cycle:e.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:n,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(e=>e.toJSON()),worldSpace:this.worldSpace}}static fromJSON(t,n,a){let o=rt(t.shape,n),s;if(t.renderMode===$.Trail){let e=t.rendererEmitterSettings;s={startLength:e.startLength==null?new K(30):q(e.startLength),followLocalOrigin:e.followLocalOrigin}}else t.renderMode===$.Mesh?s={}:t.renderMode===$.StretchedBillBoard?(s=t.rendererEmitterSettings,t.speedFactor!=null&&(s.speedFactor=t.speedFactor)):s={};let c=new r;t.layers&&(c.mask=t.layers);let l=new e({autoDestroy:t.autoDestroy,looping:t.looping,prewarm:t.prewarm,duration:t.duration,shape:o,startLife:q(t.startLife),startSpeed:q(t.startSpeed),startRotation:Ue(t.startRotation),startSize:Ue(t.startSize),startColor:Ne(t.startColor),emissionOverTime:q(t.emissionOverTime),emissionOverDistance:q(t.emissionOverDistance),emissionBursts:t.emissionBursts?.map(e=>({time:e.time,count:typeof e.count==`number`?new K(e.count):q(e.count),probability:e.probability??1,interval:e.interval??.1,cycle:e.cycle??1})),onlyUsedByOther:t.onlyUsedByOther,instancingGeometry:n.geometries[t.instancingGeometry],renderMode:t.renderMode,rendererEmitterSettings:s,renderOrder:t.renderOrder,layers:c,material:t.material?n.materials[t.material]:t.texture?new i({map:n.textures[t.texture],transparent:t.transparent??!0,blending:t.blending,side:2}):new i({color:16777215,transparent:!0,blending:2,side:2}),startTileIndex:typeof t.startTileIndex==`number`?new K(t.startTileIndex):q(t.startTileIndex),uTileCount:t.uTileCount,vTileCount:t.vTileCount,blendTiles:t.blendTiles,softParticles:t.softParticles,softFarFade:t.softFarFade,softNearFade:t.softNearFade,behaviors:[],worldSpace:t.worldSpace});return l.behaviors=t.behaviors.map(e=>{let t=Ut(e,l);return t.type===`EmitSubParticleSystem`&&(a[e.subParticleSystem]=t),t}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){let n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){let t=[];for(let e of this.emissionBursts){let n={};Object.assign(n,e),t.push(n)}let n=[];for(let e of this.behaviors)n.push(e.clone());let i;i=this.renderMode===$.Trail?{startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===$.StretchedBillBoard?{lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:{};let a=new r;return a.mask=this.layers.mask,new e({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:t,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:i,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:n,worldSpace:this.worldSpace,layers:a})}},fn=` + +#include +#include +#include +#include +#include +#include + +#include +#include + +void main() { + + #include + + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vColor; + + #include + + #include + #include + + outgoingLight = diffuseColor.rgb; + + #ifdef USE_COLOR_AS_ALPHA + gl_FragColor = vec4( outgoingLight, diffuseColor.r ); + #else + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #endif + + #include + #include +} +`,pn=` +#define STANDARD + +#ifdef PHYSICAL +#define IOR +#define USE_SPECULAR +#endif + +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; + +#ifdef IOR +uniform float ior; +#endif + +#ifdef USE_SPECULAR +uniform float specularIntensity; +uniform vec3 specularColor; + +#ifdef USE_SPECULAR_COLORMAP +uniform sampler2D specularColorMap; +#endif + +#ifdef USE_SPECULAR_INTENSITYMAP +uniform sampler2D specularIntensityMap; +#endif +#endif + +#ifdef USE_CLEARCOAT +uniform float clearcoat; +uniform float clearcoatRoughness; +#endif + +#ifdef USE_DISPERSION +uniform float dispersion; +#endif + +#ifdef USE_IRIDESCENCE +uniform float iridescence; +uniform float iridescenceIOR; +uniform float iridescenceThicknessMinimum; +uniform float iridescenceThicknessMaximum; +#endif + +#ifdef USE_SHEEN +uniform vec3 sheenColor; +uniform float sheenRoughness; + +#ifdef USE_SHEEN_COLORMAP +uniform sampler2D sheenColorMap; +#endif + +#ifdef USE_SHEEN_ROUGHNESSMAP +uniform sampler2D sheenRoughnessMap; +#endif +#endif + +#ifdef USE_ANISOTROPY +uniform vec2 anisotropyVector; + +#ifdef USE_ANISOTROPYMAP +uniform sampler2D anisotropyMap; +#endif +#endif + +varying vec3 vViewPosition; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void main() { + +vec4 diffuseColor = vec4( diffuse, opacity ); +#include + +ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); +vec3 totalEmissiveRadiance = emissive; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// accumulation +#include +#include +#include +#include + +// modulation +#include + +vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; +vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + +#include + +vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + +#ifdef USE_SHEEN + +// Sheen energy compensation approximation calculation can be found at the end of +// https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing +float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + +outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + +#endif + +#ifdef USE_CLEARCOAT + +float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + +vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + +outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + +#endif + +#include +#include +#include +#include +#include +#include +}`,mn=` +#include +#include +#include +#include + +#include +#include + +attribute vec3 offset; +attribute float rotation; +attribute vec3 size; + +void main() { + + vec2 alignedPosition = position.xy * size.xy; + + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; +#ifdef HORIZONTAL + vec4 mvPosition = modelMatrix * vec4( offset, 1.0 ); + mvPosition.x += rotatedPosition.x; + mvPosition.z -= rotatedPosition.y; + mvPosition = viewMatrix * mvPosition; +#elif defined(VERTICAL) + vec4 mvPosition = modelMatrix * vec4( offset, 1.0 ); + mvPosition.y += rotatedPosition.y; + mvPosition = viewMatrix * mvPosition; + mvPosition.x += rotatedPosition.x; +#else + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + mvPosition.xy += rotatedPosition; +#endif + + vColor = color; + + gl_Position = projectionMatrix * mvPosition; + + #include + + #include + + #include + #include +} +`,hn=` +#include +#include +#include +#include +#include +#include + +attribute vec3 offset; +attribute vec4 rotation; +attribute vec3 size; +// attribute vec4 color; + +void main() { + + float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z; + float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2; + float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2; + float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2; + float sx = size.x, sy = size.y, sz = size.z; + + mat4 matrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column + ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column + ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column + offset.x, offset.y, offset.z, 1.0); + + vec4 mvPosition = modelViewMatrix * (matrix * vec4( position, 1.0 )); + + vColor = color; + + gl_Position = projectionMatrix * mvPosition; + + #include + #include + #include + #include +} +`,gn=` +#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include + +attribute vec3 offset; +attribute vec4 rotation; +attribute vec3 size; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void main() { + + #include + float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z; + float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2; + float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2; + float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2; + float sx = size.x, sy = size.y, sz = size.z; + + mat4 particleMatrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column + ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column + ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column + offset.x, offset.y, offset.z, 1.0); + +#include +#include +#include +#include + +#include +#include +#include +#include + + // replace defaultnormal_vertex + vec3 transformedNormal = objectNormal; + mat3 m = mat3( particleMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; + transformedNormal = normalMatrix * transformedNormal; + #ifdef FLIP_SIDED + transformedNormal = - transformedNormal; + #endif + #ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif + #endif + + #include + #include + #include + #include + #include + + // replace include + vec4 mvPosition = vec4( transformed, 1.0 ); + mvPosition = modelViewMatrix * (particleMatrix * mvPosition); + gl_Position = projectionMatrix * mvPosition; + + #include + #include + + vViewPosition = - mvPosition.xyz; + + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +} +`,_n=` +#include +#include +#include +#include + +#include +#include + +attribute vec3 offset; +attribute float rotation; +attribute vec3 size; +attribute vec4 velocity; + +uniform float speedFactor; + +void main() { + float lengthFactor = velocity.w; + float avgSize = (size.x + size.y) * 0.5; +#ifdef USE_SKEW + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + vec3 viewVelocity = normalMatrix * velocity.xyz; + + vec3 scaledPos = vec3(position.xy * size.xy, position.z); + float vlength = length(viewVelocity); + vec3 projVelocity = dot(scaledPos, viewVelocity) * viewVelocity / vlength; + mvPosition.xyz += scaledPos + projVelocity * (speedFactor / avgSize + lengthFactor / vlength); +#else + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + vec3 viewVelocity = normalMatrix * velocity.xyz; + float vlength = length(viewVelocity); + mvPosition.xyz += position.y * normalize(cross(mvPosition.xyz, viewVelocity)) * avgSize; // switch the cross to match unity implementation + mvPosition.xyz -= (position.x + 0.5) * viewVelocity * (1.0 + lengthFactor / vlength) * avgSize; // minus position.x to match unity implementation +#endif + vColor = color; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include + #include +} +`;function vn(e){return e===0?`uv`:`uv${e}`}var yn=class extends l{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=gn,e.fragmentShader=pn}},bn=class extends u{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=gn,e.fragmentShader=pn}},xn=class extends rn{constructor(e){super(e),this.vector_=new L,this.vector2_=new L,this.vector3_=new L,this.quaternion_=new I,this.quaternion2_=new I,this.quaternion3_=new I,this.rotationMat_=new W,this.rotationMat2_=new W,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new s(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(e),this.geometry.setAttribute(`offset`,this.offsetBuffer),this.colorBuffer=new s(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(e),this.geometry.setAttribute(`color`,this.colorBuffer),this.settings.renderMode===$.Mesh?(this.rotationBuffer=new s(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(e),this.geometry.setAttribute(`rotation`,this.rotationBuffer)):(this.settings.renderMode===$.BillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.StretchedBillBoard)&&(this.rotationBuffer=new s(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(e),this.geometry.setAttribute(`rotation`,this.rotationBuffer)),this.sizeBuffer=new s(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(e),this.geometry.setAttribute(`size`,this.sizeBuffer),this.uvTileBuffer=new s(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(e),this.geometry.setAttribute(`uvTile`,this.uvTileBuffer),this.settings.renderMode===$.StretchedBillBoard&&(this.velocityBuffer=new s(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(e),this.geometry.setAttribute(`velocity`,this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new p,this.geometry.setIndex(this.settings.instancingGeometry.getIndex()),this.settings.instancingGeometry.hasAttribute(`normal`)&&this.geometry.setAttribute(`normal`,this.settings.instancingGeometry.getAttribute(`normal`)),this.geometry.setAttribute(`position`,this.settings.instancingGeometry.getAttribute(`position`)),this.geometry.setAttribute(`uv`,this.settings.instancingGeometry.getAttribute(`uv`)),this.buildExpandableBuffers()}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;let e={},t={};this.settings.material.type!==`MeshStandardMaterial`&&this.settings.material.type!==`MeshPhysicalMaterial`&&(e.map=new h(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST=``,e.alphaTest=new h(this.settings.material.alphaTest)),t.USE_UV=``;let n=this.settings.uTileCount,r=this.settings.vTileCount;(n>1||r>1)&&(t.UV_TILE=``,e.tileCount=new h(new H(n,r))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=``),this.settings.material.normalMap&&(t.USE_NORMALMAP=``,t.NORMALMAP_UV=vn(this.settings.material.normalMap.channel),e.normalMapTransform=new h(new W().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP=``,this.settings.blendTiles&&(t.TILE_BLEND=``),t.MAP_UV=vn(this.settings.material.map.channel),e.mapTransform=new h(new W().copy(this.settings.material.map.matrix))),t.USE_COLOR_ALPHA=``;let i;if(this.settings.softParticles){t.SOFT_PARTICLES=``;let n=this.settings.softNearFade;e.softParams=new h(new H(n,1/(this.settings.softFarFade-this.settings.softNearFade))),e.depthTexture=new h(null);let r=e.projParams=new h(new U);i=(e,t,n)=>{r.value.set(n.near,n.far,0,0)}}let a=!1;if(this.settings.renderMode===$.BillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.Mesh){let n,r;this.settings.renderMode===$.Mesh?this.settings.material.type===`MeshStandardMaterial`||this.settings.material.type===`MeshPhysicalMaterial`?(t.USE_COLOR=``,n=gn,r=pn,a=!0):(n=hn,r=fn):(n=mn,r=fn),this.settings.renderMode===$.VerticalBillBoard?t.VERTICAL=``:this.settings.renderMode===$.HorizontalBillBoard&&(t.HORIZONTAL=``);let i=!1;this.settings.renderMode===$.Mesh&&(this.settings.material.type===`MeshStandardMaterial`?(this.material=new yn({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,i=!0):this.settings.material.type===`MeshPhysicalMaterial`&&(this.material=new bn({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,i=!0)),i||(this.material=new d({uniforms:e,defines:t,vertexShader:n,fragmentShader:r,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest,lights:a}))}else if(this.settings.renderMode===$.StretchedBillBoard)e.speedFactor=new h(1),this.material=new d({uniforms:e,defines:t,vertexShader:_n,fragmentShader:fn,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest});else throw Error(`render mode unavailable`);this.material&&i&&(this.material.onBeforeRender=i)}update(){let e=0,t=0;this.systems.forEach(e=>{t+=e.particleNum}),t>this.maxParticles&&this.expandBuffers(t),this.systems.forEach(t=>{t.emitter.updateMatrixWorld&&(t.emitter.updateWorldMatrix(!0,!1),t.emitter.updateMatrixWorld(!0));let n=t.particles,r=t.particleNum,i=this.quaternion2_,a=this.vector2_,o=this.vector3_;t.emitter.matrixWorld.decompose(a,i,o),this.rotationMat_.setFromMatrix4(t.emitter.matrixWorld);for(let a=0;a0&&(this.offsetBuffer.clearUpdateRanges(),this.offsetBuffer.addUpdateRange(0,e*3),this.offsetBuffer.needsUpdate=!0,this.sizeBuffer.clearUpdateRanges(),this.sizeBuffer.addUpdateRange(0,e*3),this.sizeBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.uvTileBuffer.clearUpdateRanges(),this.uvTileBuffer.addUpdateRange(0,e),this.uvTileBuffer.needsUpdate=!0,this.settings.renderMode===$.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===$.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===$.StretchedBillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}},Sn=` + +#include +#include +#include +#include +#include +#include + +uniform sampler2D alphaMap; +uniform float useAlphaMap; +uniform float visibility; +uniform float alphaTest; + +varying vec4 vColor; + +void main() { + #include + #include + + vec4 diffuseColor = vColor; + + #ifdef USE_MAP + #include + #ifndef USE_COLOR_AS_ALPHA + #endif + #endif + if( useAlphaMap == 1. ) diffuseColor.a *= texture2D( alphaMap, vUv).a; + if( diffuseColor.a < alphaTest ) discard; + gl_FragColor = diffuseColor; + + #include + #include +}`,Cn=` +#include +#include +#include +#include +#include +#include + +attribute vec3 previous; +attribute vec3 next; +attribute float side; +attribute float width; + +uniform vec2 resolution; +uniform float lineWidth; +uniform float sizeAttenuation; + +vec2 fix(vec4 i, float aspect) { + vec2 res = i.xy / i.w; + res.x *= aspect; + return res; +} + +void main() { + + #include + + float aspect = resolution.x / resolution.y; + + vColor = color; + + mat4 m = projectionMatrix * modelViewMatrix; + vec4 finalPosition = m * vec4( position, 1.0 ); + vec4 prevPos = m * vec4( previous, 1.0 ); + vec4 nextPos = m * vec4( next, 1.0 ); + + vec2 currentP = fix( finalPosition, aspect ); + vec2 prevP = fix( prevPos, aspect ); + vec2 nextP = fix( nextPos, aspect ); + + float w = lineWidth * width; + + vec2 dir; + if( nextP == currentP ) dir = normalize( currentP - prevP ); + else if( prevP == currentP ) dir = normalize( nextP - currentP ); + else { + vec2 dir1 = normalize( currentP - prevP ); + vec2 dir2 = normalize( nextP - currentP ); + dir = normalize( dir1 + dir2 ); + + vec2 perp = vec2( -dir1.y, dir1.x ); + vec2 miter = vec2( -dir.y, dir.x ); + //w = clamp( w / dot( miter, perp ), 0., 4., * lineWidth * width ); + + } + + //vec2 normal = ( cross( vec3( dir, 0. ) vec3( 0., 0., 1. ) ) ).xy; + vec4 normal = vec4( -dir.y, dir.x, 0., 1. ); + normal.xy *= .5 * w; + normal *= projectionMatrix; + if( sizeAttenuation == 0. ) { + normal.xy *= finalPosition.w; + normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy; + } + + finalPosition.xy += normal.xy * side; + + gl_Position = finalPosition; + + #include + #include + + vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); + + #include +}`,wn=class extends rn{constructor(e){super(e),this.vector_=new L,this.vector2_=new L,this.vector3_=new L,this.quaternion_=new I,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new a,this.indexBuffer=new m(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(e),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new m(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(e),this.geometry.setAttribute(`position`,this.positionBuffer),this.previousBuffer=new m(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(e),this.geometry.setAttribute(`previous`,this.previousBuffer),this.nextBuffer=new m(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(e),this.geometry.setAttribute(`next`,this.nextBuffer),this.widthBuffer=new m(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(e),this.geometry.setAttribute(`width`,this.widthBuffer),this.sideBuffer=new m(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(e),this.geometry.setAttribute(`side`,this.sideBuffer),this.uvBuffer=new m(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(e),this.geometry.setAttribute(`uv`,this.uvBuffer),this.colorBuffer=new m(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(e),this.geometry.setAttribute(`color`,this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;let e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new H(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV=``,t.USE_COLOR_ALPHA=``,this.settings.material.map&&(t.USE_MAP=``,t.MAP_UV=vn(this.settings.material.map.channel),e.map=new h(this.settings.material.map),e.mapTransform=new h(new W().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=``),this.settings.renderMode===$.Trail)this.material=new d({uniforms:e,defines:t,vertexShader:Cn,fragmentShader:Sn,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||2,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw Error(`render mode unavailable`)}update(){let e=0,t=0,n=0;this.systems.forEach(e=>{for(let t=0;tthis.maxParticles&&this.expandBuffers(n),this.systems.forEach(n=>{n.emitter.updateMatrixWorld&&(n.emitter.updateWorldMatrix(!0,!1),n.emitter.updateMatrixWorld(!0));let r=this.quaternion_,i=this.vector2_,a=this.vector3_;n.emitter.matrixWorld.decompose(i,r,a);let o=n.particles,s=n.particleNum,c=this.settings.uTileCount,l=this.settings.vTileCount,u=1/c,d=1/l;for(let r=0;r1&&(o=1-o,s=1-s);let c=t.getIndex().array[r*3],l=t.getIndex().array[r*3+1],u=t.getIndex().array[r*3+2],d=t.getAttribute(`position`);this._tempA.fromBufferAttribute(d,c),this._tempB.fromBufferAttribute(d,l),this._tempC.fromBufferAttribute(d,u),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,s),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:`mesh_surface`,mesh:this._geometry?this._geometry.uuid:``}}static fromJSON(t,n){return new e(n.geometries[t.geometry])}clone(){return new e(this._geometry)}update(e,t){}};Gt({id:`three.quarks`,initialize:()=>{},emitterShapes:[{type:`mesh_surface`,params:[[`geometry`,[`geometry`]]],constructor:Tn,loadJSON:Tn.fromJSON}],behaviors:[]});var En=class e extends c{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type=`BatchedRenderer`,this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(t){t._renderer=this;let n=t.getRendererSettings();for(let r=0;r{n.update(e)});for(let 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,AONode:()=>yC,AddEquation:()=>100,AddOperation:()=>2,AdditiveAnimationBlendMode:()=>it,AdditiveBlending:()=>2,AfterImageNode:()=>Dk,AgXToneMapping:()=>6,AlphaFormat:()=>ie,AlwaysCompare:()=>519,AlwaysDepth:()=>1,AlwaysStencilFunc:()=>519,AmbientLight:()=>Cp,AmbientLightNode:()=>BN,AnaglyphPassNode:()=>PA,AnalyticLightNode:()=>fj,AnamorphicNode:()=>Lk,AnimationAction:()=>_m,AnimationClip:()=>Kf,AnimationLoader:()=>np,AnimationMixer:()=>ym,AnimationObjectGroup:()=>gm,AnimationUtils:()=>Nf,ArcCurve:()=>Mu,ArrayCamera:()=>Ac,ArrayElementNode:()=>Lh,ArrowHelper:()=>fh,AssignNode:()=>M_,AttachedBindMode:()=>a,AttributeNode:()=>cb,Audio:()=>Xp,AudioAnalyser:()=>nm,AudioContext:()=>Lp,AudioListener:()=>Yp,AudioLoader:()=>Rp,AxesHelper:()=>ph,BRDF_GGX:()=>Kw,BRDF_Lambert:()=>Aw,BackSide:()=>1,BasicDepthPacking:()=>at,BasicEnvironmentNode:()=>Cw,BasicNodeLibrary:()=>$N,BasicShadowMap:()=>0,BatchNode:()=>XS,BatchedMesh:()=>nu,BloomNode:()=>gA,Bone:()=>wl,BooleanKeyframeTrack:()=>zf,Box2:()=>Nm,Box3:()=>Gn,Box3Helper:()=>sh,BoxGeometry:()=>Zi,BoxHelper:()=>oh,Break:()=>aC,BufferAttribute:()=>bi,BufferAttributeNode:()=>Vy,BufferGeometry:()=>Ii,BufferGeometryLoader:()=>Ap,BufferNode:()=>vx,BumpMapNode:()=>Qx,BypassNode:()=>Xy,ByteType:()=>x,Cache:()=>Yf,CacheNode:()=>Jy,Camera:()=>la,CameraHelper:()=>rh,CanvasTexture:()=>ku,CapsuleGeometry:()=>od,CatmullRomCurve3:()=>Ru,CineonToneMapping:()=>3,CircleGeometry:()=>sd,ClampToEdgeWrapping:()=>c,Clock:()=>Up,CodeNode:()=>KE,Color:()=>P,ColorKeyframeTrack:()=>Bf,ColorManagement:()=>Tn,ColorSpaceNode:()=>Oy,CompressedArrayTexture:()=>Du,CompressedCubeTexture:()=>Ou,CompressedTexture:()=>Eu,CompressedTextureLoader:()=>rp,ComputeNode:()=>Ky,ConeGeometry:()=>ld,ConstNode:()=>Kh,ConstantAlphaFactor:()=>213,ConstantColorFactor:()=>211,ContextNode:()=>_y,Continue:()=>iC,Controls:()=>hh,ConvertNode:()=>Rh,CubeCamera:()=>ga,CubeReflectionMapping:()=>301,CubeRefractionMapping:()=>302,CubeTexture:()=>_a,CubeTextureLoader:()=>ap,CubeTextureNode:()=>gx,CubeUVReflectionMapping:()=>306,CubicBezierCurve:()=>Yu,CubicBezierCurve3:()=>Xu,CubicInterpolant:()=>Ff,CullFaceBack:()=>1,CullFaceFront:()=>2,CullFaceFrontBack:()=>3,CullFaceNone:()=>0,Curve:()=>Au,CurvePath:()=>rd,CustomBlending:()=>5,CustomToneMapping:()=>5,CylinderGeometry:()=>cd,Cylindrical:()=>Am,DFGApprox:()=>qw,D_GGX:()=>Uw,Data3DTexture:()=>Bn,DataArrayTexture:()=>Rn,DataTexture:()=>Tl,DataTextureLoader:()=>op,DataUtils:()=>_i,DecrementStencilOp:()=>yt,DecrementWrapStencilOp:()=>xt,DefaultLoadingManager:()=>Zf,DenoiseNode:()=>iA,DepthFormat:()=>le,DepthOfFieldNode:()=>Vk,DepthStencilFormat:()=>ue,DepthTexture:()=>ho,DetachedBindMode:()=>o,DirectionalLight:()=>Sp,DirectionalLightHelper:()=>eh,DirectionalLightNode:()=>NN,Discard:()=>rb,DiscreteInterpolant:()=>Lf,DisplayP3ColorSpace:()=>dt,DodecahedronGeometry:()=>dd,DotScreenNode:()=>Uk,DoubleSide:()=>2,DstAlphaFactor:()=>206,DstColorFactor:()=>208,DynamicCopyUsage:()=>At,DynamicDrawUsage:()=>wt,DynamicReadUsage:()=>Dt,EPSILON:()=>av,EdgesGeometry:()=>gd,EllipseCurve:()=>ju,EnvironmentNode:()=>iE,EqualCompare:()=>514,EqualDepth:()=>4,EqualStencilFunc:()=>514,EquirectUVNode:()=>mw,EquirectangularReflectionMapping:()=>303,EquirectangularRefractionMapping:()=>304,Euler:()=>Dr,EventDispatcher:()=>Ft,ExpressionNode:()=>tb,ExtrudeGeometry:()=>$d,FXAANode:()=>cA,F_Schlick:()=>kw,FileLoader:()=>tp,FilmNode:()=>qk,Float16BufferAttribute:()=>Oi,Float32BufferAttribute:()=>F,FloatType:()=>E,Fn:()=>U,Fog:()=>Wc,FogExp2:()=>Uc,FogExp2Node:()=>ZA,FogNode:()=>qA,FogRangeNode:()=>YA,FramebufferTexture:()=>Tu,FrontFacingNode:()=>Qb,FrontSide:()=>0,Frustum:()=>Ta,FunctionCallNode:()=>P_,FunctionNode:()=>ZE,FunctionOverloadingNode:()=>rO,GLBufferAttribute:()=>wm,GLSL1:()=>`100`,GLSL3:()=>Mt,GLSLNodeParser:()=>XN,GTAONode:()=>eA,GaussianBlurNode:()=>Ck,GreaterCompare:()=>516,GreaterDepth:()=>6,GreaterEqualCompare:()=>518,GreaterEqualDepth:()=>5,GreaterEqualStencilFunc:()=>518,GreaterStencilFunc:()=>516,GridHelper:()=>Ym,Group:()=>jc,HalfFloatType:()=>D,HemisphereLight:()=>lp,HemisphereLightHelper:()=>Jm,HemisphereLightNode:()=>VN,IESSpotLightNode:()=>zN,INFINITY:()=>ov,IcosahedronGeometry:()=>nf,If:()=>W,ImageBitmapLoader:()=>Fp,ImageLoader:()=>ip,ImageUtils:()=>kn,IncrementStencilOp:()=>vt,IncrementWrapStencilOp:()=>bt,IndexNode:()=>VS,InstanceNode:()=>JS,InstancedBufferAttribute:()=>kl,InstancedBufferGeometry:()=>kp,InstancedInterleavedBuffer:()=>Cm,InstancedMesh:()=>Ll,InstancedPointsNodeMaterial:()=>rw,Int16BufferAttribute:()=>wi,Int32BufferAttribute:()=>Ei,Int8BufferAttribute:()=>xi,IntType:()=>w,InterleavedBuffer:()=>Kc,InterleavedBufferAttribute:()=>Jc,Interpolant:()=>Pf,InterpolateDiscrete:()=>Ze,InterpolateLinear:()=>Qe,InterpolateSmooth:()=>$e,InvertStencilOp:()=>St,IrradianceNode:()=>SC,JoinNode:()=>Bh,KeepStencilOp:()=>gt,KeyframeTrack:()=>Rf,LOD:()=>pl,LatheGeometry:()=>ad,Layers:()=>Or,LessCompare:()=>513,LessDepth:()=>2,LessEqualCompare:()=>515,LessEqualDepth:()=>3,LessEqualStencilFunc:()=>515,LessStencilFunc:()=>513,Light:()=>cp,LightProbe:()=>Ep,LightProbeNode:()=>HN,LightingContextNode:()=>bC,LightingModel:()=>Tw,LightingNode:()=>vC,LightsNode:()=>gC,Line:()=>du,Line2NodeMaterial:()=>lw,Line3:()=>Im,LineBasicMaterial:()=>ru,LineBasicNodeMaterial:()=>aw,LineCurve:()=>Zu,LineCurve3:()=>Qu,LineDashedMaterial:()=>Tf,LineDashedNodeMaterial:()=>sw,LineLoop:()=>gu,LineSegments:()=>hu,LinearDisplayP3ColorSpace:()=>ft,LinearFilter:()=>h,LinearInterpolant:()=>If,LinearMipMapLinearFilter:()=>y,LinearMipMapNearestFilter:()=>_,LinearMipmapLinearFilter:()=>v,LinearMipmapNearestFilter:()=>g,LinearSRGBColorSpace:()=>ut,LinearToneMapping:()=>1,LinearTransfer:()=>pt,Loader:()=>Qf,LoaderUtils:()=>Op,LoadingManager:()=>Xf,Loop:()=>rC,LoopNode:()=>nC,LoopOnce:()=>Je,LoopPingPong:()=>Xe,LoopRepeat:()=>Ye,LuminanceAlphaFormat:()=>ce,LuminanceFormat:()=>se,Lut3DNode:()=>Yk,MOUSE:()=>r,MRTNode:()=>tO,MatcapUVNode:()=>_E,Material:()=>di,MaterialLoader:()=>Dp,MaterialNode:()=>$,MaterialReferenceNode:()=>Ox,MathUtils:()=>ln,Matrix2:()=>jm,Matrix3:()=>j,Matrix4:()=>N,MaxEquation:()=>104,MaxMipLevelNode:()=>pb,Mesh:()=>Ji,MeshBasicMaterial:()=>fi,MeshBasicNodeMaterial:()=>Ow,MeshDepthMaterial:()=>hc,MeshDistanceMaterial:()=>gc,MeshLambertMaterial:()=>Cf,MeshLambertNodeMaterial:()=>Iw,MeshMatcapMaterial:()=>wf,MeshMatcapNodeMaterial:()=>bE,MeshNormalMaterial:()=>Sf,MeshNormalNodeMaterial:()=>pw,MeshPhongMaterial:()=>bf,MeshPhongNodeMaterial:()=>Rw,MeshPhysicalMaterial:()=>yf,MeshPhysicalNodeMaterial:()=>uE,MeshSSSNodeMaterial:()=>fE,MeshStandardMaterial:()=>vf,MeshStandardNodeMaterial:()=>cE,MeshToonMaterial:()=>xf,MeshToonNodeMaterial:()=>gE,MinEquation:()=>103,MirroredRepeatWrapping:()=>l,MixOperation:()=>1,ModelNode:()=>Pb,ModelViewProjectionNode:()=>zS,MorphNode:()=>dC,MultiplyBlending:()=>4,MultiplyOperation:()=>0,NearestFilter:()=>u,NearestMipMapLinearFilter:()=>m,NearestMipMapNearestFilter:()=>f,NearestMipmapLinearFilter:()=>p,NearestMipmapNearestFilter:()=>d,NeutralToneMapping:()=>7,NeverCompare:()=>512,NeverDepth:()=>0,NeverStencilFunc:()=>512,NoBlending:()=>0,NoColorSpace:()=>``,NoToneMapping:()=>0,Node:()=>R,NodeAttribute:()=>LE,NodeBuilder:()=>JD,NodeCache:()=>UE,NodeCode:()=>VE,NodeFrame:()=>YD,NodeFunctionInput:()=>XD,NodeLoader:()=>PE,NodeMaterial:()=>tw,NodeMaterialLoader:()=>FE,NodeMaterialObserver:()=>vh,NodeObjectLoader:()=>IE,NodeShaderStage:()=>Ah,NodeType:()=>jh,NodeUniform:()=>RE,NodeUpdateType:()=>L,NodeUtils:()=>kh,NodeVar:()=>zE,NodeVarying:()=>BE,NormalAnimationBlendMode:()=>rt,NormalBlending:()=>1,NormalMapNode:()=>Jx,NotEqualCompare:()=>517,NotEqualDepth:()=>7,NotEqualStencilFunc:()=>517,NumberKeyframeTrack:()=>Vf,Object3D:()=>Wr,Object3DNode:()=>Ob,ObjectLoader:()=>jp,ObjectSpaceNormalMap:()=>1,OctahedronGeometry:()=>rf,OneFactor:()=>201,OneMinusConstantAlphaFactor:()=>214,OneMinusConstantColorFactor:()=>212,OneMinusDstAlphaFactor:()=>207,OneMinusDstColorFactor:()=>209,OneMinusSrcAlphaFactor:()=>205,OneMinusSrcColorFactor:()=>203,OrthographicCamera:()=>Ba,OscNode:()=>dO,OutputStructNode:()=>QD,P3Primaries:()=>`p3`,PCFShadowMap:()=>1,PCFSoftShadowMap:()=>2,PI:()=>sv,PI2:()=>cv,PMREMGenerator:()=>$a,PMREMNode:()=>$T,ParallaxBarrierPassNode:()=>IA,ParameterNode:()=>WE,PassNode:()=>_k,Path:()=>id,PerspectiveCamera:()=>pa,PhongLightingModel:()=>Pw,PhysicalLightingModel:()=>OT,PixelationPassNode:()=>SA,Plane:()=>Sa,PlaneGeometry:()=>Oa,PlaneHelper:()=>ch,PointLight:()=>bp,PointLightHelper:()=>Wm,PointLightNode:()=>MN,PointUVNode:()=>JO,Points:()=>Su,PointsMaterial:()=>_u,PointsNodeMaterial:()=>SE,PolarGridHelper:()=>Xm,PolyhedronGeometry:()=>ud,PositionalAudio:()=>tm,PosterizeNode:()=>lk,PropertyBinding:()=>hm,PropertyMixer:()=>rm,PropertyNode:()=>t_,QuadraticBezierCurve:()=>$u,QuadraticBezierCurve3:()=>ed,Quaternion:()=>Hn,QuaternionKeyframeTrack:()=>Uf,QuaternionLinearInterpolant:()=>Hf,RED_GREEN_RGTC2_Format:()=>Ke,RED_RGTC1_Format:()=>We,REVISION:()=>n,RGBADepthPacking:()=>ot,RGBAFormat:()=>oe,RGBAIntegerFormat:()=>ge,RGBA_ASTC_10x10_Format:()=>Re,RGBA_ASTC_10x5_Format:()=>Fe,RGBA_ASTC_10x6_Format:()=>Ie,RGBA_ASTC_10x8_Format:()=>Le,RGBA_ASTC_12x10_Format:()=>ze,RGBA_ASTC_12x12_Format:()=>Be,RGBA_ASTC_4x4_Format:()=>De,RGBA_ASTC_5x4_Format:()=>Oe,RGBA_ASTC_5x5_Format:()=>ke,RGBA_ASTC_6x5_Format:()=>Ae,RGBA_ASTC_6x6_Format:()=>je,RGBA_ASTC_8x5_Format:()=>Me,RGBA_ASTC_8x6_Format:()=>Ne,RGBA_ASTC_8x8_Format:()=>Pe,RGBA_BPTC_Format:()=>Ve,RGBA_ETC2_EAC_Format:()=>Ee,RGBA_PVRTC_2BPPV1_Format:()=>Ce,RGBA_PVRTC_4BPPV1_Format:()=>k,RGBA_S3TC_DXT1_Format:()=>ve,RGBA_S3TC_DXT3_Format:()=>ye,RGBA_S3TC_DXT5_Format:()=>be,RGBDepthPacking:()=>st,RGBFormat:()=>ae,RGBIntegerFormat:()=>he,RGBShiftNode:()=>Gk,RGB_BPTC_SIGNED_Format:()=>He,RGB_BPTC_UNSIGNED_Format:()=>Ue,RGB_ETC1_Format:()=>we,RGB_ETC2_Format:()=>Te,RGB_PVRTC_2BPPV1_Format:()=>Se,RGB_PVRTC_4BPPV1_Format:()=>xe,RGB_S3TC_DXT1_Format:()=>_e,RGDepthPacking:()=>ct,RGFormat:()=>pe,RGIntegerFormat:()=>me,RTTNode:()=>UO,RangeNode:()=>tj,RawShaderMaterial:()=>_f,Ray:()=>_r,Raycaster:()=>Em,Rec709Primaries:()=>ht,RectAreaLight:()=>wp,RectAreaLightNode:()=>LN,RedFormat:()=>de,RedIntegerFormat:()=>fe,ReferenceNode:()=>Tx,ReflectorNode:()=>LO,ReinhardToneMapping:()=>2,RemapNode:()=>Qy,RenderOutputNode:()=>ab,RenderTarget:()=>In,RendererReferenceNode:()=>Iy,RepeatWrapping:()=>s,ReplaceStencilOp:()=>_t,Return:()=>ib,ReverseSubtractEquation:()=>102,RingGeometry:()=>af,RotateNode:()=>CE,SIGNED_RED_GREEN_RGTC2_Format:()=>qe,SIGNED_RED_RGTC1_Format:()=>Ge,SRGBColorSpace:()=>lt,SRGBTransfer:()=>mt,SSAAPassNode:()=>TA,Scene:()=>Gc,SceneNode:()=>XO,Schlick_to_F0:()=>Yw,ScreenNode:()=>TC,ScriptableNode:()=>GA,ScriptableValueNode:()=>BA,SetNode:()=>Uh,ShaderChunk:()=>ka,ShaderLib:()=>Aa,ShaderMaterial:()=>aa,ShaderNode:()=>Sg,ShadowMaterial:()=>gf,ShadowNodeMaterial:()=>kE,Shape:()=>_d,ShapeGeometry:()=>of,ShapePath:()=>mh,ShapeUtils:()=>Xd,ShortType:()=>S,Skeleton:()=>Ol,SkeletonHelper:()=>Hm,SkinnedMesh:()=>Cl,SkinningNode:()=>$S,SobelOperatorNode:()=>zk,Source:()=>jn,Sphere:()=>lr,SphereGeometry:()=>cf,Spherical:()=>km,SphericalHarmonics3:()=>Tp,SplineCurve:()=>td,SplitNode:()=>Hh,SpotLight:()=>hp,SpotLightHelper:()=>Rm,SpotLightNode:()=>RN,Sprite:()=>ll,SpriteMaterial:()=>Yc,SpriteNodeMaterial:()=>EE,SpriteSheetUVNode:()=>gO,SrcAlphaFactor:()=>204,SrcAlphaSaturateFactor:()=>210,SrcColorFactor:()=>202,StackNode:()=>gD,StaticCopyUsage:()=>kt,StaticDrawUsage:()=>Ct,StaticReadUsage:()=>Et,StereoCamera:()=>Hp,StereoPassNode:()=>kA,StorageArrayElementNode:()=>vO,StorageBufferNode:()=>tk,StorageTextureNode:()=>ik,StreamCopyUsage:()=>jt,StreamDrawUsage:()=>Tt,StreamReadUsage:()=>Ot,StringKeyframeTrack:()=>Wf,SubtractEquation:()=>101,SubtractiveBlending:()=>3,TBNViewMatrix:()=>Ux,TOUCH:()=>i,TangentSpaceNormalMap:()=>0,TempNode:()=>zh,TetrahedronGeometry:()=>lf,Texture:()=>Pn,Texture3DNode:()=>jE,TextureLoader:()=>sp,TextureNode:()=>hb,TextureSizeNode:()=>db,TextureUtils:()=>Dc,TimerNode:()=>oO,ToneMappingNode:()=>Ry,ToonOutlinePassNode:()=>RA,TorusGeometry:()=>uf,TorusKnotGeometry:()=>df,TransitionNode:()=>vA,Triangle:()=>ii,TriangleFanDrawMode:()=>2,TriangleStripDrawMode:()=>1,TrianglesDrawMode:()=>0,TriplanarTexturesNode:()=>bO,TubeGeometry:()=>ff,UVMapping:()=>300,Uint16BufferAttribute:()=>Ti,Uint32BufferAttribute:()=>Di,Uint8BufferAttribute:()=>Si,Uint8ClampedBufferAttribute:()=>Ci,Uniform:()=>bm,UniformArrayNode:()=>xx,UniformGroupNode:()=>Jg,UniformNode:()=>e_,UniformsGroup:()=>Sm,UniformsLib:()=>I,UniformsUtils:()=>na,UnsignedByteType:()=>b,UnsignedInt101111Type:()=>re,UnsignedInt248Type:()=>te,UnsignedInt5999Type:()=>ne,UnsignedIntType:()=>T,UnsignedShort4444Type:()=>ee,UnsignedShort5551Type:()=>O,UnsignedShortType:()=>C,UserDataNode:()=>sk,VSMShadowMap:()=>3,V_GGX_SmithCorrelated:()=>Vw,VarNode:()=>by,VaryingNode:()=>Sy,Vector2:()=>A,Vector3:()=>M,Vector4:()=>Fn,VectorKeyframeTrack:()=>Gf,VertexColorNode:()=>KO,VideoTexture:()=>wu,ViewportDepthNode:()=>UC,ViewportDepthTextureNode:()=>VC,ViewportSharedTextureNode:()=>fk,ViewportTextureNode:()=>LC,VolumeNodeMaterial:()=>NE,WebGL3DRenderTarget:()=>Vn,WebGLArrayRenderTarget:()=>zn,WebGLCoordinateSystem:()=>Nt,WebGLCubeRenderTarget:()=>va,WebGLMultipleRenderTargets:()=>gh,WebGLRenderTarget:()=>Ln,WebGLRenderer:()=>Hc,WebGLUtils:()=>kc,WebGPUCoordinateSystem:()=>Pt,WireframeGeometry:()=>pf,WrapAroundEnding:()=>nt,ZeroCurvatureEnding:()=>et,ZeroFactor:()=>200,ZeroSlopeEnding:()=>tt,ZeroStencilOp:()=>0,abs:()=>Av,acesFilmicToneMapping:()=>Xj,acos:()=>Ov,add:()=>L_,addMethodChaining:()=>z,addNodeElement:()=>sb,afterImage:()=>Ok,agxToneMapping:()=>eM,all:()=>lv,alphaT:()=>h_,anaglyphPass:()=>FA,anamorphic:()=>Rk,and:()=>J_,anisotropy:()=>g_,anisotropyB:()=>v_,anisotropyT:()=>__,any:()=>uv,ao:()=>rA,append:()=>Og,arrayBuffer:()=>Wg,asin:()=>Dv,assign:()=>N_,atan:()=>kv,atan2:()=>Uv,atomicAdd:()=>yM,atomicAnd:()=>CM,atomicFunc:()=>_M,atomicMax:()=>xM,atomicMin:()=>SM,atomicOr:()=>wM,atomicStore:()=>vM,atomicSub:()=>bM,atomicXor:()=>TM,attenuationColor:()=>A_,attenuationDistance:()=>k_,attribute:()=>lb,backgroundBlurriness:()=>ZO,backgroundIntensity:()=>QO,batch:()=>ZS,billboarding:()=>Aj,bitAnd:()=>Q_,bitNot:()=>$_,bitOr:()=>ev,bitXor:()=>tv,bitangentGeometry:()=>Lx,bitangentLocal:()=>Rx,bitangentView:()=>zx,bitangentWorld:()=>Bx,bitcast:()=>Vv,bleach:()=>Hj,bloom:()=>_A,blur:()=>JT,bool:()=>Ag,buffer:()=>yx,bufferAttribute:()=>Hy,bumpMap:()=>$x,burn:()=>Lj,bvec2:()=>Ng,bvec3:()=>Ig,bvec4:()=>zg,bypass:()=>Zy,cache:()=>Yy,call:()=>F_,cameraFar:()=>bb,cameraLogDepth:()=>xb,cameraNear:()=>yb,cameraNormalMatrix:()=>Eb,cameraPosition:()=>Db,cameraProjectionMatrix:()=>Sb,cameraProjectionMatrixInverse:()=>Cb,cameraViewMatrix:()=>wb,cameraWorldMatrix:()=>Tb,cbrt:()=>iy,ceil:()=>xv,checker:()=>EM,cineonToneMapping:()=>Jj,clamp:()=>sy,clearcoat:()=>c_,clearcoatRoughness:()=>l_,code:()=>qE,color:()=>kg,colorSpaceToWorking:()=>My,colorToDirection:()=>dw,compute:()=>qy,cond:()=>gy,context:()=>vy,convert:()=>Kg,convertToTexture:()=>GO,cos:()=>Tv,createCanvasElement:()=>hn,cross:()=>Qv,cubeTexture:()=>_x,dFdx:()=>Fv,dFdy:()=>Iv,dashSize:()=>C_,defaultBuildStages:()=>Nh,defaultShaderStages:()=>Mh,defined:()=>bg,degrees:()=>pv,denoise:()=>sA,densityFog:()=>QA,depth:()=>YC,depthPass:()=>bk,difference:()=>Xv,diffuseColor:()=>i_,directionToColor:()=>uw,dispersion:()=>j_,distance:()=>Yv,div:()=>B_,dodge:()=>Rj,dof:()=>Hk,dot:()=>Zv,dotScreen:()=>Wk,drawIndex:()=>qS,dynamicBufferAttribute:()=>Uy,element:()=>Gg,emissive:()=>a_,equal:()=>H_,equals:()=>dv,equirectUV:()=>hw,exp:()=>mv,exp2:()=>hv,expression:()=>nb,faceDirection:()=>ex,faceForward:()=>dy,film:()=>Jk,float:()=>G,floor:()=>bv,fog:()=>JA,fract:()=>Cv,frameGroup:()=>Zg,frameId:()=>uO,frontFacing:()=>$b,fwidth:()=>Bv,fxaa:()=>lA,gain:()=>Sj,gapSize:()=>w_,gaussianBlur:()=>wk,getColorSpaceMethod:()=>Dy,getConstNodeType:()=>xg,getCurrentStack:()=>Dg,getDirection:()=>WT,getDistanceAttenuation:()=>pj,getGeometryRoughness:()=>zw,getRoughness:()=>Bw,getShIrradianceAt:()=>jN,getTextureIndex:()=>eO,global:()=>WA,glsl:()=>XE,glslFn:()=>$E,grayscale:()=>kk,greaterThan:()=>G_,greaterThanEqual:()=>q_,hash:()=>bj,highPrecisionModelNormalViewMatrix:()=>Wb,highPrecisionModelViewMatrix:()=>Ub,hue:()=>Mk,instance:()=>YS,instanceIndex:()=>US,instancedBufferAttribute:()=>Wy,instancedDynamicBufferAttribute:()=>Gy,int:()=>K,inverseSqrt:()=>yv,invocationLocalIndex:()=>KS,invocationSubgroupIndex:()=>GS,ior:()=>E_,iridescence:()=>f_,iridescenceIOR:()=>p_,iridescenceThickness:()=>m_,ivec2:()=>jg,ivec3:()=>Pg,ivec4:()=>Lg,js:()=>JE,label:()=>yy,length:()=>Mv,lengthSq:()=>ay,lessThan:()=>W_,lessThanEqual:()=>K_,lightPosition:()=>gj,lightTargetDirection:()=>yj,lightTargetPosition:()=>_j,lightViewPosition:()=>vj,lightingContext:()=>xC,lights:()=>_C,linearDepth:()=>XC,linearSRGBTosRGB:()=>Gj,linearToneMapping:()=>Kj,localId:()=>oM,log:()=>gv,log2:()=>_v,loop:()=>oC,luminance:()=>Pk,lut3D:()=>Xk,mat2:()=>Bg,mat3:()=>Vg,mat4:()=>Hg,matcapUV:()=>vE,materialAOMap:()=>LS,materialAlphaTest:()=>tS,materialAnisotropy:()=>bS,materialAnisotropyVector:()=>RS,materialAttenuationColor:()=>OS,materialAttenuationDistance:()=>DS,materialClearcoat:()=>mS,materialClearcoatNormal:()=>gS,materialClearcoatRoughness:()=>hS,materialColor:()=>nS,materialDispersion:()=>FS,materialEmissive:()=>iS,materialIOR:()=>ES,materialIridescence:()=>xS,materialIridescenceIOR:()=>SS,materialIridescenceThickness:()=>CS,materialLightMap:()=>IS,materialLineDashOffset:()=>NS,materialLineDashSize:()=>AS,materialLineGapSize:()=>jS,materialLineScale:()=>kS,materialLineWidth:()=>MS,materialMetalness:()=>fS,materialNormal:()=>pS,materialOpacity:()=>aS,materialPointWidth:()=>PS,materialReference:()=>kx,materialReflectivity:()=>uS,materialRefractionRatio:()=>dx,materialRotation:()=>_S,materialRoughness:()=>dS,materialSheen:()=>vS,materialSheenRoughness:()=>yS,materialShininess:()=>rS,materialSpecular:()=>oS,materialSpecularColor:()=>cS,materialSpecularIntensity:()=>sS,materialSpecularStrength:()=>lS,materialThickness:()=>TS,materialTransmission:()=>wS,max:()=>Gv,maxMipLevel:()=>mb,metalness:()=>s_,min:()=>Wv,mix:()=>oy,mixElement:()=>py,mod:()=>Kv,modInt:()=>V_,modelDirection:()=>Fb,modelNormalMatrix:()=>Bb,modelPosition:()=>Lb,modelScale:()=>Rb,modelViewMatrix:()=>Hb,modelViewPosition:()=>zb,modelViewProjection:()=>BS,modelWorldMatrix:()=>Ib,modelWorldMatrixInverse:()=>Vb,morphReference:()=>fC,motionBlur:()=>Vj,mrt:()=>nO,mul:()=>z_,mx_aastep:()=>uN,mx_cell_noise_float:()=>EN,mx_contrast:()=>yN,mx_fractal_noise_float:()=>DN,mx_fractal_noise_vec2:()=>ON,mx_fractal_noise_vec3:()=>kN,mx_fractal_noise_vec4:()=>AN,mx_hsvtorgb:()=>sN,mx_noise_float:()=>bN,mx_noise_vec3:()=>xN,mx_noise_vec4:()=>SN,mx_ramplr:()=>fN,mx_ramptb:()=>pN,mx_rgbtohsv:()=>cN,mx_safepower:()=>vN,mx_splitlr:()=>hN,mx_splittb:()=>gN,mx_srgb_texture_to_lin_rec709:()=>lN,mx_transform_uv:()=>_N,mx_worley_noise_float:()=>CN,mx_worley_noise_vec2:()=>wN,mx_worley_noise_vec3:()=>TN,negate:()=>Nv,neutralToneMapping:()=>tM,nodeArray:()=>wg,nodeImmutable:()=>H,nodeObject:()=>B,nodeObjects:()=>Cg,nodeProxy:()=>V,normalFlat:()=>rx,normalGeometry:()=>tx,normalLocal:()=>nx,normalMap:()=>Yx,normalView:()=>ix,normalWorld:()=>ax,normalize:()=>Sv,not:()=>X_,notEqual:()=>U_,numWorkgroups:()=>iM,objectDirection:()=>kb,objectGroup:()=>$g,objectPosition:()=>jb,objectScale:()=>Mb,objectViewPosition:()=>Nb,objectWorldMatrix:()=>Ab,oneMinus:()=>Pv,or:()=>Y_,orthographicDepthToViewZ:()=>GC,oscSawtooth:()=>hO,oscSine:()=>fO,oscSquare:()=>pO,oscTriangle:()=>mO,output:()=>S_,outputStruct:()=>$D,overlay:()=>Bj,overloadingFn:()=>aO,parabola:()=>xj,parallaxBarrierPass:()=>LA,parallaxDirection:()=>Wx,parallaxUV:()=>Gx,parameter:()=>GE,pass:()=>vk,passTexture:()=>yk,pcurve:()=>Cj,perspectiveDepthToViewZ:()=>qC,pixelationPass:()=>CA,pmremTexture:()=>nE,pointUV:()=>YO,pointWidth:()=>T_,positionGeometry:()=>Gb,positionLocal:()=>Kb,positionPrevious:()=>qb,positionView:()=>Xb,positionViewDirection:()=>Zb,positionWorld:()=>Jb,positionWorldDirection:()=>Yb,posterize:()=>uk,pow:()=>$v,pow2:()=>ey,pow3:()=>ty,pow4:()=>ny,property:()=>n_,radians:()=>fv,rand:()=>fy,range:()=>nj,rangeFog:()=>XA,reciprocal:()=>Rv,reference:()=>Ex,referenceBuffer:()=>Dx,reflect:()=>Jv,reflectVector:()=>mx,reflectView:()=>fx,reflector:()=>RO,refract:()=>ly,refractVector:()=>hx,refractView:()=>px,reinhardToneMapping:()=>qj,remainder:()=>iv,remap:()=>$y,remapClamp:()=>eb,renderGroup:()=>Qg,renderOutput:()=>ob,rendererReference:()=>Ly,rgbShift:()=>Kk,rotate:()=>wE,rotateUV:()=>Oj,roughness:()=>o_,round:()=>Lv,rtt:()=>WO,sRGBToLinearSRGB:()=>Wj,sampler:()=>vb,saturate:()=>cy,saturation:()=>Ak,screen:()=>zj,screenCoordinate:()=>OC,screenSize:()=>DC,screenUV:()=>EC,scriptable:()=>KA,scriptableValue:()=>VA,select:()=>hy,sepia:()=>Uj,setCurrentStack:()=>Eg,shaderStages:()=>Ph,sharedUniformGroup:()=>Xg,sheen:()=>u_,sheenRoughness:()=>d_,shiftLeft:()=>nv,shiftRight:()=>rv,shininess:()=>x_,sign:()=>jv,sin:()=>wv,sinc:()=>wj,skinning:()=>eC,skinningReference:()=>tC,smoothstep:()=>uy,smoothstepElement:()=>my,sobel:()=>Bk,specularColor:()=>y_,specularF90:()=>b_,spherizeUV:()=>kj,split:()=>qg,spritesheetUV:()=>_O,sqrt:()=>vv,ssaaPass:()=>DA,stack:()=>_D,step:()=>qv,stereoPass:()=>AA,storage:()=>nk,storageBarrier:()=>uM,storageObject:()=>rk,storageTexture:()=>ak,string:()=>Ug,sub:()=>R_,subgroupIndex:()=>WS,subgroupSize:()=>sM,tan:()=>Ev,tangentGeometry:()=>Ax,tangentLocal:()=>jx,tangentView:()=>Mx,tangentWorld:()=>Nx,temp:()=>xy,texture:()=>gb,texture3D:()=>ME,textureBarrier:()=>dM,textureBicubic:()=>pT,textureCubeUV:()=>GT,textureLoad:()=>_b,textureSize:()=>fb,textureStore:()=>ok,thickness:()=>O_,threshold:()=>Fk,timerDelta:()=>lO,timerGlobal:()=>cO,timerLocal:()=>sO,toOutputColorSpace:()=>ky,toWorkingColorSpace:()=>Ay,toneMapping:()=>zy,toneMappingExposure:()=>By,toonOutlinePass:()=>zA,transformDirection:()=>ry,transformNormal:()=>lx,transformNormalToView:()=>ux,transformedBentNormalView:()=>Kx,transformedBitangentView:()=>Vx,transformedBitangentWorld:()=>Hx,transformedClearcoatNormalView:()=>cx,transformedNormalView:()=>ox,transformedNormalWorld:()=>sx,transformedTangentView:()=>Px,transformedTangentWorld:()=>Fx,transition:()=>yA,transmission:()=>D_,transpose:()=>Hv,tri:()=>Tj,tri3:()=>Ej,triNoise3D:()=>Dj,triplanarTexture:()=>SO,triplanarTextures:()=>xO,trunc:()=>zv,tslFn:()=>Tg,uint:()=>q,uniform:()=>Z,uniformArray:()=>Sx,uniformGroup:()=>Yg,uniforms:()=>Cx,userData:()=>ck,uv:()=>ub,uvec2:()=>Mg,uvec3:()=>Fg,uvec4:()=>Rg,varying:()=>Cy,varyingProperty:()=>r_,vec2:()=>J,vec3:()=>Y,vec4:()=>X,vectorComponents:()=>Fh,velocity:()=>Ij,vertexColor:()=>qO,vertexIndex:()=>HS,vibrance:()=>jk,viewZToOrthographicDepth:()=>WC,viewZToPerspectiveDepth:()=>KC,viewport:()=>kC,viewportBottomLeft:()=>FC,viewportCoordinate:()=>jC,viewportDepthTexture:()=>HC,viewportLinearDepth:()=>ZC,viewportMipTexture:()=>zC,viewportResolution:()=>NC,viewportSafeUV:()=>jj,viewportSharedTexture:()=>pk,viewportSize:()=>AC,viewportTexture:()=>RC,viewportTopLeft:()=>PC,viewportUV:()=>MC,wgsl:()=>YE,wgslFn:()=>eD,workgroupArray:()=>mM,workgroupBarrier:()=>lM,workgroupId:()=>aM,workingToColorSpace:()=>jy,xor:()=>Z_}),n=`169.19`,r={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},a=`attached`,o=`detached`,s=1e3,c=1001,l=1002,u=1003,d=1004,f=1004,p=1005,m=1005,h=1006,g=1007,_=1007,v=1008,y=1008,b=1009,x=1010,S=1011,C=1012,w=1013,T=1014,E=1015,D=1016,ee=1017,O=1018,te=1020,ne=35902,re=35899,ie=1021,ae=1022,oe=1023,se=1024,ce=1025,le=1026,ue=1027,de=1028,fe=1029,pe=1030,me=1031,he=1032,ge=1033,_e=33776,ve=33777,ye=33778,be=33779,xe=35840,Se=35841,k=35842,Ce=35843,we=36196,Te=37492,Ee=37496,De=37808,Oe=37809,ke=37810,Ae=37811,je=37812,Me=37813,Ne=37814,Pe=37815,Fe=37816,Ie=37817,Le=37818,Re=37819,ze=37820,Be=37821,Ve=36492,He=36494,Ue=36495,We=36283,Ge=36284,Ke=36285,qe=36286,Je=2200,Ye=2201,Xe=2202,Ze=2300,Qe=2301,$e=2302,et=2400,tt=2401,nt=2402,rt=2500,it=2501,at=3200,ot=3201,st=3202,ct=3203,lt=`srgb`,ut=`srgb-linear`,dt=`display-p3`,ft=`display-p3-linear`,pt=`linear`,mt=`srgb`,ht=`rec709`,gt=7680,_t=7681,vt=7682,yt=7683,bt=34055,xt=34056,St=5386,Ct=35044,wt=35048,Tt=35040,Et=35045,Dt=35049,Ot=35041,kt=35046,At=35050,jt=35042,Mt=`300 es`,Nt=2e3,Pt=2001,Ft=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+It[e>>16&255]+It[e>>24&255]+`-`+It[t&255]+It[t>>8&255]+`-`+It[t>>16&15|64]+It[t>>24&255]+`-`+It[n&63|128]+It[n>>8&255]+`-`+It[n>>16&255]+It[n>>24&255]+It[r&255]+It[r>>8&255]+It[r>>16&255]+It[r>>24&255]).toLowerCase()}function Vt(e,t,n){return Math.max(t,Math.min(n,e))}function Ht(e,t){return(e%t+t)%t}function Ut(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function Wt(e,t,n){return e===t?0:(n-e)/(t-e)}function Gt(e,t,n){return(1-n)*e+n*t}function Kt(e,t,n,r){return Gt(e,t,1-Math.exp(-n*r))}function qt(e,t=1){return t-Math.abs(Ht(e,t*2)-t)}function Jt(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function Yt(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function Xt(e,t){return e+Math.floor(Math.random()*(t-e+1))}function Zt(e,t){return e+Math.random()*(t-e)}function Qt(e){return e*(.5-Math.random())}function $t(e){e!==void 0&&(Lt=e);let t=Lt+=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 en(e){return e*Rt}function tn(e){return e*zt}function nn(e){return(e&e-1)==0&&e!==0}function rn(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function an(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function on(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function sn(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 cn(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 ln={DEG2RAD:Rt,RAD2DEG:zt,generateUUID:Bt,clamp:Vt,euclideanModulo:Ht,mapLinear:Ut,inverseLerp:Wt,lerp:Gt,damp:Kt,pingpong:qt,smoothstep:Jt,smootherstep:Yt,randInt:Xt,randFloat:Zt,randFloatSpread:Qt,seededRandom:$t,degToRad:en,radToDeg:tn,isPowerOfTwo:nn,ceilPowerOfTwo:rn,floorPowerOfTwo:an,setQuaternionFromProperEuler:on,normalize:cn,denormalize:sn},A=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Vt(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}},j=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(un.makeScale(e,t)),this}rotate(e){return this.premultiply(un.makeRotation(-e)),this}translate(e,t){return this.premultiply(un.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)}},un=new j;function dn(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var fn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function pn(e,t){return new fn[e](t)}function mn(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}function hn(){let e=mn(`canvas`);return e.style.display=`block`,e}var gn={};function _n(e){e in gn||(gn[e]=!0,console.warn(e))}function vn(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)})}function yn(e){let t=e.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function bn(e){let t=e.elements;t[11]===-1?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}var xn=new j().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Sn=new j().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Cn={[ut]:{transfer:pt,primaries:ht,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[lt]:{transfer:mt,primaries:ht,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[ft]:{transfer:pt,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Sn),fromReference:e=>e.applyMatrix3(xn)},[dt]:{transfer:mt,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Sn),fromReference:e=>e.applyMatrix3(xn).convertLinearToSRGB()}},wn=new Set([ut,ft]),Tn={enabled:!0,_workingColorSpace:ut,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!wn.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=Cn[t].toReference,i=Cn[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return Cn[e].primaries},getTransfer:function(e){return e===``?pt:Cn[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(Cn[t].luminanceCoefficients)}};function En(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Dn(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}var On,kn=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{On===void 0&&(On=mn(`canvas`)),On.width=e.width,On.height=e.height;let n=On.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=On}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=mn(`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;e0&&(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 s:e.x-=Math.floor(e.x);break;case c:e.x=e.x<0?0:1;break;case l: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 s:e.y-=Math.floor(e.y);break;case c:e.y=e.y<0?0:1;break;case l: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++}};Pn.DEFAULT_IMAGE=null,Pn.DEFAULT_MAPPING=300,Pn.DEFAULT_ANISOTROPY=4;var Fn=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(Vt(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},M=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(Wn.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Wn.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 Un.copy(this).projectOnVector(e),this.sub(Un)}reflect(e){return this.sub(Un.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(Vt(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}},Un=new M,Wn=new Hn,Gn=class{constructor(e=new M(1/0,1/0,1/0),t=new M(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,qn),qn.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(tr),nr.subVectors(this.max,tr),Yn.subVectors(e.a,tr),Xn.subVectors(e.b,tr),Zn.subVectors(e.c,tr),Qn.subVectors(Xn,Yn),$n.subVectors(Zn,Xn),er.subVectors(Yn,Zn);let t=[0,-Qn.z,Qn.y,0,-$n.z,$n.y,0,-er.z,er.y,Qn.z,0,-Qn.x,$n.z,0,-$n.x,er.z,0,-er.x,-Qn.y,Qn.x,0,-$n.y,$n.x,0,-er.y,er.x,0];return!ar(t,Yn,Xn,Zn,nr)||(t=[1,0,0,0,1,0,0,0,1],!ar(t,Yn,Xn,Zn,nr))?!1:(rr.crossVectors(Qn,$n),t=[rr.x,rr.y,rr.z],ar(t,Yn,Xn,Zn,nr))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,qn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(qn).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:(Kn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Kn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Kn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Kn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Kn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Kn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Kn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Kn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Kn),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)}},Kn=[new M,new M,new M,new M,new M,new M,new M,new M],qn=new M,Jn=new Gn,Yn=new M,Xn=new M,Zn=new M,Qn=new M,$n=new M,er=new M,tr=new M,nr=new M,rr=new M,ir=new M;function ar(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){ir.fromArray(e,a);let o=i.x*Math.abs(ir.x)+i.y*Math.abs(ir.y)+i.z*Math.abs(ir.z),s=t.dot(ir),c=n.dot(ir),l=r.dot(ir);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}var or=new Gn,sr=new M,cr=new M,lr=class{constructor(e=new M,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?or.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;sr.subVectors(e,this.center);let t=sr.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(sr,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):(cr.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(sr.copy(e.center).add(cr)),this.expandByPoint(sr.copy(e.center).sub(cr))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},ur=new M,dr=new M,fr=new M,pr=new M,mr=new M,hr=new M,gr=new M,_r=class{constructor(e=new M,t=new M(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,ur)),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=ur.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(ur.copy(this.origin).addScaledVector(this.direction,t),ur.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){dr.copy(e).add(t).multiplyScalar(.5),fr.copy(t).sub(e).normalize(),pr.copy(this.origin).sub(dr);let i=e.distanceTo(t)*.5,a=-this.direction.dot(fr),o=pr.dot(this.direction),s=-pr.dot(fr),c=pr.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(dr).addScaledVector(fr,d),f}intersectSphere(e,t){ur.subVectors(e.center,this.origin);let n=ur.dot(this.direction),r=ur.dot(ur)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,ur)!==null}intersectTriangle(e,t,n,r,i){mr.subVectors(t,e),hr.subVectors(n,e),gr.crossVectors(mr,hr);let a=this.direction.dot(gr),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;pr.subVectors(this.origin,e);let s=o*this.direction.dot(hr.crossVectors(pr,hr));if(s<0)return null;let c=o*this.direction.dot(mr.cross(pr));if(c<0||s+c>a)return null;let l=-o*pr.dot(gr);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)}},N=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/vr.setFromMatrixColumn(e,0).length(),i=1/vr.setFromMatrixColumn(e,1).length(),a=1/vr.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(br,e,xr)}lookAt(e,t,n){let r=this.elements;return wr.subVectors(e,t),wr.lengthSq()===0&&(wr.z=1),wr.normalize(),Sr.crossVectors(n,wr),Sr.lengthSq()===0&&(Math.abs(n.z)===1?wr.x+=1e-4:wr.z+=1e-4,wr.normalize(),Sr.crossVectors(n,wr)),Sr.normalize(),Cr.crossVectors(wr,Sr),r[0]=Sr.x,r[4]=Cr.x,r[8]=wr.x,r[1]=Sr.y,r[5]=Cr.y,r[9]=wr.y,r[2]=Sr.z,r[6]=Cr.z,r[10]=wr.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],ee=r[13],O=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*O+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*ee+s*re+c*se,i[1]=l*x+u*T+d*O+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*ee+d*re+f*se,i[2]=p*x+m*T+h*O+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*ee+h*re+g*se,i[3]=_*x+v*T+y*O+b*ie,i[7]=_*S+v*E+y*te+b*ae,i[11]=_*C+v*D+y*ne+b*oe,i[15]=_*w+v*ee+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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=vr.set(r[0],r[1],r[2]).length(),a=vr.set(r[4],r[5],r[6]).length(),o=vr.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],yr.copy(this);let s=1/i,c=1/a,l=1/o;return yr.elements[0]*=s,yr.elements[1]*=s,yr.elements[2]*=s,yr.elements[4]*=c,yr.elements[5]*=c,yr.elements[6]*=c,yr.elements[8]*=l,yr.elements[9]*=l,yr.elements[10]*=l,t.setFromRotationMatrix(yr),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=Nt){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=Nt){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}},vr=new M,yr=new N,br=new M(0,0,0),xr=new M(1,1,1),Sr=new M,Cr=new M,wr=new M,Tr=new N,Er=new Hn,Dr=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(Vt(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(-Vt(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(Vt(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(-Vt(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(Vt(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(-Vt(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Tr.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Tr,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Er.setFromEuler(this),this.setFromQuaternion(Er,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}};Dr.DEFAULT_ORDER=`XYZ`;var Or=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){Gr.subVectors(r,t),Kr.subVectors(n,t),qr.subVectors(e,t);let a=Gr.dot(Gr),o=Gr.dot(Kr),s=Gr.dot(qr),c=Kr.dot(Kr),l=Kr.dot(qr),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,Jr)===null?!1:Jr.x>=0&&Jr.y>=0&&Jr.x+Jr.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Jr)===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,Jr.x),s.addScaledVector(a,Jr.y),s.addScaledVector(o,Jr.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return ti.setScalar(0),ni.setScalar(0),ri.setScalar(0),ti.fromBufferAttribute(e,t),ni.fromBufferAttribute(e,n),ri.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(ti,i.x),a.addScaledVector(ni,i.y),a.addScaledVector(ri,i.z),a}static isFrontFacing(e,t,n,r){return Gr.subVectors(n,t),Kr.subVectors(e,t),Gr.cross(Kr).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 Gr.subVectors(this.c,this.b),Kr.subVectors(this.a,this.b),Gr.cross(Kr).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;Yr.subVectors(r,n),Xr.subVectors(i,n),Qr.subVectors(e,n);let s=Yr.dot(Qr),c=Xr.dot(Qr);if(s<=0&&c<=0)return t.copy(n);$r.subVectors(e,r);let l=Yr.dot($r),u=Xr.dot($r);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(Yr,a);ei.subVectors(e,i);let f=Yr.dot(ei),p=Xr.dot(ei);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(Xr,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return Zr.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(Zr,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Yr,a).addScaledVector(Xr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},ai={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},oi={h:0,s:0,l:0},si={h:0,s:0,l:0};function ci(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 P=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=lt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Tn.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Tn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Tn.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Tn.workingColorSpace){if(e=Ht(e,1),t=Vt(t,0,1),n=Vt(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=ci(i,r,e+1/3),this.g=ci(i,r,e),this.b=ci(i,r,e-1/3)}return Tn.toWorkingColorSpace(this,r),this}setStyle(e,t=lt){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=lt){let n=ai[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=En(e.r),this.g=En(e.g),this.b=En(e.b),this}copyLinearToSRGB(e){return this.r=Dn(e.r),this.g=Dn(e.g),this.b=Dn(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=lt){return Tn.fromWorkingColorSpace(li.copy(this),e),Math.round(Vt(li.r*255,0,255))*65536+Math.round(Vt(li.g*255,0,255))*256+Math.round(Vt(li.b*255,0,255))}getHexString(e=lt){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Tn.workingColorSpace){Tn.fromWorkingColorSpace(li.copy(this),t);let n=li.r,r=li.g,i=li.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+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){console.warn(`THREE.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.6,type:`Material`,generator:`Material.toJSON`}};n.uuid=this.uuid,n.type=this.type,this.name!==``&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==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.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.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++}},fi=class extends di{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new P(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 Dr,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}},pi=mi();function mi(){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 hi(e){Math.abs(e)>65504&&console.warn(`THREE.DataUtils.toHalfFloat(): Value out of range.`),e=Vt(e,-65504,65504),pi.floatView[0]=e;let t=pi.uint32View[0],n=t>>23&511;return pi.baseTable[n]+((t&8388607)>>pi.shiftTable[n])}function gi(e){let t=e>>10;return pi.uint32View[0]=pi.mantissaTable[pi.offsetTable[t]+(e&1023)]+pi.exponentTable[t],pi.floatView[0]}var _i={toHalfFloat:hi,fromHalfFloat:gi},vi=new M,yi=new A,bi=class{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=Ct,this.updateRanges=[],this.gpuType=E,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;r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2))&&(Li.copy(i).invert(),Ri.copy(e.ray).applyMatrix4(Li),!(n.boundingBox!==null&&Ri.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Ri)))}_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;in.far?null:{distance:l,point:qi.clone(),object:e}}function Xi(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,Vi),e.getVertexPosition(c,Hi),e.getVertexPosition(l,Ui);let u=Yi(e,t,n,r,Vi,Hi,Ui,Ki);if(u){let e=new M;ii.getBarycoord(Ki,Vi,Hi,Ui,e),i&&(u.uv=ii.getInterpolatedAttribute(i,s,c,l,e,new A)),a&&(u.uv1=ii.getInterpolatedAttribute(a,s,c,l,e,new A)),o&&(u.normal=ii.getInterpolatedAttribute(o,s,c,l,e,new M),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new M,materialIndex:0};ii.getNormal(Vi,Hi,Ui,t.normal),u.face=t,u.barycoord=e}return u}var Zi=class e extends Ii{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 F(c,3)),this.setAttribute(`normal`,new F(l,3)),this.setAttribute(`uv`,new F(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 M;for(let a=0;a0?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;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let e in this.extensions)this.extensions[e]===!0&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}},oa=new M,sa=new Hn,ca=new M,la=class extends Wr{constructor(){super(),this.isCamera=!0,this.type=`Camera`,this.matrixWorldInverse=new N,this.projectionMatrix=new N,this.projectionMatrixInverse=new N,this.coordinateSystem=Nt}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorld.decompose(oa,sa,ca),ca.x===1&&ca.y===1&&ca.z===1?this.matrixWorldInverse.copy(this.matrixWorld).invert():this.matrixWorldInverse.compose(oa,sa,ca.set(1,1,1)).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorld.decompose(oa,sa,ca),ca.x===1&&ca.y===1&&ca.z===1?this.matrixWorldInverse.copy(this.matrixWorld).invert():this.matrixWorldInverse.compose(oa,sa,ca.set(1,1,1)).invert()}clone(){return new this.constructor().copy(this)}},ua=new M,da=new A,fa=new A,pa=class extends la{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type=`PerspectiveCamera`,this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=zt*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(Rt*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return zt*2*Math.atan(Math.tan(Rt*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){ua.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(ua.x,ua.y).multiplyScalar(-e/ua.z),ua.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(ua.x,ua.y).multiplyScalar(-e/ua.z)}getViewSize(e,t){return this.getViewBounds(e,da,fa),t.subVectors(fa,da)}setViewOffset(e,t,n,r,i,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(Rt*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,i=-.5*r,a=this.view;if(this.view!==null&&this.view.enabled){let e=a.fullWidth,o=a.fullHeight;i+=a.offsetX*r/e,t-=a.offsetY*n/o,r*=a.width/e,n*=a.height/o}let o=this.filmOffset;o!==0&&(i+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+r,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},ma=-90,ha=1,ga=class extends Wr{constructor(e,t,n){super(),this.type=`CubeCamera`,this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new pa(ma,ha,e,t);r.layers=this.layers,this.add(r);let i=new pa(ma,ha,e,t);i.layers=this.layers,this.add(i);let a=new pa(ma,ha,e,t);a.layers=this.layers,this.add(a);let o=new pa(ma,ha,e,t);o.layers=this.layers,this.add(o);let s=new pa(ma,ha,e,t);s.layers=this.layers,this.add(s);let c=new pa(ma,ha,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,r,i,a,o,s]=t;for(let e of t)this.remove(e);if(e===2e3)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),i.up.set(0,0,-1),i.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),s.up.set(0,1,0),s.lookAt(0,0,-1);else if(e===2001)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),i.up.set(0,0,1),i.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),s.up.set(0,-1,0),s.lookAt(0,0,-1);else throw Error(`THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: `+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[i,a,o,s,c,l]=this.children,u=e.getRenderTarget(),d=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,i),e.setRenderTarget(n,1,r),e.render(t,a),e.setRenderTarget(n,2,r),e.render(t,o),e.setRenderTarget(n,3,r),e.render(t,s),e.setRenderTarget(n,4,r),e.render(t,c),n.texture.generateMipmaps=m,e.setRenderTarget(n,5,r),e.render(t,l),e.setRenderTarget(u,d,f),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}},_a=class extends Pn{constructor(e,t,n,r,i,a,o,s,c,l){e=e===void 0?[]:e,t=t===void 0?301:t,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}},va=class extends Ln{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let n={width:e,height:e,depth:1};this.texture=new _a([n,n,n,n,n,n],t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps===void 0?!1:t.generateMipmaps,this.texture.minFilter=t.minFilter===void 0?h:t.minFilter}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},r=new Zi(5,5,5),i=new aa({name:`CubemapFromEquirect`,uniforms:Qi(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});i.uniforms.tEquirect.value=t;let a=new Ji(r,i),o=t.minFilter;return t.minFilter===1008&&(t.minFilter=h),new ga(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,r){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}},ya=new M,ba=new M,xa=new j,Sa=class{constructor(e=new M(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=ya.subVectors(n,t).cross(ba.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){let n=e.delta(ya),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let i=-(e.start.dot(this.normal)+this.constant)/r;return i<0||i>1?null:t.copy(e.start).addScaledVector(n,i)}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||xa.getNormalMatrix(e),r=this.coplanarPoint(ya).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)}},Ca=new lr,wa=new M,Ta=class{constructor(e=new Sa,t=new Sa,n=new Sa,r=new Sa,i=new Sa,a=new Sa){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=Nt){let n=this.planes,r=e.elements,i=r[0],a=r[1],o=r[2],s=r[3],c=r[4],l=r[5],u=r[6],d=r[7],f=r[8],p=r[9],m=r[10],h=r[11],g=r[12],_=r[13],v=r[14],y=r[15];if(n[0].setComponents(s-i,d-c,h-f,y-g).normalize(),n[1].setComponents(s+i,d+c,h+f,y+g).normalize(),n[2].setComponents(s+a,d+l,h+p,y+_).normalize(),n[3].setComponents(s-a,d-l,h-p,y-_).normalize(),n[4].setComponents(s-o,d-u,h-m,y-v).normalize(),t===2e3)n[5].setComponents(s+o,d+u,h+m,y+v).normalize();else if(t===2001)n[5].setComponents(o,u,m,v).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(),Ca.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Ca.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Ca)}intersectsSprite(e){return Ca.center.set(0,0,0),Ca.radius=.7071067811865476,Ca.applyMatrix4(e.matrixWorld),this.intersectsSphere(Ca)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,wa.y=r.normal.y>0?e.max.y:e.min.y,wa.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(wa)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Ea(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Da(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},I={common:{diffuse:{value:new P(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new j},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new j}},envmap:{envMap:{value:null},envMapRotation:{value:new j},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new j}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new j}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new j},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new j},normalScale:{value:new A(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new j},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new j}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new j}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new j}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new P(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new P(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0},uvTransform:{value:new j}},sprite:{diffuse:{value:new P(16777215)},opacity:{value:1},center:{value:new A(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new j},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0}}},Aa={basic:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.fog]),vertexShader:ka.meshbasic_vert,fragmentShader:ka.meshbasic_frag},lambert:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.fog,I.lights,{emissive:{value:new P(0)}}]),vertexShader:ka.meshlambert_vert,fragmentShader:ka.meshlambert_frag},phong:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.fog,I.lights,{emissive:{value:new P(0)},specular:{value:new P(1118481)},shininess:{value:30}}]),vertexShader:ka.meshphong_vert,fragmentShader:ka.meshphong_frag},standard:{uniforms:$i([I.common,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.roughnessmap,I.metalnessmap,I.fog,I.lights,{emissive:{value:new P(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ka.meshphysical_vert,fragmentShader:ka.meshphysical_frag},toon:{uniforms:$i([I.common,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.gradientmap,I.fog,I.lights,{emissive:{value:new P(0)}}]),vertexShader:ka.meshtoon_vert,fragmentShader:ka.meshtoon_frag},matcap:{uniforms:$i([I.common,I.bumpmap,I.normalmap,I.displacementmap,I.fog,{matcap:{value:null}}]),vertexShader:ka.meshmatcap_vert,fragmentShader:ka.meshmatcap_frag},points:{uniforms:$i([I.points,I.fog]),vertexShader:ka.points_vert,fragmentShader:ka.points_frag},dashed:{uniforms:$i([I.common,I.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ka.linedashed_vert,fragmentShader:ka.linedashed_frag},depth:{uniforms:$i([I.common,I.displacementmap]),vertexShader:ka.depth_vert,fragmentShader:ka.depth_frag},normal:{uniforms:$i([I.common,I.bumpmap,I.normalmap,I.displacementmap,{opacity:{value:1}}]),vertexShader:ka.meshnormal_vert,fragmentShader:ka.meshnormal_frag},sprite:{uniforms:$i([I.sprite,I.fog]),vertexShader:ka.sprite_vert,fragmentShader:ka.sprite_frag},background:{uniforms:{uvTransform:{value:new j},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ka.background_vert,fragmentShader:ka.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new j}},vertexShader:ka.backgroundCube_vert,fragmentShader:ka.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ka.cube_vert,fragmentShader:ka.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ka.equirect_vert,fragmentShader:ka.equirect_frag},distanceRGBA:{uniforms:$i([I.common,I.displacementmap,{referencePosition:{value:new M},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ka.distanceRGBA_vert,fragmentShader:ka.distanceRGBA_frag},shadow:{uniforms:$i([I.lights,I.fog,{color:{value:new P(0)},opacity:{value:1}}]),vertexShader:ka.shadow_vert,fragmentShader:ka.shadow_frag}};Aa.physical={uniforms:$i([Aa.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new j},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new j},clearcoatNormalScale:{value:new A(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new j},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new j},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new j},sheen:{value:0},sheenColor:{value:new P(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new j},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new j},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new j},transmissionSamplerSize:{value:new A},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new j},attenuationDistance:{value:0},attenuationColor:{value:new P(0)},specularColor:{value:new P(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new j},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new j},anisotropyVector:{value:new A},anisotropyMap:{value:null},anisotropyMapTransform:{value:new j}}]),vertexShader:ka.meshphysical_vert,fragmentShader:ka.meshphysical_frag};var ja={r:0,b:0,g:0},Ma=new Dr,Na=new N;function Pa(e,t,n,r,i,a,o){let s=new P(0),c=a===!0?0:1,l,u,d=null,f=0,p=null;function m(e){let r=e.isScene===!0?e.background:null;return r&&r.isTexture&&(r=(e.backgroundBlurriness>0?n:t).get(r)),r}function h(t){let n=!1,i=m(t);i===null?_(s,c):i&&i.isColor&&(_(i,1),n=!0);let a=e.xr.getEnvironmentBlendMode();a===`additive`?r.buffers.color.setClear(0,0,0,1,o):a===`alpha-blend`&&r.buffers.color.setClear(0,0,0,0,o),(e.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))}function g(t,n){let r=m(n);r&&(r.isCubeTexture||r.mapping===306)?(u===void 0&&(u=new Ji(new Zi(1,1,1),new aa({name:`BackgroundCubeMaterial`,uniforms:Qi(Aa.backgroundCube.uniforms),vertexShader:Aa.backgroundCube.vertexShader,fragmentShader:Aa.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute(`normal`),u.geometry.deleteAttribute(`uv`),u.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,`envMap`,{get:function(){return this.uniforms.envMap.value}}),i.update(u)),Ma.copy(n.backgroundRotation),Ma.x*=-1,Ma.y*=-1,Ma.z*=-1,r.isCubeTexture&&r.isRenderTargetTexture===!1&&(Ma.y*=-1,Ma.z*=-1),u.material.uniforms.envMap.value=r,u.material.uniforms.flipEnvMap.value=r.isCubeTexture&&r.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(Na.makeRotationFromEuler(Ma)),u.material.toneMapped=Tn.getTransfer(r.colorSpace)!==mt,(d!==r||f!==r.version||p!==e.toneMapping)&&(u.material.needsUpdate=!0,d=r,f=r.version,p=e.toneMapping),u.layers.enableAll(),t.unshift(u,u.geometry,u.material,0,0,null)):r&&r.isTexture&&(l===void 0&&(l=new Ji(new Oa(2,2),new aa({name:`BackgroundMaterial`,uniforms:Qi(Aa.background.uniforms),vertexShader:Aa.background.vertexShader,fragmentShader:Aa.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute(`normal`),Object.defineProperty(l.material,`map`,{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=r,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.toneMapped=Tn.getTransfer(r.colorSpace)!==mt,r.matrixAutoUpdate===!0&&r.updateMatrix(),l.material.uniforms.uvTransform.value.copy(r.matrix),(d!==r||f!==r.version||p!==e.toneMapping)&&(l.material.needsUpdate=!0,d=r,f=r.version,p=e.toneMapping),l.layers.enableAll(),t.unshift(l,l.geometry,l.material,0,0,null))}function _(t,n){t.getRGB(ja,ta(e)),r.buffers.color.setClear(ja.r,ja.g,ja.b,n,o)}return{getClearColor:function(){return s},setClearColor:function(e,t=1){s.set(e),c=t,_(s,c)},getClearAlpha:function(){return c},setClearAlpha:function(e){c=e,_(s,c)},render:h,addToRenderList:g}}function Fa(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),r={},i=f(null),a=i,o=!1;function s(n,r,i,s,c){let u=!1,f=d(s,i,r);a!==f&&(a=f,l(a.object)),u=p(n,s,i,c),u&&m(n,s,i,c),c!==null&&t.update(c,e.ELEMENT_ARRAY_BUFFER),(u||o)&&(o=!1,b(n,r,i,s),c!==null&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(c).buffer))}function c(){return e.createVertexArray()}function l(t){return e.bindVertexArray(t)}function u(t){return e.deleteVertexArray(t)}function d(e,t,n){let i=n.wireframe===!0,a=r[e.id];a===void 0&&(a={},r[e.id]=a);let o=a[t.id];o===void 0&&(o={},a[t.id]=o);let s=o[i];return s===void 0&&(s=f(c()),o[i]=s),s}function f(e){let t=[],r=[],i=[];for(let e=0;e=0){let n=i[t],r=o[t];if(r===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(r=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(r=e.instanceColor)),n===void 0||n.attribute!==r||r&&n.data!==r.data)return!0;s++}return a.attributesNum!==s||a.index!==r}function m(e,t,n,r){let i={},o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=o[t];n===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(n=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(n=e.instanceColor));let r={};r.attribute=n,n&&n.data&&(r.data=n.data),i[t]=r,s++}a.attributes=i,a.attributesNum=s,a.index=r}function h(){let e=a.newAttributes;for(let t=0,n=e.length;t=0){let s=o[r];if(s===void 0&&(r===`instanceMatrix`&&n.instanceMatrix&&(s=n.instanceMatrix),r===`instanceColor`&&n.instanceColor&&(s=n.instanceColor)),s!==void 0){let r=s.normalized,o=s.itemSize,c=t.get(s);if(c===void 0)continue;let l=c.buffer,u=c.type,d=c.bytesPerElement,f=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===1013;if(s.isInterleavedBufferAttribute){let t=s.data,c=t.stride,p=s.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return`highp`;t=`mediump`}return t===`mediump`&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let l=n.precision===void 0?`highp`:n.precision,u=c(l);u!==l&&(console.warn(`THREE.WebGLRenderer:`,l,`not supported, using`,u,`instead.`),l=u);let d=n.logarithmicDepthBuffer===!0,f=n.reverseDepthBuffer===!0&&t.has(`EXT_clip_control`);if(f===!0){let e=t.get(`EXT_clip_control`);e.clipControlEXT(e.LOWER_LEFT_EXT,e.ZERO_TO_ONE_EXT)}let p=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),m=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_TEXTURE_SIZE),g=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),_=e.getParameter(e.MAX_VERTEX_ATTRIBS),v=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),y=e.getParameter(e.MAX_VARYING_VECTORS),b=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),x=m>0,S=e.getParameter(e.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:s,precision:l,logarithmicDepthBuffer:d,reverseDepthBuffer:f,maxTextures:p,maxVertexTextures:m,maxTextureSize:h,maxCubemapSize:g,maxAttributes:_,maxVertexUniforms:v,maxVaryings:y,maxFragmentUniforms:b,vertexTextures:x,maxSamples:S}}function Ra(e){let t=this,n=null,r=0,i=!1,a=!1,o=new Sa,s=new j,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let n=e.length!==0||t||r!==0||i;return i=t,r=e.length,n},this.beginShadows=function(){a=!0,u(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(e,t){n=u(e,t,0)},this.setState=function(t,o,s){let d=t.clippingPlanes,f=t.clipIntersection,p=t.clipShadows,m=e.get(t);if(!i||d===null||d.length===0||a&&!p)a?u(null):l();else{let e=a?0:r,t=e*4,i=m.clippingState||null;c.value=i,i=u(d,o,t,s);for(let e=0;e!==t;++e)i[e]=n[e];m.clippingState=i,this.numIntersection=f?this.numPlanes:0,this.numPlanes+=e}};function l(){c.value!==n&&(c.value=n,c.needsUpdate=r>0),t.numPlanes=r,t.numIntersection=0}function u(e,n,r,i){let a=e===null?0:e.length,l=null;if(a!==0){if(l=c.value,i!==!0||l===null){let t=r+a*4,i=n.matrixWorldInverse;s.getNormalMatrix(i),(l===null||l.length0){let o=new va(a.height);return o.fromEquirectangularTexture(e,r),t.set(r,o),r.addEventListener(`dispose`,i),n(o.texture,r.mapping)}else return null}}return r}function i(e){let n=e.target;n.removeEventListener(`dispose`,i);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function a(){t=new WeakMap}return{get:r,dispose:a}}var Ba=class extends la{constructor(e=-1,t=1,n=1,r=-1,i=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type=`OrthographicCamera`,this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=i,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,i,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2,i=n-e,a=n+e,o=r+t,s=r-t;if(this.view!==null&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;i+=e*this.view.offsetX,a=i+e*this.view.width,o-=t*this.view.offsetY,s=o-t*this.view.height}this.projectionMatrix.makeOrthographic(i,a,o,s,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}},Va=4,Ha=[.125,.215,.35,.446,.526,.582],Ua=20,Wa=new Ba,Ga=new P,Ka=null,qa=0,Ja=0,Ya=!1,Xa=(1+Math.sqrt(5))/2,Za=1/Xa,Qa=[new M(-Xa,Za,0),new M(Xa,Za,0),new M(-Za,0,Xa),new M(Za,0,Xa),new M(0,Xa,-Za),new M(0,Xa,Za),new M(-1,1,-1),new M(1,1,-1),new M(-1,1,1),new M(1,1,1)],$a=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100){Ka=this._renderer.getRenderTarget(),qa=this._renderer.getActiveCubeFace(),Ja=this._renderer.getActiveMipmapLevel(),Ya=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);let i=this._allocateTargets();return i.depthBuffer=!0,this._sceneToCubeUV(e,n,r,i),t>0&&this._blur(i,0,0,t),this._applyPMREM(i),this._cleanup(i),i}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=ao(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=io(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?c:0,c,c),s.setRenderTarget(r),f&&s.render(d,i),s.render(e,i)}d.geometry.dispose(),d.material.dispose(),s.toneMapping=l,s.autoClear=c,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=ao()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=io());let i=r?this._cubemapMaterial:this._equirectMaterial,a=new Ji(this._lodPlanes[0],i),o=i.uniforms;o.envMap.value=e;let s=this._cubeSize;no(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,Wa)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodPlanes.length;for(let t=1;tUa&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${Ua}`);let h=[],g=0;for(let e=0;e_-Va?r-_+Va:0),4*(this._cubeSize-v),3*v,2*v),s.setRenderTarget(t),s.render(l,Wa)}};function eo(e){let t=[],n=[],r=[],i=e,a=e-Va+1+Ha.length;for(let o=0;oe-Va?s=Ha[o-e+Va-1]:o===0&&(s=0),r.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];f.set(r,18*e),p.set(d,12*e);let i=[e,e,e,e,e,e];m.set(i,6*e)}let h=new Ii;h.setAttribute(`position`,new bi(f,3)),h.setAttribute(`uv`,new bi(p,2)),h.setAttribute(`faceIndex`,new bi(m,1)),t.push(h),i>Va&&i--}return{lodPlanes:t,sizeLods:n,sigmas:r}}function to(e,t,n){let r=new Ln(e,t,n);return r.texture.mapping=306,r.texture.name=`PMREM.cubeUv`,r.scissorTest=!0,r}function no(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function ro(e,t,n){let r=new Float32Array(Ua),i=new M(0,1,0);return new aa({name:`SphericalGaussianBlur`,defines:{n:Ua,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:r},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function io(){return new aa({name:`EquirectangularToCubeUV`,uniforms:{envMap:{value:null}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function ao(){return new aa({name:`CubemapToCubeUV`,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function oo(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function so(e){let t=new WeakMap,n=null;function r(r){if(r&&r.isTexture){let o=r.mapping,s=o===303||o===304,c=o===301||o===302;if(s||c){let o=t.get(r),l=o===void 0?0:o.texture.pmremVersion;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return n===null&&(n=new $a(e)),o=s?n.fromEquirectangular(r,o):n.fromCubemap(r,o),o.texture.pmremVersion=r.pmremVersion,t.set(r,o),o.texture;if(o!==void 0)return o.texture;{let l=r.image;return s&&l&&l.height>0||c&&l&&i(l)?(n=new $a(e),o=s?n.fromEquirectangular(r):n.fromCubemap(r),o.texture.pmremVersion=r.pmremVersion,t.set(r,o),r.addEventListener(`dispose`,a),o.texture):null}}}return r}function i(e){let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function a(e){let n=e.target;n.removeEventListener(`dispose`,a);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function o(){t=new WeakMap,n!==null&&(n.dispose(),n=null)}return{get:r,dispose:o}}function co(e){let t={};function n(n){if(t[n]!==void 0)return t[n];let r;switch(n){case`WEBGL_depth_texture`:r=e.getExtension(`WEBGL_depth_texture`)||e.getExtension(`MOZ_WEBGL_depth_texture`)||e.getExtension(`WEBKIT_WEBGL_depth_texture`);break;case`EXT_texture_filter_anisotropic`:r=e.getExtension(`EXT_texture_filter_anisotropic`)||e.getExtension(`MOZ_EXT_texture_filter_anisotropic`)||e.getExtension(`WEBKIT_EXT_texture_filter_anisotropic`);break;case`WEBGL_compressed_texture_s3tc`:r=e.getExtension(`WEBGL_compressed_texture_s3tc`)||e.getExtension(`MOZ_WEBGL_compressed_texture_s3tc`)||e.getExtension(`WEBKIT_WEBGL_compressed_texture_s3tc`);break;case`WEBGL_compressed_texture_pvrtc`:r=e.getExtension(`WEBGL_compressed_texture_pvrtc`)||e.getExtension(`WEBKIT_WEBGL_compressed_texture_pvrtc`);break;default:r=e.getExtension(n)}return t[n]=r,r}return{has:function(e){return n(e)!==null},init:function(){n(`EXT_color_buffer_float`),n(`WEBGL_clip_cull_distance`),n(`OES_texture_float_linear`),n(`EXT_color_buffer_half_float`),n(`WEBGL_multisampled_render_to_texture`),n(`WEBGL_render_shared_exponent`)},get:function(e){let t=n(e);return t===null&&_n(`THREE.WebGLRenderer: `+e+` extension not supported.`),t}}}function lo(e,t,n,r){let i={},a=new WeakMap;function o(e){let s=e.target;s.index!==null&&t.remove(s.index);for(let e in s.attributes)t.remove(s.attributes[e]);for(let e in s.morphAttributes){let n=s.morphAttributes[e];for(let e=0,r=n.length;et.maxTextureSize&&(m=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);let h=new Float32Array(p*m*4*u),g=new Rn(h,p,m,u);g.type=E,g.needsUpdate=!0;let _=f*4;for(let t=0;t0)return e;let i=t*n,a=xo[i];if(a===void 0&&(a=new Float32Array(i),xo[i]=a),t!==0){r.toArray(a,0);for(let r=1,i=0;r!==t;++r)i+=n,e[r].toArray(a,i)}return a}function Do(e,t){if(e.length!==t.length)return!1;for(let n=0,r=e.length;n`:` `} ${i}: ${n[e]}`)}return r.join(` +`)}function Ds(e){let t=Tn.getPrimaries(Tn.workingColorSpace),n=Tn.getPrimaries(e),r;switch(t===n?r=``:t===`p3`&&n===`rec709`?r=`LinearDisplayP3ToLinearSRGB`:t===`rec709`&&n===`p3`&&(r=`LinearSRGBToLinearDisplayP3`),e){case ut:case ft:return[r,`LinearTransferOETF`];case lt:case dt:return[r,`sRGBTransferOETF`];default:return console.warn(`THREE.WebGLProgram: Unsupported color space:`,e),[r,`LinearTransferOETF`]}}function Os(e,t,n){let r=e.getShaderParameter(t,e.COMPILE_STATUS),i=e.getShaderInfoLog(t).trim();if(r&&i===``)return``;let a=/ERROR: 0:(\d+)/.exec(i);if(a){let r=parseInt(a[1]);return n.toUpperCase()+` + +`+i+` + +`+Es(e.getShaderSource(t),r)}else return i}function ks(e,t){let n=Ds(t);return`vec4 ${e}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function As(e,t){let n;switch(t){case 1:n=`Linear`;break;case 2:n=`Reinhard`;break;case 3:n=`Cineon`;break;case 4:n=`ACESFilmic`;break;case 6:n=`AgX`;break;case 7:n=`Neutral`;break;case 5:n=`Custom`;break;default:console.warn(`THREE.WebGLProgram: Unsupported toneMapping:`,t),n=`Linear`}return`vec3 `+e+`( vec3 color ) { return `+n+`ToneMapping( color ); }`}var js=new M;function Ms(){return Tn.getLuminanceCoefficients(js),[`float luminance( const in vec3 rgb ) {`,` const vec3 weights = vec3( ${js.x.toFixed(4)}, ${js.y.toFixed(4)}, ${js.z.toFixed(4)} );`,` return dot( weights, rgb );`,`}`].join(` +`)}function Ns(e){return[e.extensionClipCullDistance?`#extension GL_ANGLE_clip_cull_distance : require`:``,e.extensionMultiDraw?`#extension GL_ANGLE_multi_draw : require`:``].filter(Is).join(` +`)}function Ps(e){let t=[];for(let n in e){let r=e[n];r!==!1&&t.push(`#define `+n+` `+r)}return t.join(` +`)}function Fs(e,t){let n={},r=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function Bs(e){return e.replace(zs,Hs)}var Vs=new Map;function Hs(e,t){let n=ka[t];if(n===void 0){let e=Vs.get(t);if(e!==void 0)n=ka[e],console.warn(`THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.`,t,e);else throw Error(`Can not resolve #include <`+t+`>`)}return Bs(n)}var Us=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ws(e){return e.replace(Us,Gs)}function Gs(e,t,n,r){let i=``;for(let e=parseInt(t);e0&&(g+=` +`),_=[`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m].filter(Is).join(` +`),_.length>0&&(_+=` +`)):(g=[Ks(n),`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m,n.extensionClipCullDistance?`#define USE_CLIP_DISTANCE`:``,n.batching?`#define USE_BATCHING`:``,n.batchingColor?`#define USE_BATCHING_COLOR`:``,n.instancing?`#define USE_INSTANCING`:``,n.instancingColor?`#define USE_INSTANCING_COLOR`:``,n.instancingMorph?`#define USE_INSTANCING_MORPH`:``,n.useFog&&n.fog?`#define USE_FOG`:``,n.useFog&&n.fogExp2?`#define FOG_EXP2`:``,n.map?`#define USE_MAP`:``,n.envMap?`#define USE_ENVMAP`:``,n.envMap?`#define `+u:``,n.lightMap?`#define USE_LIGHTMAP`:``,n.aoMap?`#define USE_AOMAP`:``,n.bumpMap?`#define USE_BUMPMAP`:``,n.normalMap?`#define USE_NORMALMAP`:``,n.normalMapObjectSpace?`#define USE_NORMALMAP_OBJECTSPACE`:``,n.normalMapTangentSpace?`#define USE_NORMALMAP_TANGENTSPACE`:``,n.displacementMap?`#define USE_DISPLACEMENTMAP`:``,n.emissiveMap?`#define USE_EMISSIVEMAP`:``,n.anisotropy?`#define USE_ANISOTROPY`:``,n.anisotropyMap?`#define USE_ANISOTROPYMAP`:``,n.clearcoatMap?`#define USE_CLEARCOATMAP`:``,n.clearcoatRoughnessMap?`#define USE_CLEARCOAT_ROUGHNESSMAP`:``,n.clearcoatNormalMap?`#define USE_CLEARCOAT_NORMALMAP`:``,n.iridescenceMap?`#define USE_IRIDESCENCEMAP`:``,n.iridescenceThicknessMap?`#define USE_IRIDESCENCE_THICKNESSMAP`:``,n.specularMap?`#define USE_SPECULARMAP`:``,n.specularColorMap?`#define USE_SPECULAR_COLORMAP`:``,n.specularIntensityMap?`#define USE_SPECULAR_INTENSITYMAP`:``,n.roughnessMap?`#define USE_ROUGHNESSMAP`:``,n.metalnessMap?`#define USE_METALNESSMAP`:``,n.alphaMap?`#define USE_ALPHAMAP`:``,n.alphaHash?`#define USE_ALPHAHASH`:``,n.transmission?`#define USE_TRANSMISSION`:``,n.transmissionMap?`#define USE_TRANSMISSIONMAP`:``,n.thicknessMap?`#define USE_THICKNESSMAP`:``,n.sheenColorMap?`#define USE_SHEEN_COLORMAP`:``,n.sheenRoughnessMap?`#define USE_SHEEN_ROUGHNESSMAP`:``,n.mapUv?`#define MAP_UV `+n.mapUv:``,n.alphaMapUv?`#define ALPHAMAP_UV `+n.alphaMapUv:``,n.lightMapUv?`#define LIGHTMAP_UV `+n.lightMapUv:``,n.aoMapUv?`#define AOMAP_UV `+n.aoMapUv:``,n.emissiveMapUv?`#define EMISSIVEMAP_UV `+n.emissiveMapUv:``,n.bumpMapUv?`#define BUMPMAP_UV `+n.bumpMapUv:``,n.normalMapUv?`#define NORMALMAP_UV `+n.normalMapUv:``,n.displacementMapUv?`#define DISPLACEMENTMAP_UV `+n.displacementMapUv:``,n.metalnessMapUv?`#define METALNESSMAP_UV `+n.metalnessMapUv:``,n.roughnessMapUv?`#define ROUGHNESSMAP_UV `+n.roughnessMapUv:``,n.anisotropyMapUv?`#define ANISOTROPYMAP_UV `+n.anisotropyMapUv:``,n.clearcoatMapUv?`#define CLEARCOATMAP_UV `+n.clearcoatMapUv:``,n.clearcoatNormalMapUv?`#define CLEARCOAT_NORMALMAP_UV `+n.clearcoatNormalMapUv:``,n.clearcoatRoughnessMapUv?`#define CLEARCOAT_ROUGHNESSMAP_UV `+n.clearcoatRoughnessMapUv:``,n.iridescenceMapUv?`#define IRIDESCENCEMAP_UV `+n.iridescenceMapUv:``,n.iridescenceThicknessMapUv?`#define IRIDESCENCE_THICKNESSMAP_UV `+n.iridescenceThicknessMapUv:``,n.sheenColorMapUv?`#define SHEEN_COLORMAP_UV `+n.sheenColorMapUv:``,n.sheenRoughnessMapUv?`#define SHEEN_ROUGHNESSMAP_UV `+n.sheenRoughnessMapUv:``,n.specularMapUv?`#define SPECULARMAP_UV `+n.specularMapUv:``,n.specularColorMapUv?`#define SPECULAR_COLORMAP_UV `+n.specularColorMapUv:``,n.specularIntensityMapUv?`#define SPECULAR_INTENSITYMAP_UV `+n.specularIntensityMapUv:``,n.transmissionMapUv?`#define TRANSMISSIONMAP_UV `+n.transmissionMapUv:``,n.thicknessMapUv?`#define THICKNESSMAP_UV `+n.thicknessMapUv:``,n.vertexTangents&&n.flatShading===!1?`#define USE_TANGENT`:``,n.vertexColors?`#define USE_COLOR`:``,n.vertexAlphas?`#define USE_COLOR_ALPHA`:``,n.vertexUv1s?`#define USE_UV1`:``,n.vertexUv2s?`#define USE_UV2`:``,n.vertexUv3s?`#define USE_UV3`:``,n.pointsUvs?`#define USE_POINTS_UV`:``,n.flatShading?`#define FLAT_SHADED`:``,n.skinning?`#define USE_SKINNING`:``,n.morphTargets?`#define USE_MORPHTARGETS`:``,n.morphNormals&&n.flatShading===!1?`#define USE_MORPHNORMALS`:``,n.morphColors?`#define USE_MORPHCOLORS`:``,n.morphTargetsCount>0?`#define MORPHTARGETS_TEXTURE_STRIDE `+n.morphTextureStride:``,n.morphTargetsCount>0?`#define MORPHTARGETS_COUNT `+n.morphTargetsCount:``,n.doubleSided?`#define DOUBLE_SIDED`:``,n.flipSided?`#define FLIP_SIDED`:``,n.shadowMapEnabled?`#define USE_SHADOWMAP`:``,n.shadowMapEnabled?`#define `+c:``,n.sizeAttenuation?`#define USE_SIZEATTENUATION`:``,n.numLightProbes>0?`#define USE_LIGHT_PROBES`:``,n.logarithmicDepthBuffer?`#define USE_LOGDEPTHBUF`:``,n.reverseDepthBuffer?`#define USE_REVERSEDEPTHBUF`:``,`uniform mat4 modelMatrix;`,`uniform mat4 modelViewMatrix;`,`uniform mat4 projectionMatrix;`,`uniform mat4 viewMatrix;`,`uniform mat3 normalMatrix;`,`uniform vec3 cameraPosition;`,`uniform bool isOrthographic;`,`#ifdef USE_INSTANCING`,` attribute mat4 instanceMatrix;`,`#endif`,`#ifdef USE_INSTANCING_COLOR`,` attribute vec3 instanceColor;`,`#endif`,`#ifdef USE_INSTANCING_MORPH`,` uniform sampler2D morphTexture;`,`#endif`,`attribute vec3 position;`,`attribute vec3 normal;`,`attribute vec2 uv;`,`#ifdef USE_UV1`,` attribute vec2 uv1;`,`#endif`,`#ifdef USE_UV2`,` attribute vec2 uv2;`,`#endif`,`#ifdef USE_UV3`,` attribute vec2 uv3;`,`#endif`,`#ifdef USE_TANGENT`,` attribute vec4 tangent;`,`#endif`,`#if defined( USE_COLOR_ALPHA )`,` attribute vec4 color;`,`#elif defined( USE_COLOR )`,` attribute vec3 color;`,`#endif`,`#ifdef USE_SKINNING`,` attribute vec4 skinIndex;`,` attribute vec4 skinWeight;`,`#endif`,` +`].filter(Is).join(` +`),_=[Ks(n),`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m,n.useFog&&n.fog?`#define USE_FOG`:``,n.useFog&&n.fogExp2?`#define FOG_EXP2`:``,n.alphaToCoverage?`#define ALPHA_TO_COVERAGE`:``,n.map?`#define USE_MAP`:``,n.matcap?`#define USE_MATCAP`:``,n.envMap?`#define USE_ENVMAP`:``,n.envMap?`#define `+l:``,n.envMap?`#define `+u:``,n.envMap?`#define `+d:``,f?`#define CUBEUV_TEXEL_WIDTH `+f.texelWidth:``,f?`#define CUBEUV_TEXEL_HEIGHT `+f.texelHeight:``,f?`#define CUBEUV_MAX_MIP `+f.maxMip+`.0`:``,n.lightMap?`#define USE_LIGHTMAP`:``,n.aoMap?`#define USE_AOMAP`:``,n.bumpMap?`#define USE_BUMPMAP`:``,n.normalMap?`#define USE_NORMALMAP`:``,n.normalMapObjectSpace?`#define USE_NORMALMAP_OBJECTSPACE`:``,n.normalMapTangentSpace?`#define USE_NORMALMAP_TANGENTSPACE`:``,n.emissiveMap?`#define USE_EMISSIVEMAP`:``,n.anisotropy?`#define USE_ANISOTROPY`:``,n.anisotropyMap?`#define USE_ANISOTROPYMAP`:``,n.clearcoat?`#define USE_CLEARCOAT`:``,n.clearcoatMap?`#define USE_CLEARCOATMAP`:``,n.clearcoatRoughnessMap?`#define USE_CLEARCOAT_ROUGHNESSMAP`:``,n.clearcoatNormalMap?`#define USE_CLEARCOAT_NORMALMAP`:``,n.dispersion?`#define USE_DISPERSION`:``,n.iridescence?`#define USE_IRIDESCENCE`:``,n.iridescenceMap?`#define USE_IRIDESCENCEMAP`:``,n.iridescenceThicknessMap?`#define USE_IRIDESCENCE_THICKNESSMAP`:``,n.specularMap?`#define USE_SPECULARMAP`:``,n.specularColorMap?`#define USE_SPECULAR_COLORMAP`:``,n.specularIntensityMap?`#define USE_SPECULAR_INTENSITYMAP`:``,n.roughnessMap?`#define USE_ROUGHNESSMAP`:``,n.metalnessMap?`#define USE_METALNESSMAP`:``,n.alphaMap?`#define USE_ALPHAMAP`:``,n.alphaTest?`#define USE_ALPHATEST`:``,n.alphaHash?`#define USE_ALPHAHASH`:``,n.sheen?`#define USE_SHEEN`:``,n.sheenColorMap?`#define USE_SHEEN_COLORMAP`:``,n.sheenRoughnessMap?`#define USE_SHEEN_ROUGHNESSMAP`:``,n.transmission?`#define USE_TRANSMISSION`:``,n.transmissionMap?`#define USE_TRANSMISSIONMAP`:``,n.thicknessMap?`#define USE_THICKNESSMAP`:``,n.vertexTangents&&n.flatShading===!1?`#define USE_TANGENT`:``,n.vertexColors||n.instancingColor||n.batchingColor?`#define USE_COLOR`:``,n.vertexAlphas?`#define USE_COLOR_ALPHA`:``,n.vertexUv1s?`#define USE_UV1`:``,n.vertexUv2s?`#define USE_UV2`:``,n.vertexUv3s?`#define USE_UV3`:``,n.pointsUvs?`#define USE_POINTS_UV`:``,n.gradientMap?`#define USE_GRADIENTMAP`:``,n.flatShading?`#define FLAT_SHADED`:``,n.doubleSided?`#define DOUBLE_SIDED`:``,n.flipSided?`#define FLIP_SIDED`:``,n.shadowMapEnabled?`#define USE_SHADOWMAP`:``,n.shadowMapEnabled?`#define `+c:``,n.premultipliedAlpha?`#define PREMULTIPLIED_ALPHA`:``,n.numLightProbes>0?`#define USE_LIGHT_PROBES`:``,n.decodeVideoTexture?`#define DECODE_VIDEO_TEXTURE`:``,n.logarithmicDepthBuffer?`#define USE_LOGDEPTHBUF`:``,n.reverseDepthBuffer?`#define USE_REVERSEDEPTHBUF`:``,`uniform mat4 viewMatrix;`,`uniform vec3 cameraPosition;`,`uniform bool isOrthographic;`,n.toneMapping===0?``:`#define TONE_MAPPING`,n.toneMapping===0?``:ka.tonemapping_pars_fragment,n.toneMapping===0?``:As(`toneMapping`,n.toneMapping),n.dithering?`#define DITHERING`:``,n.opaque?`#define OPAQUE`:``,ka.colorspace_pars_fragment,ks(`linearToOutputTexel`,n.outputColorSpace),Ms(),n.useDepthPacking?`#define DEPTH_PACKING `+n.depthPacking:``,` +`].filter(Is).join(` +`)),o=Bs(o),o=Ls(o,n),o=Rs(o,n),s=Bs(s),s=Ls(s,n),s=Rs(s,n),o=Ws(o),s=Ws(s),n.isRawShaderMaterial!==!0&&(v=`#version 300 es +`,g=[p,`#define attribute in`,`#define varying out`,`#define texture2D texture`].join(` +`)+` +`+g,_=[`#define varying in`,n.glslVersion===`300 es`?``:`layout(location = 0) out highp vec4 pc_fragColor;`,n.glslVersion===`300 es`?``:`#define gl_FragColor pc_fragColor`,`#define gl_FragDepthEXT gl_FragDepth`,`#define texture2D texture`,`#define textureCube texture`,`#define texture2DProj textureProj`,`#define texture2DLodEXT textureLod`,`#define texture2DProjLodEXT textureProjLod`,`#define textureCubeLodEXT textureLod`,`#define texture2DGradEXT textureGrad`,`#define texture2DProjGradEXT textureProjGrad`,`#define textureCubeGradEXT textureGrad`].join(` +`)+` +`+_);let y=v+g+o,b=v+_+s,x=Cs(i,i.VERTEX_SHADER,y),S=Cs(i,i.FRAGMENT_SHADER,b);i.attachShader(h,x),i.attachShader(h,S),n.index0AttributeName===void 0?n.morphTargets===!0&&i.bindAttribLocation(h,0,`position`):i.bindAttribLocation(h,0,n.index0AttributeName),i.linkProgram(h);function C(t){if(e.debug.checkShaderErrors){let n=i.getProgramInfoLog(h).trim(),r=i.getShaderInfoLog(x).trim(),a=i.getShaderInfoLog(S).trim(),o=!0,s=!0;if(i.getProgramParameter(h,i.LINK_STATUS)===!1)if(o=!1,typeof e.debug.onShaderError==`function`)e.debug.onShaderError(i,h,x,S);else{let e=Os(i,x,`vertex`),r=Os(i,S,`fragment`);console.error(`THREE.WebGLProgram: Shader Error `+i.getError()+` - VALIDATE_STATUS `+i.getProgramParameter(h,i.VALIDATE_STATUS)+` + +Material Name: `+t.name+` +Material Type: `+t.type+` + +Program Info Log: `+n+` +`+e+` +`+r)}else n===``?(r===``||a===``)&&(s=!1):console.warn(`THREE.WebGLProgram: Program Info Log:`,n);s&&(t.diagnostics={runnable:o,programLog:n,vertexShader:{log:r,prefix:g},fragmentShader:{log:a,prefix:_}})}i.deleteShader(x),i.deleteShader(S),w=new Ss(i,h),T=Fs(i,h)}let w;this.getUniforms=function(){return w===void 0&&C(this),w};let T;this.getAttributes=function(){return T===void 0&&C(this),T};let E=n.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return E===!1&&(E=i.getProgramParameter(h,ws)),E},this.destroy=function(){r.releaseStatesOfProgram(this),i.deleteProgram(h),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=Ts++,this.cacheKey=t,this.usedTimes=1,this.program=h,this.vertexShader=x,this.fragmentShader=S,this}var $s=0,ec=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),i=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(i)===!1&&(a.add(i),i.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,e.usedTimes===0&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new tc(e),t.set(e,n)),n}},tc=class{constructor(e){this.id=$s++,this.code=e,this.usedTimes=0}};function nc(e,t,n,r,i,a,o){let s=new Or,c=new ec,l=new Set,u=[],d=i.logarithmicDepthBuffer,f=i.reverseDepthBuffer,p=i.vertexTextures,m=i.precision,h={MeshDepthMaterial:`depth`,MeshDistanceMaterial:`distanceRGBA`,MeshNormalMaterial:`normal`,MeshBasicMaterial:`basic`,MeshLambertMaterial:`lambert`,MeshPhongMaterial:`phong`,MeshToonMaterial:`toon`,MeshStandardMaterial:`physical`,MeshPhysicalMaterial:`physical`,MeshMatcapMaterial:`matcap`,LineBasicMaterial:`basic`,LineDashedMaterial:`dashed`,PointsMaterial:`points`,ShadowMaterial:`shadow`,SpriteMaterial:`sprite`};function g(e){return l.add(e),e===0?`uv`:`uv${e}`}function _(a,s,u,_,v){let y=_.fog,b=v.geometry,x=a.isMeshStandardMaterial?_.environment:null,S=(a.isMeshStandardMaterial?n:t).get(a.envMap||x),C=S&&S.mapping===306?S.image.height:null,w=h[a.type];a.precision!==null&&(m=i.getMaxPrecision(a.precision),m!==a.precision&&console.warn(`THREE.WebGLProgram.getParameters:`,a.precision,`not supported, using`,m,`instead.`));let T=b.morphAttributes.position||b.morphAttributes.normal||b.morphAttributes.color,E=T===void 0?0:T.length,D=0;b.morphAttributes.position!==void 0&&(D=1),b.morphAttributes.normal!==void 0&&(D=2),b.morphAttributes.color!==void 0&&(D=3);let ee,O,te,ne;if(w){let e=Aa[w];ee=e.vertexShader,O=e.fragmentShader}else ee=a.vertexShader,O=a.fragmentShader,c.update(a),te=c.getVertexShaderID(a),ne=c.getFragmentShaderID(a);let re=e.getRenderTarget(),ie=v.isInstancedMesh===!0,ae=v.isBatchedMesh===!0,oe=!!a.map,se=!!a.matcap,ce=!!S,le=!!a.aoMap,ue=!!a.lightMap,de=!!a.bumpMap,fe=!!a.normalMap,pe=!!a.displacementMap,me=!!a.emissiveMap,he=!!a.metalnessMap,ge=!!a.roughnessMap,_e=a.anisotropy>0,ve=a.clearcoat>0,ye=a.dispersion>0,be=a.iridescence>0,xe=a.sheen>0,Se=a.transmission>0,k=_e&&!!a.anisotropyMap,Ce=ve&&!!a.clearcoatMap,we=ve&&!!a.clearcoatNormalMap,Te=ve&&!!a.clearcoatRoughnessMap,Ee=be&&!!a.iridescenceMap,De=be&&!!a.iridescenceThicknessMap,Oe=xe&&!!a.sheenColorMap,ke=xe&&!!a.sheenRoughnessMap,Ae=!!a.specularMap,je=!!a.specularColorMap,Me=!!a.specularIntensityMap,Ne=Se&&!!a.transmissionMap,Pe=Se&&!!a.thicknessMap,Fe=!!a.gradientMap,Ie=!!a.alphaMap,Le=a.alphaTest>0,Re=!!a.alphaHash,ze=!!a.extensions,Be=0;a.toneMapped&&(re===null||re.isXRRenderTarget===!0)&&(Be=e.toneMapping);let Ve={shaderID:w,shaderType:a.type,shaderName:a.name,vertexShader:ee,fragmentShader:O,defines:a.defines,customVertexShaderID:te,customFragmentShaderID:ne,isRawShaderMaterial:a.isRawShaderMaterial===!0,glslVersion:a.glslVersion,precision:m,batching:ae,batchingColor:ae&&v._colorsTexture!==null,instancing:ie,instancingColor:ie&&v.instanceColor!==null,instancingMorph:ie&&v.morphTexture!==null,supportsVertexTextures:p,outputColorSpace:re===null?e.outputColorSpace:re.isXRRenderTarget===!0?re.texture.colorSpace:ut,alphaToCoverage:!!a.alphaToCoverage,map:oe,matcap:se,envMap:ce,envMapMode:ce&&S.mapping,envMapCubeUVHeight:C,aoMap:le,lightMap:ue,bumpMap:de,normalMap:fe,displacementMap:p&&pe,emissiveMap:me,normalMapObjectSpace:fe&&a.normalMapType===1,normalMapTangentSpace:fe&&a.normalMapType===0,metalnessMap:he,roughnessMap:ge,anisotropy:_e,anisotropyMap:k,clearcoat:ve,clearcoatMap:Ce,clearcoatNormalMap:we,clearcoatRoughnessMap:Te,dispersion:ye,iridescence:be,iridescenceMap:Ee,iridescenceThicknessMap:De,sheen:xe,sheenColorMap:Oe,sheenRoughnessMap:ke,specularMap:Ae,specularColorMap:je,specularIntensityMap:Me,transmission:Se,transmissionMap:Ne,thicknessMap:Pe,gradientMap:Fe,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Ie,alphaTest:Le,alphaHash:Re,combine:a.combine,mapUv:oe&&g(a.map.channel),aoMapUv:le&&g(a.aoMap.channel),lightMapUv:ue&&g(a.lightMap.channel),bumpMapUv:de&&g(a.bumpMap.channel),normalMapUv:fe&&g(a.normalMap.channel),displacementMapUv:pe&&g(a.displacementMap.channel),emissiveMapUv:me&&g(a.emissiveMap.channel),metalnessMapUv:he&&g(a.metalnessMap.channel),roughnessMapUv:ge&&g(a.roughnessMap.channel),anisotropyMapUv:k&&g(a.anisotropyMap.channel),clearcoatMapUv:Ce&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:we&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Te&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:Ee&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:De&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:Oe&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:ke&&g(a.sheenRoughnessMap.channel),specularMapUv:Ae&&g(a.specularMap.channel),specularColorMapUv:je&&g(a.specularColorMap.channel),specularIntensityMapUv:Me&&g(a.specularIntensityMap.channel),transmissionMapUv:Ne&&g(a.transmissionMap.channel),thicknessMapUv:Pe&&g(a.thicknessMap.channel),alphaMapUv:Ie&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&(fe||_e),vertexColors:a.vertexColors,vertexAlphas:a.vertexColors===!0&&!!b.attributes.color&&b.attributes.color.itemSize===4,pointsUvs:v.isPoints===!0&&!!b.attributes.uv&&(oe||Ie),fog:!!y,useFog:a.fog===!0,fogExp2:!!y&&y.isFogExp2,flatShading:a.flatShading===!0,sizeAttenuation:a.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:f,skinning:v.isSkinnedMesh===!0,morphTargets:b.morphAttributes.position!==void 0,morphNormals:b.morphAttributes.normal!==void 0,morphColors:b.morphAttributes.color!==void 0,morphTargetsCount:E,morphTextureStride:D,numDirLights:s.directional.length,numPointLights:s.point.length,numSpotLights:s.spot.length,numSpotLightMaps:s.spotLightMap.length,numRectAreaLights:s.rectArea.length,numHemiLights:s.hemi.length,numDirLightShadows:s.directionalShadowMap.length,numPointLightShadows:s.pointShadowMap.length,numSpotLightShadows:s.spotShadowMap.length,numSpotLightShadowsWithMaps:s.numSpotLightShadowsWithMaps,numLightProbes:s.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&u.length>0,shadowMapType:e.shadowMap.type,toneMapping:Be,decodeVideoTexture:oe&&a.map.isVideoTexture===!0&&Tn.getTransfer(a.map.colorSpace)===`srgb`,premultipliedAlpha:a.premultipliedAlpha,doubleSided:a.side===2,flipSided:a.side===1,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:ze&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(ze&&a.extensions.multiDraw===!0||ae)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return Ve.vertexUv1s=l.has(1),Ve.vertexUv2s=l.has(2),Ve.vertexUv3s=l.has(3),l.clear(),Ve}function v(t){let n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),t.defines!==void 0)for(let e in t.defines)n.push(e),n.push(t.defines[e]);return t.isRawShaderMaterial===!1&&(y(n,t),b(n,t),n.push(e.outputColorSpace)),n.push(t.customProgramCacheKey),n.join()}function y(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}function b(e,t){s.disableAll(),t.supportsVertexTextures&&s.enable(0),t.instancing&&s.enable(1),t.instancingColor&&s.enable(2),t.instancingMorph&&s.enable(3),t.matcap&&s.enable(4),t.envMap&&s.enable(5),t.normalMapObjectSpace&&s.enable(6),t.normalMapTangentSpace&&s.enable(7),t.clearcoat&&s.enable(8),t.iridescence&&s.enable(9),t.alphaTest&&s.enable(10),t.vertexColors&&s.enable(11),t.vertexAlphas&&s.enable(12),t.vertexUv1s&&s.enable(13),t.vertexUv2s&&s.enable(14),t.vertexUv3s&&s.enable(15),t.vertexTangents&&s.enable(16),t.anisotropy&&s.enable(17),t.alphaHash&&s.enable(18),t.batching&&s.enable(19),t.dispersion&&s.enable(20),t.batchingColor&&s.enable(21),e.push(s.mask),s.disableAll(),t.fog&&s.enable(0),t.useFog&&s.enable(1),t.flatShading&&s.enable(2),t.logarithmicDepthBuffer&&s.enable(3),t.reverseDepthBuffer&&s.enable(4),t.skinning&&s.enable(5),t.morphTargets&&s.enable(6),t.morphNormals&&s.enable(7),t.morphColors&&s.enable(8),t.premultipliedAlpha&&s.enable(9),t.shadowMapEnabled&&s.enable(10),t.doubleSided&&s.enable(11),t.flipSided&&s.enable(12),t.useDepthPacking&&s.enable(13),t.dithering&&s.enable(14),t.transmission&&s.enable(15),t.sheen&&s.enable(16),t.opaque&&s.enable(17),t.pointsUvs&&s.enable(18),t.decodeVideoTexture&&s.enable(19),t.alphaToCoverage&&s.enable(20),e.push(s.mask)}function x(e){let t=h[e.type],n;if(t){let e=Aa[t];n=na.clone(e.uniforms)}else n=e.uniforms;return n}function S(t,n){let r;for(let e=0,t=u.length;e0?r.push(u):a.transparent===!0?i.push(u):n.push(u),e.onAfterRenderListPush?.(e,t,a,l)}function c(e,t,a,s,c,l){let u=o(e,t,a,s,c,l);a.transmission>0?r.unshift(u):a.transparent===!0?i.unshift(u):n.unshift(u)}function l(e,t){n.length>1&&n.sort(e||ic),r.length>1&&r.sort(t||ac),i.length>1&&i.sort(t||ac)}function u(){for(let n=t,r=e.length;n=r.length?(i=new oc,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function cc(){let e={};return{get:function(t){if(e[t.id]!==void 0)return e[t.id];let n;switch(t.type){case`DirectionalLight`:n={direction:new M,color:new P};break;case`SpotLight`:n={position:new M,direction:new M,color:new P,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:n={position:new M,color:new P,distance:0,decay:0};break;case`HemisphereLight`:n={direction:new M,skyColor:new P,groundColor:new P};break;case`RectAreaLight`:n={color:new P,position:new M,halfWidth:new M,halfHeight:new M};break}return e[t.id]=n,n}}}function lc(){let e={};return{get:function(t){if(e[t.id]!==void 0)return e[t.id];let n;switch(t.type){case`DirectionalLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A};break;case`SpotLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A};break;case`PointLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A,shadowCameraNear:1,shadowCameraFar:1e3};break}return e[t.id]=n,n}}}var uc=0;function dc(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function fc(e){let t=new cc,n=lc(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)r.probe.push(new M);let i=new M,a=new N,o=new N;function s(i){let a=0,o=0,s=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0;i.sort(dc);for(let e=0,y=i.length;e0&&(e.has(`OES_texture_float_linear`)===!0?(r.rectAreaLTC1=I.LTC_FLOAT_1,r.rectAreaLTC2=I.LTC_FLOAT_2):(r.rectAreaLTC1=I.LTC_HALF_1,r.rectAreaLTC2=I.LTC_HALF_2)),r.ambient[0]=a,r.ambient[1]=o,r.ambient[2]=s;let y=r.hash;(y.directionalLength!==c||y.pointLength!==l||y.spotLength!==u||y.rectAreaLength!==d||y.hemiLength!==f||y.numDirectionalShadows!==p||y.numPointShadows!==m||y.numSpotShadows!==h||y.numSpotMaps!==g||y.numLightProbes!==v)&&(r.directional.length=c,r.spot.length=u,r.rectArea.length=d,r.point.length=l,r.hemi.length=f,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=m,r.pointShadowMap.length=m,r.spotShadow.length=h,r.spotShadowMap.length=h,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=m,r.spotLightMatrix.length=h+g-_,r.spotLightMap.length=g,r.numSpotLightShadowsWithMaps=_,r.numLightProbes=v,y.directionalLength=c,y.pointLength=l,y.spotLength=u,y.rectAreaLength=d,y.hemiLength=f,y.numDirectionalShadows=p,y.numPointShadows=m,y.numSpotShadows=h,y.numSpotMaps=g,y.numLightProbes=v,r.version=uc++)}function c(e,t){let n=0,s=0,c=0,l=0,u=0,d=t.matrixWorldInverse;for(let t=0,f=e.length;t=i.length?(a=new pc(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var hc=class extends di{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type=`MeshDepthMaterial`,this.depthPacking=at,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},gc=class extends di{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type=`MeshDistanceMaterial`,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},_c=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,vc=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function yc(e,t,n){let r=new Ta,i=new A,a=new A,o=new Fn,s=new hc({depthPacking:ot}),c=new gc,l={},d=n.maxTextureSize,f={0:1,1:0,2:2},p=new aa({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new A},radius:{value:4}},vertexShader:_c,fragmentShader:vc}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new Ii;h.setAttribute(`position`,new bi(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new Ji(h,p),_=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;this.render=function(t,n,s){if(_.enabled===!1||_.autoUpdate===!1&&_.needsUpdate===!1||t.length===0)return;let c=e.getRenderTarget(),l=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.state;p.setBlending(0),p.buffers.color.setClear(1,1,1,1),p.buffers.depth.setTest(!0),p.setScissorTest(!1);let m=v!==3&&this.type===3,h=v===3&&this.type!==3;for(let c=0,l=t.length;cd||i.y>d)&&(i.x>d&&(a.x=Math.floor(d/g.x),i.x=a.x*g.x,f.mapSize.x=a.x),i.y>d&&(a.y=Math.floor(d/g.y),i.y=a.y*g.y,f.mapSize.y=a.y)),f.map===null||m===!0||h===!0){let e=this.type===3?{}:{minFilter:u,magFilter:u};f.map!==null&&f.map.dispose(),f.map=new Ln(i.x,i.y,e),f.map.texture.name=l.name+`.shadowMap`,f.camera.updateProjectionMatrix()}e.setRenderTarget(f.map),e.clear();let _=f.getViewportCount();for(let e=0;e<_;e++){let t=f.getViewport(e);o.set(a.x*t.x,a.y*t.y,a.x*t.z,a.y*t.w),p.viewport(o),f.updateMatrices(l,e),r=f.getFrustum(),x(n,s,f.camera,l,this.type)}f.isPointLightShadow!==!0&&this.type===3&&y(f,s),f.needsUpdate=!1}v=this.type,_.needsUpdate=!1,e.setRenderTarget(c,l,f)};function y(n,r){let a=t.update(g);p.defines.VSM_SAMPLES!==n.blurSamples&&(p.defines.VSM_SAMPLES=n.blurSamples,m.defines.VSM_SAMPLES=n.blurSamples,p.needsUpdate=!0,m.needsUpdate=!0),n.mapPass===null&&(n.mapPass=new Ln(i.x,i.y)),p.uniforms.shadow_pass.value=n.map.texture,p.uniforms.resolution.value=n.mapSize,p.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(r,null,a,p,g,null),m.uniforms.shadow_pass.value=n.mapPass.texture,m.uniforms.resolution.value=n.mapSize,m.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(r,null,a,m,g,null)}function b(t,n,r,i){let a=null,o=r.isPointLight===!0?t.customDistanceMaterial:t.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?c:s,e.localClippingEnabled&&n.clipShadows===!0&&Array.isArray(n.clippingPlanes)&&n.clippingPlanes.length!==0||n.displacementMap&&n.displacementScale!==0||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){let e=a.uuid,t=n.uuid,r=l[e];r===void 0&&(r={},l[e]=r);let i=r[t];i===void 0&&(i=a.clone(),r[t]=i,n.addEventListener(`dispose`,S)),a=i}if(a.visible=n.visible,a.wireframe=n.wireframe,i===3?a.side=n.shadowSide===null?n.side:n.shadowSide:a.side=n.shadowSide===null?f[n.side]:n.shadowSide,a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,r.isPointLight===!0&&a.isMeshDistanceMaterial===!0){let t=e.properties.get(a);t.light=r}return a}function x(n,i,a,o,s){if(n.visible===!1)return;if(n.layers.test(i.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&s===3)&&(!n.frustumCulled||r.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);let r=t.update(n),c=n.material;if(Array.isArray(c)){let t=r.groups;for(let l=0,u=t.length;l=2):(re=parseFloat(/^WebGL (\d)/.exec(ie)[1]),ne=re>=1);let ae=null,oe={},se=e.getParameter(e.SCISSOR_BOX),ce=e.getParameter(e.VIEWPORT),le=new Fn().fromArray(se),ue=new Fn().fromArray(ce);function de(t,n,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;ot?(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2):(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0),e}function Cc(e,t){let n=e.image&&e.image.width?e.image.width/e.image.height:1;return n>t?(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0):(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2),e}function wc(e){return e.repeat.x=1,e.repeat.y=1,e.offset.x=0,e.offset.y=0,e}function Tc(e,t,n,r){let i=Ec(r);switch(n){case ie:return e*t;case se:return e*t;case ce:return e*t*2;case de:return e*t/i.components*i.byteLength;case fe:return e*t/i.components*i.byteLength;case pe:return e*t*2/i.components*i.byteLength;case me:return e*t*2/i.components*i.byteLength;case ae:return e*t*3/i.components*i.byteLength;case oe:return e*t*4/i.components*i.byteLength;case ge:return e*t*4/i.components*i.byteLength;case _e:case ve:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8;case ye:case be:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case Se:case Ce:return Math.max(e,16)*Math.max(t,8)/4;case xe:case k:return Math.max(e,8)*Math.max(t,8)/2;case we:case Te:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8;case Ee:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case De:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case Oe:return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16;case ke:return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16;case Ae:return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16;case je:return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16;case Me:return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16;case Ne:return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16;case Pe:return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16;case Fe:return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16;case Ie:return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16;case Le:return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16;case Re:return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16;case ze:return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16;case Be:return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16;case Ve:case He:case Ue:return Math.ceil(e/4)*Math.ceil(t/4)*16;case We:case Ge:return Math.ceil(e/4)*Math.ceil(t/4)*8;case Ke:case qe:return Math.ceil(e/4)*Math.ceil(t/4)*16}throw Error(`Unable to determine texture byte length for ${n} format.`)}function Ec(e){switch(e){case b:case x:return{byteLength:1,components:1};case C:case S:case D:return{byteLength:2,components:1};case ee:case O:return{byteLength:2,components:4};case T:case w:case E:return{byteLength:4,components:1};case ne:case re:return{byteLength:4,components:3}}throw Error(`Unknown texture type ${e}.`)}var Dc={contain:Sc,cover:Cc,fill:wc,getByteLength:Tc};function Oc(e,t,n,r,i,a,o){let f=t.has(`WEBGL_multisampled_render_to_texture`)?t.get(`WEBGL_multisampled_render_to_texture`):null,m=typeof navigator>`u`?!1:/OculusBrowser/g.test(navigator.userAgent),_=new A,y=new WeakMap,b,x=new WeakMap,S=!1;try{S=typeof OffscreenCanvas<`u`&&new OffscreenCanvas(1,1).getContext(`2d`)!==null}catch{}function C(e,t){return S?new OffscreenCanvas(e,t):mn(`canvas`)}function w(e,t,n){let r=1,i=Fe(e);if((i.width>n||i.height>n)&&(r=n/Math.max(i.width,i.height)),r<1)if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof VideoFrame<`u`&&e instanceof VideoFrame){let n=Math.floor(r*i.width),a=Math.floor(r*i.height);b===void 0&&(b=C(n,a));let o=t?C(n,a):b;return o.width=n,o.height=a,o.getContext(`2d`).drawImage(e,0,0,n,a),console.warn(`THREE.WebGLRenderer: Texture has been resized from (`+i.width+`x`+i.height+`) to (`+n+`x`+a+`).`),o}else return`data`in e&&console.warn(`THREE.WebGLRenderer: Image in DataTexture is too big (`+i.width+`x`+i.height+`).`),e;return e}function T(e){return e.generateMipmaps&&e.minFilter!==1003&&e.minFilter!==1006}function E(t){e.generateMipmap(t)}function D(n,r,i,a,o=!1){if(n!==null){if(e[n]!==void 0)return e[n];console.warn(`THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '`+n+`'`)}let s=r;if(r===e.RED&&(i===e.FLOAT&&(s=e.R32F),i===e.HALF_FLOAT&&(s=e.R16F),i===e.UNSIGNED_BYTE&&(s=e.R8)),r===e.RED_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.R8UI),i===e.UNSIGNED_SHORT&&(s=e.R16UI),i===e.UNSIGNED_INT&&(s=e.R32UI),i===e.BYTE&&(s=e.R8I),i===e.SHORT&&(s=e.R16I),i===e.INT&&(s=e.R32I)),r===e.RG&&(i===e.FLOAT&&(s=e.RG32F),i===e.HALF_FLOAT&&(s=e.RG16F),i===e.UNSIGNED_BYTE&&(s=e.RG8)),r===e.RG_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RG8UI),i===e.UNSIGNED_SHORT&&(s=e.RG16UI),i===e.UNSIGNED_INT&&(s=e.RG32UI),i===e.BYTE&&(s=e.RG8I),i===e.SHORT&&(s=e.RG16I),i===e.INT&&(s=e.RG32I)),r===e.RGB_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RGB8UI),i===e.UNSIGNED_SHORT&&(s=e.RGB16UI),i===e.UNSIGNED_INT&&(s=e.RGB32UI),i===e.BYTE&&(s=e.RGB8I),i===e.SHORT&&(s=e.RGB16I),i===e.INT&&(s=e.RGB32I)),r===e.RGBA_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RGBA8UI),i===e.UNSIGNED_SHORT&&(s=e.RGBA16UI),i===e.UNSIGNED_INT&&(s=e.RGBA32UI),i===e.BYTE&&(s=e.RGBA8I),i===e.SHORT&&(s=e.RGBA16I),i===e.INT&&(s=e.RGBA32I)),r===e.RGB&&(i===e.UNSIGNED_INT_5_9_9_9_REV&&(s=e.RGB9_E5),i===e.UNSIGNED_INT_10F_11F_11F_REV&&(s=e.R11F_G11F_B10F)),r===e.RGBA){let t=o?pt:Tn.getTransfer(a);i===e.FLOAT&&(s=e.RGBA32F),i===e.HALF_FLOAT&&(s=e.RGBA16F),i===e.UNSIGNED_BYTE&&(s=t===`srgb`?e.SRGB8_ALPHA8:e.RGBA8),i===e.UNSIGNED_SHORT_4_4_4_4&&(s=e.RGBA4),i===e.UNSIGNED_SHORT_5_5_5_1&&(s=e.RGB5_A1)}return(s===e.R16F||s===e.R32F||s===e.RG16F||s===e.RG32F||s===e.RGBA16F||s===e.RGBA32F)&&t.get(`EXT_color_buffer_float`),s}function ee(t,n){let r;return t?n===null||n===1014||n===1020?r=e.DEPTH24_STENCIL8:n===1015?r=e.DEPTH32F_STENCIL8:n===1012&&(r=e.DEPTH24_STENCIL8,console.warn(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):n===null||n===1014||n===1020?r=e.DEPTH_COMPONENT24:n===1015?r=e.DEPTH_COMPONENT32F:n===1012&&(r=e.DEPTH_COMPONENT16),r}function O(e,t){return T(e)===!0||e.isFramebufferTexture&&e.minFilter!==1003&&e.minFilter!==1006?Math.log2(Math.max(t.width,t.height))+1:e.mipmaps!==void 0&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function te(e){let t=e.target;t.removeEventListener(`dispose`,te),re(t),t.isVideoTexture&&y.delete(t)}function ne(e){let t=e.target;t.removeEventListener(`dispose`,ne),ae(t)}function re(e){let t=r.get(e);if(t.__webglInit===void 0)return;let n=e.source,i=x.get(n);if(i){let r=i[t.__cacheKey];r.usedTimes--,r.usedTimes===0&&ie(e),Object.keys(i).length===0&&x.delete(n)}r.remove(e)}function ie(t){let n=r.get(t);e.deleteTexture(n.__webglTexture);let i=t.source,a=x.get(i);delete a[n.__cacheKey],o.memory.textures--}function ae(t){let n=r.get(t);if(t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let r=0;r=i.maxTextures&&console.warn(`THREE.WebGLTextures: Trying to use `+e+` texture units while this GPU supports only `+i.maxTextures),oe+=1,e}function le(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}function de(t,i){let a=r.get(t);if(t.isVideoTexture&&Ne(t),t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){let e=t.image;if(e===null)console.warn(`THREE.WebGLRenderer: Texture marked for update but no image data found.`);else if(e.complete===!1)console.warn(`THREE.WebGLRenderer: Texture marked for update but image is incomplete`);else{be(a,t,i);return}}n.bindTexture(e.TEXTURE_2D,a.__webglTexture,e.TEXTURE0+i)}function fe(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){be(a,t,i);return}n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+i)}function pe(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){be(a,t,i);return}n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+i)}function me(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){xe(a,t,i);return}n.bindTexture(e.TEXTURE_CUBE_MAP,a.__webglTexture,e.TEXTURE0+i)}let he={[s]:e.REPEAT,[c]:e.CLAMP_TO_EDGE,[l]:e.MIRRORED_REPEAT},ge={[u]:e.NEAREST,[d]:e.NEAREST_MIPMAP_NEAREST,[p]:e.NEAREST_MIPMAP_LINEAR,[h]:e.LINEAR,[g]:e.LINEAR_MIPMAP_NEAREST,[v]:e.LINEAR_MIPMAP_LINEAR},_e={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function ve(n,a){if(a.type===1015&&t.has(`OES_texture_float_linear`)===!1&&(a.magFilter===1006||a.magFilter===1007||a.magFilter===1005||a.magFilter===1008||a.minFilter===1006||a.minFilter===1007||a.minFilter===1005||a.minFilter===1008)&&console.warn(`THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),e.texParameteri(n,e.TEXTURE_WRAP_S,he[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,he[a.wrapT]),(n===e.TEXTURE_3D||n===e.TEXTURE_2D_ARRAY)&&e.texParameteri(n,e.TEXTURE_WRAP_R,he[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,ge[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,ge[a.minFilter]),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,_e[a.compareFunction])),t.has(`EXT_texture_filter_anisotropic`)===!0){if(a.magFilter===1003||a.minFilter!==1005&&a.minFilter!==1008||a.type===1015&&t.has(`OES_texture_float_linear`)===!1)return;if(a.anisotropy>1||r.get(a).__currentAnisotropy){let o=t.get(`EXT_texture_filter_anisotropic`);e.texParameterf(n,o.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,i.getMaxAnisotropy())),r.get(a).__currentAnisotropy=a.anisotropy}}}function ye(t,n){let r=!1;t.__webglInit===void 0&&(t.__webglInit=!0,n.addEventListener(`dispose`,te));let i=n.source,a=x.get(i);a===void 0&&(a={},x.set(i,a));let s=le(n);if(s!==t.__cacheKey){a[s]===void 0&&(a[s]={texture:e.createTexture(),usedTimes:0},o.memory.textures++,r=!0),a[s].usedTimes++;let i=a[t.__cacheKey];i!==void 0&&(a[t.__cacheKey].usedTimes--,i.usedTimes===0&&ie(n)),t.__cacheKey=s,t.__webglTexture=a[s].texture}return r}function be(t,o,s){let c=e.TEXTURE_2D;(o.isDataArrayTexture||o.isCompressedArrayTexture)&&(c=e.TEXTURE_2D_ARRAY),o.isData3DTexture&&(c=e.TEXTURE_3D);let l=ye(t,o),u=o.source;n.bindTexture(c,t.__webglTexture,e.TEXTURE0+s);let d=r.get(u);if(u.version!==d.__version||l===!0){n.activeTexture(e.TEXTURE0+s);let t=Tn.getPrimaries(Tn.workingColorSpace),r=o.colorSpace===``?null:Tn.getPrimaries(o.colorSpace),f=o.colorSpace===``||t===r?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,o.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,o.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,f);let p=w(o.image,!1,i.maxTextureSize);p=Pe(o,p);let m=a.convert(o.format,o.colorSpace),h=a.convert(o.type),g=D(o.internalFormat,m,h,o.colorSpace,o.isVideoTexture);ve(c,o);let _,v=o.mipmaps,y=o.isVideoTexture!==!0,b=d.__version===void 0||l===!0,x=u.dataReady,S=O(o,p);if(o.isDepthTexture)g=ee(o.format===ue,o.type),b&&(y?n.texStorage2D(e.TEXTURE_2D,1,g,p.width,p.height):n.texImage2D(e.TEXTURE_2D,0,g,p.width,p.height,0,m,h,null));else if(o.isDataTexture)if(v.length>0){y&&b&&n.texStorage2D(e.TEXTURE_2D,S,g,v[0].width,v[0].height);for(let t=0,r=v.length;t0){let r=Tc(_.width,_.height,o.format,o.type);for(let i of o.layerUpdates){let a=_.data.subarray(i*r/_.data.BYTES_PER_ELEMENT,(i+1)*r/_.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,i,_.width,_.height,1,m,a,0,0)}o.clearLayerUpdates()}else n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,_.width,_.height,p.depth,m,_.data,0,0)}else n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,t,g,_.width,_.height,p.depth,0,_.data,0,0);else console.warn(`THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`);else y?x&&n.texSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,_.width,_.height,p.depth,m,h,_.data):n.texImage3D(e.TEXTURE_2D_ARRAY,t,g,_.width,_.height,p.depth,0,m,h,_.data)}else{y&&b&&n.texStorage2D(e.TEXTURE_2D,S,g,v[0].width,v[0].height);for(let t=0,r=v.length;t0){let t=Tc(p.width,p.height,o.format,o.type);for(let r of o.layerUpdates){let i=p.data.subarray(r*t/p.data.BYTES_PER_ELEMENT,(r+1)*t/p.data.BYTES_PER_ELEMENT);n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,r,p.width,p.height,1,m,h,i)}o.clearLayerUpdates()}else n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,p.width,p.height,p.depth,m,h,p.data)}else n.texImage3D(e.TEXTURE_2D_ARRAY,0,g,p.width,p.height,p.depth,0,m,h,p.data);else if(o.isData3DTexture)y?(b&&n.texStorage3D(e.TEXTURE_3D,S,g,p.width,p.height,p.depth),x&&n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,p.width,p.height,p.depth,m,h,p.data)):n.texImage3D(e.TEXTURE_3D,0,g,p.width,p.height,p.depth,0,m,h,p.data);else if(o.isFramebufferTexture){if(b)if(y)n.texStorage2D(e.TEXTURE_2D,S,g,p.width,p.height);else{let t=p.width,r=p.height;for(let i=0;i>=1,r>>=1}}else if(v.length>0){if(y&&b){let t=Fe(v[0]);n.texStorage2D(e.TEXTURE_2D,S,g,t.width,t.height)}for(let t=0,r=v.length;t0&&S++;let t=Fe(m[0]);n.texStorage2D(e.TEXTURE_CUBE_MAP,S,v,t.width,t.height)}for(let t=0;t<6;t++)if(p){y?x&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,m[t].width,m[t].height,g,_,m[t].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,v,m[t].width,m[t].height,0,g,_,m[t].data);for(let r=0;r>l),r=Math.max(1,i.height>>l);c===e.TEXTURE_3D||c===e.TEXTURE_2D_ARRAY?n.texImage3D(c,l,p,t,r,i.depth,0,u,d,null):n.texImage2D(c,l,p,t,r,0,u,d,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),Me(i)?f.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,s,c,r.get(o).__webglTexture,0,je(i)):(c===e.TEXTURE_2D||c>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&c<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,s,c,r.get(o).__webglTexture,l),n.bindFramebuffer(e.FRAMEBUFFER,null)}function k(t,n,r){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=ee(n.stencilBuffer,a),s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=je(n);Me(n)?f.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,c,o,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,c,o,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,o,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,s,e.RENDERBUFFER,t)}else{let t=n.textures;for(let i=0;i{delete i.__boundDepthTexture,delete i.__depthDisposeCallback,e.removeEventListener(`dispose`,t)};e.addEventListener(`dispose`,t),i.__depthDisposeCallback=t}i.__boundDepthTexture=e}if(t.depthTexture&&!i.__autoAllocateDepthBuffer){if(a)throw Error(`target.depthTexture not supported in Cube render targets`);Ce(i.__webglFramebuffer,t)}else if(a){i.__webglDepthbuffer=[];for(let r=0;r<6;r++)if(n.bindFramebuffer(e.FRAMEBUFFER,i.__webglFramebuffer[r]),i.__webglDepthbuffer[r]===void 0)i.__webglDepthbuffer[r]=e.createRenderbuffer(),k(i.__webglDepthbuffer[r],t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=i.__webglDepthbuffer[r];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,a)}}else if(n.bindFramebuffer(e.FRAMEBUFFER,i.__webglFramebuffer),i.__webglDepthbuffer===void 0)i.__webglDepthbuffer=e.createRenderbuffer(),k(i.__webglDepthbuffer,t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,r=i.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,r),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,r)}n.bindFramebuffer(e.FRAMEBUFFER,null)}function Te(t,n,i){let a=r.get(t);n!==void 0&&Se(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),i!==void 0&&we(t)}function Ee(t){let i=t.texture,s=r.get(t),c=r.get(i);t.addEventListener(`dispose`,ne);let l=t.textures,u=t.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=e.createTexture()),c.__version=i.version,o.memory.textures++),u){s.__webglFramebuffer=[];for(let t=0;t<6;t++)if(i.mipmaps&&i.mipmaps.length>0){s.__webglFramebuffer[t]=[];for(let n=0;n0){s.__webglFramebuffer=[];for(let t=0;t0&&Me(t)===!1){s.__webglMultisampledFramebuffer=e.createFramebuffer(),s.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,s.__webglMultisampledFramebuffer);for(let n=0;n0)for(let r=0;r0)for(let n=0;n0){if(Me(t)===!1){let i=t.textures,a=t.width,o=t.height,s=e.COLOR_BUFFER_BIT,c=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,l=r.get(t),u=i.length>1;if(u)for(let t=0;t0&&t.has(`WEBGL_multisampled_render_to_texture`)===!0&&n.__useRenderToTexture!==!1}function Ne(e){let t=o.render.frame;y.get(e)!==t&&(y.set(e,t),e.update())}function Pe(e,t){let n=e.colorSpace,r=e.format,i=e.type;return e.isCompressedTexture===!0||e.isVideoTexture===!0||n!==`srgb-linear`&&n!==``&&(Tn.getTransfer(n)===`srgb`?(r!==1023||i!==1009)&&console.warn(`THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):console.error(`THREE.WebGLTextures: Unsupported texture color space:`,n)),t}function Fe(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement?(_.width=e.naturalWidth||e.width,_.height=e.naturalHeight||e.height):typeof VideoFrame<`u`&&e instanceof VideoFrame?(_.width=e.displayWidth,_.height=e.displayHeight):(_.width=e.width,_.height=e.height),_}this.allocateTextureUnit=ce,this.resetTextureUnits=se,this.setTexture2D=de,this.setTexture2DArray=fe,this.setTexture3D=pe,this.setTextureCube=me,this.rebindTextures=Te,this.setupRenderTarget=Ee,this.updateRenderTargetMipmap=De,this.updateMultisampleRenderTarget=Ae,this.setupDepthRenderbuffer=we,this.setupFrameBufferTexture=Se,this.useMultisampledRTT=Me}function kc(e,t){function n(n,r=``){let i,a=Tn.getTransfer(r);if(n===1009)return e.UNSIGNED_BYTE;if(n===1017)return e.UNSIGNED_SHORT_4_4_4_4;if(n===1018)return e.UNSIGNED_SHORT_5_5_5_1;if(n===35902)return e.UNSIGNED_INT_5_9_9_9_REV;if(n===35899)return e.UNSIGNED_INT_10F_11F_11F_REV;if(n===1010)return e.BYTE;if(n===1011)return e.SHORT;if(n===1012)return e.UNSIGNED_SHORT;if(n===1013)return e.INT;if(n===1014)return e.UNSIGNED_INT;if(n===1015)return e.FLOAT;if(n===1016)return e.HALF_FLOAT;if(n===1021)return e.ALPHA;if(n===1022)return e.RGB;if(n===1023)return e.RGBA;if(n===1024)return e.LUMINANCE;if(n===1025)return e.LUMINANCE_ALPHA;if(n===1026)return e.DEPTH_COMPONENT;if(n===1027)return e.DEPTH_STENCIL;if(n===1028)return e.RED;if(n===1029)return e.RED_INTEGER;if(n===1030)return e.RG;if(n===1031)return e.RG_INTEGER;if(n===1033)return e.RGBA_INTEGER;if(n===33776||n===33777||n===33778||n===33779)if(a===`srgb`)if(i=t.get(`WEBGL_compressed_texture_s3tc_srgb`),i!==null){if(n===33776)return i.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===33777)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===33778)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===33779)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(i=t.get(`WEBGL_compressed_texture_s3tc`),i!==null){if(n===33776)return i.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===33777)return i.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===33778)return i.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===33779)return i.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===35840||n===35841||n===35842||n===35843)if(i=t.get(`WEBGL_compressed_texture_pvrtc`),i!==null){if(n===35840)return i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===35841)return i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===35842)return i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===35843)return i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===36196||n===37492||n===37496)if(i=t.get(`WEBGL_compressed_texture_etc`),i!==null){if(n===36196||n===37492)return a===`srgb`?i.COMPRESSED_SRGB8_ETC2:i.COMPRESSED_RGB8_ETC2;if(n===37496)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:i.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===37808||n===37809||n===37810||n===37811||n===37812||n===37813||n===37814||n===37815||n===37816||n===37817||n===37818||n===37819||n===37820||n===37821)if(i=t.get(`WEBGL_compressed_texture_astc`),i!==null){if(n===37808)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:i.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===37809)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:i.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===37810)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:i.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===37811)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:i.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===37812)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:i.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===37813)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:i.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===37814)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:i.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===37815)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:i.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===37816)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:i.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===37817)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:i.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===37818)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:i.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===37819)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:i.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===37820)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:i.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===37821)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:i.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===36492||n===36494||n===36495)if(i=t.get(`EXT_texture_compression_bptc`),i!==null){if(n===36492)return a===`srgb`?i.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:i.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===36494)return i.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===36495)return i.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===36283||n===36284||n===36285||n===36286)if(i=t.get(`EXT_texture_compression_rgtc`),i!==null){if(n===36492)return i.COMPRESSED_RED_RGTC1_EXT;if(n===36284)return i.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===36285)return i.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===36286)return i.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===1020?e.UNSIGNED_INT_24_8:e[n]===void 0?null:e[n]}return{convert:n}}var Ac=class extends pa{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},jc=class extends Wr{constructor(){super(),this.isGroup=!0,this.type=`Group`}},Mc={type:`move`},Nc=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new jc,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 jc,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new M,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new M),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new jc,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new M,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new M),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),s=.02,l=.005;c.inputState.pinching&&o>s+l?(c.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!c.inputState.pinching&&o<=s-l&&(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));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(Mc)))}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 jc;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},Pc=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,Fc=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`,Ic=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){let r=new Pn,i=e.properties.get(r);i.__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,n=new aa({vertexShader:Pc,fragmentShader:Fc,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Ji(new Oa(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Lc=class extends Ft{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=new Ic,h=t.getContextAttributes(),g=null,_=null,v=[],y=[],x=new A,S=null,C=new pa;C.layers.enable(1),C.viewport=new Fn;let w=new pa;w.layers.enable(2),w.viewport=new Fn;let E=[C,w],D=new Ac;D.layers.enable(1),D.layers.enable(2);let ee=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.controllerAutoUpdate=!0,this.getController=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getGripSpace()},this.getHand=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getHandSpace()};function ne(e){let t=y.indexOf(e.inputSource);if(t===-1)return;let n=v[t];n!==void 0&&(n.update(e.inputSource,e.frame,c||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function re(){r.removeEventListener(`select`,ne),r.removeEventListener(`selectstart`,ne),r.removeEventListener(`selectend`,ne),r.removeEventListener(`squeeze`,ne),r.removeEventListener(`squeezestart`,ne),r.removeEventListener(`squeezeend`,ne),r.removeEventListener(`end`,re),r.removeEventListener(`inputsourceschange`,ie);for(let e=0;e=0&&(y[r]=null,v[r]&&v[r].disconnect(n))}for(let t=0;t=y.length){y.push(n),r=e;break}else if(y[e]===null){y[e]=n,r=e;break}if(r===-1)break}let i=v[r];i&&i.connect(n)}}let ae=new M,se=new M;function ce(e,t,n){ae.setFromMatrixPosition(t.matrixWorld),se.setFromMatrixPosition(n.matrixWorld);let r=ae.distanceTo(se),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 de(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;m.texture!==null&&(m.depthNear>0&&(t=m.depthNear),m.depthFar>0&&(n=m.depthFar)),D.near=w.near=C.near=t,D.far=w.far=C.far=n,(ee!==D.near||O!==D.far)&&(r.updateRenderState({depthNear:D.near,depthFar:D.far}),ee=D.near,O=D.far);let i=e.parent,a=D.cameras;de(D,i);for(let e=0;e0&&(e.alphaTest.value=r.alphaTest);let i=t.get(r),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,Rc.copy(o),Rc.x*=-1,Rc.y*=-1,Rc.z*=-1,a.isCubeTexture&&a.isRenderTargetTexture===!1&&(Rc.y*=-1,Rc.z*=-1),e.envMapRotation.value.setFromMatrix4(zc.makeRotationFromEuler(Rc)),e.flipEnvMap.value=a.isCubeTexture&&a.isRenderTargetTexture===!1?-1:1,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 Vc(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;e0&&(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?console.warn(`THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.`):console.warn(`THREE.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 Hc=class{constructor(e={}){let{canvas:t=hn(),context:r=null,depth:i=!0,stencil:a=!1,alpha:o=!1,antialias:s=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:l=!1,powerPreference:u=`default`,failIfMajorPerformanceCaveat:d=!1}=e;this.isWebGLRenderer=!0;let f;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);f=r.getContextAttributes().alpha}else f=o;let p=new Uint32Array(4),m=new Int32Array(4),h=null,g=null,_=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=lt,this.toneMapping=0,this.toneMappingExposure=1;let x=this,S=!1,C=0,w=0,T=null,E=-1,ee=null,O=new Fn,te=new Fn,ne=null,re=new P(0),ie=0,ae=t.width,oe=t.height,se=1,ce=null,le=null,ue=new Fn(0,0,ae,oe),de=new Fn(0,0,ae,oe),fe=!1,pe=new Ta,me=!1,he=!1,ge=new N,_e=new N,ve=new M,ye=new Fn,be={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},xe=!1;function Se(){return T===null?se:1}let k=r;function Ce(e,n){return t.getContext(e,n)}try{let e={alpha:!0,depth:i,stencil:a,antialias:s,premultipliedAlpha:c,preserveDrawingBuffer:l,powerPreference:u,failIfMajorPerformanceCaveat:d};if(`setAttribute`in t&&t.setAttribute(`data-engine`,`three.js r${n}`),t.addEventListener(`webglcontextlost`,Xe,!1),t.addEventListener(`webglcontextrestored`,Ze,!1),t.addEventListener(`webglcontextcreationerror`,Qe,!1),k===null){let t=`webgl2`;if(k=Ce(t,e),k===null)throw Ce(t)?Error(`Error creating WebGL context with your selected attributes.`):Error(`Error creating WebGL context.`)}}catch(e){throw console.error(`THREE.WebGLRenderer: `+e.message),e}let we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){we=new co(k),we.init(),Ge=new kc(k,we),Te=new La(k,we,e,Ge),Ee=new xc(k),Te.reverseDepthBuffer&&Ee.buffers.depth.setReversed(!0),De=new fo(k),Oe=new rc,ke=new Oc(k,we,Ee,Oe,Te,Ge,De),Ae=new za(x),je=new so(x),Me=new Da(k),Ke=new Fa(k,Me),Ne=new lo(k,Me,De,Ke),Pe=new mo(k,Ne,Me,De),He=new po(k,Te,ke),ze=new Ra(Oe),Fe=new nc(x,Ae,je,we,Te,Ke,ze),Ie=new Bc(x,Oe),Le=new sc,Re=new mc(we),Ve=new Pa(x,Ae,je,Ee,Pe,f,c),Be=new yc(x,Pe,Te),qe=new Vc(k,De,Te,Ee),Ue=new Ia(k,we,De),We=new uo(k,we,De),De.programs=Fe.programs,x.capabilities=Te,x.extensions=we,x.properties=Oe,x.renderLists=Le,x.shadowMap=Be,x.state=Ee,x.info=De}Je();let Ye=new Lc(x,k);this.xr=Ye,this.getContext=function(){return k},this.getContextAttributes=function(){return k.getContextAttributes()},this.forceContextLoss=function(){let e=we.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=we.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return se},this.setPixelRatio=function(e){e!==void 0&&(se=e,this.setSize(ae,oe,!1))},this.getSize=function(e){return e.set(ae,oe)},this.setSize=function(e,n,r=!0){if(Ye.isPresenting){console.warn(`THREE.WebGLRenderer: Can't change size while VR device is presenting.`);return}ae=e,oe=n,t.width=Math.floor(e*se),t.height=Math.floor(n*se),r===!0&&(t.style.width=e+`px`,t.style.height=n+`px`),this.setViewport(0,0,e,n)},this.getDrawingBufferSize=function(e){return e.set(ae*se,oe*se).floor()},this.setDrawingBufferSize=function(e,n,r){ae=e,oe=n,se=r,t.width=Math.floor(e*r),t.height=Math.floor(n*r),this.setViewport(0,0,e,n)},this.getCurrentViewport=function(e){return e.copy(O)},this.getViewport=function(e){return e.copy(ue)},this.setViewport=function(e,t,n,r){e.isVector4?ue.set(e.x,e.y,e.z,e.w):ue.set(e,t,n,r),Ee.viewport(O.copy(ue).multiplyScalar(se).round())},this.getScissor=function(e){return e.copy(de)},this.setScissor=function(e,t,n,r){e.isVector4?de.set(e.x,e.y,e.z,e.w):de.set(e,t,n,r),Ee.scissor(te.copy(de).multiplyScalar(se).round())},this.getScissorTest=function(){return fe},this.setScissorTest=function(e){Ee.setScissorTest(fe=e)},this.setOpaqueSort=function(e){ce=e},this.setTransparentSort=function(e){le=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor.apply(Ve,arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha.apply(Ve,arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(T!==null){let t=T.texture.format;e=t===1033||t===1031||t===1029}if(e){let e=T.texture.type,t=e===1009||e===1014||e===1012||e===1020||e===1017||e===1018,n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(p[0]=i,p[1]=a,p[2]=o,p[3]=r,k.clearBufferuiv(k.COLOR,0,p)):(m[0]=i,m[1]=a,m[2]=o,m[3]=r,k.clearBufferiv(k.COLOR,0,m))}else r|=k.COLOR_BUFFER_BIT}t&&(r|=k.DEPTH_BUFFER_BIT,k.clearDepth(+!this.capabilities.reverseDepthBuffer)),n&&(r|=k.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),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.dispose=function(){t.removeEventListener(`webglcontextlost`,Xe,!1),t.removeEventListener(`webglcontextrestored`,Ze,!1),t.removeEventListener(`webglcontextcreationerror`,Qe,!1),Le.dispose(),Re.dispose(),Oe.dispose(),Ae.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Ye.dispose(),Ye.removeEventListener(`sessionstart`,at),Ye.removeEventListener(`sessionend`,ot),st.stop()};function Xe(e){e.preventDefault(),console.log(`THREE.WebGLRenderer: Context Lost.`),S=!0}function Ze(){console.log(`THREE.WebGLRenderer: Context Restored.`),S=!1;let e=De.autoReset,t=Be.enabled,n=Be.autoUpdate,r=Be.needsUpdate,i=Be.type;Je(),De.autoReset=e,Be.enabled=t,Be.autoUpdate=n,Be.needsUpdate=r,Be.type=i}function Qe(e){console.error(`THREE.WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function $e(e){let t=e.target;t.removeEventListener(`dispose`,$e),et(t)}function et(e){tt(e),Oe.remove(e)}function tt(e){let t=Oe.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=be);let o=i.isMesh&&i.matrixWorld.determinant()<0,s=vt(e,t,n,r,i);Ee.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.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;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(Ee.setLineWidth(r.wireframeLinewidth*Se()),g.setMode(k.LINES)):g.setMode(k.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),Ee.setLineWidth(e*Se()),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(i._multiDrawInstances!==null)g.renderMultiDrawInstances(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount,i._multiDrawInstances);else if(we.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?Me.get(c).bytesPerElement:1,o=Oe.get(r).currentProgram.getUniforms();for(let r=0;r{function n(){if(r.forEach(function(e){Oe.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}we.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new Ea;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Ye.setAnimationLoop(e),e===null?st.stop():st.start()},Ye.addEventListener(`sessionstart`,at),Ye.addEventListener(`sessionend`,ot),this.render=function(e,t){if(t!==void 0&&t.isCamera!==!0){console.error(`THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(S===!0)return;if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),Ye.enabled===!0&&Ye.isPresenting===!0&&(Ye.cameraAutoUpdate===!0&&Ye.updateCamera(t),t=Ye.getCamera()),e.isScene===!0&&e.onBeforeRender(x,e,t,T),g=Re.get(e,y.length),g.init(t),y.push(g),_e.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),pe.setFromProjectionMatrix(_e),he=this.localClippingEnabled,me=ze.init(this.clippingPlanes,he),h=Le.get(e,_.length),h.init(),_.push(h),Ye.enabled===!0&&Ye.isPresenting===!0){let e=x.xr.getDepthSensingMesh();e!==null&&ct(e,t,-1/0,x.sortObjects)}ct(e,t,0,x.sortObjects),h.finish(),x.sortObjects===!0&&h.sort(ce,le),xe=Ye.enabled===!1||Ye.isPresenting===!1||Ye.hasDepthSensing()===!1,xe&&Ve.addToRenderList(h,e),this.info.render.frame++,me===!0&&ze.beginShadows();let n=g.state.shadowsArray;Be.render(n,e,t),me===!0&&ze.endShadows(),this.info.autoReset===!0&&this.info.reset();let r=h.opaque,i=h.transmissive;if(g.setupLights(),t.isArrayCamera){let n=t.cameras;if(i.length>0)for(let t=0,a=n.length;t0&&ft(r,i,e,t),xe&&Ve.render(e),dt(h,e,t);T!==null&&(ke.updateMultisampleRenderTarget(T),ke.updateRenderTargetMipmap(T)),e.isScene===!0&&e.onAfterRender(x,e,t),Ke.resetDefaultState(),E=-1,ee=null,y.pop(),y.length>0?(g=y[y.length-1],me===!0&&ze.setGlobalState(x.clippingPlanes,g.state.camera)):g=null,_.pop(),h=_.length>0?_[_.length-1]:null};function ct(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.isLight)g.pushLight(e),e.castShadow&&g.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||pe.intersectsSprite(e)){r&&ye.setFromMatrixPosition(e.matrixWorld).applyMatrix4(_e);let t=Pe.update(e),i=e.material;i.visible&&h.push(e,t,i,n,ye.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||pe.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),ye.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),ye.copy(e.boundingSphere.center)),ye.applyMatrix4(e.matrixWorld).applyMatrix4(_e)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a0&&pt(i,t,n),a.length>0&&pt(a,t,n),o.length>0&&pt(o,t,n),Ee.buffers.depth.setTest(!0),Ee.buffers.depth.setMask(!0),Ee.buffers.color.setMask(!0),Ee.setPolygonOffset(!1)}function ft(e,t,n,r){if((n.isScene===!0?n.overrideMaterial:null)!==null)return;g.state.transmissionRenderTarget[r.id]===void 0&&(g.state.transmissionRenderTarget[r.id]=new Ln(1,1,{generateMipmaps:!0,type:we.has(`EXT_color_buffer_half_float`)||we.has(`EXT_color_buffer_float`)?D:b,minFilter:v,samples:4,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Tn.workingColorSpace}));let i=g.state.transmissionRenderTarget[r.id],o=r.viewport||O;i.setSize(o.z,o.w);let s=x.getRenderTarget();x.setRenderTarget(i),x.getClearColor(re),ie=x.getClearAlpha(),ie<1&&x.setClearColor(16777215,.5),x.clear(),xe&&Ve.render(n);let c=x.toneMapping;x.toneMapping=0;let l=r.viewport;if(r.viewport!==void 0&&(r.viewport=void 0),g.setupLightsView(r),me===!0&&ze.setGlobalState(x.clippingPlanes,r),pt(e,n,r),ke.updateMultisampleRenderTarget(i),ke.updateRenderTargetMipmap(i),we.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let i=0,a=t.length;i0),d=!!n.morphAttributes.position,f=!!n.morphAttributes.normal,p=!!n.morphAttributes.color,m=0;r.toneMapped&&(T===null||T.isXRRenderTarget===!0)&&(m=x.toneMapping);let h=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=h===void 0?0:h.length,v=Oe.get(r),y=g.state.lights;if(me===!0&&(he===!0||e!==ee)){let t=e===ee&&r.id===E;ze.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===c?r.fog===!0&&v.fog!==a||v.numClippingPlanes!==void 0&&(v.numClippingPlanes!==ze.numPlanes||v.numIntersection!==ze.numIntersection)?b=!0:v.vertexAlphas===l&&v.vertexTangents===u&&v.morphTargets===d&&v.morphNormals===f&&v.morphColors===p&&v.toneMapping===m?v.morphTargetsCount!==_&&(b=!0):b=!0:b=!0:b=!0:(b=!0,v.__version=r.version);let S=v.currentProgram;b===!0&&(S=ht(r,t,i));let C=!1,w=!1,D=!1,O=S.getUniforms(),te=v.uniforms;if(Ee.useProgram(S.program)&&(C=!0,w=!0,D=!0),(r.id!==E||r._forceRefresh)&&(E=r.id,w=!0,r._forceRefresh=!1),C||ee!==e){Te.reverseDepthBuffer?(ge.copy(e.projectionMatrix),yn(ge),bn(ge),O.setValue(k,`projectionMatrix`,ge)):O.setValue(k,`projectionMatrix`,e.projectionMatrix),O.setValue(k,`viewMatrix`,e.matrixWorldInverse);let t=O.map.cameraPosition;t!==void 0&&t.setValue(k,ve.setFromMatrixPosition(e.matrixWorld)),Te.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),ee!==e&&(ee=e,w=!0,D=!0)}if(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,ke))}i.isBatchedMesh&&(O.setOptional(k,i,`batchingTexture`),O.setValue(k,`batchingTexture`,i._matricesTexture,ke),O.setOptional(k,i,`batchingIdTexture`),O.setValue(k,`batchingIdTexture`,i._indirectTexture,ke),O.setOptional(k,i,`batchingColorTexture`),i._colorsTexture!==null&&O.setValue(k,`batchingColorTexture`,i._colorsTexture,ke));let ne=n.morphAttributes;if((ne.position!==void 0||ne.normal!==void 0||ne.color!==void 0)&&He.update(i,n,S),(w||v.receiveShadow!==i.receiveShadow)&&(v.receiveShadow=i.receiveShadow,O.setValue(k,`receiveShadow`,i.receiveShadow)),r.isMeshGouraudMaterial&&r.envMap!==null&&(te.envMap.value=c,te.flipEnvMap.value=c.isCubeTexture&&c.isRenderTargetTexture===!1?-1:1),r.isMeshStandardMaterial&&r.envMap===null&&t.environment!==null&&(te.envMapIntensity.value=t.environmentIntensity),w&&(O.setValue(k,`toneMappingExposure`,x.toneMappingExposure),v.needsLights&&yt(te,D),a&&r.fog===!0&&Ie.refreshFogUniforms(te,a),Ie.refreshMaterialUniforms(te,r,se,oe,g.state.transmissionRenderTarget[e.id]),Ss.upload(k,gt(v),te,ke)),r.isShaderMaterial&&r.uniformsNeedUpdate===!0&&(Ss.upload(k,gt(v),te,ke),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.isShaderMaterial||r.isRawShaderMaterial){let e=r.uniformsGroups;for(let t=0,n=e.length;t0&&ke.useMultisampledRTT(e)===!1?Oe.get(e).__webglMultisampledFramebuffer:Array.isArray(l)?l[n]:l,O.copy(e.viewport),te.copy(e.scissor),ne=e.scissorTest}else O.copy(ue).multiplyScalar(se).floor(),te.copy(de).multiplyScalar(se).floor(),ne=fe;if(Ee.bindFramebuffer(k.FRAMEBUFFER,i)&&r&&Ee.drawBuffers(e,i),Ee.viewport(O),Ee.scissor(te),Ee.setScissorTest(ne),a){let r=Oe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(o){let r=Oe.get(e.texture),i=t||0;k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,r.__webglTexture,n||0,i)}E=-1},this.readRenderTargetPixels=function(e,t,n,r,i,a,o){if(!(e&&e.isWebGLRenderTarget)){console.error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let s=Oe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(s=s[o]),s){Ee.bindFramebuffer(k.FRAMEBUFFER,s);try{let o=e.texture,s=o.format,c=o.type;if(!Te.textureFormatReadable(s)){console.error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!Te.textureTypeReadable(c)){console.error(`THREE.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,Ge.convert(s),Ge.convert(c),a)}finally{let e=T===null?null:Oe.get(T).__webglFramebuffer;Ee.bindFramebuffer(k.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,r,i,a,o){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let s=Oe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(s=s[o]),s){let o=e.texture,c=o.format,l=o.type;if(!Te.textureFormatReadable(c))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!Te.textureTypeReadable(l))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);if(t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i){Ee.bindFramebuffer(k.FRAMEBUFFER,s);let e=k.createBuffer();k.bindBuffer(k.PIXEL_PACK_BUFFER,e),k.bufferData(k.PIXEL_PACK_BUFFER,a.byteLength,k.STREAM_READ),k.readPixels(t,n,r,i,Ge.convert(c),Ge.convert(l),0);let o=T===null?null:Oe.get(T).__webglFramebuffer;Ee.bindFramebuffer(k.FRAMEBUFFER,o);let u=k.fenceSync(k.SYNC_GPU_COMMANDS_COMPLETE,0);return k.flush(),await vn(k,u,4),k.bindBuffer(k.PIXEL_PACK_BUFFER,e),k.getBufferSubData(k.PIXEL_PACK_BUFFER,0,a),k.deleteBuffer(e),k.deleteSync(u),a}else throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyFramebufferToTexture function signature has changed.`),t=arguments[0]||null,e=arguments[1]);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;ke.setTexture2D(e,0),k.copyTexSubImage2D(k.TEXTURE_2D,n,0,0,o,s,i,a),Ee.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyTextureToTexture function signature has changed.`),r=arguments[0]||null,e=arguments[1],t=arguments[2],i=arguments[3]||0,n=null);let a,o,s,c,l,u;n===null?(a=e.image.width,o=e.image.height,s=0,c=0):(a=n.max.x-n.min.x,o=n.max.y-n.min.y,s=n.min.x,c=n.min.y),r===null?(l=0,u=0):(l=r.x,u=r.y);let d=Ge.convert(t.format),f=Ge.convert(t.type);ke.setTexture2D(t,0),k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),k.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let p=k.getParameter(k.UNPACK_ROW_LENGTH),m=k.getParameter(k.UNPACK_IMAGE_HEIGHT),h=k.getParameter(k.UNPACK_SKIP_PIXELS),g=k.getParameter(k.UNPACK_SKIP_ROWS),_=k.getParameter(k.UNPACK_SKIP_IMAGES),v=e.isCompressedTexture?e.mipmaps[i]:e.image;k.pixelStorei(k.UNPACK_ROW_LENGTH,v.width),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,v.height),k.pixelStorei(k.UNPACK_SKIP_PIXELS,s),k.pixelStorei(k.UNPACK_SKIP_ROWS,c),e.isDataTexture?k.texSubImage2D(k.TEXTURE_2D,i,l,u,a,o,d,f,v.data):e.isCompressedTexture?k.compressedTexSubImage2D(k.TEXTURE_2D,i,l,u,v.width,v.height,d,v.data):k.texSubImage2D(k.TEXTURE_2D,i,l,u,a,o,d,f,v),k.pixelStorei(k.UNPACK_ROW_LENGTH,p),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,m),k.pixelStorei(k.UNPACK_SKIP_PIXELS,h),k.pixelStorei(k.UNPACK_SKIP_ROWS,g),k.pixelStorei(k.UNPACK_SKIP_IMAGES,_),i===0&&t.generateMipmaps&&k.generateMipmap(k.TEXTURE_2D),Ee.unbindTexture()},this.copyTextureToTexture3D=function(e,t,n=null,r=null,i=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyTextureToTexture3D function signature has changed.`),n=arguments[0]||null,r=arguments[1]||null,e=arguments[2],t=arguments[3],i=arguments[4]||0);let a,o,s,c,l,u,d,f,p,m=e.isCompressedTexture?e.mipmaps[i]:e.image;n===null?(a=m.width,o=m.height,s=m.depth,c=0,l=0,u=0):(a=n.max.x-n.min.x,o=n.max.y-n.min.y,s=n.max.z-n.min.z,c=n.min.x,l=n.min.y,u=n.min.z),r===null?(d=0,f=0,p=0):(d=r.x,f=r.y,p=r.z);let h=Ge.convert(t.format),g=Ge.convert(t.type),_;if(t.isData3DTexture)ke.setTexture3D(t,0),_=k.TEXTURE_3D;else if(t.isDataArrayTexture||t.isCompressedArrayTexture)ke.setTexture2DArray(t,0),_=k.TEXTURE_2D_ARRAY;else{console.warn(`THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.`);return}k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),k.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let v=k.getParameter(k.UNPACK_ROW_LENGTH),y=k.getParameter(k.UNPACK_IMAGE_HEIGHT),b=k.getParameter(k.UNPACK_SKIP_PIXELS),x=k.getParameter(k.UNPACK_SKIP_ROWS),S=k.getParameter(k.UNPACK_SKIP_IMAGES);k.pixelStorei(k.UNPACK_ROW_LENGTH,m.width),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,m.height),k.pixelStorei(k.UNPACK_SKIP_PIXELS,c),k.pixelStorei(k.UNPACK_SKIP_ROWS,l),k.pixelStorei(k.UNPACK_SKIP_IMAGES,u),e.isDataTexture||e.isData3DTexture?k.texSubImage3D(_,i,d,f,p,a,o,s,h,g,m.data):t.isCompressedArrayTexture?k.compressedTexSubImage3D(_,i,d,f,p,a,o,s,h,m.data):k.texSubImage3D(_,i,d,f,p,a,o,s,h,g,m),k.pixelStorei(k.UNPACK_ROW_LENGTH,v),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,y),k.pixelStorei(k.UNPACK_SKIP_PIXELS,b),k.pixelStorei(k.UNPACK_SKIP_ROWS,x),k.pixelStorei(k.UNPACK_SKIP_IMAGES,S),i===0&&t.generateMipmaps&&k.generateMipmap(_),Ee.unbindTexture()},this.initRenderTarget=function(e){Oe.get(e).__webglFramebuffer===void 0&&ke.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?ke.setTextureCube(e,0):e.isData3DTexture?ke.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?ke.setTexture2DArray(e,0):ke.setTexture2D(e,0),Ee.unbindTexture()},this.resetState=function(){C=0,w=0,T=null,Ee.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return Nt}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=e===`display-p3`?`display-p3`:`srgb`,t.unpackColorSpace=Tn.workingColorSpace===`display-p3-linear`?`display-p3`:`srgb`}},Uc=class e{constructor(e,t=25e-5){this.isFogExp2=!0,this.name=``,this.color=new P(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}}},Wc=class e{constructor(e,t=1,n=1e3){this.isFog=!0,this.name=``,this.color=new P(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}}},Gc=class extends Wr{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 Dr,this.environmentIntensity=1,this.environmentRotation=new Dr,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}},Kc=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=Ct,this.updateRanges=[],this.version=0,this.uuid=Bt()}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;re.far||t.push({distance:s,point:Zc.clone(),uv:ii.getInterpolation(Zc,rl,il,al,ol,sl,cl,new A),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 ul(e,t,n,r,i,a){el.subVectors(e,n).addScalar(.5).multiply(r),i===void 0?tl.copy(el):(tl.x=a*el.x-i*el.y,tl.y=i*el.x+a*el.y),e.copy(t),e.x+=tl.x,e.y+=tl.y,e.applyMatrix4(nl)}var dl=new M,fl=new M,pl=class extends Wr{constructor(){super(),this._currentLevel=0,this.type=`LOD`,Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,n=t.length;e0){let n,r;for(n=1,r=t.length;n0){dl.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(dl);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){dl.setFromMatrixPosition(e.matrixWorld),fl.setFromMatrixPosition(this.matrixWorld);let n=dl.distanceTo(fl)/e.zoom;t[0].object.visible=!0;let r,i;for(r=1,i=t.length;r=e)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let a=r[this.index];i.push(a),this.index++,a.start=e.start,a.count=e.count,a.z=t,a.index=n}reset(){this.list.length=0,this.index=0}},Vl=new N,Hl=new N,Ul=new N,Wl=new P(1,1,1),Gl=new N,Kl=new Ta,ql=new Gn,Jl=new lr,Yl=new M,Xl=new M,Zl=new M,Ql=new Bl,$l=new Ji,eu=[];function tu(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;a65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new bi(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error(`BatchedMesh: All geometries must consistently have "index".`);for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`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(`BatchedMesh: All attributes must have a consistent itemSize and normalized value.`)}}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Gn);let e=this.boundingBox,t=this._drawInfo;e.makeEmpty();for(let n=0,r=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw Error(`BatchedMesh: Maximum item count reached.`);let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(n=this._availableInstanceIds.pop(),this._drawInfo[n]=t):(n=this._drawInfo.length,this._drawInfo.push(t));let r=this._matricesTexture,i=r.image.data;Ul.toArray(i,n*16),r.needsUpdate=!0;let a=this._colorsTexture;return a&&(Wl.toArray(a.image.data,n*4),a.needsUpdate=!0),n}addGeometry(e,t=-1,n=-1){if(this._initializeGeometry(e),this._validateGeometry(e),this._drawInfo.length>=this._maxInstanceCount)throw Error(`BatchedMesh: Maximum item count reached.`);let r={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1},i=null,a=this._reservedRanges,o=this._drawRanges,s=this._bounds;this._geometryCount!==0&&(i=a[a.length-1]),t===-1?r.vertexCount=e.getAttribute(`position`).count:r.vertexCount=t,i===null?r.vertexStart=0:r.vertexStart=i.vertexStart+i.vertexCount;let c=e.getIndex(),l=c!==null;if(l&&(n===-1?r.indexCount=c.count:r.indexCount=n,i===null?r.indexStart=0:r.indexStart=i.indexStart+i.indexCount),r.indexStart!==-1&&r.indexStart+r.indexCount>this._maxIndexCount||r.vertexStart+r.vertexCount>this._maxVertexCount)throw Error(`BatchedMesh: Reserved space request exceeds the maximum buffer size.`);let u=this._geometryCount;return this._geometryCount++,a.push(r),o.push({start:l?r.indexStart:r.vertexStart,count:-1}),s.push({boxInitialized:!1,box:new Gn,sphereInitialized:!1,sphere:new lr}),this.setGeometryAt(u,e),u}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error(`BatchedMesh: Maximum geometry count reached.`);this._validateGeometry(t);let n=this.geometry,r=n.getIndex()!==null,i=n.getIndex(),a=t.getIndex(),o=this._reservedRanges[e];if(r&&a.count>o.indexCount||t.attributes.position.count>o.vertexCount)throw Error(`BatchedMesh: Reserved space not large enough for provided geometry.`);let s=o.vertexStart,c=o.vertexCount;for(let e in n.attributes){let r=t.getAttribute(e),i=n.getAttribute(e);tu(r,i,s);let a=r.itemSize;for(let e=r.count,t=c;e=t.length||t[e].active===!1?this:(t[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this)}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;let n=this._bounds[e],r=n.box,i=this.geometry;if(n.boxInitialized===!1){r.makeEmpty();let t=i.index,a=i.attributes.position,o=this._drawRanges[e];for(let e=o.start,n=o.start+o.count;e=this._geometryCount)return null;let n=this._bounds[e],r=n.sphere,i=this.geometry;if(n.sphereInitialized===!1){r.makeEmpty(),this.getBoundingBoxAt(e,ql),ql.getCenter(r.center);let t=i.index,a=i.attributes.position,o=this._drawRanges[e],s=0;for(let e=o.start,n=o.start+o.count;e=n.length||n[e].active===!1?this:(t.toArray(i,e*16),r.needsUpdate=!0,this)}getMatrixAt(e,t){let n=this._drawInfo,r=this._matricesTexture.image.data;return e>=n.length||n[e].active===!1?null:t.fromArray(r,e*16)}setColorAt(e,t){this._colorsTexture===null&&this._initColorsTexture();let n=this._colorsTexture,r=this._colorsTexture.image.data,i=this._drawInfo;return e>=i.length||i[e].active===!1?this:(t.toArray(r,e*4),n.needsUpdate=!0,this)}getColorAt(e,t){let n=this._colorsTexture.image.data,r=this._drawInfo;return e>=r.length||r[e].active===!1?null:t.fromArray(n,e*4)}setVisibleAt(e,t){let n=this._drawInfo;return e>=n.length||n[e].active===!1||n[e].visible===t?this:(n[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){let t=this._drawInfo;return e>=t.length||t[e].active===!1?!1:t[e].visible}setGeometryIdAt(e,t){let n=this._drawInfo;return e>=n.length||n[e].active===!1||t<0||t>=this._geometryCount?null:(n[e].geometryIndex=t,this)}getGeometryIdAt(e){let t=this._drawInfo;return e>=t.length||t[e].active===!1?-1:t[e].geometryIndex}getGeometryRangeAt(e,t={}){if(e<0||e>=this._geometryCount)return null;let n=this._drawRanges[e];return t.start=n.start,t.count=n.count,t}raycast(e,t){let n=this._drawInfo,r=this._drawRanges,i=this.matrixWorld,a=this.geometry;$l.material=this.material,$l.geometry.index=a.index,$l.geometry.attributes=a.attributes,$l.geometry.boundingBox===null&&($l.geometry.boundingBox=new Gn),$l.geometry.boundingSphere===null&&($l.geometry.boundingSphere=new lr);for(let a=0,o=n.length;a({...e})),this._reservedRanges=e._reservedRanges.map(e=>({...e})),this._drawInfo=e._drawInfo.map(e=>({...e})),this._bounds=e._bounds.map(e=>({boxInitialized:e.boxInitialized,box:e.box.clone(),sphereInitialized:e.sphereInitialized,sphere:e.sphere.clone()})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.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(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}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=this._drawInfo,c=this._multiDrawStarts,l=this._multiDrawCounts,u=this._drawRanges,d=this.perObjectFrustumCulled,f=this._indirectTexture,p=f.image.data;d&&(Gl.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),Kl.setFromProjectionMatrix(Gl,e.coordinateSystem));let m=0;if(this.sortObjects){Hl.copy(this.matrixWorld).invert(),Yl.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Hl),Xl.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Hl);for(let e=0,t=s.length;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er)return;lu.applyMatrix4(e.matrixWorld);let s=t.ray.origin.distanceTo(lu);if(!(st.far))return{distance:s,point:uu.clone().applyMatrix4(e.matrixWorld),index:i,face:null,faceIndex:null,barycoord:null,object:e}}var pu=new M,mu=new M,hu=class extends du{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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var wu=class extends Pn{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isVideoTexture=!0,this.minFilter=a===void 0?h:a,this.magFilter=i===void 0?h:i,this.generateMipmaps=!1;let l=this;function u(){l.needsUpdate=!0,e.requestVideoFrameCallback(u)}`requestVideoFrameCallback`in e&&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)}},Tu=class extends Pn{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=u,this.minFilter=u,this.generateMipmaps=!1,this.needsUpdate=!0}},Eu=class extends Pn{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}},Du=class extends Eu{constructor(e,t,n,r,i,a){super(e,t,n,i,a),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=c,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ou=class extends Eu{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}},ku=class extends Pn{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}},Au=class{constructor(){this.type=`Curve`,this.arcLengthDivisions=200}getPoint(){return console.warn(`THREE.Curve: .getPoint() not implemented.`),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,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){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 A:new M);return s.copy(o).sub(a).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new M,r=[],i=[],a=[],o=new M,s=new N;for(let t=0;t<=e;t++){let n=t/e;r[t]=this.getTangentAt(n,new M)}i[0]=new M,a[0]=new M;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(Vt(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(Vt(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.6,type:`Curve`,generator:`Curve.toJSON`}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},ju=class extends Au{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 A){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}},Mu=class extends ju{constructor(e,t,n,r,i,a){super(e,t,n,n,r,i,a),this.isArcCurve=!0,this.type=`ArcCurve`}};function Nu(){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 Pu=new M,Fu=new Nu,Iu=new Nu,Lu=new Nu,Ru=class extends Au{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 M){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]:(Pu.subVectors(r[0],r[1]).add(r[0]),c=Pu);let u=r[o%i],d=r[(o+1)%i];if(this.closed||o+2r.length-2?r.length-1:a+1],u=r[a>r.length-3?r.length-1:a+2];return n.set(zu(o,s.x,c.x,l.x,u.x),zu(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){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;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let 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}},ad=class e extends Ii{constructor(e=[new A(0,-.5),new A(.5,0),new A(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=Vt(r,0,Math.PI*2);let i=[],a=[],o=[],s=[],c=[],l=1/t,u=new M,d=new A,f=new M,p=new M,m=new M,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;n0&&v(!0),t>0&&v(!1)),this.setIndex(l),this.setAttribute(`position`,new F(u,3)),this.setAttribute(`normal`,new F(d,3)),this.setAttribute(`uv`,new F(f,2));function _(){let a=new M,_=new M,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;n0&&(l.push(i,a,s),v+=3),t>0&&(l.push(a,o,s),v+=3)}c.addGroup(g,v,0),g+=v}function v(n){let i=p,a=new A,m=new M,_=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.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 M,t=new M,n=new M,r=new M,o=new A,s=new A,c=new A;for(let l=0,u=0;l80*n){s=l=e[0],c=u=e[1];for(let t=n;tl&&(l=d),f>u&&(u=f);p=Math.max(l-s,u-c),p=p===0?0:32767/p}return xd(a,o,n,s,c,p,0),o}};function yd(e,t,n,r,i){let a,o;if(i===Yd(e,t,n,r)>0)for(a=t;a=t;a-=r)o=Kd(a,e[a],e[a+1],o);return o&&Rd(o,o.next)&&(qd(o),o=o.next),o}function bd(e,t){if(!e)return e;t||=e;let n=e,r;do if(r=!1,!n.steiner&&(Rd(n,n.next)||Ld(n.prev,n,n.next)===0)){if(qd(n),n=t=n.prev,n===n.next)break;r=!0}else n=n.next;while(r||n!==t);return t}function xd(e,t,n,r,i,a,o){if(!e)return;!o&&a&&jd(e,r,i,a);let s=e,c,l;for(;e.prev!==e.next;){if(c=e.prev,l=e.next,a?Cd(e,r,i,a):Sd(e)){t.push(c.i/n|0),t.push(e.i/n|0),t.push(l.i/n|0),qd(e),e=l.next,s=l.next;continue}if(e=l,e===s){o?o===1?(e=wd(bd(e),t,n),xd(e,t,n,r,i,a,2)):o===2&&Td(e,t,n,r,i,a):xd(bd(e),t,n,r,i,a,1);break}}}function Sd(e){let t=e.prev,n=e,r=e.next;if(Ld(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=ia?i>o?i:o:a>o?a:o,p=s>c?s>l?s:l:c>l?c:l,m=r.next;for(;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&Fd(i,s,a,c,o,l,m.x,m.y)&&Ld(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function Cd(e,t,n,r){let i=e.prev,a=e,o=e.next;if(Ld(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=sc?s>l?s:l:c>l?c:l,g=u>d?u>f?u:f:d>f?d:f,_=Nd(p,m,t,n,r),v=Nd(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&&Fd(s,u,c,d,l,f,y.x,y.y)&&Ld(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&&Fd(s,u,c,d,l,f,b.x,b.y)&&Ld(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&&Fd(s,u,c,d,l,f,y.x,y.y)&&Ld(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&&Fd(s,u,c,d,l,f,b.x,b.y)&&Ld(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function wd(e,t,n){let r=e;do{let i=r.prev,a=r.next.next;!Rd(i,a)&&zd(i,r,r.next,a)&&Ud(i,a)&&Ud(a,i)&&(t.push(i.i/n|0),t.push(r.i/n|0),t.push(a.i/n|0),qd(r),qd(r.next),r=e=a),r=r.next}while(r!==e);return bd(r)}function Td(e,t,n,r,i,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&Id(o,e)){let s=Gd(o,e);o=bd(o,o.next),s=bd(s,s.next),xd(o,t,n,r,i,a,0),xd(s,t,n,r,i,a,0);return}e=e.next}o=o.next}while(o!==e)}function Ed(e,t,n,r){let i=[],a,o,s,c,l;for(a=0,o=t.length;a=n.next.y&&n.next.y!==n.y){let e=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=a&&e>r&&(r=e,i=n.x=n.x&&n.x>=c&&a!==n.x&&Fd(oi.x||n.x===i.x&&Ad(i,n)))&&(i=n,u=d)),n=n.next;while(n!==s);return i}function Ad(e,t){return Ld(e.prev,e,t.prev)<0&&Ld(t.next,e,e.next)<0}function jd(e,t,n,r){let i=e;do i.z===0&&(i.z=Nd(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,Md(i)}function Md(e){let t,n,r,i,a,o,s,c,l=1;do{for(n=e,e=null,a=null,o=0;n;){for(o++,r=n,s=0,t=0;t0||c>0&&r;)s!==0&&(c===0||!r||n.z<=r.z)?(i=n,n=n.nextZ,s--):(i=r,r=r.nextZ,c--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;n=r}a.nextZ=null,l*=2}while(o>1);return e}function Nd(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 Pd(e){let t=e,n=e;do(t.x=(e-o)*(a-s)&&(e-o)*(r-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(i-o)*(r-s)}function Id(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Hd(e,t)&&(Ud(e,t)&&Ud(t,e)&&Wd(e,t)&&(Ld(e.prev,e,t.prev)||Ld(e,t.prev,t))||Rd(e,t)&&Ld(e.prev,e,e.next)>0&&Ld(t.prev,t,t.next)>0)}function Ld(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Rd(e,t){return e.x===t.x&&e.y===t.y}function zd(e,t,n,r){let i=Vd(Ld(e,t,n)),a=Vd(Ld(e,t,r)),o=Vd(Ld(n,r,e)),s=Vd(Ld(n,r,t));return!!(i!==a&&o!==s||i===0&&Bd(e,n,t)||a===0&&Bd(e,r,t)||o===0&&Bd(n,e,r)||s===0&&Bd(n,t,r))}function Bd(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 Vd(e){return e>0?1:e<0?-1:0}function Hd(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&&zd(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function Ud(e,t){return Ld(e.prev,e,e.next)<0?Ld(e,t,e.next)>=0&&Ld(e,e.prev,t)>=0:Ld(e,t,e.prev)<0||Ld(e,e.next,t)<0}function Wd(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 Gd(e,t){let n=new Jd(e.i,e.x,e.y),r=new Jd(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 Kd(e,t,n,r){let i=new Jd(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 qd(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 Jd(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Yd(e,t,n,r){let i=0;for(let a=t,o=n-r;a2&&e[t-1].equals(e[0])&&e.pop()}function Qd(e,t){for(let n=0;n2**-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 A(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 A(r/a,i/a)}let ne=[];for(let e=0,t=E.length,n=t-1,r=e+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=E.length;e=0;){let r=n,i=n-1;i<0&&(i=e.length-1);for(let e=0,n=s+p*2;e0)&&f.push(t,i,c),(e!==n-1||s0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:``,PHYSICAL:``},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},bf=class extends di{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type=`MeshPhongMaterial`,this.color=new P(16777215),this.specular=new P(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Dr,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},xf=class extends di{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:``},this.type=`MeshToonMaterial`,this.color=new P(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},Sf=class extends di{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type=`MeshNormalMaterial`,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}},Cf=class extends di{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type=`MeshLambertMaterial`,this.color=new P(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Dr,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},wf=class extends di{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:``},this.type=`MeshMatcapMaterial`,this.color=new P(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:``},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}},Tf=class extends ru{constructor(e){super(),this.isLineDashedMaterial=!0,this.type=`LineDashedMaterial`,this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};function Ef(e,t,n){return!e||!n&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT==`number`?new t(e):Array.prototype.slice.call(e)}function Df(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Of(e){function t(t,n){return e[t]-e[n]}let n=e.length,r=Array(n);for(let e=0;e!==n;++e)r[e]=e;return r.sort(t),r}function kf(e,t,n){let r=e.length,i=new e.constructor(r);for(let a=0,o=0;o!==r;++a){let r=n[a]*t;for(let n=0;n!==t;++n)i[o++]=e[r+n]}return i}function Af(e,t,n,r){let i=1,a=e[0];for(;a!==void 0&&a[r]===void 0;)a=e[i++];if(a===void 0)return;let o=a[r];if(o!==void 0)if(Array.isArray(o))do o=a[r],o!==void 0&&(t.push(a.time),n.push.apply(n,o)),a=e[i++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[r],o!==void 0&&(t.push(a.time),o.toArray(n,n.length)),a=e[i++];while(a!==void 0);else do o=a[r],o!==void 0&&(t.push(a.time),n.push(o)),a=e[i++];while(a!==void 0)}function jf(e,t,n,r,i=30){let a=e.clone();a.name=t;let o=[];for(let e=0;e=r)){c.push(t.times[e]);for(let n=0;na.tracks[e].times[0]&&(s=a.tracks[e].times[0]);for(let e=0;e=r.times[d]){let e=d*c+s,t=e+c-s;f=r.values.slice(e,t)}else{let e=r.createInterpolant(),t=s,n=c-s;e.evaluate(a),f=e.resultBuffer.slice(t,n)}i===`quaternion`&&new Hn().fromArray(f).normalize().conjugate().toArray(f);let p=o.times.length;for(let e=0;e=i)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Df(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===$e,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Rf.prototype.TimeBufferType=Float32Array,Rf.prototype.ValueBufferType=Float32Array,Rf.prototype.DefaultInterpolation=Qe;var zf=class extends Rf{constructor(e,t,n){super(e,t,n)}};zf.prototype.ValueTypeName=`bool`,zf.prototype.ValueBufferType=Array,zf.prototype.DefaultInterpolation=Ze,zf.prototype.InterpolantFactoryMethodLinear=void 0,zf.prototype.InterpolantFactoryMethodSmooth=void 0;var Bf=class extends Rf{};Bf.prototype.ValueTypeName=`color`;var Vf=class extends Rf{};Vf.prototype.ValueTypeName=`number`;var Hf=class extends Pf{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)Hn.slerpFlat(i,0,a,c-o,a,c,s);return i}},Uf=class extends Rf{InterpolantFactoryMethodLinear(e){return new Hf(this.times,this.values,this.getValueSize(),e)}};Uf.prototype.ValueTypeName=`quaternion`,Uf.prototype.InterpolantFactoryMethodSmooth=void 0;var Wf=class extends Rf{constructor(e,t,n){super(e,t,n)}};Wf.prototype.ValueTypeName=`string`,Wf.prototype.ValueBufferType=Array,Wf.prototype.DefaultInterpolation=Ze,Wf.prototype.InterpolantFactoryMethodLinear=void 0,Wf.prototype.InterpolantFactoryMethodSmooth=void 0;var Gf=class extends Rf{};Gf.prototype.ValueTypeName=`vector`;var Kf=class{constructor(e=``,t=-1,n=[],r=rt){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=Bt(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,r=1/(e.fps||1);for(let e=0,i=n.length;e!==i;++e)t.push(Jf(n[e]).scale(r));let i=new this(e.name,e.duration,t,e.blendMode);return i.uuid=e.uuid,i}static toJSON(e){let t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=n.length;e!==r;++e)t.push(Rf.toJSON(n[e]));return r}static CreateFromMorphTargetSequence(e,t,n,r){let i=t.length,a=[];for(let e=0;e1){let e=a[1],t=r[e];t||(r[e]=t=[]),t.push(n)}}let a=[];for(let e in r)a.push(this.CreateFromMorphTargetSequence(e,r[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error(`THREE.AnimationClip: No animation in JSONLoader data.`),null;let n=function(e,t,n,r,i){if(n.length!==0){let a=[],o=[];Af(n,a,o,r),a.length!==0&&i.push(new e(t,a,o))}},r=[],i=e.name||`default`,a=e.fps||30,o=e.blendMode,s=e.length||-1,c=e.hierarchy||[];for(let e=0;e{t&&t(i),this.manager.itemEnd(e)},0),i;if($f[e]!==void 0){$f[e].push({onLoad:t,onProgress:n,onError:r});return}$f[e]=[],$f[e].push({onLoad:t,onProgress:n,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?`include`:`same-origin`}),o=this.mimeType,s=this.responseType;fetch(a).then(t=>{if(t.status===200||t.status===0){if(t.status===0&&console.warn(`THREE.FileLoader: HTTP Status 0 received.`),typeof ReadableStream>`u`||t.body===void 0||t.body.getReader===void 0)return t;let n=$f[e],r=t.body.getReader(),i=t.headers.get(`X-File-Size`)||t.headers.get(`Content-Length`),a=i?parseInt(i):0,o=a!==0,s=0,c=new ReadableStream({start(e){t();function t(){r.read().then(({done:r,value:i})=>{if(r)e.close();else{s+=i.byteLength;let r=new ProgressEvent(`progress`,{lengthComputable:o,loaded:s,total:a});for(let e=0,t=n.length;e{e.error(t)})}}});return new Response(c)}else throw new ep(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(s){case`arraybuffer`:return e.arrayBuffer();case`blob`:return e.blob();case`document`:return e.text().then(e=>new DOMParser().parseFromString(e,o));case`json`:return e.json();default:if(o===void 0)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(n);return e.arrayBuffer().then(e=>r.decode(e))}}}).then(t=>{Yf.add(e,t);let n=$f[e];delete $f[e];for(let e=0,r=n.length;e{let n=$f[e];if(n===void 0)throw this.manager.itemError(e),t;delete $f[e];for(let e=0,r=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},np=class extends Qf{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new tp(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(n){try{t(i.parse(JSON.parse(n)))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){let t=[];for(let n=0;n0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(let t in e.uniforms){let i=e.uniforms[t];switch(r.uniforms[t]={},i.type){case`t`:r.uniforms[t].value=n(i.value);break;case`c`:r.uniforms[t].value=new P().setHex(i.value);break;case`v2`:r.uniforms[t].value=new A().fromArray(i.value);break;case`v3`:r.uniforms[t].value=new M().fromArray(i.value);break;case`v4`:r.uniforms[t].value=new Fn().fromArray(i.value);break;case`m3`:r.uniforms[t].value=new j().fromArray(i.value);break;case`m4`:r.uniforms[t].value=new N().fromArray(i.value);break;default:r.uniforms[t].value=i.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(let t in e.extensions)r.extensions[t]=e.extensions[t];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=n(e.map)),e.matcap!==void 0&&(r.matcap=n(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let t=e.normalScale;Array.isArray(t)===!1&&(t=[t,t]),r.normalScale=new A().fromArray(t)}return e.displacementMap!==void 0&&(r.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=n(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new A().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=n(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(t){return e.createMaterialFromType(t)}static createMaterialFromType(e){return new{ShadowMaterial:gf,SpriteMaterial:Yc,RawShaderMaterial:_f,ShaderMaterial:aa,PointsMaterial:_u,MeshPhysicalMaterial:yf,MeshStandardMaterial:vf,MeshPhongMaterial:bf,MeshToonMaterial:xf,MeshNormalMaterial:Sf,MeshLambertMaterial:Cf,MeshDepthMaterial:hc,MeshDistanceMaterial:gc,MeshBasicMaterial:fi,MeshMatcapMaterial:wf,LineDashedMaterial:Tf,LineBasicMaterial:ru,Material:di}[e]}},Op=class{static decodeText(e){if(console.warn(`THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.`),typeof TextDecoder<`u`)return new TextDecoder().decode(e);let t=``;for(let n=0,r=e.length;n0){i=new ip(new Xf(t)),i.setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t0){r=new ip(this.manager),r.setCrossOrigin(this.crossOrigin);for(let t=0,r=e.length;t{let t=new Gn;t.min.fromArray(e.boxMin),t.max.fromArray(e.boxMax);let n=new lr;return n.radius=e.sphereRadius,n.center.fromArray(e.sphereCenter),{boxInitialized:e.boxInitialized,box:t,sphereInitialized:e.sphereInitialized,sphere:n}}),a._maxInstanceCount=e.maxInstanceCount,a._maxVertexCount=e.maxVertexCount,a._maxIndexCount=e.maxIndexCount,a._geometryInitialized=e.geometryInitialized,a._geometryCount=e.geometryCount,a._matricesTexture=c(e.matricesTexture.uuid),e.colorsTexture!==void 0&&(a._colorsTexture=c(e.colorsTexture.uuid));break;case`LOD`:a=new pl;break;case`Line`:a=new du(o(e.geometry),s(e.material));break;case`LineLoop`:a=new gu(o(e.geometry),s(e.material));break;case`LineSegments`:a=new hu(o(e.geometry),s(e.material));break;case`PointCloud`:case`Points`:a=new Su(o(e.geometry),s(e.material));break;case`Sprite`:a=new ll(s(e.material));break;case`Group`:a=new jc;break;case`Bone`:a=new wl;break;default:a=new Wr}if(a.uuid=e.uuid,e.name!==void 0&&(a.name=e.name),e.matrix===void 0?(e.position!==void 0&&a.position.fromArray(e.position),e.rotation!==void 0&&a.rotation.fromArray(e.rotation),e.quaternion!==void 0&&a.quaternion.fromArray(e.quaternion),e.scale!==void 0&&a.scale.fromArray(e.scale)):(a.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)),e.up!==void 0&&a.up.fromArray(e.up),e.castShadow!==void 0&&(a.castShadow=e.castShadow),e.receiveShadow!==void 0&&(a.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(a.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(a.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(a.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(a.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&a.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(a.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(a.visible=e.visible),e.frustumCulled!==void 0&&(a.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(a.renderOrder=e.renderOrder),e.userData!==void 0&&(a.userData=e.userData),e.layers!==void 0&&(a.layers.mask=e.layers),e.children!==void 0){let o=e.children;for(let e=0;e`u`&&console.warn(`THREE.ImageBitmapLoader: createImageBitmap() not supported.`),typeof fetch>`u`&&console.warn(`THREE.ImageBitmapLoader: fetch() not supported.`),this.options={premultiplyAlpha:`none`}}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=``),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Yf.get(e);if(a!==void 0){if(i.manager.itemStart(e),a.then){a.then(n=>{t&&t(n),i.manager.itemEnd(e)}).catch(e=>{r&&r(e)});return}return setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a}let o={};o.credentials=this.crossOrigin===`anonymous`?`same-origin`:`include`,o.headers=this.requestHeader;let s=fetch(e,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(i.options,{colorSpaceConversion:`none`}))}).then(function(n){return Yf.add(e,n),t&&t(n),i.manager.itemEnd(e),n}).catch(function(t){r&&r(t),Yf.remove(e),i.manager.itemError(e),i.manager.itemEnd(e)});Yf.add(e,s),i.manager.itemStart(e)}},Ip,Lp=class{static getContext(){return Ip===void 0&&(Ip=new(window.AudioContext||window.webkitAudioContext)),Ip}static setContext(e){Ip=e}},Rp=class extends Qf{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new tp(this.manager);a.setResponseType(`arraybuffer`),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){try{let n=e.slice(0);Lp.getContext().decodeAudioData(n,function(e){t(e)}).catch(o)}catch(e){o(e)}},n,r);function o(t){r?r(t):console.error(t),i.manager.itemError(e)}}},zp=new N,Bp=new N,Vp=new N,Hp=class{constructor(){this.type=`StereoCamera`,this.aspect=1,this.eyeSep=.064,this.cameraL=new pa,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new pa,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){let t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Vp.copy(e.projectionMatrix);let n=t.eyeSep/2,r=n*t.near/t.focus,i=t.near*Math.tan(Rt*t.fov*.5)/t.zoom,a,o;Bp.elements[12]=-n,zp.elements[12]=n,a=-i*t.aspect+r,o=i*t.aspect+r,Vp.elements[0]=2*t.near/(o-a),Vp.elements[8]=(o+a)/(o-a),this.cameraL.projectionMatrix.copy(Vp),a=-i*t.aspect-r,o=i*t.aspect-r,Vp.elements[0]=2*t.near/(o-a),Vp.elements[8]=(o+a)/(o-a),this.cameraR.projectionMatrix.copy(Vp)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Bp),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(zp)}},Up=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Wp(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=Wp();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function Wp(){return performance.now()}var Gp=new M,Kp=new Hn,qp=new M,Jp=new M,Yp=class extends Wr{constructor(){super(),this.type=`AudioListener`,this.context=Lp.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Up}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter===null?this.gain.disconnect(this.context.destination):(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);let t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Gp,Kp,qp),!(!Number.isFinite(Gp.x)||!Number.isFinite(Gp.y)||!Number.isFinite(Gp.z)))if(Jp.set(0,0,-1).applyQuaternion(Kp),t.positionX){let e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Gp.x,e),t.positionY.linearRampToValueAtTime(Gp.y,e),t.positionZ.linearRampToValueAtTime(Gp.z,e),t.forwardX.linearRampToValueAtTime(Jp.x,e),t.forwardY.linearRampToValueAtTime(Jp.y,e),t.forwardZ.linearRampToValueAtTime(Jp.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(Gp.x,Gp.y,Gp.z),t.setOrientation(Jp.x,Jp.y,Jp.z,n.x,n.y,n.z)}},Xp=class extends Wr{constructor(e){super(),this.type=`Audio`,this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType=`empty`,this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType=`audioNode`,this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType=`mediaNode`,this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType=`mediaStreamNode`,this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType=`buffer`,this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn(`THREE.Audio: Audio is already playing.`);return}if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress%=this.duration||(this.buffer?this.buffer.duration:Number.MAX_VALUE)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,r,this._addIndex*t,1,t);for(let e=t,i=t+t;e!==i;++e)if(n[e]!==n[e+t]){o.setValue(n,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,r=n*this._origIndex;e.getValue(t,r);for(let e=n,i=r;e!==i;++e)t[e]=t[r+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let r=0;r!==i;++r)e[t+r]=e[n+r]}_slerp(e,t,n,r){Hn.slerpFlat(e,t,e,t,e,n,r)}_slerpAdditive(e,t,n,r,i){let a=this._workIndex*i;Hn.multiplyQuaternionsFlat(e,a,e,t,e,n),Hn.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,n,r,i){let a=1-r;for(let o=0;o!==i;++o){let i=t+o;e[i]=e[i]*a+e[n+o]*r}}_lerpAdditive(e,t,n,r,i){for(let a=0;a!==i;++a){let i=t+a;e[i]=e[i]+e[n+a]*r}}},im=`\\[\\]\\.:\\/`,am=RegExp(`[`+im+`]`,`g`),om=`[^`+im+`]`,sm=`[^`+im.replace(`\\.`,``)+`]`,cm=`((?:WC+[\\/:])*)`.replace(`WC`,om),lm=`(WCOD+)?`.replace(`WCOD`,sm),um=`(?:\\.(WC+)(?:\\[(.+)\\])?)?`.replace(`WC`,om),dm=`\\.(WC+)(?:\\[(.+)\\])?`.replace(`WC`,om),fm=RegExp(`^`+cm+lm+um+dm+`$`),pm=[`material`,`materials`,`bones`,`map`],mm=class{constructor(e,t,n){let r=n||hm.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,i=n.length;r!==i;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},hm=class e{constructor(t,n,r){this.path=n,this.parsedPath=r||e.parseTrackName(n),this.node=e.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,n,r){return t&&t.isAnimationObjectGroup?new e.Composite(t,n,r):new e(t,n,r)}static sanitizeNodeName(e){return e.replace(/\s/g,`_`).replace(am,``)}static parseTrackName(e){let t=fm.exec(e);if(t===null)throw Error(`PropertyBinding: Cannot parse trackName: `+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(`.`);if(r!==void 0&&r!==-1){let e=n.nodeName.substring(r+1);pm.indexOf(e)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=e)}if(n.propertyName===null||n.propertyName.length===0)throw Error(`PropertyBinding: can not parse propertyName from trackName: `+e);return n}static findNode(e,t){if(t===void 0||t===``||t===`.`||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(e,r){for(let i=0;i=i){let a=i++,l=e[a];t[l.uuid]=c,e[c]=l,t[s]=a,e[a]=o;for(let e=0,t=r;e!==t;++e){let t=n[e],r=t[a],i=t[c];t[c]=r,t[a]=i}}}this.nCachedObjects_=i}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,r=n.length,i=this.nCachedObjects_,a=e.length;for(let o=0,s=arguments.length;o!==s;++o){let s=arguments[o].uuid,c=t[s];if(c!==void 0)if(delete t[s],c0&&(t[o.uuid]=c),e[c]=o,e.pop();for(let e=0,t=r;e!==t;++e){let t=n[e];t[c]=t[i],t.pop()}}}this.nCachedObjects_=i}subscribe_(e,t){let n=this._bindingsIndicesByPath,r=n[e],i=this._bindings;if(r!==void 0)return i[r];let a=this._paths,o=this._parsedPaths,s=this._objects,c=s.length,l=this.nCachedObjects_,u=Array(c);r=i.length,n[e]=r,a.push(e),o.push(t),i.push(u);for(let n=l,r=s.length;n!==r;++n){let r=s[n];u[n]=new hm(r,e,t)}return u}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){let r=this._paths,i=this._parsedPaths,a=this._bindings,o=a.length-1,s=a[o],c=e[o];t[c]=n,a[n]=s,a.pop(),i[n]=i[o],i.pop(),r[n]=r[o],r.pop()}}},_m=class{constructor(e,t,n=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=r;let i=t.tracks,a=i.length,o=Array(a),s={endingStart:et,endingEnd:et};for(let e=0;e!==a;++e){let t=i[e].createInterpolant(null);o[e]=t,t.settings=s}this._interpolantSettings=s,this._interpolants=o,this._propertyBindings=Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Ye,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let n=this._clip.duration,r=e._clip.duration,i=r/n,a=n/r;e.warp(1,i,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let r=this._mixer,i=r.time,a=this.timeScale,o=this._timeScaleInterpolant;o===null&&(o=r._lendControlInterpolant(),this._timeScaleInterpolant=o);let s=o.parameterPositions,c=o.sampleValues;return s[0]=i,s[1]=i+n,c[0]=e/a,c[1]=t/a,this}stopWarping(){let e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,r){if(!this.enabled){this._updateWeight(e);return}let i=this._startTime;if(i!==null){let r=(e-i)*n;r<0||n===0?t=0:(this._startTime=null,t=n*r)}t*=this._updateTimeScale(e);let a=this._updateTime(t),o=this._updateWeight(e);if(o>0){let e=this._interpolants,t=this._propertyBindings;switch(this.blendMode){case it:for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulateAdditive(o);break;case rt:default:for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(n!==null){let r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;if(n!==null){let r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,r=this.time+e,i=this._loopCount,a=n===Xe;if(e===0)return i===-1?r:a&&(i&1)==1?t-r:r;if(n===2200){i===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));handle_stop:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break handle_stop}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:`finished`,action:this,direction:e<0?-1:1})}}else{if(i===-1&&(e>=0?(i=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let n=Math.floor(r/t);r-=t*n,i+=Math.abs(n);let o=this.repetitions-i;if(o<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:`finished`,action:this,direction:e>0?1:-1});else{if(o===1){let t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=i,this.time=r,this._mixer.dispatchEvent({type:`loop`,action:this,loopDelta:n})}}else this.time=r;if(a&&(i&1)==1)return t-r}return r}_setEndings(e,t,n){let r=this._interpolantSettings;n?(r.endingStart=tt,r.endingEnd=tt):(e?r.endingStart=this.zeroSlopeAtStart?tt:et:r.endingStart=nt,t?r.endingEnd=this.zeroSlopeAtEnd?tt:et:r.endingEnd=nt)}_scheduleFading(e,t,n){let r=this._mixer,i=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,s=a.sampleValues;return o[0]=i,s[0]=t,o[1]=i+e,s[1]=n,this}},vm=new Float32Array(1),ym=class extends Ft{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,r=e._clip.tracks,i=r.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,c=this._bindingsByRootAndName,l=c[s];l===void 0&&(l={},c[s]=l);for(let e=0;e!==i;++e){let i=r[e],c=i.name,u=l[c];if(u!==void 0)++u.referenceCount,a[e]=u;else{if(u=a[e],u!==void 0){u._cacheIndex===null&&(++u.referenceCount,this._addInactiveBinding(u,s,c));continue}let r=t&&t._propertyBindings[e].binding.parsedPath;u=new rm(hm.create(n,c,r),i.ValueTypeName,i.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,s,c),a[e]=u}o[e].resultBuffer=u.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let t=(e._localRoot||this._root).uuid,n=e._clip.uuid,r=this._actionsByClip[n];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,n,t)}let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];n.useCount++===0&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];--n.useCount===0&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,r=this.time+=e,i=Math.sign(e),a=this._accuIndex^=1;for(let o=0;o!==n;++o)t[o]._update(r,e,i,a);let o=this._bindings,s=this._nActiveBindings;for(let e=0;e!==s;++e)o[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Mm).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},Pm=new M,Fm=new M,Im=class{constructor(e=new M,t=new M){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Pm.subVectors(e,this.start),Fm.subVectors(this.end,this.start);let n=Fm.dot(Fm),r=Fm.dot(Pm)/n;return t&&(r=Vt(r,0,1)),r}closestPointToPoint(e,t,n){let r=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},Lm=new M,Rm=class extends Wr{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type=`SpotLightHelper`;let n=new Ii,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1;e<32;e++,t++){let n=e/32*Math.PI*2,i=t/32*Math.PI*2;r.push(Math.cos(n),Math.sin(n),1,Math.cos(i),Math.sin(i),1)}n.setAttribute(`position`,new F(r,3)),this.cone=new hu(n,new ru({fog:!1,toneMapped:!1})),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Lm.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Lm),this.color===void 0?this.cone.material.color.copy(this.light.color):this.cone.material.color.set(this.color)}},zm=new M,Bm=new N,Vm=new N,Hm=class extends hu{constructor(e){let t=Um(e),n=new Ii,r=[],i=[],a=new P(0,0,1),o=new P(0,1,0);for(let e=0;e1)for(let n=0;n.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{lh.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(lh,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},ph=class extends hu{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Ii;r.setAttribute(`position`,new F(t,3)),r.setAttribute(`color`,new F(n,3));let i=new ru({vertexColors:!0,toneMapped:!1});super(r,i),this.type=`AxesHelper`}setColors(e,t,n){let r=new P,i=this.geometry.attributes.color.array;return r.set(e),r.toArray(i,0),r.toArray(i,3),r.set(t),r.toArray(i,6),r.toArray(i,9),r.set(n),r.toArray(i,12),r.toArray(i,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},mh=class{constructor(){this.type=`ShapePath`,this.color=new P,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new id,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,r){return this.currentPath.quadraticCurveTo(e,t,n,r),this}bezierCurveTo(e,t,n,r,i,a){return this.currentPath.bezierCurveTo(e,t,n,r,i,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e){let t=[];for(let n=0,r=e.length;n2**-52){if(c<0&&(n=t[a],s=-s,o=t[i],c=-c),e.yo.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{let t=c*(e.x-n.x)-s*(e.y-n.y);if(t===0)return!0;if(t<0)continue;r=!r}}else{if(e.y!==n.y)continue;if(o.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=o.x)return!0}}return r}let r=Xd.isClockWise,i=this.subPaths;if(i.length===0)return[];let a,o,s,c=[];if(i.length===1)return o=i[0],s=new _d,s.curves=o.curves,c.push(s),c;let l=!r(i[0].getPoints());l=e?!l:l;let u=[],d=[],f=[],p=0,m;d[p]=void 0,f[p]=[];for(let t=0,n=i.length;t1){let e=!1,t=0;for(let e=0,t=d.length;e0&&e===!1&&(f=u)}let h;for(let e=0,t=d.length;e>>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 bh=e=>yh(e),xh=e=>yh(e),Sh=(...e)=>yh(e);function Ch(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of wh(e))n.push(n,yh(r.slice(0,-4)),i.getCacheKey(t));return yh(n)}function*wh(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}var kh=Object.freeze({__proto__:null,arrayBufferToBase64:Dh,base64ToArrayBuffer:Oh,getCacheKey:Ch,getNodeChildren:wh,getValueFromType:Eh,getValueType:Th,hash:Sh,hashArray:xh,hashString:bh}),Ah={VERTEX:`vertex`,FRAGMENT:`fragment`},L={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},jh={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},Mh=[`fragment`,`vertex`],Nh=[`setup`,`analyze`,`generate`],Ph=[...Mh,`compute`],Fh=[`x`,`y`,`z`,`w`],Ih=0,R=class extends Ft{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=L.NONE,this.updateBeforeType=L.NONE,this.updateAfterType=L.NONE,this.uuid=ln.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:Ih++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,L.FRAME)}onRenderUpdate(e){return this.onUpdate(e,L.RENDER)}onObjectUpdate(e){return this.onUpdate(e,L.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of wh(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=Ch(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return wh(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Lh=class extends R{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Rh=class extends R{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},zh=class extends R{static get type(){return`TempNode`}constructor(e){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)}},Bh=class extends zh{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}},Vh=Fh.join(``),Hh=class extends R{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(Fh.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===Vh.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}},Uh=class extends zh{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Xh=e=>Yh(e).split(``).sort().join(``),Zh={setup(e,t){return e(Cg(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(qh.assign(n,...e),n);if(Jh.has(t)){let r=Jh.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Jh.has(t.slice(0,t.length-6))){let r=Jh.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Yh(t),B(new Hh(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Xh(t.slice(3).toLowerCase()),n=>B(new Uh(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Xh(t.slice(4).toLowerCase()),()=>B(new Wh(B(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),B(new Hh(e,t));else if(/^\d+$/.test(t)===!0)return B(new Lh(n,new Kh(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},Qh=new WeakMap,$h=new WeakMap,eg=function(e,t=null){let n=Th(e);if(n===`node`){let t=Qh.get(e);return t===void 0&&(t=new Proxy(e,Zh),Qh.set(e,t),Qh.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return B(_g(e,t));else if(n===`shader`)return U(e);return e},tg=function(e,t=null){for(let n in e)e[n]=B(e[n],t);return e},ng=function(e,t=null){let n=e.length;for(let r=0;rB(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...wg(t))):n===null?(...n)=>i(new e(t,...wg(n))):(n=B(n),(...r)=>i(new e(t,...wg(r),n)))},ig=function(e,...t){return B(new e(...wg(t)))},ag=class extends R{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=$h.get(e.constructor);r===void 0&&(r=new WeakMap,$h.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=B(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=B(a.call(n))}else{let r=t.jsFunc;i=B(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},og=class extends R{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return Cg(e),B(new ag(this,e))}setup(){return this.call()}},sg=[!1,!0],cg=[0,1,2,3],lg=[-1,-2],ug=[.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],dg=new Map;for(let e of sg)dg.set(e,new Kh(e));var fg=new Map;for(let e of cg)fg.set(e,new Kh(e,`uint`));var pg=new Map([...fg].map(e=>new Kh(e.value,`int`)));for(let e of lg)pg.set(e,new Kh(e,`int`));var mg=new Map([...pg].map(e=>new Kh(e.value)));for(let e of ug)mg.set(e,new Kh(e));for(let e of ug)mg.set(-e,new Kh(-e));var hg={bool:dg,uint:fg,ints:pg,float:mg},gg=new Map([...dg,...mg]),_g=(e,t)=>gg.has(e)?gg.get(e):e.isNode===!0?e:new Kh(e,t),vg=e=>{try{return e.getNodeType()}catch{return}},yg=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[Eh(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return B(t.get(n[0]));if(n.length===1){let t=_g(n[0],e);return vg(t)===e?B(t):B(new Rh(t,e))}return B(new Bh(n.map(e=>_g(e)),e))}},bg=e=>typeof e==`object`&&e?e.value:e,xg=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function Sg(e,t){return new Proxy(new og(e,t),Zh)}var B=(e,t=null)=>eg(e,t),Cg=(e,t=null)=>new tg(e,t),wg=(e,t=null)=>new ng(e,t),V=(...e)=>new rg(...e),H=(...e)=>new ig(...e),U=(e,t)=>{let n=new Sg(e,t),r=(...e)=>{let t;return Cg(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r},Tg=(...e)=>(console.warn(`TSL.ShaderNode: tslFn() has been renamed to Fn().`),U(...e));z(`toGlobal`,e=>(e.global=!0,e));var Eg=e=>{qh=e},Dg=()=>qh,W=(...e)=>qh.If(...e);function Og(e){return qh&&qh.add(e),e}z(`append`,Og);var kg=new yg(`color`),G=new yg(`float`,hg.float),K=new yg(`int`,hg.ints),q=new yg(`uint`,hg.uint),Ag=new yg(`bool`,hg.bool),J=new yg(`vec2`),jg=new yg(`ivec2`),Mg=new yg(`uvec2`),Ng=new yg(`bvec2`),Y=new yg(`vec3`),Pg=new yg(`ivec3`),Fg=new yg(`uvec3`),Ig=new yg(`bvec3`),X=new yg(`vec4`),Lg=new yg(`ivec4`),Rg=new yg(`uvec4`),zg=new yg(`bvec4`),Bg=new yg(`mat2`),Vg=new yg(`mat3`),Hg=new yg(`mat4`),Ug=(e=``)=>B(new Kh(e,`string`)),Wg=e=>B(new Kh(e,`ArrayBuffer`));z(`toColor`,kg),z(`toFloat`,G),z(`toInt`,K),z(`toUint`,q),z(`toBool`,Ag),z(`toVec2`,J),z(`toIVec2`,jg),z(`toUVec2`,Mg),z(`toBVec2`,Ng),z(`toVec3`,Y),z(`toIVec3`,Pg),z(`toUVec3`,Fg),z(`toBVec3`,Ig),z(`toVec4`,X),z(`toIVec4`,Lg),z(`toUVec4`,Rg),z(`toBVec4`,zg),z(`toMat2`,Bg),z(`toMat3`,Vg),z(`toMat4`,Hg);var Gg=V(Lh),Kg=(e,t)=>B(new Rh(B(e),t)),qg=(e,t)=>B(new Hh(B(e),t));z(`element`,Gg),z(`convert`,Kg);var Jg=class extends R{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}},Yg=e=>new Jg(e),Xg=(e,t=0)=>new Jg(e,!0,t),Zg=Xg(`frame`),Qg=Xg(`render`),$g=Yg(`object`),e_=class extends Gh{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=$g}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}},Z=(e,t)=>{let n=xg(t||e);return B(new e_(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))},t_=class extends R{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}},n_=(e,t)=>B(new t_(e,t)),r_=(e,t)=>B(new t_(e,t,!0)),i_=H(t_,`vec4`,`DiffuseColor`),a_=H(t_,`vec3`,`EmissiveColor`),o_=H(t_,`float`,`Roughness`),s_=H(t_,`float`,`Metalness`),c_=H(t_,`float`,`Clearcoat`),l_=H(t_,`float`,`ClearcoatRoughness`),u_=H(t_,`vec3`,`Sheen`),d_=H(t_,`float`,`SheenRoughness`),f_=H(t_,`float`,`Iridescence`),p_=H(t_,`float`,`IridescenceIOR`),m_=H(t_,`float`,`IridescenceThickness`),h_=H(t_,`float`,`AlphaT`),g_=H(t_,`float`,`Anisotropy`),__=H(t_,`vec3`,`AnisotropyT`),v_=H(t_,`vec3`,`AnisotropyB`),y_=H(t_,`color`,`SpecularColor`),b_=H(t_,`float`,`SpecularF90`),x_=H(t_,`float`,`Shininess`),S_=H(t_,`vec4`,`Output`),C_=H(t_,`float`,`dashSize`),w_=H(t_,`float`,`gapSize`),T_=H(t_,`float`,`pointWidth`),E_=H(t_,`float`,`IOR`),D_=H(t_,`float`,`Transmission`),O_=H(t_,`float`,`Thickness`),k_=H(t_,`float`,`AttenuationDistance`),A_=H(t_,`color`,`AttenuationColor`),j_=H(t_,`float`,`Dispersion`),M_=class extends zh{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 Fh.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?wg(t):Cg(t[0]),B(new P_(B(e),t)));z(`call`,F_);var I_=class e extends zh{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}},L_=V(I_,`+`),R_=V(I_,`-`),z_=V(I_,`*`),B_=V(I_,`/`),V_=V(I_,`%`),H_=V(I_,`==`),U_=V(I_,`!=`),W_=V(I_,`<`),G_=V(I_,`>`),K_=V(I_,`<=`),q_=V(I_,`>=`),J_=V(I_,`&&`),Y_=V(I_,`||`),X_=V(I_,`!`),Z_=V(I_,`^^`),Q_=V(I_,`&`),$_=V(I_,`~`),ev=V(I_,`|`),tv=V(I_,`^`),nv=V(I_,`<<`),rv=V(I_,`>>`);z(`add`,L_),z(`sub`,R_),z(`mul`,z_),z(`div`,B_),z(`modInt`,V_),z(`equal`,H_),z(`notEqual`,U_),z(`lessThan`,W_),z(`greaterThan`,G_),z(`lessThanEqual`,K_),z(`greaterThanEqual`,q_),z(`and`,J_),z(`or`,Y_),z(`not`,X_),z(`xor`,Z_),z(`bitAnd`,Q_),z(`bitNot`,$_),z(`bitOr`,ev),z(`bitXor`,tv),z(`shiftLeft`,nv),z(`shiftRight`,rv);var iv=(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),V_(...e));z(`remainder`,iv);var Q=class e extends zh{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=X(Y(r),0):e=X(Y(e),0);let i=z_(e,r).xyz;return Sv(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return R_(1,o).build(t,n);else if(r===e.RECIPROCAL)return B_(1,o).build(t,n);else if(r===e.DIFFERENCE)return Av(R_(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};Q.ALL=`all`,Q.ANY=`any`,Q.EQUALS=`equals`,Q.RADIANS=`radians`,Q.DEGREES=`degrees`,Q.EXP=`exp`,Q.EXP2=`exp2`,Q.LOG=`log`,Q.LOG2=`log2`,Q.SQRT=`sqrt`,Q.INVERSE_SQRT=`inversesqrt`,Q.FLOOR=`floor`,Q.CEIL=`ceil`,Q.NORMALIZE=`normalize`,Q.FRACT=`fract`,Q.SIN=`sin`,Q.COS=`cos`,Q.TAN=`tan`,Q.ASIN=`asin`,Q.ACOS=`acos`,Q.ATAN=`atan`,Q.ABS=`abs`,Q.SIGN=`sign`,Q.LENGTH=`length`,Q.NEGATE=`negate`,Q.ONE_MINUS=`oneMinus`,Q.DFDX=`dFdx`,Q.DFDY=`dFdy`,Q.ROUND=`round`,Q.RECIPROCAL=`reciprocal`,Q.TRUNC=`trunc`,Q.FWIDTH=`fwidth`,Q.BITCAST=`bitcast`,Q.TRANSPOSE=`transpose`,Q.ATAN2=`atan2`,Q.MIN=`min`,Q.MAX=`max`,Q.MOD=`mod`,Q.STEP=`step`,Q.REFLECT=`reflect`,Q.DISTANCE=`distance`,Q.DIFFERENCE=`difference`,Q.DOT=`dot`,Q.CROSS=`cross`,Q.POW=`pow`,Q.TRANSFORM_DIRECTION=`transformDirection`,Q.MIX=`mix`,Q.CLAMP=`clamp`,Q.REFRACT=`refract`,Q.SMOOTHSTEP=`smoothstep`,Q.FACEFORWARD=`faceforward`;var av=G(1e-6),ov=G(1e6),sv=G(Math.PI),cv=G(Math.PI*2),lv=V(Q,Q.ALL),uv=V(Q,Q.ANY),dv=V(Q,Q.EQUALS),fv=V(Q,Q.RADIANS),pv=V(Q,Q.DEGREES),mv=V(Q,Q.EXP),hv=V(Q,Q.EXP2),gv=V(Q,Q.LOG),_v=V(Q,Q.LOG2),vv=V(Q,Q.SQRT),yv=V(Q,Q.INVERSE_SQRT),bv=V(Q,Q.FLOOR),xv=V(Q,Q.CEIL),Sv=V(Q,Q.NORMALIZE),Cv=V(Q,Q.FRACT),wv=V(Q,Q.SIN),Tv=V(Q,Q.COS),Ev=V(Q,Q.TAN),Dv=V(Q,Q.ASIN),Ov=V(Q,Q.ACOS),kv=V(Q,Q.ATAN),Av=V(Q,Q.ABS),jv=V(Q,Q.SIGN),Mv=V(Q,Q.LENGTH),Nv=V(Q,Q.NEGATE),Pv=V(Q,Q.ONE_MINUS),Fv=V(Q,Q.DFDX),Iv=V(Q,Q.DFDY),Lv=V(Q,Q.ROUND),Rv=V(Q,Q.RECIPROCAL),zv=V(Q,Q.TRUNC),Bv=V(Q,Q.FWIDTH),Vv=V(Q,Q.BITCAST),Hv=V(Q,Q.TRANSPOSE),Uv=V(Q,Q.ATAN2),Wv=V(Q,Q.MIN),Gv=V(Q,Q.MAX),Kv=V(Q,Q.MOD),qv=V(Q,Q.STEP),Jv=V(Q,Q.REFLECT),Yv=V(Q,Q.DISTANCE),Xv=V(Q,Q.DIFFERENCE),Zv=V(Q,Q.DOT),Qv=V(Q,Q.CROSS),$v=V(Q,Q.POW),ey=V(Q,Q.POW,2),ty=V(Q,Q.POW,3),ny=V(Q,Q.POW,4),ry=V(Q,Q.TRANSFORM_DIRECTION),iy=e=>z_(jv(e),$v(Av(e),1/3)),ay=e=>Zv(e,e),oy=V(Q,Q.MIX),sy=(e,t=0,n=1)=>B(new Q(Q.CLAMP,B(e),B(t),B(n))),cy=e=>sy(e),ly=V(Q,Q.REFRACT),uy=V(Q,Q.SMOOTHSTEP),dy=V(Q,Q.FACEFORWARD),fy=U(([e])=>Cv(wv(Kv(Zv(e.xy,J(12.9898,78.233)),sv)).mul(43758.5453))),py=(e,t,n)=>oy(t,n,e),my=(e,t,n)=>uy(t,n,e);z(`all`,lv),z(`any`,uv),z(`equals`,dv),z(`radians`,fv),z(`degrees`,pv),z(`exp`,mv),z(`exp2`,hv),z(`log`,gv),z(`log2`,_v),z(`sqrt`,vv),z(`inverseSqrt`,yv),z(`floor`,bv),z(`ceil`,xv),z(`normalize`,Sv),z(`fract`,Cv),z(`sin`,wv),z(`cos`,Tv),z(`tan`,Ev),z(`asin`,Dv),z(`acos`,Ov),z(`atan`,kv),z(`abs`,Av),z(`sign`,jv),z(`length`,Mv),z(`lengthSq`,ay),z(`negate`,Nv),z(`oneMinus`,Pv),z(`dFdx`,Fv),z(`dFdy`,Iv),z(`round`,Lv),z(`reciprocal`,Rv),z(`trunc`,zv),z(`fwidth`,Bv),z(`atan2`,Uv),z(`min`,Wv),z(`max`,Gv),z(`mod`,Kv),z(`step`,qv),z(`reflect`,Jv),z(`distance`,Yv),z(`dot`,Zv),z(`cross`,Qv),z(`pow`,$v),z(`pow2`,ey),z(`pow3`,ty),z(`pow4`,ny),z(`transformDirection`,ry),z(`mix`,py),z(`clamp`,sy),z(`refract`,ly),z(`smoothstep`,my),z(`faceForward`,dy),z(`difference`,Xv),z(`saturate`,cy),z(`cbrt`,iy),z(`transpose`,Hv),z(`rand`,fy);var hy=V(class extends R{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?n_(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});z(`select`,hy);var gy=(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),hy(...e));z(`cond`,gy);var _y=class extends R{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}},vy=V(_y),yy=(e,t)=>vy(e,{label:t});z(`context`,vy),z(`label`,yy);var by=class extends R{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}},xy=V(by);z(`temp`,xy),z(`toVar`,(...e)=>xy(...e).append());var Sy=class extends R{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,Ah.VERTEX);e.flowNodeFromShaderStage(Ah.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}},Cy=V(Sy);z(`varying`,Cy);var wy=`WorkingColorSpace`,Ty=`OutputColorSpace`;function Ey(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function Dy(e,t){return Ey(e)+`To`+Ey(t)}var Oy=class extends zh{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===wy?Tn.workingColorSpace:t===Ty?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=Dy(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=X(s(n.rgb),n.a),o}},ky=e=>B(new Oy(B(e),wy,Ty)),Ay=e=>B(new Oy(B(e),Ty,wy)),jy=(e,t)=>B(new Oy(B(e),wy,t)),My=(e,t)=>B(new Oy(B(e),t,wy));z(`toOutputColorSpace`,ky),z(`toWorkingColorSpace`,Ay),z(`workingToColorSpace`,jy),z(`colorSpaceToWorking`,My);var Ny=class extends Lh{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Py=class extends R{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=L.OBJECT}setGroup(e){return this.group=e,this}element(e){return B(new Ny(this,B(e)))}setNodeType(e){let t=Z(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eB(new Py(e,t,n)),Iy=class extends Py{static get type(){return`RendererReferenceNode`}constructor(e,t,n=null){super(e,t,n),this.renderer=n,this.setGroup(Qg)}updateReference(e){return this.reference=this.renderer===null?e.renderer:this.renderer,this.reference}},Ly=(e,t,n)=>B(new Iy(e,t,n)),Ry=class extends zh{static get type(){return`ToneMappingNode`}constructor(e,t=By,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return Sh(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=X(i(t.rgb,this.exposureNode),t.a),r}},zy=(e,t,n)=>B(new Ry(e,B(t),B(n))),By=Ly(`toneMappingExposure`,`float`);z(`toneMapping`,(e,t,n)=>zy(t,n,e));var Vy=class extends Gh{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=Ct,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new Kc(n,i),s=new Jc(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=Cy(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}},Hy=(e,t,n,r)=>B(new Vy(e,t,n,r)),Uy=(e,t,n,r)=>Hy(e,t,n,r).setUsage(wt),Wy=(e,t,n,r)=>Hy(e,t,n,r).setInstanced(!0),Gy=(e,t,n,r)=>Uy(e,t,n,r).setInstanced(!0);z(`toAttribute`,e=>Hy(e.value));var Ky=class extends R{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=L.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eB(new Ky(B(e),t,n));z(`compute`,qy);var Jy=class extends R{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}},Yy=(e,...t)=>B(new Jy(B(e),...t));z(`cache`,Yy);var Xy=class extends R{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}},Zy=V(Xy);z(`bypass`,Zy);var Qy=class extends R{static get type(){return`RemapNode`}constructor(e,t,n,r=G(0),i=G(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}},$y=V(Qy,null,null,{doClamp:!1}),eb=V(Qy);z(`remap`,$y),z(`remapClamp`,eb);var tb=class extends R{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}},nb=V(tb),rb=e=>(e?hy(e,nb(`discard`)):nb(`discard`)).append(),ib=()=>nb(`return`).append();z(`discard`,rb);var ab=class extends zh{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==Tn.workingColorSpace&&(t=t.workingToColorSpace(r)),t}},ob=(e,t=null,n=null)=>B(new ab(B(e),t,n));z(`renderOutput`,ob);function sb(e){console.warn(`THREE.TSLBase: AddNodeElement has been removed in favor of tree-shaking. Trying add`,e)}var cb=class extends R{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):Cy(this).build(e,n)}else return console.warn(`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}},lb=(e,t)=>B(new cb(e,t)),ub=e=>lb(`uv`+(e>0?e:``),`vec2`),db=class extends R{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)}},fb=V(db),pb=class extends e_{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=L.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))}}},mb=V(pb),hb=class extends e_{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=L.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return ub(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Z(this.value.matrix)),this._matrixUniform.mul(Y(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?L.FRAME:L.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(K(fb(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=My(nb(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=B(e),t.referenceNode=this.getSelf(),B(t)}blur(e){let t=this.clone();return t.biasNode=B(e).mul(mb(t)),t.referenceNode=this.getSelf(),B(t)}level(e){let t=this.clone();return t.levelNode=B(e),t.referenceNode=this.getSelf(),B(t)}size(e){return fb(this,e)}bias(e){let t=this.clone();return t.biasNode=B(e),t.referenceNode=this.getSelf(),B(t)}compare(e){let t=this.clone();return t.compareNode=B(e),t.referenceNode=this.getSelf(),B(t)}grad(e,t){let n=this.clone();return n.gradNode=[B(e),B(t)],n.referenceNode=this.getSelf(),B(n)}depth(e){let t=this.clone();return t.depthNode=B(e),t.referenceNode=this.getSelf(),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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}},gb=V(hb),_b=(...e)=>gb(...e).setSampler(!1),vb=e=>(e.isNode===!0?e:gb(e)).convert(`sampler`),yb=Z(`float`).label(`cameraNear`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.near),bb=Z(`float`).label(`cameraFar`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.far),xb=Z(`float`).label(`cameraLogDepth`).setGroup(Qg).onRenderUpdate(({camera:e})=>2/(Math.log(e.far+1)/Math.LN2)),Sb=Z(`mat4`).label(`cameraProjectionMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.projectionMatrix),Cb=Z(`mat4`).label(`cameraProjectionMatrixInverse`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.projectionMatrixInverse),wb=Z(`mat4`).label(`cameraViewMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.matrixWorldInverse),Tb=Z(`mat4`).label(`cameraWorldMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.matrixWorld),Eb=Z(`mat3`).label(`cameraNormalMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.normalMatrix),Db=Z(new M).label(`cameraPosition`).setGroup(Qg).onRenderUpdate(({camera:e},t)=>t.value.setFromMatrixPosition(e.matrixWorld)),Ob=class e extends R{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=L.OBJECT,this._uniformNode=new e_(null)}getNodeType(){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`}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 M,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new M,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new M,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new M,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Ob.WORLD_MATRIX=`worldMatrix`,Ob.POSITION=`position`,Ob.SCALE=`scale`,Ob.VIEW_POSITION=`viewPosition`,Ob.DIRECTION=`direction`;var kb=V(Ob,Ob.DIRECTION),Ab=V(Ob,Ob.WORLD_MATRIX),jb=V(Ob,Ob.POSITION),Mb=V(Ob,Ob.SCALE),Nb=V(Ob,Ob.VIEW_POSITION),Pb=class extends Ob{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}},Fb=H(Pb,Pb.DIRECTION),Ib=H(Pb,Pb.WORLD_MATRIX),Lb=H(Pb,Pb.POSITION),Rb=H(Pb,Pb.SCALE),zb=H(Pb,Pb.VIEW_POSITION),Bb=Z(new j).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Vb=Z(new N).onObjectUpdate(({object:e},t)=>t.value.copy(e.matrixWorld).invert()),Hb=wb.mul(Ib).toVar(`modelViewMatrix_2`),Ub=U(e=>(e.context.isHighPrecisionModelViewMatrix=!0,Z(`mat4`).onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar(`highPrecisionModelViewMatrix`),Wb=U(e=>{let t=e.context.isHighPrecisionModelViewMatrix;return Z(`mat3`).onObjectUpdate(({object:e,camera:n})=>(t!==!0&&e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix)))}).once()().toVar(`highPrecisionModelNormalMatrix`),Gb=lb(`position`,`vec3`),Kb=Gb.varying(`positionLocal`),qb=Gb.varying(`positionPrevious`),Jb=Ib.mul(Kb).xyz.varying(`v_positionWorld`),Yb=Kb.transformDirection(Ib).varying(`v_positionWorldDirection`).normalize().toVar(`positionWorldDirection`),Xb=Hb.mul(Kb).xyz.varying(`v_positionView`),Zb=Xb.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),Qb=class extends R{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}},$b=H(Qb),ex=G($b).mul(2).sub(1),tx=lb(`normal`,`vec3`),nx=U(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),Y(0,1,0)):tx,`vec3`).once()().toVar(`normalLocal`),rx=Xb.dFdx().cross(Xb.dFdy()).normalize().toVar(`normalFlat`),ix=U(e=>{let t;return t=e.material.flatShading===!0?rx:Cy(ux(nx),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),ax=Cy(ix.transformDirection(wb),`v_normalWorld`).normalize().toVar(`normalWorld`),ox=U(e=>e.context.setupNormal(),`vec3`).once()().mul(ex).toVar(`transformedNormalView`),sx=ox.transformDirection(wb).toVar(`transformedNormalWorld`),cx=U(e=>e.context.setupClearcoatNormal(),`vec3`).once()().mul(ex).toVar(`transformedClearcoatNormalView`),lx=U(([e,t=Ib])=>{let n=Vg(t),r=e.div(Y(n[0].dot(n[0]),n[1].dot(n[1]),n[2].dot(n[2])));return n.mul(r).xyz}),ux=U(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=Bb.mul(e);return wb.transformDirection(r)}),dx=Z(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),fx=Zb.negate().reflect(ox),px=Zb.negate().refract(ox,dx),mx=fx.transformDirection(wb).toVar(`reflectVector`),hx=px.transformDirection(wb).toVar(`reflectVector`),gx=class extends hb{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?mx:e.mapping===302?hx:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),Y(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?Y(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}},_x=V(gx),vx=class extends e_{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}},yx=(e,t,n)=>B(new vx(e,t,n)),bx=class extends Lh{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},xx=class extends vx{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=L.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nB(new xx(e,t)),Cx=(e,t)=>(console.warn(`TSL.UniformArrayNode: uniforms() has been renamed to uniformArray().`),B(new xx(e,t))),wx=class extends Lh{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Tx=class extends R{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=L.OBJECT}element(e){return B(new wx(this,B(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?Sx(null,e):e===`texture`?gb(null):e===`cubeTexture`?_x(null):Z(null,e):yx(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eB(new Tx(e,t,n)),Dx=(e,t,n,r)=>B(new Tx(e,t,r,n)),Ox=class extends Tx{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}},kx=(e,t,n)=>B(new Ox(e,t,n)),Ax=U(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),lb(`tangent`,`vec4`)))(),jx=Ax.xyz.toVar(`tangentLocal`),Mx=Hb.mul(X(jx,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),Nx=Mx.transformDirection(wb).varying(`v_tangentWorld`).normalize().toVar(`tangentWorld`),Px=Mx.toVar(`transformedTangentView`),Fx=Px.transformDirection(wb).normalize().toVar(`transformedTangentWorld`),Ix=e=>e.mul(Ax.w).xyz,Lx=Cy(Ix(tx.cross(Ax)),`v_bitangentGeometry`).normalize().toVar(`bitangentGeometry`),Rx=Cy(Ix(nx.cross(jx)),`v_bitangentLocal`).normalize().toVar(`bitangentLocal`),zx=Cy(Ix(ix.cross(Mx)),`v_bitangentView`).normalize().toVar(`bitangentView`),Bx=Cy(Ix(ax.cross(Nx)),`v_bitangentWorld`).normalize().toVar(`bitangentWorld`),Vx=Ix(ox.cross(Px)).normalize().toVar(`transformedBitangentView`),Hx=Vx.transformDirection(wb).normalize().toVar(`transformedBitangentWorld`),Ux=Vg(Mx,zx,ix),Wx=Zb.mul(Ux),Gx=(e,t)=>e.sub(Wx.mul(t)),Kx=(()=>{let e=v_.cross(Zb);return e=e.cross(v_).normalize(),e=oy(e,ox,g_.mul(o_.oneMinus()).oneMinus().pow2().pow2()).normalize(),e})(),qx=U(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=ex.mul(m.inverseSqrt());return L_(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),Jx=class extends zh{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=Y(r.xy.mul(n),r.z));let i=null;return t===1?i=ux(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?Ux.mul(r).normalize():qx({eye_pos:Xb,surf_norm:ix,mapN:r,uv:ub()})),i}},Yx=V(Jx),Xx=U(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||ub()),forceUVContext:!0}),r=G(n(e=>e));return J(G(n(e=>e.add(e.dFdx()))).sub(r),G(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Zx=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(ex),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Qx=class extends zh{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 Zx({surf_pos:Xb,surf_norm:ix,dHdxy:Xx({textureNode:this.textureNode,bumpScale:e})})}},$x=V(Qx),eS=new Map,$=class e extends R{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=eS.get(e);return n===void 0&&(n=kx(e,t),eS.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?Y():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:G(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=Yx(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?$x(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):ix;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?Yx(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):ix;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=Bg(RS.x,RS.y,RS.y.negate(),RS.x).mul(e.rg.mul(2).sub(J(1)).normalize().mul(e.b))}else i=RS;else if(r===e.IRIDESCENCE_THICKNESS){let e=Ex(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Ex(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};$.ALPHA_TEST=`alphaTest`,$.COLOR=`color`,$.OPACITY=`opacity`,$.SHININESS=`shininess`,$.SPECULAR=`specular`,$.SPECULAR_STRENGTH=`specularStrength`,$.SPECULAR_INTENSITY=`specularIntensity`,$.SPECULAR_COLOR=`specularColor`,$.REFLECTIVITY=`reflectivity`,$.ROUGHNESS=`roughness`,$.METALNESS=`metalness`,$.NORMAL=`normal`,$.CLEARCOAT=`clearcoat`,$.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,$.CLEARCOAT_NORMAL=`clearcoatNormal`,$.EMISSIVE=`emissive`,$.ROTATION=`rotation`,$.SHEEN=`sheen`,$.SHEEN_ROUGHNESS=`sheenRoughness`,$.ANISOTROPY=`anisotropy`,$.IRIDESCENCE=`iridescence`,$.IRIDESCENCE_IOR=`iridescenceIOR`,$.IRIDESCENCE_THICKNESS=`iridescenceThickness`,$.IOR=`ior`,$.TRANSMISSION=`transmission`,$.THICKNESS=`thickness`,$.ATTENUATION_DISTANCE=`attenuationDistance`,$.ATTENUATION_COLOR=`attenuationColor`,$.LINE_SCALE=`scale`,$.LINE_DASH_SIZE=`dashSize`,$.LINE_GAP_SIZE=`gapSize`,$.LINE_WIDTH=`linewidth`,$.LINE_DASH_OFFSET=`dashOffset`,$.POINT_WIDTH=`pointWidth`,$.DISPERSION=`dispersion`,$.LIGHT_MAP=`light`,$.AO_MAP=`ao`;var tS=H($,$.ALPHA_TEST),nS=H($,$.COLOR),rS=H($,$.SHININESS),iS=H($,$.EMISSIVE),aS=H($,$.OPACITY),oS=H($,$.SPECULAR),sS=H($,$.SPECULAR_INTENSITY),cS=H($,$.SPECULAR_COLOR),lS=H($,$.SPECULAR_STRENGTH),uS=H($,$.REFLECTIVITY),dS=H($,$.ROUGHNESS),fS=H($,$.METALNESS),pS=H($,$.NORMAL).context({getUV:null}),mS=H($,$.CLEARCOAT),hS=H($,$.CLEARCOAT_ROUGHNESS),gS=H($,$.CLEARCOAT_NORMAL).context({getUV:null}),_S=H($,$.ROTATION),vS=H($,$.SHEEN),yS=H($,$.SHEEN_ROUGHNESS),bS=H($,$.ANISOTROPY),xS=H($,$.IRIDESCENCE),SS=H($,$.IRIDESCENCE_IOR),CS=H($,$.IRIDESCENCE_THICKNESS),wS=H($,$.TRANSMISSION),TS=H($,$.THICKNESS),ES=H($,$.IOR),DS=H($,$.ATTENUATION_DISTANCE),OS=H($,$.ATTENUATION_COLOR),kS=H($,$.LINE_SCALE),AS=H($,$.LINE_DASH_SIZE),jS=H($,$.LINE_GAP_SIZE),MS=H($,$.LINE_WIDTH),NS=H($,$.LINE_DASH_OFFSET),PS=H($,$.POINT_WIDTH),FS=H($,$.DISPERSION),IS=H($,$.LIGHT_MAP),LS=H($,$.AO_MAP),RS=Z(new A).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))}),zS=class extends zh{static get type(){return`ModelViewProjectionNode`}constructor(e=null){super(`vec4`),this.positionNode=e}setup(e){if(e.shaderStage===`fragment`)return Cy(e.context.mvp);let t=this.positionNode||Kb,n=e.renderer.nodes.modelViewMatrix||Hb;return Sb.mul(n).mul(t)}},BS=V(zS),VS=class e extends R{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:Cy(this).build(t,n),a}};VS.VERTEX=`vertex`,VS.INSTANCE=`instance`,VS.SUBGROUP=`subgroup`,VS.INVOCATION_LOCAL=`invocationLocal`,VS.INVOCATION_SUBGROUP=`invocationSubgroup`,VS.DRAW=`draw`;var HS=H(VS,VS.VERTEX),US=H(VS,VS.INSTANCE),WS=H(VS,VS.SUBGROUP),GS=H(VS,VS.INVOCATION_SUBGROUP),KS=H(VS,VS.INVOCATION_LOCAL),qS=H(VS,VS.DRAW),JS=class extends R{static get type(){return`InstanceNode`}constructor(e){super(`void`),this.instanceMesh=e,this.instanceMatrixNode=null,this.instanceColorNode=null,this.updateType=L.FRAME,this.buffer=null,this.bufferColor=null}setup(e){let t=this.instanceMatrixNode,n=this.instanceColorNode,r=this.instanceMesh;if(t===null){let e=r.instanceMatrix;if(r.count<=1e3)t=yx(e.array,`mat4`,Math.max(r.count,1)).element(US);else{let n=new Cm(e.array,16,1);this.buffer=n;let r=e.usage===35048?Gy:Wy;t=Hg(r(n,`vec4`,16,0),r(n,`vec4`,16,4),r(n,`vec4`,16,8),r(n,`vec4`,16,12))}this.instanceMatrixNode=t}let i=r.instanceColor;if(i&&n===null){let e=new kl(i.array,3),t=i.usage===35048?Gy:Wy;this.bufferColor=e,n=Y(t(e,`vec3`,3,0)),this.instanceColorNode=n}let a=t.mul(Kb).xyz;if(Kb.assign(a),e.hasGeometryAttribute(`normal`)){let e=lx(nx,t);nx.assign(e)}this.instanceColorNode!==null&&r_(`vec3`,`vInstanceColor`).assign(this.instanceColorNode)}update(){this.instanceMesh.instanceMatrix.usage!==35048&&this.buffer!=null&&this.instanceMesh.instanceMatrix.version!==this.buffer.version&&(this.buffer.version=this.instanceMesh.instanceMatrix.version),this.instanceMesh.instanceColor&&this.instanceMesh.instanceColor.usage!==35048&&this.bufferColor!=null&&this.instanceMesh.instanceColor.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceMesh.instanceColor.version)}},YS=V(JS),XS=class extends R{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=US:this.batchingIdNode=qS);let t=U(([e])=>{let t=fb(_b(this.batchMesh._indirectTexture),0),n=K(e).modInt(K(t)),r=K(e).div(K(t));return _b(this.batchMesh._indirectTexture,jg(n,r)).x}).setLayout({name:`getIndirectIndex`,type:`uint`,inputs:[{name:`id`,type:`int`}]})(K(this.batchingIdNode)),n=this.batchMesh._matricesTexture,r=fb(_b(n),0),i=G(t).mul(4).toInt().toVar(),a=i.modInt(r),o=i.div(K(r)),s=Hg(_b(n,jg(a,o)),_b(n,jg(a.add(1),o)),_b(n,jg(a.add(2),o)),_b(n,jg(a.add(3),o))),c=this.batchMesh._colorsTexture;if(c!==null){let e=U(([e])=>{let t=fb(_b(c),0).x,n=e;return _b(c,jg(n.modInt(t),n.div(t))).rgb}).setLayout({name:`getBatchingColor`,type:`vec3`,inputs:[{name:`id`,type:`int`}]})(t);r_(`vec3`,`vBatchColor`).assign(e)}let l=Vg(s);Kb.assign(s.mul(Kb));let u=nx.div(Y(l[0].dot(l[0]),l[1].dot(l[1]),l[2].dot(l[2]))),d=l.mul(u).xyz;nx.assign(d),e.hasGeometryAttribute(`tangent`)&&jx.mulAssign(l)}},ZS=V(XS),QS=new WeakMap,$S=class extends R{static get type(){return`SkinningNode`}constructor(e,t=!1){super(`void`),this.skinnedMesh=e,this.useReference=t,this.updateType=L.OBJECT,this.skinIndexNode=lb(`skinIndex`,`uvec4`),this.skinWeightNode=lb(`skinWeight`,`vec4`);let n,r,i;t?(n=Ex(`bindMatrix`,`mat4`),r=Ex(`bindMatrixInverse`,`mat4`),i=Dx(`skeleton.boneMatrices`,`mat4`,e.skeleton.bones.length)):(n=Z(e.bindMatrix,`mat4`),r=Z(e.bindMatrixInverse,`mat4`),i=yx(e.skeleton.boneMatrices,`mat4`,e.skeleton.bones.length)),this.bindMatrixNode=n,this.bindMatrixInverseNode=r,this.boneMatricesNode=i,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=Kb){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=L_(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}getSkinnedNormal(e=this.boneMatricesNode,t=nx){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=L_(r.x.mul(o),r.y.mul(s),r.z.mul(c),r.w.mul(l));return u=a.mul(u).mul(i),u.transformDirection(t).xyz}getPreviousSkinnedPosition(e){let t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=Dx(`skeleton.previousBoneMatrices`,`mat4`,t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,qb)}needsPreviousBoneMatrices(e){let t=e.renderer.getMRT();return t&&t.has(`velocity`)}setup(e){this.needsPreviousBoneMatrices(e)&&qb.assign(this.getPreviousSkinnedPosition(e));let t=this.getSkinnedPosition();if(Kb.assign(t),e.hasGeometryAttribute(`normal`)){let t=this.getSkinnedNormal();nx.assign(t),e.hasGeometryAttribute(`tangent`)&&jx.assign(t)}}generate(e,t){if(t!==`void`)return Kb.build(e,t)}update(e){let t=(this.useReference?e.object:this.skinnedMesh).skeleton;QS.get(t)!==e.frameId&&(QS.set(t,e.frameId),this.previousBoneMatricesNode!==null&&t.previousBoneMatrices.set(t.boneMatrices),t.update())}},eC=e=>B(new $S(e)),tC=e=>B(new $S(e,!0)),nC=class extends R{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tB(new nC(wg(e,`int`))).append(),iC=()=>nb(`continue`).append(),aC=()=>nb(`break`).append(),oC=(...e)=>(console.warn(`TSL.LoopNode: loop() has been renamed to Loop().`),rC(...e)),sC=new WeakMap,cC=new Fn,lC=U(({bufferMap:e,influence:t,stride:n,width:r,depth:i,offset:a})=>{let o=K(HS).mul(n).add(a),s=o.div(r);return _b(e,jg(o.sub(s.mul(r)),s)).depth(i).mul(t)});function uC(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=sC.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 Rn(p,u,d,a);m.type=E,m.needsUpdate=!0;let h=l*4;for(let e=0;e{let t=G(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?t.assign(_b(this.mesh.morphTexture,jg(K(e).add(1),K(US))).r):t.assign(Ex(`morphTargetInfluences`,`float`).element(e).toVar()),n===!0&&Kb.addAssign(lC({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:K(0)})),r===!0&&nx.addAssign(lC({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:K(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)}},fC=V(dC),pC=e=>e.sort((e,t)=>e.id-t.id),mC=(e,t)=>{for(let n of t)if(n.isAnalyticLightNode&&n.light.id===e)return n;return null},hC=new WeakMap,gC=class extends R{static get type(){return`LightsNode`}constructor(e=[]){super(`vec3`),this.totalDiffuseNode=Y().toVar(`totalDiffuse`),this.totalSpecularNode=Y().toVar(`totalSpecular`),this.outgoingLightNode=Y().toVar(`outgoingLight`),this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this.global=!0}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.getDataFromNode(this);for(let n of t.nodes)n.build(e)}setupLightsNode(e){let t=[],n=this._lightNodes,r=pC(this._lights),i=e.renderer.nodes.library;for(let e of r)if(e.isNode)t.push(B(e));else{let r=null;if(n!==null&&(r=mC(e.id,n)),r===null){let n=i.getLightNodeClass(e.constructor);if(n===null){console.warn(`LightsNode.setupNodeLights: Light node not found for ${e.constructor.name}`);continue}let r=null;hC.has(e)?r=hC.get(e):(r=new n(e),hC.set(e,r)),t.push(r)}}this._lightNodes=t}setup(e){this._lightNodes===null&&this.setupLightsNode(e);let t=e.context,n=t.lightingModel,r=this.outgoingLightNode;if(n){let{_lightNodes:i,totalDiffuseNode:a,totalSpecularNode:o}=this;t.outgoingLight=r;let s=e.addStack(),c=e.getDataFromNode(this);c.nodes=s.nodes,n.start(t,s,e);for(let t of i)t.build(e);n.indirect(t,s,e);let{backdrop:l,backdropAlpha:u}=t,{directDiffuse:d,directSpecular:f,indirectDiffuse:p,indirectSpecular:m}=t.reflectedLight,h=d.add(p);l!==null&&(h=Y(u===null?l:u.mix(h,l)),t.material.transparent=!0),a.assign(h),o.assign(f.add(m)),r.assign(a.add(o)),n.finish(t,s,e),r=r.bypass(e.removeStack())}return r}setLights(e){return this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this}getLights(){return this._lights}},_C=V(gC),vC=class extends R{static get type(){return`LightingNode`}constructor(){super(`vec3`),this.isLightingNode=!0}generate(){console.warn(`Abstract function.`)}},yC=class extends vC{static get type(){return`AONode`}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}},bC=class extends _y{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:Y().toVar(`directDiffuse`),directSpecular:Y().toVar(`directSpecular`),indirectDiffuse:Y().toVar(`indirectDiffuse`),indirectSpecular:Y().toVar(`indirectSpecular`)};return{radiance:Y().toVar(`radiance`),irradiance:Y().toVar(`irradiance`),iblIrradiance:Y().toVar(`iblIrradiance`),ambientOcclusion:G(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)}},xC=V(bC),SC=class extends vC{static get type(){return`IrradianceNode`}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}},CC,wC,TC=class e extends R{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=L.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=L.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(wC),wC.multiplyScalar(t.getPixelRatio())):wC.copy(n.viewport):n===null?t.getDrawingBufferSize(CC):(CC.width=n.width,CC.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Z(CC||=new A):t===e.VIEWPORT?Z(wC||=new Fn):J(OC.div(DC)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(DC).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};TC.COORDINATE=`coordinate`,TC.VIEWPORT=`viewport`,TC.SIZE=`size`,TC.UV=`uv`;var EC=H(TC,TC.UV),DC=H(TC,TC.SIZE),OC=H(TC,TC.COORDINATE),kC=H(TC,TC.VIEWPORT),AC=kC.zw,jC=OC.sub(kC.xy),MC=jC.div(AC),NC=U(()=>(console.warn(`TSL.ViewportNode: "viewportResolution" is deprecated. Use "screenSize" instead.`),DC),`vec2`).once()(),PC=U(()=>(console.warn(`TSL.ViewportNode: "viewportTopLeft" is deprecated. Use "screenUV" instead.`),EC),`vec2`).once()(),FC=U(()=>(console.warn(`TSL.ViewportNode: "viewportBottomLeft" is deprecated. Use "screenUV.flipY()" instead.`),EC.flipY()),`vec2`).once()(),IC=new A,LC=class extends hb{static get type(){return`ViewportTextureNode`}constructor(e=EC,t=null,n=null){n===null&&(n=new Tu,n.minFilter=v),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=L.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(IC);let n=this.value;(n.image.width!==IC.width||n.image.height!==IC.height)&&(n.image.width=IC.width,n.image.height=IC.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}},RC=V(LC),zC=V(LC,null,null,{generateMipmaps:!0}),BC=null,VC=class extends LC{static get type(){return`ViewportDepthTextureNode`}constructor(e=EC,t=null){BC===null&&(BC=new ho),super(e,t,BC)}},HC=V(VC),UC=class e extends R{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=JC().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?KC(Xb.z,yb,bb):WC(Xb.z,yb,bb):n===e.LINEAR_DEPTH&&(i=r===null?WC(Xb.z,yb,bb):t.isPerspectiveCamera?WC(qC(r,yb,bb),yb,bb):r),i}};UC.DEPTH_BASE=`depthBase`,UC.DEPTH=`depth`,UC.LINEAR_DEPTH=`linearDepth`;var WC=(e,t,n)=>e.add(t).div(t.sub(n)),GC=(e,t,n)=>t.sub(n).mul(e).sub(t),KC=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),qC=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),JC=V(UC,UC.DEPTH_BASE),YC=H(UC,UC.DEPTH),XC=V(UC,UC.LINEAR_DEPTH),ZC=XC(HC());YC.assign=e=>JC(e);var QC=class e extends R{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return U(()=>{let r=Sx(e),i=n_(`float`,`distanceToPlane`),a=n_(`float`,`distanceToGradient`),o=n_(`float`,`clipOpacity`);o.assign(1);let s;if(rC(n,({i:e})=>{s=r.element(e),i.assign(Xb.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(uy(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(Xb.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(uy(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}i_.a.mulAssign(o),i_.a.equal(0).discard()})()}setupDefault(e,t,n){return U(()=>{let r=Sx(e),i;if(rC(n,({i:e})=>{i=r.element(e),Xb.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(Xb.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};QC.ALPHA_TO_COVERAGE=`alphaToCoverage`,QC.DEFAULT=`default`;var $C=()=>B(new QC),ew=()=>B(new QC(QC.ALPHA_TO_COVERAGE)),tw=class extends di{static get type(){return`NodeMaterial`}constructor(){super(),this.isNodeMaterial=!0,this.type=this.constructor.type,this.forceSinglePass=!1,this.fog=!0,this.lights=!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.positionNode=null,this.depthNode=null,this.shadowNode=null,this.shadowPositionNode=null,this.outputNode=null,this.mrtNode=null,this.fragmentNode=null,this.vertexNode=null}customProgramCacheKey(){return this.type+Ch(this)}build(e){this.setup(e)}setupObserver(e){return new vh(e)}setup(e){e.context.setupNormal=()=>this.setupNormal(e),e.addStack(),e.stack.outputNode=this.vertexNode||this.setupPosition(e),e.addFlow(`vertex`,e.removeStack()),e.addStack();let t,n=this.setupClipping(e);if(this.depthWrite===!0&&this.setupDepth(e),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);let r=this.setupLighting(e);n!==null&&e.stack.add(n);let i=X(r,i_.a).max(0);if(t=this.setupOutput(e,i),S_.assign(t),this.outputNode!==null&&(t=this.outputNode),e.renderer.getRenderTarget()!==null){let n=e.renderer.getMRT(),r=this.mrtNode;n===null?r!==null&&(t=r):(t=n,r!==null&&(t=n.merge(r)))}}else{let n=this.fragmentNode;n.isOutputStructNode!==!0&&(n=X(n)),t=this.setupOutput(e,n)}e.stack.outputNode=t,e.addFlow(`fragment`,e.removeStack()),e.monitor=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;let{globalClippingCount:t,localClippingCount:n}=e.clippingContext,r=null;if(t||n){let t=e.renderer.samples;this.alphaToCoverage&&t>1?r=ew():e.stack.add($C())}return r}setupDepth(e){let{renderer:t}=e,n=this.depthNode;if(n===null){let e=`getMRT`in t&&t.getMRT();e&&e.has(`depth`)?n=e.get(`depth`):t.logarithmicDepthBuffer===!0&&(n=BS().w.add(1).log2().mul(xb).mul(.5))}n!==null&&YC.assign(n).append()}setupPosition(e){let{object:t}=e,n=t.geometry;if(e.addStack(),(n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&fC(t).append(),t.isSkinnedMesh===!0&&tC(t).append(),this.displacementMap){let e=kx(`displacementMap`,`texture`),t=kx(`displacementScale`,`float`),n=kx(`displacementBias`,`float`);Kb.addAssign(nx.normalize().mul(e.x.mul(t).add(n)))}t.isBatchedMesh&&ZS(t).append(),t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&YS(t).append(),this.positionNode!==null&&Kb.assign(this.positionNode);let r=BS();return e.context.vertex=e.removeStack(),e.context.mvp=r,r}setupDiffuseColor({object:e,geometry:t}){let n=this.colorNode?X(this.colorNode):nS;this.vertexColors===!0&&t.hasAttribute(`color`)&&(n=X(n.xyz.mul(lb(`color`,`vec3`)),n.a)),e.instanceColor&&(n=r_(`vec3`,`vInstanceColor`).mul(n)),e.isBatchedMesh&&e._colorsTexture&&(n=r_(`vec3`,`vBatchColor`).mul(n)),i_.assign(n);let r=this.opacityNode?G(this.opacityNode):aS;if(i_.a.assign(i_.a.mul(r)),this.alphaTestNode!==null||this.alphaTest>0){let e=this.alphaTestNode===null?tS:G(this.alphaTestNode);i_.a.lessThanEqual(e).discard()}this.transparent===!1&&this.blending===1&&this.alphaToCoverage===!1&&i_.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?Y(0):i_.rgb}setupNormal(){return this.normalNode?Y(this.normalNode):pS}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?kx(`envMap`,`cubeTexture`):kx(`envMap`,`texture`)),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new SC(IS)),t}setupLights(e){let t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);let r=this.setupLightMap(e);if(r&&r.isLightingNode&&t.push(r),this.aoNode!==null||e.material.aoMap){let e=this.aoNode===null?LS:this.aoNode;t.push(new yC(e))}let i=this.lightsNode||e.lightsNode;return t.length>0&&(i=_C([...i.getLights(),...t])),i}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().getLights().length>0?o=xC(a,this.setupLightingModel(e),n,r):n!==null&&(o=Y(r===null?n:oy(o,n,r))),(i&&i.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(a_.assign(Y(i||iS)),o=o.add(a_)),o}setupOutput(e,t){if(this.fog===!0){let n=e.fogNode;n&&(t=X(n.mix(t.rgb,n.colorNode),t.a))}return 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=di.prototype.toJSON.call(this,e),r=wh(this);n.inputNodes={};for(let{property:t,childNode:i}of r)n.inputNodes[t]=i.toJSON(e).uuid;function i(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=i(e.textures),r=i(e.images),a=i(e.nodes);t.length>0&&(n.textures=t),r.length>0&&(n.images=r),a.length>0&&(n.nodes=a)}return n}copy(e){return this.lightsNode=e.lightsNode,this.envNode=e.envNode,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.positionNode=e.positionNode,this.depthNode=e.depthNode,this.shadowNode=e.shadowNode,this.shadowPositionNode=e.shadowPositionNode,this.outputNode=e.outputNode,this.mrtNode=e.mrtNode,this.fragmentNode=e.fragmentNode,this.vertexNode=e.vertexNode,super.copy(e)}},nw=new _u,rw=class extends tw{static get type(){return`InstancedPointsNodeMaterial`}constructor(e={}){super(),this.lights=!1,this.useAlphaToCoverage=!0,this.useColor=e.vertexColors,this.pointWidth=1,this.pointColorNode=null,this.pointWidthNode=null,this.setDefaultValues(nw),this.setValues(e)}setup(e){this.setupShaders(e),super.setup(e)}setupShaders({renderer:e}){let t=this.alphaToCoverage,n=this.useColor;this.vertexNode=U(()=>{let e=lb(`instancePosition`).xyz,t=X(Hb.mul(X(e,1))),n=kC.z.div(kC.w),r=Sb.mul(t),i=Gb.xy.toVar();return i.mulAssign(this.pointWidthNode?this.pointWidthNode:PS),i.assign(i.div(kC.z)),i.y.assign(i.y.mul(n)),i.assign(i.mul(r.w)),r.addAssign(X(i,0,0)),r})(),this.fragmentNode=U(()=>{let r=G(1).toVar(),i=ay(ub().mul(2).sub(1));if(t&&e.samples>1){let e=G(i.fwidth()).toVar();r.assign(uy(e.oneMinus(),e.add(1),i).oneMinus())}else i.greaterThan(1).discard();let a;return a=this.pointColorNode?this.pointColorNode:n?lb(`instanceColor`).mul(nS):nS,r.mulAssign(aS),X(a,r)})()}get alphaToCoverage(){return this.useAlphaToCoverage}set alphaToCoverage(e){this.useAlphaToCoverage!==e&&(this.useAlphaToCoverage=e,this.needsUpdate=!0)}},iw=new ru,aw=class extends tw{static get type(){return`LineBasicNodeMaterial`}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.lights=!1,this.setDefaultValues(iw),this.setValues(e)}},ow=new Tf,sw=class extends tw{static get type(){return`LineDashedNodeMaterial`}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.lights=!1,this.setDefaultValues(ow),this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){let e=this.offsetNode,t=this.dashScaleNode?G(this.dashScaleNode):kS,n=this.dashSizeNode?G(this.dashSizeNode):AS,r=this.dashSizeNode?G(this.dashGapNode):jS;C_.assign(n),w_.assign(r);let i=Cy(lb(`lineDistance`).mul(t));(e?i.add(e):i).mod(C_.add(w_)).greaterThan(C_).discard()}},cw=new Tf,lw=class extends tw{static get type(){return`Line2NodeMaterial`}constructor(e={}){super(),this.lights=!1,this.setDefaultValues(cw),this.useAlphaToCoverage=!0,this.useColor=e.vertexColors,this.useDash=e.dashed,this.useWorldUnits=!1,this.dashOffset=0,this.lineWidth=1,this.lineColorNode=null,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setup(e){this.setupShaders(e),super.setup(e)}setupShaders({renderer:e}){let t=this.alphaToCoverage,n=this.useColor,r=this.dashed,i=this.worldUnits,a=U(({start:e,end:t})=>{let n=Sb.element(2).element(2),r=Sb.element(3).element(2).mul(-.5).div(n).sub(e.z).div(t.z.sub(e.z));return X(oy(e.xyz,t.xyz,r),t.w)}).setLayout({name:`trimSegment`,type:`vec4`,inputs:[{name:`start`,type:`vec4`},{name:`end`,type:`vec4`}]});this.vertexNode=U(()=>{let e=lb(`instanceStart`),t=lb(`instanceEnd`),n=X(Hb.mul(X(e,1))).toVar(`start`),o=X(Hb.mul(X(t,1))).toVar(`end`);i&&(r_(`vec3`,`worldStart`).assign(n.xyz),r_(`vec3`,`worldEnd`).assign(o.xyz));let s=kC.z.div(kC.w);W(Sb.element(2).element(3).equal(-1),()=>{W(n.z.lessThan(0).and(o.z.greaterThan(0)),()=>{o.assign(a({start:n,end:o}))}).ElseIf(o.z.lessThan(0).and(n.z.greaterThanEqual(0)),()=>{n.assign(a({start:o,end:n}))})});let c=Sb.mul(n),l=Sb.mul(o),u=c.xyz.div(c.w),d=l.xyz.div(l.w),f=d.xy.sub(u.xy).toVar();f.x.assign(f.x.mul(s)),f.assign(f.normalize());let p=X().toVar();if(i){let e=o.xyz.sub(n.xyz).normalize(),t=oy(n.xyz,o.xyz,.5).normalize(),i=e.cross(t).normalize(),a=e.cross(i),s=r_(`vec4`,`worldPos`);s.assign(Gb.y.lessThan(.5).select(n,o));let c=MS.mul(.5);s.addAssign(X(Gb.x.lessThan(0).select(i.mul(c),i.mul(c).negate()),0)),r||(s.addAssign(X(Gb.y.lessThan(.5).select(e.mul(c).negate(),e.mul(c)),0)),s.addAssign(X(a.mul(c),0)),W(Gb.y.greaterThan(1).or(Gb.y.lessThan(0)),()=>{s.subAssign(X(a.mul(2).mul(c),0))})),p.assign(Sb.mul(s));let l=Y().toVar();l.assign(Gb.y.lessThan(.5).select(u,d)),p.z.assign(l.z.mul(p.w))}else{let e=J(f.y,f.x.negate()).toVar(`offset`);f.x.assign(f.x.div(s)),e.x.assign(e.x.div(s)),e.assign(Gb.x.lessThan(0).select(e.negate(),e)),W(Gb.y.lessThan(0),()=>{e.assign(e.sub(f))}).ElseIf(Gb.y.greaterThan(1),()=>{e.assign(e.add(f))}),e.assign(e.mul(MS)),e.assign(e.div(kC.w)),p.assign(Gb.y.lessThan(.5).select(c,l)),e.assign(e.mul(p.w)),p.assign(p.add(X(e,0,0)))}return p})();let o=U(({p1:e,p2:t,p3:n,p4:r})=>{let i=e.sub(n),a=r.sub(n),o=t.sub(e),s=i.dot(a),c=a.dot(o),l=i.dot(o),u=a.dot(a),d=o.dot(o).mul(u).sub(c.mul(c)),f=s.mul(c).sub(l.mul(u)).div(d).clamp();return J(f,s.add(c.mul(f)).div(u).clamp())});this.fragmentNode=U(()=>{let a=ub();if(r){let e=this.offsetNode?G(this.offsetNodeNode):NS,t=this.dashScaleNode?G(this.dashScaleNode):kS,n=this.dashSizeNode?G(this.dashSizeNode):AS,r=this.dashSizeNode?G(this.dashGapNode):jS;C_.assign(n),w_.assign(r);let i=lb(`instanceDistanceStart`),o=lb(`instanceDistanceEnd`),s=Cy(Gb.y.lessThan(.5).select(t.mul(i),kS.mul(o)).add(NS)),c=e?s.add(e):s;a.y.lessThan(-1).or(a.y.greaterThan(1)).discard(),c.mod(C_.add(w_)).greaterThan(C_).discard()}let s=G(1).toVar(`alpha`);if(i){let n=r_(`vec3`,`worldStart`),i=r_(`vec3`,`worldEnd`),a=r_(`vec4`,`worldPos`).xyz.normalize().mul(1e5),c=i.sub(n),l=o({p1:n,p2:i,p3:Y(0,0,0),p4:a}),u=n.add(c.mul(l.x)),d=a.mul(l.y),f=u.sub(d).length().div(MS);if(!r)if(t&&e.samples>1){let e=f.fwidth();s.assign(uy(e.negate().add(.5),e.add(.5),f).oneMinus())}else f.greaterThan(.5).discard()}else if(t&&e.samples>1){let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1)),n=e.mul(e).add(t.mul(t)),r=G(n.fwidth()).toVar(`dlen`);W(a.y.abs().greaterThan(1),()=>{s.assign(uy(r.oneMinus(),r.add(1),n).oneMinus())})}else W(a.y.abs().greaterThan(1),()=>{let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1));e.mul(e).add(t.mul(t)).greaterThan(1).discard()});let c;if(this.lineColorNode)c=this.lineColorNode;else if(n){let e=lb(`instanceColorStart`),t=lb(`instanceColorEnd`);c=Gb.y.lessThan(.5).select(e,t).mul(nS)}else c=nS;return X(c,s)})()}get worldUnits(){return this.useWorldUnits}set worldUnits(e){this.useWorldUnits!==e&&(this.useWorldUnits=e,this.needsUpdate=!0)}get dashed(){return this.useDash}set dashed(e){this.useDash!==e&&(this.useDash=e,this.needsUpdate=!0)}get alphaToCoverage(){return this.useAlphaToCoverage}set alphaToCoverage(e){this.useAlphaToCoverage!==e&&(this.useAlphaToCoverage=e,this.needsUpdate=!0)}},uw=e=>B(e).mul(.5).add(.5),dw=e=>B(e).mul(2).sub(1),fw=new Sf,pw=class extends tw{static get type(){return`MeshNormalNodeMaterial`}constructor(e){super(),this.lights=!1,this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(fw),this.setValues(e)}setupDiffuseColor(){let e=this.opacityNode?G(this.opacityNode):aS;i_.assign(X(uw(ox),e))}},mw=class extends zh{static get type(){return`EquirectUVNode`}constructor(e=Yb){super(`vec2`),this.dirNode=e}setup(){let e=this.dirNode;return J(e.z.atan2(e.x).mul(1/(Math.PI*2)).add(.5),e.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5))}},hw=V(mw),gw=class extends va{constructor(e=1,t={}){super(e,t),this.isCubeRenderTarget=!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 Zi(5,5,5),a=hw(Yb),o=new tw;o.colorNode=gb(t,a,0),o.side=1,o.blending=0;let s=new Ji(i,o),c=new Gc;c.add(s),t.minFilter===1008&&(t.minFilter=h);let l=new ga(1,10,this),u=e.getMRT();return e.setMRT(null),l.update(e,c),e.setMRT(u),t.minFilter=n,t.currentGenerateMipmaps=r,s.geometry.dispose(),s.material.dispose(),this}},_w=new WeakMap,vw=class extends zh{static get type(){return`CubeMapNode`}constructor(e){super(`vec3`),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=_x();let t=new _a;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=L.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(_w.has(e)){let t=_w.get(e);xw(t,e.mapping),this._cubeTexture=t}else{let n=e.image;if(yw(n)){let r=new gw(n.height);r.fromEquirectangularTexture(t,e),xw(r.texture,e.mapping),this._cubeTexture=r.texture,_w.set(e,r.texture),e.addEventListener(`dispose`,bw)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}};function yw(e){return e==null?!1:e.height>0}function bw(e){let t=e.target;t.removeEventListener(`dispose`,bw);let n=_w.get(t);n!==void 0&&(_w.delete(t),n.dispose())}function xw(e,t){t===303?e.mapping=301:t===304&&(e.mapping=302)}var Sw=V(vw),Cw=class extends vC{static get type(){return`BasicEnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=Sw(this.envNode)}},ww=class extends vC{static get type(){return`BasicLightMapNode`}constructor(e=null){super(),this.lightMapNode=e}setup(e){let t=G(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}},Tw=class{start(){}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}},Ew=class extends Tw{constructor(){super()}indirect(e,t,n){let r=e.ambientOcclusion,i=e.reflectedLight,a=n.context.irradianceLightMap;i.indirectDiffuse.assign(X(0)),a?i.indirectDiffuse.addAssign(a):i.indirectDiffuse.addAssign(X(1,1,1,0)),i.indirectDiffuse.mulAssign(r),i.indirectDiffuse.mulAssign(i_.rgb)}finish(e,t,n){let r=n.material,i=e.outgoingLight,a=n.context.environment;if(a)switch(r.combine){case 0:i.rgb.assign(oy(i.rgb,i.rgb.mul(a.rgb),lS.mul(uS)));break;case 1:i.rgb.assign(oy(i.rgb,a.rgb,lS.mul(uS)));break;case 2:i.rgb.addAssign(a.rgb.mul(lS.mul(uS)));break;default:console.warn(`THREE.BasicLightingModel: Unsupported .combine value:`,r.combine);break}}},Dw=new fi,Ow=class extends tw{static get type(){return`MeshBasicNodeMaterial`}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Dw),this.setValues(e)}setupNormal(){return ix}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new ww(IS)),t}setupOutgoingLight(){return i_.rgb}setupLightingModel(){return new Ew}},kw=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))}),Aw=U(e=>e.diffuseColor.mul(1/Math.PI)),jw=()=>G(.25),Mw=U(({dotNH:e})=>x_.mul(G(.5)).add(1).mul(G(1/Math.PI)).mul(e.pow(x_))),Nw=U(({lightDirection:e})=>{let t=e.add(Zb).normalize(),n=ox.dot(t).clamp(),r=kw({f0:y_,f90:1,dotVH:Zb.dot(t).clamp()}),i=jw(),a=Mw({dotNH:n});return r.mul(i).mul(a)}),Pw=class extends Ew{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=ox.dot(e).clamp().mul(t);n.directDiffuse.addAssign(r.mul(Aw({diffuseColor:i_.rgb}))),this.specular===!0&&n.directSpecular.addAssign(r.mul(Nw({lightDirection:e})).mul(lS))}indirect({ambientOcclusion:e,irradiance:t,reflectedLight:n}){n.indirectDiffuse.addAssign(t.mul(Aw({diffuseColor:i_}))),n.indirectDiffuse.mulAssign(e)}},Fw=new Cf,Iw=class extends tw{static get type(){return`MeshLambertNodeMaterial`}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Fw),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightingModel(){return new Pw(!1)}},Lw=new bf,Rw=class extends tw{static get type(){return`MeshPhongNodeMaterial`}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(Lw),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightingModel(){return new Pw}setupVariants(){let e=(this.shininessNode?G(this.shininessNode):rS).max(1e-4);x_.assign(e);let t=this.specularNode||oS;y_.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}},zw=U(()=>{let e=ix.dFdx().abs().max(ix.dFdy().abs());return e.x.max(e.y).max(e.z)}),Bw=U(e=>{let{roughness:t}=e,n=zw(),r=t.max(.0525);return r=r.add(n),r=r.min(1),r}),Vw=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 B_(.5,i.add(a).max(av))}).setLayout({name:`V_GGX_SmithCorrelated`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNL`,type:`float`},{name:`dotNV`,type:`float`}]}),Hw=U(({alphaT:e,alphaB:t,dotTV:n,dotBV:r,dotTL:i,dotBL:a,dotNV:o,dotNL:s})=>{let c=s.mul(Y(e.mul(n),t.mul(r),o).length()),l=o.mul(Y(e.mul(i),t.mul(a),s).length());return B_(.5,c.add(l)).saturate()}).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`}]}),Uw=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`}]}),Ww=G(1/Math.PI),Gw=U(({alphaT:e,alphaB:t,dotNH:n,dotTH:r,dotBH:i})=>{let a=e.mul(t),o=Y(t.mul(r),e.mul(i),a.mul(n)),s=o.dot(o),c=a.div(s);return Ww.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`}]}),Kw=U(e=>{let{lightDirection:t,f0:n,f90:r,roughness:i,f:a,USE_IRIDESCENCE:o,USE_ANISOTROPY:s}=e,c=e.normalView||ox,l=i.pow2(),u=t.add(Zb).normalize(),d=c.dot(t).clamp(),f=c.dot(Zb).clamp(),p=c.dot(u).clamp(),m=kw({f0:n,f90:r,dotVH:Zb.dot(u).clamp()}),h,g;if(bg(o)&&(m=f_.mix(m,a)),bg(s)){let e=__.dot(t),n=__.dot(Zb),r=__.dot(u),i=v_.dot(t),a=v_.dot(Zb),o=v_.dot(u);h=Hw({alphaT:h_,alphaB:l,dotTV:n,dotBV:a,dotTL:e,dotBL:i,dotNV:f,dotNL:d}),g=Gw({alphaT:h_,alphaB:l,dotNH:p,dotTH:r,dotBH:o})}else h=Vw({alpha:l,dotNL:d,dotNV:f}),g=Uw({alpha:l,dotNH:p});return m.mul(h).mul(g)}),qw=U(({roughness:e,dotNV:t})=>{let n=X(-1,-.0275,-.572,.022),r=X(1,.0425,1.04,-.04),i=e.mul(n).add(r),a=i.x.mul(i.x).min(t.mul(-9.28).exp2()).mul(i.x).add(i.y);return J(-1.04,1.04).mul(a).add(i.zw)}).setLayout({name:`DFGApprox`,type:`vec2`,inputs:[{name:`roughness`,type:`float`},{name:`dotNV`,type:`vec3`}]}),Jw=U(e=>{let{dotNV:t,specularColor:n,specularF90:r,roughness:i}=e,a=qw({dotNV:t,roughness:i});return n.mul(a.x).add(r.mul(a.y))}),Yw=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(Y(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`}]}),Xw=U(({roughness:e,dotNH:t})=>{let n=e.pow2(),r=G(1).div(n),i=t.pow2().oneMinus().max(.0078125);return G(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`}]}),Zw=U(({dotNV:e,dotNL:t})=>G(1).div(G(4).mul(t.add(e).sub(t.mul(e))))).setLayout({name:`V_Neubelt`,type:`float`,inputs:[{name:`dotNV`,type:`float`},{name:`dotNL`,type:`float`}]}),Qw=U(({lightDirection:e})=>{let t=e.add(Zb).normalize(),n=ox.dot(e).clamp(),r=ox.dot(Zb).clamp(),i=Xw({roughness:d_,dotNH:ox.dot(t).clamp()}),a=Zw({dotNV:r,dotNL:n});return u_.mul(i).mul(a)}),$w=U(({N:e,V:t,roughness:n})=>{let r=J(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`}]}),eT=U(({f:e})=>{let t=e.length();return Gv(t.mul(t).add(e.z).div(t.add(1)),0)}).setLayout({name:`LTC_ClippedSphereFormFactor`,type:`float`,inputs:[{name:`f`,type:`vec3`}]}),tT=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,Gv(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`}]}),nT=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=Y().toVar();return W(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(Vg(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=Y(0).toVar();g.addAssign(tT({v1:f,v2:p})),g.addAssign(tT({v1:p,v2:m})),g.addAssign(tT({v1:m,v2:h})),g.addAssign(tT({v1:h,v2:f})),d.assign(Y(eT({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`}]}),rT=1/6,iT=e=>z_(rT,z_(e,z_(e,e.negate().add(3)).sub(3)).add(1)),aT=e=>z_(rT,z_(e,z_(e,z_(3,e).sub(6))).add(4)),oT=e=>z_(rT,z_(e,z_(e,z_(-3,e).add(3)).add(3)).add(1)),sT=e=>z_(rT,$v(e,3)),cT=e=>iT(e).add(aT(e)),lT=e=>oT(e).add(sT(e)),uT=e=>L_(-1,aT(e).div(iT(e).add(aT(e)))),dT=e=>L_(1,sT(e).div(oT(e).add(sT(e)))),fT=(e,t,n)=>{let r=e.uvNode,i=z_(r,t.zw).add(.5),a=bv(i),o=Cv(i),s=cT(o.x),c=lT(o.x),l=uT(o.x),u=dT(o.x),d=uT(o.y),f=dT(o.y),p=J(a.x.add(l),a.y.add(d)).sub(.5).mul(t.xy),m=J(a.x.add(u),a.y.add(d)).sub(.5).mul(t.xy),h=J(a.x.add(l),a.y.add(f)).sub(.5).mul(t.xy),g=J(a.x.add(u),a.y.add(f)).sub(.5).mul(t.xy),_=cT(o.y).mul(L_(s.mul(e.uv(p).level(n)),c.mul(e.uv(m).level(n)))),v=lT(o.y).mul(L_(s.mul(e.uv(h).level(n)),c.mul(e.uv(g).level(n))));return _.add(v)},pT=U(([e,t=G(3)])=>{let n=J(e.size(K(t))),r=J(e.size(K(t.add(1)))),i=B_(1,n),a=B_(1,r),o=fT(e,X(i,n),bv(t)),s=fT(e,X(a,r),xv(t));return Cv(t).mix(o,s)}),mT=U(([e,t,n,r,i])=>{let a=Y(ly(t.negate(),Sv(e),B_(1,r))),o=Y(Mv(i[0].xyz),Mv(i[1].xyz),Mv(i[2].xyz));return Sv(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`}]}),hT=U(([e,t])=>e.mul(sy(t.mul(2).sub(2),0,1))).setLayout({name:`applyIorToRoughness`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`ior`,type:`float`}]}),gT=zC(),_T=U(([e,t,n])=>pT(gT.uv(e),_v(G(DC.x)).mul(hT(t,n)))),vT=U(([e,t,n])=>(W(n.notEqual(0),()=>mv(gv(t).negate().div(n).negate().mul(e))),Y(1))).setLayout({name:`volumeAttenuation`,type:`vec3`,inputs:[{name:`transmissionDistance`,type:`float`},{name:`attenuationColor`,type:`vec3`},{name:`attenuationDistance`,type:`float`}]}),yT=U(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m])=>{let h,g;if(m){h=X().toVar(),g=Y().toVar();let i=u.sub(1).mul(m.mul(.025)),a=Y(u.sub(i),u,u.add(i));rC({start:0,end:3},({i})=>{let u=a.element(i),m=mT(e,t,d,u,s),_=o.add(m),v=l.mul(c.mul(X(_,1))),y=J(v.xy.div(v.w)).toVar();y.addAssign(1),y.divAssign(2),y.assign(J(y.x,y.y.oneMinus()));let b=_T(y,n,u);h.element(i).assign(b.element(i)),h.a.addAssign(b.a),g.element(i).assign(r.element(i).mul(vT(Mv(m),f,p).element(i)))}),h.a.divAssign(3)}else{let i=mT(e,t,d,u,s),a=o.add(i),m=l.mul(c.mul(X(a,1))),_=J(m.xy.div(m.w)).toVar();_.addAssign(1),_.divAssign(2),_.assign(J(_.x,_.y.oneMinus())),h=_T(_,n,u),g=r.mul(vT(Mv(i),f,p))}let _=g.rgb.mul(h.rgb),v=Y(Jw({dotNV:e.dot(t).clamp(),specularColor:i,specularF90:a,roughness:n})),y=g.r.add(g.g,g.b).div(3);return X(v.oneMinus().mul(_),h.a.oneMinus().mul(y).oneMinus())}),bT=Vg(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),xT=e=>{let t=e.sqrt();return Y(1).add(t).div(Y(1).sub(t))},ST=(e,t)=>e.sub(t).div(e.add(t)).pow2(),CT=(e,t)=>{let n=e.mul(2*Math.PI*1e-9),r=Y(54856e-17,44201e-17,52481e-17),i=Y(1681e3,1795300,2208400),a=Y(43278e5,93046e5,66121e5),o=G(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=Y(s.x.add(o),s.y,s.z).div(1.0685e-7),bT.mul(s)},wT=U(({outsideIOR:e,eta2:t,cosTheta1:n,thinFilmThickness:r,baseF0:i})=>{let a=oy(e,t,uy(0,.03,r)),o=e.div(a).pow2().mul(G(1).sub(n.pow2())),s=G(1).sub(o).sqrt(),c=kw({f0:ST(a,e),f90:1,dotVH:n}),l=c.oneMinus(),u=a.lessThan(e).select(Math.PI,0),d=G(Math.PI).sub(u),f=xT(i.clamp(0,.9999)),p=kw({f0:ST(f,a.toVec3()),f90:1,dotVH:s}),m=Y(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=Y(d).add(m),_=c.mul(p).clamp(1e-5,.9999),v=_.sqrt(),y=l.pow2().mul(p).div(Y(1).sub(_)),b=c.add(y),x=y.sub(l);for(let e=1;e<=2;++e){x=x.mul(v);let t=CT(G(e).mul(h),G(e).mul(g)).mul(2);b=b.add(x.mul(t))}return b.max(Y(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`}]}),TT=U(({normal:e,viewDir:t,roughness:n})=>{let r=e.dot(t).saturate(),i=n.pow2(),a=hy(n.lessThan(.25),G(-339.2).mul(i).add(G(161.4).mul(n)).sub(25.9),G(-8.48).mul(i).add(G(14.3).mul(n)).sub(9.95)),o=hy(n.lessThan(.25),G(44).mul(i).sub(G(23.7).mul(n)).add(3.26),G(1.97).mul(i).sub(G(3.27).mul(n)).add(.72));return hy(n.lessThan(.25),0,G(.1).mul(n).sub(.025)).add(a.mul(r).add(o).exp()).mul(1/Math.PI).saturate()}),ET=Y(.04),DT=G(1),OT=class extends Tw{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}start(e){if(this.clearcoat===!0&&(this.clearcoatRadiance=Y().toVar(`clearcoatRadiance`),this.clearcoatSpecularDirect=Y().toVar(`clearcoatSpecularDirect`),this.clearcoatSpecularIndirect=Y().toVar(`clearcoatSpecularIndirect`)),this.sheen===!0&&(this.sheenSpecularDirect=Y().toVar(`sheenSpecularDirect`),this.sheenSpecularIndirect=Y().toVar(`sheenSpecularIndirect`)),this.iridescence===!0){let e=ox.dot(Zb).clamp();this.iridescenceFresnel=wT({outsideIOR:G(1),eta2:p_,cosTheta1:e,thinFilmThickness:m_,baseF0:y_}),this.iridescenceF0=Yw({f:this.iridescenceFresnel,f90:1,dotVH:e})}if(this.transmission===!0){let t=Jb;e.backdrop=yT(sx,Db.sub(Jb).normalize(),o_,i_,y_,b_,t,Ib,wb,Sb,E_,O_,A_,k_,this.dispersion?j_:null),e.backdropAlpha=D_,i_.a.mulAssign(oy(1,e.backdrop.a,D_))}}computeMultiscattering(e,t,n){let r=qw({roughness:o_,dotNV:ox.dot(Zb).clamp()}),i=(this.iridescenceF0?f_.mix(y_,this.iridescenceF0):y_).mul(r.x).add(n.mul(r.y)),a=r.x.add(r.y).oneMinus(),o=y_.add(y_.oneMinus().mul(.047619)),s=i.mul(o).div(a.mul(o).oneMinus());e.addAssign(i),t.addAssign(s.mul(a))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=ox.dot(e).clamp().mul(t);if(this.sheen===!0&&this.sheenSpecularDirect.addAssign(r.mul(Qw({lightDirection:e}))),this.clearcoat===!0){let n=cx.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(n.mul(Kw({lightDirection:e,f0:ET,f90:DT,roughness:l_,normalView:cx})))}n.directDiffuse.addAssign(r.mul(Aw({diffuseColor:i_.rgb}))),n.directSpecular.addAssign(r.mul(Kw({lightDirection:e,f0:y_,f90:1,roughness:o_,iridescence:this.iridescence,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=ox,f=Zb,p=Xb.toVar(),m=$w({N:d,V:f,roughness:o_}),h=a.uv(m).toVar(),g=o.uv(m).toVar(),_=Vg(Y(h.x,0,h.y),Y(0,1,0),Y(h.z,0,h.w)).toVar(),v=y_.mul(g.x).add(y_.oneMinus().mul(g.y)).toVar();i.directSpecular.addAssign(e.mul(v).mul(nT({N:d,V:f,P:p,mInv:_,p0:s,p1:c,p2:l,p3:u}))),i.directDiffuse.addAssign(e.mul(i_).mul(nT({N:d,V:f,P:p,mInv:Vg(1,0,0,0,1,0,0,0,1),p0:s,p1:c,p2:l,p3:u})))}indirect(e,t,n){this.indirectDiffuse(e,t,n),this.indirectSpecular(e,t,n),this.ambientOcclusion(e,t,n)}indirectDiffuse({irradiance:e,reflectedLight:t}){t.indirectDiffuse.addAssign(e.mul(Aw({diffuseColor:i_})))}indirectSpecular({radiance:e,iblIrradiance:t,reflectedLight:n}){if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(t.mul(u_,TT({normal:ox,viewDir:Zb,roughness:d_}))),this.clearcoat===!0){let e=Jw({dotNV:cx.dot(Zb).clamp(),specularColor:ET,specularF90:DT,roughness:l_});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(e))}let r=Y().toVar(`singleScattering`),i=Y().toVar(`multiScattering`),a=t.mul(1/Math.PI);this.computeMultiscattering(r,i,b_);let o=r.add(i),s=i_.mul(o.r.max(o.g).max(o.b).oneMinus());n.indirectSpecular.addAssign(e.mul(r)),n.indirectSpecular.addAssign(i.mul(a)),n.indirectDiffuse.addAssign(s.mul(a))}ambientOcclusion({ambientOcclusion:e,reflectedLight:t}){let n=ox.dot(Zb).clamp().add(e),r=o_.mul(-16).oneMinus().negate().exp2(),i=e.sub(n.pow(r).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(e),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(e),t.indirectDiffuse.mulAssign(e),t.indirectSpecular.mulAssign(i)}finish(e){let{outgoingLight:t}=e;if(this.clearcoat===!0){let e=kw({dotVH:cx.dot(Zb).clamp(),f0:ET,f90:DT}),n=t.mul(c_.mul(e).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(c_));t.assign(n)}if(this.sheen===!0){let e=u_.r.max(u_.g).max(u_.b).mul(.157).oneMinus(),n=t.mul(e).add(this.sheenSpecularDirect,this.sheenSpecularIndirect);t.assign(n)}}},kT=G(1),AT=G(-2),jT=G(.8),MT=G(-1),NT=G(.4),PT=G(2),FT=G(.305),IT=G(3),LT=G(.21),RT=G(4),zT=G(4),BT=G(16),VT=U(([e])=>{let t=Y(Av(e)).toVar(),n=G(-1).toVar();return W(t.x.greaterThan(t.z),()=>{W(t.x.greaterThan(t.y),()=>{n.assign(hy(e.x.greaterThan(0),0,3))}).Else(()=>{n.assign(hy(e.y.greaterThan(0),1,4))})}).Else(()=>{W(t.z.greaterThan(t.y),()=>{n.assign(hy(e.z.greaterThan(0),2,5))}).Else(()=>{n.assign(hy(e.y.greaterThan(0),1,4))})}),n}).setLayout({name:`getFace`,type:`float`,inputs:[{name:`direction`,type:`vec3`}]}),HT=U(([e,t])=>{let n=J().toVar();return W(t.equal(0),()=>{n.assign(J(e.z,e.y).div(Av(e.x)))}).ElseIf(t.equal(1),()=>{n.assign(J(e.x.negate(),e.z.negate()).div(Av(e.y)))}).ElseIf(t.equal(2),()=>{n.assign(J(e.x.negate(),e.y).div(Av(e.z)))}).ElseIf(t.equal(3),()=>{n.assign(J(e.z.negate(),e.y).div(Av(e.x)))}).ElseIf(t.equal(4),()=>{n.assign(J(e.x.negate(),e.z).div(Av(e.y)))}).Else(()=>{n.assign(J(e.x,e.y).div(Av(e.z)))}),z_(.5,n.add(1))}).setLayout({name:`getUV`,type:`vec2`,inputs:[{name:`direction`,type:`vec3`},{name:`face`,type:`float`}]}),UT=U(([e])=>{let t=G(0).toVar();return W(e.greaterThanEqual(jT),()=>{t.assign(kT.sub(e).mul(MT.sub(AT)).div(kT.sub(jT)).add(AT))}).ElseIf(e.greaterThanEqual(NT),()=>{t.assign(jT.sub(e).mul(PT.sub(MT)).div(jT.sub(NT)).add(MT))}).ElseIf(e.greaterThanEqual(FT),()=>{t.assign(NT.sub(e).mul(IT.sub(PT)).div(NT.sub(FT)).add(PT))}).ElseIf(e.greaterThanEqual(LT),()=>{t.assign(FT.sub(e).mul(RT.sub(IT)).div(FT.sub(LT)).add(IT))}).Else(()=>{t.assign(G(-2).mul(_v(z_(1.16,e))))}),t}).setLayout({name:`roughnessToMip`,type:`float`,inputs:[{name:`roughness`,type:`float`}]}),WT=U(([e,t])=>{let n=e.toVar();n.assign(z_(2,n).sub(1));let r=Y(n,1).toVar();return W(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`}]}),GT=U(([e,t,n,r,i,a])=>{let o=G(n),s=Y(t),c=sy(UT(o),AT,a),l=Cv(c),u=bv(c),d=Y(KT(e,s,u,r,i,a)).toVar();return W(l.notEqual(0),()=>{let t=Y(KT(e,s,u.add(1),r,i,a)).toVar();d.assign(oy(d,t,l))}),d}),KT=U(([e,t,n,r,i,a])=>{let o=G(n).toVar(),s=Y(t),c=G(VT(s)).toVar(),l=G(Gv(zT.sub(o),0)).toVar();o.assign(Gv(o,zT));let u=G(hv(o)).toVar(),d=J(HT(s,c).mul(u.sub(2)).add(1)).toVar();return W(c.greaterThan(2),()=>{d.y.addAssign(u),c.subAssign(3)}),d.x.addAssign(c.mul(u)),d.x.addAssign(l.mul(z_(3,BT))),d.y.addAssign(z_(4,hv(a).sub(u))),d.x.mulAssign(r),d.y.mulAssign(i),e.uv(d).grad(J(),J())}),qT=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=Tv(r);return KT(e,n.mul(c).add(i.cross(n).mul(wv(r))).add(i.mul(i.dot(n).mul(c.oneMinus()))),t,a,o,s)}),JT=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=Y(hy(t,n,Qv(n,r))).toVar();W(lv(f.equals(Y(0))),()=>{f.assign(Y(r.z,0,r.x.negate()))}),f.assign(Sv(f));let p=Y().toVar();return p.addAssign(i.element(K(0)).mul(qT({theta:0,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),rC({start:K(1),end:e},({i:e})=>{W(e.greaterThanEqual(a),()=>{aC()});let t=G(o.mul(G(e))).toVar();p.addAssign(i.element(e).mul(qT({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(qT({theta:t,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})))}),X(p,1)}),YT=null,XT=new WeakMap;function ZT(e){let t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(2**t,112)),texelHeight:n,maxMip:t}}function QT(e){let t=XT.get(e);if((t===void 0?-1:t.pmremVersion)!==e.pmremVersion){let n=e.image;if(e.isCubeTexture)if(eE(n))t=YT.fromCubemap(e,t);else return null;else if(tE(n))t=YT.fromEquirectangular(e,t);else return null;t.pmremVersion=e.pmremVersion,XT.set(e,t)}return t.texture}var $T=class extends zh{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 Pn;r.isRenderTargetTexture=!0,this._texture=gb(r),this._width=Z(0),this._height=Z(0),this._maxMip=Z(0),this.updateBeforeType=L.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){let t=ZT(e.image.height);this._texture.value=e,this._width.value=t.texelWidth,this._height.value=t.texelHeight,this._maxMip.value=t.maxMip}updateBefore(){let e=this._pmrem,t=e?e.pmremVersion:-1,n=this._value;t!==n.pmremVersion&&(e=n.isPMREMTexture===!0?n:QT(n),e!==null&&(this._pmrem=e,this.updateFromTexture(e)))}setup(e){YT===null&&(YT=e.createPMREMGenerator()),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this));let n=this.value;e.renderer.coordinateSystem===2e3&&n.isPMREMTexture!==!0&&n.isRenderTargetTexture===!0&&(t=Y(t.x.negate(),t.yz));let r=this.levelNode;return r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),GT(this._texture,t,r,this._width,this._height,this._maxMip)}};function eE(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 tE(e){return e==null?!1:e.height>0}var nE=V($T),rE=new WeakMap,iE=class extends vC{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 e=n.isTextureNode?n.value:t[n.property],r=rE.get(e);r===void 0&&(r=nE(e),rE.set(e,r)),n=r}let r=t.envMap?Ex(`envMapIntensity`,`float`,e.material):Ex(`environmentIntensity`,`float`,e.scene),i=t.useAnisotropy===!0||t.anisotropy>0?Kx:ox,a=n.context(aE(o_,i)).mul(r),o=n.context(oE(sx)).mul(Math.PI).mul(r),s=Yy(a),c=Yy(o);e.context.radiance.addAssign(s),e.context.iblIrradiance.addAssign(c);let l=e.context.lightingModel.clearcoatRadiance;if(l){let e=Yy(n.context(aE(l_,cx)).mul(r));l.addAssign(e)}}},aE=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=Zb.negate().reflect(t),n=e.mul(e).mix(n,t).normalize(),n=n.transformDirection(wb)),n),getTextureLevel:()=>e}},oE=e=>({getUV:()=>e,getTextureLevel:()=>G(1)}),sE=new vf,cE=class extends tw{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(sE),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new iE(t):null}setupLightingModel(){return new OT}setupSpecular(){let e=oy(Y(.04),i_.rgb,s_);y_.assign(e),b_.assign(1)}setupVariants(){let e=this.metalnessNode?G(this.metalnessNode):fS;s_.assign(e);let t=this.roughnessNode?G(this.roughnessNode):dS;t=Bw({roughness:t}),o_.assign(t),this.setupSpecular(),i_.assign(X(i_.rgb.mul(e.oneMinus()),i_.a))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}},lE=new yf,uE=class extends cE{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(lE),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?G(this.iorNode):ES;E_.assign(e),y_.assign(oy(Wv(ey(E_.sub(1).div(E_.add(1))).mul(cS),Y(1)).mul(sS),i_.rgb,s_)),b_.assign(oy(sS,1,s_))}setupLightingModel(){return new OT(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){let e=this.clearcoatNode?G(this.clearcoatNode):mS,t=this.clearcoatRoughnessNode?G(this.clearcoatRoughnessNode):hS;c_.assign(e),l_.assign(Bw({roughness:t}))}if(this.useSheen){let e=this.sheenNode?Y(this.sheenNode):vS,t=this.sheenRoughnessNode?G(this.sheenRoughnessNode):yS;u_.assign(e),d_.assign(t)}if(this.useIridescence){let e=this.iridescenceNode?G(this.iridescenceNode):xS,t=this.iridescenceIORNode?G(this.iridescenceIORNode):SS,n=this.iridescenceThicknessNode?G(this.iridescenceThicknessNode):CS;f_.assign(e),p_.assign(t),m_.assign(n)}if(this.useAnisotropy){let e=(this.anisotropyNode?J(this.anisotropyNode):bS).toVar();g_.assign(e.length()),W(g_.equal(0),()=>{e.assign(J(1,0))}).Else(()=>{e.divAssign(J(g_)),g_.assign(g_.saturate())}),h_.assign(g_.pow2().mix(o_.pow2(),1)),__.assign(Ux[0].mul(e.x).add(Ux[1].mul(e.y))),v_.assign(Ux[1].mul(e.x).sub(Ux[0].mul(e.y)))}if(this.useTransmission){let e=this.transmissionNode?G(this.transmissionNode):wS,t=this.thicknessNode?G(this.thicknessNode):TS,n=this.attenuationDistanceNode?G(this.attenuationDistanceNode):DS,r=this.attenuationColorNode?Y(this.attenuationColorNode):OS;if(D_.assign(e),O_.assign(t),k_.assign(n),A_.assign(r),this.useDispersion){let e=this.dispersionNode?G(this.dispersionNode):FS;j_.assign(e)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?Y(this.clearcoatNormalNode):gS}setup(e){e.context.setupClearcoatNormal=()=>this.setupClearcoatNormal(e),super.setup(e)}copy(e){return this.clearcoatNode=e.clearcoatNode,this.clearcoatRoughnessNode=e.clearcoatRoughnessNode,this.clearcoatNormalNode=e.clearcoatNormalNode,this.sheenNode=e.sheenNode,this.sheenRoughnessNode=e.sheenRoughnessNode,this.iridescenceNode=e.iridescenceNode,this.iridescenceIORNode=e.iridescenceIORNode,this.iridescenceThicknessNode=e.iridescenceThicknessNode,this.specularIntensityNode=e.specularIntensityNode,this.specularColorNode=e.specularColorNode,this.transmissionNode=e.transmissionNode,this.thicknessNode=e.thicknessNode,this.attenuationDistanceNode=e.attenuationDistanceNode,this.attenuationColorNode=e.attenuationColorNode,this.dispersionNode=e.dispersionNode,this.anisotropyNode=e.anisotropyNode,super.copy(e)}},dE=class extends OT{constructor(e,t,n,r){super(e,t,n),this.useSSS=r}direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i){if(this.useSSS===!0){let{thicknessColorNode:r,thicknessDistortionNode:a,thicknessAmbientNode:o,thicknessAttenuationNode:s,thicknessPowerNode:c,thicknessScaleNode:l}=i.material,u=e.add(ox.mul(a)).normalize(),d=Y(G(Zb.dot(u.negate()).saturate().pow(c).mul(l)).add(o).mul(r));n.directDiffuse.addAssign(d.mul(s.mul(t)))}super.direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i)}},fE=class extends uE{static get type(){return`MeshSSSNodeMaterial`}constructor(e){super(e),this.thicknessColorNode=null,this.thicknessDistortionNode=G(.1),this.thicknessAmbientNode=G(0),this.thicknessAttenuationNode=G(.1),this.thicknessPowerNode=G(2),this.thicknessScaleNode=G(10)}get useSSS(){return this.thicknessColorNode!==null}setupLightingModel(){return new dE(this.useClearcoat,this.useSheen,this.useIridescence,this.useSSS)}copy(e){return this.thicknessColorNode=e.thicknessColorNode,this.thicknessDistortionNode=e.thicknessDistortionNode,this.thicknessAmbientNode=e.thicknessAmbientNode,this.thicknessAttenuationNode=e.thicknessAttenuationNode,this.thicknessPowerNode=e.thicknessPowerNode,this.thicknessScaleNode=e.thicknessScaleNode,super.copy(e)}},pE=U(({normal:e,lightDirection:t,builder:n})=>{let r=J(e.dot(t).mul(.5).add(.5),0);if(n.material.gradientMap)return Y(kx(`gradientMap`,`texture`).context({getUV:()=>r}).r);{let e=r.fwidth().mul(.5);return oy(Y(.7),Y(1),uy(G(.7).sub(e.x),G(.7).add(e.x),r.x))}}),mE=class extends Tw{direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i){let a=pE({normal:tx,lightDirection:e,builder:i}).mul(t);n.directDiffuse.addAssign(a.mul(Aw({diffuseColor:i_.rgb})))}indirect({ambientOcclusion:e,irradiance:t,reflectedLight:n}){n.indirectDiffuse.addAssign(t.mul(Aw({diffuseColor:i_}))),n.indirectDiffuse.mulAssign(e)}},hE=new xf,gE=class extends tw{static get type(){return`MeshToonNodeMaterial`}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(hE),this.setValues(e)}setupLightingModel(){return new mE}},_E=class extends zh{static get type(){return`MatcapUVNode`}constructor(){super(`vec2`)}setup(){let e=Y(Zb.z,0,Zb.x.negate()).normalize(),t=Zb.cross(e);return J(e.dot(ox),t.dot(ox)).mul(.495).add(.5)}},vE=H(_E),yE=new wf,bE=class extends tw{static get type(){return`MeshMatcapNodeMaterial`}constructor(e){super(),this.lights=!1,this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(yE),this.setValues(e)}setupVariants(e){let t=vE,n;n=e.material.matcap?kx(`matcap`,`texture`).context({getUV:()=>t}):Y(oy(.2,.8,t.y)),i_.rgb.mulAssign(n.rgb)}},xE=new _u,SE=class extends tw{static get type(){return`PointsNodeMaterial`}constructor(e){super(),this.isPointsNodeMaterial=!0,this.lights=!1,this.transparent=!0,this.sizeNode=null,this.setDefaultValues(xE),this.setValues(e)}copy(e){return this.sizeNode=e.sizeNode,super.copy(e)}},CE=class extends zh{static get type(){return`RotateNode`}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}getNodeType(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 Bg(e,r,r.negate(),e).mul(n)}else{let e=t,r=Hg(X(1,0,0,0),X(0,Tv(e.x),wv(e.x).negate(),0),X(0,wv(e.x),Tv(e.x),0),X(0,0,0,1)),i=Hg(X(Tv(e.y),0,wv(e.y),0),X(0,1,0,0),X(wv(e.y).negate(),0,Tv(e.y),0),X(0,0,0,1)),a=Hg(X(Tv(e.z),wv(e.z).negate(),0,0),X(wv(e.z),Tv(e.z),0,0),X(0,0,1,0),X(0,0,0,1));return r.mul(i).mul(a).mul(X(n,1)).xyz}}},wE=V(CE),TE=new Yc,EE=class extends tw{static get type(){return`SpriteNodeMaterial`}constructor(e){super(),this.isSpriteNodeMaterial=!0,this.lights=!1,this._useSizeAttenuation=!0,this.positionNode=null,this.rotationNode=null,this.scaleNode=null,this.setDefaultValues(TE),this.setValues(e)}setupPosition({object:e,camera:t,context:n}){let r=this.sizeAttenuation,{positionNode:i,rotationNode:a,scaleNode:o}=this,s=Kb,c=Hb.mul(Y(i||0)),l=J(Ib[0].xyz.length(),Ib[1].xyz.length());o!==null&&(l=l.mul(o)),!r&&t.isPerspectiveCamera&&(l=l.mul(c.z.negate()));let u=s.xy;if(e.center&&e.center.isVector2===!0){let e=Fy(`center`,`vec2`);u=u.sub(e.sub(.5))}u=u.mul(l);let d=G(a||_S),f=wE(u,d);c=X(c.xy.add(f),c.zw);let p=Sb.mul(c);return n.vertex=s,p}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)}},DE=class extends Tw{constructor(){super(),this.shadowNode=G(1).toVar(`shadowMask`)}direct({shadowMask:e}){this.shadowNode.mulAssign(e)}finish(e){i_.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(i_.rgb)}},OE=new gf,kE=class extends tw{static get type(){return`ShadowNodeMaterial`}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.setDefaultValues(OE),this.setValues(e)}setupLightingModel(){return new DE}},AE=U(({texture:e,uv:t})=>{let n=1e-4,r=Y().toVar();return W(t.x.lessThan(n),()=>{r.assign(Y(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(Y(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(Y(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(Y(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(Y(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(Y(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(Y(-n,0,0))).r.sub(e.uv(t.add(Y(n,0,0))).r),a=e.uv(t.add(Y(0,-n,0))).r.sub(e.uv(t.add(Y(0,n,0))).r),o=e.uv(t.add(Y(0,0,-n))).r.sub(e.uv(t.add(Y(0,0,n))).r);r.assign(Y(i,a,o))}),r.normalize()}),jE=class extends hb{static get type(){return`Texture3DNode`}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return`texture3D`}getDefaultUV(){return Y(.5,.5,.5)}setUpdateMatrix(){}setupUV(e,t){return t}generateUV(e,t){return t.build(e,`vec3`)}normal(e){return AE({texture:this,uv:e})}},ME=V(jE),NE=class extends tw{static get type(){return`VolumeNodeMaterial`}constructor(e={}){super(),this.lights=!1,this.isVolumeNodeMaterial=!0,this.testNode=null,this.setValues(e)}setup(e){let t=ME(this.map,null,0),n=U(({orig:e,dir:t})=>{let n=Y(-.5),r=Y(.5),i=t.reciprocal(),a=n.sub(e).mul(i),o=r.sub(e).mul(i),s=Wv(a,o),c=Gv(a,o);return J(Gv(s.x,Gv(s.y,s.z)),Wv(c.x,Wv(c.y,c.z)))});this.fragmentNode=U(()=>{let e=Cy(Y(Vb.mul(X(Db,1)))),r=Cy(Gb.sub(e)).normalize(),i=J(n({orig:e,dir:r})).toVar();i.x.greaterThan(i.y).discard(),i.assign(J(Gv(i.x,0),i.y));let a=Y(e.add(i.x.mul(r))).toVar(),o=Y(r.abs().reciprocal()).toVar(),s=G(Wv(o.x,Wv(o.y,o.z))).toVar(`delta`);s.divAssign(kx(`steps`,`float`));let c=X(kx(`base`,`color`),0).toVar();return rC({type:`float`,start:i.x,end:i.y,update:`+= delta`},()=>{let e=n_(`float`,`d`).assign(t.uv(a.add(.5)).r);this.testNode===null?(c.a.assign(1),aC()):this.testNode({map:t,mapValue:e,probe:a,finalColor:c}).append(),a.addAssign(r.mul(s))}),c.a.equal(0).discard(),X(c)})(),super.setup(e)}},PE=class extends Qf{constructor(e){super(e),this.textures={},this.nodes={}}load(e,t,n,r){let i=new tp(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,n=>{try{t(this.parse(JSON.parse(n)))}catch(t){r?r(t):console.error(t),this.manager.itemError(e)}},n,r)}parseNodes(e){let t={};if(e!==void 0){for(let n of e){let{uuid:e,type:r}=n;t[e]=this.createNodeFromType(r),t[e].uuid=e}let n={nodes:t,textures:this.textures};for(let r of e)r.meta=n,t[r.uuid].deserialize(r),delete r.meta}return t}parse(e){let t=this.createNodeFromType(e.type);return t.uuid=e.uuid,e.meta={nodes:this.parseNodes(e.nodes),textures:this.textures},t.deserialize(e),delete e.meta,t}setTextures(e){return this.textures=e,this}setNodes(e){return this.nodes=e,this}createNodeFromType(e){return this.nodes[e]===void 0?(console.error(`THREE.NodeLoader: Node type not found:`,e),G()):B(new this.nodes[e])}},FE=class extends Dp{constructor(e){super(e),this.nodes={},this.nodeMaterials={}}parse(e){let t=super.parse(e),n=this.nodes,r=e.inputNodes;for(let e in r)t[e]=n[r[e]];return t}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}createMaterialFromType(e){let t=this.nodeMaterials[e];return t===void 0?super.createMaterialFromType(e):new t}},IE=class extends jp{constructor(e){super(e),this.nodes={},this.nodeMaterials={},this._nodesJSON=null}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}parse(e,t){this._nodesJSON=e.nodes;let n=super.parse(e,t);return this._nodesJSON=null,n}parseNodes(e,t){if(e!==void 0){let n=new PE;return n.setNodes(this.nodes),n.setTextures(t),n.parseNodes(e)}return{}}parseMaterials(e,t){let n={};if(e!==void 0){let r=this.parseNodes(this._nodesJSON,t),i=new FE;i.setTextures(t),i.setNodes(r),i.setNodeMaterials(this.nodeMaterials);for(let t=0,r=e.length;tB(new WE(e,t)),KE=class extends R{static get type(){return`CodeNode`}constructor(e=``,t=[],n=``){super(`code`),this.isCodeNode=!0,this.code=e,this.language=n,this.includes=t}isGlobal(){return!0}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}},qE=V(KE),JE=(e,t)=>qE(e,t,`js`),YE=(e,t)=>qE(e,t,`wgsl`),XE=(e,t)=>qE(e,t,`glsl`),ZE=class extends KE{static get type(){return`FunctionNode`}constructor(e=``,t=[],n=``){super(e,t,n)}getNodeType(e){return this.getNodeFunction(e).type}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)+` +`,t===`property`?o:e.format(`${o}()`,i,t)}},QE=(e,t=[],n=``)=>{for(let e=0;er.call(...e);return i.functionNode=r,i},$E=(e,t)=>QE(e,t,`glsl`),eD=(e,t)=>QE(e,t,`wgsl`),tD=class{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0}setValue(e){this.value=e}getValue(){return this.value}},nD=class extends tD{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}},rD=class extends tD{constructor(e,t=new A){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}},iD=class extends tD{constructor(e,t=new M){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}},aD=class extends tD{constructor(e,t=new Fn){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}},oD=class extends tD{constructor(e,t=new P){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}},sD=class extends tD{constructor(e,t=new j){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}},cD=class extends tD{constructor(e,t=new N){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}},lD=class extends nD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},uD=class extends rD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},dD=class extends iD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},fD=class extends aD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},pD=class extends oD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},mD=class extends sD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},hD=class extends cD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},gD=class extends R{static get type(){return`StackNode`}constructor(e=null){super(),this.nodes=[],this.outputNode=null,this.parent=e,this._currentCond=null,this.isStackNode=!0}getNodeType(e){return this.outputNode?this.outputNode.getNodeType(e):`void`}add(e){return this.nodes.push(e),this}If(e,t){return this._currentCond=hy(e,new Sg(t)),this.add(this._currentCond)}ElseIf(e,t){let n=hy(e,new Sg(t));return this._currentCond.elseNode=n,this._currentCond=n,this}Else(e){return this._currentCond.elseNode=new Sg(e),this}build(e,...t){let n=Dg();Eg(this);for(let t of this.nodes)t.build(e,`void`);return Eg(n),this.outputNode?this.outputNode.build(e,...t):super.build(e,...t)}else(...e){return console.warn(`TSL.StackNode: .else() has been renamed to .Else().`),this.Else(...e)}elseif(...e){return console.warn(`TSL.StackNode: .elseif() has been renamed to .ElseIf().`),this.ElseIf(...e)}},_D=V(gD),vD=class{constructor(){this.weakMap=new WeakMap}get(e){let t=this.weakMap;for(let n=0;n0&&this._blur(i,0,0,t),this._applyPMREM(i),this._cleanup(i),i}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}async compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=BD(),await this._compileMaterial(this._cubemapMaterial))}async compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=VD(),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())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?c:0,c,c),s.render(e,i)}s.autoClear=c,e.background=d}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?this._cubemapMaterial===null&&(this._cubemapMaterial=BD(e)):this._equirectMaterial===null&&(this._equirectMaterial=VD(e));let i=r?this._cubemapMaterial:this._equirectMaterial;i.fragmentNode.value=e;let a=this._lodMeshes[0];a.material=i;let o=this._cubeSize;LD(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,SD)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodPlanes.length;for(let t=1;txD&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${xD}`);let h=[],g=0;for(let e=0;e_-yD?r-_+yD:0),4*(this._cubeSize-v),3*v,2*v),s.setRenderTarget(t),s.render(l,SD)}};function FD(e){let t=[],n=[],r=[],i=[],a=e,o=e-yD+1+bD.length;for(let s=0;se-yD?c=bD[s-e+yD-1]:s===0&&(c=0),r.push(c);let l=1/(o-2),u=-l,d=1+l,f=[u,u,d,u,d,d,u,u,d,d,u,d],p=new Float32Array(108),m=new Float32Array(72),h=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=jD[e];p.set(r,18*i),m.set(f,12*i);let a=[i,i,i,i,i,i];h.set(a,6*i)}let g=new Ii;g.setAttribute(`position`,new bi(p,3)),g.setAttribute(`uv`,new bi(m,2)),g.setAttribute(`faceIndex`,new bi(h,1)),t.push(g),i.push(new Ji(g,null)),a>yD&&a--}return{lodPlanes:t,sizeLods:n,sigmas:r,lodMeshes:i}}function ID(e,t,n){let r=new In(e,t,n);return r.texture.mapping=306,r.texture.name=`PMREM.cubeUv`,r.texture.isPMREMTexture=!0,r.scissorTest=!0,r}function LD(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function RD(e){let t=new tw;return t.depthTest=!1,t.depthWrite=!1,t.blending=0,t.name=`PMREM_${e}`,t}function zD(e,t,n){let r=Sx(Array(xD).fill(0)),i=Z(new M(0,1,0)),a=Z(0),o=G(xD),s=Z(0),c={n:o,latitudinal:s,weights:r,poleAxis:i,outputDirection:ND,dTheta:a,samples:Z(1),envMap:gb(null),mipInt:Z(0),CUBEUV_TEXEL_WIDTH:G(1/t),CUBEUV_TEXEL_HEIGHT:G(1/n),CUBEUV_MAX_MIP:G(e)},l=RD(`blur`);return l.uniforms=c,l.fragmentNode=JT({...c,latitudinal:s.equal(1)}),l}function BD(e){let t=RD(`cubemap`);return t.fragmentNode=_x(e,ND),t}function VD(e){let t=RD(`equirect`);return t.fragmentNode=gb(e,hw(ND),0),t}var HD=0,UD=class{constructor(e=``,t=[],n=0,r=[]){this.name=e,this.bindings=t,this.index=n,this.bindingsReference=r,this.id=HD++}},WD=new WeakMap,GD=new Map([[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),KD=new Map([[Int8Array,`int`],[Int16Array,`int`],[Int32Array,`int`],[Uint8Array,`uint`],[Uint16Array,`uint`],[Uint32Array,`uint`],[Float32Array,`float`]]),qD=e=>(e=Number(e),e+(e%1?``:`.0`)),JD=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.updateNodes=[],this.updateBeforeNodes=[],this.updateAfterNodes=[],this.hashNodes={},this.monitor=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.bindings={vertex:{},fragment:{},compute:{}},this.bindingsIndexes={},this.bindGroups=null,this.attributes=[],this.bufferAttributes=[],this.varyings=[],this.codes={},this.vars={},this.flow={code:``},this.chaining=[],this.stack=_D(),this.stacks=[],this.tab=` `,this.currentFunctionNode=null,this.context={material:this.material},this.cache=new UE,this.globalCache=this.cache,this.flowsData=new WeakMap,this.shaderStage=null,this.buildStage=null,this.useComparisonMethod=!1}getBindGroupsCache(){let e=WD.get(this.renderer);return e===void 0&&(e=new vD,WD.set(this.renderer,e)),e}createRenderTarget(e,t,n){return new In(e,t,n)}createCubeRenderTarget(e,t){return new gw(e,t)}createPMREMGenerator(){return new PD(this.renderer)}includes(e){return this.nodes.includes(e)}_getBindGroup(e,t){let n=this.getBindGroupsCache(),r=[],i=!0;for(let e of t)r.push(e),i&&=e.groupNode.shared!==!0;let a;return i?(a=n.get(r),a===void 0&&(a=new UD(e,r,this.bindingsIndexes[e].group,r),n.set(r,a))):a=new UD(e,r,this.bindingsIndexes[e].group,r),a}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 Ph)for(let r in n[e]){let i=n[e][r];(t[r]||(t[r]=[])).push(...i)}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=0?`${Math.round(t)}u`:`0u`;if(e===`bool`)return t?`true`:`false`;if(e===`color`)return`${this.getType(`vec3`)}( ${qD(t.r)}, ${qD(t.g)}, ${qD(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)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)}, ${i(t.w)} )`;if(n>4&&t&&(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 LE(e,t);return 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===`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=GD.get(e);return(t===`float`?``:t[0])+n}getTypeFromArray(e){return KD.get(e.constructor)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);let n=t.array,r=e.itemSize,i=e.normalized,a;return!(e instanceof Oi)&&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`)}addStack(){return this.stack=_D(this.stack),this.stacks.push(Dg()||this.stack),Eg(this.stack),this.stack}removeStack(){let e=this.stack;return this.stack=e.parent,Eg(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);return r===void 0&&(r={},n.setData(e,r)),r[t]===void 0&&(r[t]={}),r[t]}getNodeProperties(e,t=`any`){let n=this.getDataFromNode(e,t);return n.properties||={outputNode:null}}getBufferAttributeFromNode(e,t){let n=this.getDataFromNode(e),r=n.bufferAttribute;return r===void 0&&(r=new LE(`nodeAttribute`+ this.uniforms.index++,t,e),this.bufferAttributes.push(r),n.bufferAttribute=r),r}getStructTypeFromNode(e,t=this.shaderStage){let n=this.getDataFromNode(e,t);return n.structType===void 0&&(e.name=`StructType${this.structs.index++}`,this.structs[t].push(e),n.structType=e),e}getUniformFromNode(e,t,n=this.shaderStage,r=null){r===`in`&&(console.warn(`NodeBuilder: "in" is a reserved word, using "inValue" instead.`,e,r),e.name=`inValue`,r=e.name);let i=this.getDataFromNode(e,n,this.globalCache),a=i.uniform;if(a===void 0){let o=this.uniforms.index++;a=new RE(r||`nodeUniform`+o,t,e),this.uniforms[n].push(a),i.uniform=a}return a}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage){let i=this.getDataFromNode(e,r),a=i.variable;if(a===void 0){let e=this.vars[r]||(this.vars[r]=[]);t===null&&(t=`nodeVar`+e.length),a=new zE(t,n),e.push(a),i.variable=a}return a}getVaryingFromNode(e,t=null,n=e.getNodeType(this)){let r=this.getDataFromNode(e,`any`),i=r.varying;if(i===void 0){let e=this.varyings,a=e.length;t===null&&(t=`nodeVarying`+a),i=new BE(t,n),e.push(i),r.varying=i}return i}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 VE(`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+=`; +`),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}buildFunctionNode(e){let t=new ZE,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 WE(e.type,e.name);e.layout=null;let r=e.call(n),i=this.flowStagesNode(r,t.type);return e.layout=t,i}flowStagesNode(e,t=null){let n=this.flow,r=this.vars,i=this.cache,a=this.buildStage,o=this.stack,s={code:``};this.flow=s,this.vars={},this.cache=new UE,this.stack=_D();for(let n of Nh)this.setBuildStage(n),s.result=e.build(this,t);return s.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=r,this.cache=i,this.stack=o,this.setBuildStage(a),s}getFunctionOperator(){return null}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.shaderStage;this.setShaderStage(e);let a=this.flowChildNode(t,n);return r!==null&&(a.code+=`${this.tab+r} = ${a.result};\n`),this.flowCode[e]=this.flowCode[e]+a.code,this.setShaderStage(i),a}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){console.warn(`Abstract function.`)}getVaryings(){console.warn(`Abstract function.`)}getVar(e,t){return`${this.getType(e)} ${t}`}getVars(e){let t=``,n=this.vars[e];if(n!==void 0)for(let e of n)t+=`${this.getVar(e.type,e.name)}; `;return t}getUniforms(){console.warn(`Abstract function.`)}getCodes(e){let t=this.codes[e],n=``;if(t!==void 0)for(let e of t)n+=e.code+` +`;return n}getHash(){return this.vertexShader+this.fragmentShader+this.computeShader}setShaderStage(e){this.shaderStage=e}getShaderStage(){return this.shaderStage}setBuildStage(e){this.buildStage=e}getBuildStage(){return this.buildStage}buildCode(){console.warn(`Abstract function.`)}build(){let{object:e,material:t,renderer:n}=this;if(t!==null){let e=n.nodes.library.fromMaterial(t);e===null&&(console.error(`NodeMaterial: Material "${t.type}" is not compatible.`),e=new tw),e.build(this)}else this.addFlow(`compute`,e);for(let e of Nh){this.setBuildStage(e),this.context.vertex&&this.context.vertex.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.vertex);for(let t of Ph){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}getNodeUniform(e,t){if(t===`float`||t===`int`||t===`uint`)return new lD(e);if(t===`vec2`||t===`ivec2`||t===`uvec2`)return new uD(e);if(t===`vec3`||t===`ivec3`||t===`uvec3`)return new dD(e);if(t===`vec4`||t===`ivec4`||t===`uvec4`)return new fD(e);if(t===`color`)return new pD(e);if(t===`mat3`)return new mD(e);if(t===`mat4`)return new hD(e);throw Error(`Uniform "${t}" not declared.`)}createNodeMaterial(e=`NodeMaterial`){throw Error(`THREE.NodeBuilder: createNodeMaterial() was deprecated. Use new ${e}() instead.`)}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?this.format(`${e}.${`xyz`.slice(0,i)}`,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 r${n} - Node System\n`}},YD=class{constructor(){this.time=0,this.deltaTime=0,this.frameId=0,this.renderId=0,this.startTime=null,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={renderMap:new WeakMap,frameMap:new WeakMap},e.set(t,n)),n}updateBeforeNode(e){let t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateBeforeMap,n);t.get(n)!==this.frameId&&e.updateBefore(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateBeforeMap,n);t.get(n)!==this.renderId&&e.updateBefore(this)!==!1&&t.set(n,this.renderId)}else t===L.OBJECT&&e.updateBefore(this)}updateAfterNode(e){let t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateAfterMap,n);t.get(n)!==this.frameId&&e.updateAfter(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateAfterMap,n);t.get(n)!==this.renderId&&e.updateAfter(this)!==!1&&t.set(n,this.renderId)}else t===L.OBJECT&&e.updateAfter(this)}updateNode(e){let t=e.getUpdateType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateMap,n);t.get(n)!==this.frameId&&e.update(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateMap,n);t.get(n)!==this.renderId&&e.update(this)!==!1&&t.set(n,this.renderId)}else t===L.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}},XD=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};XD.isNodeFunctionInput=!0;var ZD=class extends R{static get type(){return`StructTypeNode`}constructor(e){super(),this.types=e,this.isStructTypeNode=!0}getMemberTypes(){return this.types}},QD=class extends R{static get type(){return`OutputStructNode`}constructor(...e){super(),this.members=e,this.isOutputStructNode=!0}setup(e){super.setup(e);let t=this.members,n=[];for(let r=0;ri&&(r=n,i=a)}}this._candidateFnCall=n=r(...t)}return n}},iO=V(rO),aO=e=>(...t)=>iO(e,...t),oO=class e extends e_{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=L.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};oO.LOCAL=`local`,oO.GLOBAL=`global`,oO.DELTA=`delta`,oO.FRAME=`frame`;var sO=(e,t=0)=>B(new oO(oO.LOCAL,e,t)),cO=(e,t=0)=>B(new oO(oO.GLOBAL,e,t)),lO=(e,t=0)=>B(new oO(oO.DELTA,e,t)),uO=H(oO,oO.FRAME).toUint(),dO=class e extends R{static get type(){return`OscNode`}constructor(t=e.SINE,n=sO()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=B(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};dO.SINE=`sine`,dO.SQUARE=`square`,dO.TRIANGLE=`triangle`,dO.SAWTOOTH=`sawtooth`;var fO=V(dO,dO.SINE),pO=V(dO,dO.SQUARE),mO=V(dO,dO.TRIANGLE),hO=V(dO,dO.SAWTOOTH),gO=class extends R{static get type(){return`SpriteSheetUVNode`}constructor(e,t=ub(),n=G(0)){super(`vec2`),this.countNode=e,this.uvNode=t,this.frameNode=n}setup(){let{frameNode:e,uvNode:t,countNode:n}=this,{width:r,height:i}=n,a=e.mod(r.mul(i)).floor(),o=a.mod(r),s=i.sub(a.add(1).div(r).ceil()),c=n.reciprocal(),l=J(o,s);return t.add(l).mul(c)}},_O=V(gO),vO=class extends Lh{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}setup(e){return e.isAvailable(`storageBuffer`)===!1&&this.node.bufferObject===!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.bufferObject===!0&&r!==!0?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}},yO=V(vO),bO=class extends R{static get type(){return`TriplanarTexturesNode`}constructor(e,t=null,n=null,r=G(1),i=Kb,a=nx){super(`vec4`),this.textureXNode=e,this.textureYNode=t,this.textureZNode=n,this.scaleNode=r,this.positionNode=i,this.normalNode=a}setup(){let{textureXNode:e,textureYNode:t,textureZNode:n,scaleNode:r,positionNode:i,normalNode:a}=this,o=a.abs().normalize();o=o.div(o.dot(Y(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 L_(gb(u,s).mul(o.x),gb(d,c).mul(o.y),gb(f,l).mul(o.z))}},xO=V(bO),SO=(...e)=>xO(...e),CO=new Sa,wO=new M,TO=new M,EO=new M,DO=new N,OO=new M(0,0,-1),kO=new Fn,AO=new M,jO=new M,MO=new Fn,NO=new A,PO=new In,FO=EC.flipX(),IO=!1,LO=class extends hb{static get type(){return`ReflectorNode`}constructor(e={}){super(PO.texture,FO);let{target:t=new Wr,resolution:n=1,generateMipmaps:r=!1,bounces:i=!0}=e;this.target=t,this.resolution=n,this.generateMipmaps=r,this.bounces=i,this.updateBeforeType=i?L.RENDER:L.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new WeakMap}_updateResolution(e,t){let n=this.resolution;t.getDrawingBufferSize(NO),e.setSize(Math.round(NO.width*n),Math.round(NO.height*n))}setup(e){return this._updateResolution(PO,e.renderer),super.setup(e)}getTextureNode(){return this.textureNode}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 In(0,0,{type:D}),this.generateMipmaps===!0&&(t.texture.minFilter=y,t.texture.generateMipmaps=!0),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&IO)return!1;IO=!0;let{scene:t,camera:n,renderer:r,material:i}=e,{target:a}=this,o=this.getVirtualCamera(n),s=this.getRenderTarget(o);if(r.getDrawingBufferSize(NO),this._updateResolution(s,r),TO.setFromMatrixPosition(a.matrixWorld),EO.setFromMatrixPosition(n.matrixWorld),DO.extractRotation(a.matrixWorld),wO.set(0,0,1),wO.applyMatrix4(DO),AO.subVectors(TO,EO),AO.dot(wO)>0)return;AO.reflect(wO).negate(),AO.add(TO),DO.extractRotation(n.matrixWorld),OO.set(0,0,-1),OO.applyMatrix4(DO),OO.add(EO),jO.subVectors(TO,OO),jO.reflect(wO).negate(),jO.add(TO),o.coordinateSystem=n.coordinateSystem,o.position.copy(AO),o.up.set(0,1,0),o.up.applyMatrix4(DO),o.up.reflect(wO),o.lookAt(jO),o.near=n.near,o.far=n.far,o.updateMatrixWorld(),o.projectionMatrix.copy(n.projectionMatrix),CO.setFromNormalAndCoplanarPoint(wO,TO),CO.applyMatrix4(o.matrixWorldInverse),kO.set(CO.normal.x,CO.normal.y,CO.normal.z,CO.constant);let c=o.projectionMatrix;MO.x=(Math.sign(kO.x)+c.elements[8])/c.elements[0],MO.y=(Math.sign(kO.y)+c.elements[9])/c.elements[5],MO.z=-1,MO.w=(1+c.elements[10])/c.elements[14],kO.multiplyScalar(1/kO.dot(MO)),c.elements[2]=kO.x,c.elements[6]=kO.y,c.elements[10]=kO.z-0,c.elements[14]=kO.w,this.value=s.texture,i.visible=!1;let l=r.getRenderTarget(),u=r.getMRT();r.setMRT(null),r.setRenderTarget(s),r.render(t,o),r.setMRT(u),r.setRenderTarget(l),i.visible=!0,IO=!1}},RO=e=>B(new LO(e)),zO=new Ba(-1,1,1,-1,0,1),BO=new class extends Ii{constructor(e=!1){super();let t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute(`position`,new F([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new F(t,2))}},VO=class extends Ji{constructor(e=null){super(BO,e),this.camera=zO,this.isQuadMesh=!0}renderAsync(e){return e.renderAsync(this,zO)}render(e){e.render(this,zO)}},HO=new A,UO=class extends hb{static get type(){return`RTTNode`}constructor(e,t=null,n=null,r={type:D}){let i=new In(t,n,r);super(i.texture,ub()),this.node=e,this.width=t,this.height=n,this.renderTarget=i,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this.updateMap=new WeakMap,this._rttNode=null,this._quadMesh=new VO(new tw),this.updateBeforeType=L.RENDER}get autoSize(){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.autoSize===!0){this.pixelRatio=e.getPixelRatio();let t=e.getSize(HO);this.setSize(t.width,t.height)}this._quadMesh.material.fragmentNode=this._rttNode;let t=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(t)}clone(){let e=new hb(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}},WO=(e,...t)=>B(new UO(B(e),...t)),GO=(e,...t)=>e.isTextureNode?e:WO(e,...t),KO=class extends cb{static get type(){return`VertexColorNode`}constructor(e=0){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 Fn(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}},qO=(...e)=>B(new KO(...e)),JO=class extends R{static get type(){return`PointUVNode`}constructor(){super(`vec2`),this.isPointUVNode=!0}generate(){return`vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )`}},YO=H(JO),XO=class e extends R{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Ex(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Ex(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};XO.BACKGROUND_BLURRINESS=`backgroundBlurriness`,XO.BACKGROUND_INTENSITY=`backgroundIntensity`;var ZO=H(XO,XO.BACKGROUND_BLURRINESS),QO=H(XO,XO.BACKGROUND_INTENSITY),$O={Storage:`storage`,ReadOnlyStorage:`read-only-storage`},ek={WriteOnly:`write-only`,ReadOnly:`read-only`},tk=class extends vx{static get type(){return`StorageBufferNode`}constructor(e,t,n=0){super(e,t,n),this.isStorageBufferNode=!0,this.access=$O.Storage,this.isAtomic=!1,this.bufferObject=!1,this.bufferCount=n,this._attribute=null,this._varying=null,this.global=!0,e.isStorageBufferAttribute!==!0&&e.isStorageInstancedBufferAttribute!==!0&&(e.isInstancedBufferAttribute?e.isStorageInstancedBufferAttribute=!0:e.isStorageBufferAttribute=!0)}getHash(e){if(this.bufferCount===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getInputType(){return`storageBuffer`}element(e){return yO(this,e)}setBufferObject(e){return this.bufferObject=e,this}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess($O.ReadOnlyStorage)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}generate(e){if(e.isAvailable(`storageBuffer`))return super.generate(e);let t=this.getNodeType(e);this._attribute===null&&(this._attribute=Hy(this.value),this._varying=Cy(this._attribute));let n=this._varying.build(e,t);return e.registerTransform(n,this._attribute),n}},nk=(e,t,n)=>B(new tk(e,t,n)),rk=(e,t,n)=>B(new tk(e,t,n).setBufferObject(!0)),ik=class extends hb{static get type(){return`StorageTextureNode`}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.isStorageTextureNode=!0,this.access=ek.WriteOnly}getInputType(){return`storageTexture`}setup(e){super.setup(e);let t=e.getNodeProperties(this);t.storeNode=this.storeNode}setAccess(e){return this.access=e,this}generate(e,t){let n;return n=this.storeNode===null?super.generate(e,t):this.generateStore(e),n}toReadOnly(){return this.setAccess(ek.ReadOnly)}toWriteOnly(){return this.setAccess(ek.WriteOnly)}generateStore(e){let{uvNode:t,storeNode:n}=e.getNodeProperties(this),r=super.generate(e,`property`),i=t.build(e,`uvec2`),a=n.build(e,`vec4`),o=e.generateTextureStore(e,r,i,a);e.addLineFlowCode(o,this)}},ak=V(ik),ok=(e,t,n)=>{let r=ak(e,t,n);return n!==null&&r.append(),r},sk=class extends Tx{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}},ck=(e,t,n)=>B(new sk(e,t,n)),lk=class extends zh{static get type(){return`PosterizeNode`}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){let{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}},uk=V(lk),dk=null,fk=class extends LC{static get type(){return`ViewportSharedTextureNode`}constructor(e=EC,t=null){dk===null&&(dk=new Tu),super(e,t,dk)}updateReference(){return this}},pk=V(fk),mk=new A,hk=class extends hb{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},gk=class extends hk{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},_k=class e extends zh{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 ho;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new In(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:D,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=L.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Z(0),this._cameraFar=Z(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=B(new gk(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=B(new gk(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=qC(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=WC(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(mk);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};_k.COLOR=`color`,_k.DEPTH=`depth`;var vk=(e,t,n)=>B(new _k(_k.COLOR,e,t,n)),yk=(e,t)=>B(new hk(e,t)),bk=(e,t)=>B(new _k(_k.DEPTH,e,t)),xk=new VO,Sk=new VO,Ck=class extends zh{static get type(){return`GaussianBlurNode`}constructor(e,t=null,n=2){super(`vec4`),this.textureNode=e,this.directionNode=t,this.sigma=n,this._invSize=Z(new A),this._passDirection=Z(new A),this._horizontalRT=new In,this._horizontalRT.texture.name=`GaussianBlurNode.horizontal`,this._verticalRT=new In,this._verticalRT.texture.name=`GaussianBlurNode.vertical`,this._textureNode=yk(this,this._verticalRT.texture),this.updateBeforeType=L.RENDER,this.resolution=new A(1,1)}setSize(e,t){e=Math.max(Math.round(e*this.resolution.x),1),t=Math.max(Math.round(t*this.resolution.y),1),this._invSize.value.set(1/e,1/t),this._horizontalRT.setSize(e,t),this._verticalRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value,i=t.getRenderTarget(),a=t.getMRT(),o=n.value;xk.material=this._material,Sk.material=this._material,this.setSize(r.image.width,r.image.height);let s=r.type;this._horizontalRT.texture.type=s,this._verticalRT.texture.type=s,t.setMRT(null),t.setRenderTarget(this._horizontalRT),this._passDirection.value.set(1,0),xk.render(t),n.value=this._horizontalRT.texture,t.setRenderTarget(this._verticalRT),this._passDirection.value.set(0,1),Sk.render(t),t.setRenderTarget(i),t.setMRT(a),n.value=o}getTextureNode(){return this._textureNode}setup(e){let t=this.textureNode;if(t.isTextureNode!==!0)return console.error(`GaussianBlurNode requires a TextureNode.`),X();let n=t.uvNode||ub(),r=J(this.directionNode||1),i=e=>t.uv(e),a=U(()=>{let e=3+2*this.sigma,t=this._getCoefficients(e),a=this._invSize,o=r.mul(this._passDirection),s=G(t[0]).toVar(),c=X(i(n).mul(s)).toVar();for(let r=1;rB(new Ck(GO(e),t,n)),Tk=new A,Ek=new VO,Dk=class extends zh{static get type(){return`AfterImageNode`}constructor(e,t=.96){super(e),this.textureNode=e,this.textureNodeOld=gb(),this.damp=Z(t),this._compRT=new In,this._compRT.texture.name=`AfterImageNode.comp`,this._oldRT=new In,this._oldRT.texture.name=`AfterImageNode.old`,this._textureNode=yk(this,this._compRT.texture),this.updateBeforeType=L.RENDER}getTextureNode(){return this._textureNode}setSize(e,t){this._compRT.setSize(e,t),this._oldRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value.type;this._compRT.texture.type=r,this._oldRT.texture.type=r,t.getDrawingBufferSize(Tk),this.setSize(Tk.x,Tk.y);let i=t.getRenderTarget(),a=n.value;this.textureNodeOld.value=this._oldRT.texture,t.setRenderTarget(this._compRT),Ek.render(t);let o=this._oldRT;this._oldRT=this._compRT,this._compRT=o,t.setRenderTarget(i),n.value=a}setup(e){let t=this.textureNode,n=this.textureNodeOld,r=t.uvNode||ub();n.uvNode=r;let i=e=>t.uv(e),a=U(([e,t])=>{let n=G(t).toVar();return Gv(jv(X(e).toVar().sub(n)),0)}),o=U(()=>{let e=X(n),t=X(i(r));return e.mulAssign(this.damp.mul(a(e,.1))),Gv(t,e)}),s=this._materialComposed||=new tw;s.name=`AfterImage`,s.fragmentNode=o(),Ek.material=s;let c=e.getNodeProperties(this);return c.textureNode=t,this._textureNode}dispose(){this._compRT.dispose(),this._oldRT.dispose()}},Ok=(e,t)=>B(new Dk(GO(e),t)),kk=U(([e])=>Pk(e.rgb)),Ak=U(([e,t=G(1)])=>t.mix(Pk(e.rgb),e.rgb)),jk=U(([e,t=G(1)])=>{let n=L_(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 oy(e.rgb,r,i)}),Mk=U(([e,t=G(1)])=>{let n=Y(.57735,.57735,.57735),r=t.cos();return Y(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(Zv(n,e.rgb).mul(r.oneMinus())))))}),Nk=new M,Pk=(e,t=Y(...Tn.getLuminanceCoefficients(Nk)))=>Zv(e,t),Fk=(e,t)=>oy(Y(0),e,Pk(e).sub(t).max(0)),Ik=new VO,Lk=class extends zh{static get type(){return`AnamorphicNode`}constructor(e,t,n,r){super(`vec4`),this.textureNode=e,this.tresholdNode=t,this.scaleNode=n,this.colorNode=Y(.1,0,1),this.samples=r,this.resolution=new A(1,1),this._renderTarget=new In,this._renderTarget.texture.name=`anamorphic`,this._invSize=Z(new A),this._textureNode=yk(this,this._renderTarget.texture),this.updateBeforeType=L.RENDER}getTextureNode(){return this._textureNode}setSize(e,t){this._invSize.value.set(1/e,1/t),e=Math.max(Math.round(e*this.resolution.x),1),t=Math.max(Math.round(t*this.resolution.y),1),this._renderTarget.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value;this._renderTarget.texture.type=r.type;let i=t.getRenderTarget(),a=n.value;Ik.material=this._material,this.setSize(r.image.width,r.image.height),t.setRenderTarget(this._renderTarget),Ik.render(t),t.setRenderTarget(i),n.value=a}setup(e){let t=this.textureNode,n=t.uvNode||ub(),r=e=>t.uv(e),i=U(()=>{let e=this.samples,t=Math.floor(e/2),i=Y(0).toVar();return rC({start:-t,end:t},({i:e})=>{let a=G(e).abs().div(t).oneMinus(),o=Fk(r(J(n.x.add(this._invSize.x.mul(e).mul(this.scaleNode)),n.y)),this.tresholdNode).mul(a);i.addAssign(o)}),i.mul(this.colorNode)}),a=this._material||=new tw;a.name=`Anamorphic`,a.fragmentNode=i();let o=e.getNodeProperties(this);return o.textureNode=t,this._textureNode}dispose(){this._renderTarget.dispose()}},Rk=(e,t=.9,n=3,r=32)=>B(new Lk(GO(e),B(t),B(n),r)),zk=class extends zh{static get type(){return`SobelOperatorNode`}constructor(e){super(),this.textureNode=e,this.updateBeforeType=L.RENDER,this._invSize=Z(new A)}updateBefore(){let e=this.textureNode.value;this._invSize.value.set(1/e.image.width,1/e.image.height)}setup(){let{textureNode:e}=this,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=this._invSize,r=Vg(-1,-2,-1,0,0,0,1,2,1),i=Vg(-1,0,1,-2,0,2,-1,0,1),a=Pk(n(t.add(e.mul(J(-1,-1)))).xyz),o=Pk(n(t.add(e.mul(J(-1,0)))).xyz),s=Pk(n(t.add(e.mul(J(-1,1)))).xyz),c=Pk(n(t.add(e.mul(J(0,-1)))).xyz),l=Pk(n(t.add(e.mul(J(0,0)))).xyz),u=Pk(n(t.add(e.mul(J(0,1)))).xyz),d=Pk(n(t.add(e.mul(J(1,-1)))).xyz),f=Pk(n(t.add(e.mul(J(1,0)))).xyz),p=Pk(n(t.add(e.mul(J(1,1)))).xyz),m=L_(r[0][0].mul(a),r[1][0].mul(c),r[2][0].mul(d),r[0][1].mul(o),r[1][1].mul(l),r[2][1].mul(f),r[0][2].mul(s),r[1][2].mul(u),r[2][2].mul(p)),h=L_(i[0][0].mul(a),i[1][0].mul(c),i[2][0].mul(d),i[0][1].mul(o),i[1][1].mul(l),i[2][1].mul(f),i[0][2].mul(s),i[1][2].mul(u),i[2][2].mul(p));return X(Y(m.mul(m).add(h.mul(h)).sqrt()),1)})()}},Bk=e=>B(new zk(GO(e))),Vk=class extends zh{static get type(){return`DepthOfFieldNode`}constructor(e,t,n,r,i){super(),this.textureNode=e,this.viewZNode=t,this.focusNode=n,this.apertureNode=r,this.maxblurNode=i,this._aspect=Z(0),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value;this._aspect.value=e.image.width/e.image.height}setup(){let e=this.textureNode,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=J(1,this._aspect),r=J(sy(this.focusNode.add(this.viewZNode).mul(this.apertureNode),this.maxblurNode.negate(),this.maxblurNode)),i=r.mul(.9),a=r.mul(.7),o=r.mul(.4),s=X(0);return s=s.add(n(t)),s=s.add(n(t.add(J(0,.4).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,.37).mul(e).mul(r)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(r)))),s=s.add(n(t.add(J(-.37,.15).mul(e).mul(r)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(r)))),s=s.add(n(t.add(J(.37,-.15).mul(e).mul(r)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(r)))),s=s.add(n(t.add(J(-.15,-.37).mul(e).mul(r)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(r)))),s=s.add(n(t.add(J(-.15,.37).mul(e).mul(r)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(r)))),s=s.add(n(t.add(J(.37,.15).mul(e).mul(r)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(r)))),s=s.add(n(t.add(J(-.37,-.15).mul(e).mul(r)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,-.37).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,.37).mul(e).mul(i)))),s=s.add(n(t.add(J(-.37,.15).mul(e).mul(i)))),s=s.add(n(t.add(J(.37,-.15).mul(e).mul(i)))),s=s.add(n(t.add(J(-.15,-.37).mul(e).mul(i)))),s=s.add(n(t.add(J(-.15,.37).mul(e).mul(i)))),s=s.add(n(t.add(J(.37,.15).mul(e).mul(i)))),s=s.add(n(t.add(J(-.37,-.15).mul(e).mul(i)))),s=s.add(n(t.add(J(.15,-.37).mul(e).mul(i)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(a)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(a)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(a)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(a)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(a)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(a)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(a)))),s=s.add(n(t.add(J(0,.4).mul(e).mul(a)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(o)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(o)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(o)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(o)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(o)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(o)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(o)))),s=s.add(n(t.add(J(0,.4).mul(e).mul(o)))),s=s.div(41),s.a=1,X(s)})()}},Hk=(e,t,n=1,r=.025,i=1)=>B(new Vk(GO(e),B(t),B(n),B(r),B(i))),Uk=class extends zh{static get type(){return`DotScreenNode`}constructor(e,t=new A(.5,.5),n=1.57,r=1){super(`vec4`),this.inputNode=e,this.center=Z(t),this.angle=Z(n),this.scale=Z(r)}setup(){let e=this.inputNode,t=U(()=>{let e=wv(this.angle),t=Tv(this.angle),n=ub().mul(DC).sub(this.center),r=J(t.mul(n.x).sub(e.mul(n.y)),e.mul(n.x).add(t.mul(n.y))).mul(this.scale);return wv(r.x).mul(wv(r.y)).mul(4)});return U(()=>{let n=e;return X(Y(L_(n.r,n.g,n.b).div(3).mul(10).sub(5).add(t())),n.a)})()}},Wk=(e,t,n,r)=>B(new Uk(B(e),t,n,r)),Gk=class extends zh{static get type(){return`RGBShiftNode`}constructor(e,t=.005,n=0){super(`vec4`),this.textureNode=e,this.amount=Z(t),this.angle=Z(n)}setup(){let{textureNode:e}=this,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=J(Tv(this.angle),wv(this.angle)).mul(this.amount),r=n(t.add(e)),i=n(t),a=n(t.sub(e));return X(r.r,i.g,a.b,i.a)})()}},Kk=(e,t,n)=>B(new Gk(GO(e),t,n)),qk=class extends zh{static get type(){return`FilmNode`}constructor(e,t=null,n=null){super(),this.inputNode=e,this.intensityNode=t,this.uvNode=n}setup(){let e=this.uvNode||ub();return U(()=>{let t=this.inputNode.rgb,n=fy(Cv(e.add(sO()))),r=t.add(t.mul(sy(n.add(.1),0,1)));return this.intensityNode!==null&&(r=oy(t,r,this.intensityNode)),X(r,this.inputNode.a)})()}},Jk=V(qk),Yk=class extends zh{static get type(){return`Lut3DNode`}constructor(e,t,n,r){super(),this.inputNode=e,this.lutNode=t,this.size=Z(n),this.intensityNode=r}setup(){let{inputNode:e,lutNode:t}=this,n=e=>t.uv(e);return U(()=>{let t=e,r=G(1).div(this.size);return X(oy(t,X(n(Y(G(.5).div(this.size)).add(t.rgb.mul(G(1).sub(r)))).rgb,t.a),this.intensityNode))})()}},Xk=(e,t,n,r)=>B(new Yk(B(e),B(t),n,B(r))),Zk=new VO,Qk=new P,$k=new A,eA=class extends zh{static get type(){return`GTAONode`}constructor(e,t,n){super(),this.depthNode=e,this.normalNode=t,this.radius=Z(.25),this.resolution=Z(new A),this.thickness=Z(1),this.distanceExponent=Z(1),this.distanceFallOff=Z(1),this.scale=Z(1),this.noiseNode=gb(tA()),this.cameraProjectionMatrix=Z(n.projectionMatrix),this.cameraProjectionMatrixInverse=Z(n.projectionMatrixInverse),this.SAMPLES=Z(16),this._aoRenderTarget=new In,this._aoRenderTarget.texture.name=`GTAONode.AO`,this._material=null,this._textureNode=yk(this,this._aoRenderTarget.texture),this.updateBeforeType=L.FRAME}getTextureNode(){return this._textureNode}setSize(e,t){this.resolution.value.set(e,t),this._aoRenderTarget.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=t.getDrawingBufferSize($k),r=t.getRenderTarget(),i=t.getMRT();t.getClearColor(Qk);let a=t.getClearAlpha();Zk.material=this._material,this.setSize(n.width,n.height),t.setMRT(null),t.setClearColor(16777215,1),t.setRenderTarget(this._aoRenderTarget),Zk.render(t),t.setRenderTarget(r),t.setMRT(i),t.setClearColor(Qk,a)}setup(e){let t=ub(),n=e=>this.depthNode.uv(e).x,r=e=>this.noiseNode.uv(e),i=U(([e])=>{let t=this.cameraProjectionMatrix.mul(X(e,1)),r=t.xy.div(t.w).mul(.5).add(.5).toVar();r=J(r.x,r.y.oneMinus());let i=n(r);return Y(r,i)}),a=U(([e,t])=>{e=J(e.x,e.y.oneMinus()).mul(2).sub(1);let n=X(Y(e,t),1),r=X(this.cameraProjectionMatrixInverse.mul(n));return r.xyz.div(r.w)}),o=U(()=>{let e=n(t);e.greaterThanEqual(1).discard();let o=a(t,e),s=this.normalNode.rgb.normalize(),c=this.radius,l=fb(this.noiseNode,0),u=J(t.x,t.y.oneMinus());u=u.mul(this.resolution.div(l));let d=r(u),f=Y(d.xyz.mul(2).sub(1).xy,0).normalize(),p=Vg(f,Y(f.y.mul(-1),f.x,0),Y(0,0,1)),m=this.SAMPLES.lessThan(30).select(3,5),h=L_(this.SAMPLES,m.sub(1)).div(m),g=G(0).toVar();return rC({start:K(0),end:m,type:`int`,condition:`<`},({i:e})=>{let t=G(e).div(G(m)).mul(sv),n=X(Tv(t),wv(t),0,L_(.5,z_(.5,d.w)));n.xyz=Sv(p.mul(n.xyz));let r=Sv(o.xyz.negate()),l=Sv(Qv(n.xyz,r)),u=Qv(l,r),f=Sv(s.sub(l.mul(Zv(s,l)))),_=Qv(f,l),v=J(Zv(r,_),Zv(r,_.negate())).toVar();rC({end:h,type:`int`,name:`j`,condition:`<`},({j:e})=>{let t=n.xyz.mul(c).mul(n.w).mul($v(B_(G(e).add(1),G(h)),this.distanceExponent)),s=i(o.add(t)),l=a(s.xy,s.z).sub(o);W(Av(l.z).lessThan(this.thickness),()=>{let t=Zv(r,Sv(l));v.x.addAssign(Gv(0,z_(t.sub(v.x),oy(1,G(2).div(G(e).add(2)),this.distanceFallOff))))});let u=i(o.sub(t)),d=a(u.xy,u.z).sub(o);W(Av(d.z).lessThan(this.thickness),()=>{let t=Zv(r,Sv(d));v.y.addAssign(Gv(0,z_(t.sub(v.y),oy(1,G(2).div(G(e).add(2)),this.distanceFallOff))))})});let y=vv(R_(1,v.mul(v))),b=Zv(f,u),x=Zv(f,r),S=z_(.5,Ov(v.y).sub(Ov(v.x)).add(y.x.mul(v.x).sub(y.y.mul(v.y)))),C=z_(.5,R_(2,v.x.mul(v.x)).sub(v.y.mul(v.y))),w=b.mul(S).add(x.mul(C));g.addAssign(w)}),g.assign(sy(g.div(m),0,1)),g.assign($v(g,this.scale)),X(Y(g),1)}),s=this._material||=new tw;return s.fragmentNode=o().context(e.getSharedContext()),s.name=`GTAO`,s.needsUpdate=!0,this._textureNode}dispose(){this._aoRenderTarget.dispose()}};function tA(e=5){let t=Math.floor(e)%2==0?Math.floor(e)+1:Math.floor(e),n=nA(t),r=n.length,i=new Uint8Array(r*4);for(let e=0;eB(new eA(B(e),B(t),n)),iA=class extends zh{static get type(){return`DenoiseNode`}constructor(e,t,n,r,i){super(),this.textureNode=e,this.depthNode=t,this.normalNode=n,this.noiseNode=r,this.cameraProjectionMatrixInverse=Z(i.projectionMatrixInverse),this.lumaPhi=Z(5),this.depthPhi=Z(5),this.normalPhi=Z(5),this.radius=Z(5),this.index=Z(0),this._resolution=Z(new A),this._sampleVectors=Sx(aA(16,2,1)),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value;this._resolution.value.set(e.image.width,e.image.height)}setup(){let e=ub(),t=e=>this.textureNode.uv(e),n=e=>this.depthNode.uv(e).x,r=e=>this.normalNode.uv(e),i=e=>this.noiseNode.uv(e),a=U(([e,t])=>{e=J(e.x,e.y.oneMinus()).mul(2).sub(1);let n=X(Y(e,t),1),r=X(this.cameraProjectionMatrixInverse.mul(n));return r.xyz.div(r.w)}),o=U(([e,i,o,s])=>{let c=t(s),l=n(s),u=r(s).rgb.normalize(),d=c.rgb,f=a(s,l),p=$v(Gv(Zv(i,u).toVar(),0),this.normalPhi).toVar(),m=Av(Pk(d).sub(Pk(e))).toVar(),h=Gv(G(1).sub(m.div(this.lumaPhi)),0).toVar(),g=Av(Zv(o.sub(f),i)).toVar(),_=Gv(G(1).sub(g.div(this.depthPhi)),0),v=h.mul(_).mul(p);return X(d.mul(v),v)}),s=U(([e])=>{let s=n(e),c=r(e).rgb.normalize(),l=t(e);W(s.greaterThanEqual(1).or(Zv(c,c).equal(0)),()=>l);let u=Y(l.rgb),d=a(e,s),f=fb(this.noiseNode,0),p=J(e.x,e.y.oneMinus());p=p.mul(this._resolution.div(f));let m=i(p),h=J(wv(m.element(this.index.mod(4).mul(2).mul(sv))),Tv(m.element(this.index.mod(4).mul(2).mul(sv)))),g=Bg(h.x,h.y.negate(),h.x,h.y),_=G(1).toVar(),v=Y(l.rgb).toVar();return rC({start:K(0),end:K(16),type:`int`,condition:`<`},({i:t})=>{let n=this._sampleVectors.element(t).toVar(),r=g.mul(n.xy.mul(G(1).add(n.z.mul(this.radius.sub(1))))).div(this._resolution).toVar(),i=o(u,c,d,e.add(r).toVar());v.addAssign(i.xyz),_.addAssign(i.w)}),W(_.greaterThan(G(0)),()=>{v.divAssign(_)}),X(v,l.a)}).setLayout({name:`denoise`,type:`vec4`,inputs:[{name:`uv`,type:`vec2`}]});return U(()=>s(e))()}};function aA(e,t,n){let r=oA(e,t,n),i=[];for(let t=0;tB(new iA(GO(e),B(t),B(n),B(r),i)),cA=class extends zh{static get type(){return`FXAANode`}constructor(e){super(),this.textureNode=e,this.updateBeforeType=L.RENDER,this._invSize=Z(new A)}updateBefore(){let e=this.textureNode.value;this._invSize.value.set(1/e.image.width,1/e.image.height)}setup(){let e=this.textureNode.bias(-100),t=e.uvNode||ub(),n=t=>e.uv(t),r=(t,n,r)=>e.uv(t.add(n.mul(r))),i=K(5),a=U(([e,t])=>{let n=X(t).toVar(),r=X(Av(X(e).toVar().sub(n))).toVar();return Gv(Gv(Gv(r.r,r.g),r.b),r.a)}),o=U(([e,t,o,s])=>{let c=n(e).toVar(),l=r(e,J(0,-1),t.xy).toVar(),u=r(e,J(1,0),t.xy).toVar(),d=r(e,J(0,1),t.xy).toVar(),f=r(e,J(-1,0),t.xy).toVar(),p=a(c,d).toVar(),m=a(c,l).toVar(),h=a(c,u).toVar(),g=a(c,f).toVar();W(Gv(p,Gv(m,Gv(h,g))).toVar().lessThan(o),()=>c);let _=R_(p.add(m),h.add(g)).toVar();_.mulAssign(s),W(Av(_).lessThan(.3),()=>{let n=J(h.greaterThan(g).select(1,-1).toVar(),m.greaterThan(p).select(1,-1).toVar()).toVar(),i=a(c,r(e,J(n.x,n.y),t.xy)).toVar(),o=a(c,r(e,J(n.x.negate(),n.y.negate()),t.xy)).toVar();_.assign(o.sub(i)),_.mulAssign(s),W(Av(_).lessThan(.3),()=>oy(c,d.add(l).add(u).add(f).mul(.25),.4))});let v=J().toVar();W(_.lessThanEqual(0),()=>{d.assign(f),l.assign(u),v.x.assign(0),v.y.assign(t.y)}).Else(()=>{v.x.assign(t.x),v.y.assign(0)});let y=a(c,d).toVar(),b=a(c,l).toVar();W(y.lessThanEqual(b),()=>{d.assign(l)});let x=K(0).toVar(),S=K(0).toVar(),C=G(0).toVar(),w=G(0).toVar(),T=J(e).toVar(),E=J(e).toVar(),D=K(0).toVar(),ee=K(0).toVar();rC(i,({i:t})=>{let r=t.add(1).toVar();W(x.equal(0),()=>{C.addAssign(r),T.assign(e.add(v.mul(C)));let i=n(T.xy),o=a(i,c).toVar(),s=a(i,d).toVar();W(o.greaterThan(s),()=>{x.assign(1)}),D.assign(t)}),W(S.equal(0),()=>{w.addAssign(r),E.assign(e.sub(v.mul(w)));let i=n(E.xy),o=a(i,c).toVar(),s=a(i,d).toVar();W(o.greaterThan(s),()=>{S.assign(1)}),ee.assign(t)}),W(x.equal(1).or(S.equal(1)),()=>{aC()})}),W(x.equal(0).and(S.equal(0)),()=>c);let O=G(1).toVar(),te=G(1).toVar();W(x.equal(1),()=>{O.assign(G(D).div(G(i.sub(1))))}),W(S.equal(1),()=>{te.assign(G(ee).div(G(i.sub(1))))});let ne=Wv(O,te);return ne.assign($v(ne,.5)),ne.assign(G(1).sub(ne)),oy(c,d,ne.mul(.5))}).setLayout({name:`FxaaPixelShader`,type:`vec4`,inputs:[{name:`uv`,type:`vec2`},{name:`fxaaQualityRcpFrame`,type:`vec2`},{name:`fxaaQualityEdgeThreshold`,type:`float`},{name:`fxaaQualityinvEdgeThreshold`,type:`float`}]});return U(()=>{let e=G(.2),n=G(1).div(e);return o(t,this._invSize,e,n)})()}},lA=e=>B(new cA(GO(e))),uA=new VO,dA=new P(0,0,0),fA=new P,pA=new A,mA=new A(1,0),hA=new A(0,1),gA=class extends zh{static get type(){return`BloomNode`}constructor(e,t=1,n=0,r=0){super(),this.inputNode=e,this.strength=Z(t),this.radius=Z(n),this.threshold=Z(r),this.smoothWidth=Z(.01),this._renderTargetsHorizontal=[],this._renderTargetsVertical=[],this._nMips=5,this._renderTargetBright=new In(1,1,{type:D}),this._renderTargetBright.texture.name=`UnrealBloomPass.bright`,this._renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e{let e=this.inputNode,t=Pk(e.rgb),n=uy(this.threshold,this.threshold.add(this.smoothWidth),t);return oy(X(0),e,n)});this._highPassFilterMaterial=this._highPassFilterMaterial||new tw,this._highPassFilterMaterial.fragmentNode=t().context(e.getSharedContext()),this._highPassFilterMaterial.name=`Bloom_highPass`,this._highPassFilterMaterial.needsUpdate=!0;let n=[3,5,7,9,11];for(let t=0;toy(e,G(1.2).sub(e),t)).setLayout({name:`lerpBloomFactor`,type:`float`,inputs:[{name:`factor`,type:`float`},{name:`radius`,type:`float`}]}),o=U(()=>{let e=a(r.element(0),this.radius).mul(X(i.element(0),1)).mul(this._textureNodeBlur0),t=a(r.element(1),this.radius).mul(X(i.element(1),1)).mul(this._textureNodeBlur1),n=a(r.element(2),this.radius).mul(X(i.element(2),1)).mul(this._textureNodeBlur2),o=a(r.element(3),this.radius).mul(X(i.element(3),1)).mul(this._textureNodeBlur3),s=a(r.element(4),this.radius).mul(X(i.element(4),1)).mul(this._textureNodeBlur4);return e.add(t).add(n).add(o).add(s).mul(this.strength)});return this._compositeMaterial=this._compositeMaterial||new tw,this._compositeMaterial.fragmentNode=o().context(e.getSharedContext()),this._compositeMaterial.name=`Bloom_comp`,this._compositeMaterial.needsUpdate=!0,this._textureOutput}dispose(){for(let e=0;er.uv(e),l=U(()=>{let e=i.element(0).toVar(),n=c(s).rgb.mul(e).toVar();return rC({start:K(1),end:K(t),type:`int`,condition:`<`},({i:t})=>{let r=G(t),l=i.element(t),u=o.mul(a).mul(r),d=c(s.add(u)).rgb,f=c(s.sub(u)).rgb;n.addAssign(L_(d,f).mul(l)),e.addAssign(G(2).mul(l))}),X(n.div(e),1)}),u=new tw;return u.fragmentNode=l().context(e.getSharedContext()),u.name=`Bloom_seperable`,u.needsUpdate=!0,u.colorTexture=r,u.direction=o,u.invSize=a,u}},_A=(e,t,n,r)=>B(new gA(B(e),t,n,r)),vA=class extends zh{static get type(){return`TransitionNode`}constructor(e,t,n,r,i,a){super(),this.textureNodeA=e,this.textureNodeB=t,this.mixTextureNode=n,this.mixRatioNode=r,this.thresholdNode=i,this.useTextureNode=a}setup(){let{textureNodeA:e,textureNodeB:t,mixTextureNode:n,mixRatioNode:r,thresholdNode:i,useTextureNode:a}=this,o=e=>{let t=e.uvNode||ub();return e.uv(t)};return U(()=>{let s=o(e),c=o(t),l=X().toVar();return W(a.equal(K(1)),()=>{let e=o(n),t=r.mul(i.mul(2).add(1)).sub(i),a=sy(R_(e.r,t).mul(G(1).div(i)),0,1);l.assign(oy(s,c,a))}).Else(()=>{l.assign(oy(c,s,r))}),l})()}},yA=(e,t,n,r=0,i=.1,a=0)=>B(new vA(GO(e),GO(t),GO(n),B(r),B(i),B(a))),bA=class extends zh{static get type(){return`PixelationNode`}constructor(e,t,n,r,i,a){super(),this.textureNode=e,this.depthNode=t,this.normalNode=n,this.pixelSize=r,this.normalEdgeStrength=i,this.depthEdgeStrength=a,this._resolution=Z(new Fn),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value,t=e.image.width,n=e.image.height;this._resolution.value.set(t,n,1/t,1/n)}setup(){let{textureNode:e,depthNode:t,normalNode:n}=this,r=e.uvNode||ub(),i=t.uvNode||ub(),a=n.uvNode||ub(),o=()=>e.uv(r),s=(e,n)=>t.uv(i.add(J(e,n).mul(this._resolution.zw))).r,c=(e,t)=>n.uv(a.add(J(e,t).mul(this._resolution.zw))).rgb.normalize(),l=e=>{let t=n_(`float`,`diff`);return t.addAssign(sy(s(1,0).sub(e))),t.addAssign(sy(s(-1,0).sub(e))),t.addAssign(sy(s(0,1).sub(e))),t.addAssign(sy(s(0,-1).sub(e))),bv(uy(.01,.02,t).mul(2)).div(2)},u=(e,t,n,r)=>{let i=s(e,t).sub(n),a=c(e,t),o=Y(1,1,1),l=sy(uy(-.01,.01,Zv(r.sub(a),o)),0,1),u=sy(jv(i.mul(.25).add(.0025)),0,1);return G(1).sub(Zv(r,a)).mul(u).mul(l)},d=(e,t)=>{let n=n_(`float`,`indicator`);return n.addAssign(u(0,-1,e,t)),n.addAssign(u(0,1,e,t)),n.addAssign(u(-1,0,e,t)),n.addAssign(u(1,0,e,t)),qv(.1,n)};return U(()=>{let e=o(),t=n_(`float`,`depth`),n=n_(`vec3`,`normal`);W(this.depthEdgeStrength.greaterThan(0).or(this.normalEdgeStrength.greaterThan(0)),()=>{t.assign(s(0,0)),n.assign(c(0,0))});let r=n_(`float`,`dei`);W(this.depthEdgeStrength.greaterThan(0),()=>{r.assign(l(t))});let i=n_(`float`,`nei`);W(this.normalEdgeStrength.greaterThan(0),()=>{i.assign(d(t,n))});let a=r.greaterThan(0).select(G(1).sub(r.mul(this.depthEdgeStrength)),i.mul(this.normalEdgeStrength).add(1));return e.mul(a)})()}},xA=(e,t,n,r=6,i=.3,a=.4)=>B(new bA(GO(e),GO(t),GO(n),B(r),B(i),B(a))),SA=class extends _k{static get type(){return`PixelationPassNode`}constructor(e,t,n=6,r=.3,i=.4){super(`color`,e,t,{minFilter:u,magFilter:u}),this.pixelSize=n,this.normalEdgeStrength=r,this.depthEdgeStrength=i,this.isPixelationPassNode=!0,this._mrt=nO({output:S_,normal:ix})}setSize(e,t){let n=this.pixelSize.value?this.pixelSize.value:this.pixelSize,r=Math.floor(e/n),i=Math.floor(t/n);super.setSize(r,i)}setup(){return xA(super.getTextureNode(`output`),super.getTextureNode(`depth`),super.getTextureNode(`normal`),this.pixelSize,this.normalEdgeStrength,this.depthEdgeStrength)}},CA=(e,t,n,r,i)=>B(new SA(e,t,n,r,i)),wA=new A,TA=class extends _k{static get type(){return`SSAAPassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isSSAAPassNode=!0,this.sampleLevel=4,this.unbiased=!0,this.clearColor=new P(0),this.clearAlpha=0,this._currentClearColor=new P,this.sampleWeight=Z(1),this.sampleRenderTarget=null,this._quadMesh=new VO}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(wA);this.setSize(i.width,i.height),this.sampleRenderTarget.setSize(this.renderTarget.width,this.renderTarget.height),t.getClearColor(this._currentClearColor);let a=t.getClearAlpha(),o=t.getRenderTarget(),s=t.getMRT(),c=t.autoClear;this._cameraNear.value=r.near,this._cameraFar.value=r.far,t.setMRT(this.getMRT()),t.autoClear=!1;let l=EA[Math.max(0,Math.min(this.sampleLevel,5))],u=1/l.length,d={fullWidth:this.renderTarget.width,fullHeight:this.renderTarget.height,offsetX:0,offsetY:0,width:this.renderTarget.width,height:this.renderTarget.height},f=Object.assign({},r.view);f.enabled&&Object.assign(d,f);for(let e=0;e=0&&(e[t]=gb(this.sampleRenderTarget.textures[n]).mul(this.sampleWeight))}t=nO(e)}else t=gb(this.sampleRenderTarget.texture).mul(this.sampleWeight);return this._quadMesh.material=new tw,this._quadMesh.material.fragmentNode=t,this._quadMesh.material.transparent=!0,this._quadMesh.material.depthTest=!1,this._quadMesh.material.depthWrite=!1,this._quadMesh.material.premultipliedAlpha=!0,this._quadMesh.material.blending=2,this._quadMesh.material.normals=!1,this._quadMesh.material.name=`SSAA`,super.setup(e)}dispose(){super.dispose(),this.sampleRenderTarget!==null&&this.sampleRenderTarget.dispose()}},EA=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]],DA=(e,t)=>B(new TA(e,t)),OA=new A,kA=class extends _k{static get type(){return`StereoPassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isStereoPassNode=!0,this.stereo=new Hp,this.stereo.aspect=.5}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r,stereo:i,renderTarget:a}=this;this._pixelRatio=t.getPixelRatio(),i.cameraL.coordinateSystem=t.coordinateSystem,i.cameraR.coordinateSystem=t.coordinateSystem,i.update(r);let o=t.getSize(OA);this.setSize(o.width,o.height);let s=t.autoClear;t.autoClear=!1;let c=t.getRenderTarget(),l=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(a),t.setMRT(this._mrt),t.clear(),a.scissorTest=!0,a.scissor.set(0,0,a.width/2,a.height),a.viewport.set(0,0,a.width/2,a.height),t.render(n,i.cameraL),a.scissor.set(a.width/2,0,a.width/2,a.height),a.viewport.set(a.width/2,0,a.width/2,a.height),t.render(n,i.cameraR),a.scissorTest=!1,t.setRenderTarget(c),t.setMRT(l),t.autoClear=s}},AA=(e,t)=>B(new kA(e,t)),jA=new A,MA=new VO,NA=class extends _k{static get type(){return`StereoCompositePassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isStereoCompositePassNode=!0,this.stereo=new Hp;let n={minFilter:h,magFilter:u,type:D};this._renderTargetL=new In(1,1,n),this._renderTargetR=new In(1,1,n),this._mapLeft=gb(this._renderTargetL.texture),this._mapRight=gb(this._renderTargetR.texture),this._material=null}updateStereoCamera(e){this.stereo.cameraL.coordinateSystem=e,this.stereo.cameraR.coordinateSystem=e,this.stereo.update(this.camera)}setSize(e,t){super.setSize(e,t),this._renderTargetL.setSize(this.renderTarget.width,this.renderTarget.height),this._renderTargetR.setSize(this.renderTarget.width,this.renderTarget.height)}updateBefore(e){let{renderer:t}=e,{scene:n,stereo:r,renderTarget:i}=this;this._pixelRatio=t.getPixelRatio(),this.updateStereoCamera(t.coordinateSystem);let a=t.getSize(jA);this.setSize(a.width,a.height);let o=t.getRenderTarget();t.setRenderTarget(this._renderTargetL),t.render(n,r.cameraL),t.setRenderTarget(this._renderTargetR),t.render(n,r.cameraR),t.setRenderTarget(i),MA.material=this._material,MA.render(t),t.setRenderTarget(o)}dispose(){super.dispose(),this._renderTargetL.dispose(),this._renderTargetR.dispose(),this._material!==null&&this._material.dispose()}},PA=class extends NA{static get type(){return`AnaglyphPassNode`}constructor(e,t){super(e,t),this.isAnaglyphPassNode=!0,this._colorMatrixLeft=Z(new j().fromArray([.4561,-.0400822,-.0152161,.500484,-.0378246,-.0205971,.176381,-.0157589,-.00546856])),this._colorMatrixRight=Z(new j().fromArray([-.0434706,.378476,-.0721527,-.0879388,.73364,-.112961,-.00155529,-.0184503,1.2264]))}setup(e){let t=ub(),n=U(()=>{let e=this._mapLeft.uv(t),n=this._mapRight.uv(t);return X(sy(this._colorMatrixLeft.mul(e.rgb).add(this._colorMatrixRight.mul(n.rgb))).rgb,Gv(e.a,n.a))}),r=this._material||=new tw;return r.fragmentNode=n().context(e.getSharedContext()),r.name=`Anaglyph`,r.needsUpdate=!0,super.setup(e)}},FA=(e,t)=>B(new PA(e,t)),IA=class extends NA{static get type(){return`ParallaxBarrierPassNode`}constructor(e,t){super(e,t),this.isParallaxBarrierPassNode=!0}setup(e){let t=ub(),n=U(()=>{let e=X().toVar();return W(Kv(OC.y,2).greaterThan(1),()=>{e.assign(this._mapLeft.uv(t))}).Else(()=>{e.assign(this._mapRight.uv(t))}),e}),r=this._material||=new tw;return r.fragmentNode=n().context(e.getSharedContext()),r.needsUpdate=!0,super.setup(e)}},LA=(e,t)=>B(new IA(e,t)),RA=class extends _k{static get type(){return`ToonOutlinePassNode`}constructor(e,t,n,r,i){super(_k.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=i,this._materialCache=new WeakMap}updateBefore(e){let{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((e,n,r,i,a,o,s)=>{if((a.isMeshToonMaterial||a.isMeshToonNodeMaterial)&&a.wireframe===!1){let c=this._getOutlineMaterial(a);t.renderObject(e,n,r,i,c,o,s)}t.renderObject(e,n,r,i,a,o,s)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){let e=new tw;e.isMeshToonOutlineMaterial=!0,e.name=`Toon_Outline`,e.side=1;let t=nx.negate(),n=Sb.mul(Hb),r=G(1),i=n.mul(X(Kb,1)),a=n.mul(X(Kb.add(t),1)),o=Sv(i.sub(a));return e.vertexNode=i.add(o.mul(this.thicknessNode).mul(i.w).mul(r)),e.colorNode=X(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}},zA=(e,t,n=new P(0,0,0),r=.003,i=1)=>B(new RA(e,t,B(n),B(r),B(i))),BA=class extends R{static get type(){return`ScriptableValueNode`}constructor(e=null){super(),this._value=e,this._cache=null,this.inputType=null,this.outpuType=null,this.events=new Ft,this.isScriptableValueNode=!0}get isScriptableOutputNode(){return this.outputType!==null}set value(e){this._value!==e&&(this._cache&&this.inputType===`URL`&&this.value.value instanceof ArrayBuffer&&(URL.revokeObjectURL(this._cache),this._cache=null),this._value=e,this.events.dispatchEvent({type:`change`}),this.refresh())}get value(){return this._value}refresh(){this.events.dispatchEvent({type:`refresh`})}getValue(){let e=this.value;if(e&&this._cache===null&&this.inputType===`URL`&&e.value instanceof ArrayBuffer)this._cache=URL.createObjectURL(new Blob([e.value]));else if(e&&e.value!==null&&e.value!==void 0&&((this.inputType===`URL`||this.inputType===`String`)&&typeof e.value==`string`||this.inputType===`Number`&&typeof e.value==`number`||this.inputType===`Vector2`&&e.value.isVector2||this.inputType===`Vector3`&&e.value.isVector3||this.inputType===`Vector4`&&e.value.isVector4||this.inputType===`Color`&&e.value.isColor||this.inputType===`Matrix3`&&e.value.isMatrix3||this.inputType===`Matrix4`&&e.value.isMatrix4))return e.value;return this._cache||e}getNodeType(e){return this.value&&this.value.isNode?this.value.getNodeType(e):`float`}setup(){return this.value&&this.value.isNode?this.value:G()}serialize(e){super.serialize(e),this.value===null?e.value=null:this.inputType===`ArrayBuffer`?e.value=Dh(this.value):e.value=this.value?this.value.toJSON(e.meta).uuid:null,e.inputType=this.inputType,e.outputType=this.outputType}deserialize(e){super.deserialize(e);let t=null;e.value!==null&&(t=e.inputType===`ArrayBuffer`?Oh(e.value):e.inputType===`Texture`?e.meta.textures[e.value]:e.meta.nodes[e.value]||null),this.value=t,this.inputType=e.inputType,this.outputType=e.outputType}},VA=V(BA),HA=class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},UA=class{constructor(e){this.scriptableNode=e}get parameters(){return this.scriptableNode.parameters}get layout(){return this.scriptableNode.getLayout()}getInputLayout(e){return this.scriptableNode.getInputLayout(e)}get(e){let t=this.parameters[e];return t?t.getValue():null}},WA=new HA,GA=class extends R{static get type(){return`ScriptableNode`}constructor(e=null,t={}){super(),this.codeNode=e,this.parameters=t,this._local=new HA,this._output=VA(),this._outputs={},this._source=this.source,this._method=null,this._object=null,this._value=null,this._needsOutputUpdate=!0,this.onRefresh=this.onRefresh.bind(this),this.isScriptableNode=!0}get source(){return this.codeNode?this.codeNode.code:``}setLocal(e,t){return this._local.set(e,t)}getLocal(e){return this._local.get(e)}onRefresh(){this._refresh()}getInputLayout(e){for(let t of this.getLayout())if(t.inputType&&(t.id===e||t.name===e))return t}getOutputLayout(e){for(let t of this.getLayout())if(t.outputType&&(t.id===e||t.name===e))return t}setOutput(e,t){let n=this._outputs;return n[e]===void 0?n[e]=VA(t):n[e].value=t,this}getOutput(e){return this._outputs[e]}getParameter(e){return this.parameters[e]}setParameter(e,t){let n=this.parameters;return t&&t.isScriptableNode?(this.deleteParameter(e),n[e]=t,n[e].getDefaultOutput().events.addEventListener(`refresh`,this.onRefresh)):t&&t.isScriptableValueNode?(this.deleteParameter(e),n[e]=t,n[e].events.addEventListener(`refresh`,this.onRefresh)):n[e]===void 0?(n[e]=VA(t),n[e].events.addEventListener(`refresh`,this.onRefresh)):n[e].value=t,this}getValue(){return this.getDefaultOutput().getValue()}deleteParameter(e){let t=this.parameters[e];return t&&(t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.removeEventListener(`refresh`,this.onRefresh)),this}clearParameters(){for(let e of Object.keys(this.parameters))this.deleteParameter(e);return this.needsUpdate=!0,this}call(e,...t){let n=this.getObject()[e];if(typeof n==`function`)return n(...t)}async callAsync(e,...t){let n=this.getObject()[e];if(typeof n==`function`)return n.constructor.name===`AsyncFunction`?await n(...t):n(...t)}getNodeType(e){return this.getDefaultOutputNode().getNodeType(e)}refresh(e=null){e===null?this._refresh():this.getOutput(e).refresh()}getObject(){if(this.needsUpdate&&this.dispose(),this._object!==null)return this._object;let e=()=>this.refresh(),t=(e,t)=>this.setOutput(e,t),n=new UA(this),r=WA.get(`THREE`),i=WA.get(`TSL`);this._object=this.getMethod(this.codeNode)(n,this._local,WA,e,t,r,i);let a=this._object.layout;if(a&&(a.cache===!1&&this._local.clear(),this._output.outputType=a.outputType||null,Array.isArray(a.elements)))for(let e of a.elements){let t=e.id||e.name;e.inputType&&(this.getParameter(t)===void 0&&this.setParameter(t,null),this.getParameter(t).inputType=e.inputType),e.outputType&&(this.getOutput(t)===void 0&&this.setOutput(t,null),this.getOutput(t).outputType=e.outputType)}return this._object}deserialize(e){super.deserialize(e);for(let e in this.parameters){let t=this.parameters[e];t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.addEventListener(`refresh`,this.onRefresh)}}getLayout(){return this.getObject().layout}getDefaultOutputNode(){let e=this.getDefaultOutput().value;return e&&e.isNode?e:G()}getDefaultOutput(){return this._exec()._output}getMethod(){if(this.needsUpdate&&this.dispose(),this._method!==null)return this._method;let e=[`parameters`,`local`,`global`,`refresh`,`setOutput`,`THREE`,`TSL`],t=[`layout`,`init`,`main`,`dispose`].join(`, `),n=`var `+t+`; var output = {}; +`,r=` +return { ...output, `+t+` };`,i=n+this.codeNode.code+r;return this._method=Function(...e,i),this._method}dispose(){this._method!==null&&(this._object&&typeof this._object.dispose==`function`&&this._object.dispose(),this._method=null,this._object=null,this._source=null,this._value=null,this._needsOutputUpdate=!0,this._output.value=null,this._outputs={})}setup(){return this.getDefaultOutputNode()}getCacheKey(e){let t=[bh(this.source),this.getDefaultOutputNode().getCacheKey(e)];for(let n in this.parameters)t.push(this.parameters[n].getCacheKey(e));return xh(t)}set needsUpdate(e){e===!0&&this.dispose()}get needsUpdate(){return this.source!==this._source}_exec(){return this.codeNode===null?this:(this._needsOutputUpdate===!0&&(this._value=this.call(`main`),this._needsOutputUpdate=!1),this._output.value=this._value,this)}_refresh(){this.needsUpdate=!0,this._exec(),this._output.refresh()}},KA=V(GA),qA=class extends R{static get type(){return`FogNode`}constructor(e,t){super(`float`),this.isFogNode=!0,this.colorNode=e,this.factorNode=t}getViewZNode(e){let t,n=e.context.getViewZ;return n!==void 0&&(t=n(this)),(t||Xb.z).negate()}setup(){return this.factorNode}},JA=V(qA),YA=class extends qA{static get type(){return`FogRangeNode`}constructor(e,t,n){super(e),this.isFogRangeNode=!0,this.nearNode=t,this.farNode=n}setup(e){let t=this.getViewZNode(e);return uy(this.nearNode,this.farNode,t)}},XA=V(YA),ZA=class extends qA{static get type(){return`FogExp2Node`}constructor(e,t){super(e),this.isFogExp2Node=!0,this.densityNode=t}setup(e){let t=this.getViewZNode(e),n=this.densityNode;return n.mul(n,t,t).negate().exp().oneMinus()}},QA=V(ZA),$A=null,ej=null,tj=class extends R{static get type(){return`RangeNode`}constructor(e=G(),t=G()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){let t=e.getTypeLength(Th(this.minNode.value)),n=e.getTypeLength(Th(this.maxNode.value));return t>n?t:n}getNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):`float`}setup(e){let t=e.object,n=null;if(t.count>1){let r=this.minNode.value,i=this.maxNode.value,a=e.getTypeLength(Th(r)),o=e.getTypeLength(Th(i));$A||=new Fn,ej||=new Fn,$A.setScalar(0),ej.setScalar(0),a===1?$A.setScalar(r):r.isColor?$A.set(r.r,r.g,r.b):$A.set(r.x,r.y,r.z||0,r.w||0),o===1?ej.setScalar(i):i.isColor?ej.set(i.r,i.g,i.b):ej.set(i.x,i.y,i.z||0,i.w||0);let s=4*t.count,c=new Float32Array(s);for(let e=0;egb(e,t.xy).compare(t.z)),ij=U(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>gb(e,t).compare(n),i=Ex(`mapSize`,`vec2`,n).setGroup(Qg),a=Ex(`radius`,`float`,n).setGroup(Qg),o=J(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return L_(r(t.xy.add(J(s,c)),t.z),r(t.xy.add(J(0,c)),t.z),r(t.xy.add(J(l,c)),t.z),r(t.xy.add(J(d,f)),t.z),r(t.xy.add(J(0,f)),t.z),r(t.xy.add(J(p,f)),t.z),r(t.xy.add(J(s,0)),t.z),r(t.xy.add(J(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(J(p,0)),t.z),r(t.xy.add(J(l,0)),t.z),r(t.xy.add(J(d,m)),t.z),r(t.xy.add(J(0,m)),t.z),r(t.xy.add(J(p,m)),t.z),r(t.xy.add(J(s,u)),t.z),r(t.xy.add(J(0,u)),t.z),r(t.xy.add(J(l,u)),t.z)).mul(1/17)}),aj=U(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>gb(e,t).compare(n),i=Ex(`mapSize`,`vec2`,n).setGroup(Qg),a=J(1).div(i),o=a.x,s=a.y,c=t.xy,l=Cv(c.mul(i).add(.5));return c.subAssign(l.mul(a)),L_(r(c,t.z),r(c.add(J(o,0)),t.z),r(c.add(J(0,s)),t.z),r(c.add(a),t.z),oy(r(c.add(J(o.negate(),0)),t.z),r(c.add(J(o.mul(2),0)),t.z),l.x),oy(r(c.add(J(o.negate(),s)),t.z),r(c.add(J(o.mul(2),s)),t.z),l.x),oy(r(c.add(J(0,s.negate())),t.z),r(c.add(J(0,s.mul(2))),t.z),l.y),oy(r(c.add(J(o,s.negate())),t.z),r(c.add(J(o,s.mul(2))),t.z),l.y),oy(oy(r(c.add(J(o.negate(),s.negate())),t.z),r(c.add(J(o.mul(2),s.negate())),t.z),l.x),oy(r(c.add(J(o.negate(),s.mul(2))),t.z),r(c.add(J(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),oj=U(({depthTexture:e,shadowCoord:t})=>{let n=G(1).toVar(),r=gb(e).uv(t.xy).rg,i=qv(t.z,r.x);return W(i.notEqual(G(1)),()=>{let e=t.z.sub(r.x),a=Gv(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=sy(R_(o,.3).div(.6499999999999999)),n.assign(sy(Gv(i,o)))}),n}),sj=U(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=G(0).toVar(),a=G(0).toVar(),o=e.lessThanEqual(G(1)).select(G(0),G(2).div(e.sub(1))),s=e.lessThanEqual(G(1)).select(G(0),G(-1));return rC({start:K(0),end:K(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(G(e).mul(o)),l=r.uv(L_(OC.xy,J(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),J(i,vv(a.sub(i.mul(i))))}),cj=U(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=G(0).toVar(),a=G(0).toVar(),o=e.lessThanEqual(G(1)).select(G(0),G(2).div(e.sub(1))),s=e.lessThanEqual(G(1)).select(G(0),G(-1));return rC({start:K(0),end:K(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(G(e).mul(o)),l=r.uv(L_(OC.xy,J(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(L_(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),J(i,vv(a.sub(i.mul(i))))}),lj=[rj,ij,aj,oj],uj=null,dj=new VO,fj=class extends vC{static get type(){return`AnalyticLightNode`}constructor(e=null){super(),this.updateType=L.FRAME,this.light=e,this.color=new P,this.colorNode=Z(this.color).setGroup(Qg),this.baseColorNode=null,this.shadowMap=null,this.shadowNode=null,this.shadowColorNode=null,this.vsmShadowMapVertical=null,this.vsmShadowMapHorizontal=null,this.vsmMaterialVertical=null,this.vsmMaterialHorizontal=null,this.isAnalyticLightNode=!0}getCacheKey(){return Sh(super.getCacheKey(),this.light.id,+!!this.light.castShadow)}getHash(){return this.light.uuid}setupShadow(e){let{object:t,renderer:n}=e;if(n.shadowMap.enabled===!1)return;let r=this.shadowColorNode;if(r===null){uj===null&&(uj=new tw,uj.fragmentNode=X(0,0,0,1),uj.isShadowNodeMaterial=!0,uj.name=`ShadowMaterial`);let i=n.shadowMap.type,a=this.light.shadow,o=new ho;o.compareFunction=513;let s=e.createRenderTarget(a.mapSize.width,a.mapSize.height);if(s.depthTexture=o,a.camera.updateProjectionMatrix(),i===3){o.compareFunction=null,this.vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:pe,type:D}),this.vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:pe,type:D});let t=gb(o),n=gb(this.vsmShadowMapVertical.texture),r=Ex(`blurSamples`,`float`,a).setGroup(Qg),i=Ex(`radius`,`float`,a).setGroup(Qg),s=Ex(`mapSize`,`vec2`,a).setGroup(Qg),c=this.vsmMaterialVertical||=new tw;c.fragmentNode=sj({samples:r,radius:i,size:s,shadowPass:t}).context(e.getSharedContext()),c.name=`VSMVertical`,c=this.vsmMaterialHorizontal||=new tw,c.fragmentNode=cj({samples:r,radius:i,size:s,shadowPass:n}).context(e.getSharedContext()),c.name=`VSMHorizontal`}let c=Ex(`intensity`,`float`,a).setGroup(Qg),l=Ex(`bias`,`float`,a).setGroup(Qg),u=Ex(`normalBias`,`float`,a).setGroup(Qg),d=t.material.shadowPositionNode||Jb,f=Z(a.matrix).setGroup(Qg).mul(d.add(ax.mul(u)));f=f.xyz.div(f.w);let p=f.z.add(l);n.coordinateSystem===2001&&(p=p.mul(2).sub(1)),f=Y(f.x,f.y.oneMinus(),p);let m=f.x.greaterThanEqual(0).and(f.x.lessThanEqual(1)).and(f.y.greaterThanEqual(0)).and(f.y.lessThanEqual(1)).and(f.z.lessThanEqual(1)),h=a.filterNode||lj[n.shadowMap.type]||null;if(h===null)throw Error(`THREE.WebGPURenderer: Shadow map type not supported yet.`);let g=gb(s.texture,f),_=m.select(h({depthTexture:i===3?this.vsmShadowMapHorizontal.texture:o,shadowCoord:f,shadow:a}),G(1));this.shadowMap=s,this.light.shadow.map=s,this.shadowNode=_,this.shadowColorNode=r=this.colorNode.mul(oy(1,_.rgb.mix(g,1),c.mul(g.a))),this.baseColorNode=this.colorNode}this.colorNode=r,this.updateBeforeType=L.RENDER}setup(e){this.colorNode=this.baseColorNode||this.colorNode,this.light.castShadow?e.object.receiveShadow&&this.setupShadow(e):this.shadowNode!==null&&this.disposeShadow()}updateShadow(e){let{shadowMap:t,light:n}=this,{renderer:r,scene:i,camera:a}=e,o=r.shadowMap.type;this._depthVersionCached=t.depthTexture.version;let s=i.overrideMaterial;i.overrideMaterial=uj,t.setSize(n.shadow.mapSize.width,n.shadow.mapSize.height),n.shadow.updateMatrices(n),n.shadow.camera.layers.mask=a.layers.mask;let c=r.getRenderTarget(),l=r.getRenderObjectFunction();r.setRenderObjectFunction((e,...t)=>{(e.castShadow===!0||e.receiveShadow&&o===3)&&r.renderObject(e,...t)}),r.setRenderTarget(t),r.render(i,n.shadow.camera),r.setRenderObjectFunction(l),n.isPointLight!==!0&&o===3&&this.vsmPass(e,n),r.setRenderTarget(c),i.overrideMaterial=s}vsmPass(e,t){let{renderer:n}=e;this.vsmShadowMapVertical.setSize(t.shadow.mapSize.width,t.shadow.mapSize.height),this.vsmShadowMapHorizontal.setSize(t.shadow.mapSize.width,t.shadow.mapSize.height),n.setRenderTarget(this.vsmShadowMapVertical),dj.material=this.vsmMaterialVertical,dj.render(n),n.setRenderTarget(this.vsmShadowMapHorizontal),dj.material=this.vsmMaterialHorizontal,dj.render(n)}disposeShadow(){this.shadowMap.dispose(),this.shadowMap=null,this.vsmShadowMapVertical!==null&&(this.vsmShadowMapVertical.dispose(),this.vsmShadowMapVertical=null,this.vsmMaterialVertical.dispose(),this.vsmMaterialVertical=null),this.vsmShadowMapHorizontal!==null&&(this.vsmShadowMapHorizontal.dispose(),this.vsmShadowMapHorizontal=null,this.vsmMaterialHorizontal.dispose(),this.vsmMaterialHorizontal=null),this.shadowNode=null,this.shadowColorNode=null,this.baseColorNode=null,this.updateBeforeType=L.NONE}updateBefore(e){let t=this.light.shadow;(t.needsUpdate||t.autoUpdate)&&(this.updateShadow(e),this.shadowMap.depthTexture.version===this._depthVersionCached&&(t.needsUpdate=!1))}update(){let{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}},pj=U(e=>{let{lightDistance:t,cutoffDistance:n,decayExponent:r}=e,i=t.pow(r).max(.01).reciprocal();return n.greaterThan(0).select(i.mul(t.div(n).pow4().oneMinus().clamp().pow2()),i)}),mj;function hj(e){mj||=new WeakMap;let t=mj.get(e);return t===void 0&&mj.set(e,t={}),t}function gj(e){let t=hj(e);return t.position||=Z(new M).setGroup(Qg).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.matrixWorld))}function _j(e){let t=hj(e);return t.targetPosition||=Z(new M).setGroup(Qg).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.target.matrixWorld))}function vj(e){let t=hj(e);return t.viewPosition||=Z(new M).setGroup(Qg).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new M,n.value.setFromMatrixPosition(e.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)})}var yj=e=>wb.transformDirection(gj(e).sub(_j(e))),bj=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)}),xj=(e,t)=>$v(z_(4,e.mul(R_(1,e))),t),Sj=(e,t)=>e.lessThan(.5)?xj(e.mul(2),t).div(2):R_(1,xj(z_(R_(1,e),2),t).div(2)),Cj=(e,t,n)=>$v(B_($v(e,t),L_($v(e,t),$v(R_(1,e),n))),1/t),wj=(e,t)=>wv(sv.mul(t.mul(e).sub(1))).div(sv.mul(t.mul(e).sub(1))),Tj=U(([e])=>e.fract().sub(.5).abs()).setLayout({name:`tri`,type:`float`,inputs:[{name:`x`,type:`float`}]}),Ej=U(([e])=>Y(Tj(e.z.add(Tj(e.y.mul(1)))),Tj(e.z.add(Tj(e.x.mul(1)))),Tj(e.y.add(Tj(e.x.mul(1)))))).setLayout({name:`tri3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),Dj=U(([e,t,n])=>{let r=Y(e).toVar(),i=G(1.4).toVar(),a=G(0).toVar(),o=Y(r).toVar();return rC({start:G(0),end:G(3),type:`float`,condition:`<=`},()=>{let e=Y(Ej(o.mul(2))).toVar();r.addAssign(e.add(n.mul(G(.1).mul(t)))),o.mulAssign(1.8),i.mulAssign(1.5),r.mulAssign(1.2);let s=G(Tj(r.z.add(Tj(r.x.add(Tj(r.y)))))).toVar();a.addAssign(s.div(i)),o.addAssign(.14)}),a}).setLayout({name:`triNoise3D`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`spd`,type:`float`},{name:`time`,type:`float`}]}),Oj=U(([e,t,n=J(.5)])=>wE(e.sub(n),t).add(n)),kj=U(([e,t,n=J(.5)])=>{let r=e.sub(n),i=r.dot(r),a=i.mul(i).mul(t);return e.add(r.mul(a))}),Aj=U(({position:e=null,horizontal:t=!0,vertical:n=!1})=>{let r;e===null?r=Ib:(r=Ib.toVar(),r[3][0]=e.x,r[3][1]=e.y,r[3][2]=e.z);let i=wb.mul(r);return bg(t)&&(i[0][0]=Ib[0].length(),i[0][1]=0,i[0][2]=0),bg(n)&&(i[1][0]=0,i[1][1]=Ib[1].length(),i[1][2]=0),i[2][0]=0,i[2][1]=0,i[2][2]=1,Sb.mul(i).mul(Kb)}),jj=U(([e=null])=>{let t=XC();return XC(HC(e)).sub(t).lessThan(0).select(EC,e)}),Mj=new WeakMap,Nj=class extends zh{static get type(){return`VelocityNode`}constructor(){super(`vec2`),this.updateType=L.OBJECT,this.updateAfterType=L.OBJECT,this.previousModelWorldMatrix=Z(new N),this.previousProjectionMatrix=Z(new N).setGroup(Qg),this.previousCameraViewMatrix=Z(new N)}update({frameId:e,camera:t,object:n}){let r=Fj(n);this.previousModelWorldMatrix.value.copy(r);let i=Pj(t);i.frameId!==e&&(i.frameId=e,i.previousProjectionMatrix===void 0?(i.previousProjectionMatrix=new N,i.previousCameraViewMatrix=new N,i.currentProjectionMatrix=new N,i.currentCameraViewMatrix=new N,i.previousProjectionMatrix.copy(t.projectionMatrix),i.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(i.previousProjectionMatrix.copy(i.currentProjectionMatrix),i.previousCameraViewMatrix.copy(i.currentCameraViewMatrix)),i.currentProjectionMatrix.copy(t.projectionMatrix),i.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(i.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(i.previousCameraViewMatrix))}updateAfter({object:e}){Fj(e).copy(e.matrixWorld)}setup(){let e=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),t=Sb.mul(Hb).mul(Kb),n=this.previousProjectionMatrix.mul(e).mul(qb);return R_(t.xy.div(t.w),n.xy.div(n.w))}};function Pj(e){let t=Mj.get(e);return t===void 0&&(t={},Mj.set(e,t)),t}function Fj(e,t=0){let n=Pj(e),r=n[t];return r===void 0&&(n[t]=r=new N),r}var Ij=H(Nj),Lj=U(([e,t])=>Wv(1,e.oneMinus().div(t)).oneMinus()).setLayout({name:`burnBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Rj=U(([e,t])=>Wv(e.div(t.oneMinus()),1)).setLayout({name:`dodgeBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),zj=U(([e,t])=>e.oneMinus().mul(t.oneMinus()).oneMinus()).setLayout({name:`screenBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Bj=U(([e,t])=>oy(e.mul(2).mul(t),e.oneMinus().mul(2).mul(t.oneMinus()).oneMinus(),qv(.5,e))).setLayout({name:`overlayBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Vj=U(([e,t,n=K(16)])=>{let r=t=>e.uv(t),i=ub(),a=r(i).toVar(),o=G(n);return rC({start:K(1),end:n,type:`int`,condition:`<=`},({i:e})=>{let n=t.mul(G(e).div(o.sub(1)).sub(.5));a.addAssign(r(i.add(n)))}),a.divAssign(o),a}),Hj=U(([e,t=1])=>{let n=e,r=Pk(n.rgb),i=Y(r),a=Wv(1,Gv(0,G(10).mul(r.sub(.45)))),o=oy(i.mul(n.rgb).mul(2),G(2).mul(i.oneMinus()).mul(n.rgb.oneMinus()).oneMinus(),a),s=n.a.mul(t),c=s.mul(o.rgb);return c.addAssign(n.rgb.mul(s.oneMinus())),X(c,n.a)}),Uj=U(([e])=>{let t=Y(e);return X(Zv(t,Y(.393,.769,.189)),Zv(t,Y(.349,.686,.168)),Zv(t,Y(.272,.534,.131)),e.a)}),Wj=U(([e])=>oy(e.mul(.9478672986).add(.0521327014).pow(2.4),e.mul(.0773993808),e.lessThanEqual(.04045))).setLayout({name:`sRGBToLinearSRGB`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Gj=U(([e])=>oy(e.pow(.41666).mul(1.055).sub(.055),e.mul(12.92),e.lessThanEqual(.0031308))).setLayout({name:`linearSRGBTosRGB`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Kj=U(([e,t])=>e.mul(t).clamp()).setLayout({name:`linearToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),qj=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`}]}),Jj=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`}]}),Yj=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)}),Xj=U(([e,t])=>{let n=Vg(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),r=Vg(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return e=e.mul(t).div(.6),e=n.mul(e),e=Yj(e),e=r.mul(e),e.clamp()}).setLayout({name:`acesFilmicToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Zj=Vg(Y(1.6605,-.1246,-.0182),Y(-.5876,1.1329,-.1006),Y(-.0728,-.0083,1.1187)),Qj=Vg(Y(.6274,.0691,.0164),Y(.3293,.9195,.088),Y(.0433,.0113,.8956)),$j=U(([e])=>{let t=Y(e).toVar(),n=Y(t.mul(t)).toVar(),r=Y(n.mul(n)).toVar();return G(15.5).mul(r.mul(n)).sub(z_(40.14,r.mul(t))).add(z_(31.96,r).sub(z_(6.868,n.mul(t))).add(z_(.4298,n).add(z_(.1191,t).sub(.00232))))}),eM=U(([e,t])=>{let n=Y(e).toVar(),r=Vg(Y(.856627153315983,.137318972929847,.11189821299995),Y(.0951212405381588,.761241990602591,.0767994186031903),Y(.0482516061458583,.101439036467562,.811302368396859)),i=Vg(Y(1.1271005818144368,-.1413297634984383,-.14132976349843826),Y(-.11060664309660323,1.157823702216272,-.11060664309660294),Y(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=G(-12.47393),o=G(4.026069);return n.mulAssign(t),n.assign(Qj.mul(n)),n.assign(r.mul(n)),n.assign(Gv(n,1e-10)),n.assign(_v(n)),n.assign(n.sub(a).div(o.sub(a))),n.assign(sy(n,0,1)),n.assign($j(n)),n.assign(i.mul(n)),n.assign($v(Gv(Y(0),n),Y(2.2))),n.assign(Zj.mul(n)),n.assign(sy(n,0,1)),n}).setLayout({name:`agxToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),tM=U(([e,t])=>{let n=G(.76),r=G(.15);e=e.mul(t);let i=Wv(e.r,Wv(e.g,e.b)),a=hy(i.lessThan(.08),i.sub(z_(6.25,i.mul(i))),.04);e.subAssign(a);let o=Gv(e.r,Gv(e.g,e.b));W(o.lessThan(n),()=>e);let s=R_(1,n),c=R_(1,s.mul(s).div(o.add(s.sub(n))));e.mulAssign(c.div(o));let l=R_(1,B_(1,r.mul(o.sub(c)).add(1)));return oy(e,Y(c),l)}).setLayout({name:`neutralToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),nM=class extends R{static get type(){return`ComputeBuiltinNode`}constructor(e,t){super(t),this._builtinName=e}getHash(e){return this.getBuiltinName(e)}getNodeType(){return this.nodeType}setBuiltinName(e){return this._builtinName=e,this}getBuiltinName(){return this._builtinName}hasBuiltin(e){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):(console.warn(`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}},rM=(e,t)=>B(new nM(e,t)),iM=rM(`numWorkgroups`,`uvec3`),aM=rM(`workgroupId`,`uvec3`),oM=rM(`localId`,`uvec3`),sM=rM(`subgroupSize`,`uint`),cM=V(class extends R{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}}),lM=()=>cM(`workgroup`).append(),uM=()=>cM(`storage`).append(),dM=()=>cM(`texture`).append(),fM=class extends Lh{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}},pM=class extends R{constructor(e,t,n=0){super(t),this.bufferType=t,this.bufferCount=n,this.isWorkgroupInfoNode=!0,this.scope=e}label(e){return this.name=e,this}getHash(){return this.uuid}setScope(e){return this.scope=e,this}getInputType(){return`${this.scope}Array`}element(e){return B(new fM(this,e))}generate(e){return e.getScopedArray(this.name||`${this.scope}Array_${this.id}`,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}},mM=(e,t)=>B(new pM(`Workgroup`,e,t)),hM=class extends zh{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};hM.ATOMIC_LOAD=`atomicLoad`,hM.ATOMIC_STORE=`atomicStore`,hM.ATOMIC_ADD=`atomicAdd`,hM.ATOMIC_SUB=`atomicSub`,hM.ATOMIC_MAX=`atomicMax`,hM.ATOMIC_MIN=`atomicMin`,hM.ATOMIC_AND=`atomicAnd`,hM.ATOMIC_OR=`atomicOr`,hM.ATOMIC_XOR=`atomicXor`;var gM=V(hM),_M=(e,t,n,r)=>{let i=gM(e,t,n,r);return i.append(),i},vM=(e,t,n=null)=>_M(hM.ATOMIC_STORE,e,t,n),yM=(e,t,n=null)=>_M(hM.ATOMIC_ADD,e,t,n),bM=(e,t,n=null)=>_M(hM.ATOMIC_SUB,e,t,n),xM=(e,t,n=null)=>_M(hM.ATOMIC_MAX,e,t,n),SM=(e,t,n=null)=>_M(hM.ATOMIC_MIN,e,t,n),CM=(e,t,n=null)=>_M(hM.ATOMIC_AND,e,t,n),wM=(e,t,n=null)=>_M(hM.ATOMIC_OR,e,t,n),TM=(e,t,n=null)=>_M(hM.ATOMIC_XOR,e,t,n),EM=U(([e=ub()])=>{let t=e.mul(2),n=t.x.floor(),r=t.y.floor();return n.add(r).mod(2).sign()}),DM=U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar();return hy(Ag(e).toVar(),i,r)}).setLayout({name:`mx_select`,type:`float`,inputs:[{name:`b`,type:`bool`},{name:`t`,type:`float`},{name:`f`,type:`float`}]}),OM=U(([e,t])=>{let n=Ag(t).toVar(),r=G(e).toVar();return hy(n,r.negate(),r)}).setLayout({name:`mx_negate_if`,type:`float`,inputs:[{name:`val`,type:`float`},{name:`b`,type:`bool`}]}),kM=U(([e])=>K(bv(G(e).toVar()))).setLayout({name:`mx_floor`,type:`int`,inputs:[{name:`x`,type:`float`}]}),AM=U(([e,t])=>{let n=G(e).toVar();return t.assign(kM(n)),n.sub(G(t))}),jM=aO([U(([e,t,n,r,i,a])=>{let o=G(a).toVar(),s=G(i).toVar(),c=G(r).toVar(),l=G(n).toVar(),u=G(t).toVar(),d=G(e).toVar(),f=G(R_(1,s)).toVar();return R_(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=G(a).toVar(),s=G(i).toVar(),c=Y(r).toVar(),l=Y(n).toVar(),u=Y(t).toVar(),d=Y(e).toVar(),f=G(R_(1,s)).toVar();return R_(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`}]})]),MM=aO([U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(u).toVar(),f=G(l).toVar(),p=G(c).toVar(),m=G(s).toVar(),h=G(o).toVar(),g=G(a).toVar(),_=G(i).toVar(),v=G(r).toVar(),y=G(n).toVar(),b=G(t).toVar(),x=G(e).toVar(),S=G(R_(1,p)).toVar(),C=G(R_(1,f)).toVar();return G(R_(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=G(u).toVar(),f=G(l).toVar(),p=G(c).toVar(),m=Y(s).toVar(),h=Y(o).toVar(),g=Y(a).toVar(),_=Y(i).toVar(),v=Y(r).toVar(),y=Y(n).toVar(),b=Y(t).toVar(),x=Y(e).toVar(),S=G(R_(1,p)).toVar(),C=G(R_(1,f)).toVar();return G(R_(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`}]})]),NM=aO([U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=q(q(e).toVar().bitAnd(q(7))).toVar(),o=G(DM(a.lessThan(q(4)),i,r)).toVar(),s=G(z_(2,DM(a.lessThan(q(4)),r,i))).toVar();return OM(o,Ag(a.bitAnd(q(1)))).add(OM(s,Ag(a.bitAnd(q(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=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=q(q(e).toVar().bitAnd(q(15))).toVar(),c=G(DM(s.lessThan(q(8)),o,a)).toVar(),l=G(DM(s.lessThan(q(4)),a,DM(s.equal(q(12)).or(s.equal(q(14))),o,i))).toVar();return OM(c,Ag(s.bitAnd(q(1)))).add(OM(l,Ag(s.bitAnd(q(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`}]})]),PM=aO([U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=Fg(e).toVar();return Y(NM(a.x,i,r),NM(a.y,i,r),NM(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=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=Fg(e).toVar();return Y(NM(s.x,o,a,i),NM(s.y,o,a,i),NM(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`}]})]),FM=U(([e])=>z_(.6616,G(e).toVar())).setLayout({name:`mx_gradient_scale2d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),IM=U(([e])=>z_(.982,G(e).toVar())).setLayout({name:`mx_gradient_scale3d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),LM=aO([FM,U(([e])=>z_(.6616,Y(e).toVar())).setLayout({name:`mx_gradient_scale2d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),RM=aO([IM,U(([e])=>z_(.982,Y(e).toVar())).setLayout({name:`mx_gradient_scale3d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),zM=U(([e,t])=>{let n=K(t).toVar(),r=q(e).toVar();return r.shiftLeft(n).bitOr(r.shiftRight(K(32).sub(n)))}).setLayout({name:`mx_rotl32`,type:`uint`,inputs:[{name:`x`,type:`uint`},{name:`k`,type:`int`}]}),BM=U(([e,t,n])=>{e.subAssign(n),e.bitXorAssign(zM(n,K(4))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(zM(e,K(6))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(zM(t,K(8))),t.addAssign(e),e.subAssign(n),e.bitXorAssign(zM(n,K(16))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(zM(e,K(19))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(zM(t,K(4))),t.addAssign(e)}),VM=U(([e,t,n])=>{let r=q(n).toVar(),i=q(t).toVar(),a=q(e).toVar();return r.bitXorAssign(i),r.subAssign(zM(i,K(14))),a.bitXorAssign(r),a.subAssign(zM(r,K(11))),i.bitXorAssign(a),i.subAssign(zM(a,K(25))),r.bitXorAssign(i),r.subAssign(zM(i,K(16))),a.bitXorAssign(r),a.subAssign(zM(r,K(4))),i.bitXorAssign(a),i.subAssign(zM(a,K(14))),r.bitXorAssign(i),r.subAssign(zM(i,K(24))),r}).setLayout({name:`mx_bjfinal`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),HM=U(([e])=>G(q(e).toVar()).div(G(q(K(4294967295))))).setLayout({name:`mx_bits_to_01`,type:`float`,inputs:[{name:`bits`,type:`uint`}]}),UM=U(([e])=>{let t=G(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`}]}),WM=aO([U(([e])=>{let t=K(e).toVar(),n=q(q(1)).toVar(),r=q(q(K(3735928559)).add(n.shiftLeft(q(2))).add(q(13))).toVar();return VM(r.add(q(t)),r,r)}).setLayout({name:`mx_hash_int_0`,type:`uint`,inputs:[{name:`x`,type:`int`}]}),U(([e,t])=>{let n=K(t).toVar(),r=K(e).toVar(),i=q(q(2)).toVar(),a=q().toVar(),o=q().toVar(),s=q().toVar();return a.assign(o.assign(s.assign(q(K(3735928559)).add(i.shiftLeft(q(2))).add(q(13))))),a.addAssign(q(r)),o.addAssign(q(n)),VM(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=K(n).toVar(),i=K(t).toVar(),a=K(e).toVar(),o=q(q(3)).toVar(),s=q().toVar(),c=q().toVar(),l=q().toVar();return s.assign(c.assign(l.assign(q(K(3735928559)).add(o.shiftLeft(q(2))).add(q(13))))),s.addAssign(q(a)),c.addAssign(q(i)),l.addAssign(q(r)),VM(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=K(r).toVar(),a=K(n).toVar(),o=K(t).toVar(),s=K(e).toVar(),c=q(q(4)).toVar(),l=q().toVar(),u=q().toVar(),d=q().toVar();return l.assign(u.assign(d.assign(q(K(3735928559)).add(c.shiftLeft(q(2))).add(q(13))))),l.addAssign(q(s)),u.addAssign(q(o)),d.addAssign(q(a)),BM(l,u,d),l.addAssign(q(i)),VM(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=K(i).toVar(),o=K(r).toVar(),s=K(n).toVar(),c=K(t).toVar(),l=K(e).toVar(),u=q(q(5)).toVar(),d=q().toVar(),f=q().toVar(),p=q().toVar();return d.assign(f.assign(p.assign(q(K(3735928559)).add(u.shiftLeft(q(2))).add(q(13))))),d.addAssign(q(l)),f.addAssign(q(c)),p.addAssign(q(s)),BM(d,f,p),d.addAssign(q(o)),f.addAssign(q(a)),VM(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`}]})]),GM=aO([U(([e,t])=>{let n=K(t).toVar(),r=q(WM(K(e).toVar(),n)).toVar(),i=Fg().toVar();return i.x.assign(r.bitAnd(K(255))),i.y.assign(r.shiftRight(K(8)).bitAnd(K(255))),i.z.assign(r.shiftRight(K(16)).bitAnd(K(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=K(n).toVar(),i=K(t).toVar(),a=q(WM(K(e).toVar(),i,r)).toVar(),o=Fg().toVar();return o.x.assign(a.bitAnd(K(255))),o.y.assign(a.shiftRight(K(8)).bitAnd(K(255))),o.z.assign(a.shiftRight(K(16)).bitAnd(K(255))),o}).setLayout({name:`mx_hash_vec3_1`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]})]),KM=aO([U(([e])=>{let t=J(e).toVar(),n=K().toVar(),r=K().toVar(),i=G(AM(t.x,n)).toVar(),a=G(AM(t.y,r)).toVar(),o=G(UM(i)).toVar(),s=G(UM(a)).toVar();return LM(G(jM(NM(WM(n,r),i,a),NM(WM(n.add(K(1)),r),i.sub(1),a),NM(WM(n,r.add(K(1))),i,a.sub(1)),NM(WM(n.add(K(1)),r.add(K(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=Y(e).toVar(),n=K().toVar(),r=K().toVar(),i=K().toVar(),a=G(AM(t.x,n)).toVar(),o=G(AM(t.y,r)).toVar(),s=G(AM(t.z,i)).toVar(),c=G(UM(a)).toVar(),l=G(UM(o)).toVar(),u=G(UM(s)).toVar();return RM(G(MM(NM(WM(n,r,i),a,o,s),NM(WM(n.add(K(1)),r,i),a.sub(1),o,s),NM(WM(n,r.add(K(1)),i),a,o.sub(1),s),NM(WM(n.add(K(1)),r.add(K(1)),i),a.sub(1),o.sub(1),s),NM(WM(n,r,i.add(K(1))),a,o,s.sub(1)),NM(WM(n.add(K(1)),r,i.add(K(1))),a.sub(1),o,s.sub(1)),NM(WM(n,r.add(K(1)),i.add(K(1))),a,o.sub(1),s.sub(1)),NM(WM(n.add(K(1)),r.add(K(1)),i.add(K(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`}]})]),qM=aO([U(([e])=>{let t=J(e).toVar(),n=K().toVar(),r=K().toVar(),i=G(AM(t.x,n)).toVar(),a=G(AM(t.y,r)).toVar(),o=G(UM(i)).toVar(),s=G(UM(a)).toVar();return LM(Y(jM(PM(GM(n,r),i,a),PM(GM(n.add(K(1)),r),i.sub(1),a),PM(GM(n,r.add(K(1))),i,a.sub(1)),PM(GM(n.add(K(1)),r.add(K(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=Y(e).toVar(),n=K().toVar(),r=K().toVar(),i=K().toVar(),a=G(AM(t.x,n)).toVar(),o=G(AM(t.y,r)).toVar(),s=G(AM(t.z,i)).toVar(),c=G(UM(a)).toVar(),l=G(UM(o)).toVar(),u=G(UM(s)).toVar();return RM(Y(MM(PM(GM(n,r,i),a,o,s),PM(GM(n.add(K(1)),r,i),a.sub(1),o,s),PM(GM(n,r.add(K(1)),i),a,o.sub(1),s),PM(GM(n.add(K(1)),r.add(K(1)),i),a.sub(1),o.sub(1),s),PM(GM(n,r,i.add(K(1))),a,o,s.sub(1)),PM(GM(n.add(K(1)),r,i.add(K(1))),a.sub(1),o,s.sub(1)),PM(GM(n,r.add(K(1)),i.add(K(1))),a,o.sub(1),s.sub(1)),PM(GM(n.add(K(1)),r.add(K(1)),i.add(K(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`}]})]),JM=aO([U(([e])=>HM(WM(K(kM(G(e).toVar())).toVar()))).setLayout({name:`mx_cell_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=J(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar()))}).setLayout({name:`mx_cell_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=Y(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar(),K(kM(t.z)).toVar()))}).setLayout({name:`mx_cell_noise_float_2`,type:`float`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=X(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar(),K(kM(t.z)).toVar(),K(kM(t.w)).toVar()))}).setLayout({name:`mx_cell_noise_float_3`,type:`float`,inputs:[{name:`p`,type:`vec4`}]})]),YM=aO([U(([e])=>{let t=K(kM(G(e).toVar())).toVar();return Y(HM(WM(t,K(0))),HM(WM(t,K(1))),HM(WM(t,K(2))))}).setLayout({name:`mx_cell_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=J(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar();return Y(HM(WM(n,r,K(0))),HM(WM(n,r,K(1))),HM(WM(n,r,K(2))))}).setLayout({name:`mx_cell_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=Y(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar(),i=K(kM(t.z)).toVar();return Y(HM(WM(n,r,i,K(0))),HM(WM(n,r,i,K(1))),HM(WM(n,r,i,K(2))))}).setLayout({name:`mx_cell_noise_vec3_2`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=X(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar(),i=K(kM(t.z)).toVar(),a=K(kM(t.w)).toVar();return Y(HM(WM(n,r,i,a,K(0))),HM(WM(n,r,i,a,K(1))),HM(WM(n,r,i,a,K(2))))}).setLayout({name:`mx_cell_noise_vec3_3`,type:`vec3`,inputs:[{name:`p`,type:`vec4`}]})]),XM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar(),c=G(0).toVar(),l=G(1).toVar();return rC(o,()=>{c.addAssign(l.mul(KM(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`}]}),ZM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar(),c=Y(0).toVar(),l=G(1).toVar();return rC(o,()=>{c.addAssign(l.mul(qM(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`}]}),QM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar();return J(XM(s,o,a,i),XM(s.add(Y(K(19),K(193),K(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`}]}),$M=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar();return X(Y(ZM(s,o,a,i)).toVar(),G(XM(s.add(Y(K(19),K(193),K(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`}]}),eN=aO([U(([e,t,n,r,i,a,o])=>{let s=K(o).toVar(),c=G(a).toVar(),l=K(i).toVar(),u=K(r).toVar(),d=K(n).toVar(),f=K(t).toVar(),p=J(e).toVar(),m=Y(YM(J(f.add(u),d.add(l)))).toVar(),h=J(m.x,m.y).toVar();h.subAssign(.5),h.mulAssign(c),h.addAssign(.5);let g=J(J(J(G(f),G(d)).add(h)).toVar().sub(p)).toVar();return W(s.equal(K(2)),()=>Av(g.x).add(Av(g.y))),W(s.equal(K(3)),()=>Gv(Av(g.x),Av(g.y))),Zv(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=K(c).toVar(),u=G(s).toVar(),d=K(o).toVar(),f=K(a).toVar(),p=K(i).toVar(),m=K(r).toVar(),h=K(n).toVar(),g=K(t).toVar(),_=Y(e).toVar(),v=Y(YM(Y(g.add(p),h.add(f),m.add(d)))).toVar();v.subAssign(.5),v.mulAssign(u),v.addAssign(.5);let y=Y(Y(Y(G(g),G(h),G(m)).add(v)).toVar().sub(_)).toVar();return W(l.equal(K(2)),()=>Av(y.x).add(Av(y.y)).add(Av(y.z))),W(l.equal(K(3)),()=>Gv(Gv(Av(y.x),Av(y.y)),Av(y.z))),Zv(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`}]})]),tN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=G(1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();l.assign(Wv(l,n))})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),nN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=J(1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();W(n.lessThan(l.x),()=>{l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.y.assign(n)})})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_vec2_0`,type:`vec2`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),rN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=Y(1e6,1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();W(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)})})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),iN=aO([tN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=G(1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();u.assign(Wv(u,a))})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),aN=aO([nN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=J(1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();W(a.lessThan(u.x),()=>{u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.y.assign(a)})})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_vec2_1`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),oN=aO([rN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=Y(1e6,1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();W(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)})})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),sN=U(([e])=>{let t=e.y,n=e.z,r=Y().toVar();return W(t.lessThan(1e-4),()=>{r.assign(Y(n,n,n))}).Else(()=>{let i=e.x;i=i.sub(bv(i)).mul(6).toVar();let a=K(zv(i)),o=i.sub(G(a)),s=n.mul(t.oneMinus()),c=n.mul(t.mul(o).oneMinus()),l=n.mul(t.mul(o.oneMinus()).oneMinus());W(a.equal(K(0)),()=>{r.assign(Y(n,l,s))}).ElseIf(a.equal(K(1)),()=>{r.assign(Y(c,n,s))}).ElseIf(a.equal(K(2)),()=>{r.assign(Y(s,n,l))}).ElseIf(a.equal(K(3)),()=>{r.assign(Y(s,c,n))}).ElseIf(a.equal(K(4)),()=>{r.assign(Y(l,s,n))}).Else(()=>{r.assign(Y(n,s,c))})}),r}).setLayout({name:`mx_hsvtorgb`,type:`vec3`,inputs:[{name:`hsv`,type:`vec3`}]}),cN=U(([e])=>{let t=Y(e).toVar(),n=G(t.x).toVar(),r=G(t.y).toVar(),i=G(t.z).toVar(),a=G(Wv(n,Wv(r,i))).toVar(),o=G(Gv(n,Gv(r,i))).toVar(),s=G(o.sub(a)).toVar(),c=G().toVar(),l=G().toVar(),u=G().toVar();return u.assign(o),W(o.greaterThan(0),()=>{l.assign(s.div(o))}).Else(()=>{l.assign(0)}),W(l.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{W(n.greaterThanEqual(o),()=>{c.assign(r.sub(i).div(s))}).ElseIf(r.greaterThanEqual(o),()=>{c.assign(L_(2,i.sub(n).div(s)))}).Else(()=>{c.assign(L_(4,n.sub(r).div(s)))}),c.mulAssign(1/6),W(c.lessThan(0),()=>{c.addAssign(1)})}),Y(c,l,u)}).setLayout({name:`mx_rgbtohsv`,type:`vec3`,inputs:[{name:`c`,type:`vec3`}]}),lN=U(([e])=>{let t=Y(e).toVar(),n=Ig(G_(t,Y(.04045))).toVar();return oy(Y(t.div(12.92)).toVar(),Y($v(Gv(t.add(Y(.055)),Y(0)).div(1.055),Y(2.4))).toVar(),n)}).setLayout({name:`mx_srgb_texture_to_lin_rec709`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),uN=(e,t)=>{e=G(e),t=G(t);let n=J(t.dFdx(),t.dFdy()).length().mul(.7071067811865476);return uy(e.sub(n),e.add(n),t)},dN=(e,t,n,r)=>oy(e,t,n[r].clamp()),fN=(e,t,n=ub())=>dN(e,t,n,`x`),pN=(e,t,n=ub())=>dN(e,t,n,`y`),mN=(e,t,n,r,i)=>oy(e,t,uN(n,r[i])),hN=(e,t,n,r=ub())=>mN(e,t,n,r,`x`),gN=(e,t,n,r=ub())=>mN(e,t,n,r,`y`),_N=(e=1,t=0,n=ub())=>n.mul(e).add(t),vN=(e,t=1)=>(e=G(e),e.abs().pow(t).mul(e.sign())),yN=(e,t=1,n=.5)=>G(e).sub(n).mul(t).add(n),bN=(e=ub(),t=1,n=0)=>KM(e.convert(`vec2|vec3`)).mul(t).add(n),xN=(e=ub(),t=1,n=0)=>qM(e.convert(`vec2|vec3`)).mul(t).add(n),SN=(e=ub(),t=1,n=0)=>(e=e.convert(`vec2|vec3`),X(qM(e),KM(e.add(J(19,73)))).mul(t).add(n)),CN=(e=ub(),t=1)=>iN(e.convert(`vec2|vec3`),t,K(1)),wN=(e=ub(),t=1)=>aN(e.convert(`vec2|vec3`),t,K(1)),TN=(e=ub(),t=1)=>oN(e.convert(`vec2|vec3`),t,K(1)),EN=(e=ub())=>JM(e.convert(`vec2|vec3`)),DN=(e=ub(),t=3,n=2,r=.5,i=1)=>XM(e,K(t),n,r).mul(i),ON=(e=ub(),t=3,n=2,r=.5,i=1)=>QM(e,K(t),n,r).mul(i),kN=(e=ub(),t=3,n=2,r=.5,i=1)=>ZM(e,K(t),n,r).mul(i),AN=(e=ub(),t=3,n=2,r=.5,i=1)=>$M(e,K(t),n,r).mul(i),jN=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(z_(n,n).sub(z_(r,r)))),a}),MN=class extends fj{static get type(){return`PointLightNode`}constructor(e=null){super(e),this.cutoffDistanceNode=Z(0).setGroup(Qg),this.decayExponentNode=Z(0).setGroup(Qg)}update(e){let{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setup(e){let{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:i}=this,a=e.context.lightingModel,o=vj(i).sub(Xb),s=o.normalize(),c=pj({lightDistance:o.length(),cutoffDistance:n,decayExponent:r}),l=t.mul(c),u=e.context.reflectedLight;a.direct({lightDirection:s,lightColor:l,reflectedLight:u},e.stack,e)}},NN=class extends fj{static get type(){return`DirectionalLightNode`}constructor(e=null){super(e)}setup(e){super.setup(e);let t=e.context.lightingModel,n=this.colorNode,r=yj(this.light),i=e.context.reflectedLight;t.direct({lightDirection:r,lightColor:n,reflectedLight:i},e.stack,e)}},PN=new N,FN=new N,IN=null,LN=class extends fj{static get type(){return`RectAreaLightNode`}constructor(e=null){super(e),this.halfHeight=Z(new M).setGroup(Qg),this.halfWidth=Z(new M).setGroup(Qg)}update(e){super.update(e);let{light:t}=this,n=e.camera.matrixWorldInverse;FN.identity(),PN.copy(t.matrixWorld),PN.premultiply(n),FN.extractRotation(PN),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(FN),this.halfHeight.value.applyMatrix4(FN)}setup(e){super.setup(e);let t,n;e.isAvailable(`float32Filterable`)?(t=gb(IN.LTC_FLOAT_1),n=gb(IN.LTC_FLOAT_2)):(t=gb(IN.LTC_HALF_1),n=gb(IN.LTC_HALF_2));let{colorNode:r,light:i}=this,a=e.context.lightingModel,o=vj(i),s=e.context.reflectedLight;a.directRectArea({lightColor:r,lightPosition:o,halfWidth:this.halfWidth,halfHeight:this.halfHeight,reflectedLight:s,ltc_1:t,ltc_2:n},e.stack,e)}static setLTC(e){IN=e}},RN=class extends fj{static get type(){return`SpotLightNode`}constructor(e=null){super(e),this.coneCosNode=Z(0).setGroup(Qg),this.penumbraCosNode=Z(0).setGroup(Qg),this.cutoffDistanceNode=Z(0).setGroup(Qg),this.decayExponentNode=Z(0).setGroup(Qg)}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){let{coneCosNode:t,penumbraCosNode:n}=this;return uy(t,n,e)}setup(e){super.setup(e);let t=e.context.lightingModel,{colorNode:n,cutoffDistanceNode:r,decayExponentNode:i,light:a}=this,o=vj(a).sub(Xb),s=o.normalize(),c=s.dot(yj(a)),l=this.getSpotAttenuation(c),u=pj({lightDistance:o.length(),cutoffDistance:r,decayExponent:i}),d=n.mul(l).mul(u),f=e.context.reflectedLight;t.direct({lightDirection:s,lightColor:d,reflectedLight:f},e.stack,e)}},zN=class extends RN{static get type(){return`IESSpotLightNode`}getSpotAttenuation(e){let t=this.light.iesMap,n=null;return n=t&&t.isTexture===!0?gb(t,J(e.acos().mul(1/Math.PI),0),0).r:super.getSpotAttenuation(e),n}},BN=class extends fj{static get type(){return`AmbientLightNode`}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}},VN=class extends fj{static get type(){return`HemisphereLightNode`}constructor(e=null){super(e),this.lightPositionNode=gj(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=Z(new P).setGroup(Qg)}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=oy(n,t,ix.dot(r).mul(.5).add(.5));e.context.irradiance.addAssign(i)}},HN=class extends fj{static get type(){return`LightProbeNode`}constructor(e=null){super(e);let t=[];for(let e=0;e<9;e++)t.push(new M);this.lightProbe=Sx(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=jN(ax,this.lightProbe);e.context.irradiance.addAssign(t)}},UN=class{parseFunction(){console.warn(`Abstract function.`)}},WN=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};WN.isNodeFunction=!0;var GN=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,KN=/[a-z_0-9]+/gi,qN=`#pragma main`,JN=e=>{e=e.trim();let t=e.indexOf(qN),n=t===-1?e:e.slice(t+12),r=n.match(GN);if(r!==null&&r.length===5){let i=r[4],a=[],o=null;for(;(o=KN.exec(i))!==null;)a.push(o);let s=[],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Š)D>e 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Ξ;|X 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⁣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%0ANkTh(kBs&P&7Xi-0sLSP(MOJW0ghTm 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͂ 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 Nh!r4o{c- zVtCnbxZRasbC(xhFZfH)n(Hsc5R74IiPU+%NG)6Ul&yQWxbAz;xS96_+krbiGO6Y>iC7MsvwfQ}P&`Ja@*lrnGS-6zJ+VVcwMOEiQ5lQ{A zqnQm(^-LSG5J|&tVT_JU8M}_OR3{Q5j@%qF4b_|&qc`eUN;X=1pjX2|0W39EbLdaM zQIsZv>Wa4DHdm1~-Pn=czzU#mDb_U9r%+o9_50yLX&Myg7}RydENdMpE1{-B9WGCj z+RW$|d-v=O<}ypNCu|?(_6&60cojyzvd&?mMFr|PrF4hFou@ue3dFs^&KI2!1phDQ zhJb$NK7N9c;vW8%5BbjnZc${BF z`jEZpQ+Ro(wEja5X;VF|^Du(6-+Ef`@C(xJd_un?+#ewC6&xy`xLJZhNaZ`}=fJz? z!Y)k%C3Lp>P7XG3*EyUEsF^pT{ZK|P)+R)8rC+`Tt#Qw=-T(#47D&su1PzsCP|THO zQ9t%MqeG}ZJHG}l%W-1do`lB8=->;PONqee0oroqMAt`^Ej0u{7H&LcpQJ95QvqIy z2$&dhc+-%v*Jdx?xOoWMl^9~`-1`CCNxF&t%RYeuI4F24P+6E?eE;$D z+v(nBv(-NN`Ute|13B7N;^xUgau=psL56l`vA4n6Ipa=Tjh3#5(dchBwN_}#A)>8s z180-Hg;Zm>+;>qgANUUs_%R5<2335aV>X{?c7nWg1Gxfqy$U2vc@nFK+P1JY)vSir zto~uABf^am!slHdt_G%5F3ZGPnVhmx zF_dy*ZxfIY3Z*55Qn+;pnbF7?2h-g*cB$U@j0XL}+vbt?Dz560A-0oJ_xbNtSyR%# zT%)fa=EqWJ1#W-q4blyUL&>p_Q0h5VP3v;#GL;)Hxk%z}$eL2dp(;(d0ppyy+#Lqf zWSonO@de+Ax>79Yo@l!lSK zjR}8L1-}4!+$T3Bqpc|OS{8aO=48U)U2-bTOAAGeKupHnq;(<(2l%faV_-uB_Tz0cF>y{!SvcwnKg~8B4^=O!ZLxdMc%`vr*2zl;S-$;gvInTN)X2m?~T$(SV z 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

E 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 literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/include/poster.webp b/Needle/MenuScene/dist/include/poster.webp new file mode 100644 index 0000000..749fd3c --- /dev/null +++ b/Needle/MenuScene/dist/include/poster.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa2a970d9cbc1163c124fea1d4084c8f5eb5f13a917b6f87ad390cdeb351dfd2 +size 10228 diff --git a/Needle/MenuScene/dist/index.html b/Needle/MenuScene/dist/index.html new file mode 100644 index 0000000..f32457b --- /dev/null +++ b/Needle/MenuScene/dist/index.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Menu Scene + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + \ No newline at end of file diff --git a/Needle/MenuScene/dist/index.html.gz b/Needle/MenuScene/dist/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f6bbe69a4ca7e6a4db4854de0235e0166298d589 GIT binary patch literal 2748 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 CM_Mre literal 0 HcmV?d00001 diff --git a/Needle/MenuScene/dist/needle-app.js b/Needle/MenuScene/dist/needle-app.js new file mode 100644 index 0000000..4b89433 --- /dev/null +++ b/Needle/MenuScene/dist/needle-app.js @@ -0,0 +1,102 @@ + + +// Needle Engine attributes we want to allow to be overriden +const knownAttributes = [ + "src", + "background-color", + "background-image", + "environment-image", + "focus-rect", +]; + +const scriptUrl = new URL(import.meta.url); +const componentName = scriptUrl.searchParams.get("component-name") || 'needle-app'; + + +if (!customElements.get(componentName)) { + console.debug(`Defining needle-app as <${componentName}>`); + customElements.define(componentName, class extends HTMLElement { + + static get observedAttributes() { + return knownAttributes; + } + + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = ` + + `; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + + const script = document.createElement('script'); + script.type = 'module'; + const url = new URL('.', import.meta.url); + this.basePath = this.getAttribute('base-path') || `${url.protocol}//${url.host}${url.pathname}`; + while(this.basePath.endsWith('/')) { + this.basePath = this.basePath.slice(0, -1); + } + script.src = this.getAttribute('script-src') || `${this.basePath}/assets/index-CkG2vTVa.js`; + this.shadowRoot.appendChild(script); + + this.needleEngine = document.createElement('needle-engine'); + this.updateAttributes(); + this.shadowRoot.appendChild(this.needleEngine); + + console.debug(this.basePath, script.src, this.needleEngine.getAttribute("src")); + } + + onConnectedCallback() { + console.debug('NeedleEmbed connected to the DOM'); + } + + disconnectedCallback() { + console.debug('NeedleEmbed disconnected from the DOM'); + } + + attributeChangedCallback(name, oldValue, newValue) { + console.debug(`NeedleApp attribute changed: ${name} from ${oldValue} to ${newValue}`); + this.updateAttributes(); + } + + updateAttributes() { + console.debug("NeedleApp updating attributes"); + + const src = this.getAttribute('src') || null; + if(src) this.needleEngine.setAttribute("src", src); + else this.needleEngine.removeAttribute("src"); + + for(const attr of knownAttributes) { + + if(attr === "src") continue; // already handled above + + if(this.hasAttribute(attr)) { + this.needleEngine.setAttribute(attr, this.getAttribute(attr)); + } + else { + this.needleEngine.removeAttribute(attr); + } + } + } + }); +} +else { + console.warn(`needle-app <${componentName}> already defined.`); +} diff --git a/Needle/MenuScene/dist/needle.buildinfo.json b/Needle/MenuScene/dist/needle.buildinfo.json new file mode 100644 index 0000000..dec27b3 --- /dev/null +++ b/Needle/MenuScene/dist/needle.buildinfo.json @@ -0,0 +1 @@ +{"time":"2026-04-19T20:37:39.331Z","totalsize":14818176,"files":[{"path":"assets/favicon.DtN_Fmav.ico","hash":"8d99ceeacb8facc2b07ea2ce437fc23f6d7ce42492e9abbb7bb98d82749abc96","size":15086},{"path":"assets/generateMeshBVH.worker-BRfdalWV.js","hash":"26dbdd8c06867454f8cf046d7963692ba10f4b6eebd5cbde83227908dbb2a886","size":390545},{"path":"assets/generateMeshBVH.worker-BRfdalWV.js.gz","hash":"7eae0d7a22c7346403d73cf42a22b1f8d7008922462bcb217a00f66c2a2fb97a","size":96965},{"path":"assets/GenerateMeshBVHWorker.DMD7ZOpN.js","hash":"c39f757743906680af5dc17743a0082c4385e230ab5006b427953bdec6f4f76a","size":80},{"path":"assets/gltf-progressive.BBJGcb3s.js","hash":"069fa050ccdccf55776c11cf63bafff2ec45e7720da48695187772034a17b0ce","size":40226},{"path":"assets/gltf-progressive.BBJGcb3s.js.gz","hash":"a4adb3cb3cf3124f78482d0595afa825555b0f0b45905969ae866f34dae36d3c","size":13752},{"path":"assets/gltf-progressive.worker-DbINgLUC.js","hash":"d95d7d669ac99e74ab7945b52f825793c8977a9b6045aa7f202b867a6295abd4","size":533027},{"path":"assets/gltf-progressive.worker-DbINgLUC.js.gz","hash":"9ce0dcfd79441e40258af9801a62c13ed8bb454de617b28a81951b22c5bc3f1c","size":140931},{"path":"assets/index-CkG2vTVa.js","hash":"1b78152eacc987e7c7d8a3e5ef5f553f1cd7ef0a65d57873d5e3104dfcf65a41","size":3887},{"path":"assets/index-CkG2vTVa.js.gz","hash":"e9690194d23e4e591cd1f24f2053df7ed566ebc9a0830c57776b0c9888890085","size":1733},{"path":"assets/index.2XwOwFJz.css","hash":"25faeee214aadb9a8bfcaf563f5297c14dbebe5bb03ac0f5c2e95c4bb8801cb9","size":1317},{"path":"assets/index.2XwOwFJz.css.gz","hash":"628d1722e3b1dbeb9a4b29bb1ab09ba911c26a2ad0d32860b92c3cd450334109","size":656},{"path":"assets/JsMaterialXCore.B97gKRq_.wasm","hash":"6b0d149adcb290fac326c754c878a5d8389b2fe7e6c5dbaf22129b2e83673762","size":1410873},{"path":"assets/JsMaterialXCore.DGnKx6GJ.js","hash":"3458954c3137edcdf72a873eb4a92fc8fd947676a10c7dab1d2ef8e501ce5c07","size":65},{"path":"assets/JsMaterialXGenShader.data.DOxudtll.txt","hash":"9eaf101c24d568abe8b21a35cec29df32a9d8ee18986787abcada3ac95ffacc5","size":1512300},{"path":"assets/JsMaterialXGenShader.data.vJnq-SJK.js","hash":"8469e42ae946745a483b829903a8ebe26775c6084a19f85928633c5bbe5cca59","size":65},{"path":"assets/JsMaterialXGenShader.DFP9U7Gu.js","hash":"b3026b30cb3dc86f025d4a21b8befe5b9cbbd2b3d471ecc18c0dd7ed591ce0bb","size":65},{"path":"assets/JsMaterialXGenShader.P2pWAaz9.wasm","hash":"09adab7b142ea4dc768ac40b7947a5eac5c7556a50dbf60281db9c11d555a98e","size":2564784},{"path":"assets/materialx.CnHmG--Y.js","hash":"46e0e6b37df7b132f6340e2bd84211f916c24933868671ba4b5d3a507f8d878c","size":140597},{"path":"assets/materialx.CnHmG--Y.js.gz","hash":"2a3d121d401ee013951712a5ad6a4d7d023201b4ea28625d9d07791999a8a80e","size":42394},{"path":"assets/materialx.eMaybKAQ.js","hash":"d25f196b1725a13ce1bc579a42fe162335314670daf1e24c973b45b7eda95140","size":233},{"path":"assets/materialx.eMaybKAQ.js.gz","hash":"a2c260cb703b423b85ba96b38f3c00a9b1021882ec5feb13338ca1fa3db8db3e","size":168},{"path":"assets/MenuScene.glb","hash":"39a12ecb1de4059d0062999fefda3f23cc2d568ef1ebb8dcfe1c974a084bd7d4","size":84700},{"path":"assets/N8AO.C2WXsanG.js","hash":"c53e27ed55ec7273d644739fde121bb6afd4027a9e7f56aa71e16899fb5287c5","size":121},{"path":"assets/N8AO.C2WXsanG.js.gz","hash":"53f936a93e15460b4c340dabe2b8dbd080c6fcf4822c97562763d6e2daf82d16","size":119},{"path":"assets/needle-engine-particles.Bw3zzNt3.js","hash":"a44f9881e12973d3630b41089a4546a746ca37b5713746cc1b8fdcd028d2e06c","size":57273},{"path":"assets/needle-engine-particles.Bw3zzNt3.js.gz","hash":"2caab258beff37e92287c23460ca06d0b86cdc346630278e897331def336f860","size":15291},{"path":"assets/needle-engine-ui.BzyLX9fs.js","hash":"347f15f369671199592d5625c93bcf3005334c821622e96f9d6a42c3832c123a","size":549800},{"path":"assets/needle-engine-ui.BzyLX9fs.js.gz","hash":"18ffe6c238f5a5f222639bc3c9f1791a90234a578d62bb93f234f660323d411a","size":156629},{"path":"assets/needle-engine-webxr.DQA26K-l.js","hash":"6c1c3ba1975bc4928fa8c7f16970722e3bb500694b56c14afe4d29a2d8fd06b0","size":339590},{"path":"assets/needle-engine-webxr.DQA26K-l.js.gz","hash":"1faa7f7e16eb552e40c86b36abe0880bf18cfcadb1ae77171a78510a96c41b46","size":95875},{"path":"assets/needle-engine.BJP2NBoC.js","hash":"baa3d6660ade76a55ba22625b3d4ce682507fa967afb4b15a7122c840b77ea7d","size":8806},{"path":"assets/needle-engine.BJP2NBoC.js.gz","hash":"042d5bd562bfc7e4d89e76b88e15dd365ee678fc4f22ab846cc6be909a35aeeb","size":2125},{"path":"assets/needle-engine.CE4b2dOg.js","hash":"926d66907210eb8304c8ebb022b07804b2528a1cb0fcb3a693dafb920cf9af4b","size":83},{"path":"assets/needle-engine.D6xdy26G.js","hash":"493a70cfc7882efd95a49064109d497fa52da8cb21ebead82269844699410225","size":8399},{"path":"assets/needle-engine.D6xdy26G.js.gz","hash":"ae0ffbee3b9df88dfbdadc6c9b7ef7e3a526dd2a9fd1dca7d3e189004eb1feb3","size":2824},{"path":"assets/needle-engine.dep.B3nA4wQ5.js","hash":"903cb1e6d479f412d33f3c6f420da30914ebdc32f2fa5af317ef1b6a83c19d46","size":157},{"path":"assets/needle-engine.dep.B3nA4wQ5.js.gz","hash":"f3ef06e5c09c66b910c15a96d56be694dfc1043699234de32880009cc425418d","size":146},{"path":"assets/needle-engine.dep.BzZBR-mM.js","hash":"446200bd2574e013d8968923320e1092907cfb8f4890ae1a2007ad3a2efb4ec5","size":91},{"path":"assets/needle-engine.dep.DFJFZC0m.js","hash":"fb9b21b29e7bdd4af6e14c3716d27ffc9642107224b17a3cc1cf383c57355f80","size":3621},{"path":"assets/needle-engine.dep.DFJFZC0m.js.gz","hash":"a52e033c1ec67b0da0e40f27167b672650f08af40a738a27ba51a4b8f226276d","size":1473},{"path":"assets/needle-engine.extras.CDv9-f43.js","hash":"70e87f9355209401e3377cc89708724a47c12cfdf7b00ce85ba2dc09742684c9","size":45379},{"path":"assets/needle-engine.extras.CDv9-f43.js.gz","hash":"172ca45584aa2d018537fb207df8b992918d31584c3d5b9345b1cd7a4c25ca09","size":11721},{"path":"assets/needle-engine.extras.t1Dx-yNB.js","hash":"e5544c5086bfeeaf93eed19f43d530600d4bf67dcc8236df83e5fc5d10d5e804","size":287996},{"path":"assets/needle-engine.extras.t1Dx-yNB.js.gz","hash":"afeedc5065bee3e3c848b49e96863be6708481f24a11de6b743852a99c733aa9","size":77870},{"path":"assets/needle-engine.V_YEpsUE.js","hash":"70d22ac636b93b2cb48c7b9f02979d984ebcc2232482e994c44c20239e271543","size":17976},{"path":"assets/needle-engine.V_YEpsUE.js.gz","hash":"9696865b582d890d12c125ec275d91839157becdcadc040e234107ad80823c01","size":7318},{"path":"assets/needle-engine@5.0.3.js","hash":"d21366468bf0d49047cc3d20daec138469e1fb1af97bf3c13e4ef75512ed679f","size":102370},{"path":"assets/needle-engine@5.0.3.js.gz","hash":"61c1a5b9259bd20ce2b22b422cdf6cd8e802cd3de5dba88668db77ea2f156cd4","size":32233},{"path":"assets/peerjs.UdR1_Ath.js","hash":"4d1141e782b5074ff0bc6471d1496892bf4cc3d37bff6b26dbb543ff3215f511","size":139970},{"path":"assets/peerjs.UdR1_Ath.js.gz","hash":"d655e3293942f858436231a5f1c98cacebc4f12b462bbbf7091d91fca6b1804f","size":35531},{"path":"assets/postprocessing.ao.BRYreHJS.js","hash":"9a752a5cdb636bec813221103a7070018fee1303940ad177475bc4f01eb0f3a3","size":162950},{"path":"assets/postprocessing.ao.BRYreHJS.js.gz","hash":"13b3f7db36f6c50bb3de7dffee4ac60670f9267ac4acf052f75b699752dee620","size":77949},{"path":"assets/postprocessing.Wy71DpiM.js","hash":"a13d1598fd4cc60a06e264fef9ed207185963a01b21473cc30dfdcd11307b2b1","size":318819},{"path":"assets/postprocessing.Wy71DpiM.js.gz","hash":"205160a2233b8646a9c1ec6c6f17a414067d811299e3f13f5332a6ce5b66ac61","size":111140},{"path":"assets/rapier3d.DBFmcAzL.js","hash":"dee0e85e47299f58b6af45b9e0d3ec8e87365a2bcfbfe521c7ca7731f721c031","size":2236518},{"path":"assets/rapier3d.DBFmcAzL.js.gz","hash":"756ae1c26b91e37df8728ee0e438208e9138a328daaac20c91d9c9ec0be6a9d1","size":829360},{"path":"assets/register_types.C910Zu9b.js","hash":"2cfd69fd55b1e9a9c157022600b1a40684e8eeaec5bf50b2e3f98020d9380094","size":8447},{"path":"assets/register_types.C910Zu9b.js.gz","hash":"8b4af965ad6985b391ed7026a96b560751d42b524fb430a06266596e3491942a","size":2818},{"path":"assets/rolldown-runtime.CYVBeYYp.js","hash":"c62a259caf983f4ea8940cae8d9abe35924f21613de275b1102b5f9e6243c126","size":685},{"path":"assets/rolldown-runtime.CYVBeYYp.js.gz","hash":"52bb3183225ba42d42738dbbe972d6bd0b05d307269e38b8c3ca2a672979ba57","size":417},{"path":"assets/three-examples.extras@0.169.19.js","hash":"5dc9c34c94bc4ed886e7a06561292a396deacdb33c8c69e92b3ee84d4f88f3e5","size":467},{"path":"assets/three-examples.extras@0.169.19.js.gz","hash":"7ea7b34cc92c9f75c1aa5ef464e818eacaafeb4b9bea3f6e8fb485e487a0b342","size":312},{"path":"assets/three-examples@0.169.19.js","hash":"b0161353f6b95d0ba8b7eae4ccc3a5238dbcdf1eb4627a3faa743aa400496f66","size":341977},{"path":"assets/three-examples@0.169.19.js.gz","hash":"7b60c10406058b2ae13a58244f290e21db2d795302986078082c06cffbbc1520","size":107289},{"path":"assets/three-mesh-bvh.B-oXEGo2.js","hash":"9dff9b6b9018b998059a57cde938ad273062e25a06232f019bbc5a6b0ef4b7c7","size":54824},{"path":"assets/three-mesh-bvh.B-oXEGo2.js.gz","hash":"4c10233f3f98214c2604e628406d76cd9419b3629e42f2b4c356f5b15b15e093","size":17657},{"path":"assets/three-mesh-ui.CgGzZ3ml.js","hash":"1e33cd1d93ac2c9e4cea4d6b35094401cce041850d374f105513a44283b5884d","size":113137},{"path":"assets/three-mesh-ui.CgGzZ3ml.js.gz","hash":"6f016243f03011b37c43bcb2b307876075338430f185ea3c82ecfc67bdcc9e70","size":26682},{"path":"assets/three-quarks.DALdLWPD.js","hash":"4be7a10535ad22e8333ffa70d687606c5778dd03fddc7298c4f665911bc9c452","size":148379},{"path":"assets/three-quarks.DALdLWPD.js.gz","hash":"17ba7fe25a94d37f6d7d6d56c8c6cb2c748b4d6c297e67e72a4cbad96316268c","size":34112},{"path":"assets/three@0.169.19.js","hash":"e867c49a8afe22f7d79b960e57640ac4427d50a587a878b0e560cbb5a42d00ef","size":965775},{"path":"assets/three@0.169.19.js.gz","hash":"3ece83a0fb0555973130bc83e5eeecc11c4409975e0aec455441b37f920490de","size":249564},{"path":"include/poster.webp","hash":"608b670c871aad17558eaa01423b9ca036d2636592efe3a63a85aa2af755f68b","size":130},{"path":"index.html","hash":"cd37d201f085ee0030f284da1604f34a0394ec99f487c3a51e86bb3355d0050c","size":7279},{"path":"index.html.gz","hash":"1ec54d3212660a2c5c877f15f226ae05766a656cc1323d6782fa3ebc783060a1","size":2748},{"path":"needle-app.js","hash":"caa7453356ea1ca895a8cbe4530969354a830bc1d29992bf60596f4c93c41807","size":3505}]} \ No newline at end of file diff --git a/Needle/SampleScene/.gitignore b/Needle/SampleScene/.gitignore index edf636f..182901b 100644 --- a/Needle/SampleScene/.gitignore +++ b/Needle/SampleScene/.gitignore @@ -1,7 +1,6 @@ **/node_modules -assets/ +/assets/ src/generated/ -dist/ include/draco/ include/ktx2/ include/three/ diff --git a/Needle/SampleScene/dist/assets/Box.glb b/Needle/SampleScene/dist/assets/Box.glb new file mode 100644 index 0000000..355b573 --- /dev/null +++ b/Needle/SampleScene/dist/assets/Box.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f16df09406daf6b6d6763e6d5fd30855534a246d5c5f9569d9e0a94ef3c8aa70 +size 1256 diff --git a/Needle/SampleScene/dist/assets/Duck.glb b/Needle/SampleScene/dist/assets/Duck.glb new file mode 100644 index 0000000..cf24b14 --- /dev/null +++ b/Needle/SampleScene/dist/assets/Duck.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa58f5302fb10aab72926edf508e8f6164d8d2ffe4ce312cb8070cd22c58adfa +size 21648 diff --git a/Needle/SampleScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js b/Needle/SampleScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js new file mode 100644 index 0000000..8c29bc6 --- /dev/null +++ b/Needle/SampleScene/dist/assets/GenerateMeshBVHWorker.DMD7ZOpN.js @@ -0,0 +1 @@ +import{t as e}from"./needle-engine@5.0.3.js";export{e as GenerateMeshBVHWorker}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm b/Needle/SampleScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm new file mode 100644 index 0000000..10361d6 --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXCore.B97gKRq_.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b0d149adcb290fac326c754c878a5d8389b2fe7e6c5dbaf22129b2e83673762 +size 1410873 diff --git a/Needle/SampleScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js b/Needle/SampleScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js new file mode 100644 index 0000000..217251c --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXCore.DGnKx6GJ.js @@ -0,0 +1 @@ +import{u as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js new file mode 100644 index 0000000..5fc3226 --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.DFP9U7Gu.js @@ -0,0 +1 @@ +import{c as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm new file mode 100644 index 0000000..773dbb5 --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.P2pWAaz9.wasm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09adab7b142ea4dc768ac40b7947a5eac5c7556a50dbf60281db9c11d555a98e +size 2564784 diff --git a/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt new file mode 100644 index 0000000..6ce8341 --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.DOxudtll.txt @@ -0,0 +1,29044 @@ +if(MATERIALX_BUILD_DATA_LIBRARY) + # Build generated products from the MaterialX data library. + # Initially, this step is a simple copy across folders, but our intent + # is for it to include meaningful work in the future. + + set(DATA_LIBRARY_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/DataLibraryBuild) + + file(GLOB_RECURSE MATERIALX_DATA_LIBRARY_SOURCE_FILES + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + LIST_DIRECTORIES false + *.mtlx + *.md + *.glsl + *.osl + *.h + *.metal) + + foreach(SOURCE_FILE IN LISTS MATERIALX_DATA_LIBRARY_SOURCE_FILES) + set(SOURCE_FILEPATH ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}) + set(DEST_FILEPATH ${DATA_LIBRARY_BUILD_DIR}/${SOURCE_FILE}) + add_custom_command( + OUTPUT ${DEST_FILEPATH} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOURCE_FILEPATH} ${DEST_FILEPATH} + DEPENDS ${SOURCE_FILEPATH}) + list(APPEND MATERIALX_DATA_LIBRARY_BUILD_FILES ${DEST_FILEPATH}) + endforeach() + + add_custom_target(MaterialXBuildData ALL + DEPENDS ${MATERIALX_DATA_LIBRARY_BUILD_FILES}) + + set(DATA_LIBRARY_DIR ${DATA_LIBRARY_BUILD_DIR}) +else() + set(DATA_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +endif() + +if(NOT SKBUILD) + install(DIRECTORY ${DATA_LIBRARY_DIR}/ + DESTINATION "${MATERIALX_INSTALL_STDLIB_PATH}" + PATTERN "CMakeLists.txt" EXCLUDE) +endif() + +if(MATERIALX_BUILD_PYTHON) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${MATERIALX_PYTHON_FOLDER_NAME}/${MATERIALX_INSTALL_STDLIB_PATH}") + if(SKBUILD) + set(MATERIALX_PYTHON_LIBRARIES_PATH "${SKBUILD_PLATLIB_DIR}/MaterialX/libraries") + endif() + + install(DIRECTORY ${DATA_LIBRARY_DIR}/ + DESTINATION "${MATERIALX_PYTHON_LIBRARIES_PATH}" + PATTERN "CMakeLists.txt" EXCLUDE) +endif() + +set(MATERIALX_DATA_LIBRARY_DIR ${DATA_LIBRARY_DIR} PARENT_SCOPE) +# MaterialX Data Libraries + +This folder contains the standard data libraries for MaterialX, providing declarations and graph definitions for the MaterialX nodes, and source code for all supported shader generators. + +## Standard Pattern Library +- [stdlib](stdlib) + - [stdlib_defs.mtlx](stdlib/stdlib_defs.mtlx) : Nodedef declarations. + - [stdlib_ng.mtlx](stdlib/stdlib_ng.mtlx) : Nodegraph definitions. + - [genglsl](stdlib/genglsl): GLSL language support. + - [lib](stdlib/genglsl/lib) : Shader utility files. + - [stdlib_genglsl_impl.mtlx](stdlib/genglsl/stdlib_genglsl_impl.mtlx) : Mapping from declarations to implementations. + - [genosl](stdlib/genosl): OSL language support. + - [lib](stdlib/genosl/lib) : Shader utility files. + - [stdlib_genosl_impl.mtlx](stdlib/genosl/stdlib_genosl_impl.mtlx) : Mapping from declarations to implementations. + - [genmdl](stdlib/genmdl): MDL language support. + - [stdlib_genmdl_impl.mtlx](stdlib/genmdl/stdlib_genmdl_impl.mtlx) : Mapping from declarations to implementations. + - Additional MaterialX support libraries for MDL are located in the [source/MaterialXGenMdl/mdl/materialx](../source/MaterialXGenMdl/mdl/materialx) package folder + - [genmsl](stdlib/genmsl): MSL language support. + - [lib](stdlib/genmsl/lib) : Shader utility files. + - [stdlib_genmsl_impl.mtlx](stdlib/genmsl/stdlib_genmsl_impl.mtlx) : Mapping from declarations to implementations. + +## Physically Based Shading Library +- [pbrlib](pbrlib) + - [pbrlib_defs.mtlx](pbrlib/pbrlib_defs.mtlx) : Nodedef declarations. + - [pbrlib_ng.mtlx](pbrlib/pbrlib_ng.mtlx) : Nodegraph definitions. + - [genglsl](pbrlib/genglsl) : GLSL language support + - [lib](pbrlib/genglsl/lib) : Shader utility files. + - [pbrlib_genglsl_impl.mtlx](pbrlib/genglsl/pbrlib_genglsl_impl.mtlx) : Mapping from declarations to implementations. + - [genosl](pbrlib/genosl) : OSL language support + - [lib](pbrlib/genosl/lib) : Shader utility files. + - [pbrlib_genosl_impl.mtlx](pbrlib/genosl/pbrlib_genosl_impl.mtlx) : Mapping from declarations to implementations. + - [genmdl](pbrlib/genmdl) : MDL language support + - [pbrlib_genmdl_impl.mtlx](pbrlib/genmdl/pbrlib_genmdl_impl.mtlx) : Mapping from declarations to implementations. + - [genmsl](pbrlib/genmsl) : MSL language support + - [pbrlib_genmsl_impl.mtlx](pbrlib/genmsl/pbrlib_genmsl_impl.mtlx) : Mapping from declarations to implementations. + +## BxDF Graph Library +- [bxdf](bxdf) + - [standard_surface.mtlx](bxdf/standard_surface.mtlx) : Graph definition of the [Autodesk Standard Surface](https://autodesk.github.io/standard-surface/) shading model. + - [gltf_pbr.mtlx](bxdf/gltf_pbr.mtlx) : Graph definition of the [glTF PBR](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#appendix-b-brdf-implementation) shading model. + - [usd_preview_surface.mtlx](bxdf/usd_preview_surface.mtlx) : Graph definition of the [UsdPreviewSurface](https://openusd.org/release/spec_usdpreviewsurface.html) shading model. + - [lama](bxdf/lama) : Graph definitions of the [MaterialX Lama](https://rmanwiki.pixar.com/display/REN24/MaterialX+Lama) node set. + +## Color Management Library +- MaterialX shader generation natively supports a small set of common spaces for input colors, with all color transforms implemented as language-independent MaterialX graphs.The canonical definitions of these color transforms may be found in the OpenColorIO configuration for [ACES 1.2](https://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.2-config/aces_1.2). + - lin_rec709 + - g18_rec709 + - g22_rec709 + - rec709_display + - acescg (lin_ap1) + - g22_ap1 + - srgb_texture + - lin_adobergb + - adobergb + - srgb_displayp3 + - lin_displayp3 +- [cmlib](cmlib) + - [cmlib_defs.mtlx](cmlib/cmlib_defs.mtlx) : Nodedef declarations. + - [cmlib_ng.mtlx](cmlib/cmlib_ng.mtlx) : Nodegraph definitions. + +## Target Definitions +- Each target implementation requires a target definition for declaration / implementation correspondence to work. +- The [targets](targets) folder contains definition files for the following core targets: + - GLSL : `genglsl` + - OSL : `genosl` + - MDL : `genmdl` + - MSL : `genmsl` +- Any additional target files should be added under this folder and loaded in as required. + +### Target Support +- GLSL target support is for version 4.0 or higher. +- OSL target support is for version 1.12.6 or higher. +- MDL target support is for version 1.6 or higher. +- Basic GLSL and MSL `lightshader` node definitions and implementations are provided for the following light types: + - point, directional, spot +- Shader generation does not currently support: + - `displacementshader` and `volumeshader` nodes for hardware shading targets (GLSL, MSL). + - `hextiledimage` and `hextilednormalmap` for OSL and MDL. + - `blur` the implementation passes through `in` unmodified in all shading languages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void mx_directional_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = -light.direction; + result.intensity = light.color * light.intensity; +} +void mx_point_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; +} +void mx_spot_light(LightData light, vec3 position, out lightshader result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; + float low = min(light.inner_angle, light.outer_angle); + float high = light.inner_angle; + float cosDir = dot(result.direction, -light.direction); + float spotAttenuation = smoothstep(low, high, cosDir); + result.intensity *= spotAttenuation; +} + + + + + + + + + + + + + +void mx_directional_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = -light.direction; + result.intensity = light.color * light.intensity; +} +void mx_point_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; +} +void mx_spot_light(LightData light, float3 position, thread lightshader& result) +{ + result.direction = light.position - position; + float distance = length(result.direction) + M_FLOAT_EPS; + float attenuation = pow(distance + 1.0, light.decay_rate + M_FLOAT_EPS); + result.intensity = light.color * light.intensity / attenuation; + result.direction /= distance; + float low = min(light.inner_angle, light.outer_angle); + float high = light.inner_angle; + float cosDir = dot(result.direction, -light.direction); + float spotAttenuation = smoothstep(low, high, cosDir); + result.intensity *= spotAttenuation; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// These are defined based on the HwShaderGenerator::ClosureContextType enum +// if that changes - these need to be updated accordingly. + +#define CLOSURE_TYPE_DEFAULT 0 +#define CLOSURE_TYPE_REFLECTION 1 +#define CLOSURE_TYPE_TRANSMISSION 2 +#define CLOSURE_TYPE_INDIRECT 3 +#define CLOSURE_TYPE_EMISSION 4 + +struct ClosureData { + int closureType; + vec3 L; + vec3 V; + vec3 N; + vec3 P; + float occlusion; +}; +#include "mx_microfacet_specular.glsl" + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd) +{ + // Generate tangent frame. + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + mat3 tangentToWorld = mat3(X, Y, N); + + // Transform the view vector to tangent space. + V = vec3(dot(V, X), dot(V, Y), dot(V, N)); + + // Compute derived properties. + float NdotV = clamp(V.z, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(alpha); + float G1V = mx_ggx_smith_G1(NdotV, avgAlpha); + + // Integrate outgoing radiance using filtered importance sampling. + // http://cgg.mff.cuni.cz/~jaroslav/papers/2008-egsr-fis/2008-egsr-fis-final-embedded.pdf + vec3 radiance = vec3(0.0); + int envRadianceSamples = $envRadianceSamples; + for (int i = 0; i < envRadianceSamples; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, envRadianceSamples); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, alpha); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, H, fd.ior.x) : -reflect(V, H); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + // Sample the environment light from the given direction. + vec3 Lw = tangentToWorld * L; + float pdf = mx_ggx_NDF(H, alpha) * G1V / (4.0 * NdotV); + float lod = mx_latlong_compute_lod(Lw, pdf, float($envRadianceMips - 1), envRadianceSamples); + vec3 sampleColor = mx_latlong_map_lookup(Lw, $envMatrix, lod, $envRadiance); + + // Compute the Fresnel term. + vec3 F = mx_compute_fresnel(VdotH, fd); + + // Compute the geometric term. + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + // Compute the combined FG term, which simplifies to inverted Fresnel for refraction. + vec3 FG = fd.refraction ? vec3(1.0) - F : F * G; + + // Add the radiance contribution of this sample. + // From https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf + // incidentLight = sampleColor * NdotL + // microfacetSpecular = D * F * G / (4 * NdotL * NdotV) + // pdf = D * G1V / (4 * NdotV); + // radiance = incidentLight * microfacetSpecular / pdf + radiance += sampleColor * FG; + } + + // Apply the global component of the geometric term and normalize. + radiance /= G1V * float(envRadianceSamples); + + // Return the final radiance. + return radiance * $envLightIntensity; +} + +vec3 mx_environment_irradiance(vec3 N) +{ + vec3 Li = mx_latlong_map_lookup(N, $envMatrix, 0.0, $envIrradiance); + return Li * $envLightIntensity; +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 roughness, int distribution, FresnelData fd) +{ + return vec3(0.0); +} + +vec3 mx_environment_irradiance(vec3 N) +{ + return vec3(0.0); +} +#include "mx_microfacet_specular.glsl" + +// Return the mip level associated with the given alpha in a prefiltered environment. +float mx_latlong_alpha_to_lod(float alpha) +{ + float lodBias = (alpha < 0.25) ? sqrt(alpha) : 0.5 * alpha + 0.375; + return lodBias * float($envRadianceMips - 1); +} + +vec3 mx_environment_radiance(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd) +{ + N = mx_forward_facing_normal(N, V); + vec3 L = fd.refraction ? mx_refraction_solid_sphere(-V, N, fd.ior.x) : -reflect(V, N); + + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + float avgAlpha = mx_average_alpha(alpha); + vec3 F = mx_compute_fresnel(NdotV, fd); + float G = mx_ggx_smith_G2(NdotV, NdotV, avgAlpha); + vec3 FG = fd.refraction ? vec3(1.0) - (F * G) : F * G; + + vec3 Li = mx_latlong_map_lookup(L, $envMatrix, mx_latlong_alpha_to_lod(avgAlpha), $envRadiance); + return Li * FG * $envLightIntensity; +} + +vec3 mx_environment_irradiance(vec3 N) +{ + vec3 Li = mx_latlong_map_lookup(N, $envMatrix, 0.0, $envIrradiance); + return Li * $envLightIntensity; +} +#include "mx_microfacet_sheen.glsl" +#include "mx_microfacet_specular.glsl" + +vec3 mx_generate_dir_albedo_table() +{ + vec2 uv = gl_FragCoord.xy / $albedoTableSize; + vec2 ggxDirAlbedo = mx_ggx_dir_albedo(uv.x, uv.y, vec3(1, 0, 0), vec3(0, 1, 0)).xy; + float sheenDirAlbedo = mx_imageworks_sheen_dir_albedo(uv.x, uv.y); + return vec3(ggxDirAlbedo, sheenDirAlbedo); +} +#include "mx_microfacet_specular.glsl" + +// Return the alpha associated with the given mip level in a prefiltered environment. +float mx_latlong_lod_to_alpha(float lod) +{ + float lodBias = lod / float($envRadianceMips - 1); + return (lodBias < 0.5) ? mx_square(lodBias) : 2.0 * (lodBias - 0.375); +} + +// The inverse of mx_latlong_projection. +vec3 mx_latlong_map_projection_inverse(vec2 uv) +{ + float latitude = (uv.y - 0.5) * M_PI; + float longitude = (uv.x - 0.5) * M_PI * 2.0; + + float x = -mx_cos(latitude) * mx_sin(longitude); + float y = -mx_sin(latitude); + float z = mx_cos(latitude) * mx_cos(longitude); + + return vec3(x, y, z); +} + +vec3 mx_generate_prefilter_env() +{ + // The tangent view vector is aligned with the normal. + vec3 V = vec3(0.0, 0.0, 1.0); + float NdotV = 1.0; + + // Compute derived properties. + vec2 uv = gl_FragCoord.xy * pow(2.0, $envPrefilterMip) / vec2(textureSize($envRadianceSampler2D, 0)); + vec3 worldN = mx_latlong_map_projection_inverse(uv); + mat3 tangentToWorld = mx_orthonormal_basis(worldN); + float alpha = mx_latlong_lod_to_alpha(float($envPrefilterMip)); + float G1V = mx_ggx_smith_G1(NdotV, alpha); + + // Integrate the LD term for the given environment and alpha. + vec3 radiance = vec3(0.0, 0.0, 0.0); + float weight = 0.0; + int envRadianceSamples = 1024; + for (int i = 0; i < envRadianceSamples; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, envRadianceSamples); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, vec2(alpha)); + vec3 L = -V + 2.0 * H.z * H; + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + + // Compute the geometric term. + float G = mx_ggx_smith_G2(NdotL, NdotV, alpha); + + // Sample the environment light from the given direction. + vec3 Lw = tangentToWorld * L; + float pdf = mx_ggx_NDF(H, vec2(alpha)) * G1V / (4.0 * NdotV); + float lod = mx_latlong_compute_lod(Lw, pdf, float($envRadianceMips - 1), envRadianceSamples); + vec3 sampleColor = mx_latlong_map_lookup(Lw, $envMatrix, lod, $envRadiance); + + // Add the radiance contribution of this sample. + radiance += G * sampleColor; + weight += G; + } + + return radiance / weight; +} +#define M_PI 3.1415926535897932 +#define M_PI_INV (1.0 / M_PI) + +float mx_pow5(float x) +{ + return mx_square(mx_square(x)) * x; +} + +float mx_pow6(float x) +{ + float x2 = mx_square(x); + return mx_square(x2) * x2; +} + +// Standard Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} + +// Generalized Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0, float F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0, vec3 F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} + +// Generalized Schlick Fresnel with a variable exponent +float mx_fresnel_schlick(float cosTheta, float F0, float F90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(F0, F90, pow(x, exponent)); +} +vec3 mx_fresnel_schlick(float cosTheta, vec3 F0, vec3 F90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(F0, F90, pow(x, exponent)); +} + +// Enforce that the given normal is forward-facing from the specified view direction. +vec3 mx_forward_facing_normal(vec3 N, vec3 V) +{ + return (dot(N, V) < 0.0) ? -N : N; +} + +// https://www.graphics.rwth-aachen.de/publication/2/jgt.pdf +float mx_golden_ratio_sequence(int i) +{ + const float GOLDEN_RATIO = 1.6180339887498948; + return fract((float(i) + 1.0) * GOLDEN_RATIO); +} + +// https://people.irisa.fr/Ricardo.Marques/articles/2013/SF_CGF.pdf +vec2 mx_spherical_fibonacci(int i, int numSamples) +{ + return vec2((float(i) + 0.5) / float(numSamples), mx_golden_ratio_sequence(i)); +} + +// Generate a uniform-weighted sample on the unit hemisphere. +vec3 mx_uniform_sample_hemisphere(vec2 Xi) +{ + float phi = 2.0 * M_PI * Xi.x; + float cosTheta = 1.0 - Xi.y; + float sinTheta = sqrt(1.0 - mx_square(cosTheta)); + return vec3(mx_cos(phi) * sinTheta, + mx_sin(phi) * sinTheta, + cosTheta); +} + +// Generate a cosine-weighted sample on the unit hemisphere. +vec3 mx_cosine_sample_hemisphere(vec2 Xi) +{ + float phi = 2.0 * M_PI * Xi.x; + float cosTheta = sqrt(Xi.y); + float sinTheta = sqrt(1.0 - Xi.y); + return vec3(mx_cos(phi) * sinTheta, + mx_sin(phi) * sinTheta, + cosTheta); +} + +// Construct an orthonormal basis from a unit vector. +// https://graphics.pixar.com/library/OrthonormalB/paper.pdf +mat3 mx_orthonormal_basis(vec3 N) +{ + float sign = (N.z < 0.0) ? -1.0 : 1.0; + float a = -1.0 / (sign + N.z); + float b = N.x * N.y * a; + vec3 X = vec3(1.0 + sign * N.x * N.x * a, sign * b, -sign * N.x); + vec3 Y = vec3(b, sign + N.y * N.y * a, -N.y); + return mat3(X, Y, N); +} +#include "mx_microfacet.glsl" + +const float FUJII_CONSTANT_1 = 0.5 - 2.0 / (3.0 * M_PI); +const float FUJII_CONSTANT_2 = 2.0 / 3.0 - 28.0 / (15.0 * M_PI); + +// Qualitative Oren-Nayar diffuse with simplified math: +// https://www1.cs.columbia.edu/CAVE/publications/pdfs/Oren_SIGGRAPH94.pdf +float mx_oren_nayar_diffuse(float NdotV, float NdotL, float LdotV, float roughness) +{ + float s = LdotV - NdotL * NdotV; + float stinv = (s > 0.0) ? s / max(NdotL, NdotV) : 0.0; + + float sigma2 = mx_square(roughness); + float A = 1.0 - 0.5 * (sigma2 / (sigma2 + 0.33)); + float B = 0.45 * sigma2 / (sigma2 + 0.09); + + return A + B * stinv; +} + +// Rational quadratic fit to Monte Carlo data for Oren-Nayar directional albedo. +float mx_oren_nayar_diffuse_dir_albedo_analytic(float NdotV, float roughness) +{ + vec2 r = vec2(1.0, 1.0) + + vec2(-0.4297, -0.6076) * roughness + + vec2(-0.7632, -0.4993) * NdotV * roughness + + vec2(1.4385, 2.0315) * mx_square(roughness); + return r.x / r.y; +} + +float mx_oren_nayar_diffuse_dir_albedo_table_lookup(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + return texture($albedoTable, vec2(NdotV, roughness)).b; + } +#endif + return 0.0; +} + +float mx_oren_nayar_diffuse_dir_albedo_monte_carlo(float NdotV, float roughness) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0 - mx_square(NdotV)), 0, NdotV); + + float radiance = 0.0; + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the incoming light direction. + vec3 L = mx_uniform_sample_hemisphere(Xi); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float LdotV = clamp(dot(L, V), M_FLOAT_EPS, 1.0); + + // Compute diffuse reflectance. + float reflectance = mx_oren_nayar_diffuse(NdotV, NdotL, LdotV, roughness); + + // Add the radiance contribution of this sample. + // uniform_pdf = 1 / (2 * PI) + // radiance = (reflectance * NdotL) / (uniform_pdf * PI); + radiance += reflectance * NdotL; + } + + // Apply global components and normalize. + radiance *= 2.0 / float(SAMPLE_COUNT); + + // Return the final directional albedo. + return radiance; +} + +float mx_oren_nayar_diffuse_dir_albedo(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 2 + float dirAlbedo = mx_oren_nayar_diffuse_dir_albedo_monte_carlo(NdotV, roughness); +#else + float dirAlbedo = mx_oren_nayar_diffuse_dir_albedo_analytic(NdotV, roughness); +#endif + return clamp(dirAlbedo, 0.0, 1.0); +} + +// Improved Oren-Nayar diffuse from Fujii: +// https://mimosa-pudica.net/improved-oren-nayar.html +float mx_oren_nayar_fujii_diffuse_dir_albedo(float cosTheta, float roughness) +{ + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + float B = roughness * A; + float Si = sqrt(max(0.0, 1.0 - mx_square(cosTheta))); + float G = Si * (mx_acos(clamp(cosTheta, -1.0, 1.0)) - Si * cosTheta) + + 2.0 * ((Si / cosTheta) * (1.0 - Si * Si * Si) - Si) / 3.0; + return A + (B * G * M_PI_INV); +} + +float mx_oren_nayar_fujii_diffuse_avg_albedo(float roughness) +{ + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + return A * (1.0 + FUJII_CONSTANT_2 * roughness); +} + +// Energy-compensated Oren-Nayar diffuse from OpenPBR Surface: +// https://academysoftwarefoundation.github.io/OpenPBR/ +vec3 mx_oren_nayar_compensated_diffuse(float NdotV, float NdotL, float LdotV, float roughness, vec3 color) +{ + float s = LdotV - NdotL * NdotV; + float stinv = (s > 0.0) ? s / max(NdotL, NdotV) : s; + + // Compute the single-scatter lobe. + float A = 1.0 / (1.0 + FUJII_CONSTANT_1 * roughness); + vec3 lobeSingleScatter = color * A * (1.0 + roughness * stinv); + + // Compute the multi-scatter lobe. + float dirAlbedoV = mx_oren_nayar_fujii_diffuse_dir_albedo(NdotV, roughness); + float dirAlbedoL = mx_oren_nayar_fujii_diffuse_dir_albedo(NdotL, roughness); + float avgAlbedo = mx_oren_nayar_fujii_diffuse_avg_albedo(roughness); + vec3 colorMultiScatter = mx_square(color) * avgAlbedo / + (vec3(1.0) - color * max(0.0, 1.0 - avgAlbedo)); + vec3 lobeMultiScatter = colorMultiScatter * + max(M_FLOAT_EPS, 1.0 - dirAlbedoV) * + max(M_FLOAT_EPS, 1.0 - dirAlbedoL) / + max(M_FLOAT_EPS, 1.0 - avgAlbedo); + + // Return the sum. + return lobeSingleScatter + lobeMultiScatter; +} + +vec3 mx_oren_nayar_compensated_diffuse_dir_albedo(float cosTheta, float roughness, vec3 color) +{ + float dirAlbedo = mx_oren_nayar_fujii_diffuse_dir_albedo(cosTheta, roughness); + float avgAlbedo = mx_oren_nayar_fujii_diffuse_avg_albedo(roughness); + vec3 colorMultiScatter = mx_square(color) * avgAlbedo / + (vec3(1.0) - color * max(0.0, 1.0 - avgAlbedo)); + return mix(colorMultiScatter, color, dirAlbedo); +} + +// https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf +// Section 5.3 +float mx_burley_diffuse(float NdotV, float NdotL, float LdotH, float roughness) +{ + float F90 = 0.5 + (2.0 * roughness * mx_square(LdotH)); + float refL = mx_fresnel_schlick(NdotL, 1.0, F90); + float refV = mx_fresnel_schlick(NdotV, 1.0, F90); + return refL * refV; +} + +// Compute the directional albedo component of Burley diffuse for the given +// view angle and roughness. Curve fit provided by Stephen Hill. +float mx_burley_diffuse_dir_albedo(float NdotV, float roughness) +{ + float x = NdotV; + float fit0 = 0.97619 - 0.488095 * mx_pow5(1.0 - x); + float fit1 = 1.55754 + (-2.02221 + (2.56283 - 1.06244 * x) * x) * x; + return mix(fit0, fit1, roughness); +} + +// Evaluate the Burley diffusion profile for the given distance and diffusion shape. +// Based on https://graphics.pixar.com/library/ApproxBSSRDF/ +vec3 mx_burley_diffusion_profile(float dist, vec3 shape) +{ + vec3 num1 = exp(-shape * dist); + vec3 num2 = exp(-shape * dist / 3.0); + float denom = max(dist, M_FLOAT_EPS); + return (num1 + num2) / denom; +} + +// Integrate the Burley diffusion profile over a sphere of the given radius. +// Inspired by Eric Penner's presentation in http://advances.realtimerendering.com/s2011/ +vec3 mx_integrate_burley_diffusion(vec3 N, vec3 L, float radius, vec3 mfp) +{ + float theta = mx_acos(dot(N, L)); + + // Estimate the Burley diffusion shape from mean free path. + vec3 shape = vec3(1.0) / max(mfp, 0.1); + + // Integrate the profile over the sphere. + vec3 sumD = vec3(0.0); + vec3 sumR = vec3(0.0); + const int SAMPLE_COUNT = 32; + const float SAMPLE_WIDTH = (2.0 * M_PI) / float(SAMPLE_COUNT); + for (int i = 0; i < SAMPLE_COUNT; i++) + { + float x = -M_PI + (float(i) + 0.5) * SAMPLE_WIDTH; + float dist = radius * abs(2.0 * mx_sin(x * 0.5)); + vec3 R = mx_burley_diffusion_profile(dist, shape); + sumD += R * max(mx_cos(theta + x), 0.0); + sumR += R; + } + + return sumD / sumR; +} + +vec3 mx_subsurface_scattering_approx(vec3 N, vec3 L, vec3 P, vec3 albedo, vec3 mfp) +{ + float curvature = length(fwidth(N)) / length(fwidth(P)); + float radius = 1.0 / max(curvature, 0.01); + return albedo * mx_integrate_burley_diffusion(N, L, radius, mfp) / vec3(M_PI); +} +#include "mx_microfacet.glsl" + +// https://fpsunflower.github.io/ckulla/data/s2017_pbs_imageworks_sheen.pdf +// Equation 2 +float mx_imageworks_sheen_NDF(float NdotH, float roughness) +{ + float invRoughness = 1.0 / max(roughness, 0.005); + float cos2 = NdotH * NdotH; + float sin2 = 1.0 - cos2; + return (2.0 + invRoughness) * pow(sin2, invRoughness * 0.5) / (2.0 * M_PI); +} + +float mx_imageworks_sheen_brdf(float NdotL, float NdotV, float NdotH, float roughness) +{ + // Microfacet distribution. + float D = mx_imageworks_sheen_NDF(NdotH, roughness); + + // Fresnel and geometry terms are ignored. + float F = 1.0; + float G = 1.0; + + // We use a smoother denominator, as in: + // https://blog.selfshadow.com/publications/s2013-shading-course/rad/s2013_pbs_rad_notes.pdf + return D * F * G / (4.0 * (NdotL + NdotV - NdotL*NdotV)); +} + +// Rational quadratic fit to Monte Carlo data for Imageworks sheen directional albedo. +float mx_imageworks_sheen_dir_albedo_analytic(float NdotV, float roughness) +{ + vec2 r = vec2(13.67300, 1.0) + + vec2(-68.78018, 61.57746) * NdotV + + vec2(799.08825, 442.78211) * roughness + + vec2(-905.00061, 2597.49308) * NdotV * roughness + + vec2(60.28956, 121.81241) * mx_square(NdotV) + + vec2(1086.96473, 3045.55075) * mx_square(roughness); + return r.x / r.y; +} + +float mx_imageworks_sheen_dir_albedo_table_lookup(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + return texture($albedoTable, vec2(NdotV, roughness)).b; + } +#endif + return 0.0; +} + +float mx_imageworks_sheen_dir_albedo_monte_carlo(float NdotV, float roughness) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0f - mx_square(NdotV)), 0, NdotV); + + float radiance = 0.0; + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the incoming light direction and half vector. + vec3 L = mx_uniform_sample_hemisphere(Xi); + vec3 H = normalize(L + V); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float NdotH = clamp(H.z, M_FLOAT_EPS, 1.0); + + // Compute sheen reflectance. + float reflectance = mx_imageworks_sheen_brdf(NdotL, NdotV, NdotH, roughness); + + // Add the radiance contribution of this sample. + // uniform_pdf = 1 / (2 * PI) + // radiance = reflectance * NdotL / uniform_pdf; + radiance += reflectance * NdotL * 2.0 * M_PI; + } + + // Return the final directional albedo. + return radiance / float(SAMPLE_COUNT); +} + +float mx_imageworks_sheen_dir_albedo(float NdotV, float roughness) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 0 + float dirAlbedo = mx_imageworks_sheen_dir_albedo_analytic(NdotV, roughness); +#elif DIRECTIONAL_ALBEDO_METHOD == 1 + float dirAlbedo = mx_imageworks_sheen_dir_albedo_table_lookup(NdotV, roughness); +#else + float dirAlbedo = mx_imageworks_sheen_dir_albedo_monte_carlo(NdotV, roughness); +#endif + return clamp(dirAlbedo, 0.0, 1.0); +} + +// The following functions are adapted from https://github.com/tizian/ltc-sheen. +// "Practical Multiple-Scattering Sheen Using Linearly Transformed Cosines", Zeltner et al. + +// Gaussian fit to directional albedo table. +float mx_zeltner_sheen_dir_albedo(float x, float y) +{ + float s = y*(0.0206607 + 1.58491*y)/(0.0379424 + y*(1.32227 + y)); + float m = y*(-0.193854 + y*(-1.14885 + y*(1.7932 - 0.95943*y*y)))/(0.046391 + y); + float o = y*(0.000654023 + (-0.0207818 + 0.119681*y)*y)/(1.26264 + y*(-1.92021 + y)); + return exp(-0.5*mx_square((x - m)/s))/(s*sqrt(2.0*M_PI)) + o; +} + +// Rational fits to LTC matrix coefficients. +float mx_zeltner_sheen_ltc_aInv(float x, float y) +{ + return (2.58126*x + 0.813703*y)*y/(1.0 + 0.310327*x*x + 2.60994*x*y); +} + +float mx_zeltner_sheen_ltc_bInv(float x, float y) +{ + return sqrt(1.0 - x)*(y - 1.0)*y*y*y/(0.0000254053 + 1.71228*x - 1.71506*x*y + 1.34174*y*y); +} + +// V and N are assumed to be unit vectors. +mat3 mx_orthonormal_basis_ltc(vec3 V, vec3 N, float NdotV) +{ + // Generate a tangent vector in the plane of V and N. + // This required to correctly orient the LTC lobe. + vec3 X = V - N*NdotV; + float lenSqr = dot(X, X); + if (lenSqr > 0.0) + { + X *= mx_inversesqrt(lenSqr); + vec3 Y = cross(N, X); + return mat3(X, Y, N); + } + + // If lenSqr == 0, then V == N, so any orthonormal basis will do. + return mx_orthonormal_basis(N); +} + +// Multiplication by directional albedo is handled by the calling function. +float mx_zeltner_sheen_brdf(vec3 L, vec3 V, vec3 N, float NdotV, float roughness) +{ + mat3 toLTC = transpose(mx_orthonormal_basis_ltc(V, N, NdotV)); + vec3 w = toLTC * L; + + float aInv = mx_zeltner_sheen_ltc_aInv(NdotV, roughness); + float bInv = mx_zeltner_sheen_ltc_bInv(NdotV, roughness); + + // Transform w to original configuration (clamped cosine). + // |aInv 0 bInv| + // wo = M^-1 . w = | 0 aInv 0| . w + // | 0 0 1| + vec3 wo = vec3(aInv*w.x + bInv*w.z, aInv * w.y, w.z); + float lenSqr = dot(wo, wo); + + // D(w) = Do(M^-1.w / ||M^-1.w||) . |M^-1| / ||M^-1.w||^3 + // = Do(M^-1.w) . |M^-1| / ||M^-1.w||^4 + // = Do(wo) . |M^-1| / dot(wo, wo)^2 + // = Do(wo) . aInv^2 / dot(wo, wo)^2 + // = Do(wo) . (aInv / dot(wo, wo))^2 + return max(wo.z, 0.0) * M_PI_INV * mx_square(aInv / lenSqr); +} + +vec3 mx_zeltner_sheen_importance_sample(vec2 Xi, vec3 V, vec3 N, float roughness, out float pdf) +{ + float NdotV = clamp(dot(N, V), 0.0, 1.0); + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + + vec3 wo = mx_cosine_sample_hemisphere(Xi); + + float aInv = mx_zeltner_sheen_ltc_aInv(NdotV, roughness); + float bInv = mx_zeltner_sheen_ltc_bInv(NdotV, roughness); + + // Transform wo from original configuration (clamped cosine). + // |1/aInv 0 -bInv/aInv| + // w = M . wo = | 0 1/aInv 0| . wo + // | 0 0 1| + vec3 w = vec3(wo.x/aInv - wo.z*bInv/aInv, wo.y / aInv, wo.z); + + float lenSqr = dot(w, w); + w *= mx_inversesqrt(lenSqr); + + // D(w) = Do(wo) . ||M.wo||^3 / |M| + // = Do(wo / ||M.wo||) . ||M.wo||^4 / |M| + // = Do(w) . ||M.wo||^4 / |M| (possible because M doesn't change z component) + // = Do(w) . dot(w, w)^2 * aInv^2 + // = Do(w) . (aInv * dot(w, w))^2 + pdf = max(w.z, 0.0) * M_PI_INV * mx_square(aInv * lenSqr); + + mat3 fromLTC = mx_orthonormal_basis_ltc(V, N, NdotV); + w = fromLTC * w; + + return w; +} +#include "mx_microfacet.glsl" + +const int FRESNEL_MODEL_DIELECTRIC = 0; +const int FRESNEL_MODEL_CONDUCTOR = 1; +const int FRESNEL_MODEL_SCHLICK = 2; + +// Parameters for Fresnel calculations +struct FresnelData +{ + // Fresnel model + int model; + bool airy; + + // Physical Fresnel + vec3 ior; + vec3 extinction; + + // Generalized Schlick Fresnel + vec3 F0; + vec3 F82; + vec3 F90; + float exponent; + + // Thin film + float tf_thickness; + float tf_ior; + + // Refraction + bool refraction; +}; + +// https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf +// Appendix B.2 Equation 13 +float mx_ggx_NDF(vec3 H, vec2 alpha) +{ + vec2 He = H.xy / alpha; + float denom = dot(He, He) + mx_square(H.z); + return 1.0 / (M_PI * alpha.x * alpha.y * mx_square(denom)); +} + +// https://ggx-research.github.io/publication/2023/06/09/publication-ggx.html +vec3 mx_ggx_importance_sample_VNDF(vec2 Xi, vec3 V, vec2 alpha) +{ + // Transform the view direction to the hemisphere configuration. + V = normalize(vec3(V.xy * alpha, V.z)); + + // Sample a spherical cap in (-V.z, 1]. + float phi = 2.0 * M_PI * Xi.x; + float z = (1.0 - Xi.y) * (1.0 + V.z) - V.z; + float sinTheta = sqrt(clamp(1.0 - z * z, 0.0, 1.0)); + float x = sinTheta * mx_cos(phi); + float y = sinTheta * mx_sin(phi); + vec3 c = vec3(x, y, z); + + // Compute the microfacet normal. + vec3 H = c + V; + + // Transform the microfacet normal back to the ellipsoid configuration. + H = normalize(vec3(H.xy * alpha, max(H.z, 0.0))); + + return H; +} + +// https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf +// Equation 34 +float mx_ggx_smith_G1(float cosTheta, float alpha) +{ + float cosTheta2 = mx_square(cosTheta); + float tanTheta2 = (1.0 - cosTheta2) / cosTheta2; + return 2.0 / (1.0 + sqrt(1.0 + mx_square(alpha) * tanTheta2)); +} + +// Height-correlated Smith masking-shadowing +// http://jcgt.org/published/0003/02/03/paper.pdf +// Equations 72 and 99 +float mx_ggx_smith_G2(float NdotL, float NdotV, float alpha) +{ + float alpha2 = mx_square(alpha); + float lambdaL = sqrt(alpha2 + (1.0 - alpha2) * mx_square(NdotL)); + float lambdaV = sqrt(alpha2 + (1.0 - alpha2) * mx_square(NdotV)); + return 2.0 * NdotL * NdotV / (lambdaL * NdotV + lambdaV * NdotL); +} + +// Rational quadratic fit to Monte Carlo data for GGX directional albedo. +vec3 mx_ggx_dir_albedo_analytic(float NdotV, float alpha, vec3 F0, vec3 F90) +{ + float x = NdotV; + float y = alpha; + float x2 = mx_square(x); + float y2 = mx_square(y); + vec4 r = vec4(0.1003, 0.9345, 1.0, 1.0) + + vec4(-0.6303, -2.323, -1.765, 0.2281) * x + + vec4(9.748, 2.229, 8.263, 15.94) * y + + vec4(-2.038, -3.748, 11.53, -55.83) * x * y + + vec4(29.34, 1.424, 28.96, 13.08) * x2 + + vec4(-8.245, -0.7684, -7.507, 41.26) * y2 + + vec4(-26.44, 1.436, -36.11, 54.9) * x2 * y + + vec4(19.99, 0.2913, 15.86, 300.2) * x * y2 + + vec4(-5.448, 0.6286, 33.37, -285.1) * x2 * y2; + vec2 AB = clamp(r.xy / r.zw, 0.0, 1.0); + return F0 * AB.x + F90 * AB.y; +} + +vec3 mx_ggx_dir_albedo_table_lookup(float NdotV, float alpha, vec3 F0, vec3 F90) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 1 + if (textureSize($albedoTable, 0).x > 1) + { + vec2 AB = texture($albedoTable, vec2(NdotV, alpha)).rg; + return F0 * AB.x + F90 * AB.y; + } +#endif + return vec3(0.0); +} + +// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf +vec3 mx_ggx_dir_albedo_monte_carlo(float NdotV, float alpha, vec3 F0, vec3 F90) +{ + NdotV = clamp(NdotV, M_FLOAT_EPS, 1.0); + vec3 V = vec3(sqrt(1.0 - mx_square(NdotV)), 0, NdotV); + + vec2 AB = vec2(0.0); + const int SAMPLE_COUNT = 64; + for (int i = 0; i < SAMPLE_COUNT; i++) + { + vec2 Xi = mx_spherical_fibonacci(i, SAMPLE_COUNT); + + // Compute the half vector and incoming light direction. + vec3 H = mx_ggx_importance_sample_VNDF(Xi, V, vec2(alpha)); + vec3 L = -reflect(V, H); + + // Compute dot products for this sample. + float NdotL = clamp(L.z, M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + // Compute the Fresnel term. + float Fc = mx_fresnel_schlick(VdotH, 0.0, 1.0); + + // Compute the per-sample geometric term. + // https://hal.inria.fr/hal-00996995v2/document, Algorithm 2 + float G2 = mx_ggx_smith_G2(NdotL, NdotV, alpha); + + // Add the contribution of this sample. + AB += vec2(G2 * (1.0 - Fc), G2 * Fc); + } + + // Apply the global component of the geometric term and normalize. + AB /= mx_ggx_smith_G1(NdotV, alpha) * float(SAMPLE_COUNT); + + // Return the final directional albedo. + return F0 * AB.x + F90 * AB.y; +} + +vec3 mx_ggx_dir_albedo(float NdotV, float alpha, vec3 F0, vec3 F90) +{ +#if DIRECTIONAL_ALBEDO_METHOD == 0 + return mx_ggx_dir_albedo_analytic(NdotV, alpha, F0, F90); +#elif DIRECTIONAL_ALBEDO_METHOD == 1 + return mx_ggx_dir_albedo_table_lookup(NdotV, alpha, F0, F90); +#else + return mx_ggx_dir_albedo_monte_carlo(NdotV, alpha, F0, F90); +#endif +} + +float mx_ggx_dir_albedo(float NdotV, float alpha, float F0, float F90) +{ + return mx_ggx_dir_albedo(NdotV, alpha, vec3(F0), vec3(F90)).x; +} + +// https://blog.selfshadow.com/publications/turquin/ms_comp_final.pdf +// Equations 14 and 16 +vec3 mx_ggx_energy_compensation(float NdotV, float alpha, vec3 Fss) +{ + float Ess = mx_ggx_dir_albedo(NdotV, alpha, 1.0, 1.0); + return 1.0 + Fss * (1.0 - Ess) / Ess; +} + +float mx_ggx_energy_compensation(float NdotV, float alpha, float Fss) +{ + return mx_ggx_energy_compensation(NdotV, alpha, vec3(Fss)).x; +} + +// Compute the average of an anisotropic alpha pair. +float mx_average_alpha(vec2 alpha) +{ + return sqrt(alpha.x * alpha.y); +} + +// Convert a real-valued index of refraction to normal-incidence reflectivity. +float mx_ior_to_f0(float ior) +{ + return mx_square((ior - 1.0) / (ior + 1.0)); +} + +// Convert normal-incidence reflectivity to real-valued index of refraction. +float mx_f0_to_ior(float F0) +{ + float sqrtF0 = sqrt(clamp(F0, 0.01, 0.99)); + return (1.0 + sqrtF0) / (1.0 - sqrtF0); +} +vec3 mx_f0_to_ior(vec3 F0) +{ + vec3 sqrtF0 = sqrt(clamp(F0, 0.01, 0.99)); + return (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0); +} + +// https://renderwonk.com/publications/wp-generalization-adobe/gen-adobe.pdf +vec3 mx_fresnel_hoffman_schlick(float cosTheta, FresnelData fd) +{ + const float COS_THETA_MAX = 1.0 / 7.0; + const float COS_THETA_FACTOR = 1.0 / (COS_THETA_MAX * pow(1.0 - COS_THETA_MAX, 6.0)); + + float x = clamp(cosTheta, 0.0, 1.0); + vec3 a = mix(fd.F0, fd.F90, pow(1.0 - COS_THETA_MAX, fd.exponent)) * (vec3(1.0) - fd.F82) * COS_THETA_FACTOR; + return mix(fd.F0, fd.F90, pow(1.0 - x, fd.exponent)) - a * x * mx_pow6(1.0 - x); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +float mx_fresnel_dielectric(float cosTheta, float ior) +{ + float c = cosTheta; + float g2 = ior*ior + c*c - 1.0; + if (g2 < 0.0) + { + // Total internal reflection + return 1.0; + } + + float g = sqrt(g2); + return 0.5 * mx_square((g - c) / (g + c)) * + (1.0 + mx_square(((g + c) * c - 1.0) / ((g - c) * c + 1.0))); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +vec2 mx_fresnel_dielectric_polarized(float cosTheta, float ior) +{ + float cosTheta2 = mx_square(clamp(cosTheta, 0.0, 1.0)); + float sinTheta2 = 1.0 - cosTheta2; + + float t0 = max(ior * ior - sinTheta2, 0.0); + float t1 = t0 + cosTheta2; + float t2 = 2.0 * sqrt(t0) * cosTheta; + float Rs = (t1 - t2) / (t1 + t2); + + float t3 = cosTheta2 * t0 + sinTheta2 * sinTheta2; + float t4 = t2 * sinTheta2; + float Rp = Rs * (t3 - t4) / (t3 + t4); + + return vec2(Rp, Rs); +} + +// https://seblagarde.wordpress.com/2013/04/29/memo-on-fresnel-equations/ +void mx_fresnel_conductor_polarized(float cosTheta, vec3 n, vec3 k, out vec3 Rp, out vec3 Rs) +{ + float cosTheta2 = mx_square(clamp(cosTheta, 0.0, 1.0)); + float sinTheta2 = 1.0 - cosTheta2; + vec3 n2 = n * n; + vec3 k2 = k * k; + + vec3 t0 = n2 - k2 - vec3(sinTheta2); + vec3 a2plusb2 = sqrt(t0 * t0 + 4.0 * n2 * k2); + vec3 t1 = a2plusb2 + vec3(cosTheta2); + vec3 a = sqrt(max(0.5 * (a2plusb2 + t0), 0.0)); + vec3 t2 = 2.0 * a * cosTheta; + Rs = (t1 - t2) / (t1 + t2); + + vec3 t3 = cosTheta2 * a2plusb2 + vec3(sinTheta2 * sinTheta2); + vec3 t4 = t2 * sinTheta2; + Rp = Rs * (t3 - t4) / (t3 + t4); +} + +vec3 mx_fresnel_conductor(float cosTheta, vec3 n, vec3 k) +{ + vec3 Rp, Rs; + mx_fresnel_conductor_polarized(cosTheta, n, k, Rp, Rs); + return 0.5 * (Rp + Rs); +} + +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +void mx_fresnel_conductor_phase_polarized(float cosTheta, float eta1, vec3 eta2, vec3 kappa2, out vec3 phiP, out vec3 phiS) +{ + vec3 k2 = kappa2 / eta2; + vec3 sinThetaSqr = vec3(1.0) - cosTheta * cosTheta; + vec3 A = eta2*eta2*(vec3(1.0)-k2*k2) - eta1*eta1*sinThetaSqr; + vec3 B = sqrt(A*A + mx_square(2.0*eta2*eta2*k2)); + vec3 U = sqrt((A+B)/2.0); + vec3 V = max(vec3(0.0), sqrt((B-A)/2.0)); + + phiS = mx_atan(2.0*eta1*V*cosTheta, U*U + V*V - mx_square(eta1*cosTheta)); + phiP = mx_atan(2.0*eta1*eta2*eta2*cosTheta * (2.0*k2*U - (vec3(1.0)-k2*k2) * V), + mx_square(eta2*eta2*(vec3(1.0)+k2*k2)*cosTheta) - eta1*eta1*(U*U+V*V)); +} + +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +vec3 mx_eval_sensitivity(float opd, vec3 shift) +{ + // Use Gaussian fits, given by 3 parameters: val, pos and var + float phase = 2.0*M_PI * opd; + vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13); + vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06); + vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09); + vec3 xyz = val * sqrt(2.0*M_PI * var) * mx_cos(pos * phase + shift) * exp(- var * phase*phase); + xyz.x += 9.7470e-14 * sqrt(2.0*M_PI * 4.5282e+09) * mx_cos(2.2399e+06 * phase + shift[0]) * exp(- 4.5282e+09 * phase*phase); + return xyz / 1.0685e-7; +} + +// A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence +// https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html +vec3 mx_fresnel_airy(float cosTheta, FresnelData fd) +{ + // XYZ to CIE 1931 RGB color space (using neutral E illuminant) + const mat3 XYZ_TO_RGB = mat3(2.3706743, -0.5138850, 0.0052982, -0.9000405, 1.4253036, -0.0146949, -0.4706338, 0.0885814, 1.0093968); + + // Assume vacuum on the outside + float eta1 = 1.0; + float eta2 = max(fd.tf_ior, eta1); + vec3 eta3 = (fd.model == FRESNEL_MODEL_SCHLICK) ? mx_f0_to_ior(fd.F0) : fd.ior; + vec3 kappa3 = (fd.model == FRESNEL_MODEL_SCHLICK) ? vec3(0.0) : fd.extinction; + float cosThetaT = sqrt(1.0 - (1.0 - mx_square(cosTheta)) * mx_square(eta1 / eta2)); + + // First interface + vec2 R12 = mx_fresnel_dielectric_polarized(cosTheta, eta2 / eta1); + if (cosThetaT <= 0.0) + { + // Total internal reflection + R12 = vec2(1.0); + } + vec2 T121 = vec2(1.0) - R12; + + // Second interface + vec3 R23p, R23s; + if (fd.model == FRESNEL_MODEL_SCHLICK) + { + vec3 f = mx_fresnel_hoffman_schlick(cosThetaT, fd); + R23p = 0.5 * f; + R23s = 0.5 * f; + } + else + { + mx_fresnel_conductor_polarized(cosThetaT, eta3 / eta2, kappa3 / eta2, R23p, R23s); + } + + // Phase shift + float cosB = mx_cos(mx_atan(eta2 / eta1)); + vec2 phi21 = vec2(cosTheta < cosB ? 0.0 : M_PI, M_PI); + vec3 phi23p, phi23s; + if (fd.model == FRESNEL_MODEL_SCHLICK) + { + phi23p = vec3((eta3[0] < eta2) ? M_PI : 0.0, + (eta3[1] < eta2) ? M_PI : 0.0, + (eta3[2] < eta2) ? M_PI : 0.0); + phi23s = phi23p; + } + else + { + mx_fresnel_conductor_phase_polarized(cosThetaT, eta2, eta3, kappa3, phi23p, phi23s); + } + vec3 r123p = max(sqrt(R12.x*R23p), 0.0); + vec3 r123s = max(sqrt(R12.y*R23s), 0.0); + + // Iridescence term + vec3 I = vec3(0.0); + vec3 Cm, Sm; + + // Optical path difference + float distMeters = fd.tf_thickness * 1.0e-9; + float opd = 2.0 * eta2 * cosThetaT * distMeters; + + // Iridescence term using spectral antialiasing for Parallel polarization + + // Reflectance term for m=0 (DC term amplitude) + vec3 Rs = (mx_square(T121.x) * R23p) / (vec3(1.0) - R12.x*R23p); + I += R12.x + Rs; + + // Reflectance term for m>0 (pairs of diracs) + Cm = Rs - T121.x; + for (int m=1; m<=2; m++) + { + Cm *= r123p; + Sm = 2.0 * mx_eval_sensitivity(float(m) * opd, float(m)*(phi23p+vec3(phi21.x))); + I += Cm*Sm; + } + + // Iridescence term using spectral antialiasing for Perpendicular polarization + + // Reflectance term for m=0 (DC term amplitude) + vec3 Rp = (mx_square(T121.y) * R23s) / (vec3(1.0) - R12.y*R23s); + I += R12.y + Rp; + + // Reflectance term for m>0 (pairs of diracs) + Cm = Rp - T121.y; + for (int m=1; m<=2; m++) + { + Cm *= r123s; + Sm = 2.0 * mx_eval_sensitivity(float(m) * opd, float(m)*(phi23s+vec3(phi21.y))); + I += Cm*Sm; + } + + // Average parallel and perpendicular polarization + I *= 0.5; + + // Convert back to RGB reflectance + I = clamp(XYZ_TO_RGB * I, 0.0, 1.0); + + return I; +} + +FresnelData mx_init_fresnel_dielectric(float ior, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_DIELECTRIC; + fd.airy = tf_thickness > 0.0; + fd.ior = vec3(ior); + fd.extinction = vec3(0.0); + fd.F0 = vec3(0.0); + fd.F82 = vec3(0.0); + fd.F90 = vec3(0.0); + fd.exponent = 0.0; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +FresnelData mx_init_fresnel_conductor(vec3 ior, vec3 extinction, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_CONDUCTOR; + fd.airy = tf_thickness > 0.0; + fd.ior = ior; + fd.extinction = extinction; + fd.F0 = vec3(0.0); + fd.F82 = vec3(0.0); + fd.F90 = vec3(0.0); + fd.exponent = 0.0; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +FresnelData mx_init_fresnel_schlick(vec3 F0, vec3 F82, vec3 F90, float exponent, float tf_thickness, float tf_ior) +{ + FresnelData fd; + fd.model = FRESNEL_MODEL_SCHLICK; + fd.airy = tf_thickness > 0.0; + fd.ior = vec3(0.0); + fd.extinction = vec3(0.0); + fd.F0 = F0; + fd.F82 = F82; + fd.F90 = F90; + fd.exponent = exponent; + fd.tf_thickness = tf_thickness; + fd.tf_ior = tf_ior; + fd.refraction = false; + return fd; +} + +vec3 mx_compute_fresnel(float cosTheta, FresnelData fd) +{ + if (fd.airy) + { + return mx_fresnel_airy(cosTheta, fd); + } + else if (fd.model == FRESNEL_MODEL_DIELECTRIC) + { + return vec3(mx_fresnel_dielectric(cosTheta, fd.ior.x)); + } + else if (fd.model == FRESNEL_MODEL_CONDUCTOR) + { + return mx_fresnel_conductor(cosTheta, fd.ior, fd.extinction); + } + else + { + return mx_fresnel_hoffman_schlick(cosTheta, fd); + } +} + +// Compute the refraction of a ray through a solid sphere. +vec3 mx_refraction_solid_sphere(vec3 R, vec3 N, float ior) +{ + R = refract(R, N, 1.0 / ior); + vec3 N1 = normalize(R * dot(R, N) - N * 0.5); + return refract(R, N1, ior); +} + +vec2 mx_latlong_projection(vec3 dir) +{ + float latitude = -mx_asin(dir.y) * M_PI_INV + 0.5; + float longitude = mx_atan(dir.x, -dir.z) * M_PI_INV * 0.5 + 0.5; + return vec2(longitude, latitude); +} + +vec3 mx_latlong_map_lookup(vec3 dir, mat4 transform, float lod, $texSamplerSignature) +{ + vec3 envDir = normalize((transform * vec4(dir,0.0)).xyz); + vec2 uv = mx_latlong_projection(envDir); + return textureLod($texSamplerSampler2D, uv, lod).rgb; +} + +// Return the mip level with the appropriate coverage for a filtered importance sample. +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch20.html +// Section 20.4 Equation 13 +float mx_latlong_compute_lod(vec3 dir, float pdf, float maxMipLevel, int envSamples) +{ + const float MIP_LEVEL_OFFSET = 1.5; + float effectiveMaxMipLevel = maxMipLevel - MIP_LEVEL_OFFSET; + float distortion = sqrt(1.0 - mx_square(dir.y)); + return max(effectiveMaxMipLevel - 0.5 * log2(float(envSamples) * pdf * distortion), 0.0); +} +// https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps +float mx_variance_shadow_occlusion(vec2 moments, float fragmentDepth) +{ + const float MIN_VARIANCE = 0.00001; + + // One-tailed inequality valid if fragmentDepth > moments.x. + float p = (fragmentDepth <= moments.x) ? 1.0 : 0.0; + + // Compute variance. + float variance = moments.y - mx_square(moments.x); + variance = max(variance, MIN_VARIANCE); + + // Compute probabilistic upper bound. + float d = fragmentDepth - moments.x; + float pMax = variance / (variance + mx_square(d)); + return max(p, pMax); +} + +vec2 mx_compute_depth_moments() +{ + float depth = gl_FragCoord.z; + return vec2(depth, mx_square(depth)); +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_surface_transmission(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd, vec3 tint) +{ + return tint; +} +#include "mx_microfacet_specular.glsl" + +vec3 mx_surface_transmission(vec3 N, vec3 V, vec3 X, vec2 alpha, int distribution, FresnelData fd, vec3 tint) +{ + // Approximate the appearance of surface transmission as glossy + // environment map refraction, ignoring any scene geometry that might + // be visible through the surface. + fd.refraction = true; + if ($refractionTwoSided) + { + tint = mx_square(tint); + } + return mx_environment_radiance(N, V, X, alpha, distribution, fd) * tint; +} +#include "lib/mx_closure_type.glsl" + +void mx_add_bsdf(ClosureData closureData, BSDF in1, BSDF in2, out BSDF result) +{ + result.response = in1.response + in2.response; + + // We derive the throughput for closure addition as follows: + // throughput_1 = 1 - dir_albedo_1 + // throughput_2 = 1 - dir_albedo_2 + // throughput_sum = 1 - (dir_albedo_1 + dir_albedo_2) + // = 1 - ((1 - throughput_1) + (1 - throughput_2)) + // = throughput_1 + throughput_2 - 1 + result.throughput = max(in1.throughput + in2.throughput - 1.0, 0.0); +} +#include "lib/mx_closure_type.glsl" + +void mx_add_edf(ClosureData closureData, EDF in1, EDF in2, out EDF result) +{ + result = in1 + in2; +} +#include "lib/mx_closure_type.glsl" + +void mx_anisotropic_vdf(ClosureData closureData, vec3 absorption, vec3 scattering, float anisotropy, inout BSDF bsdf) +{ + // TODO: Add some approximation for volumetric light absorption. +} +void mx_artistic_ior(vec3 reflectivity, vec3 edge_color, out vec3 ior, out vec3 extinction) +{ + // "Artist Friendly Metallic Fresnel", Ole Gulbrandsen, 2014 + // http://jcgt.org/published/0003/04/03/paper.pdf + + vec3 r = clamp(reflectivity, 0.0, 0.99); + vec3 r_sqrt = sqrt(r); + vec3 n_min = (1.0 - r) / (1.0 + r); + vec3 n_max = (1.0 + r_sqrt) / (1.0 - r_sqrt); + ior = mix(n_max, n_min, edge_color); + + vec3 np1 = ior + 1.0; + vec3 nm1 = ior - 1.0; + vec3 k2 = (np1*np1 * r - nm1*nm1) / (1.0 - r); + k2 = max(k2, 0.0); + extinction = sqrt(k2); +} +/// XYZ to Rec.709 RGB colorspace conversion +const mat3 XYZ_to_RGB = mat3( 3.2406, -0.9689, 0.0557, + -1.5372, 1.8758, -0.2040, + -0.4986, 0.0415, 1.0570); + +void mx_blackbody(float temperatureKelvin, out vec3 colorValue) +{ + float xc, yc; + float t, t2, t3, xc2, xc3; + + // if value outside valid range of approximation clamp to accepted temperature range + temperatureKelvin = clamp(temperatureKelvin, 1667.0, 25000.0); + + t = 1000.0 / temperatureKelvin; + t2 = t * t; + t3 = t * t * t; + + // Cubic spline approximation for Kelvin temperature to sRGB conversion + // (https://en.wikipedia.org/wiki/Planckian_locus#Approximation) + if (temperatureKelvin < 4000.0) { // 1667K <= temperatureKelvin < 4000K + xc = -0.2661239 * t3 - 0.2343580 * t2 + 0.8776956 * t + 0.179910; + } + else { // 4000K <= temperatureKelvin <= 25000K + xc = -3.0258469 * t3 + 2.1070379 * t2 + 0.2226347 * t + 0.240390; + } + xc2 = xc * xc; + xc3 = xc * xc * xc; + + if (temperatureKelvin < 2222.0) { // 1667K <= temperatureKelvin < 2222K + yc = -1.1063814 * xc3 - 1.34811020 * xc2 + 2.18555832 * xc - 0.20219683; + } + else if (temperatureKelvin < 4000.0) { // 2222K <= temperatureKelvin < 4000K + yc = -0.9549476 * xc3 - 1.37418593 * xc2 + 2.09137015 * xc - 0.16748867; + } + else { // 4000K <= temperatureKelvin <= 25000K + yc = 3.0817580 * xc3 - 5.87338670 * xc2 + 3.75112997 * xc - 0.37001483; + } + + if (yc <= 0.0) { // avoid division by zero + colorValue = vec3(1.0); + return; + } + + vec3 XYZ = vec3(xc / yc, 1.0, (1.0 - xc - yc) / yc); + + colorValue = XYZ_to_RGB * XYZ; + colorValue = max(colorValue, vec3(0.0)); +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_burley_diffuse_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float LdotH = clamp(dot(L, normalize(L + V)), M_FLOAT_EPS, 1.0); + + bsdf.response = color * closureData.occlusion * weight * NdotL * M_PI_INV; + bsdf.response *= mx_burley_diffuse(NdotV, NdotL, LdotH, roughness); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 Li = mx_environment_irradiance(N) * + mx_burley_diffuse_dir_albedo(NdotV, roughness); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +// https://eugenedeon.com/pdfs/egsrhair.pdf +void mx_deon_hair_absorption_from_melanin( + float melanin_concentration, + float melanin_redness, + // constants converted to color via exp(-c). the defaults are lin_rec709 colors, they may be + // transformed to scene-linear rendering color space. + vec3 eumelanin_color, // default: (0.657704, 0.498077, 0.254106) == exp(-(0.419, 0.697, 1.37)) + vec3 pheomelanin_color, // default: (0.829443, 0.670320, 0.349937) == exp(-(0.187, 0.4, 1.05)) + out vec3 absorption) +{ + float melanin = -log(max(1.0 - melanin_concentration, 0.0001)); + float eumelanin = melanin * (1.0 - melanin_redness); + float pheomelanin = melanin * melanin_redness; + absorption = max( + eumelanin * -log(eumelanin_color) + pheomelanin * -log(pheomelanin_color), + vec3(0.0) + ); +} + +// https://media.disneyanimation.com/uploads/production/publication_asset/152/asset/eurographics2016Fur_Smaller.pdf +void mx_chiang_hair_absorption_from_color(vec3 color, float betaN, out vec3 absorption) +{ + float b2 = betaN* betaN; + float b4 = b2 * b2; + float b_fac = + 5.969 - + (0.215 * betaN) + + (2.532 * b2) - + (10.73 * b2 * betaN) + + (5.574 * b4) + + (0.245 * b4 * betaN); + vec3 sigma = log(min(max(color, 0.001), vec3(1.0))) / b_fac; + absorption = sigma * sigma; +} + +void mx_chiang_hair_roughness( + float longitudinal, + float azimuthal, + float scale_TT, // empirical roughness scale from Marschner et al. (2003). + float scale_TRT, // default: scale_TT = 0.5, scale_TRT = 2.0 + out vec2 roughness_R, + out vec2 roughness_TT, + out vec2 roughness_TRT +) +{ + float lr = clamp(longitudinal, 0.001, 1.0); + float ar = clamp(azimuthal, 0.001, 1.0); + + // longitudinal variance + float v = 0.726 * lr + 0.812 * lr * lr + 3.7 * pow(lr, 20.0); + v = v * v; + + float s = 0.265 * ar + 1.194 * ar * ar + 5.372 * pow(ar, 22.0); + + roughness_R = vec2(v, s); + roughness_TT = vec2(v * scale_TT * scale_TT, s); + roughness_TRT = vec2(v * scale_TRT * scale_TRT, s); +} + +float mx_hair_transform_sin_cos(float x) +{ + return sqrt(max(1.0 - x * x, 0.0)); +} + +float mx_hair_I0(float x) +{ + float v = 1.0; + float n = 1.0; + float d = 1.0; + float f = 1.0; + float x2 = x * x; + for (int i = 0; i < 9 ; ++i) + { + d *= 4.0 * (f * f); + n *= x2; + v += n / d; + f += 1.0; + } + return v; +} + +float mx_hair_log_I0(float x) +{ + if (x > 12.0) + return x + 0.5 * (-log(2.0 * M_PI) + log(1.0 / x) + 1.0 / (8.0 * x)); + else + return log(mx_hair_I0(x)); +} + +float mx_hair_logistic(float x, float s) +{ + if (x > 0.0) + x = -x; + float f = exp(x / s); + return f / (s * (1.0 + f) * (1.0 + f)); +} + +float mx_hair_logistic_cdf(float x, float s) +{ + return 1.0 / (1.0 + exp(-x / s)); +} + +float mx_hair_trimmed_logistic(float x, float s, float a, float b) +{ + // the constant can be found in Chiang et al. (2016) Appendix A, eq. (12) + s *= 0.626657; // sqrt(M_PI/8) + return mx_hair_logistic(x, s) / (mx_hair_logistic_cdf(b, s) - mx_hair_logistic_cdf(a, s)); +} + +float mx_hair_phi(int p, float gammaO, float gammaT) +{ + float fP = float(p); + return 2.0 * fP * gammaT - 2.0 * gammaO + fP * M_PI; +} + +float mx_hair_longitudinal_scattering( // Mp + float sinThetaI, + float cosThetaI, + float sinThetaO, + float cosThetaO, + float v +) +{ + float inv_v = 1.0 / v; + float a = cosThetaO * cosThetaI * inv_v; + float b = sinThetaO * sinThetaI * inv_v; + if (v < 0.1) + return exp(mx_hair_log_I0(a) - b - inv_v + 0.6931 + log(0.5 * inv_v)); + else + return ((exp(-b) * mx_hair_I0(a)) / (2.0 * v * sinh(inv_v))); +} + +float mx_hair_azimuthal_scattering( // Np + float phi, + int p, + float s, + float gammaO, + float gammaT +) +{ + if (p >= 3) + return float(0.5 / M_PI); + + float dphi = phi - mx_hair_phi(p, gammaO, gammaT); + if (isinf(dphi)) + return float(0.5 / M_PI); + + while (dphi > M_PI) dphi -= (2.0 * M_PI); + while (dphi < (-M_PI)) dphi += (2.0 * M_PI); + + return mx_hair_trimmed_logistic(dphi, s, -M_PI, M_PI); +} + +void mx_hair_alpha_angles( + float alpha, + float sinThetaI, + float cosThetaI, + out vec2 angles[4] +) +{ + // 0:R, 1:TT, 2:TRT, 3:TRRT+ + for (int i = 0; i <= 3; ++i) + { + if (alpha == 0.0 || i == 3) + angles[i] = vec2(sinThetaI, cosThetaI); + else + { + float m = 2.0 - float(i) * 3.0; + float sa = sin(m * alpha); + float ca = cos(m * alpha); + angles[i].x = sinThetaI * ca + cosThetaI * sa; + angles[i].y = cosThetaI * ca - sinThetaI * sa; + } + } +} + +void mx_hair_attenuation(float f, vec3 T, out vec3 Ap[4]) // Ap +{ + // 0:R, 1:TT, 2:TRT, 3:TRRT+ + Ap[0] = vec3(f); + Ap[1] = (1.0 - f) * (1.0 - f) * T; + Ap[2] = Ap[1] * T * f; + Ap[3] = Ap[2] * T * f / (vec3(1.0) - T * f); +} + +void mx_chiang_hair_bsdf(ClosureData closureData, vec3 tint_R, vec3 tint_TT, vec3 tint_TRT, float ior, + vec2 roughness_R, vec2 roughness_TT, vec2 roughness_TRT, float cuticle_angle, + vec3 absorption_coefficient, vec3 N, vec3 X, inout BSDF bsdf) +{ + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + + bsdf.throughput = vec3(0.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + + float sinThetaO = dot(V, X); + float sinThetaI = dot(L, X); + float cosThetaO = mx_hair_transform_sin_cos(sinThetaO); + float cosThetaI = mx_hair_transform_sin_cos(sinThetaI); + + float y1 = dot(L, N); + float x1 = dot(L, Y); + float y2 = dot(V, N); + float x2 = dot(V, Y); + float phi = mx_atan(y1 * x2 - y2 * x1, x1 * x2 + y1 * y2); + + vec3 k1_p = normalize(V - X * dot(V, X)); + float cosGammaO = dot(N, k1_p); + float sinGammaO = mx_hair_transform_sin_cos(cosGammaO); + if (dot(k1_p, Y) > 0.0) + sinGammaO = -sinGammaO; + float gammaO = asin(sinGammaO); + + float sinThetaT = sinThetaO / ior; + float cosThetaT = mx_hair_transform_sin_cos(sinThetaT); + float etaP = sqrt(max(ior * ior - sinThetaO * sinThetaO, 0.0)) / max(cosThetaO, M_FLOAT_EPS); + float sinGammaT = max(min(sinGammaO / etaP, 1.0), -1.0); + float cosGammaT = sqrt(1.0 - sinGammaT * sinGammaT); + float gammaT = asin(sinGammaT); + + // attenuation + vec3 Ap[4]; + float fresnel = mx_fresnel_dielectric(cosThetaO * cosGammaO, ior); + vec3 T = exp(-absorption_coefficient * (2.0 * cosGammaT / cosThetaT)); + mx_hair_attenuation(fresnel, T, Ap); + + // parameters for each lobe + vec2 angles[4]; + float alpha = cuticle_angle * M_PI - (M_PI / 2.0); // remap [0, 1] to [-PI/2, PI/2] + mx_hair_alpha_angles(alpha, sinThetaI, cosThetaI, angles); + + vec3 tint[4]; + tint[0] = tint_R; + tint[1] = tint_TT; + tint[2] = tint_TRT; + tint[3] = tint_TRT; + + roughness_R = clamp(roughness_R, 0.001, 1.0); + roughness_TT = clamp(roughness_TT, 0.001, 1.0); + roughness_TRT = clamp(roughness_TRT, 0.001, 1.0); + + vec2 vs[4]; + vs[0] = roughness_R; + vs[1] = roughness_TT; + vs[2] = roughness_TRT; + vs[3] = roughness_TRT; + + // R, TT, TRT, TRRT+ + vec3 F = vec3(0.0); + for (int i = 0; i <= 3; ++i) + { + tint[i] = max(tint[i], vec3(0.0)); + float Mp = mx_hair_longitudinal_scattering(angles[i].x, angles[i].y, sinThetaO, cosThetaO, vs[i].x); + float Np = (i == 3) ? (1.0 / 2.0 * M_PI) : mx_hair_azimuthal_scattering(phi, i, vs[i].y, gammaO, gammaT); + F += Mp * Np * tint[i] * Ap[i]; + } + + bsdf.response = F * closureData.occlusion * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + // This indirect term is a *very* rough approximation. + + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + FresnelData fd = mx_init_fresnel_dielectric(ior, 0.0, 1.0); + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec2 roughness = (roughness_R + roughness_TT + roughness_TRT) / vec2(3.0); // ? + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + // Use GGX to match the behavior of mx_environment_radiance. + float F0 = mx_ior_to_f0(ior); + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, 0, fd); + vec3 tint = (tint_R + tint_TT + tint_TRT) / vec3(3.0); // ? + + bsdf.response = Li * comp * tint; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_conductor_bsdf(ClosureData closureData, float weight, vec3 ior_n, vec3 ior_k, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + FresnelData fd = mx_init_fresnel_conductor(ior_n, ior_k, thinfilm_thickness, thinfilm_ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + + // Note: NdotL is cancelled out + bsdf.response = D * F * G * comp * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * comp * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_dielectric_bsdf(ClosureData closureData, float weight, vec3 tint, float ior, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, int scatter_mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + if (closureData.closureType != CLOSURE_TYPE_TRANSMISSION && scatter_mode == 1) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + FresnelData fd = mx_init_fresnel_dielectric(ior, thinfilm_thickness, thinfilm_ior); + float F0 = mx_ior_to_f0(ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + vec3 safeTint = max(tint, 0.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + bsdf.response = D * F * G * comp * safeTint * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_TRANSMISSION) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + if (scatter_mode != 0) + { + bsdf.response = mx_surface_transmission(N, V, X, safeAlpha, distribution, fd, safeTint) * weight; + } + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, F0, 1.0) * comp; + bsdf.throughput = 1.0 - dirAlbedo * weight; + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * safeTint * comp * weight; + } +} +void mx_displacement_float(float disp, float scale, out displacementshader result) +{ + result.offset = vec3(disp); + result.scale = scale; +} +void mx_displacement_vector3(vec3 disp, float scale, out displacementshader result) +{ + result.offset = disp; + result.scale = scale; +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_specular.glsl" + +void mx_generalized_schlick_bsdf(ClosureData closureData, float weight, vec3 color0, vec3 color82, vec3 color90, float exponent, vec2 roughness, float thinfilm_thickness, float thinfilm_ior, vec3 N, vec3 X, int distribution, int scatter_mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + if (closureData.closureType != CLOSURE_TYPE_TRANSMISSION && scatter_mode == 1) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + vec3 safeColor0 = max(color0, 0.0); + vec3 safeColor82 = max(color82, 0.0); + vec3 safeColor90 = max(color90, 0.0); + FresnelData fd = mx_init_fresnel_schlick(safeColor0, safeColor82, safeColor90, exponent, thinfilm_thickness, thinfilm_ior); + + vec2 safeAlpha = clamp(roughness, M_FLOAT_EPS, 1.0); + float avgAlpha = mx_average_alpha(safeAlpha); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + X = normalize(X - dot(X, N) * N); + vec3 Y = cross(N, X); + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float VdotH = clamp(dot(V, H), M_FLOAT_EPS, 1.0); + + vec3 Ht = vec3(dot(H, X), dot(H, Y), dot(H, N)); + + vec3 F = mx_compute_fresnel(VdotH, fd); + float D = mx_ggx_NDF(Ht, safeAlpha); + float G = mx_ggx_smith_G2(NdotL, NdotV, avgAlpha); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + // Note: NdotL is cancelled out + bsdf.response = D * F * G * comp * closureData.occlusion * weight / (4.0 * NdotV); + } + else if (closureData.closureType == CLOSURE_TYPE_TRANSMISSION) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + if (scatter_mode != 0) + { + float avgF0 = dot(safeColor0, vec3(1.0 / 3.0)); + fd.ior = vec3(mx_f0_to_ior(avgF0)); + bsdf.response = mx_surface_transmission(N, V, X, safeAlpha, distribution, fd, vec3(1.0)) * weight; + } + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 F = mx_compute_fresnel(NdotV, fd); + + vec3 comp = mx_ggx_energy_compensation(NdotV, avgAlpha, F); + vec3 dirAlbedo = mx_ggx_dir_albedo(NdotV, avgAlpha, safeColor0, safeColor90) * comp; + float avgDirAlbedo = dot(dirAlbedo, vec3(1.0 / 3.0)); + bsdf.throughput = vec3(1.0 - avgDirAlbedo * weight); + + vec3 Li = mx_environment_radiance(N, V, X, safeAlpha, distribution, fd); + bsdf.response = Li * comp * weight; + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet.glsl" + +void mx_generalized_schlick_edf(ClosureData closureData, vec3 color0, vec3 color90, float exponent, EDF base, out EDF result) +{ + if (closureData.closureType == CLOSURE_TYPE_EMISSION) + { + vec3 N = mx_forward_facing_normal(closureData.N, closureData.V); + float NdotV = clamp(dot(N, closureData.V), M_FLOAT_EPS, 1.0); + vec3 f = mx_fresnel_schlick(NdotV, color0, color90, exponent); + result = base * f; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_layer_bsdf(ClosureData closureData, BSDF top, BSDF base, out BSDF result) +{ + result.response = top.response + base.response * top.throughput; + result.throughput = top.throughput * base.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_layer_vdf(ClosureData closureData, BSDF top, BSDF base, out BSDF result) +{ + result.response = top.response + base.response; + result.throughput = top.throughput + base.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_mix_bsdf(ClosureData closureData, BSDF fg, BSDF bg, float mixValue, out BSDF result) +{ + result.response = mix(bg.response, fg.response, mixValue); + result.throughput = mix(bg.throughput, fg.throughput, mixValue); +} +#include "lib/mx_closure_type.glsl" + +void mx_mix_edf(ClosureData closureData, EDF fg, EDF bg, float mixValue, out EDF result) +{ + result = mix(bg, fg, mixValue); +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_bsdf_color3(ClosureData closureData, BSDF in1, vec3 in2, out BSDF result) +{ + vec3 tint = clamp(in2, 0.0, 1.0); + result.response = in1.response * tint; + result.throughput = in1.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_bsdf_float(ClosureData closureData, BSDF in1, float in2, out BSDF result) +{ + float weight = clamp(in2, 0.0, 1.0); + result.response = in1.response * weight; + result.throughput = in1.throughput; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_edf_color3(ClosureData closureData, EDF in1, vec3 in2, out EDF result) +{ + result = in1 * in2; +} +#include "lib/mx_closure_type.glsl" + +void mx_multiply_edf_float(ClosureData closureData, EDF in1, float in2, out EDF result) +{ + result = in1 * in2; +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_oren_nayar_diffuse_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, bool energy_compensation, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float LdotV = clamp(dot(L, V), M_FLOAT_EPS, 1.0); + + vec3 diffuse = energy_compensation ? + mx_oren_nayar_compensated_diffuse(NdotV, NdotL, LdotV, roughness, color) : + mx_oren_nayar_diffuse(NdotV, NdotL, LdotV, roughness) * color; + bsdf.response = diffuse * closureData.occlusion * weight * NdotL * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 diffuse = energy_compensation ? + mx_oren_nayar_compensated_diffuse_dir_albedo(NdotV, roughness, color) : + mx_oren_nayar_diffuse_dir_albedo(NdotV, roughness) * color; + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * diffuse * weight; + } +} +void mx_roughness_anisotropy(float roughness, float anisotropy, out vec2 result) +{ + float roughness_sqr = clamp(roughness*roughness, M_FLOAT_EPS, 1.0); + if (anisotropy > 0.0) + { + float aspect = sqrt(1.0 - clamp(anisotropy, 0.0, 0.98)); + result.x = min(roughness_sqr / aspect, 1.0); + result.y = roughness_sqr * aspect; + } + else + { + result.x = roughness_sqr; + result.y = roughness_sqr; + } +} +void mx_roughness_dual(vec2 roughness, out vec2 result) +{ + if (roughness.y < 0.0) + { + roughness.y = roughness.x; + } + result.x = clamp(roughness.x * roughness.x, M_FLOAT_EPS, 1.0); + result.y = clamp(roughness.y * roughness.y, M_FLOAT_EPS, 1.0); +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_sheen.glsl" + +void mx_sheen_bsdf(ClosureData closureData, float weight, vec3 color, float roughness, vec3 N, int mode, inout BSDF bsdf) +{ + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + N = mx_forward_facing_normal(N, V); + float NdotV = clamp(dot(N, V), M_FLOAT_EPS, 1.0); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float dirAlbedo; + if (mode == 0) + { + vec3 H = normalize(L + V); + + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float NdotH = clamp(dot(N, H), M_FLOAT_EPS, 1.0); + + vec3 fr = color * mx_imageworks_sheen_brdf(NdotL, NdotV, NdotH, roughness); + dirAlbedo = mx_imageworks_sheen_dir_albedo(NdotV, roughness); + + // We need to include NdotL from the light integral here + // as in this case it's not cancelled out by the BRDF denominator. + bsdf.response = fr * NdotL * closureData.occlusion * weight; + } + else + { + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + + vec3 fr = color * mx_zeltner_sheen_brdf(L, V, N, NdotV, roughness); + dirAlbedo = mx_zeltner_sheen_dir_albedo(NdotV, roughness); + bsdf.response = dirAlbedo * fr * closureData.occlusion * weight; + } + bsdf.throughput = vec3(1.0 - dirAlbedo * weight); + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + float dirAlbedo; + if (mode == 0) + { + dirAlbedo = mx_imageworks_sheen_dir_albedo(NdotV, roughness); + } + else + { + roughness = clamp(roughness, 0.01, 1.0); // Clamp to range of original impl. + dirAlbedo = mx_zeltner_sheen_dir_albedo(NdotV, roughness); + } + + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * dirAlbedo * weight; + bsdf.throughput = vec3(1.0 - dirAlbedo * weight); + } +} +#include "lib/mx_closure_type.glsl" +#include "lib/mx_microfacet_diffuse.glsl" + +void mx_subsurface_bsdf(ClosureData closureData, float weight, vec3 color, vec3 radius, float anisotropy, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + vec3 P = closureData.P; + float occlusion = closureData.occlusion; + + N = mx_forward_facing_normal(N, V); + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + vec3 sss = mx_subsurface_scattering_approx(N, L, P, color, radius); + float NdotL = clamp(dot(N, L), M_FLOAT_EPS, 1.0); + float visibleOcclusion = 1.0 - NdotL * (1.0 - occlusion); + bsdf.response = sss * visibleOcclusion * weight; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + // For now, we render indirect subsurface as simple indirect diffuse. + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_translucent_bsdf(ClosureData closureData, float weight, vec3 color, vec3 N, inout BSDF bsdf) +{ + bsdf.throughput = vec3(0.0); + + if (weight < M_FLOAT_EPS) + { + return; + } + + vec3 V = closureData.V; + vec3 L = closureData.L; + + // Invert normal since we're transmitting light from the other side + N = -N; + + if (closureData.closureType == CLOSURE_TYPE_REFLECTION) + { + float NdotL = clamp(dot(N, L), 0.0, 1.0); + bsdf.response = color * weight * NdotL * M_PI_INV; + } + else if (closureData.closureType == CLOSURE_TYPE_INDIRECT) + { + vec3 Li = mx_environment_irradiance(N); + bsdf.response = Li * color * weight; + } +} +#include "lib/mx_closure_type.glsl" + +void mx_uniform_edf(ClosureData closureData, vec3 color, out EDF result) +{ + if (closureData.closureType == CLOSURE_TYPE_EMISSION) + { + result = color; + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +float mx_square(float x) +{ + return x*x; +} + +vector2 mx_square(vector2 x) +{ + return x*x; +} + +vector mx_square(vector x) +{ + return x*x; +} + +vector4 mx_square(vector4 x) +{ + return x*x; +} + +float mx_pow5(float x) +{ + return mx_square(mx_square(x)) * x; +} + +color mx_fresnel_conductor(float cosTheta, vector n, vector k) +{ + float c2 = cosTheta*cosTheta; + vector n2_k2 = n*n + k*k; + vector nc2 = 2.0 * n * cosTheta; + + vector rs_a = n2_k2 + c2; + vector rp_a = n2_k2 * c2 + 1.0; + vector rs = (rs_a - nc2) / (rs_a + nc2); + vector rp = (rp_a - nc2) / (rp_a + nc2); + + return 0.5 * (rs + rp); +} + +// Standard Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} +color mx_fresnel_schlick(float cosTheta, color F0) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return F0 + (1.0 - F0) * x5; +} + +// Generalized Schlick Fresnel +float mx_fresnel_schlick(float cosTheta, float F0, float F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} +color mx_fresnel_schlick(float cosTheta, color F0, color F90) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + float x5 = mx_pow5(x); + return mix(F0, F90, x5); +} + +// Generalized Schlick Fresnel with a variable exponent +color mx_fresnel_schlick(float cosTheta, float f0, float f90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(f0, f90, pow(x, exponent)); +} +color mx_fresnel_schlick(float cosTheta, color f0, color f90, float exponent) +{ + float x = clamp(1.0 - cosTheta, 0.0, 1.0); + return mix(f0, f90, pow(x, exponent)); +} +void mx_anisotropic_vdf(color absorption, color scattering, float anisotropy, output VDF vdf) +{ + // Convert from absorption and scattering coefficients to + // extinction coefficient and single-scattering albedo. + color extinction = absorption + scattering; + color albedo = scattering / extinction; + vdf = anisotropic_vdf(albedo, extinction, anisotropy); +} +void mx_artistic_ior(color reflectivity, color edge_color, output vector ior, output vector extinction) +{ + // "Artist Friendly Metallic Fresnel", Ole Gulbrandsen, 2014 + // http://jcgt.org/published/0003/04/03/paper.pdf + + color r = clamp(reflectivity, 0.0, 0.99); + color r_sqrt = sqrt(r); + color n_min = (1.0 - r) / (1.0 + r); + color n_max = (1.0 + r_sqrt) / (1.0 - r_sqrt); + ior = mix(n_max, n_min, edge_color); + + color np1 = ior + 1.0; + color nm1 = ior - 1.0; + color k2 = (np1*np1 * r - nm1*nm1) / (1.0 - r); + k2 = max(k2, 0.0); + extinction = sqrt(k2); +} +void mx_blackbody(float temp, output color color_value) +{ + float xc, yc; + float t, t2, t3, xc2, xc3; + + // if value outside valid range of approximation clamp to accepted temperature range + float temperature = clamp(temp, 1667.0, 25000.0); + + t = 1000.0 / temperature; + t2 = t * t; + t3 = t * t * t; + + // Cubic spline approximation for Kelvin temperature to sRGB conversion + // (https://en.wikipedia.org/wiki/Planckian_locus#Approximation) + if (temperature < 4000.0) { // 1667K <= temperature < 4000K + xc = -0.2661239 * t3 - 0.2343580 * t2 + 0.8776956 * t + 0.179910; + } + else { // 4000K <= temperature <= 25000K + xc = -3.0258469 * t3 + 2.1070379 * t2 + 0.2226347 * t + 0.240390; + } + xc2 = xc * xc; + xc3 = xc * xc * xc; + + if (temperature < 2222.0) { // 1667K <= temperature < 2222K + yc = -1.1063814 * xc3 - 1.34811020 * xc2 + 2.18555832 * xc - 0.20219683; + } + else if (temperature < 4000.0) { // 2222K <= temperature < 4000K + yc = -0.9549476 * xc3 - 1.37418593 * xc2 + 2.09137015 * xc - 0.16748867; + } + else { // 4000K <= temperature <= 25000K + yc = 3.0817580 * xc3 - 5.87338670 * xc2 + 3.75112997 * xc - 0.37001483; + } + + if (yc <= 0.0) { // avoid division by zero + color_value = color(1.0); + return; + } + + vector XYZ = vector(xc / yc, 1.0, (1 - xc - yc) / yc); + + /// XYZ to Rec.709 RGB colorspace conversion + matrix XYZ_to_RGB = matrix( 3.2406, -0.9689, 0.0557, 0.0, + -1.5372, 1.8758, -0.2040, 0.0, + -0.4986, 0.0415, 1.0570, 0.0, + 0.0, 0.0, 0.0, 1.0); + + color_value = transform(XYZ_to_RGB, XYZ); + color_value = max(color_value, vector(0.0)); +} +void mx_chiang_hair_bsdf(color tint_R, color tint_TT, color tint_TRT, float ior, + vector2 roughness_R, vector2 roughness_TT, vector2 roughness_TRT, + float cuticle_angle, vector absorption_coefficient, normal N, vector U, output BSDF bsdf) +{ +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + bsdf = chiang_hair_bsdf(N, U, tint_R, tint_TT, tint_TRT, ior, + roughness_R.x, roughness_TT.x, roughness_TRT.x, roughness_R.y, roughness_TT.y, roughness_TRT.y, + cuticle_angle, absorption_coefficient); +#else + bsdf = dielectric_bsdf(N, U, color(1), color(0), 0.1, 0.1, ior, "ggx"); +#endif +} +void mx_chiang_hair_roughness(float longitudinal, float azimuthal, float scale_TT, float scale_TRT, output vector2 roughness_R, output vector2 roughness_TT, output vector2 roughness_TRT) +{ + // TODO: Write OSL implementation of this node. + roughness_R = vector2(0.0, 0.0); + roughness_TT = vector2(0.0, 0.0); + roughness_TRT = vector2(0.0, 0.0); +} +void mx_dielectric_bsdf(float weight, color tint, float ior, vector2 roughness, float thinfilm_thickness, float thinfilm_ior, normal N, vector U, string distribution, string scatter_mode, output BSDF bsdf) +{ + color reflection_tint = (scatter_mode == "T") ? color(0.0) : tint; + color transmission_tint = (scatter_mode == "R") ? color(0.0) : tint; + bsdf = weight * dielectric_bsdf(N, U, reflection_tint, transmission_tint, roughness.x, roughness.y, ior, distribution, "thinfilm_thickness", thinfilm_thickness, "thinfilm_ior", thinfilm_ior); +} +void mx_generalized_schlick_bsdf(float weight, color color0, color color82, color color90, float exponent, vector2 roughness, float thinfilm_thickness, float thinfilm_ior, normal N, vector U, string distribution, string scatter_mode, output BSDF bsdf) +{ + color reflection_tint = (scatter_mode == "T") ? color(0.0) : color(1.0); + color transmission_tint = (scatter_mode == "R") ? color(0.0) : color(1.0); + bsdf = weight * generalized_schlick_bsdf(N, U, reflection_tint, transmission_tint, roughness.x, roughness.y, color0, color90, exponent, distribution, "thinfilm_thickness", thinfilm_thickness, "thinfilm_ior", thinfilm_ior); +} +#include "lib/mx_microfacet.osl" + +void mx_generalized_schlick_edf(color color0, color color90, float exponent, EDF base, output EDF result) +{ + float NdotV = fabs(dot(N,-I)); + color f = mx_fresnel_schlick(NdotV, color0, color90, exponent); + result = base * f; +} +void mx_roughness_anisotropy(float roughness, float anisotropy, output vector2 result) +{ + float roughness_sqr = clamp(roughness*roughness, M_FLOAT_EPS, 1.0); + if (anisotropy > 0.0) + { + float aspect = sqrt(1.0 - clamp(anisotropy, 0.0, 0.98)); + result.x = min(roughness_sqr / aspect, 1.0); + result.y = roughness_sqr * aspect; + } + else + { + result.x = roughness_sqr; + result.y = roughness_sqr; + } +} +void mx_roughness_dual(vector2 roughness, output vector2 result) +{ + result.x = clamp(roughness.x * roughness.x, M_FLOAT_EPS, 1.0); + if (roughness.y < 0.0) + { + result.y = result.x; + } + else + { + result.y = clamp(roughness.y * roughness.y, M_FLOAT_EPS, 1.0); + } +} +void mx_subsurface_bsdf(float weight, color albedo, color radius, float anisotropy, normal N, output BSDF bsdf) +{ +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + bsdf = weight * subsurface_bssrdf(N, albedo, radius, anisotropy); +#else + bsdf = weight * subsurface_bssrdf(N, albedo, 1.0, radius, anisotropy); +#endif +} +void mx_surface(BSDF bsdf, EDF edf, float opacity, int thin_walled, output surfaceshader result) +{ + result.bsdf = bsdf; + result.edf = edf; + result.opacity = clamp(opacity, 0.0, 1.0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Blend 3 normals by blending the gradients +// Morten S. Mikkelsen, Surface Gradient–Based Bump Mapping Framework, Journal of +// Computer Graphics Techniques (JCGT), vol. 9, no. 3, 60–90, 2020 +// http://jcgt.org/published/0009/03/04/ +vec3 mx_normals_to_gradient(vec3 N, vec3 Np) +{ + float d = dot(N, Np); + vec3 g = (d * N - Np) / max(M_FLOAT_EPS, abs(d)); + return g; +} + +vec3 mx_gradient_blend_3_normals(vec3 N, vec3 N1, float N1_weight, vec3 N2, float N2_weight, vec3 N3, float N3_weight) +{ + float w1 = clamp(N1_weight, 0.0, 1.0); + float w2 = clamp(N2_weight, 0.0, 1.0); + float w3 = clamp(N3_weight, 0.0, 1.0); + + vec3 g1 = mx_normals_to_gradient(N, N1); + vec3 g2 = mx_normals_to_gradient(N, N2); + vec3 g3 = mx_normals_to_gradient(N, N3); + + // blend + vec3 gg = w1 * g1 + w2 * g2 + w3 * g3; + + // gradient to normal + return normalize(N - gg); +} + +// This function should be categorized in mx_math.glsl but it causes build errors in MSL +// so adding here for a workaround +mat3 mx_axis_rotation_matrix(vec3 a, float r) +{ + float s = sin(r); + float c = cos(r); + float omc = 1.0 - c; + return mat3( + a.x*a.x*omc + c, a.x*a.y*omc - a.z*s, a.x*a.z*omc + a.y*s, + a.y*a.x*omc + a.z*s, a.y*a.y*omc + c, a.y*a.z*omc - a.x*s, + a.z*a.x*omc - a.y*s, a.z*a.y*omc + a.x*s, a.z*a.z*omc + c + ); +} +// https://www.shadertoy.com/view/4djSRW +vec2 mx_hextile_hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.x, p.y, p.x) * vec3(0.1031, 0.1030, 0.0973)); + p3 += dot(p3, vec3(p3.y, p3.z, p3.x) + 33.33); + return fract((vec2(p3.x, p3.x) + vec2(p3.y, p3.z)) * vec2(p3.z, p3.y)); +} + +// Christophe Schlick. “Fast Alternatives to Perlin’s Bias and Gain Functions”. +// In Graphics Gems IV, Morgan Kaufmann, 1994, pages 401–403. +// https://dept-info.labri.fr/~schlick/DOC/gem2.html +float mx_schlick_gain(float x, float r) +{ + float rr = clamp(r, 0.001, 0.999); // to avoid glitch + float a = (1.0 / rr - 2.0) * (1.0 - 2.0 * x); + return (x < 0.5) ? x / (a + 1.0) : (a - x) / (a - 1.0); +} + +struct HextileData +{ + vec2 coord1; + vec2 coord2; + vec2 coord3; + vec3 weights; + float rot_radian1; + float rot_radian2; + float rot_radian3; + vec2 ddx1; + vec2 ddx2; + vec2 ddx3; + vec2 ddy1; + vec2 ddy2; + vec2 ddy3; +}; + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +HextileData mx_hextile_coord( + vec2 coord, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range) +{ + float sqrt3_2 = sqrt(3.0) * 2.0; + + // scale coord to maintain the original fit + vec2 st = coord * sqrt3_2; + + // skew input space into simplex triangle grid + // (1, 0, -tan(30), 2*tan(30)) + mat2 to_skewed = mat2(1.0, 0.0, -0.57735027, 1.15470054); + vec2 st_skewed = to_skewed * st; + + // barycentric weights + vec2 st_frac = fract(st_skewed); + vec3 temp = vec3(st_frac.x, st_frac.y, 0.0); + temp.z = 1.0 - temp.x - temp.y; + + float s = step(0.0, -temp.z); + float s2 = 2.0 * s - 1.0; + + float w1 = -temp.z * s2; + float w2 = s - temp.y * s2; + float w3 = s - temp.x * s2; + + // vertex IDs + ivec2 base_id = ivec2(floor(st_skewed)); + int si = int(s); + ivec2 id1 = base_id + ivec2(si, si); + ivec2 id2 = base_id + ivec2(si, 1 - si); + ivec2 id3 = base_id + ivec2(1 - si, si); + + // tile center + mat2 inv_skewed = mat2(1.0, 0.0, 0.5, 1.0 / 1.15470054); + vec2 ctr1 = inv_skewed * vec2(id1) / vec2(sqrt3_2); + vec2 ctr2 = inv_skewed * vec2(id2) / vec2(sqrt3_2); + vec2 ctr3 = inv_skewed * vec2(id3) / vec2(sqrt3_2); + + // reuse hash for performance + vec2 seed_offset = vec2(0.12345); // to avoid some zeros + vec2 rand1 = mx_hextile_hash(vec2(id1) + seed_offset); + vec2 rand2 = mx_hextile_hash(vec2(id2) + seed_offset); + vec2 rand3 = mx_hextile_hash(vec2(id3) + seed_offset); + + // randomized rotation matrix + vec2 rr = mx_radians(rotation_range); + float rv1 = mix(rr.x, rr.y, rand1.x * rotation); + float rv2 = mix(rr.x, rr.y, rand2.x * rotation); + float rv3 = mix(rr.x, rr.y, rand3.x * rotation); + float sin_r1 = sin(rv1); + float sin_r2 = sin(rv2); + float sin_r3 = sin(rv3); + float cos_r1 = cos(rv1); + float cos_r2 = cos(rv2); + float cos_r3 = cos(rv3); + mat2 rm1 = mat2(cos_r1, -sin_r1, sin_r1, cos_r1); + mat2 rm2 = mat2(cos_r2, -sin_r2, sin_r2, cos_r2); + mat2 rm3 = mat2(cos_r3, -sin_r3, sin_r3, cos_r3); + + // randomized scale + vec2 sr = scale_range; + vec2 scale1 = vec2(mix(1.0, mix(sr.x, sr.y, rand1.y), scale)); + vec2 scale2 = vec2(mix(1.0, mix(sr.x, sr.y, rand2.y), scale)); + vec2 scale3 = vec2(mix(1.0, mix(sr.x, sr.y, rand3.y), scale)); + + // randomized offset + vec2 offset1 = mix(vec2(offset_range.x), vec2(offset_range.y), rand1 * offset); + vec2 offset2 = mix(vec2(offset_range.x), vec2(offset_range.y), rand2 * offset); + vec2 offset3 = mix(vec2(offset_range.x), vec2(offset_range.y), rand3 * offset); + + HextileData tile_data; + tile_data.weights = vec3(w1, w2, w3); + tile_data.rot_radian1 = rv1; + tile_data.rot_radian2 = rv2; + tile_data.rot_radian3 = rv3; + + // get coord + tile_data.coord1 = ((coord - ctr1) * rm1 / scale1) + ctr1 + offset1; + tile_data.coord2 = ((coord - ctr2) * rm2 / scale2) + ctr2 + offset2; + tile_data.coord3 = ((coord - ctr3) * rm3 / scale3) + ctr3 + offset3; + + // derivatives + vec2 ddx = dFdx(coord); + vec2 ddy = dFdy(coord); + tile_data.ddx1 = ddx * rm1 / scale1; + tile_data.ddx2 = ddx * rm2 / scale2; + tile_data.ddx3 = ddx * rm3 / scale3; + tile_data.ddy1 = ddy * rm1 / scale1; + tile_data.ddy2 = ddy * rm2 / scale2; + tile_data.ddy3 = ddy * rm3 / scale3; + + return tile_data; +} +/* +Color transform functions. + +These functions are modified versions of the color operators found in Open Shading Language: +github.com/imageworks/OpenShadingLanguage/blob/master/src/liboslexec/opcolor.cpp + +It contains the subset of color operators needed to implement the MaterialX +standard library. The modifications are for conversions from C++ to GLSL. + +Original copyright notice: +------------------------------------------------------------------------ +Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------ +*/ + +vec3 mx_hsvtorgb(vec3 hsv) +{ + // Reference for this technique: Foley & van Dam + float h = hsv.x; float s = hsv.y; float v = hsv.z; + if (s < 0.0001f) { + return vec3 (v, v, v); + } else { + h = 6.0f * (h - floor(h)); // expand to [0..6) + int hi = int(trunc(h)); + float f = h - float(hi); + float p = v * (1.0f-s); + float q = v * (1.0f-s*f); + float t = v * (1.0f-s*(1.0f-f)); + if (hi == 0) + return vec3 (v, t, p); + else if (hi == 1) + return vec3 (q, v, p); + else if (hi == 2) + return vec3 (p, v, t); + else if (hi == 3) + return vec3 (p, q, v); + else if (hi == 4) + return vec3 (t, p, v); + return vec3 (v, p, q); + } +} + + +vec3 mx_rgbtohsv(vec3 c) +{ + // See Foley & van Dam + float r = c.x; float g = c.y; float b = c.z; + float mincomp = min (r, min(g, b)); + float maxcomp = max (r, max(g, b)); + float delta = maxcomp - mincomp; // chroma + float h, s, v; + v = maxcomp; + if (maxcomp > 0.0f) + s = delta / maxcomp; + else s = 0.0f; + if (s <= 0.0f) + h = 0.0f; + else { + if (r >= maxcomp) h = (g-b) / delta; + else if (g >= maxcomp) h = 2.0f + (b-r) / delta; + else h = 4.0f + (r-g) / delta; + h *= (1.0f/6.0f); + if (h < 0.0f) + h += 1.0f; + } + return vec3(h, s, v); +} +#define M_FLOAT_EPS 1e-8 + +#define mx_mod mod +#define mx_inverse inverse +#define mx_inversesqrt inversesqrt +#define mx_sin sin +#define mx_cos cos +#define mx_tan tan +#define mx_asin asin +#define mx_acos acos +#define mx_atan atan +#define mx_radians radians + +float mx_square(float x) +{ + return x*x; +} + +vec2 mx_square(vec2 x) +{ + return x*x; +} + +vec3 mx_square(vec3 x) +{ + return x*x; +} + +vec3 mx_srgb_encode(vec3 color) +{ + bvec3 isAbove = greaterThan(color, vec3(0.0031308)); + vec3 linSeg = color * 12.92; + vec3 powSeg = 1.055 * pow(max(color, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055; + return mix(linSeg, powSeg, isAbove); +} +/* +Noise Library. + +This library is a modified version of the noise library found in +Open Shading Language: +github.com/imageworks/OpenShadingLanguage/blob/master/src/include/OSL/oslnoise.h + +It contains the subset of noise types needed to implement the MaterialX +standard library. The modifications are mainly conversions from C++ to GLSL. +Produced results should be identical to the OSL noise functions. + +Original copyright notice: +------------------------------------------------------------------------ +Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of Sony Pictures Imageworks nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +------------------------------------------------------------------------ +*/ + +float mx_select(bool b, float t, float f) +{ + return b ? t : f; +} + +float mx_negate_if(float val, bool b) +{ + return b ? -val : val; +} + +int mx_floor(float x) +{ + return int(floor(x)); +} + +// return mx_floor as well as the fractional remainder +float mx_floorfrac(float x, out int i) +{ + i = mx_floor(x); + return x - float(i); +} + +float mx_bilerp(float v0, float v1, float v2, float v3, float s, float t) +{ + float s1 = 1.0 - s; + return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s); +} +vec3 mx_bilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, float s, float t) +{ + float s1 = 1.0 - s; + return (1.0 - t) * (v0*s1 + v1*s) + t * (v2*s1 + v3*s); +} +float mx_trilerp(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float s, float t, float r) +{ + float s1 = 1.0 - s; + float t1 = 1.0 - t; + float r1 = 1.0 - r; + return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) + + r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s))); +} +vec3 mx_trilerp(vec3 v0, vec3 v1, vec3 v2, vec3 v3, vec3 v4, vec3 v5, vec3 v6, vec3 v7, float s, float t, float r) +{ + float s1 = 1.0 - s; + float t1 = 1.0 - t; + float r1 = 1.0 - r; + return (r1*(t1*(v0*s1 + v1*s) + t*(v2*s1 + v3*s)) + + r*(t1*(v4*s1 + v5*s) + t*(v6*s1 + v7*s))); +} + +// 2 and 3 dimensional gradient functions - perform a dot product against a +// randomly chosen vector. Note that the gradient vector is not normalized, but +// this only affects the overall "scale" of the result, so we simply account for +// the scale by multiplying in the corresponding "perlin" function. +float mx_gradient_float(uint hash, float x, float y) +{ + // 8 possible directions (+-1,+-2) and (+-2,+-1) + uint h = hash & 7u; + float u = mx_select(h<4u, x, y); + float v = 2.0 * mx_select(h<4u, y, x); + // compute the dot product with (x,y). + return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u)); +} +float mx_gradient_float(uint hash, float x, float y, float z) +{ + // use vectors pointing to the edges of the cube + uint h = hash & 15u; + float u = mx_select(h<8u, x, y); + float v = mx_select(h<4u, y, mx_select((h==12u)||(h==14u), x, z)); + return mx_negate_if(u, bool(h&1u)) + mx_negate_if(v, bool(h&2u)); +} +vec3 mx_gradient_vec3(uvec3 hash, float x, float y) +{ + return vec3(mx_gradient_float(hash.x, x, y), mx_gradient_float(hash.y, x, y), mx_gradient_float(hash.z, x, y)); +} +vec3 mx_gradient_vec3(uvec3 hash, float x, float y, float z) +{ + return vec3(mx_gradient_float(hash.x, x, y, z), mx_gradient_float(hash.y, x, y, z), mx_gradient_float(hash.z, x, y, z)); +} +// Scaling factors to normalize the result of gradients above. +// These factors were experimentally calculated to be: +// 2D: 0.6616 +// 3D: 0.9820 +float mx_gradient_scale2d(float v) { return 0.6616 * v; } +float mx_gradient_scale3d(float v) { return 0.9820 * v; } +vec3 mx_gradient_scale2d(vec3 v) { return 0.6616 * v; } +vec3 mx_gradient_scale3d(vec3 v) { return 0.9820 * v; } + +/// Bitwise circular rotation left by k bits (for 32 bit unsigned integers) +uint mx_rotl32(uint x, int k) +{ + return (x<>(32-k)); +} + +void mx_bjmix(inout uint a, inout uint b, inout uint c) +{ + a -= c; a ^= mx_rotl32(c, 4); c += b; + b -= a; b ^= mx_rotl32(a, 6); a += c; + c -= b; c ^= mx_rotl32(b, 8); b += a; + a -= c; a ^= mx_rotl32(c,16); c += b; + b -= a; b ^= mx_rotl32(a,19); a += c; + c -= b; c ^= mx_rotl32(b, 4); b += a; +} + +// Mix up and combine the bits of a, b, and c (doesn't change them, but +// returns a hash of those three original values). +uint mx_bjfinal(uint a, uint b, uint c) +{ + c ^= b; c -= mx_rotl32(b,14); + a ^= c; a -= mx_rotl32(c,11); + b ^= a; b -= mx_rotl32(a,25); + c ^= b; c -= mx_rotl32(b,16); + a ^= c; a -= mx_rotl32(c,4); + b ^= a; b -= mx_rotl32(a,14); + c ^= b; c -= mx_rotl32(b,24); + return c; +} + +// Convert a 32 bit integer into a floating point number in [0,1] +float mx_bits_to_01(uint bits) +{ + return float(bits) / float(uint(0xffffffff)); +} + +float mx_fade(float t) +{ + return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); +} + +uint mx_hash_int(int x) +{ + uint len = 1u; + uint seed = uint(0xdeadbeef) + (len << 2u) + 13u; + return mx_bjfinal(seed+uint(x), seed, seed); +} + +uint mx_hash_int(int x, int y) +{ + uint len = 2u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z) +{ + uint len = 3u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z, int xx) +{ + uint len = 4u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + mx_bjmix(a, b, c); + a += uint(xx); + return mx_bjfinal(a, b, c); +} + +uint mx_hash_int(int x, int y, int z, int xx, int yy) +{ + uint len = 5u; + uint a, b, c; + a = b = c = uint(0xdeadbeef) + (len << 2u) + 13u; + a += uint(x); + b += uint(y); + c += uint(z); + mx_bjmix(a, b, c); + a += uint(xx); + b += uint(yy); + return mx_bjfinal(a, b, c); +} + +uvec3 mx_hash_vec3(int x, int y) +{ + uint h = mx_hash_int(x, y); + // we only need the low-order bits to be random, so split out + // the 32 bit result into 3 parts for each channel + uvec3 result; + result.x = (h ) & 0xFFu; + result.y = (h >> 8 ) & 0xFFu; + result.z = (h >> 16) & 0xFFu; + return result; +} + +uvec3 mx_hash_vec3(int x, int y, int z) +{ + uint h = mx_hash_int(x, y, z); + // we only need the low-order bits to be random, so split out + // the 32 bit result into 3 parts for each channel + uvec3 result; + result.x = (h ) & 0xFFu; + result.y = (h >> 8 ) & 0xFFu; + result.z = (h >> 16) & 0xFFu; + return result; +} + +float mx_perlin_noise_float(vec2 p) +{ + int X, Y; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float u = mx_fade(fx); + float v = mx_fade(fy); + float result = mx_bilerp( + mx_gradient_float(mx_hash_int(X , Y ), fx , fy ), + mx_gradient_float(mx_hash_int(X+1, Y ), fx-1.0, fy ), + mx_gradient_float(mx_hash_int(X , Y+1), fx , fy-1.0), + mx_gradient_float(mx_hash_int(X+1, Y+1), fx-1.0, fy-1.0), + u, v); + return mx_gradient_scale2d(result); +} + +float mx_perlin_noise_float(vec3 p) +{ + int X, Y, Z; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float fz = mx_floorfrac(p.z, Z); + float u = mx_fade(fx); + float v = mx_fade(fy); + float w = mx_fade(fz); + float result = mx_trilerp( + mx_gradient_float(mx_hash_int(X , Y , Z ), fx , fy , fz ), + mx_gradient_float(mx_hash_int(X+1, Y , Z ), fx-1.0, fy , fz ), + mx_gradient_float(mx_hash_int(X , Y+1, Z ), fx , fy-1.0, fz ), + mx_gradient_float(mx_hash_int(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ), + mx_gradient_float(mx_hash_int(X , Y , Z+1), fx , fy , fz-1.0), + mx_gradient_float(mx_hash_int(X+1, Y , Z+1), fx-1.0, fy , fz-1.0), + mx_gradient_float(mx_hash_int(X , Y+1, Z+1), fx , fy-1.0, fz-1.0), + mx_gradient_float(mx_hash_int(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0), + u, v, w); + return mx_gradient_scale3d(result); +} + +vec3 mx_perlin_noise_vec3(vec2 p) +{ + int X, Y; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float u = mx_fade(fx); + float v = mx_fade(fy); + vec3 result = mx_bilerp( + mx_gradient_vec3(mx_hash_vec3(X , Y ), fx , fy ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y ), fx-1.0, fy ), + mx_gradient_vec3(mx_hash_vec3(X , Y+1), fx , fy-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1), fx-1.0, fy-1.0), + u, v); + return mx_gradient_scale2d(result); +} + +vec3 mx_perlin_noise_vec3(vec3 p) +{ + int X, Y, Z; + float fx = mx_floorfrac(p.x, X); + float fy = mx_floorfrac(p.y, Y); + float fz = mx_floorfrac(p.z, Z); + float u = mx_fade(fx); + float v = mx_fade(fy); + float w = mx_fade(fz); + vec3 result = mx_trilerp( + mx_gradient_vec3(mx_hash_vec3(X , Y , Z ), fx , fy , fz ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z ), fx-1.0, fy , fz ), + mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z ), fx , fy-1.0, fz ), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z ), fx-1.0, fy-1.0, fz ), + mx_gradient_vec3(mx_hash_vec3(X , Y , Z+1), fx , fy , fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y , Z+1), fx-1.0, fy , fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X , Y+1, Z+1), fx , fy-1.0, fz-1.0), + mx_gradient_vec3(mx_hash_vec3(X+1, Y+1, Z+1), fx-1.0, fy-1.0, fz-1.0), + u, v, w); + return mx_gradient_scale3d(result); +} + +float mx_cell_noise_float(float p) +{ + int ix = mx_floor(p); + return mx_bits_to_01(mx_hash_int(ix)); +} + +float mx_cell_noise_float(vec2 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + return mx_bits_to_01(mx_hash_int(ix, iy)); +} + +float mx_cell_noise_float(vec3 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + return mx_bits_to_01(mx_hash_int(ix, iy, iz)); +} + +float mx_cell_noise_float(vec4 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + int iw = mx_floor(p.w); + return mx_bits_to_01(mx_hash_int(ix, iy, iz, iw)); +} + +vec3 mx_cell_noise_vec3(float p) +{ + int ix = mx_floor(p); + return vec3( + mx_bits_to_01(mx_hash_int(ix, 0)), + mx_bits_to_01(mx_hash_int(ix, 1)), + mx_bits_to_01(mx_hash_int(ix, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec2 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec3 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, iz, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, 2)) + ); +} + +vec3 mx_cell_noise_vec3(vec4 p) +{ + int ix = mx_floor(p.x); + int iy = mx_floor(p.y); + int iz = mx_floor(p.z); + int iw = mx_floor(p.w); + return vec3( + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 0)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 1)), + mx_bits_to_01(mx_hash_int(ix, iy, iz, iw, 2)) + ); +} + +float mx_fractal2d_noise_float(vec2 p, int octaves, float lacunarity, float diminish) +{ + float result = 0.0; + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_float(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec3 mx_fractal2d_noise_vec3(vec2 p, int octaves, float lacunarity, float diminish) +{ + vec3 result = vec3(0.0); + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_vec3(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec2 mx_fractal2d_noise_vec2(vec2 p, int octaves, float lacunarity, float diminish) +{ + return vec2(mx_fractal2d_noise_float(p, octaves, lacunarity, diminish), + mx_fractal2d_noise_float(p+vec2(19, 193), octaves, lacunarity, diminish)); +} + +vec4 mx_fractal2d_noise_vec4(vec2 p, int octaves, float lacunarity, float diminish) +{ + vec3 c = mx_fractal2d_noise_vec3(p, octaves, lacunarity, diminish); + float f = mx_fractal2d_noise_float(p+vec2(19, 193), octaves, lacunarity, diminish); + return vec4(c, f); +} + +float mx_fractal3d_noise_float(vec3 p, int octaves, float lacunarity, float diminish) +{ + float result = 0.0; + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_float(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec3 mx_fractal3d_noise_vec3(vec3 p, int octaves, float lacunarity, float diminish) +{ + vec3 result = vec3(0.0); + float amplitude = 1.0; + for (int i = 0; i < octaves; ++i) + { + result += amplitude * mx_perlin_noise_vec3(p); + amplitude *= diminish; + p *= lacunarity; + } + return result; +} + +vec2 mx_fractal3d_noise_vec2(vec3 p, int octaves, float lacunarity, float diminish) +{ + return vec2(mx_fractal3d_noise_float(p, octaves, lacunarity, diminish), + mx_fractal3d_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish)); +} + +vec4 mx_fractal3d_noise_vec4(vec3 p, int octaves, float lacunarity, float diminish) +{ + vec3 c = mx_fractal3d_noise_vec3(p, octaves, lacunarity, diminish); + float f = mx_fractal3d_noise_float(p+vec3(19, 193, 17), octaves, lacunarity, diminish); + return vec4(c, f); +} + +vec2 mx_worley_cell_position(int x, int y, int xoff, int yoff, float jitter) +{ + vec3 tmp = mx_cell_noise_vec3(vec2(x+xoff, y+yoff)); + vec2 off = vec2(tmp.x, tmp.y); + + off -= 0.5f; + off *= jitter; + off += 0.5f; + + return vec2(float(x), float(y)) + off; +} + +vec3 mx_worley_cell_position(int x, int y, int z, int xoff, int yoff, int zoff, float jitter) +{ + vec3 off = mx_cell_noise_vec3(vec3(x+xoff, y+yoff, z+zoff)); + + off -= 0.5f; + off *= jitter; + off += 0.5f; + + return vec3(float(x), float(y), float(z)) + off; +} + +float mx_worley_distance(vec2 p, int x, int y, int xoff, int yoff, float jitter, int metric) +{ + vec2 cellpos = mx_worley_cell_position(x, y, xoff, yoff, jitter); + vec2 diff = cellpos - p; + if (metric == 2) + return abs(diff.x) + abs(diff.y); // Manhattan distance + if (metric == 3) + return max(abs(diff.x), abs(diff.y)); // Chebyshev distance + // Either Euclidean or Distance^2 + return dot(diff, diff); +} + +float mx_worley_distance(vec3 p, int x, int y, int z, int xoff, int yoff, int zoff, float jitter, int metric) +{ + vec3 cellpos = mx_worley_cell_position(x, y, z, xoff, yoff, zoff, jitter); + vec3 diff = cellpos - p; + if (metric == 2) + return abs(diff.x) + abs(diff.y) + abs(diff.z); // Manhattan distance + if (metric == 3) + return max(max(abs(diff.x), abs(diff.y)), abs(diff.z)); // Chebyshev distance + // Either Euclidean or Distance^2 + return dot(diff, diff); +} + +float mx_worley_noise_float(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + float dist; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + float sqdist = 1e6f; // Some big number for jitter > 1 (not all GPUs may be IEEE) + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + if (style == 1) + return mx_cell_noise_float(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec2 mx_worley_noise_vec2(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vec2 sqdist = vec2(1e6f, 1e6f); + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + if (style == 1) + { + vec3 tmp = mx_cell_noise_vec3(minpos + p); + return vec2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec3 mx_worley_noise_vec3(vec2 p, float jitter, int style, int metric) +{ + int X, Y; + vec2 localpos = vec2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vec3 sqdist = vec3(1e6f, 1e6f, 1e6f); + vec2 minpos = vec2(0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vec2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + if (style == 1) + return mx_cell_noise_vec3(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +float mx_worley_noise_float(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + float sqdist = 1e6f; + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + } + if (style == 1) + return mx_cell_noise_float(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec2 mx_worley_noise_vec2(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vec2 sqdist = vec2(1e6f, 1e6f); + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + } + if (style == 1) + { + vec3 tmp = mx_cell_noise_vec3(minpos + p); + return vec2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vec3 mx_worley_noise_vec3(vec3 p, float jitter, int style, int metric) +{ + int X, Y, Z; + vec3 localpos = vec3(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vec3 sqdist = vec3(1e6f, 1e6f, 1e6f); + vec3 minpos = vec3(0,0,0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vec3 cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + } + if (style == 1) + return mx_cell_noise_vec3(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} +vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset) +{ + uv = uv * uv_scale + uv_offset; + return uv; +} +vec2 mx_transform_uv(vec2 uv, vec2 uv_scale, vec2 uv_offset) +{ + uv = uv * uv_scale + uv_offset; + return vec2(uv.x, 1.0 - uv.y); +} +float mx_aastep(float threshold, float value) +{ + float afwidth = length(vec2(dFdx(value), dFdy(value))) * 0.70710678118654757; + return smoothstep(threshold-afwidth, threshold+afwidth, value); +} +#include "mx_burn_float.glsl" + +void mx_burn_color3(vec3 fg, vec3 bg, float mixval, out vec3 result) +{ + float f; + mx_burn_float(fg.x, bg.x, mixval, f); result.x = f; + mx_burn_float(fg.y, bg.y, mixval, f); result.y = f; + mx_burn_float(fg.z, bg.z, mixval, f); result.z = f; +} +#include "mx_burn_float.glsl" + +void mx_burn_color4(vec4 fg, vec4 bg, float mixval, out vec4 result) +{ + float f; + mx_burn_float(fg.x, bg.x, mixval, f); result.x = f; + mx_burn_float(fg.y, bg.y, mixval, f); result.y = f; + mx_burn_float(fg.z, bg.z, mixval, f); result.z = f; + mx_burn_float(fg.w, bg.w, mixval, f); result.w = f; +} +void mx_burn_float(float fg, float bg, float mixval, out float result) +{ + if (abs(fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mixval*(1.0 - ((1.0 - bg) / fg)) + ((1.0-mixval)*bg); +} +#include "lib/mx_noise.glsl" + +void mx_cellnoise2d_float(vec2 texcoord, out float result) +{ + result = mx_cell_noise_float(texcoord); +} +#include "lib/mx_noise.glsl" + +void mx_cellnoise3d_float(vec3 position, out float result) +{ + result = mx_cell_noise_float(position); +} +void mx_creatematrix_vector3_matrix33(vec3 in1, vec3 in2, vec3 in3, out mat3 result) +{ + result = mat3(in1.x, in1.y, in1.z, + in2.x, in2.y, in2.z, + in3.x, in3.y, in3.z); +} +void mx_creatematrix_vector3_matrix44(vec3 in1, vec3 in2, vec3 in3, vec3 in4, out mat4 result) +{ + result = mat4(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + in4.x, in4.y, in4.z, 1.0); +} +void mx_creatematrix_vector4_matrix44(vec4 in1, vec4 in2, vec4 in3, vec4 in4, out mat4 result) +{ + result = mat4(in1.x, in1.y, in1.z, in1.w, + in2.x, in2.y, in2.z, in2.w, + in3.x, in3.y, in3.z, in3.w, + in4.x, in4.y, in4.z, in4.w); +} +void mx_disjointover_color4(vec4 fg, vec4 bg, float mixval, out vec4 result) +{ + float summedAlpha = fg.w + bg.w; + + if (summedAlpha <= 1.0) + { + result.xyz = fg.xyz + bg.xyz; + } + else + { + if (abs(bg.w) < M_FLOAT_EPS) + { + result.xyz = vec3(0.0); + } + else + { + float x = (1.0 - fg.w) / bg.w; + result.xyz = fg.xyz + bg.xyz * x; + } + } + result.w = min(summedAlpha, 1.0); + + result.xyz = result.xyz * mixval + (1.0 - mixval) * bg.xyz; + result.w = result.w * mixval + (1.0 - mixval) * bg.w; +} +#include "mx_dodge_float.glsl" + +void mx_dodge_color3(vec3 fg, vec3 bg, float mixval, out vec3 result) +{ + float f; + mx_dodge_float(fg.x, bg.x, mixval, f); result.x = f; + mx_dodge_float(fg.y, bg.y, mixval, f); result.y = f; + mx_dodge_float(fg.z, bg.z, mixval, f); result.z = f; +} +#include "mx_dodge_float.glsl" + +void mx_dodge_color4(vec4 fg , vec4 bg , float mixval, out vec4 result) +{ + float f; + mx_dodge_float(fg.x, bg.x, mixval, f); result.x = f; + mx_dodge_float(fg.y, bg.y, mixval, f); result.y = f; + mx_dodge_float(fg.z, bg.z, mixval, f); result.z = f; + mx_dodge_float(fg.w, bg.w, mixval, f); result.w = f; +} +void mx_dodge_float(float fg, float bg, float mixval, out float result) +{ + if (abs(1.0 - fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mixval*(bg / (1.0 - fg)) + ((1.0-mixval)*bg); +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_float(float amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out float result) +{ + float value = mx_fractal2d_noise_float(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector2(vec2 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec2 result) +{ + vec2 value = mx_fractal2d_noise_vec2(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector3(vec3 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec3 result) +{ + vec3 value = mx_fractal2d_noise_vec3(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal2d_vector4(vec4 amplitude, int octaves, float lacunarity, float diminish, vec2 texcoord, out vec4 result) +{ + vec4 value = mx_fractal2d_noise_vec4(texcoord, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_float(float amplitude, int octaves, float lacunarity, float diminish, vec3 position, out float result) +{ + float value = mx_fractal3d_noise_float(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector2(vec2 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec2 result) +{ + vec2 value = mx_fractal3d_noise_vec2(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector3(vec3 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec3 result) +{ + vec3 value = mx_fractal3d_noise_vec3(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +#include "lib/mx_noise.glsl" + +void mx_fractal3d_vector4(vec4 amplitude, int octaves, float lacunarity, float diminish, vec3 position, out vec4 result) +{ + vec4 value = mx_fractal3d_noise_vec4(position, octaves, lacunarity, diminish); + result = value * amplitude; +} +void mx_heighttonormal_vector3(float height, float scale, vec2 texcoord, out vec3 result) +{ + // Scale factor for parity with traditional Sobel filtering. + const float SOBEL_SCALE_FACTOR = 1.0 / 16.0; + + // Compute screen-space gradients of the heightfield and texture coordinates. + vec2 dHdS = vec2(dFdx(height), dFdy(height)) * scale * SOBEL_SCALE_FACTOR; + vec2 dUdS = vec2(dFdx(texcoord.x), dFdy(texcoord.x)); + vec2 dVdS = vec2(dFdx(texcoord.y), dFdy(texcoord.y)); + + // Construct a screen-space tangent frame. + vec3 tangent = vec3(dUdS.x, dVdS.x, dHdS.x); + vec3 bitangent = vec3(dUdS.y, dVdS.y, dHdS.y); + vec3 n = cross(tangent, bitangent); + + // Handle invalid and mirrored texture coordinates. + if (dot(n, n) < M_FLOAT_EPS * M_FLOAT_EPS) + { + n = vec3(0, 0, 1); + } + else if (n.z < 0.0) + { + n *= -1.0; + } + + // Normalize and encode the results. + result = normalize(n) * 0.5 + 0.5; +} +#include "lib/$fileTransformUv" +#include "lib/mx_hextile.glsl" + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +void mx_hextiledimage_color3( + $texSamplerSignature, + vec3 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float falloff_contrast, + vec3 lumacoeffs, + out vec3 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec3 c1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1).rgb; + vec3 c2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2).rgb; + vec3 c3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3).rgb; + + // luminance as weights + vec3 cw = vec3(dot(c1, lumacoeffs), dot(c2, lumacoeffs), dot(c3, lumacoeffs)); + cw = mix(vec3(1.0), cw, vec3(falloff_contrast)); + + // blend weights + vec3 w = cw * pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + } + + // blend + result = vec3(w.x * c1 + w.y * c2 + w.z * c3); +} + +void mx_hextiledimage_color4( + $texSamplerSignature, + vec4 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float falloff_contrast, + vec3 lumacoeffs, + out vec4 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec4 c1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1); + vec4 c2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2); + vec4 c3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3); + + // luminance as weights + vec3 cw = vec3(dot(c1.rgb, lumacoeffs), dot(c2.rgb, lumacoeffs), dot(c3.rgb, lumacoeffs)); + cw = mix(vec3(1.0), cw, vec3(falloff_contrast)); + + // blend weights + vec3 w = cw * pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // alpha + float a = (c1.a + c2.a + c3.a) / 3.0; + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + a = mx_schlick_gain(a, falloff); + } + + // blend + result.rgb = vec3(w.x * c1 + w.y * c2 + w.z * c3); + result.a = a; +} +#include "lib/$fileTransformUv" +#include "lib/mx_hextile.glsl" +#include "lib/mx_geometry.glsl" + +// Morten S. Mikkelsen, Practical Real-Time Hex-Tiling, Journal of Computer Graphics +// Techniques (JCGT), vol. 11, no. 2, 77-94, 2022 +// http://jcgt.org/published/0011/03/05/ +void mx_hextilednormalmap_vector3( + $texSamplerSignature, + vec3 default_value, + vec2 tex_coord, + vec2 tiling, + float rotation, + vec2 rotation_range, + float scale, + vec2 scale_range, + float offset, + vec2 offset_range, + float falloff, + float strength, + bool flip_g, + vec3 N, + vec3 T, + vec3 B, + out vec3 result +) +{ + vec2 coord = mx_transform_uv(tex_coord, tiling, vec2(0.0)); + + HextileData tile_data = mx_hextile_coord(coord, rotation, rotation_range, scale, scale_range, offset, offset_range); + + vec3 nm1 = textureGrad($texSamplerSampler2D, tile_data.coord1, tile_data.ddx1, tile_data.ddy1).xyz; + vec3 nm2 = textureGrad($texSamplerSampler2D, tile_data.coord2, tile_data.ddx2, tile_data.ddy2).xyz; + vec3 nm3 = textureGrad($texSamplerSampler2D, tile_data.coord3, tile_data.ddx3, tile_data.ddy3).xyz; + + nm1.y = flip_g ? 1.0 - nm1.y : nm1.y; + nm2.y = flip_g ? 1.0 - nm2.y : nm2.y; + nm3.y = flip_g ? 1.0 - nm3.y : nm3.y; + + // normalmap to shading normal + nm1 = 2.0 * nm1 - 1.0; + nm2 = 2.0 * nm2 - 1.0; + nm3 = 2.0 * nm3 - 1.0; + mat3 tangent_rot_mat1 = mx_axis_rotation_matrix(N, -tile_data.rot_radian1); + mat3 tangent_rot_mat2 = mx_axis_rotation_matrix(N, -tile_data.rot_radian2); + mat3 tangent_rot_mat3 = mx_axis_rotation_matrix(N, -tile_data.rot_radian3); + vec3 T1 = tangent_rot_mat1 * T * strength; + vec3 T2 = tangent_rot_mat2 * T * strength; + vec3 T3 = tangent_rot_mat3 * T * strength; + vec3 B1 = tangent_rot_mat1 * B * strength; + vec3 B2 = tangent_rot_mat2 * B * strength; + vec3 B3 = tangent_rot_mat3 * B * strength; + vec3 N1 = normalize(T1 * nm1.x + B1 * nm1.y + N * nm1.z); + vec3 N2 = normalize(T2 * nm2.x + B2 * nm2.y + N * nm2.z); + vec3 N3 = normalize(T3 * nm3.x + B3 * nm3.y + N * nm3.z); + + // blend weights + vec3 w = pow(tile_data.weights, vec3(7.0)); + w /= (w.x + w.y + w.z); + + // apply s-curve gain + if (falloff != 0.5) + { + w.x = mx_schlick_gain(w.x, falloff); + w.y = mx_schlick_gain(w.y, falloff); + w.z = mx_schlick_gain(w.z, falloff); + w /= (w.x + w.y + w.z); + } + + // blend + result = mx_gradient_blend_3_normals(N, N1, w.x, N2, w.y, N3, w.z); +} +#include "lib/mx_hsv.glsl" + +void mx_hsvtorgb_color3(vec3 _in, out vec3 result) +{ + result = mx_hsvtorgb(_in); +} +#include "lib/mx_hsv.glsl" + +void mx_hsvtorgb_color4(vec4 _in, out vec4 result) +{ + result = vec4(mx_hsvtorgb(_in.rgb), 1.0); +} +#include "lib/$fileTransformUv" + +void mx_image_color3($texSamplerSignature, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rgb; +} +#include "lib/$fileTransformUv" + +void mx_image_color4($texSamplerSignature, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv); +} +#include "lib/$fileTransformUv" + +void mx_image_float($texSamplerSignature, int layer, float defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out float result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).r; +} +#include "lib/$fileTransformUv" + +void mx_image_vector2($texSamplerSignature, int layer, vec2 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec2 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rg; +} +#include "lib/$fileTransformUv" + +void mx_image_vector3($texSamplerSignature, int layer, vec3 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec3 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv).rgb; +} +#include "lib/$fileTransformUv" + +void mx_image_vector4($texSamplerSignature, int layer, vec4 defaultval, vec2 texcoord, int uaddressmode, int vaddressmode, int filtertype, int framerange, int frameoffset, int frameendaction, vec2 uv_scale, vec2 uv_offset, out vec4 result) +{ + vec2 uv = mx_transform_uv(texcoord, uv_scale, uv_offset); + result = texture($texSamplerSampler2D, uv); +} +void mx_luminance_color3(vec3 _in, vec3 lumacoeffs, out vec3 result) +{ + result = vec3(dot(_in, lumacoeffs)); +} +void mx_luminance_color4(vec4 _in, vec3 lumacoeffs, out vec4 result) +{ + result = vec4(vec3(dot(_in.rgb, lumacoeffs)), _in.a); +} +void mx_mix_surfaceshader(surfaceshader fg, surfaceshader bg, float w, out surfaceshader returnshader) +{ + returnshader.color = mix(bg.color, fg.color, w); + returnshader.transparency = mix(bg.transparency, fg.transparency, w); +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_float(float amplitude, float pivot, vec2 texcoord, out float result) +{ + float value = mx_perlin_noise_float(texcoord); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector2(vec2 amplitude, float pivot, vec2 texcoord, out vec2 result) +{ + vec3 value = mx_perlin_noise_vec3(texcoord); + result = value.xy * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector3(vec3 amplitude, float pivot, vec2 texcoord, out vec3 result) +{ + vec3 value = mx_perlin_noise_vec3(texcoord); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise2d_vector4(vec4 amplitude, float pivot, vec2 texcoord, out vec4 result) +{ + vec3 xyz = mx_perlin_noise_vec3(texcoord); + float w = mx_perlin_noise_float(texcoord + vec2(19, 73)); + result = vec4(xyz, w) * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_float(float amplitude, float pivot, vec3 position, out float result) +{ + float value = mx_perlin_noise_float(position); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector2(vec2 amplitude, float pivot, vec3 position, out vec2 result) +{ + vec3 value = mx_perlin_noise_vec3(position); + result = value.xy * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector3(vec3 amplitude, float pivot, vec3 position, out vec3 result) +{ + vec3 value = mx_perlin_noise_vec3(position); + result = value * amplitude + pivot; +} +#include "lib/mx_noise.glsl" + +void mx_noise3d_vector4(vec4 amplitude, float pivot, vec3 position, out vec4 result) +{ + vec3 xyz = mx_perlin_noise_vec3(position); + float w = mx_perlin_noise_float(position + vec3(19, 73, 29)); + result = vec4(xyz, w) * amplitude + pivot; +} +void mx_normalmap_vector2(vec3 value, vec2 normal_scale, vec3 N, vec3 T, vec3 B, out vec3 result) +{ + value = (dot(value, value) == 0.0) ? vec3(0.0, 0.0, 1.0) : value * 2.0 - 1.0; + value = T * value.x * normal_scale.x + + B * value.y * normal_scale.y + + N * value.z; + result = normalize(value); +} + +void mx_normalmap_float(vec3 value, float normal_scale, vec3 N, vec3 T, vec3 B, out vec3 result) +{ + mx_normalmap_vector2(value, vec2(normal_scale), N, T, B, result); +} +void mx_premult_color4(vec4 _in, out vec4 result) +{ + result = vec4(_in.rgb * _in.a, _in.a); +} +void mx_ramplr_float(float valuel, float valuer, vec2 texcoord, out float result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector2(vec2 valuel, vec2 valuer, vec2 texcoord, out vec2 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector3(vec3 valuel, vec3 valuer, vec2 texcoord, out vec3 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramplr_vector4(vec4 valuel, vec4 valuer, vec2 texcoord, out vec4 result) +{ + result = mix (valuel, valuer, clamp(texcoord.x, 0.0, 1.0) ); +} +void mx_ramptb_float(float valuet, float valueb, vec2 texcoord, out float result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector2(vec2 valuet, vec2 valueb, vec2 texcoord, out vec2 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector3(vec3 valuet, vec3 valueb, vec2 texcoord, out vec3 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +void mx_ramptb_vector4(vec4 valuet, vec4 valueb, vec2 texcoord, out vec4 result) +{ + result = mix (valuet, valueb, clamp(texcoord.y, 0.0, 1.0) ); +} +#include "lib/mx_hsv.glsl" + +void mx_rgbtohsv_color3(vec3 _in, out vec3 result) +{ + result = mx_rgbtohsv(_in); +} +#include "lib/mx_hsv.glsl" + +void mx_rgbtohsv_color4(vec4 _in, out vec4 result) +{ + result = vec4(mx_rgbtohsv(_in.rgb), 1.0); +} +void mx_rotate_vector2(vec2 _in, float amount, out vec2 result) +{ + float rotationRadians = mx_radians(amount); + float sa = mx_sin(rotationRadians); + float ca = mx_cos(rotationRadians); + result = vec2(ca*_in.x + sa*_in.y, -sa*_in.x + ca*_in.y); +} +mat4 mx_rotationMatrix(vec3 axis, float angle) +{ + axis = normalize(axis); + float s = mx_sin(angle); + float c = mx_cos(angle); + float oc = 1.0 - c; + + return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_rotate_vector3(vec3 _in, float amount, vec3 axis, out vec3 result) +{ + float rotationRadians = mx_radians(amount); + mat4 m = mx_rotationMatrix(axis, rotationRadians); + result = (m * vec4(_in, 1.0)).xyz; +} +void mx_smoothstep_float(float val, float low, float high, out float result) +{ + if (val >= high) + result = 1.0; + else if (val <= low) + result = 0.0; + else + result = smoothstep(low, high, val); +} +#include "mx_aastep.glsl" + +void mx_splitlr_float(float valuel, float valuer, float center, vec2 texcoord, out float result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector2(vec2 valuel, vec2 valuer, float center, vec2 texcoord, out vec2 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector3(vec3 valuel, vec3 valuer, float center, vec2 texcoord, out vec3 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splitlr_vector4(vec4 valuel, vec4 valuer, float center, vec2 texcoord, out vec4 result) +{ + result = mix(valuel, valuer, mx_aastep(center, texcoord.x)); +} +#include "mx_aastep.glsl" + +void mx_splittb_float(float valuet, float valueb, float center, vec2 texcoord, out float result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector2(vec2 valuet, vec2 valueb, float center, vec2 texcoord, out vec2 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector3(vec3 valuet, vec3 valueb, float center, vec2 texcoord, out vec3 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} +#include "mx_aastep.glsl" + +void mx_splittb_vector4(vec4 valuet, vec4 valueb, float center, vec2 texcoord, out vec4 result) +{ + result = mix(valuet, valueb, mx_aastep(center, texcoord.y)); +} + +void mx_surface_unlit(float emission, vec3 emission_color, float transmission, vec3 transmission_color, float opacity, out surfaceshader result) +{ + result.color = emission * emission_color * opacity; + result.transparency = mix(vec3(1.0), transmission * transmission_color, opacity); +} +void mx_transformmatrix_vector2M3(vec2 val, mat3 transform, out vec2 result) +{ + vec3 res = transform * vec3(val, 1.0); + result = res.xy; +} +void mx_transformmatrix_vector3M4(vec3 val, mat4 transform, out vec3 result) +{ + vec4 res = transform * vec4(val, 1.0); + result = res.xyz; +} +void mx_unpremult_color4(vec4 _in, out vec4 result) +{ + result = vec4(_in.rgb / _in.a, _in.a); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_float(vec2 texcoord, float jitter, int style, out float result) +{ + result = mx_worley_noise_float(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_vector2(vec2 texcoord, float jitter, int style, out vec2 result) +{ + result = mx_worley_noise_vec2(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise2d_vector3(vec2 texcoord, float jitter, int style, out vec3 result) +{ + result = mx_worley_noise_vec3(texcoord, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_float(vec3 position, float jitter, int style, out float result) +{ + result = mx_worley_noise_float(position, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_vector2(vec3 position, float jitter, int style, out vec2 result) +{ + result = mx_worley_noise_vec2(position, jitter, style, 0); +} +#include "lib/mx_noise.glsl" + +void mx_worleynoise3d_vector3(vec3 position, float jitter, int style, out vec3 result) +{ + result = mx_worley_noise_vec3(position, jitter, style, 0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#define M_FLOAT_EPS 1e-8 + +#define mx_sin metal::sin +#define mx_cos metal::cos +#define mx_tan metal::tan +#define mx_asin metal::asin +#define mx_acos metal::acos + +float mx_square(float x) +{ + return x*x; +} + +vec2 mx_square(vec2 x) +{ + return x*x; +} + +vec3 mx_square(vec3 x) +{ + return x*x; +} + +float mx_inversesqrt(float x) +{ + return metal::rsqrt(x); +} + +template +T1 mx_mod(T1 x, T2 y) +{ + return x - y * floor(x/y); +} + +float3x3 mx_inverse(float3x3 m) +{ + float n11 = m[0][0], n12 = m[1][0], n13 = m[2][0]; + float n21 = m[0][1], n22 = m[1][1], n23 = m[2][1]; + float n31 = m[0][2], n32 = m[1][2], n33 = m[2][2]; + + float det = metal::determinant(m); + float idet = 1.0f / det; + + float3x3 ret; + + ret[0][0] = idet * (n22 * n33 - n32 * n23); + ret[1][0] = idet * (n32 * n13 - n12 * n33); + ret[2][0] = idet * (n12 * n23 - n22 * n13); + + ret[0][1] = idet * (n31 * n23 - n21 * n33); + ret[1][1] = idet * (n11 * n33 - n31 * n13); + ret[2][1] = idet * (n21 * n13 - n11 * n23); + + ret[0][2] = idet * (n21 * n32 - n31 * n22); + ret[1][2] = idet * (n31 * n12 - n11 * n32); + ret[2][2] = idet * (n11 * n22 - n21 * n12); + + return ret; +} + +float4x4 mx_inverse(float4x4 m) +{ + float n11 = m[0][0], n12 = m[1][0], n13 = m[2][0], n14 = m[3][0]; + float n21 = m[0][1], n22 = m[1][1], n23 = m[2][1], n24 = m[3][1]; + float n31 = m[0][2], n32 = m[1][2], n33 = m[2][2], n34 = m[3][2]; + float n41 = m[0][3], n42 = m[1][3], n43 = m[2][3], n44 = m[3][3]; + + float t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44; + float t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44; + float t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44; + float t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + float det = metal::determinant(m); + float idet = 1.0f / det; + + float4x4 ret; + + ret[0][0] = t11 * idet; + ret[0][1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * idet; + ret[0][2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * idet; + ret[0][3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * idet; + + ret[1][0] = t12 * idet; + ret[1][1] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * idet; + ret[1][2] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * idet; + ret[1][3] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * idet; + + ret[2][0] = t13 * idet; + ret[2][1] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * idet; + ret[2][2] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * idet; + ret[2][3] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * idet; + + ret[3][0] = t14 * idet; + ret[3][1] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * idet; + ret[3][2] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * idet; + ret[3][3] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * idet; + + return ret; +} + +float mx_atan(float y_over_x) +{ + return metal::atan(y_over_x); +} + +float mx_atan(float y, float x) +{ + return metal::atan2(y, x); +} + +vec2 mx_atan(vec2 y, vec2 x) +{ + return metal::atan2(y, x); +} + +vec3 mx_atan(vec3 y, vec3 x) +{ + return metal::atan2(y, x); +} + +vec4 mx_atan(vec4 y, vec4 x) +{ + return metal::atan2(y, x); +} + +float mx_radians(float degree) +{ + return (degree * M_PI_F / 180.0f); +} + +vec2 mx_radians(vec2 degree) +{ + return (degree * M_PI_F / 180.0f); +} +float3x3 operator+(float3x3 a, float b) +{ + return a + float3x3(b,b,b,b,b,b,b,b,b); +} + +float4x4 operator+(float4x4 a, float b) +{ + return a + float4x4(b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b); +} + +float3x3 operator-(float3x3 a, float b) +{ + return a - float3x3(b,b,b,b,b,b,b,b,b); +} + +float4x4 operator-(float4x4 a, float b) +{ + return a - float4x4(b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b); +} + +float3x3 operator/(float3x3 a, float3x3 b) +{ + for(int i = 0; i < 3; ++i) + for(int j = 0; j < 3; ++j) + a[i][j] /= b[i][j]; + + return a; +} + +float4x4 operator/(float4x4 a, float4x4 b) +{ + for(int i = 0; i < 4; ++i) + for(int j = 0; j < 4; ++j) + a[i][j] /= b[i][j]; + + return a; +} + +float3x3 operator/(float3x3 a, float b) +{ + for(int i = 0; i < 3; ++i) + for(int j = 0; j < 3; ++j) + a[i][j] /= b; + + return a; +} + +float4x4 operator/(float4x4 a, float b) +{ + for(int i = 0; i < 4; ++i) + for(int j = 0; j < 4; ++j) + a[i][j] /= b; + + return a; +} +struct MetalTexture +{ + texture2d tex; + sampler s; + + // needed for Storm + int get_width() { return tex.get_width(); } + int get_height() { return tex.get_height(); } + int get_num_mip_levels() { return tex.get_num_mip_levels(); } +}; + +float4 texture(MetalTexture mtlTex, float2 uv) +{ + return mtlTex.tex.sample(mtlTex.s, uv); +} + +float4 textureLod(MetalTexture mtlTex, float2 uv, float lod) +{ + return mtlTex.tex.sample(mtlTex.s, uv, level(lod)); +} + +float4 textureGrad(MetalTexture mtlTex, float2 uv, float2 dx, float2 dy) +{ + return mtlTex.tex.sample(mtlTex.s, uv, gradient2d(dx, dy)); +} + +int2 textureSize(MetalTexture mtlTex, int mipLevel) +{ + return int2(mtlTex.tex.get_width(), mtlTex.tex.get_height()); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define COLOR4_H + + +// color4 is a color + alpha +struct color4 +{ + color rgb; + float a; +}; + + + +// +// For color4, define math operators to match color +// + +color4 __operator__neg__(color4 a) +{ + return color4(-a.rgb, -a.a); +} + +color4 __operator__add__(color4 a, color4 b) +{ + return color4(a.rgb + b.rgb, a.a + b.a); +} + +color4 __operator__add__(color4 a, int b) +{ + return a + color4(color(b), b); +} + +color4 __operator__add__(color4 a, float b) +{ + return a + color4(color(b), b); +} + +color4 __operator__add__(int a, color4 b) +{ + return color4(color(a), a) + b; +} + +color4 __operator__add__(float a, color4 b) +{ + return color4(color(a), a) + b; +} + +color4 __operator__sub__(color4 a, color4 b) +{ + return color4(a.rgb - b.rgb, a.a - b.a); +} + +color4 __operator__sub__(color4 a, int b) +{ + return a - color4(color(b), b); +} + +color4 __operator__sub__(color4 a, float b) +{ + return a - color4(color(b), b); +} + +color4 __operator__sub__(int a, color4 b) +{ + return color4(color(a), a) - b; +} + +color4 __operator__sub__(float a, color4 b) +{ + return color4(color(a), a) - b; +} + +color4 __operator__mul__(color4 a, color4 b) +{ + return color4(a.rgb * b.rgb, a.a * b.a); +} + +color4 __operator__mul__(color4 a, int b) +{ + return a * color4(color(b), b); +} + +color4 __operator__mul__(color4 a, float b) +{ + return a * color4(color(b), b); +} + +color4 __operator__mul__(int a, color4 b) +{ + return color4(color(a), a) * b; +} + +color4 __operator__mul__(float a, color4 b) +{ + return color4(color(a), a) * b; +} + +color4 __operator__div__(color4 a, color4 b) +{ + return color4(a.rgb / b.rgb, a.a / b.a); +} + +color4 __operator__div__(color4 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * color4(color(b_inv), b_inv); +} + +color4 __operator__div__(color4 a, float b) +{ + float b_inv = 1.0 / b; + return a * color4(color(b_inv), b_inv); +} + +color4 __operator_div__(int a, color4 b) +{ + return color4(color(a), a) / b; +} + +color4 __operator__div__(float a, color4 b) +{ + return color4(color(a), a) / b; +} + +int __operator__eq__(color4 a, color4 b) +{ + return (a.rgb == b.rgb) && (a.a == b.a); +} + +int __operator__neq__(color4 a, color4 b) +{ + return (a.rgb != b.rgb) || (a.a != b.a); +} + + + +// +// For color4, define most of the stdosl functions to match color +// + +color4 abs(color4 a) +{ + return color4(abs(a.rgb), abs(a.a)); +} + +color4 ceil(color4 a) +{ + return color4(ceil(a.rgb), ceil(a.a)); +} + +color4 round(color4 a) +{ + return color4(round(a.rgb), round(a.a)); +} + +color4 floor(color4 a) +{ + return color4(floor(a.rgb), floor(a.a)); +} + +color4 sqrt(color4 a) +{ + return color4(sqrt(a.rgb), sqrt(a.a)); +} + +color4 exp(color4 a) +{ + return color4(exp(a.rgb), exp(a.a)); +} + +color4 log(color4 a) +{ + return color4(log(a.rgb), log(a.a)); +} + +color4 log2(color4 a) +{ + return color4(log2(a.rgb), log2(a.a)); +} + +color4 mix(color4 a, color4 b, float x ) +{ + return color4(mix(a.rgb, b.rgb, x), + mix(a.a, b.a, x)); +} + +color4 mix(color4 a, color4 b, color4 x ) +{ + return color4(mix(a.rgb, b.rgb, x.rgb), + mix(a.a, b.a, x.a)); +} + +color4 smoothstep(color4 edge0, color4 edge1, color4 c) +{ + return color4(smoothstep(edge0.rgb, edge1.rgb, c.rgb), + smoothstep(edge0.a, edge1.a, c.a)); +} + +color4 smoothstep(float edge0, float edge1, color4 c) +{ + return smoothstep(color4(color(edge0), edge0), color4(color(edge1), edge1), c); +} + +color4 clamp(color4 c, color4 minval, color4 maxval) +{ + return color4(clamp(c.rgb, minval.rgb, maxval.rgb), + clamp(c.a, minval.a, maxval.a)); +} + +color4 clamp(color4 c, float minval, float maxval) +{ + return clamp(c, color4(color(minval), minval), color4(color(maxval), maxval)); +} + +color4 max(color4 a, color4 b) +{ + return color4(max(a.rgb, b.rgb), + max(a.a, b.a)); +} + +color4 max(color4 a, float b) +{ + return color4(max(a.rgb, b), + max(a.a, b)); +} + +color4 min(color4 a, color4 b) +{ + return color4(min(a.rgb, b.rgb), + min(a.a, b.a)); +} + +color4 min(color4 a, float b) +{ + return color4(min(a.rgb, b), + min(a.a, b)); +} + +color4 mod(color4 a, color4 b) +{ + return color4(mod(a.rgb, b.rgb), + mod(a.a, b.a)); +} + +color4 mod(color4 a, float b) +{ + return mod(a, color4(color(b), b)); +} + +color4 fmod(color4 a, color4 b) +{ + return color4(fmod(a.rgb, b.rgb), + fmod(a.a, b.a)); +} + +color4 fmod(color4 a, int b) +{ + return fmod(a, color4(color(b), b)); +} + +color4 fmod(color4 a, float b) +{ + return fmod(a, color4(color(b), b)); +} + +color4 pow(color4 base, color4 power) +{ + return color4(pow(base.rgb, power.rgb), pow(base.a, power.a)); +} + +color4 pow(color4 base, float power) +{ + return pow(base, color4(color(power), power)); +} + +color4 sign(color4 a) +{ + return color4(sign(a.rgb), + sign(a.a)); +} + +color4 sin(color4 a) +{ + return color4(sin(a.rgb), + sin(a.a)); +} + +color4 cos(color4 a) +{ + return color4(cos(a.rgb), + cos(a.a)); +} + +color4 tan(color4 a) +{ + return color4(tan(a.rgb), + tan(a.a)); +} + +color4 asin(color4 a) +{ + return color4(asin(a.rgb), + asin(a.a)); +} + +color4 acos(color4 a) +{ + return color4(acos(a.rgb), + acos(a.a)); +} + +color4 atan2(color4 a, float f) +{ + return color4(atan2(a.rgb, f), + atan2(a.a, f)); +} + +color4 atan2(color4 a, color4 b) +{ + return color4(atan2(a.rgb, b.rgb), + atan2(a.a, b.a)); +} + + +color4 transformc (string fromspace, string tospace, color4 C) +{ + return color4 (transformc (fromspace, tospace, C.rgb), C.a); +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + + +#pragma once +#define MATRIX33_H + + +struct matrix33 +{ + matrix m; +}; + +int isValidAs33(matrix m44) +{ + return m44[0][3] == 0 && + m44[1][3] == 0 && + m44[2][3] == 0 && + m44[3][0] == 0 && + m44[3][1] == 0 && + m44[3][2] == 0 && + m44[3][3] == 1; +} + +matrix matrix33To44 (matrix33 m33) +{ + return m33.m; +} + +// Convert an arbitrary m44 to m33 by removing the translation +//QUESTION: should we check if it's valid to represent the 4x4 as a 3x3? +matrix33 matrix44To33 (matrix m44) +{ + matrix33 m33; + m33.m = m44; + m33.m[0][3] = 0; + m33.m[1][3] = 0; + m33.m[2][3] = 0; + m33.m[3][0] = 0; + m33.m[3][1] = 0; + m33.m[3][2] = 0; + m33.m[3][3] = 1; + + return m33; +} + +matrix33 __operator__neg__(matrix33 a) +{ + matrix33 m33; + m33.m = -a.m; + return m33; +} + + +matrix33 __operator__mul__(int a, matrix33 b) +{ + matrix33 m33; + m33.m = a * b.m; + return m33; +} + +matrix33 __operator__mul__(float a, matrix33 b) +{ + matrix33 m33; + m33.m = a * b.m; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, int b) +{ + matrix33 m33; + m33.m = a.m * b; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, float b) +{ + matrix33 m33; + m33.m = a.m * b; + return m33; +} + +matrix33 __operator__mul__(matrix33 a, matrix33 b) +{ + matrix33 m33; + m33.m = a.m * b.m; + return m33; +} + +matrix33 __operator__div__(int a, matrix33 b) +{ + matrix33 m33; + m33.m = a / b.m; + return m33; +} + +matrix33 __operator__div__(float a, matrix33 b) +{ + matrix33 m33; + m33.m = a / b.m; + return m33; +} + +matrix33 __operator__div__(matrix33 a, int b) +{ + matrix33 m33; + m33.m = a.m / b; + return m33; +} + +matrix33 __operator__div__(matrix33 a, float b) +{ + matrix33 m33; + m33.m = a.m / b; + return m33; +} + +matrix33 __operator__div__(matrix33 a, matrix33 b) +{ + matrix33 m33; + m33.m = a.m / b.m; + return m33; +} + +int __operator__eq__(matrix33 a, matrix33 b) +{ + return a.m == b.m; +} + +int __operator__ne__(matrix33 a, matrix33 b) +{ + return a.m != b.m; +} + +float determinant (matrix33 a) +{ + return determinant(a.m); +} + +matrix33 transpose(matrix33 a) +{ + matrix33 m33; + m33.m = transpose(a.m); + return m33; +} + +point transform(matrix33 a, point b) +{ + return transform(a.m, b); +} + +vector transform(matrix33 a, vector b) +{ + return transform(a.m, b); +} + +normal transform(matrix33 a, normal b) +{ + return transform(a.m, b); +} +// Open Shading Language : Copyright (c) 2009-2017 Sony Pictures Imageworks Inc., et al. +// https://github.com/imageworks/OpenShadingLanguage/blob/master/LICENSE +// +// MaterialX specification (c) 2017 Lucasfilm Ltd. +// http://www.materialx.org/ + +#pragma once + +#include "color4.h" +#include "vector2.h" +#include "vector4.h" +#include "matrix33.h" + +// +// Support functions for OSL implementations of the MaterialX nodes. +// + +float mx_ternary(int expr, float v1, float v2) { if (expr) return v1; else return v2; } +int mx_ternary(int expr, int v1, int v2) { if (expr) return v1; else return v2; } +color mx_ternary(int expr, color v1, color v2) { if (expr) return v1; else return v2; } +color4 mx_ternary(int expr, color4 v1, color4 v2) { if (expr) return v1; else return v2; } +vector mx_ternary(int expr, vector v1, vector v2) { if (expr) return v1; else return v2; } +vector2 mx_ternary(int expr, vector2 v1, vector2 v2) { if (expr) return v1; else return v2; } +vector4 mx_ternary(int expr, vector4 v1, vector4 v2) { if (expr) return v1; else return v2; } +matrix mx_ternary(int expr, matrix v1, matrix v2) { if (expr) return v1; else return v2; } +matrix33 mx_ternary(int expr, matrix33 v1, matrix33 v2) { if (expr) return v1; else return v2; } + + +matrix33 mx_add(matrix33 a, matrix33 b) +{ + return matrix33(matrix( + a.m[0][0]+b.m[0][0], a.m[0][1]+b.m[0][1], a.m[0][2]+b.m[0][2], 0.0, + a.m[1][0]+b.m[1][0], a.m[1][1]+b.m[1][1], a.m[1][2]+b.m[1][2], 0.0, + a.m[2][0]+b.m[2][0], a.m[2][1]+b.m[2][1], a.m[2][2]+b.m[2][2], 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix33 mx_add(matrix33 a, float b) +{ + return matrix33(matrix( + a.m[0][0]+b, a.m[0][1]+b, a.m[0][2]+b, 0.0, + a.m[1][0]+b, a.m[1][1]+b, a.m[1][2]+b, 0.0, + a.m[2][0]+b, a.m[2][1]+b, a.m[2][2]+b, 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix mx_add(matrix a, matrix b) +{ + return matrix( + a[0][0]+b[0][0], a[0][1]+b[0][1], a[0][2]+b[0][2], a[0][3]+b[0][3], + a[1][0]+b[1][0], a[1][1]+b[1][1], a[1][2]+b[1][2], a[1][3]+b[1][3], + a[2][0]+b[2][0], a[2][1]+b[2][1], a[2][2]+b[2][2], a[2][3]+b[2][3], + a[3][0]+b[3][0], a[3][1]+b[3][1], a[3][2]+b[3][2], a[3][3]+b[3][3]); +} + +matrix mx_add(matrix a, float b) +{ + return matrix( + a[0][0]+b, a[0][1]+b, a[0][2]+b, a[0][3]+b, + a[1][0]+b, a[1][1]+b, a[1][2]+b, a[1][3]+b, + a[2][0]+b, a[2][1]+b, a[2][2]+b, a[2][3]+b, + a[3][0]+b, a[3][1]+b, a[3][2]+b, a[3][3]+b); +} + + +matrix33 mx_subtract(matrix33 a, matrix33 b) +{ + return matrix33(matrix( + a.m[0][0]-b.m[0][0], a.m[0][1]-b.m[0][1], a.m[0][2]-b.m[0][2], 0.0, + a.m[1][0]-b.m[1][0], a.m[1][1]-b.m[1][1], a.m[1][2]-b.m[1][2], 0.0, + a.m[2][0]-b.m[2][0], a.m[2][1]-b.m[2][1], a.m[2][2]-b.m[2][2], 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix33 mx_subtract(matrix33 a, float b) +{ + return matrix33(matrix( + a.m[0][0]-b, a.m[0][1]-b, a.m[0][2]-b, 0.0, + a.m[1][0]-b, a.m[1][1]-b, a.m[1][2]-b, 0.0, + a.m[2][0]-b, a.m[2][1]-b, a.m[2][2]-b, 0.0, + 0.0, 0.0, 0.0, 1.0)); +} + +matrix mx_subtract(matrix a, matrix b) +{ + return matrix( + a[0][0]-b[0][0], a[0][1]-b[0][1], a[0][2]-b[0][2], a[0][3]-b[0][3], + a[1][0]-b[1][0], a[1][1]-b[1][1], a[1][2]-b[1][2], a[1][3]-b[1][3], + a[2][0]-b[2][0], a[2][1]-b[2][1], a[2][2]-b[2][2], a[2][3]-b[2][3], + a[3][0]-b[3][0], a[3][1]-b[3][1], a[3][2]-b[3][2], a[3][3]-b[3][3]); +} + +matrix mx_subtract(matrix a, float b) +{ + return matrix( + a[0][0]-b, a[0][1]-b, a[0][2]-b, a[0][3]-b, + a[1][0]-b, a[1][1]-b, a[1][2]-b, a[1][3]-b, + a[2][0]-b, a[2][1]-b, a[2][2]-b, a[2][3]-b, + a[3][0]-b, a[3][1]-b, a[3][2]-b, a[3][3]-b); +} + + +float mx_extract(color in, int index) +{ + return in[index]; +} + +float mx_extract(color4 in, int index) +{ + if (index == 0) return in.rgb.r; + else if (index == 1) return in.rgb.g; + else if (index == 2) return in.rgb.b; + else return in.a; +} + +float mx_extract(vector2 in, int index) +{ + if (index == 0) return in.x; + else return in.y; +} + +float mx_extract(vector in, int index) +{ + return in[index]; +} + +float mx_extract(vector4 in, int index) +{ + if (index == 0) return in.x; + else if (index == 1) return in.y; + else if (index == 2) return in.z; + else return in.w; +} + + +float mx_remap(float in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + float x = (in - inLow)/(inHigh-inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color mx_remap(color in, color inLow, color inHigh, color outLow, color outHigh, int doClamp) +{ + color x = (in - inLow) / (inHigh - inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color mx_remap(color in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + color x = (in - inLow) / (inHigh - inLow); + if (doClamp == 1) { + x = clamp(x, 0, 1); + } + return outLow + (outHigh - outLow) * x; +} + +color4 mx_remap(color4 c, color4 inLow, color4 inHigh, color4 outLow, color4 outHigh, int doClamp) +{ + return color4(mx_remap(c.rgb, inLow.rgb, inHigh.rgb, outLow.rgb, outHigh.rgb, doClamp), + mx_remap(c.a, inLow.a, inHigh.a, outLow.a, outHigh.a, doClamp)); +} + +color4 mx_remap(color4 c, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + color4 c4_inLow = color4(color(inLow), inLow); + color4 c4_inHigh = color4(color(inHigh), inHigh); + color4 c4_outLow = color4(color(outLow), outLow); + color4 c4_outHigh = color4(color(outHigh), outHigh); + return mx_remap(c, c4_inLow, c4_inHigh, c4_outLow, c4_outHigh, doClamp); +} + +vector2 mx_remap(vector2 in, vector2 inLow, vector2 inHigh, vector2 outLow, vector2 outHigh, int doClamp) +{ + return vector2(mx_remap(in.x, inLow.x, inHigh.x, outLow.x, outHigh.x, doClamp), + mx_remap(in.y, inLow.y, inHigh.y, outLow.y, outHigh.y, doClamp)); +} + +vector2 mx_remap(vector2 in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + return vector2(mx_remap(in.x, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.y, inLow, inHigh, outLow, outHigh, doClamp)); +} + +vector4 mx_remap(vector4 in, vector4 inLow, vector4 inHigh, vector4 outLow, vector4 outHigh, int doClamp) +{ + return vector4(mx_remap(in.x, inLow.x, inHigh.x, outLow.x, outHigh.x, doClamp), + mx_remap(in.y, inLow.y, inHigh.y, outLow.y, outHigh.y, doClamp), + mx_remap(in.z, inLow.z, inHigh.z, outLow.z, outHigh.z, doClamp), + mx_remap(in.w, inLow.w, inHigh.w, outLow.w, outHigh.w, doClamp)); +} + +vector4 mx_remap(vector4 in, float inLow, float inHigh, float outLow, float outHigh, int doClamp) +{ + return vector4(mx_remap(in.x, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.y, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.z, inLow, inHigh, outLow, outHigh, doClamp), + mx_remap(in.w, inLow, inHigh, outLow, outHigh, doClamp)); +} + + +float mx_contrast(float in, float amount, float pivot) +{ + float out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color mx_contrast(color in, color amount, color pivot) +{ + color out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color mx_contrast(color in, float amount, float pivot) +{ + color out = in - pivot; + out *= amount; + out += pivot; + return out; +} + +color4 mx_contrast(color4 c, color4 amount, color4 pivot) +{ + return color4(mx_contrast(c.rgb, amount.rgb, pivot.rgb), + mx_contrast(c.a, amount.a, pivot.a)); +} + +color4 mx_contrast(color4 c, float amount, float pivot) +{ + return mx_contrast(c, color4(color(amount), amount), color4(color(pivot), pivot)); +} + +vector2 mx_contrast(vector2 in, vector2 amount, vector2 pivot) +{ + return vector2 (mx_contrast(in.x, amount.x, pivot.x), + mx_contrast(in.y, amount.y, pivot.y)); +} + +vector2 mx_contrast(vector2 in, float amount, float pivot) +{ + return mx_contrast(in, vector2(amount, amount), vector2(pivot, pivot)); +} + +vector4 mx_contrast(vector4 in, vector4 amount, vector4 pivot) +{ + return vector4(mx_contrast(in.x, amount.x, pivot.x), + mx_contrast(in.y, amount.y, pivot.y), + mx_contrast(in.z, amount.z, pivot.z), + mx_contrast(in.w, amount.w, pivot.w)); +} + +vector4 mx_contrast(vector4 in, float amount, float pivot) +{ + return vector4(mx_contrast(in.x, amount, pivot), + mx_contrast(in.y, amount, pivot), + mx_contrast(in.z, amount, pivot), + mx_contrast(in.w, amount, pivot)); +} + + +vector2 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + return vector2 (cnoise[0], cnoise[1]); +} + +color4 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + float fnoise = (float) noise(noisetype, x + 19, y + 73); + return color4 (cnoise, fnoise); +} + +vector4 mx_noise(string noisetype, float x, float y) +{ + color cnoise = (color) noise(noisetype, x, y); + float fnoise = (float) noise(noisetype, x + 19, y + 73); + return vector4 (cnoise[0], cnoise[1], cnoise[2], fnoise); +} + +vector2 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + return vector2 (cnoise[0], cnoise[1]); +} + +color4 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + float fnoise = (float) noise(noisetype, position+vector(19,73,29)); + return color4 (cnoise, fnoise); +} + +vector4 mx_noise(string noisetype, point position) +{ + color cnoise = (color) noise(noisetype, position); + float fnoise = (float) noise(noisetype, position+vector(19,73,29)); + return vector4 (cnoise[0], cnoise[1], cnoise[2], fnoise); +} + +float mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + float out = 0; + float amp = 1.0; + float xx = x; + float yy = y; + + for (int i = 0; i < octaves; i += 1) { + out += amp * noise(noisetype, xx, yy); + amp *= diminish; + xx *= lacunarity; + yy *= lacunarity; + } + return out; +} + +color mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color out = 0; + float amp = 1.0; + float xx = x; + float yy = y; + + for (int i = 0; i < octaves; i += 1) { + out += amp * (color)noise(noisetype, xx, yy); + amp *= diminish; + xx *= lacunarity; + yy *= lacunarity; + } + return out; +} + +vector2 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + return vector2((float) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype), + (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype)); +} + +color4 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype); + return color4 (c, f); +} + +vector4 mx_fbm(float x, float y, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(x, y, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(x+19, y+193, octaves, lacunarity, diminish, noisetype); + return vector4 (c[0], c[1], c[2], f); +} + +float mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + float out = 0; + float amp = 1.0; + point p = position; + + for (int i = 0; i < octaves; i += 1) { + out += amp * noise(noisetype, p); + amp *= diminish; + p *= lacunarity; + } + return out; +} + +color mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color out = 0; + float amp = 1.0; + point p = position; + + for (int i = 0; i < octaves; i += 1) { + out += amp * (color)noise(noisetype, p); + amp *= diminish; + p *= lacunarity; + } + return out; +} + +vector2 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + return vector2((float) mx_fbm(position, octaves, lacunarity, diminish, noisetype), + (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype)); +} + +color4 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(position, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype); + return color4 (c, f); +} + +vector4 mx_fbm(point position, int octaves, float lacunarity, float diminish, string noisetype) +{ + color c = (color) mx_fbm(position, octaves, lacunarity, diminish, noisetype); + float f = (float) mx_fbm(position+point(19, 193, 17), octaves, lacunarity, diminish, noisetype); + return vector4 (c[0], c[1], c[2], f); +} + +vector2 mx_worley_cell_position(int x, int y, int xoff, int yoff, float jitter) +{ + vector tmp = cellnoise(x+xoff, y+yoff); + vector2 off = vector2(tmp.x, tmp.y); + off -= 0.5; + off *= jitter; + off += 0.5; + return vector2(x, y) + off; +} + +vector mx_worley_cell_position(int x, int y, int z, int xoff, int yoff, int zoff, float jitter) +{ + vector off = cellnoise(vector(x+xoff, y+yoff, z+zoff)); + off -= 0.5; + off *= jitter; + off += 0.5; + return vector(x,y,z) + off; +} + +float mx_worley_distance(vector2 p, int x, int y, int X, int Y, float jitter, int metric) +{ + vector2 cellpos = mx_worley_cell_position(x,y,X,Y,jitter); + vector2 diff = cellpos - p; + + if (metric == 2) + return abs(diff.x) + abs(diff.y); // Manhattan distance + if (metric == 3) + return max(abs(diff.x), abs(diff.y)); // Chebyshev distance + return diff.x*diff.x + diff.y*diff.y; // Euclidean or distance^2 +} + +float mx_worley_distance(vector p, int x, int y, int z, int X, int Y, int Z, float jitter, int metric) +{ + vector cellpos = mx_worley_cell_position(x,y,z,X,Y,Z,jitter); + vector diff = cellpos - p; + if (metric == 2) + return abs(diff[0]) + abs(diff[1]); // Manhattan distance + if (metric == 3) + return max(abs(diff[0]), abs(diff[1])); // Chebyshev distance + return dot(diff, diff); // Eucldean or distance^2 +} + +void mx_sort_distance(float dist, output vector2 result) +{ + if (dist < result.x) + { + result.y = result.x; + result.x = dist; + } + else if (dist < result.y) + { + result.y = dist; + } +} + +void mx_sort_distance(float dist, output vector result) +{ + if (dist < result[0]) + { + result[2] = result[1]; + result[1] = result[0]; + result[0] = dist; + } + else if (dist < result[1]) + { + result[2] = result[1]; + result[1] = dist; + } + else if (dist < result[2]) + { + result[2] = dist; + } +} + +// return floor as well as the fractional remainder +float mx_floorfrac(float x, output int i) +{ + i = (int)floor(x); + return x - float(i); +} + +float mx_worley_noise_float(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + float sqdist = 1e6; + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + if (style == 1) + { + vector2 tmpP = minpos + p; + return cellnoise(tmpP.x, tmpP.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector2 mx_worley_noise_vector2(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + vector2 sqdist = vector2(1e6, 1e6); + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + + if (style == 1) + { + vector2 tmpP = minpos + p; + vector tmp = cellnoise(tmpP.x, tmpP.y); + return vector2(tmp.x, tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector mx_worley_noise_vector3(vector2 p, float jitter, int style, int metric) +{ + int X, Y; + vector sqdist = vector(1e6, 1e6, 1e6); + vector2 localpos = vector2(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y)); + vector2 minpos = vector2(0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + float dist = mx_worley_distance(localpos, x, y, X, Y, jitter, metric); + vector2 cellpos = mx_worley_cell_position(x, y, X, Y, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + if (style == 1) + { + vector2 tmpP = minpos + p; + return cellnoise(tmpP.x, tmpP.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +float mx_worley_noise_float(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector seed = p; + float sqdist = 1e6; + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if(dist < sqdist) + { + sqdist = dist; + minpos = cellpos; + } + } + } + } + if (style == 1) + return cellnoise(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector2 mx_worley_noise_vector2(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector2 sqdist = vector2(1e6, 1e6); + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.y = dist; + } + } + } + } + if (style == 1) + { + vector tmp = cellnoise(minpos + p); + return vector2(tmp.x,tmp.y); + } + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} + +vector mx_worley_noise_vector3(vector p, float jitter, int style, int metric) +{ + int X, Y, Z; + vector sqdist = 1e6; + vector localpos = vector(mx_floorfrac(p.x, X), mx_floorfrac(p.y, Y), mx_floorfrac(p.z, Z)); + vector minpos = vector(0.0, 0.0, 0.0); + + for (int x = -1; x <= 1; ++x) + { + for (int y = -1; y <= 1; ++y) + { + for (int z = -1; z <= 1; ++z) + { + float dist = mx_worley_distance(localpos, x, y, z, X, Y, Z, jitter, metric); + vector cellpos = mx_worley_cell_position(x, y, z, X, Y, Z, jitter) - localpos; + if (dist < sqdist.x) + { + sqdist.z = sqdist.y; + sqdist.y = sqdist.x; + sqdist.x = dist; + minpos = cellpos; + } + else if (dist < sqdist.y) + { + sqdist.z = sqdist.y; + sqdist.y = dist; + } + else if (dist < sqdist.z) + { + sqdist.z = dist; + } + } + } + } + if (style == 1) + return cellnoise(minpos + p); + else + { + if (metric == 0) + sqdist = sqrt(sqdist); + return sqdist; + } +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define VECTOR2_H + +// vector2 is a 2D vector +struct vector2 +{ + float x; + float y; +}; + + + +// +// For vector2, define math operators to match vector +// + +vector2 __operator__neg__(vector2 a) +{ + return vector2(-a.x, -a.y); +} + +vector2 __operator__add__(vector2 a, vector2 b) +{ + return vector2(a.x + b.x, a.y + b.y); +} + +vector2 __operator__add__(vector2 a, int b) +{ + return a + vector2(b, b); +} + +vector2 __operator__add__(vector2 a, float b) +{ + return a + vector2(b, b); +} + +vector2 __operator__add__(int a, vector2 b) +{ + return vector2(a, a) + b; +} + +vector2 __operator__add__(float a, vector2 b) +{ + return vector2(a, a) + b; +} + +vector2 __operator__sub__(vector2 a, vector2 b) +{ + return vector2(a.x - b.x, a.y - b.y); +} + +vector2 __operator__sub__(vector2 a, int b) +{ + return a - vector2(b, b); +} + +vector2 __operator__sub__(vector2 a, float b) +{ + return a - vector2(b, b); +} + +vector2 __operator__sub__(int a, vector2 b) +{ + return vector2(a, a) - b; +} + +vector2 __operator__sub__(float a, vector2 b) +{ + return vector2(a, a) - b; +} + +vector2 __operator__mul__(vector2 a, vector2 b) +{ + return vector2(a.x * b.x, a.y * b.y); +} + +vector2 __operator__mul__(vector2 a, int b) +{ + return a * vector2(b, b); +} + +vector2 __operator__mul__(vector2 a, float b) +{ + return a * vector2(b, b); +} + +vector2 __operator__mul__(int a, vector2 b) +{ + return b * vector2(a, a); +} + +vector2 __operator__mul__(float a, vector2 b) +{ + return b * vector2(a, a); +} + +vector2 __operator__div__(vector2 a, vector2 b) +{ + return vector2(a.x / b.x, a.y / b.y); +} + +vector2 __operator__div__(vector2 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * vector2(b_inv, b_inv); +} + +vector2 __operator__div__(vector2 a, float b) +{ + float b_inv = 1.0 / b; + return a * vector2(b_inv, b_inv); +} + +vector2 __operator__div__(int a, vector2 b) +{ + return vector2(a, a) / b; +} + +vector2 __operator__div__(float a, vector2 b) +{ + return vector2(a, a) / b; +} + +int __operator__eq__(vector2 a, vector2 b) +{ + return (a.x == b.x) && (a.y == b.y); +} + +int __operator__neq__(vector2 a, vector2 b) +{ + return (a.x != b.x) || (a.y != b.y); +} + + + + +// +// For vector2, define most of the stdosl functions to match vector +// + +vector2 abs(vector2 a) +{ + return vector2 (abs(a.x), abs(a.y)); +} + +vector2 ceil(vector2 a) +{ + return vector2 (ceil(a.x), ceil(a.y)); +} + +vector2 round(vector2 a) +{ + return vector2 (round(a.x), round(a.y)); +} + +vector2 floor(vector2 a) +{ + return vector2 (floor(a.x), floor(a.y)); +} + +vector2 sqrt(vector2 a) +{ + return vector2 (sqrt(a.x), sqrt(a.y)); +} + +vector2 exp(vector2 a) +{ + return vector2 (exp(a.x), exp(a.y)); +} + +vector2 log(vector2 a) +{ + return vector2 (log(a.x), log(a.y)); +} + +vector2 log2(vector2 a) +{ + return vector2 (log2(a.x), log2(a.y)); +} + +vector2 mix(vector2 a, vector2 b, float x ) +{ + return vector2 (mix(a.x, b.x, x), mix(a.y, b.y, x)); +} + +vector2 mix(vector2 a, vector2 b, vector2 x ) +{ + return vector2 (mix(a.x, b.x, x.x), mix(a.y, b.y, x.y)); +} + +float dot(vector2 a, vector2 b) +{ + return (a.x * b.x + a.y * b.y); +} + +float length (vector2 a) +{ + return hypot (a.x, a.y); +} + +vector2 smoothstep(vector2 low, vector2 high, vector2 in) +{ + return vector2 (smoothstep(low.x, high.x, in.x), + smoothstep(low.y, high.y, in.y)); +} + +vector2 smoothstep(float low, float high, vector2 in) +{ + return vector2 (smoothstep(low, high, in.x), + smoothstep(low, high, in.y)); +} + +vector2 clamp(vector2 in, vector2 low, vector2 high) +{ + return vector2 (clamp(in.x, low.x, high.x), + clamp(in.y, low.y, high.y)); +} + +vector2 clamp(vector2 in, float low, float high) +{ + return clamp(in, vector2(low, low), vector2(high, high)); +} + +vector2 max(vector2 a, vector2 b) +{ + return vector2 (max(a.x, b.x), + max(a.y, b.y)); +} + +vector2 min(vector2 a, vector2 b) +{ + return vector2 (min(a.x, b.x), + min(a.y, b.y)); +} + +vector2 min(vector2 a, float b) +{ + return min(a, vector2(b, b)); +} + +vector2 max(vector2 a, float b) +{ + return max(a, vector2(b, b)); +} + +vector2 normalize(vector2 a) +{ + return a / length(a); +} + +vector2 mod(vector2 a, vector2 b) +{ + return vector2(mod(a.x, b.x), + mod(a.y, b.y)); +} + +vector2 mod(vector2 a, float b) +{ + return mod(a, vector2(b, b)); +} + +vector2 fmod(vector2 a, vector2 b) +{ + return vector2 (fmod(a.x, b.x), + fmod(a.y, b.y)); +} + +vector2 fmod(vector2 a, float b) +{ + return fmod(a, vector2(b, b)); +} + +vector2 pow(vector2 in, vector2 amount) +{ + return vector2(pow(in.x, amount.x), pow(in.y, amount.y)); +} + +vector2 pow(vector2 in, float amount) +{ + return pow(in, vector2(amount, amount)); +} + +vector2 sign(vector2 a) +{ + return vector2(sign(a.x), + sign(a.y)); +} + +vector2 sin(vector2 a) +{ + return vector2(sin(a.x), + sin(a.y)); +} + +vector2 cos(vector2 a) +{ + return vector2(cos(a.x), + cos(a.y)); +} + +vector2 tan(vector2 a) +{ + return vector2(tan(a.x), + tan(a.y)); +} + +vector2 asin(vector2 a) +{ + return vector2(asin(a.x), + asin(a.y)); +} + +vector2 acos(vector2 a) +{ + return vector2(acos(a.x), + acos(a.y)); +} + +vector2 atan2(vector2 a, float f) +{ + return vector2(atan2(a.x, f), + atan2(a.y, f)); +} + +vector2 atan2(vector2 a, vector2 b) +{ + return vector2(atan2(a.x, b.x), + atan2(a.y, b.y)); +} +// Copyright Contributors to the Open Shading Language project. +// SPDX-License-Identifier: BSD-3-Clause +// https://github.com/AcademySoftwareFoundation/OpenShadingLanguage + +#pragma once +#define VECTOR4_H + + +// vector4 is a 4D vector +struct vector4 +{ + float x; + float y; + float z; + float w; +}; + + + +// +// For vector4, define math operators to match vector +// + +vector4 __operator__neg__(vector4 a) +{ + return vector4(-a.x, -a.y, -a.z, -a.w); +} + +vector4 __operator__add__(vector4 a, vector4 b) +{ + return vector4(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w); +} + +vector4 __operator__add__(vector4 a, int b) +{ + return a + vector4(b, b, b, b); +} + +vector4 __operator__add__(vector4 a, float b) +{ + return a + vector4(b, b, b, b); +} + +vector4 __operator__add__(int a, vector4 b) +{ + return vector4(a, a, a, a) + b; +} + +vector4 __operator__add__(float a, vector4 b) +{ + return vector4(a, a, a, a) + b; +} + +vector4 __operator__sub__(vector4 a, vector4 b) +{ + return vector4(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w); +} + +vector4 __operator__sub__(vector4 a, int b) +{ + return a - vector4(b, b, b, b); +} + +vector4 __operator__sub__(vector4 a, float b) +{ + return a - vector4(b, b, b, b); +} + +vector4 __operator__sub__(int a, vector4 b) +{ + return vector4(a, a, a, a) - b; +} + +vector4 __operator__sub__(float a, vector4 b) +{ + return vector4(a, a, a, a) - b; +} + +vector4 __operator__mul__(vector4 a, vector4 b) +{ + return vector4(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w); +} + +vector4 __operator__mul__(vector4 a, int b) +{ + return a * vector4(b, b, b, b); +} + +vector4 __operator__mul__(vector4 a, float b) +{ + return a * vector4(b, b, b, b); +} + +vector4 __operator__mul__(int a, vector4 b) +{ + return vector4(a, a, a, a) * b; +} + +vector4 __operator__mul__(float a, vector4 b) +{ + return vector4(a, a, a, a) * b; +} + +vector4 __operator__div__(vector4 a, vector4 b) +{ + return vector4(a.x / b.x, a.y / b.y, a.z / b.z, a.w / b.w); +} + +vector4 __operator__div__(vector4 a, int b) +{ + float b_inv = 1.0 / float(b); + return a * vector4(b_inv, b_inv, b_inv, b_inv); +} + +vector4 __operator__div__(vector4 a, float b) +{ + float b_inv = 1.0 / b; + return a * vector4(b_inv, b_inv, b_inv, b_inv); +} + +vector4 __operator__div__(int a, vector4 b) +{ + return vector4(a, a, a, a) / b; +} + +vector4 __operator__div__(float a, vector4 b) +{ + return vector4(a, a, a, a) / b; +} + +int __operator__eq__(vector4 a, vector4 b) +{ + return (a.x == b.x) && (a.y == b.y) && (a.z == b.z) && (a.w == b.w); +} + +int __operator__neq__(vector4 a, vector4 b) +{ + return (a.x != b.x) || (a.y != b.y) || (a.z != b.z) || (a.w != b.w); +} + + + + +// +// For vector4, define most of the stdosl functions to match vector +// + +vector4 abs(vector4 in) +{ + return vector4 (abs(in.x), + abs(in.y), + abs(in.z), + abs(in.w)); +} + +vector4 ceil(vector4 in) +{ + return vector4 (ceil(in.x), + ceil(in.y), + ceil(in.z), + ceil(in.w)); +} + +vector4 round(vector4 in) +{ + return vector4 (round(in.x), + round(in.y), + round(in.z), + round(in.w)); +} + +vector4 floor(vector4 in) +{ + return vector4 (floor(in.x), + floor(in.y), + floor(in.z), + floor(in.w)); +} + +vector4 sqrt(vector4 in) +{ + return vector4 (sqrt(in.x), + sqrt(in.y), + sqrt(in.z), + sqrt(in.w)); +} + +vector4 exp(vector4 in) +{ + return vector4 (exp(in.x), + exp(in.y), + exp(in.z), + exp(in.w)); +} + +vector4 log(vector4 in) +{ + return vector4 (log(in.x), + log(in.y), + log(in.z), + log(in.w)); +} + +vector4 log2(vector4 in) +{ + return vector4 (log2(in.x), + log2(in.y), + log2(in.z), + log2(in.w)); +} + +vector4 mix(vector4 value1, vector4 value2, float x ) +{ + return vector4 (mix( value1.x, value2.x, x), + mix( value1.y, value2.y, x), + mix( value1.z, value2.z, x), + mix( value1.w, value2.w, x)); +} + +vector4 mix(vector4 value1, vector4 value2, vector4 x ) +{ + return vector4 (mix( value1.x, value2.x, x.x), + mix( value1.y, value2.y, x.y), + mix( value1.z, value2.z, x.z), + mix( value1.w, value2.w, x.w)); +} + +vector vec4ToVec3(vector4 v) +{ + return vector(v.x, v.y, v.z) / v.w; +} + +float dot(vector4 a, vector4 b) +{ + return ((a.x * b.x) + (a.y * b.y) + (a.z * b.z) + (a.w * b.w)); +} + +float length (vector4 a) +{ + return sqrt (a.x*a.x + a.y*a.y + a.z*a.z + a.w*a.w); +} + +vector4 smoothstep(vector4 low, vector4 high, vector4 in) +{ + return vector4 (smoothstep(low.x, high.x, in.x), + smoothstep(low.y, high.y, in.y), + smoothstep(low.z, high.z, in.z), + smoothstep(low.w, high.w, in.w)); +} + +vector4 smoothstep(float low, float high, vector4 in) +{ + return vector4 (smoothstep(low, high, in.x), + smoothstep(low, high, in.y), + smoothstep(low, high, in.z), + smoothstep(low, high, in.w)); +} + +vector4 clamp(vector4 in, vector4 low, vector4 high) +{ + return vector4 (clamp(in.x, low.x, high.x), + clamp(in.y, low.y, high.y), + clamp(in.z, low.z, high.z), + clamp(in.w, low.w, high.w)); +} + +vector4 clamp(vector4 in, float low, float high) +{ + return vector4 (clamp(in.x, low, high), + clamp(in.y, low, high), + clamp(in.z, low, high), + clamp(in.w, low, high)); +} + +vector4 max(vector4 a, vector4 b) +{ + return vector4 (max(a.x, b.x), + max(a.y, b.y), + max(a.z, b.z), + max(a.w, b.w)); +} + +vector4 max(vector4 a, float b) +{ + return max(a, vector4(b, b, b, b)); +} + +vector4 min(vector4 a, vector4 b) +{ + return vector4 (min(a.x, b.x), + min(a.y, b.y), + min(a.z, b.z), + min(a.w, b.w)); +} + +vector4 min(vector4 a, float b) +{ + return min(a, vector4(b, b, b, b)); +} + +vector4 normalize(vector4 a) +{ + return a / length(a); +} + +vector4 mod(vector4 a, vector4 b) +{ + return vector4(mod(a.x, b.x), + mod(a.y, b.y), + mod(a.z, b.z), + mod(a.w, b.w)); +} + +vector4 mod(vector4 a, float b) +{ + return mod(a, vector4(b, b, b, b)); +} + +vector4 fmod(vector4 a, vector4 b) +{ + return vector4 (fmod(a.x, b.x), + fmod(a.y, b.y), + fmod(a.z, b.z), + fmod(a.w, b.w)); +} + +vector4 fmod(vector4 a, float b) +{ + return fmod(a, vector4(b, b, b, b)); +} + +vector4 pow(vector4 in, vector4 amount) +{ + return vector4 (pow(in.x, amount.x), + pow(in.y, amount.y), + pow(in.z, amount.z), + pow(in.w, amount.w)); +} + +vector4 pow(vector4 in, float amount) +{ + return vector4 (pow(in.x, amount), + pow(in.y, amount), + pow(in.z, amount), + pow(in.w, amount)); +} + +vector4 sign(vector4 a) +{ + return vector4(sign(a.x), + sign(a.y), + sign(a.z), + sign(a.w)); +} + +vector4 sin(vector4 a) +{ + return vector4(sin(a.x), + sin(a.y), + sin(a.z), + sin(a.w)); +} + +vector4 cos(vector4 a) +{ + return vector4(cos(a.x), + cos(a.y), + cos(a.z), + cos(a.w)); +} + +vector4 tan(vector4 a) +{ + return vector4(tan(a.x), + tan(a.y), + tan(a.z), + tan(a.w)); +} + +vector4 asin(vector4 a) +{ + return vector4(asin(a.x), + asin(a.y), + asin(a.z), + asin(a.w)); +} + +vector4 acos(vector4 a) +{ + return vector4(acos(a.x), + acos(a.y), + acos(a.z), + acos(a.w)); +} + +vector4 atan2(vector4 a, float f) +{ + return vector4(atan2(a.x, f), + atan2(a.y, f), + atan2(a.z, f), + atan2(a.w, f)); +} + +vector4 atan2(vector4 a, vector4 b) +{ + return vector4(atan2(a.x, b.x), + atan2(a.y, b.y), + atan2(a.z, b.z), + atan2(a.w, b.w)); +} + + +vector4 transform (matrix M, vector4 p) +{ + return vector4 (M[0][0]*p.x + M[1][0]*p.y + M[2][0]*p.z + M[3][0]*p.w, + M[0][1]*p.x + M[1][1]*p.y + M[2][1]*p.z + M[3][1]*p.w, + M[0][2]*p.x + M[1][2]*p.y + M[2][2]*p.z + M[3][2]*p.w, + M[0][3]*p.x + M[1][3]*p.y + M[2][3]*p.z + M[3][3]*p.w); +} + +vector4 transform (string fromspace, string tospace, vector4 p) +{ + return transform (matrix(fromspace,tospace), p); +} +vector2 mx_transform_uv(vector2 texcoord) +{ + return texcoord; +} +vector2 mx_transform_uv(vector2 texcoord) +{ + return vector2(texcoord.x, 1.0 - texcoord.y); +} +// Adds some syntactic sugar allowing mixing vector4 and color4 as +// arguments of some binary operators used by OCIO transform code. + +vector4 __operator__mul__(matrix m, vector4 v) +{ + return transform(m, v); +} + +vector4 __operator__mul__(color4 c, vector4 v) +{ + return vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a) * v; +} + +vector4 __operator__mul__(vector4 v, color4 c) +{ + return c * v; +} + +vector4 __operator__sub__(color4 c, vector4 v) +{ + return vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a) - v; +} + +vector4 __operator__add__(vector4 v, color4 c) +{ + return v + vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a); +} + +vector4 __operator__add__(color4 c, vector4 v) +{ + return v + c; +} + +vector4 pow(color4 c, vector4 v) +{ + return pow(vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a), v); +} + +vector4 max(vector4 v, color4 c) +{ + return max(v, vector4(c.rgb.r, c.rgb.g, c.rgb.b, c.a)); +} +#include "mx_burn_float.osl" + +void mx_burn_color3(color fg, color bg, float mix, output color result) +{ + mx_burn_float(fg[0], bg[0], mix, result[0]); + mx_burn_float(fg[1], bg[1], mix, result[1]); + mx_burn_float(fg[2], bg[2], mix, result[2]); +} +#include "mx_burn_float.osl" + +void mx_burn_color4(color4 fg, color4 bg, float mix, output color4 result) +{ + mx_burn_float(fg.rgb[0], bg.rgb[0], mix, result.rgb[0]); + mx_burn_float(fg.rgb[1], bg.rgb[1], mix, result.rgb[1]); + mx_burn_float(fg.rgb[2], bg.rgb[2], mix, result.rgb[2]); + mx_burn_float(fg.a, bg.a, mix, result.a); +} +void mx_burn_float(float fg, float bg, float mix, output float result) +{ + if (abs(fg) < M_FLOAT_EPS) + { + result = 0.0; + return; + } + result = mix*(1.0 - ((1.0 - bg) / fg)) + ((1.0-mix)*bg); +} +void mx_cellnoise2d_float(vector2 texcoord, output float result) +{ + result = cellnoise(texcoord.x, texcoord.y); +} +void mx_cellnoise3d_float(vector position, output float result) +{ + result = cellnoise(position); +} +void mx_creatematrix_vector3_matrix33(vector in1, vector in2, vector in3, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_creatematrix_vector3_matrix44(vector in1, vector in2, vector in3, vector in4, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, 0.0, + in2.x, in2.y, in2.z, 0.0, + in3.x, in3.y, in3.z, 0.0, + in4.x, in4.y, in4.z, 1.0); +} + +void mx_creatematrix_vector4_matrix44(vector4 in1, vector4 in2, vector4 in3, vector4 in4, output matrix result) +{ + result = matrix(in1.x, in1.y, in1.z, in1.w, + in2.x, in2.y, in2.z, in2.w, + in3.x, in3.y, in3.z, in3.w, + in4.x, in4.y, in4.z, in4.w); +} +void mx_disjointover_color4(color4 fg, color4 bg, float mix, output color4 result) +{ + float summedAlpha = fg.a + bg.a; + + if (summedAlpha <= 1) + { + result.rgb = fg.rgb + bg.rgb; + } + else + { + if (abs(bg.a) < M_FLOAT_EPS) + { + result.rgb = 0.0; + } + else + { + float x = (1 - fg.a) / bg.a; + result.rgb = fg.rgb + bg.rgb * x; + } + } + result.a = min(summedAlpha, 1.0); + + result.rgb = result.rgb * mix + (1.0 - mix) * bg.rgb; + result.a = result.a * mix + (1.0 - mix) * bg.a; +} +#include "mx_dodge_float.osl" + +void mx_dodge_color3(color fg, color bg, float mix, output color result) +{ + mx_dodge_float(fg[0], bg[0], mix, result[0]); + mx_dodge_float(fg[1], bg[1], mix, result[1]); + mx_dodge_float(fg[2], bg[2], mix, result[2]); +} +#include "mx_dodge_float.osl" + +void mx_dodge_color4(color4 fg , color4 bg , float mix , output color4 result) +{ + mx_dodge_float(fg.rgb[0], bg.rgb[0], mix, result.rgb[0]); + mx_dodge_float(fg.rgb[1], bg.rgb[1], mix, result.rgb[1]); + mx_dodge_float(fg.rgb[2], bg.rgb[2], mix, result.rgb[2]); + mx_dodge_float(fg.a, bg.a, mix, result.a); +} +void mx_dodge_float(float fg, float bg, float mix, output float out) +{ + if (abs(1.0 - fg) < M_FLOAT_EPS) + { + out = 0.0; + return; + } + out = mix*(bg / (1.0 - fg)) + ((1.0-mix)*bg); +} +void mx_fractal2d_float(float amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output float result) +{ + float f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector2(vector2 amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector2 result) +{ + vector2 f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector3(vector amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector result) +{ + vector f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal2d_vector4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector2 texcoord, output vector4 result) +{ + vector4 f = mx_fbm(texcoord.x, texcoord.y, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_float(float amplitude, int octaves, float lacunarity, float diminish, vector position, output float result) +{ + float f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector2(vector2 amplitude, int octaves, float lacunarity, float diminish, vector position, output vector2 result) +{ + vector2 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector3(vector amplitude, int octaves, float lacunarity, float diminish, vector position, output vector result) +{ + vector f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_fractal3d_vector4(vector4 amplitude, int octaves, float lacunarity, float diminish, vector position, output vector4 result) +{ + vector4 f = mx_fbm(position, octaves, lacunarity, diminish, "snoise"); + result = f * amplitude; +} +void mx_frame_float(output float result) +{ + // Use the standard default value if the attribute is not present. + result = 1.0; + getattribute("frame", result); +} +void mx_geomcolor_color3(int index, output color result) +{ + getattribute("color", result); +} +void mx_geomcolor_color4(int index, output color4 result) +{ + float value[4]; + getattribute("color", value); + result.rgb[0] = value[0]; + result.rgb[1] = value[1]; + result.rgb[2] = value[2]; + result.a = value[3]; +} +void mx_geomcolor_float(int index, output float result) +{ + getattribute("color", result); +} +void mx_geompropvalue_boolean(string geomprop, int defaultVal, output int out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_color(string geomprop, color defaultVal, output color out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_color4(string geomprop, color4 defaultVal, output color4 out) +{ + float value[4]; + if (getattribute(geomprop, value) == 0) + { + out.rgb = defaultVal.rgb; + out.a = defaultVal.a; + } + else + { + out.rgb[0] = value[0]; + out.rgb[1] = value[1]; + out.rgb[2] = value[2]; + out.a = value[3]; + } +} +void mx_geompropvalue_float(string geomprop, float defaultVal, output float result) +{ + if (getattribute(geomprop, result) == 0) + { + result = defaultVal; + } +} +void mx_geompropvalue_integer(string geomprop, int defaultVal, output int out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_string(string geomprop, string defaultVal, output string out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_vector2(string geomprop, vector2 defaultVal, output vector2 out) +{ + float value[2]; + if (getattribute(geomprop, value) == 0) + { + out = defaultVal; + } + else + { + out.x = value[0]; + out.y = value[1]; + } +} +void mx_geompropvalue_vector(string geomprop, vector defaultVal, output vector out) +{ + if (getattribute(geomprop, out) == 0) + out = defaultVal; +} +void mx_geompropvalue_vector4(string geomprop, vector4 defaultVal, output vector4 out) +{ + float value[4]; + if (getattribute(geomprop, value) == 0) + { + out = defaultVal; + } + else + { + out.x = value[0]; + out.y = value[1]; + out.z = value[2]; + out.w = value[3]; + } +} +void mx_heighttonormal_vector3(float height, float scale, vector2 texcoord, output vector result) +{ + // Scale factor for parity with traditional Sobel filtering. + float SOBEL_SCALE_FACTOR = 1.0 / 16.0; + + // Compute screen-space gradients of the heightfield and texture coordinates. + vector2 dHdS = vector2(Dx(height), Dy(height)) * scale * SOBEL_SCALE_FACTOR; + vector2 dUdS = vector2(Dx(texcoord.x), Dy(texcoord.x)); + vector2 dVdS = vector2(Dx(texcoord.y), Dy(texcoord.y)); + + // Construct a screen-space tangent frame. + vector tangent = vector(dUdS.x, dVdS.x, dHdS.x); + vector bitangent = vector(dUdS.y, dVdS.y, dHdS.y); + vector n = cross(tangent, bitangent); + + // Handle invalid and mirrored texture coordinates. + if (dot(n, n) < M_FLOAT_EPS * M_FLOAT_EPS) + { + n = vector(0, 0, 1); + } + else if (n[2] < 0.0) + { + n *= -1.0; + } + + // Normalize and encode the results. + result = normalize(n) * 0.5 + 0.5; +} +void mx_hsvtorgb_color3(vector _in, output vector result) +{ + result = transformc("hsv","rgb", _in); +} +void mx_hsvtorgb_color4(color4 _in, output color4 result) +{ + result = color4(transformc("hsv","rgb", _in.rgb), 1.0); +} +#include "lib/$fileTransformUv" + +void mx_image_color3(textureresource file, string layer, color default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output color out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value; + vector2 st = mx_transform_uv(texcoord); + out = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + , "colorspace", file.colorspace +#endif + ); +} +#include "lib/$fileTransformUv" + +void mx_image_color4(textureresource file, string layer, color4 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output color4 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value.rgb; + float missingAlpha = default_value.a; + vector2 st = mx_transform_uv(texcoord); + float alpha; + color rgb = texture(file.filename, st.x, st.y, "alpha", alpha, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, "missingalpha", missingAlpha, + "swrap", uaddressmode, "twrap", vaddressmode +#if OSL_VERSION_MAJOR >= 1 && OSL_VERSION_MINOR >= 14 + , "colorspace", file.colorspace +#endif + ); + + out = color4(rgb, alpha); +} +#include "lib/$fileTransformUv" + +void mx_image_float(textureresource file, string layer, float default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output float out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value); + vector2 st = mx_transform_uv(texcoord); + color rgb = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); + out = rgb[0]; +} +#include "lib/$fileTransformUv" + +void mx_image_vector2(textureresource file, string layer, vector2 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector2 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value.x, default_value.y, 0.0); + vector2 st = mx_transform_uv(texcoord); + color rgb = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); + out.x = rgb[0]; + out.y = rgb[1]; +} +#include "lib/$fileTransformUv" + +void mx_image_vector3(textureresource file, string layer, vector default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = default_value; + vector2 st = mx_transform_uv(texcoord); + out = texture(file.filename, st.x, st.y, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, + "swrap", uaddressmode, "twrap", vaddressmode); +} +#include "lib/$fileTransformUv" + +void mx_image_vector4(textureresource file, string layer, vector4 default_value, vector2 texcoord, string uaddressmode, string vaddressmode, string filtertype, string framerange, int frameoffset, string frameendaction, output vector4 out) +{ + if (file.filename == "" || + (uaddressmode == "constant" && (texcoord.x<0.0 || texcoord.x>1.0)) || + (vaddressmode == "constant" && (texcoord.y<0.0 || texcoord.y>1.0))) + { + out = default_value; + return; + } + + color missingColor = color(default_value.x, default_value.y, default_value.z); + float missingAlpha = default_value.w; + vector2 st = mx_transform_uv(texcoord); + float alpha; + color rgb = texture(file.filename, st.x, st.y, "alpha", alpha, + "subimage", layer, "interp", filtertype, + "missingcolor", missingColor, "missingalpha", missingAlpha, + "swrap", uaddressmode, "twrap", vaddressmode); + + out = vector4(rgb[0], rgb[1], rgb[2], alpha); +} +void mx_luminance_color3(color in, color lumacoeffs, output color result) +{ + result = dot(in, lumacoeffs); +} +void mx_luminance_color4(color4 in, color lumacoeffs, output color4 result) +{ + result = color4(dot(in.rgb, lumacoeffs), in.a); +} +void mx_mix_surfaceshader(surfaceshader fg, surfaceshader bg, float w, output surfaceshader result) +{ + result.bsdf = mix(bg.bsdf, fg.bsdf, w); + result.edf = mix(bg.edf, fg.edf, w); + result.opacity = mix(bg.opacity, fg.opacity, w); +} +void mx_noise2d_float(float amplitude, float pivot, vector2 texcoord, output float result) +{ + float value = noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector2(vector2 amplitude, float pivot, vector2 texcoord, output vector2 result) +{ + vector2 value = mx_noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector3(vector amplitude, float pivot, vector2 texcoord, output vector result) +{ + vector value = noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise2d_vector4(vector4 amplitude, float pivot, vector2 texcoord, output vector4 result) +{ + vector4 value = mx_noise("snoise", texcoord.x, texcoord.y); + result = value * amplitude + pivot; +} +void mx_noise3d_float(float amplitude, float pivot, vector position, output float result) +{ + float value = noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector2(vector2 amplitude, float pivot, vector position, output vector2 result) +{ + vector2 value = mx_noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector3(vector amplitude, float pivot, vector position, output vector result) +{ + vector value = noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_noise3d_vector4(vector4 amplitude, float pivot, vector position, output vector4 result) +{ + vector4 value = mx_noise("snoise", position); + result = value * amplitude + pivot; +} +void mx_normalmap_vector2(vector value, vector2 normal_scale, vector N, vector T, vector B, output vector result) +{ + if (value == vector(0.0)) + { + result = N; + } + else + { + // The OSL backend uses dPdu and dPdv for tangents and bitangents, but these vectors are not + // guaranteed to be orthonormal. + // + // Orthogonalize the tangent frame using Gram-Schmidt, unlike in the other backends. + // + vector v = value * 2.0 - 1.0; + vector Tn = normalize(T - dot(T, N) * N); + vector Bn = normalize(B - dot(B, N) * N - dot(B, Tn) * Tn); + result = normalize(Tn * v[0] * normal_scale.x + Bn * v[1] * normal_scale.y + N * v[2]); + } +} + +void mx_normalmap_float(vector value, float normal_scale, vector N, vector T, vector B, output vector result) +{ + mx_normalmap_vector2(value, vector2(normal_scale, normal_scale), N, T, B, result); +} +void mx_premult_color4(color4 in, output color4 result) +{ + result = color4(in.rgb * in.a, in.a); +} +void mx_rgbtohsv_color3(vector _in, output vector result) +{ + result = transformc("rgb","hsv", _in); +} +void mx_rgbtohsv_color4(color4 _in, output color4 result) +{ + result = color4(transformc("rgb","hsv", _in.rgb), 1.0); +} +void mx_rotate_vector2(vector2 _in, float amount, output vector2 result) +{ + float rotationRadians = radians(amount); + float sa = sin(rotationRadians); + float ca = cos(rotationRadians); + result = vector2(ca*_in.x + sa*_in.y, -sa*_in.x + ca*_in.y); +} +matrix rotationMatrix(vector axis, float angle) +{ + vector nAxis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return matrix(oc * nAxis[0] * nAxis[0] + c, oc * nAxis[0] * nAxis[1] - nAxis[2] * s, oc * nAxis[2] * nAxis[0] + nAxis[1] * s, 0.0, + oc * nAxis[0] * nAxis[1] + nAxis[2] * s, oc * nAxis[1] * nAxis[1] + c, oc * nAxis[1] * nAxis[2] - nAxis[0] * s, 0.0, + oc * nAxis[2] * nAxis[0] - nAxis[1] * s, oc * nAxis[1] * nAxis[2] + nAxis[0] * s, oc * nAxis[2] * nAxis[2] + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +void mx_rotate_vector3(vector _in, float amount, vector axis, output vector result) +{ + float rotationRadians = radians(amount); + matrix m = rotationMatrix(axis, rotationRadians); + vector4 trans = transform(m, vector4(_in[0], _in[1], _in[2], 1.0)); + result = vector(trans.x, trans.y, trans.z); +} +void mx_surface_unlit(float emission_weight, color emission_color, float transmission_weight, color transmission_color, float opacity, output surfaceshader result) +{ + float trans = clamp(transmission_weight, 0.0, 1.0); + result.bsdf = trans * transmission_color * transparent(); + result.edf = (1.0 - trans) * emission_weight * emission_color * emission(); + result.opacity = clamp(opacity, 0.0, 1.0); +} +void mx_surfacematerial(surfaceshader surface, surfaceshader back, displacementshader disp, output MATERIAL result) +{ + float opacity_weight = clamp(surface.opacity, 0.0, 1.0); + result = (surface.bsdf + surface.edf) * opacity_weight + transparent() * (1.0 - opacity_weight); +} +void mx_time_float(float fps, output float result) +{ + // Use the standard default value if the attribute is not present. + result = 0.0; + getattribute("time", result); +} +void mx_transformmatrix_vector2M3(vector2 val, matrix m, output vector2 result) +{ + point res = transform(m, point(val.x, val.y, 1.0)); + result.x = res[0]; + result.y = res[1]; +} +void mx_unpremult_color4(color4 in, output color4 result) +{ + result = color4(in.rgb / in.a, in.a); +} +void mx_worleynoise2d_float(vector2 texcoord, float jitter, int style, output float result) +{ + result = mx_worley_noise_float(texcoord, jitter, style, 0); +} +void mx_worleynoise2d_vector2(vector2 texcoord, float jitter, int style, output vector2 result) +{ + result = mx_worley_noise_vector2(texcoord, jitter, style, 0); +} +void mx_worleynoise2d_vector3(vector2 texcoord, float jitter, int style, output vector result) +{ + result = mx_worley_noise_vector3(texcoord, jitter, style, 0); +} +void mx_worleynoise3d_float(vector position, float jitter, int style, output float result) +{ + result = mx_worley_noise_float(position, jitter, style, 0); +} +void mx_worleynoise3d_vector2(vector position, float jitter, int style, output vector2 result) +{ + result = mx_worley_noise_vector2(position, jitter, style, 0); +} +void mx_worleynoise3d_vector3(vector position, float jitter, int style, output vector result) +{ + result = mx_worley_noise_vector3(position, jitter, style, 0); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js new file mode 100644 index 0000000..f37f833 --- /dev/null +++ b/Needle/SampleScene/dist/assets/JsMaterialXGenShader.data.vJnq-SJK.js @@ -0,0 +1 @@ +import{l as e}from"./materialx.CnHmG--Y.js";export{e as default}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js b/Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js new file mode 100644 index 0000000..68e12c2 --- /dev/null +++ b/Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js @@ -0,0 +1 @@ +import{n as e,r as t,t as n}from"./postprocessing.ao.CBPOoA3d.js";export{e as DepthType,n as N8AOPass,t as N8AOPostPass}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js.gz b/Needle/SampleScene/dist/assets/N8AO.BjEz-iDD.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..63f1478d3d856e86e67a930d16d3ddc73a048a2b GIT binary patch literal 119 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 Pp!_U@7ZLm$jNbnMWu0|t literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js b/Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js new file mode 100644 index 0000000..d5e7fe3 --- /dev/null +++ b/Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js @@ -0,0 +1,3574 @@ +(function(){var e={url:self.location.href}; +/** +* @license +* Copyright 2010-2024 Three.js Authors +* SPDX-License-Identifier: MIT +*/ +let t=`169.19`,n=1e3,r=1001,i=1002,a=1003,o=1006,s=1008,c=2300,l=2301,u=2302,d=2400,f=2401,p=2402,m=`srgb`,h=`srgb-linear`,g=`display-p3-linear`,_=`linear`,v=`srgb`,y=`rec709`,b=35044,x=2e3;var S=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+C[e>>16&255]+C[e>>24&255]+`-`+C[t&255]+C[t>>8&255]+`-`+C[t>>16&15|64]+C[t>>24&255]+`-`+C[n&63|128]+C[n>>8&255]+`-`+C[n>>16&255]+C[n>>24&255]+C[r&255]+C[r>>8&255]+C[r>>16&255]+C[r>>24&255]).toLowerCase()}function w(e,t,n){return Math.max(t,Math.min(n,e))}function ie(e,t){return(e%t+t)%t}function ae(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function oe(e,t,n){return e===t?0:(n-e)/(t-e)}function se(e,t,n){return(1-n)*e+n*t}function ce(e,t,n,r){return se(e,t,1-Math.exp(-n*r))}function le(e,t=1){return t-Math.abs(ie(e,t*2)-t)}function ue(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function de(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function fe(e,t){return e+Math.floor(Math.random()*(t-e+1))}function pe(e,t){return e+Math.random()*(t-e)}function me(e){return e*(.5-Math.random())}function he(e){e!==void 0&&(ee=e);let t=ee+=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 ge(e){return e*te}function _e(e){return e*ne}function ve(e){return(e&e-1)==0&&e!==0}function ye(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function be(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function xe(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function Se(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 T(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.`)}}let Ce={DEG2RAD:te,RAD2DEG:ne,generateUUID:re,clamp:w,euclideanModulo:ie,mapLinear:ae,inverseLerp:oe,lerp:se,damp:ce,pingpong:le,smoothstep:ue,smootherstep:de,randInt:fe,randFloat:pe,randFloatSpread:me,seededRandom:he,degToRad:ge,radToDeg:_e,isPowerOfTwo:ve,ceilPowerOfTwo:ye,floorPowerOfTwo:be,setQuaternionFromProperEuler:xe,normalize:T,denormalize:Se};var E=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(w(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}},D=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(we.makeScale(e,t)),this}rotate(e){return this.premultiply(we.makeRotation(-e)),this}translate(e,t){return this.premultiply(we.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)}};let we=new D;function Te(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}function Ee(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}let De=new D().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Oe=new D().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),ke={[h]:{transfer:_,primaries:y,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[m]:{transfer:v,primaries:y,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[g]:{transfer:_,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Oe),fromReference:e=>e.applyMatrix3(De)},"display-p3":{transfer:v,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Oe),fromReference:e=>e.applyMatrix3(De).convertLinearToSRGB()}},Ae=new Set([h,g]),je={enabled:!0,_workingColorSpace:h,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!Ae.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=ke[t].toReference,i=ke[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return ke[e].primaries},getTransfer:function(e){return e===``?_:ke[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(ke[t].luminanceCoefficients)}};function Me(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Ne(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}let Pe;var Fe=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Pe===void 0&&(Pe=Ee(`canvas`)),Pe.width=e.width,Pe.height=e.height;let n=Pe.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Pe}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=Ee(`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;e0&&(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 n:e.x-=Math.floor(e.x);break;case r:e.x=e.x<0?0:1;break;case i: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 n:e.y-=Math.floor(e.y);break;case r:e.y=e.y<0?0:1;break;case i: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++}};Be.DEFAULT_IMAGE=null,Be.DEFAULT_MAPPING=300,Be.DEFAULT_ANISOTROPY=4;var Ve=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(w(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},O=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(Ge.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ge.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 We.copy(this).projectOnVector(e),this.sub(We)}reflect(e){return this.sub(We.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(w(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}};let We=new O,Ge=new Ue;var Ke=class{constructor(e=new O(1/0,1/0,1/0),t=new O(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Je),Je.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(nt),rt.subVectors(this.max,nt),Xe.subVectors(e.a,nt),Ze.subVectors(e.b,nt),Qe.subVectors(e.c,nt),$e.subVectors(Ze,Xe),et.subVectors(Qe,Ze),tt.subVectors(Xe,Qe);let t=[0,-$e.z,$e.y,0,-et.z,et.y,0,-tt.z,tt.y,$e.z,0,-$e.x,et.z,0,-et.x,tt.z,0,-tt.x,-$e.y,$e.x,0,-et.y,et.x,0,-tt.y,tt.x,0];return!ot(t,Xe,Ze,Qe,rt)||(t=[1,0,0,0,1,0,0,0,1],!ot(t,Xe,Ze,Qe,rt))?!1:(it.crossVectors($e,et),t=[it.x,it.y,it.z],ot(t,Xe,Ze,Qe,rt))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Je).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Je).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:(qe[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),qe[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),qe[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),qe[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),qe[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),qe[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),qe[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),qe[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(qe),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)}};let qe=[new O,new O,new O,new O,new O,new O,new O,new O],Je=new O,Ye=new Ke,Xe=new O,Ze=new O,Qe=new O,$e=new O,et=new O,tt=new O,nt=new O,rt=new O,it=new O,at=new O;function ot(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){at.fromArray(e,a);let o=i.x*Math.abs(at.x)+i.y*Math.abs(at.y)+i.z*Math.abs(at.z),s=t.dot(at),c=n.dot(at),l=r.dot(at);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}let st=new Ke,ct=new O,lt=new O;var ut=class{constructor(e=new O,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?st.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;ct.subVectors(e,this.center);let t=ct.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(ct,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):(lt.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ct.copy(e.center).add(lt)),this.expandByPoint(ct.copy(e.center).sub(lt))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};let dt=new O,ft=new O,pt=new O,mt=new O,ht=new O,gt=new O,_t=new O;var vt=class{constructor(e=new O,t=new O(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,dt)),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=dt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(dt.copy(this.origin).addScaledVector(this.direction,t),dt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){ft.copy(e).add(t).multiplyScalar(.5),pt.copy(t).sub(e).normalize(),mt.copy(this.origin).sub(ft);let i=e.distanceTo(t)*.5,a=-this.direction.dot(pt),o=mt.dot(this.direction),s=-mt.dot(pt),c=mt.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(ft).addScaledVector(pt,d),f}intersectSphere(e,t){dt.subVectors(e.center,this.origin);let n=dt.dot(this.direction),r=dt.dot(dt)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,dt)!==null}intersectTriangle(e,t,n,r,i){ht.subVectors(t,e),gt.subVectors(n,e),_t.crossVectors(ht,gt);let a=this.direction.dot(_t),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;mt.subVectors(this.origin,e);let s=o*this.direction.dot(gt.crossVectors(mt,gt));if(s<0)return null;let c=o*this.direction.dot(ht.cross(mt));if(c<0||s+c>a)return null;let l=-o*mt.dot(_t);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)}},yt=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/bt.setFromMatrixColumn(e,0).length(),i=1/bt.setFromMatrixColumn(e,1).length(),a=1/bt.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(St,e,Ct)}lookAt(e,t,n){let r=this.elements;return Et.subVectors(e,t),Et.lengthSq()===0&&(Et.z=1),Et.normalize(),wt.crossVectors(n,Et),wt.lengthSq()===0&&(Math.abs(n.z)===1?Et.x+=1e-4:Et.z+=1e-4,Et.normalize(),wt.crossVectors(n,Et)),wt.normalize(),Tt.crossVectors(Et,wt),r[0]=wt.x,r[4]=Tt.x,r[8]=Et.x,r[1]=wt.y,r[5]=Tt.y,r[9]=Et.y,r[2]=wt.z,r[6]=Tt.z,r[10]=Et.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],ee=r[12],te=r[1],ne=r[5],re=r[9],w=r[13],ie=r[2],ae=r[6],oe=r[10],se=r[14],ce=r[3],le=r[7],ue=r[11],de=r[15];return i[0]=a*x+o*te+s*ie+c*ce,i[4]=a*S+o*ne+s*ae+c*le,i[8]=a*C+o*re+s*oe+c*ue,i[12]=a*ee+o*w+s*se+c*de,i[1]=l*x+u*te+d*ie+f*ce,i[5]=l*S+u*ne+d*ae+f*le,i[9]=l*C+u*re+d*oe+f*ue,i[13]=l*ee+u*w+d*se+f*de,i[2]=p*x+m*te+h*ie+g*ce,i[6]=p*S+m*ne+h*ae+g*le,i[10]=p*C+m*re+h*oe+g*ue,i[14]=p*ee+m*w+h*se+g*de,i[3]=_*x+v*te+y*ie+b*ce,i[7]=_*S+v*ne+y*ae+b*le,i[11]=_*C+v*re+y*oe+b*ue,i[15]=_*ee+v*w+y*se+b*de,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=bt.set(r[0],r[1],r[2]).length(),a=bt.set(r[4],r[5],r[6]).length(),o=bt.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],xt.copy(this);let s=1/i,c=1/a,l=1/o;return xt.elements[0]*=s,xt.elements[1]*=s,xt.elements[2]*=s,xt.elements[4]*=c,xt.elements[5]*=c,xt.elements[6]*=c,xt.elements[8]*=l,xt.elements[9]*=l,xt.elements[10]*=l,t.setFromRotationMatrix(xt),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=x){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=x){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}};let bt=new O,xt=new yt,St=new O(0,0,0),Ct=new O(1,1,1),wt=new O,Tt=new O,Et=new O,Dt=new yt,Ot=new Ue;var kt=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(w(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(-w(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(w(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(-w(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(w(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(-w(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Dt.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Dt,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Ot.setFromEuler(this),this.setFromQuaternion(Ot,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}};kt.DEFAULT_ORDER=`XYZ`;var At=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){qt.subVectors(r,t),Jt.subVectors(n,t),Yt.subVectors(e,t);let a=qt.dot(qt),o=qt.dot(Jt),s=qt.dot(Yt),c=Jt.dot(Jt),l=Jt.dot(Yt),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,Xt)===null?!1:Xt.x>=0&&Xt.y>=0&&Xt.x+Xt.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Xt)===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,Xt.x),s.addScaledVector(a,Xt.y),s.addScaledVector(o,Xt.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return rn.setScalar(0),an.setScalar(0),on.setScalar(0),rn.fromBufferAttribute(e,t),an.fromBufferAttribute(e,n),on.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(rn,i.x),a.addScaledVector(an,i.y),a.addScaledVector(on,i.z),a}static isFrontFacing(e,t,n,r){return qt.subVectors(n,t),Jt.subVectors(e,t),qt.cross(Jt).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 qt.subVectors(this.c,this.b),Jt.subVectors(this.a,this.b),qt.cross(Jt).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;Zt.subVectors(r,n),Qt.subVectors(i,n),en.subVectors(e,n);let s=Zt.dot(en),c=Qt.dot(en);if(s<=0&&c<=0)return t.copy(n);tn.subVectors(e,r);let l=Zt.dot(tn),u=Qt.dot(tn);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(Zt,a);nn.subVectors(e,i);let f=Zt.dot(nn),p=Qt.dot(nn);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(Qt,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return $t.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector($t,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Zt,a).addScaledVector(Qt,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};let cn={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},ln={h:0,s:0,l:0},un={h:0,s:0,l:0};function dn(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 fn=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=m){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,je.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=je.workingColorSpace){return this.r=e,this.g=t,this.b=n,je.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=je.workingColorSpace){if(e=ie(e,1),t=w(t,0,1),n=w(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=dn(i,r,e+1/3),this.g=dn(i,r,e),this.b=dn(i,r,e-1/3)}return je.toWorkingColorSpace(this,r),this}setStyle(e,t=m){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=m){let n=cn[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=Me(e.r),this.g=Me(e.g),this.b=Me(e.b),this}copyLinearToSRGB(e){return this.r=Ne(e.r),this.g=Ne(e.g),this.b=Ne(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=m){return je.fromWorkingColorSpace(pn.copy(this),e),Math.round(w(pn.r*255,0,255))*65536+Math.round(w(pn.g*255,0,255))*256+Math.round(w(pn.b*255,0,255))}getHexString(e=m){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=je.workingColorSpace){je.fromWorkingColorSpace(pn.copy(this),t);let n=pn.r,r=pn.g,i=pn.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+(r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e1?null:t.copy(e.start).addScaledVector(n,i)}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||An.getNormalMatrix(e),r=this.coplanarPoint(On).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)}};let j={alphahash_fragment:`#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`,alphamap_fragment:`#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`,alphamap_pars_fragment:`#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,alphatest_fragment:`#ifdef USE_ALPHATEST + #ifdef ALPHA_TO_COVERAGE + diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); + if ( diffuseColor.a == 0.0 ) discard; + #else + if ( diffuseColor.a < alphaTest ) discard; + #endif +#endif`,alphatest_pars_fragment:`#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`,aomap_fragment:`#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`,aomap_pars_fragment:`#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`,batching_pars_vertex:`#ifdef USE_BATCHING + #if ! defined( GL_ANGLE_multi_draw ) + #define gl_DrawID _gl_DrawID + uniform int _gl_DrawID; + #endif + uniform highp sampler2D batchingTexture; + uniform highp usampler2D batchingIdTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } + float getIndirectIndex( const in int i ) { + int size = textureSize( batchingIdTexture, 0 ).x; + int x = i % size; + int y = i / size; + return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); + } +#endif +#ifdef USE_BATCHING_COLOR + uniform sampler2D batchingColorTexture; + vec3 getBatchingColor( const in float i ) { + int size = textureSize( batchingColorTexture, 0 ).x; + int j = int( i ); + int x = j % size; + int y = j / size; + return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; + } +#endif`,batching_vertex:`#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); +#endif`,begin_vertex:`vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`,beginnormal_vertex:`vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`,bsdfs:`float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`,iridescence_fragment:`#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`,bumpmap_pars_fragment:`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,clipping_planes_fragment:`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},M={common:{diffuse:{value:new fn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new D},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new D}},envmap:{envMap:{value:null},envMapRotation:{value:new D},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new D}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new D}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new D},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new D},normalScale:{value:new E(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new D},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new D}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new D}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new D}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new fn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new fn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0},uvTransform:{value:new D}},sprite:{diffuse:{value:new fn(16777215)},opacity:{value:1},center:{value:new E(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new D},alphaMap:{value:null},alphaMapTransform:{value:new D},alphaTest:{value:0}}},Mn={basic:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.fog]),vertexShader:j.meshbasic_vert,fragmentShader:j.meshbasic_frag},lambert:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.fog,M.lights,{emissive:{value:new fn(0)}}]),vertexShader:j.meshlambert_vert,fragmentShader:j.meshlambert_frag},phong:{uniforms:Dn([M.common,M.specularmap,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.fog,M.lights,{emissive:{value:new fn(0)},specular:{value:new fn(1118481)},shininess:{value:30}}]),vertexShader:j.meshphong_vert,fragmentShader:j.meshphong_frag},standard:{uniforms:Dn([M.common,M.envmap,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.roughnessmap,M.metalnessmap,M.fog,M.lights,{emissive:{value:new fn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:j.meshphysical_vert,fragmentShader:j.meshphysical_frag},toon:{uniforms:Dn([M.common,M.aomap,M.lightmap,M.emissivemap,M.bumpmap,M.normalmap,M.displacementmap,M.gradientmap,M.fog,M.lights,{emissive:{value:new fn(0)}}]),vertexShader:j.meshtoon_vert,fragmentShader:j.meshtoon_frag},matcap:{uniforms:Dn([M.common,M.bumpmap,M.normalmap,M.displacementmap,M.fog,{matcap:{value:null}}]),vertexShader:j.meshmatcap_vert,fragmentShader:j.meshmatcap_frag},points:{uniforms:Dn([M.points,M.fog]),vertexShader:j.points_vert,fragmentShader:j.points_frag},dashed:{uniforms:Dn([M.common,M.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:j.linedashed_vert,fragmentShader:j.linedashed_frag},depth:{uniforms:Dn([M.common,M.displacementmap]),vertexShader:j.depth_vert,fragmentShader:j.depth_frag},normal:{uniforms:Dn([M.common,M.bumpmap,M.normalmap,M.displacementmap,{opacity:{value:1}}]),vertexShader:j.meshnormal_vert,fragmentShader:j.meshnormal_frag},sprite:{uniforms:Dn([M.sprite,M.fog]),vertexShader:j.sprite_vert,fragmentShader:j.sprite_frag},background:{uniforms:{uvTransform:{value:new D},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:j.background_vert,fragmentShader:j.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new D}},vertexShader:j.backgroundCube_vert,fragmentShader:j.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:j.cube_vert,fragmentShader:j.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:j.equirect_vert,fragmentShader:j.equirect_frag},distanceRGBA:{uniforms:Dn([M.common,M.displacementmap,{referencePosition:{value:new O},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:j.distanceRGBA_vert,fragmentShader:j.distanceRGBA_frag},shadow:{uniforms:Dn([M.lights,M.fog,{color:{value:new fn(0)},opacity:{value:1}}]),vertexShader:j.shadow_vert,fragmentShader:j.shadow_frag}};Mn.physical={uniforms:Dn([Mn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new D},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new D},clearcoatNormalScale:{value:new E(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new D},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new D},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new D},sheen:{value:0},sheenColor:{value:new fn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new D},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new D},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new D},transmissionSamplerSize:{value:new E},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new D},attenuationDistance:{value:0},attenuationColor:{value:new fn(0)},specularColor:{value:new fn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new D},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new D},anisotropyVector:{value:new E},anisotropyMap:{value:null},anisotropyMapTransform:{value:new D}}]),vertexShader:j.meshphysical_vert,fragmentShader:j.meshphysical_frag};let Nn=(1+Math.sqrt(5))/2,Pn=1/Nn;-Nn,-Pn,-Pn;var Fn=class extends Be{constructor(e,t,n,r,i,o,s,c,l,u=1026){if(u!==1026&&u!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);n===void 0&&u===1026&&(n=1014),n===void 0&&u===1027&&(n=1020),super(null,r,i,o,s,c,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=s===void 0?a:s,this.minFilter=c===void 0?a:c,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},In=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=b,this.updateRanges=[],this.version=0,this.uuid=re()}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)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Vn(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===u,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Kn.prototype.TimeBufferType=Float32Array,Kn.prototype.ValueBufferType=Float32Array,Kn.prototype.DefaultInterpolation=l;var qn=class extends Kn{constructor(e,t,n){super(e,t,n)}};qn.prototype.ValueTypeName=`bool`,qn.prototype.ValueBufferType=Array,qn.prototype.DefaultInterpolation=c,qn.prototype.InterpolantFactoryMethodLinear=void 0,qn.prototype.InterpolantFactoryMethodSmooth=void 0;var Jn=class extends Kn{};Jn.prototype.ValueTypeName=`color`;var Yn=class extends Kn{};Yn.prototype.ValueTypeName=`number`;var Xn=class extends Hn{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)Ue.slerpFlat(i,0,a,c-o,a,c,s);return i}},Zn=class extends Kn{InterpolantFactoryMethodLinear(e){return new Xn(this.times,this.values,this.getValueSize(),e)}};Zn.prototype.ValueTypeName=`quaternion`,Zn.prototype.InterpolantFactoryMethodSmooth=void 0;var Qn=class extends Kn{constructor(e,t,n){super(e,t,n)}};Qn.prototype.ValueTypeName=`string`,Qn.prototype.ValueBufferType=Array,Qn.prototype.DefaultInterpolation=c,Qn.prototype.InterpolantFactoryMethodLinear=void 0,Qn.prototype.InterpolantFactoryMethodSmooth=void 0;var $n=class extends Kn{};$n.prototype.ValueTypeName=`vector`;let er=new class{constructor(e,t,n){let r=this,i=!1,a=0,o=0,s,c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){o++,i===!1&&r.onStart!==void 0&&r.onStart(e,a,o),i=!0},this.itemEnd=function(e){a++,r.onProgress!==void 0&&r.onProgress(e,a,o),a===o&&(i=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(e){r.onError!==void 0&&r.onError(e)},this.resolveURL=function(e){return s?s(e):e},this.setURLModifier=function(e){return s=e,this},this.addHandler=function(e,t){return c.push(e,t),this},this.removeHandler=function(e){let t=c.indexOf(e);return t!==-1&&c.splice(t,2),this},this.getHandler=function(e){for(let t=0,n=c.length;t>>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)}let fr=(...e)=>dr(e);function pr(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of mr(e))n.push(n,dr(r.slice(0,-4)),i.getCacheKey(t));return dr(n)}function*mr(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}let yr={VERTEX:`vertex`,FRAGMENT:`fragment`},P={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},br=[`x`,`y`,`z`,`w`],xr=0;var F=class extends S{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=P.NONE,this.updateBeforeType=P.NONE,this.updateAfterType=P.NONE,this.uuid=Ce.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:xr++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,P.FRAME)}onRenderUpdate(e){return this.onUpdate(e,P.RENDER)}onObjectUpdate(e){return this.onUpdate(e,P.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of mr(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=pr(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return mr(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Sr=class extends F{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Cr=class extends F{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},wr=class extends F{static get type(){return`TempNode`}constructor(e){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)}},Tr=class extends wr{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}};let Er=br.join(``);var Dr=class extends F{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(br.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===Er.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}},Or=class extends wr{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Pr=e=>Nr(e).split(``).sort().join(``),Fr={setup(e,t){return e(ai(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(null.assign(n,...e),n);if(Mr.has(t)){let r=Mr.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Mr.has(t.slice(0,t.length-6))){let r=Mr.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Nr(t),R(new Dr(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Pr(t.slice(3).toLowerCase()),n=>R(new Or(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Pr(t.slice(4).toLowerCase()),()=>R(new kr(R(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),R(new Dr(e,t));else if(/^\d+$/.test(t)===!0)return R(new Sr(n,new jr(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},Ir=new WeakMap,Lr=new WeakMap,Rr=function(e,t=null){let n=hr(e);if(n===`node`){let t=Ir.get(e);return t===void 0&&(t=new Proxy(e,Fr),Ir.set(e,t),Ir.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return R(ti(e,t));else if(n===`shader`)return B(e);return e},zr=function(e,t=null){for(let n in e)e[n]=R(e[n],t);return e},Br=function(e,t=null){let n=e.length;for(let r=0;rR(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...oi(t))):n===null?(...n)=>i(new e(t,...oi(n))):(n=R(n),(...r)=>i(new e(t,...oi(r),n)))},Hr=function(e,...t){return R(new e(...oi(t)))};var Ur=class extends F{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=Lr.get(e.constructor);r===void 0&&(r=new WeakMap,Lr.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=R(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=R(a.call(n))}else{let r=t.jsFunc;i=R(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},Wr=class extends F{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return ai(e),R(new Ur(this,e))}setup(){return this.call()}};let Gr=[!1,!0],Kr=[0,1,2,3],qr=[-1,-2],Jr=[.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],Yr=new Map;for(let e of Gr)Yr.set(e,new jr(e));let Xr=new Map;for(let e of Kr)Xr.set(e,new jr(e,`uint`));let Zr=new Map([...Xr].map(e=>new jr(e.value,`int`)));for(let e of qr)Zr.set(e,new jr(e,`int`));let Qr=new Map([...Zr].map(e=>new jr(e.value)));for(let e of Jr)Qr.set(e,new jr(e));for(let e of Jr)Qr.set(-e,new jr(-e));let $r={bool:Yr,uint:Xr,ints:Zr,float:Qr},ei=new Map([...Yr,...Qr]),ti=(e,t)=>ei.has(e)?ei.get(e):e.isNode===!0?e:new jr(e,t),ni=e=>{try{return e.getNodeType()}catch{return}},L=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[gr(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return R(t.get(n[0]));if(n.length===1){let t=ti(n[0],e);return ni(t)===e?R(t):R(new Cr(t,e))}return R(new Tr(n.map(e=>ti(e)),e))}},ri=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function ii(e,t){return new Proxy(new Wr(e,t),Fr)}let R=(e,t=null)=>Rr(e,t),ai=(e,t=null)=>new zr(e,t),oi=(e,t=null)=>new Br(e,t),z=(...e)=>new Vr(...e),si=(...e)=>new Hr(...e),B=(e,t)=>{let n=new ii(e,t),r=(...e)=>{let t;return ai(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r};I(`toGlobal`,e=>(e.global=!0,e));let ci=(...e)=>null.If(...e);function li(e){return e}I(`append`,li);let ui=new L(`color`),V=new L(`float`,$r.float),di=new L(`int`,$r.ints),fi=new L(`uint`,$r.uint),pi=new L(`bool`,$r.bool),H=new L(`vec2`),mi=new L(`ivec2`),hi=new L(`uvec2`),gi=new L(`bvec2`),U=new L(`vec3`),_i=new L(`ivec3`),vi=new L(`uvec3`),yi=new L(`bvec3`),bi=new L(`vec4`),xi=new L(`ivec4`),Si=new L(`uvec4`),Ci=new L(`bvec4`),wi=new L(`mat2`),Ti=new L(`mat3`),Ei=new L(`mat4`);I(`toColor`,ui),I(`toFloat`,V),I(`toInt`,di),I(`toUint`,fi),I(`toBool`,pi),I(`toVec2`,H),I(`toIVec2`,mi),I(`toUVec2`,hi),I(`toBVec2`,gi),I(`toVec3`,U),I(`toIVec3`,_i),I(`toUVec3`,vi),I(`toBVec3`,yi),I(`toVec4`,bi),I(`toIVec4`,xi),I(`toUVec4`,Si),I(`toBVec4`,Ci),I(`toMat2`,wi),I(`toMat3`,Ti),I(`toMat4`,Ei),I(`element`,z(Sr)),I(`convert`,(e,t)=>R(new Cr(R(e),t)));var Di=class extends F{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}};let Oi=e=>new Di(e),ki=((e,t=0)=>new Di(e,!0,t))(`render`),Ai=Oi(`object`);var ji=class extends Ar{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=Ai}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};let Mi=(e,t)=>{let n=ri(t||e);return R(new ji(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))};var Ni=class extends F{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}};let Pi=(e,t)=>R(new Ni(e,t)),Fi=si(Ni,`vec4`,`DiffuseColor`);I(`assign`,z(class extends wr{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 br.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?oi(t):ai(t[0]),R(new Ii(R(e),t))));var W=class e extends wr{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}};let Li=z(W,`+`),Ri=z(W,`-`),zi=z(W,`*`),Bi=z(W,`/`),Vi=z(W,`%`),Hi=z(W,`==`),Ui=z(W,`!=`),Wi=z(W,`<`),Gi=z(W,`>`),Ki=z(W,`<=`),qi=z(W,`>=`),Ji=z(W,`&&`),Yi=z(W,`||`),Xi=z(W,`!`),Zi=z(W,`^^`),Qi=z(W,`&`),$i=z(W,`~`),ea=z(W,`|`),ta=z(W,`^`),na=z(W,`<<`),ra=z(W,`>>`);I(`add`,Li),I(`sub`,Ri),I(`mul`,zi),I(`div`,Bi),I(`modInt`,Vi),I(`equal`,Hi),I(`notEqual`,Ui),I(`lessThan`,Wi),I(`greaterThan`,Gi),I(`lessThanEqual`,Ki),I(`greaterThanEqual`,qi),I(`and`,Ji),I(`or`,Yi),I(`not`,Xi),I(`xor`,Zi),I(`bitAnd`,Qi),I(`bitNot`,$i),I(`bitOr`,ea),I(`bitXor`,ta),I(`shiftLeft`,na),I(`shiftRight`,ra),I(`remainder`,(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),Vi(...e)));var G=class e extends wr{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=bi(U(r),0):e=bi(U(e),0);let i=zi(e,r).xyz;return va(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return Ri(1,o).build(t,n);else if(r===e.RECIPROCAL)return Bi(1,o).build(t,n);else if(r===e.DIFFERENCE)return Ea(Ri(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};G.ALL=`all`,G.ANY=`any`,G.EQUALS=`equals`,G.RADIANS=`radians`,G.DEGREES=`degrees`,G.EXP=`exp`,G.EXP2=`exp2`,G.LOG=`log`,G.LOG2=`log2`,G.SQRT=`sqrt`,G.INVERSE_SQRT=`inversesqrt`,G.FLOOR=`floor`,G.CEIL=`ceil`,G.NORMALIZE=`normalize`,G.FRACT=`fract`,G.SIN=`sin`,G.COS=`cos`,G.TAN=`tan`,G.ASIN=`asin`,G.ACOS=`acos`,G.ATAN=`atan`,G.ABS=`abs`,G.SIGN=`sign`,G.LENGTH=`length`,G.NEGATE=`negate`,G.ONE_MINUS=`oneMinus`,G.DFDX=`dFdx`,G.DFDY=`dFdy`,G.ROUND=`round`,G.RECIPROCAL=`reciprocal`,G.TRUNC=`trunc`,G.FWIDTH=`fwidth`,G.BITCAST=`bitcast`,G.TRANSPOSE=`transpose`,G.ATAN2=`atan2`,G.MIN=`min`,G.MAX=`max`,G.MOD=`mod`,G.STEP=`step`,G.REFLECT=`reflect`,G.DISTANCE=`distance`,G.DIFFERENCE=`difference`,G.DOT=`dot`,G.CROSS=`cross`,G.POW=`pow`,G.TRANSFORM_DIRECTION=`transformDirection`,G.MIX=`mix`,G.CLAMP=`clamp`,G.REFRACT=`refract`,G.SMOOTHSTEP=`smoothstep`,G.FACEFORWARD=`faceforward`;let ia=V(Math.PI);Math.PI*2;let aa=z(G,G.ALL),oa=z(G,G.ANY),sa=z(G,G.EQUALS),ca=z(G,G.RADIANS),la=z(G,G.DEGREES),ua=z(G,G.EXP),da=z(G,G.EXP2),fa=z(G,G.LOG),pa=z(G,G.LOG2),ma=z(G,G.SQRT),ha=z(G,G.INVERSE_SQRT),ga=z(G,G.FLOOR),_a=z(G,G.CEIL),va=z(G,G.NORMALIZE),ya=z(G,G.FRACT),ba=z(G,G.SIN),xa=z(G,G.COS),Sa=z(G,G.TAN),Ca=z(G,G.ASIN),wa=z(G,G.ACOS),Ta=z(G,G.ATAN),Ea=z(G,G.ABS),Da=z(G,G.SIGN),Oa=z(G,G.LENGTH),ka=z(G,G.NEGATE),Aa=z(G,G.ONE_MINUS),ja=z(G,G.DFDX),Ma=z(G,G.DFDY),Na=z(G,G.ROUND),Pa=z(G,G.RECIPROCAL),Fa=z(G,G.TRUNC),Ia=z(G,G.FWIDTH);G.BITCAST;let La=z(G,G.TRANSPOSE),Ra=z(G,G.ATAN2),za=z(G,G.MIN),Ba=z(G,G.MAX),Va=z(G,G.MOD),Ha=z(G,G.STEP),Ua=z(G,G.REFLECT),Wa=z(G,G.DISTANCE),Ga=z(G,G.DIFFERENCE),Ka=z(G,G.DOT),qa=z(G,G.CROSS),Ja=z(G,G.POW),Ya=z(G,G.POW,2),Xa=z(G,G.POW,3),Za=z(G,G.POW,4),Qa=z(G,G.TRANSFORM_DIRECTION),$a=e=>zi(Da(e),Ja(Ea(e),1/3)),eo=e=>Ka(e,e),to=z(G,G.MIX),no=(e,t=0,n=1)=>R(new G(G.CLAMP,R(e),R(t),R(n))),ro=e=>no(e),io=z(G,G.REFRACT),ao=z(G,G.SMOOTHSTEP),oo=z(G,G.FACEFORWARD),so=B(([e])=>ya(ba(Va(Ka(e.xy,H(12.9898,78.233)),ia)).mul(43758.5453)));I(`all`,aa),I(`any`,oa),I(`equals`,sa),I(`radians`,ca),I(`degrees`,la),I(`exp`,ua),I(`exp2`,da),I(`log`,fa),I(`log2`,pa),I(`sqrt`,ma),I(`inverseSqrt`,ha),I(`floor`,ga),I(`ceil`,_a),I(`normalize`,va),I(`fract`,ya),I(`sin`,ba),I(`cos`,xa),I(`tan`,Sa),I(`asin`,Ca),I(`acos`,wa),I(`atan`,Ta),I(`abs`,Ea),I(`sign`,Da),I(`length`,Oa),I(`lengthSq`,eo),I(`negate`,ka),I(`oneMinus`,Aa),I(`dFdx`,ja),I(`dFdy`,Ma),I(`round`,Na),I(`reciprocal`,Pa),I(`trunc`,Fa),I(`fwidth`,Ia),I(`atan2`,Ra),I(`min`,za),I(`max`,Ba),I(`mod`,Va),I(`step`,Ha),I(`reflect`,Ua),I(`distance`,Wa),I(`dot`,Ka),I(`cross`,qa),I(`pow`,Ja),I(`pow2`,Ya),I(`pow3`,Xa),I(`pow4`,Za),I(`transformDirection`,Qa),I(`mix`,(e,t,n)=>to(t,n,e)),I(`clamp`,no),I(`refract`,io),I(`smoothstep`,(e,t,n)=>ao(t,n,e)),I(`faceForward`,oo),I(`difference`,Ga),I(`saturate`,ro),I(`cbrt`,$a),I(`transpose`,La),I(`rand`,so);let co=z(class extends F{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?Pi(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});I(`select`,co),I(`cond`,(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),co(...e)));let lo=z(class extends F{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}});I(`context`,lo),I(`label`,(e,t)=>lo(e,{label:t}));let uo=z(class extends F{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}});I(`temp`,uo),I(`toVar`,(...e)=>uo(...e).append());let fo=z(class extends F{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,yr.VERTEX);e.flowNodeFromShaderStage(yr.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}});I(`varying`,fo);let po=`WorkingColorSpace`,mo=`OutputColorSpace`;function ho(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function go(e,t){return ho(e)+`To`+ho(t)}var _o=class extends wr{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===po?je.workingColorSpace:t===mo?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=go(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=bi(s(n.rgb),n.a),o}};let vo=e=>R(new _o(R(e),po,mo)),yo=e=>R(new _o(R(e),mo,po)),bo=(e,t)=>R(new _o(R(e),po,t)),xo=(e,t)=>R(new _o(R(e),t,po));I(`toOutputColorSpace`,vo),I(`toWorkingColorSpace`,yo),I(`workingToColorSpace`,bo),I(`colorSpaceToWorking`,xo);let So=class extends Sr{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}};var Co=class extends F{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=P.OBJECT}setGroup(e){return this.group=e,this}element(e){return R(new So(this,R(e)))}setNodeType(e){let t=Mi(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eR(new wo(e,t,n));var Eo=class extends wr{static get type(){return`ToneMappingNode`}constructor(e,t=Oo,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return fr(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=bi(i(t.rgb,this.exposureNode),t.a),r}};let Do=(e,t,n)=>R(new Eo(e,R(t),R(n))),Oo=To(`toneMappingExposure`,`float`);I(`toneMapping`,(e,t,n)=>Do(t,n,e));var ko=class extends Ar{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=b,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new In(n,i),s=new Rn(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=fo(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}};let Ao=(e,t,n,r)=>R(new ko(e,t,n,r));I(`toAttribute`,e=>Ao(e.value));var jo=class extends F{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=P.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eR(new jo(R(e),t,n)));var Mo=class extends F{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}};I(`cache`,(e,...t)=>R(new Mo(R(e),...t))),I(`bypass`,z(class extends F{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}));var No=class extends F{static get type(){return`RemapNode`}constructor(e,t,n,r=V(0),i=V(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}};let Po=z(No,null,null,{doClamp:!1}),Fo=z(No);I(`remap`,Po),I(`remapClamp`,Fo);let Io=z(class extends F{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}});I(`discard`,e=>(e?co(e,Io(`discard`)):Io(`discard`)).append());var Lo=class extends wr{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==je.workingColorSpace&&(t=t.workingToColorSpace(r)),t}};I(`renderOutput`,(e,t=null,n=null)=>R(new Lo(R(e),t,n)));var Ro=class extends F{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):fo(this).build(e,n)}else return console.warn(`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}};let zo=(e,t)=>R(new Ro(e,t)),Bo=e=>zo(`uv`+(e>0?e:``),`vec2`),Vo=z(class extends F{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)}}),Ho=z(class extends ji{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=P.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))}}});var Uo=class extends ji{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=P.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return Bo(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Mi(this.value.matrix)),this._matrixUniform.mul(U(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?P.FRAME:P.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(di(Vo(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=xo(Io(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=R(e),t.referenceNode=this.getSelf(),R(t)}blur(e){let t=this.clone();return t.biasNode=R(e).mul(Ho(t)),t.referenceNode=this.getSelf(),R(t)}level(e){let t=this.clone();return t.levelNode=R(e),t.referenceNode=this.getSelf(),R(t)}size(e){return Vo(this,e)}bias(e){let t=this.clone();return t.biasNode=R(e),t.referenceNode=this.getSelf(),R(t)}compare(e){let t=this.clone();return t.compareNode=R(e),t.referenceNode=this.getSelf(),R(t)}grad(e,t){let n=this.clone();return n.gradNode=[R(e),R(t)],n.referenceNode=this.getSelf(),R(n)}depth(e){let t=this.clone();return t.depthNode=R(e),t.referenceNode=this.getSelf(),R(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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}};let Wo=z(Uo),Go=Mi(`float`).label(`cameraNear`).setGroup(ki).onRenderUpdate(({camera:e})=>e.near),Ko=Mi(`float`).label(`cameraFar`).setGroup(ki).onRenderUpdate(({camera:e})=>e.far),qo=Mi(`mat4`).label(`cameraViewMatrix`).setGroup(ki).onRenderUpdate(({camera:e})=>e.matrixWorldInverse);var Jo=class e extends F{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=P.OBJECT,this._uniformNode=new ji(null)}getNodeType(){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`}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 O,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new O,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new O,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new O,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Jo.WORLD_MATRIX=`worldMatrix`,Jo.POSITION=`position`,Jo.SCALE=`scale`,Jo.VIEW_POSITION=`viewPosition`,Jo.DIRECTION=`direction`,Jo.DIRECTION,Jo.WORLD_MATRIX,Jo.POSITION,Jo.SCALE,Jo.VIEW_POSITION;var Yo=class extends Jo{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}};Yo.DIRECTION;let Xo=si(Yo,Yo.WORLD_MATRIX);Yo.POSITION,Yo.SCALE,Yo.VIEW_POSITION;let Zo=Mi(new D).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Qo=qo.mul(Xo).toVar(`modelViewMatrix_2`),$o=zo(`position`,`vec3`).varying(`positionLocal`),es=Qo.mul($o).xyz.varying(`v_positionView`),ts=es.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),ns=V(si(class extends F{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}})).mul(2).sub(1),rs=zo(`normal`,`vec3`),is=B(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),U(0,1,0)):rs,`vec3`).once()().toVar(`normalLocal`),as=es.dFdx().cross(es.dFdy()).normalize().toVar(`normalFlat`),os=B(e=>{let t;return t=e.material.flatShading===!0?as:fo(cs(is),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),ss=B(e=>e.context.setupNormal(),`vec3`).once()().mul(ns).toVar(`transformedNormalView`),cs=B(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=Zo.mul(e);return qo.transformDirection(r)}),ls=Mi(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),us=ts.negate().reflect(ss),ds=ts.negate().refract(ss,ls),fs=us.transformDirection(qo).toVar(`reflectVector`),ps=ds.transformDirection(qo).toVar(`reflectVector`),ms=z(class extends Uo{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?fs:e.mapping===302?ps:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),U(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?U(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}});var hs=class extends ji{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}};let gs=(e,t,n)=>R(new hs(e,t,n));var _s=class extends Sr{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},vs=class extends hs{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=P.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nR(new vs(e,t));var bs=class extends Sr{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},xs=class extends F{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=P.OBJECT}element(e){return R(new bs(this,R(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?ys(null,e):e===`texture`?Wo(null):e===`cubeTexture`?ms(null):Mi(null,e):gs(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eR(new xs(e,t,n));var Cs=class extends xs{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}};let ws=(e,t,n)=>R(new Cs(e,t,n)),Ts=B(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),zo(`tangent`,`vec4`)))(),Es=Ts.xyz.toVar(`tangentLocal`),Ds=Qo.mul(bi(Es,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),Os=Ti(Ds,fo((e=>e.mul(Ts.w).xyz)(os.cross(Ds)),`v_bitangentView`).normalize().toVar(`bitangentView`),os),ks=B(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=ns.mul(m.inverseSqrt());return Li(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),As=z(class extends wr{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=U(r.xy.mul(n),r.z));let i=null;return t===1?i=cs(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?Os.mul(r).normalize():ks({eye_pos:es,surf_norm:os,mapN:r,uv:Bo()})),i}}),js=B(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||Bo()),forceUVContext:!0}),r=V(n(e=>e));return H(V(n(e=>e.add(e.dFdx()))).sub(r),V(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Ms=B(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(ns),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Ns=z(class extends wr{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 Ms({surf_pos:es,surf_norm:os,dHdxy:js({textureNode:this.textureNode,bumpScale:e})})}}),Ps=new Map;var K=class e extends F{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=Ps.get(e);return n===void 0&&(n=ws(e,t),Ps.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?U():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:V(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=As(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?Ns(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):os;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?As(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):os;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=wi(Fs.x,Fs.y,Fs.y.negate(),Fs.x).mul(e.rg.mul(2).sub(H(1)).normalize().mul(e.b))}else i=Fs;else if(r===e.IRIDESCENCE_THICKNESS){let e=Ss(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Ss(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};K.ALPHA_TEST=`alphaTest`,K.COLOR=`color`,K.OPACITY=`opacity`,K.SHININESS=`shininess`,K.SPECULAR=`specular`,K.SPECULAR_STRENGTH=`specularStrength`,K.SPECULAR_INTENSITY=`specularIntensity`,K.SPECULAR_COLOR=`specularColor`,K.REFLECTIVITY=`reflectivity`,K.ROUGHNESS=`roughness`,K.METALNESS=`metalness`,K.NORMAL=`normal`,K.CLEARCOAT=`clearcoat`,K.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,K.CLEARCOAT_NORMAL=`clearcoatNormal`,K.EMISSIVE=`emissive`,K.ROTATION=`rotation`,K.SHEEN=`sheen`,K.SHEEN_ROUGHNESS=`sheenRoughness`,K.ANISOTROPY=`anisotropy`,K.IRIDESCENCE=`iridescence`,K.IRIDESCENCE_IOR=`iridescenceIOR`,K.IRIDESCENCE_THICKNESS=`iridescenceThickness`,K.IOR=`ior`,K.TRANSMISSION=`transmission`,K.THICKNESS=`thickness`,K.ATTENUATION_DISTANCE=`attenuationDistance`,K.ATTENUATION_COLOR=`attenuationColor`,K.LINE_SCALE=`scale`,K.LINE_DASH_SIZE=`dashSize`,K.LINE_GAP_SIZE=`gapSize`,K.LINE_WIDTH=`linewidth`,K.LINE_DASH_OFFSET=`dashOffset`,K.POINT_WIDTH=`pointWidth`,K.DISPERSION=`dispersion`,K.LIGHT_MAP=`light`,K.AO_MAP=`ao`,K.ALPHA_TEST,K.COLOR,K.SHININESS,K.EMISSIVE,K.OPACITY,K.SPECULAR,K.SPECULAR_INTENSITY,K.SPECULAR_COLOR,K.SPECULAR_STRENGTH,K.REFLECTIVITY,K.ROUGHNESS,K.METALNESS,K.CLEARCOAT,K.CLEARCOAT_ROUGHNESS,K.ROTATION,K.SHEEN,K.SHEEN_ROUGHNESS,K.ANISOTROPY,K.IRIDESCENCE,K.IRIDESCENCE_IOR,K.IRIDESCENCE_THICKNESS,K.TRANSMISSION,K.THICKNESS,K.IOR,K.ATTENUATION_DISTANCE,K.ATTENUATION_COLOR,K.LINE_SCALE,K.LINE_DASH_SIZE,K.LINE_GAP_SIZE,K.LINE_WIDTH,K.LINE_DASH_OFFSET,K.POINT_WIDTH,K.DISPERSION,K.LIGHT_MAP,K.AO_MAP;let Fs=Mi(new E).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))});var Is=class e extends F{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:fo(this).build(t,n),a}};Is.VERTEX=`vertex`,Is.INSTANCE=`instance`,Is.SUBGROUP=`subgroup`,Is.INVOCATION_LOCAL=`invocationLocal`,Is.INVOCATION_SUBGROUP=`invocationSubgroup`,Is.DRAW=`draw`,Is.VERTEX,Is.INSTANCE,Is.SUBGROUP,Is.INVOCATION_SUBGROUP,Is.INVOCATION_LOCAL,Is.DRAW;var Ls=class extends F{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tR(new Ls(oi(e,`int`))).append(),zs,Bs;var Vs=class e extends F{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=P.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=P.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(Bs),Bs.multiplyScalar(t.getPixelRatio())):Bs.copy(n.viewport):n===null?t.getDrawingBufferSize(zs):(zs.width=n.width,zs.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Mi(zs||=new E):t===e.VIEWPORT?Mi(Bs||=new Ve):H(Ws.div(Us)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(Us).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};Vs.COORDINATE=`coordinate`,Vs.VIEWPORT=`viewport`,Vs.SIZE=`size`,Vs.UV=`uv`;let Hs=si(Vs,Vs.UV),Us=si(Vs,Vs.SIZE),Ws=si(Vs,Vs.COORDINATE),Gs=si(Vs,Vs.VIEWPORT);Gs.zw,Gs.xy;let Ks=new E;var qs=class extends Uo{static get type(){return`ViewportTextureNode`}constructor(e=Hs,t=null,n=null){n===null&&(n=new zn,n.minFilter=s),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=P.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(Ks);let n=this.value;(n.image.width!==Ks.width||n.image.height!==Ks.height)&&(n.image.width=Ks.width,n.image.height=Ks.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}};let Js=null,Ys=z(class extends qs{static get type(){return`ViewportDepthTextureNode`}constructor(e=Hs,t=null){Js===null&&(Js=new Fn),super(e,t,Js)}});var Xs=class e extends F{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=ec().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?Qs(es.z,Go,Ko):Zs(es.z,Go,Ko):n===e.LINEAR_DEPTH&&(i=r===null?Zs(es.z,Go,Ko):t.isPerspectiveCamera?Zs($s(r,Go,Ko),Go,Ko):r),i}};Xs.DEPTH_BASE=`depthBase`,Xs.DEPTH=`depth`,Xs.LINEAR_DEPTH=`linearDepth`;let Zs=(e,t,n)=>e.add(t).div(t.sub(n)),Qs=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),$s=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),ec=z(Xs,Xs.DEPTH_BASE),tc=si(Xs,Xs.DEPTH);Ys(),tc.assign=e=>ec(e);var nc=class e extends F{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return B(()=>{let r=ys(e),i=Pi(`float`,`distanceToPlane`),a=Pi(`float`,`distanceToGradient`),o=Pi(`float`,`clipOpacity`);o.assign(1);let s;if(Rs(n,({i:e})=>{s=r.element(e),i.assign(es.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(ao(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(es.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(ao(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}Fi.a.mulAssign(o),Fi.a.equal(0).discard()})()}setupDefault(e,t,n){return B(()=>{let r=ys(e),i;if(Rs(n,({i:e})=>{i=r.element(e),es.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(es.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};nc.ALPHA_TO_COVERAGE=`alphaToCoverage`,nc.DEFAULT=`default`,1/Math.PI,U(.04),V(1);let rc=B(([e,t])=>{let n=e.toVar();n.assign(zi(2,n).sub(1));let r=U(n,1).toVar();return ci(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`}]});B(({texture:e,uv:t})=>{let n=1e-4,r=U().toVar();return ci(t.x.lessThan(n),()=>{r.assign(U(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(U(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(U(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(U(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(U(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(U(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(U(-n,0,0))).r.sub(e.uv(t.add(U(n,0,0))).r),a=e.uv(t.add(U(0,-n,0))).r.sub(e.uv(t.add(U(0,n,0))).r),o=e.uv(t.add(U(0,0,-n))).r.sub(e.uv(t.add(U(0,0,n))).r);r.assign(U(i,a,o))}),r.normalize()});let ic=(1+Math.sqrt(5))/2,ac=1/ic;-ic,-ac,-ac;let oc=rc(Bo(),zo(`faceIndex`)).normalize();U(oc.x,oc.y.negate(),oc.z);var sc=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};sc.isNodeFunctionInput=!0;var cc=class e extends ji{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=P.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};cc.LOCAL=`local`,cc.GLOBAL=`global`,cc.DELTA=`delta`,cc.FRAME=`frame`;let lc=(e,t=0)=>R(new cc(cc.LOCAL,e,t));var uc=class e extends F{static get type(){return`OscNode`}constructor(t=e.SINE,n=lc()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=R(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};uc.SINE=`sine`,uc.SQUARE=`square`,uc.TRIANGLE=`triangle`,uc.SAWTOOTH=`sawtooth`,uc.SINE,uc.SQUARE,uc.TRIANGLE,uc.SAWTOOTH,new jn,new O,new O,new O,new yt,new O(0,0,-1),new Ve,new O,new O,new Ve,new E,new He,Hs.flipX();var dc=class e extends F{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Ss(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Ss(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};dc.BACKGROUND_BLURRINESS=`backgroundBlurriness`,dc.BACKGROUND_INTENSITY=`backgroundIntensity`,dc.BACKGROUND_BLURRINESS,dc.BACKGROUND_INTENSITY;let fc=new E;var pc=class extends Uo{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},mc=class extends pc{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},hc=class e extends wr{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 Fn;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new He(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:1016,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=P.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Mi(0),this._cameraFar=Mi(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=R(new mc(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=R(new mc(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=$s(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=Zs(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(fc);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};hc.COLOR=`color`,hc.DEPTH=`depth`,new class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},B(({depthTexture:e,shadowCoord:t})=>Wo(e,t.xy).compare(t.z)),B(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>Wo(e,t).compare(n),i=Ss(`mapSize`,`vec2`,n).setGroup(ki),a=Ss(`radius`,`float`,n).setGroup(ki),o=H(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return Li(r(t.xy.add(H(s,c)),t.z),r(t.xy.add(H(0,c)),t.z),r(t.xy.add(H(l,c)),t.z),r(t.xy.add(H(d,f)),t.z),r(t.xy.add(H(0,f)),t.z),r(t.xy.add(H(p,f)),t.z),r(t.xy.add(H(s,0)),t.z),r(t.xy.add(H(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(H(p,0)),t.z),r(t.xy.add(H(l,0)),t.z),r(t.xy.add(H(d,m)),t.z),r(t.xy.add(H(0,m)),t.z),r(t.xy.add(H(p,m)),t.z),r(t.xy.add(H(s,u)),t.z),r(t.xy.add(H(0,u)),t.z),r(t.xy.add(H(l,u)),t.z)).mul(1/17)}),B(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>Wo(e,t).compare(n),i=Ss(`mapSize`,`vec2`,n).setGroup(ki),a=H(1).div(i),o=a.x,s=a.y,c=t.xy,l=ya(c.mul(i).add(.5));return c.subAssign(l.mul(a)),Li(r(c,t.z),r(c.add(H(o,0)),t.z),r(c.add(H(0,s)),t.z),r(c.add(a),t.z),to(r(c.add(H(o.negate(),0)),t.z),r(c.add(H(o.mul(2),0)),t.z),l.x),to(r(c.add(H(o.negate(),s)),t.z),r(c.add(H(o.mul(2),s)),t.z),l.x),to(r(c.add(H(0,s.negate())),t.z),r(c.add(H(0,s.mul(2))),t.z),l.y),to(r(c.add(H(o,s.negate())),t.z),r(c.add(H(o,s.mul(2))),t.z),l.y),to(to(r(c.add(H(o.negate(),s.negate())),t.z),r(c.add(H(o.mul(2),s.negate())),t.z),l.x),to(r(c.add(H(o.negate(),s.mul(2))),t.z),r(c.add(H(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),B(({depthTexture:e,shadowCoord:t})=>{let n=V(1).toVar(),r=Wo(e).uv(t.xy).rg,i=Ha(t.z,r.x);return ci(i.notEqual(V(1)),()=>{let e=t.z.sub(r.x),a=Ba(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=no(Ri(o,.3).div(.6499999999999999)),n.assign(no(Ba(i,o)))}),n}),B(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=V(0).toVar(),a=V(0).toVar(),o=e.lessThanEqual(V(1)).select(V(0),V(2).div(e.sub(1))),s=e.lessThanEqual(V(1)).select(V(0),V(-1));return Rs({start:di(0),end:di(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(V(e).mul(o)),l=r.uv(Li(Ws.xy,H(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),H(i,ma(a.sub(i.mul(i))))}),B(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=V(0).toVar(),a=V(0).toVar(),o=e.lessThanEqual(V(1)).select(V(0),V(2).div(e.sub(1))),s=e.lessThanEqual(V(1)).select(V(0),V(-1));return Rs({start:di(0),end:di(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(V(e).mul(o)),l=r.uv(Li(Ws.xy,H(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(Li(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),H(i,ma(a.sub(i.mul(i))))}),U(1.6605,-.1246,-.0182),U(-.5876,1.1329,-.1006),U(-.0728,-.0083,1.1187),U(.6274,.0691,.0164),U(.3293,.9195,.088),U(.0433,.0113,.8956),z(class extends F{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}});var gc=class extends wr{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};gc.ATOMIC_LOAD=`atomicLoad`,gc.ATOMIC_STORE=`atomicStore`,gc.ATOMIC_ADD=`atomicAdd`,gc.ATOMIC_SUB=`atomicSub`,gc.ATOMIC_MAX=`atomicMax`,gc.ATOMIC_MIN=`atomicMin`,gc.ATOMIC_AND=`atomicAnd`,gc.ATOMIC_OR=`atomicOr`,gc.ATOMIC_XOR=`atomicXor`,z(gc);var _c=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};if(_c.isNodeFunction=!0,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`register`,{detail:{revision:t}})),typeof window<`u`){try{e&&(window.__THREE__IMPORTS__||(window.__THREE__IMPORTS__=[]),window.__THREE__IMPORTS__.push({url:self.location.href,revision:t}))}catch{}window.__THREE__?(console.warn(`WARNING: Multiple instances of Three.js being imported. Existing: `+window.__THREE__+`, new: 169.19`),console.warn(window.__THREE__IMPORTS__)):window.__THREE__=t}let vc=1.25,yc=65535;yc<<16;let bc=2**-24,xc=Symbol(`SKIP_GENERATION`),Sc={strategy:0,maxDepth:40,maxLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[xc]:!1};var Cc=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,r=-1/0;for(let i=0,a=e.length;ir?a:r}this.min=n,this.max=r}setFromPoints(e,t){let n=1/0,r=-1/0;for(let i=0,a=t.length;ir?o:r}this.min=n,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};Cc.prototype.setFromBox=(function(){let e=new O;return function(t,n){let r=n.min,i=n.max,a=1/0,o=-1/0;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let c=0;c<=1;c++){e.x=r.x*n+i.x*(1-n),e.y=r.y*s+i.y*(1-s),e.z=r.z*c+i.z*(1-c);let l=t.dot(e);a=Math.min(l,a),o=Math.max(l,o)}this.min=a,this.max=o}})(),(function(){let e=new Cc;return function(t,n){let r=t.points,i=t.satAxes,a=t.satBounds,o=n.points,s=n.satAxes,c=n.satBounds;for(let t=0;t<3;t++){let n=a[t],r=i[t];if(e.setFromPoints(r,o),n.isSeparated(e))return!1}for(let t=0;t<3;t++){let n=c[t],i=s[t];if(e.setFromPoints(i,r),n.isSeparated(e))return!1}}})();let wc=(function(){let e=new O,t=new O,n=new O;return function(r,i,a){let o=r.start,s=e,c=i.start,l=t;n.subVectors(o,c),e.subVectors(r.end,r.start),t.subVectors(i.end,i.start);let u=n.dot(l),d=l.dot(s),f=l.dot(l),p=n.dot(s),m=s.dot(s)*f-d*d,h,g;h=m===0?0:(u*d-p*f)/m,g=(u+h*d)/f,a.x=h,a.y=g}})(),Tc=(function(){let e=new E,t=new O,n=new O;return function(r,i,a,o){wc(r,i,e);let s=e.x,c=e.y;if(s>=0&&s<=1&&c>=0&&c<=1){r.at(s,a),i.at(c,o);return}else if(s>=0&&s<=1){c<0?i.at(0,o):i.at(1,o),r.closestPointToPoint(o,!0,a);return}else if(c>=0&&c<=1){s<0?r.at(0,a):r.at(1,a),i.closestPointToPoint(a,!0,o);return}else{let e;e=s<0?r.start:r.end;let l;l=c<0?i.start:i.end;let u=t,d=n;if(r.closestPointToPoint(l,!0,t),i.closestPointToPoint(e,!0,n),u.distanceToSquared(l)<=d.distanceToSquared(e)){a.copy(u),o.copy(l);return}else{a.copy(e),o.copy(d);return}}}})(),Ec=(function(){let e=new O,t=new O,n=new jn,r=new ur;return function(i,a){let{radius:o,center:s}=i,{a:c,b:l,c:u}=a;if(r.start=c,r.end=l,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o||(r.start=c,r.end=u,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o)||(r.start=l,r.end=u,r.closestPointToPoint(s,!0,e).distanceTo(s)<=o))return!0;let d=a.getPlane(n);if(Math.abs(d.distanceToPoint(s))<=o){let e=d.projectPoint(s,t);if(a.containsPoint(e))return!0}return!1}})(),Dc=[`x`,`y`,`z`],Oc=1e-15,kc=Oc*Oc;function Ac(e){return Math.abs(e)new O),this.satBounds=[,,,,].fill().map(()=>new Cc),this.points=[this.a,this.b,this.c],this.plane=new jn,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new ur,this.needsUpdate=!0}intersectsSphere(e){return Ec(e,this)}update(){let e=this.a,t=this.b,n=this.c,r=this.points,i=this.satAxes,a=this.satBounds,o=i[0],s=a[0];this.getNormal(o),s.setFromPoints(o,r);let c=i[1],l=a[1];c.subVectors(e,t),l.setFromPoints(c,r);let u=i[2],d=a[2];u.subVectors(t,n),d.setFromPoints(u,r);let f=i[3],p=a[3];f.subVectors(n,e),p.setFromPoints(f,r);let m=c.length(),h=u.length(),g=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,m0)p(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else if(a>0)p(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(s*c>0||o!=0)p(e.a,e.b,e.c,t,n,r,o,s,c,l,u);else if(s!=0)p(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(c!=0)p(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else return!0;return!1}function h(e,t,n,i){let a=t.degenerateSegment,o=e.plane.distanceToPoint(a.start),s=e.plane.distanceToPoint(a.end);return Ac(o)?Ac(s)?f(e,t,n,i):(n&&(n.start.copy(a.start),n.end.copy(a.start)),e.containsPoint(a.start)):Ac(s)?(n&&(n.start.copy(a.end),n.end.copy(a.end)),e.containsPoint(a.end)):e.plane.intersectLine(a,r)==null?!1:(n&&(n.start.copy(r),n.end.copy(r)),e.containsPoint(r))}function g(e,t,n){let r=t.a;return Ac(e.plane.distanceToPoint(r))&&e.containsPoint(r)?(n&&(n.start.copy(r),n.end.copy(r)),!0):!1}function _(e,t,n){let i=e.degenerateSegment,a=t.a;return i.closestPointToPoint(a,!0,r),a.distanceToSquared(r)1||p<0||p>1?!1:Ac(o.start.z+c.z*f-(s.start.z+l.z*p))?(n&&(n.start.copy(o.start).addScaledVector(c,f),n.end.copy(o.start).addScaledVector(c,f)),!0):!1}else if(t.isDegenerateIntoPoint)return _(e,t,n);else return h(t,e,n,o);else if(e.isDegenerateIntoPoint)return t.isDegenerateIntoPoint?t.a.distanceToSquared(e.a)0&&x>0)return!1;let S=p.distanceToPoint(t.a),C=p.distanceToPoint(t.b),ee=p.distanceToPoint(t.c);Ac(S)&&(S=0),Ac(C)&&(C=0),Ac(ee)&&(ee=0);let te=S*C,ne=S*ee;if(te>0&&ne>0)return!1;i.copy(p.normal),a.copy(h.normal);let re=i.cross(a),w=0,ie=Math.abs(re.x),ae=Math.abs(re.y);ae>ie&&(ie=ae,w=1),Math.abs(re.z)>ie&&(w=2);let oe=Dc[w],se=this.a[oe],ce=this.b[oe],le=this.c[oe],ue=t.a[oe],de=t.b[oe],fe=t.c[oe];if(m(this,se,ce,le,b,x,g,_,y,u,s)||m(t,ue,de,fe,te,ne,S,C,ee,d,c))return f(this,t,n,r);if(u.yu.x?n.start.copy(c.start):n.start.copy(s.start),d.ynew O),this.satAxes=[,,,].fill().map(()=>new O),this.satBounds=[,,,].fill().map(()=>new Cc),this.alignedSatBounds=[,,,].fill().map(()=>new Cc),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};Mc.prototype.update=(function(){return function(){let e=this.matrix,t=this.min,n=this.max,r=this.points;for(let i=0;i<=1;i++)for(let a=0;a<=1;a++)for(let o=0;o<=1;o++){let s=r[1*i|2*a|4*o];s.x=i?n.x:t.x,s.y=a?n.y:t.y,s.z=o?n.z:t.z,s.applyMatrix4(e)}let i=this.satBounds,a=this.satAxes,o=r[0];for(let e=0;e<3;e++){let t=a[e],n=i[e],s=r[1<new ur),n=Array(12).fill().map(()=>new ur),r=new O,i=new O;return function(a,o=0,s=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(s||c)&&(a.getCenter(i),this.closestPointToPoint(i,r),a.closestPointToPoint(r,i),s&&s.copy(r),c&&c.copy(i)),0;let l=o*o,u=a.min,d=a.max,f=this.points,p=1/0;for(let e=0;e<8;e++){let t=f[e];i.copy(t).clamp(u,d);let n=t.distanceToSquared(i);if(nnew jc)}},Fc=new O,Ic=new O;function Lc(e,t,n={},r=0,i=1/0){let a=r*r,o=i*i,s=1/0,c=null;if(e.shapecast({boundsTraverseOrder:e=>(Fc.copy(t).clamp(e.min,e.max),Fc.distanceToSquared(t)),intersectsBounds:(e,t,n)=>n{e.closestPointToPoint(t,Fc);let r=t.distanceToSquared(Fc);return rs?null:{distance:l,point:i.clone()}}function Qc(e,t,n,r,i,a,o,s,c,l,u){Vc.fromBufferAttribute(t,a),Hc.fromBufferAttribute(t,o),Uc.fromBufferAttribute(t,s);let d=Zc(e,Vc,Hc,Uc,Xc,c,l,u);if(d){r&&(Wc.fromBufferAttribute(r,a),Gc.fromBufferAttribute(r,o),Kc.fromBufferAttribute(r,s),d.uv=new E,sn.getInterpolation(Xc,Vc,Hc,Uc,Wc,Gc,Kc,d.uv)),i&&(Wc.fromBufferAttribute(i,a),Gc.fromBufferAttribute(i,o),Kc.fromBufferAttribute(i,s),d.uv1=new E,sn.getInterpolation(Xc,Vc,Hc,Uc,Wc,Gc,Kc,d.uv1)),n&&(qc.fromBufferAttribute(n,a),Jc.fromBufferAttribute(n,o),Yc.fromBufferAttribute(n,s),d.normal=new O,sn.getInterpolation(Xc,Vc,Hc,Uc,qc,Jc,Yc,d.normal),d.normal.dot(e.direction)>0&&d.normal.multiplyScalar(-1));let t={a,b:o,c:s,normal:new O,materialIndex:0};sn.getNormal(Vc,Hc,Uc,t.normal),d.face=t,d.faceIndex=a;{let e=new O;sn.getBarycoord(Xc,Vc,Hc,Uc,e),d.barycoord=e}}return d}function $c(e){return e&&e.isMaterial?e.side:e}function el(e,t,n,r,i,a,o){let s=r*3,c=s+0,l=s+1,u=s+2,{index:d,groups:f}=e;e.index&&(c=d.getX(c),l=d.getX(l),u=d.getX(u));let{position:p,normal:m,uv:h,uv1:g}=e.attributes;if(Array.isArray(t)){let e=r*3;for(let s=0,d=f.length;s=d&&ef&&(f=n),op&&(p=o),sm&&(m=s)}return c[e+0]!==a||c[e+1]!==u||c[e+2]!==d||c[e+3]!==f||c[e+4]!==p||c[e+5]!==m?(c[e+0]=a,c[e+1]=u,c[e+2]=d,c[e+3]=f,c[e+4]=p,c[e+5]=m,!0):!1}else{let r=J(e),i=Y(e,o),s=a,l=!1,u=!1;if(t){if(!s){let e=r/8+n/32,a=i/8+n/32;l=t.has(e),u=t.has(a),s=!l&&!u}}else l=!0,u=!0;let f=s||l,p=s||u,m=!1;f&&(m=d(r,n,s));let h=!1;p&&(h=d(i,n,s));let g=m||h;if(g)for(let t=0;t<3;t++){let n=r+t,a=i+t,o=c[n],s=c[n+3],l=c[a],u=c[a+3];c[e+t]=ou?s:u}return g}}}function al(e,t,n,r,i){let a,o,s,c,l,u,d=1/n.direction.x,f=1/n.direction.y,p=1/n.direction.z,m=n.origin.x,h=n.origin.y,g=n.origin.z,_=t[e],v=t[e+3],y=t[e+1],b=t[e+3+1],x=t[e+2],S=t[e+3+2];return d>=0?(a=(_-m)*d,o=(v-m)*d):(a=(v-m)*d,o=(_-m)*d),f>=0?(s=(y-h)*f,c=(b-h)*f):(s=(b-h)*f,c=(y-h)*f),a>c||s>o||((s>a||isNaN(a))&&(a=s),(c=0?(l=(x-g)*p,u=(S-g)*p):(l=(S-g)*p,u=(x-g)*p),a>u||l>o)?!1:((l>a||a!==a)&&(a=l),(u=r)}let Q=new class{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;let e=[],t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}};function ol(e,t,n,r,i,a,o,s){let{geometry:c,_indirectBuffer:l}=e;for(let e=r,u=r+i;e=0,d,f;u?(d=J(e),f=Y(e,c)):(d=Y(e,c),f=J(e));let p=al(d,o,r,i,a)?pl(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=al(f,o,r,i,a)?pl(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}function $(e,t,n){return n.min.x=t[e],n.min.y=t[e+1],n.min.z=t[e+2],n.max.x=t[e+3],n.max.y=t[e+4],n.max.z=t[e+5],n}function ml(e){let t=-1,n=-1/0;for(let r=0;r<3;r++){let i=e[r+3]-e[r];i>n&&(n=i,t=r)}return t}function hl(e,t){t.set(e)}function gl(e,t,n){let r,i;for(let a=0;a<3;a++){let o=a+3;r=e[a],i=t[a],n[a]=ri?r:i}}function _l(e,t,n){for(let r=0;r<3;r++){let i=t[e+2*r],a=t[e+2*r+1],o=i-a,s=i+a;on[r+3]&&(n[r+3]=s)}}function vl(e){let t=e[3]-e[0],n=e[4]-e[1],r=e[5]-e[2];return 2*(t*n+n*r+r*t)}function yl(e){return e.index?e.index.count:e.attributes.position.count}function bl(e){return yl(e)/3}function xl(e,t=ArrayBuffer){return e>65535?new Uint32Array(new t(4*e)):new Uint16Array(new t(2*e))}function Sl(e,t){if(!e.index){let n=e.attributes.position.count,r=xl(n,t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);e.setIndex(new hn(r,1));for(let e=0;e({offset:e.start/t,count:e.count/t}))}function Tl(e,t,n){let r=Cl(e,t,n),i=wl(e,n);if(!i.length)return[r];let a=[],o=r.offset,s=r.offset+r.count,c=yl(e)/n,l=[];for(let e of i){let{offset:t,count:n}=e,r=t,i=t+(isFinite(n)?n:c-t);ro&&(l.push({pos:Math.max(o,r),isStart:!0}),l.push({pos:Math.min(s,i),isStart:!1}))}l.sort((e,t)=>e.pos===t.pos?e.type===`end`?-1:1:e.pos-t.pos);let u=0,d=null;for(let e of l){let t=e.pos;u!==0&&t!==d&&a.push({offset:d,count:t-d}),u+=e.isStart?1:-1,d=t}return a}let El=new Ke,Dl=new jc,Ol=new jc,kl=new yt,Al=new Mc,jl=new Mc;function Ml(e,t,n,r){Q.setBuffer(e._roots[t]);let i=Nl(0,e,n,r);return Q.clearBuffer(),i}function Nl(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=Q,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),Al.set(n.boundingBox.min,n.boundingBox.max,r),i=Al),q(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=Rc(e,s),m=zc(c,o);if(kl.copy(r).invert(),n.boundsTree)return $(X(e),a,jl),jl.matrix.copy(kl),jl.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>jl.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let t=p*3,n=(m+p)*3;tFl.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:e=>Il.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let o=t,s=t+i;op&&(p=a),om&&(m=o),sh&&(h=s)}}return c[n+0]!==l||c[n+1]!==d||c[n+2]!==f||c[n+3]!==p||c[n+4]!==m||c[n+5]!==h?(c[n+0]=l,c[n+1]=d,c[n+2]=f,c[n+3]=p,c[n+4]=m,c[n+5]=h,!0):!1}else{let e=J(n),r=Y(n,o),i=l,s=!1,u=!1;if(t){if(!i){let n=e/8+a/32,o=r/8+a/32;s=t.has(n),u=t.has(o),i=!s&&!u}}else s=!0,u=!0;let f=i||s,p=i||u,m=!1;f&&(m=d(e,a,i));let h=!1;p&&(h=d(r,a,i));let g=m||h;if(g)for(let t=0;t<3;t++){let i=e+t,a=r+t,o=c[i],s=c[i+3],l=c[a],u=c[a+3];c[n+t]=ou?s:u}return g}}}function Ul(e,t,n,r,i,a,o){Q.setBuffer(e._roots[t]),Wl(0,e,n,r,i,a,o),Q.clearBuffer()}function Wl(e,t,n,r,i,a,o){let{float32Array:s,uint16Array:c,uint32Array:l}=Q,u=e*2;if(q(u,c))ol(t,n,r,Rc(e,l),zc(u,c),i,a,o);else{let c=J(e);al(c,s,r,a,o)&&Wl(c,t,n,r,i,a,o);let u=Y(e,l);al(u,s,r,a,o)&&Wl(u,t,n,r,i,a,o)}}let Gl=[`x`,`y`,`z`];function Kl(e,t,n,r,i,a){Q.setBuffer(e._roots[t]);let o=ql(0,e,n,r,i,a);return Q.clearBuffer(),o}function ql(e,t,n,r,i,a){let{float32Array:o,uint16Array:s,uint32Array:c}=Q,l=e*2;if(q(l,s))return sl(t,n,r,Rc(e,c),zc(l,s),i,a);{let s=Bc(e,c),l=Gl[s],u=r.direction[l]>=0,d,f;u?(d=J(e),f=Y(e,c)):(d=Y(e,c),f=J(e));let p=al(d,o,r,i,a)?ql(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=al(f,o,r,i,a)?ql(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}let Jl=new Ke,Yl=new jc,Xl=new jc,Zl=new yt,Ql=new Mc,$l=new Mc;function eu(e,t,n,r){Q.setBuffer(e._roots[t]);let i=tu(0,e,n,r);return Q.clearBuffer(),i}function tu(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=Q,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),Ql.set(n.boundingBox.min,n.boundingBox.max,r),i=Ql),q(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=Rc(e,s),m=zc(c,o);if(Zl.copy(r).invert(),n.boundsTree)return $(X(e),a,$l),$l.matrix.copy(Zl),$l.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>$l.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let n=p,r=m+p;nru.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree){let s=t.boundsTree;return s.shapecast({boundsTraverseOrder:e=>iu.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let x=t,S=t+o;xc&&(c=_),tm&&(m=t);let v=e[r+2],y=e[r+3],b=v-y,x=v+y;bl&&(l=x),vh&&(h=v);let S=e[r+4],C=e[r+5],ee=S-C,te=S+C;eeu&&(u=te),Sg&&(g=S)}r[0]=a,r[1]=o,r[2]=s,r[3]=c,r[4]=l,r[5]=u,i[0]=d,i[1]=f,i[2]=p,i[3]=m,i[4]=h,i[5]=g}let pu=(e,t)=>e.candidate-t.candidate,mu=Array(32).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),hu=new Float32Array(6);function gu(e,t,n,r,i,a){let o=-1,s=0;if(a===0)o=ml(t),o!==-1&&(s=(t[o]+t[o+3])/2);else if(a===1)o=ml(e),o!==-1&&(s=_u(n,r,i,o));else if(a===2){let a=vl(e),c=vc*i,l=n.offset||0,u=(r-l)*6,d=(r+i-l)*6;for(let e=0;e<3;e++){let r=t[e],l=(t[e+3]-r)/32;if(i<32/4){let t=[...mu];t.length=i;let r=0;for(let i=u;i=a.candidate?_l(r,n,a.rightCacheBounds):(_l(r,n,a.leftCacheBounds),a.count++)}}for(let n=0;n=32&&(i=31);let a=mu[i];a.count++,_l(t,n,a.bounds)}let t=mu[31];hl(t.bounds,t.rightCacheBounds);for(let e=30;e>=0;e--){let t=mu[e],n=mu[e+1];gl(t.bounds,n.rightCacheBounds,t.rightCacheBounds)}let f=0;for(let t=0;t<31;t++){let n=mu[t],r=n.count,l=n.bounds,u=mu[t+1].rightCacheBounds;r!==0&&(f===0?hl(l,hu):gl(l,hu,hu)),f+=r;let d=0,p=0;f!==0&&(d=vl(hu)/a);let m=i-f;m!==0&&(p=vl(u)/a);let h=1+vc*(d*f+p*m);h=c;)s--;if(owu)throw Error(`MeshBVH: Cannot store relative child node offset greater than 32 bits.`);return xu[n+6]=c,xu[n+7]=a,Du(o,i)}}function Ou(e,t,n,r,i){let{maxDepth:a,verbose:o,maxLeafSize:s,strategy:c,onProgress:l}=i,u=e.primitiveBuffer,d=e.primitiveBufferStride,f=new Float32Array(6),p=!1,m=new vu;return fu(t,n,r,m.boundingData,f),g(m,n,r,f),m;function h(e){l&&l(e/r)}function g(e,n,r,i=null,l=0){if(!p&&l>=a&&(p=!0,o&&console.warn(`BVH: Max depth of ${a} reached when generating BVH. Consider increasing maxDepth.`)),r<=s||l>=a)return h(n+r),e.offset=n,e.count=r,e;let m=gu(e.boundingData,i,t,n,r,c);if(m.axis===-1)return h(n+r),e.offset=n,e.count=r,e;let _=yu(u,d,t,n,r,m);if(_===n||_===n+r)h(n+r),e.offset=n,e.count=r;else{e.splitAxis=m.axis;let i=new vu,a=n,o=_-n;e.left=i,fu(t,a,o,i.boundingData,f),g(i,a,o,f,l+1);let s=new vu,c=_,u=r-o;e.right=s,fu(t,c,u,s.boundingData,f),g(s,c,u,f,l+1)}return e}}function ku(e,t){let n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,r=e.getRootRanges(t.range),i=r[0],a=r[r.length-1],o={offset:i.offset,count:a.offset+a.count-i.offset},s=new Float32Array(6*o.count);s.offset=o.offset,e.computePrimitiveBounds(o.offset,o.count,s),e._roots=r.map(r=>{let i=Ou(e,s,r.offset,r.count,t),a=new n(32*Tu(i));return Eu(0,i,a),a})}let Au,ju,Mu=[],Nu=new Nc(()=>new Ke);function Pu(e,t,n,r,i,a){Au=Nu.getPrimitive(),ju=Nu.getPrimitive(),Mu.push(Au,ju),Q.setBuffer(e._roots[t]);let o=Fu(0,e.geometry,n,r,i,a);Q.clearBuffer(),Nu.releasePrimitive(Au),Nu.releasePrimitive(ju),Mu.pop(),Mu.pop();let s=Mu.length;return s>0&&(ju=Mu[s-1],Au=Mu[s-2]),o}function Fu(e,t,n,r,i=null,a=0,o=0){let{float32Array:s,uint16Array:c,uint32Array:l}=Q,u=e*2;if(q(u,c)){let t=Rc(e,l),n=zc(u,c);return $(X(e),s,Au),r(t,n,!1,o,a+e/8,Au)}else{let u=J(e),p=Y(e,l),m=u,h=p,g,_,v,y;if(i&&(v=Au,y=ju,$(X(m),s,v),$(X(h),s,y),g=i(v),_=i(y),_new Ke),zu=new Ke,Bu=new Ke,Vu=new Ke,Hu=new Ke,Uu=!1;function Wu(e,t,n,r){if(Uu)throw Error(`MeshBVH: Recursive calls to bvhcast not supported.`);Uu=!0;let i=e._roots,a=t._roots,o,s=0,c=0,l=new yt().copy(n).invert();for(let e=0,t=i.length;es&&(s=u),tc&&(c=d),rl&&(l=f)}return n[r+0]=i,n[r+1]=a,n[r+2]=o,n[r+3]=s,n[r+4]=c,n[r+5]=l,n}computePrimitiveBounds(e,t,n){let r=n.offset||0;for(let i=e,a=e+t;i=0;e--){let t=e*8,n=t*2;if(q(n,i)){let e=Rc(t,r),o=zc(n,i);this.writePrimitiveRangeBounds(e,o,qu,0),a.set(qu,t)}else{let e=J(t),n=Y(t,r);for(let r=0;r<3;r++){let i=a[e+r],o=a[e+r+3],s=a[n+r],c=a[n+r+3];a[t+r]=ic?o:c}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{$(0,new Float32Array(t),Ku),e.union(Ku)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:r,intersectsPrimitive:i,scratchPrimitive:a,iterate:o}=e;if(r&&i){let e=r;r=(t,n,r,s,c)=>e(t,n,r,s,c)?!0:o(t,n,this,i,r,s,a)}else r||=i?(e,t,n,r)=>o(e,t,this,i,n,r,a):(e,t,n)=>n;let s=!1,c=0,l=this._roots;for(let e=0,i=l.length;e2**16,i=e.reduce((e,t)=>e+t.count,0),a=r?4:2,o=t?new SharedArrayBuffer(i*a):new ArrayBuffer(i*a),s=r?new Uint32Array(o):new Uint16Array(o),c=0;for(let t=0;tthis._indirectBuffer[e]:e=>e,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...Sc,...t},t[xc]||this.init(t)}init(e){let{geometry:t,primitiveStride:n}=this;e.indirect?this._indirectBuffer=Yu(Tl(t,e.range,n),e.useSharedArrayBuffer):Sl(t,e),super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new Ke))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Tl(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw Error(`BVH: raycastObject3D() not implemented`)}};let Zu=new Mc,Qu=new vt,$u=new O,ed=new yt,td=new O,nd=[`getX`,`getY`,`getZ`];var rd=class e extends Xu{static serialize(e,t={}){t={cloneBuffers:!0,...t};let n=e.geometry,r=e._roots,i=e._indirectBuffer,a=n.getIndex(),o={version:1,roots:null,index:null,indirectBuffer:null};return t.cloneBuffers?(o.roots=r.map(e=>e.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=i?i.slice():null):(o.roots=r,o.index=a?a.array:null,o.indirectBuffer=i),o}static deserialize(t,n,r={}){r={setIndex:!0,indirect:!!t.indirectBuffer,...r};let{index:i,roots:a,indirectBuffer:o}=t;t.version||(console.warn(`MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data.`),c(a));let s=new e(n,{...r,[xc]:!0});if(s._roots=a,s._indirectBuffer=o||null,r.setIndex){let e=n.getIndex();if(e===null){let e=new hn(t.index,1,!1);n.setIndex(e)}else e.array!==i&&(e.array.set(i),e.needsUpdate=!0)}return s;function c(e){for(let t=0;td&&(d=i),o>d&&(d=o),t[n+e]=s,t[n+e+3]=d}return t}computePrimitiveBounds(e,t,n){let r=this.geometry,i=this._indirectBuffer,a=r.attributes.position,o=r.index?r.index.array:null,s=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw Error(`MeshBVH: compute triangle bounds range is invalid.`);let c=a.array,l=a.offset||0,u=3;a.isInterleavedBufferAttribute&&(u=a.data.stride);let d=[`getX`,`getY`,`getZ`],f=n.offset;for(let r=e,p=e+t;ru&&(u=i),o>u&&(u=o);let f=(u-l)/2,g=e*2;n[t+g+0]=l+f,n[t+g+1]=f+(Math.abs(l)+f)*bc}}return n}raycastObject3D(e,t,n=[]){let{material:r}=e;if(r===void 0)return;ed.copy(e.matrixWorld).invert(),Qu.copy(t.ray).applyMatrix4(ed),td.setFromMatrixScale(e.matrixWorld),$u.copy(Qu.direction).multiply(td);let i=$u.length(),a=t.near/i,o=t.far/i;if(t.firstHitOnly===!0){let i=this.raycastFirst(Qu,r,a,o);i=uu(i,e,t),i&&n.push(i)}else{let i=this.raycast(Qu,r,a,o);for(let r=0,a=i.length;r{Z(o,this.resolveTriangleIndex(e)*3,s,c)}:e=>{Z(o,e*3,s,c)},u=Pc.getPrimitive(),d=t.geometry.index,f=t.geometry.attributes.position,p=t.indirect?e=>{Z(u,t.resolveTriangleIndex(e)*3,d,f)}:e=>{Z(u,e*3,d,f)};if(a){if(!(t instanceof e))throw Error(`MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.`);let r=(e,t,r,i,s,c,d,f)=>{for(let m=r,h=r+i;mZu.intersectsBox(e),intersectsTriangle:e=>Zu.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},r={},i=0,a=1/0){return(this.indirect?lu:Vl)(this,e,t,n,r,i,a)}closestPointToPoint(e,t={},n=0,r=1/0){return Lc(this,e,t,n,r)}};self.onmessage=({data:e})=>{let t=performance.now();function n(e){e=Math.min(e,1);let n=performance.now();n-t>=10&&e!==1&&(self.postMessage({error:null,serialized:null,position:null,progress:e}),t=n)}let{index:r,position:i,options:a}=e;try{let e=new Tn;if(e.setAttribute(`position`,new hn(i,3,!1)),r&&e.setIndex(new hn(r,1,!1)),a.includedProgressCallback&&(a.onProgress=n),a.groups){let t=a.groups;for(let n in t){let r=t[n];e.addGroup(r.start,r.count,r.materialIndex)}}let t=new rd(e,a),o=rd.serialize(t,{copyIndexBuffer:!1}),s=[i.buffer,...o.roots];o.index&&s.push(o.index.buffer),s=s.filter(e=>typeof SharedArrayBuffer>`u`||!(e instanceof SharedArrayBuffer)),t._indirectBuffer&&s.push(o.indirectBuffer.buffer),self.postMessage({error:null,serialized:o,position:i,progress:1},s)}catch(e){self.postMessage({error:e,serialized:null,position:null,progress:1})}}})(); \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz b/Needle/SampleScene/dist/assets/generateMeshBVH.worker-BRfdalWV.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..08af977f7c7b3bb99ce6d83645a88cda928bd8ac GIT binary patch literal 96965 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 JZ#^R-2mpn_eS`o2 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/image_0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb b/Needle/SampleScene/dist/assets/image_0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb new file mode 100644 index 0000000..02ea42a --- /dev/null +++ b/Needle/SampleScene/dist/assets/image_0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f54f54bb6f7baf71daf8af53d78dcc397a57f474d6498f30d22539bb7a6181 +size 15100 diff --git a/Needle/SampleScene/dist/assets/image_1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb b/Needle/SampleScene/dist/assets/image_1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb new file mode 100644 index 0000000..c1df161 --- /dev/null +++ b/Needle/SampleScene/dist/assets/image_1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:041edaae6a0ceed7bba7764c841bcde2e930ec8b6146e5f32c3a829e80be4c18 +size 8144 diff --git a/Needle/SampleScene/dist/assets/index-Dng8tdEB.js b/Needle/SampleScene/dist/assets/index-Dng8tdEB.js new file mode 100644 index 0000000..144e80e --- /dev/null +++ b/Needle/SampleScene/dist/assets/index-Dng8tdEB.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./register_types.OB5V_DGw.js","./needle-engine-webxr.Cp-vkXLP.js","./materialx.CnHmG--Y.js","./rolldown-runtime.CYVBeYYp.js","./three@0.169.19.js","./needle-engine-ui.DC9_O2Mo.js","./gltf-progressive.U_EoiMHF.js","./three-examples@0.169.19.js","./three-mesh-ui.CgGzZ3ml.js","./three-examples.extras@0.169.19.js","./needle-engine@5.0.3.js","./needle-engine.extras.ChmId5tE.js","./needle-engine-particles.ByRryBGL.js","./three-quarks.DALdLWPD.js","./needle-engine.extras.X7Svjxj0.js","./postprocessing.Wy71DpiM.js","./three-mesh-bvh.B-oXEGo2.js","./needle-engine.BlkazeHq.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{_t as t,fn as n,wi as r}from"./needle-engine-ui.DC9_O2Mo.js";import"./needle-engine@5.0.3.js";import{x as i}from"./needle-engine-webxr.Cp-vkXLP.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),globalThis[`needle:dependencies:ready`]=e(()=>import(`./register_types.OB5V_DGw.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),import.meta.url);var a=[];globalThis[`needle:codegen_files`]=a,a.push(`./assets/SampleScene.glb`),document.addEventListener(`DOMContentLoaded`,()=>{let e=document.querySelector(`needle-engine`);e&&e.getAttribute(`src`)===null&&(e.setAttribute(`hash`,`1776607707382`),e.setAttribute(`src`,JSON.stringify(a)))}),console.log(`Made with ♥ by 🌵 Needle - https://needle.tools — Version 5.0.3`),r(e=>{let t=e.scene.getComponentInChildren(i);t||(t=e.scene.addComponent(i),t.createARButton=!0,t.createVRButton=!0),t.autoPlace=!0,t.autoCenter=!0,t.arScale=1});function o(e){document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e()}function s(){let e=document.querySelector(`needle-engine`),r=document.querySelector(`#asset-picker-prev`),i=document.querySelector(`#asset-picker-next`),a=document.querySelector(`#asset-picker-ar`),s=document.querySelector(`#asset-picker-label`),c=document.querySelector(`#asset-picker-index`);if(!e||!r||!i||!a||!s||!c)return;let l=null,u=!1,d=!1,f=!1,p=()=>{l&&l.getDishSlotCount()>0?(s.textContent=l.getPickerLabel(),c.textContent=``):l?(s.textContent=`Menu (assign dishes in Unity)`,c.textContent=``):(s.textContent=`Sample scene`,c.textContent=`—`);let e=l!==null&&l.getDishSlotCount()>1;r.disabled=!e,i.disabled=!e,a.disabled=!d||f||u},m=async()=>{try{let n=await e.getContext();l=t(MenuController,n)}catch{l=null}p()};n.isARSupported().then(e=>{d=e,p()});let h=e=>{!l||l.getDishSlotCount()<=1||(e<0?l.selectPreviousDish():l.selectNextDish(),p())},g=async()=>{if(!(!d||f||u)){f=!0,p();try{let t=await e.getContext();await n.start(`immersive-ar`,void 0,t)}catch(e){console.warn(`[assetPicker] Failed to start AR session:`,e)}finally{f=!1,p()}}};r.addEventListener(`click`,()=>h(-1)),i.addEventListener(`click`,()=>h(1)),a.addEventListener(`click`,()=>void g()),e.addEventListener(`enter-ar`,()=>{u=!0,p()}),e.addEventListener(`exit-ar`,()=>{u=!1,p()}),e.addEventListener(`enter-vr`,()=>{u=!0,p()}),e.addEventListener(`exit-vr`,()=>{u=!1,p()}),e.addEventListener(`loadfinished`,()=>void m()),o(()=>{requestAnimationFrame(()=>void m())})}s(),e(()=>import(`./needle-engine.BlkazeHq.js`),__vite__mapDeps([17,11,2,3,4,1,5,6,7,8,9,12,13,14,15,10,16]),import.meta.url); \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/index-Dng8tdEB.js.gz b/Needle/SampleScene/dist/assets/index-Dng8tdEB.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5e92661624e30eb0f14b89d9ccdb652af2eeaf08 GIT binary patch literal 1744 zcmV;>1~2&^iwFP!000023YAw~a@#l(e&172-YOMP1tFq6wkP5+8C!Oo?E0_bolLSW zmjID12{8yT04Pf%s%j1}kMlB5`?N>c3*`iRge{PgW7)FT^Fj)Z5Bw;cy zEFAQD8P5+Ow=ohVi|+|Z8l#L3%F;jM%MJR%z))BRrst+PSbDa<{h@bobVEPe4YEOB zD1cN#3)E03Xx%`6VrVySjjul*pD!^PcVGmU6WUd8v!hn)({jgXDN}u;TBcA=WI(&0 zKJ3G%Px%tyMh4)=HVt=P((vVaqlKUc-Iu+y%@e%@45b^ia-)X^tQBLRKlKi^IC=YK zMQ;lxJj*562L|fx4D85j?+%ZC`R7(9*B_=ZafaKco&0f|w&~W|t;KoT9cAy*ZFjgn z$ebG|5^rvQ`rb_UkB(Qp`BHFmZRx?@aeDmo`N5NxKJH$OKTkflm!Mo*mm8h*}K~moXD6kwpru^WY>`T1_)uJUpW_;aKOM(DDpgx;o8>o8RWZ=WpgKi9)`t5&t`G zv?HGy75gkj18~U*0Ua3_5QXP+j4&BW-RJTjBVjLDUFMw>a!@I#M1buW;OUfI#ek4+ z->N$hd+H`&nB2QZ&}Ey1WRq->@5naUA-m*z@{)vY5{4w)B;ghbza!x`33skAsZG!f z9H)hmI2v;k@c8m7TH|V>Qy7Bk4TJ>Cu3}C&%?ms79&&5J*%ucTF<&I0fDUD!VRG9s zJWUVBpq#HTP+$-{I6LWT<-APu6jDZf)c0F@rPB~wVF!kzs-cJA_M9`KUpPR_nuOsv zj#VLLvx$J(mF*F?BSu)bySuZ~-ra5QZhgPWe5Kh3TFBon&Q7UyMyR0}OcBQz&oN1~ zvRVR_dWhHwPa(JwZWMg|zcP zjrOhV!#9}+^1|tJ$rGqCe%S@(z%170BHjfGx0*DFk#qVYYiyNhAGR2D9Z*f%Z4q>MzW+QpE+5z11aK0NK*e8_(vYs zE!S*HUu*}$jxMBjU0o=L@T>M~WT}IRTYRp#LY-IUkG;1DlVkT^_Qr?EAF=g^{7Du)HrJjT=D3 z%8K7vrDZuN%VJKlnA@pJsysO}oz)!AZ@6&5qC=H;2jNJ@4*5{M#Lw4YJo6{qC8JrL z|9Ot^JW^EHz4sUOR}Wf-i}7sW8$U-lS_bRZ2U`mjwT}BsN@STQv@!Ua zCu1$rpiSH&de0Y2(!AkDA$D0+a$QMR!5c0lq=C~xr7hTdA6P#UYt>-{@O&T?mvTC* zYZl@8d>)xK#F9vnT-R(eLah*EBK{xBgZR^+DwrX{{*HJEtjMwox=LrUNZjb%?P+=-lyAlKPL!FCQdiT*%)pldtlLu}t7g_WhG+F)atoc~xkZ@V mA6FjzU$Smm33vTuQqL>l-HGMytkQmDT=^d(FQ*+}4*&pT2~ZsX literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/index.2XwOwFJz.css b/Needle/SampleScene/dist/assets/index.2XwOwFJz.css new file mode 100644 index 0000000..a203eff --- /dev/null +++ b/Needle/SampleScene/dist/assets/index.2XwOwFJz.css @@ -0,0 +1 @@ +html{height:-webkit-fill-available}body{margin:0;padding:0}needle-engine{width:100%;height:100%;position:absolute;top:0;left:0}#asset-picker{left:0;right:0;bottom:calc(4.75rem + env(safe-area-inset-bottom,0px));z-index:600;pointer-events:auto;box-sizing:border-box;justify-content:center;padding:12px;display:flex;position:fixed}#asset-picker .asset-picker__inner{color:#f2f2f7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f0f14d1;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;max-width:min(100%,36rem);padding:10px 14px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:.95rem;display:flex;box-shadow:0 4px 24px #00000059}#asset-picker button{pointer-events:auto;touch-action:manipulation;cursor:pointer;font:inherit;color:#0f0f14;background:#e8e8ed;border:none;border-radius:8px;padding:8px 14px;font-weight:600}#asset-picker button:disabled{opacity:.45;cursor:not-allowed}#asset-picker #asset-picker-ar{color:#0a0a0c;background:#34c759}#asset-picker #asset-picker-ar:disabled{color:#ffffff80;background:#3a3a3e}#asset-picker .asset-picker__label{text-overflow:ellipsis;white-space:nowrap;text-align:center;flex:1;min-width:0;overflow:hidden}#asset-picker .asset-picker__index{opacity:.85;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.85rem} diff --git a/Needle/SampleScene/dist/assets/index.2XwOwFJz.css.gz b/Needle/SampleScene/dist/assets/index.2XwOwFJz.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b68f95dfd2f5ec315fbfbdc6099b116c6c11fa1f GIT binary patch literal 656 zcmV;B0&o2viwFP!000023WZbKZrd;necx9E2nHlr6ezdWmA+ul!=4M;qGK*HB}j7O zG|0aXwsTq9qSJ$5$|P}k&S8~md#aGORZ`-B`Hqq($yxz>APc$0bMDOXR72PjE2%vg zL%db;%!tOKK;9DL=|Cn`Y9Zx!eQDQ!dlxB@V+DD1wn?ay^Ga%qWm57yh8QskPsI+y zX?WD3FPA!ZDY;q|V2jCm{=5lTkA94h_mc=E3J3^-xT_yBXVSORseTj023z$crS^_E zVGy`SPEkRVoX%Y}bjv`{9a;S^+hHC!Osrg7~ zuS*5S9h4lceLGrq*I4#v^YV`2yh+LN=`(?oYl=!h(W_GflW#0^fi9X5T~L>z9*-if zFi_GLbp|>g7{&}UG#7pqJH~fhXTH6$ls%Ai7*^p)%1_}dL$TX2b8;REN=G$cZ>}iW zB>~pD!v}XgL;`Nkk|04A57<}h;`sx2@9Xa{t`_Z2CLdeD3Rd{F(Jka?PYK&3+#W+| z-9e$XMmG?{sFHL5MvB q0#1UP8Uqz7LEcyhT^xrsiB%xpDfzEUv(BaGZ+`*H)GawB1pojjg)-Ry literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js b/Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js new file mode 100644 index 0000000..5ec3d79 --- /dev/null +++ b/Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js @@ -0,0 +1,150 @@ +import{t as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,Bt as r,C as i,Fr as a,It as o,Jn as s,Lt as c,O as l,On as u,Qn as d,Qt as f,Sr as p,Xt as m,Yt as h,Zt as g,an as _,gr as v,hn as y,in as b,lt as x,mn as ee,n as S,on as C,ot as w,sn as T,t as te,tr as E,vn as D,wn as ne,xr as re}from"./three@0.169.19.js";var ie=`modulepreload`,ae=function(e,t){return new URL(e,t).href},oe={},se=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=ae(t,n),t in oe)return;oe[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ie,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ce=``+new URL(`JsMaterialXCore.B97gKRq_.wasm`,import.meta.url).href,le=``+new URL(`JsMaterialXGenShader.data.DOxudtll.txt`,import.meta.url).href,ue=``+new URL(`JsMaterialXGenShader.P2pWAaz9.wasm`,import.meta.url).href,de=e(((e,t)=>{t.exports={}})),fe=(function(){var e=typeof document<`u`?document.currentScript?.src:void 0;return typeof __filename<`u`&&(e||=__filename),(function(t){t||={};var n,r=t,i,a,o=new Promise((e,t)=>{i=e,a=t}),s=typeof window==`object`,c=typeof WorkerGlobalScope<`u`,l=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&process.type!=`renderer`;r.expectedDataFileDownloads??=0,r.expectedDataFileDownloads++,(()=>{if(typeof ENVIRONMENT_IS_PTHREAD<`u`&&ENVIRONMENT_IS_PTHREAD||typeof ENVIRONMENT_IS_WASM_WORKER<`u`&&ENVIRONMENT_IS_WASM_WORKER)return;var e=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`;function t(t){typeof window==`object`?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf(`/`))+`/`):typeof process>`u`&&typeof location<`u`&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf(`/`))+`/`);var n=`../../bin/JsMaterialXGenShader.data`,i=`JsMaterialXGenShader.data`,a=r.locateFile?r.locateFile(i,``):i,o=t.remote_package_size;function s(t,n,i,a){if(e){de().readFile(t,(e,t)=>{e?a(e):i(t.buffer)});return}r.dataFileDownloads??={},fetch(t).catch(e=>Promise.reject(Error(`Network Error: ${t}`,{cause:e}))).then(e=>{if(!e.ok)return Promise.reject(Error(`${e.status}: ${e.url}`));if(!e.body&&e.arrayBuffer)return e.arrayBuffer().then(i);let a=e.body.getReader(),o=()=>a.read().then(d).catch(t=>Promise.reject(Error(`Unexpected error while handling : ${e.url} ${t}`,{cause:t}))),s=[],c=e.headers,l=Number(c.get(`Content-Length`)??n),u=0,d=({done:e,value:n})=>{if(e){let e=new Uint8Array(s.map(e=>e.length).reduce((e,t)=>e+t,0)),t=0;for(let n of s)e.set(n,t),t+=n.length;i(e.buffer)}else{s.push(n),u+=n.length,r.dataFileDownloads[t]={loaded:u,total:l};let e=0,i=0;for(let t of Object.values(r.dataFileDownloads))e+=t.loaded,i+=t.total;return r.setStatus?.(`Downloading data... (${e}/${i})`),o()}};return r.setStatus?.(`Downloading data...`),o()})}function c(e){console.error(`package error:`,e)}var l=null,u=r.getPreloadedPackage?r.getPreloadedPackage(a,o):null;u||s(a,o,e=>{l?(l(e),l=null):u=e},c);function d(e){function r(e,t){if(!e)throw t+Error().stack}e.FS_createPath(`/`,`libraries`,!0,!0),e.FS_createPath(`/libraries`,`bxdf`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`lama`,!0,!0),e.FS_createPath(`/libraries/bxdf`,`translation`,!0,!0),e.FS_createPath(`/libraries`,`cmlib`,!0,!0),e.FS_createPath(`/libraries`,`lights`,!0,!0),e.FS_createPath(`/libraries/lights`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/lights`,`genmsl`,!0,!0),e.FS_createPath(`/libraries`,`nprlib`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/nprlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries`,`pbrlib`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/pbrlib/genglsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/pbrlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries/pbrlib/genosl`,`lib`,!0,!0),e.FS_createPath(`/libraries`,`stdlib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genglsl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genglsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genmdl`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genmsl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genmsl`,`lib`,!0,!0),e.FS_createPath(`/libraries/stdlib`,`genosl`,!0,!0),e.FS_createPath(`/libraries/stdlib/genosl`,`include`,!0,!0),e.FS_createPath(`/libraries/stdlib/genosl`,`lib`,!0,!0),e.FS_createPath(`/libraries`,`targets`,!0,!0);function i(e,t,n){this.start=e,this.end=t,this.audio=n}i.prototype={requests:{},open:function(t,n){this.name=n,this.requests[n]=this,e.addRunDependency(`fp ${this.name}`)},send:function(){},onload:function(){var e=this.byteArray.subarray(this.start,this.end);this.finish(e)},finish:function(t){var n=this;e.FS_createDataFile(this.name,null,t,!0,!0,!0),e.removeRunDependency(`fp ${n.name}`),this.requests[this.name]=null}};for(var a=t.files,o=0;o{throw t},p=``;function m(e){return r.locateFile?r.locateFile(e,p):p+e}var h,g;if(l){var _=de();de(),p=__dirname+`/`,g=e=>(e=xe(e)?new URL(e):e,_.readFileSync(e)),h=async(e,t=!0)=>(e=xe(e)?new URL(e):e,_.readFileSync(e,t?void 0:`utf8`)),!r.thisProgram&&process.argv.length>1&&(d=process.argv[1].replace(/\\/g,`/`)),process.argv.slice(2),f=(e,t)=>{throw process.exitCode=e,t}}else (s||c)&&(c?p=self.location.href:typeof document<`u`&&document.currentScript&&(p=document.currentScript.src),e&&(p=e),p=p.startsWith(`blob:`)?``:p.substr(0,p.replace(/[?#].*/,``).lastIndexOf(`/`)+1),c&&(g=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),h=async e=>{if(xe(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{if(r.status==200||r.status==0&&r.response){t(r.response);return}n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});var v=r.print||console.log.bind(console),y=r.printErr||console.error.bind(console);Object.assign(r,u),u=null,r.arguments&&r.arguments,r.thisProgram&&(d=r.thisProgram);var b=r.wasmBinary,x,ee=!1,S,C,w,T,te,E,D,ne,re;function ie(){var e=x.buffer;r.HEAP8=C=new Int8Array(e),r.HEAP16=T=new Int16Array(e),r.HEAPU8=w=new Uint8Array(e),r.HEAPU16=te=new Uint16Array(e),r.HEAP32=E=new Int32Array(e),r.HEAPU32=D=new Uint32Array(e),r.HEAPF32=ne=new Float32Array(e),r.HEAPF64=re=new Float64Array(e)}var ae=[],oe=[],se=[];function ce(){if(r.preRun)for(typeof r.preRun==`function`&&(r.preRun=[r.preRun]);r.preRun.length;)fe(r.preRun.shift());Me(ae)}function le(){!r.noFSInit&&!z.initialized&&z.init(),z.ignorePermissions=!1,ot.init(),Me(oe)}function ue(){if(r.postRun)for(typeof r.postRun==`function`&&(r.postRun=[r.postRun]);r.postRun.length;)O(r.postRun.shift());Me(se)}function fe(e){ae.unshift(e)}function pe(e){oe.unshift(e)}function O(e){se.unshift(e)}var k=0,me=null;function he(e){return e}function ge(e){k++,r.monitorRunDependencies?.(k)}function _e(e){if(k--,r.monitorRunDependencies?.(k),k==0&&me){var t=me;me=null,t()}}function ve(e){r.onAbort?.(e),e=`Aborted(`+e+`)`,y(e),ee=!0,e+=`. Build with -sASSERTIONS for more info.`;var t=new WebAssembly.RuntimeError(e);throw a(t),t}var ye=`data:application/octet-stream;base64,`,be=e=>e.startsWith(ye),xe=e=>e.startsWith(`file://`);function Se(){var e=`JsMaterialXGenShader.wasm`;return be(e)?e:m(e)}var Ce;function we(e){if(e==Ce&&b)return new Uint8Array(b);if(g)return g(e);throw`both async and sync fetching of the wasm failed`}async function Te(e){if(!b)try{var t=await h(e);return new Uint8Array(t)}catch{}return we(e)}async function Ee(e,t){try{var n=await Te(e);return await WebAssembly.instantiate(n,t)}catch(e){y(`failed to asynchronously prepare wasm: ${e}`),ve(e)}}async function De(e,t,n){if(!e&&typeof WebAssembly.instantiateStreaming==`function`&&!be(t)&&!xe(t)&&!l&&typeof fetch==`function`)try{var r=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(r,n)}catch(e){y(`wasm streaming compile failed: ${e}`),y(`falling back to ArrayBuffer instantiation`)}return Ee(t,n)}function Oe(){return{a:yi}}async function ke(){function e(e,t){return Z=e.exports,x=Z._a,ie(),yn=Z.cb,pe(Z.$a),_e(`wasm-instantiate`),Z}ge(`wasm-instantiate`);function t(t){e(t.instance)}var n=Oe();if(r.instantiateWasm)try{return r.instantiateWasm(n,e)}catch(e){y(`Module.instantiateWasm callback failed with error: ${e}`),a(e)}Ce??=Se();try{var i=await De(b,Ce,n);return t(i),i}catch(e){a(e);return}}var A,j,Ae={189968:()=>{r.TreeIterator.prototype[Symbol.iterator]=function(){return this}},190052:()=>{r.GraphIterator.prototype[Symbol.iterator]=function(){return this}},190137:()=>{r.InheritanceIterator.prototype[Symbol.iterator]=function(){return this}}};class je{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var Me=e=>{for(;e.length>0;)e.shift()(r)},Ne=r.noExitRuntime||!0,M=e=>Ti(e),N=()=>Ei(),Pe=typeof TextDecoder<`u`?new TextDecoder:void 0,Fe=(e,t=0,n=NaN)=>{for(var r=t+n,i=t;e[i]&&!(i>=r);)++i;if(i-t>16&&e.buffer&&Pe)return Pe.decode(e.subarray(t,i));for(var a=``;t>10,56320|l&1023)}}return a},Ie=(e,t)=>e?Fe(w,e,t):``,P=(e,t,n,r)=>ve(`Assertion failed: ${Ie(e)}, at: `+[t?Ie(t):`unknown filename`,n,r?Ie(r):`unknown function`]),Le=[],Re=0,ze=e=>{var t=new Ve(e);return t.get_caught()||(t.set_caught(!0),Re--),t.set_rethrown(!1),Le.push(t),Oi(e),Ai(e)},F=0,Be=()=>{$(0,0);var e=Le.pop();Di(e.excPtr),F=0};class Ve{constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){D[this.ptr+4>>2]=e}get_type(){return D[this.ptr+4>>2]}set_destructor(e){D[this.ptr+8>>2]=e}get_destructor(){return D[this.ptr+8>>2]}set_caught(e){e=+!!e,C[this.ptr+12]=e}get_caught(){return C[this.ptr+12]!=0}set_rethrown(e){e=+!!e,C[this.ptr+13]=e}get_rethrown(){return C[this.ptr+13]!=0}init(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)}set_adjusted_ptr(e){D[this.ptr+16>>2]=e}get_adjusted_ptr(){return D[this.ptr+16>>2]}}var He=e=>{throw F||=e,F},Ue=e=>wi(e),We=e=>{var t=F;if(!t)return Ue(0),0;var n=new Ve(t);n.set_adjusted_ptr(t);var r=n.get_type();if(!r)return Ue(0),t;for(var i of e){if(i===0||i===r)break;var a=n.ptr+16;if(ki(i,r,a))return Ue(i),t}return Ue(r),t},Ge=()=>We([]),Ke=e=>We([e]),qe=(e,t)=>We([e,t]),Je=()=>{var e=Le.pop();e||ve(`no exception to throw`);var t=e.excPtr;throw e.get_rethrown()||(Le.push(e),e.set_rethrown(!0),e.set_caught(!1),Re++),F=t,F},I=(e,t,n)=>{throw new Ve(e).init(t,n),F=e,Re++,F},Ye=()=>Re,Xe=()=>{var e=E[B.varargs>>2];return B.varargs+=4,e},Ze=Xe,L={isAbs:e=>e.charAt(0)===`/`,splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},normalize:e=>{var t=L.isAbs(e),n=e.substr(-1)===`/`;return e=L.normalizeArray(e.split(`/`).filter(e=>!!e),!t).join(`/`),!e&&!t&&(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},dirname:e=>{var t=L.splitPath(e),n=t[0],r=t[1];return!n&&!r?`.`:(r&&=r.substr(0,r.length-1),n+r)},basename:e=>{if(e===`/`)return`/`;e=L.normalize(e),e=e.replace(/\/$/,``);var t=e.lastIndexOf(`/`);return t===-1?e:e.substr(t+1)},join:(...e)=>L.normalize(e.join(`/`)),join2:(e,t)=>L.normalize(e+`/`+t)},Qe=()=>{if(typeof crypto==`object`&&typeof crypto.getRandomValues==`function`)return e=>crypto.getRandomValues(e);if(l)try{var e=de();if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch{}ve(`initRandomDevice`)},$e=e=>($e=Qe())(e),et={resolve:(...e)=>{for(var t=``,n=!1,r=e.length-1;r>=-1&&!n;r--){var i=r>=0?e[r]:z.cwd();if(typeof i!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!i)return``;t=i+`/`+t,n=L.isAbs(i)}return t=L.normalizeArray(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},relative:(e,t)=>{e=et.resolve(e).substr(1),t=et.resolve(t).substr(1);function n(e){for(var t=0;t=0&&e[n]===``;n--);return t>n?[]:e.slice(t,n-t+1)}for(var r=n(e.split(`/`)),i=n(t.split(`/`)),a=Math.min(r.length,i.length),o=a,s=0;s{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},rt=(e,t,n,r)=>{if(!(r>0))return 0;for(var i=n,a=n+r-1,o=0;o=55296&&s<=57343){var c=e.charCodeAt(++o);s=65536+((s&1023)<<10)|c&1023}if(s<=127){if(n>=a)break;t[n++]=s}else if(s<=2047){if(n+1>=a)break;t[n++]=192|s>>6,t[n++]=128|s&63}else if(s<=65535){if(n+2>=a)break;t[n++]=224|s>>12,t[n++]=128|s>>6&63,t[n++]=128|s&63}else{if(n+3>=a)break;t[n++]=240|s>>18,t[n++]=128|s>>12&63,t[n++]=128|s>>6&63,t[n++]=128|s&63}}return t[n]=0,n-i};function it(e,t,n){var r=n>0?n:nt(e)+1,i=Array(r),a=rt(e,i,0,i.length);return t&&(i.length=a),i}var at=()=>{if(!tt.length){var e=null;if(l){var t=256,n=Buffer.alloc(t),r=0,i=process.stdin.fd;try{r=_.readSync(i,n,0,t)}catch(e){if(e.toString().includes(`EOF`))r=0;else throw e}r>0&&(e=n.slice(0,r).toString(`utf-8`))}else typeof window<`u`&&typeof window.prompt==`function`&&(e=window.prompt(`Input: `),e!==null&&(e+=` +`));if(!e)return null;tt=it(e,!0)}return tt.shift()},ot={ttys:[],init(){},shutdown(){},register(e,t){ot.ttys[e]={input:[],output:[],ops:t},z.registerDevice(e,ot.stream_ops)},stream_ops:{open(e){var t=ot.ttys[e.node.rdev];if(!t)throw new z.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,n,r,i){if(!e.tty||!e.tty.ops.get_char)throw new z.ErrnoError(60);for(var a=0,o=0;o0&&(v(Fe(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,n){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(y(Fe(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(y(Fe(e.output)),e.output=[])}}},st=(e,t)=>Math.ceil(e/t)*t,ct=e=>{ve()},R={ops_table:null,mount(e){return R.createNode(null,`/`,16895,0)},createNode(e,t,n,r){if(z.isBlkdev(n)||z.isFIFO(n))throw new z.ErrnoError(63);R.ops_table||={dir:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr,lookup:R.node_ops.lookup,mknod:R.node_ops.mknod,rename:R.node_ops.rename,unlink:R.node_ops.unlink,rmdir:R.node_ops.rmdir,readdir:R.node_ops.readdir,symlink:R.node_ops.symlink},stream:{llseek:R.stream_ops.llseek}},file:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr},stream:{llseek:R.stream_ops.llseek,read:R.stream_ops.read,write:R.stream_ops.write,allocate:R.stream_ops.allocate,mmap:R.stream_ops.mmap,msync:R.stream_ops.msync}},link:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr,readlink:R.node_ops.readlink},stream:{}},chrdev:{node:{getattr:R.node_ops.getattr,setattr:R.node_ops.setattr},stream:z.chrdev_stream_ops}};var i=z.createNode(e,t,n,r);return z.isDir(i.mode)?(i.node_ops=R.ops_table.dir.node,i.stream_ops=R.ops_table.dir.stream,i.contents={}):z.isFile(i.mode)?(i.node_ops=R.ops_table.file.node,i.stream_ops=R.ops_table.file.stream,i.usedBytes=0,i.contents=null):z.isLink(i.mode)?(i.node_ops=R.ops_table.link.node,i.stream_ops=R.ops_table.link.stream):z.isChrdev(i.mode)&&(i.node_ops=R.ops_table.chrdev.node,i.stream_ops=R.ops_table.chrdev.stream),i.atime=i.mtime=i.ctime=Date.now(),e&&(e.contents[t]=i,e.atime=e.mtime=e.ctime=i.atime),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array},expandFileStorage(e,t){var n=e.contents?e.contents.length:0;if(!(n>=t)){t=Math.max(t,n*(n<1024*1024?2:1.125)>>>0),n!=0&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var n=e.contents;e.contents=new Uint8Array(t),n&&e.contents.set(n.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=z.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,z.isDir(e.mode)?t.size=4096:z.isFile(e.mode)?t.size=e.usedBytes:z.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){for(let n of[`mode`,`atime`,`mtime`,`ctime`])t[n]&&(e[n]=t[n]);t.size!==void 0&&R.resizeFileStorage(e,t.size)},lookup(e,t){throw R.doesNotExistError},mknod(e,t,n,r){return R.createNode(e,t,n,r)},rename(e,t,n){var r;try{r=z.lookupNode(t,n)}catch{}if(r){if(z.isDir(e.mode))for(var i in r.contents)throw new z.ErrnoError(55);z.hashRemoveNode(r)}delete e.parent.contents[e.name],t.contents[n]=e,e.name=n,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.contents[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){for(var n in z.lookupNode(e,t).contents)throw new z.ErrnoError(55);delete e.contents[t],e.ctime=e.mtime=Date.now()},readdir(e){return[`.`,`..`,...Object.keys(e.contents)]},symlink(e,t,n){var r=R.createNode(e,t,41471,0);return r.link=n,r},readlink(e){if(!z.isLink(e.mode))throw new z.ErrnoError(28);return e.link}},stream_ops:{read(e,t,n,r,i){var a=e.node.contents;if(i>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-i,r);if(o>8&&a.subarray)t.set(a.subarray(i,i+o),n);else for(var s=0;s0||n+t{var t=await h(e);return new Uint8Array(t)},ut=(e,t,n,r,i,a)=>{z.createDataFile(e,t,n,r,i,a)},dt=r.preloadPlugins||[],ft=(e,t,n,r)=>{typeof Browser<`u`&&Browser.init();var i=!1;return dt.forEach(a=>{i||a.canHandle(t)&&(a.handle(e,t,n,r),i=!0)}),i},pt=(e,t,n,r,i,a,o,s,c,l)=>{var u=t?et.resolve(L.join2(e,t)):e,d=he(`cp ${u}`);function f(n){function f(n){l?.(),s||ut(e,t,n,r,i,c),a?.(),_e(d)}ft(n,u,f,()=>{o?.(),_e(d)})||f(n)}ge(d),typeof n==`string`?lt(n).then(f,o):f(n)},mt=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(t===void 0)throw Error(`Unknown file open mode: ${e}`);return t},ht=(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},z={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:`/`,initialized:!1,ignorePermissions:!0,ErrnoError:class{name=`ErrnoError`;constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!=1}get isWrite(){return(this.flags&2097155)!=0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,t,n,r){e||=this,this.parent=e,this.mount=e.mount,this.id=z.nextInode++,this.name=t,this.mode=n,this.rdev=r,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return z.isDir(this.mode)}get isDevice(){return z.isChrdev(this.mode)}},lookupPath(e,t={}){if(!e)return{path:``,node:null};t.follow_mount??=!0,L.isAbs(e)||(e=z.cwd()+`/`+e);linkloop:for(var n=0;n<40;n++){for(var r=e.split(`/`).filter(e=>!!e&&e!==`.`),i=z.root,a=`/`,o=0;o>>0)%z.nameTable.length},hashAddNode(e){var t=z.hashName(e.parent.id,e.name);e.name_next=z.nameTable[t],z.nameTable[t]=e},hashRemoveNode(e){var t=z.hashName(e.parent.id,e.name);if(z.nameTable[t]===e)z.nameTable[t]=e.name_next;else for(var n=z.nameTable[t];n;){if(n.name_next===e){n.name_next=e.name_next;break}n=n.name_next}},lookupNode(e,t){var n=z.mayLookup(e);if(n)throw new z.ErrnoError(n);for(var r=z.hashName(e.id,t),i=z.nameTable[r];i;i=i.name_next){var a=i.name;if(i.parent.id===e.id&&a===t)return i}return z.lookup(e,t)},createNode(e,t,n,r){var i=new z.FSNode(e,t,n,r);return z.hashAddNode(i),i},destroyNode(e){z.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)==32768},isDir(e){return(e&61440)==16384},isLink(e){return(e&61440)==40960},isChrdev(e){return(e&61440)==8192},isBlkdev(e){return(e&61440)==24576},isFIFO(e){return(e&61440)==4096},isSocket(e){return(e&49152)==49152},flagsToPermissionString(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t},nodePermissions(e,t){return z.ignorePermissions?0:t.includes(`r`)&&!(e.mode&292)||t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73)?2:0},mayLookup(e){return z.isDir(e.mode)?z.nodePermissions(e,`x`)||(e.node_ops.lookup?0:2):54},mayCreate(e,t){if(!z.isDir(e.mode))return 54;try{return z.lookupNode(e,t),20}catch{}return z.nodePermissions(e,`wx`)},mayDelete(e,t,n){var r;try{r=z.lookupNode(e,t)}catch(e){return e.errno}var i=z.nodePermissions(e,`wx`);if(i)return i;if(n){if(!z.isDir(r.mode))return 54;if(z.isRoot(r)||z.getPath(r)===z.cwd())return 10}else if(z.isDir(r.mode))return 31;return 0},mayOpen(e,t){return e?z.isLink(e.mode)?32:z.isDir(e.mode)&&(z.flagsToPermissionString(t)!==`r`||t&512)?31:z.nodePermissions(e,z.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=z.MAX_OPEN_FDS;e++)if(!z.streams[e])return e;throw new z.ErrnoError(33)},getStreamChecked(e){var t=z.getStream(e);if(!t)throw new z.ErrnoError(8);return t},getStream:e=>z.streams[e],createStream(e,t=-1){return e=Object.assign(new z.FSStream,e),t==-1&&(t=z.nextfd()),e.fd=t,z.streams[t]=e,e},closeStream(e){z.streams[e]=null},dupStream(e,t=-1){var n=z.createStream(e,t);return n.stream_ops?.dup?.(n),n},chrdev_stream_ops:{open(e){e.stream_ops=z.getDevice(e.node.rdev).stream_ops,e.stream_ops.open?.(e)},llseek(){throw new z.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){z.devices[e]={stream_ops:t}},getDevice:e=>z.devices[e],getMounts(e){for(var t=[],n=[e];n.length;){var r=n.pop();t.push(r),n.push(...r.mounts)}return t},syncfs(e,t){typeof e==`function`&&(t=e,e=!1),z.syncFSRequests++,z.syncFSRequests>1&&y(`warning: ${z.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=z.getMounts(z.root.mount),r=0;function i(e){return z.syncFSRequests--,t(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,i(e));++r>=n.length&&i(null)}n.forEach(t=>{if(!t.type.syncfs)return a(null);t.type.syncfs(t,e,a)})},mount(e,t,n){var r=n===`/`,i=!n,a;if(r&&z.root)throw new z.ErrnoError(10);if(!r&&!i){var o=z.lookupPath(n,{follow_mount:!1});if(n=o.path,a=o.node,z.isMountpoint(a))throw new z.ErrnoError(10);if(!z.isDir(a.mode))throw new z.ErrnoError(54)}var s={type:e,opts:t,mountpoint:n,mounts:[]},c=e.mount(s);return c.mount=s,s.root=c,r?z.root=c:a&&(a.mounted=s,a.mount&&a.mount.mounts.push(s)),c},unmount(e){var t=z.lookupPath(e,{follow_mount:!1});if(!z.isMountpoint(t.node))throw new z.ErrnoError(28);var n=t.node,r=n.mounted,i=z.getMounts(r);Object.keys(z.nameTable).forEach(e=>{for(var t=z.nameTable[e];t;){var n=t.name_next;i.includes(t.mount)&&z.destroyNode(t),t=n}}),n.mounted=null;var a=n.mount.mounts.indexOf(r);n.mount.mounts.splice(a,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,n){var r=z.lookupPath(e,{parent:!0}).node,i=L.basename(e);if(!i||i===`.`||i===`..`)throw new z.ErrnoError(28);var a=z.mayCreate(r,i);if(a)throw new z.ErrnoError(a);if(!r.node_ops.mknod)throw new z.ErrnoError(63);return r.node_ops.mknod(r,i,t,n)},statfs(e){var t={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:z.nextInode,ffree:z.nextInode-1,fsid:42,flags:2,namelen:255},n=z.lookupPath(e,{follow:!0}).node;return n?.node_ops.statfs&&Object.assign(t,n.node_ops.statfs(n.mount.opts.root)),t},create(e,t=438){return t&=4095,t|=32768,z.mknod(e,t,0)},mkdir(e,t=511){return t&=1023,t|=16384,z.mknod(e,t,0)},mkdirTree(e,t){for(var n=e.split(`/`),r=``,i=0;iz.currentPath,chdir(e){var t=z.lookupPath(e,{follow:!0});if(t.node===null)throw new z.ErrnoError(44);if(!z.isDir(t.node.mode))throw new z.ErrnoError(54);var n=z.nodePermissions(t.node,`x`);if(n)throw new z.ErrnoError(n);z.currentPath=t.path},createDefaultDirectories(){z.mkdir(`/tmp`),z.mkdir(`/home`),z.mkdir(`/home/web_user`)},createDefaultDevices(){z.mkdir(`/dev`),z.registerDevice(z.makedev(1,3),{read:()=>0,write:(e,t,n,r,i)=>r,llseek:()=>0}),z.mkdev(`/dev/null`,z.makedev(1,3)),ot.register(z.makedev(5,0),ot.default_tty_ops),ot.register(z.makedev(6,0),ot.default_tty1_ops),z.mkdev(`/dev/tty`,z.makedev(5,0)),z.mkdev(`/dev/tty1`,z.makedev(6,0));var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=$e(e).byteLength),e[--t]);z.createDevice(`/dev`,`random`,n),z.createDevice(`/dev`,`urandom`,n),z.mkdir(`/dev/shm`),z.mkdir(`/dev/shm/tmp`)},createSpecialDirectories(){z.mkdir(`/proc`);var e=z.mkdir(`/proc/self`);z.mkdir(`/proc/self/fd`),z.mount({mount(){var t=z.createNode(e,`fd`,16895,73);return t.stream_ops={llseek:R.stream_ops.llseek},t.node_ops={lookup(e,t){var n=+t,r=z.getStreamChecked(n),i={parent:null,mount:{mountpoint:`fake`},node_ops:{readlink:()=>r.path},id:n+1};return i.parent=i,i},readdir(){return Array.from(z.streams.entries()).filter(([e,t])=>t).map(([e,t])=>e.toString())}},t}},{},`/proc/self/fd`)},createStandardStreams(e,t,n){e?z.createDevice(`/dev`,`stdin`,e):z.symlink(`/dev/tty`,`/dev/stdin`),t?z.createDevice(`/dev`,`stdout`,null,t):z.symlink(`/dev/tty`,`/dev/stdout`),n?z.createDevice(`/dev`,`stderr`,null,n):z.symlink(`/dev/tty1`,`/dev/stderr`),z.open(`/dev/stdin`,0),z.open(`/dev/stdout`,1),z.open(`/dev/stderr`,1)},staticInit(){z.nameTable=Array(4096),z.mount(R,{},`/`),z.createDefaultDirectories(),z.createDefaultDevices(),z.createSpecialDirectories(),z.filesystems={MEMFS:R}},init(e,t,n){z.initialized=!0,e??=r.stdin,t??=r.stdout,n??=r.stderr,z.createStandardStreams(e,t,n)},quit(){z.initialized=!1;for(var e=0;ethis.length-1||e<0)){var t=e%this.chunkSize,n=e/this.chunkSize|0;return this.getter(n)[t]}}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(`HEAD`,n,!1),e.send(null),!(e.status>=200&&e.status<300||e.status===304))throw Error(`Couldn't load `+n+`. Status: `+e.status);var t=Number(e.getResponseHeader(`Content-length`)),r,i=(r=e.getResponseHeader(`Accept-Ranges`))&&r===`bytes`,a=(r=e.getResponseHeader(`Content-Encoding`))&&r===`gzip`,o=1024*1024;i||(o=t);var s=(e,r)=>{if(e>r)throw Error(`invalid range (`+e+`, `+r+`) or no bytes requested!`);if(r>t-1)throw Error(`only `+t+` bytes available! programmer error!`);var i=new XMLHttpRequest;if(i.open(`GET`,n,!1),t!==o&&i.setRequestHeader(`Range`,`bytes=`+e+`-`+r),i.responseType=`arraybuffer`,i.overrideMimeType&&i.overrideMimeType(`text/plain; charset=x-user-defined`),i.send(null),!(i.status>=200&&i.status<300||i.status===304))throw Error(`Couldn't load `+n+`. Status: `+i.status);return i.response===void 0?it(i.responseText||``,!0):new Uint8Array(i.response||[])},c=this;c.setDataGetter(e=>{var n=e*o,r=(e+1)*o-1;if(r=Math.min(r,t-1),c.chunks[e]===void 0&&(c.chunks[e]=s(n,r)),c.chunks[e]===void 0)throw Error(`doXHR failed!`);return c.chunks[e]}),(a||!t)&&(o=t=1,t=this.getter(0).length,o=t,v(`LazyFiles on gzip forces download of the whole file when length is accessed`)),this._length=t,this._chunkSize=o,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<`u`){if(!c)throw`Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc`;var o={isDevice:!1,contents:new a}}else var o={isDevice:!1,url:n};var s=z.createFile(e,t,o,r,i);o.contents?s.contents=o.contents:o.url&&(s.contents=null,s.url=o.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var l={};Object.keys(s.stream_ops).forEach(e=>{var t=s.stream_ops[e];l[e]=(...e)=>(z.forceLoadFile(s),t(...e))});function u(e,t,n,r,i){var a=e.node.contents;if(i>=a.length)return 0;var o=Math.min(a.length-i,r);if(a.slice)for(var s=0;s(z.forceLoadFile(s),u(e,t,n,r,i)),l.mmap=(e,t,n,r,i)=>{z.forceLoadFile(s);var a=ct(t);if(!a)throw new z.ErrnoError(48);return u(e,C,a,t,n),{ptr:a,allocated:!0}},s.stream_ops=l,s}},B={DEFAULT_POLLMASK:5,calculateAt(e,t,n){if(L.isAbs(t))return t;var r=e===-100?z.cwd():B.getStreamFromFD(e).path;if(t.length==0){if(!n)throw new z.ErrnoError(44);return r}return r+`/`+t},doStat(e,t,n){var r=e(t);E[n>>2]=r.dev,E[n+4>>2]=r.mode,D[n+8>>2]=r.nlink,E[n+12>>2]=r.uid,E[n+16>>2]=r.gid,E[n+20>>2]=r.rdev,j=[r.size>>>0,(A=r.size,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+24>>2]=j[0],E[n+28>>2]=j[1],E[n+32>>2]=4096,E[n+36>>2]=r.blocks;var i=r.atime.getTime(),a=r.mtime.getTime(),o=r.ctime.getTime();return j=[Math.floor(i/1e3)>>>0,(A=Math.floor(i/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+40>>2]=j[0],E[n+44>>2]=j[1],D[n+48>>2]=i%1e3*1e3*1e3,j=[Math.floor(a/1e3)>>>0,(A=Math.floor(a/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+56>>2]=j[0],E[n+60>>2]=j[1],D[n+64>>2]=a%1e3*1e3*1e3,j=[Math.floor(o/1e3)>>>0,(A=Math.floor(o/1e3),+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+72>>2]=j[0],E[n+76>>2]=j[1],D[n+80>>2]=o%1e3*1e3*1e3,j=[r.ino>>>0,(A=r.ino,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[n+88>>2]=j[0],E[n+92>>2]=j[1],0},doMsync(e,t,n,r,i){if(!z.isFile(t.node.mode))throw new z.ErrnoError(43);if(r&2)return 0;var a=w.slice(e,e+n);z.msync(t,a,i,n,r)},getStreamFromFD(e){return z.getStreamChecked(e)},varargs:void 0,getStr(e){return Ie(e)}};function gt(e,t,n){B.varargs=n;try{var r=B.getStreamFromFD(e);switch(t){case 0:var i=Xe();if(i<0)return-28;for(;z.streams[i];)i++;return z.dupStream(r,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:var i=Xe();return r.flags|=i,0;case 12:var i=Ze(),a=0;return T[i+a>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}var _t=(e,t,n)=>rt(e,w,t,n);function vt(e,t,n){try{var r=B.getStreamFromFD(e);r.getdents||=z.readdir(r.path);for(var i=280,a=0,o=z.llseek(r,0,1),s=Math.floor(o/i),c=Math.min(r.getdents.length,s+Math.floor(n/i)),l=s;l>>0,(A=u,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[t+a>>2]=j[0],E[t+a+4>>2]=j[1],j=[(l+1)*i>>>0,(A=(l+1)*i,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[t+a+8>>2]=j[0],E[t+a+12>>2]=j[1],T[t+a+16>>1]=280,C[t+a+18]=d,_t(f,t+a+19,256),a+=i}return z.llseek(r,l*i,0),a}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function yt(e,t,n){B.varargs=n;try{var r=B.getStreamFromFD(e);switch(t){case 21509:return r.tty?0:-59;case 21505:if(!r.tty)return-59;if(r.tty.ops.ioctl_tcgets){var i=r.tty.ops.ioctl_tcgets(r),a=Ze();E[a>>2]=i.c_iflag||0,E[a+4>>2]=i.c_oflag||0,E[a+8>>2]=i.c_cflag||0,E[a+12>>2]=i.c_lflag||0;for(var o=0;o<32;o++)C[a+o+17]=i.c_cc[o]||0;return 0}return 0;case 21510:case 21511:case 21512:return r.tty?0:-59;case 21506:case 21507:case 21508:if(!r.tty)return-59;if(r.tty.ops.ioctl_tcsets){for(var a=Ze(),s=E[a>>2],c=E[a+4>>2],l=E[a+8>>2],u=E[a+12>>2],d=[],o=0;o<32;o++)d.push(C[a+o+17]);return r.tty.ops.ioctl_tcsets(r.tty,t,{c_iflag:s,c_oflag:c,c_cflag:l,c_lflag:u,c_cc:d})}return 0;case 21519:if(!r.tty)return-59;var a=Ze();return E[a>>2]=0,0;case 21520:return r.tty?-28:-59;case 21531:var a=Ze();return z.ioctl(r,t,a);case 21523:if(!r.tty)return-59;if(r.tty.ops.ioctl_tiocgwinsz){var f=r.tty.ops.ioctl_tiocgwinsz(r.tty),a=Ze();T[a>>1]=f[0],T[a+2>>1]=f[1]}return 0;case 21524:return r.tty?0:-59;case 21515:return r.tty?0:-59;default:return-28}}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function bt(e,t,n,r){B.varargs=r;try{t=B.getStr(t),t=B.calculateAt(e,t);var i=r?Xe():0;return z.open(t,n,i).fd}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}function xt(e,t){try{return e=B.getStr(e),B.doStat(z.stat,e,t)}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return-e.errno}}var St=()=>ve(``),Ct={},wt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Tt(e){return this.fromWireType(D[e>>2])}var Et={},Dt={},Ot={},kt,At=e=>{throw new kt(e)},V=(e,t,n)=>{e.forEach(e=>Ot[e]=t);function r(t){var r=n(t);r.length!==e.length&&At(`Mismatched type converter count`);for(var i=0;i{Dt.hasOwnProperty(e)?i[t]=Dt[e]:(a.push(e),Et.hasOwnProperty(e)||(Et[e]=[]),Et[e].push(()=>{i[t]=Dt[e],++o,o===a.length&&r(i)}))}),a.length===0&&r(i)},jt=e=>{var t=Ct[e];delete Ct[e];var n=t.elements,r=n.length,i=n.map(e=>e.getterReturnType).concat(n.map(e=>e.setterArgumentType)),a=t.rawConstructor,o=t.rawDestructor;V([e],i,e=>(n.forEach((t,n)=>{var i=e[n],a=t.getter,o=t.getterContext,s=e[n+r],c=t.setter,l=t.setterContext;t.read=e=>i.fromWireType(a(o,e)),t.write=(e,t)=>{var n=[];c(l,e,s.toWireType(n,t)),wt(n)}}),[{name:t.name,fromWireType:e=>{for(var t=Array(r),i=0;i{if(r!==i.length)throw TypeError(`Incorrect number of tuple elements for ${t.name}: expected=${r}, actual=${i.length}`);for(var s=a(),c=0;c{},Nt=()=>{for(var e=Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Pt=e},Pt,H=e=>{for(var t=``,n=e;w[n];)t+=Pt[w[n++]];return t},Ft,U=e=>{throw new Ft(e)};function It(e,t,n={}){var r=t.name;if(e||U(`type "${r}" must have a positive integer typeid pointer`),Dt.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;U(`Cannot register type '${r}' twice`)}if(Dt[e]=t,delete Ot[e],Et.hasOwnProperty(e)){var i=Et[e];delete Et[e],i.forEach(e=>e())}}function W(e,t,n={}){return It(e,t,n)}var G=8,Lt=(e,t,n,r)=>{t=H(t),W(e,{name:t,fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:r},argPackAdvance:G,readValueFromPointer:function(e){return this.fromWireType(w[e])},destructorFunction:null})},Rt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),zt=e=>{function t(e){return e.$$.ptrType.registeredClass.name}U(t(e)+` instance already deleted`)},Bt=!1,Vt=e=>{},Ht=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Ut=e=>{--e.count.value,e.count.value===0&&Ht(e)},Wt=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var r=Wt(e,t,n.baseClass);return r===null?null:n.downcast(r)},Gt={},Kt={},qt=(e,t)=>{for(t===void 0&&U(`ptr should not be undefined`);e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Jt=(e,t)=>(t=qt(e,t),Kt[t]),Yt=(e,t)=>((!t.ptrType||!t.ptr)&&At(`makeClassHandle requires ptr and ptrType`),!!t.smartPtrType!=!!t.smartPtr&&At(`Both smartPtrType and smartPtr must be specified`),t.count={value:1},Zt(Object.create(e,{$$:{value:t,writable:!0}})));function Xt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=Jt(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var r=n.clone();return this.destructor(e),r}function i(){return this.isSmartPointer?Yt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Yt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=Gt[this.registeredClass.getActualType(t)];if(!a)return i.call(this);var o=this.isConst?a.constPointerType:a.pointerType,s=Wt(t,this.registeredClass,o.registeredClass);return s===null?i.call(this):this.isSmartPointer?Yt(o.registeredClass.instancePrototype,{ptrType:o,ptr:s,smartPtrType:this,smartPtr:e}):Yt(o.registeredClass.instancePrototype,{ptrType:o,ptr:s})}var Zt=e=>typeof FinalizationRegistry>`u`?(Zt=e=>e,e):(Bt=new FinalizationRegistry(e=>{Ut(e.$$)}),Zt=e=>{var t=e.$$;if(t.smartPtr){var n={$$:t};Bt.register(e,n,e)}return e},Vt=e=>Bt.unregister(e),Zt(e)),Qt=[],$t=()=>{for(;Qt.length;){var e=Qt.pop();e.$$.deleteScheduled=!1,e.delete()}},en,tn=()=>{Object.assign(nn.prototype,{isAliasOf(e){if(!(this instanceof nn)||!(e instanceof nn))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var r=e.$$.ptrType.registeredClass,i=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;r.baseClass;)i=r.upcast(i),r=r.baseClass;return t===r&&n===i},clone(){if(this.$$.ptr||zt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Zt(Object.create(Object.getPrototypeOf(this),{$$:{value:Rt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||zt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&U(`Object already scheduled for deletion`),Vt(this),Ut(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||zt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&U(`Object already scheduled for deletion`),Qt.push(this),Qt.length===1&&en&&en($t),this.$$.deleteScheduled=!0,this}})};function nn(){}var rn=(e,t)=>Object.defineProperty(t,`name`,{value:e}),an=(e,t,n)=>{if(e[t].overloadTable===void 0){var r=e[t];e[t]=function(...r){return e[t].overloadTable.hasOwnProperty(r.length)||U(`Function '${n}' called with an invalid number of arguments (${r.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[r.length].apply(this,r)},e[t].overloadTable=[],e[t].overloadTable[r.argCount]=r}},on=(e,t,n)=>{r.hasOwnProperty(e)?((n===void 0||r[e].overloadTable!==void 0&&r[e].overloadTable[n]!==void 0)&&U(`Cannot register public name '${e}' twice`),an(r,e,e),r[e].overloadTable.hasOwnProperty(n)&&U(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),r[e].overloadTable[n]=t):(r[e]=t,r[e].argCount=n)},sn=48,cn=57,ln=e=>{e=e.replace(/[^a-zA-Z0-9_]/g,`$`);var t=e.charCodeAt(0);return t>=sn&&t<=cn?`_${e}`:e};function un(e,t,n,r,i,a,o,s){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=r,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var dn=(e,t,n)=>{for(;t!==n;)t.upcast||U(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function fn(e,t){if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),0;t.$$||U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass;return dn(t.$$.ptr,n,this.registeredClass)}function pn(e,t){var n;if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&U(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;if(n=dn(t.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&U(`Passing raw pointer to smart pointer is illegal`),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:U(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var i=t.clone();n=this.rawShare(n,X.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:U(`Unsupporting sharing policy`)}return n}function mn(e,t){if(t===null)return this.isReference&&U(`null is not a valid ${this.name}`),0;t.$$||U(`Cannot pass "${Yn(t)}" as a ${this.name}`),t.$$.ptr||U(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&U(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass;return dn(t.$$.ptr,n,this.registeredClass)}var hn=()=>{Object.assign(gn.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor?.(e)},argPackAdvance:G,readValueFromPointer:Tt,fromWireType:Xt})};function gn(e,t,n,r,i,a,o,s,c,l,u){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=r,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=c,this.rawShare=l,this.rawDestructor=u,!i&&t.baseClass===void 0?r?(this.toWireType=fn,this.destructorFunction=null):(this.toWireType=mn,this.destructorFunction=null):this.toWireType=pn}var _n=(e,t,n)=>{r.hasOwnProperty(e)||At(`Replacing nonexistent public symbol`),r[e].overloadTable!==void 0&&n!==void 0?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)},vn=(e,t,n)=>{e=e.replace(/p/g,`i`);var i=r[`dynCall_`+e];return i(t,...n)},yn,K=e=>yn.get(e),bn=(e,t,n=[])=>e.includes(`j`)?vn(e,t,n):K(t)(...n),xn=(e,t)=>(...n)=>bn(e,t,n),q=(e,t)=>{e=H(e);function n(){return e.includes(`j`)?xn(e,t):K(t)}var r=n();return typeof r!=`function`&&U(`unknown function pointer with signature ${e}: ${t}`),r},Sn=(e,t)=>{var n=rn(t,function(e){this.name=t,this.message=e;var n=Error(e).stack;n!==void 0&&(this.stack=this.toString()+` +`+n.replace(/^Error(:[^\n]*)?\n/,``))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},Cn,wn=e=>{var t=xi(e),n=H(t);return Q(t),n},J=(e,t)=>{var n=[],r={};function i(e){if(!r[e]&&!Dt[e]){if(Ot[e]){Ot[e].forEach(i);return}n.push(e),r[e]=!0}}throw t.forEach(i),new Cn(`${e}: `+n.map(wn).join([`, `]))},Tn=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{u=H(u),a=q(i,a),s&&=q(o,s),l&&=q(c,l),f=q(d,f);var p=ln(u);on(p,function(){J(`Cannot construct ${u} due to unbound types`,[r])}),V([e,t,n],r?[r]:[],t=>{t=t[0];var n,i;r?(n=t.registeredClass,i=n.instancePrototype):i=nn.prototype;var o=rn(u,function(...e){if(Object.getPrototypeOf(this)!==c)throw new Ft(`Use 'new' to construct `+u);if(d.constructor_body===void 0)throw new Ft(u+` has no accessible constructor`);var t=d.constructor_body[e.length];if(t===void 0)throw new Ft(`Tried to invoke ctor of ${u} with invalid number of parameters (${e.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return t.apply(this,e)}),c=Object.create(i,{constructor:{value:o}});o.prototype=c;var d=new un(u,o,c,f,n,a,s,l);d.baseClass&&(d.baseClass.__derivedClasses??=[],d.baseClass.__derivedClasses.push(d));var m=new gn(u,d,!0,!1,!1),h=new gn(u+`*`,d,!1,!1,!1),g=new gn(u+` const*`,d,!1,!0,!1);return Gt[e]={pointerType:h,constPointerType:g},_n(p,o),[m,h,g]})};function En(e){for(var t=1;t{for(var n=[],r=0;r>2]);return n},jn=e=>{e=e.trim();let t=e.indexOf(`(`);return t===-1?e:e.substr(0,t)},Mn=(e,t,n,r,i,a,o,s,c)=>{var l=An(n,r);t=H(t),t=jn(t),a=q(i,a),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`;function i(){J(`Cannot call ${r} due to unbound types`,l)}t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]);var c=e.registeredClass.constructor;return c[t]===void 0?(i.argCount=n-1,c[t]=i):(an(c,t,r),c[t].overloadTable[n-1]=i),V([],l,i=>{var l=kn(r,[i[0],null].concat(i.slice(1)),null,a,o,s);if(c[t].overloadTable===void 0?(l.argCount=n-1,c[t]=l):c[t].overloadTable[n-1]=l,e.registeredClass.__derivedClasses)for(let n of e.registeredClass.__derivedClasses)n.constructor.hasOwnProperty(t)||(n.constructor[t]=l);return[]}),[]})},Nn=(e,t,n)=>(e instanceof Object||U(`${n} with invalid "this": ${e}`),e instanceof t.registeredClass.constructor||U(`${n} incompatible with "this" of type ${e.constructor.name}`),e.$$.ptr||U(`cannot call emscripten binding method ${n} on deleted object`),dn(e.$$.ptr,e.$$.ptrType.registeredClass,t.registeredClass)),Pn=(e,t,n,r,i,a,o,s)=>{t=H(t),a=q(i,a),V([],[e],e=>{e=e[0];var i=`${e.name}.${t}`,c={get(){J(`Cannot access ${i} due to unbound types`,[n])},enumerable:!0,configurable:!0};return s?c.set=()=>{J(`Cannot access ${i} due to unbound types`,[n])}:c.set=e=>{U(`${i} is a read-only property`)},Object.defineProperty(e.registeredClass.constructor,t,c),V([],[n],n=>{n=n[0];var i={get(){return n.fromWireType(a(r))},enumerable:!0};return s&&(s=q(o,s),i.set=e=>{var t=[];s(r,n.toWireType(t,e)),wt(t)}),Object.defineProperty(e.registeredClass.constructor,t,i),[]}),[]})},Fn=(e,t,n,r,i,a)=>{var o=An(t,n);i=q(r,i),V([],[e],e=>{e=e[0];var n=`constructor ${e.name}`;if(e.registeredClass.constructor_body===void 0&&(e.registeredClass.constructor_body=[]),e.registeredClass.constructor_body[t-1]!==void 0)throw new Ft(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{J(`Cannot construct ${e.name} due to unbound types`,o)},V([],o,r=>(r.splice(1,0,null),e.registeredClass.constructor_body[t-1]=kn(n,r,null,i,a),[])),[]})},In=(e,t,n,r,i,a,o,s,c,l)=>{var u=An(n,r);t=H(t),t=jn(t),a=q(i,a),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(t);function i(){J(`Cannot call ${r} due to unbound types`,u)}var l=e.registeredClass.instancePrototype,d=l[t];return d===void 0||d.overloadTable===void 0&&d.className!==e.name&&d.argCount===n-2?(i.argCount=n-2,i.className=e.name,l[t]=i):(an(l,t,r),l[t].overloadTable[n-2]=i),V([],u,i=>{var s=kn(r,i,e,a,o,c);return l[t].overloadTable===void 0?(s.argCount=n-2,l[t]=s):l[t].overloadTable[n-2]=s,[]}),[]})},Ln=(e,t,n,r,i,a,o,s,c,l)=>{t=H(t),i=q(r,i),V([],[e],e=>{e=e[0];var r=`${e.name}.${t}`,u={get(){J(`Cannot access ${r} due to unbound types`,[n,o])},enumerable:!0,configurable:!0};return c?u.set=()=>J(`Cannot access ${r} due to unbound types`,[n,o]):u.set=e=>U(r+` is a read-only property`),Object.defineProperty(e.registeredClass.instancePrototype,t,u),V([],c?[n,o]:[n],n=>{var o=n[0],u={get(){var t=Nn(this,e,r+` getter`);return o.fromWireType(i(a,t))},enumerable:!0};if(c){c=q(s,c);var d=n[1];u.set=function(t){var n=Nn(this,e,r+` setter`),i=[];c(l,n,d.toWireType(i,t)),wt(i)}}return Object.defineProperty(e.registeredClass.instancePrototype,t,u),[]}),[]})},Rn=(e,t,n)=>{e=H(e),V([],[t],t=>(t=t[0],r[e]=t.fromWireType(n),[]))},zn=[],Y=[],Bn=e=>{e>9&&--Y[e+1]===0&&(Y[e]=void 0,zn.push(e))},Vn=()=>Y.length/2-5-zn.length,Hn=()=>{Y.push(0,1,void 0,1,null,1,!0,1,!1,1),r.count_emval_handles=Vn},X={toValue:e=>(e||U(`Cannot use deleted val. handle = `+e),Y[e]),toHandle:e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let t=zn.pop()||Y.length;return Y[t]=e,Y[t+1]=1,t}}}},Un={name:`emscripten::val`,fromWireType:e=>{var t=X.toValue(e);return Bn(e),t},toWireType:(e,t)=>X.toHandle(t),argPackAdvance:G,readValueFromPointer:Tt,destructorFunction:null},Wn=e=>W(e,Un),Gn=(e,t,n)=>{switch(t){case 1:return n?function(e){return this.fromWireType(C[e])}:function(e){return this.fromWireType(w[e])};case 2:return n?function(e){return this.fromWireType(T[e>>1])}:function(e){return this.fromWireType(te[e>>1])};case 4:return n?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(D[e>>2])};default:throw TypeError(`invalid integer width (${t}): ${e}`)}},Kn=(e,t,n,r)=>{t=H(t);function i(){}i.values={},W(e,{name:t,constructor:i,fromWireType:function(e){return this.constructor.values[e]},toWireType:(e,t)=>t.value,argPackAdvance:G,readValueFromPointer:Gn(t,n,r),destructorFunction:null}),on(t,i)},qn=(e,t)=>{var n=Dt[e];return n===void 0&&U(`${t} has unknown type ${wn(e)}`),n},Jn=(e,t,n)=>{var r=qn(e,`enum`);t=H(t);var i=r.constructor,a=Object.create(r.constructor.prototype,{value:{value:n},constructor:{value:rn(`${r.name}_${t}`,function(){})}});i.values[n]=a,i[t]=a},Yn=e=>{if(e===null)return`null`;var t=typeof e;return t===`object`||t===`array`||t===`function`?e.toString():``+e},Xn=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(ne[e>>2])};case 8:return function(e){return this.fromWireType(re[e>>3])};default:throw TypeError(`invalid float width (${t}): ${e}`)}},Zn=(e,t,n)=>{t=H(t),W(e,{name:t,fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:G,readValueFromPointer:Xn(t,n),destructorFunction:null})},Qn=(e,t,n,r,i,a,o,s)=>{var c=An(t,n);e=H(e),e=jn(e),i=q(r,i),on(e,function(){J(`Cannot call ${e} due to unbound types`,c)},t-1),V([],c,n=>{var r=[n[0],null].concat(n.slice(1));return _n(e,kn(e,r,null,i,a,o),t-1),[]})},$n=(e,t,n)=>{switch(t){case 1:return n?e=>C[e]:e=>w[e];case 2:return n?e=>T[e>>1]:e=>te[e>>1];case 4:return n?e=>E[e>>2]:e=>D[e>>2];default:throw TypeError(`invalid integer width (${t}): ${e}`)}},er=(e,t,n,r,i)=>{t=H(t),i===-1&&(i=4294967295);var a=e=>e;if(r===0){var o=32-8*n;a=e=>e<>>o}var s=t.includes(`unsigned`);W(e,{name:t,fromWireType:a,toWireType:s?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:G,readValueFromPointer:$n(t,n,r!==0),destructorFunction:null})},tr=(e,t,n)=>{var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function i(e){var t=D[e>>2],n=D[e+4>>2];return new r(C.buffer,n,t)}n=H(n),W(e,{name:n,fromWireType:i,argPackAdvance:G,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},nr=(e,t,n,r,i,a,o,s,c,l,u,d)=>{n=H(n),a=q(i,a),s=q(o,s),l=q(c,l),d=q(u,d),V([e],[t],e=>(e=e[0],[new gn(n,e.registeredClass,!1,!1,!0,e,r,a,s,l,d)]))},rr=(e,t)=>{t=H(t);var n=!0;W(e,{name:t,fromWireType(e){var t=D[e>>2],r=e+4,i;if(n)for(var a=r,o=0;o<=t;++o){var s=r+o;if(o==t||w[s]==0){var c=s-a,l=Ie(a,c);i===void 0?i=l:(i+=`\0`,i+=l),a=s+1}}else{for(var u=Array(t),o=0;o>2]=r,n&&i)_t(t,o,r+1);else if(i)for(var s=0;s255&&(Q(o),U(`String has UTF-16 code units that do not fit in 8 bits`)),w[o+s]=c}else for(var s=0;s{for(var n=e,r=n>>1,i=r+t/2;!(r>=i)&&te[r];)++r;if(n=r<<1,n-e>32&&ir)return ir.decode(w.subarray(e,n));for(var a=``,o=0;!(o>=t/2);++o){var s=T[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},or=(e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,i=n>1]=o,t+=2}return T[t>>1]=0,t-r},sr=e=>e.length*2,cr=(e,t)=>{for(var n=0,r=``;!(n>=t/4);){var i=E[e+n*4>>2];if(i==0)break;if(++n,i>=65536){var a=i-65536;r+=String.fromCharCode(55296|a>>10,56320|a&1023)}else r+=String.fromCharCode(i)}return r},lr=(e,t,n)=>{if(n??=2147483647,n<4)return 0;for(var r=t,i=r+n-4,a=0;a=55296&&o<=57343){var s=e.charCodeAt(++a);o=65536+((o&1023)<<10)|s&1023}if(E[t>>2]=o,t+=4,t+4>i)break}return E[t>>2]=0,t-r},ur=e=>{for(var t=0,n=0;n=55296&&r<=57343&&++n,t+=4}return t},dr=(e,t,n)=>{n=H(n);var r,i,a,o;t===2?(r=ar,i=or,o=sr,a=e=>te[e>>1]):t===4&&(r=cr,i=lr,o=ur,a=e=>D[e>>2]),W(e,{name:n,fromWireType:e=>{for(var n=D[e>>2],i,o=e+4,s=0;s<=n;++s){var c=e+4+s*t;if(s==n||a(c)==0){var l=c-o,u=r(o,l);i===void 0?i=u:(i+=`\0`,i+=u),o=c+t}}return Q(e),i},toWireType:(e,r)=>{typeof r!=`string`&&U(`Cannot pass non-string to C++ string type ${n}`);var a=o(r),s=Si(4+a+t);return D[s>>2]=a/t,i(r,s+4,a+t),e!==null&&e.push(Q,s),s},argPackAdvance:G,readValueFromPointer:Tt,destructorFunction(e){Q(e)}})},fr=(e,t,n,r,i,a)=>{Ct[e]={name:H(t),rawConstructor:q(n,r),rawDestructor:q(i,a),elements:[]}},pr=(e,t,n,r,i,a,o,s,c)=>{Ct[e].elements.push({getterReturnType:t,getter:q(n,r),getterContext:i,setterArgumentType:a,setter:q(o,s),setterContext:c})},mr=(e,t)=>{t=H(t),W(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>void 0,toWireType:(e,t)=>void 0})},hr=(e,t,n)=>w.copyWithin(e,t,t+n),gr=0,_r=()=>{Ne=!1,gr=0},vr=(e,t,n)=>{var r=[],i=e.toWireType(r,n);return r.length&&(D[t>>2]=X.toHandle(r)),i},yr=(e,t,n)=>(e=X.toValue(e),t=qn(t,`emval::as`),vr(t,n,e)),br=[],xr=(e,t,n,r)=>(e=br[e],t=X.toValue(t),e(null,t,n,r)),Sr={},Cr=e=>{var t=Sr[e];return t===void 0?H(e):t},wr=(e,t,n,r,i)=>(e=br[e],t=X.toValue(t),n=Cr(n),e(t,t[n],r,i)),Tr=e=>{var t=br.length;return br.push(e),t},Er=(e,t)=>{for(var n=Array(e),r=0;r>2],`parameter `+r);return n},Dr=(e,t,n)=>{var r=Er(e,t),i=r.shift();e--;var a=`return function (obj, func, destructorsRef, args) { +`,o=0,s=[];n===0&&s.push(`obj`);for(var c=[`retType`],l=[i],u=0;ue.name).join(`, `)}) => ${i.name}>`,d))},Or=(e,t)=>(e=X.toValue(e),t=X.toValue(t),X.toHandle(e[t])),kr=e=>{e>9&&(Y[e+1]+=1)},Ar=()=>X.toHandle([]),jr=e=>{e=X.toValue(e);for(var t=Array(e.length),n=0;nX.toHandle(Cr(e)),Nr=()=>X.toHandle({}),Pr=e=>{wt(X.toValue(e)),Bn(e)},Fr=(e,t,n)=>{e=X.toValue(e),t=X.toValue(t),n=X.toValue(n),e[t]=n},Ir=(e,t)=>{e=qn(e,`_emval_take_value`);var n=e.readValueFromPointer(t);return X.toHandle(n)},Lr=e=>(e=X.toValue(e),X.toHandle(typeof e)),Rr={},zr=e=>{if(e instanceof je||e==`unwind`)return S;f(1,e)},Br=()=>Ne||gr>0,Vr=e=>{S=e,Br()||(r.onExit?.(e),ee=!0),f(e,new je(e))},Hr=(e,t)=>{S=e,Vr(e)},Ur=()=>{if(!Br())try{Hr(S)}catch(e){zr(e)}},Wr=e=>{if(!ee)try{e(),Ur()}catch(e){zr(e)}},Gr=()=>performance.now(),Kr=(e,t)=>(Rr[e]&&(clearTimeout(Rr[e].id),delete Rr[e]),t&&(Rr[e]={id:setTimeout(()=>{delete Rr[e],Wr(()=>Ci(e,Gr()))},t),timeout_ms:t}),0),qr=(e,t,n,r)=>{var i=new Date().getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1),s=a.getTimezoneOffset(),c=o.getTimezoneOffset(),l=Math.max(s,c);D[e>>2]=l*60,E[t>>2]=Number(s!=c);var u=e=>{var t=e>=0?`-`:`+`,n=Math.abs(e);return`UTC${t}${String(Math.floor(n/60)).padStart(2,`0`)}${String(n%60).padStart(2,`0`)}`},d=u(s),f=u(c);c{Jr.length=0;for(var n;n=w[e++];){var r=n!=105;r&=n!=112,t+=r&&t%8?4:0,Jr.push(n==112?D[t>>2]:n==105?E[t>>2]:re[t>>3]),t+=r?8:4}return Jr},Xr=(e,t,n)=>{var r=Yr(t,n);return Ae[e](...r)},Zr=(e,t,n)=>Xr(e,t,n),Qr=()=>2147483648,$r=e=>{var t=(e-x.buffer.byteLength+65535)/65536|0;try{return x.grow(t),ie(),1}catch{}},ei=e=>{var t=w.length;e>>>=0;var n=Qr();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t+33554432/r;if($r(Math.min(n,st(Math.max(e,i),65536))))return!0}return!1},ti={},ni=()=>d||`./this.program`,ri=()=>{if(!ri.strings){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(typeof navigator==`object`&&navigator.languages&&navigator.languages[0]||`C`).replace(`-`,`_`)+`.UTF-8`,_:ni()};for(var t in ti)ti[t]===void 0?delete e[t]:e[t]=ti[t];var n=[];for(var t in e)n.push(`${t}=${e[t]}`);ri.strings=n}return ri.strings},ii=(e,t)=>{for(var n=0;n{var n=0;return ri().forEach((r,i)=>{var a=t+n;D[e+i*4>>2]=a,ii(r,a),n+=r.length+1}),0},oi=(e,t)=>{var n=ri();D[e>>2]=n.length;var r=0;return n.forEach(e=>r+=e.length+1),D[t>>2]=r,0};function si(e){try{var t=B.getStreamFromFD(e);return z.close(t),0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var ci=(e,t,n,r)=>{for(var i=0,a=0;a>2],s=D[t+4>>2];t+=8;var c=z.read(e,C,o,s,r);if(c<0)return-1;if(i+=c,c>2]=i,0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var ui=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+t*4294967296:NaN;function di(e,t,n,r,i){var a=ui(t,n);try{if(isNaN(a))return 61;var o=B.getStreamFromFD(e);return z.llseek(o,a,r),j=[o.position>>>0,(A=o.position,+Math.abs(A)>=1?A>0?Math.floor(A/4294967296)>>>0:~~+Math.ceil((A-+(~~A>>>0))/4294967296)>>>0:0)],E[i>>2]=j[0],E[i+4>>2]=j[1],o.getdents&&a===0&&r===0&&(o.getdents=null),0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var fi=(e,t,n,r)=>{for(var i=0,a=0;a>2],s=D[t+4>>2];t+=8;var c=z.write(e,C,o,s,r);if(c<0)return-1;if(i+=c,c>2]=i,0}catch(e){if(z===void 0||e.name!==`ErrnoError`)throw e;return e.errno}}var mi=e=>e,hi=z.createPath,gi=e=>z.unlink(e),_i=z.createLazyFile,vi=z.createDevice;z.createPreloadedFile=pt,z.staticInit(),r.FS_createPath=z.createPath,r.FS_createDataFile=z.createDataFile,r.FS_createPreloadedFile=z.createPreloadedFile,r.FS_unlink=z.unlink,r.FS_createLazyFile=z.createLazyFile,r.FS_createDevice=z.createDevice,R.doesNotExistError=new z.ErrnoError(44),R.doesNotExistError.stack=``,kt=r.InternalError=class extends Error{constructor(e){super(e),this.name=`InternalError`}},Nt(),Ft=r.BindingError=class extends Error{constructor(e){super(e),this.name=`BindingError`}},tn(),hn(),Cn=r.UnboundTypeError=Sn(Error,`UnboundTypeError`),Hn();var yi={y:P,n:ze,x:Be,a:Ge,f:Ke,Ma:qe,ba:Je,L:I,wa:Ye,d:He,ea:gt,Aa:vt,Fa:yt,fa:bt,za:xt,ua:St,Pa:jt,Xa:Mt,ya:Lt,s:Tn,v:Mn,p:Pn,w:Fn,h:In,F:Ln,R:Rn,Ua:Wn,T:Kn,I:Jn,oa:Zn,B:Qn,O:er,H:tr,q:nr,Za:rr,ca:dr,ma:fr,la:pr,Ha:mr,Ga:hr,sa:_r,X:yr,Ra:xr,ka:wr,Sa:Bn,aa:Dr,Oa:Or,na:kr,D:Ar,Na:jr,Y:Mr,U:Nr,Qa:Pr,Ta:Fr,N:Ir,ja:Lr,ta:Kr,va:qr,$:Zr,xa:ei,Ba:ai,Ca:oi,V:si,Ea:li,Wa:di,Da:pi,Ja:na,S:ia,pa:ha,ia:ta,La:Zi,qa:ma,ha:la,u:Ki,g:Li,Ka:$i,K:Qi,ga:ua,W:aa,b:Vi,i:Ui,o:Bi,da:ga,t:Ji,J:ea,E:sa,G:da,_:_a,Va:ba,l:Yi,j:Gi,Q:Xi,e:zi,Ya:ya,c:Ri,k:Hi,Ia:pa,m:Wi,r:qi,z:oa,A:ca,M:fa,P:ra,Z:va,C:mi,ra:Vr},Z;ke();var bi=()=>(bi=Z.$a)(),xi=e=>(xi=Z.ab)(e),Si=e=>(Si=Z.bb)(e),Q=e=>(Q=Z.db)(e),Ci=(e,t)=>(Ci=Z.eb)(e,t),$=(e,t)=>($=Z.fb)(e,t),wi=e=>(wi=Z.gb)(e),Ti=e=>(Ti=Z.hb)(e),Ei=()=>(Ei=Z.ib)(),Di=e=>(Di=Z.jb)(e),Oi=e=>(Oi=Z.kb)(e),ki=(e,t,n)=>(ki=Z.lb)(e,t,n),Ai=e=>(Ai=Z.mb)(e),ji=r.dynCall_jiji=(e,t,n,i,a)=>(ji=r.dynCall_jiji=Z.nb)(e,t,n,i,a),Mi=r.dynCall_iij=(e,t,n,i)=>(Mi=r.dynCall_iij=Z.ob)(e,t,n,i),Ni=r.dynCall_viijii=(e,t,n,i,a,o,s)=>(Ni=r.dynCall_viijii=Z.pb)(e,t,n,i,a,o,s),Pi=r.dynCall_iiiiij=(e,t,n,i,a,o,s)=>(Pi=r.dynCall_iiiiij=Z.qb)(e,t,n,i,a,o,s),Fi=r.dynCall_iiiiijj=(e,t,n,i,a,o,s,c,l)=>(Fi=r.dynCall_iiiiijj=Z.rb)(e,t,n,i,a,o,s,c,l),Ii=r.dynCall_iiiiiijj=(e,t,n,i,a,o,s,c,l,u)=>(Ii=r.dynCall_iiiiiijj=Z.sb)(e,t,n,i,a,o,s,c,l,u);function Li(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function Ri(e,t,n,r){var i=N();try{K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function zi(e,t,n){var r=N();try{K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Bi(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Vi(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Hi(e,t,n,r,i){var a=N();try{K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Ui(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function Wi(e,t,n,r,i,a){var o=N();try{K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function Gi(e,t){var n=N();try{K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function Ki(e){var t=N();try{return K(e)()}catch(e){if(M(t),e!==e+0)throw e;$(1,0)}}function qi(e,t,n,r,i,a,o){var s=N();try{K(e)(t,n,r,i,a,o)}catch(e){if(M(s),e!==e+0)throw e;$(1,0)}}function Ji(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function Yi(e){var t=N();try{K(e)()}catch(e){if(M(t),e!==e+0)throw e;$(1,0)}}function Xi(e,t,n){var r=N();try{K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function Zi(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function Qi(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function $i(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function ea(e,t,n,r,i,a,o){var s=N();try{return K(e)(t,n,r,i,a,o)}catch(e){if(M(s),e!==e+0)throw e;$(1,0)}}function ta(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function na(e,t){var n=N();try{return K(e)(t)}catch(e){if(M(n),e!==e+0)throw e;$(1,0)}}function ra(e,t,n,r,i,a,o,s,c,l,u){var d=N();try{K(e)(t,n,r,i,a,o,s,c,l,u)}catch(e){if(M(d),e!==e+0)throw e;$(1,0)}}function ia(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function aa(e,t,n,r,i){var a=N();try{return K(e)(t,n,r,i)}catch(e){if(M(a),e!==e+0)throw e;$(1,0)}}function oa(e,t,n,r,i,a,o,s){var c=N();try{K(e)(t,n,r,i,a,o,s)}catch(e){if(M(c),e!==e+0)throw e;$(1,0)}}function sa(e,t,n,r,i,a,o,s){var c=N();try{return K(e)(t,n,r,i,a,o,s)}catch(e){if(M(c),e!==e+0)throw e;$(1,0)}}function ca(e,t,n,r,i,a,o,s,c){var l=N();try{K(e)(t,n,r,i,a,o,s,c)}catch(e){if(M(l),e!==e+0)throw e;$(1,0)}}function la(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function ua(e,t,n,r){var i=N();try{return K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function da(e,t,n,r,i,a,o,s,c){var l=N();try{return K(e)(t,n,r,i,a,o,s,c)}catch(e){if(M(l),e!==e+0)throw e;$(1,0)}}function fa(e,t,n,r,i,a,o,s,c,l){var u=N();try{K(e)(t,n,r,i,a,o,s,c,l)}catch(e){if(M(u),e!==e+0)throw e;$(1,0)}}function pa(e,t,n,r,i,a,o,s,c,l,u){var d=N();try{K(e)(t,n,r,i,a,o,s,c,l,u)}catch(e){if(M(d),e!==e+0)throw e;$(1,0)}}function ma(e,t,n){var r=N();try{return K(e)(t,n)}catch(e){if(M(r),e!==e+0)throw e;$(1,0)}}function ha(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function ga(e,t,n,r,i,a){var o=N();try{return K(e)(t,n,r,i,a)}catch(e){if(M(o),e!==e+0)throw e;$(1,0)}}function _a(e,t,n,r,i,a,o,s,c,l,u,d){var f=N();try{return K(e)(t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(M(f),e!==e+0)throw e;$(1,0)}}function va(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){var g=N();try{K(e)(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)}catch(e){if(M(g),e!==e+0)throw e;$(1,0)}}function ya(e,t,n,r){var i=N();try{K(e)(t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}function ba(e,t,n,r){var i=N();try{return Mi(e,t,n,r)}catch(e){if(M(i),e!==e+0)throw e;$(1,0)}}r.addRunDependency=ge,r.removeRunDependency=_e,r.FS_createPreloadedFile=pt,r.FS_unlink=gi,r.FS_createPath=hi,r.FS_createDevice=vi,r.FS_createDataFile=ut,r.FS_createLazyFile=_i;var xa;me=function e(){xa||Sa(),xa||(me=e)};function Sa(){if(k>0||(ce(),k>0))return;function e(){xa||(xa=!0,r.calledRun=!0,!ee&&(le(),i(r),r.onRuntimeInitialized?.(),ue()))}r.setStatus?(r.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>r.setStatus(``),1),e()},1)):e()}if(r.preInit)for(typeof r.preInit==`function`&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();Sa();var Ca=[];function wa(e){Ca.push(e)}return r.onRuntimeInitialized=function(){for(var e of Ca)e()},(function(){var e,t,n,i,a=`/`,o,s,c=`;`,l=0,u=99999;function d(e){var t={};return e.filter(function(e){return t.hasOwnProperty(e)?!1:t[e]=!0})}function f(e,t,n=i){var r=t.endsWith(n),a=e.startsWith(n);return r||a?r&&a?t.substring(0,t.length-1)+e:t+e:t+n+e}function p(e,t){var n=0;function r(){var o=f(e,t[n++]);return fetch(o).then(function(o){if(o.status===200)return o.text().then(function(e){var t=new URL(o.url),n=t.pathname.substring(1);return n=n.replace(new RegExp(i,`g`),a),{data:e,filePath:n,fullPath:t.origin+t.pathname}});if(n/g),n=[];for(var r of t)n.push(r[1]);return n}function y(e,t){var n;if(o)n=p(e,t);else if(s)n=m(e,t);else throw Error(`Unknown environment!`);return n}function b(e,t,n=!1){n?(t.files||=[],t.files.push(e)):(t.folders||=[],t.folders.splice(0,0,e))}function x(e,t,n,r,i=!0){for(var o=i?e.substring(1,e.lastIndexOf(a)).split(a):e.substring(r.length).split(a),s=r,c=1;c-1?r+1:0);var a=document.createElement(`a`);a.setAttribute(`href`,`data:text/plain;charset=utf-8,`+encodeURIComponent(n)),a.setAttribute(`download`,t),a.style.display=`none`,document.body.appendChild(a),a.click(),document.body.removeChild(a)}}wa(function(){o=typeof window==`object`,s=typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`,o&&(i=`/`),s&&(e=de(),t=de(),n=de(),i=t.sep);function d(e,t,n,o,s=[],c=``){var d=`/readFromXml`+ l++%u,p=h(n);try{z.mkdir(d)}catch{throw Error(`Failed to create folder in WASM FS.`)}var m=[];(!o||o.readXIncludes)&&(m=v(t));var b={files:[],folders:[]},S=ee(d),C=S+`/ChosenToHopefullyNotClashWithAnyOtherFile123`;if(c){var w=i===`\\`?`\\\\`:i;C=c.replace(new RegExp(w,`g`),a),C=f(C,d,a),x(S,null,b,d,!1)}x(C,t,b,d);function T(e,t,n){var r=[Promise.resolve()];for(var o of t){var s=e.slice(),c=n.slice(),l=y(o,c).then(function(e){if(s.includes(e.fullPath))throw Error(`Cycle detected! +`+s.join(` +-> `)+` +-> `+e.fullPath);s.push(e.fullPath);var t=e.fullPath.lastIndexOf(i),n=e.fullPath.substring(0,t>-1?t:0);c.includes(n)||c.splice(0,0,n);var r=v(e.data),o=f(e.filePath,d,a);return b.files.includes(o)||x(o,e.data,b,d),T(s,r,c)});r.push(l)}return Promise.all(r)}return T(s,m,p).then(function(){var t=_(n,d);z.chdir(S);try{var i=r.getEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR);if(i){var a=g(i,d);r.setEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR,a)}r._readFromXmlFile(e,C,t,o),i&&r.setEnviron(r.MATERIALX_SEARCH_PATH_ENV_VAR,i)}catch(e){throw Error(`Failed to read MaterialX files from WASM FS: `+r.getExceptionMessage(e))}try{for(var s of b.files)z.unlink(s);z.chdir(`/`);for(var c of b.folders)z.rmdir(c);z.rmdir(d)}catch{throw Error(`Failed to delete temporary files from WASM FS.`)}})}r.readFromXmlString=function(e,t,n=``,r=null){if(arguments.length<2||arguments.length>4)throw Error(`Function readFromXmlString called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 4!`);return d(e,t,n,r)},r.readFromXmlFile=function(e,t,n=``,r=null){if(arguments.length<2||arguments.length>4)throw Error(`Function readFromXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 4!`);return y(t,h(n)).then(function(t){var a=[t.fullPath],o=t.fullPath.lastIndexOf(i),s=t.fullPath.substring(0,o>-1?o:0);return n=n.concat(c,s),d(e,t.data,n,r,a,t.filePath)})},r.writeToXmlFile=function(e,t,n=null){if(arguments.length<2||arguments.length>3)throw Error(`Function writeToXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 3!`);S(t,r.writeToXmlString(e,n))},r.exportToXmlFile=function(e,t,n=null){if(arguments.length<2||arguments.length>3)throw Error(`Function exportToXmlFile called with an invalid number of arguments (`+arguments.length+`) - expects 2 to 3!`);S(t,r.exportToXmlString(e,n))}})})(),n=o,n})})();typeof exports==`object`&&typeof module==`object`?(module.exports=fe,module.exports.default=fe):typeof define==`function`&&define.amd&&define([],()=>fe);function pe(e){let t=new URLSearchParams(window.location.search).get(e);return t==null||t===`0`||t===`false`?!1:t===``?!0:t}var O=pe(`debugmaterialx`),k=O===`update`,me=0;function he(){return me}var ge=0;function _e(){return ge}var ve=window.performance||window.webkitPerformance||window.mozPerformance;function ye(){me=ve.now()/1e3,ge++,window.requestAnimationFrame(ye)}window.requestAnimationFrame(ye);async function be(){return typeof requestIdleCallback<`u`?new Promise(e=>requestIdleCallback(e)):(console.debug(`[MaterialX] Can not wait for network idle, using fallback`),new Promise(e=>setTimeout(e,100)))}function xe(){return window.location.hostname===`localhost`||/^\d{1,3}(\.\d{1,3}){3}$/.test(window.location.hostname)}var Se=pe(`debugmaterialx`),Ce=new v;Ce.needsUpdate=!0,Ce.image=new Image,Ce.image.src=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAANQTFRFr6+vGqg52AAAAAxJREFUeJxjZGBEgQAAWAAJLpjsTQAAAABJRU5ErkJggg==`;function we(e,t,n=0,r=1024,i=512,l){let f;f=l||(t.image?t.image.height/4:256);let p=Math.log2(f)-2,m=f,h=3*Math.max(2**p,112),_=new a(r,i,{format:u,type:w,minFilter:c,magFilter:o,generateMipmaps:!0,wrapS:s,anisotropy:e.capabilities.getMaxAnisotropy()}),v=new D(2,2),y=new ee(-1,1,1,-1,0,1),b=new E({defines:{USE_ENVMAP:``,ENVMAP_TYPE_CUBE_UV:``,CUBEUV_TEXEL_WIDTH:1/h,CUBEUV_TEXEL_HEIGHT:1/m,CUBEUV_MAX_MIP:p+0+`.0`},uniforms:{envMap:{value:t},roughness:{value:n}},vertexShader:` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = vec4(position.xy, 0.0, 1.0); + } + `,fragmentShader:` + uniform sampler2D envMap; + uniform float roughness; + varying vec2 vUv; + + #include + #include + + void main() { + // Convert UV coordinates to equirectangular direction + vec2 uv = vUv; + + // Map UV (0,1) to spherical coordinates + // Longitude: -π to π, Latitude: 0 to π + float phi = uv.x * 2.0 * PI - PI; // Longitude (-π to π) + float theta = uv.y * PI; // Latitude (0 to π) + // Rotate 90° around Y + phi -= PI / 2.0; // Adjust to match Three.js convention + + // Convert spherical to cartesian coordinates + vec3 direction = vec3( + sin(theta) * cos(phi), // x + cos(theta), // y + sin(theta) * sin(phi) // z + ); + + // Sample the PMREM cube texture using the direction and roughness + #ifdef ENVMAP_TYPE_CUBE_UV + vec4 envColor = textureCubeUV(envMap, direction, roughness); + #else + vec4 envColor = vec4(1.0, 0.0, 1.0, 1.0); // Magenta fallback + #endif + + gl_FragColor = vec4(envColor.rgb, 1.0); + } + `}),x=new d,S=new g(v,b);x.add(S);let C=e.getRenderTarget(),T=e.autoClear,te=e.xr.enabled,ne=e.shadowMap.enabled;_.texture.generateMipmaps=!0;try{e.xr.enabled=!1,e.shadowMap.enabled=!1,e.autoClear=!0,e.setRenderTarget(_),e.clear(),e.render(x,y)}finally{e.setRenderTarget(C),e.autoClear=T,e.xr.enabled=te,e.shadowMap.enabled=ne,v.dispose(),b.dispose(),x.remove(S)}return _.texture.name=`PMREM_Equirectangular_Texture_`+n.toFixed(2),_.texture.mapping=303,Se&&console.log(`[MaterialX] PMREM to Equirect Render Target:`,{width:_.width,height:_.height,mipmaps:_.texture.mipmaps?.length,roughness:n}),_}var Te=`_`,Ee=Te+`uaddressmode`,De=Te+`vaddressmode`,Oe=Te+`filtertype`,ke=`/`;function A(e,t){let n;if(e)n=[...e.data()];else{n=[];for(let e=0;e{e?s.value=e:console.warn(`[MaterialX] Failed to load texture ${i} '${c}'`)}):s.value=u;else{O&&console.log(`[MaterialX] Load texture:`,c),i.toLowerCase().includes(`normal`)?s.value=je:s.value=Ae;let n=s.value,o=a.getTexture(c)?.then(t=>(t&&(t=t.clone(),t.colorSpace=r,Fe(t,i,e)),t)).catch(e=>(console.error(`[MaterialX] Failed to load texture ${i} '${c}'`,e),n));t&&Ne(l,o),o?.then(e=>{t&&e&&Ne(l,e),e?s.value=e:console.warn(`[MaterialX] Failed to load texture ${i} '${c}'`)})}}break;case`samplerCube`:case`string`:case`surfaceshader`:case`displacementshader`:case`volumeshader`:case`lightshader`:break;default:let c=t+`:`+i;N.has(c)||(N.set(c,!0),(O||xe())&&console.warn(`MaterialX: Unsupported uniform '${i}': ${t}`));break}return s}var N=new Map;function Pe(e){let t;switch(e){case 1:t=l;break;case 2:t=s;break;case 3:t=_;break;default:t=s;break}return t}function Fe(e,t,n,r=!0){let i=t.lastIndexOf(Te),a=t.substring(0,i)||t;n.find(a+Ee)&&(e.wrapS=Pe(n.find(a+Ee).getValue().getData())),n.find(a+De)&&(e.wrapT=Pe(n.find(a+De).getValue().getData()));let s=n.find(a+Oe)?n.get(a+Oe).value:-1,l=r?c:o;s===0&&(l=r?T:C),e.minFilter=l}function Ie(e){let t=[];for(let n of e.getNodes())n.getType()===`lightshader`&&t.push(n);return t}var P={};function Le(){return{directional:P.ND_directional_light||1,point:P.ND_point_light||2,spot:P.ND_spot_light||3}}async function Re(e,t){P={};let n=t.getOptions().hwMaxActiveLightSources;e.HwShaderGenerator.unbindLightShaders(t);let r=1,i=e.createDocument();await e.readFromXmlString(i,` + + + + + + + + +`,``);let a=e.createDocument(),o=e.loadStandardLibraries(t);a.setDataLibrary(o),a.importLibrary(i);let s=Ie(a);O&&console.log(`Default lights in MaterialX document`,s),t.getOptions().hwMaxActiveLightSources=n;for(let n of s){let i=n.getNodeDef();if(O&&console.log(`Default light node definition`,i),!i)continue;let a=i.getName();O&&console.log(`Registering default light`,{lightName:a,lightDef:i}),P[a]||(O&&console.log(`Bind light shader for node`,{lightName:a,lightId:r,lightDef:i}),P[a]=r,e.HwShaderGenerator.bindLightShader(i,r++,t))}O&&console.log(`Light types bound in MaterialX context`,P)}var ze={},F=new n(0,0,0),Be=new n(0,0,-1),Ve=new t(0,0,0),He=Object.freeze({type:0,position:F,direction:Be,color:Ve,intensity:0,decay_rate:2,inner_angle:0,outer_angle:0});function Ue(e){switch(e){case`PointLight`:return`ND_point_light`;case`DirectionalLight`:return`ND_directional_light`;case`SpotLight`:return`ND_spot_light`;default:return ze[e]||(ze[e]=!0,console.warn(`MaterialX: Unsupported light type: `+e)),null}}function We(e,t){let r=[],i=t.getOptions().hwMaxActiveLightSources;for(let t of e){if(!t?.isLight)continue;let e=Ue(t.type);if(!e)continue;P[e]||O&&console.error(`MaterialX: Light type not registered in context. Make sure to register light types before using them.`,e);let i=t.getWorldPosition(new n),a,o=t.isDirectionalLight||t.isSpotLight?t:null;if(o)a=o.target.getWorldPosition(new n).sub(i).normalize();else{let e=t.getWorldQuaternion(new ne);a=new n(0,0,-1).applyQuaternion(e)}let s=t.angle,c=s*(1-t.penumbra),l=Math.cos(c),u=Math.cos(s);r.push({type:P[e],position:i.clone(),direction:a.clone(),color:t.color.clone(),intensity:t.intensity*(t.isPointLight||t.isSpotLight?683/3.1415:1),decay_rate:2,inner_angle:l,outer_angle:u})}let a=r.length;for(;r.length=0.160.0`},scripts:{test:`node --import=./tests/unit/register-json-loader.js --test tests/unit/**/*.test.js`},devDependencies:{"@needle-tools/engine":`4.x`,"@types/three":`0.169.0`,dotenv:`^17.2.4`,jsdom:`^29.0.1`,three:`npm:@needle-tools/three@^0.169.5`},files:[`index.js`,`index.d.ts`,`needle.js`,`needle.d.ts`,`src/`,`bin/`,`codegen/`,`README.md`,`CHANGELOG.md`,`package.needle.json`],publishConfig:{access:`public`,registry:`https://registry.npmjs.org/`},keywords:[`needle`,`materialx`,`material`,`shader`,`threejs`,`three.js`,`webgl`,`webgpu`,`mtlx`,`rendering`,`gltf`,`pbr`,`3d`,`wasm`]}.version;async function Je(e){if(e===`immediately`)return Ye();if(e===`network_idle`)return be().then(Ye)}var I=new class{materialXModule=null;materialXGenerator=null;materialXGenContext=null;materialXStdLib=null;materialXInitPromise=null};async function Ye(){return I.materialXInitPromise?I.materialXInitPromise:I.materialXInitPromise=(async()=>{if(!I.materialXModule){O&&console.log(`[MaterialX v${qe}] Initializing WASM module...`);try{let e=`https://cdn.needle.tools/static/materialx/1.6.0/`,t,n=globalThis.NEEDLE_MATERIALX_LOCATION;t=n===`package`||n===`bin/`||n===`./bin/`||n===`../bin/`?await Promise.all([se(()=>import(`./JsMaterialXCore.DGnKx6GJ.js`).then(e=>e.default||e),[],import.meta.url),se(()=>import(`./JsMaterialXGenShader.DFP9U7Gu.js`).then(e=>e.default||e),[],import.meta.url),se(()=>import(`./JsMaterialXGenShader.data.vJnq-SJK.js`).then(e=>e.default||e),[],import.meta.url)]):n?[n+`JsMaterialXCore.wasm`,n+`JsMaterialXGenShader.wasm`,n+`JsMaterialXGenShader.data.txt`]:[e+`JsMaterialXCore.wasm`,e+`JsMaterialXGenShader.wasm`,e+`JsMaterialXGenShader.data.txt`];let[r,i,a]=t,o=await fe({locateFile:(e,t)=>(O&&console.debug(`[MaterialX] locateFile called:`,{path:e,scriptDirectory:t}),e.includes(`JsMaterialXCore.wasm`)?r:e.includes(`JsMaterialXGenShader.wasm`)?i:e.includes(`JsMaterialXGenShader.data`)?a:t+e)});O&&console.log(`[MaterialX] module loaded`,o),I.materialXModule=o,I.materialXGenerator=o.EsslShaderGenerator.create(),I.materialXGenContext=new o.GenContext(I.materialXGenerator);let s=o.createDocument();I.materialXStdLib=o.loadStandardLibraries(I.materialXGenContext),s.setDataLibrary(I.materialXStdLib),I.materialXGenContext.getOptions().shaderInterfaceType=I.materialXModule.ShaderInterfaceType.SHADER_INTERFACE_COMPLETE,I.materialXGenContext.getOptions().hwSpecularEnvironmentMethod=I.materialXModule.HwSpecularEnvironmentMethod.SPECULAR_ENVIRONMENT_FIS,I.materialXGenContext.getOptions().hwSrgbEncodeOutput=!1,I.materialXGenContext.getOptions().hwMaxActiveLightSources=4,await Re(I.materialXModule,I.materialXGenContext),O&&console.log(`[MaterialX v${qe}] Generator initialized successfully`)}catch(e){throw console.error(`[MaterialX v${qe}] Failed to load MaterialX module:`,e),e}}})()}var Xe=class e{static get(e){return this.getEnvironment(e)}static _environments=new WeakMap;static getEnvironment(t){if(this._environments.has(t))return this._environments.get(t);let n=new e(t);return this._environments.set(t,n),n}_lights=[];_lightData=null;_lightCount=0;_initializePromise=null;_isInitialized=!1;_lastUpdateFrame=-1;constructor(e){this._scene=e,O&&console.log(`[MaterialX] Environment created`)}async initialize(e){return this._initializePromise||=this._initialize(e),this._initializePromise}update(e,t,n){if(!this._initializePromise){this.initialize(n);return}if(this._isInitialized&&this._lastUpdateFrame!==e&&(this._lastUpdateFrame=e,this.updateLighting(!1),O&&!this._debug)){let e=this._getTextures(t.environment);this._debug=!0;let n=new f;n.side=2;let r=n.clone();r.map=e.radianceTexture;let i=new D(1,1,1,1),a=new g(i,r),o=n.clone();o.map=e.irradianceTexture;let s=new g(i,o);t.add(a),t.add(s),a.name=`MaterialXRadianceCube`,a.position.set(.8,1,.01),a.scale.set(1.5,1,1),s.name=`MaterialXIrradianceCube`,s.position.set(-.8,1,-.01),s.scale.set(1.5,.98,1),console.log(`[MaterialX] environment initialized from Needle context`,{textures:e,radianceCube:a,irradianceCube:s})}}reset(){O&&console.log(`[MaterialX] Resetting environment`),this._initializePromise=null,this._isInitialized=!1,this._lastUpdateFrame=-1,this._lights=[],this._lightData=null,this._lightCount=0,this._pmremGenerator?.dispose(),this._pmremGenerator=null,this._renderer=null;for(let e of this._texturesCache.values())e.radianceTexture?.dispose(),e.irradianceTexture?.dispose();this._texturesCache.clear()}get lights(){return this._lights}get lightData(){return this._lightData}get lightCount(){return this._lightCount||0}getTextures(e){if(e.envMap)return this._getTextures(e.envMap);let t=this._scene.environment||this._scene.background;return t instanceof v?this._getTextures(t):this._getTextures(null)}_pmremGenerator=null;_renderer=null;_texturesCache=new Map;async _initialize(e){return this._isInitialized=!1,this._pmremGenerator=new y(e),this._renderer=e,this.updateLighting(!0),this._isInitialized=!0,!0}_getTextures(e){e||=Ce;let t=this._texturesCache.get(e||null);if(t)return t;if(this._scene&&this._pmremGenerator&&this._renderer&&e){O&&console.log(`[MaterialX] Generating environment textures`,e.name);let n=this._pmremGenerator.fromEquirectangular(e),r=we(this._renderer,n.texture,0,1024,512,n.height),i=we(this._renderer,n.texture,1,32,16,n.height);n.dispose(),t={radianceTexture:r.texture,irradianceTexture:i.texture}}else t={radianceTexture:null,irradianceTexture:null};return this._texturesCache.set(e||null,t),t}updateLighting=(e=!1)=>{if(this._scene){if(e){let e=[];this._scene.traverse(t=>{t.isLight&&t.visible&&e.push(t)}),e.sort((e,t)=>!!t.castShadow-+!!e.castShadow),this._lights=e}if(I.materialXGenContext){let{lightData:e,lightCount:t}=We(this._lights,I.materialXGenContext);this._lightData=e,this._lightCount=t}}};refreshLights(){this.updateLighting(!0)}},Ze=new h,L=class extends E{shaderName=null;copy(e){return super.copy(e),this.shaderName=e.shaderName,this._context=e._context,this._shader=e._shader,this._needsTangents=e._needsTangents,this.uniforms=te(e.uniforms),this.uniformsGroups=S(e.uniformsGroups),this.envMapIntensity=e.envMapIntensity,this.envMap=e.envMap,Ke(this,this._shader.getStage(`pixel`)),Ke(this,this._shader.getStage(`vertex`)),this.needsUpdate=!0,this}_context=null;_shader=null;_needsTangents=!1;constructor(e){let t,r=``,i=``,a={};if(e){r=e.shader.getSourceCode(`vertex`),i=e.shader.getSourceCode(`pixel`),r=r.replace(/^#version.*$/gm,``).trim(),i=i.replace(/^#version.*$/gm,``).trim(),r=r.replace(/\bi_position\b/g,`position`),r=r.replace(/\bi_normal\b/g,`normal`),r=r.replace(/\bi_texcoord_0\b/g,`uv`),r=r.replace(/\bi_texcoord_1\b/g,`uv1`),r=r.replace(/\bi_texcoord_2\b/g,`uv2`),r=r.replace(/\bi_texcoord_3\b/g,`uv3`),r=r.replace(/\bi_tangent\b/g,`tangent`),r=r.replace(/\bi_color_0\b/g,`color`);let n=e.parameters?.precision||`highp`;r=r.replace(/precision mediump float;/g,`precision ${n} float;`),r=r.replace(/#define M_FLOAT_EPS 1e-8/g,n===`highp`?`#define M_FLOAT_EPS 1e-8`:`#define M_FLOAT_EPS 1e-3`),i=i.replace(/precision mediump float;/g,`precision ${n} float;`),i=i.replace(/#define M_FLOAT_EPS 1e-8/g,n===`highp`?`#define M_FLOAT_EPS 1e-8`:`#define M_FLOAT_EPS 1e-3`),i=i.replace(/\bi_position\b/g,`position`),i=i.replace(/\bi_normal\b/g,`normal`),i=i.replace(/\bi_texcoord_0\b/g,`uv`),i=i.replace(/\bi_texcoord_1\b/g,`uv1`),i=i.replace(/\bi_texcoord_2\b/g,`uv2`),i=i.replace(/\bi_texcoord_3\b/g,`uv3`),i=i.replace(/\bi_tangent\b/g,`tangent`),i=i.replace(/\bi_color_0\b/g,`color`),i=i.replace(/\bu_envLightIntensity\b/g,`envMapIntensity`),r.includes(`in vec2 uv;`),r.includes(`in vec2 uv1;`),r.includes(`in vec2 uv2;`),r.includes(`in vec2 uv3;`),r=r.replace(/in\s+vec3\s+position;/g,``),r=r.replace(/in\s+vec3\s+normal;/g,``),r=r.replace(/in\s+vec2\s+uv;/g,``),r=r.replace(/in\s+vec3\s+uv;/g,``);var o=r.includes(`in vec3 uv1;`);r=r.replace(/in\s+vec3\s+uv1;/g,``);var s=r.includes(`in vec3 uv2;`);r=r.replace(/in\s+vec3\s+uv2;/g,``);var c=r.includes(`in vec3 uv3;`);r=r.replace(/in\s+vec3\s+uv3;/g,``);var l=r.includes(`in vec4 tangent;`);r=r.replace(/in\s+vec4\s+tangent;/g,``);var u=r.includes(`in vec4 color;`);r=r.replace(/in\s+vec4\s+color;/g,``),u&&(r=r.replace(/\bvec4 (\w+) = color;/g,`vec4 $1 = vec4(color, 1.0);`),r=r.replace(/(\w+) = color;/g,(e,t)=>e.includes(`vec4`)?e:RegExp(`\\bvec4\\s+${t}\\b`).test(r)?`${t} = vec4(color, 1.0);`:e));function d(e,t){return e=e.replace(RegExp(`vec3\\(${t}\\.x,\\s*1\\.0 - ${t}\\.y,\\s*${t}\\.z\\)`,`g`),`vec3(${t}.x, 1.0 - ${t}.y, 0.0)`),e=e.replace(RegExp(`\\bvec3 (\\w+) = ${t};`,`g`),`vec3 $1 = vec3(${t}, 0.0);`),e=e.replace(RegExp(`(\\w+) = ${t};`,`g`),(n,r)=>n.includes(`vec3`)?n:RegExp(`\\bvec3\\s+${r}\\b`).test(e)?`${r} = vec3(${t}, 0.0);`:n),e}if(r=d(r,`uv`),r=d(r,`uv1`),r=d(r,`uv2`),r=d(r,`uv3`),i=i.replace(/result\.direction\s*=\s*light\.position\s*-\s*position;/g,`result.direction = (light.position - position) * 10.0 / 1.0;`),i=i.replace(/out\s+vec4\s+out1;/,`layout(location = 0) out vec4 pc_fragColor; +#define gl_FragColor pc_fragColor`),i=i.replace(/^\s*out1\s*=\s*vec4\((.*)\);/gm,` + gl_FragColor = vec4($1); + #include + #include `),a={},o&&(a.USE_UV1=``),s&&(a.USE_UV2=``),c&&(a.USE_UV3=``),l&&(a.USE_TANGENT=``),u&&(a.USE_COLOR=``),r.includes(`u_worldInverseTransposeMatrix`)){r=r.replace(/void\s+main\s*\(\s*\)\s*\{/,`#include +#include +void main() {`),r=r.replace(/(\n\s*)\}(\s*)$/,`$1 // Three.js shadow support +$1 vec4 worldPosition = u_worldMatrix * vec4(position, 1.0); +$1 vec3 transformedNormal = normalize(mat3(viewMatrix) * mat3(u_worldInverseTransposeMatrix) * normal); +$1 #include +$1}$2`),i=i.replace(/(precision\s+\w+\s+float;)/,`$1 + +#include +#include +#include `);let e=Le(),t=``;for(let e=0;e<4;e++)t+=` + #if NUM_DIR_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + DirectionalLightShadow s = directionalLightShadows[${e}]; + return getShadow(directionalShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vDirectionalShadowCoord[${e}]); + } + #endif`;let n=``;for(let e=0;e<4;e++)n+=` + #if NUM_SPOT_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + SpotLightShadow s = spotLightShadows[${e}]; + return getShadow(spotShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vSpotLightCoord[${e}]); + } + #endif`;let a=``;for(let e=0;e<4;e++)a+=` + #if NUM_POINT_LIGHT_SHADOWS > ${e} + ${e>0?`else `:``}if (idx == ${e}) { + PointLightShadow s = pointLightShadows[${e}]; + return getPointShadow(pointShadowMap[${e}], s.shadowMapSize, s.shadowIntensity, s.shadowBias, s.shadowRadius, vPointShadowCoord[${e}], s.shadowCameraNear, s.shadowCameraFar); + } + #endif`;i=i.replace(/void sampleLightSource\(LightData light, vec3 position, out lightshader result\)/,`// MaterialX light type IDs (from registerLights) +#define MX_LIGHT_TYPE_DIRECTIONAL ${e.directional} +#define MX_LIGHT_TYPE_POINT ${e.point} +#define MX_LIGHT_TYPE_SPOT ${e.spot} + +// Per-type shadow index counters (global so they persist across sampleLightSource calls) +int mxDirShadowIdx = 0; +int mxSpotShadowIdx = 0; +int mxPointShadowIdx = 0; + +// Shadow sampling helpers using constant indices (required for sampler arrays in GLSL ES 3.0) +float sampleMxDirShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + ${t} + #endif + #endif + return 1.0; +} + +float sampleMxSpotShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_SPOT_LIGHT_SHADOWS > 0 + ${n} + #endif + #endif + return 1.0; +} + +float sampleMxPointShadow(int idx) { + #ifdef USE_SHADOWMAP + #if NUM_POINT_LIGHT_SHADOWS > 0 + ${a} + #endif + #endif + return 1.0; +} + +void sampleLightSource(LightData light, vec3 position, out lightshader result)`),i=i.replace(/(void sampleLightSource\(LightData light, vec3 position, out lightshader result\)\s*\{[\s\S]*?)(^\})/m,`$1 // Apply Three.js shadow and increment per-type shadow counters + if (light.type == MX_LIGHT_TYPE_DIRECTIONAL) { + result.intensity *= sampleMxDirShadow(mxDirShadowIdx); + mxDirShadowIdx++; + } else if (light.type == MX_LIGHT_TYPE_SPOT) { + result.intensity *= sampleMxSpotShadow(mxSpotShadowIdx); + mxSpotShadowIdx++; + } else if (light.type == MX_LIGHT_TYPE_POINT) { + result.intensity *= sampleMxPointShadow(mxPointShadowIdx); + mxPointShadowIdx++; + } +$2`)}let f=e.parameters?.transparent??!1;t={name:e.name,uniforms:{},vertexShader:r,fragmentShader:i,glslVersion:x,depthTest:!0,depthWrite:!f,defines:a,lights:!0,...e.parameters}}super(t),e&&(this.shaderName=e.shaderName||null,this._context=e.context,this._shader=e.shader,this._needsTangents=r.includes(`in vec4 tangent;`)||r.includes(`in vec3 tangent;`),Object.assign(this.uniforms,{...p.lights,...Ge(e.shader.getStage(`vertex`),e.loaders,``),...Ge(e.shader.getStage(`pixel`),e.loaders,``),u_worldMatrix:{value:new m},u_viewProjectionMatrix:{value:new m},u_viewPosition:{value:new n},u_worldInverseTransposeMatrix:{value:new m},u_envMatrix:{value:new m},u_envRadiance:{value:null,type:`t`},u_envRadianceMips:{value:8,type:`i`},u_envRadianceSamples:{value:8,type:`i`},u_envIrradiance:{value:null,type:`t`},envMapIntensity:{value:1},u_refractionEnv:{value:!0},u_numActiveLightSources:{value:0},u_lightData:{value:[],needsUpdate:!1}}),Ke(this,e.shader.getStage(`pixel`)),Ke(this,e.shader.getStage(`vertex`)),(O||e.debug)&&(console.group(`[MaterialX]: `,this.name),console.log(`Vertex shader length: ${r.length}\n`,r),console.log(`Fragment shader length: ${i.length}\n`,i),console.groupEnd()))}_missingTangentsWarned=!1;onBeforeRender(e,t,n,r,i,a){this._needsTangents&&!r.attributes.tangent&&(this._missingTangentsWarned||(this._missingTangentsWarned=!0,console.warn(`[MaterialX] Tangents are required for this material (${this.name}) but not present in the geometry.`)));let o=this._context?.getTime?.()||he(),s=this._context?.getFrame?.()||_e(),c=Xe.get(t);c&&(c.update(s,t,e),this.updateEnvironmentUniforms(c,t)),this.updateUniforms(e,i,n,o,s)}envMapIntensity=1;envMap=null;updateUniforms=(e,t,n,r,i)=>{let a=this.uniforms;a.u_worldMatrix&&(a.u_worldMatrix.value.copy(t.matrixWorld),a.u_worldMatrix.needsUpdate=!0),a.u_viewPosition&&(a.u_viewPosition.value.setFromMatrixPosition(n.matrixWorld),a.u_viewPosition.needsUpdate=!0),a.u_viewProjectionMatrix&&(a.u_viewProjectionMatrix.value.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),a.u_viewProjectionMatrix.needsUpdate=!0),a.u_worldInverseTransposeMatrix&&(a.u_worldInverseTransposeMatrix.value.setFromMatrix3(Ze.getNormalMatrix(t.matrixWorld)),a.u_worldInverseTransposeMatrix.needsUpdate=!0),a.u_time&&(r===void 0&&(r=he()),a.u_time.value=r),a.u_frame&&(i===void 0&&(i=_e()),a.u_frame.value=i),this.uniformsNeedUpdate=!0};updateEnvironmentUniforms=(e,t)=>{let n=this.uniforms,r=e.lightData||null,i=e.lightCount||0,a=e.getTextures(this)||null;if(n.u_numActiveLightSources&&i>=0&&(n.u_numActiveLightSources.value=i),r?.length&&(n.u_lightData.value=r,`needsUpdate`in n.u_lightData&&n.u_lightData.needsUpdate===!1&&(O&&console.debug(`[MaterialX] LightData assigned (${this.name}, ${this.uuid})`,r),n.u_lightData.needsUpdate=void 0)),n.u_envRadiance){let e=n.u_envRadiance.value;n.u_envRadiance.value=a.radianceTexture,e!=a.radianceTexture&&(n.u_envRadiance.needsUpdate=!0)}if(n.u_envRadianceMips&&(n.u_envRadianceMips.value=Math.trunc(Math.log2(Math.max(a.radianceTexture?.source.data.width??0,a.radianceTexture?.source.data.height??0)))+1),n.u_envIrradiance){let e=n.u_envIrradiance.value;n.u_envIrradiance.value=a.irradianceTexture,e!=a.irradianceTexture&&(n.u_envIrradiance.needsUpdate=!0)}n.envMapIntensity&&(n.envMapIntensity.value=(this.envMapIntensity??1)*(t.environmentIntensity??1)),this.uniformsNeedUpdate=!0}},Qe=class{name=`NEEDLE_materials_mtlx`;_generatedMaterials=[];_documentReadyPromise=null;get materialX_root_data(){let e=this.parser.json.extensions?.[this.name];if(!e)return null;let t=null;return t=`documents`in e&&Array.isArray(e.documents)?e.documents:[e],t}get materials(){return this._generatedMaterials}constructor(e,t,n){this.parser=e,this.options=t,this.context=n,O&&console.log(`MaterialXLoader created for parser`),this.materialX_root_data&&Ye()}loadMaterial(e){return(this.parser.json.materials?.[e])?.extensions?.[this.name]?this._loadMaterialAsync(e):null}async _loadMaterialAsync(e){let t=this.parser.json.materials?.[e],n=t.extensions?.[this.name],r=n.document||0,i=this.materialX_root_data?.[r],a=i.mtlx||null;if(O&&console.debug(`[MaterialX] extension found in material[${e}]:`,t.extensions?.[this.name],` +→ MTLX root data:`,i),n&&a){let e={...this.options};return e.parameters||={},e.parameters?.side===void 0&&t.doubleSided!==void 0&&(e.parameters.side=t.doubleSided?2:0),tt(a,n.name,{cacheKey:this.options.cacheKey||``,getTexture:async e=>{let t=e.split(`/`).pop()?.split(`.`).shift()||``;if(i){let e=i.textures||[],n=-1;for(let r of e)if(r.name===t){let e=r.pointer,i=e.substring(10);if(n=parseInt(i),isNaN(n)||n<0){console.error(`[MaterialX] Invalid texture index in pointer:`,e);return}else O&&console.log(`[MaterialX] Texture index found:`,n,`for`,t)}if(n<0){console.error(`[MaterialX] Texture not found in parser:`,t,this.parser.json);return}return this.parser.getDependency(`texture`,n)}return null}},e,this.context).then(e=>(e instanceof L&&this._generatedMaterials.push(e),e))}let o=new b;return o.name=`MaterialX_Fallback`,o}};function $e(e,t,n){e.register(e=>new Qe(e,t||{},n||{}))}async function et(e){if(await Ye(),!I.materialXModule)throw Error(`[MaterialX] module failed to initialize`);let t=I.materialXModule.createDocument();return t.setDataLibrary(I.materialXStdLib),await I.materialXModule.readFromXmlString(t,e,``),O&&console.log(`[MaterialX] root document parsed successfully`),t}async function tt(e,t,n,r,i){try{O&&console.log(`Creating MaterialX material: ${t}`);let a=await et(e);if(!I.materialXModule||!I.materialXGenerator||!I.materialXGenContext){console.warn(`[MaterialX] WASM module not ready, returning fallback material`);let e=new b;return e.name=`MaterialX_Fallback_${t}`,e}let o=null;O&&console.log(`[MaterialX] document`,a);let s=a.getMaterialNodes();O&&console.log(`[MaterialX] Found ${s.length} material nodes in document`,s);for(let e=0;ee.getNamePath()).join(`, `)}`);let e=new b;return e.color.set(16711935),e.name=`MaterialX_NoRenderable_${t}`,e}O&&console.log(`[MaterialX] Using renderable element for shader generation`);let c=I.materialXGenerator.getTarget(),l=typeof I.materialXModule.getAlphaMode==`function`?I.materialXModule.getAlphaMode(o,c):I.materialXModule.isTransparentSurface(o,c)?`blend`:`opaque`,u=l===`mask`,d=l===`blend`,f=u||d;{let e=I.materialXGenContext.getOptions();e.hwTransparency=f,e.hwTexcoordVerticalFlip=!0,e.fileTextureVerticalFlip=!0}O&&console.log(`[MaterialX] Generating MaterialX shaders...`);let p=o.getNamePath?o.getNamePath():o.getName(),m=I.materialXGenerator.generate(p,o,I.materialXGenContext),h=new L({name:t,shaderName:null,shader:m,context:i||{},parameters:{transparent:d,alphaTest:u?1e-4:0,...r?.parameters},loaders:n});return O&&console.log(`[MaterialX] material created:`,h.name),h}catch(n){let r=n;if(typeof n==`number`&&I?.materialXModule)try{let e=I.materialXModule.getExceptionDetailedMessage,t=I.materialXModule.getExceptionMessage;r=(typeof e==`function`?e(n):null)||(typeof t==`function`?t(n):null)||`WASM exception code ${n}`}catch{r=`WASM exception code ${n}`}console.error(`[MaterialX v${qe}] Error creating MaterialX material (${t}):\n${r}\n→ MaterialX source:\n`,e);let i=new b;return i.color.set(16711935),i.name=`MaterialX_Error_${t}`,i}}var nt={createMaterialXMaterial:tt};export{Xe as a,ue as c,se as d,L as i,le as l,Qe as n,Je as o,$e as r,Ye as s,nt as t,ce as u}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js.gz b/Needle/SampleScene/dist/assets/materialx.CnHmG--Y.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a370aca0cf4f00370ce02a27ca005c709766dad4 GIT binary patch literal 42394 zcmV)lK%c)KiwFP!000023dFsAd)qd$H~jzeDWu*xI^+swNa|e*tUJw1+ufweCTY7{ zua8Mfkj;hywIpQ6k+`4zzGeXMO_VJ;d-l0{H5N(W2VejU27|#&uv|s4*ocOoG+4Tb zqvdzj(>Myld34K9;x!k+l36eQ{_FSb?|)xeeS3KVsS@j$?Akhe8$c_llU~4TKKfx22&{Dxe#%1xfaau@V#eFbp0EV z!LkPH>ic16Fl*_r3`S3@ZDOV+t{I0<#wHQISSMp|u?`nO7_zxXZv1e~#w;~SDMifw zU^4*;V&*3ihZLr1rZJ5Sfn^DLx&d-gpBX??A{qg2M9h@6n?&qPoYST~k+c>TemUHX{A*{K+Or zv+UTWDDUlA%zVMrz|g}1DivWJ;%TuCV|RgCP)P144REIj6rR7Ke9NEVviUmJ>|wLcrd(QxPKY4hKL$!el}iw{McATaRbQa z!H_Xi(@e7g9KZku@(Bu+!XgasCJ=0_5MIe*HZz~kSP1arrk%>UX|4P_NJAO94fs5| zwdO&x^2O|00tu5eg*9gje;tbVF@u+EZi?$Tx^1vjQ6rX90!FYNVyqD@8e+RWJ2#mn zCjktdY#Ov$fdP{W=7Kpd#lAqQgl^K*G|7TdBjd2<2KY9k;%>#FMMICzXWrVI z<`ZTe$Bc`QIQXYl63@mrQ7~`VnzSnS#l<2B8TXeA^0!(B+iq$8(jqj%X(^APcH-hbT8xaNI<=NzWOwlEoU&~ro{&%Af9KA0}@eT z#cUY~cCqqjpZzO#kpy2^-a8416fk{F7^2MF%z@X&%%3BUAbK9Nsc$fI92mm7TrUQ(2?x#Mq={!GLEA&Adxe6AS>oxc$t;Z4`fQ;Nw`XXs|A=6DH-MOtgYpHklQD zHY>7O8Su$QFD@y-G2pPUNKRz-%V>VrYB9@?WB=}Z*&Myp6ki&u;J`#d#HTVV$c`Tv zbcJD(h{6Q-k!CvmT(?;4Yw<5!^Na?r_Kn-?AY_eepU=a9Up4Ytm#HCu8YH1-=VV41 z$|5XINJxKPFE3ea%%EHXpBvh=d=G!*n7mZj+!;1p!rfhkVAurY1%WplPx; z6_$h~0sKbPNhZN0Onk(VG_?#*=YuXn;lQ#Q#*+<8pMuzGf^=z^X?l2Wm7^fH&7db{ z5l^C!Sxk-=HFxDu8H3!I0v`z}Uxy)C(-?aFy_D+M{Jl&)t$l0wBr?a4Z?fKQ6L^FT z$tIi{p}|ZdG0pLsvXsmU8=^VXD|?FNju5AllKMnjj%^cW-t2SAtk)keq`>~(huz3i zk9c8l8T)a-5|1=((zH#oo2-z=yZka=9Fp{@Oz2%PeibI+ky)1WqjH4)(my7>h<%=f zxIP@%?AbC5E)Pr_23ObOAbLL4Nsl5^G1Ky}JRb4*Dn76YPj%9xYE{g1X!n)!JffWF z;MT7$4{p6qdQ|IWrl(mJ?=htvO14s-y#DX${4~);L zkU#zPJcuYy18WsWA_AeGZesS&HA_S?-lQa2F+R@sxEUbG@{~&uo&JoUQ+PobC~rQj z`AY`cAjW5RhPPOO#HO>Ro(XzUJ|7qM?J0>+4jAw5e0B6|!V-=O{#^ zDGFmy2cHTHbO{NGs6C0E`C1fgw<8k-&cN``qI1|{!x=aRpqig)SH8v$Rf zg;c!ZwowUEKt#2l^Q$s5Hz$RGmUk%iGm1nRMG|UHl4ns)k;E)!&ZrxmC3%z2Ejfe? zbF!zWpxu!A;*hPTnbr;E;~)sLlw$D%OV*)Kd%)^jm^>Rei+JJBuGzThq+~rc5@QV; z6e)X#G)ZG?=7Zw=!eDc2ZKG4>T`tUs=n!&H{-sSAXR6_vHeK@98{9IJ>)8#Q~oMD;RT2 z5q{A)kX@GEb=~g0Kx)BxdKHSr#p*IH;b3+Iaz~Ei90UY22!Jkz@;L8pHp&Me|{$#TkQ03p%(-NVu50Uo2o!K@627!q#K>-TyG!z~u;q)c)N zps283}&AzxB#YRwBy>{195{m zn6qTYcx9YP5QR5z`hx@ULjR6cdKR-Qq~XXplzhwJO9clq%gJurqtWm{95@Io_kql= zkUEZgXpNF2so+3ng)UsW(5qr@2Wd+y%hCG|Pk3N9Zn)Z<04T!m#^1XH*J zXTQW!!Cij2mm- zICS^-Z;rSu5p`KlQ-IQ_BilXqinoDb#LnbJ$Gb3fU4kXdI&NroWaQL9fnioY?xJ| zjNHLsF9#}XMd1Ss!&w+5>zG~OZn`wL5lrEBoc$Y=dR)eDf;i$}W^u6yk_t57Dd^s4 z*n2!Qk9f7(0I0D0?tVu9F!m~Diy#y%t`q>Ms(?Yq?jKixl-32i@WV?sk1hmQ7F7xW zR9!%SFnnYIS@oe&)e`yxDdl!;+jftn|1y}x5v=v)#Xv$S)Q-Jh_IU_3+iI230aBtn zc6aDJ8eK~LC2Ry#*aNrIeLVJx&DNnGSKt9t!go6T;gRskwGU<-B}9Z#h}~}Y$U%-m zq1u98L@R$5h`S0tfNK1{<9q{t%oedf6IJ}a+OTyyJ;!wq#9w{^UBks?GGA2i07T;r z?Cx=RY!_}|Yx4Gn-DBW*kVGPmR>ADzW*2tY)v$ega7?RX5hNm*T?A2OY$1@w?00*I zV_t^-?6Wl3CQ=>i)%lK>u>=~ z;&zAKPX7p8t#PVBMJS2dvz`5N*e+_Wd8&a$ECuThJH2CIlU3-?m|RoC$gfN)gwx2Q zq5VkY8?-&{RIx`x#SnV1sXH9IMm<$W6#!NEeRnweHvF9ljhGsKXdf}CQEOFKVSrJH z1G{%L;tq2_6bIIXPz0;+4(oU^i^AQ( z1%MiR)E_<;yKYVZo`N2_ZvPR`Y+tPbPeXSGqenv5RT|(la<6m5IuXT;UvU4pN>t~pDRe4VST9tbG0`*x@2J_dWf_QNtNLTS|gG291*y&4)Ij6!q= z_7UR(>{^xntOgda6l`bEJ7P=}w6%4(0H$!e-Qf|lZ_R^66fbutG~#H;{=v(eeB7@d zkYEybU=KzIOlD9IyHlE`$c;syAmouDbzvV z9z6;*V=QH8z|+v9e*a+Ts&H2Z9re}p9}auY;h=kkq!KznD)f=l>wObCtAYcf2JgCu zgV(MJW#q1#ArA-rMMl}8_Cu%1#icSrW% z5Q#G?F|1n6ql8kZ{a*JWS}M35&7;hWI6c>~oda^KAGILvGIMFbUnn#56%gZ}=(vIjD`slWk-gzGp?@5mZ1eQ{mJLlBKO81|3D z<55u2lt~l`*y|4VPvv?*6hu&DSXUa3U>bMWbsmpA zYzJ*L7$~%!a}3($I_7oqzQoax-M;%6$Zi#~+jlkO(C!=wxx00cFbc76yZyrvXDkeH zFuC(uU_jHrPQUXA;LaXkr=QihW7|gnqq*kN7jf`KYb`G1W2f48fUFDY*@J&eA>C?k z0F-&42GIq1G|4jOXflH2OMKYH!Q9njew`2`+esK=xBb$>L(2VY0OdY zahN;x9BGEx8y+=cBxcnWT`n7zL3biV<(LSaPHz+LAX zfV)-Tu9E@xherTkGq52L5s%`fAMUGmUkeq$ut&$Bqf9mrmi|>mQb8mI+8qoZ0V=D! z^ef9hqAB2kJL(+)oZN^gzPhaCW{9O>yY}d@u+^ReEDhW13=fAzn(nD;uQSw`BlmHb zJM|p78gtljy2oPH%wNROkb`3+APHGJcM(Z}j_$FbxgWGj(2+K$>Gen5VfS&MRf+m`$1pEAR8afmMBa-i0VA3QzQ^`? z7x*5T6_GS(um1?p+Tn#*8g_6@r zB5BZW{}G_|lm#pedyj$QL$FoKI@(IHH*ki>28Awc7gtrBU5S*R@Jj zfYPX)W9up|YpDuA8nbtdc%d-ssR~dUwcmRz>JC-=y$p5u=(_Gub(q(6bW~lhE=6>m z+|(|Ih^1h=_Mr1v*lKM7OT)VM5ey)X1eoa6_ZL8E)b24{poCf_0YE9#Ugwz2eX@)q zaSbZA+A#}Y8n<`Mt|M86f!M=d07-)mj#&ydXgy^COT&(iS-8uvRnh{Mf;~<(R)(#P zu3RxT=y!U(BVqTj7(mjXz3%XM(0a-OmWCa4?Z?7aDGOK{cGPhn3%f(vQAf|P`|fPi zz^b#OH4lR-WwZMly}{t9eSM}GFDU@sw^d>cvi<#F&^u-wuP>nUwn`R2)dloNN6fl4 zzgGYOFpYbUMZhlZZ3GsD_euBzZ59Aid+0tEx_(dtq5>Z}{rHTY2*o&xwD z;e42HdxpJZba-XxdZGZL1|K-XZv)>U%D~axIUF6lpvuSnHYpNJ-rer?`lADS5^Pd( z*jk$u2_-LZcSoZ`mcC`>9I$lpM}kPaUe`Tj_fy78W`5|Sb6;OXaZ*7?NQK^W57A!~ z&;|P<)-kI>0*-?0+lOe)m!;mSHOi4t61CqO9I`~g$+_~g@>DUP>kJMtB;3F`NI)sV zWyeW5AfhP1u4^9)_~ioJaU?}RK#_o>-e@#94p7h191lSdZ)iLHL*$WNyaEL!h{SX3 zgU*GbJ;%uf0|^PGQ3vku(WvS$xr{wfiprs54-Z-3HMTx{V_!ta($-iB9JPi3gPg4ldVS|8P>5cE4r?ziqbOuPuR!-Qp#nDKkA$wJ@4#_2^043g7UU|8 zhkZ@sq1)*^61j%XfTn@F_TZ7g0T=9w#TDqTGIbg{!(MOrNNDLGyn@{8=~ZkvaJr8~ zuH`#`r=jn;A9oORWpoVn^|+xkaytEQg02h?z|+v(-r)qD!@IF+ zB~b)LBn{d-Vmw!EB+8&YJ(gX&-#dKzl`JI6h}w16&~^H@{TReb9RWrmx`QKx+M;zt z2@p^eVCUei>yB+i39_R%uXsNUX2^F9; zYIo3mENZ2$0Hsm;N9>SxEh5UWeZ50+`@`RYckoEi zN>2fj2JLqHj|8oB6d-BP{ttOx)Q$j$?yxgD22|TWl;Juf4L9l>F_S8X4<*b|C!0p2?h)JU>UnY*w5xa8 z?x=UfzPNgtTn6pwy|Fv$A0fb3&XUWReJ#Gb_jw__AG6wc?Tv8Qu}4R23Cd?@MM%U^ zkWS|a!AwCemDAlaC?ILjgSDWbTMTNqZJk^T+HnrL{SrNNyjOhQZ&UaBp>MEAgbDYk82Vq5&-MT=|4CNjPvw#xSplF%W={YW3#yKZ7A+@rvW@;MJ zE&Q6Q@I!u*1XtYHq$D=UoO%$1HAuk6`&H~OJ+h!#z&{yDCnYQD6=J9@3&BYD2mNAX zWsX;EhOvRJ$rS{<3S|s{3kq?)Ch!kg(F<@R2~>cPWaNrMKvG7(Kn&Aq7TnbwGjfqd z0{eK!Auy3iuBo5kZz5>ZHV@57#8k!|9D8fA7<#5jnh+f_NZv~-_mj zV@``-&YW{AX6Vbuc>0fjJiQ_qT#b}+Ct)yShHLInR;OZL0`UR@)-fVd8Kcxlw%eK6 zY8kWXiY6>vOaigul2ybL_6g!+co=&^2I}&Nupo?ufgbuvCEh`v(M+=;(oo^raCFqhM-?(Y zD%3Qtt!br-wn^gqsu-)F2vmn$jI#)%u5E9(`J>%xI$sQ(aL1)(=EO2E1crGmF`raS`}oGWHUG$xb4SH|y#6s(A!EQI0q_kt0>c(h{l$ zZLcwIcx{1^LRFbJ6e1!7Tx_>GTv!-gS(gEy8|sBg?sTG8ah#{amXuRY%DgHjSv&?3 z!=%EooB-Lf2U3~9#+;Vk$ZB5F7$cs3A8`$F&Gu_$?4Ni`kT|QeEeldZ>wQC@{dlRiahe& zPUenFUuooyTg}{Y>B}td&ga)1mvV{y8l zk^e23sn&=ko2Ysb0nrOH%o|xbE8@>DqgYHW7_^Lf_{8Rh*Jf?c^au`SnASF7ZR%N# z@7F;%Z`=mrx^a>`|M>CMhfhDf`&ovoUPdu%1bh)$-Xve6eq)!INGi5A4cg5)@ofASHuEOy2SP2 zN`Jk|2;f~t;<_PMR-exs_ygA)h;jr$wXazN>Z9Tud8tgB)!>t^LG#iS@!h7lZb1O4 zNqvQcnPM!{jSlLKEvbUPVlp742IdMF3)RT-Rk5oB4lese;0uOfLQ@qe*4#j>DQpKs zUc$nz#t;Im85Q+*1Yg(<>OQyqvVW`S1-0z-Be8k}s@T)RwX0viFAW?*o2*(!On8|{*yD-*-k3$pRUYdqBMwqC#K^Lj z{_Hc*v=Hp7kr#z6&^`T%p@>%CY%m|>$BjR}3wFr;84_eqYD_4!-zn4K%*hw}yLI6c zSmwzcr@vdXOR{3d@75FFBo|CJ>!d&d&m_O6SG6B1p{AK36zOJa8gdHtp5Ss)$oZR} zEU~k)jaB8N!6DFUk=Spe`8s6PbPb49g=AGD78xJYv5c_;Ab4{6f=#Csc*;bNkw8t8 zm&~{%FBr)~-U}lzNsyQB=kqAVRy`+wkmrnUoZ)EHAC6Jvjjc~HV?POLADageJNtOI zyo^FCP+!hzA@ZCq@H$A+lsF^X?ztN7huB|Te=DBT8ECwp_%(|I?3-^vO((O^Pm;zT zY=fcOyjNcW6=&C*6au>e;c%`we;l9Xv>q{Uokgw?x9c&MF3QQ9F zEv^?E5JDz84)UozfdI!+elTJ)B|kF?;t*6utzp}3(J91Aj7A>JSfOtTQZ&+{hYSul}{VMN)PXt&QX zn6?qM9Cv7%8^29IN@E8M?so0Ru)#JW6FNi$d@c17iOSsScObtJwOqGrQtFJ{y%Nw`JXZ>wbL7SD)A_{n2+oaTWyHluJ&wTdGakmNNo{f#DHGmgGc;UF)8NALQNc61V z>vj6({E$~J&Aigchuj8r>Blhdi{=TZ^M>jyB#yt?A1@nPfRN)*z`3s zZV5b$J&(Mna@``aNl$N>;lZ*HOTjc_?LXm?M;g9>&Ec7t{sha@*jw|@Ji6r#t?cpu z2R_Edk9xs6H_02^U3`EL+Fw~kd+=*<1s4!f`eNpYHq6iz-I%#ywB2kn@*+>=WN@0?8mgSAN$s>m?0U40M$6LG;&l)YcV$wZLteFOvaQ%jcoqa3JmbMSh*rHs5z z$uIc!76;gG#i9Hfxs}jd?-vG*uqRSJP~%*f6TaJ6AqQkkxs?wRM2pL4B4d~V$m3Gj z4k)Geb_;)E^D<`sXB{$BwFrwR zl7D8r1m6&GZjwK%iB*|VY`X=X!lMTJGGi+#JVgz;&(InzJ?GT^i&^E-v)vkcO2h82 zGU09gO0xzBSVOxF6Ieh;{iGONuA9x6jZ_N2H}aY?%mz9BF5B{fk-wE%_3G?<>&B1$ z_$q3JJI|HC@_AL}1a&;PVFO=CJfgP-P; zrxyFdKxM9!(T+)^O+fHf#)2Jd&9ojgoZ2L&TDmxKCh;k?C-KRNsYFF~7N1XGAbFNI zWfoL+#*COa=2*V9ys1%oPk6g+j(Mw9eSLCbrl5vIwaSD~;6<*m0HloNvox>xIG;~% zETkj!J*Q0Ts!tq6$}Bg1W0l*jsv=NjZOQm82BW9VCNoJ>m=;_rz>fs>YfaFmGiWlZ z&9N z1Sm5$EX!ghJuQ`#6V1d_t{z>bRB+tW7G_HR$}$zXl0j$j-AY81dJ(FDy=;FgKfv7o z;PZL3{1wbNlhTGa>*~|`#2`Q5QIy{GFnJmUB(!2o_&NwfI4H_=;xIeQpEMr^!pSe+ z-wBrF1MSp6j$;TzMqGY_-DjHFCT^1g(*x!rYxk1f1TzK!x}P8;HJ&i~S7w+d_MCwD z;7JtTu#Du{R29_o2nQ8rb;6!FtyYs4XD!U)DNNn*S8H}Vm+e->4Vu)G7Q&t>nIN2M zNX3`;Tcycug^g#3`f(Ej$3C|{KkZtS5?wl0&%}HLI zlLpTwo!D+Y%S%bjAp9cGNpUnrnb4I*4k!mPoG=x?h{BhA6ORH+PH1}~o@o-dTI@`m z!>scrqTS9nD7@GU{1nui4B|{5SZMa(db) z`q>?BlUBb|1b~|K6oR{h;JRHvaNH8a>1iMKsCB3ksIv>ywGn7o0dm|b(jM@vH(@r} zgr5Xy;gC*f-Kv^8r}mVOIqYZJ4hg7aEiufP7?K9W&L>JXBU>#)zob5>yihzA*#gxR zLg!J72cDqhwhe;9Wh+jlF4OYEFoMN`#MCB1W;>9GdBCm3993^ImG%j^t^|Y=yQF)@ zg-JwmS8sqkiWi3y!+Z7awP%_!wNVk!P?B*PpV}y;a5X1w5}P>ySUjA7$%7mLiud0J zd>-9OGlJ49P>3y8qH?&!Xz8or{lr&m*!P=+H7U|WiAMjQXUYX3Q}H0dgrL}AO*>x* zgjQdrBocHZ#9cBzJ16o`Zj+MadM)O1uLx}ZDoAi)fQ?}!EJ%LF&gmw=s=z7bTIgS^ zWGqth)zZ1-Vrwus^pompxO;4-B!3uh@VGxam&%H;cr<5LJZCrOY8RL97`|Gs;+RKr z&Fpr}34=^j;P!)khS-C&>7)drK;qsXzguwcc_9s1;Mq)xdfJ}=28`xsBv1zm@NK(o z=6P_#e(lHms@S)SdNo_IyLb|{+ltTO2nB9eh14~X!pt6gcZ8CCLMfGc!&b|OE$H6* zNIoh@km4SGyN#S60=B1>Rk(@3j_^UVNniQ`o^K6U5>s*;2ZB9Jp4Iwc@<96wB%1io zVyKe2iy|q4b@k5=AdJ@Z=WSVHThzm>reP_WvxN`Fr$XGxQJVKhrlat24&~KC)d`hE z-EQHRV^576<2A_Ya+ZK#s(#Y5b8{@3D7L6qT31#Ym-15~kyb>vTK8h7B#34rybv=m zbIYr}nOy{n(7zhHyFgrJ-<@7(IDjv+@mYtsL*lpt;yR>D zY~sNG1LBN`+lQY+;`E5yA+Ag8`~N#n^U5VyIk}=}5h42;M6;{gfG1z`>Yuq?GDL(z z7df(z9_os_|HZDj4?9hP<7q_=3X(Gxga&&m%s&Y-lS11KgW>dnZlYBp53!|4x4Jz|?FDSXv}7|hGBR*-xjex9=%gPYqeJih+v^*e)` zd#7c`oP4md+HALUGY{hN2Br;82w#YJ`~j!Yh2mN8iX^+A)GHE3(dYH5_(i@U%g;QT z7vJLx63fkZ;k|rAz}%jHE`E@2NW6qf7Bj#LWaQNk@)b$$mQ^hEN-tF7O&G$$GX79l z#w__RO$izid<$6)DF<6n{s3vcS4*N@o+sX$W?_4;2Dq?154+Nmk4{VRKZLfJB@Z ziYq=A`zGL@A1oGn=7C}{iToykUm&?PG>ZDQ*s@z5Kv#(rJ_(c{5~xKy*jc~P&X#2j z2HinGwEU8<{WFyv-@^`sTrmMX@zNLm^8{2fb8V8BnQCRI)BI<4ep>g=unEh1!W>s^ z5wjfCPbpzvRz8=;)FO)gD`i)qH6L{~k;~E8mS?p5lnN7;L8-a$zkufBPX>SH*lzbv z@Xyp8JC@`2%+u3T+aw%UK%RBk}4>kO-8mQYr7`0$QDH zr$44j3MwgHluF~PlAkbx$n3;6upP|hzC!<-`Eg|c=1&;|+9L$^dgkP-b?qnDAJ{Uw zku{6Wbk0I1Sc6$$lm{0cG{0pQ)b*ScUh#9vhCbS~x8$ z-FAja*Xa%%u%gKC3juH7Bu+D-OB;e#C-lB%y2Jc95aH6Y-lnP=kvn(2tJbU*PQy?2 z+nily+F)s0lrhz6!jk|5GO+SF9kyD2#)wTcHZk%SMnHmgWP&jrD%^A*OSOE2%5_i~ zBu(o@iY5?Ss16;o=(@Lj<9N* zAle*6l5$abJF8zXeTuunszR@}Dfek(krR-JBz4@NX#_3TY_*bBE7_f4W&{VUK27j6 z_uXQVFfq}m9T8kM@aYUpeo52cTZN%HNm?z#;HUO>%iH3a7LB0;5?T=1lk#v9<`~7m z+&opz4GWBYjfBWFCV7ElF#+2hrC!{uL_GGh{+W-XG?jblA~myBzPee*L^g>D$2)m8 zXpBNpxKekx-9B08CveEi=;=mpb760zZjI*OQ!*ELVT{2wy7%GwD&Wa>dv;D1<+D6> zVDWt%-6qm%wbfD&>PnB=RW}`7y}7U!QT)oET^l}}>}s}QDz^p36q%7w+X1bqm=?~K-{6U;i>o-?N1fAaW_Ytz|7rkH*J#7^D!EPYFqH^b-gV(gYRJ2jmo;@E)i^*$XdW0d;L*eKTXCq(U+L9C9glq zdl;&;aV&A95-)Z^VkTI4cvG&))(eJN@1SStmX@-TnjzBAd&T;?fwyXaLx*bzk0ixWi(Ynb(UO8s8l9}w0i$7?f(d9TGXkesTXSGHXdqc zkO8CD2$@jxM0UQ;m^AE1dJ~WS2Xt9 zJ+@k)R6r9)&_e@5B|aLYs?%X@43i%c(+CWTbE79X!v$ekj%0O?i?&D6xv~v4H$Hu1 zDKkj}Of6`j(&v{dAc3qdE(G#Z*6~ z+N3yDN{P2X>=ihZHUba?n#p!s?g`W#gQ{1~Y@`w1D=z7-D_P~XsTu5^FznsWyHaqO z(V9#~U{3T{n88?>mFS5B0-QV08UBp5fmYio7|>;;Zs>uNrX}LY(HNxZo+@@+6BX3T ztTi|AnoKe!&xa_2#U@t~BiZD?Nak$WpYk)FjiPgD&^qO9G4`Hpc>46oMx@@Dr-F*9 z_hcg#H~O`FBDtO>O$lg+epU)9vtrt8PvU3#pmY+q+a{+5fA*|rp76FPnrp@8R?8j+ zYjadd|JPS56B!hSEbaMxE_EMTp(<5WvJzT>6wH;<3G74Q?*%Y(TEGOQP5F^BSwKPA zb!Zvb4J9l}nOTL;D^lLJ@=CoXT=pz4)Ew|O#TP|1XHvVys^R>`hu1Zl?N3(C~` zgKcFl$3@l63Y%; zWh*Re^_?!>RO`5d{t!~UEb0Uc37mchf|+PlT}=wmh=Zv_c5qOWX6TGuNTLq@>ym)) zus+rmtO52F1PMMyv(HSFl5|H-&xIuLHzg<_eu{FDT^Yk=Q|Qc#J>uPZ#EWme^E1}! zoag(Ep5wytQ=59X9;)$yDHg>4(#7H$?-EmcEDC0Ou?Ls7m6o&Rj$9KKiTwL*={xLg z%HO|~z7IO))E(O?DbAd#(4vn>zFNCg2RslZs+JE^d+eHHaDcq@?_S^#&yKvBRpq@Z zuh*Rv?lA9Yu!(C|uJ6}Y==KYk!7u&0m#EBs@OXih>?JeRFiHTaK2P6M4o>`Rf=iB5 zYGJ(7!s4ipDMeRbC z4Q|gAYovI&#w3ECI0Zgic1xtWyG%{sh>zl(3qz<48qfulor^gYBriwcxsx&j&Fa4? zRs?s8DVeWVmAdGKvRctx^HxyeO|AKQHMIX99DlibFY70n!wtlC62H+MA)X-F{x zI>thOESXB$+-LYWz{B*V|3?(#t+&(DAz21oJ+<6kk1YMq42*2_UF2uahFd{)Om_tk zOsRIz@VC$|kT9|~$Ue?f!WUd3lk(*b&^)Vv}(B%d)IkE~|-I zxN88Kn}u2yl*)}&EU00B&+y3Rt5sI?wA(wc!1Ek>*NAz*uRvQ?O_4TUf3#$=4H=OP zW;7flE<$ii-|$5v;xk6T>D;A%8QwMEQfXrzffo*pzSOvl;?L?n7?)!}QAutBWjoQ5 zyA@C>JDzJ)eN*> z0=-7z(!j~4xPu%w9qD_G)5wCY7V&8$&qpd-P~Uv0P`wcN_aA`tx~B4ZfMasZNVF2k zSde@pHs-n3G$k{=RWp+O%8$}VB_u(D&>4xRU)9gCk7{$R?@EaJ4d&mUk*u^7=knyn#!8Z7wS&&mcTkWR> z15<23t5ud#1mV>rh8{7%0VHF?ea$SB@@cm-%oXS@*lP8N*vjo8`D*23#m14NOju~o zaf;dCG8<&WO=EpF@DWti&lHuDB!=s)0ktQ=GoIhW3qY9UXTiC-iSY(@8y;|X0L4Ik z;@xXhxFu*(SD#8TIL}`pWs?))K~xHub?4kVvdTv@CH`(WgxYw{g)^8@D9ZYC%XZaWu@#57~f6_wz3 zvhav?E^!p%SK1Wa$CTjas$@(v>4E1Sx{{er3tHOd>^|axLR(ImCZ%c(+?RgPlbsQk zH>n92ovh`JV|hc_V5&pbx$6g|dB2BSLi!R4x~4c7qNi#nuO80Jb)11vl-ucrO-kpo z&lXfm8KIOi$V!eawM9=zKo(fJ)piU1hNs1^Gvbp4*kI>_5sD(Ky)$DahhkE_UUA<@ z+*RL)=5{MRe-_`)ACjnMO-d7VioCl=P6#T2?ydQb)-IF>7dx#nLV|P%^_kx+=U19R zEduU`;oYXJEe!GQjxrtGCpqn`*1R&eYRoh>&rm%F8q21A5Ze%yn=Qw6ReW!!RIz1M z%i>d9HfFp}n5^(sv2*q29vM2fkFI8tMlM{NG#=I`4_qP57Klf6oO5i)$=d%f^_(Kj zJzaMn=?*1VO^4psrh*w;O)l(GkeSMd6!l|D9K2RnR#|0*f7~joP4_|i2xS$EJ8@a( zCf>WdURLG$f>J`;0qtuQSFIYes>q!jQ0<-6Moczn@*`RxQ*Na$v~_}#H5wv}3x){L zwygS~@5$SOOT#3c+F=;^}e{@>{IP-52uw~rWHSqR=MJw->>25 zIJs^B54iZlhUA)9)pefZI*-bqec5s6z0;4JY;db6$iD7el<9rnxRv*%DppnZHRr39 zffvU58me;t&VF})Svz&nfCzL(_?JU-B6VCrxZE^qUsT?G98l=tBMQT33HGyN01~Z! zcgiJ)z%A!knzIK5cSS7s4`l|FWOQFI*vhj8uE%PV$cYU*m!_?JBi+9?)ZSGTEqc;(I$-mNo@1ng z`{F&&`-B!KHgjErasr+*1#oTvo11-k6EhX^{IeN>Af1h_09pifayk$SS=p&njwR$Z z*?^!eNq$Tgm`dv*i1vyB7L=K#x?Q}^QM`aj*8D0Gf^o3llrD`?A($yAD`yg|*3K(q z29XZJ=<0(uri8Op(Q<&sOy0Z6>@2riqwoZW431PLZ^85Yo}K;>Og*lcn9H~o zQm+Slg3>t(!on@T>N}(8`gwO}P&!Al7IQPjBPV%;RH$990bIk z7d$a9^JPk%`>Bc(UHt-0rpQuCM&?RIK9RJV8Uj8-hl6t`UTa*o%BcG}vc?s3e*t*JPa`cO;7LEN(fT4>7tdqHf+>&A5VRUzM4d&((= zyC~+suX_cSQGI=jkZE=sqG(Mm)KviWce{mq-;B?qIYiOOe{Q$lB}Rbq3g1C-is9hE zTDbU9B`x1%`HA27VK8s#gy>1F@!gY6o;UqYAE%?jMhnWaZc<^RHtu*w8=MZ7Z%qXS zTS4TyG4a7|9m-yLyL7#$oW2Iz-*Neysy-fM_@H``B1McgA;>ZEt5--!wc(&#Q?WM~ zWE&;b3iXYsEmlD;FG%!7Gsr@-;Jg;&!=WoaQE|ohRdKNx-}^)b9N=(2>)kCkGjpm! z%n&O`eht_ySSjV%;o_PoIA7gCD!R?f?k6Sd)d~X&H6W-D_Ns^bW<|7=%x>oxLE@`b zxFT8J#uWI? z^mIGRub)D6Oq`)RZ=WvavSc(c*~mZn1TC3udyBdDRW|4pRKmquUibLgBDwOIZi+S+ zaxS(7sny7#+FqXtvof}|$l_kgiDR$#mq%qgHj zS{QpWW@w?lzzeFcv6jy6do0jVM-aj6C+P{bU~itALt)sPk6<-y34V5K5D+3 zeW;t0U?H5}Q>B}?uin1?IQ{^B6M61|w-k911My9#;LRQgK!pAstp(xwfyHrNaP4SG z$v@Ys{Uvl~QZ_u!$FnjPVfvn$phXMYiGW?2T-Jq&7jXIfow^!ZRLuI^5AVJ*eRHpH z7{kDCPBP_|)I-W!d!(Aa5QgraqoWBp?8T|9-NU26wULJAaP3%@hQCntWuwiIWE-eq z!(WA}5Xk~wW%=au`z)<|epjgcWPe=?CzlY#vH%S|tlyx#ARCgslLb(vkdEa|)$)Pn zy`&+rqO>lkSVU9@E}!I$uvppZt1QyEvv6HNTAWgSUm*8sAqS)GMs-uS?%0DBbeqg9 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js b/Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js new file mode 100644 index 0000000..e39cdb3 --- /dev/null +++ b/Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js @@ -0,0 +1 @@ +import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./materialx.CnHmG--Y.js";export{o as Experimental_API,e as MaterialXEnvironment,n as MaterialXLoader,t as MaterialXMaterial,r as preloadWasm,a as ready,i as useNeedleMaterialX}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js.gz b/Needle/SampleScene/dist/assets/materialx.eMaybKAQ.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f658a8c87e2e62c116dc5730a2e6c2d26b9836e GIT binary patch literal 168 zcmV;Z09XGXiwFP!000023RO=*3c@fD{7UJ0TOZJqNKrw>n|hLktPn}EVH2ey{kv?V z1y3`~FtfAPN0$7?3R6X36*2^1B?6*gAt@ka1s-q0zHS#DGl@kvw5zc3>!!K1_f&T@ zOodZHKSUDiDP(ll<#7w7>i!!%_u*-UgZdEuoE@VfDF literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/mesh_lod_0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb b/Needle/SampleScene/dist/assets/mesh_lod_0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb new file mode 100644 index 0000000..54ebbce --- /dev/null +++ b/Needle/SampleScene/dist/assets/mesh_lod_0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8da5669733e570beaec261b11eac49e609127bd18a6659a092778528d749fd8 +size 22384 diff --git a/Needle/SampleScene/dist/assets/mesh_lod_3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb b/Needle/SampleScene/dist/assets/mesh_lod_3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb new file mode 100644 index 0000000..61f9a7c --- /dev/null +++ b/Needle/SampleScene/dist/assets/mesh_lod_3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e108d6cd8fadc4250b03577a3ed0c1ae5b065ebd0011f190607ee2d326378bfc +size 20700 diff --git a/Needle/SampleScene/dist/assets/mesh_lod_4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb b/Needle/SampleScene/dist/assets/mesh_lod_4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb new file mode 100644 index 0000000..cdab029 --- /dev/null +++ b/Needle/SampleScene/dist/assets/mesh_lod_4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b458d3955aaec8fcb63eae900bc06d20be7ddc3a66dda71b4d60fd3241b4be1e +size 17052 diff --git a/Needle/SampleScene/dist/assets/mesh_lod_5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb b/Needle/SampleScene/dist/assets/mesh_lod_5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb new file mode 100644 index 0000000..14f4a74 --- /dev/null +++ b/Needle/SampleScene/dist/assets/mesh_lod_5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8e1498ec2927c147170e55aa7b06c62b407f3e8998ac4f66edf5f1e4004b11 +size 8484 diff --git a/Needle/SampleScene/dist/assets/needle-engine-particles.ByRryBGL.js b/Needle/SampleScene/dist/assets/needle-engine-particles.ByRryBGL.js new file mode 100644 index 0000000..7c8cb5b --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine-particles.ByRryBGL.js @@ -0,0 +1 @@ +import{Ar as e,Bt as t,Qt as n,Xt as r,Zt as i,d as a,fn as o,kr as s,qt as c,tt as l,vn as u,wn as d,yr as f}from"./three@0.169.19.js";import{$a as p,Jr as m,Ka as h,Ua as g,Xi as _,Zn as v,_a as ee,ba as te,co as ne,ct as re,dn as y,ot as b,pa as x,ra as S,un as C,va as ie}from"./needle-engine-ui.DC9_O2Mo.js";import{n as ae}from"./gltf-progressive.U_EoiMHF.js";import{yt as oe}from"./needle-engine-webxr.Cp-vkXLP.js";import{a as se,c as ce,i as le,n as ue,o as de,r as w,s as fe,t as pe}from"./three-quarks.DALdLWPD.js";var me=Math.sqrt(3),he=Math.sqrt(5);.5*(me-1),(3-me)/6;var ge=(he-1)/4,T=(5-he)/20,_e=e=>Math.floor(e)|0,ve=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function ye(e=Math.random){let t=be(e),n=new Float64Array(t).map(e=>ve[e%32*4]),r=new Float64Array(t).map(e=>ve[e%32*4+1]),i=new Float64Array(t).map(e=>ve[e%32*4+2]),a=new Float64Array(t).map(e=>ve[e%32*4+3]);return function(e,o,s,c){let l,u,d,f,p,m=(e+o+s+c)*ge,h=_e(e+m),g=_e(o+m),_=_e(s+m),v=_e(c+m),ee=(h+g+_+v)*T,te=h-ee,ne=g-ee,re=_-ee,y=v-ee,b=e-te,x=o-ne,S=s-re,C=c-y,ie=0,ae=0,oe=0,se=0;b>x?ie++:ae++,b>S?ie++:oe++,b>C?ie++:se++,x>S?ae++:oe++,x>C?ae++:se++,S>C?oe++:se++;let ce=+(ie>=3),le=+(ae>=3),ue=+(oe>=3),de=+(se>=3),w=+(ie>=2),fe=+(ae>=2),pe=+(oe>=2),me=+(se>=2),he=+(ie>=1),ve=+(ae>=1),ye=+(oe>=1),be=+(se>=1),E=b-ce+T,D=x-le+T,xe=S-ue+T,O=C-de+T,Se=b-w+2*T,k=x-fe+2*T,A=S-pe+2*T,j=C-me+2*T,M=b-he+3*T,N=x-ve+3*T,P=S-ye+3*T,F=C-be+3*T,I=b-1+4*T,L=x-1+4*T,Ce=S-1+4*T,R=C-1+4*T,we=h&255,z=g&255,Te=_&255,B=v&255,V=.6-b*b-x*x-S*S-C*C;if(V<0)l=0;else{let e=we+t[z+t[Te+t[B]]];V*=V,l=V*V*(n[e]*b+r[e]*x+i[e]*S+a[e]*C)}let H=.6-E*E-D*D-xe*xe-O*O;if(H<0)u=0;else{let e=we+ce+t[z+le+t[Te+ue+t[B+de]]];H*=H,u=H*H*(n[e]*E+r[e]*D+i[e]*xe+a[e]*O)}let U=.6-Se*Se-k*k-A*A-j*j;if(U<0)d=0;else{let e=we+w+t[z+fe+t[Te+pe+t[B+me]]];U*=U,d=U*U*(n[e]*Se+r[e]*k+i[e]*A+a[e]*j)}let Ee=.6-M*M-N*N-P*P-F*F;if(Ee<0)f=0;else{let e=we+he+t[z+ve+t[Te+ye+t[B+be]]];Ee*=Ee,f=Ee*Ee*(n[e]*M+r[e]*N+i[e]*P+a[e]*F)}let De=.6-I*I-L*L-Ce*Ce-R*R;if(De<0)p=0;else{let e=we+1+t[z+1+t[Te+1+t[B+1]]];De*=De,p=De*De*(n[e]*I+r[e]*L+i[e]*Ce+a[e]*R)}return 27*(l+u+d+f+p)}}function be(e){let t=new Uint8Array(512);for(let e=0;e<512/2;e++)t[e]=e;for(let n=0;n<512/2-1;n++){let r=n+~~(e()*(256-n)),i=t[n];t[n]=t[r],t[r]=i}for(let e=256;e<512;e++)t[e]=t[e-256];return t}var E=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},D=class{time=0;value=0;inTangent=1/0;inWeight;outTangent=1/0;outWeight;weightedMode;constructor(e=0,t=0){this.time=e,this.value=t}};E([_()],D.prototype,`time`,void 0),E([_()],D.prototype,`value`,void 0),E([_()],D.prototype,`inTangent`,void 0),E([_()],D.prototype,`inWeight`,void 0),E([_()],D.prototype,`outTangent`,void 0),E([_()],D.prototype,`outWeight`,void 0),E([_()],D.prototype,`weightedMode`,void 0);var xe=class e{static linearFromTo(t,n,r){let i=new e,a=new D;a.time=0,a.value=t;let o=new D;return o.time=r,o.value=n,i.keys.push(a,o),i}static constant(t){let n=new e,r=new D;return r.time=0,r.value=t,n.keys.push(r),n}keys=[];clone(){let t=new e;return t.keys=this.keys?.map(e=>{let t=new D;return t.time=e.time,t.value=e.value,t.inTangent=e.inTangent,t.inWeight=e.inWeight,t.outTangent=e.outTangent,t.outWeight=e.outWeight,t.weightedMode=e.weightedMode,t})||[],t}get duration(){return!this.keys||this.keys.length==0?0:this.keys[this.keys.length-1].time}evaluate(t){if(!this.keys||this.keys.length==0)return 0;if(this.keys.length===1||this.keys[0].time>=t)return this.keys[0].value;for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Se=ne(`debugparticles`),k;(function(e){e[e.Billboard=0]=`Billboard`,e[e.Stretch=1]=`Stretch`,e[e.HorizontalBillboard=2]=`HorizontalBillboard`,e[e.VerticalBillboard=3]=`VerticalBillboard`,e[e.Mesh=4]=`Mesh`})(k||={});var A=class{alphaKeys=[];colorKeys=[];get duration(){return 1}evaluate(e,t){let n,r=0,i=null,a=0;for(let t=0;tt&&(t=r.value)}return t}};O([_()],I.prototype,`mode`,void 0),O([_()],I.prototype,`constant`,void 0),O([_()],I.prototype,`constantMin`,void 0),O([_()],I.prototype,`constantMax`,void 0),O([_(xe)],I.prototype,`curve`,void 0),O([_(xe)],I.prototype,`curveMin`,void 0),O([_(xe)],I.prototype,`curveMax`,void 0),O([_()],I.prototype,`curveMultiplier`,void 0);var L=class e{static constant(t){let n=new e;return n.constant(t),n}static betweenTwoColors(t,n){let r=new e;return r.betweenTwoColors(t,n),r}constant(e){return this.mode=M.Color,this.color=e,this}betweenTwoColors(e,t){return this.mode=M.TwoColors,this.colorMin=e,this.colorMax=t,this}mode=M.Color;color;colorMin;colorMax;gradient;gradientMin;gradientMax;static _temp=new y(0,0,0,1);static _temp2=new y(0,0,0,1);evaluate(t,n){let r=n===void 0?Math.random():n;switch(this.mode){case M.Color:case`Color`:return this.color;case M.Gradient:case`Gradient`:return this.gradient.evaluate(t,e._temp),e._temp;case M.TwoColors:case`TwoColors`:return e._temp.lerpColors(this.colorMin,this.colorMax,r);case M.TwoGradients:case`TwoGradients`:return this.gradientMin.evaluate(t,e._temp),this.gradientMax.evaluate(t,e._temp2),e._temp.lerp(e._temp2,r);case M.RandomColor:case`RandomColor`:let n=Math.random();return this.gradientMin.evaluate(t,e._temp),this.gradientMax.evaluate(t,e._temp2),e._temp.lerp(e._temp2,n)}return e._temp.set(16777215),e._temp.alpha=1,e._temp}};O([_()],L.prototype,`mode`,void 0),O([_(y)],L.prototype,`color`,void 0),O([_(y)],L.prototype,`colorMin`,void 0),O([_(y)],L.prototype,`colorMax`,void 0),O([_(A)],L.prototype,`gradient`,void 0),O([_(A)],L.prototype,`gradientMin`,void 0),O([_(A)],L.prototype,`gradientMax`,void 0);var Ce;(function(e){e[e.Hierarchy=0]=`Hierarchy`,e[e.Local=1]=`Local`,e[e.Shape=2]=`Shape`})(Ce||={});var R=class{cullingMode;duration;emitterVelocityMode;flipRotation;gravityModifier;gravityModifierMultiplier;loop;maxParticles;playOnAwake;prewarm;ringBufferLoopRange;ringBufferMode;scalingMode;simulationSpace;simulationSpeed;startColor;startDelay;startDelayMultiplier;startLifetime;startLifetimeMultiplier;startRotation;startRotationMultiplier;startRotation3D;startRotationX;startRotationXMultiplier;startRotationY;startRotationYMultiplier;startRotationZ;startRotationZMultiplier;startSize;startSize3D;startSizeMultiplier;startSizeX;startSizeXMultiplier;startSizeY;startSizeYMultiplier;startSizeZ;startSizeZMultiplier;startSpeed;startSpeedMultiplier;stopAction;useUnscaledTime};O([_(I)],R.prototype,`gravityModifier`,void 0),O([_(L)],R.prototype,`startColor`,void 0),O([_(I)],R.prototype,`startDelay`,void 0),O([_(I)],R.prototype,`startLifetime`,void 0),O([_(I)],R.prototype,`startRotation`,void 0),O([_(I)],R.prototype,`startRotationX`,void 0),O([_(I)],R.prototype,`startRotationY`,void 0),O([_(I)],R.prototype,`startRotationZ`,void 0),O([_(I)],R.prototype,`startSize`,void 0),O([_(I)],R.prototype,`startSizeX`,void 0),O([_(I)],R.prototype,`startSizeY`,void 0),O([_(I)],R.prototype,`startSizeZ`,void 0),O([_(I)],R.prototype,`startSpeed`,void 0);var we=class{cycleCount;maxCount;minCount;probability;repeatInterval;time;count;_performed=0;reset(){this._performed=0}run(e){if(e<=this.time)return 0;let t=0;if((this.cycleCount===0||this._performed=this.time+this.repeatInterval*this._performed&&(this._performed+=1,Math.random()e.reset())}getBurst(){let e=0;if(this.burstCount>0)for(let t=0;t=this.system.time&&n.reset(),e+=Math.round(n.run(this.system.time))}return e}};O([_()],z.prototype,`enabled`,void 0),O([_()],z.prototype,`bursts`,void 0),O([_(I)],z.prototype,`rateOverTime`,void 0),O([_()],z.prototype,`rateOverTimeMultiplier`,void 0),O([_(I)],z.prototype,`rateOverDistance`,void 0),O([_()],z.prototype,`rateOverDistanceMultiplier`,void 0);var Te=class{enabled;color};O([_(L)],Te.prototype,`color`,void 0);var B=class{enabled;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_time=0;_temp=new e;evaluate(e,t,n){if(t||=this._temp,!this.enabled)return t.x=t.y=t.z=1,t;if(this.separateAxes)t.x=this.x.evaluate(e,n)*this.xMultiplier,t.y=this.y.evaluate(e,n)*this.yMultiplier,t.z=this.z.evaluate(e,n)*this.zMultiplier;else{let r=this.size.evaluate(e,n)*this.sizeMultiplier;t.x=r}return t}};O([_(I)],B.prototype,`size`,void 0),O([_(I)],B.prototype,`x`,void 0),O([_(I)],B.prototype,`y`,void 0),O([_(I)],B.prototype,`z`,void 0);var V;(function(e){e[e.Vertex=0]=`Vertex`,e[e.Edge=1]=`Edge`,e[e.Triangle=2]=`Triangle`})(V||={});var H=class t{get type(){return P[this.shapeType]}initialize(e){this.onInitialize(e),e.position.x=this._vector.x,e.position.y=this._vector.y,e.position.z=this._vector.z}toJSON(){return this}clone(){return new t}shapeType=P.Box;enabled=!0;alignToDirection=!1;angle=0;arc=360;arcSpread;arcSpeedMultiplier;arcMode;boxThickness;position;rotation;_rotation=new l;scale;radius;radiusThickness;sphericalDirectionAmount;randomDirectionAmount;randomPositionAmount;meshShapeType;meshRenderer;_meshObj;_meshGeometry;setMesh(e){this.meshRenderer=e,e?(this._meshObj=e.sharedMeshes[Math.floor(Math.random()*e.sharedMeshes.length)],this._meshGeometry=this._meshObj.geometry):(this._meshObj=void 0,this._meshGeometry=void 0)}system;_space;_worldSpaceMatrix=new r;_worldSpaceMatrixInverse=new r;constructor(){Se&&console.log(this)}update(e,t){}onUpdate(e,t,n,r){this.system=e,this._space=n,n===N.World&&(this._worldSpaceMatrix.copy(r.matrixWorld),this._worldSpaceMatrix.elements[0]=1,this._worldSpaceMatrix.elements[5]=1,this._worldSpaceMatrix.elements[10]=1,this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert())}applyRotation(e){let t=this.rotation.x!==0||this.rotation.y!==0||this.rotation.z!==0;return t&&(this._rotation.x=g.toRadians(this.rotation.x),this._rotation.y=g.toRadians(this.rotation.y),this._rotation.z=g.toRadians(this.rotation.z),this._rotation.order=`ZYX`,e.applyEuler(this._rotation)),t}_vector=new e(0,0,0);_temp=new e(0,0,0);_triangle=new f;onInitialize(e){this._vector.set(0,0,0),e.mesh=void 0,e.mesh_geometry=void 0;let t=this._temp.copy(this.position),n=this._space===N.World;n&&t.applyQuaternion(this.system.worldQuaternion);let r=this.radius;if(n&&(r*=this.system.worldScale.x),this.enabled){switch(this.shapeType){case P.Box:Se&&C.DrawWireBox(this.position,this.scale,14540253,1),this._vector.x=Math.random()*this.scale.x-this.scale.x/2,this._vector.y=Math.random()*this.scale.y-this.scale.y/2,this._vector.z=Math.random()*this.scale.z-this.scale.z/2,this._vector.add(t);break;case P.Cone:this.randomConePoint(this.position,this.angle,r,this.radiusThickness,this.arc,this.arcMode,this._vector);break;case P.Sphere:this.randomSpherePoint(this.position,r,this.radiusThickness,this.arc,this._vector);break;case P.Circle:this.randomCirclePoint(this.position,r,this.radiusThickness,this.arc,this._vector);break;case P.MeshRenderer:let n=this.meshRenderer;n?.destroyed==0&&this.setMesh(n);let i=e.mesh=this._meshObj,a=e.mesh_geometry=this._meshGeometry;if(i&&a)switch(this.meshShapeType){case V.Vertex:{let t=a.getAttribute(`position`),n=Math.floor(Math.random()*t.count);this._vector.fromBufferAttribute(t,n),this._vector.applyMatrix4(i.matrixWorld),e.mesh_normal=n}break;case V.Edge:break;case V.Triangle:{let t=a.index;if(t){let n=Math.random(),r=Math.random();n+r>1&&(n=1-n,r=1-r);let o=Math.floor(Math.random()*(t.count/3)),s=o*3,c=o*3+1,l=o*3+2;s=t.getX(s),c=t.getX(c),l=t.getX(l);let u=a.getAttribute(`position`);this._triangle.a.fromBufferAttribute(u,s),this._triangle.b.fromBufferAttribute(u,c),this._triangle.c.fromBufferAttribute(u,l),this._vector.set(0,0,0).addScaledVector(this._triangle.a,n).addScaledVector(this._triangle.b,r).addScaledVector(this._triangle.c,1-(n+r)),this._vector.applyMatrix4(i.matrixWorld),e.mesh_normal=o}}break}break;default:this._vector.set(0,0,0),h()&&!globalThis.__particlesystem_shapetype_unsupported&&(console.warn(`ParticleSystem ShapeType is not supported:`,P[this.shapeType]),globalThis.__particlesystem_shapetype_unsupported=!0);break}this.randomizePosition(this._vector,this.randomPositionAmount)}this.applyRotation(this._vector),n&&(this._vector.applyQuaternion(this.system.worldQuaternion),this._vector.add(this.system.worldPos)),Se&&C.DrawSphere(this._vector,.03,16711680,.5,!0)}_dir=new e;getDirection(e,t){if(!this.enabled)return this._dir.set(0,0,1),this._dir;switch(this.shapeType){case P.Box:this._dir.set(0,0,1);break;case P.Cone:this._dir.set(0,0,1);break;case P.Circle:case P.Sphere:let n=t.x,r=t.y,i=t.z;this._dir.set(n,r,i),this.system?.worldspace?this._dir.sub(this.system.worldPos):this._dir.sub(this.position);break;case P.MeshRenderer:let a=e.mesh,o=e.mesh_geometry;if(a&&o)switch(this.meshShapeType){case V.Vertex:{let t=o.getAttribute(`normal`),n=e.mesh_normal;this._dir.fromBufferAttribute(t,n)}break;case V.Edge:break;case V.Triangle:{let t=o.index;if(t){let n=e.mesh_normal,r=t.getX(n*3),i=t.getX(n*3+1),s=t.getX(n*3+2),c=o.getAttribute(`position`),l=x(),u=x(),d=x();l.fromBufferAttribute(c,r),u.fromBufferAttribute(c,i),d.fromBufferAttribute(c,s),l.sub(u),d.sub(u),l.cross(d),this._dir.copy(l).multiplyScalar(-1);let f=ie(a);this._dir.applyQuaternion(f)}}break}break;default:this._dir.set(0,0,1);break}return this._space===N.World&&this._dir.applyQuaternion(this.system.worldQuaternion),this.applyRotation(this._dir),this._dir.normalize(),this.spherizeDirection(this._dir,this.sphericalDirectionAmount),this.randomizeDirection(this._dir,this.randomDirectionAmount),Se&&(C.DrawSphere(t,.01,8925952,.5,!0),C.DrawDirection(t,this._dir,8925952,.5,!0)),this._dir}static _randomQuat=new d;static _tempVec=new e;randomizePosition(e,n){if(n<=0)return;let r=t._tempVec;r.set(Math.random()*2-1,Math.random()*2-1,Math.random()*2-1),r.x*=n*this.scale.x,r.y*=n*this.scale.y,r.z*=n*this.scale.z,e.add(r)}randomizeDirection(e,n){if(n===0)return;let r=t._randomQuat,i=t._tempVec;i.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize(),r.setFromAxisAngle(i,n*Math.random()*Math.PI),e.applyQuaternion(r)}spherizeDirection(t,n){if(n===0)return;let r=Math.random()*Math.PI*2,i=Math.acos(1-Math.random()*2),a=new e(Math.sin(i)*Math.cos(r),Math.sin(i)*Math.sin(r),Math.cos(i));t.lerp(a,n)}randomSpherePoint(e,t,n,r,i){let a=Math.random(),o=Math.random(),s=2*Math.PI*a*(r/360),c=Math.acos(2*o-1),l=g.lerp(1,1-(1-Math.random())**Math.PI,n)*t,u=e.x+this.scale.x*(-l*Math.sin(c)*Math.cos(s)),d=e.y+this.scale.y*(l*Math.sin(c)*Math.sin(s)),f=e.z+this.scale.z*(l*Math.cos(c));i.x=u,i.y=d,i.z=f}randomCirclePoint(e,t,n,r,i){let a=Math.random(),o=2*Math.PI*a*(r/360),s=g.lerp(1,1-(1-Math.random())**Math.PI,n)*t,c=e.x+this.scale.x*s*Math.cos(o),l=e.y+this.scale.y*s*Math.sin(o),u=e.z;i.x=c,i.y=l,i.z=u}_loopTime=0;_loopDirection=1;randomConePoint(e,t,n,r,i,a,o){let s=0,c=0;switch(a){case F.Random:s=Math.random(),c=Math.random();break;case F.PingPong:this._loopTime>1&&(this._loopDirection=-1),this._loopTime<0&&(this._loopDirection=1);case F.Loop:s=.5,c=Math.random(),this._loopTime+=this.system.deltaTime*this._loopDirection;break}let l=2*Math.PI*s*(i/360);switch(a){case F.PingPong:case F.Loop:l+=Math.PI+.5,l+=this._loopTime*Math.PI*2,l%=g.toRadians(i);break}let u=Math.acos(2*c-1),d=g.lerp(1,1-(1-Math.random())**Math.PI,r)*n,f=e.x+-d*Math.sin(u)*Math.cos(l),p=e.y+d*Math.sin(u)*Math.sin(l),m=e.z;o.x=f*this.scale.x,o.y=p*this.scale.y,o.z=m*this.scale.z}};O([_()],H.prototype,`shapeType`,void 0),O([_()],H.prototype,`enabled`,void 0),O([_()],H.prototype,`alignToDirection`,void 0),O([_()],H.prototype,`angle`,void 0),O([_()],H.prototype,`arc`,void 0),O([_()],H.prototype,`arcSpread`,void 0),O([_()],H.prototype,`arcSpeedMultiplier`,void 0),O([_()],H.prototype,`arcMode`,void 0),O([_(e)],H.prototype,`boxThickness`,void 0),O([_(e)],H.prototype,`position`,void 0),O([_(e)],H.prototype,`rotation`,void 0),O([_(e)],H.prototype,`scale`,void 0),O([_()],H.prototype,`radius`,void 0),O([_()],H.prototype,`radiusThickness`,void 0),O([_()],H.prototype,`sphericalDirectionAmount`,void 0),O([_()],H.prototype,`randomDirectionAmount`,void 0),O([_()],H.prototype,`randomPositionAmount`,void 0),O([_()],H.prototype,`meshShapeType`,void 0),O([_(oe)],H.prototype,`meshRenderer`,void 0);var U=class{damping;enabled;frequency;octaveCount;octaveMultiplier;octaveScale;positionAmount;quality;remap;remapEnabled;remapMultiplier;remapX;remapXMultiplier;remapY;remapYMultiplier;remapZ;remapZMultiplier;scrollSpeedMultiplier;separateAxes;strengthMultiplier;strengthX;strengthXMultiplier;strengthY;strengthYMultiplier;strengthZ;strengthZMultiplier;_noise;_time=0;update(e){this._time+=e.time.deltaTime*this.scrollSpeedMultiplier}_temp=new e;apply(e,t,n,r,i,a){if(!this.enabled)return;this._noise||=ye(()=>0);let o=this._temp.set(t.x,t.y,t.z).multiplyScalar(this.frequency),s=this._noise(o.x,o.y,o.z,this._time),c=this._noise(o.x,o.y,o.z,this._time+1e3*this.frequency),l=this._noise(o.x,o.y,o.z,this._time+2e3*this.frequency);this._temp.set(s,c,l).normalize();let u=i/a,d=this.positionAmount.evaluate(u);this.separateAxes?(this._temp.x*=d*this.strengthXMultiplier,this._temp.y*=d*this.strengthYMultiplier,this._temp.z*=d*this.strengthZMultiplier):(this.strengthX&&(d*=this.strengthX.evaluate(u)*1.5),this._temp.multiplyScalar(d)),n.x+=this._temp.x,n.y+=this._temp.y,n.z+=this._temp.z}};O([_()],U.prototype,`damping`,void 0),O([_()],U.prototype,`enabled`,void 0),O([_()],U.prototype,`frequency`,void 0),O([_()],U.prototype,`octaveCount`,void 0),O([_()],U.prototype,`octaveMultiplier`,void 0),O([_()],U.prototype,`octaveScale`,void 0),O([_(I)],U.prototype,`positionAmount`,void 0),O([_()],U.prototype,`quality`,void 0),O([_(I)],U.prototype,`remap`,void 0),O([_()],U.prototype,`remapEnabled`,void 0),O([_()],U.prototype,`remapMultiplier`,void 0),O([_(I)],U.prototype,`remapX`,void 0),O([_()],U.prototype,`remapXMultiplier`,void 0),O([_(I)],U.prototype,`remapY`,void 0),O([_()],U.prototype,`remapYMultiplier`,void 0),O([_(I)],U.prototype,`remapZ`,void 0),O([_()],U.prototype,`remapZMultiplier`,void 0),O([_()],U.prototype,`scrollSpeedMultiplier`,void 0),O([_()],U.prototype,`separateAxes`,void 0),O([_()],U.prototype,`strengthMultiplier`,void 0),O([_(I)],U.prototype,`strengthX`,void 0),O([_()],U.prototype,`strengthXMultiplier`,void 0),O([_(I)],U.prototype,`strengthY`,void 0),O([_()],U.prototype,`strengthYMultiplier`,void 0),O([_(I)],U.prototype,`strengthZ`,void 0),O([_()],U.prototype,`strengthZMultiplier`,void 0);var Ee;(function(e){e[e.PerParticle=0]=`PerParticle`,e[e.Ribbon=1]=`Ribbon`})(Ee||={});var De;(function(e){e[e.Stretch=0]=`Stretch`,e[e.Tile=1]=`Tile`,e[e.DistributePerSegment=2]=`DistributePerSegment`,e[e.RepeatPerSegment=3]=`RepeatPerSegment`})(De||={});var W=class{enabled;attachRibbonToTransform=!1;colorOverLifetime;colorOverTrail;dieWithParticles=!0;inheritParticleColor=!0;lifetime;lifetimeMultiplier;minVertexDistance=.2;mode=Ee.PerParticle;ratio=1;ribbonCount=1;shadowBias=0;sizeAffectsLifetime=!1;sizeAffectsWidth=!1;splitSubEmitterRibbons=!1;textureMode=De.Stretch;widthOverTrail;widthOverTrailMultiplier;worldSpace=!1;getWidth(e,t,n,r){let i=this.widthOverTrail.evaluate(n,r);return e*=i,e}getColor(e,t,n){let r=this.colorOverTrail.evaluate(n),i=this.colorOverLifetime.evaluate(t);e.x*=r.r*i.r,e.y*=r.g*i.g,e.z*=r.b*i.b,`alpha`in r&&`alpha`in i&&(e.w*=r.alpha*i.alpha)}};O([_()],W.prototype,`enabled`,void 0),O([_()],W.prototype,`attachRibbonToTransform`,void 0),O([_(L)],W.prototype,`colorOverLifetime`,void 0),O([_(L)],W.prototype,`colorOverTrail`,void 0),O([_()],W.prototype,`dieWithParticles`,void 0),O([_()],W.prototype,`inheritParticleColor`,void 0),O([_(I)],W.prototype,`lifetime`,void 0),O([_()],W.prototype,`lifetimeMultiplier`,void 0),O([_()],W.prototype,`minVertexDistance`,void 0),O([_()],W.prototype,`mode`,void 0),O([_()],W.prototype,`ratio`,void 0),O([_()],W.prototype,`ribbonCount`,void 0),O([_()],W.prototype,`shadowBias`,void 0),O([_()],W.prototype,`sizeAffectsLifetime`,void 0),O([_()],W.prototype,`sizeAffectsWidth`,void 0),O([_()],W.prototype,`splitSubEmitterRibbons`,void 0),O([_()],W.prototype,`textureMode`,void 0),O([_(I)],W.prototype,`widthOverTrail`,void 0),O([_()],W.prototype,`widthOverTrailMultiplier`,void 0),O([_()],W.prototype,`worldSpace`,void 0);var G=class{enabled;space=N.Local;orbitalX;orbitalY;orbitalZ;orbitalXMultiplier;orbitalYMultiplier;orbitalZMultiplier;orbitalOffsetX;orbitalOffsetY;orbitalOffsetZ;speedModifier;speedModifierMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;_system;update(e){this._system=e}_temp=new e;_temp2=new e;_temp3=new e;_hasOrbital=!1;_index=0;_orbitalMatrix=new r;init(e){this._index==0&&(e.debug=!0),this._index+=1,e.orbitx=this.orbitalX.evaluate(Math.random()),e.orbity=this.orbitalY.evaluate(Math.random()),e.orbitz=this.orbitalZ.evaluate(Math.random()),this._hasOrbital=e.orbitx!=0||e.orbity!=0||e.orbitz!=0}apply(e,t,n,r,i,a,o){if(!this.enabled)return;let s=a/o,c=this.speedModifier.evaluate(s)*this.speedModifierMultiplier,l=this.x.evaluate(s),u=this.y.evaluate(s),d=this.z.evaluate(s);if(this._temp.set(-l,u,d),this._system&&this._system.main.simulationSpace===N.World&&this._temp.applyQuaternion(this._system.worldQuaternion),this._hasOrbital&&this._system?.worldPos){let e=this._temp2.set(n.x,n.y,n.z),t=this.orbitalXMultiplier,a=this.orbitalYMultiplier,o=this.orbitalZMultiplier,s=c*Math.PI*2*10,l=Math.cos(s*t),u=Math.sin(s*t),d=Math.cos(s*a),f=Math.sin(s*a),p=Math.cos(s*o),m=Math.sin(s*o),h=e.x*(d*p)+e.y*(d*m)+e.z*-f,g=e.x*(u*f*p-l*m)+e.y*(u*f*m+l*p)+e.z*(u*d),_=e.x*(l*f*p+u*m)+e.y*(l*f*m-u*p)+e.z*(l*d),v=this._temp3.set(e.x-h,e.y-g,e.z-_);v.normalize(),v.multiplyScalar(.2/i*Math.max(this.orbitalXMultiplier,this.orbitalYMultiplier,this.orbitalZMultiplier)),r.x+=v.x,r.y+=v.y,r.z+=v.z}r.x+=this._temp.x,r.y+=this._temp.y,r.z+=this._temp.z,r.x*=c,r.y*=c,r.z*=c}};O([_()],G.prototype,`enabled`,void 0),O([_()],G.prototype,`space`,void 0),O([_(I)],G.prototype,`orbitalX`,void 0),O([_(I)],G.prototype,`orbitalY`,void 0),O([_(I)],G.prototype,`orbitalZ`,void 0),O([_()],G.prototype,`orbitalXMultiplier`,void 0),O([_()],G.prototype,`orbitalYMultiplier`,void 0),O([_()],G.prototype,`orbitalZMultiplier`,void 0),O([_()],G.prototype,`orbitalOffsetX`,void 0),O([_()],G.prototype,`orbitalOffsetY`,void 0),O([_()],G.prototype,`orbitalOffsetZ`,void 0),O([_(I)],G.prototype,`speedModifier`,void 0),O([_()],G.prototype,`speedModifierMultiplier`,void 0),O([_(I)],G.prototype,`x`,void 0),O([_()],G.prototype,`xMultiplier`,void 0),O([_(I)],G.prototype,`y`,void 0),O([_()],G.prototype,`yMultiplier`,void 0),O([_(I)],G.prototype,`z`,void 0),O([_()],G.prototype,`zMultiplier`,void 0);var Oe;(function(e){e[e.Lifetime=0]=`Lifetime`,e[e.Speed=1]=`Speed`,e[e.FPS=2]=`FPS`})(Oe||={});var ke;(function(e){e[e.Grid=0]=`Grid`,e[e.Sprites=1]=`Sprites`})(ke||={});var Ae;(function(e){e[e.Custom=0]=`Custom`,e[e.Random=1]=`Random`,e[e.MeshIndex=2]=`MeshIndex`})(Ae||={});var je;(function(e){e[e.WholeSheet=0]=`WholeSheet`,e[e.SingleRow=1]=`SingleRow`})(je||={});var K=class{animation;enabled;cycleCount;frameOverTime;frameOverTimeMultiplier;numTilesX;numTilesY;startFrame;startFrameMultiplier;rowMode;rowIndex;spriteCount;timeMode;sampleOnceAtStart(){if(this.timeMode===Oe.Lifetime)switch(this.frameOverTime.mode){case j.Constant:case j.TwoConstants:case j.TwoCurves:case j.Curve:return!0}return!1}getStartIndex(){return this.sampleOnceAtStart()?Math.random()*(this.numTilesX*this.numTilesY):0}evaluate(e){if(!this.sampleOnceAtStart())return this.getIndex(e)}getIndex(e){let t=this.numTilesX*this.numTilesY;e*=this.cycleCount;let n=this.frameOverTime.evaluate(e%1);return n*=this.frameOverTimeMultiplier,n*=t,n%=t,n=Math.floor(n),n}};O([_()],K.prototype,`animation`,void 0),O([_()],K.prototype,`enabled`,void 0),O([_()],K.prototype,`cycleCount`,void 0),O([_(I)],K.prototype,`frameOverTime`,void 0),O([_()],K.prototype,`frameOverTimeMultiplier`,void 0),O([_()],K.prototype,`numTilesX`,void 0),O([_()],K.prototype,`numTilesY`,void 0),O([_(I)],K.prototype,`startFrame`,void 0),O([_()],K.prototype,`startFrameMultiplier`,void 0),O([_()],K.prototype,`rowMode`,void 0),O([_()],K.prototype,`rowIndex`,void 0),O([_()],K.prototype,`spriteCount`,void 0),O([_()],K.prototype,`timeMode`,void 0);var q=class{enabled;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){return this.enabled?this.separateAxes?0:this.z.evaluate(e,t)*-1:0}};O([_()],q.prototype,`enabled`,void 0),O([_()],q.prototype,`separateAxes`,void 0),O([_(I)],q.prototype,`x`,void 0),O([_()],q.prototype,`xMultiplier`,void 0),O([_(I)],q.prototype,`y`,void 0),O([_()],q.prototype,`yMultiplier`,void 0),O([_(I)],q.prototype,`z`,void 0),O([_()],q.prototype,`zMultiplier`,void 0);var J=class{enabled;range;separateAxes;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t){if(!this.enabled)return 0;if(!this.separateAxes){let e=g.lerp(this.range.x,this.range.y,t);return this.z.evaluate(e)*-1}return 0}};O([_()],J.prototype,`enabled`,void 0),O([_()],J.prototype,`range`,void 0),O([_()],J.prototype,`separateAxes`,void 0),O([_(I)],J.prototype,`x`,void 0),O([_()],J.prototype,`xMultiplier`,void 0),O([_(I)],J.prototype,`y`,void 0),O([_()],J.prototype,`yMultiplier`,void 0),O([_(I)],J.prototype,`z`,void 0),O([_()],J.prototype,`zMultiplier`,void 0);var Y=class{enabled;dampen;drag;dragMultiplier;limit;limitMultiplier;separateAxes;limitX;limitXMultiplier;limitY;limitYMultiplier;limitZ;limitZMultiplier;multiplyDragByParticleSize=!1;multiplyDragByParticleVelocity=!1;space;_temp=new e;_temp2=new e;apply(e,t,n,r,i,a,o){if(this.enabled){let e=this.limit.evaluate(i)*this.limitMultiplier;if(t.length()>e){this._temp.copy(t).normalize().multiplyScalar(e);let r=this.dampen*.5;t.x=g.lerp(t.x,this._temp.x,r),t.y=g.lerp(t.y,this._temp.y,r),t.z=g.lerp(t.z,this._temp.z,r),n.x=g.lerp(n.x,this._temp.x,r),n.y=g.lerp(n.y,this._temp.y,r),n.z=g.lerp(n.z,this._temp.z,r)}}}};O([_()],Y.prototype,`enabled`,void 0),O([_()],Y.prototype,`dampen`,void 0),O([_(I)],Y.prototype,`drag`,void 0),O([_()],Y.prototype,`dragMultiplier`,void 0),O([_(I)],Y.prototype,`limit`,void 0),O([_()],Y.prototype,`limitMultiplier`,void 0),O([_()],Y.prototype,`separateAxes`,void 0),O([_(I)],Y.prototype,`limitX`,void 0),O([_()],Y.prototype,`limitXMultiplier`,void 0),O([_(I)],Y.prototype,`limitY`,void 0),O([_()],Y.prototype,`limitYMultiplier`,void 0),O([_(I)],Y.prototype,`limitZ`,void 0),O([_()],Y.prototype,`limitZMultiplier`,void 0),O([_()],Y.prototype,`multiplyDragByParticleSize`,void 0),O([_()],Y.prototype,`multiplyDragByParticleVelocity`,void 0),O([_()],Y.prototype,`space`,void 0);var Me;(function(e){e[e.Initial=0]=`Initial`,e[e.Current=1]=`Current`})(Me||={});var Ne=class t{enabled;curve;curveMultiplier;mode;clone(){let e=new t;return e.enabled=this.enabled,e.curve=this.curve?.clone(),e.curveMultiplier=this.curveMultiplier,e.mode=this.mode,e}system;get _lastWorldPosition(){return this.system._iv_lastWorldPosition||(this.system._iv_lastWorldPosition=new e),this.system._iv_lastWorldPosition}get _velocity(){return this.system._iv_velocity||(this.system._iv_velocity=new e),this.system._iv_velocity}_temp=new e;_firstUpdate=!0;awake(e){this.system=e,this.reset()}reset(){this._firstUpdate=!0}update(e){this.enabled&&this.system.worldspace!==!1&&(this._firstUpdate?(this._firstUpdate=!1,this._velocity.set(0,0,0),this._lastWorldPosition.copy(this.system.worldPos)):this._lastWorldPosition&&(this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1/this.system.deltaTime),this._lastWorldPosition.copy(this.system.worldPos)))}applyInitial(e){if(this.enabled&&this.system.worldspace!==!1&&this.mode===Me.Initial){let t=this.curve.evaluate(Math.random(),Math.random());this._temp.copy(this._velocity).multiplyScalar(t),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}_frames=0;applyCurrent(e,t,n){if(this.enabled&&this.system&&this.system.worldspace!==!1&&this.mode===Me.Current){let r=this.curve.evaluate(t,n);this._temp.copy(this._velocity).multiplyScalar(r),e.x+=this._temp.x,e.y+=this._temp.y,e.z+=this._temp.z}}};O([_()],Ne.prototype,`enabled`,void 0),O([_(I)],Ne.prototype,`curve`,void 0),O([_()],Ne.prototype,`curveMultiplier`,void 0),O([_()],Ne.prototype,`mode`,void 0);var X=class{enabled;range;separateAxes;size;sizeMultiplier;x;xMultiplier;y;yMultiplier;z;zMultiplier;evaluate(e,t,n,r){let i=e.length(),a=g.remap(i,this.range.x,this.range.y,0,1),o=this.size.evaluate(a,n);return r.x*=o,r.y*=o,r.z*=o,r}};O([_()],X.prototype,`enabled`,void 0),O([_(s)],X.prototype,`range`,void 0),O([_()],X.prototype,`separateAxes`,void 0),O([_(I)],X.prototype,`size`,void 0),O([_()],X.prototype,`sizeMultiplier`,void 0),O([_(I)],X.prototype,`x`,void 0),O([_()],X.prototype,`xMultiplier`,void 0),O([_(I)],X.prototype,`y`,void 0),O([_()],X.prototype,`yMultiplier`,void 0),O([_(I)],X.prototype,`z`,void 0),O([_()],X.prototype,`zMultiplier`,void 0);var Pe=class{enabled;range;color;evaluate(e,t,n){let r=e.length(),i=g.remap(r,this.range.x,this.range.y,0,1),a=this.color.evaluate(i,t);n.x*=a.r,n.y*=a.g,n.z*=a.b,`alpha`in a&&(n.w*=a.alpha)}};O([_()],Pe.prototype,`enabled`,void 0),O([_(s)],Pe.prototype,`range`,void 0),O([_(L)],Pe.prototype,`color`,void 0),new e(1,1,1),new e(0,0,1);var Fe=class{system;particleSystem;subSystem;subParticleSystem;type=`NeedleParticleSubEmitter`;emitterType;emitterProbability;q_=new d;v_=new e;v2_=new e;_emitterMatrix=new de;_circularBuffer;constructor(e,t,n,r){this.system=e,this.particleSystem=t,this.subSystem=n,this.subParticleSystem=r,this.subParticleSystem&&this.subParticleSystem&&(this.subParticleSystem.onlyUsedByOther=!0),this._circularBuffer=new p(()=>new de,1e3)}clone(){throw Error(`Method not implemented.`)}initialize(e){e.emissionState={burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0},this._emitterMatrix.copy(this.subSystem.matrixWorld).invert().premultiply(this.system.matrixWorld),this._emitterMatrix.setPosition(0,0,0),this.emitterType===ze.Birth&&this.run(e)}update(e,t){this.run(e)}frameUpdate(e){}toJSON(){}reset(){}run(e){if(this.subSystem.currentParticles>=this.subSystem.main.maxParticles||!this.subParticleSystem||!e.emissionState||this.emitterProbability&&Math.random()>this.emitterProbability)return;let t=this.system.deltaTime;if(this.emitterType===ze.Death){let n=e.life;if(e[Qe]!==void 0&&(n=e[Qe]),!(e.age+t*1.2>=n))return;let r=this.subSystem.main.maxParticles-this.subSystem.currentParticles;e.emissionState.waitEmiting=r}let n=new de;n.set(1,0,0,e.position.x,0,1,0,e.position.y,0,0,1,e.position.z,0,0,0,1),this.particleSystem.worldSpace||n.multiplyMatrices(this._emitterMatrix,n),this.subParticleSystem.emit(t,e.emissionState,n)}},Z=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ie=ne(`debugparticles`),Le=ne(`noprogressive`),Re=ne(`debugprogressive`),ze;(function(e){e[e.Birth=0]=`Birth`,e[e.Collision=1]=`Collision`,e[e.Death=2]=`Death`,e[e.Trigger=3]=`Trigger`,e[e.Manual=4]=`Manual`})(ze||={});var Q=class extends b{renderMode;particleMaterial;trailMaterial;particleMesh;maxParticleSize;minParticleSize;velocityScale;cameraVelocityScale;lengthScale;start(){if(this.maxParticleSize!==.5&&this.minParticleSize!==0&&h()){let e=`ParticleSystem \"${this.name}\" has non-default min/max particle size. This may not render correctly. Please set min size to 0 and the max size to 0.5 and use the \"StartSize\" setting instead`;console.warn(e)}}get transparent(){return this.particleMaterial?.transparent??!1}getMaterial(e=!1){let r=e===!0&&this.trailMaterial?this.trailMaterial:this.particleMaterial;if(r){if(r.type===`MeshStandardMaterial`){Ie&&console.debug(`ParticleSystemRenderer.getMaterial: MeshStandardMaterial detected, converting to MeshBasicMaterial. See https://github.com/Alchemist0823/three.quarks/issues/101`),`map`in r&&r.map&&(r.map.colorSpace=t,r.map.premultiplyAlpha=!1);let i=new n;i.copy(r),e?this.trailMaterial=i:this.particleMaterial=i}r.map&&(r.map.colorSpace=t,r.map.premultiplyAlpha=!1),e&&r.side===0&&(r=r.clone(),r.side=1,e?this.trailMaterial=r:this.particleMaterial=r)}return r&&!Le&&r._didRequestTextureLOD===void 0&&(r._didRequestTextureLOD=0,Re&&console.log(`Load material LOD`,r.name),ae.assignTextureLOD(r,0)),r}getMesh(e){let t=null;if(!t&&(this.particleMesh instanceof i&&(t=this.particleMesh.geometry),t===null)){t=new u(1,1);let e=t.attributes.uv;for(let t=0;t=this.system.maxParticles)return 0;let e=this.system.emission.rateOverTime.evaluate(this.system.time/this.system.duration,Math.random());if(this.system.deltaTime>0){let t=this.system.emission.rateOverDistance.evaluate(this.system.time/this.system.duration,Math.random()),n=this._lastDistance/this.system.deltaTime*t;Number.isFinite(n)||(n=0),e+=n}let t=this.system.emission.getBurst();t>0&&(e+=t/this.system.deltaTime);let n=this.system.maxParticles-this.system.currentParticles;return g.clamp(e,0,n/this.system.deltaTime)}},We=class extends Ve{genValue(){return this.system.isPlaying,0}},Ge=class{system;get context(){return this.system.context}constructor(e){this.type=Object.getPrototypeOf(this).constructor.name||`ParticleSystemBaseBehaviour`,e&&(this.system=e)}type;initialize(e){}update(e,t){}frameUpdate(e){}toJSON(){throw Error(`Method not implemented.`)}clone(){throw Error(`Method not implemented.`)}reset(){}},Ke=class extends Ge{type=`NeedleTextureSheet`;update(e,t){let n=this.system.textureSheetAnimation;if(n.enabled){let t=e.age/e.life,r=n.evaluate(t);r!==void 0&&(e.uvTile=r)}}},qe=Symbol(`particleRotation`),Je=class extends Ge{type=`NeedleRotation`;initialize(e){e[qe]=Math.random()}update(e,t){if(e.rotation===void 0)return;let n=e.age/e.life;if(typeof e.rotation==`number`&&(this.system.rotationOverLifetime.enabled?e.rotation+=this.system.rotationOverLifetime.evaluate(n,e[qe])*t:this.system.renderer.renderMode===k.Billboard&&(e.rotation=Math.PI),this.system.rotationBySpeed.enabled)){let r=e.velocity.length();e.rotation+=this.system.rotationBySpeed.evaluate(n,r)*t}}},Ye=Symbol(`sizeLerpFactor`),Xe=new e,Ze=class extends Ge{type=`NeedleSize`;_minSize=0;_maxSize=1;initialize(e){e[Ye]=Math.random(),this._minSize=this.system.renderer.minParticleSize,this._maxSize=this.system.renderer.maxParticleSize}update(e,t){let n=e.age/e.life,r=1;this.system.sizeOverLifetime.enabled&&(r*=this.system.sizeOverLifetime.evaluate(n,void 0,e[Ye]).x);let i=1;this.system.renderer.renderMode!==k.Mesh&&(i=this.system.worldScale.x/this.system.cameraScale);let a=x(e.startSize).multiplyScalar(r*i);if(e.size.set(a.x,a.y,a.z),this.system.localspace){let t=gt(this.system,Xe);e.size.x*=t.x,e.size.y*=t.y,e.size.z*=t.z}}},Qe=Symbol(`particleLife`),$e=Symbol(`trailLifetime`),et=Symbol(`trailStartLength`),tt=Symbol(`trailWidthRandom`),nt=class extends Ge{type=`NeedleTrail`;initialize(e){e instanceof fe&&(e[Qe]=e.life,this.system.trails.enabled&&this.system.trails.dieWithParticles===!1&&(e[$e]=this.system.trails.lifetime.evaluate(Math.random(),Math.random()),e.life+=e[$e]),e[et]=e.length,e[tt]=Math.random())}update(e){if(this.system.trails?.enabled&&e instanceof fe){let t=e,n=e.age/e[Qe],r=e.previous.values(),i=e.previous.length;for(let a=0;ae[Qe]){e.velocity.set(0,0,0);let n=(e.age-e[Qe])/e[$e];t.length=g.lerp(e[et],0,n)}}}},rt=Symbol(`startVelocity`),it=Symbol(`gravityModifier`),at=Symbol(`gravitySpeed`),ot=Symbol(`velocity lerp factor`),st=new e;new d;var ct=class extends Ge{type=`NeedleVelocity`;_gravityDirection=new e;initialize(e){let t=this.system.main.simulationSpeed;e.startSpeed=this.system.main.startSpeed.evaluate(Math.random(),Math.random());let n=this.system.shape.getDirection(e,e.position);e.velocity.x=n.x*e.startSpeed,e.velocity.y=n.y*e.startSpeed,e.velocity.z=n.z*e.startSpeed,this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyInitial(e.velocity),e[rt]?e[rt].copy(e.velocity):e[rt]=e.velocity.clone();let r=this.system.main.gravityModifier.evaluate(Math.random(),Math.random());e[it]=r*t,e[at]=r*t*.5,e[ot]=Math.random(),this.system.velocityOverLifetime?.init(e),this._gravityDirection.set(0,-1,0),this.system.main.simulationSpace===N.Local&&this._gravityDirection.applyQuaternion(this.system.worldQuaternionInverted).normalize()}update(e,t){let n=e[rt],r=e[it];if(r!==0){let i=r*e[at];st.copy(this._gravityDirection).multiplyScalar(i),e[at]+=t*.05,n.add(st)}e.velocity.copy(n);let i=e.age/e.life;this.system.inheritVelocity?.enabled&&this.system.inheritVelocity.applyCurrent(e.velocity,i,e[ot]);let a=this.system.noise;a.enabled&&a.apply(0,e.position,e.velocity,t,e.age,e.life);let o=this.system.sizeBySpeed;o?.enabled&&(e.size=o.evaluate(e.velocity,i,e[ot],e.size));let s=this.system.colorBySpeed;s?.enabled&&s.evaluate(e.velocity,e[ot],e.color);let c=this.system.velocityOverLifetime;c.enabled&&c.apply(e,0,e.position,e.velocity,t,e.age,e.life);let l=this.system.limitVelocityOverLifetime;if(l.enabled&&l.apply(e.position,n,e.velocity,e.size,i,t,1),this.system.worldspace){let t=this.system.worldScale;e.velocity.x*=t.x,e.velocity.y*=t.y,e.velocity.z*=t.z}}},lt=Symbol(`colorLerpFactor`),ut=new y(1,1,1,1),dt=new y(1,1,1,1),ft=class extends Ge{type=`NeedleColor`;initialize(e){}_init(e){let t=this.system.renderer.particleMaterial;dt.copy(this.system.main.startColor.evaluate(Math.random())),t?.color&&(ut.copy(t.color),dt.multiply(ut)),dt.convertLinearToSRGB(),e.startColor.set(dt.r,dt.g,dt.b,dt.alpha),e.color.copy(e.startColor),e[lt]=Math.random()}update(e,t){if(e.age===0&&this._init(e),this.system.colorOverLifetime.enabled){let t=e.age/e.life,n=this.system.colorOverLifetime.color.evaluate(t,e[lt]);e.color.set(n.r,n.g,n.b,`alpha`in n?n.alpha:1).multiply(e.startColor)}else e.color.copy(e.startColor)}},pt=class{system;emission;get anim(){return this.system.textureSheetAnimation}constructor(e){this.system=e,this.emission=new Ue(this.system)}get prewarm(){return!1}get material(){return this.system.renderer.getMaterial(this.system.trails.enabled)}get layers(){return this.system.gameObject.layers}update(){this.emission.update()}autoDestroy;get looping(){return this.system.main.loop}get duration(){return this.system.duration}get shape(){return this.system.shape}get startLife(){return new Be(this.system.main.startLifetime)}get startSpeed(){return new Be(this.system.main.startSpeed)}get startRotation(){return new Be(this.system.main.startRotation)}get startSize(){return new Be(this.system.main.startSize)}startLength;get startColor(){return new le(new ce(1,1,1,1))}get emissionOverTime(){return this.emission}get emissionOverDistance(){return new We(this.system)}emissionBursts;onlyUsedByOther;behaviors=[];get instancingGeometry(){return this.system.renderer.getMesh(this.system.renderer.renderMode).geometry}get renderMode(){if(this.system.trails.enabled===!0)return w.Trail;switch(this.system.renderer.renderMode){case k.Billboard:return w.BillBoard;case k.Stretch:return w.StretchedBillBoard;case k.HorizontalBillboard:return w.HorizontalBillBoard;case k.VerticalBillboard:return w.VerticalBillBoard;case k.Mesh:return w.Mesh}return w.BillBoard}rendererEmitterSettings={startLength:new se(220),followLocalOrigin:!1};get speedFactor(){let e=this.system.main.simulationSpeed;return this.system.renderer?.renderMode===k.Stretch&&(e*=this.system.renderer.velocityScale??1),e}flatWhiteTexture;clonedTexture={original:void 0,clone:void 0};get texture(){let e=this.material;if(e&&e.map){let n=e.map;if(this.clonedTexture.original!==n||!this.clonedTexture.clone){let e=n.clone();e.premultiplyAlpha=!1,e.colorSpace=t,this.clonedTexture.original=n,this.clonedTexture.clone=e}return this.clonedTexture.clone}return this.flatWhiteTexture||=v(new y(1,1,1,1),1),this.flatWhiteTexture}get startTileIndex(){return new He(this.system)}get uTileCount(){return this.anim.enabled?this.anim?.numTilesX:void 0}get vTileCount(){return this.anim.enabled?this.anim?.numTilesY:void 0}get renderOrder(){return 1}get blending(){return this.system.renderer.particleMaterial?.blending??1}get transparent(){return this.system.renderer.transparent}get worldSpace(){return this.system.main.simulationSpace===N.World}},mt=class{burstParticleIndex=0;burstParticleCount=0;isBursting=!1;travelDistance=0;previousWorldPos;burstIndex=0;burstWaveIndex=0;time=0;waitEmiting=0},$=class t extends b{play(e=!1){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.play(!1)},!0),this._isPlaying=!0,this._particleSystem&&(this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1),this.emission?.reset()}pause(e=!0){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.pause(!1)},!0),this._isPlaying=!1}stop(e=!0,n=!1){e&&re.foreachComponent(this.gameObject,e=>{e instanceof t&&e!==this&&e.stop(!1,n)},!0),this._isPlaying=!1,this._time=0,n&&this.reset()}reset(){this._time=0,this._particleSystem&&(this._particleSystem.particleNum=0,this._particleSystem.emissionState.time=0,this._particleSystem.emitEnded=!1,this.emission?.reset())}_state;emit(e){if(this._particleSystem){this.onUpdate(),e=Math.min(e,this.maxParticles-this.currentParticles),this._state||=new mt,this._state.waitEmiting=e,this._state.time=0;let t=this._particleSystem.emitEnded;this._particleSystem.emitEnded=!1,this._particleSystem.emit(this.deltaTime,this._state,this._particleSystem.emitter.matrixWorld),this._particleSystem.emitEnded=t}}get playOnAwake(){return this.main.playOnAwake}set playOnAwake(e){this.main.playOnAwake=e}colorOverLifetime;main;emission;sizeOverLifetime;shape;noise;trails;velocityOverLifetime;limitVelocityOverLifetime;inheritVelocity;colorBySpeed;textureSheetAnimation;rotationOverLifetime;rotationBySpeed;sizeBySpeed;get renderer(){return this._renderer}get isPlaying(){return this._isPlaying}get currentParticles(){return this._particleSystem?.particleNum??0}get maxParticles(){return this.main.maxParticles}get time(){return this._time}get duration(){return this.main.duration}get deltaTime(){return this.context.time.deltaTime*this.main.simulationSpeed}get scale(){return this.gameObject.scale.x}get cameraScale(){return this._cameraScale}_cameraScale=1;get container(){return this._container}get worldspace(){return this.main.simulationSpace===N.World}get localspace(){return this.main.simulationSpace===N.Local}__worldQuaternion=new d;get worldQuaternion(){return this.__worldQuaternion}_worldQuaternionInverted=new d;get worldQuaternionInverted(){return this._worldQuaternionInverted}_worldScale=new e;get worldScale(){return this._worldScale}_worldPositionFrame=-1;_worldPos=new e;get worldPos(){return this._worldPositionFrame!==this.context.time.frame&&(this._worldPositionFrame=this.context.time.frame,ee(this.gameObject,this._worldPos)),this._worldPos}get matrixWorld(){return this._container.matrixWorld}get isSubsystem(){return this._isUsedAsSubsystem}addBehaviour(e){return this._particleSystem?(e instanceof Ge&&(e.system=this),Ie&&console.debug(`Add custom ParticleSystem Behaviour`,e),this._particleSystem.addBehavior(e),!0):!1}removeBehaviour(e){if(!this._particleSystem)return!1;let t=this._particleSystem.behaviors,n=t.indexOf(e);return n===-1?!0:((h()||Ie)&&console.debug(`Remove custom ParticleSystem Behaviour`,n,e),t.splice(n,1),!0)}removeAllBehaviours(){return this._particleSystem?(this._particleSystem.behaviors.length=0,!0):!1}get behaviours(){return this._particleSystem?this._particleSystem.behaviors:null}get particleSystem(){return this._particleSystem??null}_renderer;_batchSystem;_particleSystem;_interface;_container;_time=0;_isPlaying=!0;_isUsedAsSubsystem=!1;_didPreWarm=!1;set bursts(e){for(let t=0;t0&&console.log(`SubEmitters: `,e,this),this._subEmitterSystems=e}_subEmitterSystems;onAfterDeserialize(e){if(this._subEmitterSystems&&Array.isArray(this._subEmitterSystems))for(let e of this._subEmitterSystems)e._deserialize(this.context,this.gameObject)}awake(){if(this._worldPositionFrame=-1,this._renderer=this.gameObject.getComponent(Q),!this.main)throw Error(`Not Supported: ParticleSystem needs a serialized MainModule. Creating new particle systems at runtime is currently not supported.`);this._container=new o,this._container.matrixAutoUpdate=!1,this.context.scene.add(this._container),this._batchSystem=new pe,this._batchSystem.name=this.gameObject.name,this._container.add(this._batchSystem),this._interface=new pt(this),this._particleSystem=new ue(this._interface),this._particleSystem.addBehavior(new Ze(this)),this._particleSystem.addBehavior(new ft(this)),this._particleSystem.addBehavior(new Ke(this)),this._particleSystem.addBehavior(new Je(this)),this._particleSystem.addBehavior(new ct(this)),this._particleSystem.addBehavior(new nt(this)),this._batchSystem.addSystem(this._particleSystem);let e=this._particleSystem.emitter;this.context.scene.add(e),this.inheritVelocity.system&&this.inheritVelocity.system!==this&&(this.inheritVelocity=this.inheritVelocity.clone()),this.inheritVelocity.awake(this),Ie&&(console.log(this),this.gameObject.add(new a(1)))}start(){this.addSubParticleSystems(),this.updateLayers(),this.renderer.particleMesh instanceof i&&this._interface.renderMode==w.Mesh&&ae.assignMeshLOD(this.renderer.particleMesh,0).then(e=>{e&&this.particleSystem&&this._interface.renderMode==w.Mesh&&(this.particleSystem.instancingGeometry=e)})}onDestroy(){this._container?.removeFromParent(),this._batchSystem?.removeFromParent(),this._particleSystem?.emitter.removeFromParent(),this._particleSystem?.dispose()}onEnable(){this.main&&(this.inheritVelocity&&(this.inheritVelocity.system=this),this._batchSystem&&(this._batchSystem.visible=!0),this.playOnAwake&&this.play(),this._isPlaying=this.playOnAwake)}onDisable(){this._batchSystem&&(this._batchSystem.visible=!1)}onBeforeRender(){this.main&&(this._didPreWarm===!1&&this.main?.prewarm===!0&&(this._didPreWarm=!0,this.preWarm()),this.onUpdate(),this.onSimulate(this.deltaTime))}preWarm(){if(!this.emission?.enabled||this.emission.rateOverTime.getMax()<=0)return;let e=1/60,t=this.main.duration,n=this.main.startLifetime.getMax(),r=Math.min(Math.max(t,n)/Math.max(.01,this.main.simulationSpeed),1e3),i=Math.ceil(r/e),a=Date.now();Ie&&console.log(`Particles ${this.name} - Prewarm for ${i} frames (${r} sec). Duration: ${t}, Lifetime: ${n}`);for(let t=0;t=this.maxParticles);t++){let t=Date.now()-a;if(t>2e3){console.warn(`Particles ${this.name} - Prewarm took too long. Aborting: ${t}`);break}this.onUpdate(),this.onSimulate(e)}}_lastBatchesCount=-1;onSimulate(e){if(this._batchSystem){let t=this.context.time.frameCount%60==0;this._lastBatchesCount!==this._batchSystem.batches.length&&(this._lastBatchesCount=this._batchSystem.batches.length,t=!0),t&&this.updateLayers(),this._batchSystem.update(e)}this._time+=e,this._time>this.duration&&(this._time=0)}updateLayers(){if(this._batchSystem)for(let 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

M(jn@IrbYk22Jn^@CmUl>t z`)fe#SG@Mg`Y^oIuEX}Vu4QG0Or2a@ju~!qdPGNpuYhQJs%9b@ywBOyc4yy?(ur6utid<$G)`UA*RpoNUt-#o{ zG*@I%3wJe?q-ZP3FBkm^NWI$KP2iHDsdb{x3-TrpZ zn!!KTnwdY=JgazJg`KUybvF<2V+9ZJV|^ar#|j?c$67qVo62x<^q}>(4C=Bw2k6~n zqwW(yiG#ND6s!%L!j~U&B3v(ZH;zNsZohQgTF!|#Yt4x_6-$&MTLH6T-n>~cZ{Dmw zZ{Dn!H*eOTH*Z$Vn>TCCo0H1CfunAgg)xtY_|JCamW&f2|1Yye!NgihJTULGgt2BjON z^}mH`$7{geH+NKJOYG~x%9g&`ua-BA+D+E&C3&n{w5putNXl!Obv(7*u>YX(%E4c% zymHZ^)~wP6+@s4&N8gmbGjzaF2;Aj%u<8M@(f^3)z`BhpEa0k6oz-;etZvSDhEg?{ zqG0l$2>EB$7myLL7gd|Z>k zk5>zA|2=njuIszf+=m%1)q1HdAvU= zi=qm)M1VWK2Y+?E!mV8s$enD^@d}CXczucRc!flGyuL(uyh0*8UP~f8V2!g<`tq;( zQq(VNnCX<5>BLt}r^vDfvt%pK3uG{nB76jK4gq-U@CE|5-B$#jPQcVFs+)Knu=Qq| z3)eK&-qxTh{^#Z8(?01#n@Uesef2(=?oGu=O&o_BVKKcZL$0%p5K5!x?-`3zW|E8@ z(7E=}jy~{I_`vdK{NqerlD;}q?90`b4xK4@%Tgp};n^VJgJ~LZc?aKpFZ>R#Z*H5^ z3m1WD8qG|E+d|5hBF6TB@V8%_G`p>I4Z ziV@GRThBSqxp)4KiBTS-o0A023&4bx#lg8>aSF)-cp$I<+Y14l*H85SiaOlw9>I?< z(G}AXppM<{k?SZCFqBC)-0m$@Wu0NM85-S}j*A%Mfi9SErngSd^^#k2t>+d|FkzT^ zn>V!P7NztCp0MR&q{c-$x^~C4ja!j`M-O7jMikuWBW+N-bC{v-?R z*92~FH=5_f?d?WoWR#!1`dZoCbQrX!OTcVvA<=vx)|l|rI&hywE4KmD~R-`lY*~XTwV81lEM4d{Ms56SFXrk9y$a zF}Al;AaiciTs|=4_%FgVx->4=E6Lgnx;vS zs4EZVOI=lfRVD8xK*+cO9u66ouiDD6vK@%BX_U%WuQ3Qpnj2e5^M`(~Y9?3~7p;q* z950#Tk-Bd0JFt;Uz;O>6!RjxQ%!-ly;0eCNF-|h)TgyE1qUj(SGah|*;^ffEa8WtH zuVCMxGlj|K9?qUafI7$Nf=uQfrWNxFnp;gVsUH;NZVthye4nMBeJPqAYHS5o-ZT6B|6j z_$j>kJYuc?{NqqR0P&xH01hBZtt2Z1+!qfW7iG-Hm*ZLjZ1N`&%D1jUs5)#rfd#v> zBaIMrq6eB2!`D(uH?(_0XRvqbQQM7$0X^V2a6AxlGeD!2LlI?h#A6M2?*DvkIpM_x zQ+2h%peYaap*jh0YY#>-n;K4Ou5}*S`j=;~NA{l7NpmoStYb3;^*naR}n26Ez zA{gZ32fOKD1XNV?{=N0^ff#Ydf*;d}e=i;+MKNW?gMP1n?vr!4&L?kSfGgh#I5&k~ z$=6G3R6%5v#is1ydr%vF?JE*?nk-C|Phg+0h90I#b05=W@t2Aw4C-7YsKtQ2ms4(3 zrYfP|Tob;eCfvLsz&AHH-eLh~aT0%oOP_@}l4kjDKkQR$%U=f4BOfb%na|(mQQR8q zQGWYj|D14Kxjud`|>J+=~d`H{=lU3NqqEy0he*?3DWN}>3vL; zPci`BM7xW!*Q*a=-&ZB}{o!7Y)Remv)(~(|g{%(aDtKouRDi3n6;izl+NItrpq))* z1#H6>vm%GJ0ae~_&@%0rJis`+j6g=L%8TaR%zWY!1F9dLI4{7wdGDQY|>$UlG(73-XFp zc$?4cr|IOzBNTOs2rVRcwFy~JvDjNI$fpL(sGoNac0!CZ*D8(o2+f%==E$x?um?kK zRO^kM>}8ZW0EkuEQSLd%1nvm|+Vq)bmnJN-)TB5_qj{1Ija+FY3lu1{vRuiM#oc17 zmd#4B%zX}u(Z(|D_g<`dUU{#^Js;7}KUa<#jEG$kRG;>o(~D&_(B1vttA+8XZja!D zB_5?h^}cUXyZ}85TpYc<^)lMSSA4R?9knhWAPU7(yyMiNV#zU*ZI#(DPTjkPw|qz& z-}v?z>5*(nIg17Pa_^OAW+CY<7UX3`hY0NMAkScVHfL9fizbSIRH~F_4>Z01ASa3+ zSecNsxV^2gq0gd%J!7NjD#@oHSQ)LHqBTAe_Rv+5xsORKRT2HqP)nnCT9DtXWAT#x zv=yyK7R@^k?Mm0@OCxf&yXLC9?r)X zdFmM^#XKeGlQ%0GV?Zl|!M^=qr>?&@XM8{}WuAR7oT{yV%A6)yN)J09SlwPQe(p{X z1K{2OSJt9se%Iw(bEfi!IyT8~D_5;LlNOjtR*+KqJ$RO+=|vv#7(3il*toK6D)`wP zZ%dewEzds8!M8pH30F13;IePnw*?INNjcyk9lvFK@&Xx|bDtbbLl8#3t{8V@9mBJ6 zlA+05FFYGZGYs}?GvTB<6ZF$FDsy9hR@hXXMHSMV#pQz+^`%u=Bz@<-H|UI}2~&Sd zqYhd2vVI%{TI~ljEquB~HO!g~m^C2wY;JnV(w94&9YFHim?Ddb=*(k*dD*gl*xgQW zyJqr$6)08|%t#c>No1a0QOHxcAC2enn!*f)y~fBfgIS1(W^Hu5t-j`Mbil2?Zr}@! z%gG;gLIWLm?vr226qI|+Wg?$2;U*zp_!d{exlcqT6)(H1t2{o*#0o-;x6!N9)s{>z zVdp_*xzeXQU4%t0vF}i6HJ2gEzJ`7Kg`Lud3~6mj-DT!MWUV?B@%f;E6sJaKOV~Fd zDof9|41y|*o2l-7!s^)Z5Z1lA%?k}%Tm zFy@p88S)wu0V!y|8$Iw6@TLjQSkXoyx%39X>mHX6FF>hwS}{ad|u1N1UaB*7yh zpxgX#5X>kegJ6#TZzx;jSVq&Z8K)-$xRFc>g@fek>{*Hh^1~<12&A_Yl>?CY3tX$w zkUfuF=g~gQYKYjL-t8j zOO)6Ae3F+bx~45Cxpk>`m_jH~O`RM^yfs*{PEEDKGgVyaXIA2JmvEhZuU%k=$D%c* z#Jh@hXp^?4#Z{eoLl>$+<%I=iy%%5&=Zu0uf?XwIrOqi>DJ)C9p{}vEDQ^qHzC|+B z4jvKqEfw9 z7L&!U|4kFnm=l^pNg~Htb38T*={Yni@kbJiXCEM2D~G^2ZZu?S8+CkpTCASprNi8+ zx#FQ{Ze1y=)lu<4iZ~S16`<3cYs~hpTQp+S_~Z_P_y%;<B_x3$&wH-Y1I%nFv?srge;{e1rSc_fVNH?$XQ~dn-hb^ZApbWyLG#tqEt> z5id)Xr`F~uu(>w8;lS8iE+om4(rC_j(TuRv$p;c_VRZOTGXfpGh^8Xnmv04P*Ma~3 zBpWuPH;=kwMYJ-x8CItvC^B=+aF`^4P&!R6D^DmtV@sB>@rzLA#tmW3>Sk}`BItI zItQxki?CwC8D2;gGcV}3Q>?v`cavxoz-3)H8?*6^wHESwg4?7S}*u$!Icl6OpyovL0~^(!!t?Pe~(IdR|F0UMIVWg3YuqeSSl19^8Z zR$ugIj;)B&ZKZw0Wc48%rgjatQDe)3h;42%Fk`Xaa*HPBY|kk#(8X;~n(0GK7XrV` z)j}f$vL+)L%{gdmnmY>AcHRwzQRcjp)&Sw8S9|pKmR@-kPEYfuRoIeT!ZAw4tqkCJ z)v&ux0Tz8}R7eW!^sXlhh}kLKzvyuUELVRO%ZZIe&b1HlvUZ6^?)Dcc%i^WG=TcU6 zC(s#pcKR!f<*K+WNX%K9>)x@2FZD*aSdg)1tk5uC>t0_g7nV+>^r_qnlLEI0FiZx2 z$UM4Ysbxl>6`A@rU|8DUYmCPJ9*mCU(-pS4b8kU@(U)^A)6Yp7&6PbM7;>@TGUqHB zjP~;JB+rf zi!6f_&$AewSMB>Q!?|NFs!pP5!JxUlzpuH7a(R3Ei$dfRER$q^XFns_jXtPSmy~S1 zw?TXG7VI6DcJJugWn-g1-%rPP49Z^^z9pmQFV5gCM0pX&K0c`6QccP;b@=WRCPlw- zf@bj*<6>n7QMG?C{z&Dm3KUw#!j5!q6EG)5tv^fDUfSMp&F*M|kj*!C7cQ!knQ4aaF;3~Ikb`&MFm`ogH=Gv7Il~R08~n%)q~CuMV(OU*(9eL zHY%R(&=k39zR=NwHJdv$9n6Q7gYM8))RlXjy}`+j*74Y@X1P|OOag*cCubGf9lRZT zY3}UwloUN%mc4ebM(&?=VF;!>IV+ILe5dghr6wL%vOK_%RuEa@x_Wj_ z_E>o|U2TMww6H&D-&h?*Nmd^?lTb1VMFW$tf;*530)4c-ZeA1>7H4M_4ZXVkXzF9> z^(&RH=3JaDQT8uKsUfPUmw>4fWY?OvzFTEvBOWy@*S6OK^gu_u{m?{L@g3wvBQ^(v z+B@B;hgMoj+H#c1wUo z6vxJL4M^`@gu-(ejF(IvE2t~3U@1o$E^O?^ach81Ok0(EHnzpwl6|GD9aIh&7Z80p z8|PQdskSj%t?uqxH+a|XYV<0ggO%@uf4BtSQ(8u%ly>_&8@+AM8+rci?Q7=O+W8SH zwYsSpHa37a3N1sHtz3&t+fk$CDdgW>5QTW(?hctX#8j>~Xk&3GkFJ7P9HGBzV9;hOqd;+*Oy2 z{O{FdB%GRzM71WbQAr~4f$^_%Z>GFAUu?I|iDUr{8(Xa?G^7?8=GpG0V0@nyC{?S& zBg1IdGHh<{avsftq`=>0V7{;Wgtb7DSpvm^v)C%xCcUIWZ2d)~SW#2C#yx|$Oc$;4 z3~2VEMX*17vSIdN-!Z&>pNrPvbTY|dYum0;gN(7bXhkhk_qg>gO0su(JWW~9+T$$3 z+i7?+-`p{jt!_o4#ito8gH}>#Rxg#84hvmmaIS9%n5BbrBqz_*6)#D86DtNR zlh3hNvg)~FEn?|QfYlSwY`WH)5Lv5GS(25%e2+uX1X+?4X`1&AdGAV1i!$RH8x3Uq zDl__Pf?tYzf&YF#>~HP|KDb|HvI@98Y*8F5%HFuS+BY_q2#?{C$)pFOYDVGsT53)- zS`DuWh&JX_8r>y@O5#wmFrG~*ttn>BU1$UJUgY(`nU=neELE9td|17RUufeVc@Fqi z9Vu$hXjMIB{mNlw9y^NqYh{UREZV?>c`MuhS(IcufjXI2SHT*4_eNUt zB{DPsn0fva>RjVswEy67Pe0D%XehLWM*Te8AS1lg9hOhbkj#HzzJgw#EY(~1=zNDH z>g^qtq#l0&H<{@^CHcoD1UB7Ui zE4R)9r0XBO229PQ9H#A}bP3HpX1ICU3)z!ZO$b>zXO_Z#lh)!`ED&y3@4IR0Id;vM zT!M|G;ydj>d6F#_<e$) z5oIpaI2-4fOyATYg{Vm_N@z)-BTh>1{Otv?$ zau7gYw=@UVvQgQr7MYn^7LQPsZ;ZK^GAKmTd^2my9FDx(qz|r1!ZHGnM06oGre+R# z=MK=O0~H(GUo7E=?^F~t${TB`1%9#`AL~`4f-~9GS(GBfw6hAp^S4KyrSy}#RjpM< zq{jhhp<5Vl$3G`k{6t$>gAr(z5v{7ipr7i^3YxTDy|8ps_QIYhXVvnn6+$1AwvRT3 z7o$nm;P#E8J27F!tRZSD8&jKmk-fN=Pg8kGIf~;}txt_^YN6el95Mft{Ice&!kFV@ zH3KY_3d~IvMz7Nf+_NfN_0+Kf|EdNLi@5^ysS1P(v;y>{3M7v-D^M@1P)!T8lINtF zXX$}xCFA?rP*f;K1^%FU=+sGQ1^D+`dz;Q%E17;&Gc_H@R`R@AmZ!O1$4xV!3W`_7 zM%uKevZ5=ihxWsXbS#&!0==Auj%u@d+rCa89L4Z2u3yCS^Dr}x_Of6&O=3#V;obUd zc#b}vWMrf3Qm{QqviRBjl`pvHJd1;6w`~AA~)xR6QLJ= zs9oZ;hQiq33+00mjo+BP+e-EVmEYyHU}c8N)HXSY(j*&NmZy76o||q9WWVb82<&*l zjP@Vkn z9(eGpw&t{R4vJw%9ef_*=5+{u)15JaJ2a?;1>U6EY}gW{IHeDD7HkFxfBxQziq;<4 zCo=}2=j0ju9Fmvtb3_i{=Zw6-#E86tp9^vWKLc_CKQZ|TKbPbhVTR-r{EWy*z;8l! z;U^_;;b%-gsB@pDSvz|R%=0zcQ}7=C8t2mH(z O;r|B>W0$14-v9uag%H&M literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js b/Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js new file mode 100644 index 0000000..d9c1cf5 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js @@ -0,0 +1,949 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./materialx.eMaybKAQ.js","./materialx.CnHmG--Y.js","./rolldown-runtime.CYVBeYYp.js","./three@0.169.19.js","./rapier3d.DBFmcAzL.js","./needle-engine.dep.DFJFZC0m.js","./postprocessing.Wy71DpiM.js","./N8AO.BjEz-iDD.js","./postprocessing.ao.CBPOoA3d.js","./three-examples.extras@0.169.19.js","./three-examples@0.169.19.js","./peerjs.UdR1_Ath.js","./needle-engine.BJP2NBoC.js","./needle-engine.dep.B3nA4wQ5.js","./three-mesh-bvh.B-oXEGo2.js","./GenerateMeshBVHWorker.DMD7ZOpN.js","./needle-engine@5.0.3.js","./needle-engine.extras.ChmId5tE.js","./needle-engine-webxr.Cp-vkXLP.js","./gltf-progressive.U_EoiMHF.js","./needle-engine-particles.ByRryBGL.js","./three-quarks.DALdLWPD.js","./needle-engine.extras.X7Svjxj0.js"])))=>i.map(i=>d[i]); +import{n as e,r as t,t as n}from"./rolldown-runtime.CYVBeYYp.js";import{d as r}from"./materialx.CnHmG--Y.js";import{$n as i,A as a,Ar as o,At as s,B as c,Bt as l,Cn as u,Fr as d,Ft as f,Gn as p,H as m,Ir as h,Jt as g,Kn as _,L as v,Nt as ee,On as y,Ot as b,Pr as te,Qn as ne,Qt as re,S as ie,St as ae,Wt as oe,X as se,Xt as ce,Yt as le,Z as ue,Zn as de,Zt as x,_ as fe,_n as pe,_r as me,a as he,ct as ge,d as _e,dt as ve,et as ye,fn as S,gn as C,gr as be,h as xe,i as Se,in as Ce,it as we,jr as Te,jt as Ee,k as De,kr as w,lr as Oe,mn as ke,mr as Ae,nr as je,o as Me,on as Ne,or as Pe,p as Fe,pr as Ie,qt as T,rr as Le,rt as Re,sr as ze,st as Be,tr as Ve,tt as He,ur as Ue,ut as We,v as Ge,vn as Ke,w as qe,wn as E,x as Je,xr as Ye,y as Xe,yn as Ze}from"./three@0.169.19.js";import{a as Qe,c as $e,i as et,n as tt,o as D,r as nt,s as rt,t as it}from"./three-mesh-ui.CgGzZ3ml.js";import{f as at,n as ot,p as st,r as ct,u as lt}from"./three-examples.extras@0.169.19.js";import{n as ut,o as dt,r as ft,t as pt}from"./gltf-progressive.U_EoiMHF.js";import{S as mt,_ as ht,d as gt,g as _t,h as vt,m as yt,u as bt,v as xt}from"./three-examples@0.169.19.js";var St=window.location.search.includes(`debugcontext`),O;(function(e){e.ContextRegistered=`ContextRegistered`,e.ContextCreationStart=`ContextCreationStart`,e.ContextCreated=`ContextCreated`,e.ContextFirstFrameRendered=`ContextFirstFrameRendered`,e.ContextDestroying=`ContextDestroying`,e.ContextDestroyed=`ContextDestroyed`,e.MissingCamera=`MissingCamera`,e.ContextClearing=`ContextClearing`,e.ContextCleared=`ContextCleared`})(O||={});var k=class{static get Current(){return globalThis[`NeedleEngine.Context.Current`]}static set Current(e){globalThis[`NeedleEngine.Context.Current`]=e}static get All(){return this.Registered}static Registered=[];static register(e){this.Registered.indexOf(e)===-1&&(St&&console.warn(`Registering context`),this.Registered.push(e),this.dispatchCallback(O.ContextRegistered,e))}static unregister(e){let t=this.Registered.indexOf(e);t!==-1&&(St&&console.warn(`Unregistering context`),this.Registered.splice(t,1))}static _callbacks={};static registerCallback(e,t){this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t)}static unregisterCallback(e,t){if(!this._callbacks[e])return;let n=this._callbacks[e].indexOf(t);n!==-1&&this._callbacks[e].splice(n,1)}static dispatchCallback(e,t,n){if(!this._callbacks[e])return!0;let r={event:e,context:t};if(n)for(let e in n)r[e]=n[e];let i=[];return this._callbacks[e].forEach(e=>{let t=e(r);t instanceof Promise&&i.push(t)}),Promise.all(i)}static addContextCreatedCallback(e){this.registerCallback(O.ContextCreated,e)}static addContextDestroyedCallback(e){this.registerCallback(O.ContextDestroyed,e)}},Ct=new Map;function wt(e=globalThis.location?.hostname){if(Ct.has(e))return Ct.get(e);let t=/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|localhost/.test(e);return Ct.set(e,t),t===!0}function Tt(){return window.location.hostname.includes(`glitch.me`)}var Et=()=>e=>e;function Dt(e){return Et()(e)}function Ot(){return!!A(`debug`)}var kt=class{_factory;_cache=[];_maxSize;_index=0;constructor(e,t){this._factory=e,this._maxSize=t}get(){let e=this._index%this._maxSize;return this._index++,this._cache.length<=e&&(this._cache[e]=this._factory()),this._cache[e]}},At=!1,jt=[];typeof window<`u`&&setTimeout(()=>{if(At){let e={},t=new URL(window.location.href),n=new URL(t);n.searchParams.append(`console`,``);let r=n.toString().replace(/=$|=(?=&)/g,``);for(let n of jt){let r=new URL(t);r.searchParams.append(n,``),e[n]=r.toString().replace(/=$|=(?=&)/g,``)}console.log(`🌵 ?help: Debug Options for Needle Engine. +Append any of these parameters to the URL to enable specific debug options. +Example: ${r} will show an onscreen console window.`);let i=At===!0?``:` (containing "${At}")`;console.group(`Available URL parameters:`+i);for(let t of Object.keys(e).sort())typeof At==`string`&&!t.toLowerCase().includes(At.toLowerCase())||(console.groupCollapsed(t),console.log(`Reload with this flag enabled:`),console.log(e[t]),console.groupEnd());console.groupEnd()}},100);function Mt(){return new URLSearchParams(globalThis.location?.search)}function A(e){At&&!jt.includes(e)&&jt.push(e);let t=Mt();if(t.has(e)){let n=t.get(e);if(n){let e=Number(n);return isNaN(e)?n:e}else return!0}return!1}At=A(`help`);function Nt(e,t){let n=Mt();n.has(e)?n.set(e,t):n.append(e,t),document.location.search=n.toString()}function Pt(e,t,n=!0){let r=Mt();r.has(e)?t===null?r.delete(e):r.set(e,t):t!==null&&r.append(e,t),n?It(e,r):Lt(e,r)}function Ft(e,t,n){e.has(t)?e.set(t,n.toString()):e.append(t,n.toString())}function It(e,t,n){window.history.pushState(n,e,`?`+t.toString())}function Lt(e,t,n){window.history.replaceState(n,e,`?`+t.toString())}function Rt(e){for(var t=``,n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`,r=n.length,i=0;i{setTimeout(t,e)})}function qt(e,t){if(e<=0)return Promise.resolve();if(t||=k.Current,!t)return Promise.reject(`No context`);let n=t.time.frameCount+e;return new Promise((e,r)=>{if(!t)return r(`No context`);let i=()=>{t.time.frameCount>=n&&(t.pre_update_callbacks.splice(t.pre_update_callbacks.indexOf(i),1),e())};t.pre_update_callbacks.push(i)})}var Jt=A(`debugresolveurl`),Yt=`rel:`;function Xt(e,t){return Zt(e,t)}function Zt(e,t){if(t===void 0)return Jt&&console.warn(`getPath: uri is undefined, returning uri`,t),t;if(t.startsWith(`./`))return t;if(t.startsWith(`http`))return Jt&&console.warn(`getPath: uri is absolute, returning uri`,t),t;if(e===void 0)return Jt&&console.warn(`getPath: source is undefined, returning uri`,t),t;t.startsWith(`rel:`)&&(t=t.substring(4));let n=e.lastIndexOf(`/`);if(n>=0){let r=e.substring(0,n+1);for(;r.endsWith(`/`)&&t.startsWith(`/`);)t=t.substring(1);let i=r+t;return Jt&&console.log(`source:`,e,`changed uri +from`,t,` +to `,i,` +basePath: `+r),i}return t}function Qt(e){if(e)return e=e.trim(),e=e.split(`?`)[0]?.split(`#`)[0],e}var $t=class{subscribeWrite(e){this.writeCallbacks.push(e)}unsubscribeWrite(e){let t=this.writeCallbacks.indexOf(e);t!==-1&&this.writeCallbacks.splice(t,1)}writeCallbacks=[];constructor(e,t){this._object=e,this._prop=t,this._wrapperProp=Symbol(`$`+t),this.apply()}_applied=!1;_object;_prop;_wrapperProp;apply(){if(this._applied||!this._object)return;let e=this._object,t=this._prop;if(e[t]===void 0)return;this._applied=!0,e[this._wrapperProp]!==void 0&&console.warn(`Watcher is being applied to an object that already has a wrapper property. This is not (yet) supported`);let n=e[t];e[this._wrapperProp]=n,Object.defineProperty(e,t,{get:()=>e[this._wrapperProp],set:t=>{e[this._wrapperProp]=t;for(let e of this.writeCallbacks)e(t,this._prop)}})}revoke(){if(!this._applied||!this._object)return;this._applied=!1;let e=this._object,t=this._prop;Reflect.deleteProperty(e,t),e[t]=e[this._wrapperProp],Reflect.deleteProperty(e,this._wrapperProp)}dispose(){this.revoke(),this.writeCallbacks.length=0,this._object=null}},en=class e{_watches=[];constructor(t,n){if(Array.isArray(n))for(let r of n)this._watches.push(new e(t,r));else this._watches.push(new $t(t,n))}subscribeWrite(e){for(let t of this._watches)t.subscribeWrite(e)}unsubscribeWrite(e){for(let t of this._watches)t.unsubscribeWrite(e)}apply(){for(let e of this._watches)e.apply()}revoke(){for(let e of this._watches)e.revoke()}dispose(){for(let e of this._watches)e.dispose();this._watches.length=0}},tn=Symbol(`needle:watches`);function nn(e,t){if(!e[tn])if(e instanceof w)e[tn]=new en(e,[`x`,`y`]);else if(e instanceof o)e[tn]=new en(e,[`x`,`y`,`z`]);else if(e instanceof Te||e instanceof E)e[tn]=new en(e,[`x`,`y`,`z`,`w`]);else return!1;return e[tn].subscribeWrite(t),!0}function rn(e,t){if(!e)return;let n=e[tn];n&&n.unsubscribeWrite(t)}var j;(function(e){let t;function n(){if(t!==void 0)return t;let e=window.navigator.userAgent,n=/Windows|MacOS|Mac OS/.test(e),r=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return t=n&&!r&&!y()}e.isDesktop=n;let r;function i(){return r===void 0?r=window.orientation!==void 0||navigator.userAgent.indexOf(`IEMobile`)!==-1?!0:/iPhone|iPad|iPod|Android|IEMobile/i.test(navigator.userAgent):r}e.isMobileDevice=i;function a(){return s()}e.isIPad=a;let o;function s(){if(o!==void 0)return o;let e=navigator.userAgent.toLowerCase();return o=/iPad/.test(navigator.userAgent)||e.includes(`macintosh`)&&`ontouchend`in document}e.isiPad=s;let c;function l(){return c===void 0?c=/Android/.test(navigator.userAgent):c}e.isAndroidDevice=l;let u;function d(){return u===void 0?u=/WebXRViewer\//i.test(navigator.userAgent):u}e.isMozillaXR=d;let f;function p(){return f===void 0?f=/NeedleAppClip\//i.test(navigator.userAgent):f}e.isNeedleAppClip=p;let m;function h(){if(m!==void 0)return m;if(y()||s())return m=!1;let e=navigator.userAgent.toLowerCase();return m=navigator.userAgentData?navigator.userAgentData.platform===`macOS`:e.includes(`mac os x`)||e.includes(`macintosh`)}e.isMacOS=h;let g;function _(){return g===void 0?g=s()&&`xr`in navigator&&ae():g}e.isVisionOS=_;let v,ee=[`iPad Simulator`,`iPhone Simulator`,`iPod Simulator`,`iPad`,`iPhone`,`iPod`];function y(){return v===void 0?v=ee.includes(navigator.platform)||navigator.userAgent.includes(`Mac`)&&`ontouchend`in document:v}e.isiOS=y;let b;function te(){return b===void 0&&(b=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),b}e.isSafari=te;let ne;function re(){return ne===void 0?ne=navigator.userAgent.includes(`OculusBrowser`):ne}e.isQuest=re;let ie;function ae(){return ie===void 0&&(ie=document.createElement(`a`).relList.supports(`ar`)),ie}e.supportsQuickLookAR=ae;async function oe(){try{return(await navigator.permissions.query({name:`microphone`})).state!==`denied`}catch(e){return console.error("Error querying `microphone` permissions.",e),!1}}e.microphonePermissionsGranted=oe;let se;function ce(){if(se!==void 0)return se;let e=navigator.userAgent.match(/iPhone OS (\d+_\d+)/);if(e&&(se=e[1].replace(`_`,`.`)),!se){let e=navigator.userAgent.match(/(?:\(Macintosh;|iPhone;|iPad;).*Version\/(\d+\.\d+)/);e&&(se=e[1])}return se||=null,se}e.getiOSVersion=ce;let le;function ue(){if(le!==void 0)return le;let e=navigator.userAgent.match(/(?:CriOS|Chrome)\/(\d+\.\d+\.\d+\.\d+)/);return le=e?e[1].replace(`_`,`.`):null,le}e.getChromeVersion=ue;let de;function x(){if(de!==void 0)return de;let e=navigator.userAgent.match(/Version\/(\d+\.\d+)/);return de=e&&te()?e[1]:null,de}e.getSafariVersion=x})(j||={});function an(){return j.isDesktop()}function on(){return j.isMobileDevice()}function sn(){return j.isiPad()}function cn(){return j.isiPad()}function ln(){return j.isAndroidDevice()}function un(){return j.isMozillaXR()}function dn(){return j.isMacOS()}function fn(){return j.isiOS()}function pn(){return j.isSafari()}function mn(){return j.isQuest()}async function hn(){return j.microphonePermissionsGranted()}var gn=new WeakMap;function _n(e,t,n){if(!gn.get(e)){let t=new MutationObserver(t=>{yn(e,t)});gn.set(e,{observer:t,attributeChangedListeners:new Map}),t.observe(e,{attributes:!0})}let r=gn.get(e).attributeChangedListeners;return r.has(t)||r.set(t,[]),r.get(t).push(n),()=>{vn(e,t,n)}}function vn(e,t,n){if(!gn.get(e))return;let r=gn.get(e).attributeChangedListeners;if(!r.has(t))return;let i=r.get(t),a=i.indexOf(n);a!==-1&&(i.splice(a,1),i.length<=0&&(r.delete(t),gn.get(e)?.observer.disconnect(),gn.delete(e)))}function yn(e,t){let n=gn.get(e).attributeChangedListeners;for(let r of t)if(r.type===`attributes`){let t=r.attributeName,i=e.getAttribute(t);if(n.has(t))for(let e of n.get(t))e(i)}}var bn=class{reason;constructor(e){this.reason=e}};async function xn(e){let t=await Promise.allSettled(e).catch(e=>[new bn(e.message)]),n=!1,r=t.map(e=>`value`in e?e.value:(n=!0,new bn(e.reason)));return{anyFailed:n,results:r}}var Sn=A(`debugdebug`),Cn=!1;(A(`noerrors`)||A(`nooverlaymessages`))&&(Cn=!0);var wn=`needle_engine_global_error_container`,Tn;(function(e){e[e.Log=0]=`Log`,e[e.Warn=1]=`Warn`,e[e.Error=2]=`Error`})(Tn||={});function En(){return Fn}var Dn=[];function On(e){Dn.push(e)}var kn=!1;function An(...e){if(!kn){kn=!0;try{for(let t=0;t0&&(e+=` `),e+=r)}else typeof t==`string`&&(e=t);if(Rn.has(e))return;Rn.add(e)}let a=k.Current,o=a?.domElement??document.querySelector(`needle-engine`);if(a?.isInAR&&(o=a.arOverlayElement),o){if(Array.isArray(t)){let e=``;for(let n=0;n0&&(e+=` `),e+=r)}t=e}!t||t.length<=0||Hn(e,o,t,n)}}var Bn=new Map,Vn=.2;function Hn(e,t,n,r={}){if(n==null)return;let i=Gn(t);if(i.childElementCount>=20){let e=i.lastElementChild;Jn(e)}n.length>400&&(n=n.substring(0,400)+`...`);let a=r.key??n;if(Bn.has(a)){Bn.get(a)?.update(n,r);return}let o=Yn(e,n);i.prepend(o);let s=()=>{Bn.delete(a),Jn(o)},c=setTimeout(s,Math.max(Vn,r.duration??10)*1e3);Bn.set(a,{update:(e,t)=>{e.length>400&&(e=e.substring(0,400)+`...`),o.innerHTML=e,t.duration&&(clearTimeout(c),c=setTimeout(s,Math.max(Vn,t.duration)*1e3))},removeFunction:s})}function Un(){Sn&&console.log(`Clearing messages`);for(let e of Bn.values())e?.removeFunction.call(e);Bn.clear()}var Wn=` +@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap'); + +div[data-needle_engine_debug_overlay] { + font-family: 'Roboto Flex', sans-serif; + font-weight: 400; + font-size: 16px; +} + +div[data-needle_engine_debug_overlay] strong { + font-weight: 700; +} + +div[data-needle_engine_debug_overlay] a { + color: white; + text-decoration: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.3); +} + +div[data-needle_engine_debug_overlay] a:hover { + text-decoration: none; + border: none; +} + +div[data-needle_engine_debug_overlay] .log strong { + color: rgba(200,200,200,.9); +} + +div[data-needle_engine_debug_overlay] .warn strong { + color: rgba(255,255,230, 1); +} + +div[data-needle_engine_debug_overlay] .error strong { + color: rgba(255,100,120, 1); +} +`;function Gn(e){globalThis[wn]||(globalThis[wn]=new Map);let t=globalThis[wn];if(t.has(e))return t.get(e);{let n=document.createElement(`div`);t.set(e,n),n.setAttribute(`data-needle_engine_debug_overlay`,``),n.classList.add(`debug-container`),n.style.cssText=` + position: absolute; + top: 0; + right: 5px; + padding-top: env(safe-area-inset-top, 0px); + max-width: 70%; + max-height: calc(100% - 105px); + z-index: 100000; + pointer-events: scroll; + display: flex; + align-items: end; + flex-direction: column; + color: white; + overflow: auto; + word-break: break-word; + `,j.isNeedleAppClip()&&(n.style.left=`5px`,n.style.right=`unset`);let r=document.querySelector(`meta[name="viewport"]`);r&&!r.getAttribute(`content`)?.includes(`viewport-fit=`)&&r.setAttribute(`content`,r.getAttribute(`content`)+`,viewport-fit=cover`),e.shadowRoot?e.shadowRoot.appendChild(n):e.appendChild(n);let i=document.createElement(`style`);return i.innerHTML=Wn,n.appendChild(i),n}}var Kn=Symbol(`logtype`),qn=new Map;function Jn(e){e.remove();let t=e[Kn],n=qn.get(t)??[];n.push(e),qn.set(t,n)}function Yn(e,t){if(qn.has(e)){let n=qn.get(e);if(n.length>0){let e=n.pop();return e.innerHTML=t,e}}let n=document.createElement(`div`);switch(n.setAttribute(`data-id`,`__needle_engine_debug_overlay`),n.style.marginRight=`5px`,n.style.padding=`.5em`,n.style.backgroundColor=`rgba(0,0,0,.9)`,n.style.marginTop=`5px`,n.style.marginBottom=`3px`,n.style.borderRadius=`8px`,n.style.pointerEvents=`all`,n.style.userSelect=`text`,n.style.maxWidth=`250px`,n.style.whiteSpace=`pre-wrap`,n.style[`backdrop-filter`]=`blur(10px)`,n.style[`-webkit-backdrop-filter`]=`blur(10px)`,n.style.backgroundColor=`rgba(20,20,20,.8)`,n.style.boxShadow=`inset 0 0 80px rgba(0,0,0,.2), 0 0 5px rgba(0,0,0,.2)`,n.style.border=`1px solid rgba(160,160,160,.2)`,n[Kn]=e,e){case Tn.Log:n.classList.add(`log`),n.style.color=`rgba(200,200,200,.7)`,n.style.backgroundColor=`rgba(40,40,40,.7)`;break;case Tn.Warn:n.classList.add(`warn`),n.style.color=`rgb(255, 255, 150)`,n.style.backgroundColor=`rgba(50,50,20,.8)`;break;case Tn.Error:n.classList.add(`error`),n.style.color=`rgb(255, 50, 50`,n.style.backgroundColor=`rgba(50,20,20,.8)`;break}return n.title=`Open the browser console (F12) for more information`,n.innerHTML=t,n}var Xn=A(`nodevlogs`),Zn,Qn;function M(){if(Xn)return!1;if(Zn!==void 0)return Zn;if(Qn!==void 0)return Qn;let e=wt();return e||=window.location.hostname.endsWith(`.local-credentialless.webcontainer.io`),Qn=e,e}function $n(e){Zn=e}var er=class{random(e,t){return Array.isArray(e)?e.length<=0?null:e[Math.floor(Math.random()*e.length)]:e!==void 0&&t!==void 0?Math.random()*(t-e)+e:Math.random()}randomVector3(e,t=0,n=1){e.x=this.random(t,n),e.y=this.random(t,n),e.z=this.random(t,n)}clamp(e,t,n){return en?n:e}clamp01(e){return this.clamp(e,0,1)}lerp(e,t,n){return n=n<0?0:n,n=n>1?1:n,e+(t-e)*n}inverseLerp(e,t,n){return(n-e)/(t-e)}remap(e,t,n,r,i){return r+(i-r)*(e-t)/(n-t)}moveTowards(e,t,n){return e+=n,(n<0&&e0&&e>t)&&(e=t),e}Rad2Deg=180/Math.PI;Deg2Rad=Math.PI/180;Epsilon=1e-5;toDegrees(e){return e*180/Math.PI}toRadians(e){return e*Math.PI/180}tan(e){return Math.tan(e)}gammaToLinear(e){return e**2.2}linearToGamma(e){return e**(1/2.2)}approximately(e,t,n=2**-52){for(let r of tr){let i=e[r],a=t[r];if(i===void 0||a===void 0)break;if(Math.abs(i-a)>n)return!1}return!0}easeInOutCubic(e){return e<.5?4*e*e*e:1-(-2*e+2)**3/2}},tr=[`x`,`y`,`z`,`w`],N=new er,nr=class{y;s;alpha=0;constructor(e){this.setAlpha(e),this.y=null,this.s=null}setAlpha(e){if(e<=0||e>1)throw Error();this.alpha=e}filter(e,t){t&&this.setAlpha(t);let n;return n=this.y?this.alpha*e+(1-this.alpha)*this.s:e,this.y=e,this.s=n,n}lastValue(){return this.y}reset(e){this.y=e,this.s=e}},rr=class{freq;minCutOff;beta;dCutOff;x;dx;lasttime;constructor(e,t=1,n=0,r=1){if(e<=0||t<=0||r<=0)throw Error();this.freq=e,this.minCutOff=t,this.beta=n,this.dCutOff=r,this.x=new nr(this.alpha(this.minCutOff)),this.dx=new nr(this.alpha(this.dCutOff)),this.lasttime=null}alpha(e){let t=1/this.freq;return 1/(1+1/(2*Math.PI*e)/t)}filter(e,t=null){this.lasttime&&t&&(this.freq=1/(t-this.lasttime)),this.lasttime=t;let n=this.x.lastValue(),r=n?(e-n)*this.freq:0,i=this.dx.filter(r,this.alpha(this.dCutOff)),a=this.minCutOff+this.beta*Math.abs(i);return this.x.filter(e,this.alpha(a))}reset(e){e!=null&&this.x.reset(e),this.x.alpha=this.alpha(this.minCutOff),this.dx.alpha=this.alpha(this.dCutOff),this.lasttime=null}},ir=class{x;y;z;constructor(e,t=1,n=0,r=1){this.x=new rr(e,t,n,r),this.y=new rr(e,t,n,r),this.z=new rr(e,t,n,r)}filter(e,t,n=null){t.x=this.x.filter(e.x,n),t.y=this.y.filter(e.y,n),t.z=this.z.filter(e.z,n)}reset(e){this.x.reset(e?.x),this.y.reset(e?.y),this.z.reset(e?.z)}},ar=`needle:cameraController`;function or(e){return e[ar]}function sr(e,t,n){n?e[ar]=t:e[ar]===t&&(e[ar]=null)}var cr=`needle:autofit`;function lr(e){return e[cr]===void 0?!0:e[cr]!==!1}function ur(e,t){e[cr]=t}var dr=void 0,fr={x:0,y:0,width:0,height:0},pr=A(`debugfocusrect`);function mr(e,t,n,r,i){e instanceof Element&&(pr&&e instanceof HTMLElement&&(e.style.outline=`2px dashed rgba(255, 150, 0, .8)`),e=e.getBoundingClientRect()),dr=i.domElement.getBoundingClientRect();let a=fr;a.x=e.x,a.y=e.y,a.width=e.width,a.height=e.height,a.x-=dr.x,a.y-=dr.y;let o=dr.width,s=dr.height,c=r.view,l=t.zoom,u=c?.offsetX||0,d=c?.offsetY||0,f=dr.width,p=dr.height;f/=l,p/=l,u=f*(l-1)*.5,d=p*(l-1)*.5;let m=a.x+a.width*.5,h=a.y+a.height*.5,g=dr.width*.5,_=dr.height*.5,v=m-g,ee=h-_;u-=v/l,d-=ee/l,t.offsetX!==void 0&&(u+=t.offsetX*(dr.width*.5)),t.offsetY!==void 0&&(d-=t.offsetY*(dr.height*.5));let y=c?.offsetX||u,b=c?.offsetY||d;u=N.lerp(y,u,n),d=N.lerp(b,d,n);let te=c?.width||o,ne=c?.height||s;f=N.lerp(te,f,n),p=N.lerp(ne,p,n),r.setViewOffset(o,s,u,d,f,p),r.updateProjectionMatrix(),t.damping>0&&(t.damping*=1-n,t.damping<.01&&(t.damping=0),t.damping=Math.max(0,t.damping))}function hr(e,t,n){let r=e.length(),i=t.length(),a=N.lerp(r,i,n);return e.lerp(t,n).normalize().multiplyScalar(a)}var gr=new E,_r=new E().setFromAxisAngle(new o(0,1,0),Math.PI);function vr(e,t){e.lookAt(t),e.quaternion.multiply(_r)}function yr(e,t,n=!0,r=!1){if(e===t)return;gr.copy(e.quaternion);let i=Or(t),a=Or(e);if(r){if(Fr(e,Pr(t)),n){let t=a.y,n=a.sub(Kr(e));n.y=t,e.lookAt(n),e.quaternion.multiply(_r)}Number.isNaN(e.quaternion.x)&&e.quaternion.copy(gr);return}n&&(i.y=a.y),e.lookAt(i),Number.isNaN(e.quaternion.x)&&e.quaternion.copy(gr)}function br(e,t,n,r=1){if(n){let i=P(0,0,0),a=t.x/window.innerWidth*2-1,o=-(t.y/window.innerHeight)*2+1;i.set(a,o,0),i.unproject(n);let s=n.worldPosition,c=e.worldPosition.distanceTo(s),l=i.sub(s);l.multiplyScalar(r*3.6*c);let u=n.worldPosition.add(l);return e.lookAt(u),u}return null}var xr=new kt(()=>new o,100);function P(e,t,n){let r=xr.get();return r.set(0,0,0),e instanceof o?r.copy(e):Array.isArray(e)?r.set(e[0],e[1],e[2]):e instanceof DOMPointReadOnly?r.set(e.x,e.y,e.z):typeof e==`number`?(r.x=e,r.y=t===void 0?r.x:t,r.z=n===void 0?r.x:n):typeof e==`object`&&(r.x=e.x,r.y=e.y,r.z=e.z),r}var Sr=new kt(()=>new a,30);function Cr(e){let t=Sr.get();return e?t.copy(e):t.set(0,0,0),t}var wr=new kt(()=>new E,100);function Tr(e,t,n,r){let i=wr.get();return i.identity(),e instanceof E?i.copy(e):e instanceof DOMPointReadOnly?i.set(e.x,e.y,e.z,e.w):typeof e==`number`&&t!==void 0&&n!==void 0&&r!==void 0?i.set(e,t,n,r):typeof e==`object`&&`x`in e&&`y`in e&&`z`in e&&`w`in e&&i.set(e.x,e.y,e.z,e.w),i}var Er=new kt(()=>new o,100),Dr=Symbol(`lastMatrixWorldUpdateKey`);function Or(e,t=null,n=!0){let r=t??Er.get();return e?e.parent?(n&&e.updateWorldMatrix(!0,!1),e.matrixWorldNeedsUpdate&&e[Dr]!==Date.now()&&(e[Dr]=Date.now(),e.updateMatrixWorld()),r.setFromMatrixPosition(e.matrixWorld),r):r.copy(e.position):r.set(0,0,0)}function kr(e,t){if(!e)return e;let n=Er.get();return t!==n&&n.copy(t),e.parent!==null&&e.parent.worldToLocal(n),e.position.set(n.x,n.y,n.z),e}function Ar(e,t,n,r){let i=Er.get();return i.set(t,n,r),kr(e,i),e}var jr=new kt(()=>new E,100),Mr=new E,Nr=new E;function Pr(e,t=null){if(!e)return jr.get().identity();let n=t??jr.get();return e.parent?(e.getWorldQuaternion(n),n):n.copy(e.quaternion)}function Fr(e,t){if(!e)return;t!==Mr&&Mr.copy(t);let n=Mr;(e?.parent)?.getWorldQuaternion(Nr),Nr.invert();let r=Nr.multiply(n);e.quaternion.set(r.x,r.y,r.z,r.w)}function Ir(e,t,n,r,i){Mr.set(t,n,r,i),Fr(e,Mr)}var Lr=new kt(()=>new o,100),Rr=new o;function zr(e,t=null){return t||=Lr.get(),e?e.parent?(e.getWorldScale(t),t):t.copy(e.scale):t.set(0,0,0)}function Br(e,t){if(!e)return;if(!e.parent){e.scale.copy(t);return}let n=Rr;e.parent.getWorldScale(n),e.scale.copy(t),e.scale.divide(n)}var Vr=new o,Hr=new E;function Ur(e){return Pr(e,Hr),Vr.set(0,0,1).applyQuaternion(Hr)}var Wr=new kt(()=>new o,100),Gr=new E;function Kr(e,t){return t||=Wr.get().set(0,0,1),Pr(e,Gr),t.applyQuaternion(Gr)}var qr=new He,Jr=new He,Yr=new o;function Xr(e){let t=jr.get();return e.getWorldQuaternion(t),Jr.setFromQuaternion(t),Jr}function Zr(e,t){Fr(e,jr.get().setFromEuler(t))}function Qr(e){let t=Xr(e),n=Yr;return n.set(t.x,t.y,t.z),n.x=N.toDegrees(n.x),n.y=N.toDegrees(n.y),n.z=N.toDegrees(n.z),n}function $r(e,t){ei(e,t.x,t.y,t.z,!0)}function ei(e,t,n,r,i=!0){i&&(t=N.toRadians(t),n=N.toRadians(n),r=N.toRadians(r)),qr.set(t,n,r),Mr.setFromEuler(qr),Fr(e,Mr)}function ti(e,t=!0){e&&(t?(function e(t){console.groupCollapsed((t.name?t.name:`(no name : `+t.type+`)`)+` %o`,t),t.children.forEach(e),console.groupEnd()})(e):e.traverse(function(e){for(var t=`|___`,n=e;n.parent!==null;)t=` `+t,n=n.parent;console.log(t+e.name+` <`+e.type+`>`)}))}function ni(e){let t=e?.name||``;if(!e)return t;let n=e.parent;for(;n;)t=n.name+`/`+t,n=n.parent;return t}function ri(e){if(e){let t=e;return t.blendMode!==void 0&&t.clampWhenFinished!==void 0&&t.enabled!==void 0&&t.fadeIn!==void 0&&t.getClip!==void 0}return!1}var ii=class e extends Ve{static vertex=` +varying vec2 vUv; +void main(){ + vUv = uv; + gl_Position = vec4(position.xy, 0., 1.0); +}`;constructor(){super({vertexShader:e.vertex,uniforms:{map:new Ye(null),flipY:new Ye(!0),writeDepth:new Ye(!1),depthTexture:new Ye(null)},fragmentShader:` +uniform sampler2D map; +uniform bool flipY; +uniform bool writeDepth; +uniform sampler2D depthTexture; + +varying vec2 vUv; + +void main(){ + vec2 uv = vUv; + if (flipY) uv.y = 1.0 - uv.y; + gl_FragColor = texture2D(map, uv); + + if (writeDepth) { + float depth = texture2D(depthTexture, uv).r; + gl_FragDepth = depth; + + // float linearDepth = (depth - 0.99) * 100.0; // Enhance near 1.0 values + // gl_FragColor = vec4(linearDepth, linearDepth, linearDepth, 1.0); + } +}`})}reset(){this.uniforms.map.value=null,this.uniforms.flipY.value=!0,this.uniforms.writeDepth.value=!1,this.uniforms.depthTexture.value=null,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}},ai=class e{static planeGeometry=new Ke(2,2,1,1);static renderer=new h({antialias:!1,alpha:!0});static perspectiveCam=new C;static orthographicCam=new ke;static scene=new ne;static blitMaterial=new ii;static mesh=new x(e.planeGeometry,e.blitMaterial);static copyTexture(e,t){t||=this.blitMaterial,this.blitMaterial.reset();let n=t||this.blitMaterial;n.uniforms.map.value=e,n.needsUpdate=!0,n.uniformsNeedUpdate=!0;let r=n.vertexShader;n.vertexShader=ii.vertex;let i=this.mesh;i.material=n,i.frustumCulled=!1,this.scene.children.length=0,this.scene.add(i),this.renderer.setSize(e.image.width,e.image.height),this.renderer.clear(),this.renderer.render(this.scene,this.perspectiveCam);let a=new be(this.renderer.domElement);return a.name=`Copy`,a.needsUpdate=!0,n.vertexShader=r,a}static blit(e,t,n){let{renderer:r=this.renderer,blitMaterial:i=this.blitMaterial,flipY:o=!1,depthTexture:s=null,depthTest:c=!0,depthWrite:l=!0}=n||{};this.blitMaterial.reset(),i.uniforms.map&&(i.uniforms.map.value=e),i.uniforms.flipY&&(i.uniforms.flipY.value=o),s?(i.uniforms.writeDepth=new Ye(!0),i.uniforms.depthTexture.value=s):(i.uniforms.writeDepth=new Ye(!1),i.uniforms.depthTexture.value=null),i.needsUpdate=!0,i.uniformsNeedUpdate=!0;let u=this.mesh;u.material=i,u.frustumCulled=!1,this.scene.children.length=0,this.scene.add(u);let d=r.getRenderTarget(),f=r.getContext();c?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST),r.state.buffers.depth.setMask(l),r.setClearColor(new a(0,0,0),0),r.setRenderTarget(t),r.clear(),r.render(this.scene,this.perspectiveCam),r.setRenderTarget(d),f.enable(f.DEPTH_TEST),r.state.buffers.depth.setMask(!0)}static textureToCanvas(e,t=!1){if(!e)return null;(t===!0||e.isCompressedTexture===!0)&&(e=oi(e));let n=e.image;if(ci(n)){let e=document.createElement(`canvas`);e.width=n.width,e.height=n.height;let t=e.getContext(`2d`);return t?(t.drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height),e):(console.error(`Failed getting canvas 2d context`),null)}return null}};function oi(e){return ai.copyTexture(e)}function si(e,t=!1){return ai.textureToCanvas(e,t)}function ci(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas||typeof ImageBitmap<`u`&&e instanceof ImageBitmap}function li(e){let t=e.type;return t===`Mesh`||t===`SkinnedMesh`}function ui(e,t){t?e[`needle:rendercustomshadow`]=!0:e[`needle:rendercustomshadow`]=!1}function di(e){return!!(e&&(e[`needle:rendercustomshadow`]===!0||e[`needle:rendercustomshadow`]==null))}function fi(e,t=void 0,n=void 0,r=void 0){let i=r||new fe;i.makeEmpty();let a=[];function o(e){let r=!0;if(e.visible&&lr(e)!==!1&&!(e.type===`TransformControlsGizmo`||e.type===`TransformControlsPlane`)){if(e instanceof Ge&&(r=!1),e instanceof We&&(r=!1),e instanceof st&&(r=!1),e.isGizmo===!0&&(r=!1),e.material instanceof je&&(r=!1),li(e)||(r=!1),n&&e.layers.test(n)===!1&&(r=!1),r&&(t&&Array.isArray(t)&&t?.includes(e)||typeof t==`function`&&t(e)===!0))return;if(e.isUI!==!0){if(r){let t=e.children;e.children=a;let n=e.position,r=e.scale;if(Number.isNaN(n.x)||Number.isNaN(n.y)||Number.isNaN(n.z)){console.warn(`Object \"${e.name}\" has NaN values in position or scale.... will ignore it`,n,r);return}e.geometry===null&&(e.geometry=void 0),i.expandByObject(e,!0),e.children=t}for(let t of e.children)o(t)}}}let s=!1;Array.isArray(e)||(e=[e]);for(let t of e)t&&(s=!0,t.updateMatrixWorld(),o(t));return s||console.warn(`No objects to fit camera to...`),i}function pi(e,t,n){let r=fi([e],n?.ignore),i=new o;r.getSize(i);let a=new o;r.getCenter(a);let s=new o;t.getSize(s);let c=new o;t.getCenter(c);let l=new o;l.set(s.x/i.x,s.y/i.y,s.z/i.z);let u=Math.min(l.x,l.y,l.z),d=n?.scale!==!1;if(d&&Br(e,zr(e).multiplyScalar(u)),n?.position!==!1){let n=new o;r.getCenter(n),n.y=r.min.y;let i=new o;t.getCenter(i),i.y=t.min.y;let a=i.clone().sub(n);d&&a.multiplyScalar(u),kr(e,Or(e).add(a))}return{boundsBefore:r,scale:l}}function mi(e,t){let n=fi([e]),r=new o;n.getCenter(r),r.y=n.min.y;let i=t.clone().sub(r);return kr(e,Or(e).add(i)),{offset:i,bounds:n}}function hi(e,t,n,r){if(Array.isArray(t)){let n=!0;for(let r=0;r{M()&&k.Current?.isInXR&&(_i(!0),wi(`error`,...e))});function _i(e){if(e){if(gi)return;gi=!0,xi()}else{if(!gi)return;gi=!1,Si()}}var vi={log:void 0,warn:void 0,error:void 0},yi=class{familyName=`needle-xr`;root=null;context=null;defaultFontSize=.06;constructor(){this.ensureFont()}onEnable(){this.context=k.Current||k.All[0],this.context.pre_render_callbacks.push(this.onBeforeRender)}onDisable(){this.context?.pre_render_callbacks.splice(this.context?.pre_render_callbacks.indexOf(this.onBeforeRender),1),this.root?.removeFromParent()}targetObject=new S;userForwardViewPoint=new o;oneEuroFilter=new ir(90,.8);_lastElementRemoveTime=0;onBeforeRender=()=>{let e=this.context?.mainCamera;if(this.context&&e instanceof C){let t=this.getRoot();Number.isNaN(t.position.x)&&t.position.set(0,0,0),Number.isNaN(t.quaternion.x)&&t.quaternion.set(0,0,0,1),this.context.scene.add(this.targetObject);let n=this.context.xr?.rigScale??1,r=3.5*n,i=e.worldForward;i.y=0,i.normalize().multiplyScalar(r),this.userForwardViewPoint.copy(e.worldPosition).sub(i),this.targetObject.position.distanceTo(this.userForwardViewPoint)>2*n&&(this.targetObject.position.copy(this.userForwardViewPoint),yr(this.targetObject,e,!0,!0),this.targetObject.rotateY(Math.PI)),this.oneEuroFilter.filter(this.targetObject.position,t.position,this.context.time.time);let a=this.context.time.deltaTime;if(t.quaternion.slerp(this.targetObject.quaternion,a*5),t.scale.setScalar(n),this.targetObject.removeFromParent(),this.context.scene.add(t),this.context.time.time-this._lastElementRemoveTime>.1){this._lastElementRemoveTime=this.context.time.time;let e=Date.now();for(let t=0;t2e4){n.removeFromParent(),this._textBuffer.push(n),this._activeTexts.splice(t,1);break}}}}};addLog(e,t){let n=this.getRoot(),r=this.getText(),i=16777215,a=0;switch(e){case`log`:i=16777215,a=0;break;case`warn`:i=16772761,a=4465152;break;case`error`:i=16755370,a=7798784;break}t.length>1e3&&(t=t.substring(0,1e3)+`...`),r.textContent=`[`+new Date().toISOString().split(`T`)[1].split(`.`)[0]+`] `+t,r.visible=!0,r._activatedTime=Date.now(),n.add(r),this._activeTexts.push(r),this.context&&this.context.scene.add(n),r.set({backgroundColor:i,color:a}),D.update()}ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{D.update()}))}textOptions={fontSize:this.defaultFontSize,fontFamily:this.familyName,padding:.03,margin:.005,color:0,backgroundColor:16777215,backgroundOpacity:.4,borderRadius:.03,offset:.025};_textBuffer=[];_activeTexts=[];getText(){let e=this.getRoot();if(this._textBuffer.length>0){let e=this._textBuffer.pop();return e.visible=!0,setTimeout(()=>this.disableDepthTestRecursive(e),100),e}if(e.children.length>20&&this._activeTexts.length>0)return this._activeTexts.shift();let t=new D.Text(this.textOptions);return setTimeout(()=>this.disableDepthTestRecursive(t),500),setTimeout(()=>this.disableDepthTestRecursive(t),1500),t}disableDepthTestRecursive(e,t=0){for(let n=0;nn&&t[r]===`0`;)r--;return t.substring(0,r+1)}return e.toString()}else if(Array.isArray(e)){let n=`[`;for(let i=0;i=60&&(o+=` +`,o+=i(t),n+=o,o=``)}return n+=o,n+=` +}`,n}return e}function i(e){let t=``;for(let n=0;ne.stopAllAction()),this.mixers.length=0}registerAnimationMixer(e){if(!e){console.warn(`AnimationsRegistry.registerAnimationMixer called with null or undefined mixer`);return}this.mixers.includes(e)||this.mixers.push(e)}unregisterAnimationMixer(e){if(!e){console.warn(`AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer`);return}let t=this.mixers.indexOf(e);t!==-1&&this.mixers.splice(t,1)}},Pi=class{static testIfRootCanAnimate(e,t){let n=e.getRoot();return n&&(n.userData.static||n.matrixAutoUpdate===!1||n.matrixWorldAutoUpdate===!1)?((t===!0||t===void 0&&M())&&console.warn(`AnimationUtils: The root object (${n.name||n.type}) of this AnimationAction has matrixAutoUpdate or matrixWorldAutoUpdate set to false. This may prevent the animation from working correctly. If the object is marked as static, try to change it to dynamic.`,{static:n.userData.static,name:n.userData.name,tag:n.userData.tag,matrixAutoUpdate:n.matrixAutoUpdate,matrixWorldAutoUpdate:n.matrixWorldAutoUpdate}),!1):!0}static tryGetActionsFromMixer(e){return e._actions||null}static tryGetAnimationClipsFromObjectHierarchy(e,t){if(t||=[],e)e.animations&&t.push(...e.animations);else return t;if(e.children)for(let n of e.children)this.tryGetAnimationClipsFromObjectHierarchy(n,t);return t}static autoplayAnimations(e){if(!e||!e.animations)return console.debug(`No animations found in file`),null;let t=`scene`in e?e.scene:e,n=[];for(let i=0;i0)for(let e=0;e=0;e--){let t=r[e];t.prefix===n&&(t.prefix=null),t.postfix===n&&(t.postfix=null),!t.prefix&&!t.postfix&&r.splice(e,1)}}var $i=Symbol(`Needle:Patches:WrappedFunction`);function ea(e,t,n){if(e[$i])return e;let r=function(...r){aa(t,n,this,...r);let i=e.apply(this,r);return oa(t,n,this,i,...r),i};return r[$i]=!0,r}var ta=`Needle:Patches`;function na(){return globalThis[`Needle:Patches`]||(globalThis[ta]=new WeakMap),globalThis[ta]}function ra(e,t){let n=na().get(e);return n?n.get(t):null}function ia(e,t,n,r){let i=na().get(e);i||(i=new Map,na().set(e,i));let a=i.get(t);a||(a=[],i.set(t,a)),a.push({prefix:n,postfix:r})}function aa(e,t,n,...r){if(!n)return;let i=ra(e,t);if(i)for(let e of i)e.prefix?.call(n,...r)}function oa(e,t,n,r,...i){if(!n)return;let a=ra(e,t);if(a)for(let e of a)e.postfix?.call(n,r,...i)}function sa(e,t){if(window.SPECTOR){console.log(window.SPECTOR);let n=new URLSearchParams(window.location.search);if(n.has(`spector`)){let r=Number.parseInt(n.get(`spector`)||`0`)||0;console.log(`Scheduled Spector capture at frame #`+r);let i=new window.SPECTOR.Spector;i.spyCanvases=!0,a();return;function a(){if(r>e.time.frame)return window.requestAnimationFrame(()=>a());let n=i.captureCanvas(t);n&&n instanceof Promise?n.then(()=>i.displayUI()):i.displayUI()}}else M()&&console.debug(`Spector available: Add '?spector=' to the URL to enable it and capture a frame.`)}}function ca(e){let t=e;return!!(t.parser&&t.parser.json)}var la;(function(e){e[e.None=0]=`None`,e[e.DontExport=1]=`DontExport`})(la||={});var ua=Symbol(`component-name`);function da(e){return e&&e.isComponent}var fa=Symbol(`object`),pa=new kt(()=>new o,20),ma=class{_point;_normal;_tangentVelocity;distance;impulse;friction;get point(){return pa.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return pa.get().set(this._normal.x,this._normal.y,this._normal.z)}get tangentVelocity(){return pa.get().set(this._tangentVelocity.x,this._tangentVelocity.y,this._tangentVelocity.z)}constructor(e,t,n,r,i,a){this._point=e,this.distance=t,this._normal=n,this.impulse=r,this.friction=i,this._tangentVelocity=a}},ha=class{contacts;constructor(e,t,n){this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=n}me;_collider;get collider(){return this._collider}_gameObject;get gameObject(){return this._gameObject}get rigidBody(){return this.collider?.attachedRigidbody}},ga=class{object;collider;constructor(e,t){this.object=e,this.collider=t}},_a=class e{context;static _managers=new WeakMap;static get(e){return da(e)?this._managers.get(e.context):this._managers.get(e)}constructor(e){this.context=e,this.root.style.cssText=` + position: absolute; + width: 1px; height: 1px; + padding: 0; margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; + `,this.root.setAttribute(`role`,`region`),this.root.setAttribute(`aria-label`,`3D Needle Engine scene`),this.liveRegion.setAttribute(`aria-live`,`polite`),this.liveRegion.setAttribute(`aria-atomic`,`true`),this.liveRegion.setAttribute(`role`,`status`),this.root.appendChild(this.liveRegion),this.enabled=!0}_enabled;set enabled(t){t!==this._enabled&&(this._enabled=t,t?(e._managers.set(this.context,this),(this.context.domElement.shadowRoot||this.context.domElement).prepend(this.root)):this.root.remove())}clear(){this.root.childNodes.forEach(e=>e.remove()),this.root.appendChild(this.liveRegion)}dispose(){this.root.remove(),e._managers.delete(this.context)}root=document.createElement(`div`);liveRegion=document.createElement(`div`);treeElements=new WeakMap;updateElement(e,t){let n=this.treeElements.get(e);n||(n=document.createElement(`div`),this.treeElements.set(e,n),this.root.appendChild(n),typeof t==`object`&&(t.role&&n.setAttribute(`role`,t.role),t.label&&n.setAttribute(`aria-label`,t.label),t.hidden!==void 0&&n.setAttribute(`aria-hidden`,String(t.hidden)),t.busy!==void 0&&n.setAttribute(`aria-busy`,String(t.busy))))}focus(e){let t=this.treeElements.get(e);t&&t.focus()}unfocus(e){let t=this.treeElements.get(e);t&&t.blur()}hover(e,t){let n=this.treeElements.get(e);this.liveRegion.textContent=t||n?.getAttribute(`aria-label`)||``}removeElement(e){this.treeElements.get(e)?.remove(),this.treeElements.delete(e)}set liveRegionMode(e){this.liveRegion.setAttribute(`aria-live`,e)}},va,ya=null;function ba(){return va}function xa(e){if(e==null){console.warn(`Oh no: someone tried registering a non-existend gltf-loader. When you see this log it might mean that needle-engine is being imported multiple times. Please check your project setup.`);return}ya!==e&&(ya=e,va=new e)}var Sa=n(((e,t)=>{(function(){var e=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return n.rotl(e,8)&16711935|n.rotl(e,24)&4278255360;for(var t=0;t0;e--)t.push(Math.floor(Math.random()*256));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((e[n]&15).toString(16));return t.join(``)},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-a)&63)):n.push(`=`);return n.join(``)},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,``);for(var n=[],r=0,i=0;r>>6-i*2);return n}};t.exports=n})()})),Ca=n(((e,t)=>{var n={utf8:{stringToBytes:function(e){return n.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(n.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{t.exports=function(e){return e!=null&&(n(e)||r(e)||!!e._isBuffer)};function n(e){return!!e.constructor&&typeof e.constructor.isBuffer==`function`&&e.constructor.isBuffer(e)}function r(e){return typeof e.readFloatLE==`function`&&typeof e.slice==`function`&&n(e.slice(0,0))}})),Ta=t(n(((e,t)=>{(function(){var e=Sa(),n=Ca().utf8,r=wa(),i=Ca().bin,a=function(t,o){t.constructor==String?t=o&&o.encoding===`binary`?i.stringToBytes(t):n.stringToBytes(t):r(t)?t=Array.prototype.slice.call(t,0):!Array.isArray(t)&&t.constructor!==Uint8Array&&(t=t.toString());for(var s=e.bytesToWords(t),c=t.length*8,l=1732584193,u=-271733879,d=-1732584194,f=271733878,p=0;p>>24)&16711935|(s[p]<<24|s[p]>>>8)&4278255360;s[c>>>5]|=128<>>9<<4)+14]=c;for(var m=a._ff,h=a._gg,g=a._hh,_=a._ii,p=0;p>>0,u=u+ee>>>0,d=d+y>>>0,f=f+b>>>0}return e.endian([l,u,d,f])};a._ff=function(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+(i>>>0)+o;return(s<>>32-a)+t},a._gg=function(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+(i>>>0)+o;return(s<>>32-a)+t},a._hh=function(e,t,n,r,i,a,o){var s=e+(t^n^r)+(i>>>0)+o;return(s<>>32-a)+t},a._ii=function(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+(i>>>0)+o;return(s<>>32-a)+t},a._blocksize=16,a._digestsize=16,t.exports=function(t,n){if(t==null)throw Error(`Illegal argument `+t);var r=e.wordsToBytes(a(t,n));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):e.bytesToHex(r)}})()}))(),1),Ea=new Map,Da=new Map,Oa=0;function ka(e,t,n){if(Ea.has(t)||Ea.set(t,[]),Ea.get(t).push({method:e,options:{once:!1,...n}}),Oa<30){let e=Da.get(t);e&&e?.length>100&&(Oa+=1,console.warn(`You have ${e.length} methods registered for Event ${t}. + +This might be a performance issue! +Consider unregistering the methods when they are not needed anymore! + +To unregister you can call the function returned by your event hook (e.g.const unregister = onStart(...)) + +or by using the once option like onStart(()=>{}, { once:true }). + +See https://engine.needle.tools/docs/scripting.html#special-lifecycle-hooks for more information.`))}}function Aa(e,t){let n=Da.get(t);if(n){for(let t=0;t0&&Fa(e,r,n);let i=Ea.get(t);if(i&&i.length>0){let r=[...i];i.length=0,Fa(e,r,n),r.length>0&&(Da.has(t)||Da.set(t,[]),Da.get(t).push(...r))}}var Na=[],Pa={context:null};function Fa(e,t,n){Na.length=0;for(let e=0;eAa(e,O.ContextCreated)}function Ra(e,t){return ka(e,O.ContextClearing,t),()=>Aa(e,O.ContextClearing)}function za(e,t){return ka(e,O.ContextDestroying,t),()=>Aa(e,O.ContextDestroying)}function Ba(e,t){return ka(e,z.Start,t),()=>Aa(e,z.Start)}function Va(e,t){return ka(e,z.Update,t),()=>Aa(e,z.Update)}function Ha(e,t){return ka(e,z.OnBeforeRender,t),()=>Aa(e,z.OnBeforeRender)}function Ua(e,t){return ka(e,z.OnAfterRender,t),()=>Aa(e,z.OnAfterRender)}var Wa=A(`debuglicense`),Ga=[],Ka=`basic`;Wa&&console.log(`License Type: `+Ka);function qa(){switch(Ka){case`pro`:case`enterprise`:return!0}return!1}function Ja(){switch(Ka){case`indie`:return!0}return!1}function Ya(){switch(Ka){case`edu`:return!0}return!1}function Xa(){return qa()||Ja()||Ya()}function Za(e){if(qa()||Ja()||Ya())return e(!0);Ga.push(e)}function Qa(e){for(let t of Ga)try{t(e)}catch{}}var $a;(function(e){window.addEventListener(`error`,e=>{a(B.Current,`unhandled_error`,e)}),window.addEventListener(`unhandledrejection`,e=>{a(B.Current,`unhandled_promise_rejection`,{message:e.reason?.message,stack:e.reason?.stack,timestamp:Date.now()})}),La((e=>t(e)),{once:!0});function t(e){if(!n(e)){Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`);return}return o({site_id:`dabb8317376f`,type:`pageview`,pathname:window.location.pathname,hostname:window.location.hostname,page_title:document.title,referrer:document.referrer,user_agent:navigator.userAgent,querystring:window.location.search,language:navigator.language,screenWidth:window.screen.width,screenHeight:window.screen.height,event_name:`page_view`}).then(t=>{if(t instanceof Response&&t.ok&&wt()){let t=(e.domElement?.getAttribute(`src`)||``)+Bi+Vi+Hi+Ui;window.sessionStorage.getItem(`session_key`)!==t&&(window.sessionStorage.setItem(`session_key`,t),i(e,`info`,{src:e.domElement?.getAttribute(`src`)||``,version:Bi,generator:Vi,build_time:Hi,public_key:Ui}))}})}function n(e){let t=e?.domElement;if(t||=document.querySelector(`needle-engine`),!t&&!e)return!1;let n=t?.getAttribute(`no-telemetry`);return(n===``||n===`true`||n===`1`)&&(Ka===`pro`||Ka===`enterprise`)?(Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`),!1):!0}e.isAllowed=n;let r=`dabb8317376f`;async function i(e,t,i){if(!n(e)){Wa&&console.debug(`Telemetry is disabled`);return}return o({site_id:r,type:`custom_event`,pathname:window.location.pathname,event_name:t,properties:i?JSON.stringify(i):void 0})}e.sendEvent=i;async function a(e,t,i){if(!n(e)){Wa&&console.debug(`Telemetry is disabled`);return}return i instanceof ErrorEvent?i={message:i.message,stack:i.error?.stack,filename:i.filename,lineno:i.lineno,colno:i.colno,timestamp:i.timeStamp||Date.now()}:i instanceof Error&&(i={message:i.message,stack:i.stack,timestamp:Date.now()}),o({site_id:r,type:`error`,event_name:t||`error`,properties:JSON.stringify({error_name:t,message:i.message,stack:i.stack,filename:i.filename,lineno:i.lineno,colno:i.colno,timestamp:i.timestamp})})}e.sendError=a;function o(e){try{return fetch(`https://needle.tools/api/v1/rum/t`,{method:`POST`,body:JSON.stringify(e),headers:{"Content-Type":`application/json`},keepalive:!0,mode:`cors`,priority:`low`}).catch(e=>{Wa&&console.error(`Failed to send telemetry`,e)})}catch(e){Wa&&console.error(e)}return Promise.resolve()}})($a||={}),k.registerCallback(O.ContextRegistered,e=>{ao(e.context),io(e.context),setTimeout(()=>fo(e.context),2e3)});var eo=void 0,to=!1,no=``;async function ro(){if(eo)return eo;if(Ka===`basic`)try{let e=`https://needle.tools/api/v1/needle-engine/check?location=`+encodeURIComponent(window.location.href)+`&version=`+Bi+`&generator=`+encodeURIComponent(Vi),t=await fetch(e,{method:`GET`}).catch(e=>{Wa&&console.error(`License check failed`,e)});t?.status===200?(to=!1,Wa&&console.log(`License check succeeded`),Ka=`pro`,Qa(!0)):t?.status===403?(Qa(!1),to=!0,no=await t.text()):(Qa(!1),Wa&&console.log(`License check failed with status `+t?.status))}catch(e){Qa(!1),Wa&&console.error(`License check failed`,e)}else Wa&&console.log(`Runtime license check is skipped because license is already applied as "`+Ka+`"`)}eo=ro();async function io(e){function t(){let e=document.createElement(`div`);e.className=`needle-forbidden`,e.style.cssText=` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: all; + zIndex: 2147483647; + line-height: 1.5; + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); + `;let t=e.style.cssText,n=document.createElement(`div`);e.appendChild(n),n.style.cssText=` + position: absolute; + left: 0; + right: 0; + top:0; + bottom: 0; + padding: 10%; + color: white; + font-size: 20px; + font-family: sans-serif; + text-align: center; + pointer-events: all; + display: flex; + justify-content: center; + align-items: center; + background-color: rgba(0,0,0,.3); + text-shadow: 0 0 2px black; + `;let r=n.style.cssText,i=no?.length>1?no:`This web application has been paused.
You might be in violation of the Needle Engine terms of use.
Please contact the Needle support if you think this is a mistake.`;return n.innerHTML=i,setInterval(()=>{n.innerHTML!==i&&(n.innerHTML=i),n.parentNode!==e&&e.appendChild(n),e.style.cssText!==t&&(e.style.cssText=t),n.style.cssText!==r&&(n.style.cssText=r)},500),e}let n=t(),r=n.style.cssText;setInterval(()=>{to===!0&&(n.style.cssText!==r&&(n=t()),e.domElement.shadowRoot?n.parentNode!==e.domElement.shadowRoot&&e.domElement.shadowRoot?.appendChild(n):n.parentNode!=document.body&&document.body.appendChild(n))},500)}async function ao(e){try{if(!qa()&&!Ja())return oo(e)}catch(t){return Wa&&console.log(`License check failed`,t),oo(e)}Wa&&oo(e)}async function oo(e){let t=!1;e.domElement.addEventListener(`ready`,()=>t=!0),await eo?.catch(()=>{}),!(qa()||Ja())&&(Xa()===!1&&uo(),t?so(e):e.domElement.addEventListener(`ready`,()=>{so(e)}))}function so(e){let t=` + position: relative; + display: block; + background-size: 20px; + background-position: 10px 5px; + background-repeat:no-repeat; + background-image:url('${co}'); + background-max-size: 40px; + padding: 10px; + padding-left: 30px; + `;if(Ka===`edu`)navigator.webdriver?console.log(`This project is supported by Needle for Education – https://needle.tools`):console.log(`%c This project is supported by Needle for Education – https://needle.tools`,t);else return;let n=document.createElement(`div`);n.className=`needle-non-commercial-use`,n.innerHTML=`Made with Needle for Education`,e.domElement.shadowRoot?.appendChild(n);let r=` + position: absolute; + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + font-size: 12px; + color: rgb(100, 100, 100); + /*mix-blend-mode: difference;*/ + background-color: transparent; + z-index: 10000; + + cursor: pointer; + user-select: none; + opacity: 0; + + bottom: 6px; + right: 12px; + transform: translateY(0px); + transition: all .5s ease-in-out 1s; + `;n.style.cssText=r,n.addEventListener(`click`,()=>{window.open(`https://needle.tools`,`_blank`)});let i=n.style.cssText;setTimeout(()=>{r=r.replace(`opacity: 0`,`opacity: 1`),r=r.replace(`transform: translateY(10px)`,`transform: translateY(0)`),n.style.cssText=r,i=n.style.cssText},100);let a=setInterval(()=>{let t=e.domElement.shadowRoot||e.domElement;n.parentNode!==t&&t.appendChild(n),i!=n.style.cssText&&(n.style.cssText=r,i=n.style.cssText)},1e3);Ya()&&setTimeout(()=>{clearInterval(a),n?.remove(),setTimeout(()=>{e.domElement.parentNode&&so(e)},1e3*60*5)},2e4)}var co=`data:image/webp;base64,UklGRrABAABXRUJQVlA4WAoAAAAQAAAAHwAAHwAAQUxQSKEAAAARN6CmbSM4WR7vdARON11EBDq3fLiNbVtVzpMCPlKAEzsx0Y/x+Ovuv4dn0EFE/ydAvz6YggXzgh5sVgXM/zOC/4sii7qgGvB5N7hmuQYwkvazWAu1JPW41FXSHq6pnaQWvqYH18Fc0j1hO/BFTtIeSBlJi5w6qIIO7IOrwhFsB2Yxukif0FTRLpXswHR8MxbslKe9VZsn/Ub5C7YFOpqSTABWUDgg6AAAAFAGAJ0BKiAAIAA+7VyoTqmkpCI3+qgBMB2JbACdMt69DwMIQBLhkTO6XwY00UEDK6cNIDnuNibPf0EgAP7Y1myuiQHLDsF/0h5unrGh6WAbv7aegg2ZMd3uRKfT/3SJztcaujYfTvMXspfCTmYcoO6a+vhC3ss4M8uM58t4siiu59I4aOl59e9Sr6xoxYlHf2v+NnBNpJYeJf8jABQAId/PXuBkLEFkiCucgSGEcfhvajql/j3reCGl0M5/9gQWy7ayNPs+wlvIxFnNfSlfuND4CZOCyxOHhRqOmHN4ULHo3tCSrUNvgAA=`,lo=0;async function uo(e){let t=Date.now();if(t-lo<2e3)return;lo=t;let n=` + position: relative; + display: block; + font-size: 18px; + background-size: 20px; + background-position: 10px 5px; + background-repeat:no-repeat; + background-image:url('${co}'); + background-max-size: 40px; + margin-bottom: 5px; + margin-top: .3em; + margin-bottom: .5em; + padding: .2em; + padding-left: 25px; + border-radius: .5em; + border: 2px solid rgba(160,160,160,.3); + `,r=`Needle Engine — No license active, commercial use is not allowed. Visit https://needle.tools/pricing for more information and licensing options! v${Bi}`;B.Current?.xr||navigator.webdriver?console.log(r):console.log(`%c `+r,n)}async function fo(e){if(!window.crossOriginIsolated){if(!$a.isAllowed(e)){Wa&&console.debug(`Telemetry is disabled via no-telemetry attribute`);return}try{{let e=window.location.href.split(`?`)[0],t={license:Ka,url:e,hostname:window.location.hostname,pathname:window.location.pathname,version:Bi,generator:Vi,build_time:Hi,public_key:Ui},n=navigator.sendBeacon?.(`https://needle.tools/api/v1/needle-engine/ping`,JSON.stringify(t));Wa&&console.debug(`Sent beacon: `+n)}}catch(e){Wa&&console.log(`Failed to send non-commercial usage message to analytics backend`,e)}}}var po=typeof Ta==`function`?Ta:Ta.default,mo;(function(e){e.baseUrl=`https://networking.needle.tools`;function t(e){return po(new Uint8Array(e))}e.hashMD5=t;function n(e){let t=po(new Uint8Array(e),{encoding:`binary`,asBytes:!0});return btoa(String.fromCharCode(...t))}e.hashMD5_Base64=n;function r(e){let t=new Uint8Array(e);return crypto.subtle.digest(`SHA-256`,t).then(e=>btoa(String.fromCharCode(...new Uint8Array(e))))}e.hashSha256=r;function i(e){let t=e.filesize/1024/1024;return Xa()?t<50:t<5}e.canUpload=i;async function a(t,r){let i=e.baseUrl;if(!i)return console.error(`Blob storage base url is not set`),null;if(!t.name)return console.error(`Upload: file name is missing`),null;let a=null;a=t instanceof File?await t.arrayBuffer():t.data;let o=a.byteLength,s=o/1024/1024;if(s>50)return r?.silent!==!0&&Ei(`File (${s.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${s.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Xa()&&s>5)return r?.silent!==!0&&Ei(`File is too large for uploading. Please get a
commercial license to upload files larger than 5MB`),console.warn(`Your file is too large for uploading (${s.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(o<1)return console.warn(`Your file is too small for uploading (${s.toFixed(1)}MB). Min size is 1 byte`),null;let c=n(a),l={filename:t.name,"Content-Md5":c,"Content-Type":t.type||`application/octet-stream`,FileSize:o.toString(),"Content-Disposition":`attachment; filename=\"${t.name}\"`,"x-amz-server-side-encryption":`AES256`},u=await fetch(i+`/api/needle/blob`,{method:`POST`,headers:l,signal:r?.abort}).then(e=>e.json()).catch(e=>(console.error(e),null));if(u==null)return console.warn(`Upload failed...`),null;if(`error`in u)return console.error(u.error),null;if(`upload`in u&&u.upload){console.debug(`Uploading file`,u.upload);let e=!1,t=null;for(let i=0;i<3;i++)try{if(e)break;if(r?.abort?.aborted)return console.debug(`Aborted upload`),null;let a=await n(u.upload);a instanceof Error?(t=a,await Kt(1e3*i)):a.ok&&(console.debug(`File uploaded successfully`),e=!0)}catch(e){console.error(e)}if(!e)return console.error(t?.message||`Failed to upload file`),null;function n(e){return r?.onProgress?.call(null,{progress01:0,state:`inprogress`}),fetch(e,{method:`PUT`,headers:l,body:a,signal:r?.abort}).then(e=>(r?.onProgress?.call(null,{progress01:1,state:`finished`}),e)).catch(e=>e)}}if(`download`in u){let e=i+u.download;return console.debug(`File found in blob storage`,e),{key:u.key,success:!0,download_url:e}}return null}e.upload=a;function o(t){return`${e.baseUrl}/api/needle/blob/${t}`}e.getBlobUrlForKey=o;async function s(e,t){let n=new we;n.setResponseType(`arraybuffer`);let r=await n.loadAsync(e,e=>{t&&t.call(null,e)});return r instanceof ArrayBuffer?new Uint8Array(r):(console.error(`Download failed, no arraybuffer returned`),null)}e.download=s})(mo||={});var ho=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function go(e){return typeof e==`string`&&ho.test(e)}var _o=[];for(let e=0;e<256;++e)_o.push((e+256).toString(16).slice(1));function vo(e,t=0){return _o[e[t+0]]+_o[e[t+1]]+_o[e[t+2]]+_o[e[t+3]]+`-`+_o[e[t+4]]+_o[e[t+5]]+`-`+_o[e[t+6]]+_o[e[t+7]]+`-`+_o[e[t+8]]+_o[e[t+9]]+`-`+_o[e[t+10]]+_o[e[t+11]]+_o[e[t+12]]+_o[e[t+13]]+_o[e[t+14]]+_o[e[t+15]]}function yo(e){if(!go(e))throw TypeError(`Invalid UUID`);let t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=t&255,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=t&255,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=t&255,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=t&255,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=t&255,n}function bo(e){e=unescape(encodeURIComponent(e));let t=[];for(let n=0;n>>32-t}function Eo(e){let t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e==`string`){let t=unescape(encodeURIComponent(e));e=[];for(let n=0;n>>0;l=c,c=s,s=To(o,30)>>>0,o=i,i=a}n[0]=n[0]+i>>>0,n[1]=n[1]+o>>>0,n[2]=n[2]+s>>>0,n[3]=n[3]+c>>>0,n[4]=n[4]+l>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,n[0]&255,n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,n[1]&255,n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,n[2]&255,n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,n[3]&255,n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,n[4]&255]}var Do=Co(`v5`,80,Eo),Oo;(function(e){e[e.OnConnection=0]=`OnConnection`,e[e.OnRoomJoin=1]=`OnRoomJoin`,e[e.Queued=2]=`Queued`,e[e.Immediate=3]=`Immediate`})(Oo||={}),k.registerCallback(O.ContextCreated,e=>{let t=e.context;Ho(t),Io(t)});var ko=A(`debugcomponents`),Ao=`eff8ba80-635d-11ec-90d6-0242ac120003`,jo=class e{get seed(){return this._seed}set seed(e){this._seed=e}_originalSeed;_seed;constructor(t){typeof t==`string`&&(t=e.hash(t)),this._originalSeed=t,this._seed=t}reset(){this._seed=this._originalSeed}generateUUID(e){if(typeof e==`string`)return Do(e,Ao);let t=this._seed;return--this._seed,Do(t.toString(),Ao)}initialize(t){typeof t==`string`?this._seed=e.hash(t):this._seed=t}static createFromString(t){return new e(this.hash(t))}static hash(e){let t=0;for(let n=0;n{ko&&console.log(`[Remote] Destroyed`,e.scene,t);let n=jf(t.guid,e.scene);n&&zf(n)})}var Lo=class{filename;hash;size;constructor(e,t,n){this.filename=e,this.hash=t,this.size=n}},Ro=class{guid;originalGuid;seed;visible;hostData;dontSave;parent;position;rotation;scale;preventCreation=void 0;deleteStateOnDisconnect;constructor(e,t){this.originalGuid=e,this.guid=t}};function zo(e,t,n,r){let i=e;if(!i.guid)return console.warn(`Can not instantiate: No guid`,i),null;if(t.context||=B.Current,!t.context)return console.error(`Missing network instantiate options / reference to network connection in sync instantiate`),null;let a=t?{...t}:null,{instance:o,seed:s}=Uo(i,t);if(o){let e=o;if(e.guid){ko&&console.log(`[Local] new instance`,`gameobject:`,o?.guid);let c=new Ro(i.guid,e.guid);c.seed=s,t.deleteOnDisconnect===!0&&(c.deleteStateOnDisconnect=!0),a&&(a.position&&(Array.isArray(a.position)?c.position={x:a.position[0],y:a.position[1],z:a.position[2]}:c.position={x:a.position.x,y:a.position.y,z:a.position.z}),a.rotation&&(a.rotation instanceof He?a.rotation=new E().setFromEuler(a.rotation):a.rotation instanceof Array&&(a.rotation=new E().fromArray(a.rotation)),c.rotation={x:a.rotation.x,y:a.rotation.y,z:a.rotation.z,w:a.rotation.w}),a.scale&&(Array.isArray(a.scale)?c.scale={x:a.scale[0],y:a.scale[1],z:a.scale[2]}:c.scale={x:a.scale.x,y:a.scale.y,z:a.scale.z})),c.position||={x:e.position.x,y:e.position.y,z:e.position.z},c.rotation||={x:e.quaternion.x,y:e.quaternion.y,z:e.quaternion.z,w:e.quaternion.w},c.scale||={x:e.scale.x,y:e.scale.y,z:e.scale.z},c.visible=i.visible,a?.parent&&(typeof a.parent==`string`?c.parent=a.parent:a.parent?.guid?c.parent=a.parent.guid:a.parent instanceof ne?c.parent=`scene`:console.warn(`Unsupported parent type in sync instantiate options: `+a.parent?.name)),c.hostData=n,r===!1&&(c.dontSave=!0),!t?.context?.connection&&M()&&console.debug(`Object will be instantiated but it will not be synced: not connected`,i.guid),t.context.connection.isInRoom&&Vo.push(new WeakRef(e)),t?.context?.connection.send(Mo.NewInstanceCreated,c)}else console.warn(`Missing guid, can not send new instance event`,e)}return o}function Bo(){return Math.random()*9999999}var Vo=[];function Ho(e){let t=e.connection.beginListen(Mo.NewInstanceCreated,async t=>{let n=await Ko(t.originalGuid,e.scene);if(t.preventCreation===!0)return;if(!n){console.warn(`could not find object that was instantiated: `+t.guid);return}let r=new Tf;t.position&&(r.position=new o(t.position.x,t.position.y,t.position.z)),t.rotation&&(r.rotation=new E(t.rotation.x,t.rotation.y,t.rotation.z,t.rotation.w)),t.scale&&(r.scale=new o(t.scale.x,t.scale.y,t.scale.z)),r.parent=t.parent,t.seed&&(r.idProvider=new jo(t.seed)),r.visible=t.visible,r.context=e,ko&&e.alias&&console.log(`[Remote] instantiate in: `+e.alias);let i=Wf(n,r);Vo.push(new WeakRef(i)),i&&(t.parent===`scene`&&e.scene.add(i),ko&&console.log(`[Remote] new instance`,`gameobject:`,i?.guid,n))}),n=e.connection.beginListen(`left-room`,()=>{Vo.length>0&&console.debug(`Left networking room, cleaning up ${Vo.length} instantiated objects`);for(let e of Vo){let t=e.deref();t&&t.destroy()}Vo.length=0});return()=>{e.connection.stopListen(Mo.NewInstanceCreated,t),e.connection.stopListen(`left-room`,n)}}function Uo(e,t){let n=Bo(),r=t??new Tf;return r.idProvider=new jo(n),{seed:n,instance:Wf(e,r)}}var Wo={};function Go(e,t){Wo[e]=t}async function Ko(e,t){let n=Wo[e];if(n!=null){let t=await n(e);if(t)return t}return qo(e,t)}function qo(e,t){if(t===null||!e)return null;if(t.guid===e)return t;if(t.children)for(let n of t.children){let t=qo(e,n);if(t)return t}return null}var Jo=A(`gizmos`),Yo=A(`debugextension`),Xo=A(`debugresolvedependencies`),Zo=[`/extensions/`,`extensions/`],Qo=[{prefix:`/nodes/`,dependencyName:`node`},{prefix:`/meshes/`,dependencyName:`mesh`},{prefix:`/materials/`,dependencyName:`material`},{prefix:`/textures/`,dependencyName:`texture`},{prefix:`/animations/`,dependencyName:`animation`},{prefix:`nodes/`,dependencyName:`node`},{prefix:`meshes/`,dependencyName:`mesh`},{prefix:`materials/`,dependencyName:`material`},{prefix:`textures/`,dependencyName:`texture`},{prefix:`animations/`,dependencyName:`animation`}];async function $o(e,t){Xo&&console.log(e,t);let n=[];ns(Qo,e,t,n);let r=await Promise.all(n);return typeof t==`string`&&r.length===1?r[0]:r}function es(e,t){return!e||!t?!1:e[`needle:identifier`]!=null&&t[`needle:identifier`]!=null?e[`needle:identifier`]===t[`needle:identifier`]:!1}function ts(e,t){e[`needle:identifier`]=t}function ns(e,t,n,r){if(typeof n==`object`&&n)for(let i of Object.keys(n)){let a=n[i];if(typeof a==`string`){let o=rs(t,a);if(o!=null)typeof o.then==`function`?r.push(o.then(e=>n[i]=e)):n[i]=o;else{let o=is(e,t,a);if(o){r.push(o.then(e=>(n[i]=e,e)));continue}}}else if(Array.isArray(a))for(let n=0;na[n]=e)):a[n]=o;continue}for(let o of e){let e=as(o.prefix,i);if(e>=0){Xo&&console.log(o,e,o.dependencyName),r.push(t.getDependency(o.dependencyName,e).then(e=>a[n]=e));break}}typeof i==`object`&&ns(e,t,i,r)}else typeof a==`object`&&ns(e,t,a,r)}else if(typeof n==`string`){let i=is(e,t,n);i&&r.push(i)}}function rs(e,t){if(e&&e.plugins&&typeof t==`string`){for(let n of Zo)if(t.startsWith(n)){let r=t.substring(n.length),i=r.indexOf(`/`);i>=0&&(r=r.substring(0,i));let a=e.plugins[r];if(Yo&&console.log(r,a),typeof a?.resolve==`function`){let i=t.substring(n.length+r.length+1);return a.resolve(e,i)}break}}return null}function is(e,t,n){for(let r of e){let e=as(r.prefix,n);if(e>=0)return Xo&&console.warn(`GET DEPENDENCY`,r,e,r.dependencyName),t.getDependency(r.dependencyName,e)}return null}function as(e,t){if(typeof t==`string`&&t.startsWith(e)){let n=t.substring(e.length),r=Number.parseInt(n);if(r>=0)return r}return-1}var os=`NEEDLE_persistent_assets`;function ss(e){return e?.___persistentAsset===!0}var cs=class{get name(){return os}parser;constructor(e){this.parser=e}async afterRoot(e){if(!this.parser?.json?.extensions)return;let t=this.parser.json.extensions[os];if(!t)return;Yo&&console.log(t);let n=[];for(let e of t?.assets){let t=$o(this.parser,e);t&&n.push(t)}await Promise.all(n)}resolve(e,t){let n=Number.parseInt(t);if(n>=0){Yo&&console.log(t);let r=e.json.extensions[os];if(r){let e=r?.assets[n];if(e&&typeof e==`object`){e.___persistentAsset=!0;let t=e.__type;t&&ji.get(t)}return e}}return null}},ls=A(`debugserializer`),us=new class{register(e,t){if(this.typeMap.has(e)){let n=this.typeMap.get(e);if(n===t)return;ls&&console.warn(`Type: `+e+` is already registered`,t,n)}ls&&console.log(`Register type serializer`,t.name,t,e),this.typeMap.set(e,t)}typeMap=new Map;getSerializer(e){if(e)return this.typeMap.get(e)}getSerializerForConstructor(e,t=0){if(t>20)return;if(!e||!e.constructor){ls&&console.log(`invalid type`);return}let n=e.name,r=this.getSerializer(e);if(r!==void 0)return ls&&console.log(`FOUND SERIALIZER`,r?.name,e.name,e.constructor.name,`for type: `+n,r,e,this.typeMap),r;let i=Object.getPrototypeOf(e);if(i&&i!==e){let e=this.getSerializerForConstructor(i,++t);if(e){let t=i.constructor||i.prototype;ls&&console.log(`FOUND SERIALIZER(in constructor) `+t.constructor.name,t.name,t,e),this.register(t,e)}return e}ls&&console.warn(`No serializer found for `+n,e,e.name,e.constructor.name)}},ds=class{name;constructor(e,t){if(this.name=t,Array.isArray(e))for(let t of e)us.register(t,this);else us.register(e,this)}},fs=class{isDevMode=wt();cache={};registerDefinedKeys(e,t){if(this.isDevMode&&this.cache[e]===void 0){this.cache[e]=Object.keys(t);let n=t;n.$serializedTypes&&Object.keys(n.$serializedTypes)&&this.cache[e].push(...Object.keys(n.$serializedTypes)),ls&&console.log(`registerDefinedKeys for `+e,this.cache[e],t)}}getDefinedKey(e,t){return this.cache[e]===void 0?!1:this.cache[e].includes(t)}},ps=class{root;gltf;gltfId;object;target;nodeId;nodeToObject;objectToNode;context;path;type;serializable;implementationInformation;constructor(e){this.root=e}};function ms(e,t){let n=e.$serializedTypes;if(n===void 0)return null;let r={};for(let i in n){let n=e[i];if(typeof n==`object`&&n){let e=us.getSerializerForConstructor(n);if(e){r[i]=e.onSerialize(n,t);continue}}r[i]=n}function i(t){let n=ji._types;for(let[t,r]of n)if(r===e.constructor)return t;return t.__name||t.constructor.name}return r.name=i(e),typeof e.guid==`string`&&(r.guid=e.guid),r}var hs=[];function gs(e,t){return e?(typeof e.$serializedTypes==`object`&&(t||={},Object.assign(t,e.$serializedTypes)),gs(Object.getPrototypeOf(e),t)):t}function _s(e,t,n){if(!e)return!1;if(n.target=e,e.onBeforeDeserialize!==void 0){let r=e.onBeforeDeserialize(t,n);if(typeof r==`boolean`)return r}let r=gs(e);if(t){if(typeof t.guid==`string`&&(e.guid=t.guid),r)for(let i in r){let a=r[i],o=t[i];if(ls&&console.log(i,o,e,a),e[i]!==void 0&&o===void 0||(n.type=void 0,n.path=i,n.serializable=a,e.onBeforeDeserializeMember!==void 0&&e.onBeforeDeserializeMember(i,o,n)===!0))continue;if(a===null)e[i]=o;else{if(Array.isArray(a))for(let t=0;tPlease rename "`+t+`" to "`+a+`" in `+r),console.warn(`Please use lowercase for field: "`+t+`" in `+r,o,e));continue}if(o!=null){if(typeof o==`object`&&(i===void 0||!i.isObject3D)){if(typeof o.node==`number`||typeof o.guid==`string`){if(o.could_not_resolve)continue;if(!(i!==void 0&&Object.keys(i).length>1)){zn(Tn.Warn,`Missing serialization for object reference!\n\nPlease change to: \n@serializable(Object3D)\n${a}? : Object3D;\n\nin ${r}.ts\nSee documentation`),console.warn(r,a,e[a],e);continue}}else if(!Array.isArray(i)){let e=i.constructor?.name;if(e===`Object`&&!i.constructor[`did_warn:missing_serializable`]){i.constructor[`did_warn:missing_serializable`]=!0;let t=`You might be missing a @serializable(Type) decorator for field "`+a+`" in `+r+`.ts`;console.warn(t+`\n${a}:`,o,e),zn(Tn.Warn,`Dev Warning: Are you missing a type in @serializable? Please check the browser console for details`)}}}if(typeof i==`string`&&typeof o==`string`&&(o.endsWith(`.gltf`)||o.endsWith(`.glb`))){zn(Tn.Warn,`Missing serialization for object reference!\n\nPlease change to: \n@serializable(AssetReference)\n${a}? : AssetReference;\n\nin script ${r}.ts\ndocumentation`),console.warn(r,a,e[a],e);continue}}}}function bs(e,t){for(let n of Object.keys(t)){let r=t[n];if(typeof r==`object`&&r&&r!==void 0){let t=e[n];if(!t){ls&&console.log(n,`is undefined on`,e);continue}for(let e of Object.keys(r))if(t[e]===void 0&&Ss(r[e])&&!Ss(t)){let n=xs(t,e);if(n&&(n?.writable===void 0||n?.writable===!1)&&n.set===void 0){ls&&console.warn(`Property is not writable "`+e+`"`,t,n,r[e],t[e]);continue}t[e]=r[e]}}}}function xs(e,t){for(;e;){let n=Object.getOwnPropertyDescriptor(e,t);if(n)return n;e=Object.getPrototypeOf(e)}}function Ss(e){switch(typeof e){case`number`:case`string`:case`boolean`:return!0}return!1}function Cs(e,t,n,r,i){let a=typeof t==`function`&&t.prototype===void 0,o=t;if(a)try{if(o=t?.call(t,i),a=!1,o==null)return}catch(t){console.error(`Error in callback`,t,e)}if(n.type=o,!a&&i&&(i instanceof T||i instanceof x||i instanceof ie||i instanceof Se))return i;if(r||={serializer:us.getSerializerForConstructor(o)},i&&typeof i==`object`&&ss(i)){if(i.__concreteInstance)return i.__concreteInstance;let t=i;if(!t.$serializedTypes&&o.prototype.$serializedTypes&&(t.$serializedTypes=o.prototype.$serializedTypes),t.$serializedTypes&&_s(t,e,n),i&&o!==void 0)try{let t=null;r.serializer&&(t=r.serializer.onDeserialize(e,n)),t||(t=new o,Yo&&console.log(`Create concrete instance for persistent asset`,i,`instance:`,t),Es(t,i)),i.__concreteInstance=t,i=t}catch(e){console.error(`Error creating instance or creating values on instance`,e,i,o)}return i}if(Array.isArray(e)){let i=[];for(let a=0;a=0&&this._context.pre_update_callbacks.splice(e,1);for(let e in this._assetReferences)this._assetReferences[e]?.unload();this._assetReferences={}}preUpdate=()=>{};findAssetReference(e){return this._assetReferences[e]||null}registerAssetReference(e){return e.url&&(this._assetReferences[e.url]?console.warn(`Asset reference already registered`,e):this._assetReferences[e.url]=e),e}unregisterAssetReference(e){e.url&&delete this._assetReferences[e.url]}},As=Symbol(`assetReference`),js=class e{static getOrCreateFromUrl(t,n){if(!n&&(n=B.Current,!n))throw Error(`Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.`);let r=n.addressables,i=r.findAssetReference(t);if(i)return i;let a=new e(t,n.hash);return r.registerAssetReference(a),a}static getOrCreate(t,n,r){if(typeof t==`string`){if(!r&&(r=B.Current,!r))throw Error(`Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.`)}else r=t.context,t=t.sourceId;let i=Zt(t,n);Os&&console.log(`GetOrCreate Addressable from`,t,n,`FinalPath=`,i);let a=r.addressables,o=a.findAssetReference(i);if(o)return o;let s=new e(i,r.hash);return a.registerAssetReference(s),s}isAssetReference=!0;get rawAsset(){return this._rawAsset}get asset(){return this._glbRoot??(this._rawAsset?.scene||null)}set asset(e){e?this._rawAsset={animations:e.animations,scene:e,scenes:[e]}:this._rawAsset=null}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith(`http`)||this._url.startsWith(`blob:`)||this._url.startsWith(`www.`)||this._url.includes(`/`))}_rawAsset=null;_glbRoot;_url;_urlName;_progressListeners=[];_isLoadingRawBinary=!1;_rawBinary;constructor(...e){typeof e[0]==`object`?`url`in e[0]?this._url=e[0].url:(this._url=``,e[0].asset&&(this.asset=e[0].asset)):(this._url=e[0],e[2]instanceof S&&(this.asset=e[2]));let t=this._url.lastIndexOf(`/`);if(t>=0){this._urlName=this._url.substring(t+1);let e=this._urlName.lastIndexOf(`.`);e>=0&&(this._urlName=this._urlName.substring(0,e))}else this._urlName=this._url;Go(this._url,this.onResolvePrefab.bind(this))}async onResolvePrefab(e){return e===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||Nf(this.asset)===!0}_loadingPromise=null;isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(Os&&console.log(`Unload`,this.asset),`scene`in this.asset&&this.asset.scene&&zf(this.asset.scene,!0,!0),zf(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loadingPromise=null,B.Current&&B.Current.addressables.unregisterAssetReference(this)}async preload(){return!this.mustLoad||this._isLoadingRawBinary?null:this._rawBinary===void 0?(this._isLoadingRawBinary=!0,Os&&console.log(`Preload`,this.url),this._rawBinary=(await mo.download(this.url,e=>{this.raiseProgressEvent(e)}))?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary):this._rawBinary}async loadAssetAsync(e){if(Os&&console.log(`[AssetReference] loadAssetAsync`,this.url),!this.mustLoad)return this.asset?.parent&&console.warn(`[AssetReference] "${this.urlName}" is already loaded and parented to "${this.asset.parent.name||`scene`}". loadAssetAsync() returns the same shared instance — use .instantiate() to create a new copy.`),this.asset;if(e&&this._progressListeners.push(e),this._loadingPromise!==null)return this._loadingPromise.then(e=>this.asset);let t=B.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error(`[AssetReference] Failed loading – Invalid data. Must be of type ArrayBuffer. `+typeof this._rawBinary),null;this._loadingPromise=ba().parseSync(t,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent(`progress`,{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else Os&&console.log(`Load async`,this.url),this._loadingPromise=ba().loadSync(t,this.url,this.url,null,e=>{this.raiseProgressEvent(e)});this._loadingPromise.finally(()=>this._loadingPromise=null);let n=await this._loadingPromise;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(n),n?(n[As]=this,this._glbRoot&&(this._glbRoot[As]=this),this.asset&&(this.asset[As]=this),ep(t),n.scene!==void 0&&(this._rawAsset=n),this.asset):null}instantiate(e){return this.onInstantiate(e,!1)}instantiateSynced(e,t=!0){return this.onInstantiate(e,!0,t)}beginListenDownload(e){this._progressListeners.indexOf(e)<0&&this._progressListeners.push(e)}endListenDownload(e){let t=this._progressListeners.indexOf(e);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(e){for(let t of this._progressListeners)t(this,e)}static currentlyInstantiating=new Map;async onInstantiate(t,n=!1,r){let i=B.Current,a=new Tf;if(t instanceof S?a.parent=t:t&&(Object.assign(a,t),a.cloneAssign(t)),a.parent===void 0&&(a.parent=i.scene),this.mustLoad&&await this.loadAssetAsync(),Os&&console.log(`Instantiate`,this.url,`parent:`,t),this.asset){Os&&console.log(`Add to scene`,this.asset);let t=e.currentlyInstantiating.get(this.url);if(t!==void 0&&t>=1e4)return console.error(`Recursive or too many instantiations of `+this.url+` in the same frame (`+t+`)`),null;try{if(t===void 0&&(t=0),t+=1,e.currentlyInstantiating.set(this.url,t),n){a.context=i;let e=this.asset;e.guid=this.url;let t=zo(e,a,void 0,r);if(t)return t}else{let e=Wf(this.asset,a);if(e)return e}}finally{i.post_render_callbacks.push(()=>{t===void 0||t<0?t=0:--t,e.currentlyInstantiating.set(this.url,t)})}}else Os&&console.warn(`Failed to load asset`,this.url);return null}tryGetActualGameObjectRoot(e){if(e&&e.scene){let t=e.scene;if(t.isGroup&&t.children.length===1&&t.children[0].name+`glb`===t.name){let e=t.children[0];return e.animations=t.animations,e}else return t}return null}};new class extends ds{constructor(){super([js],`AssetReferenceSerializer`)}onSerialize(e,t){if(e&&e.uri!==void 0&&typeof e.uri==`string`)return e.uri}onDeserialize(e,t){if(typeof e==`string`)return t.context?t.gltfId?js.getOrCreate(t.gltfId,e,t.context):(console.error(`Missing source id`),null):(console.error(`Missing context`),null);if(e instanceof S){if(!t.context)return console.error(`Missing context`),null;if(!t.gltfId)return console.error(`Missing source id`),null;let n=e,r=t.context,i=n.guid??n.uuid,a=r.addressables.findAssetReference(i);if(a)return a;let o=new js(i,void 0,n);return r.addressables.registerAssetReference(o),o}return null}};var Ms=Promise.resolve(null),Ns=class e{static imageReferences=new Map;static getOrCreate(t){let n=e.imageReferences.get(t);return n||(n=new e(t),e.imageReferences.set(t,n)),n}constructor(e){this.url=e}url;_bitmap;_bitmapObject;dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){let e=new Image;return e.src=this.url,e}loader=null;createTexture(){return this.url?(this.loader||=new me,this.loader.setCrossOrigin(`anonymous`),this.loader.loadAsync(this.url).then(e=>(e&&!e.name?.length&&(e.name=this.url.split(`/`).pop()??this.url),e))):(console.error(`Can not load texture without url`),Ms)}getBitmap(){return this._bitmap||=new Promise((e,t)=>{let n=document.createElement(`img`);n.addEventListener(`load`,()=>{this._bitmap=createImageBitmap(n).then(t=>(this._bitmapObject=t,e(t),t))}),n.addEventListener(`error`,t=>{console.error(`Failed to load image:`+this.url,t),e(null)}),n.src=this.url}),this._bitmap}},Ps=class extends ds{constructor(){super([Ns],`ImageReferenceSerializer`)}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`){let n=Zt(t.gltfId,e);return Ns.getOrCreate(n)}}};new Ps;var Fs=class e{static cache=new Map;static getOrCreate(t){let n=e.cache.get(t);return n||(n=new e(t),e.cache.set(t,n)),n}async loadRaw(){return this.res||=fetch(this.url),this.res.then(e=>e.blob())}async loadText(){return this.res||=fetch(this.url),this.res.then(e=>e.text())}url;res;constructor(e){this.url=e}},Is=class extends ds{constructor(){super([Fs],`FileReferenceSerializer`)}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`){let n=Zt(t.gltfId,e);return Fs.getOrCreate(n)}}};new Is;var Ls;(function(e){e.Visible=`application-visible`,e.Hidden=`application-hidden`,e.MuteChanged=`application-mutechanged`})(Ls||={});var Rs=!1,zs=[];function Bs(){if(Rs)return;M()&&console.debug(`[Needle Engine] User input registered: Media playback is now allowed.`),Rs=!0;let e=[...zs];zs.length=0,e.forEach(e=>e())}document.addEventListener(`mousedown`,Bs),document.addEventListener(`pointerup`,Bs),document.addEventListener(`click`,Bs),document.addEventListener(`dragstart`,Bs),document.addEventListener(`touchend`,Bs),document.addEventListener(`keydown`,Bs),typeof window<`u`&&`userActivation`in navigator&&navigator.userActivation?.isActive&&(M()&&console.debug(`[Needle Engine] User input already active: Media playback is now allowed.`),zs.length=0,Rs=!0);var Vs=class e extends EventTarget{static get userInteractionRegistered(){return Rs}static registerWaitForAllowAudio=e.registerWaitForInteraction;static registerWaitForInteraction(e){if(e!==null){if(Rs){e();return}zs.indexOf(e)===-1&&zs.push(e)}}static unregisterWaitForInteraction(e){let t=zs.indexOf(e);t!==-1&&zs.splice(t,1)}_mute=!1;get muted(){return this._mute}set muted(e){e!==this._mute&&(this._mute=e,this.dispatchEvent(new Event(Ls.MuteChanged)))}context;get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}_isVisible=!0;constructor(e){super(),this.context=e,window.addEventListener(`visibilitychange`,this.onVisiblityChanged.bind(this),!1)}onVisiblityChanged(e){switch(e.target.visibilityState){case`hidden`:this._isVisible=!1,this.dispatchEvent(new Event(Ls.Hidden));break;case`visible`:this._isVisible=!0,this.dispatchEvent(new Event(Ls.Visible));break}}};function*Hs(e,t=null){let n=t?t.time:B.Current.time,r=n.time;for(;n.time-rt=!1),e.catch(()=>t=!1);t;)yield}var Gs;(function(e){e[e.Quad=0]=`Quad`,e[e.Cube=1]=`Cube`,e[e.Sphere=2]=`Sphere`,e[e.Cylinder=3]=`Cylinder`,e[e.RoundedCube=10]=`RoundedCube`})(Gs||={});var Ks=class{static createText(e,t){let n=null,r=t?.font||Ys(t?.familyFamily||null);r instanceof yt?n=this.#e(e,r,t):n??=new ie;let i=t?.color||16777215,a=new x(n,t?.material??new Ce({color:i}));return this.applyDefaultObjectOptions(a,t),r instanceof Promise?r.then(n=>{a.geometry=this.#e(e,n,t),t?.onGeometry&&t.onGeometry(a)}):t?.onGeometry&&t.onGeometry(a),a}static#e(e,t,n){let r=n?.depth||.1;return new _t(e,{font:t,size:1,depth:r,height:r,bevelEnabled:n?.bevel||!1,bevelThickness:.01,bevelOffset:.01,bevelSize:.01})}static createOccluder(e){let t=new re({colorWrite:!1,depthWrite:!0,side:2});return this.createPrimitive(e,{material:t})}static createPrimitive(e,t){let n,r=t?.color||16777215;switch(e){case`Quad`:case Gs.Quad:{let e=new Ke(1,1,1,1),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Quad`}break;case`Cube`:case Gs.Cube:{let e=new Xe(1,1,1),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Cube`}break;case Gs.RoundedCube:case`RoundedCube`:{let e=qs(1,1,1,.1,2),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`RoundedCube`}break;case`Sphere`:case Gs.Sphere:{let e=new Ue(.5,16,16),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Sphere`}break;case`Cylinder`:case Gs.Cylinder:{let e=new c(.5,.5,1,32),i=t?.material??new Ce({color:r});t?.texture&&`map`in i&&(i.map=t.texture),n=new x(e,i),n.name=`Cylinder`}break;case`ShaderBall`:n=new ve,n.name=`ShaderBall`,Qs(n,t);break}return this.applyDefaultObjectOptions(n,t),n}static createSprite(e){let t=new Ae({color:16777215});e?.texture&&`map`in t&&(t.map=e.texture);let n=new Ie(t);return this.applyDefaultObjectOptions(n,e),n}static applyDefaultObjectOptions(e,t){e.receiveShadow=!0,e.castShadow=!0,t?.name&&(e.name=t.name),t?.position&&(Array.isArray(t.position)?e.position.set(t.position[0],t.position[1],t.position[2]):e.position.set(t.position.x||0,t.position.y||0,t.position.z||0)),t?.rotation&&(Array.isArray(t.rotation)?e.rotation.set(t.rotation[0],t.rotation[1],t.rotation[2]):e.rotation.set(t.rotation.x||0,t.rotation.y||0,t.rotation.z||0)),t?.scale&&(typeof t.scale==`number`?e.scale.set(t.scale,t.scale,t.scale):Array.isArray(t.scale)?e.scale.set(t.scale[0],t.scale[1],t.scale[2]):e.scale.set(t.scale.x||1,t.scale.y||1,t.scale.z||1)),t?.receiveShadow!=null&&(e.receiveShadow=t.receiveShadow),t?.castShadow!=null&&(e.castShadow=t.castShadow),t?.parent&&t.parent.add(e)}};function qs(e,t,n,r,i){let a=new Le,o=1e-5,s=r-o;a.absarc(o,o,o,-Math.PI/2,-Math.PI,!0),a.absarc(o,t-s*2,o,Math.PI,Math.PI/2,!0),a.absarc(e-s*2,t-s*2,o,Math.PI/2,0,!0),a.absarc(e-s*2,o,o,0,-Math.PI/2,!0);let c=new Re(a,{bevelEnabled:!0,bevelSegments:i*2,steps:1,bevelSize:s,bevelThickness:r,curveSegments:i,UVGenerator:{generateTopUV:(n,r)=>{let i=[];for(let n=0;n{let c=[];return c.push(new w(r[i]/e,r[i+1]/t)),c.push(new w(r[a]/e,r[a+1]/t)),c.push(new w(r[o]/e,r[o+1]/t)),c.push(new w(r[s]/e,r[s+1]/t)),c}}});return c.scale(1,1,1-r),c.center(),c.index||c.setIndex(Array.from({length:c.attributes.position.count},(e,t)=>t)),c.computeVertexNormals(),c}var Js=new Map;function Ys(e){let t=``;switch(e){default:case`OpenSans`:t=`https://cdn.needle.tools/static/fonts/facetype/Open Sans_Regular_ascii.json`;break;case`Helvetiker`:t=`https://cdn.needle.tools/static/fonts/facetype/Helvetiker_Regular_ascii.json`;break}if(Js.has(t)){let e=Js.get(t);if(e)return e}let n=new vt,r=new Promise((e,r)=>{n.load(t,n=>{Js.set(t,n),e(n)},void 0,r)});return Js.set(t,r),r}var Xs=!1,Zs=null;function Qs(e,t){if(Zs===null){let e=new mt,t=dt(null);e.setDRACOLoader(t.dracoLoader),e.setKTX2Loader(t.ktx2Loader),Xs=!0,Zs=e.loadAsync(`https://cdn.needle.tools/static/models/shaderball.glb`).then(e=>{let t=e.scene;return t.position.y-=.5,t}).catch(e=>(console.warn(`Failed to load shaderball mesh: `+e.message),ec())).finally(()=>{Xs=!1})}if(Xs){let n=ec();n.name=`ShaderBall-Placeholder`;let r=n.children[0];r?.type===`Mesh`&&$s(r,t),e.add(n)}Zs.then(n=>{e.children.forEach(t=>{t.name===`ShaderBall-Placeholder`&&e.remove(t)});let r=n.clone(),i=r.children[0];i?.type===`Mesh`&&(i.geometry.attributes.tangent||i.geometry.computeTangents(),$s(i,t)),e.add(r)})}function $s(e,t){if(t?.color||t?.material||t?.texture){let n=t?.material??e.material?.clone()??new Ce;t.color&&`color`in n&&n.color instanceof a&&n.color.set(t.color),t?.texture&&`map`in n&&(n.map=t.texture),e.material=n}}function ec(){return new ve().add(Ks.createPrimitive(`Sphere`,{material:new re({transparent:!0,opacity:.1})}))}var I=A(`debuginput`),tc;(function(e){e.Mouse=`mouse`,e.Touch=`touch`,e.Controller=`controller`,e.Hand=`hand`})(tc||={});var nc;(function(e){e.PointerDown=`pointerdown`,e.PointerUp=`pointerup`,e.PointerMove=`pointermove`})(nc||={});var rc;(function(e){e.KeyDown=`keydown`,e.KeyUp=`keyup`,e.KeyPressed=`keypress`})(rc||={});var L;(function(e){e.PointerDown=`pointerdown`,e.PointerUp=`pointerup`,e.PointerMove=`pointermove`,e.KeyDown=`keydown`,e.KeyUp=`keyup`,e.KeyPressed=`keypress`})(L||={});var ic=class extends PointerEvent{clientZ;deviceIndex;origin;source;mode;get isSpatial(){return this.mode!=`screen`}get ray(){return this._ray||=new p(this.space.worldPosition.clone(),this.space.worldForward.clone()),this._ray}set ray(e){this._ray=e}get hasRay(){return this._ray!==void 0}_ray;space;isClick=!1;isDoubleClick=!1;get used(){return this._used}_used=!1;use(){this._used=!0}get pointerId(){return this._pointerid}_pointerid;get pointerType(){return this._pointerType}_pointerType;buttonName=void 0;get type(){return this._type}_type;metadata={};intersections=[];constructor(e,t,n){super(e,n),this.clientZ=n.clientZ,this._pointerid=n.pointerId,this._pointerType=n.pointerType,this._type=e,this.deviceIndex=n.deviceIndex,this.origin=n.origin,this.source=t,this.mode=n.mode,this._ray=n.ray,this.space=n.device,this.buttonName=n.buttonName}_immediatePropagationStopped=!1;get immediatePropagationStopped(){return this._immediatePropagationStopped}_propagationStopped=!1;get propagationStopped(){return this._immediatePropagationStopped||this._propagationStopped}stopImmediatePropagation(){this._immediatePropagationStopped=!0,super.stopImmediatePropagation(),this.source?.stopImmediatePropagation()}stopPropagation(){this._propagationStopped=!0,super.stopPropagation(),this.source?.stopPropagation(),I&&console.warn(`Stop propagation...`,this.pointerId,this.pointerType)}},ac=class extends KeyboardEvent{source;constructor(e,t,n){super(e,n),this.source=t}stopImmediatePropagation(){super.stopImmediatePropagation(),this.source?.stopImmediatePropagation()}},oc=class{key;keyType;source;constructor(e){this.key=e.key,this.keyType=e.type,this.source=e}},sc;(function(e){e[e.Early=-100]=`Early`,e[e.Default=0]=`Default`,e[e.Late=100]=`Late`})(sc||={});var cc=class{_eventListeners={};addEventListener(e,t,n){if(this._eventListeners[e]||(this._eventListeners[e]=[]),!t||typeof t!=`function`){console.error(`Invalid call to addEventListener: callback is required and must be a function!`);return}n=n?{...n}:{};let r=0;n?.queue!=null&&(r=n.queue);let i=this._eventListeners[e],a=i.find(e=>e.priority===r);a?a.listeners.push({callback:t,options:n}):(i.push({priority:r,listeners:[{callback:t,options:n}]}),i.sort((e,t)=>e.priority-t.priority))}removeEventListener(e,t,n){if(!this._eventListeners[e]||!t)return;let r=this._eventListeners[e];if(n?.queue!=null){let e=r.find(e=>e.priority===n.queue);if(!e)return;let i=e.listeners.findIndex(e=>e.callback===t);i>=0&&e.listeners.splice(i,1)}else for(let e of r){let n=e.listeners.findIndex(e=>e.callback===t);n>=0&&e.listeners.splice(n,1)}}dispatchEvent(e){let t=!1;if(e instanceof ac){let t=this._eventListeners[e.type];if(t)for(let n of t)for(let t=0;t10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(e){for(let t=this._setCursorTypes.length-1;t>=0;t--)if(this._setCursorTypes[t]===e){this._setCursorTypes.splice(t,1),this.updateCursor();break}}updateCursor(){this._setCursorTypes?.length==0?this.context.domElement.style.cursor=`default`:this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(e){for(let t of this._pointerEventsPressed)if(t.pointerId===e&&t.used)return!0;return!1}getPointerPressedCount(){let e=0;for(let t=0;t=this._pointerPositions.length?null:this._pointerPositions[e]}getPointerPositionLastFrame(e){return e>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[e]}getPointerPositionDelta(e){return e>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[e]}getPointerPositionRC(e){return e>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[e]}getPointerDown(e){return e>=this._pointerDown.length?!1:this._pointerDown[e]}getPointerUp(e){return e>=this._pointerUp.length?!1:this._pointerUp[e]}getPointerPressed(e){return e>=this._pointerPressed.length?!1:this._pointerPressed[e]}getPointerClicked(e){return e>=this._pointerClick.length?!1:this._pointerClick[e]}getPointerDoubleClicked(e){return e>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[e]}getPointerDownTime(e){return e>=this._pointerDownTime.length?-1:this._pointerDownTime[e]}getPointerUpTime(e){return e>=this._pointerUpTime.length?-1:this._pointerUpTime[e]}getPointerLongPress(e){return e>=this._pointerDownTime.length?!1:this.getPointerPressed(e)&&this.context.time.time-this._pointerDownTime[e]>this._longPressTimeThreshold}getIsMouse(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]===tc.Mouse}getIsTouch(e){return e<0||e>=this._pointerTypes.length?!1:this._pointerTypes[e]===tc.Touch}getTouchesPressedCount(){let e=0;for(let t=0;t=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[e]}getMouseWheelDeltaY(e=0){return e>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[e]}getPointerEvent(e){if(!(e>=this._pointerEvent.length))return this._pointerEvent[e]??void 0}*foreachPointerId(e){for(let t=0;t=0&&n.splice(r,1)}getFirstPressedButtonForPointer(e){let t=this._pressedStack.get(e);if(t)return t[0]}getLatestPressedButtonForPointer(e){let t=this._pressedStack.get(e);if(t)return t[t.length-1]}getKeyDown(e){if(e!==void 0)return this.isKeyDown(e);for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.startFrame===this.context.time.frameCount)return t.key}return null}getKeyPressed(e){if(e!==void 0)return this.isKeyPressed(e);for(let e in this.keysPressed){let t=this.keysPressed[e];if(t.pressed)return t.key}return null}getKeyUp(e){if(e!==void 0)return this.isKeyUp(e);for(let e in this.keysPressed){let t=this.keysPressed[e];return t.pressed===!1&&t.frame===this.context.time.frameCount}return null}isKeyDown(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyDown(e))return!0;return!1}let n=this.keysPressed[e];return n?n.startFrame===this.context.time.frameCount&&n.pressed:!1}isKeyUp(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyUp(e))return!0;return!1}let n=this.keysPressed[e];return n?n.frame===this.context.time.frameCount&&n.pressed===!1:!1}isKeyPressed(e){if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;let t=this.getCodeForCommonKeyName(e);if(t!==null){for(let e of t)if(this.isKeyPressed(e))return!0;return!1}let n=this.keysPressed[e];return n&&n.pressed||!1}getCodeForCommonKeyName(e){if(e.length===1){if(e>=`0`&&e<=`9`)return[`Digit`+e];if(e>=`a`&&e<=`z`)return[`Key`+e.toUpperCase()];if(e==` `)return[`Space`]}switch(e){case`shift`:case`Shift`:return[`ShiftLeft`,`ShiftRight`];case`control`:case`Control`:return[`ControlLeft`,`ControlRight`];case`alt`:case`Alt`:return[`AltLeft`,`AltRight`]}return null}createInputEvent(e){switch(e.type){case L.PointerDown:I&&Ti(`Create Pointer down`),this.onDownButton(e.deviceIndex,e.button),this.onDown(e);break;case L.PointerMove:I&&Ti(`Create Pointer move`),this.onMove(e);break;case L.PointerUp:I&&Ti(`Create Pointer up`),this.onUp(e),this.onReleaseButton(e.deviceIndex,e.button);break}}convertScreenspaceToRaycastSpace(e){return e.x=(e.x-this.context.domX)/this.context.domWidth*2-1,e.y=-((e.y-this.context.domY)/this.context.domHeight)*2+1,e}constructor(e){this.context=e,this.context.post_render_callbacks.push(this.onEndOfFrame)}_htmlEventSource;bindEvents(){this.unbindEvents(),this._htmlEventSource=this.context.renderer.domElement,window.addEventListener(`contextmenu`,this.onContextMenu),this._htmlEventSource.addEventListener(`pointerdown`,this.onPointerDown,{passive:!0}),window.addEventListener(`pointermove`,this.onPointerMove,{passive:!0,capture:!0}),window.addEventListener(`pointerup`,this.onPointerUp,{passive:!0}),window.addEventListener(`pointercancel`,this.onPointerCancel,{passive:!0}),window.addEventListener(`touchstart`,this.onTouchStart,{passive:!0}),window.addEventListener(`touchmove`,this.onTouchMove,{passive:!0}),window.addEventListener(`touchend`,this.onTouchEnd,{passive:!0}),this._htmlEventSource.addEventListener(`wheel`,this.onMouseWheel,{passive:!0}),window.addEventListener(`wheel`,this.onWheelWindow,{passive:!0}),window.addEventListener(`keydown`,this.onKeyDown,!1),window.addEventListener(`keypress`,this.onKeyPressed,!1),window.addEventListener(`keyup`,this.onKeyUp,!1),window.addEventListener(`blur`,this.onLostFocus)}unbindEvents(){for(let e in this._eventListeners)this._eventListeners[e].length=0;window.removeEventListener(`contextmenu`,this.onContextMenu),this._htmlEventSource?.removeEventListener(`pointerdown`,this.onPointerDown),window.removeEventListener(`pointermove`,this.onPointerMove),window.removeEventListener(`pointerup`,this.onPointerUp),window.removeEventListener(`pointercancel`,this.onPointerCancel),window.removeEventListener(`touchstart`,this.onTouchStart),window.removeEventListener(`touchmove`,this.onTouchMove),window.removeEventListener(`touchend`,this.onTouchEnd),this._htmlEventSource?.removeEventListener(`wheel`,this.onMouseWheel,!1),window.removeEventListener(`wheel`,this.onWheelWindow,!1),window.removeEventListener(`keydown`,this.onKeyDown,!1),window.removeEventListener(`keypress`,this.onKeyPressed,!1),window.removeEventListener(`keyup`,this.onKeyUp,!1),window.removeEventListener(`blur`,this.onLostFocus)}dispose(){let e=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);e>=0&&this.context.post_render_callbacks.splice(e,1),this.unbindEvents()}onLostFocus=()=>{for(let e in this.keysPressed)this.keysPressed[e].pressed=!1};_receivedPointerMoveEventsThisFrame=[];onEndOfFrame=()=>{this._receivedPointerMoveEventsThisFrame.length=0;for(let e=0;e{this.canReceiveInput(e)};keysPressed={};onKeyDown=e=>{if(I&&console.log(`key down ${e.code}, ${this.context.application.hasFocus}`,e),!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(t&&t.pressed)return;this.keysPressed[e.code]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:e.key,code:e.code};let n=new ac(L.KeyDown,e,e);this.onDispatchEvent(n)};onKeyPressed=e=>{if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(!t)return;t.pressed=!0,t.frame=this.context.time.frameCount+1;let n=new ac(L.KeyPressed,e,e);this.onDispatchEvent(n)};onKeyUp=e=>{if(!this.context.application.hasFocus)return;let t=this.keysPressed[e.code];if(!t)return;t.pressed=!1,t.frame=this.context.time.frameCount+1;let n=new ac(L.KeyUp,e,e);this.onDispatchEvent(n)};onWheelWindow=e=>{document.pointerLockElement&&this.onMouseWheel(e)};onMouseWheel=e=>{if(this.canReceiveInput(e)===!1)return;this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;let t=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=t+e.deltaY};onPointerDown=e=>{if(this.context.isInAR||this.canReceiveInput(e)===!1)return;e.target instanceof HTMLElement&&e.target.setPointerCapture(e.pointerId);let t=this.getPointerId(e);I&&Ti(`pointer down #${t}, identifier:${e.pointerId}`);let n=this.getAndUpdateSpatialObjectForScreenPosition(t,e.clientX,e.clientY),r=new ic(L.PointerDown,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:t,button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:n,pressure:e.pressure});this.onDown(r)};onPointerMove=e=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(e.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(e.pointerId);let t=e.button;e.pointerType===`mouse`&&(t=this.getFirstPressedButtonForPointer(0)??0);let n=this.getPointerId(e,t);t===-1&&(t=n);let r=this.getAndUpdateSpatialObjectForScreenPosition(n,e.clientX,e.clientY),i=new ic(L.PointerMove,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:n,button:t,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:r,pressure:e.pressure});this.onMove(i)};onPointerCancel=e=>{this.context.isInAR||(I&&console.log(`Pointer cancel`,e),this.onPointerUp(e))};onPointerUp=e=>{if(this.context.isInAR)return;e.target instanceof HTMLElement&&e.target.releasePointerCapture(e.pointerId);let t=this.getPointerId(e),n=new ic(L.PointerUp,e,{origin:this,mode:`screen`,deviceIndex:0,pointerId:t,button:e.button,clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType,buttonName:this.getButtonName(e),device:this.getAndUpdateSpatialObjectForScreenPosition(t,e.clientX,e.clientY),pressure:e.pressure});this.onUp(n),this._pointerIds[t]=-1,I&&console.log(`ID=`+t,`PointerId=`+e.pointerId,`ALL:`,[...this._pointerIds])};getPointerId(e,t){return e.pointerType===`mouse`?0+(t??e.button):this.getPointerIndex(e.pointerId)}getButtonName(e){let t=e.button;if(e.pointerType===`mouse`)switch(t){case 0:return`left`;case 1:return`middle`;case 2:return`right`}return`unknown`}onTouchStart=e=>{if(this.context.isInAR)for(let t=0;t{if(this.context.isInAR)for(let t=0;t{if(this.context.isInAR)for(let t=0;t=t.x&&n<=t.right&&r>=t.y&&r<=t.bottom;return I&&!i&&console.log(`Not in rect`,t,n,r),i}onDown(e){let t=e.pointerId;if(this.getPointerPressed(t)){I&&console.warn(`Received pointerDown event for pointerId that is already pressed: ${t}/${e.button}`,I?e:``);return}if(I&&console.log(e.pointerType,`DOWN`,t,e.button),this.isInRect(e)){for(this.setPointerState(t,this._pointerPressed,!0),this.setPointerState(t,this._pointerDown,!0),this.setPointerStateT(t,this._pointerEvent,e.source);t>=this._pointerTypes.length;)this._pointerTypes.push(e.pointerType);for(this._pointerTypes[t]=e.pointerType;t>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new o);for(this._pointerPositionDown[t].set(e.clientX,e.clientY,e.clientZ??0);t>=this._pointerPositions.length;)this._pointerPositions.push(new w);this._pointerPositions[t].set(e.clientX,e.clientY),t>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[t]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(e),this._pointerEventsPressed.push(e),this.onDispatchEvent(e)}}onMove(e){let t=e.pointerId,n=this.getPointerPressed(t);n===!1&&!this.isInRect(e)||e.pointerType===tc.Touch&&!n||(this.updatePointerPosition(e),this.setPointerStateT(t,this._pointerEvent,e.source),this.onDispatchEvent(e))}onUp(e){let t=e.pointerId;if(!this.getPointerPressed(t)){I&&console.warn(`Received pointerUp for pointerId that is not pressed: ${t}/${e.button}`,I?e:``);return}I&&console.log(e.pointerType,`UP`,t),this.setPointerState(t,this._pointerPressed,!1),this.setPointerStateT(t,this._pointerEvent,e.source),this.setPointerState(t,this._pointerUp,!0),this.updatePointerPosition(e);for(let e=this._pointerEventsPressed.length-1;e>=0;e--)if(this._pointerEventsPressed[e].pointerId===t){this._pointerEventsPressed.splice(e,1);break}if(!this._pointerPositionDown[t]){I&&Ei(`[Received pointer up event without matching down event for button: `+t),console.warn(`Received pointer up event without matching down event for button: `+t);return}let n=this._pointerUpTime[t],r=this._pointerDownTime[t],i=this.context.time.realtimeSinceStartup,a=i-r;if(t>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[t]=i,a<1){let r=e.clientX-this._pointerPositionDown[t].x,a=e.clientY-this._pointerPositionDown[t].y,o=0;if(e.isSpatial&&e.clientZ!=null&&(o=e.clientZ-this._pointerPositionDown[t].z,r*=200,a*=200,o*=200),Math.abs(r)<5&&Math.abs(a)<5&&Math.abs(o)<5){this.setPointerState(t,this._pointerClick,!0),e.isClick=!0;let s=i-n;I&&console.log(`CLICK`,t,r,a,o,s),s0&&(this.setPointerState(t,this._pointerDoubleClick,!0),e.isDoubleClick=!0)}}this.onDispatchEvent(e)}updatePointerPosition(e){let t=e.pointerId;for(;t>=this._pointerPositions.length;)this._pointerPositions.push(new w);for(;t>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new w);for(;t>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new w);let n=this._pointerPositionsLastFrame[t];n.copy(this._pointerPositions[t]);let r=this._pointerPositionsDelta[t],i=e.clientX-n.x,a=e.clientY-n.y;if(e.source instanceof MouseEvent||e.source instanceof TouchEvent){let t=e.source;i===0&&t.movementX!==0&&(i=t.movementX||0),a===0&&t.movementY!==0&&(a=t.movementY||0)}r.x+=i,r.y+=a,this._pointerPositions[t].x=e.clientX,this._pointerPositions[t].y=e.clientY;let o=e.clientX,s=e.clientY;for(;t>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new w);let c=this._pointerPositionsRC[t];c.set(o,s),this.convertScreenspaceToRaycastSpace(c)}getPointerIndex(e){let t=-1;for(let n=0;n(e.postprocess(t),t.name=`PMREM_`+t.name,lc&&console.log(`NEEDLE_pmrem: loaded PMREM texture`,t),t))):(console.warn(`NEEDLE_pmrem: No KTX2Loader available on GLTFLoader — cannot load PMREM texture`),null)}static postprocess(e){return e.mapping=306,e}},dc=`NEEDLE_lightmaps`,fc=A(`debuglightmapsextension`)||A(`debuglightmaps`),pc;(function(e){e[e.Lightmap=0]=`Lightmap`,e[e.Skybox=1]=`Skybox`,e[e.Reflection=2]=`Reflection`})(pc||={});var mc=class{get name(){return dc}parser;registry;source;constructor(e,t,n){this.parser=e,this.registry=t,this.source=n}afterRoot(e){let t=this.parser.json.extensions;if(t){let e=t[dc];if(e){let t=e.textures;return t?.length?(fc&&console.log(e),new Promise(async(e,n)=>{let r=[];for(let e of t)if(e.pointer){fc&&console.log(e);let t=null;if(e.pointer.startsWith(`/textures/`)||e.pointer.startsWith(`textures/`))fc&&console.log(`Load texture from gltf`,e.pointer),t=$o(this.parser,e.pointer).then(t=>this.resolveTexture(e,t));else if(typeof e.pointer==`string`){fc&&console.log(`Load texture from path`,e.pointer);let n=Zt(this.source,e.pointer),r=n.endsWith(`.pmrem.ktx2`),i;i=n.endsWith(`.exr`)?new gt(this.parser.options.manager):n.endsWith(`.hdr`)?new bt(this.parser.options.manager):r?this.parser.options.ktx2Loader:new me(this.parser.options.manager),t=i.loadAsync(n,void 0).then(t=>(r&&t&&uc.postprocess(t),this.resolveTexture(e,t)))}else e.pointer;t&&r.push(t)}let i=await xn(r);i?.anyFailed&&(M()||fc)&&console.error(`[NEEDLE_lightmaps]Error during extension loading:`,i),e()})):null}}return null}resolveTexture(e,t){let n=t;fc&&console.log(`Light Texture loaded:`,n),n?.isTexture&&(this.registry?(n.colorSpace=l,this.registry.registerTexture(this.source,e.type,n,e.index)):console.log(pc[e.type],e.pointer,n))}},hc=!!A(`debuglightmaps`),gc=class{context;map=new Map;clear(){this.map.clear()}constructor(e){this.context=e}registerTexture(e,t,n,r){hc&&console.log(`Registering `,pc[t]+` "`+e+`"`,n),this.map.has(e)||this.map.set(e,new Map);let i=this.map.get(e),a=i?.get(t)??[];a.length0)for(let e=0;e`+(t/r.lastScreenCoverage).toFixed(0)+(n?``:`,`)}let d=o?o[i]?.density:-1,f=`LOD `+n.mesh_lod+` +TEX `+n.texture_lod;if(_c==`density`&&(f+=` +`+a+` tris +`+(d/r.lastScreenCoverage).toFixed(0)+` dens +`+(r.lastScreenCoverage*100).toFixed(1)+`% cov +`+(r.lastCentrality*100).toFixed(1)+`% centr +`+(vc.min.x.toFixed(2)+`-`+vc.max.x.toFixed(2)+`x`+vc.min.y.toFixed(2)+`-`+vc.max.y.toFixed(2))+` scr`),r.lastScreenCoverage>.1){let t=e,n=t.worldForward,r=t.worldPosition,a=P(n).multiplyScalar(c*.7).add(s),o=a.distanceTo(r),u=l[Math.min(l.length-1,Math.max(0,i))]+`88`,d=this.context.domHeight>0?screen.height/this.context.domHeight:1,p=e.isPerspectiveCamera?Math.tan(e.fov*Math.PI/180/2):1;H.DrawLabel(a,f,o*.012*d*p,void 0,16777215,u)}}}}},xc=new Int32Array(2),Sc=new Float32Array(xc.buffer),Cc=new Float64Array(xc.buffer),wc=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,Tc=class e{constructor(e,t){this.low=e|0,this.high=t|0}static create(t,n){return t==0&&n==0?e.ZERO:new e(t,n)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}};Tc.ZERO=new Tc(0,0);var Ec;(function(e){e[e.UTF8_BYTES=1]=`UTF8_BYTES`,e[e.UTF16_STRING=2]=`UTF16_STRING`})(Ec||={});var Dc=class e{constructor(e){this.bytes_=e,this.position_=0}static allocate(t){return new e(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Tc(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Tc(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return xc[0]=this.readInt32(e),Sc[0]}readFloat64(e){return xc[+!wc]=this.readInt32(e),xc[+!!wc]=this.readInt32(e+4),Cc[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){Sc[0]=t,this.writeInt32(e,xc[0])}writeFloat64(e,t){Cc[0]=t,this.writeInt32(e,xc[+!wc]),this.writeInt32(e+4,xc[+!!wc])}getBufferIdentifier(){if(this.bytes_.length>10)+55296,(t&1023)+56320))}return r}__union_with_string(e,t){return typeof e==`string`?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+4}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=4)throw Error(`FlatBuffers: file identifier must be length 4`);for(let t=0;t<4;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+4+t))return!1;return!0}createLong(e,t){return Tc.create(e,t)}createScalarList(e,t){let n=[];for(let r=0;rthis.minalign&&(this.minalign=t);let r=~(this.bb.capacity()-this.space+n)+1&t-1;for(;this.space=0&&this.vtable[t]==0;t--);let n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]==0?0:e-this.vtable[t]);this.addInt16(e-this.object_start);let r=(n+2)*2;this.addInt16(r);let i=0,a=this.space;outer_loop:for(t=0;t=0;t--)this.writeInt8(e.charCodeAt(t))}this.prep(this.minalign,4+r),this.addOffset(e),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){let n=this.bb.capacity()-e,r=n-this.bb.readInt32(n);if(this.bb.readInt16(r+t)==0)throw Error(`FlatBuffers: field `+t+` must be set`)}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(4,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||=new Map,this.string_maps.has(e))return this.string_maps.get(e);let t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n=56320)r=i;else{let t=e.charCodeAt(n++);r=(i<<10)+t+-56613888}r<128?t.push(r):(r<2048?t.push(r>>6&31|192):(r<65536?t.push(r>>12&15|224):t.push(r>>18&7|240,r>>12&63|128),t.push(r>>6&63|128)),t.push(r&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let e=0,n=this.space,r=this.bb.bytes();e{t.push(e)})},async load(){if(n.MODULE)return n.MODULE;let r=await e();n.MODULE=r,n.MAYBEMODULE=r;for(let e of t)e(r);return t.length=0,r}};return n}var Pc={MaterialX:Nc(()=>r(()=>import(`./materialx.eMaybKAQ.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)),RAPIER_PHYSICS:Nc(()=>r(()=>import(`./rapier3d.DBFmcAzL.js`).then(e=>e.t),__vite__mapDeps([4,2]),import.meta.url)),POSTPROCESSING:Nc(()=>r(()=>import(`./needle-engine.dep.DFJFZC0m.js`),__vite__mapDeps([5,6,3,2]),import.meta.url)),POSTPROCESSING_AO:Nc(()=>r(()=>import(`./N8AO.BjEz-iDD.js`),__vite__mapDeps([7,8,6,3,2,9,10]),import.meta.url)),PEERJS:Nc(()=>r(()=>import(`./peerjs.UdR1_Ath.js`).then(e=>e.t),__vite__mapDeps([11,2]),import.meta.url))},Fc=void 0;function Ic(){return Fc}function Lc(e){Fc=e}async function Rc(e,t){let n=(await Pc.PEERJS.load()).default;return t||={},t={...Fc,...t},e?new n(e,t):new n(t)}async function zc(){let e=await Pc.PEERJS.load();return e.default===void 0?e:e.default}var Bc;(function(e){e.ConnectionList=`connection-list`})(Bc||={});var Vc=class{get isHost(){return this._host!==void 0}_host;_client;_clientData;constructor(){this.onEnable()}onEnable(){this.trySetupHost(`HOST-5980e65c-8438-453e-8b35-f13c736dcd81`)}async trySetupHost(e){let t=new(await(zc()))(e);t.on(`error`,t=>{console.error(t),this._host=void 0,this.trySetupClient(e)}),t.on(`open`,e=>{this._host=new Uc(t)})}async trySetupClient(e){this._client=new(await(zc())),this._client.on(`error`,e=>{console.error(`Client error`,e)}),this._client.on(`open`,t=>{console.log(`client connected`,t),this._clientData=this._client.connect(e,{metadata:{id:t}}),this._clientData.on(`open`,()=>{console.log(`Connected to host`)}),this._clientData.on(`data`,e=>{console.log(`<<`,e)})})}},Hc=class{_peer;constructor(e){this._peer=e}},Uc=class extends Hc{get isHost(){return!0}_connections=[];constructor(e){super(e),console.log(`I AM THE HOST`),this._peer?.on(`connection`,this.onConnection.bind(this)),this._peer.on(`close`,()=>{this.broadcast(`BYE`)}),setInterval(()=>{this.broadcast(`HELLO`)},2e3)}onConnection(e){console.log(`host connection`,e),e.on(`open`,()=>{this._connections.push(e),this.broadcastConnection(e)})}broadcastConnection(e){let t=this._connections.map(e=>e.metadata?.id).filter(e=>e!==void 0);this.broadcast({type:Bc.ConnectionList,connections:t})}broadcast(e){if(e!=null){console.log(`>>`,e);for(let t in this._peer.connections){let n=this._peer.connections[t];if(n)if(Array.isArray(n))for(let t of n)t&&t.send(e);else console.warn(n)}}}},Wc=`https://urls.needle.tools/default-networking-backend/index`,Gc=`wss://networking-2.needle.tools/socket`,Kc=!!A(`debugnet`),qc=!!(Kc||A(`debugowner`)),Jc=A(`debugnetbin`),Yc;(function(e){e.ConnectionInfo=`connection-start-info`})(Yc||={});var Xc;(function(e){e.Join=`join-room`,e.Leave=`leave-room`,e.JoinedRoom=`joined-room`,e.LeftRoom=`left-room`,e.UserJoinedRoom=`user-joined-room`,e.UserLeftRoom=`user-left-room`,e.RoomStateSent=`room-state-sent`})(Xc||={});var Zc=class{room;viewId;allowEditing;inRoom},Qc=class{room},$c=class{userId},el;(function(e){e.RequestHasOwner=`request-has-owner`,e.ResponseHasOwner=`response-has-owner`,e.RequestIsOwner=`request-is-owner`,e.ResponseIsOwner=`response-is-owner`,e.RequestOwnership=`request-ownership`,e.GainedOwnership=`gained-ownership`,e.RemoveOwnership=`remove-ownership`,e.LostOwnership=`lost-ownership`,e.GainedOwnershipBroadcast=`gained-ownership-broadcast`,e.LostOwnershipBroadcast=`lost-ownership-broadcast`})(el||={});var tl=class{guid;connection;get hasOwnership(){return this._hasOwnership}get isOwned(){return this._isOwned}get isConnected(){return this.connection.isConnected}_hasOwnership=!1;_isOwned=void 0;_gainSubscription;_lostSubscription;_hasOwnerResponse;constructor(e,t){this.connection=e,this.guid=t,this._gainSubscription=this.onGainedOwnership.bind(this),this._lostSubscription=this.onLostOwnership.bind(this),e.beginListen(el.LostOwnership,this._lostSubscription),e.beginListen(el.GainedOwnershipBroadcast,this._gainSubscription),this._hasOwnerResponse=this.onHasOwnerResponse.bind(this),e.beginListen(el.ResponseHasOwner,this._hasOwnerResponse)}_isWaitingForOwnershipResponseCallback=null;updateIsOwned(){this.connection.send(el.RequestHasOwner,{guid:this.guid})}onHasOwnerResponse(e){e.guid===this.guid&&(this._isOwned=e.value)}requestOwnershipIfNotOwned(){return this._isWaitingForOwnershipResponseCallback===null?(this._isWaitingForOwnershipResponseCallback=this.waitForHasOwnershipRequestResponse.bind(this),this.connection.beginListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),this.connection.send(el.RequestHasOwner,{guid:this.guid}),this):this}waitForHasOwnershipRequestResponse(e){e.guid===this.guid&&(this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null),this._isOwned=e.value,e.value||(qc&&console.log(`request ownership`,this.guid),this.requestOwnership()))}requestOwnershipAsync(){return new Promise((e,t)=>{this.requestOwnership();let n=0,r=()=>{if(n++>10)return t(`Timeout`);setTimeout(()=>{this.hasOwnership?e(this):r()},100)};r()})}requestOwnership(){return qc&&console.log(`Request ownership`,this.guid),this.connection.send(el.RequestOwnership,{guid:this.guid}),this}freeOwnership(){return this.connection.send(el.RemoveOwnership,{guid:this.guid}),this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null),this}destroy(){this.connection.stopListen(el.GainedOwnership,this._gainSubscription),this.connection.stopListen(el.LostOwnership,this._lostSubscription),this.connection.stopListen(el.ResponseHasOwner,this._hasOwnerResponse),this._isWaitingForOwnershipResponseCallback&&=(this.connection.stopListen(el.ResponseHasOwner,this._isWaitingForOwnershipResponseCallback),null)}onGainedOwnership(e){e.guid===this.guid&&(this._isOwned=!0,this.connection.connectionId===e.owner?(qc&&console.log(`GAINED OWNERSHIP`,this.guid),this._hasOwnership=!0):this._hasOwnership=!1)}onLostOwnership(e){e===this.guid&&(qc&&console.log(`LOST OWNERSHIP`,this.guid),this._hasOwnership=!1,this._isOwned=!1)}},nl=class{context;_peer=null;constructor(e){this.context=e}get peer(){return this._peer||=new Vc,this._peer}tryGetState(e){return e===`invalid`?null:this._state[e]}get connectionId(){return this._connectionId}get isDebugEnabled(){return Kc}get isConnected(){return this.connected}get currentRoomName(){return this._currentRoomName}get allowEditing(){return this._currentRoomAllowEditing}get currentRoomViewId(){return this._currentRoomViewId}getViewOnlyUrl(){if(this.currentRoomViewId===null)return null;let e=new URL(window.location.href);return e.searchParams.set(`view`,this.currentRoomViewId),e.href}get isInRoom(){return this._isInRoom}get currentLatency(){return this._currentDelay}get currentServerUrl(){return this._ws?.url??null}sendPing(){this.send(`ping`,{time:this.context.time.time})}userIsInRoom(e){return this._currentInRoom.indexOf(e)!==-1}_usersInRoomCopy=[];usersInRoom(e=null){e||=this._usersInRoomCopy,e.length=0;for(let t of this._currentInRoom)e.push(t);return e}joinRoom(e,t=!1){return e?e.length>1024?(console.error(`Room name too long, can not join: "`+e+`". Max length is 1024 characters.`),!1):(this.isInRoom&&this.currentRoomName!==e&&console.warn(`Needle Engine is already connected to a networking room. Connecting to multiple rooms is not supported`),this.connect(),Kc&&console.log(`join: `+e),this.send(Xc.Join,{room:e,viewOnly:t},Oo.OnConnection),!0):(console.error(`Missing room name, can not join: "`+e+`"`),!1)}leaveRoom(e=null){return e||=this.currentRoomName,e?(this.send(Xc.Leave,{room:e}),!0):(console.error(`Missing room name, can not join: "`+e+`"`),!1)}send(e,t=null,n=Oo.Queued){if(t===null&&(t={}),n===Oo.Queued){this._defaultMessagesBuffer.push({key:e,value:t});return}return this.sendWithWebsocket(e,t,n)}sendDeleteRemoteState(e){this.send(`delete-state`,{guid:e,dontSave:!0}),delete this._state[e]}sendDeleteRemoteStateAll(){this.send(`delete-all-state`),this._state={}}sendBinary(e){Jc&&console.log(`<< send binary`,this.context.time.frame,e.length/1024+` KB`),this._ws?.send(e)}_defaultMessagesBuffer=[];_defaultMessagesBufferArray=[];sendBufferedMessagesNow(){if(!this._ws)return;this._defaultMessagesBufferArray.length=0;let e=Object.keys(this._defaultMessagesBuffer).length;for(let t in this._defaultMessagesBuffer){let n=this._defaultMessagesBuffer[t];if(e<=1){this.sendWithWebsocket(n.key,n.value,Oo.Immediate);break}let r=this.toMessage(n.key,n.value);this._defaultMessagesBufferArray.push(r)}if(this._defaultMessagesBuffer.length=0,this._defaultMessagesBufferArray.length>0&&Kc&&console.log(`SEND BUFFERED`,this._defaultMessagesBufferArray.length),this._defaultMessagesBufferArray.length<=0)return;let t=JSON.stringify(this._defaultMessagesBufferArray);this._ws?.send(t)}beginListen(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),t}stopListening(e,t){return this.stopListen(e,t)}stopListen(e,t){if(!t||!this._listeners[e])return;let n=this._listeners[e].indexOf(t);n>=0&&this._listeners[e].splice(n,1)}beginListenBinary(e,t){return this._listenersBinary[e]||(this._listenersBinary[e]=[]),this._listenersBinary[e].push(t),t}stopListenBinary(e,t){if(!this._listenersBinary[e])return;let n=this._listenersBinary[e].indexOf(t);n>=0&&this._listenersBinary[e].splice(n,1)}netWebSocketUrlProvider;registerProvider(e){this.netWebSocketUrlProvider=e}async connect(e){if(this.connected&&e&&e!==Gc)return Promise.reject(`Can not connect to different server url. Please disconnect first.`);if(this.connected)return Promise.resolve(!0);e&&console.debug(`Connecting to user provided url `+e);let t=e||this.netWebSocketUrlProvider?.getWebsocketUrl();return t?Gc=t:Tt()&&(Gc=`wss://`+window.location.host+`/socket`),this.connectWebsocket()}disconnect(){this._ws?.close(),this._ws=void 0,Gc=void 0,this._currentRoomAllowEditing=!0,this._currentRoomName=null,this._currentRoomViewId=null,this._isInRoom=!1,this._currentInRoom.length=0,this._state={},this._currentDelay=-1}_listeners={};_listenersBinary={};connected=!1;channelId;_connectionId=null;_ws;_waitingForSocket={};_isInRoom=!1;_currentRoomName=null;_currentRoomViewId=null;_currentRoomAllowEditing=!0;_currentInRoom=[];_state={};_currentDelay=-1;_connectingToWebsocketPromise=null;connectWebsocket(){return this._connectingToWebsocketPromise?this._connectingToWebsocketPromise:this._connectingToWebsocketPromise=new Promise(async(e,t)=>{let n=!1,i=t=>{n||(n=!0,e(t))};if(Gc===void 0&&(console.log(`Fetch default backend url: `+Wc),Gc=await(await fetch(Wc)).text()),Gc===void 0){i(!1);return}console.debug(`Connecting to networking backend on +`+Gc);let a=await r(()=>import(`./needle-engine.BJP2NBoC.js`).then(e=>e.t),__vite__mapDeps([12,2]),import.meta.url),o=a.default?.WebsocketBuilder??a.WebsocketBuilder,s=a.default?.ExponentialBackoff??a.ExponentialBackoff,c=new o(Gc).withMaxRetries(10).withBackoff(new s(2e3,4)).onOpen(()=>{this._connectingToWebsocketPromise=null,this._ws=c,this.connected=!0,M()||Kc?console.log(`Connected to networking backend +`+Gc):console.debug(`Connected to networking backend`,Gc),i(!0),this.onSendQueued(Oo.OnConnection)}).onClose(e=>{this._connectingToWebsocketPromise=null,this.connected=!1,this._isInRoom=!1,i(!1);let t=`Websocket connection closed...`;Gc?.includes(`/socket`)||(t+=` Do you perhaps mean to connect to "/socket"?`),console.error(t)}).onError(e=>{console.error(`Websocket connection failed...`),i(!1),$a.sendEvent(this.context,`networking`,{event:`connection_error`})}).onRetry(()=>{console.log(`Retry connecting to networking websocket`)}).build();c.addEventListener(a.WebsocketEvent.message,(e,t)=>{this.onMessage(e,t)})})}onMessage(e,t){let n=t.data;try{if(typeof n!=`string`){n.size&&this.handleIncomingBinaryMessage(n);return}let e=JSON.parse(n);if(Array.isArray(e))for(let t of e)this.handleIncomingStringMessage(t);else this.handleIncomingStringMessage(e);return}catch(e){Kc&&n===`pong`?console.log(`<<`,n):M()&&console.error(`Failed to parse message`,e)}}async handleIncomingBinaryMessage(e){Jc&&console.log(`<< bin`,this.context.time.frame);let t=await e.arrayBuffer(),n=new Dc(new Uint8Array(t)),r=n.getBufferIdentifier(),i=this._listenersBinary[r],a=jc(n),o=Mc(a);if(o&&typeof o==`string`&&(this._state[o]=a),!i)return;let s=a??n;for(let e of i)e(s)}handleIncomingStringMessage(e){if(Kc&&console.log(`<<`,e.key??e),e.key)switch(e.key){case Yc.ConnectionInfo:if(e.data){let t=e.data;t&&(console.assert(t.id!==void 0&&t.id!==null&&t.id.length>0,`server did not send connection id`,t.id),console.debug(`Your id is: `+t.id,this.context.alias??``),this._connectionId=t.id,$a.sendEvent(this.context,`networking`,{event:`connected`}))}else console.warn(`Expected connection id in `+e.key);break;case Xc.JoinedRoom:if(Kc&&console.log(e),e){this._isInRoom=!0;let t=e;this._currentRoomName=t.room,this._currentRoomViewId=t.viewId,this._currentRoomAllowEditing=t.allowEditing??!0,this._currentInRoom.length=0,this._currentInRoom.push(...t.inRoom),(Jc||M())&&console.debug(`Joined Needle Engine Room: `+t.room);let n=new URL(window.location.href);n.searchParams.has(`room`)&&n.searchParams.delete(`room`),n.searchParams.set(`view`,this._currentRoomViewId),console.debug(`Room view id: ${this._currentRoomViewId}\n${n.href}`)}this.onSendQueued(Oo.OnRoomJoin),$a.sendEvent(this.context,`networking`,{event:`joined_room`,room:this._currentRoomName});break;case Xc.LeftRoom:let t=e;t.room===this.currentRoomName&&(this._isInRoom=!1,this._currentRoomName=null,this._currentRoomAllowEditing=!0,this._currentInRoom.length=0,(Jc||M())&&console.debug(`Left Needle Engine Room: `+t.room)),$a.sendEvent(this.context,`networking`,{event:`left_room`,room:t.room});break;case Xc.UserJoinedRoom:if(e.data){let t=e.data;this._currentInRoom.push(t.userId),Kc&&console.log(t.userId+` joined`,`now in room:`,this._currentInRoom)}break;case Xc.UserLeftRoom:if(e.data){let t=e.data,n=this._currentInRoom.indexOf(t.userId);n>=0&&(Kc&&console.log(t.userId+` left`,`now in room:`,this._currentInRoom),this._currentInRoom.splice(n,1)),t.userId===this.connectionId&&console.log(`you left the room`)}break;case`all-room-state-deleted`:Kc&&console.log(`RECEIVED all-room-state-deleted`),this._state={};break;case`ping`:case`pong`:let n=e.data?.time;n&&(this._currentDelay=this.context.time.time-n),Kc&&console.log(`Current latency: ${(this._currentDelay*1e3).toFixed()} ms`,`Clients in room: `+this._currentInRoom?.length);break}let t=e.data;t&&(this._state[t.guid]=t);let n=this._listeners[e.key];if(n){n=[...n];for(let t of n)try{t(e.data)}catch(t){console.error(`Error invoking callback for "`+e.key+`"`,t)}}}toMessage(e,t){return{key:e,data:t}}sendWithWebsocket(e,t,n=Oo.OnRoomJoin){if(!this._ws){let r=this._waitingForSocket[n]||[];r.push(()=>this.sendWithWebsocket(e,t,n)),this._waitingForSocket[n]=r;return}let r=JSON.stringify(this.toMessage(e,t));Kc&&console.log(`>>`,e),this._ws.send(r)}onSendQueued(e){let t=this._waitingForSocket[e];if(t){for(let e of t)e();t.length=0}}},rl=A(`debugplayerview`),il;(function(e){e.Browser=`browser`,e.Headset=`headset`,e.Handheld=`handheld`})(il||={});var al=class{userId;context;viewDevice=il.Browser;get currentObject(){return this._object}set currentObject(e){this._object=e}get isConnected(){return this.context.connection.userIsInRoom(this.userId)}removed=!1;_object;constructor(e,t){this.userId=e,this.context=t}},ol=class{context;playerViews=new Map;constructor(e){this.context=e}setPlayerView(e,t,n){let r=this.playerViews.get(e);r||(r=new al(e,this.context),this.playerViews.set(e,r)),r.viewDevice=n,r.currentObject=t,r.removed=!1}getPlayerView(e){if(e){if(!this.context.connection.userIsInRoom(e)){this.playerViews.delete(e);return}return this.playerViews.get(e)}}removePlayerView(e,t){let n=this.playerViews.get(e);n?.viewDevice===t&&(rl&&console.log(`REMOVE`,e),n.removed=!0,this.playerViews.delete(e))}},sl=new we;async function cl(e){return new Promise((t,n)=>{sl.load(e,t,void 0,n)})}var ll=new Uint8Array(4);ll[0]=255,ll[1]=255,ll[2]=255,ll[3]=255;var ul=new m(ll,1,1,y);function dl(e,t=1){let n=`alpha`in e,r=t*t,i=new Uint8Array(4*r),a=Math.floor(e.r*255),o=Math.floor(e.g*255),s=Math.floor(e.b*255);for(let t=0;t{let r=this.loaded.get(t);r?e(r):n(`Shader not found`)});let n=new ml(e,await cl(t));return this.loaded.set(t,n),n}};function hl(e,t){let n=e.elements;t||=[],t.length=0;for(let e=0;e<16;e+=4){let r=n[e],i=n[e+1],a=n[e+2],o=n[e+3],s=new Te(r,i,a,o);t.push(s)}return t}var gl=[],_l=[];function vl(e,t){if(gl.length===0)for(let e=0;e<27;e++)gl.push(0);t||=gl;for(let e=0;e<27;e++)_l[e]=t[e];t=_l,e.unity_SHAr={value:new Te(t[9],t[3],t[6],t[0])},e.unity_SHBr={value:new Te(t[12],t[15],t[18],t[21])},e.unity_SHAg={value:new Te(t[10],t[4],t[7],t[1])},e.unity_SHBg={value:new Te(t[13],t[16],t[19],t[22])},e.unity_SHAb={value:new Te(t[11],t[5],t[8],t[2])},e.unity_SHBb={value:new Te(t[14],t[17],t[20],t[23])},e.unity_SHC={value:new Te(t[24],t[25],t[26],1)}}var yl=class{vertexShader;fragmentShader;technique;constructor(e,t,n){this.vertexShader=e,this.fragmentShader=t,this.technique=n}};async function bl(e,t){if(!e)return console.error(`Can not find technique: no shader data`),null;let n=e.programs[t],r=n.vertexShader,i=n.fragmentShader;if(r!==void 0&&i!==void 0){let n=e.shaders[r],a=e.shaders[i];if(n.uri&&a.uri||n.code&&a.code){if(!n.code&&n.uri&&await xl(n),!a.code&&a.uri&&await xl(a),!n.code||!a.code)return null;let r=e.techniques[t];return new yl(n.code,a.code,r)}}return console.error(`Shader technique not found`,t),null}async function xl(e){let t=e.uri;t&&(t.endsWith(`.glsl`)?e.code=(await new we().loadAsync(t)).toString():e.code=Sl(e.uri))}function Sl(e){return decodeURIComponent(Array.prototype.map.call(atob(e),function(e){return`%`+(`00`+e.charCodeAt(0).toString(16)).slice(-2)}).join(``))}var Cl=A(`debugenvlight`),wl;(function(e){e[e.Skybox=0]=`Skybox`,e[e.Trilight=1]=`Trilight`,e[e.Flat=3]=`Flat`,e[e.Custom=4]=`Custom`})(wl||={});var Tl;(function(e){e[e.Skybox=0]=`Skybox`,e[e.Custom=1]=`Custom`})(Tl||={});var El=class{context;constructor(e){this.context=e,this.context.pre_update_callbacks.push(this.preUpdate.bind(this))}_currentLightSettingsId;_sceneLightSettings;get currentLightSettingsId(){return this._currentLightSettingsId}preUpdate(){let e=this.context.time;this._timevec4.x=e.time,this._timevec4.y=Math.sin(e.time),this._timevec4.z=Math.cos(e.time),this._timevec4.w=e.deltaTime}_timevec4=new Te;get timeVec4(){return this._timevec4}get environmentIntensity(){if(!this._sceneLightSettings||!this._currentLightSettingsId)return 1;let e=this._sceneLightSettings.get(this._currentLightSettingsId);return e?e.ambientIntensity:1}get sceneLightSettings(){return this._sceneLightSettings?.values()}enable(e){e instanceof js&&(e=e.url);let t=this._sceneLightSettings?.get(e);return t?(Cl&&console.log(`Enable scene light settings`,e,t),e!==this._currentLightSettingsId&&this._currentLightSettingsId&&this.disable(this._currentLightSettingsId),this._currentLightSettingsId=e,t.enabled=!0,!0):(Cl&&console.warn(`No light settings found for`,e),!1)}disable(e){if(e instanceof js&&(e=e.url),e==null)return!1;let t=this._sceneLightSettings?.get(e);return t?(Cl&&console.log(`Disable scene light settings`,e,t),t.enabled=!1,!0):!1}enableCurrent(){return this._currentLightSettingsId?(this.enable(this._currentLightSettingsId),this._currentLightSettingsId??null):null}disableCurrent(){if(this._currentLightSettingsId){let e=this._currentLightSettingsId;return this.disable(this._currentLightSettingsId),e}return null}internalRegisterSceneLightSettings(e){let t=e.sourceId;if(!t){console.error(`Missing source id for scene light settings, can not register:`,e);return}Cl&&console.log(`Register `+e?.sourceId+` lighting`,e),this._sceneLightSettings||=new Map,this._sceneLightSettings.set(t,e)}internalUnregisterSceneLightSettings(e){let t=e.sourceId;if(!t){console.error(`Missing source id for scene light settings, can not unregister:`,e);return}Cl&&console.log(`Unregister `+e?.sourceId+` lighting`,e),this._sceneLightSettings&&this._sceneLightSettings.delete(t)}internalRegisterReflection(e,t){Cl&&console.log(`Register reflection`,e,t);let n=new Dl(this.context,t,1);this._lighting[e]=n}internalGetReflection(e){return this._lighting[e]}__currentReflectionId=null;internalEnableReflection(e){this.__currentReflectionId=e;let t=this._sceneLightSettings?.get(e);switch(Cl&&console.log(`Enable reflection`,e,t?wl[t.ambientMode]:`Unknown ambient mode`,t),t?.ambientMode){case wl.Skybox:case wl.Custom:let t=this.internalGetReflection(e);if(t&&t.Source){Cl&&console.log(`Setting environment reflection`,t);let e=this.context.scene,n=t.Source;return n.mapping!==306&&(n.mapping=303),e.environment=n,e.environmentIntensity=this.environmentIntensity||1,n}else Cl&&console.warn(`Could not find reflection for source`,e);break}if(t?.environmentReflectionSource===Tl.Custom)switch(t?.ambientMode){case wl.Trilight:if(t.ambientTrilight){let e=t.ambientTrilight,n=fl(e[0],e[1],e[2],64,64);return n.colorSpace=de,n.mapping=303,this.context.scene.environment=n,n}else console.error(`Missing ambient trilight`,t.sourceId);case wl.Flat:if(t.ambientLight){let e=dl(t.ambientLight,64);return e.colorSpace=de,e.mapping=303,this.context.scene.environment=e,e}else console.error(`Missing ambientlight`,t.sourceId)}return null}internalDisableReflection(e){if(e&&e!==this.__currentReflectionId){Cl&&console.log(`Not disabling reflection for`,e,`because it is not the current light settings id`,this.__currentReflectionId);return}Cl&&console.log(`Disable reflection`,e);let t=this.context.scene;t.environment=null}_lighting={}},Dl=class{get Source(){return this._source}_source;constructor(e,t,n=1){this._source=t,t.mapping!==306&&(t.mapping=303)}},Ol=A(`timescale`),kl=1;typeof Ol==`number`&&(kl=Ol);var Al=class{get time(){return this._time}set time(e){this._time=e}_time=0;get deltaTime(){return this._deltaTime}set deltaTime(e){this._deltaTime=e}_deltaTime=0;get deltaTimeUnscaled(){return this._deltaTimeUnscaled}_deltaTimeUnscaled=0;timeScale=1;get frame(){return this._frame}set frame(e){this._frame=e}_frame=0;get frameCount(){return this.frame}get realtimeSinceStartup(){return this.clock.elapsedTime}get fps(){return 1/this.deltaTime}get smoothedFps(){return this._smoothedFps}get smoothedDeltaTime(){return 1/this._smoothedFps}clock=new De;_smoothedFps=0;_smoothedDeltaTime=0;_fpsSamples=[];_fpsSampleIndex=0;constructor(){typeof kl==`number`&&(this.timeScale=kl)}update(){this.deltaTime=this.clock.getDelta(),this.deltaTime=Math.min(.1,this.deltaTime),this._deltaTimeUnscaled=this.deltaTime,this.deltaTime<=0&&(this.deltaTime=1e-12),this.deltaTime*=this.timeScale,this.frame+=1,this.time+=this.deltaTime,this._fpsSamples.length<60?this._fpsSamples.push(this.deltaTime):this._fpsSamples[this._fpsSampleIndex++%60]=this.deltaTime;let e=0;for(let t=0;t=0&&t>=0){let n=i.tonemapping_pars_fragment.substring(e,t+42);i.tonemapping_pars_fragment=i.tonemapping_pars_fragment.replace(n,` +float startCompression = 0.8; +float desaturation = 0.5; +// Patched tonemapping function +vec3 NeutralToneMapping( vec3 color ) { + color *= toneMappingExposure; + + float d = 1. - startCompression; + // float peak = dot(color, vec3(0.299, 0.587, 0.114)); + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + float newPeak = 1. - d * d / (peak + d - startCompression); + float invPeak = 1. / peak; + + float extraBrightness = dot(color * (1. - startCompression * invPeak), vec3(1, 1, 1)); + + color *= newPeak * invPeak; + float g = 1. - 3. / (desaturation * extraBrightness + 3.); + return mix(color, vec3(1, 1, 1), g); +} +`)}else M()&&console.error(`Couldn't find NeutralToneMapping in ShaderChunk.tonemapping_pars_fragment`)}function Pl(){let e=i.tonemapping_pars_fragment.indexOf(`vec3 AgXToneMapping( vec3 color ) {`),t=i.tonemapping_pars_fragment.indexOf(`return color;`,e);if(e>=0&&t>=0){let n=i.tonemapping_pars_fragment.substring(e,t+13);i.tonemapping_pars_fragment=i.tonemapping_pars_fragment.replace(n,` +// 0: Default, 1: Golden, 2: Punchy +#define AGX_LOOK 0 + +vec3 userSlope = vec3(1.0); +vec3 userOffset = vec3(0.0); +vec3 userPower = vec3(1.0); +float userSaturation = 1.0; + +// Mean error^2: 3.6705141e-06 +vec3 _agxDefaultContrastApprox(vec3 x) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} + +vec3 _agx(vec3 val) { + const mat3 agx_mat = mat3( + 0.842479062253094, 0.0423282422610123, 0.0423756549057051, + 0.0784335999999992, 0.878468636469772, 0.0784336, + 0.0792237451477643, 0.0791661274605434, 0.879142973793104); + + const float min_ev = -12.47393; + const float max_ev = 4.026069; + + // val = pow(val, vec3(2.2)); + + // Input transform (inset) + val = agx_mat * val; + + // Log2 space encoding + val = clamp(log2(val), min_ev, max_ev); + val = (val - min_ev) / (max_ev - min_ev); + + // Apply sigmoid function approximation + val = _agxDefaultContrastApprox(val); + + return val; +} + +vec3 _agxEotf(vec3 val) { + const mat3 agx_mat_inv = mat3( + 1.19687900512017, -0.0528968517574562, -0.0529716355144438, + -0.0980208811401368, 1.15190312990417, -0.0980434501171241, + -0.0990297440797205, -0.0989611768448433, 1.15107367264116); + + // Inverse input transform (outset) + val = agx_mat_inv * val; + + // sRGB IEC 61966-2-1 2.2 Exponent Reference EOTF Display + // NOTE: We're linearizing the output here. Comment/adjust when + // *not* using a sRGB render target + val = pow(val, vec3(2.2)); + + return val; +} + +vec3 _agxLook(vec3 val) { + const vec3 lw = vec3(0.2126, 0.7152, 0.0722); + float luma = dot(val, lw); + + // Default + vec3 offset = vec3(0.0); + vec3 slope = vec3(1.0); + vec3 power = vec3(1.0); + float sat = 1.0; + + #if AGX_LOOK == 1 + // Golden + slope = vec3(1.0, 0.9, 0.5); + power = vec3(0.8); + sat = 0.8; + #elif AGX_LOOK == 2 + // Punchy + slope = vec3(1.0); + power = vec3(1.35, 1.35, 1.35); + sat = 1.4; + #endif + + // Needle + slope = vec3(1.05); + power = vec3(1.10, 1.10, 1.10); + sat = 1.15; + + // User + // slope = userSlope; + // offset = userOffset; + // power = userPower; + // sat = userSaturation; + + // ASC CDL + val = pow(val * slope + offset, power); + return luma + sat * (val - luma); +} + + +vec3 AgXToneMapping( vec3 color ) { + // apply AGX + color *= toneMappingExposure; + color = max(color, vec3(0.001)); // Prevent NaN + color = _agx(color); + color = _agxLook(color); // Optional + color = _agxEotf(color); + return color; +`)}else M()&&console.error(`Couldn't find AgXToneMapping in ShaderChunk.tonemapping_pars_fragment`)}function Fl(e){if(typeof e==`string`)switch(e=e.toLowerCase(),e){case`none`:return 0;case`neutral`:return 7;case`aces`:return 4;case`agx`:return 6;case`khronos_neutral`:return 7;default:console.warn(`[PostProcessing] Unknown tone mapping mode`,e);return}}var Il=[];function Ll(e){Il.indexOf(e)===-1&&Il.push(e)}function Rl(e){let t=Il.indexOf(e);t!==-1&&Il.splice(t,1)}var zl=[];function Bl(e){zl.indexOf(e)===-1&&zl.push(e)}function Vl(e){let t=zl.indexOf(e);t!==-1&&zl.splice(t,1)}function Hl(e){globalThis.dispatchEvent(new CustomEvent(`needle-xrsession-start`,{detail:e}));for(let t=0;t`);``+btoa(` `);var Gl=`data:image/svg+xml;charset=utf-8;base64,`+btoa(``),Kl;(function(e){function t(e){return e===`0`||e?.toLowerCase()===`false`}e.isFalsey=t;function n(e,n,r){let i=e.getAttribute(n);return t(i)?null:(r?.onAttribute?.call(null,i),i)}e.getAttributeValueIfNotFalsey=n;function r(e,n,r){let i=e.getAttribute(n);return i===null?null:t(i)?(r?.onAttribute?.call(null,i,!0),!1):(r?.onAttribute?.call(null,i,!1),i)}e.getAttributeAndCheckFalsey=r})(Kl||={});async function ql(e){if(!globalThis.QRCode){let e=`https://cdn.jsdelivr.net/gh/davidshimjs/qrcodejs@gh-pages/qrcode.min.js`,t=document.head.querySelector(`script[src="${e}"]`);t||(t=document.createElement(`script`),t.src=e,document.head.appendChild(t)),await new Promise((e,n)=>{t.addEventListener(`load`,()=>{e(!0)})})}let t=globalThis.QRCode,n=e.domElement??document.createElement(`div`),r=new t(n,{width:e.width??256,height:e.height??256,colorDark:`#000000`,colorLight:`#ffffff`,correctLevel:e.showLogo?t.CorrectionLevel.H:t.CorrectLevel.M,...e}),i=r?._oQRCode.moduleCount||0,a=r?._oDrawing?._elCanvas,o=.25;o=i<40?Math.floor(i/4)/i:Math.floor(i/6)/i;let s=Math.floor(i/20)/i;try{let t=await Jl(a,{showLogo:e.showLogo,logoSize:o,logoPadding:s}).catch(e=>{});t&&(n.innerHTML=``,n.append(t))}catch{}if(e.showUrl!==!1&&e.text){let t=n.querySelector(`.qr-code-link-label`),r=e.text.replace(/^(https?:\/\/)?(www\.)?/,``).replace(/\/+$/,``).replace(/\?+$/,``);if(r=`Scan to visit `+r,t)t.textContent=r;else{let t=document.createElement(`div`);t.classList.add(`qr-code-link-label`),e.text=r,t.textContent=e.text,t.addEventListener(`click`,e=>{e.stopImmediatePropagation()}),t.style.textAlign=`center`,t.style.fontSize=`0.8em`,t.style.marginTop=`0.1em`,t.style.color=`#000000`,t.style.fontFamily=`'Roboto Flex', sans-serif`,t.style.opacity=`0.5`,t.style.wordBreak=`break-all`,t.style.wordWrap=`break-word`,t.style.marginBottom=`0.3em`,n.style.width=`calc(210px + 20px)`,n.appendChild(t)}}return n}async function Jl(e,t){if(!e)return;let n=t.logoPadding||1/32,r=new Image,i=document.querySelector(`needle-engine`);i||console.debug(`[QR Code] No web component found`);let a=Xa(),o=null;if(o=Kl.getAttributeAndCheckFalsey(i,`qrcode-logo-src`),a&&t.showLogo!==!0&&o===!1||(o||=Kl.getAttributeAndCheckFalsey(i,`logo-src`),a&&t.showLogo!==!0&&o===!1)||(o||=Kl.getAttributeAndCheckFalsey(i,`loading-logo-src`,{onAttribute:()=>{M()?console.warn(`[QR Code] 'loading-logo-src' is deprecated, please use 'logo-src' or 'qrcode-logo-src' instead.`):console.debug(`[QR Code] 'loading-logo-src' is deprecated.`)}}),a&&t.showLogo!==!0&&o===!1)||(o&&!a&&(console.warn(`[QR Code] Custom logo is only available with a commercial license. Using default Needle logo. Please get a commercial license at https://needle.tools/pricing.`),o=null),o||=Wl,!o))return;let s=!1;t.showLogo!==!1&&(r.src=o,s=await new Promise((e,t)=>{r.onload=()=>e(!0),r.onerror=t=>{let n=o===Wl?null:`'`+o+`'`;console.error(`[QR Code] Error loading logo image for QR code`,n,M()?t:``),e(!1)}}));let c=document.createElement(`canvas`);c.width=e.width+8,c.height=e.height+8;let l=c.getContext(`2d`);if(!l)return;l.fillStyle=`#ffffff`,l.fillRect(0,0,c.width,c.height),l.drawImage(e,8/2,8/2),l.imageSmoothingEnabled=!0,l.imageSmoothingQuality=`high`,l.mozImageSmoothingEnabled=!0,l.webkitImageSmoothingEnabled=!0,l.globalCompositeOperation=`lighten`;let u=l.createLinearGradient(0,0,0,c.height);u.addColorStop(0,`rgb(45, 45, 45)`),u.addColorStop(1,`rgb(45, 45, 45)`),l.fillStyle=u,l.fillRect(0,0,c.width,c.height),l.globalCompositeOperation=`source-over`;let d=Math.min(e.width,e.height)*(t.logoSize||.25),f=d;if(s){let t=r.width/r.height;t>1?f=d/t:d=f*t;let i=n*e.width,a=Math.max(d,f),o=Math.round(a+i),s=Math.round(a+i),u=(c.width-a)/2,p=(c.height-a)/2;l.shadowColor=`transparent`,l.shadowBlur=20;let m=Math.round(u-i/2),h=Math.round(p-i/2);l.beginPath(),l.moveTo(m+0,h),l.lineTo(m+o-0,h),l.quadraticCurveTo(m+o,h,m+o,h+0),l.lineTo(m+o,h+s-0),l.quadraticCurveTo(m+o,h+s,m+o-0,h+s),l.lineTo(m+0,h+s),l.quadraticCurveTo(m,h+s,m,h+s-0),l.lineTo(m,h+0),l.quadraticCurveTo(m,h,m+0,h),l.fillStyle=`#ffffff`,l.closePath(),l.fill(),l.clip(),l.shadowColor=`transparent`;let g=(c.width-d)/2,_=(c.height-f)/2;l.drawImage(r,g,_,d,f)}let p=c.toDataURL(`image/png`),m=document.createElement(`img`);return m.src=p,m.style.width=`100%`,m.style.height=`auto`,m}var Yl=`Material Symbols Outlined`;function Xl(e){let t=document.createElement(`span`);return t.style.maxWidth=`48px`,t.style.maxHeight=`48px`,t.style.overflow=`hidden`,t.classList.add(`material-symbols-outlined`,`notranslate`),t.setAttribute(`translate`,`no`),t.innerText=e,t.style.visibility=`hidden`,t.style.userSelect=`none`,t.setAttribute(`role`,`img`),t.setAttribute(`aria-label`,e+` icon`),t.setAttribute(`aria-hidden`,`true`),tu(Yl).then(n=>{n?(t.style.visibility=``,t.innerText=e):e===`more_vert`?(t.style.visibility=``,t.innerText=`More`):t.style.display=`none`}),t}function Zl(e){return e.classList?.contains(`material-symbols-outlined`)||!1}var Ql=new Map;async function $l(e){if(await tu(Yl),Ql.has(e))return Ql.get(e);let t=document.createElement(`canvas`);t.width=48,t.height=48;let n=t.getContext(`2d`);if(n){n.font=`48px '${Yl}'`,n.fillStyle=`black`,n.fillText(e,0,48);let r=t.toDataURL(),i=new be;return i.name=e+` icon`,i.image=new Image,i.image.src=r,i.needsUpdate=!0,Ql.set(e,i),i}return Ql.set(e,null),null}var eu=new Map;async function tu(e,t=5,n=0){document.fonts.check(`1em '${e}'`)||await document.fonts.ready;let r=eu.get(e)||document.fonts.load(`1em '${e}'`).then(e=>e?.length>0).finally(()=>{eu.delete(e)});return eu.set(e,r),await r?!0:n{setTimeout(()=>{r(tu(e,t,n+1))},1e3)}):!1}function nu(e,t){e.setAttribute(`priority`,String(t))}function ru(e){let t=e.getAttribute(`priority`);if(t){let e=Number.parseFloat(t);if(!Number.isNaN(e))return e}}var iu=class e{static _instance;static get instance(){return this.getOrCreate()}static getOrCreate(){return this._instance||=new e,this._instance}static create(){return new e}_fullscreenButton;get fullscreenButton(){return this._fullscreenButton}createFullscreenButton(e){if(this._fullscreenButton)return this._fullscreenButton;if(!document.fullscreenEnabled)return M()&&console.warn(`NeedleMenu: Fullscreen button could not be created, device doesn't support the Fullscreen API`),null;let t=document.createElement(`button`);this._fullscreenButton=t,t.classList.add(`fullscreen-button`),t.title=`Click to enter fullscreen mode`,nu(t,3);let n=Xl(`fullscreen`),r=Xl(`fullscreen_exit`);return t.appendChild(n),t.onclick=()=>{document.fullscreenElement?document.exitFullscreen():`webkitRequestFullscreen`in e.domElement&&typeof e.domElement.webkitRequestFullscreen==`function`?e.domElement.webkitRequestFullscreen():`requestFullscreen`in e.domElement&&e.domElement.requestFullscreen()},document.addEventListener(`fullscreenchange`,()=>{document.fullscreenElement?(n.remove(),t.appendChild(r),t.title=`Click to enter fullscreen mode`):(r.remove(),t.appendChild(n),t.title=`Click to exit fullscreen mode`)}),globalThis.addEventListener(`needle-xrsession-start`,()=>{t.style.display=`none`}),globalThis.addEventListener(`needle-xrsession-end`,()=>{t.style.display=``}),t}_muteButton;get muteButton(){return this._muteButton}createMuteButton(e){if(this._muteButton)return this._muteButton;let t=document.createElement(`button`);this._muteButton=t,t.classList.add(`mute-button`),t.title=`Click to mute/unmute`;let n=Xl(`volume_off`),r=Xl(`volume_up`);return nu(t,1),e.application.muted?t.appendChild(n):t.appendChild(r),t.onclick=()=>{e.application.muted?(n.remove(),t.appendChild(r),e.application.muted=!1):(r.remove(),t.appendChild(n),e.application.muted=!0)},t}_qrButton;get qrButton(){return this._qrButton}_customQRButtonUrl;set qrButtonUrl(e){try{new URL(e),this._customQRButtonUrl=e}catch{console.warn(`[Needle] QR code button URL is not a valid URL '${e}'`)}}get qrButtonUrl(){return this._customQRButtonUrl||window.location.href}createQRCode(e){if(this._qrButton)return this._qrButton;let t=this,n=document.createElement(`button`);this._qrButton=n,n.innerText=`QR Code`,n.prepend(Xl(`qr_code`)),n.title=`Scan this QR code with your phone to open this page`,this.hideElementDuringXRSession(n),nu(this._qrButton,20);let r=document.createElement(`div`);r.style.cssText=` + position: fixed; + display: inline-block; + padding: 0.5rem; + background-color: white; + border-radius: 0.4rem; + cursor: pointer; + z-index: 1000; + box-shadow: 0 0 12px rgba(0, 0, 0, 0.2); + `;let i=document.createElement(`div`);i.classList.add(`qr-code-container`),r.appendChild(i),n.addEventListener(`click`,()=>{if(r.parentNode)return o();M()&&window.location.href.includes(`://localhost`)&&Ei(`To access your website from another device in the same local network you have to use the IP address instead of localhost. The IP address is logged in your development server console when you start the server.`),a()});async function a(){await s();let t=document.body.querySelector(`needle-engine`),a=e?.anchorElement?.parentElement||t||document.body;a.appendChild(r);let c=i.getBoundingClientRect(),l=n.getBoundingClientRect();r.style.left=l.left+l.width*.5-c.width*.5+`px`,l.top{r.style.opacity=`1`,window.addEventListener(`click`,o,{once:!0})}),window.addEventListener(`resize`,o),window.addEventListener(`scroll`,o),document.fullscreenElement?document.fullscreenElement.appendChild(r):a.appendChild(r)}function o(){r.style.pointerEvents=`none`,r.style.transition=`opacity 0.2s`,r.style.opacity=`0`,setTimeout(()=>r.parentNode?.removeChild(r),500),window.removeEventListener(`click`,o),window.removeEventListener(`resize`,o),window.removeEventListener(`scroll`,o)}async function s(){let e=await ql({text:t.qrButtonUrl,width:200,height:200});i.innerHTML=``,i.appendChild(e)}return n.addEventListener(`pointerenter`,()=>{s()},{once:!0}),n}hideElementDuringXRSession(e){Ll(t=>{e[`previous-display`]=e.style.display,e.style.display=`none`}),Bl(t=>{e[`previous-display`]!=null&&(e.style.display=e[`previous-display`])})}},au=`https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap`,ou=`https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block`;function su(e,t){let n=t?.element||document.head,r=Array.from(n.querySelectorAll(`link[href*='${e}']`));if(r.length<=0){let t=document.createElement(`link`);t.href=e,t.rel=`preload`,t.as=`style`,t.crossOrigin=``,t.onload=()=>{t.rel=`stylesheet`},n.appendChild(t),r.push(t)}if(t?.loadedCallback)for(let e=0;e + :host { + position: relative; + min-width: fit-content; + /* height: 100%; can not have height 100% because of align-items: stretch; in the parent */ + display: flex; + } + + .wrapper { + position: relative; + display: grid; + grid-template-columns: auto auto; + padding: .1rem; + } + .wrapper:hover { + cursor: pointer; + } + img { + height: 100%; + align-self: end; + transition: transform 0.2s; + } + img.with-text { + width: 11.5ch; + &:hover { + transform: scale(1.02); + } + } + img.compact { + width: 1.7em; + &:hover { + transform: scale(1.1); + } + } + span { + font-size: 1rem; + white-space: nowrap; + } + +

+ +
+ `,this._root.appendChild(e.content.cloneNode(!0)),this.wrapper=this._root.querySelector(`.wrapper`),this._root.appendChild(this.wrapper),this.logoElement=this._root.querySelector(`img.logo`),this.addEventListener(`click`,()=>{globalThis.open(`https://needle.tools`,`_blank`)})}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}connectedCallback(){this.ensureInitialized(),this.wrapper&&(this.wrapper.setAttribute(`title`,`Made with Needle Engine`),this.setAttribute(`aria-label`,`Needle Engine logo. Click to open the Needle Engine website.`))}_root;wrapper;logoElement;setLogoVisible(e){this.ensureInitialized(),this.logoElement&&(this.logoElement.style.display=e?`block`:`none`)}setType(e){this.ensureInitialized(),this.logoElement&&(e===`full`?(this.logoElement.src=Gl,this.logoElement.classList.remove(`with-text`),this.logoElement.classList.remove(`compact`)):(this.logoElement.src=Wl,this.logoElement.classList.add(`with-text`),this.logoElement.classList.add(`compact`)))}},du=A(`debugspatialmenu`),fu=class{_context;needleMenu;htmlButtonsMap=new Map;enabled=!0;constructor(e,t){this._context=e,this._context.pre_render_callbacks.push(this.preRender),this.needleMenu=t;let n=this.needleMenu.shadowRoot?.querySelector(`.options`);n?new MutationObserver(e=>{if(this.enabled&&!(this._context.isInXR==0&&!du))for(let t of e)t.type===`childList`&&(t.addedNodes.forEach(e=>{this.createButtonFromHTMLNode(e)}),t.removedNodes.forEach(e=>{let t=e,n=this.htmlButtonsMap.get(t);n&&(this.htmlButtonsMap.delete(t),n.remove(),D.update())}))}).observe(n,{childList:!0}):console.error(`Could not find options container in needle menu`)}setEnabled(e){this.enabled=e,e||this.menu?.removeFromParent()}userRequestedMenu=!1;setDisplay(e){return this.enabled?(this.userRequestedMenu=e,!0):!1}onDestroy(){let e=this._context.pre_render_callbacks.indexOf(this.preRender);e>-1&&this._context.pre_render_callbacks.splice(e,1)}uiisDirty=!1;markDirty(){this.uiisDirty=!0}_showNeedleLogo;showNeedleLogo(e){this._showNeedleLogo=e}_wasInXR=!1;preRender=()=>{if(!this.enabled){this.menu?.removeFromParent();return}du&&j.isDesktop()&&this.updateMenu();let e=this._context.xr;if(!(e?.running&&(e?.isPassThrough||e?.isVR))){this._wasInXR&&(this._wasInXR=!1,this.onExitXR());return}this._wasInXR||(this._wasInXR=!0,this.onEnterXR()),this.updateMenu()};onEnterXR(){let e=this.needleMenu.shadowRoot?.querySelector(`.options`);e&&e.childNodes.forEach(e=>{this.createButtonFromHTMLNode(e)})}onExitXR(){this.menu?.removeFromParent()}createButtonFromHTMLNode(e){let t=this.getMenu(),n=this.htmlButtonsMap.get(e);if(n){n.add();return}if(e instanceof HTMLButtonElement){let n=this.createButton(t,e);this.htmlButtonsMap.set(e,n),n.add()}else e instanceof HTMLSlotElement&&e.assignedNodes().forEach(e=>{this.createButtonFromHTMLNode(e)})}_menuTarget=new S;positionFilter=new ir(90,.5);updateMenu(){let e=this.getMenu();this.handleNeedleWatermark(),this._context.scene.add(e);let t=this._context.mainCamera,n=this._context.xr?.rigScale||1;if(t){let r=t.worldPosition,i=t.worldForward.multiplyScalar(-1),a=i.y>.6,o=i.y>.4,s=(e.visible?o:a)||this.userRequestedMenu,c=!e.visible&&s;e.visible=s||j.isDesktop()&&du,i.multiplyScalar(3*n),r.add(i),c&&(e.position.copy(this._menuTarget.position),e.position.y+=.25,this._menuTarget.position.copy(e.position),this.positionFilter.reset(e.position),e.quaternion.copy(this._menuTarget.quaternion),this.markDirty());let l=this._menuTarget.position.distanceTo(r);(c||l>1.5*n)&&(this.ensureRenderOnTop(this.menu),this._menuTarget.position.copy(r),this._context.scene.add(this._menuTarget),yr(this._menuTarget,this._context.mainCamera,!0,!0),this._menuTarget.removeFromParent()),this.positionFilter.filter(this._menuTarget.position,e.position,this._context.time.time),this.menu?.quaternion.slerp(this._menuTarget.quaternion,this._context.time.deltaTime*5),this.menu?.scale.setScalar(n)}this.uiisDirty&&(this.uiisDirty=!1,D.update())}ensureRenderOnTop(e,t=0){e instanceof x&&(e.material.depthTest=!1,e.material.depthWrite=!1),e.renderOrder=1e3+t*2;for(let n of e.children)this.ensureRenderOnTop(n,t+1)}familyName=`Needle Spatial Menu`;menu;get isVisible(){return this.menu?.visible}getMenu(){if(this.menu)return this.menu;this.ensureFont(),this.menu=new D.Block({boxSizing:`border-box`,fontFamily:this.familyName,height:`auto`,fontSize:.1,color:0,lineHeight:1,backgroundColor:16777215,backgroundOpacity:.55,borderRadius:1,whiteSpace:`pre-wrap`,flexDirection:`row`,alignItems:`center`,padding:new Te(0,.05,0,.05),borderColor:0,borderOpacity:.05,borderWidth:.005});let e=ji.get(`ObjectRaycaster`);return e&&Dp(this.menu,new e),this.menu}_poweredByNeedleElement;handleNeedleWatermark(){if(!this._poweredByNeedleElement){this._poweredByNeedleElement=new D.Block({width:`auto`,height:`auto`,fontSize:.05,whiteSpace:`pre-wrap`,flexDirection:`row`,flexWrap:`wrap`,justifyContent:`center`,margin:.02,borderRadius:.02,padding:.02,backgroundColor:16777215,backgroundOpacity:1}),this._poweredByNeedleElement[`needle:use_eventsystem`]=!0;let e=new mu(this._context,()=>globalThis.open(`https://needle.tools`,`_self`));Dp(this._poweredByNeedleElement,e);let t=new D.Text({textContent:`Powered by`,width:`auto`,height:`auto`}),n=new D.Text({textContent:`needle`,width:`auto`,height:`auto`,fontSize:.07,margin:new Te(0,0,0,.02)});this._poweredByNeedleElement.add(t),this._poweredByNeedleElement.add(n),this.menu?.add(this._poweredByNeedleElement),this.markDirty(),new me().load(`https://cdn.needle.tools/static/branding/poweredbyneedle.webp`,r=>{if(r){e.allowModifyUI=!1,t.removeFromParent(),n.removeFromParent();let i=r.image.width/r.image.height;this._poweredByNeedleElement?.set({backgroundImage:r,backgroundOpacity:1,width:.1*i,height:.1}),this.markDirty()}})}if(this.menu){let e=this.menu.children.indexOf(this._poweredByNeedleElement);!this._showNeedleLogo&&qa()?e>=0&&(this._poweredByNeedleElement.removeFromParent(),this.markDirty()):(this._poweredByNeedleElement.visible=!0,this.menu.add(this._poweredByNeedleElement),e!==this.menu.children.indexOf(this._poweredByNeedleElement)&&this.markDirty())}}ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{this.markDirty()}))}createButton(e,t){let n=new D.Block({width:`auto`,height:`auto`,whiteSpace:`pre-wrap`,flexDirection:`row`,flexWrap:`wrap`,justifyContent:`center`,backgroundColor:16777215,backgroundOpacity:0,padding:.02,margin:.01,borderRadius:.02,cursor:`pointer`,fontSize:.05}),r=new D.Text({textContent:``,width:`auto`,justifyContent:`center`,alignItems:`center`,backgroundOpacity:0,backgroundColor:16777215,fontFamily:this.familyName,color:0,borderRadius:.02,padding:.01});return n.add(r),n[`needle:use_eventsystem`]=!0,Dp(n,new mu(this._context,()=>t.click())),new pu(this,e,t,n,r)}},pu=class{menu;root;htmlbutton;spatialContainer;spatialText;spatialIcon;constructor(e,t,n,r,i){this.menu=e,this.root=t,this.htmlbutton=n,this.spatialContainer=r,this.spatialText=i,new MutationObserver(e=>{for(let t of e)t.type===`attributes`?t.attributeName===`style`&&this.updateVisible():t.type===`childList`&&this.updateText()}).observe(n,{attributes:!0,childList:!0}),this.updateText()}add(){this.spatialContainer.parent!=this.root&&(this.root.add(this.spatialContainer),this.menu.markDirty(),this.updateVisible(),this.updateText())}remove(){this.spatialContainer.parent&&(this.spatialContainer.removeFromParent(),this.menu.markDirty())}updateVisible(){let e=this.spatialContainer.visible;this.spatialContainer.visible=this.htmlbutton.style.display!==`none`,e!==this.spatialContainer.visible&&this.menu.markDirty()}_lastText=``;updateText(){let e=``,t=``;this.htmlbutton.childNodes.forEach(n=>{n.nodeType===Node.TEXT_NODE?e+=n.textContent:n instanceof HTMLElement&&Zl(n)&&n.textContent&&(t=n.textContent)}),this._lastText!==e&&(this._lastText=e,this.spatialText.name=e,this.spatialText.set({textContent:e}),this.menu.markDirty()),e.length<=0?this.spatialText.parent&&(this.spatialText.removeFromParent(),this.menu.markDirty()):this.spatialText.parent||(this.spatialContainer.add(this.spatialText),this.menu.markDirty()),t&&this.createIcon(t)}_lastTexture;async createIcon(e){if(!this.spatialIcon){let t=await $l(e);if(t&&!this.spatialIcon){let e=.08,n=new D.Block({width:e,height:e,backgroundColor:16777215,backgroundImage:t,backgroundOpacity:1,margin:new Te(0,.005,0,0)});this.spatialIcon=n,this.spatialContainer.add(n),this.menu.markDirty()}}if(e!=this._lastTexture){this._lastTexture=e;let t=await $l(e);t&&(this.spatialIcon?.set({backgroundImage:t}),this.menu.markDirty())}let t=this.spatialContainer.children.indexOf(this.spatialIcon);t>0&&(this.spatialContainer.children.splice(t,1),this.spatialContainer.children.unshift(this.spatialIcon),this.menu.markDirty())}},mu=class{isComponent=!0;enabled=!0;get activeAndEnabled(){return!0}__internalAwake(){}__internalEnable(){}__internalDisable(){}__internalStart(){}onEnable(){}onDisable(){}gameObject;allowModifyUI=!0;get element(){return this.gameObject}context;onclick;constructor(e,t){this.context=e,this.onclick=t}onPointerEnter(){this.context.input.setCursor(`pointer`),this.allowModifyUI&&(this.element.set({backgroundOpacity:1}),D.update())}onPointerExit(){this.context.input.unsetCursor(`pointer`),this.allowModifyUI&&(this.element.set({backgroundOpacity:0}),D.update())}onPointerDown(e){e.use()}onPointerUp(e){e.use()}onPointerClick(e){e.use(),this.onclick()}},hu=`needle-menu`,gu=A(`debugmenu`),_u=A(`debugnoncommercial`),vu=class{static setElementPriority(e,t){nu(e,t)}static getElementPriority(e){return ru(e)}_context;_menu;_spatialMenu;constructor(e){this._menu=yu.getOrCreate(e.domElement,e),this._menu.ensureInitialized(),this._context=e,this._spatialMenu=new fu(e,this._menu),window.addEventListener(`message`,this.onPostMessage),Ll(this.onStartXR)}onDestroy(){window.removeEventListener(`message`,this.onPostMessage),this._menu.remove(),this._spatialMenu.onDestroy()}onPostMessage=e=>{if(e.origin===globalThis.location.origin&&typeof e.data==`object`){let t=e.data,n=t.type;if(n===`needle:menu`){let e=t.button;if(e){if(!e.label)return console.error(`NeedleMenu: buttoninfo.label is required`);if(!e.onclick)return console.error(`NeedleMenu: buttoninfo.onclick is required`);let t=document.createElement(`button`);if(t.textContent=e.label,e.icon){let n=Xl(e.icon);t.prepend(n)}e.priority&&t.setAttribute(`priority`,e.priority.toString()),t.onclick=()=>{if(e.onclick){let t=e.onclick.startsWith(`http`)||e.onclick.startsWith(`www.`),n=e.target||`_blank`;t?globalThis.open(e.onclick,n):console.error(`NeedleMenu: onclick is not a valid link`,e.onclick)}},$a.sendEvent(this._context,`needle-menu`,{action:`button_added_via_postmessage`}),this._menu.appendChild(t)}else gu&&console.error(`NeedleMenu: unknown postMessage event`,t)}else gu&&console.warn(`NeedleMenu: unknown postMessage type`,n,t)}};onStartXR=e=>{e.session.isScreenBasedAR&&(this._menu.previousParent=this._menu.parentNode,this._context.arOverlayElement.appendChild(this._menu),e.session.session.addEventListener(`end`,this.onExitXR),this._menu.closeFoldout())};onExitXR=()=>{this._menu.previousParent&&(this._menu.previousParent.appendChild(this._menu),delete this._menu.previousParent)};setPosition(e){this._menu.setPosition(e)}setVisible(e){this._menu.setVisible(e)}showNeedleLogo(e){this._menu.showNeedleLogo(e),this._spatialMenu?.showNeedleLogo(e)}get logoIsVisible(){return this._menu.logoIsVisible}showSpatialMenu(e){this._spatialMenu.setEnabled(e)}setSpatialMenuVisible(e){this._spatialMenu.setDisplay(e)}get spatialMenuIsVisible(){return this._spatialMenu.isVisible}showQRCodeButton(e){if(e===`desktop-only`&&(e=!j.isMobileDevice()),e){let e=iu.getOrCreate().createQRCode();return e.style.display=``,this._menu.appendChild(e),e}else{let e=iu.getOrCreate().qrButton;return e&&(e.style.display=`none`),e??null}}showAudioPlaybackOption(e){if(!e){this._muteButton?.remove();return}this._muteButton=iu.getOrCreate().createMuteButton(this._context),this._menu.appendChild(this._muteButton)}_muteButton;showFullscreenOption(e){if(!e){this._fullscreenButton?.remove();return}this._fullscreenButton=iu.getOrCreate().createFullscreenButton(this._context),this._fullscreenButton&&this._menu.appendChild(this._fullscreenButton)}_fullscreenButton;appendChild(e){return this._menu.appendChild(e)}},yu=class e extends HTMLElement{static create(){return customElements.get(hu)||customElements.define(hu,e),document.createElement(hu)}static getOrCreate(t,n){let r=t.querySelector(hu);return!r&&t.shadowRoot&&(r=t.shadowRoot.querySelector(hu)),r||=window.document.body.querySelector(hu),r||(r=e.create(),t.shadowRoot?t.shadowRoot.appendChild(r):t.appendChild(r)),r._domElement=t,r._context=n,r}_domElement=null;_context=null;_didInitialize=!1;constructor(){super()}initializeDom(){let e=document.createElement(`template`);e.innerHTML=` + +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+ `;let t=this.attachShadow({mode:`open`});cu(),su(ou,{loadedCallback:()=>{this.handleSizeChange()}}),su(ou,{element:t});let n=e.content.cloneNode(!0);t?.appendChild(n),this.root=t.querySelector(`#root`),this.wrapper=this.root?.querySelector(`.wrapper`),this.options=this.root?.querySelector(`.options.main-container`),this.optionsCompactMode=this.root?.querySelector(`.options.compact-only`),this.logoContainer=this.root?.querySelector(`.logo`),this.compactMenuButton=this.root?.querySelector(`.compact-menu-button`),this.compactMenuButton.append(Xl(`more_vert`)),this.foldout=this.root?.querySelector(`.foldout`),this.root?.appendChild(this.wrapper),this.wrapper.classList.add(`wrapper`);let r=uu.create();r.setType(`compact`),r.style.minHeight=`1rem`,this.logoContainer.append(r),this.logoContainer.addEventListener(`click`,()=>{globalThis.open(`https://needle.tools`,`_blank`)});try{window.requestAnimationFrame(()=>Za(e=>{if(e==1&&Xa()&&!_u){let e=this._userRequestedLogoVisible;e===void 0&&(e=!1),this.___onSetLogoVisible(e)}else this.___onSetLogoVisible(!0)}))}catch(e){console.error(`[Needle Menu] License check failed.`,e)}this.compactMenuButton.addEventListener(`click`,e=>{e.preventDefault(),this.root.classList.toggle(`open`)});let i=this._context;setTimeout(()=>i=this._context);let a=0,o=(e,t)=>{gu&&console.log(`Set menu visible`,t),i?.isInAR&&i.arOverlayElement?e!=i.arOverlayElement&&i.arOverlayElement.appendChild(this):this.parentNode!=this._domElement?.shadowRoot&&this._domElement?.shadowRoot?.appendChild(this),this.style.display=t?`flex`:`none`,this.style.visibility=`visible`,this.style.opacity=`1`},s=!1;new MutationObserver(e=>{if(!s)try{s=!0,this.onChangeDetected(e);let t=this?.parentNode;if((this.style.display!=`flex`||this.style.visibility!=`visible`||this.style.opacity!=`1`||t!=this._domElement?.shadowRoot)&&!Xa()){let e=a++;wt()&&this._userRequestedMenuVisible===!1?(e===0&&o(t,this._userRequestedMenuVisible),e===1&&console.warn(`Needle Menu Warning: You need a PRO license to hide the Needle Engine menu → The menu will be visible in your deployed website if you don't have a PRO license. See https://needle.tools/pricing for details.`)):e===0?o(t,!0):setTimeout(()=>o(t,!0),5)}}finally{s=!1}}).observe(this.root,{childList:!0,subtree:!0,attributes:!0}),gu&&this.___insertDebugOptions()}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}_sizeChangeInterval;connectedCallback(){this.ensureInitialized(),window.addEventListener(`resize`,this.handleSizeChange),this.handleMenuVisible(),this._sizeChangeInterval=setInterval(()=>this.handleSizeChange(void 0,!1),5e3),setTimeout(()=>{this._domElement?.addEventListener(`resize`,this.handleSizeChange),this._domElement?.addEventListener(`click`,this.#e)},1)}disconnectedCallback(){window.removeEventListener(`resize`,this.handleSizeChange),clearInterval(this._sizeChangeInterval),this._domElement?.removeEventListener(`resize`,this.handleSizeChange),this._context?.domElement.removeEventListener(`click`,this.#e)}#e=e=>{if(!e.defaultPrevented&&e.target==this._domElement&&e instanceof PointerEvent&&e.button===0&&this.root.classList.contains(`open`)){let t=this.foldout.getBoundingClientRect(),n=e;n.clientX>t.left&&n.clientXt.top&&n.clientY{$a.sendEvent(this._context,`needle-menu`,{action:`button_clicked`,element:t.target instanceof Node?t.target.nodeName:e.nodeName,label:e.textContent,title:e instanceof HTMLElement?e.title:void 0,pointerid:t instanceof PointerEvent?t.pointerId:void 0})}))}append(...e){for(let t of e)if(typeof t==`string`){let e=document.createTextNode(t);this.trackElement(e),this.options.appendChild(e)}else this.trackElement(t),this.options.appendChild(t)}appendChild(e){if(!(e instanceof Node)){let t=document.createElement(`button`);if(t.textContent=e.label,t.onclick=e.onClick,t.setAttribute(`priority`,e.priority?.toString()??`0`),e.title&&(t.title=e.title),e.icon){let n=Xl(e.icon);e.iconSide===`right`?t.appendChild(n):t.prepend(n)}e.class&&t.classList.add(e.class),e=t}return this.trackElement(e),this.options.appendChild(e)}prepend(...e){for(let t of e)if(typeof t==`string`){let e=document.createTextNode(t);this.trackElement(e),this.options.prepend(e)}else this.trackElement(t),this.options.prepend(t)}_isHandlingChange=!1;_pauseMutationObserverOptionsContainer=!1;onChangeDetected(e){if(!this._isHandlingChange){this._isHandlingChange=!0;try{this.handleMenuVisible();for(let t of e)t.target==this.options&&(this._pauseMutationObserverOptionsContainer||this.onOptionsChildrenChanged(t))}finally{this._isHandlingChange=!1}}}onOptionsChildrenChanged(e){if(this.root.classList.toggle(`has-options`,this.hasAnyVisibleOptions),this.root.classList.toggle(`has-no-options`,!this.hasAnyVisibleOptions),this.handleSizeChange(void 0,!0),e.type===`childList`&&e.addedNodes.length>0){let e=Array.from(this.options.children);e.sort((e,t)=>parseInt(e.getAttribute(`priority`)||`0`)-parseInt(t.getAttribute(`priority`)||`0`));let t=!1;for(let n=0;n{if(!this._domElement)return;let n=this._domElement.clientWidth;if(n<100){clearTimeout(this._timeoutHandleSize),this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`);return}let r=n-20;if(!t&&Math.abs(r-this._lastAvailableWidthChange)<1)return;this._lastAvailableWidthChange=r,clearTimeout(this._timeoutHandleSize),this._timeoutHandleSize=setTimeout(()=>{let e=o();e<0?(this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`)):e>0&&(this.root.classList.remove(`compact`),this.foldout.classList.remove(`floating-panel-style`),o()<0&&(this.root.classList.add(`compact`),this.foldout.classList.add(`floating-panel-style`))),this._pauseMutationObserverOptionsContainer=!0,this.updateCompactFoldoutItem(),window.requestAnimationFrame(()=>this._pauseMutationObserverOptionsContainer=!1)},150);let i=()=>{let e=0;return e+=this.options.getBoundingClientRect().width,e+=this.optionsCompactMode.getBoundingClientRect().width,e+=10*this.options.childElementCount,e+=this.logoContainer.style.display==`none`?0:this.logoContainer.getBoundingClientRect().width,e},a=-1,o=()=>{let e=r-i();return gu&&e!==a&&(a=e,Ti(`Menu space left: ${e.toFixed(0)}px`)),e}};updateCompactFoldoutItem(){if(this.root.classList.contains(`compact`)){let e=null,t=-1e7,n=n=>{if(n instanceof HTMLElement){let r=vu.getElementPriority(n);if(r!==void 0&&r>=t){let i=window.getComputedStyle(n);if(i.display===`none`||i.visibility===`hidden`||i.opacity===`0`)return;e=n,t=r}}};for(let e=0;e{this.options.appendChild(e)});let t=e;this.optionsCompactMode.appendChild(t)}else e||this.optionsCompactMode.childNodes.forEach(e=>{this.options.appendChild(e)})}else this.optionsCompactMode.childNodes.forEach(e=>{this.options.appendChild(e)})}___insertDebugOptions(){window.addEventListener(`keydown`,e=>{e.key===`p`&&this.setPosition(this.root.classList.contains(`top`)?`bottom`:`top`)});let e=document.createElement(`button`);e.textContent=`Hide Buttons`,e.onclick=()=>{let e=Array(this.options.children.length);for(let t=0;t{for(let t of e)this.options.appendChild(t)},1e3)},this.appendChild(e);let t=document.createElement(`button`);t.textContent=`Toggle Logo`,t.addEventListener(`click`,()=>{this.logoContainer.style.display=this.logoContainer.style.display===`none`?``:`none`}),this.appendChild(t)}},R=A(`debugcontext`),bu=A(`stats`),xu=A(`debugactive`),Su=A(`debugframerate`),Cu=A(`debugcoroutine`),wu={},Tu=class{name;alias;hash;runInBackground;domElement;renderer;camera;scene},z;(function(e){e[e.Start=-1]=`Start`,e[e.EarlyUpdate=0]=`EarlyUpdate`,e[e.Update=1]=`Update`,e[e.LateUpdate=2]=`LateUpdate`,e[e.OnBeforeRender=3]=`OnBeforeRender`,e[e.OnAfterRender=4]=`OnAfterRender`,e[e.PrePhysicsStep=9]=`PrePhysicsStep`,e[e.PostPhysicsStep=10]=`PostPhysicsStep`,e[e.Undefined=-1]=`Undefined`})(z||={});function Eu(e,t){if(!e)return;if(!e.isComponent){(M()||R)&&console.error(`Registered script is not a Needle Engine component. +The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine" +`,e);return}t||(t=B.Current,R&&console.warn(`> Registering component without context`));let n=t?.new_scripts;n.includes(e)||n.push(e)}var B=class e{static _defaultTargetFramerate={value:90,toString(){return this.value}};static get DefaultTargetFrameRate(){return e._defaultTargetFramerate.value}static set DefaultTargetFrameRate(t){e._defaultTargetFramerate.value=t}static _defaultWebglRendererParameters={antialias:!0,alpha:!1,powerPreference:j.isiOS()||j.isMacOS()?`default`:`high-performance`,stencil:!0};static get DefaultWebGLRendererParameters(){return e._defaultWebglRendererParameters}get version(){return Bi}static get Current(){return k.Current}static set Current(e){k.Current=e}static get All(){return k.All}name;alias;isManagedExternally=!1;isPaused=!1;runInBackground=!1;targetFrameRate;physicsSteps=1;hash;domElement;appendHTMLElement(e){return this.domElement.shadowRoot?this.domElement.shadowRoot.appendChild(e):this.domElement.appendChild(e)}get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(e){if(e!==this._resolutionScaleFactor&&typeof e==`number`){if(e<=0){console.error(`Invalid resolution scale factor`,e);return}this._resolutionScaleFactor=e,this.updateSize()}}_resolutionScaleFactor=1;_boundingClientRectFrame=-1;_boundingClientRect=null;_domX;_domY;calculateBoundingClientRect(){if(this.xr){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){return this.renderer?.xr?.isPresenting||!1}xr=null;get xrSessionMode(){return this.xr?.mode}get isInVR(){return this.xrSessionMode===`immersive-vr`}get isInAR(){return this.xrSessionMode===`immersive-ar`}get isInPassThrough(){return this.xr?this.xr.isPassThrough:!1}get xrSession(){return this.renderer?.xr?.getSession()}get xrFrame(){return this._xrFrame}get xrCamera(){return this.renderer.xr.isPresenting?this.renderer?.xr?.getCamera():void 0}_xrFrame=null;get arOverlayElement(){let e=this.domElement;return typeof e.getAROverlayContainer==`function`?e.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}_currentFrameEvent=z.Undefined;scene;renderer;composer=null;scripts=[];scripts_pausedChanged=[];scripts_earlyUpdate=[];scripts_update=[];scripts_lateUpdate=[];scripts_onBeforeRender=[];scripts_onAfterRender=[];scripts_WithCorroutines=[];scripts_immersive_vr=[];scripts_immersive_ar=[];coroutines={};post_setup_callbacks=[];pre_update_callbacks=[];pre_render_callbacks=[];post_render_callbacks=[];pre_update_oneshot_callbacks=[];new_scripts=[];new_script_start=[];new_scripts_pre_setup_callbacks=[];new_scripts_post_setup_callbacks=[];new_scripts_xr=[];mainCameraComponent=void 0;get mainCamera(){if(this._mainCamera)return this._mainCamera;if(this.mainCameraComponent){let e=this.mainCameraComponent;return e.threeCamera||e.buildCamera(),e.threeCamera}return this._fallbackCamera||=new C(75,this.domWidth/this.domHeight,.1,1e3),this._fallbackCamera}set mainCamera(e){this._mainCamera=e}_mainCamera=null;_fallbackCamera=null;application;animations;time;input;physics;connection;assets;mainLight=null;get rendererData(){return this.sceneLighting}sceneLighting;addressables;lightmaps;players;lodsManager;menu;accessibility;get isCreated(){return this._isCreated}get rootSourceId(){return this.rootSceneSourceIdentifiers[0]||void 0}_needsUpdateSize=!1;_isCreated=!1;_isCreating=!1;_isVisible=!1;_stats=bu?new ht:null;constructor(e){this.name=e?.name||``,this.alias=e?.alias,this.domElement=e?.domElement||document.body,this.hash=e?.hash,e?.renderer&&(this.renderer=e.renderer,this.isManagedExternally=!0),e?.runInBackground!==void 0&&(this.runInBackground=e.runInBackground),e?.scene?this.scene=e.scene:this.scene=new ne,e?.camera&&(this._mainCamera=e.camera),this.application=new Vs(this),this.time=new Al,this.input=new cc(this),this.physics=new jd(this),this.connection=new nl(this),this.assets=new Vd,this.sceneLighting=new El(this),this.addressables=new ks(this),this.lightmaps=new gc(this),this.players=new ol(this),this.menu=new vu(this),this.lodsManager=new bc(this),this.animations=new Ni(this),this.accessibility=new _a(this);let t=()=>this._needsUpdateSize=!0;window.addEventListener(`resize`,t),this._disposeCallbacks.push(()=>window.removeEventListener(`resize`,t));let n=new ResizeObserver(e=>this._needsUpdateSize=!0);n.observe(this.domElement),this._disposeCallbacks.push(()=>n.disconnect()),this._intersectionObserver=new IntersectionObserver(e=>{this._isVisible=e[0].isIntersecting}),this._disposeCallbacks.push(()=>this._intersectionObserver?.disconnect()),k.register(this)}createNewRenderer(t){if(this.renderer?.dispose(),t={...e.DefaultWebGLRendererParameters,...t},!t.canvas){let e=this.domElement?.shadowRoot?.querySelector(`canvas`);e?(t.canvas=e,R&&console.log(`Using canvas from shadow root`,e)):R&&console.warn(`No canvas found in shadow root, creating new canvas. This may cause input events to not work correctly. To fix this, make sure to use the canvas provided by the Needle Engine Web Component (e.g. by using context.createNewRenderer() without parameters or passing the canvas from the shadow root explicitly).`)}return R&&console.log(`Using Renderer Parameters:`,t,this.domElement),this.renderer=new h(t),this.renderer.domElement.setAttribute(`aria-label`,`3D rendering`),this.renderer.domElement.setAttribute(`role`,`img`),this.renderer.debug.checkShaderErrors=M()||A(`checkshadererrors`)===!0,this.renderer.toneMappingExposure=1,this.renderer.toneMapping=0,this.renderer.setClearColor(new a(`lightgrey`),0),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=2,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputColorSpace=de,this.renderer.nodes={library:new Fe,modelViewMatrix:null,modelNormalViewMatrix:null},this.lodsManager.setRenderer(this.renderer),this.input.bindEvents(),sa(this,this.renderer.domElement),this.renderer}_intersectionObserver=null;internalOnUpdateVisible(){this._intersectionObserver?.disconnect(),this._intersectionObserver?.observe(this.domElement)}_disposeCallbacks=[];requestSizeUpdate(){this._needsUpdateSize=!0}maxRenderResolution;get devicePixelRatio(){return this._devicePixelRatio}set devicePixelRatio(e){e!==this._devicePixelRatio&&(this._devicePixelRatio=e,this._needsUpdateSize=!0)}_devicePixelRatio=`auto`;updateSize(e=!1){if(e||!this.isManagedExternally&&this.renderer.xr?.isPresenting===!1){this._needsUpdateSize=!1;let e=this.resolutionScaleFactor,t=this.domWidth*e,n=this.domHeight*e;this.maxRenderResolution&&(this.maxRenderResolution.x=Math.max(1,this.maxRenderResolution.x),t=Math.min(this.maxRenderResolution.x,t),this.maxRenderResolution.y=Math.max(1,this.maxRenderResolution.y),n=Math.min(this.maxRenderResolution.y,n));let r=this.mainCamera;this.updateAspect(r),this.renderer.setSize(t,n,!0),this.renderer.domElement.style.width=`100%`,this.renderer.domElement.style.height=`100%`;let i=typeof this.devicePixelRatio==`number`?this.devicePixelRatio:this.devicePixelRatio===`auto`?Math.min(2,window.devicePixelRatio):void 0;i!==void 0&&this.renderer.setPixelRatio(i),this.composer&&(this.composer.setSize?.call(this.composer,t,n),i!==void 0&&`setPixelRatio`in this.composer&&typeof this.composer.setPixelRatio==`function`&&this.composer.setPixelRatio?.call(this.composer,window.devicePixelRatio))}}updateAspect(e,t,n){if(!e)return;t===void 0&&(t=this.domWidth),n===void 0&&(n=this.domHeight);let r=t/n;if(e.isPerspectiveCamera){let t=e,n=t.aspect;t.aspect=r,n!==t.aspect&&e.updateProjectionMatrix()}else if(e.isOrthographicCamera){let t=e,n=t.top-t.bottom,i=n*r/2,a=n/2;(t.left!=-i||t.top!=a)&&(t.left=-i,t.right=i,t.top=a,t.bottom=-a,e.updateProjectionMatrix())}}recreate(){this.clear(),this.create(this._originalCreationArgs)}_originalCreationArgs;async onCreate(e){return this.create(e)}async create(e){try{this._isCreating=!0,e!==this._originalCreationArgs&&(this._originalCreationArgs=Gt(e)),window.addEventListener(`unhandledrejection`,this.onUnhandledRejection);let t=await this.internalOnCreate(e);return this._isCreated=t,t}finally{window.removeEventListener(`unhandledrejection`,this.onUnhandledRejection),this._isCreating=!1}}onUnhandledRejection=e=>{this.onError(e.reason)};onError(e){this.domElement.dispatchEvent(new CustomEvent(`error`,{detail:e}))}clear(){k.dispatchCallback(O.ContextClearing,this),ja(this,O.ContextClearing),zf(this.scene,!0,!0),this.scene=new ne,this.addressables?.dispose(),this.lightmaps?.clear(),this.physics?.engine?.clearCaches(),this.lodsManager.disable(),this.accessibility?.clear(),this._onBeforeRenderListeners.clear(),this._onAfterRenderListeners.clear(),this.isManagedExternally||this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.state.reset(),this.renderer.resetState()),k.dispatchCallback(O.ContextCleared,this)}dispose(){this.internalOnDestroy(),this.accessibility.dispose()}onDestroy(){this.internalOnDestroy()}internalOnDestroy(){e.Current=this,k.dispatchCallback(O.ContextDestroying,this),ja(this,O.ContextDestroying),this.clear(),this.renderer?.setAnimationLoop(null),this.renderer&&(this.renderer.setClearAlpha(0),this.renderer.clear(),this.isManagedExternally||(R&&console.log(`Disposing renderer`),this.renderer.dispose())),this.scene=null,this.renderer=null,this.input.dispose(),this.menu.onDestroy(),this.animations.onDestroy();for(let e of this._disposeCallbacks)try{e()}catch(t){console.error(`Error in on dispose callback:`,t,e)}this.domElement?.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this._isCreated=!1,k.dispatchCallback(O.ContextDestroyed,this),ja(this,O.ContextDestroyed),k.unregister(this),e.Current===this&&(e.Current=null)}registerCoroutineUpdate(e,t,n){return typeof t?.next==`function`?(this.coroutines[n]||(this.coroutines[n]=[]),this.coroutines[n].push({comp:e,main:t}),t):(console.error(`Registered invalid coroutine function from `+e.name+` +Coroutine functions must be generators: "*myCoroutine() {...}" +Start a coroutine from a component by calling "this.startCoroutine(myCoroutine())"`),t)}unregisterCoroutineUpdate(e,t){if(!this.coroutines[t])return;let n=this.coroutines[t].findIndex(t=>t.main===e);n>=0&&this.coroutines[t].splice(n,1)}stopAllCoroutinesFrom(e){for(let t in this.coroutines){let n=this.coroutines[t];for(let t=n.length-1;t>=0;t--)n[t].comp===e&&n.splice(t,1)}}_cameraStack=[];setCurrentCamera(e){if(!e)return;if(e.threeCamera||e.buildCamera(),!e.threeCamera){console.warn(`Camera component is missing camera`,e);return}let t=this._cameraStack.indexOf(e);t>=0&&this._cameraStack.splice(t,1),this._cameraStack.push(e),this.mainCameraComponent=e;let n=e.threeCamera;n.isPerspectiveCamera&&this.updateAspect(n),this.mainCameraComponent?.applyClearFlagsIfIsActiveCamera()}removeCamera(e){if(!e)return;let t=this._cameraStack.indexOf(e);if(t>=0&&this._cameraStack.splice(t,1),this.mainCameraComponent===e&&(this.mainCameraComponent=void 0,this._cameraStack.length>0)){let e=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(e)}}_onBeforeRenderListeners=new Map;_onAfterRenderListeners=new Map;addBeforeRenderListener(e,t){if(!this._onBeforeRenderListeners.has(e.uuid)){let t=[];this._onBeforeRenderListeners.set(e.uuid,t),e.onBeforeRender=this._createRenderCallbackWrapper(t)}this._onBeforeRenderListeners.get(e.uuid).push(t)}removeBeforeRenderListener(e,t){if(this._onBeforeRenderListeners.has(e.uuid)){let n=this._onBeforeRenderListeners.get(e.uuid),r=n.indexOf(t);r>=0&&n.splice(r,1)}}addAfterRenderListener(e,t){if(!this._onAfterRenderListeners.has(e.uuid)){let t=[];this._onAfterRenderListeners.set(e.uuid,t),e.onAfterRender=this._createRenderCallbackWrapper(t)}this._onAfterRenderListeners.get(e.uuid)?.push(t)}removeAfterRenderListener(e,t){if(this._onAfterRenderListeners.has(e.uuid)){let n=this._onAfterRenderListeners.get(e.uuid),r=n.indexOf(t);r>=0&&n.splice(r,1)}}_createRenderCallbackWrapper(e){return(t,n,r,i,a,o)=>{for(let s=0;s{if(R||M()){if(Di(`Needle Engine dependencies failed to load. Please check the console for more details`),e instanceof ReferenceError){let t=`YourComponentName`,n=e.message.indexOf(`'`);if(n>0){let r=e.message.indexOf(`'`,n+1);if(r>0){let i=e.message.substring(n+1,r);i.length>3&&(t=i)}}console.error(`Needle Engine dependencies failed to load:\n\n# Make sure you don't have circular imports in your scripts!\n\nPossible solutions: \n→ Replace @serializable(${t}) in your script with @serializable(Behaviour)\n→ If you only need type information try importing the type only, e.g: import { type ${t} }\n\n---`,e);return}console.error(`Needle Engine dependencies failed to load`,e)}}).then(()=>{R&&console.log(`Needle Engine dependencies are ready`)})),this.clear();let i=this.renderer,a=!i||i.isDisposed===!0;this.isManagedExternally===!1&&a?this.createNewRenderer():this.lodsManager.setRenderer(this.renderer),this.renderer?.setAnimationLoop(null),e.Current=this,await k.dispatchCallback(O.ContextCreationStart,this);let o=!0,s;try{e.Current=this,s=t?await this.internalLoadInitialContent(n,t):[]}catch(e){console.error(e),o=!1}if(!o)return this.onError(`Failed to load initial content`),!1;if(n!==this._createId||t?.abortSignal?.aborted)return!1;if(this.internalOnUpdateVisible(),!this.renderer)return R&&console.warn(`Context has no renderer (perhaps it was disconnected?`,this.domElement.isConnected),!1;!this.isManagedExternally&&!this.domElement.shadowRoot&&this.domElement.prepend(this.renderer.domElement),e.Current=this,e.Current=this;for(let e=0;e{let n=e;if(n?.isCamera){if(dp(n.gameObject),!n.activeAndEnabled)return;if(n.tag===`MainCamera`)return t=n,!0;t=n}}),t?this.setCurrentCamera(t):!k.dispatchCallback(O.MissingCamera,this,{files:s})&&!this.mainCamera&&!this.isManagedExternally&&console.warn(`Missing camera in main scene`,this)}this.input.bindEvents(),e.Current=this,ep(this),this.physics.engine&&(this.physics.engine?.step(0),this.physics.engine?.postStep()),!this.isManagedExternally&&this.composer&&this.mainCamera,this._needsUpdateSize=!0,this._stats&&(this._stats.showPanel(0),this._stats.dom.style.position=`absolute`,this.domElement.shadowRoot?.appendChild(this._stats.dom)),R&&ti(this.scene,!0),this.targetFrameRate===void 0?(R&&console.warn(`No target framerate set, using default`,e.DefaultTargetFrameRate),this.targetFrameRate=e._defaultTargetFramerate):R&&console.log(`Target framerate set to`,this.targetFrameRate),this._dispatchReadyAfterFrame=!0;let c=k.dispatchCallback(O.ContextCreated,this,{files:s});if(c){let e=this.domElement;`internalSetLoadingMessage`in e&&typeof e.internalSetLoadingMessage==`function`&&e?.internalSetLoadingMessage(`finish loading`),await c}if(t?.abortSignal?.aborted)return!1;let l=this.rootSourceId;return l&&this.sceneLighting.enable(l),ja(this,O.ContextCreated),R&&console.log(`Context Created...`,this.renderer,this.renderer.domElement),this._isCreating=!1,!this.isManagedExternally&&!t?.abortSignal?.aborted&&this.restartRenderLoop(),!0}rootSceneSourceIdentifiers=[];async internalLoadInitialContent(e,t){this.rootSceneSourceIdentifiers.length=0;let n=[];if(t.files.length===0)return n;let r=[...t.files];this.rootSceneSourceIdentifiers.push(...r);let i={name:``,progress:null,index:0,count:r.length},a=ba();for(let o=0;o{t.abortSignal?.aborted||(i.name=s,i.progress=e,i.index=o,i.count=r.length,t.onLoadingProgress?.call(this,i))});t?.onLoadingFinished?.call(this,o,s,c??null),c?n.push({src:s,file:c}):console.warn(`Could not load file: `+s)}if(e!==this._createId||t.abortSignal?.aborted){R&&console.log(`Aborting loading because create id changed or abort signal was set`,e,this._createId);for(let e of n)if(e&&e.file)for(let t of e.file.scenes)zf(t,!0,!0)}else{let e=!1;for(let t of n)t&&t.file&&(t.file.scene?(e=!0,this.scene.add(t.file.scene)):console.warn(`No scene found in loaded file`));if(!e){for(let e of n)if(e&&e.file&&`parser`in e.file){let t=0;if(!Array.isArray(e.file.parser.json.materials))continue;for(let n=0;n{this.isManagedExternally||this.update(e,t)}),!0):(console.error(`Can not start render loop without renderer`),!1)}_renderlooperrors=0;update(t,n){if(n===void 0&&(n=null),M()||R||$f())try{this.internalStep(t,n),this._renderlooperrors=0}catch(t){this._renderlooperrors+=1,(M()||R)&&(t instanceof Error||t instanceof TypeError)&&Ti(`Caught unhandled exception during render-loop - see console for details.`,{type:Tn.Error}),console.error(`Frame #`+this.time.frame+` +`,t),this._renderlooperrors>=3&&(console.warn(`Stopping render loop due to error`),this.renderer.setAnimationLoop(null),$a.sendError(e.Current,`renderloop`,t instanceof Error?t:Error(String(t)))),this.domElement.dispatchEvent(new CustomEvent(`error`,{detail:t}))}else this.internalStep(t,n)}updatePhysics(e){this.internalUpdatePhysics(e)}setCameraFocusRect(e,t){let n=this._focusRect;if(this._focusRect=e,t&&Object.assign(this.focusRectSettings,t),t?.damping===void 0&&n){let e=n;n instanceof HTMLElement&&(e=n.getBoundingClientRect()),e&&`top`in e&&e.bottom>=-100&&e.right>=-100&&e.top<=window.innerHeight+100&&e.left<=window.innerWidth+100&&(this.focusRectSettings.damping=.2)}}get focusRect(){return this._focusRect}get focusRectSize(){let e=this._focusRect;if(e&&(e instanceof DOMRect||`width`in e&&`height`in e&&`x`in e&&`y`in e))return{x:e.x,y:e.y,width:e.width,height:e.height};if(e instanceof HTMLElement){let t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}return null}focusRectSettings={damping:0,zoom:1,offsetX:0,offsetY:0};_focusRect=null;_lastTimestamp=0;_accumulatedTime=0;_dispatchReadyAfterFrame=!1;internalStep(e,t){this.internalOnBeforeRender(e,t)!==!1&&(this.internalOnRender(),this.internalOnAfterRender())}internalOnBeforeRender(t,n){this.renderer.info.autoReset=!!n,this.renderer.info.autoReset===!1&&this.renderer.info.reset(),this._needsVisibleUpdate=!0;let r=n!==null&&this._xrFrame===null;if(this._xrFrame=n,r&&this.domElement.dispatchEvent(new CustomEvent(`xr-session-started`,{detail:{context:this,session:this.xrSession,frame:n}})),this._currentFrameEvent=z.Undefined,this.isManagedExternally===!1&&this.isInXR===!1&&this.targetFrameRate!==void 0){this._lastTimestamp===0&&(this._lastTimestamp=t),this._accumulatedTime+=(t-this._lastTimestamp)/1e3,this._lastTimestamp=t;let e=this.targetFrameRate;if(typeof e==`object`&&(e=e.value),this._accumulatedTime<1/(e+1))return!1;this._accumulatedTime=0}if(this._stats?.begin(),e.Current=this,this.onHandlePaused())return!1;for(e.Current=this,this.time.update(),Su&&console.log(`FPS`,this.time.smoothedFps.toFixed(0)),ep(this),lp(this.scene),np(this),ja(this,z.Start);this._cameraStack.length>0&&(!this.mainCameraComponent||this.mainCameraComponent.destroyed);){this._cameraStack.splice(this._cameraStack.length-1,1);let e=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(e)}if(this.pre_update_oneshot_callbacks){for(let e in this.pre_update_oneshot_callbacks)this.pre_update_oneshot_callbacks[e]();this.pre_update_oneshot_callbacks.length=0}if(this.pre_update_callbacks)for(let e in this.pre_update_callbacks)this.pre_update_callbacks[e]();this._currentFrameEvent=z.EarlyUpdate;for(let t=0;t0&&this.internalUpdatePhysics(this.physicsSteps),this.isVisibleToUser||this.runInBackground){this._currentFrameEvent=z.OnBeforeRender;for(let t=0;t0?this.time.deltaTime/e.damping:1;mr(this._focusRect,this.focusRectSettings,t,this.mainCamera,this.renderer)}}return!0}internalUpdatePhysics(e){if(!this.physics.engine)return!1;let t=e,n=this.time.deltaTime/t;for(let e=0;e0){let e=i[i.length-1].next();if(e.done&&i.pop(),t(e)&&(r.chained||=[],r.chained.push(e.value)),!e.done)continue}let a=r.main.next();if(a.done===!0){n.splice(e,1),--e;continue}let o=a.value;if(t(o)){if(o.next().done)continue;r.chained||=[],r.chained.push(o)}else if(o instanceof Promise){let e=o;r.chained||=[];let t=Ws(e);r.chained?.push(t);continue}}catch(e){console.error(e)}}function t(e){return!!(e&&e.next&&e.return)}}},Du={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};async function Ou(e){let t=await fetch(e);if(t.ok)return t.json();throw Error(t.statusText)}async function ku(e){if(!e)throw Error(`No basePath supplied`);return await Ou(`${e}/profilesList.json`)}async function Au(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=await ku(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=await Ou(a.profilePath),s;if(r){let t;if(t=e.handedness===`any`?o.layouts[Object.keys(o.layouts)[0]]:o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}}var ju={xAxis:0,yAxis:0,button:0,state:Du.ComponentState.DEFAULT};function Mu(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Nu=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Du.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(ju)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Mu(e,t);switch(this.componentProperty){case Du.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case Du.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case Du.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case Du.ComponentProperty.STATE:this.valueNodeProperty===Du.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Pu=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Nu(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Du.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Du.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Du.ComponentState.PRESSED:(t.touched||this.values.button>Du.ButtonTouchThreshold)&&(this.values.state=Du.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Du.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Du.AxisTouchThreshold&&(this.values.state=Du.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Du.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Du.AxisTouchThreshold&&(this.values.state=Du.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Fu=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Pu(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},Iu=new ce().makeRotationY(Math.PI),Lu=new E().setFromAxisAngle(new o(0,1,0),Math.PI),Ru=A(`debugwebxr`),zu=class{priority=-1e5;gameObject;isXRRig(){return!0}get isActive(){return this.gameObject.visible}constructor(){if(this.gameObject=new S,this.gameObject.name=`Implicit XR Rig`,Ru){let e=Sd(16733661);e.position.y+=.5,this.gameObject.add(e)}}},Bu=A(`debugwebxr`),Vu=A(`debugcustomgesture`),Hu=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,Uu=`generic-trigger`,Wu=new E().setFromEuler(new He(g.degToRad(0),g.degToRad(-90),g.degToRad(-90))),Gu=new o(.04,-.04,0),Ku=class{xr;get context(){return this.xr.context}inputSource;index=0;emitEvents=!0;get connected(){return this._connected}_connected=!0;get isTracking(){return this._isTracking}_isTracking=!1;get gamepad(){return this.__gamepad??=this.inputSource.gamepad}__gamepad;get isHand(){return this.hand!=null}get hand(){return this.__hand??=this.inputSource.hand}__hand;get handObject(){return this.context.renderer.xr.getHand(this.index)}get profiles(){return this.inputSource.profiles}get layout(){return this._layout}get targetRayMode(){return this.inputSource.targetRayMode}get targetRaySpace(){return this.inputSource.targetRaySpace}get gripSpace(){return this.inputSource.gripSpace}get side(){return this.__side??=this.inputSource.handedness}__side=void 0;get isRight(){return this.side===`right`}get isLeft(){return this.side===`left`}get isStylus(){return this._isMxInk}getHitTestSource(){return this._hitTestSource||this._requestHitTestSource(),this._hitTestSource}get hasHitTestSource(){return this._hitTestSource}cancelHitTestSource(){this._hitTestSource&&=(this._hitTestSource.cancel(),void 0)}_hitTestSource=void 0;_hasSelectEvent=!1;get hasSelectEvent(){return this._hasSelectEvent}_isMxInk=!1;_isMetaQuestTouchController=!1;getHitTest(){return this.xr.getHitTest(this)}_handJointPoses=new Map;getHandJointPose(e,t){if(t||=this.xr.frame,!this.hand||!t?.getJointPose||!this.xr.referenceSpace)return null;let n=this._handJointPoses?.get(e);return n||(n=t.getJointPose(e,this.xr.referenceSpace),n&&this._handJointPoses.set(e,n),n)}_gripMatrix=new ce;_gripPosition=new o;_gripQuaternion=new E;_linearVelocity=new o;_rayPositionRaw=new o;_rayRotationRaw=new E;_rayMatrix=new ce;_rayPosition=new o;_rayQuaternion=new E;get gripPosition(){return P(this._gripPosition)}get gripQuaternion(){return Tr(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return P(this._linearVelocity).applyQuaternion(Lu)}get rayPosition(){return P(this._rayPosition)}get rayQuaternion(){return Tr(this._rayQuaternion)}get gripWorldPosition(){return P(this._gripWorldPosition)}_gripWorldPosition=new o;get gripWorldQuaternion(){return Tr(this._gripWorldQuaternion)}_gripWorldQuaternion=new E;get rayWorldPosition(){return P(this._rayWorldPosition)}_rayWorldPosition=new o;updateRayWorldPosition(){let e=this.xr.context.mainCamera?.parent;this._rayWorldPosition.copy(this._rayPositionRaw),e&&this._rayWorldPosition.applyMatrix4(e.matrixWorld)}get rayWorldQuaternion(){return Tr(this._rayWorldQuaternion)}_rayWorldQuaternion=new E;get pinchPosition(){return P(this._pinchPosition)}_pinchPosition=new o;updateRayWorldQuaternion(){let e=this.xr.context.mainCamera?.parent,t=e?Pr(e):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(Lu),t&&this._rayWorldQuaternion.premultiply(t)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy(P(0,0,1).applyQuaternion(this.rayWorldQuaternion)),this._ray}_ray;_hand_wristDotUp=void 0;get handWristDotUp(){if(this._hand_wristDotUp!==void 0)return this._hand_wristDotUp;let e=this.handObject?.joints.wrist;if(e){let t=P(0,1,0).applyQuaternion(e.quaternion);return this._hand_wristDotUp=P(0,1,0).dot(t)}}get isHandUpsideDown(){return this.handWristDotUp===void 0?!1:this.handWristDotUp<-.7}get isTeleportGesture(){return this.isHandUpsideDown&&this.getGesture(`pinch`)?.isDown}get object(){return this._object}_object;_gripSpaceObject;_raySpaceObject;model=null;_debugAxesHelper=new _e(.15);_debugGripAxesHelper=new _e(.07);_debugRayAxesHelper=new _e(.07);async getModelUrl(){return this.getMotionController?.then(e=>e?.assetUrl||null)}constructor(e,t,n){this.xr=e,this.inputSource=t,this.index=n,this._object=new S,this._object.name=`NeedleXRController_${n}`,Bu&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new S,this._raySpaceObject=new S,this._gripSpaceObject.name=`NeedleXRController_${n}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${n}_raySpace`,this._gripSpaceObject.add(this._debugGripAxesHelper),this._raySpaceObject.add(this._debugRayAxesHelper),this.xr.context.scene.add(this._gripSpaceObject),this.xr.context.scene.add(this._raySpaceObject)),this.xr.context.scene.add(this._object),this._ray=new p,this.pointerInit={origin:this,pointerType:this.hand?`hand`:`controller`,deviceIndex:this.index,pointerId:-1,mode:this.inputSource.targetRayMode,ray:this._ray,device:this._object,buttonName:`none`},this.initialize(),this.subscribeEvents()}_hitTestSourcePromise=null;_requestHitTestSource(){return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode===`immersive-ar`&&this.inputSource.targetRayMode===`tracked-pointer`&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay})?.then(e=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=e:(e.cancel(),null)))??null:null}onPointerHits=e=>{};onUpdate(e){this.onUpdateFrame(e),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){H.DrawSphere(this.rayWorldPosition,.003),H.DrawDirection(this.rayWorldPosition,P(0,0,10).applyQuaternion(this.rayWorldQuaternion));let e=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),t=this.inputSource.profiles.join(` +`),n=`Controller[${this.index}] (${this.inputSource.targetRayMode}, ${this.side}) +C:${this.connected?`x`:`-`} T:${this.isTracking?`x`:`-`} Hand:${this.inputSource.hand?`x`:`-`} Pen: ${this._isMxInk?`x`:`-`}`;if(this.inputSource.hand&&(n+=`\nPinch: ${this.getGesture(`pinch`)?.value.toFixed(3)}`),n+=` +`+t,n+=` +`+(this.inputSource.targetRaySpace?`Ray: x`:`Ray: -`)+(this.inputSource.gripSpace?` Grip: x`:` Grip: -`)+(this.inputSource.gamepad?` Gamepad: ${this.inputSource.gamepad.mapping}`:` Gamepad: -`),this.inputSource.gamepad){let e=this.inputSource.gamepad,t=`[btns `+e.buttons.length+`]: `+e.buttons.map(e=>e.value.toPrecision(1)).join(`,`);t+=` +[axes `+e.axes.length+`]: `+e.axes.map(e=>e.toPrecision(1)).join(`,`),n+=` +`+t}if(this._layout){n+=` +Layout: `;for(let e of Object.keys(this._layout.components||{})){let t=this.getStick(e),r=this._layout.components[e]?.gamepadIndices,i=r?Object.entries(r).map(e=>e[0][0].toUpperCase()+e[0].slice(1)+`=`+e[1]).join(`,`):``;n+=`\n ${e}: ${this._layout.components[e]?.type} [${i}] (${t.x.toPrecision(2)},${t.y.toPrecision(2)})`}}H.DrawLabel(e,n,.006)}onUpdateFrame(e){if(this._handJointPoses.clear(),this._hand_wristDotUp=void 0,!this.xr.referenceSpace||!this.inputSource.gamepad?.connected){this._isTracking=!1;return}let t=e.getPose(this.inputSource.targetRaySpace,this.xr.referenceSpace);this._isTracking=t!=null;let n=null,r=null,i=null,a=null;if(t){let e=t.transform;this._rayMatrix.fromArray(e.matrix).premultiply(Iu),this._rayMatrix.decompose(this._rayPosition,this._rayQuaternion,P(1,1,1)),i=P(e.position),a=Tr(e.orientation),this._rayPositionRaw.copy(i),this._rayRotationRaw.copy(a)}if(this.inputSource.gripSpace){let t=e.getPose(this.inputSource.gripSpace,this.xr.referenceSpace);if(t){let e=t.transform;if(n=P(e.position),r=Tr(e.orientation),this._gripMatrix.fromArray(e.matrix).premultiply(Iu),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,P(1,1,1)),`linearVelocity`in t&&t.linearVelocity){let e=t.linearVelocity;this._linearVelocity.set(e.x,e.y,e.z)}}}this.xr.context.mainCamera?.parent&&(this._object.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._object),this._gripSpaceObject!==void 0&&this._gripSpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._gripSpaceObject),this._raySpaceObject!==void 0&&this._raySpaceObject?.parent!==this.xr.context.mainCamera?.parent&&this.xr.context.mainCamera.parent.add(this._raySpaceObject));let o=this.hand;if(o){let t=!1,i=o.get(`wrist`),a=i&&this.getHandJointPose(i,e);if(a){t=!0;let e=a.transform.position,n=a.transform.orientation;this._object.position.set(e.x,e.y,e.z),this._object.quaternion.set(n.x,n.y,n.z,n.w).multiply(Lu)}t||(this._object.position.copy(this._rayPosition),this._object.quaternion.copy(this._rayQuaternion).multiply(Lu));let s=o.get(`middle-finger-metacarpal`),c=s&&this.getHandJointPose(s,e);c&&(this._gripMatrix.fromArray(c.transform.matrix).premultiply(Iu),this._gripMatrix.decompose(this._gripPosition,this._gripQuaternion,P(1,1,1)),n=P().copy(c.transform.position),r=Tr().copy(c.transform.orientation),r.multiply(Wu),n.add(P(Gu).applyQuaternion(r)))}else this.inputSource.gripSpace&&this.targetRayMode===`transient-pointer`&&n&&r?(this._object.position.copy(n),this._object.quaternion.copy(r).multiply(Lu)):i&&a&&(this._object.position.copy(i),this._object.quaternion.copy(a).multiply(Lu));Bu&&(i&&a&&(this._raySpaceObject?.position.copy(i),this._raySpaceObject?.quaternion.copy(a).multiply(Lu)),n&&r&&(this._gripSpaceObject?.position.copy(n),this._gripSpaceObject?.quaternion.copy(r).multiply(Lu)));let s=this.xr.context.mainCamera?.parent,c=s?Pr(s):void 0;n&&r&&(this._gripWorldPosition.copy(n),s&&this._gripWorldPosition.applyMatrix4(s.matrixWorld),this._gripWorldQuaternion.copy(r),this._gripWorldQuaternion.multiply(Lu),c&&this._gripWorldQuaternion.premultiply(c)),this.updateRayWorldPosition(),this.updateRayWorldQuaternion()}onDisconnected(){this._connected=!1,Bu&&console.warn(`Controller disconnected`,this.index);for(let e of this._object.children)this.xr.context.scene.attach(e);this._object?.removeFromParent(),this._debugAxesHelper?.removeFromParent(),this._debugGripAxesHelper?.removeFromParent(),this._debugRayAxesHelper?.removeFromParent(),this._gripSpaceObject?.removeFromParent(),this._raySpaceObject?.removeFromParent(),this.unsubscribeEvents(),this._hitTestSource&&=(this._hitTestSource.cancel(),void 0)}getButton(e){if(!this._layout)return;switch(e){case`primary-button`:if(this.isLeft)e=`x-button`;else if(this.isRight)e=`a-button`;else return;break;case`primary`:return this.hand?this.getGesture(`pinch`):this.toNeedleGamepadButton(0,e);case`xr-standard-trigger`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(0,e);break;case`xr-standard-squeeze`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(1,e);break;case`xr-standard-thumbstick`:if(this.inputSource.gamepad)return this.toNeedleGamepadButton(3,e);break}if(this._buttonMap.has(e))return this.toNeedleGamepadButton(this._buttonMap.get(e),e);let t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case`button`:case`squeeze`:if(this.inputSource.gamepad){let n=t.gamepadIndices.button;return this._buttonMap.set(e,n),this.toNeedleGamepadButton(n,e)}break;default:console.warn(`Unsupported component type`,t.type);break}this._buttonMap.set(e,void 0)}getGesture(e){let t=this.states[e];if(!t)return null;this.states[e]=t;let n=this._needleGamepadButtons[e]||new Ju(void 0,e);return n.pressed=t.pressed,n.value=t.value,n.isDown=t.isDown,n.isUp=t.isUp,this._needleGamepadButtons[e]=n,n}getPointerId(e){if((e===`primary`||e===`pinch`)&&(e=0),typeof e!=`number`){let t=this._buttonMap.get(e);if(t===void 0)return;e=t}return this.index*10+e}_needleGamepadButtons={};toNeedleGamepadButton(e,t){if(!this.inputSource.gamepad?.buttons)return;let n=this.inputSource.gamepad?.buttons[e],r=this.states[e],i=this._needleGamepadButtons[e]||new Ju(e,t);return n&&(i.pressed=n.pressed,i.value=n.value,i.touched=n.touched),r&&(i.isDown=r.isDown,i.isUp=r.isUp),this._needleGamepadButtons[e]=i,i}getStick(e){if(!this._layout||this.isHand)return{x:0,y:0,z:0};e===`primary`&&this._layout.components[`xr-standard-thumbstick`]&&(e=`xr-standard-thumbstick`);let t=this._layout?.components[e];if(t?.gamepadIndices)switch(t.type){case`thumbstick`:case`touchpad`:if(this.inputSource.gamepad){let e=t.gamepadIndices.xAxis,n=t.gamepadIndices.yAxis,r=this.inputSource.gamepad.axes[e]||0,i=this.inputSource.gamepad.axes[n]||0;r*=-1,i*=-1;let a=t.gamepadIndices.button,o=this.inputSource.gamepad?.buttons[a]?.value||0;return{x:r,y:i,z:o}}}return{x:0,y:0,z:0}}_buttonMap=new Map;_motioncontroller;_layout;getMotionController;initialize(){if(this._hasSelectEvent=this.profiles.includes(`generic-hand-select`)||this.profiles.some(e=>e.startsWith(`generic-trigger`)),this._isMetaQuestTouchController=this.profiles.includes(`meta-quest-touch-plus`)||this.profiles.includes(`oculus-touch-v3`),this._isMxInk=this.profiles.includes(`logitech-mx-ink`),!this._layout){if(this.inputSource.targetRayMode===`transient-pointer`)return;this.getMotionController=Au(this.inputSource,Hu,Uu).then(e=>{if(!this.connected)return null;if(this._motioncontroller=new Fu(this.inputSource,e.profile,e.assetPath||``),this._layout=e.profile.layouts[this.inputSource.handedness],this._layout){if(!this._layout.gamepad?.length){this._layout.gamepad=[];for(let e in this._layout.components){let t=this._layout.components[e];this._layout.gamepad[t.gamepadIndices.button]=e}}this.profiles.length>=1&&this.profiles[0]===`htc-vive-focus-plus`&&this.inputSource.gamepad&&this.inputSource.gamepad.axes.length===4&&!this._layout.components[`xr-standard-thumbstick`]&&(this._layout.components[`xr-standard-thumbstick`]={type:`thumbstick`,gamepadIndices:{xAxis:2,yAxis:3}})}return this._motioncontroller}).catch(e=>(this.inputSource&&console.warn(`Couldn't initialize motion controller profile for `,this.inputSource,e),null))}}emitPointerDownEvent=!0;emitPointerUpEvent=!0;emitPointerMoveEvent=!0;pointerMoveDistanceThreshold=.03;pointerMoveAngleThreshold=.05;subscribeEvents(){this.xr.session.addEventListener(`selectstart`,this.onSelectStart),this.xr.session.addEventListener(`selectend`,this.onSelectEnd),this.xr.session.addEventListener(`squeezestart`,this.onSequeezeStart),this.xr.session.addEventListener(`squeezeend`,this.onSequeezeEnd)}unsubscribeEvents(){this.xr.session.removeEventListener(`selectstart`,this.onSelectStart),this.xr.session.removeEventListener(`selectend`,this.onSelectEnd),this.xr.session.removeEventListener(`squeezestart`,this.onSequeezeStart),this.xr.session.removeEventListener(`squeezeend`,this.onSequeezeEnd)}_selectButtonIndex=void 0;_squeezeButtonIndex=void 0;onSelectStart=e=>{if(!this.emitPointerDownEvent||this.inputSource!==e.inputSource)return;this.onUpdateFrame(e.frame),this._hasSelectEvent=!0;let t=this._layout?.selectComponentId,n=this._layout?.components[t]?.gamepadIndices?.button;n!==void 0&&(this._selectButtonIndex=n),!Vu&&(Bu&&H.DrawDirection(this.rayWorldPosition,P(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(L.PointerDown,this._selectButtonIndex||0,`xr-standard-trigger`,!0,e))};onSelectEnd=e=>{this.emitPointerUpEvent&&(Vu||this.inputSource===e.inputSource&&this.emitPointerEvent(L.PointerUp,this._selectButtonIndex||0,`xr-standard-trigger`,!0,e))};onSequeezeStart=e=>{this.emitPointerDownEvent&&this.inputSource===e.inputSource&&(this._squeezeButtonIndex=this._layout?.components[`xr-standard-squeeze`]?.gamepadIndices?.button,this._squeezeButtonIndex!==void 0&&(Bu&&H.DrawDirection(this.rayWorldPosition,P(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(L.PointerDown,this._squeezeButtonIndex||0,`xr-standard-squeeze`,!0,e)))};onSequeezeEnd=e=>{this.emitPointerUpEvent&&this.inputSource===e.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(L.PointerUp,this._squeezeButtonIndex||0,`xr-standard-squeeze`,!0,e)};states={};updateInputEvents(){if(this.gamepad?.buttons){for(let e=0;e0&&!n.pressed?(r=`pointerdown`,n.isDown=!0,n.isUp=!1):t.value===0&&n.pressed?(r=`pointerup`,n.isDown=!1,n.isUp=!0):n.pressed&&(r=`pointermove`,n.isDown=!1,n.isUp=!1),n.pressed=t.value>0,n.value=t.value):(t.pressed&&!n.pressed?(r=`pointerdown`,n.isDown=!0,n.isUp=!1):!t.pressed&&n.pressed?(r=`pointerup`,n.isDown=!1,n.isUp=!0):(n.isDown=!1,n.isUp=!1),n.pressed=t.pressed,n.value=t.value),this.states[e]=n;let i=e!==this._selectButtonIndex&&e!==this._squeezeButtonIndex;if(r!=null&&i){let n=this._layout?.gamepad[e];this._isMxInk&&e===4&&(n=`stylus-touch`),this._isMxInk&&e===5&&(n=`stylus-tip`),(Bu||Vu)&&console.log(`Emitting pointer event`,r,e,n,t.value,this.gamepad,this._layout),this.emitPointerEvent(r,e,n??`none`,!1,null,t.value)}}if(this._isMetaQuestTouchController){let e=this.gamepad.buttons.length-1,t=this.states[e];if(t&&t.isDown){let e=this.context.menu;e.spatialMenuIsVisible?e.setSpatialMenuVisible(!1):this.context.menu.setSpatialMenuVisible(!0)}}}if(this.hand){let e=this.handObject;if(e){let t=e.joints[`index-finger-tip`],n=e.joints[`thumb-tip`];if(t&&n){let e=t.position.distanceTo(n.position);this._pinchPosition.lerpVectors(t.position,n.position,.5);let r=this.xr.context.mainCamera?.parent;if(r&&this._pinchPosition.applyMatrix4(r.matrixWorld),e!==0){let t=.02,n=.01,r=this.states.pinch||new qu,i=(t+n)*1.5;r.value=1-(e-t)/i;let a=et+n;a&&!r.pressed?(Vu&&console.log(`pinch start`,e),r.isDown=!0,r.isUp=!1,r.pressed=!0):o&&r.pressed?(r.isDown=!1,r.isUp=!0,r.pressed=!1):(r.isDown=!1,r.isUp=!1),this.states.pinch=r}}}}}_didMoveLastFrame=!1;_lastPointerMovePosition=new o;_lastPointerMoveQuaternion=new E;onUpdateMove(){if(!this.emitPointerMoveEvent)return;let e=!1;if(this._lastPointerMovePosition.distanceTo(this.gripWorldPosition)>this.pointerMoveDistanceThreshold*this.xr.rigScale&&(e=!0),e||this._lastPointerMoveQuaternion.angleTo(this.gripWorldQuaternion)>this.pointerMoveAngleThreshold&&(e=!0),e){this._didMoveLastFrame=!0,this._lastPointerMovePosition.copy(this.gripWorldPosition),this._lastPointerMoveQuaternion.copy(this.gripWorldQuaternion),Bu&&H.DrawLabel(this.rayWorldPosition.add(this.object.worldForward.multiplyScalar(.1)),`move`,.01);let e=this.xr.context.input.getFirstPressedButtonForPointer(this.index);e===void 0&&(e=0);let t=this.gamepad?.buttons[e]?.value;this.emitPointerEvent(`pointermove`,e,`none`,!1,null,t)}else this._didMoveLastFrame=!1}pointerInit;emitPointerEvent(e,t,n,r,i=null,a){if(!this.emitEvents){Bu&&e!==L.PointerMove&&console.warn(`Pointer events are disabled for this controller`,this.index,e,t);return}if(this.xr.mode===`immersive-vr`||this.xr.isPassThrough){this.pointerInit.origin=this,this.pointerInit.pointerId=this.getPointerId(t),this.pointerInit.pointerType=this.hand?`hand`:`controller`,this.pointerInit.button=t,this.pointerInit.buttonName=n,this.pointerInit.isPrimary=r,this.pointerInit.mode=this.inputSource.targetRayMode,this.pointerInit.ray=this.ray,this.pointerInit.device=this.object,this.pointerInit.pressure=a,this.pointerInit.clientX=this._rayPosition.x/this.xr.rigScale,this.pointerInit.clientY=this._rayPosition.y/this.xr.rigScale,this.pointerInit.clientZ=this._rayPosition.z/this.xr.rigScale;let o=B.Current;B.Current=this.xr.context,Bu&&e!==`pointermove`&&console.warn(`Pointer event`,e,t,n,{...this.pointerInit}),this.xr.context.input.createInputEvent(new ic(e,i,this.pointerInit)),B.Current=o}}},qu=class{isDown=!1;isUp=!1;pressed=!1;value=0},Ju=class{index;name;touched=!1;pressed=!1;value=0;isDown=!1;isUp=!1;constructor(e,t){this.index=e,this.name=t}},Yu=A(`debugwebxr`),Xu=class{controllerStates=[];userId;context;userStateEvtName;constructor(e,t){this.userId=e,this.context=t,this.userStateEvtName=`xr-sync-user-state-`+e,this.context.connection.beginListen(this.userStateEvtName,this.onReceivedControllerState)}dispose(){this.context.connection.stopListen(this.userStateEvtName,this.onReceivedControllerState)}onReceivedControllerState=e=>{Yu&&console.log(`XRSync: Received change for ${this.userId}: ${e.type} ${e.handedness}; tracked=${e.isTracking}`);let t=!1;for(let n=0;n=0;t--){let n=this.controllerStates[t],r=!1;for(let t=0;tt.index===e.index);if(t){let n=!1;n||=t.isTracking!=e.isTracking,n&&(t.isTracking=e.isTracking,this.context.connection.send(this.userStateEvtName,t))}else{let t={guid:this.userId+`-`+e.index,isTracking:e.isTracking,handedness:e.side,index:e.index,type:e.hand?`hand`:`controller`};this.controllerStates.push(t),this.context.connection.send(this.userStateEvtName,t),Yu&&console.log(`XRSync: ${t.type} ${t.handedness} added`,t.index)}}},Zu=class{hasState(e){return e?this._states.has(e):!1}isTracking(e,t){if(!e)return;let n=this._states.get(e);if(n)return n.controllerStates.find(e=>e.handedness===t)?.isTracking||!1}getDeviceType(e,t){if(!e)return;let n=this._states.get(e);if(n)return n.controllerStates.find(e=>e.handedness===t)?.type||`unknown`}context;constructor(e){this.context=e,this.context.connection.beginListen(Xc.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(Xc.LeftRoom,this.onLeftRoom),this.context.connection.beginListen(Xc.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.beginListen(Xc.UserLeftRoom,this.onOtherUserLeftRoom)}destroy(){this.context.connection.stopListen(Xc.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(Xc.LeftRoom,this.onLeftRoom),this.context.connection.stopListen(Xc.UserJoinedRoom,this.onOtherUserJoinedRoom),this.context.connection.stopListen(Xc.UserLeftRoom,this.onOtherUserLeftRoom)}onJoinedRoom=()=>{if(this.context.connection.connectionId){this._states.has(this.context.connection.connectionId)||(Yu&&console.log(`XRSync: Local user joined room`,this.context.connection.connectionId),this._states.set(this.context.connection.connectionId,new Xu(this.context.connection.connectionId,this.context)));for(let e of this.context.connection.usersInRoom())this._states.has(e)||this._states.set(e,new Xu(e,this.context))}};onLeftRoom=()=>{this.context.connection.connectionId&&(this._states.has(this.context.connection.connectionId)||(this._states.get(this.context.connection.connectionId)?.dispose(),this._states.delete(this.context.connection.connectionId)))};onOtherUserJoinedRoom=e=>{let t=e.userId;this._states.has(t)||(Yu&&console.log(`XRSync: Remote user joined room`,t),this._states.set(t,new Xu(t,this.context)))};onOtherUserLeftRoom=e=>{let t=e.userId;this._states.has(t)||(this._states.get(t)?.dispose(),this._states.delete(t))};_states=new Map;onUpdate(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.update(e)}onExitXR(e){this.context.connection.isConnected&&this.context.connection.connectionId&&this._states.get(this.context.connection.connectionId)?.onExitXR(e)}},Qu=class{_fadeToColorQuad;_fadeToColorMaterial;constructor(){this._fadeToColorMaterial=new re({color:0,transparent:!0,depthTest:!1,fog:!1,side:2}),this._fadeToColorQuad=new x(new Ke(10,10),this._fadeToColorMaterial)}dispose(){this._fadeToColorQuad.geometry.dispose(),this._fadeToColorMaterial.dispose()}update(e,t){let n=this._fadeToColorQuad,r=this._fadeToColorMaterial;n.parent!==e&&r.opacity>0?e.add(n):r.opacity===0&&n.removeFromParent(),n.layers.set(2),n.material=this._fadeToColorMaterial,n.position.z=-1,n.renderOrder=1/0;let i=this._requestedFadeValue;r.opacity=N.lerp(r.opacity,i,t/.03),Math.abs(r.opacity-i)<=.01&&this._transitionResolve&&(this._transitionResolve(),this._transitionResolve=null,this._transitionPromise=null,this._requestedFadeValue=0)}remove(){this._fadeToColorQuad.removeFromParent()}fadeTransition(){if(this._transitionPromise)return this._transitionPromise;this._requestedFadeValue=1;let e=new Promise(e=>{this._transitionResolve=e});return this._transitionPromise=e,e}_requestedFadeValue=0;_transitionPromise=null;_transitionResolve=null},$u=class e{static _active=null;static get active(){return this._active}static _requestInFlight=!1;static async start(t,n){if(this._active)return console.error(`Cannot start a new XR session while one is already active`),null;if(this._requestInFlight)return console.error(`Cannot start a new XR session while a request is already in flight`),null;if(`xr`in navigator&&navigator.xr){if(!n)return console.error(`XRSessionInit must be provided`),null;this._requestInFlight=!0;let r=await navigator.xr.requestSession(t,n).catch(e=>{console.error(`Failed to start temporary XR session:`,e)});return r?(r.addEventListener(`end`,()=>{this._active=null}),this._requestInFlight?(this._requestInFlight=!1,this._active=new e(t,n,r),this._active):(r.end(),null)):(this._requestInFlight=!1,null)}return null}static async handoff(){return this._active?this._active.handoff():null}static async stop(){this._requestInFlight=!1,this._active&&(await this._active.end(),await Kt(100)),this._active=null}_session;_mode;_init;get isAR(){return this._mode===`immersive-ar`}get isVR(){return this._mode===`immersive-vr`}_renderer;_camera;_scene;constructor(e,t,n){this._mode=e,this._init=t,this._session=n,this._session.addEventListener(`end`,this.onEnd),this._renderer=new h({alpha:!0,antialias:!0}),this._renderer.outputColorSpace=`srgb`,this._renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),this._renderer.setSize(window.innerWidth,window.innerHeight,!0),j.isNeedleAppClip()&&window.requestAnimationFrame(()=>{let e=Math.min(2,window.devicePixelRatio),t=Math.floor(window.innerWidth*e),n=Math.floor(window.innerHeight*e);this._renderer.domElement.width=t,this._renderer.domElement.height=n}),this._renderer.setAnimationLoop(this.onFrame),this._renderer.xr.setSession(n),this._renderer.xr.enabled=!0,this._camera=new C,this._scene=new ne,this._scene.fog=new Be(4473924,10,250),this._scene.add(this._camera),this.setupScene()}end(){return this._session?this._session.end():Promise.resolve()}async handoff(){if(!this._session)throw Error(`Cannot handoff a session that has already ended`);let e={session:this._session,mode:this._mode,init:this._init};return await this.onBeforeHandoff(),this.onEnd(),this._session=null,e}onEnd=()=>{this._session?.removeEventListener(`end`,this.onEnd),this._renderer.setAnimationLoop(null),this._renderer.dispose(),this._scene.clear()};_lastTime=0;_frames=0;onFrame=(e,t)=>{let n=e-this._lastTime;this.update(e,n),this._camera.parent!==this._scene&&this._scene.add(this._camera),this._renderer.render(this._scene,this._camera),this._lastTime=e,this._frames++};_roomFlyObjects=[];_logoObject=null;get _logoDistance(){return this.isAR?.3:5}get _logoScale(){return this.isAR?.04:1}update(e,t){let n=e*4e-4;for(let e=0;e{if(!r)return;t.material.opacity=1;let a=1024;n.width=a,n.height=a,r.imageSmoothingQuality=`high`;let o=a*.19,s=e?1:i.width/i.height;if(!e){let e=n.height-o*1.5,t=e*s,a=(n.width-t)/2;r.drawImage(i,a,0,t,e)}let c=a*.12,l=`Loading...`;r.shadowBlur=0,r.fillStyle=this.isAR?`white`:`rgba(255,255,255,0.4)`,r.font=`${c}px Arial`,r.shadowBlur=a*.02,r.shadowColor=`rgba(0,0,0,0.5)`,r.shadowOffsetX=0,r.shadowOffsetY=0;let u=r.measureText(l);r.fillText(l,n.width/2-u.width/2,n.height-o/4),r.font=`${c}px Arial`,r.fillText(l,n.width/2-u.width/2,n.height-o/4);let d=new me().load(n.toDataURL());d.generateMipmaps=!0,d.colorSpace=`srgb`,d.anisotropy=4;let f=n.width/n.height;t.scale.x=this._logoScale*f*window.devicePixelRatio,t.scale.y=this._logoScale*window.devicePixelRatio,t.material.map=d,t.material.needsUpdate=!0};i.onload=()=>o(!1),i.onerror=t=>{console.error(`Failed to load temporary XR logo:`,e,t),i.src=Wl},i.crossOrigin=`anonymous`,i.src=e;let s=new ue(16777215,1);s.position.set(0,20,0),s.castShadow=!1,this._scene.add(s);let c=new ue(16777215,1);c.position.set(0,-1,0),c.castShadow=!1,this._scene.add(c);let l=new Ze(16777215,1,100,1);if(l.position.set(0,2,0),l.castShadow=!1,l.distance=200,this._scene.add(l),this.isAR===!1)for(let e=0;e<100;e++){let e=new Ce({color:2236962,metalness:1,roughness:.8}),t=Gs.Sphere,n=Ks.createPrimitive(t,{material:e});n.position.x=N.random(-50,50),n.position.y=N.random(-2,50),n.position.z=N.random(-50,50),n.rotation.x=N.random(0,Math.PI*2),n.rotation.y=N.random(0,Math.PI*2),n.rotation.z=N.random(0,Math.PI*2),n.scale.multiplyScalar(.5+Math.random()*10);let r=n.position.distanceTo(this._camera.position)-n.scale.x;r<10&&(n.position.z+=5,n.position.multiplyScalar(1+1/r)),this._roomFlyObjects.push(n),this._scene.add(n)}}},ed;(function(e){let t=[];function n(){t?.length||M()&&console.warn(`No USDZ exporters found – cannot export USDZ for QuickLook.`);for(let e of t)e.exportAndOpen();return!0}e.exportAndOpen=n;function r(e){t.push(e)}e.registerExporter=r;function i(e){if(!t)return;let n=t.indexOf(e);n>=0&&t.splice(n,1)}e.unregisterExporter=i})(ed||={});var V=A(`debugwebxr`),td=A(`stats`),nd=0;function rd(e){let t=null,n=e;return t=n.getAROverlayContainer?n.getAROverlayContainer():e,t}id();async function id(){let e=`immersive-vr`;try{if(j.isNeedleAppClip()?e=`immersive-ar`:await navigator.xr?.isSessionSupported(`immersive-vr`)||(e=`immersive-ar`),!await navigator.xr?.isSessionSupported(`immersive-ar`)&&e===`immersive-ar`)return}catch(e){console.debug(`[NeedleXRSession:granted] Error while checking XR support:`,e);return}if(A(`debugasap`)){let t=globalThis[`needle:XRSession`];if(t instanceof Promise){delete globalThis[`needle:XRSession`],k.addContextCreatedCallback(async n=>{if(!t)return;_i(!0);let r=await t;if(r){let t=pd.getDefaultSessionInit(e);pd.setSession(e,r,t,n.context)}else console.error(`[NeedleXRSession:granted] ASAP session was rejected`);t=void 0});return}}if(`xr`in navigator){if(/WebXRViewer\//i.test(navigator.userAgent)){console.warn(`WebXRViewer does not support addEventListener`);return}navigator.xr?.addEventListener(`sessiongranted`,async()=>{let t=sessionStorage.getItem(`needle_xr_session_mode`),n=sessionStorage.getItem(`needle_xr_session_init`)??null,r=n?JSON.parse(n):null,i=null;if(cd()&&(await $u.start(t||e,r||pd.getDefaultSessionInit(e)).catch(e=>console.warn(`[NeedleXRSession:granted] TemporaryXRContext start failed:`,e)),await ld(),i=await $u.handoff()),i)pd.setSession(i.mode,i.session,i.init,B.Current);else if(t&&n){console.log(`[NeedleXRSession:granted] Restore last session`);let e=JSON.parse(n);pd.start(t,e).catch(e=>console.warn(e))}else pd.start(e).catch(e=>console.warn(`[NeedleXRSession:granted] failed:`,e))},{once:!0})}}function ad(e,t){sessionStorage.setItem(`needle_xr_session_mode`,e),sessionStorage.setItem(`needle_xr_session_init`,JSON.stringify(t))}function od(){sessionStorage.removeItem(`needle_xr_session_mode`),sessionStorage.removeItem(`needle_xr_session_init`)}var sd=new Set;k.registerCallback(O.ContextCreationStart,async e=>{sd.add(e.context)}),k.registerCallback(O.ContextCreated,async e=>{sd.delete(e.context),ud(e.context?.domElement.getAttribute(`autostart`)||null)});function cd(){return sd.size>0}function ld(){return new Promise(e=>{let t=Date.now(),n=setInterval(()=>{(!cd()||Date.now()-t>6e4)&&(clearInterval(n),e())},100)})}j.isDesktop()&&M()&&window.addEventListener(`keydown`,e=>{(e.key===`x`||e.key===`Escape`)&&pd.active&&pd.stop()});function ud(e){if(e)switch(e?.toLowerCase()){case`ar`:Vs.registerWaitForInteraction(()=>{pd.start(`ar`)});break}}var dd=Symbol(`initial-fov`),fd=Symbol(`initial-near`),pd=class e{static _sync=null;static getXRSync(e){return this._sync||=new Zu(e),this._sync}static get currentSessionRequest(){return this._currentSessionRequestMode}static _currentSessionRequestMode=null;static get active(){return this._activeSession}static get activeMode(){return this._activeSession?.mode??null}static get xrSystem(){return`xr`in navigator?navigator.xr:void 0}static isXRSupported(){return Promise.all([this.isVRSupported(),this.isARSupported()]).then(e=>e.some(e=>e)).catch(()=>!1)}static isVRSupported(){return this.isSessionSupported(`immersive-vr`)}static isARSupported(){return this.isSessionSupported(`immersive-ar`)}static isSessionSupported(e){return this.xrSystem?.isSessionSupported(e).catch(e=>(V&&console.error(e),!1))??Promise.resolve(!1)}static _currentSessionRequest;static _activeSession;static onSessionRequestStart(e){this._sessionRequestStartListeners.push(e)}static offSessionRequestStart(e){let t=this._sessionRequestStartListeners.indexOf(e);t>=0&&this._sessionRequestStartListeners.splice(t,1)}static _sessionRequestStartListeners=[];static onSessionRequestEnd(e){this._sessionRequestEndListeners.push(e)}static offSessionRequestEnd(e){let t=this._sessionRequestEndListeners.indexOf(e);t>=0&&this._sessionRequestEndListeners.splice(t,1)}static _sessionRequestEndListeners=[];static onXRSessionStart(e){this._xrStartListeners.push(e)}static offXRSessionStart(e){let t=this._xrStartListeners.indexOf(e);t>=0&&this._xrStartListeners.splice(t,1)}static _xrStartListeners=[];static onXRSessionEnd(e){this._xrEndListeners.push(e)}static offXRSessionEnd(e){let t=this._xrEndListeners.indexOf(e);t>=0&&this._xrEndListeners.splice(t,1)}static _xrEndListeners=[];static onControllerAdded(e){this._controllerAddedListeners.push(e)}static offControllerAdded(e){let t=this._controllerAddedListeners.indexOf(e);t>=0&&this._controllerAddedListeners.splice(t,1)}static _controllerAddedListeners=[];static onControllerRemoved(e){this._controllerRemovedListeners.push(e)}static offControllerRemoved(e){let t=this._controllerRemovedListeners.indexOf(e);t>=0&&this._controllerRemovedListeners.splice(t,1)}static _controllerRemovedListeners=[];static offerSession(t,n,r){return`xr`in navigator&&navigator.xr&&`offerSession`in navigator.xr?(typeof navigator.xr.offerSession==`function`&&(console.log(`WebXR offerSession is available - requesting mode: `+t),n==`default`&&(n=this.getDefaultSessionInit(t)),navigator.xr.offerSession(t,{...n}).then(i=>e.setSession(t,i,n,r)).catch(e=>{console.log(`XRSession offer rejected (perhaps because another call to offerSession was made or a call to requestSession was made)`)})),!0):!1}static getDefaultSessionInit(e){switch(e){case`immersive-ar`:let t=[`anchors`,`local-floor`,`layers`,`dom-overlay`,`hit-test`,`unbounded`];return j.isVisionOS()||t.push(`hand-tracking`),{optionalFeatures:t};case`immersive-vr`:let n=[`local-floor`,`bounded-floor`,`high-fixed-foveation-level`,`layers`];return j.isVisionOS()||n.push(`hand-tracking`),{optionalFeatures:n};default:return console.warn(`No default session init for mode`,e),{}}}static async start(t,n,r){if(n||={},j.isiOS()){let e=await this.isARSupported().catch(()=>!1);if(j.isVisionOS()&&!e&&(t===`ar`||t===`immersive-ar`)&&(t=`quicklook`),t===`quicklook`)return $a.sendEvent(B.Current,`xr`,{action:`quicklook_export`,source:`NeedleXRSession.start`}),ed.exportAndOpen(),null;if(!e&&(t===`immersive-ar`||t===`ar`)){this.invokeSessionRequestStart(`immersive-ar`,n);let e=new URL(`https://appclip.apple.com/id?p=tools.needle.launch-app.Clip`);e.searchParams.set(`url`,location.href);let r=e.toString();$a.sendEvent(B.Current,`xr`,{action:`app_clip_launch`,source:`NeedleXRSession.start`,url:r});let i=window.top||window;try{console.debug(`iOS device detected - opening Needle App Clip for AR experience`,{mode:t,init:n,url:e}),i.location.href=r}catch(e){console.warn(`Error navigating to AppClip `+r+` +`,e),window===window.top?window.location.href=r:window.open(r,`_blank`)}return setTimeout(()=>{this.invokeSessionRequestEnd(`immersive-ar`,n||{},null)},3e3),null}}if(t===`quicklook`)return console.warn(`QuickLook mode is only supported on iOS devices`),null;if(t==`ar`&&(t=`immersive-ar`),M()&&A(`debugxrpreroom`))return console.warn(`Debug: Starting temporary XR session`),await $u.start(t,n||e.getDefaultSessionInit(t)),null;if(this._currentSessionRequest)return console.warn(`A XRSession is already being requested`),(V||M())&&Ei(`A XRSession is already being requested`),this._currentSessionRequest.then(()=>this._activeSession);if(this._activeSession)return console.error(`A XRSession is already running`),this._activeSession;if(r||=B.Current,r||=k.All[0],!r)throw Error(`No Needle Engine Context found`);switch(t){case`immersive-ar`:{if(await this.xrSystem?.isSessionSupported(`immersive-ar`)!==!0)return console.error(t+` is not supported by this browser.`),null;let e=this.getDefaultSessionInit(t),i=rd(r.domElement);i&&!j.isQuest()&&(e.domOverlay={root:i},e.optionalFeatures.push(`dom-overlay`)),n={...e,...n}}break;case`immersive-vr`:if(await this.xrSystem?.isSessionSupported(`immersive-vr`)!==!0)return console.error(t+` is not supported by this browser.`),null;n={...this.getDefaultSessionInit(t),...n};break;default:console.warn(`No default session init for mode`,t);break}n.optionalFeatures??=[],n.requiredFeatures??=[],await $u.stop();let i=t==`immersive-ar`?r.scripts_immersive_ar:r.scripts_immersive_vr;V?console.log(`%cRequesting ${t} session`,`font-weight:bold;`,n,i):console.log(`%cRequesting ${t} session`,`font-weight:bold;`);for(let e of i)e.onBeforeXR&&e.activeAndEnabled&&!e.destroyed&&e.onBeforeXR(t,n);this.invokeSessionRequestStart(t,n),V&&Ti(`Requesting `+t+` session (`+Date.now()+`)`),$a.sendEvent(B.Current,`xr`,{action:`session_request`,mode:t,features:(n.requiredFeatures??[]).concat(n.optionalFeatures??[]).join(`,`),source:`NeedleXRSession.start`}),this._currentSessionRequest=navigator?.xr?.requestSession(t,n),this._currentSessionRequestMode=t;let a=await this._currentSessionRequest?.catch(e=>{console.error(e,`Code: `+e?.code),e?.code===9&&Ei(`Couldn't start XR session. Make sure you allow the required permissions.`),console.log(`If the specified XR configuration is not supported (e.g. entering AR doesnt work) - make sure you access the website on a secure connection (HTTPS) and your device has the required permissions (e.g. camera access)`),location.protocol===`http:`&&Ei(`XR requires a secure connection (HTTPS)`)});return this._currentSessionRequest=void 0,this._currentSessionRequestMode=null,this.invokeSessionRequestEnd(t,n,a),a?this.setSession(t,a,n,r):(console.warn(`XR Session request was rejected`),null)}static invokeSessionRequestStart(e,t){for(let n of this._sessionRequestStartListeners)n({mode:e,init:t})}static invokeSessionRequestEnd(e,t,n){for(let r of this._sessionRequestEndListeners)r({mode:e,init:t,newSession:n||null})}static setSession(t,n,r,i){if(this._activeSession)return console.error(`A XRSession is already running`),this._activeSession;let a=t==`immersive-ar`?i.scripts_immersive_ar:i.scripts_immersive_vr;return this._activeSession=new e(t,n,i,{scripts:a,controller_added:this._controllerAddedListeners,controller_removed:this._controllerRemovedListeners,init:r}),n.addEventListener(`end`,this.onEnd),V?console.log(`%cStarted ${t} session`,`font-weight:bold;`,a):console.log(`%cStarted ${t} session`,`font-weight:bold;`),this._activeSession}static $_stop_request=Symbol();static stop(){let e=this._activeSession;e&&(e[this.$_stop_request]===void 0?(V&&console.log(`[NeedleXRSession] Stopping XR Session... (new)`),e[this.$_stop_request]=setTimeout(()=>{e.end()})):V&&console.warn(`[NeedleXRSession] XR Session stop already requested`))}static onEnd=()=>{V&&console.log(`XR Session ended`),this._activeSession=null};context;get sync(){return e._sync}get running(){return!this._ended&&this.session!=null}session;mode;get interactionMode(){return this.session.interactionMode}get visibilityState(){return this.session.visibilityState}get isVisibleBlurred(){return this.session.visibilityState===`visible-blurred`}get isSystemKeyboardSupported(){return this.session.isSystemKeyboardSupported}get environmentBlendMode(){return this.session.environmentBlendMode}get frame(){return this.context.xrFrame}controllers=[];get leftController(){return this.controllers.find(e=>e.side===`left`)}get rightController(){return this.controllers.find(e=>e.side===`right`)}getController(e){return typeof e==`number`?this.controllers[e]||null:this.controllers.find(t=>t.side===e)||null}get isPassThrough(){return!!(this.environmentBlendMode!==`opaque`&&this.interactionMode===`world-space`||this.mode===`immersive-ar`&&this.environmentBlendMode!==`opaque`&&this.controllers.some(e=>e.inputSource.targetRayMode===`tracked-pointer`)||M()&&j.isDesktop()&&this.mode===`immersive-ar`)}get isAR(){return this.mode===`immersive-ar`}get isVR(){return this.mode===`immersive-vr`}get isScreenBasedAR(){return this.isAR&&!this.isPassThrough}get posePosition(){return this._transformPosition}get poseOrientation(){return this._transformOrientation}get referenceSpace(){return this.context.renderer.xr.getReferenceSpace()}get viewerPose(){return this._viewerPose}get isTrackingImages(){if(this.frame&&`getImageTrackingResults`in this.frame&&typeof this.frame.getImageTrackingResults==`function`)try{let e=this.frame.getImageTrackingResults();for(let t of e)if(t.trackingState===`tracked`)return!0}catch{return!1}return!1}get rig(){let e=this._rigs[0]??null;return e?.gameObject&&Nf(e.gameObject)||e?.isActive===!1?(this.updateActiveXRRig(),this._rigs[0]??null):e}_rigScale=1;_lastRigScaleUpdate=-1;get rigScale(){return this._rigs[0]?(this._lastRigScaleUpdate!==this.context.time.frame&&(this._lastRigScaleUpdate=this.context.time.frame,this._rigScale=this._rigs[0].gameObject.worldScale.x),this._rigScale):1}addRig(e){this._rigs.indexOf(e)>=0||(e.priority===void 0&&(e.priority=0),this._rigs.push(e),this.updateActiveXRRig())}removeRig(e){let t=this._rigs.indexOf(e);t!==-1&&(this._rigs.splice(t,1),this.updateActiveXRRig())}setRigActive(e){let t=this._rigs.indexOf(e),n=this._rigs[0];this._rigs.splice(t,1),this._rigs.unshift(e),e.priority=n?.priority??0,this.updateActiveXRRig()}getUserOffsetInRig(){let e=this.context.mainCamera?.position;if(!e||!this.rig)return P(0,0,0);let t=P(e);return t.x*=-1,t.z*=-1,t.applyQuaternion(Tr(this.rig.gameObject.quaternion)),t}updateActiveXRRig(){let e=this._rigs[0]??null;this._defaultRig.gameObject.parent!==this.context.scene&&this.context.scene.add(this._defaultRig.gameObject),this._defaultRig.gameObject.visible=!0,this._rigs.includes(this._defaultRig)||this._rigs.push(this._defaultRig);let t=this._rigs[0];t&&t.priority===void 0&&(t.priority=0);for(let e=1;et.priority)&&(t=n)}}if(e!==t){let e=this._rigs.indexOf(t);e>=0&&this._rigs.splice(e,1),this._rigs.unshift(t)}V&&(e===t?console.log(`Updated Active XR Rig:`,t,`prev:`,e):console.log(`Updated Active XRRig:`,t,` (the same as before)`))}_rigs=[];_viewerHitTestSource=null;getHitTest(e){if(e)return this.getControllerHitTest(e);if(!this._viewerHitTestSource)return null;let t=this._viewerHitTestSource,n=this.frame.getHitTestResults(t);if(n.length>0){let e=n[0];return this.convertHitTestResult(e)}return null}getControllerHitTest(e){let t=e.getHitTestSource();if(!t)return null;let n=this.frame.getHitTestResultsForTransientInput(t);for(let t of n)if(t.inputSource===e.inputSource)for(let e of t.results)return this.convertHitTestResult(e);return null}convertHitTestResult(e){let t=this.context.renderer.xr.getReferenceSpace(),n=t&&e.getPose(t);if(n){let t=P(n.transform.position),r=Tr(n.transform.orientation),i=this.context.mainCamera;if(i?.parent!==this._cameraRenderParent&&t.applyMatrix4(Iu),i?.parent){t.applyMatrix4(i.parent.matrixWorld),r.multiply(Lu);let e=Pr(i.parent);e.premultiply(Lu),r.premultiply(e)}return{hit:e,position:t,quaternion:r}}return null}convertSpace(e){let t=P(e.position);t.applyMatrix4(Iu);let n=Tr(e.orientation);return n.premultiply(Lu),{position:t,quaternion:n}}_defaultRig;_xr_scripts;_xr_update_scripts=[];_inactive_scripts=[];_controllerAdded;_controllerRemoved;_originalCameraWorldPosition;_originalCameraWorldRotation;_originalCameraWorldScale;_originalCameraParent;_mainCamera=null;constructor(e,t,n,r){ad(e,r.init),this.session=t,this.mode=e,this.context=n,(V||A(`console`))&&_i(!0),this._xr_scripts=[...r.scripts],this._xr_update_scripts=this._xr_scripts.filter(e=>typeof e.onUpdateXR==`function`),this._controllerAdded=r.controller_added,this._controllerRemoved=r.controller_removed,ka(this.onBefore,z.LateUpdate),this.context.pre_render_callbacks.push(this.onBeforeRender),this.context.post_render_callbacks.push(this.onAfterRender),(r.init.optionalFeatures?.includes(`hit-test`)||r.init.requiredFeatures?.includes(`hit-test`))&&t.requestReferenceSpace(`viewer`).then(e=>t.requestHitTestSource?.call(t,{space:e})?.then(e=>this._viewerHitTestSource=e).catch(e=>console.error(e))).catch(e=>console.error(e)),this.context.mainCamera&&(this._originalCameraWorldPosition=Or(this.context.mainCamera,new o),this._originalCameraWorldRotation=Pr(this.context.mainCamera,new E),this._originalCameraWorldScale=zr(this.context.mainCamera,new o),this._originalCameraParent=this.context.mainCamera.parent,this.context.mainCamera instanceof C&&(this.context.mainCamera[dd]=this.context.mainCamera.fov)),this._defaultRig=new zu,this.context.scene.add(this._defaultRig.gameObject),this.addRig(this._defaultRig);for(let e=0;e{for(let t of e.removed)this.disconnectInputSource(t);for(let t of e.added)this.onInputSourceAdded(t)}),this.context.xr=this,this.context.renderer.xr.setSession(this.session).then(this.onRendererSessionSet),`controllerAutoUpdate`in this.context.renderer.xr?(console.debug(`Disabling three.js controllerAutoUpdate`),this.context.renderer.xr.controllerAutoUpdate=!1):V&&console.warn(`controllerAutoUpdate is not available in three.js - cannot disable it`),j.isNeedleAppClip()&&window.requestAnimationFrame(()=>{let e=this.context.renderer.domElement,t=window.devicePixelRatio||1,n=e.width,r=e.height,i=Math.floor(window.innerWidth*t),a=Math.floor(window.innerHeight*t);(Math.abs(n-i)>2||Math.abs(r-a)>2)&&(e.width=i,e.height=a,console.debug(`Applied DPR scaling for Needle AppClip XR session`,t,e.width,e.height))})}onRendererSessionSet=()=>{this.running&&(this.context.renderer.xr.enabled=!0,this.context.renderer.xr.updateCamera(this.context.mainCamera),this.context.mainCameraComponent?.applyClearFlags())};onInputSourceAdded=e=>{if(e.targetRayMode===`screen`)return;let t=0;for(let n=0;nt.inputSource===e)){console.debug(`Controller already exists for input source`,t);return}else if(this._newControllers.find(t=>t.inputSource===e)){console.debug(`Controller already registered for input source`,t);return}let n=new Ku(this,e,t);this._newControllers.push(n)};disconnectInputSource(e){let t=(t,n)=>{if(t.inputSource===e){V&&console.log(`Disconnecting controller`,t.index);let e=n.indexOf(t);e>=0&&n.splice(e,1),this.invokeControllerEvent(t,this._controllerRemoved,`removed`);let r={xr:this,controller:t,change:`removed`};for(let e of this._xr_scripts)e.onXRControllerRemoved&&e.onXRControllerRemoved(r);t.onDisconnected()}},n=[...this.controllers];for(let e=n.length-1;e>=0;e--){let r=n[e];t(r,this.controllers)}let r=[...this._newControllers];for(let e=r.length-1;e>=0;e--){let n=r[e];t(n,this._newControllers)}}end(){this._ended||this.session.end().catch(e=>console.warn(e))}_ended=!1;_newControllers=[];onEnd=t=>{if(this._ended)return;this._ended=!0,console.debug(`XR Session ended`),$a.sendEvent(B.Current,`xr`,{action:`session_end`,mode:this.mode,source:`NeedleXRSession.onEnd`}),od(),this.onAfterRender(),this.revertCustomForward(),this._didStart=!1,this._previousCameraParent=null,this.requestedCameraNearPlane=null,Aa(this.onBefore,z.LateUpdate);let n=this.context.pre_render_callbacks.indexOf(this.onBeforeRender);n>=0&&this.context.pre_render_callbacks.splice(n,1);let r=this.context.post_render_callbacks.indexOf(this.onAfterRender);r>=0&&this.context.post_render_callbacks.splice(r,1),this.context.xr=null,this.context.renderer.xr.enabled=!1,this.context.pre_update_oneshot_callbacks.push(()=>{this.context.mainCameraComponent?.applyClearFlags(),this.context.mainCameraComponent?.applyClippingPlane()}),Ul({session:this});for(let t of e._xrEndListeners)t({xr:this});let i=[...this.controllers];for(let e=0;e{let n=t.xrFrame;if(!n)return;this.context.xr=this,this.context.mainCameraComponent&&this.context.mainCameraComponent!==this._mainCamera&&(this._mainCamera=this.context.mainCameraComponent),this.rig?.isActive==0&&(V&&console.warn(`Latest rig is not active - trying to activate a different rig`,this.rig),this.updateActiveXRRig()),this.rig&&this._mainCamera?.gameObject&&this._mainCamera?.gameObject?.parent!==this.rig.gameObject&&this.rig.gameObject.add(this._mainCamera?.gameObject),this.internalUpdateState(),this.applyCustomForward();let r={xr:this};if(!this._didStart){if(this._didStart=!0,this.mode===`immersive-vr`){let e=fi(this.context.scene.children);if(e){let t=e.getSize(P());if(t.length()>0){let n=this._defaultRig.gameObject;n.position.set(e.min.x+t.x*.5,e.min.y,e.max.z+t.z*.5+1.5);let r=e.getCenter(P());r.y=n.position.y,n.lookAt(r)}}}Hl({session:this}),Bs();for(let t of e._xrStartListeners)t(r);let t=[...this._xr_scripts];V&&console.log(`NeedleXRSession start, handle scripts:`,t);for(let e of t){if(e.destroyed){this._script_to_remove.push(e);continue}if(!e.activeAndEnabled){this.markInactive(e);continue}this.invokeCallback_EnterXR(e);for(let t of this.controllers)this.invokeCallback_ControllerAdded(e,t)}}else if(this.context.new_scripts_xr.length>0){let e=[...this.context.new_scripts_xr];for(let t=0;t0){let e=[...this._newControllers];this._newControllers.length=0;for(let t of e){if(!t.connected){console.warn(`New controller is not connected`,t);continue}this.controllers.push(t);for(let e of this._xr_scripts){if(e.destroyed){this._script_to_remove.push(e);continue}e.activeAndEnabled!==!1&&this.invokeCallback_ControllerAdded(e,t)}}this.controllers.sort((e,t)=>e.index-t.index)}V&&this.context.time.frame%30==0&&this.controllers.length<=0&&this.session.inputSources.length>0&&(_i(!0),console.error(`XRControllers are not added but inputSources are present`));for(let e of this._xr_update_scripts){if(e.destroyed===!0){this._script_to_remove.push(e);continue}if(e.activeAndEnabled===!1){this.markInactive(e);continue}e.onUpdateXR&&e.onUpdateXR(r)}if(this.handleInactiveScripts(),this._script_to_remove.length>0){let e=[...new Set(this._script_to_remove)];this._script_to_remove.length=0;for(let t of e)!t.destroyed&&this.running&&t.onLeaveXR?.(r),this.removeScript(t)}this.sync?.onUpdate(this),this.onRenderDebug()};onRenderDebug(){if(V)for(let e of this.controllers)e.onRenderDebug();if((V||td)&&this.rig&&(nd++,nd>=20)){let e=this.rig.gameObject.worldPosition,t=this.rig.gameObject.worldForward;e.add(t.multiplyScalar(1.5));let n=this.rig.gameObject.worldUp;e.add(n.multiplyScalar(2.5));let r=``;if(r+=`${this.context.time.smoothedFps.toFixed(0)} FPS`,r+=`, calls: ${this.context.renderer.info.render.calls}, tris: ${this.context.renderer.info.render.triangles.toLocaleString()}`,V||td)for(let e of this.controllers)r+=`\n${e.hand?`hand`:`ctrl`} ${e.inputSource.handedness}[${e.index}] con:${e.connected} tr:${e.isTracking} hts:${e.hasHitTestSource?`yes`:`no`}`;nd=0,H.DrawLabel(e,r,void 0,1/60*20)}}onBeforeRender=()=>{this.context.mainCamera&&(this.updateFade(this.context.mainCamera),this.requestedCameraNearPlane!==null&&this.context.mainCamera instanceof C&&(this.context.mainCamera.near=this.requestedCameraNearPlane,this.requestedCameraNearPlane=null))};onAfterRender=()=>{if(this.onUpdateFade_PostRender(),j.isDesktop()||!this._renderOnceOnDevice){let e=this.context.renderer;if(e.xr.isPresenting&&this.context.mainCamera){this._renderOnceOnDevice=!0;let t=e.xr.enabled,n=e.getRenderTarget(),r=this.context.scene.background;e.xr.enabled=!1,e.setRenderTarget(null),this.isPassThrough&&(this.context.scene.background=null),this.context.composer?this.context.composer.render(this.context.time.deltaTime):e.render(this.context.scene,this.context.mainCamera),e.xr.enabled=t,e.setRenderTarget(n),this.context.scene.background=r}}};addScript(e){return this._xr_scripts.includes(e)?!1:(V&&console.log(`Register new XRScript`,e),this._xr_scripts.push(e),typeof e.onUpdateXR==`function`&&this._xr_update_scripts.push(e),!0)}markInactive(e){if(!(this._inactive_scripts.indexOf(e)>=0)){this.removeScript(e,!1),this._inactive_scripts.push(e);for(let t of this.controllers)this.invokeCallback_ControllerRemoved(e,t);this.invokeCallback_LeaveXR(e)}}handleInactiveScripts(){if(this._inactive_scripts.length>0)for(let e=this._inactive_scripts.length-1;e>=0;e--){let t=this._inactive_scripts[e];if(t.activeAndEnabled){this._inactive_scripts.splice(e,1),this.addScript(t),this.invokeCallback_EnterXR(t);for(let e of this.controllers)this.invokeCallback_ControllerAdded(t,e)}}}_script_to_remove=[];removeScript(e,t=!0){V&&console.log(`Remove XRScript`,e);let n=this._xr_scripts.indexOf(e);n>=0&&this._xr_scripts.splice(n,1);let r=this._xr_update_scripts.indexOf(e);if(r>=0&&this._xr_update_scripts.splice(r,1),t){let t=this._inactive_scripts.indexOf(e);t>=0&&this._inactive_scripts.splice(t,1)}}invokeCallback_EnterXR(e){e.onEnterXR&&e.onEnterXR({xr:this})}invokeCallback_ControllerAdded(e,t){e.onXRControllerAdded&&e.onXRControllerAdded({xr:this,controller:t,change:`added`})}invokeCallback_ControllerRemoved(e,t){e.onXRControllerRemoved&&e.onXRControllerRemoved({xr:this,controller:t,change:`removed`})}invokeCallback_LeaveXR(e){e.onLeaveXR&&!e.destroyed&&e.onLeaveXR({xr:this})}syncCameraCullingMask(){let e=this.context.xrCamera,t=this.context.mainCameraComponent?.cullingMask;if(e&&t!==void 0){for(let n of e.cameras)n.layers.mask=t;e.layers.mask=t}else if(e){for(let t of e.cameras)t.layers.enableAll();e.layers.enableAll()}}invokeControllerEvent(e,t,n){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i)try{i({xr:this,controller:e,change:n})}catch(e){console.error(e)}}}_camera;_cameraRenderParent=new S().rotateY(Math.PI);_previousCameraParent;_customforward=!0;originalCameraNearPlane;requestedCameraNearPlane=null;applyCustomForward(){if(this.context.mainCamera&&this._customforward){this._camera=this.context.mainCamera,this._camera.parent!==this._cameraRenderParent&&(this._previousCameraParent=this._camera.parent,this._previousCameraParent?.add(this._cameraRenderParent)),this._cameraRenderParent.name=`XR Camera Render Parent`,this._cameraRenderParent.add(this._camera);{let e=.02;if(this.rig){let t=zr(this.rig.gameObject);e*=t.x}this._camera instanceof C&&Math.abs(this._camera.near-e)>.001&&(this.isAR?this.originalCameraNearPlane=this._camera.near:this._camera.near=e,V&&console.debug(`Setting camera near plane to ${e} (was ${this.originalCameraNearPlane}) to account for XR rendering scale`))}}}revertCustomForward(){this._camera&&this._previousCameraParent&&this._previousCameraParent.add(this._camera),this._previousCameraParent=null,this._camera instanceof C&&this.originalCameraNearPlane!=null&&(this._camera.near=this.originalCameraNearPlane,this.originalCameraNearPlane=void 0)}_viewerPose;_transformOrientation=new E;_transformPosition=new o;internalUpdateState(){let e=this.context.renderer.xr.getReferenceSpace();if(!e){this._viewerPose=void 0;return}if(this._viewerPose=this.frame.getViewerPose(e),this._viewerPose){let e=this._viewerPose.transform;this._transformPosition.set(e.position.x,e.position.y,e.position.z),this._transformOrientation.set(e.orientation.x,e.orientation.y,e.orientation.z,e.orientation.w)}}_transition;get transition(){return this._transition||=new Qu,this._transition}fadeTransition(){return this._transition||=new Qu,this._transition.fadeTransition()}updateFade(e){this._transition&&e instanceof C&&this._transition.update(e,this.context.time.deltaTime)}onUpdateFade_PostRender(){this._transition?.remove()}},md=class e extends a{alpha=1;get isRGBAColor(){return!0}set a(e){this.alpha=e}get a(){return this.alpha}constructor(e,t,n,r){super(),typeof e==`number`&&typeof t==`number`&&typeof n==`number`?(this.set(e,t,n),this.alpha=typeof r==`number`?r:1):e!==void 0&&(this.set(e),this.alpha=1)}clone(){let e=super.clone();return e.alpha=this.alpha,e}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,`alpha`in e&&typeof e.alpha==`number`?this.alpha=e.alpha:typeof e.a==`number`&&(this.alpha=e.a),this}lerp(e,t){let n=e;return n.alpha!=null&&(this.alpha=N.lerp(this.alpha,n.alpha,t)),super.lerp(e,t)}lerpColors(e,t,n){let r=e,i=t;return r.alpha!=null&&i.alpha!=null&&(this.alpha=N.lerp(r.alpha,i.alpha,n)),super.lerpColors(e,t,n)}multiply(e){let t=e;return t.alpha!=null&&(this.alpha*=t.alpha),super.multiply(e)}fromArray(e,t=0){return this.alpha=e[t+3],super.fromArray(e,t)}static fromColorRepresentation(t){if(typeof t==`string`){if(t.trim()===`transparent`)return new e(0,0,0,0);if(t.startsWith(`#`)&&t.length===9){let n=parseInt(t.slice(1,9),16),r=n>>24&255,i=n>>16&255,a=n>>8&255,o=n>>0&255;return new e(r/255,i/255,a/255,o/255)}else if(t.startsWith(`#`)){let n=parseInt(t.slice(1),16),r=n>>16&255,i=n>>8&255,a=n>>0&255;return new e(r/255,i/255,a/255,1)}else if(t.startsWith(`rgba`)){let n=t.slice(5,-1).split(`,`).map(Number);return new e(n[0]/255,n[1]/255,n[2]/255,n[3])}else if(t.startsWith(`rgb`)){let n=t.slice(4,-1).split(`,`).map(Number);return new e(n[0]/255,n[1]/255,n[2]/255,1)}}else if(Array.isArray(t)){if(t.length===4)return new e(t[0],t[1],t[2],t[3]);if(t.length===3)return new e(t[0],t[1],t[2],1);console.error(`Invalid color array length. Expected 3 or 4, got `+t.length)}return new e(t)}},hd=new o,gd=new o,_d=new E,vd=A(`debuggizmos`),yd=8947848,bd=32,H=class e{constructor(){}static enabled=!0;static isGizmo(e){return e[wd]!==void 0}static setVisible(e){for(let t of Td.timedObjectsBuffer)t.visible=e}static DrawLabel(t,n,r=.05,i=0,a,o,s){if(!e.enabled)return null;a||=yd;let c=pd.active?.rigScale??1,l=Td.getTextLabel(i,n,r*c,a,o);return s instanceof S&&s.add(l),l.position.x=t.x,l.position.y=t.y,l.position.z=t.z,l}static DrawRay(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getLine(i),s=o.geometry.getAttribute(`position`);s.setXYZ(0,t.x,t.y,t.z),hd.set(n.x,n.y,n.z).multiplyScalar(999999999),s.setXYZ(1,t.x+hd.x,t.y+hd.y,t.z+hd.z),s.needsUpdate=!0,o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawDirection(t,n,r=yd,i=0,a=!0,o=1){if(!e.enabled)return;let s=Td.getLine(i),c=s.geometry.getAttribute(`position`);c.setXYZ(0,t.x,t.y,t.z),n.w===void 0?(hd.set(n.x,n.y,n.z),hd.multiplyScalar(o)):(hd.set(0,0,-o),_d.set(n.x,n.y,n.z,n.w),hd.applyQuaternion(_d)),c.setXYZ(1,t.x+hd.x,t.y+hd.y,t.z+hd.z),c.needsUpdate=!0,s.material.depthTest=a,s.material.depthWrite=!1,Cd(s.material,r)}static DrawLine(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getLine(i),s=o.geometry.getAttribute(`position`);s.setXYZ(0,t.x,t.y,t.z),s.setXYZ(1,n.x,n.y,n.z),s.needsUpdate=!0,o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawCircle(t,n,r,i=yd,a=0,o=!0){if(!e.enabled)return;let s=Td.getCircle(a);s.position.set(t.x,t.y,t.z),s.scale.set(r,r,r),s.quaternion.setFromUnitVectors(this._up,hd.set(n.x,n.y,n.z).normalize()),s.material.depthTest=o,s.material.depthWrite=!1,s.material.fog=!1,Cd(s.material,i)}static DrawWireSphere(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getSphere(n,i,!0);Ar(o,t.x,t.y,t.z),o.material.depthTest=a,o.material.depthWrite=!1,o.material.fog=!1,Cd(o.material,r)}static DrawSphere(t,n,r=yd,i=0,a=!0){if(!e.enabled)return;let o=Td.getSphere(n,i,!1);Ar(o,t.x,t.y,t.z),o.material.depthTest=a,o.material.depthWrite=!1,Cd(o.material,r)}static DrawWireBox(t,n,r=yd,i=0,a=!0,o=void 0){if(!e.enabled)return;let s=Td.getBox(i);s.position.set(t.x,t.y,t.z),s.scale.set(n.x,n.y,n.z),o?s.quaternion.copy(o):s.quaternion.identity(),s.material.depthTest=a,s.material.wireframe=!0,s.material.depthWrite=!1,s.material.fog=!1,Cd(s.material,r)}static DrawWireBox3(t,n=yd,r=0,i=!0){if(!e.enabled)return;let a=Td.getBox(r);a.position.copy(t.getCenter(hd)),a.scale.copy(t.getSize(hd)),a.material.depthTest=i,a.material.wireframe=!0,a.material.depthWrite=!1,a.material.fog=!1,Cd(a.material,n)}static _up=new o(0,1,0);static DrawArrow(t,n,r=yd,i=0,a=!0,o=!1){if(!e.enabled)return;let s=Td.getArrowHead(i);s.position.set(n.x,n.y,n.z),s.quaternion.setFromUnitVectors(this._up.set(0,1,0),hd.set(n.x,n.y,n.z).sub(gd.set(t.x,t.y,t.z)).normalize());let c=hd.set(n.x,n.y,n.z).sub(gd.set(t.x,t.y,t.z)).length()*.1;s.scale.set(c,c,c),s.material.depthTest=a,s.material.wireframe=o,Cd(s.material,r),this.DrawLine(t,n,r,i,a)}static DrawWireMesh(e){let t=Td.getMesh(e.duration??0);`mesh`in e?(t.geometry=e.mesh.geometry,t.matrixWorld.copy(e.mesh.matrixWorld)):(t.geometry=e.geometry,t.matrixWorld.copy(e.matrix)),t.matrixAutoUpdate=!1,t.matrixWorldAutoUpdate=!1,t.material.depthTest=e.depthTest??!0,t.material.wireframe=!0,Cd(t.material,e.color??yd)}},xd=new Xe(1,1,1);function Sd(e=null){let t=new a(e??14540253);return new f(new ye(xd),new ee({color:t}))}function Cd(e,t){if(Array.isArray(e)){for(let n of e)Cd(n,t);return}let n=t instanceof md?t.a:1;e.color.set(t),e.opacity=n,e.transparent=n<1}var wd=Symbol(`GizmoCache`),Td=class{static familyName=`needle-gizmos`;static ensureFont(){let e=D.FontLibrary.getFontFamily(this.familyName);e||(e=D.FontLibrary.addFontFamily(this.familyName),e.addVariant(`normal`,`normal`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial-msdf.json`,`https://cdn.needle.tools/static/fonts/msdf/arial/arial.png`)?.addEventListener(`ready`,()=>{D.update()}))}static getTextLabel(e,t,n,r,i){this.ensureFont();let a=this.textLabelCache.pop(),o=1;i&&typeof i==`string`&&i?.length>=8&&i.startsWith(`#`)?(o=parseInt(i.substring(7),16)/255,i=i.substring(0,7),vd&&console.log(i,o)):typeof i==`object`&&i.a!==void 0&&(o=i.a);let s={boxSizing:`border-box`,fontFamily:this.familyName,width:`auto`,fontSize:n,color:r,lineHeight:1,backgroundColor:i??void 0,backgroundOpacity:o,textContent:t,borderRadius:.5*n,padding:.8*n,whiteSpace:`pre`,offset:.05*n};if(a)a.set(s);else{a=new Qe(s);let e=this,t=a;t.setText=function(t){this.set({textContent:t}),e.tmuiNeedsUpdate=!0}}return this.tmuiNeedsUpdate=!0,this.registerTimedObject(B.Current,a,e,this.textLabelCache),a}static getBox(e){let t=this.boxesCache.pop();return t||=new x(new Xe(1,1,1)),this.registerTimedObject(B.Current,t,e,this.boxesCache),t}static getLine(e){let t=this.linesCache.pop();if(!t){t=new Ee;let e=t.geometry.getAttribute(`position`);e||(e=new Je(new Float32Array(6),3),t.geometry.setAttribute(`position`,e))}return t.frustumCulled=!1,this.registerTimedObject(B.Current,t,e,this.linesCache),t}static getCircle(e){let t=this.circlesCache.pop();if(!t){t=new Ee;let e=t.geometry.getAttribute(`position`);if(!e){e=new Je(new Float32Array(bd*3),3),t.geometry.setAttribute(`position`,e);let n=P(0,1,0),r=P(0,0,1),i=P(r);i.cross(n).normalize();let a=P(i),o=Math.PI*2/(bd-1);for(let t=0;t{this.onBeforeRender(e,this.timedObjectsBuffer)};this.contextBeforeRenderCallbacks.set(e,t),e.pre_render_callbacks.push(t)}else if(e.pre_render_callbacks[e.pre_render_callbacks.length-1]!==i){let t=e.pre_render_callbacks.indexOf(i);t>=0&&e.pre_render_callbacks.splice(t,1),e.pre_render_callbacks.push(i)}if(!a){let t=()=>{this.onPostRender(e,this.timedObjectsBuffer,this.timesBuffer)};this.contextPostRenderCallbacks.set(e,t),e.post_render_callbacks.push(t)}else if(e.post_render_callbacks[e.post_render_callbacks.length-1]!==a){let t=e.post_render_callbacks.indexOf(a);t>=0&&e.post_render_callbacks.splice(t,1),e.post_render_callbacks.push(a)}t.traverse(e=>{e.layers.disableAll(),e.layers.enable(2)}),t.renderOrder=999999,t[wd]=r,t.castShadow=!1,t.receiveShadow=!1,t.isGizmo=!0,this.timedObjectsBuffer.push(t),this.timesBuffer.push(B.Current.time.realtimeSinceStartup+n),e.scene.add(t)}static timedObjectsBuffer=[];static timesBuffer=[];static contextPostRenderCallbacks=new Map;static contextBeforeRenderCallbacks=new Map;static tmuiNeedsUpdate=!1;static onBeforeRender(e,t){this.tmuiNeedsUpdate&&(this.tmuiNeedsUpdate=!1,D.update());for(let n=0;n=0;e--){let i=t[e];r>=n[e]-1e-6&&(t.splice(e,1),n.splice(e,1),i.removeFromParent(),Nf(i)!=1&&i[wd].push(i))}}},Ed=A(`debugphysics`),Dd=A(`debugworker`),Od=new s,kd=class{static AllLayers=4294967295;ray;cam;screenPoint;raycaster;results;targets;recursive=!0;minDistance;maxDistance;lineThreshold;layerMask;ignore;testObject;useAcceleratedRaycast;allowSlowRaycastFallback=!0;screenPointFromOffset(e,t){this.screenPoint===void 0&&(this.screenPoint=new w),this.screenPoint.x=e/window.innerWidth*2-1,this.screenPoint.y=-(t/window.innerHeight)*2+1}setLayer(e){Od.set(e),this.layerMask=Od}setMask(e){this.layerMask||=new s;let t=this.layerMask;t?t.mask=e:this.layerMask=e}},Ad=class{distance;point;object;constructor(e,t,n){this.object=e,this.distance=t,this.point=n}},jd=class e{static _raycasting=0;static get raycasting(){return this._raycasting>0}raycastPhysicsFast(e,t=void 0,n=1/0,r=!0){return this.context.physics.engine?.raycast(e,t,{maxDistance:n,solid:r})??null}raycastPhysicsFastAndGetNormal(e,t=void 0,n=1/0,r=!0){return this.context.physics.engine?.raycastAndGetNormal(e,t,{maxDistance:n,solid:r})??null}sphereOverlapPhysics(e,t){return this.context.physics.engine?.sphereOverlap(e,t)??null}context;engine;constructor(e){this.context=e}raycaster=new _;defaultRaycastOptions=new kd;targetBuffer=[,];defaultThresholds={Mesh:{},Line:{threshold:-1},LOD:{},Points:{threshold:0},Sprite:{}};sphereResults=[];sphereMask=new s;sphere=new Oe;sphereOverlap(e,t,n=!0,r=!1,i=null){if(this.sphereResults.length=0,!this.context.scene)return this.sphereResults;let a=this.sphereMask;a.enableAll(),a.disable(2);for(let o of this.context.scene.children)this.intersectSphere(o,e,t,a,this.sphereResults,n,r,i);return this.sphereResults.sort((e,t)=>e.distance-t.distance)}raycastFromRay(e,t=null){let n=t??this.defaultRaycastOptions;n.ray=e;let r=this.raycast(n);return n===this.defaultRaycastOptions&&(n.ray=void 0),r}raycast(t=null){Ed&&performance.mark(`raycast.start`),t||=this.defaultRaycastOptions;let n=t.screenPoint??this.context.input.mousePositionRC,r=t.raycaster??this.raycaster;if(r.near=t.minDistance??0,r.far=t.maxDistance??1/0,r.params=this.defaultThresholds,t.lineThreshold===void 0&&(t.lineThreshold=-1),r.params.Line={threshold:t.lineThreshold},t.ray)r.ray.copy(t.ray);else{let e=t.cam??this.context.mainCamera;if(!e)return Ed&&console.error(`Can not perform raycast - no main camera found`),this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),this.defaultRaycastOptions.results??[];let i=this.context.xrCamera;this.context.isInXR&&i instanceof Me&&i.cameras.length>0?r.setFromCamera(n,i.cameras[0]):r.setFromCamera(n,e)}let i=t.targets;i||(i=this.targetBuffer,i.length=1,i[0]=this.context.scene);let a=t.results;this.defaultRaycastOptions.results&&(this.defaultRaycastOptions.results.length=0),a||=(this.defaultRaycastOptions.results||(this.defaultRaycastOptions.results=[]),this.defaultRaycastOptions.results),t.layerMask===void 0?(r.layers.enableAll(),r.layers.disable(2)):t.layerMask instanceof s?r.layers.mask=t.layerMask.mask:r.layers.mask=t.layerMask,Ed&&console.time(`raycast`),a.length=0,e._raycasting++,this.intersect(this.raycaster,i,a,t),a.sort((e,t)=>e.distance-t.distance);let o=t.ignore;return o!==void 0&&o.length>0&&(a=a.filter(e=>!o.includes(e.object))),e._raycasting--,Ed&&(console.timeEnd(`raycast`),console.warn(`#`+this.context.time.frame+`, hits:`,a?.length?[...a]:`nothing`),performance.mark(`raycast.end`),performance.measure(`raycast`,`raycast.start`,`raycast.end`)),a}intersect(e,t,n,r){for(let i of t){if(!i||i.visible===!1||H.isGizmo(i)||r.lineThreshold!==void 0&&r.lineThreshold<0&&i instanceof Ee)continue;let t=!0,a=i,o=a.geometry;if(i.raycastAllowed===!1&&(t=!1),t&&r.testObject){let e=r.testObject?.(i);if(e===!1)continue;e===`continue in children`&&(t=!1)}else t&&(o&&Md(o)||(t=!1));if(t){let t=n.length,s=i.raycastPreference||`lod`,c=s!==`bounds`;if(r.precise===!1&&(c=!1),o&&(c||=o.getAttribute(`position`)?.array?.length<64),a instanceof st&&(c=!1),s===`lod`){let e=ft(i);e&&(a.geometry=e)}if(!c&&Id(a,e,n)||(r.useAcceleratedRaycast===!1?e.intersectObject(a,!1,n):Ld.runMeshBVHRaycast(e,a,n,this.context,r)),a.geometry=o,Ed&&n.length!=t){let e=n[n.length-1];H.DrawWireSphere(e.point,.1,7798784,1,!1),H.DrawWireMesh({mesh:i,depthTest:!1,duration:.2,color:7798784})}}r.recursive!==!1&&this.intersect(e,i.children,n,r)}return n}tempBoundingBox=new fe;intersectSphere(e,t,n,r,i,a,o,s){let c=e&&e.isMesh&&e.layers.test(r)&&!H.isGizmo(e);c&&=e.visible,c&&=!(e instanceof Ee),c&&=!(e instanceof st);let l=e,u=l.geometry;if(c&&s){let t=s(e);if(t===!1)return;t===`continue in children`&&(c=!1)}if(u&&Md(u)||(c=!1),c){if(o){let e=this.sphere;e.center.copy(t),e.radius=n;let r=i.length;if(Ld.runMeshBVHRaycast(this.sphere,l,i,this.context,{}),r!=i.length&&!a)return}else if(u.boundingBox||u.computeBoundingBox(),u.boundingBox){l.matrixWorldNeedsUpdate&&l.updateWorldMatrix(!1,!1);let r=this.tempBoundingBox.copy(u.boundingBox).applyMatrix4(l.matrixWorld),o=this.sphere;if(o.center.copy(t),o.radius=n,o.intersectsBox(r)){let t=Or(e),n=new Ad(e,t.distanceTo(o.center),t);if(i.push(n),!a)return}}}if(e.children)for(let c of e.children){let e=i.length;if(this.intersectSphere(c,t,n,r,i,a,o,s),e!=i.length&&!a)return}}};function Md(e){return!(e.index&&e.index.array.length<3)}var Nd=new Oe,Pd=new pe,Fd=new le;function Id(e,t,n){let r=e._computeIntersections;if(!r)return!1;let i=e[`_computeIntersections:Needle`];return i||=e[`_computeIntersections:Needle`]=function(e,t,n){let r=this,i=r.geometry.boundingSphere;if(i){if(r instanceof st){Pd.setFromNormalAndCoplanarPoint(P(0,1,0),P(0,-r.position.y,0)),Pd.applyMatrix4(r.matrixWorld,Fd);let n=e.ray.intersectPlane(Pd,P());if(n){Nd.copy(i),Nd.applyMatrix4(r.matrixWorld);let a=P(n).sub(e.ray.origin).length();aNd.radius){let e=i.clone().normalize();t.push({distance:a,point:n,object:r,normal:e})}}}},e._computeIntersections=i,t.intersectObject(e,!1,n),e._computeIntersections=r,!0}var Ld;(function(e){let t=0;function n(e,n,r,i,y){if(!n.geometry||!n.geometry.hasAttribute(`position`))return!1;let b=n.geometry;if(n?.isSkinnedMesh){let e=n,t=e.bvhNeedsUpdate;if(!e.staticGenerator)l(),s&&(e.staticGenerator=new s(n),e.staticGenerator.applyWorldTransforms=!1,e.staticGeometry=e.staticGenerator.generate(),b.boundsTree=c?.call(e.staticGeometry),e.staticGeometryLastUpdate=performance.now()+Math.random()*200,e.bvhNeedsUpdate=!0);else if(b.boundsTree&&(e.autoUpdateMeshBvhInterval!==void 0&&e.autoUpdateMeshBvhInterval>=0||t===!0)){let r=performance.now(),i=r-e.staticGeometryLastUpdate,a=e.autoUpdateMeshBvhInterval??100;(t||i>a)&&(Ed&&console.warn(`Physics: updating skinned mesh bvh for ${n.name} after ${i.toFixed(2)}ms`),e.bvhNeedsUpdate=!1,e.staticGeometryLastUpdate=r,e.staticGenerator?.generate(e.staticGeometry),b.boundsTree.refit())}}else if(!b.boundsTree){d||ee();let e=!0;if((i.xr||b[h]===!1||b.getAttribute(`position`)?.isInterleavedBufferAttribute||b.index&&b.index?.isInterleavedBufferAttribute||t>10)&&(e=!1),e&&p){if(b[m]===void 0){let e=null;if(v.length>0){let t=v.shift();t&&!t.running&&(e=t)}if(!e&&g.length<3)try{Dd&&console.warn(`[GenerateMeshBVHWorker] Creating worker with import.meta.url:`,import.meta.url),e=new p,g.push(e)}catch(e){e instanceof DOMException&&e.name===`SecurityError`?(console.warn(`Failed to create MeshBVH worker, falling back to main thread generation. This can happen when running from file://, if the browser does not support workers or if the browser is blocking workers for other reasons.`),console.debug(e),t+=10):(console.error(`Failed to create MeshBVH worker. Please see below for more details:`),console.log(e)),t++}if(e!=null&&!e.running){let t=n.name;Ed&&console.log(`<<<< worker start`,t,e),b[m]=`queued`,performance.mark(`bvh.create.start`);let r=b.clone();try{e.generate(r).then(e=>{b[m]=`done`,b.boundsTree=e}).catch(e=>{b[m]=`failed - `+e?.message,b[h]=!1,Ed&&console.error(`Failed to generate mesh bvh on worker`,e)}).finally(()=>{Ed&&console.log(`>>>>> worker done`,t,{hasBoundsTre:b.boundsTree!=null}),v.push(e),r.dispose(),performance.mark(`bvh.create.end`),performance.measure(`bvh.create (worker)`,`bvh.create.start`,`bvh.create.end`)})}catch(e){console.error(`Failed to generate mesh bvh on worker`,e)}}else Ed&&console.warn(`No worker available`)}}else (!f||!e)&&(l(),o&&(performance.mark(`bvh.create.start`),b.boundsTree=new o(b),performance.mark(`bvh.create.end`),performance.measure(`bvh.create`,`bvh.create.start`,`bvh.create.end`)))}if(e instanceof _){let t=e,i=n.raycast;if(b.boundsTree)l(),a&&(n.acceleratedRaycast||(n.acceleratedRaycast=a.bind(n),Ed&&console.debug(`Physics: bind acceleratedRaycast fn to \"${n.name}\"`)),n.raycast=n.acceleratedRaycast);else if(Ed&&console.warn(`No bounds tree found for mesh`,n.name,{workerTask:b[m],hasAcceleratedRaycast:a!=null}),y.allowSlowRaycastFallback===!1&&(b.getAttribute(`position`)?.array?.length??0)>2e3)return Ed&&console.warn(`Skipping raycast because no bounds tree is available and allowSlowRaycastFallback is false`),!1;let o=t.firstHitOnly;return t.firstHitOnly=!1,t.intersectObject(n,!1,r),t.firstHitOnly=o,n.raycast=i,!0}else if(e instanceof Oe){let t=b.boundsTree;if(t){let i=e;if(u.copy(n.matrixWorld).invert(),i.applyMatrix4(u),t.intersectsSphere(i)){let e=Or(n),t=new Ad(n,e.distanceTo(i.center),e);r.push(t)}}return!0}return!1}e.runMeshBVHRaycast=n;let i=!1,a=null,o=null,s=null,c=null;function l(){i||(i=!0,r(()=>import(`./needle-engine.dep.B3nA4wQ5.js`).then(e=>{a=e.acceleratedRaycast,o=e.MeshBVH,s=e.StaticGeometryGenerator,c=e.computeBoundsTree}),__vite__mapDeps([13,14,3,2]),import.meta.url).catch(e=>{(Ed||M())&&console.error(`Failed to load BVH library...`,e.message)}))}let u=new ce,d=!1,f=!1,p=null,m=Symbol(`Needle:MeshBVH-Worker`),h=Symbol(`Needle:MeshBVH-CanUseWorker`),g=[],v=[];function ee(){d=!0,f=!0,r(()=>import(`./GenerateMeshBVHWorker.DMD7ZOpN.js`).then(e=>{p=e.GenerateMeshBVHWorker}),__vite__mapDeps([15,16,2,17,1,3,18,19,10,9,20,21,22,6,14]),import.meta.url).catch(e=>{Ed||M()?console.warn(`Failed to setup mesh bvh worker`):console.debug(`Failed to setup mesh bvh worker`,e)}).finally(()=>{f=!1})}})(Ld||={});var Rd=Symbol(`gltf-loader-internal-usage-tracker`),zd=A(`debugusers`),Bd=class e{get name(){return`NEEDLE_internal_usage_tracker`}static isLoading(t){return e._loadingProcesses>0}static _loadingProcesses=0;parser;_getDependency;_loadingId;_loadedObjects=new Set;constructor(e){this.parser=e,this._getDependency=this.parser.getDependency,this._loadingId=Date.now().toString()}beforeRoot(){e._loadingProcesses++;let t=this,n=this._getDependency;return this.parser.getDependency=function(e,r){let i=n.call(this,e,r);return i.then(e=>(e&&(t._loadedObjects.add(e),e[Rd]=t._loadingId),e)),i},null}afterRoot(t){e._loadingProcesses--,this.parser.getDependency=this._getDependency;for(let e of this._loadedObjects)delete e[Rd],e instanceof S&&(e.parent||e instanceof x&&setTimeout(()=>{zd&&console.warn(`> GLTF LOADER: Mesh not used in scene!`,e),e.material=null,e.geometry=null},1e3));return null}},Vd=class{constructor(){window.addEventListener(`unhandledrejection`,e=>{if(e.defaultPrevented)return;let t=e?.reason?.path;if(t){let n=t[0];n&&n.tagName===`IMG`&&(console.warn(`Could not load image: +`+n.src),e.preventDefault())}})}},Hd=A(`trackresources`);function Ud(){return Hd===`dispose`}var Wd=!0;Hd===0&&(Wd=!1);function Gd(e){Wd=e}function Kd(){return Wd}var qd=Symbol(`disposable`);function Jd(e,t){e&&(e[qd]=t,nf&&console.warn(`Set disposable`,t,e))}var Yd=Symbol(`disposed`);function Xd(e){return e[Yd]===!0}function U(e){if(e){if(e[qd]===!1){nf&&console.warn(`Object is marked as not disposable`,e);return}if(typeof e==`object`&&(e[Yd]=!0),e instanceof ne)U(e.environment),U(e.background),U(e.customDepthMaterial),U(e.customDistanceMaterial);else if(e instanceof ze)U(e.geometry),U(e.material),U(e.skeleton),U(e.bindMatrix),U(e.bindMatrixInverse),U(e.customDepthMaterial),U(e.customDistanceMaterial),e.visible=!1;else if(e instanceof x)U(e.geometry),U(e.material),U(e.customDepthMaterial),U(e.customDistanceMaterial),e.visible=!1;else if(e instanceof S)e.visible=!1;else if(e instanceof ie){Zd(e);for(let t of Object.keys(e.attributes)){let n=e.attributes[t];U(n)}}else if(e instanceof Je||e instanceof ae)nf&&console.warn(`BufferAttribute dispose not supported`,e.count);else if(e instanceof Array)for(let t of e)t instanceof T&&U(t);else if(e instanceof T){Zd(e);for(let t of Object.keys(e)){let n=e[t];n instanceof be&&U(n)}let t=e.uniforms;if(t)for(let e of Object.keys(t)){let n=t[e];n instanceof be?U(n):n instanceof Ye&&U(n.value)}}else e instanceof be?(Zd(e),Zd(e.source),e.source?.data instanceof ImageBitmap&&Zd(e.source.data)):e instanceof Pe?(Zd(e.boneTexture),e.boneTexture=null):e instanceof xe||!(e instanceof S)&&nf&&console.warn(`Unknown object type`,e)}}function Zd(e){e&&((nf||Ud()||Hd)&&console.warn(`🧨 FREE`,e),e instanceof ImageBitmap||`dispose`in e&&typeof e.dispose==`function`&&e.dispose())}function Qd(e){e instanceof x||e instanceof ze}var $d=new Set;function ef(e,t,n=null,r){if(r||(r=$d,r.clear()),!e)return r;let i=e[rf];if(i)for(let e of i)r.has(e)||n?.call(null,e)!==!1&&(r.add(e),t&&ef(e,!0,n,r));return r}function tf(e){return e[af]}var nf=A(`debugresourceusers`)||A(`debugmemory`),rf=Symbol(`needle-resource-users`),af=Symbol(`needle-resource-users-count`);function of(e,t){Zi(e,t,function(e,t){Wd&&!jd.raycasting&&(lf(rf,this,e,!1),lf(rf,this,t,!0))})}Wd&&(of(x.prototype,`material`),of(x.prototype,`geometry`),of(T.prototype,`map`),of(T.prototype,`bumpMap`),of(T.prototype,`alphaMap`),of(T.prototype,`normalMap`),of(T.prototype,`displacementMap`),of(T.prototype,`roughnessMap`),of(T.prototype,`metalnessMap`),of(T.prototype,`emissiveMap`),of(T.prototype,`specularMap`),of(T.prototype,`envMap`),of(T.prototype,`lightMap`),of(T.prototype,`aoMap`),of(T.prototype,`gradientMap`));function sf(e){if(Wd===!1)return;let t=e[rf];if(t)for(let n of t)lf(rf,n,e,!1)}Wd&&Zi(T.prototype,`dispose`,function(){sf(this)});var cf=0;function lf(e,t,n,r){if(cf>0)return;if(Array.isArray(n)){for(let i of n)lf(e,t,i,r);return}if(!n)return;let i=n[e];if(i||=new Set,r){if(t&&!i.has(t)){i.add(t);let e=n[af]||0;e+=1,n[af]=e,nf&&console.warn(`🟢 Added user of "${n.type}"`,t,n,e,`users:`,i)}}else if(t&&i.has(t)){i.delete(t);let e=n[af]||0;e>0&&(--e,n[af]=e),nf&&console.warn(`🔴 Removed user of "${n.type}"`,t,n,e,`users:`,i),e<=0&&(Bd.isLoading(n)||(Hd&&console.warn(`🔴 Removed all user of "${n.type}"`,n),Ud()&&U(n)))}n[e]=i}try{Zi(h.prototype,`render`,function(){cf++},function(){cf--})}catch(e){console.warn(`Could not wrap WebGLRenderer.render`,e)}var uf=Symbol(`NEEDLE_NEED_UPDATE_INSTANCE`),df=Symbol(`isUsingInstancing`),ff=Symbol(`instancingRenderer`),pf=Symbol(`instancingAutoUpdateBounds`),mf=class e{static isUsingInstancing(e){return e[df]===!0}static getRenderer(e){return e[ff]||null}setAutoUpdateBounds(t,n){let r=e.getRenderer(t);r&&(r[pf]=n)}static markDirty(t,n=!0){if(t&&(this.isUsingInstancing(t)&&(t[uf]=!0,t.matrixWorldNeedsUpdate=!0),n))for(let n of t.children)e.markDirty(n,!0)}},hf=new Map;function gf(e,t){if(!e)return;if(!t){console.warn(`No prototype found`,e,e.prototype,e.constructor);return}let n=hf.get(t);n&&n.apply(e)}function _f(e){let t=vf(e.prototype);hf.set(e,t)}function vf(e){return new yf(e)}var yf=class{$symbol;extensions;descriptors;constructor(e){this.$symbol=Symbol(`prototype-extension`),this.extensions=Object.keys(e),this.descriptors=[];for(let t=0;t.5),e.visible=t,e.visible}function Of(e){return e.needle_isActiveInHierarchy||Af(e)}function kf(e,t){e[df]=t}function Af(e){return mf.isUsingInstancing(e)}function jf(e,t){return Wt(e,t,!0,!0)}var Mf=Symbol(`isDestroyed`);function Nf(e){return e[Mf]}function Pf(e,t){e[Mf]=t}var Ff=Symbol(`isDontDestroy`);function If(e,t=!0){e[Ff]=t}var Lf=[],Rf=[];function zf(e,t=!0,n=!1){Lf.length=0,Rf.length=0,Bf(e,t,!0);for(let e of Lf)e.gameObject=null,e.context=null;for(let e of Rf)Pf(e,!0),n&&(U(e),Qd(e));Rf.length=0,Lf.length=0}function Bf(e,t=!0,n=!0){if(e==null)return;let r=e;if(r.isComponent){if(r[Ff])return;Lf.push(r);let e=r.gameObject;r.__internalDisable(),r.__internalDestroy(),r.gameObject=e;return}if(e[Ff])return;let i=e;Cf&&console.log(i),Rf.push(i);let a=i.userData?.components;if(a!=null&&Array.isArray(a)){let e=a.length;for(let n=0;nr)){for(let n of e.userData.components)t&&n?.isComponent===!0&&n instanceof t,yield n;if(n===!0)for(let n of e.children)yield*Hf(n,t,!0,r,i+1)}}function Uf(e,t,n,r=0){if(e){if(e.isObject3D||``+e,r>1e3){console.warn(`Failed to iterate components: too many levels`);return}if(e.userData?.components)for(let n=0;n0&&(l.animations=[...t.animations]);let u=t.parent;if(u&&u.add(l),n?.position)if(Array.isArray(n.position)){let e=new o;e.fromArray(n.position),l.worldPosition=e}else l.worldPosition=n.position;else l.position.copy(t.position);if(n?.rotation){if(n.rotation instanceof E)l.worldQuaternion=n.rotation;else if(n.rotation instanceof He)l.worldQuaternion=Tr().setFromEuler(n.rotation);else if(Array.isArray(n.rotation)){let e=new He;e.fromArray(n.rotation),l.worldQuaternion=Tr().setFromEuler(e)}}else l.quaternion.copy(t.quaternion);if(n?.scale)if(Array.isArray(n.scale)){let e=new o;e.fromArray(n.scale),n.scale=e}else l.scale.copy(n.scale);else l.scale.copy(t.scale);if(n?.parent&&n.parent!==`scene`){let r=null;if(r=typeof n.parent==`string`?Wt(n.parent,e.scene,!0):n.parent,r){let e=n.keepWorldPosition===!0?r.attach:r.add;e?e.call(r,l):console.error(`Invalid parent object`,r,`received when instantiating:`,t)}else console.warn(`could not find parent:`,n.parent)}for(let[e,n]of Object.entries(t.userData))e!==`components`&&(l.userData[e]=n);if(t.userData?.components){let e=t.userData.components,n=[];l.userData.components=n;for(let t=0;t`,s),i.push(s))}}else if(typeof n==`object`){let i=Yf(r,e,n,t);i===void 0?wf&&console.warn(`Could not find new instance for`,e,n):r[e]=i}}}}function Yf(e,t,n,r){if(n!=null){if(n.isComponent===!0){let i=n.gameObject;if(i){let a=i.uuid,o=r[a]?.clone;if(!o){wf&&console.log(`reference did not change`,t,e,n);return}let s=i.userData.components.indexOf(n);if(s>=0&&o.isObject3D)return wf&&console.log(t,a),o.userData.components[s];console.warn(`could not find component`,t,n)}}else if(n.isObject3D===!0){if(t===`gameObject`)return;let e=n;if(e){let i=r[e.uuid]?.clone;if(i)return wf&&console.log(t,`old`,n,`new`,i),i}}else if(n.isVector4||n.isVector3||n.isVector2||n.isQuaternion||n.isEuler)return n.clone();else if(n.isColor===!0)return n.clone();else if(n.isEventList===!0)return n.__internalOnInstantiate(r)}}function Xf(e,t){try{t?e(t):e()}catch(e){return console.error(e),!1}return!0}var Zf=A(`debugnewscripts`),Qf=A(`debughierarchy`),W=[];function $f(){return W.length>0}function ep(e){if(Zf&&console.log(`Register new components`,e.new_scripts.length,[...e.new_scripts],e.alias?`element: `+e.alias:e.hash,e),e.new_scripts_pre_setup_callbacks.length>0){for(let t of e.new_scripts_pre_setup_callbacks)t&&t();e.new_scripts_pre_setup_callbacks.length=0}if(!(e.new_scripts.length<=0)){W.length=0,e.new_scripts.length>0&&W.push(...e.new_scripts),e.new_scripts.length=0;for(let t=0;t=0&&t.splice(n,1)}function op(e,t){if(e){let n=e;if(n.onBeforeXR||n.onEnterXR||n.onUpdateXR||n.onLeaveXR||n.onXRControllerAdded||n.onXRControllerRemoved)return!(t!=null&&n.supportsXR?.(t)===!1)}return!1}var sp=!0;function cp(){sp=!0}function lp(e,t=!1){if(Ji.experimentalSmartHierarchyUpdate){if(!t&&!sp)return;sp=!1}if(e||=k.Current.scene,!e){console.trace(`Invalid call - no current context.`);return}let n=Ef(e);up(e,n,!0)||(Zf||M()?console.error(`Error updating hierarchy +Do you have circular references in your project? Click here for more information.`,e):console.error(`Failed to update active state in hierarchy of "`+e.name+`"`,e),console.warn(` ↑ this error might be caused by circular references. Please make sure you don't have files with circular references (e.g. one GLB 1 is loading GLB 2 which is then loading GLB 1 again).`))}function up(e,t,n,r=0){if(r>1e3)return console.warn(`Hierarchy is too deep (> 1000 level) - will abort updating active state`),!1;let i=Ef(e);if(t&&(t=i,t&&e.parent&&r===0)){let n=e.parent;t=n[Wi],t===void 0&&(n instanceof ne||(t=!0))}let a=e[Wi]!==t;if(a&&(e[Wi]=t,Qf&&console.warn(`ACTIVE CHANGE`,{name:e.name,activeSelf:i,visible:e.visible,activeInHierarchy:t,changed:a,go:e}),n)){let n=e.userData?.components;if(n)for(let e=n.length-1,r=-1;e>-1;e--){let r=n[e];if(t){if(r?.enabled){try{r.__internalAwake()}catch(e){console.error(e)}r.enabled&&r.__internalEnable()}}else r&&r.__didAwake&&r.enabled&&(r.__didEnable=!1,r.onDisable())}}let o=e.children;if(o){if(!a&&!t){let e=!0;for(let t=0,i=o.length;tbp||globalThis.NEEDLE_DEBUG_GETCOMPONENT===!0;function Sp(e){return e==null||e.isObject3D?e:e.object&&e.object.isObject3D?e.object:e}function Cp(e,t){if(!e||!e.userData.components)return t;let n=e.userData.components.indexOf(t);return n<0?t:(Ri.dispatchComponentLifecycleEvent(`removing-component`,t),t.gameObject=null,e.userData.components.splice(n,1),t)}function wp(e,t,n){return Mp(e,t)||Op(e,t,n)}var Tp;function Ep(){return Tp??=new jo(`addComponentIdProvider`)}function Dp(e,t,n=!0){e.userData||={},e.userData.components||(e.userData.components=[]),e.userData.components.push(t),t.gameObject=e,(t.guid===void 0||t.guid===`invalid`)&&(t.guid=Ep().generateUUID()),bf(e),Eu(t,t.context);try{n&&t.__internalAwake&&(dp(e),t.activeAndEnabled&&t.__internalAwake()),Ri.dispatchComponentLifecycleEvent(`component-added`,t)}catch(e){console.error(e)}return t}function Op(e,t,n,r){if(typeof t==`function`){let i=new t;n&&i.__internalNewInstanceCreated(n);let a=!0;return r?.callAwake!=null&&(a=r.callAwake),Dp(e,i,a)}if(t.destroyed)return console.warn(`Can not move/add a destroyed component`,t),t;if(t.gameObject===e)return t;if(t.gameObject&&t.gameObject.userData?.components){let e=t.gameObject.userData.components.indexOf(t);t.gameObject.userData.components.splice(e,1)}if(e.userData||={},!e.userData.components)e.userData.components=[];else if(e.userData.components.includes(t))return t;return e.userData.components.push(t),t.gameObject=e,(t.guid===void 0||t.guid===`invalid`)&&(t.guid=Ep().generateUUID()),n&&t._internalInit(n),Eu(t,t.context),t}function kp(e){if(e.gameObject&&e.gameObject.userData.components){let t=e.gameObject.userData.components.indexOf(e);e.gameObject.userData.components.splice(t,1)}e.__internalDisable&&e.__internalDisable(),ip(e,e.context??B.Current),e.destroy(),e.gameObject=null}var Ap=!1;function jp(e,t,n){if(e==null)return null;if(!e.isObject3D)return console.error(`Object is not object3D`),null;if(!e?.userData?.components||(typeof t==`string`&&(Ap||(Ap=!0,console.warn(`Accessing components by name is not supported. +Please use the component type instead. This may keep working in local development but it will fail when bundling your application. + +You can import other modules your main module to get access to types +or if you use npmdefs you can make types available globally using globalThis: +https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),xp()&&console.log(`[onGetComponent] FIND`,t),t==null))return null;for(let r=0;r{if(t.length){let e=t[0];if(typeof e==`string`&&e.includes(`[hmr] Failed to reload `)){console.log(`[Needle Engine] Hot reloading failed`),window.location.reload();return}}e.apply(console,t)}}function Yp(e){Bp&&console.log(`[HMR] Apply changes`,e,Object.keys(e)),Jp();for(let t of Object.keys(e))try{Vp=!0;let n=ji.get(t);if(!n){Bp&&console.log(`[HMR] Type not found: `+t);continue}let r=e[t],i=Hp.get(r.name),a=`[Needle Engine] Updating type: `+t,o=i?.length??-1;o>0?a+=` x`+o:a+=` (No instances registered)`,console.log(a);let s=Object.getOwnPropertyNames(n.prototype),c=Object.getOwnPropertyDescriptors(r.prototype);for(let r in c)c[r].writable&&(n.prototype[r]=e[t].prototype[r]);for(let e of s)c[e]||delete n.prototype[e];if(i){let e=new r,t=Object.getOwnPropertyDescriptors(e);for(let n of i){let i=n,a=i.isComponent===!0,o=a?i.activeAndEnabled:!0,s=a?i.context:void 0;try{if(a&&s&&ip(i,s),a&&o&&(i.enabled=!1),n.onBeforeHotReloadFields&&n.onBeforeHotReloadFields()===!1)continue;for(let i in t)if(t[i].writable){if(n[i]===void 0)n[i]=e[i];else if(typeof n[i]==`function`&&!n[i].prototype){let e=n[i];if(e.name===`bound `)continue;let t=e.name.substring(6),a=r.prototype[t];a&&(n[i]=a.bind(n))}}n.onAfterHotReloadFields&&n.onAfterHotReloadFields()}finally{a&&s&&rp(i,s),a&&o&&(i.enabled=!0)}}}}catch(e){if(Bp)console.error(e);else return!1}finally{Vp=!1,zn(Tn.Log,`Script changes applied (HMR)`)}return!0}var Xp=e({Behaviour:()=>K,Component:()=>K,GameObject:()=>G}),G=class e extends S{guid;static isDestroyed(e){return Nf(e)}static setActive(e,t,n=!0){e&&(Df(e,t),lp(e),t&&n&&np(B.Current,e))}static isActiveSelf(e){return Ef(e)}static isActiveInHierarchy(e){return Of(e)}static markAsInstancedRendered(e,t){kf(e,t)}static isUsingInstancing(e){return Af(e)}static foreachComponent(e,t,n=!0){return Vf(e,t,n)}static instantiateSynced(e,t){return e?zo(e,t):null}static instantiate(e,t=null){return`isAssetReference`in e,Wf(e,t)}static destroySynced(e,t,n=!0){if(!e)return;let r=e;t??=B.Current,Po(r,t.connection,n)}static destroy(e,t=!0){return zf(e,t)}static add(t,n,r){if(!(!t||!n)){if(t===n){console.warn(`Can not add object to self`,t);return}r||=B.Current,n.add(t),Df(t,!0),lp(t),r?e.foreachComponent(t,e=>{rp(e,r),!e.__internalDidAwakeAndStart&&r.new_script_start.includes(e)===!1&&r.new_script_start.push(e)},!0):console.warn(`Missing context`)}}static remove(t){t&&(t.parent?.remove(t),Df(t,!1),lp(t),e.foreachComponent(t,e=>{tp(e)},!0))}static invokeOnChildren(e,t,...n){this.invoke(e,t,!0,n)}static invoke(e,t,n=!1,...r){e&&this.foreachComponent(e,e=>{let n=e[t];n&&typeof n==`function`&&n?.call(e,...r)},n)}static addNewComponent(e,t,n,r=!0){return Op(e,t,n,{callAwake:r})}static addComponent(e,t,n,r){return Op(e,t,n,r)}static moveComponent(e,t){return Op(e,t)}static removeComponent(e){return Cp(e.gameObject,e),e}static getOrAddComponent(e,t){return wp(e,t)}static getComponent(e,t){return e===null?null:Mp(e,t)}static getComponents(e,t,n=null){return e===null?n??[]:Np(e,t,n)}static findByGuid(e,t){return jf(e,t)}static findObjectOfType(e,t,n=!0){return Rp(e,t??B.Current,n)}static findObjectsOfType(e,t){let n=[];return zp(e,n,t),n}static getComponentInChildren(e,t,n=!1){return Pp(e,t,n)}static getComponentsInChildren(e,t,n=null){return Fp(e,t,n??void 0)}static getComponentInParent(e,t){return Ip(e,t)}static getComponentsInParent(e,t,n=null){return Lp(e,t,n)}static getAllComponents(e){let t=e.userData?.components;return t?[...t]:[]}static*iterateComponents(e){let t=e?.userData?.components;if(t&&Array.isArray(t))for(let e=0;e=.5),!this.__didAwake){this.__isEnabled=e;return}e?this.__internalEnable():this.__internalDisable()}get worldPosition(){return Or(this.gameObject)}set worldPosition(e){kr(this.gameObject,e)}setWorldPosition(e,t,n){Ar(this.gameObject,e,t,n)}get worldQuaternion(){return Pr(this.gameObject)}set worldQuaternion(e){Fr(this.gameObject,e)}setWorldQuaternion(e,t,n,r){Ir(this.gameObject,e,t,n,r)}get worldEuler(){return Xr(this.gameObject)}set worldEuler(e){Zr(this.gameObject,e)}get worldRotation(){return this.gameObject.worldRotation}set worldRotation(e){this.setWorldRotation(e.x,e.y,e.z,!0)}setWorldRotation(e,t,n,r=!0){ei(this.gameObject,e,t,n,r)}static _forward=new o;get forward(){return e._forward.set(0,0,-1).applyQuaternion(this.worldQuaternion)}static _right=new o;get right(){return e._right.set(1,0,0).applyQuaternion(this.worldQuaternion)}static _up=new o;get up(){return e._up.set(0,1,0).applyQuaternion(this.worldQuaternion)}_eventListeners=new Map;addEventListener(e,t){this._eventListeners[e]=this._eventListeners[e]||[],this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let n=this._eventListeners[e].indexOf(t);n>=0&&this._eventListeners[e].splice(n,1)}dispatchEvent(e){if(!e||!this._eventListeners[e.type])return!1;let t=this._eventListeners[e.type];for(let n=0;n0}var em=class{_context;get context(){return this._context??B.Current}get isStateMachineBehaviour(){return!0}},tm=class{name;nameHash;normalizedTime;length;speed;action;hasTransitions;constructor(e,t,n,r){this.name=e.name,this.nameHash=e.hash,this.normalizedTime=t,this.length=n,this.speed=r,this.action=e.motion.action||null,this.hasTransitions=e.transitions?.length>0||!1}};function nm(e,t){return{name:`Empty`,isLooping:!1,guid:t?.generateUUID()??g.generateUUID(),index:-1,clip:new Se(e,0,[])}}var rm;(function(e){e[e.If=1]=`If`,e[e.IfNot=2]=`IfNot`,e[e.Greater=3]=`Greater`,e[e.Less=4]=`Less`,e[e.Equals=6]=`Equals`,e[e.NotEqual=7]=`NotEqual`})(rm||={});var im;(function(e){e[e.Float=1]=`Float`,e[e.Int=3]=`Int`,e[e.Bool=4]=`Bool`,e[e.Trigger=9]=`Trigger`})(im||={});var q=A(`debuganimatorcontroller`),am=A(`debugrootmotion`),om=class e{static createFromClips(t,n={looping:!1,autoTransition:!0,transitionDuration:0}){let r=[];for(let e=0;e=this.model.layers.length){console.warn(`invalid layer`);return}let i=this.model.layers[t].stateMachine;for(let t of i.states)if(t.name===e||t.hash===e){q&&console.log(`transition to `,t),this.transitionTo(t,r,n);return}console.warn(`Could not find `+e+` to play`)}reset(){this.setStartTransition()}setBool(e,t){let n=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(t=>t[n]===e).forEach(e=>e.value=t)}getBool(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??!1}setFloat(e,t){let n=typeof e==`string`?`name`:`hash`,r=this.model?.parameters?.filter(t=>t[n]===e);return r.forEach(e=>e.value=t),r?.length>0}getFloat(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??0}setInteger(e,t){let n=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(t=>t[n]===e).forEach(e=>e.value=t)}getInteger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??0}setTrigger(e){q&&console.log(`SET TRIGGER`,e);let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(n=>n[t]===e).forEach(e=>e.value=!0)}resetTrigger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.filter(n=>n[t]===e).forEach(e=>e.value=!1)}getTrigger(e){let t=typeof e==`string`?`name`:`hash`;return this.model?.parameters?.find(n=>n[t]===e)?.value??!1}isInTransition(){return this._activeStates.length>1}setSpeed(e){this._speed=e}_speed=1;FindState(e){return this.findState(e)}findState(e){if(!e)return null;if(Array.isArray(this.model.layers)){for(let t of this.model.layers)for(let n of t.stateMachine.states)if(n.name===e||n.hash==e)return n}return null}getCurrentStateInfo(){if(!this._activeState)return null;let e=this._activeState.motion.action;if(!e)return null;let t=this._activeState.motion.clip.duration,n=t<=0?0:Math.abs(e.time/t);return new tm(this._activeState,n,t,this._speed)}get currentAction(){return this._activeState&&this._activeState.motion.action||null}normalizedStartOffset=0;animator;model;get context(){return this.animator?.context}get mixer(){return this._mixer}dispose(){if(this._mixer.stopAllAction(),this.animator){this._mixer.uncacheRoot(this.animator.gameObject);for(let e of this._activeStates)e.motion.clip&&this.mixer.uncacheAction(e.motion.clip,this.animator.gameObject)}this.context?.animations.unregisterAnimationMixer(this._mixer)}bind(e){e?this.animator!==e&&(this._mixer&&(this._mixer.stopAllAction(),this.context?.animations.unregisterAnimationMixer(this._mixer)),this.animator=e,this._mixer=new he(this.animator.gameObject),this.context?.animations.registerAnimationMixer(this._mixer),this.createActions(this.animator)):console.error(`AnimatorController.bind: animator is null`)}clone(){if(typeof this.model==`string`)return console.warn(`AnimatorController has not been resolved, can not create model from string`,this.model),null;q&&console.warn(`AnimatorController clone()`,this.model);let t=Gt(this.model,(t,n,r)=>r==null?!0:!(r.type===`Object3D`||r.isObject3D===!0||ri(r)||r.tracks!==void 0||r instanceof e));return console.assert(t!==this.model),new e(t)}update(e){if(!this.animator)return;this.evaluateTransitions(),this.updateActiveStates(e);let t=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&this.rootMotionHandler?.onBeforeUpdate(e),this._mixer.update(t),this.animator.applyRootMotion&&this.rootMotionHandler?.onAfterUpdate(e)}_mixer;_activeState;get activeState(){return this._activeState}constructor(e){this.model=e,q&&console.log(this)}_activeStates=[];updateActiveStates(e){for(let t=0;t1&&(q||M())&&console.warn(`Multiple layers are not supported yet `+this.animator?.name);for(let e of this.model.layers){let t=e.stateMachine;t.defaultState===void 0&&(q&&console.warn(`AnimatorController default state is undefined, will assign state 0 as default`,e),t.defaultState=0);let n=t.states[t.defaultState];this.transitionTo(n,0,this.normalizedStartOffset);break}}evaluateTransitions(){let e=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;e=!0}let t=this._activeState,n=t.motion.action,r=0;for(let e of t.transitions){if(++r,!e.hasExitTime&&e.conditions.length<=0)continue;let i=!0;for(let t of e.conditions)if(!this.evaluateCondition(t)){i=!1;break}if(i)if(n){let r=t.motion.clip.duration,i=r<=0?1:Math.abs(n.time/r),a=e.exitTime;n.timeScale<0&&(a=1-a);let o=!1;if(e.hasExitTime?n.timeScale>0?o=i>=e.exitTime:n.timeScale<0&&(o=1-i>=e.exitTime):o=!0,o){for(let t of e.conditions){let e=this.model.parameters.find(e=>e.name===t.parameter);e?.type===im.Trigger&&e.value&&(e.value=!1)}if(n.clampWhenFinished=!0,q){let t=this.getState(e.destinationState,0);console.log(`Transition to ${e.destinationState} / ${t?.name}`,e,` +Timescale: `+n.timeScale,` +Normalized time: `+i.toFixed(3),` +Exit Time: `+a,e.hasExitTime)}this.transitionTo(e.destinationState,e.duration,e.offset);return}}else{this.transitionTo(e.destinationState,e.duration,e.offset);return}}n&&this.setTimescale(n,t);let i=!1;if(t.motion.isLooping&&n&&(n.time>=n.getClip().duration?(i=!0,n.reset(),n.time=0,n.play()):n.time<=0&&n.timeScale<0&&(i=!0,n.reset(),n.time=n.getClip().duration,n.play())),!i&&t&&!e&&n&&this.animator&&t.behaviours){let e=n?.getClip().duration,r=n.time/e,i=new tm(this._activeState,r,e,this._speed);for(let e of t.behaviours)e.instance&&e.instance.onStateUpdate?.call(e.instance,this.animator,i,0)}}setTimescale(e,t){let n=t.speed??1;t.speedParameter&&(n*=this.getFloat(t.speedParameter)),n!==void 0&&(e.timeScale=n*this._speed)}getState(e,t){return typeof e==`number`&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(q&&console.warn(`AnimatorController default state is undefined: `,this.model,`Layer: `+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}_heldActions=[];releaseHeldActions(e){for(let t of this._heldActions)t.fadeOut(e);this._heldActions.length=0}transitionTo(e,t,n){if(!this.animator||(e=this.getState(e,0),!e?.motion||!e.motion.clip||!(e.motion.clip instanceof Se)))return;let r=this._activeState===e;if(r){let t=e.motion;if(!t.action_loopback&&t.clip){let e=this.rootMotionHandler?this.animator.gameObject.matrix.clone():null;this._mixer.uncacheAction(t.clip,this.animator.gameObject),e&&e.decompose(this.animator.gameObject.position,this.animator.gameObject.quaternion,this.animator.gameObject.scale),t.action_loopback=this.createAction(t.clip)}}if(this._activeState?.behaviours&&this._activeState.motion.action){let e=this._activeState?.motion.clip.duration,t=this._activeState.motion.action.time/e,n=new tm(this._activeState,t,e,this._speed);for(let e of this._activeState.behaviours)e.instance?.onStateExit?.call(e.instance,this.animator,n,0)}let i=this._activeState?.motion.action;r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=i);let a=this._activeState;this._activeState=e;let o=e.motion?.action,s=e.motion.clip;if(s?.duration<=0&&s.tracks.length<=0?i&&this._heldActions.push(i):i&&(i.fadeOut(t),this.releaseHeldActions(t)),o){if(n=Math.max(0,Math.min(1,n)),e.cycleOffsetParameter){let t=this.getFloat(e.cycleOffsetParameter);typeof t==`number`?(t<0&&(t+=1),n+=t,n%=1):q&&console.warn(`AnimatorController cycle offset parameter is not a number`,e.cycleOffsetParameter)}else typeof e.cycleOffset==`number`&&(n+=e.cycleOffset,n%=1);o.isRunning()&&o.stop(),o.reset(),o.enabled=!0,this.setTimescale(o,e);let i=e.motion.clip.duration;if(o.time=r?0:n*i,o.timeScale<0&&(o.time=i-o.time),o.clampWhenFinished=!0,o.setLoop(oe,0),t>0?o.fadeIn(t):o.weight=1,o.play(),window.requestAnimationFrame(()=>Pi.testIfRootCanAnimate(o)),this.rootMotionHandler&&this.rootMotionHandler.onStart(o),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){let t=new tm(e,n,i,this._speed);for(let e of this._activeState.behaviours)e.instance?.onStateEnter?.call(e.instance,this.animator,t,0)}}else q&&(e.__warned_no_motion||(e.__warned_no_motion=!0,console.warn(`No action`,e.motion,this)));q&&console.log(`TRANSITION FROM `+a?.name+` TO `+e.name,t,i,o,o?.getEffectiveTimeScale(),o?.getEffectiveWeight(),o?.isRunning(),o?.isScheduled(),o?.paused)}createAction(e){if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,this.animator?.gameObject),this.animator?.applyRootMotion){this.rootMotionHandler||=new lm(this);let t=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,t,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){let t=this.model.parameters.find(t=>t.name===e.parameter);if(!t)return!1;switch(e.mode){case rm.If:return t.value===!0;case rm.IfNot:return t.value===!1;case rm.Greater:return t.value>e.threshold;case rm.Less:return t.valuee.node.name===this.animator?.gameObject?.name);e?n.motion.clip=e.clip:(q||M())&&console.warn(`Could not find clip for animator "`+this.animator?.gameObject?.name+`"`,n.motion.clips.map(e=>e.node.name))}if(!n.motion.clip){q&&console.warn(`No clip assigned to state`,n);let e=new Se(void 0,void 0,[]);n.motion.clip=e}if(n.motion?.clip){let e=n.motion.clip;if(e instanceof Se){let t=this.createAction(e);n.motion.action=t}else (q||M())&&console.warn(`No valid animationclip assigned`,n)}if(n.behaviours&&Array.isArray(n.behaviours))for(let e of n.behaviours){if(!e?.typeName)continue;let t=ji.get(e.typeName);if(t){let r=new t;r.isStateMachineBehaviour&&(r._context=this.context??void 0,Es(r,e.properties),e.instance=r),q&&console.log(`Created animator controller behaviour`,n.name,e.typeName,e.properties,r)}else (q||M())&&console.warn(`Could not find AnimatorBehaviour type: `+e.typeName)}}}}*enumerateActions(){if(this.model.layers)for(let e of this.model.layers){let t=e.stateMachine;for(let e=0;e(n.createInterpolant=r,this.createdInterpolant=r(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=e=>{if(this.originalEvaluate)return t(e,this.originalEvaluate(e))},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}},cm=class e{static lastObjPosition={};static lastObjRotation={};static firstKeyframeRotation={};static spaceRotation={};static effectiveSpaceRotation={};static clipOffsetRotation={};set action(e){this._action=e}get action(){return this._action}get cacheId(){return this.root.uuid}_action;root;clip;positionWrapper=null;rotationWrapper=null;context;positionChange=new o;rotationChange=new E;constructor(t,n,r,i,a){if(this.context=t,this.root=n,this.clip=r,e.firstKeyframeRotation[this.cacheId]||(e.firstKeyframeRotation[this.cacheId]=new E),a){let t=a.values;e.firstKeyframeRotation[this.cacheId].set(t[0],t[1],t[2],t[3])}e.spaceRotation[this.cacheId]||(e.spaceRotation[this.cacheId]=new E),e.effectiveSpaceRotation[this.cacheId]||(e.effectiveSpaceRotation[this.cacheId]=new E),e.clipOffsetRotation[this.cacheId]=new E,a&&e.clipOffsetRotation[this.cacheId].set(a.values[0],a.values[1],a.values[2],a.values[3]).invert(),this.handlePosition(r,i),this.handleRotation(r,a)}onStart(t){if(t.getClip()!==this.clip)return;e.lastObjRotation[this.cacheId]||(e.lastObjRotation[this.cacheId]=this.root.quaternion.clone());let n=e.lastObjRotation[this.cacheId];if(e.spaceRotation[this.cacheId].copy(n),am){let e=new He().setFromQuaternion(n);console.log(`START`,this.clip.name,N.toDegrees(e.y),this.root.position.z)}}getClipRotationOffset(){return e.clipOffsetRotation[this.cacheId]}_prevTime=0;handlePosition(t,n){if(n){let t=this.root;am&&t.add(new _e),e.lastObjPosition[this.cacheId]||(e.lastObjPosition[this.cacheId]=this.root.position.clone());let r=new o,i=new o;this.positionWrapper=new sm(n,(e,n)=>{let a=this.action.getEffectiveWeight();return am&&t.position.length()>8&&t.position.set(0,t.position.y,0),e>this._prevTime&&(r.set(n[0],n[1],n[2]),r.sub(i),r.multiplyScalar(a),r.applyQuaternion(this.getClipRotationOffset()),r.applyQuaternion(t.quaternion),this.positionChange.copy(r)),i.fromArray(n),this._prevTime=e,n[0]=0,n[1]=0,n[2]=0,n})}}static identityQuaternion=new E;handleRotation(e,t){if(t){if(am){let n=t.values,r=new He().setFromQuaternion(new E(n[0],n[1],n[2],n[3]));console.log(e.name,t.name,`FIRST ROTATION IN TRACK`,N.toDegrees(r.y));let i=t.values.length-4,a=new E().set(n[i],n[i+1],n[i+2],n[i+3]),o=new He().setFromQuaternion(a);console.log(e.name,t.name,`LAST ROTATION IN TRACK`,N.toDegrees(o.y))}let n=0,r=new E,i=new E;this.rotationWrapper=new sm(t,(e,t)=>(e>n&&(i.set(t[0],t[1],t[2],t[3]),r.invert(),i.multiply(r),this.rotationChange.copy(i)),r.fromArray(t),n=e,t[0]=0,t[1]=0,t[2]=0,t[3]=1,t))}}onBeforeUpdate(e){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(t){return!this.action||(t*=this.action.getEffectiveWeight(),t<=0)?!1:(this.positionChange.multiplyScalar(t),this.rotationChange.slerp(e.identityQuaternion,1-t),!0)}},lm=class{controller;handler=[];root;basePosition=new o;baseQuaternion=new E;baseRotation=new He;constructor(e){this.controller=e}createClip(e,t,n){this.root=t,t&&`name`in t&&t.name;let r=this.findRootTrack(n,`.position`),i=this.findRootTrack(n,`.quaternion`),a=new cm(this.controller.context,t,n,r,i);this.handler.push(a);let o=e.clipAction(n);return a.action=o,o}onStart(e){for(let t of this.handler)t.onStart(e)}onBeforeUpdate(e){this.basePosition.copy(this.root.position),this.baseQuaternion.copy(this.root.quaternion);for(let t of this.handler)t.onBeforeUpdate(e)}summedPosition=new o;summedRotation=new E;onAfterUpdate(e){if(!(e<=0)){this.root.position.copy(this.basePosition),this.root.quaternion.copy(this.baseQuaternion),this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(let t of this.handler)t.onAfterUpdate(e)&&(this.summedPosition.add(t.positionChange),this.summedRotation.multiply(t.rotationChange));this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation)}}findRootTrack(e,t){let n=e.tracks;if(!n)return null;for(let e of n)if(e.name.endsWith(t))return e;return null}};new class extends ds{onSerialize(e,t){}onDeserialize(e,t){if(t.type===om&&e?.__type===`AnimatorController`)return new om(e)}}(om);var um=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},dm=A(`debuganimator`),fm=class extends K{get isAnimationComponent(){return!0}applyRootMotion=!1;hasRootMotion=!1;keepAnimatorControllerStateOnDisable=!1;set runtimeAnimatorController(e){this._animatorController&&this._animatorController.model===e||(e?e instanceof om?(e.animator&&e.animator!==this&&(console.warn(`AnimatorController can not be bound to multiple animators`,e.model?.name),e.model||console.error(`AnimatorController has no model`),e=new om(e.model)),this._animatorController=e,this._animatorController.bind(this)):(dm&&console.log(`Assign animator controller`,e,this),this._animatorController=new om(e),this.__didAwake&&this._animatorController.bind(this)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}getCurrentStateInfo(){return this.runtimeAnimatorController?.getCurrentStateInfo()}get currentAction(){return this.runtimeAnimatorController?.currentAction||null}get parametersAreDirty(){return this._parametersAreDirty}_parametersAreDirty=!1;get isDirty(){return this._isDirty}_isDirty=!1;Play(e,t=-1,n=-1/0,r=0){this.play(e,t,n,r)}play(e,t=-1,n=-1/0,r=0){this.runtimeAnimatorController?.play(e,t,n,r),this._isDirty=!0}Reset(){this.reset()}reset(){this._animatorController?.reset(),this._isDirty=!0}SetBool(e,t){this.setBool(e,t)}setBool(e,t){dm&&console.log(`setBool`,e,t),this.runtimeAnimatorController?.getBool(e)!==t&&(this._parametersAreDirty=!0),this.runtimeAnimatorController?.setBool(e,t)}GetBool(e){return this.getBool(e)}getBool(e){let t=this.runtimeAnimatorController?.getBool(e)??!1;return dm&&console.log(`getBool`,e,t),t}toggleBool(e){this.setBool(e,!this.getBool(e))}SetFloat(e,t){this.setFloat(e,t)}setFloat(e,t){this.runtimeAnimatorController?.getFloat(e)!==t&&(this._parametersAreDirty=!0),dm&&console.log(`setFloat`,e,t),this.runtimeAnimatorController?.setFloat(e,t)}GetFloat(e){return this.getFloat(e)}getFloat(e){let t=this.runtimeAnimatorController?.getFloat(e)??-1;return dm&&console.log(`getFloat`,e,t),t}SetInteger(e,t){this.setInteger(e,t)}setInteger(e,t){this.runtimeAnimatorController?.getInteger(e)!==t&&(this._parametersAreDirty=!0),dm&&console.log(`setInteger`,e,t),this.runtimeAnimatorController?.setInteger(e,t)}GetInteger(e){return this.getInteger(e)}getInteger(e){let t=this.runtimeAnimatorController?.getInteger(e)??-1;return dm&&console.log(`getInteger`,e,t),t}SetTrigger(e){this.setTrigger(e)}setTrigger(e){this._parametersAreDirty=!0,dm&&console.log(`setTrigger`,e),this.runtimeAnimatorController?.setTrigger(e)}ResetTrigger(e){this.resetTrigger(e)}resetTrigger(e){this._parametersAreDirty=!0,dm&&console.log(`resetTrigger`,e),this.runtimeAnimatorController?.resetTrigger(e)}GetTrigger(e){this.getTrigger(e)}getTrigger(e){let t=this.runtimeAnimatorController?.getTrigger(e);return dm&&console.log(`getTrigger`,e,t),t}IsInTransition(){return this.isInTransition()}isInTransition(){return this.runtimeAnimatorController?.isInTransition()??!1}SetSpeed(e){return this.setSpeed(e)}setSpeed(e){e!==this._speed&&(dm&&console.log(`setSpeed`,e),this._speed=e,this._animatorController?.animator==this&&this._animatorController.setSpeed(e))}set minMaxSpeed(e){this._speed=N.lerp(e.x,e.y,Math.random()),this._animatorController?.animator==this&&this._animatorController.setSpeed(this._speed)}set minMaxOffsetNormalized(e){this._normalizedStartOffset=N.lerp(e.x,e.y,Math.random()),this.runtimeAnimatorController?.animator==this&&(this.runtimeAnimatorController.normalizedStartOffset=this._normalizedStartOffset)}_speed=1;_normalizedStartOffset=0;_animatorController=null;awake(){dm&&console.log(`ANIMATOR`,this.name,this),this.gameObject&&this.initializeRuntimeAnimatorController()}_initializeWithRuntimeAnimatorController;initializeRuntimeAnimatorController(e=!1){let t=e||this.runtimeAnimatorController!==this._initializeWithRuntimeAnimatorController;if(this.runtimeAnimatorController&&t){let e=this.runtimeAnimatorController.clone();this._initializeWithRuntimeAnimatorController=e,e?(console.assert(this.runtimeAnimatorController!==e),this.runtimeAnimatorController=e,console.assert(this.runtimeAnimatorController===e),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.setSpeed(this._speed),this.runtimeAnimatorController.normalizedStartOffset=this._normalizedStartOffset):console.warn(`Could not clone animator controller`,this.runtimeAnimatorController)}}onDisable(){this.keepAnimatorControllerStateOnDisable||this._animatorController?.reset()}onBeforeRender(){this._isDirty=!1,this._parametersAreDirty=!1,!$p(this.gameObject)&&this._animatorController&&this._animatorController.update(1)}};um([F()],fm.prototype,`applyRootMotion`,void 0),um([F()],fm.prototype,`hasRootMotion`,void 0),um([F()],fm.prototype,`keepAnimatorControllerStateOnDisable`,void 0),um([F()],fm.prototype,`runtimeAnimatorController`,null);var pm=[],mm=class{enabled=!0;target;methodName;arguments;get canClone(){return this.target instanceof Object}constructor(e,t,n,r){this.target=e,this.methodName=t||null,this.arguments=n,r!=null&&(this.enabled=r)}invoke(...e){if(this.enabled!==!1){if(typeof this.target==`function`)this.arguments?(pm.length=0,e!==void 0&&e.length>0&&pm.push(...e),pm.push(...this.arguments),this.target(...this.arguments),pm.length=0):this.target(...e);else if(this.methodName!=null){let t=this.target[this.methodName];typeof t==`function`?this.arguments?(pm.length=0,e!==void 0&&e.length>0&&pm.push(...e),pm.push(...this.arguments),t.call(this.target,...pm),pm.length=0):t.call(this.target,...e):this.arguments?e!==void 0&&e.length>0?this.target[this.methodName]=e[0]:this.target[this.methodName]=this.arguments[0]:this.target[this.methodName]=e[0]}}}},hm=e=>/^[A-Z]*$/.test(e),gm=class extends Event{args},_m=class e{isEventList=!0;__internalOnInstantiate(t){let n=[];for(let e=0;ee instanceof Object&&e.uuid?t[e.uuid].clone:e?.isComponent?t[e.guid].clone:e);n.push(new mm(e.clone,r.methodName,i,r.enabled))}else M()&&console.warn(`Could not find target for event listener`)}}}return new e(n)}target;key;setEventTarget(e,t){if(this.key=e,this.target=t,this.key!==void 0){let e=``,t=!1;for(let n of this.key)t&&hm(n)&&(e+=`-`),t=!0,e+=n.toLowerCase();this.key=e}}get listenerCount(){return this.methods?.length??0}get isInvoking(){return this._isInvoking}_isInvoking=!1;methods=[];_methodsCopy=[];static from(...t){return new e(t)}constructor(e){if(this.methods=[],Array.isArray(e))for(let t of e)t instanceof mm?this.methods.push(t):typeof t==`function`&&this.methods.push(new mm(t));else typeof e==`function`&&this.methods.push(new mm(e))}invoke(...e){if(this._isInvoking)return console.warn(`Circular event invocation detected. Please check your event listeners for circular references.`,this),!1;if(this.methods?.length<=0)return!1;this._isInvoking=!0;try{this._methodsCopy.length=0,this._methodsCopy.push(...this.methods);for(let t of this._methodsCopy)t.invoke(...e);if(typeof this.target==`object`&&typeof this.key==`string`){let t=this.target.dispatchEvent;if(typeof t==`function`){let n=new gm(this.key);n.args=e,t.call(this.target,n)}}}finally{this._isInvoking=!1,this._methodsCopy.length=0}return!0}addEventListener(e){return this.methods.push(new mm(e)),()=>this.removeEventListener(e)}removeEventListener(e){if(!e)return!1;let t=!1;for(let n=this.methods.length-1;n>=0;n--)this.methods[n].target===e&&(this.methods[n].enabled=!1,this.methods.splice(n,1),t=!0);return t}removeAllEventListeners(){this.methods.length=0}},vm=Symbol(`previous-visibility`),ym=class e extends d{render(e,t,n){if(`addPass`in n)this._unsupported_effectcomposer_warning||=(console.warn(`RenderTexture.render() does not yet support EffectComposer`),!0);else if(n instanceof h){this.onBeforeRender();let r=n.getRenderTarget(),i=n.xr.enabled;n.xr.enabled=!1,n.setRenderTarget(this),n.clear(!0,!0,!0),n.render(e,t),n.setRenderTarget(r),n.xr.enabled=i,this.onAfterRender()}}static _userSet=new Set;onBeforeRender(){e._userSet.clear();let t=ef(this.texture,!0,null,e._userSet);for(let e of t)e instanceof x&&(e[vm]=e.visible,e.visible=!1)}onAfterRender(){for(let t of e._userSet)t instanceof x&&(t.visible=t[vm]);e._userSet.clear()}},bm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xm=A(`debuggroundprojection`),Sm=` +#ifdef NEEDLE_USE_CUBE_UV_MAP +varying vec3 vNeedleGroundProjectionWorldDirection; +#endif +`,Cm=` +${Sm} +uniform float needleGroundProjectionBlurriness; +uniform float needleGroundProjectionBlending; +uniform float needleGroundProjectionAlphaFactor; +uniform float needleGroundProjectionBackgroundIntensity; + +float needleGroundProjectionSmoothstep(float edge0, float edge1, float x) { + float t = clamp((x - edge0) / max(edge1 - edge0, 0.000001), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); +} + +float needleGroundProjectionDistance() { + return length(vec2(0.0, vMapUv.y)); +} + +float needleGroundProjectionBlurFactor(float needleGroundProjectionDistanceValue) { + return clamp(needleGroundProjectionSmoothstep(0.5, 1.0, needleGroundProjectionDistanceValue * 2.0), 0.0, 1.0); +} +`,wm=` +#ifdef USE_MAP + + float needleGroundProjectionDistanceValue = needleGroundProjectionDistance(); + float needleGroundProjectionBlurFactorValue = needleGroundProjectionBlurFactor(needleGroundProjectionDistanceValue); + vec4 sampledDiffuseColor; + + #ifdef NEEDLE_USE_CUBE_UV_MAP + sampledDiffuseColor = textureCubeUV( + map, + normalize( vNeedleGroundProjectionWorldDirection ), + needleGroundProjectionBlurriness * needleGroundProjectionBlurFactorValue + ); + #else + #ifdef USE_MIPMAP_BIAS + sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); + #else + sampledDiffuseColor = texture2D( map, vMapUv ); + #endif + #endif + + #ifdef DECODE_VIDEO_TEXTURE + + // use inline sRGB decode until browsers properly support SRGB8_ALPHA8 with video textures (#26516) + + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + + sampledDiffuseColor.rgb *= mix(1.0, needleGroundProjectionBackgroundIntensity, needleGroundProjectionBlurFactorValue); + diffuseColor *= sampledDiffuseColor; + +#endif +`,Tm=` +#ifdef USE_MAP + if (needleGroundProjectionBlending > 0.000001) { + float needleGroundProjectionBrightness = dot(diffuseColor.rgb, vec3(0.299, 0.587, 0.114)); + float needleGroundProjectionStepFactor = needleGroundProjectionBlending - needleGroundProjectionBrightness * 0.1; + diffuseColor.a *= pow( + 1.0 - needleGroundProjectionBlending * needleGroundProjectionSmoothstep( + 0.35 * needleGroundProjectionStepFactor, + 0.45 * needleGroundProjectionStepFactor, + needleGroundProjectionDistanceValue + ), + 5.0 + ); + } +#endif +diffuseColor.a *= needleGroundProjectionAlphaFactor; +`;function Em(e){let t=e.image?.height;if(!t)return null;let n=Math.log2(t)-2,r=1/t;return{texelWidth:1/(3*Math.max(2**n,112)),texelHeight:r,maxMip:n}}function Dm(e){let t=e.userData;return t.needleGroundProjectionUniforms??={needleGroundProjectionBlurriness:{value:0},needleGroundProjectionBlending:{value:0},needleGroundProjectionAlphaFactor:{value:1},needleGroundProjectionBackgroundIntensity:{value:1}}}function Om(e,t){let n=Dm(e);e.onBeforeCompile=e=>{e.uniforms.needleGroundProjectionBlurriness=n.needleGroundProjectionBlurriness,e.uniforms.needleGroundProjectionBlending=n.needleGroundProjectionBlending,e.uniforms.needleGroundProjectionAlphaFactor=n.needleGroundProjectionAlphaFactor,e.uniforms.needleGroundProjectionBackgroundIntensity=n.needleGroundProjectionBackgroundIntensity,e.vertexShader=e.vertexShader.replace(`#include `,`#include \n${Sm}`).replace(`#include `,`#include +#ifdef NEEDLE_USE_CUBE_UV_MAP + // GroundedSkybox mirrors geometry on Z, so undo that before deriving the sampling direction. + vNeedleGroundProjectionWorldDirection = transformDirection( vec3( position.x, position.y, -position.z ), modelMatrix ); +#endif`),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +${Cm} +#include `).replace(`#include `,wm).replace(`#include `,`${Tm}\n#include `)};let r=e.defines??={},i=JSON.stringify(r),a=t.mapping===306?Em(t):null;a?(r.NEEDLE_USE_CUBE_UV_MAP=1,r.ENVMAP_TYPE_CUBE_UV=1,r.CUBEUV_TEXEL_WIDTH=a.texelWidth,r.CUBEUV_TEXEL_HEIGHT=a.texelHeight,r.CUBEUV_MAX_MIP=`${a.maxMip}.0`):(delete r.NEEDLE_USE_CUBE_UV_MAP,delete r.ENVMAP_TYPE_CUBE_UV,delete r.CUBEUV_TEXEL_WIDTH,delete r.CUBEUV_TEXEL_HEIGHT,delete r.CUBEUV_MAX_MIP),i!==JSON.stringify(r)&&(e.needsUpdate=!0)}var km=class extends K{applyOnAwake=!1;autoFit=!0;set radius(e){this._radius=e,this._projection&&this.updateProjection()}get radius(){return this._radius}_radius=50;set height(e){this._height=e,this._projection&&this.updateProjection()}get height(){return this._height}_height=3;set arBlending(e){this._arblending=e,this._needsTextureUpdate=!0}get arBlending(){return this._arblending}_arblending=0;_lastBackground;_lastRadius;_lastHeight;_projection;_watcher;awake(){this.applyOnAwake&&this.updateAndCreate()}onEnable(){this.context.time.frameCount>0&&this.applyOnAwake&&this.updateAndCreate(),this._watcher||(this._watcher=new en(this.context.scene,`background`),this._watcher.subscribeWrite(e=>{xm&&console.log(`Background changed`,this.context.scene.background),this._needsTextureUpdate=!0}))}onDisable(){this._watcher?.revoke(),this._projection?.removeFromParent()}onEnterXR(){this.activeAndEnabled&&(this._needsTextureUpdate=!0,this.updateProjection())}async onLeaveXR(){this.activeAndEnabled&&(await qt(1),this.updateProjection())}onBeforeRender(){if(this._projection&&this.scene.backgroundRotation&&this._projection.rotation.copy(this.scene.backgroundRotation),this._projection&&this.context.scene.background instanceof be){let e=this.context.scene.backgroundBlurriness??0,t=this._lastBlurriness!==e;this.updateProjectionMaterial(this.context.scene.background,t||this._needsTextureUpdate)}}updateAndCreate(){this.updateProjection(),this._watcher?.apply()}_needsTextureUpdate=!1;updateProjection(){if(!this.context.scene.background){this._projection?.removeFromParent();return}let e=this.context.scene.background;if(!(e instanceof be)){this._projection?.removeFromParent();return}if((this.context.xr?.isPassThrough||this.context.xr?.isAR)&&this.arBlending===0){this._projection?.removeFromParent();return}if(!this.gameObject||this.destroyed)return;let t=!0,n=e!==this._lastBackground||this._height!==this._lastHeight||this._radius!==this._lastRadius;if(!this._projection||n){xm&&console.log(`Create/Update Ground Projection`,e.name),this._projection?.removeFromParent();try{this._projection=new st(e,this._height,this._radius,64),Om(this._projection.material,e)}catch(e){console.error(`Error creating three GroundProjection`,e);return}this._projection.position.y=this._height-0,this._projection.name=`GroundProjection`,ui(this._projection,!1)}else t=!1;if(this._projection.parent||this.gameObject.add(this._projection),this.autoFit&&t){this._projection.updateWorldMatrix(!0,!0);let e=fi(this.context.scene.children,[this._projection]),t=e.min.y;if(t<1/0){let n=P();n.x=e.min.x+(e.max.x-e.min.x)*.5;let r=zr(this.gameObject).x;n.y=t+this._height*r-0,n.z=e.min.z+(e.max.z-e.min.z)*.5,kr(this._projection,n)}xm&&H.DrawWireBox3(e,65280,5)}this.updateProjectionMaterial(e,!0),this._lastBackground=e,this._lastHeight=this._height,this._lastRadius=this._radius,this._needsTextureUpdate=!1}_blurrynessShader=null;_lastBlurriness=-1;updateProjectionMaterial(e,t=!1){if(!this._projection)return;let n=this.context.scene.backgroundBlurriness??0,r=e.mapping===306,i=e;if(!r&&n>.001){let r=!!this._projection.material.map&&this._projection.material.map!==e;t||!r?i=this.updateBlurriness(e,n):this._projection.material.map&&(i=this._projection.material.map)}this._projection.material.map!==i&&(this._projection.material.map=i);let a=this._projection.material.map??e;a.mapping=e.mapping,Om(this._projection.material,a);let o=Dm(this._projection.material);o.needleGroundProjectionBlurriness.value=r?n:0,o.needleGroundProjectionBackgroundIntensity.value=this.context.scene.backgroundIntensity??1;let s=this._projection.material.transparent;this._projection.material.transparent=this.context.xr?.isAR===!0&&this.arBlending>1e-6,o.needleGroundProjectionBlending.value=this._projection.material.transparent?this.arBlending:0,o.needleGroundProjectionAlphaFactor.value=this.context.isInPassThrough?.95:1,s!==this._projection.material.transparent&&(this._projection.material.needsUpdate=!0),this._projection.material.depthTest=!0,this._projection.material.depthWrite=!1,this._lastBlurriness=n,this._needsTextureUpdate=!1}updateBlurriness(e,t){xm&&console.log(`Update Blurriness`,t),this._blurrynessShader??=new Ve({name:`GroundProjectionBlurriness`,uniforms:{map:{value:e},blurriness:{value:t}},vertexShader:Am,fragmentShader:jm}),this._blurrynessShader.depthWrite=!1,this._blurrynessShader.uniforms.map.value=e,this._blurrynessShader.uniforms.blurriness.value=t,e.needsUpdate=!0;let n=ai.copyTexture(e,this._blurrynessShader);return n.mapping=e.mapping,n}};bm([F()],km.prototype,`applyOnAwake`,void 0),bm([F()],km.prototype,`autoFit`,void 0),bm([F()],km.prototype,`radius`,null),bm([F()],km.prototype,`height`,null),bm([F()],km.prototype,`arBlending`,null);var Am=` + varying vec2 vUv; + + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`,jm=` + uniform sampler2D map; + uniform float blurriness; + varying vec2 vUv; + + const float PI = 3.14159265359; + + // Gaussian function + float gaussian(float x, float sigma) { + return exp(-(x * x) / (2.0 * sigma * sigma)) / (sqrt(2.0 * PI) * sigma); + } + + // Custom smoothstep function for desired falloff + float customSmoothstep(float edge0, float edge1, float x) { + float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return t * t * (3.0 - 2.0 * t); + } + + void main() { + vec2 center = vec2(0.0, 0.0); + vec2 pos = vUv; + pos.x = 0.0; // Only consider vertical distance + float distance = length(pos - center); + + // Calculate blur amount based on custom falloff + float blurAmount = customSmoothstep(0.5, 1.0, distance * 2.0); + blurAmount = clamp(blurAmount, 0.0, 1.0); // Ensure blur amount is within valid range + + // Gaussian blur + vec2 pixelSize = 1.0 / vec2(textureSize(map, 0)); + vec4 color = vec4(0.0); + float totalWeight = 0.0; + int blurSize = int(60.0 * min(1.0, blurriness) * blurAmount); // Adjust blur size based on distance and blurriness + if (blurSize <= 0) { + gl_FragColor = texture2D(map, vUv); + return; + } + float lodLevel = log2(float(blurSize)) * 0.5; // Compute LOD level + + for (int x = -blurSize; x <= blurSize; x++) { + for (int y = -blurSize; y <= blurSize; y++) { + vec2 offset = vec2(float(x), float(y)) * pixelSize * blurAmount; + float weight = gaussian(length(vec2(float(x), float(y))), 1000.0 * blurAmount); // Use a fixed sigma value + color += textureLod(map, vUv + offset, lodLevel) * weight; + totalWeight += weight; + } + } + + color = totalWeight > 0.0 ? color / totalWeight : texture2D(map, vUv); + + gl_FragColor = color; + + // #include + // #include + + // Uncomment to visualize blur amount + // gl_FragColor = vec4(blurAmount, 0.0, 0.0, 1.0); + } +`;function Mm(e){if(pd.active)return console.warn(`[OrbitControls] Can not fit camera while XR session is active`),null;let t=B.Current;if(!t)return console.warn(`[OrbitControls] No context found`),null;let n=e?.camera||t.mainCamera;if(!n)return console.warn(`No camera or controls found to fit camera to objects...`),null;e||={},e.autoApply=e.autoApply!==!1,e.minZoom||=0,e.maxZoom||=1/0;let{centerCamera:r,cameraNearFar:i=`auto`,fitOffset:a=1.1,fov:s=n instanceof C?n?.fov:-1}=e,c=new o,l=new o,u=n instanceof C?n.aspect:1,d=fi(e.objects||t.scene,void 0,n?.layers),f=d.clone();d.getCenter(l);let p=new o;if(d.getSize(p),n instanceof C&&n.updateProjectionMatrix(),n.updateMatrixWorld(),d.applyMatrix4(n.matrixWorldInverse),d.getSize(c),d.setFromCenterAndSize(l,c),Number.isNaN(c.x)||Number.isNaN(c.y)||Number.isNaN(c.z))return console.warn(`Camera fit size resultet in NaN`,n,d),null;if(c.length()<=1e-10)return console.warn(`Camera fit size is zero`,d),null;let m=s,h=2*Math.atan(Math.tan(m*Math.PI/360/2)*u)/Math.PI*360,g=c.y/(2*Math.atan(Math.PI*m/360)),_=c.x/(2*Math.atan(Math.PI*h/360)),v=a*Math.max(g,_)+c.z/2;e.maxZoom=v*10,e.minZoom=v*.01,e.debug===!0&&console.log(`Fit camera to objects`,{fitHeightDistance:g,fitWidthDistance:_,distance:v,verticalFov:m,horizontalFov:h});let ee=.05,y=l.clone();if(y.y-=c.y*ee,e.targetOffset&&(e.targetOffset.x!==void 0&&(y.x+=e.targetOffset.x),e.targetOffset.y!==void 0&&(y.y+=e.targetOffset.y),e.targetOffset.z!==void 0&&(y.z+=e.targetOffset.z)),e.relativeTargetOffset&&(e.relativeTargetOffset.x!==void 0&&(y.x+=e.relativeTargetOffset.x*c.x),e.relativeTargetOffset.y!==void 0&&(y.y+=e.relativeTargetOffset.y*c.y),e.relativeTargetOffset.z!==void 0&&(y.z+=e.relativeTargetOffset.z*c.z)),i==null||i==`auto`){let t=Rp(km),r=t?t.radius:0,i=Math.max(p.x,p.y,p.z,r);n instanceof C&&(n.near=v/100,n.far=i+v*10,n.updateProjectionMatrix()),t&&(e.maxZoom=Math.max(Math.min(e.maxZoom,r*.5),v))}e.currentZoom!==void 0&&(e.currentZoome.maxZoom&&(e.maxZoom=e.currentZoom*1.1));let b=l.clone();e.fitDirection?b.sub(new o().copy(e.fitDirection).multiplyScalar(1e6)):b.sub(n.worldPosition),r===`y`&&(b.y=0),b.normalize(),b.multiplyScalar(v),r===`y`&&(b.y+=-ee*4*v);let te=l.clone().sub(b);return e.cameraOffset&&(e.cameraOffset.x!==void 0&&(te.x+=e.cameraOffset.x),e.cameraOffset.y!==void 0&&(te.y+=e.cameraOffset.y),e.cameraOffset.z!==void 0&&(te.z+=e.cameraOffset.z)),e.relativeCameraOffset&&(e.relativeCameraOffset.x!==void 0&&(te.x+=e.relativeCameraOffset.x*c.x),e.relativeCameraOffset.y!==void 0&&(te.y+=e.relativeCameraOffset.y*c.y),e.relativeCameraOffset.z!==void 0&&(te.z+=e.relativeCameraOffset.z*c.z)),n.parent&&(te=n.parent.worldToLocal(te)),e.debug&&(H.DrawWireBox3(d,16777011,10),H.DrawWireBox3(f,65280,10)),e.autoApply&&(n.position.copy(te),n.lookAt(y),s>0&&n instanceof C&&(n.fov=s,n.updateProjectionMatrix())),{camera:n,position:te,lookAt:y,fov:e.fov}}var Nm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Pm=class extends K{constraintActive=!0;locked=!1;sources=[];setConstraintPosition(e){let t=this.sources[0];t&&(t.worldPosition=e)}};Nm([F()],Pm.prototype,`constraintActive`,void 0),Nm([F()],Pm.prototype,`locked`,void 0),Nm([F(S)],Pm.prototype,`sources`,void 0);var Fm=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}x(){return this.bb.readFloat32(this.bb_pos)}y(){return this.bb.readFloat32(this.bb_pos+4)}z(){return this.bb.readFloat32(this.bb_pos+8)}static sizeOf(){return 12}static createVec3(e,t,n,r){return e.prep(4,12),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(t),e.offset()}},Im=class{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}position(e){return(e||new Fm).__init(this.bb_pos,this.bb)}rotation(e){return(e||new Fm).__init(this.bb_pos+12,this.bb)}scale(e){return(e||new Fm).__init(this.bb_pos+24,this.bb)}static sizeOf(){return 36}static createTransform(e,t,n,r,i,a,o,s,c,l){return e.prep(4,36),e.prep(4,12),e.writeFloat32(l),e.writeFloat32(c),e.writeFloat32(s),e.prep(4,12),e.writeFloat32(o),e.writeFloat32(a),e.writeFloat32(i),e.prep(4,12),e.writeFloat32(r),e.writeFloat32(n),e.writeFloat32(t),e.offset()}},Lm=class e{bb=null;bb_pos=0;__init(e,t){return this.bb_pos=e,this.bb=t,this}static getRootAsSyncedTransformModel(t,n){return(n||new e).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSyncedTransformModel(t,n){return t.setPosition(t.position()+4),(n||new e).__init(t.readInt32(t.position())+t.position(),t)}guid(e){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__string(this.bb_pos+t,e):null}fast(){let e=this.bb.__offset(this.bb_pos,6);return e?!!this.bb.readInt8(this.bb_pos+e):!1}transform(e){let t=this.bb.__offset(this.bb_pos,8);return t?(e||new Im).__init(this.bb_pos+t,this.bb):null}dontSave(){let e=this.bb.__offset(this.bb_pos,10);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startSyncedTransformModel(e){e.startObject(4)}static addGuid(e,t){e.addFieldOffset(0,t,0)}static addFast(e,t){e.addFieldInt8(1,+t,0)}static addTransform(e,t){e.addFieldStruct(2,t,0)}static addDontSave(e,t){e.addFieldInt8(3,+t,0)}static endSyncedTransformModel(e){return e.endObject()}static finishSyncedTransformModelBuffer(e,t){e.finish(t)}static finishSizePrefixedSyncedTransformModelBuffer(e,t){e.finish(t,void 0,!0)}},Rm;(function(e){e[e.Average=0]=`Average`,e[e.Multiply=1]=`Multiply`,e[e.Minimum=2]=`Minimum`,e[e.Maximum=3]=`Maximum`})(Rm||={});var zm;(function(e){e[e.Discrete=0]=`Discrete`,e[e.Continuous=1]=`Continuous`})(zm||={});var J;(function(e){e[e.None=0]=`None`,e[e.FreezePositionX=2]=`FreezePositionX`,e[e.FreezePositionY=4]=`FreezePositionY`,e[e.FreezePositionZ=8]=`FreezePositionZ`,e[e.FreezePosition=14]=`FreezePosition`,e[e.FreezeRotationX=16]=`FreezeRotationX`,e[e.FreezeRotationY=32]=`FreezeRotationY`,e[e.FreezeRotationZ=64]=`FreezeRotationZ`,e[e.FreezeRotation=112]=`FreezeRotation`,e[e.FreezeAll=126]=`FreezeAll`})(J||={});var Bm;(function(e){e[e.None=0]=`None`,e[e.X=2]=`X`,e[e.Y=4]=`Y`,e[e.Z=8]=`Z`,e[e.All=-1]=`All`})(Bm||={});var Vm=function(e,t){return function(n,r,i){Hm(n,r,i,e,t)}};function Hm(e,t,n,r,i){if(!i&&!r&&!e.onValidate)return;if(n!==void 0){console.error(`Invalid usage of validate decorator. Only fields can be validated.`,e,t,n),Ti(`Invalid usage of validate decorator. Only fields can be validated. Property: `+t,{type:Tn.Error});return}let a=``;if(a=typeof t==`string`?t:t.name,e.__internalAwake){let t=Symbol(a),n=e.__internalAwake;e.__internalAwake=function(){if(!this.onValidate){M()&&console.warn(`Usage of @validate decorate detected but there is no onValidate method in your class: "`+e.constructor?.name+`"`);return}if(this[t]===void 0){this[t]=this[a];let e=this[a];if(e instanceof w||e instanceof o||e instanceof Te||e instanceof E){let e=this[a];nn(e,()=>{this.onValidate(a)})}Object.defineProperty(this,a,{set:function(e){if(this[Ts]===!0)this[t]=e;else{r?.call(this,e);let n=this[t];this[t]=e,this.onValidate?.call(this,a,n)}},get:function(){return i?.call(this),this[t]}})}n.call(this)}}}var Um=function(e){return function(t,n,r){let i=``;i=typeof n==`string`?n:n.name;let a=e.prototype,o=Object.getOwnPropertyDescriptor(a,i);if(!o?.value){console.warn(`Can not apply prefix: type does not have method named`,n,e);return}let s=o.value,c=t[i];Object.defineProperty(a,i,{value:function(...e){let t=c?.call(this,...e);if(t instanceof Promise){t.then(t=>{if(t!==!1)return s.call(this,...e)});return}if(t!==!1)return s.call(this,...e)}})}},Wm=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Gm=class{get isDirty(){return this.positionChanged||this.rotationChanged}positionChanged=!1;rotationChanged=!1;position;quaternion;_positionKeys=[`x`,`y`,`z`];_quaternionKeys=[`_x`,`_y`,`_z`,`_w`];reset(e=!1){if(this.positionChanged=!1,this.rotationChanged=!1,this.mute=!1,e){if(this.position)for(let e of this._positionKeys)delete this.position[e];if(this.quaternion)for(let e of this._quaternionKeys)delete this.quaternion[e]}}syncValues(){for(let e of this._positionKeys)this.position[e]=this.obj.position[e];for(let e of this._quaternionKeys)this.quaternion[e]=this.obj.quaternion[e]}mute=!1;applyValues(){if(this.positionChanged&&this.position)for(let e of this._positionKeys){let t=this.position[e];t!==void 0&&(this.obj.position[e]=t)}if(this.rotationChanged&&this.quaternion)for(let e of this._quaternionKeys){let t=this.quaternion[e];t!==void 0&&(this.obj.quaternion[e]=t)}}context;obj;_positionWatch;_rotationWatch;constructor(e,t){this.context=t,this.obj=e}start(e,t){this.reset(),e&&(this._positionWatch||=new en(this.obj.position,[`x`,`y`,`z`]),this._positionWatch.apply(),this.position={},this._positionWatch.subscribeWrite((e,t)=>{if(this.context.physics.engine?.isUpdating||this.mute)return;let n=this.position[t];Math.abs(n-e)<1e-5||(this.position[t]=e,this.positionChanged=!0)})),t&&(this._rotationWatch||=new en(this.obj.quaternion,[`_x`,`_y`,`_z`,`_w`]),this._rotationWatch.apply(),this.quaternion={},this._rotationWatch.subscribeWrite((e,t)=>{if(this.context.physics.engine?.isUpdating||this.mute)return;let n=this.quaternion[t];Math.abs(n-e)<1e-5||(this.quaternion[t]=e,this.rotationChanged=!0)}));let n=this.obj.matrixWorld.multiplyMatrices.bind(this.obj.matrixWorld),r=new ce;this.obj.matrixWorld.multiplyMatrices=(e,t)=>(this.context.physics.engine?.isUpdating||this.mute||r.equals(e)||(this.positionChanged=!0,this.rotationChanged=!0,r.copy(e)),n(e,t))}stop(){this._positionWatch?.revoke(),this._rotationWatch?.revoke()}},Km=class e extends K{get isRigidbody(){return!0}autoMass=!0;set mass(e){e!==this._mass&&(this._mass=e,this._propertiesChanged=!0,this.__didAwake&&(this.autoMass=!1))}get mass(){return this.autoMass?this.context.physics.engine?.getBody(this)?.mass()??-1:this._mass}_mass=0;useGravity=!0;centerOfMass=new o(0,0,0);constraints=J.None;isKinematic=!1;drag=0;angularDrag=1;detectCollisions=!0;sleepThreshold=.01;collisionDetectionMode=zm.Discrete;get lockPositionX(){return(this.constraints&J.FreezePositionX)!==0}get lockPositionY(){return(this.constraints&J.FreezePositionY)!==0}get lockPositionZ(){return(this.constraints&J.FreezePositionZ)!==0}get lockRotationX(){return(this.constraints&J.FreezeRotationX)!==0}get lockRotationY(){return(this.constraints&J.FreezeRotationY)!==0}get lockRotationZ(){return(this.constraints&J.FreezeRotationZ)!==0}set lockPositionX(e){e?this.constraints|=J.FreezePositionX:this.constraints&=~J.FreezePositionX}set lockPositionY(e){e?this.constraints|=J.FreezePositionY:this.constraints&=~J.FreezePositionY}set lockPositionZ(e){e?this.constraints|=J.FreezePositionZ:this.constraints&=~J.FreezePositionZ}set lockRotationX(e){e?this.constraints|=J.FreezeRotationX:this.constraints&=~J.FreezeRotationX}set lockRotationY(e){e?this.constraints|=J.FreezeRotationY:this.constraints&=~J.FreezeRotationY}set lockRotationZ(e){e?this.constraints|=J.FreezeRotationZ:this.constraints&=~J.FreezeRotationZ}set gravityScale(e){this._gravityScale=e}get gravityScale(){return this._gravityScale}_gravityScale=1;dominanceGroup=0;static tempPosition=new o;_propertiesChanged=!1;_currentVelocity=new o;_smoothedVelocity=new o;_smoothedVelocityGetter=new o;_lastPosition=new o;_watch;awake(){this._watch=void 0,this._propertiesChanged=!1}onEnable(){this._watch||=new Gm(this.gameObject,this.context),this._watch.start(!0,!0),this.startCoroutine(this.beforePhysics(),z.LateUpdate),M()&&(globalThis.NEEDLE_USE_RAPIER?Pc.RAPIER_PHYSICS.ready().then(async()=>{await qt(3),this.context.physics.engine?.getBody(this)||console.warn(`Rigidbody could not be created. Ensure \"${this.name}\" has a Collider component.`)}):console.warn(`Rigidbody could not be created: Rapier physics are explicitly disabled.`))}onDisable(){this._watch?.stop(),this.context.physics.engine?.removeBody(this)}onDestroy(){this.context.physics.engine?.removeBody(this)}onValidate(){this._propertiesChanged=!0}*beforePhysics(){for(;;)this._propertiesChanged&&(this._propertiesChanged=!1,this.context.physics.engine?.updateProperties(this)),this._watch?.isDirty?(this._watch.mute=!0,this._watch.applyValues(),this.context.physics.engine?.updateBody(this,this._watch.positionChanged,this._watch.rotationChanged),this._watch.reset()):this._watch?.syncValues(),this.captureVelocity(),yield}teleport(e,t=!0){this._watch?.reset(!0),t?this.gameObject.position.set(e.x,e.y,e.z):this.setWorldPosition(e.x,e.y,e.z),this.resetForcesAndTorques(),this.resetVelocities()}resetForces(e=!0){this.context.physics.engine?.resetForces(this,e)}resetTorques(e=!0){this.context.physics.engine?.resetTorques(this,e)}resetVelocities(){this.setVelocity(0,0,0),this.setAngularVelocity(0,0,0)}resetForcesAndTorques(){this.resetForces(),this.resetTorques()}wakeUp(){this.context.physics.engine?.wakeup(this)}get isSleeping(){return this.context.physics.engine?.isSleeping(this)}updateProperties(){return this._propertiesChanged=!1,this.context.physics.engine?.updateProperties(this)}applyForce(e,t,n=!0){this._propertiesChanged&&this.updateProperties(),this.context.physics.engine?.addForce(this,e,n)}applyImpulse(e,t=!0){this._propertiesChanged&&this.updateProperties(),this.context.physics.engine?.applyImpulse(this,e,t)}setForce(e,t,n,r=!0){this.context.physics.engine?.resetForces(this,r),typeof e==`number`?(t??=0,n??=0,this.context.physics.engine?.addForce(this,{x:e,y:t,z:n},r)):this.context.physics.engine?.addForce(this,e,r)}getVelocity(){let e=this.context.physics.engine?.getLinearVelocity(this);return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setVelocity(e,t,n,r=!0){if(e instanceof o){let t=e;this.context.physics.engine?.setLinearVelocity(this,t,r);return}t===void 0||n===void 0||this.context.physics.engine?.setLinearVelocity(this,{x:e,y:t,z:n},r)}getAngularVelocity(){let e=this.context.physics.engine?.getAngularVelocity(this);return e?(this._currentVelocity.x=e.x,this._currentVelocity.y=e.y,this._currentVelocity.z=e.z,this._currentVelocity):this._currentVelocity.set(0,0,0)}setAngularVelocity(e,t,n,r=!0){if(typeof e==`object`){let t=e;this.context.physics.engine?.setAngularVelocity(this,t,r);return}if(t===void 0||n===void 0||typeof t==`boolean`){console.warn(`setAngularVelocity expects either a Vec3 or 3 numbers`);return}this.context.physics.engine?.setAngularVelocity(this,{x:e,y:t,z:n},r)}setTorque(e,t,n){typeof e==`number`?this.setAngularVelocity(e,t,n):this.setAngularVelocity(e)}get smoothedVelocity(){return this._smoothedVelocityGetter.copy(this._smoothedVelocity),this._smoothedVelocityGetter.multiplyScalar(1/this.context.time.deltaTime)}setBodyFromGameObject(e=null){}captureVelocity(){let t=this.gameObject.matrixWorld;e.tempPosition.setFromMatrixPosition(t);let n=e.tempPosition.sub(this._lastPosition);this._lastPosition.copy(e.tempPosition),this._smoothedVelocity.lerp(n,this.context.time.deltaTime/.1)}};Wm([Vm()],Km.prototype,`autoMass`,void 0),Wm([F()],Km.prototype,`mass`,null),Wm([Vm(),F()],Km.prototype,`useGravity`,void 0),Wm([F(o)],Km.prototype,`centerOfMass`,void 0),Wm([Vm(),F()],Km.prototype,`constraints`,void 0),Wm([Vm(),F()],Km.prototype,`isKinematic`,void 0),Wm([Vm(),F()],Km.prototype,`drag`,void 0),Wm([Vm(),F()],Km.prototype,`angularDrag`,void 0),Wm([Vm(),F()],Km.prototype,`detectCollisions`,void 0),Wm([Vm(),F()],Km.prototype,`sleepThreshold`,void 0),Wm([Vm(),F()],Km.prototype,`collisionDetectionMode`,void 0),Wm([Vm()],Km.prototype,`_gravityScale`,void 0),Wm([Vm()],Km.prototype,`dominanceGroup`,void 0),new o,new E,new o;var qm=A(`debugsync`),Jm=`STRS`;Ac(Jm,Lm.getRootAsSyncedTransformModel);var Ym=new Oc;function Xm(e,t,n=!0){Ym.clear();let r=Ym.createString(e);Lm.startSyncedTransformModel(Ym),Lm.addGuid(Ym,r),Lm.addFast(Ym,n);let i=t.worldPosition,a=t.worldEuler,o=t.gameObject.scale;Lm.addTransform(Ym,Im.createTransform(Ym,i.x,i.y,i.z,a.x,a.y,a.z,o.x,o.y,o.z));let s=Lm.endSyncedTransformModel(Ym);return Ym.finish(s,Jm),Ym.asUint8Array()}var Zm=0,Qm=0;Va(e=>{let t=e.connection.currentServerUrl?.includes(`glitch`)?10:40;Qm=Math.floor(Zm/t),Zm=0,qm&&Qm>0&&console.log(`Sync Transform Fast Interval`,Qm)});var $m=class extends K{overridePhysics=!0;interpolatePosition=!0;interpolateRotation=!0;fastMode=!1;syncDestroy=!1;_model=null;_needsUpdate=!0;rb=null;_wasKinematic=!1;_receivedDataBefore=!1;_targetPosition;_targetRotation;_receivedFastUpdate=!1;_shouldRequestOwnership=!1;requestOwnership(){qm&&console.log(`Request ownership`),this._model?this._model.requestOwnership():(this._shouldRequestOwnership=!0,this._needsUpdate=!0)}freeOwnership(){this._model?.freeOwnership()}hasOwnership(){return this._model?.hasOwnership??void 0}isOwned(){return this._model?.isOwned}joinedRoomCallback=null;receivedDataCallback=null;awake(){qm&&console.log(`new instance`,this.guid,this),this._receivedDataBefore=!1,this._targetPosition=new o,this._targetRotation=new E,this.lastPosition=new o,this.lastRotation=new E,this.lastScale=new o,this.rb=G.getComponentInChildren(this.gameObject,Km),this.rb&&(this._wasKinematic=this.rb.isKinematic),this.receivedUpdate=!0,this._model=new tl(this.context.connection,this.guid),this.context.connection.isConnected&&this.tryGetLastState(),this.joinedRoomCallback=this.tryGetLastState.bind(this),this.context.connection.beginListen(Xc.JoinedRoom,this.joinedRoomCallback),this.receivedDataCallback=this.onReceivedData.bind(this),this.context.connection.beginListenBinary(Jm,this.receivedDataCallback)}onDestroy(){this.syncDestroy&&Fo(this.guid,this.context.connection),this._model=null,this.context.connection.stopListen(Xc.JoinedRoom,this.joinedRoomCallback),this.context.connection.stopListenBinary(Jm,this.receivedDataCallback)}tryGetLastState(){let e=this.context.connection.tryGetState(this.guid);e&&this.onReceivedData(e)}tempEuler=new He;onReceivedData(e){if(!this.destroyed&&typeof e.guid==`function`&&e.guid()===this.guid){qm&&console.log(`new data`,this.context.connection.connectionId,this.context.time.frameCount,this.guid,e),this.receivedUpdate=!0,this._receivedFastUpdate=e.fast();let t=e.transform();if(t){mf.markDirty(this.gameObject,!0);let e=t.position();e&&(this.interpolatePosition&&this._targetPosition?.set(e.x(),e.y(),e.z()),(!this.interpolatePosition||!this._receivedDataBefore)&&this.setWorldPosition(e.x(),e.y(),e.z()));let n=t.rotation();n&&(this.tempEuler.set(n.x(),n.y(),n.z()),this.interpolateRotation&&this._targetRotation.setFromEuler(this.tempEuler),(!this.interpolateRotation||!this._receivedDataBefore)&&Zr(this.gameObject,this.tempEuler));let r=t.scale();r&&this.gameObject.scale.set(r.x(),r.y(),r.z())}this._receivedDataBefore=!0}}onEnable(){this.lastPosition.copy(this.worldPosition),this.lastRotation.copy(this.worldQuaternion),this.lastScale.copy(this.gameObject.scale),this._needsUpdate=!0,this._model&&this._model.updateIsOwned()}onDisable(){this._model&&this._model.freeOwnership()}receivedUpdate=!1;lastPosition;lastRotation;lastScale;onBeforeRender(){if(!this.activeAndEnabled||!this.context.connection.isConnected)return;if(!this.context.connection.isInRoom||!this._model){qm&&console.log(`no model or room`,this.name,this.guid,this.context.connection.isInRoom);return}this._shouldRequestOwnership&&(this._shouldRequestOwnership=!1,this._model.requestOwnership());let e=this.worldPosition,t=this.worldQuaternion,n=this.gameObject.scale;if(this._model.isOwned&&!this.receivedUpdate){let r=this._model.hasOwnership||this.fastMode?1e-4:.001;(e.distanceTo(this.lastPosition)>r||t.angleTo(this.lastRotation)>r||n.distanceTo(this.lastScale)>r)&&(this._model.hasOwnership?this._needsUpdate=!0:(qm&&console.log(this.guid,`reset because not owned but`,this.gameObject.name,this.lastPosition),this.worldPosition=this.lastPosition,e.copy(this.lastPosition),this.worldQuaternion=this.lastRotation,t.copy(this.lastRotation),this.gameObject.scale.copy(this.lastScale),mf.markDirty(this.gameObject,!0),this._needsUpdate=!1))}if(this._model&&!this._model.hasOwnership&&this._model.isOwned&&this._receivedDataBefore){let e=this._receivedFastUpdate||this.fastMode?.5:.3,t=!1;if(this.interpolatePosition&&this._targetPosition){let n=this.worldPosition;n.lerp(this._targetPosition,e),this.worldPosition=n,t=!0}if(this.interpolateRotation&&this._targetRotation){let n=this.worldQuaternion;n.slerp(this._targetRotation,e),this.worldQuaternion=n,t=!0}t&&mf.markDirty(this.gameObject,!0)}if(this.receivedUpdate=!1,this.lastPosition.copy(e),this.lastRotation.copy(t),this.lastScale.copy(n),!this._model||!this._model||this._model.hasOwnership===void 0||!this._model.hasOwnership)return;this.rb&&this.overridePhysics&&this._wasKinematic!==void 0&&(qm&&console.log(`reset kinematic`,this.rb.name,this._wasKinematic),this.rb.isKinematic=this._wasKinematic);let r=this.rb||this.fastMode;if(this._needsUpdate&&(this.context.time.frameCount%10==0||r)){if(Zm++,r&&Qm>0&&this.context.time.frameCount%Qm!==0)return;qm&&console.debug(`[SyncedTransform] Send update`,this.context.connection.connectionId,this.guid,this.gameObject.name,this.gameObject.guid),this._needsUpdate=!1;let e=Xm(this.guid,this,!!r);this.context.connection.sendBinary(e)}}},eh=class e{event;get deviceIndex(){return this.event.deviceIndex}get pointerId(){return this.event.pointerId}button;buttonName;get pressure(){return this.event.pressure}get used(){return this._used}_used=!1;use(){this._used||(this._used=!0,this.event.use())}_propagationStopped=!1;get propagationStopped(){return this._propagationStopped}stopPropagation(){this._propagationStopped=!0,this.event.stopImmediatePropagation()}stopImmediatePropagation(){this._propagationStopped=!0,this.event.stopImmediatePropagation()}z__pointer_ctured=!1;setPointerCapture(){this.z__pointer_ctured=!0}z__pointer_cture_rleased=!1;releasePointerCapture(){this.z__pointer_cture_rleased=!0}inputSource;get mode(){return this.event.mode}object;point;normal;face;distance;instanceId;intersection;isDown;isUp;isPressed;isClick;isDoubleClick;input;constructor(e,t){this.event=t,this.input=e,this.button=t.button}clone(){let t=new e(this.input,this.event);return Object.assign(t,this),t}Use(){this.use()}StopPropagation(){this.event.stopImmediatePropagation()}};function th(e,t){return G.foreachComponent(e,e=>{if(!e.enabled)return;let n=e;if(t)switch(t){case`pointerdown`:if(n.onPointerDown)return!0;break;case`pointerup`:if(n.onPointerUp||n.onPointerClick)return!0;break;case`pointermove`:if(n.onPointerEnter||n.onPointerExit||n.onPointerMove)return!0;break}else if(n.onPointerDown||n.onPointerUp||n.onPointerEnter||n.onPointerExit||n.onPointerClick)return!0},!1)===!0}var nh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},rh=class extends K{awake(){gh.createIfNoneExists(this.context)}onEnable(){gh.get(this.context)?.register(this)}onDisable(){gh.get(this.context)?.unregister(this)}},ih=class extends rh{targets=null;raycastHits=[];ignoreSkinnedMeshes=!1;start(){this.targets=[this.gameObject]}performRaycast(e=null){if(!this.targets)return null;e??=new kd,e.targets=this.targets,e.results=this.raycastHits,e.useAcceleratedRaycast=!0;let t=e.testObject;this.ignoreSkinnedMeshes&&(e.testObject=e=>e instanceof ze?`continue in children`:t?t(e):!0);let n=this.context.physics.raycast(e);return e.testObject=t,n}};nh([F()],ih.prototype,`ignoreSkinnedMeshes`,void 0);var ah=class extends ih{constructor(){super(),this.ignoreSkinnedMeshes=!0}},oh=class e extends rh{static allow=!0;performRaycast(t){if(!pd.active||!e.allow||!t?.ray)return null;let n=t.ray.origin;return this.context.physics.sphereOverlap(n,.015,!1,!0)}},sh=class{static getObject(e){let t=e[Yi];return t&&(e=t.isComponent===!0?t.gameObject:t),e}static isInteractable(e,t){if(t&&(t.canvasGroup=void 0,t.graphic=void 0),e==null||!e.visible||(e=this.getObject(e),!e.visible))return!1;let n=this.tryFindCanvasGroup(e);if(n?.isCanvasGroup===!0&&(t&&(t.canvasGroup=n),n.blocksRaycasts===!1||n.interactable===!1))return!1;let r=Vf(e,e=>{if(e.isGraphic===!0)return e},!1);return t&&r?.isGraphic===!0&&(t.graphic=r),!(r?.raycastTarget===!1||r?.layer===2)}static tryFindCanvasGroup(e){if(!e)return null;let t=Vf(e,e=>{if(e.activeAndEnabled){let t=e;if(t.blocksRaycasts!==void 0&&t.interactable!==void 0)return t}},!1);return t===void 0?this.tryFindCanvasGroup(e.parent):t}};function ch(e){return e[Yi]||(e.parent?ch(e.parent):null)}function lh(e){return e.isUI===!0||typeof e[Yi]==`object`}function uh(e,t){if(!e)return;let n=e.material;if(n?.isMaterial===!0){let r=e.parent;r&&r.isText,n.side=t.doubleSided??!0?2:0,n.shadowSide=t.doubleSided?2:0,e.castShadow=t.castShadows?t.castShadows:!1,e.receiveShadow=t.receiveShadows?t.receiveShadows:!1}for(let n of e.children)uh(n,t)}function dh(e,t,n){e[t]===void 0&&console.warn(`Field`,t,`is undefined on`,e);let r=Proxy.revocable(e[t],{set(e,t,r,i){let a=e[t],o=Reflect.set(e,t,r,i);return n(r,a),o}}),i=r.revoke,a=e[t];return r.revoke=()=>{e[t]=a,i()},e[t]=r.proxy,r}var fh=Symbol(`Scheduled action`);function ph(e,t,n=z.OnBeforeRender){let r=e[fh];r||=e[fh]={};let i=t.name;r[n]||(r[n]={});let a=r[n];if(a[i])return;function*o(){t?.call(e),a[i]=null}a[i]=e.startCoroutine(o(),n)}var mh=A(`debugeventsystem`),hh;(function(e){e.BeforeHandleInput=`BeforeHandleInput`,e.AfterHandleInput=`AfterHandleInput`})(hh||={}),La(e=>{gh.createIfNoneExists(e)});var gh=class e extends K{static ensureUpdateMeshUI(e,t,n=!1){_h.update(e,t,n)}static markUIDirty(e){_h.markDirty()}static createIfNoneExists(t){t.scene.getComponent(e)||t.scene.addComponent(e)}static get(t){return this.createIfNoneExists(t),t.scene.getComponent(e)}static get instance(){return this.get(B.Current)}raycaster=[];register(e){e&&this.raycaster&&!this.raycaster.includes(e)&&this.raycaster?.push(e)}unregister(e){let t=this.raycaster?.indexOf(e);t!==void 0&&t!==-1&&this.raycaster?.splice(t,1)}get hasActiveUI(){return this.currentActiveMeshUIComponents.length>0}get isHoveringObjects(){return this.hoveredByID.size>0}awake(){this.gameObject!==this.context.scene&&(console.debug(`[Needle Engine] EventSystem is only allowed on the scene root. Disabling EventSystem on '${this.gameObject.name}'`),this.enabled=!1)}start(){this.context.scene.getComponent(rh)||this.context.scene.addComponent(ih)}onEnable(){this.context.input.addEventListener(L.PointerDown,this.onPointerEvent),this.context.input.addEventListener(L.PointerUp,this.onPointerEvent),this.context.input.addEventListener(L.PointerMove,this.onPointerEvent)}onDisable(){this.context.input.removeEventListener(L.PointerDown,this.onPointerEvent),this.context.input.removeEventListener(L.PointerUp,this.onPointerEvent),this.context.input.removeEventListener(L.PointerMove,this.onPointerEvent)}pressedByID=new Map;hoveredByID=new Map;onBeforeRender(){this.resetMeshUIStates()}onPointerEvent=e=>{if(e===void 0||e.propagationStopped||e.defaultPrevented||e.used)return;let t=new eh(this.context.input,e);this._currentPointerEventName=e.type,t.inputSource=this.context.input,t.isClick=e.isClick,t.isDoubleClick=e.isDoubleClick,t.isDown=e.type==L.PointerDown,t.isUp=e.type==L.PointerUp,t.isPressed=this.context.input.getPointerPressed(e.pointerId);let n=new kd;e.hasRay?n.ray=e.ray:n.screenPoint=this.context.input.getPointerPositionRC(e.pointerId),n.allowSlowRaycastFallback=e.isClick||e.isDoubleClick;let r=this.performRaycast(n);if(mh&&(t.isDown?console.log(`DOWN`,{id:t.pointerId,hits:r.length}):t.isUp&&console.log(`UP`,{id:t.pointerId,hits:r.length}),t.isClick&&console.log(`CLICK`,{id:t.pointerId,hits:r.length})),r){for(let t of r)t.event=e,e.intersections.push(t);e.origin.onPointerHits&&e.origin.onPointerHits({sender:this,event:e,hits:r})}mh&&t.isClick&&Ti(`EventSystem: `+t.pointerId+` - `+this.context.time.frame+` - Up:`+t.isUp+`, Down:`+t.isDown);let i={sender:this,args:t,hasActiveUI:this.currentActiveMeshUIComponents.length>0};this.dispatchEvent(new CustomEvent(hh.BeforeHandleInput,{detail:i})),this.handleIntersections(r,t),this.dispatchEvent(new CustomEvent(hh.AfterHandleInput,{detail:i}))};_sortedHits=[];_testObjectsCache=new Map;_currentlyActiveRaycaster=null;_currentPointerEventName=null;shouldRaycastObject=e=>{let t=e&&`getComponent`in e?e.getComponent(rh):null;if(t&&t!=this._currentlyActiveRaycaster)return!1;let n=null;if(lh(e)&&(n=e[Yi]?.gameObject),this._testObjectsCache.has(e)||n&&this._testObjectsCache.has(n))return this._testObjectsCache.get(e)===!1?`continue in children`:!0;{let t=th(e,this._currentPointerEventName);if(!t&&n&&(t=th(n,this._currentPointerEventName)),t){this._testObjectsCache.set(e,!0);for(let t of e.children)this.shouldRaycastObject_AddToYesCache(t);return!0}return this._testObjectsCache.set(e,!1),`continue in children`}};shouldRaycastObject_AddToYesCache(e){this._testObjectsCache.set(e,!0);for(let t of e.children)this.shouldRaycastObject_AddToYesCache(t)}performRaycast(e){if(!this.raycaster)return null;this._testObjectsCache.clear(),this._sortedHits.length=0,e.testObject=this.shouldRaycastObject;for(let t of this.raycaster){if(!t.activeAndEnabled)continue;this._currentlyActiveRaycaster=t;let n=t.performRaycast(e);this._currentlyActiveRaycaster=null,n&&n.length>0&&this._sortedHits.push(...n)}return this._sortedHits.sort((e,t)=>e.distance-t.distance),this._sortedHits}assignHitInformation(e,t){t?(e.intersection=t,e.point=t.point,e.normal=t.normal,e.face=t.face,e.distance=t.distance,e.instanceId=t.instanceId):(e.intersection=void 0,e.point=void 0,e.normal=void 0,e.face=void 0,e.distance=void 0,e.instanceId=void 0)}handleIntersections(e,t){if(e?.length){e=this.sortCandidates(e);for(let n of e){if(t.event.immediatePropagationStopped)return!1;if(this.assignHitInformation(t,n),this.handleEventOnObject(n.object,t))return!0}}this.assignHitInformation(t,e?.[0]),this.invokePointerCapture(t);let n=this.hoveredByID.get(t.pointerId);return n&&this.propagatePointerExit(n.obj,n.data,null),this.hoveredByID.delete(t.pointerId),t.isUp&&(this.pressedByID.get(t.pointerId)?.handlers.forEach(e=>this.invokeOnPointerUp(t,e)),this.pressedByID.delete(t.pointerId)),!1}_sortingBuffer=[];_noDepthTestingResults=[];sortCandidates(e){this._sortingBuffer.length=0,this._noDepthTestingResults.length=0;for(let t=0;t{t(e)},!1),e=e.parent}handleMainInteraction(e,t,n){let r=this.pressedByID.get(t.pointerId),i=n!==e,a=!0;switch(t.event.pointerType){case`mouse`:case`touch`:let e=this.context.input.getPointerPositionLastFrame(t.pointerId),n=this.context.input.getPointerPosition(t.pointerId);a=e&&!N.approximately(e,n);break;case`controller`:case`hand`:break}this.propagate(e,e=>{let n=e;n.interactable!==!1&&(!n.activeAndEnabled||!n.enabled||(n.onPointerEnter&&i&&this.handlePointerEnter(n,t),t.isDown&&n.onPointerDown&&(n.onPointerDown(t),r?.handlers.add(n),this.handlePointerCapture(t,n)),n.onPointerMove&&(a&&n.onPointerMove(t),this.handlePointerCapture(t,n)),t.isUp&&(n.onPointerUp&&(this.invokeOnPointerUp(t,n),r?.handlers.delete(n)),n.onPointerExit&&t.event?.pointerType===tc.Touch&&(this.handlePointerExit(n,t),this.hoveredByID.delete(t.pointerId))),t.isClick&&n.onPointerClick&&n.onPointerClick(t)))}),t.isUp&&(r?.handlers.forEach(e=>{this.invokeOnPointerUp(t,e)}),this.pressedByID.delete(t.pointerId))}propagatePointerExit(e,t,n){this.propagate(e,e=>{if(!e.gameObject||e.destroyed)return;let r=e;if(r.onPointerExit||r.onPointerEnter){if(n&&this.isChild(n,e.gameObject))return;this.handlePointerExit(r,t)}})}invokeOnPointerUp(e,t){t.onPointerUp?.call(t,e),this.releasePointerCapture(e,t)}handlePointerEnter(e,t){e.onPointerEnter&&this.updatePointerState(e,t.pointerId,this.pointerEnterSymbol,!0)&&e.onPointerEnter(t),this.updatePointerState(e,t.pointerId,this.pointerExitSymbol,!1)}handlePointerExit(e,t){e.onPointerExit&&this.updatePointerState(e,t.pointerId,this.pointerExitSymbol,!0)&&e.onPointerExit(t),this.updatePointerState(e,t.pointerId,this.pointerEnterSymbol,!1)}updatePointerState(e,t,n,r){let i=e[n];if(r)return i&&i.includes(t)?!1:(i||=[],i.push(t),e[n]=i,!0);{if(!i||!i.includes(t))return!1;let e=i.indexOf(t);return e!==-1&&i.splice(e,1),!0}}_capturedPointer={};handlePointerCapture(e,t){if(e.z__pointer_ctured){e.z__pointer_ctured=!1;let n=e.pointerId;if(t.onPointerMove){let e=this._capturedPointer[n]||[];e.push(t),this._capturedPointer[n]=e}else M()&&!t.z__warned_no_pointermove&&(t.z__warned_no_pointermove=!0,console.warn(`PointerCapture was requested but the component doesn't implement onPointerMove. It will not receive any pointer events`))}else e.z__pointer_cture_rleased&&(e.z__pointer_cture_rleased=!1,this.releasePointerCapture(e,t))}releasePointerCapture(e,t){let n=e.pointerId;if(this._capturedPointer[n]){let e=this._capturedPointer[n].indexOf(t);e!==-1&&(this._capturedPointer[n].splice(e,1),mh&&console.log(`released pointer capture`,n,t,this._capturedPointer))}}invokePointerCapture(e){if(e.event.type===L.PointerMove){let t=e.pointerId,n=this._capturedPointer[t];if(n){mh&&console.log(`Captured`,t,n);for(let t=0;t0&&_h.resetLastSelected(),!(!this.currentActiveMeshUIComponents||this.currentActiveMeshUIComponents.length<=0)){for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vh=A(`debugorbit`),yh=A(`freecam`),bh=A(`debugcamerafit`),xh=A(`smoothcam`),Sh={LEFT:``,UP:``,RIGHT:``,BOTTOM:``},Ch=void 0,wh;(function(e){e.CameraTargetReached=`target-reached`})(wh||={});var Th=class extends CustomEvent{constructor(e,t){super(wh.CameraTargetReached,{detail:{controls:e,type:t}})}},X=class extends K{get isCameraController(){return!0}get controls(){return this._controls}get controllerObject(){return this._cameraObject}onStartInteraction(e){this.controls?.addEventListener(`start`,e)}autoTarget=!0;autoFit=!1;enableRotate=!0;autoRotate=!1;autoRotateSpeed=1;minAzimuthAngle=1/0;maxAzimuthAngle=1/0;minPolarAngle=0;maxPolarAngle=Math.PI;enableKeys=!1;enableDamping=!0;dampingFactor=.1;enableZoom=!0;minZoom=0;maxZoom=1/0;zoomSpeed=1;zoomToCursor=!1;enablePan=!0;lookAtTarget=null;lockLookAtTarget=!0;lookAtConstraint01=1;lookAtConstraint;allowInterrupt=!0;middleClickToFocus=!0;doubleClickToFocus=!0;clickBackgroundToFitScene=2;get targetElement(){return this._controls?.domElement??this._targetElement}set targetElement(e){this._targetElement=e,this._controls&&this._controls.domElement!==e&&(this._controls.disconnect(),this._controls.domElement=e,this._controls.connect())}_targetElement=null;debugLog=!1;get targetLerpSpeed(){return 5}set targetLerpSpeed(e){this.targetLerpDuration=1/e}get targetLerpDuration(){return this._lookTargetLerpDuration}set targetLerpDuration(e){this._lookTargetLerpDuration=e}_lookTargetLerpDuration=1;targetBounds=null;rotateLeft(e){this._controls?._rotateLeft(e)}rotateUp(e){this._controls?._rotateUp(e)}pan(e,t){this._controls?._pan(e,t)}zoomIn(e){e>0?this._controls?._dollyIn(1-e):e<0&&this._controls?._dollyOut(1+e)}_controls=null;_cameraObject=null;_lookTargetLerpActive=!1;_lookTargetStartPosition=new o;_lookTargetEndPosition=new o;_lookTargetLerp01=0;_cameraLerpActive=!1;_cameraStartPosition=new o;_cameraEndPosition=new o;_cameraLerp01=0;_cameraLerpDuration=0;_fovLerpActive=!1;_fovLerpStartValue=0;_fovLerpEndValue=0;_fovLerp01=0;_fovLerpDuration=0;_inputs=0;_enableTime=0;_startedListeningToKeyEvents=!1;_eventSystem;_afterHandleInputFn;_camera=null;_syncedTransform;_didSetTarget=0;_didApplyLookAtTarget=!1;awake(){vh&&console.debug(`OrbitControls`,this),this.lookAtConstraint&&(console.warn(`[OrbitControls] lookAtConstraint is deprecated, use lookTarget and lockLookAtTarget instead. This will be removed in a future version.`),!this.lookAtTarget&&this.lookAtConstraint.sources?.[0]&&(this.lookAtTarget=this.lookAtConstraint.sources[0],this.lockLookAtTarget=this.lookAtConstraint.locked)),this._didSetTarget=0,this._didApplyLookAtTarget=!1,this._startedListeningToKeyEvents=!1,this.context.domElement.cameraControls===!1&&(this.enabled=!1)}start(){this._eventSystem=gh.get(this.context)??void 0,this._eventSystem&&(this._afterHandleInputFn=this.afterHandleInput.bind(this),this._eventSystem.addEventListener(hh.AfterHandleInput,this._afterHandleInputFn))}onDestroy(){this._controls?.dispose(),this._eventSystem?.removeEventListener(hh.AfterHandleInput,this._afterHandleInputFn)}onEnable(){this._didSetTarget=0,this._didApplyLookAtTarget=!1,this._enableTime=this.context.time.time;let e=G.getComponent(this.gameObject,Z);this._camera=e;let t=e?.threeCamera;if(!t&&this.gameObject instanceof C&&(t=this.gameObject),t&&sr(t,this,!0),!this._controls&&t instanceof S){this._cameraObject=t;let e=this.targetElement??this.context.renderer.domElement,n=t?.quaternion.clone();this._controls=new lt(t,e),t?.quaternion.copy(n),Ch===void 0&&(Ch={...this._controls.keys});let r=Or(t),i=this.gameObject.worldForward,a=r.clone().sub(i.multiplyScalar(2.5));this._controls.target.copy(a)}if(this._controls)if(yh&&(this.enablePan=!0,this.enableZoom=!0,this.middleClickToFocus=!0,j.isMobileDevice()&&(this.doubleClickToFocus=!0)),this._controls.addEventListener(`start`,this.onControlsChangeStarted),this._controls.addEventListener(`endMovement`,this.onControlsChangeEnded),!this._startedListeningToKeyEvents&&this.enableKeys)this._startedListeningToKeyEvents=!0,this._controls.listenToKeyEvents(this.context.domElement);else try{this._controls.stopListenToKeyEvents()}catch{}this._syncedTransform=G.getComponent(this.gameObject,$m)??void 0,this.context.pre_render_callbacks.push(this.__onPreRender),this._activePointerEvents=[],this.context.input.addEventListener(`pointerdown`,this._onPointerDown,{queue:sc.Early}),this.context.input.addEventListener(`pointerdown`,this._onPointerDownLate,{queue:sc.Late}),this.context.input.addEventListener(`pointerup`,this._onPointerUp,{queue:sc.Early}),this.context.input.addEventListener(`pointerup`,this._onPointerUpLate,{queue:sc.Late})}onDisable(){if(this._camera?.threeCamera&&sr(this._camera.threeCamera,this,!1),this._controls){this._controls.enabled=!1,this._controls.autoRotate=!1,this._controls.removeEventListener(`start`,this.onControlsChangeStarted),this._controls.removeEventListener(`endMovement`,this.onControlsChangeEnded);try{this._controls.stopListenToKeyEvents()}catch{}this._startedListeningToKeyEvents=!1}this._activePointerEvents.length=0,this.context.input.removeEventListener(`pointerdown`,this._onPointerDown),this.context.input.removeEventListener(`pointerdown`,this._onPointerDownLate),this.context.input.removeEventListener(`pointerup`,this._onPointerUp),this.context.input.removeEventListener(`pointerup`,this._onPointerUpLate)}_activePointerEvents;_lastTimeClickOnBackground=-1;_clickOnBackgroundCount=0;_onPointerDown=e=>{this._activePointerEvents.push(e)};_onPointerDownLate=e=>{e.used&&this._controls&&(this._controls.enabled=!1)};_onPointerUp=e=>{for(let t=this._activePointerEvents.length-1;t>=0;t--){let n=this._activePointerEvents[t];if(n.pointerId===e.pointerId&&n.button===e.button){this._activePointerEvents.splice(t,1);break}}if(this.clickBackgroundToFitScene>0&&e.isClick&&e.button===0){if(e.hasRay||e.intersections.push(...this.context.physics.raycast()),e.intersections.length<=0){let e=this.context.time.time-this._lastTimeClickOnBackground;this._lastTimeClickOnBackground=this.context.time.time,this.clickBackgroundToFitScene<=1||e=this.clickBackgroundToFitScene-1&&(this.autoRotate=!1,this.fitCamera({objects:this.context.scene,immediate:!1}))):this._clickOnBackgroundCount=0}vh&&console.log(this.clickBackgroundToFitScene,e.intersections.length,this._clickOnBackgroundCount)}};_onPointerUpLate=e=>{this.doubleClickToFocus&&e.isDoubleClick&&!e.used&&this.setTargetFromRaycast()};updateTargetNow(e){vh&&console.warn(`OrbitControls: updateTargetNow is using raycasting to update the target immediately. This can be expensive and should be used with caution.`,e);let t=new p(this._cameraObject?.worldPosition,this._cameraObject?.worldForward.multiplyScalar(-1)),n=this.context.physics.raycastFromRay(t,e),r=n.length>0?n[0]:void 0;r&&r.distance>this.minZoom&&r.distance{vh&&console.debug(`OrbitControls: Change started`),this._controls&&(this._orbitStartAngle=this._controls.getAzimuthalAngle()+this._controls.getPolarAngle(),this._zoomStartDistance=this._controls.getDistance()),this._syncedTransform&&this._syncedTransform.requestOwnership()};onControlsChangeEnded=()=>{if(vh&&console.debug(`OrbitControls: Change ended`,{autoTarget:this.autoTarget}),this._controls&&this.autoTarget){let e=this._controls.getAzimuthalAngle()+this._controls.getPolarAngle()-this._orbitStartAngle;Math.abs(e)<.01?(vh&&console.debug(`OrbitControls: Update target`,{deltaAngle:e}),this.updateTargetNow({allowSlowRaycastFallback:!1})):vh&&console.debug(`OrbitControls: No target update`,{deltaAngle:e})}};_shouldDisable=!1;afterHandleInput(e){e.detail.args.pointerId===0&&(e.detail.args.isDown?this._controls&&this._eventSystem&&(this._shouldDisable=this._eventSystem.hasActiveUI):(!e.detail.args.isPressed||e.detail.args.isUp)&&(this._shouldDisable=!1))}onPausedChanged(e){this._controls&&e&&(this._controls.enabled=!1)}onBeforeRender(){if(this._controls){if(this._cameraObject!==this.context.mainCamera){this._controls.enabled=!1;return}if(this._controls.enabled=!0,(this.context.input.getPointerDown(1)||this.context.input.getPointerDown(2)||this.context.input.mouseWheelChanged||this.context.input.getPointerPressed(0)&&this.context.input.getPointerPositionDelta(0)?.length())&&(this._inputs+=1),this._inputs>0&&this.allowInterrupt&&(this.enableRotate&&(this.autoRotate=!1),this._cameraLerpActive=!1,this._lookTargetLerpActive=!1),this._inputs=0,this.autoTarget&&this._didSetTarget++===0){let e=G.getComponent(this.gameObject,Z);if(e&&!this.setLookTargetFromConstraint()){this.debugLog&&console.log(`NO TARGET`);let t=Or(e.threeCamera),n=new o(0,0,-Math.max(.01,t.length())).applyMatrix4(e.threeCamera.matrixWorld);vh&&H.DrawLine(t,n,5592575,10),this.setLookTargetPosition(n,!0)}if(!this.setLookTargetFromConstraint()){let e=new kd;e.screenPoint=new w(0,0),e.lineThreshold=.1;let t=this.context.physics.raycast(e);t.length>0&&this.setLookTargetPosition(t[0].point,!0),bh&&console.log(`OrbitControls hits`,...t)}}if(this.middleClickToFocus&&this.context.input.getPointerClicked(1)&&this.setTargetFromRaycast(),this._lookTargetLerpActive||this._cameraLerpActive||this._fovLerpActive){if(this._cameraLerpActive&&this._cameraObject)if(this._cameraLerp01+=this.context.time.deltaTime/this._cameraLerpDuration,this._cameraLerp01>=1)this._cameraObject.position.copy(this._cameraEndPosition),this._cameraLerpActive=!1,this.dispatchEvent(new Th(this,`camera`));else{let e=N.easeInOutCubic(this._cameraLerp01);this._cameraObject.position.lerpVectors(this._cameraStartPosition,this._cameraEndPosition,e)}if(this._lookTargetLerpActive)if(this._lookTargetLerp01+=this.context.time.deltaTime/this._lookTargetLerpDuration,this._lookTargetLerp01>=1)this.lerpLookTarget(this._lookTargetEndPosition,this._lookTargetEndPosition,1),this._lookTargetLerpActive=!1,this.dispatchEvent(new Th(this,`lookat`));else{let e=N.easeInOutCubic(this._lookTargetLerp01);this.lerpLookTarget(this._lookTargetStartPosition,this._lookTargetEndPosition,e)}if(this._fovLerpActive&&this._cameraObject){let e=this._cameraObject;if(this._fovLerp01+=this.context.time.deltaTime/this._fovLerpDuration,this._fovLerp01>=1)e.fov=this._fovLerpEndValue,this._fovLerpActive=!1;else{let t=N.easeInOutCubic(this._fovLerp01);e.fov=N.lerp(this._fovLerpStartValue,this._fovLerpEndValue,t)}e.updateProjectionMatrix()}}if(this.targetBounds){let e=this._controls.target,t=this.targetBounds.worldPosition,n=P(this.targetBounds.worldScale).multiplyScalar(.5),r=P(t).sub(n),i=P(t).add(n),a=P(this._controls.target).clamp(r,i),o=.1;o<=0?e.copy(a):e.lerp(a,this.context.time.deltaTime/o),this._lookTargetLerpActive&&(o<=0?this._lookTargetEndPosition.copy(a):this._lookTargetEndPosition.lerp(a,this.context.time.deltaTime/(o*5))),vh&&H.DrawWireBox(t,n.multiplyScalar(2),16755200)}if(this._controls){this.debugLog&&(this._controls.domElement=this.context.renderer.domElement);let e=1/(this.context.focusRectSettings?.zoom||1);if(this._controls.enabled=!this._shouldDisable&&this._camera===this.context.mainCameraComponent&&!this.context.isInXR&&!this._activePointerEvents.some(e=>e.used),this._controls.keys=this.enableKeys?Ch:Sh,this._controls.autoRotate=this.autoRotate,this._controls.autoRotateSpeed=this.autoRotateSpeed,this._controls.enableZoom=this.enableZoom,this._controls.zoomSpeed=this.zoomSpeed,this._controls.zoomToCursor=this.zoomToCursor,this._controls.enableDamping=this.enableDamping,this._controls.dampingFactor=this.dampingFactor,this._controls.enablePan=this.enablePan,this._controls.panSpeed=e,this._controls.enableRotate=this.enableRotate,this._controls.minAzimuthAngle=this.minAzimuthAngle,this._controls.maxAzimuthAngle=this.maxAzimuthAngle,this._controls.minPolarAngle=this.minPolarAngle,this._controls.maxPolarAngle=this.maxPolarAngle,yh||(this._camera?.threeCamera?.type===`PerspectiveCamera`?(this._controls.minDistance=this.minZoom,this._controls.maxDistance=this.maxZoom,this._controls.minZoom=0,this._controls.maxZoom=1/0):(this._controls.minDistance=0,this._controls.maxDistance=1/0,this._controls.minZoom=this.minZoom,this._controls.maxZoom=this.maxZoom)),typeof xh==`number`||xh===!0){this._controls.enableDamping=!0;let e=typeof xh==`number`?xh:.99;this._controls.dampingFactor=Math.max(.001,1-Math.min(1,e))}this.allowInterrupt||(this._lookTargetLerpActive&&(this._controls.enablePan=!1),this._cameraLerpActive&&(this._controls.enableRotate=!1,this._controls.autoRotate=!1),(this._lookTargetLerpActive||this._cameraLerpActive)&&(this._controls.enableZoom=!1)),this.context.isInXR||(!yh&&this.lookAtTarget&&!this._lookTargetLerpActive&&(this.lockLookAtTarget?this.setLookTargetFromConstraint(this.lookAtConstraint01):this._didApplyLookAtTarget||(this._didApplyLookAtTarget=!0,this.setLookTargetFromConstraint(1))),this._controls.update(this.context.time.deltaTime),vh&&H.DrawWireSphere(this._controls.target,.1,65280))}}}__onPreRender=()=>{let e=this.context.pre_render_callbacks.indexOf(this.__onPreRender);e>=0&&this.context.pre_render_callbacks.splice(e,1),this.autoFit&&(this.autoFit=!1,this.fitCamera({centerCamera:`y`,immediate:!0,objects:this.scene.children}))};setCameraAndLookTarget(e,t=!1){if(!e)return(M()||vh)&&console.warn(`[OrbitControls] setCameraAndLookTarget target is null`),!1;if(!(e instanceof S)&&!(e instanceof Z))return(M()||vh)&&console.warn(`[OrbitControls] setCameraAndLookTarget target is not an Object3D or Camera`),!1;e instanceof Z&&(e=e.gameObject);let n=e.worldPosition,r=e.worldForward;e instanceof qe&&(vh&&console.debug(`[OrbitControls] setCameraAndLookTarget flip forward direction for camera`),r.multiplyScalar(-1));let i=new p(n,r);return vh&&H.DrawRay(i.origin,i.direction,16711680,10),this.setTargetFromRaycast(i,t)||this.setLookTargetPosition(i.at(2,P()),t),this.setCameraTargetPosition(n,t),!0}setCameraTargetPosition(e,t=!1){e&&(e instanceof S&&(e=Or(e)),this._cameraEndPosition||=new o,this._cameraEndPosition.copy(e),t===!0?(this._cameraLerpActive=!1,this._cameraObject&&this._cameraObject.position.copy(this._cameraEndPosition)):this._cameraObject&&(this._cameraLerpActive=!0,this._cameraLerp01=0,this._cameraStartPosition.copy(this._cameraObject?.position),typeof t==`number`?this._cameraLerpDuration=t:this._cameraLerpDuration=this.targetLerpDuration))}get cameraLerpActive(){return this._cameraLerpActive}stopCameraLerp(){this._cameraLerpActive=!1}setFieldOfView(e,t=!1){if(!this._controls||typeof e!=`number`)return;let n=this._camera?.threeCamera;n&&(t===!0?n.fov=e:(this._fovLerpActive=!0,this._fovLerp01=0,this._fovLerpStartValue=n.fov,this._fovLerpEndValue=e,typeof t==`number`?this._fovLerpDuration=t:this._fovLerpDuration=this.targetLerpDuration))}setLookTargetPosition(e=null,t=!1){this._controls&&e&&(e instanceof S&&(e=Or(e)),this._lookTargetEndPosition.copy(e),this._didSetTarget++,vh&&(console.warn(`OrbitControls: setLookTargetPosition`,e,t),H.DrawWireSphere(this._lookTargetEndPosition,.2,16711680,2)),t===!0?this.lerpLookTarget(this._lookTargetEndPosition,this._lookTargetEndPosition,1):(this._lookTargetLerpActive=!0,this._lookTargetLerp01=0,this._lookTargetStartPosition.copy(this._controls.target),typeof t==`number`?this._lookTargetLerpDuration=t:this._lookTargetLerpDuration=this.targetLerpDuration))}get lookTargetLerpActive(){return this._lookTargetLerpActive}stopLookTargetLerp(){this._lookTargetLerpActive=!1}setLookTargetFromConstraint(e=1){return!this._controls||!this.lookAtTarget?!1:(this.lookAtTarget.getWorldPosition(this._lookTargetEndPosition),this.lerpLookTarget(this._controls.target,this._lookTargetEndPosition,e),!0)}lerpLookTarget(e,t,n){this._controls&&(n>=1?this._controls.target.copy(t):this._controls.target.lerpVectors(e,t,n),this.lookAtTarget&&this.lockLookAtTarget&&(this.lookAtTarget.worldPosition=this._controls.target))}setTargetFromRaycast(e,t=!1){if(!this.controls)return!1;let n=e?this.context.physics.raycastFromRay(e):this.context.physics.raycast();for(let e of n)if(e.distance>0&&G.isActiveInHierarchy(e.object)){let n=ch(e.object);if(n&&n.canvas?.screenspace)break;return this.setLookTargetPosition(e.point,t),!0}return!1}fitCamera(e,t){let n;if(Array.isArray(e)||e&&`type`in e?n=e:e&&typeof e==`object`&&!(e instanceof S)&&!Array.isArray(e)&&(t=e,n=t.objects),n&&!Array.isArray(n)&&(n=[n]),(!Array.isArray(n)||n&&n.length<=0)&&(n=this.context.scene.children),!Array.isArray(n)||n.length<=0){console.warn(`No objects to fit camera to...`);return}let r=Mm({objects:[...n],...t,autoApply:!1,context:this.context,camera:this._cameraObject,currentZoom:this._controls?.getDistance()||void 0,minZoom:this.minZoom,maxZoom:this.maxZoom});r&&(this.setLookTargetPosition(r.lookAt,t?.immediate||!1),this.setCameraTargetPosition(r.position,t?.immediate||!1),this.setFieldOfView(t?.fov,t?.immediate||!1),this.onBeforeRender())}_haveAttachedKeyboardEvents=!1};Y([F()],X.prototype,`autoTarget`,void 0),Y([F()],X.prototype,`autoFit`,void 0),Y([F()],X.prototype,`enableRotate`,void 0),Y([F()],X.prototype,`autoRotate`,void 0),Y([F()],X.prototype,`autoRotateSpeed`,void 0),Y([F()],X.prototype,`minAzimuthAngle`,void 0),Y([F()],X.prototype,`maxAzimuthAngle`,void 0),Y([F()],X.prototype,`minPolarAngle`,void 0),Y([F()],X.prototype,`maxPolarAngle`,void 0),Y([F()],X.prototype,`enableKeys`,void 0),Y([F()],X.prototype,`enableDamping`,void 0),Y([F()],X.prototype,`dampingFactor`,void 0),Y([F()],X.prototype,`enableZoom`,void 0),Y([F()],X.prototype,`minZoom`,void 0),Y([F()],X.prototype,`maxZoom`,void 0),Y([F()],X.prototype,`zoomSpeed`,void 0),Y([F()],X.prototype,`enablePan`,void 0),Y([F(S)],X.prototype,`lookAtTarget`,void 0),Y([F()],X.prototype,`lockLookAtTarget`,void 0),Y([F()],X.prototype,`lookAtConstraint01`,void 0),Y([F(Pm)],X.prototype,`lookAtConstraint`,void 0),Y([F()],X.prototype,`allowInterrupt`,void 0),Y([F()],X.prototype,`middleClickToFocus`,void 0),Y([F()],X.prototype,`doubleClickToFocus`,void 0),Y([F()],X.prototype,`clickBackgroundToFitScene`,void 0),Y([F()],X.prototype,`targetLerpDuration`,null),Y([F(S)],X.prototype,`targetBounds`,void 0);var Eh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Dh;(function(e){e[e.None=0]=`None`,e[e.Skybox=1]=`Skybox`,e[e.SolidColor=2]=`SolidColor`,e[e.Uninitialized=4]=`Uninitialized`})(Dh||={});var Oh=A(`debugcam`),kh=A(`debugscreenpointtoray`),Z=class e extends K{get isCamera(){return!0}get aspect(){return this._cam instanceof C?this._cam.aspect:this.context.domWidth/this.context.domHeight}set aspect(e){this._cam instanceof C&&this._cam.aspect!==e&&(this._cam.aspect=e,this._cam.updateProjectionMatrix())}get fieldOfView(){return this._cam instanceof C?this._cam.fov:this._fov}set fieldOfView(e){let t=this.fieldOfView!=e;if(this._fov=e,t&&this._cam&&this._cam instanceof C){if(this._fov===void 0){console.warn(`Can not set undefined fov on PerspectiveCamera`);return}this._cam.fov=this._fov,this._cam.updateProjectionMatrix()}}get nearClipPlane(){return this._nearClipPlane}set nearClipPlane(e){let t=this._nearClipPlane!=e;this._nearClipPlane=e,this._cam&&(t||this._cam.near!=e)&&(this._cam.near=e,this._cam.updateProjectionMatrix())}_nearClipPlane=.1;get farClipPlane(){return this._farClipPlane}set farClipPlane(e){let t=this._farClipPlane!=e;this._farClipPlane=e,this._cam&&(t||this._cam.far!=e)&&(this._cam.far=e,this._cam.updateProjectionMatrix())}_farClipPlane=1e3;applyClippingPlane(){this._cam&&(this._cam.near=this._nearClipPlane,this._cam.far=this._farClipPlane,this._cam.updateProjectionMatrix())}get clearFlags(){return this._clearFlags}set clearFlags(e){if(typeof e==`string`)switch(e){case`skybox`:e=Dh.Skybox;break;case`solidcolor`:e=Dh.SolidColor;break;default:e=Dh.None;break}e!==this._clearFlags&&(this._clearFlags=e,this.applyClearFlagsIfIsActiveCamera())}orthographic=!1;orthographicSize=5;ARBackgroundAlpha=0;set cullingMask(e){this._cullingMask=e,this._cam&&(this._cam.layers.mask=e)}get cullingMask(){return this._cam?this._cam.layers.mask:this._cullingMask}_cullingMask=4294967295;set cullingLayer(e){this.cullingMask=(1<>>0}set backgroundBlurriness(e){e!==this._backgroundBlurriness&&(e===void 0?this._backgroundBlurriness=void 0:this._backgroundBlurriness=Math.min(Math.max(e,0),1),this.applyClearFlagsIfIsActiveCamera())}get backgroundBlurriness(){return this._backgroundBlurriness}_backgroundBlurriness=void 0;set backgroundIntensity(e){e!==this._backgroundIntensity&&(e===void 0?this._backgroundIntensity=void 0:this._backgroundIntensity=Math.min(Math.max(e,0),10),this.applyClearFlagsIfIsActiveCamera())}get backgroundIntensity(){return this._backgroundIntensity}_backgroundIntensity=void 0;set backgroundRotation(e){e!==this._backgroundRotation&&(e===void 0?this._backgroundRotation=void 0:this._backgroundRotation=e,this.applyClearFlagsIfIsActiveCamera())}get backgroundRotation(){return this._backgroundRotation}_backgroundRotation=void 0;set environmentIntensity(e){this._environmentIntensity=e}get environmentIntensity(){return this._environmentIntensity}_environmentIntensity=void 0;get backgroundColor(){return this._backgroundColor??null}set backgroundColor(e){e&&(this._backgroundColor||=new md(1,1,1,1),this._backgroundColor.copy(e),(!(`alpha`in e)||e.alpha===void 0)&&(this._backgroundColor.alpha=1),this.applyClearFlagsIfIsActiveCamera())}set targetTexture(e){this._targetTexture=e}get targetTexture(){return this._targetTexture}_targetTexture=null;_backgroundColor;_fov;_cam=null;_clearFlags=Dh.SolidColor;_skybox;get cam(){return this.threeCamera}get threeCamera(){return this.activeAndEnabled&&this.buildCamera(),this._cam}static _origin=new o;static _direction=new o;screenPointToRay(t,n,r){let i=this.threeCamera,a=e._origin;a.set(t,n,-1),this.context.input.convertScreenspaceToRaycastSpace(a),kh&&console.log(`screenPointToRay`,t.toFixed(2),n.toFixed(2),`now:`,a.x.toFixed(2),a.y.toFixed(2),`isInXR:`+this.context.isInXR),a.z=-1,a.unproject(i);let o=e._direction.set(a.x,a.y,a.z),s=Or(i);return o.sub(s),o.normalize(),r?(r.set(s,o),r):new p(s.clone(),o.clone())}_frustum;getFrustum(){return this._frustum||(this._frustum=new ge,this.updateFrustum()),this._frustum}updateFrustum(){this._frustum||=new ge,this._frustum.setFromProjectionMatrix(this.getProjectionScreenMatrix(this._projScreenMatrix,!0),this.context.renderer.coordinateSystem)}getProjectionScreenMatrix(e,t){return t&&this._projScreenMatrix.multiplyMatrices(this.threeCamera.projectionMatrix,this.threeCamera.matrixWorldInverse),e===this._projScreenMatrix?e:e.copy(this._projScreenMatrix)}_projScreenMatrix=new ce;awake(){kh&&window.addEventListener(`pointerdown`,e=>{let t=e.clientX,n=e.clientY;console.log(`touch`,t.toFixed(2),n.toFixed(2));let r=this.screenPointToRay(t,n),i=`#`+Math.floor(Math.random()*16777215).toString(16);H.DrawRay(r.origin,r.direction,i,10)})}onEnable(){Oh&&console.log(`Camera enabled: \"${this.name}\". ClearFlags=${Dh[this._clearFlags]}`,this),this.buildCamera(),(this.tag==`MainCamera`||!this.context.mainCameraComponent)&&(this.context.setCurrentCamera(this),jh(this)),this.applyClearFlagsIfIsActiveCamera({applySkybox:!0})}onDisable(){this.context.removeCamera(this)}onLeaveXR(e){this.fieldOfView=this._fov}onBeforeRender(){if(this._cam&&(this._frustum&&this.updateFrustum(),this._clearFlags===Dh.SolidColor&&this.applyClearFlagsIfIsActiveCamera(),this._targetTexture)){this.context.isManagedExternally&&(this._warnedAboutExternalRenderer||(this._warnedAboutExternalRenderer=!0,console.warn(`Rendering with external renderer is not supported yet. This may not work or throw errors. Please remove the the target texture from your camera: `+this.name,this.targetTexture))),this.context.composer;let e=this.context.renderer;if(e){let t=this.context.mainCameraComponent;this.applyClearFlags(),this._targetTexture.render(this.context.scene,this._cam,e),t?.applyClearFlags()}}}buildCamera(){if(this._cam)return;let e=this.gameObject.isCamera,t=null;if(e?(t=this.gameObject,t?.layers.enableAll(),t instanceof C&&(this._fov=t.fov)):t=this.gameObject.children[0],t&&t.isCamera)t instanceof C&&(this._fov&&(t.fov=this._fov),t.near=this._nearClipPlane,t.far=this._farClipPlane,t.updateProjectionMatrix());else if(!this.orthographic)t=new C(this.fieldOfView,window.innerWidth/window.innerHeight,this._nearClipPlane,this._farClipPlane),this.fieldOfView&&(t.fov=this.fieldOfView),this.gameObject.add(t);else{let e=this.orthographicSize*100;t=new ke(window.innerWidth/-e,window.innerWidth/e,window.innerHeight/e,window.innerHeight/-e,this._nearClipPlane,this._farClipPlane),this.gameObject.add(t)}this._cam=t,this._cam.layers.mask=this._cullingMask,this.tag==`MainCamera`&&this.context.setCurrentCamera(this)}applyClearFlagsIfIsActiveCamera(e){this.context.mainCameraComponent===this&&this.applyClearFlags(e)}applyClearFlags(t){if(!this._cam){Oh&&console.log(`Camera does not exist (apply clear flags)`);return}if(this.fieldOfView=this.fieldOfView,Oh){let e=`[Camera] Apply ClearFlags: ${Dh[this._clearFlags]} - \"${this.name}\"`;console.debug(e)}let n=this.context.domElement.getAttribute(`background-image`)||this.context.domElement.getAttribute(`background-color`);switch(this._clearFlags){case Dh.None:return;case Dh.Skybox:if(e.backgroundShouldBeTransparent(this.context)&&(!this.ARBackgroundAlpha||this.ARBackgroundAlpha<.001)){this.context.scene.background=null,this.context.renderer.setClearColor(0,0);return}(!this.scene.background||!this._skybox||t?.applySkybox===!0)&&this.applySceneSkybox(),this._backgroundBlurriness!==void 0&&!this.context.domElement.getAttribute(`background-blurriness`)?this.context.scene.backgroundBlurriness=this._backgroundBlurriness:Oh&&console.warn(`Camera \"${this.name}\" has no background blurriness`),this._backgroundIntensity!==void 0&&!this.context.domElement.getAttribute(`background-intensity`)&&(this.context.scene.backgroundIntensity=this._backgroundIntensity),this._backgroundRotation!==void 0&&!this.context.domElement.getAttribute(`background-rotation`)?this.context.scene.backgroundRotation=this._backgroundRotation:Oh&&console.warn(`Camera \"${this.name}\" has no background intensity`);break;case Dh.SolidColor:if(this._backgroundColor&&!n){let t=this._backgroundColor.alpha;e.backgroundShouldBeTransparent(this.context)&&(t=this.ARBackgroundAlpha??0),this.context.scene.background=null,this.context.xr?.isVR?this.context.renderer.setClearColor(Cr(this._backgroundColor).convertLinearToSRGB()):this.context.renderer.setClearColor(this._backgroundColor,t)}else this._backgroundColor||Oh&&console.warn(`[Camera] has no background color \"${this.name}\" `);break;case Dh.Uninitialized:n||(this.context.scene.background=null,this.context.renderer.setClearColor(0,0));break}}applySceneSkybox(){this._skybox||=new Ah(this),this._skybox.apply()}static backgroundShouldBeTransparent(e){let t=e.renderer.xr?.getSession();if(!t)return!1;if(typeof t._transparent==`boolean`)return t._transparent;let n=t.environmentBlendMode;Oh&&Ti(`Environment blend mode: `+n+` on `+navigator.userAgent);let r=n===`additive`||n===`alpha-blend`;if(e.isInAR&&n===`opaque`){if(navigator.userAgent?.includes(`OculusBrowser`))r=!0;else if(navigator.userAgent?.includes(`Mozilla`)&&navigator.userAgent?.includes(`Mobile WebXRViewer/v2`))r=!0;else if(j.isNeedleAppClip())return!0}return t._transparent=r,r}};Eh([F()],Z.prototype,`aspect`,null),Eh([F()],Z.prototype,`fieldOfView`,null),Eh([F()],Z.prototype,`nearClipPlane`,null),Eh([F()],Z.prototype,`farClipPlane`,null),Eh([F()],Z.prototype,`clearFlags`,null),Eh([F()],Z.prototype,`orthographic`,void 0),Eh([F()],Z.prototype,`orthographicSize`,void 0),Eh([F()],Z.prototype,`ARBackgroundAlpha`,void 0),Eh([F()],Z.prototype,`cullingMask`,null),Eh([F()],Z.prototype,`backgroundBlurriness`,null),Eh([F()],Z.prototype,`backgroundIntensity`,null),Eh([F(He)],Z.prototype,`backgroundRotation`,null),Eh([F()],Z.prototype,`environmentIntensity`,null),Eh([F(md)],Z.prototype,`backgroundColor`,null),Eh([F(ym)],Z.prototype,`targetTexture`,null);var Ah=class{_camera;_skybox;get context(){return this._camera?.context}constructor(e){this._camera=e}apply(){if(this._skybox=this.context.lightmaps.tryGetSkybox(this._camera.sourceId),!this._skybox)this._did_log_failed_to_find_skybox||(this._did_log_failed_to_find_skybox=!0,console.warn(`Camera \"${this._camera.name}\" has no skybox texture. ${this._camera.sourceId}`));else if(this.context.scene.background!==this._skybox){let e=this.context.domElement.getAttribute(`background-image`)||this.context.domElement.getAttribute(`background-color`);Oh&&console.debug(`[Camera] Apply Skybox ${this._skybox?.name} ${e} - \"${this._camera.name}\"`),e?.length||(this._skybox.mapping!==306&&(this._skybox.mapping=303),this.context.scene.background=this._skybox)}}};function jh(e){A(`freecam`)&&e.context.mainCameraComponent===e&&G.getOrAddComponent(e.gameObject,X)}var Mh=A(`debugshadowcomponents`);tt.prototype.interactable={get(){return this.interactive},set(e){this.interactable=e}};var Nh=class e extends K{isRoot(){return this.Root?.gameObject===this.gameObject}get canvas(){let e=this.Root;return e?.isCanvas?e:null}get Canvas(){return this.canvas}markDirty(){gh.markUIDirty(this.context)}get shadowComponent(){return this._shadowComponent}set shadowComponent(e){this._shadowComponent=e}_shadowComponent=null;_controlsChildLayout=!0;get controlsChildLayout(){return this._controlsChildLayout}set controlsChildLayout(e){this._controlsChildLayout=e,this.shadowComponent&&(this.shadowComponent.autoLayout=e)}_root=void 0;get Root(){return this._root===void 0&&(this._root=G.getComponentInParent(this.gameObject,Ph)),this._root}_parentComponent=void 0;__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this.shadowComponent=null,this._root=void 0,this._parentComponent=void 0,this}onEnable(){super.onEnable()}addShadowComponent(t,n){if(!t)return;this.removeShadowComponent();let r=this.isRoot()?this.gameObject:this.gameObject.parent;if(this._parentComponent=G.getComponentInParent(r,e),!this._parentComponent){console.warn(`Component \"${this.name}\" doesn't have a UI parent anywhere. Do you have an UI element outside a Canvas? UI components must be a child of a Canvas component`,this);return}t.name=this.name+` (`+(this.constructor.name??`UI`)+`)`,t.autoLayout=this._parentComponent.controlsChildLayout,t[Yi]=this,this.setShadowComponentOwner(t);let i=!1;if(this.Root?.gameObject===this.gameObject)this.gameObject.add(t);else{let e=this._parentComponent.shadowComponent;e&&(e?.add(t),i=!0)}this.shadowComponent=t,n&&n.shadowComponent&&this.shadowComponent&&n.shadowComponent.add(this.shadowComponent),Jo&&t.add(new _e(.5)),this.onAfterAddedToScene(),i&&rt(),Mh&&console.warn(`Added shadow component`,this.shadowComponent)}setShadowComponentOwner(e){if(e&&(e[Yi]===void 0||e[Yi]===this)&&(e[Yi]=this,e.children))for(let t of e.children)this.setShadowComponentOwner(t)}traverseOwnedShadowComponents(e,t,n){if(e&&e[Yi]===t){n(e);for(let r of e.children)this.traverseOwnedShadowComponents(r,t,n)}}removeShadowComponent(){this.shadowComponent&&this.shadowComponent.removeFromParent()}onAfterAddedToScene(){}setInteractable(e){this.shadowComponent&&(this.shadowComponent.interactable=e)}},Ph=class extends Nh{awake(){super.awake()}},Fh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ih=A(`debugui`),Lh=A(`debuguilayout`),Rh=class{width;height},zh=class{x;y;width;height},Bh=new o,Vh=new ce,Hh=new E,Uh=class e extends Nh{get parent(){return this._parentRectTransform}get translation(){return this.gameObject.position}get rotation(){return this.gameObject.quaternion}get scale(){return this.gameObject.scale}_anchoredPosition;get anchoredPosition(){return this._anchoredPosition||=new w,this._anchoredPosition}set anchoredPosition(e){this._anchoredPosition=e}sizeDelta=new w(100,100);pivot=new w(.5,.5);anchorMin=new w(0,0);anchorMax=new w(1,1);minWidth;minHeight;get width(){let e=this.sizeDelta.x;return this.anchorMin.x!==this.anchorMax.x&&this._parentRectTransform&&(e=this._parentRectTransform.width*(this.anchorMax.x-this.anchorMin.x),e+=this.sizeDelta.x),this.minWidth!==void 0&&e{this.markDirty()}),dh(this,`sizeDelta`,()=>{this.markDirty()}),dh(this,`pivot`,()=>{this.markDirty()}),dh(this,`anchorMin`,()=>{this.markDirty()}),dh(this,`anchorMax`,()=>{this.markDirty()})}onEnable(){super.onEnable(),this.rectBlock||=new S,this.lastMatrix||=new ce,this._lastAnchoring||=new w,this._initialPosition||=new o,this._anchoredPosition||=new w,this.addShadowComponent(this.rectBlock),this._transformNeedsUpdate=!0,this.canvas?.registerTransform(this)}onDisable(){super.onDisable(),this.removeShadowComponent(),this.canvas?.unregisterTransform(this)}onParentRectTransformChanged(e){this._transformNeedsUpdate||this.onApplyTransform(Lh?`${e.name} changed`:void 0)}get isDirty(){return this._transformNeedsUpdate||=!this.lastMatrix.equals(this.gameObject.matrix),this._transformNeedsUpdate}markDirty(){this._transformNeedsUpdate||(Lh&&console.warn(`RectTransform markDirty()`,this.name),this._transformNeedsUpdate=!0,this._lastUpdateFrame=-1)}updateTransform(){(this._transformNeedsUpdate||!this.lastMatrix.equals(this.gameObject.matrix))&&this.canUpdate()&&this.onApplyTransform(this._transformNeedsUpdate?`Marked dirty`:`Matrix changed`)}canUpdate(){return this._transformNeedsUpdate&&this.activeAndEnabled&&this._lastUpdateFrame!==this.context.time.frame}onApplyTransform(t){if(this.context.time.frameCount===this._lastUpdateFrame)return;this._lastUpdateFrame=this.context.time.frameCount;let n=this.shadowComponent;if(n){this.gameObject.parent?this._parentRectTransform=G.getComponentInParent(this.gameObject.parent,e):this._parentRectTransform=void 0,this._transformNeedsUpdate=!1,Lh&&console.warn(`RectTransform → ApplyTransform`,this.name+` because `+t),this.isRoot()?this.Root.screenspace||(n.rotation.y=Math.PI):(n.matrix.identity(),n.matrixAutoUpdate=!1,Bh.set(0,0,0),this.applyPivot(Bh),n.matrix.setPosition(Bh.x,Bh.y,0),(this.gameObject.quaternion.x||this.gameObject.quaternion.y||this.gameObject.quaternion.z)&&(Hh.copy(this.gameObject.quaternion),Hh.x*=-1,Hh.z*=-1,Vh.makeRotationFromQuaternion(Hh),n.matrix.premultiply(Vh)),Bh.set(0,0,0),this.applyAnchoring(Bh),this.canvas?.screenspace?Bh.z+=.1:Bh.z+=.01,Vh.identity(),Vh.setPosition(Bh.x,Bh.y,Bh.z),n.matrix.premultiply(Vh),n.matrix.scale(this.gameObject.scale)),this.lastMatrix.copy(this.gameObject.matrix);for(let e of Hf(this.gameObject,Nh,!0,1)){if(e===this||!e.activeAndEnabled)continue;let t=e;t.onParentRectTransformChanged&&t.onParentRectTransformChanged(this)}}}_lastAnchoring;applyAnchoring(e){this._lastAnchoring||=new w;let t=this._lastAnchoring.sub(this._anchoredPosition);this.gameObject.position.x+=t.x,this.gameObject.position.y+=t.y,this._lastAnchoring.copy(this._anchoredPosition),e.x+=this._initialPosition.x-this.gameObject.position.x,e.y+=this._initialPosition.y-this.gameObject.position.y,e.z+=this._initialPosition.z-this.gameObject.position.z;let n=this._parentRectTransform;if(n){let t=0,r=1-this.anchorMax.y-this.anchorMin.y;t-=n.height*.5*r,e.y+=t;let i=0,a=1-this.anchorMax.x-this.anchorMin.x;i-=n.width*.5*a,e.x+=i}}applyPivot(e){if(this.pivot&&!this.isRoot()){let t=this.pivot.x-.5;e.x-=t*this.sizeDelta.x*this.gameObject.scale.x;let n=this.pivot.y-.5;e.y-=n*this.sizeDelta.y*this.gameObject.scale.y}}getBasicOptions(){let e={width:this.sizeDelta.x,height:this.sizeDelta.y,offset:0,backgroundOpacity:0,borderWidth:0,borderRadius:0,borderOpacity:0,letterSpacing:-.03};return this.ensureValidSize(e),e}ensureValidSize(e,t=1e-4){return e.width<=0&&(e.width=t),e.height<=0&&(e.height=1e-4),e}_createdBlocks=[];_createdTextBlocks=[];createNewBlock(e){e={...this.getBasicOptions(),...e},Ih&&console.log(this.name,e);let t=new tt(e);return this._createdBlocks.push(t),t}createNewText(e){Ih&&console.log(e),e={...this.getBasicOptions(),...e},Ih&&console.log(this.name,e);let t=new Qe(e);return this._createdTextBlocks.push(t),t}};Fh([F(w)],Uh.prototype,`anchoredPosition`,null),Fh([F(w)],Uh.prototype,`sizeDelta`,void 0),Fh([F(w)],Uh.prototype,`pivot`,void 0),Fh([F(w)],Uh.prototype,`anchorMin`,void 0),Fh([F(w)],Uh.prototype,`anchorMax`,void 0);var Wh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Gh=class extends K{effectColor;effectDistance};Wh([F(md)],Gh.prototype,`effectColor`,void 0),Wh([F(w)],Gh.prototype,`effectDistance`,void 0);var Kh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},qh={backgroundColor:new a(1,1,1),backgroundOpacity:1,borderColor:new a(1,1,1),borderOpacity:1},Jh=class e extends Nh{get isGraphic(){return!0}get color(){return this._color||=new md(1,1,1,1),this._color}set color(e){(!this._color||this._color.r!==e.r||this._color.g!==e.g||this._color.b!==e.b||this._color.alpha!==e.alpha)&&(this._color||=new md(1,1,1,1),this._color.copy(e),this.onColorChanged())}_alphaFactor=1;setAlphaFactor(e){this._alphaFactor=e,this.onColorChanged()}get alphaFactor(){return this._alphaFactor}sRGBColor=new a(1,0,1);onColorChanged(){if(this.uiObject){this.sRGBColor.copy(this._color),this.sRGBColor.convertLinearToSRGB(),qh.backgroundColor=this.sRGBColor,qh.backgroundOpacity=this._color.alpha;let e=this.uiObject._simpleState__activeStates?.[0];if(e){let t=this.uiObject._simpleState__states?.[e];t&&(`backgroundColor`in t&&(qh.backgroundColor=t.backgroundColor),`backgroundOpacity`in t&&(qh.backgroundOpacity=t.backgroundOpacity))}qh.backgroundOpacity*=this._alphaFactor,this.applyEffects(qh,this._alphaFactor),this.uiObject.set(qh),this.markDirty()}}get m_Color(){return this._color}raycastTarget=!0;uiObject=null;_color=null;_rect=null;_stateManager=null;get rectTransform(){if(this._rect||=G.getComponent(this.gameObject,Uh),!this._rect)throw Error(`Not Supported: Make sure to add a RectTransform component before adding a UI Graphic component.`);return this._rect}onParentRectTransformChanged(){this.uiObject?.set({width:this.rectTransform.width,height:this.rectTransform.height}),this.markDirty()}__internalNewInstanceCreated(e){return super.__internalNewInstanceCreated(e),this._rect=null,this.uiObject=null,this._stateManager=null,this._color&&=this._color.clone(),this}setState(e){this.makePanel(),this.uiObject&&(this.uiObject.setState(e),this?.markDirty())}setupState(e){this.makePanel(),this.uiObject&&(this._stateManager||=new it(this.uiObject),this.uiObject.setupState(e.state,e.attributes))}setOptions(e){this.makePanel(),this.uiObject&&this.uiObject.set(e)}awake(){super.awake(),this.makePanel(),dh(this,`_color`,()=>ph(this,this.onColorChanged))}onEnable(){super.onEnable(),this.uiObject&&(this.rectTransform.shadowComponent?.add(this.uiObject),this.addShadowComponent(this.uiObject,this.rectTransform))}onDisable(){super.onDisable(),this.uiObject&&this.removeShadowComponent()}_currentlyCreatingPanel=!1;makePanel(){if(this.uiObject||this._currentlyCreatingPanel)return;this._currentlyCreatingPanel=!0;let e={backgroundColor:this.color,backgroundOpacity:this.color.alpha,offset:.015};this.onBeforeCreate(e),this.applyEffects(e),this.onCreate(e),this.controlsChildLayout=!1,this._currentlyCreatingPanel=!1,this.onAfterCreated(),this.onColorChanged()}onBeforeCreate(e){}onCreate(e){this.uiObject=this.rectTransform.createNewBlock(e),this.uiObject.name=this.name}onAfterCreated(){}applyEffects(e,t=1){let n=this.gameObject?.getComponent(Gh);n&&(n.effectDistance&&(e.borderWidth=Math.max(Math.abs(n.effectDistance.x),Math.abs(n.effectDistance.y))),n.effectColor&&(e.borderColor=n.effectColor,e.borderOpacity=n.effectColor.alpha*t))}static textureCache=new Map;async setTexture(t){if(this.setOptions({backgroundOpacity:0}),t){if(e.textureCache.has(t))t=e.textureCache.get(t);else if(!t.isRenderTargetTexture){let n=t.clone();n.colorSpace=l,e.textureCache.set(t,n),t=n}this.setOptions({backgroundImage:t,borderRadius:0,backgroundOpacity:this.color.alpha,backgroundSize:`stretch`}),ut.assignTextureLOD(t,0).then(n=>{n instanceof be&&(t&&e.textureCache.set(t,n),this.setOptions({backgroundImage:n}),this.markDirty())})}else this.setOptions({backgroundImage:void 0,borderRadius:0,backgroundOpacity:this.color.alpha});this.markDirty()}onAfterAddedToScene(){super.onAfterAddedToScene(),this.shadowComponent&&(this.shadowComponent.offset=this.shadowComponent.position.z)}};Kh([F(md)],Jh.prototype,`color`,null),Kh([F()],Jh.prototype,`raycastTarget`,void 0);var Yh=class extends Jh{_flippedObject=!1;onAfterCreated(){this.uiObject&&!this._flippedObject&&(this._flippedObject=!0,this.uiObject.scale.y*=-1)}},Xh=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Zh=A(`debugtext`),Q;(function(e){e[e.UpperLeft=0]=`UpperLeft`,e[e.UpperCenter=1]=`UpperCenter`,e[e.UpperRight=2]=`UpperRight`,e[e.MiddleLeft=3]=`MiddleLeft`,e[e.MiddleCenter=4]=`MiddleCenter`,e[e.MiddleRight=5]=`MiddleRight`,e[e.LowerLeft=6]=`LowerLeft`,e[e.LowerCenter=7]=`LowerCenter`,e[e.LowerRight=8]=`LowerRight`})(Q||={});var Qh;(function(e){e[e.Truncate=0]=`Truncate`,e[e.Overflow=1]=`Overflow`})(Qh||={});var $h;(function(e){e[e.Wrap=0]=`Wrap`,e[e.Overflow=1]=`Overflow`})($h||={});var eg;(function(e){e[e.Normal=0]=`Normal`,e[e.Bold=1]=`Bold`,e[e.Italic=2]=`Italic`,e[e.BoldAndItalic=3]=`BoldAndItalic`})(eg||={});var tg=class extends Jh{alignment=Q.UpperLeft;verticalOverflow=Qh.Truncate;horizontalOverflow=$h.Wrap;lineSpacing=1;supportRichText=!1;font;fontStyle=eg.Normal;setAlphaFactor(e){super.setAlphaFactor(e),this.uiObject?.set({fontOpacity:this.color.alpha*this.alphaFactor}),this.markDirty()}get text(){return this._text}set text(e){e!==this._text&&(this._text=e,this.feedText(this.text,this.supportRichText),this.markDirty(),this.context.accessibility.updateElement(this,{label:this.text}))}set_text(e){this.text=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e,this.uiObject?.set({fontSize:e})}sRGBTextColor=new a(1,0,1);onColorChanged(){this.sRGBTextColor.copy(this.color),this.sRGBTextColor.convertLinearToSRGB(),this.uiObject?.set({color:this.sRGBTextColor,fontOpacity:this.color.alpha})}onParentRectTransformChanged(){super.onParentRectTransformChanged(),this.uiObject&&this.updateOverflow()}onBeforeCanvasRender(e){this.updateOverflow()}updateOverflow(){let e=this.uiObject?._overflow;e&&(e._needsUpdate=!0)}onCreate(e){Zh&&console.log(this),this.horizontalOverflow==$h.Overflow&&(e.whiteSpace=`pre`),this.verticalOverflow==Qh.Truncate&&(this.context.renderer.localClippingEnabled=!0,e.overflow=`hidden`),this.horizontalOverflow==$h.Overflow&&(this.verticalOverflow,Qh.Truncate),e.lineHeight=this.lineSpacing,delete e.backgroundOpacity,delete e.backgroundColor,Zh&&(e.backgroundColor=16750848,e.backgroundOpacity=.5);let t=this.rectTransform;e={...e,...this.getTextOpts()},this.getAlignment(e),Zh&&(e.backgroundColor=Math.random()*16777215,e.backgroundOpacity=.1),this.uiObject=t.createNewText(e),this.feedText(this.text,this.supportRichText)}onAfterAddedToScene(){super.onAfterAddedToScene(),this.handleTextRenderOnTop()}_text=``;_fontSize=12;_textMeshUi=null;getTextOpts(){let e=this.fontSize,t={color:this.color,fontOpacity:this.color.alpha,fontSize:e,fontKerning:`normal`};return this.setFont(t,this.fontStyle),t}onEnable(){super.onEnable(),this.context.accessibility.updateElement(this,{role:`text`,label:this.text,hidden:!1}),this._didHandleTextRenderOnTop=!1,this.uiObject&&this.uiObject.addAfterUpdate(()=>{this.setShadowComponentOwner(this.uiObject),this.markDirty()}),setTimeout(()=>this.markDirty(),10),this.canvas?.registerEventReceiver(this)}onDisable(){super.onDisable(),this.canvas?.unregisterEventReceiver(this),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){super.onDestroy(),this.context.accessibility.removeElement(this)}getAlignment(e){switch(e.flexDirection=`column`,this.alignment){case Q.UpperLeft:case Q.MiddleLeft:case Q.LowerLeft:e.textAlign=`left`;break;case Q.UpperCenter:case Q.MiddleCenter:case Q.LowerCenter:e.textAlign=`center`;break;case Q.UpperRight:case Q.MiddleRight:case Q.LowerRight:e.textAlign=`right`;break}switch(this.alignment){default:case Q.UpperLeft:case Q.UpperCenter:case Q.UpperRight:e.alignItems=`start`;break;case Q.MiddleLeft:case Q.MiddleCenter:case Q.MiddleRight:e.alignItems=`center`;break;case Q.LowerLeft:case Q.LowerCenter:case Q.LowerRight:e.alignItems=`end`;break}return e}feedText(e,t){if(Zh&&console.log(`feedText`,this.uiObject,e,t),this.uiObject)if(this._textMeshUi||=[],this.uiObject.children.length=0,!t||e.length===0)this.uiObject.textContent=e;else{let t=this.getNextTag(e);if(!t){this.uiObject.textContent=``,this.setOptions({textContent:e});return}else if(t.startIndex>0){for(let e=this.uiObject.children.length-1;e>=0;e--){let t=this.uiObject.children[e];t.isUI&&(this.uiObject.remove(t),t.clear())}let n=new et({textContent:e.substring(0,t.startIndex),color:`inherit`});this.uiObject.add(n)}let n=[];for(;t;){let r=this.getNextTag(e,t.endIndex),i={fontFamily:this.uiObject?.get(`fontFamily`),color:`inherit`,textContent:``};if(r){i.textContent=this.getText(e,t,r),this.handleTag(t,i,n);let a=new et(i);this.uiObject?.add(a)}else{i.textContent=e.substring(t.endIndex),this.handleTag(t,i,n);let r=new et(i);this.uiObject?.add(r)}t=r}}}_didHandleTextRenderOnTop=!1;handleTextRenderOnTop(){this._didHandleTextRenderOnTop||(this._didHandleTextRenderOnTop=!0,this.startCoroutine(this.renderOnTopCoroutine()))}*renderOnTopCoroutine(){if(!this.canvas)return;let e=[],t=this.canvas,n={renderOnTop:t.renderOnTop,depthWrite:t.depthWrite,doubleSided:t.doubleSided};for(;;){let t=!1;if(this._textMeshUi)for(let r=0;r6?t.color=parseInt(`0x`+e.type.substring(7)):t.color=new a(1,1,1)}else if(e.type==`b`){this.setFont(t,eg.Bold);let r=new ng(e,{fontWeight:700});n.push(r)}else if(e.type==`i`){this.setFont(t,eg.Italic);let r=new ng(e,{fontStyle:`italic`});n.push(r)}}}getText(e,t,n){return e.substring(t.endIndex,n.startIndex)}getNextTag(e,t=0){let n=e.indexOf(`<`,t),r=e.indexOf(`>`,n);if(n>=0&&r>=0){let t=e.substring(n+1,r);return{type:t,startIndex:n,endIndex:r+1,isEndTag:t.startsWith(`/`)}}return null}setFont(e,t){if(!this.font)return;let n=this.font,r=this.getFamilyNameWithCorrectSuffix(n,t);Zh&&console.log(`Selected font family:`+r);let i=nt.getFontFamily(r);switch(i||=nt.addFontFamily(r),e.fontFamily=i,t){default:case eg.Normal:e.fontWeight=400,e.fontStyle=`normal`;break;case eg.Bold:e.fontWeight=700,e.fontStyle=`normal`;break;case eg.Italic:e.fontWeight=400,e.fontStyle=`italic`;break;case eg.BoldAndItalic:e.fontStyle=`italic`,e.fontWeight=400}let a=i.getVariant(e.fontWeight,e.fontStyle);if(!a){let t=r;t?.endsWith(`-msdf.json`)||(t+=`-msdf.json`);let n=r;n?.endsWith(`.png`)||(n+=`.png`),a=i.addVariant(e.fontWeight,e.fontStyle,t,n),a?.addEventListener(`ready`,()=>{this.markDirty()})}}getFamilyNameWithCorrectSuffix(e,t){(e.startsWith(`https:`)||e.startsWith(`http:`))&&(e=new URL(e).pathname);let n=e.lastIndexOf(`-`);if(n<0)return e;let r=e.substring(n+1)?.toLowerCase();if(rg.includes(r))return Zh&&console.warn(`Unsupported font style: `+r),e;let i=e.lastIndexOf(`/`),a=e;i>=0&&(a=a.substring(i+1));let o=a[0]===a[0].toUpperCase(),s=e.substring(0,n>i?n:e.length);switch(Zh&&console.log(`Select font: `,e,eg[t],a,o,s),t){case eg.Normal:return o?s+`-Regular`:s+`-regular`;case eg.Bold:return o?s+`-Bold`:s+`-bold`;case eg.Italic:return o?s+`-Italic`:s+`-italic`;case eg.BoldAndItalic:return o?s+`-BoldItalic`:s+`-bolditalic`;default:return e}}};Xh([F()],tg.prototype,`alignment`,void 0),Xh([F()],tg.prototype,`verticalOverflow`,void 0),Xh([F()],tg.prototype,`horizontalOverflow`,void 0),Xh([F()],tg.prototype,`lineSpacing`,void 0),Xh([F()],tg.prototype,`supportRichText`,void 0),Xh([F(URL)],tg.prototype,`font`,void 0),Xh([F()],tg.prototype,`fontStyle`,void 0),Xh([F()],tg.prototype,`text`,null),Xh([F()],tg.prototype,`fontSize`,null);var ng=class{tag;previousValues;constructor(e,t){this.tag=e,this.previousValues=t}},rg=[`medium`,`mediumitalic`,`black`,`blackitalic`,`thin`,`thinitalic`,`extrabold`,`light`,`lightitalic`,`semibold`],$=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ig=A(`debuguilayout`),ag=class{left=0;right=0;top=0;bottom=0;get vertical(){return this.top+this.bottom}get horizontal(){return this.left+this.right}};$([F()],ag.prototype,`left`,void 0),$([F()],ag.prototype,`right`,void 0),$([F()],ag.prototype,`top`,void 0),$([F()],ag.prototype,`bottom`,void 0);var og;(function(e){e[e.UpperLeft=0]=`UpperLeft`,e[e.UpperCenter=1]=`UpperCenter`,e[e.UpperRight=2]=`UpperRight`,e[e.MiddleLeft=3]=`MiddleLeft`,e[e.MiddleCenter=4]=`MiddleCenter`,e[e.MiddleRight=5]=`MiddleRight`,e[e.LowerLeft=6]=`LowerLeft`,e[e.LowerCenter=7]=`LowerCenter`,e[e.LowerRight=8]=`LowerRight`,e[e.Custom=9]=`Custom`})(og||={});var sg;(function(e){e.Horizontal=`x`,e.Vertical=`y`})(sg||={});var cg=class extends K{_rectTransform=null;get rectTransform(){return this._rectTransform}onParentRectTransformChanged(e){this._needsUpdate=!0}_needsUpdate=!1;get isDirty(){return this._needsUpdate}get isLayoutGroup(){return!0}updateLayout(){this._rectTransform&&(ig&&console.warn(`Layout Update`,this.context.time.frame,this.name),this._needsUpdate=!1,this.onCalculateLayout(this._rectTransform))}childAlignment=og.UpperLeft;reverseArrangement=!1;spacing=0;padding;minWidth=0;minHeight=0;flexibleHeight=0;flexibleWidth=0;preferredHeight=0;preferredWidth=0;start(){this._needsUpdate=!0}onEnable(){ig&&console.log(this.name,this),this._rectTransform=this.gameObject.getComponent(Uh);let e=this.gameObject.getComponentInParent(gg);e&&e.registerLayoutGroup(this),this._needsUpdate=!0}onDisable(){let e=this.gameObject.getComponentInParent(gg);e&&e.unregisterLayoutGroup(this)}set m_Spacing(e){e!==this.spacing&&(this._needsUpdate=!0,this.spacing=e)}get m_Spacing(){return this.spacing}};$([F()],cg.prototype,`childAlignment`,void 0),$([F()],cg.prototype,`reverseArrangement`,void 0),$([F()],cg.prototype,`spacing`,void 0),$([F(ag)],cg.prototype,`padding`,void 0),$([F()],cg.prototype,`minWidth`,void 0),$([F()],cg.prototype,`minHeight`,void 0),$([F()],cg.prototype,`flexibleHeight`,void 0),$([F()],cg.prototype,`flexibleWidth`,void 0),$([F()],cg.prototype,`preferredHeight`,void 0),$([F()],cg.prototype,`preferredWidth`,void 0);var lg=class extends cg{childControlHeight=!0;childControlWidth=!0;childForceExpandHeight=!1;childForceExpandWidth=!1;childScaleHeight=!1;childScaleWidth=!1;onCalculateLayout(e){let t=this.primaryAxis,n=e.width,r=n,i=e.height,a=i;r-=this.padding.horizontal,a-=this.padding.vertical,t===sg.Horizontal?this.padding.horizontal:this.padding.vertical;let o=t===sg.Horizontal,s=o?`y`:`x`,c=o?this.childControlWidth:this.childControlHeight,l=o?this.childControlHeight:this.childControlWidth,u=o?this.childForceExpandWidth:this.childForceExpandHeight,d=o?this.childForceExpandHeight:this.childForceExpandWidth,f=o?a:r,p=o?n:i,m=.5*(o?this.childAlignment%3:Math.floor(this.childAlignment/3)),h=0;o?h+=this.padding.left:h+=this.padding.top;let g=0,_=0;for(let e=0;e0&&(v=e/_)}let y=0;y+=this.padding.left,y-=this.padding.right,m!==0&&(h=p-g,h*=m,h-=ee*m,o?(h-=this.padding.right*m,h+=this.padding.left*(1-m),hh&&(h=e-v*.5+p+this.padding.left,h-=m)}let g=h;t===sg.Vertical&&(g=-g),a.anchoredPosition[t]!==g&&(a.anchoredPosition[t]=g),h+=m,h+=this.spacing,b+=1}}}};$([F()],lg.prototype,`childControlHeight`,void 0),$([F()],lg.prototype,`childControlWidth`,void 0),$([F()],lg.prototype,`childForceExpandHeight`,void 0),$([F()],lg.prototype,`childForceExpandWidth`,void 0),$([F()],lg.prototype,`childScaleHeight`,void 0),$([F()],lg.prototype,`childScaleWidth`,void 0);var ug=class extends lg{get primaryAxis(){return sg.Vertical}},dg=class extends lg{get primaryAxis(){return sg.Horizontal}},fg=class extends cg{onCalculateLayout(){}},pg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},mg;(function(e){e[e.ScreenSpaceOverlay=0]=`ScreenSpaceOverlay`,e[e.ScreenSpaceCamera=1]=`ScreenSpaceCamera`,e[e.WorldSpace=2]=`WorldSpace`,e[e.Undefined=-1]=`Undefined`})(mg||={});var hg=A(`debuguilayout`),gg=class e extends Ph{get isCanvas(){return!0}get screenspace(){return this.renderMode!==mg.WorldSpace}set renderOnTop(e){e!==this._renderOnTop&&(this._renderOnTop=e,this.onRenderSettingsChanged())}get renderOnTop(){return this._renderOnTop===void 0?!!(this.screenspace&&this._renderMode===mg.ScreenSpaceOverlay):this._renderOnTop}_renderOnTop;set depthWrite(e){this._depthWrite!==e&&(this._depthWrite=e,this.onRenderSettingsChanged())}get depthWrite(){return this._depthWrite}_depthWrite=!1;set doubleSided(e){this._doubleSided!==e&&(this._doubleSided=e,this.onRenderSettingsChanged())}get doubleSided(){return this._doubleSided}_doubleSided=!0;set castShadows(e){this._castShadows!==e&&(this._castShadows=e,this.onRenderSettingsChanged())}get castShadows(){return this._castShadows}_castShadows=!1;set receiveShadows(e){this._receiveShadows!==e&&(this._receiveShadows=e,this.onRenderSettingsChanged())}get receiveShadows(){return this._receiveShadows}_receiveShadows=!1;get renderMode(){return this._renderMode}set renderMode(e){this._renderMode!==e&&(this._renderMode=e,this.onRenderSettingsChanged())}_renderMode=mg.Undefined;_rootCanvas;set rootCanvas(t){this._rootCanvas instanceof e||(this._rootCanvas=t)}get rootCanvas(){return this._rootCanvas}_scaleFactor=1;get scaleFactor(){return this._scaleFactor}set scaleFactor(e){this._scaleFactor=e}worldCamera;planeDistance=-1;awake(){this.shadowComponent=this.gameObject,this.previousParent=this.gameObject.parent,hg&&console.log(`Canvas.Awake()`,this.previousParent?.name+`/`+this.gameObject.name),super.awake()}start(){this.applyRenderSettings()}onEnable(){super.onEnable(),this._updateRenderSettingsRoutine=void 0,this._lastMatrixWorld=new ce,this.applyRenderSettings(),document.addEventListener(`resize`,this._boundRenderSettingsChanged),this.context.pre_render_callbacks.push(this.onBeforeRenderRoutine),this.context.post_render_callbacks.push(this.onAfterRenderRoutine)}onDisable(){super.onDisable(),document.removeEventListener(`resize`,this._boundRenderSettingsChanged);let e=this.context.pre_render_callbacks.indexOf(this.onBeforeRenderRoutine);e!==-1&&this.context.pre_render_callbacks.splice(e,1);let t=this.context.post_render_callbacks.indexOf(this.onAfterRenderRoutine);t!==-1&&this.context.post_render_callbacks.splice(t,1)}_boundRenderSettingsChanged=this.onRenderSettingsChanged.bind(this);previousParent=null;_lastMatrixWorld=null;_rectTransforms=[];registerTransform(e){this._rectTransforms.push(e)}unregisterTransform(e){let t=this._rectTransforms.indexOf(e);t!==-1&&this._rectTransforms.splice(t,1)}_layoutGroups=new Map;registerLayoutGroup(e){let t=e.gameObject;this._layoutGroups.set(t,e)}unregisterLayoutGroup(e){let t=e.gameObject;this._layoutGroups.delete(t)}_receivers=[];registerEventReceiver(e){this._receivers.push(e)}unregisterEventReceiver(e){let t=this._receivers.indexOf(e);t!==-1&&this._receivers.splice(t,1)}async onEnterXR(e){this.screenspace?(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!1):(this.gameObject.visible=!1,await qt(1).then(()=>{this.gameObject.visible=!0}))}onLeaveXR(e){this.screenspace&&(e.xr.isVR||e.xr.isPassThrough)&&(this.gameObject.visible=!0)}onBeforeRenderRoutine=()=>{if(this.previousParent=this.gameObject.parent,(this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.gameObject.visible=!1,this.gameObject.removeFromParent();return}this.renderOnTop||this.screenspace?this.gameObject.removeFromParent():(this.onUpdateRenderMode(),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.shadowComponent?.updateWorldMatrix(!0,!0),this.invokeBeforeRenderEvents(),gh.ensureUpdateMeshUI($e,this.context))};onAfterRenderRoutine=()=>{if((this.context.xr?.isVR||this.context.xr?.isPassThrough)&&this.screenspace){this.previousParent?.add(this.gameObject);return}if((this.screenspace||this.renderOnTop)&&this.previousParent&&this.context.mainCamera){this.screenspace?this.context.mainCamera?.add(this.gameObject):this.previousParent.add(this.gameObject);let e=this.context.renderer.autoClear,t=this.context.renderer.autoClearColor;this.context.renderer.autoClear=!1,this.context.renderer.autoClearColor=!1,this.context.renderer.clearDepth(),this.onUpdateRenderMode(!0),this.handleLayoutUpdates(),this.shadowComponent?.updateMatrixWorld(!0),this.invokeBeforeRenderEvents(),gh.ensureUpdateMeshUI($e,this.context,!0),this.context.renderer.render(this.gameObject,this.context.mainCamera),this.context.renderer.autoClear=e,this.context.renderer.autoClearColor=t,this.previousParent.add(this.gameObject)}this._lastMatrixWorld?.copy(this.gameObject.matrixWorld)};invokeBeforeRenderEvents(){for(let e of this._receivers)e.onBeforeCanvasRender?.(this)}handleLayoutUpdates(){this._lastMatrixWorld===null&&(this._lastMatrixWorld=new ce);let e=!this._lastMatrixWorld.equals(this.gameObject.matrixWorld);hg&&e&&console.log(`Canvas Layout changed`,this.context.time.frameCount,this.name);for(let t of this._rectTransforms){e&&t.markDirty();let n=this._layoutGroups.get(t.gameObject);t.isDirty&&!n&&(n=t.gameObject.getComponentInParent(cg)),(t.isDirty||n?.isDirty)&&(hg&&console.log(`CANVAS UPDATE ### `+t.name+` ##################################### `+this.context.time.frame),n?.updateLayout(),t.updateTransform())}}applyRenderSettings(){this.onRenderSettingsChanged()}_updateRenderSettingsRoutine;onRenderSettingsChanged(){this._updateRenderSettingsRoutine||=this.startCoroutine(this._updateRenderSettingsDelayed(),z.OnBeforeRender)}*_updateRenderSettingsDelayed(){if(yield,this._updateRenderSettingsRoutine=void 0,this.shadowComponent){this.onUpdateRenderMode(),uh(this.shadowComponent,this);for(let e of G.getComponentsInChildren(this.gameObject,Nh))uh(e.shadowComponent,this)}}_activeRenderMode=-1;_lastWidth=-1;_lastHeight=-1;onUpdateRenderMode(e=!1){if(!e&&this._renderMode===this._activeRenderMode&&this._lastWidth===this.context.domWidth&&this._lastHeight===this.context.domHeight)return;this._activeRenderMode=this._renderMode;let t=this.context.mainCameraComponent,n=10;switch(t&&t.nearClipPlane>0&&t.farClipPlane>0&&(n=N.lerp(t.nearClipPlane,t.farClipPlane,.01)),this._renderMode===mg.ScreenSpaceCamera&&(this.worldCamera&&(t=this.worldCamera),this.planeDistance>0&&(n=this.planeDistance)),this._renderMode){case mg.ScreenSpaceOverlay:case mg.ScreenSpaceCamera:if(this._lastWidth=this.context.domWidth,this._lastHeight=this.context.domHeight,!t)return;let e=n+.01;this.gameObject.position.x=0,this.gameObject.position.y=0,this.gameObject.position.z=-e,this.gameObject.quaternion.identity();let r=this.gameObject.getComponent(Uh),i=!1;r.sizeDelta.x!==this.context.domWidth&&(i=!0),r.sizeDelta.y!==this.context.domHeight&&(i=!0);let a=t.fieldOfView*Math.PI/180,o=2*Math.tan(a/2)*Math.abs(e);this.gameObject.scale.x=o/this.context.domHeight,this.gameObject.scale.y=o/this.context.domHeight,this.gameObject.scale.z=.01,i&&(r.sizeDelta.x=this.context.domWidth,r.sizeDelta.y=this.context.domHeight,r?.markDirty());break;case mg.WorldSpace:this._lastWidth=-1,this._lastHeight=-1;break}}};pg([F()],gg.prototype,`renderOnTop`,null),pg([F()],gg.prototype,`depthWrite`,null),pg([F()],gg.prototype,`doubleSided`,null),pg([F()],gg.prototype,`castShadows`,null),pg([F()],gg.prototype,`receiveShadows`,null),pg([F()],gg.prototype,`renderMode`,null),pg([F(gg)],gg.prototype,`rootCanvas`,null),pg([F()],gg.prototype,`scaleFactor`,null),pg([F(Z)],gg.prototype,`worldCamera`,void 0),pg([F()],gg.prototype,`planeDistance`,void 0);var _g=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vg=class extends K{get alpha(){return this._alpha}set alpha(e){e!==this._alpha&&(this._alpha=e,this.markDirty())}get isCanvasGroup(){return!0}_alpha=1;interactable=!0;blocksRaycasts=!0;_isDirty=!1;markDirty(){this._isDirty||(this._isDirty=!0,this.startCoroutine(this.applyChangesDelayed(),z.OnBeforeRender))}*applyChangesDelayed(){this._isDirty=!1,this.applyChangesNow()}_buffer=[];applyChangesNow(){this._buffer.length=0;for(let e of G.getComponentsInChildren(this.gameObject,Nh,this._buffer)){let t=e;t.setAlphaFactor&&t.setAlphaFactor(this._alpha)}}};_g([F()],vg.prototype,`alpha`,null),_g([F()],vg.prototype,`interactable`,void 0),_g([F()],vg.prototype,`blocksRaycasts`,void 0);var yg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bg=class{texture=null;rect};yg([F(be)],bg.prototype,`texture`,void 0);var xg=class extends Yh{set image(e){this.sprite||=new bg,this.sprite.texture=e,this.onAfterCreated()}get image(){return this.sprite?this.sprite.texture:null}get sprite(){return this._sprite}set sprite(e){this._sprite!==e&&(this._sprite=e,this.onAfterCreated())}_sprite;pixelsPerUnitMultiplier=1;isBuiltinSprite(){let e=this.sprite;switch(e?.texture?.name){case`InputFieldBackground`:case`UISprite`:case`Background`:case`Knob`:return!0}return!e?.texture?.name?.length&&e?.texture?.image?.width===32&&e?.texture?.image?.height===32}onBeforeCreate(e){super.onBeforeCreate(e),this.isBuiltinSprite()&&(e.borderRadius=5/this.pixelsPerUnitMultiplier,this.sprite?.texture?.name===`Knob`&&(e.borderRadius=999))}onAfterCreated(){this.__didAwake&&(super.onAfterCreated(),!this.isBuiltinSprite()&&this.setTexture(this.sprite?.texture))}};yg([F(bg)],xg.prototype,`sprite`,null),yg([F()],xg.prototype,`pixelsPerUnitMultiplier`,void 0);var Sg=class extends Yh{get mainTexture(){return this._mainTexture}set mainTexture(e){this._mainTexture!==e&&(this._mainTexture=e,this.onAfterCreated())}_mainTexture;onAfterCreated(){this.__didAwake&&(super.onAfterCreated(),this.setTexture(this.mainTexture))}};yg([F(be)],Sg.prototype,`mainTexture`,null);var Cg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wg=A(`debugbutton`),Tg;(function(e){e[e.None=0]=`None`,e[e.ColorTint=1]=`ColorTint`,e[e.SpriteSwap=2]=`SpriteSwap`,e[e.Animation=3]=`Animation`})(Tg||={});var Eg=class{colorMultiplier;disabledColor;fadeDuration;highlightedColor;normalColor;pressedColor;selectedColor};Cg([F()],Eg.prototype,`colorMultiplier`,void 0),Cg([F(md)],Eg.prototype,`disabledColor`,void 0),Cg([F()],Eg.prototype,`fadeDuration`,void 0),Cg([F(md)],Eg.prototype,`highlightedColor`,void 0),Cg([F(md)],Eg.prototype,`normalColor`,void 0),Cg([F(md)],Eg.prototype,`pressedColor`,void 0),Cg([F(md)],Eg.prototype,`selectedColor`,void 0);var Dg=class{disabledTrigger;highlightedTrigger;normalTrigger;pressedTrigger;selectedTrigger},Og=class extends K{click(){this.onClick?.invoke()}onClick=new _m;_isHovered=0;onPointerEnter(e){let t=e.event.pointerType===`mouse`&&e.button===0;t&&(this._isHovered+=1),wg&&console.warn(`Button Enter`,t,this._isHovered,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.highlightedTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`hovered`),t&&this.context.input.setCursor(`pointer`))}onPointerExit(){--this._isHovered,this._isHovered<0&&(this._isHovered=0),wg&&console.log(`Button Exit`,this._isHovered,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this._isHovered>0||(this._isHovered=0,this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.normalTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`normal`),this.context.input.unsetCursor(`pointer`)))}onPointerDown(e){wg&&console.log(`Button Down`,this.animationTriggers?.highlightedTrigger,this.animator),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this.animationTriggers.pressedTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(`pressed`))}onPointerUp(e){wg&&console.warn(`Button Up`,this.animationTriggers?.highlightedTrigger,this.animator,this._isHovered),this.interactable&&(this.transition==Tg.Animation&&this.animationTriggers&&this.animator?this.animator.setTrigger(this._isHovered?this.animationTriggers.highlightedTrigger:this.animationTriggers.normalTrigger):this.transition===Tg.ColorTint&&this.colors&&this._image?.setState(this._isHovered?`hovered`:`normal`))}onPointerClick(e){if(this.interactable&&!(e.button!==0&&e.event.pointerType===tc.Mouse)&&(wg&&(console.warn(`Button Click`,this.onClick),Ti(`CLICKED button `+this.name+` at `+this.context.time.frameCount)),this.onClick&&this.onClick.listenerCount>0&&(this.onClick.invoke(),e.use(),this.context.accessibility.focus(this),wg))){let e=this.gameObject.worldPosition;e.add(this.gameObject.worldUp.multiplyScalar(1+Math.random()*.5)),H.DrawLabel(e,`CLICK:`+Date.now(),.1,1+Math.random()*.5)}}colors;transition;animationTriggers;animator;set interactable(e){this._interactable=e,this._image&&(this._image.setInteractable(e),e?this._image.setState(`normal`):this._image.setState(`disabled`))}get interactable(){return this._interactable}_interactable=!0;set_interactable(e){this.interactable=e}awake(){super.awake(),wg&&console.log(this),this._isInit=!1,this.init()}start(){this._image?.setInteractable(this.interactable),this.gameObject.getComponentInParent(rh)||this.gameObject.addComponent(ah)}onEnable(){super.onEnable(),this.context.accessibility.updateElement(this,{role:`button`,label:this.gameObject.name+` button`,hidden:!1})}onDisable(){super.onDisable(),this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this),this._isHovered&&this.context.input.unsetCursor(`pointer`)}_requestedAnimatorTrigger;*setAnimatorTriggerAtEndOfFrame(e){this._requestedAnimatorTrigger=e,yield,yield,this._requestedAnimatorTrigger==e&&this.animator?.setTrigger(e)}_isInit=!1;_image;init(){this._isInit||(this._isInit=!0,this._image=G.getComponent(this.gameObject,xg),this._image&&(this.stateSetup(this._image),this.interactable?this._image.setState(`normal`):this._image.setState(`disabled`)))}stateSetup(e){e.setInteractable(this.interactable);let t=this.getFinalColor(e.color,this.colors?.normalColor),n={state:`normal`,attributes:{backgroundColor:t,backgroundOpacity:t.alpha}};e.setupState(n);let r=this.getFinalColor(e.color,this.colors?.highlightedColor),i={state:`hovered`,attributes:{backgroundColor:r,backgroundOpacity:r.alpha}};e.setupState(i);let a=this.getFinalColor(e.color,this.colors?.pressedColor),o={state:`pressed`,attributes:{backgroundColor:a,backgroundOpacity:a.alpha}};e.setupState(o);let s=this.getFinalColor(e.color,this.colors?.selectedColor),c={state:`selected`,attributes:{backgroundColor:s,backgroundOpacity:s.alpha}};e.setupState(c);let l=this.getFinalColor(e.color,this.colors?.disabledColor),u={state:`disabled`,attributes:{backgroundColor:l,backgroundOpacity:l.alpha}};e.setupState(u)}getFinalColor(e,t){return t?e.clone().multiply(t).convertLinearToSRGB():e.clone().convertLinearToSRGB()}};Cg([F(_m)],Og.prototype,`onClick`,void 0),Cg([F(Eg)],Og.prototype,`colors`,void 0),Cg([F()],Og.prototype,`transition`,void 0),Cg([F(Dg)],Og.prototype,`animationTriggers`,void 0),Cg([F(fm)],Og.prototype,`animator`,void 0),Cg([F()],Og.prototype,`interactable`,null);var kg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ag=A(`debuginputfield`),jg=class e extends K{get text(){return this.textComponent?.text??``}set text(e){this.textComponent&&(this.textComponent.text=e,this.placeholder&&(e.length>0?this.placeholder.gameObject.visible=!1:this.placeholder.gameObject.visible=!0))}get isFocused(){return e.active===this}textComponent;placeholder;onValueChanged;onEndEdit;static active=null;static activeTime=-1;static htmlField=null;static htmlFieldFocused=!1;inputEventFn;_iosEventFn;start(){Ag&&console.log(this.name,this)}onEnable(){e.htmlField||(e.htmlField=document.createElement(`input`),e.htmlField.style.width=`0px`,e.htmlField.style.height=`0px`,e.htmlField.style.padding=`0px`,e.htmlField.style.border=`none`,e.htmlField.style.overflow=`hidden`,e.htmlField.style.caretColor=`transparent`,e.htmlField.style.outline=`none`,e.htmlField.classList.add(`ar`),e.htmlField.onfocus=()=>e.htmlFieldFocused=!0,e.htmlField.onblur=()=>e.htmlFieldFocused=!1,document.body.append(e.htmlField)),this.inputEventFn||=this.onInput.bind(this),e.htmlField.addEventListener(`keyup`,this.inputEventFn),this.placeholder&&this.textComponent?.text.length&&G.setActive(this.placeholder.gameObject,!1),j.isiOS()&&(this._iosEventFn=this.processInputOniOS.bind(this),window.addEventListener(`click`,this._iosEventFn))}onDisable(){e.htmlField?.removeEventListener(`keyup`,this.inputEventFn),this.onDeselected(),this._iosEventFn&&window.removeEventListener(`click`,this._iosEventFn)}clear(){e.active===this&&e.htmlField?(e.htmlField.value=``,this.setTextFromInputField()):(this.textComponent&&(this.textComponent.text=``),this.placeholder&&G.setActive(this.placeholder.gameObject,!0))}select(){this.onSelected()}deselect(){this.onDeselected()}onPointerEnter(e){e.event.pointerType===`mouse`&&e.button===0&&this.context.input.setCursor(`text`)}onPointerExit(e){this.context.input.unsetCursor(`text`)}onPointerClick(t){Ag&&console.log(`CLICK`,t,e.active),e.activeTime=this.context.time.time,e.active!==this&&this.startCoroutine(this.activeLoop(),z.LateUpdate),this.selectInputField()}*activeLoop(){for(this.onSelected();e.active===this&&!(this.context.input.getPointerClicked(0)&&this.context.time.time-e.activeTime>.2);)this.setTextFromInputField(),yield;this.onDeselected()}onSelected(){if(e.active!==this&&(Ag&&console.log(`Select`,this.name,this,e.htmlField,this.context.isInXR,this.context.arOverlayElement,this.textComponent?.text,e.htmlField?.value),e.active?.onDeselected(),e.active=this,this.placeholder&&G.setActive(this.placeholder.gameObject,!1),e.htmlField)){if(e.htmlField.value=this.textComponent?.text||``,Ag&&console.log(`set input field value`,e.htmlField.value),this.context.isInXR){let t=this.context.arOverlayElement;t&&t.append(e.htmlField)}this.selectInputField()}}onDeselected(){e.active===this&&(e.active=null,Ag&&console.log(`Deselect`,this.name,this),e.htmlField&&(e.htmlField.blur(),document.body.append(e.htmlField)),this.placeholder&&(!this.textComponent||this.textComponent.text.length<=0)&&G.setActive(this.placeholder.gameObject,!0),e.htmlField&&this.onEndEdit?.invoke(e.htmlField.value))}update(){e.active===this&&this.textComponent?.markDirty()}onInput(t){if(e.active===this){if(Ag&&console.log(t.code,t,e.htmlField?.value,this.textComponent?.text),t.code===`Escape`||t.code===`Enter`){this.onDeselected();return}e.htmlField&&(this.textComponent&&(this.setTextFromInputField(),this.placeholder&&G.setActive(this.placeholder.gameObject,this.textComponent.text.length<=0)),this.selectInputField())}}setTextFromInputField(){if(this.textComponent&&e.htmlField){let t=this.textComponent.text,n=e.htmlField.value,r=this.textComponent.text!==e.htmlField.value;this.textComponent.text=e.htmlField.value,r&&(Ag&&console.log(`[InputField] value changed:`,n,t),this.onValueChanged?.invoke(n,t))}}selectInputField(){e.htmlField&&(Ag&&console.log(`Focus Inputfield`,e.htmlFieldFocused,e.htmlField),e.htmlField.setSelectionRange(e.htmlField.value.length,e.htmlField.value.length),j.isiOS()?(e.htmlField.style.display=`block`,e.htmlField.focus({preventScroll:!0})):setTimeout(()=>e.htmlField?.focus(),1))}processInputOniOS(){let e=this.context.physics.raycast();if(!e.length)return;let t=e[0].object,n=ch(t);(n?.gameObject===this.gameObject||n?.gameObject.parent===this.gameObject)&&this.selectInputField()}};kg([F(tg)],jg.prototype,`textComponent`,void 0),kg([F(tg)],jg.prototype,`placeholder`,void 0),kg([F(_m)],jg.prototype,`onValueChanged`,void 0),kg([F(_m)],jg.prototype,`onEndEdit`,void 0);var Mg=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ng=class extends K{id=null;keepAspect=!1;_object=null;onEnable(){if(this._object){this.gameObject.add(this._object);return}if(!this.id||!this.context.mainCamera)return;let e=document.getElementById(this.id);if(!e){console.warn(`Could not find element with id "`+this.id+`"`);return}e.style.display=`block`,e.style.visibility=`hidden`;let t=new ot;t.listenToPointerEvents(this.context.renderer,this.context.mainCamera),this.gameObject.add(t);let n=new ct(e);t.add(n),n.visible=!1;let r=n.material;r.transparent=!0,setTimeout(()=>{n.visible=!0;let e=Qr(this.gameObject).clone();ei(this.gameObject,0,0,0),this.gameObject.updateMatrixWorld();let r=new fe;r.setFromObject(t),this.setWorldRotation(e.x,e.y,e.z);let i=r.max.x-r.min.x,a=r.max.y-r.min.y;if(this.keepAspect){let e=i/a;i>a?n.scale.set(1/i,1/a/e,1):n.scale.set(1/i*e,1/a,1)}else n.scale.set(1/i,1/a,1);let o=this.gameObject.scale;n.scale.multiply(o)},1)}onDisable(){this._object?.removeFromParent()}};Mg([F()],Ng.prototype,`id`,void 0),Mg([F()],Ng.prototype,`keepAspect`,void 0);export{om as $,kt as $a,ji as $i,al as $n,ts as $r,ef as $t,ih as A,kr as Aa,fa as Ai,Xl as An,vn as Ao,ic as Ar,jf as At,Bm as B,ur as Ba,Yi as Bi,Ll as Bn,nn as Bo,js as Br,Pf as Bt,Z as C,vr as Ca,La as Ci,yu as Cn,Ht as Co,mc as Cr,Fp as Ct,gh as D,hi as Da,ba as Di,ou as Dn,It as Do,L as Dr,gp as Dt,X as E,mi as Ea,ka as Ei,su as En,Et as Eo,sc as Er,Cp as Et,Jm as F,ei as Fa,da as Fi,Ul as Fn,Pt as Fo,Ws as Fr,Ef as Ft,Pm as G,ir as Ga,Bi as Gi,Tl as Gn,fs as Gr,_f as Gt,Rm as H,lr as Ha,Hi,Ml as Hn,wt as Ho,Is as Hr,bf as Ht,Xm as I,Br as Ia,ca as Ii,Hl as In,Lt as Io,Hs as Ir,Nf as It,ym as J,Tn as Ja,Ki as Ji,bl as Jn,Es as Jr,mf as Jt,Mm as K,M as Ka,Wi as Ki,Dl as Kn,ps as Kr,pf as Kt,Km as L,hr as La,ta as Li,Vl as Ln,Qt as Lo,Vs as Lr,Af as Lt,eh as M,Fr as Ma,ma as Mi,Zl as Mn,Ut as Mo,Ks as Mr,Hf as Mt,th as N,Ir as Na,la as Ni,ql as Nn,Ft as No,Gs as Nr,Wf as Nt,sh as O,ui as Oa,xa as Oi,au as On,zt as Oo,oc as Or,Tf as Ot,$m as P,$r as Pa,ga as Pi,Wl as Pn,Nt as Po,Us as Pr,Of as Pt,fm as Q,Pn as Qa,Pi as Qi,ul as Qn,es as Qr,U as Qt,Um as R,si as Ra,Zi as Ri,Rl as Rn,Wt as Ro,Ls as Rr,kf as Rt,Ph as S,ti as Sa,za as Si,vu as Sn,Rt as So,pc as Sr,Np as St,Th as T,br as Ta,Va as Ti,cu as Tn,Dt as To,cc as Tr,wp as Tt,J as U,N as Ua,Vi as Ui,Al as Un,O as Uo,Ns as Ur,Sf as Ut,zm as V,sr as Va,Ji as Vi,Fl as Vn,Tt as Vo,Fs as Vr,If as Vt,Fm as W,rr as Wa,Ui as Wi,wl as Wn,k as Wo,Ps as Wr,gf as Wt,_m as X,En as Xa,F as Xi,hl as Xn,ms as Xr,Vd as Xt,mm as Y,Un as Ya,Ri as Yi,vl as Yn,_s as Yr,uf as Yt,gm as Z,Nn as Za,Fi as Zi,dl as Zn,cs as Zr,Qd as Zt,Gh as _,Or as _a,Ja as _i,B as _n,un as _o,kc as _r,Rp as _t,Sg as a,ai as aa,jo as ai,Bd as an,Gt as ao,nl as ar,Qp as at,Rh as b,zr as ba,Ha as bi,wu as bn,fn as bo,Mc as br,Pp as bt,mg as c,Ur as ca,Ho as ci,Ad as cn,A as co,Xc as cr,G as ct,ag as d,Cr as da,Fo as di,md as dn,ln as do,qc as dr,Up as dt,Mi as ea,$o as ei,tf as en,j as eo,ol as er,rm as et,ug as f,Tr as fa,Po as fi,pd as fn,Ot as fo,Vc as fr,Gp as ft,Yh as g,Xr as ga,Xa as gi,Iu as gn,on as go,Pc as gr,kp as gt,Jh as h,Kr as ha,mo as hi,Ku as hn,dn as ho,Lc as hr,Dp as ht,xg as i,_i as ia,Mo as ii,Gd as in,_n as io,Qc as ir,nm as it,oh as j,Ar as ja,ha as ji,$l as jn,Zt as jo,tc as jr,Vf as jt,ah as k,Zr as ka,ua as ki,iu as kn,Yt as ko,ac as kr,zf as kt,fg as l,fi as la,Bo as li,Sd as ln,Xt as lo,$c as lr,Yp as lt,Q as m,di as ma,Oo as mi,Zu as mn,sn as mo,Rc as mr,Op as mt,jg as n,Ti as na,Jo as ni,Kd as nn,bn as no,Yc as nr,tm as nt,vg as o,oi as oa,Ro as oi,jd as on,Kt as oo,el as or,K as ot,tg as p,P as pa,zo as pi,ed as pn,an as po,Ic as pr,Kp as pt,km as q,$n as qa,Gi as qi,El as qn,ds as qr,ff as qt,Og as r,Ei as ra,Lo as ri,Jd as rn,en as ro,Zc as rr,em as rt,gg as s,pi as sa,Io as si,kd as sn,qt as so,tl as sr,Xp as st,Ng as t,Di as ta,Yo as ti,Xd as tn,xn as to,il as tr,im as tt,dg as u,ni as ua,Go as ui,H as un,Mt as uo,Kc as ur,Wp as ut,zh as v,Pr as va,qa as vi,Tu as vn,mn as vo,Ac as vr,zp as vt,Dh as w,yr as wa,Ba as wi,uu as wn,hn as wo,uc as wr,Lp as wt,Nh as x,ri as xa,Ra as xi,Eu as xn,cn as xo,Oc as xr,Ip as xt,Uh as y,Qr as ya,Ua as yi,z as yn,pn as yo,jc as yr,Mp as yt,Vm as z,or as za,Qi as zi,Bl as zn,rn as zo,ks as zr,Df as zt}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js.gz b/Needle/SampleScene/dist/assets/needle-engine-ui.DC9_O2Mo.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c80ee08e8f9a00febda8c0aca4b1382f076318b6 GIT binary patch literal 156633 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
)`):r.push({time:n,element:e})});for(let e of r)e.element&&(e.timeline=new ViewTimeline({subject:e.element,axis:`block`}))}Ls.length=0;let i=0,a=0;for(let e=0;e0&&a<=1){let e=t.time+(s-t.time)*a;Ls.push({name:l,time:e,weight:o}),i+=o}else e===0&&a<=0?(Ls.push({name:l,time:0,weight:1}),i+=1):e===r.length-1&&a>=1&&(Ls.push({name:l,time:n,weight:1}),i+=1)}}if(Ls.length<=0&&a<=0)e.time=t*n;else if(Ls.length>0){let t=Ls[0].time;if(Ls.length>1)for(let e of Ls){let n=e.weight/Math.max(1e-5,i),r=Math.abs(e.time-t);t+=r*n}this.damping<=0||this._firstUpdate?e.time=t:e.time=O.lerp(e.time,t,this.context.time.deltaTime/this.damping),Math.abs(e.time-t)>.001&&(this._needsUpdate=!0),Ps&&this.context.time.frame%30==0&&console.log(`[ScrollFollow ] Timeline ${e.name}: ${t.toFixed(3)}`,Ls.map(e=>`[${e.name} ${(e.weight*100).toFixed(0)}%]`).join(`, `))}}};Ns([A([R,y])],Fs.prototype,`target`,void 0),Ns([A()],Fs.prototype,`damping`,void 0),Ns([A()],Fs.prototype,`invert`,void 0),Ns([A()],Fs.prototype,`htmlSelector`,void 0),Ns([A()],Fs.prototype,`mode`,void 0),Ns([A(k)],Fs.prototype,`changed`,void 0);var Is=new WeakMap,Ls=[],Rs=[],zs=!0;function Bs(e){return zs?(zs=!1,Rs.length=0,document.querySelectorAll(`[data-timeline-marker]`).forEach((e,t)=>{Rs[t]=e}),zs=!1,Bs(e)):Rs[e]||null}function Vs(e){if(!e.source)return 0;let t=e.currentTime,n=e.duration,r=1;return(n.unit===`seconds`||n.unit===`percent`)&&(r=n.value),t.unit===`seconds`?t.value/r:t.value/100}var Hs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Us,Ws=N(`debugviewbox`),Gs=new vt(.5,.5,.5,.5),Ks=class extends R{static{Us=this}static instances=[];referenceFieldOfView=-1;get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,e===`once`&&(this._applyCount=0),(Ws||this.debug)&&console.debug(`[ViewBox] Set mode:`,e))}_mode=`continuous`;debug=!1;onEnable(){(Ws||this.debug||w())&&console.debug(`[ViewBox] Using camera fov:`,this.referenceFieldOfView),Us.instances.push(this),this._applyCount=0,this.removeUpdateCallback(),this.context.pre_render_callbacks.push(this.internalUpdate)}onDisable(){(Ws||this.debug)&&console.debug(`[ViewBox] Disabled`);let e=Us.instances.indexOf(this);e!==-1&&Us.instances.splice(e,1),this._projectedBoxElement?.remove(),this.removeUpdateCallback()}removeUpdateCallback(){let e=this.context.pre_render_callbacks.indexOf(this.internalUpdate);e!==-1&&this.context.pre_render_callbacks.splice(e,1)}static _tempProjectionMatrix=new _;static _tempProjectionMatrixInverse=new _;_applyCount=0;internalUpdate=()=>{if(this.context.isInXR||this.destroyed||!this.activeAndEnabled)return;if(Us.instances[Us.instances.length-1]!==this){(Ws||this.debug)&&V.DrawWireBox(this.gameObject.worldPosition,this.gameObject.worldScale,Gs);return}(Ws||this.debug)&&V.DrawWireBox(this.gameObject.worldPosition,this.gameObject.worldScale,14540032,0,!0,this.gameObject.worldQuaternion);let e=this.context.mainCamera;if(!e||!(e instanceof le))return;if((this.referenceFieldOfView===void 0||this.referenceFieldOfView===-1)&&(this.referenceFieldOfView=e.fov,console.debug(`[ViewBox] No referenceFieldOfView set, using camera fov:`,this.referenceFieldOfView)),this.referenceFieldOfView===void 0||this.referenceFieldOfView<=0){(Ws||this.debug)&&console.warn(`[ViewBox] No valid referenceFieldOfView set, cannot adjust box size:`,this.referenceFieldOfView);return}if(this._applyCount>=1&&this.mode===`once`)return;this._applyCount++;let t=this.context.domWidth,n=this.context.domHeight,r=t,i=n,a=1,o=1,s=this.context.focusRectSize;s&&(r=s.width,i=s.height,a=t/r,o=n/i),Us._tempProjectionMatrix.copy(e.projectionMatrix),Us._tempProjectionMatrixInverse.copy(e.projectionMatrixInverse);let c=e.view,l=e.zoom,u=e.aspect,d=e.fov;e.view=null,e.zoom=1,e.fov=this.referenceFieldOfView,e.updateProjectionMatrix();let f=this.gameObject.worldPosition,p=this.gameObject.worldScale,m=e.worldPosition,ee=m.distanceTo(f),h=Math.max(p.x,p.y,p.z),g=z(m).sub(f);if(eea&&(a=n.x),n.ys&&(s=n.y)}return Ws&&(this._projectedBoxElement||=document.createElement(`div`),this._projectedBoxElement.parentElement!==this.context.domElement&&this.context.domElement.appendChild(this._projectedBoxElement),this._projectedBoxElement.style.position=`fixed`,this._projectedBoxElement.style.outline=`2px dashed rgba(255,0,0,.5)`,this._projectedBoxElement.style.left=(i*.5+.5)*this.context.domWidth+`px`,this._projectedBoxElement.style.top=(-s*.5+.5)*this.context.domHeight+`px`,this._projectedBoxElement.style.width=(a-i)*.5*this.context.domWidth+`px`,this._projectedBoxElement.style.height=(s-o)*.5*this.context.domHeight+`px`,this._projectedBoxElement.style.pointerEvents=`none`,this._projectedBoxElement.style.zIndex=`1000`),{minX:i,maxX:a,minY:o,maxY:s}}_projectedBoxElement=null};Hs([A()],Ks.prototype,`referenceFieldOfView`,void 0),Hs([A()],Ks.prototype,`mode`,null),Hs([A()],Ks.prototype,`debug`,void 0),Ks=Us=Hs([I],Ks);var qs=class extends R{toggleKey=`KeyP`;update(){this.context.input.isKeyDown(this.toggleKey)&&this.context.domElement.classList.toggle(`presentation-mode`)}};function Js(){S.add(`AlignmentConstraint`,xi),S.add(`Animation`,Qn),S.add(`Animator`,it),S.add(`AudioListener`,rr),S.add(`AudioSource`,Kn),S.add(`Avatar_Brain_LookAt`,cr),S.add(`Avatar_MouthShapes`,zn),S.add(`Avatar_MustacheShake`,In),S.add(`AvatarBlink_Simple`,bn),S.add(`AvatarEyeLook_Rotation`,hn),S.add(`AxesHelper`,Ci),S.add(`BasicIKConstraint`,wi),S.add(`BoxHelperComponent`,Di),S.add(`Camera`,Ne),S.add(`CharacterController`,Ai),S.add(`CharacterControllerInput`,ji),S.add(`SphereCollider`,Pn),S.add(`BoxCollider`,dn),S.add(`MeshCollider`,An),S.add(`CapsuleCollider`,Mn),S.add(`ContactShadows`,Dn),S.add(`LogStats`,Ni),S.add(`DeleteBox`,Li),S.add(`Deletable`,Ri),S.add(`DeviceFlag`,Vi),S.add(`DragControls`,Gi),S.add(`DropListener`,sa),S.add(`Duplicatable`,da),S.add(`EventListEvent`,ut),S.add(`EventTrigger`,ha),S.add(`GltfExportBox`,Ca),S.add(`GltfExport`,wa),S.add(`VariantAction`,Ea),S.add(`ChangeTransformOnClick`,jn),S.add(`ChangeMaterialOnClick`,un),S.add(`SetActiveOnClick`,vn),S.add(`HideOnStart`,kn),S.add(`EmphasizeOnClick`,gn),S.add(`PlayAudioOnClick`,mn),S.add(`PlayAnimationOnClick`,Nn),S.add(`PreliminaryAction`,yn),S.add(`PreliminaryTrigger`,ir),S.add(`VisibilityAction`,Fn),S.add(`TapGestureTrigger`,Ln),S.add(`USDZExporter`,Zn),S.add(`Fog`,Aa),S.add(`BoxGizmo`,Gn),S.add(`GridHelper`,Ma),S.add(`GroundProjectedEnv`,Vt),S.add(`UsageMarker`,Pi),S.add(`Interactable`,Fi),S.add(`FixedJoint`,Fa),S.add(`HingeJoint`,Ia),S.add(`Light`,Y),S.add(`LODGroup`,Xa),S.add(`LookAtConstraint`,He),S.add(`NeedleMenu`,ln),S.add(`NestedGltf`,$a),S.add(`Networking`,no),S.add(`OffsetConstraint`,io),S.add(`CameraTargetReachedEvent`,D),S.add(`OrbitControls`,Le),S.add(`ParticleSystemRenderer`,vr),S.add(`ParticleSystem`,yr),S.add(`Attractor`,oo),S.add(`PlayerColor`,so),S.add(`Antialiasing`,wr),S.add(`BloomEffect`,Dr),S.add(`ChromaticAberration`,kr),S.add(`ColorAdjustments`,Sr),S.add(`DepthOfField`,Nr),S.add(`EffectWrapper`,Er),S.add(`PixelationEffect`,xr),S.add(`ScreenSpaceAmbientOcclusion`,jr),S.add(`ScreenSpaceAmbientOcclusionN8`,Or),S.add(`SharpeningEffect`,br),S.add(`TiltShiftEffect`,Tr),S.add(`ToneMappingEffect`,Cr),S.add(`Vignette`,Ar),S.add(`Volume`,Mr),S.add(`ReflectionProbe`,_n),S.add(`Renderer`,Vn),S.add(`MeshRenderer`,_r),S.add(`SkinnedMeshRenderer`,gr),S.add(`Rigidbody`,E),S.add(`SceneSwitcher`,W),S.add(`ScreenCapture`,So),S.add(`SeeThrough`,Eo),S.add(`ShadowCatcher`,ko),S.add(`RemoteSkybox`,vi),S.add(`SmoothFollow`,jo),S.add(`SpatialTriggerReceiver`,Lo),S.add(`SpatialTrigger`,Ro),S.add(`SpectatorCamera`,Ho),S.add(`SplineContainer`,Qo),S.add(`SplineWalker`,ts),S.add(`SpriteRenderer`,xn),S.add(`SyncedCamera`,ss),S.add(`SyncedRoom`,ds),S.add(`SyncedTransform`,rt),S.add(`TestRunner`,ms),S.add(`TestSimulateUserData`,hs),S.add(`PlayableDirector`,ti),S.add(`SignalReceiver`,Rr),S.add(`AnimationTrackHandler`,Gr),S.add(`AudioTrackHandler`,qr),S.add(`MarkerTrackHandler`,Jr),S.add(`SignalTrackHandler`,Yr),S.add(`ControlTrackHandler`,Xr),S.add(`TransformGizmo`,vs),S.add(`BaseUIComponent`,en),S.add(`UIRootComponent`,ot),S.add(`Button`,B),S.add(`Canvas`,Ut),S.add(`CanvasGroup`,Rt),S.add(`EventSystem`,Pe),S.add(`Graphic`,wt),S.add(`MaskableGraphic`,Ct),S.add(`Image`,Et),S.add(`RawImage`,pt),S.add(`InputField`,Ft),S.add(`VerticalLayoutGroup`,bt),S.add(`HorizontalLayoutGroup`,Jt),S.add(`GridLayoutGroup`,Mt),S.add(`Outline`,ft),S.add(`ObjectRaycaster`,C),S.add(`GraphicRaycaster`,jt),S.add(`SpatialGrabRaycaster`,Ot),S.add(`RectTransform`,nn),S.add(`SpatialHtml`,Kt),S.add(`Text`,Bt),S.add(`EnvironmentScene`,ii),S.add(`LookAt`,bs),S.add(`OpenURL`,Cs),S.add(`VideoPlayer`,Z),S.add(`Voip`,En),S.add(`ClickThrough`,ws),S.add(`CursorFollow`,Ds),S.add(`HoverAnimation`,As),S.add(`ScrollFollow`,Fs),S.add(`ViewBox`,Ks),S.add(`Avatar`,Jn),S.add(`XRControllerFollow`,Un),S.add(`XRControllerModel`,mr),S.add(`XRControllerMovement`,On),S.add(`TeleportTarget`,fn),S.add(`WebARCameraBackground`,tr),S.add(`WebARSessionRoot`,Tn),S.add(`WebXR`,hr),S.add(`AvatarMarker`,Yn),S.add(`WebXRImageTracking`,or),S.add(`WebXRPlaneTracking`,$n),S.add(`XRRig`,ur),S.add(`XRFlag`,ar),S.add(`PlayerSync`,Cn),S.add(`PlayerState`,qn),S.add(`PresentationMode`,qs)}export{Yi as $,Xa as A,zr as At,Ca as B,So as C,qr as Ct,io as D,Ur as Dt,oo as E,Yr as Et,Ma as F,ha as G,va as H,Aa as I,ea as J,da as K,Da as L,Y as M,Rr as Mt,Fa as N,Lr as Nt,no as O,Br as Ot,Ia as P,Zi as Q,Ea as R,Eo as S,Gr as St,so as T,Jr as Tt,ya as U,ba as V,ga as W,ta as X,na as Y,$i as Z,Ho as _,mi as _t,Ds as a,Ri as at,jo as b,ii as bt,bs as c,Pi as ct,hs as d,ji as dt,Ji as et,ds as f,Di as ft,Zo as g,vi as gt,Qo as h,xi as ht,As as i,Vi as it,Ja as j,Ir as jt,$a as k,Vr as kt,vs as l,Ni as lt,ts as m,Ci as mt,Ks as n,Gi as nt,ws as o,Li as ot,ss as p,wi as pt,sa as q,Fs as r,K as rt,Cs as s,Fi as st,Js as t,Xi as tt,ms as u,Ai as ut,Ro as v,W as vt,Z as w,Xr as wt,ko as x,ti as xt,Lo as y,ci as yt,wa as z}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.extras.ChmId5tE.js.gz b/Needle/SampleScene/dist/assets/needle-engine.extras.ChmId5tE.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e6e20f8f8c0d1a11f0acaeec8f6617a17cc8139 GIT binary patch literal 77879 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 n=typeof e.priority==`number`?e.priority:x.get(e.effect.constructor)??-1/0,r=typeof t.priority==`number`?t.priority:x.get(t.effect.constructor)??-1/0;return n===-1/0?(v&&console.warn(`Unknown effect found: `,e.constructor.name,e),1):r===-1/0?(v&&console.warn(`Unknown effect found: `,t.constructor.name,t),-1):n-r}),v===`verbose`&&console.debug(`After ordering effects`,[...e])}var fe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},pe=h(`debugpost`),S=class{isVolumeParameter=!0;constructor(e){e!==void 0&&this.initialize(e)}_isInitialized=!1;get isInitialized(){return this._isInitialized}initialize(e){e!==void 0&&(this._value=e,this._defaultValue=e,this._valueRaw=e,this._isInitialized=!0)}get overrideState(){return this._active}set overrideState(e){if(this._active===e)return;this._active=e;let t=e?this._valueRaw:this._defaultValue;this.processValue(t,!0)}_active=!0;get value(){return this._valueRaw}set value(e){this.isInitialized||this.initialize(e),this.processValue(e,!1)}_value;_valueRaw;set defaultValue(e){this._defaultValue=e}_defaultValue=void 0;__init(){this.processValue(this._valueRaw,!0)}valueProcessor;onValueChanged;processValue(e,t){if(e==null||!t&&this.testIfValueChanged(e)===!1)return;let n=this._value;pe&&typeof n==`number`&&typeof e==`number`&&(n?.toFixed(4),e?.toFixed(4)),!this._active&&this._defaultValue!==void 0?(this._value=this._defaultValue,e=this._defaultValue,this._valueRaw=e):(this._valueRaw=e,this._active&&this.valueProcessor&&(e=this.valueProcessor(e)),this._value=e),this.onValueChanged&&this.onValueChanged(e,n,this)}testIfValueChanged(e){return this._valueRaw!==e}};fe([p()],S.prototype,`overrideState`,null),fe([p()],S.prototype,`value`,null),new class extends ae{constructor(){super([S])}onSerialize(e,t){}onDeserialize(e,t){let n=t.target,r=t.path,i;if(n&&r&&(i=n[r]),(typeof i!=`object`||typeof i==`object`&&i.isVolumeParameter!==!0)&&(i=new S),typeof e==`object`&&`value`in e){let t=e.value;i.initialize(t),i.overrideState=e.overrideState}else i.value=e;return i}};var me=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},C=h(`debugpost`),w=class extends ie{get isPostProcessingEffect(){return!0}order=void 0;constructor(e=void 0){if(super(),e)for(let t of Object.keys(e)){let n=e[t],r=this[t];r instanceof S?r.initialize(n):r!==void 0&&(this[t]=n)}}active=!0;_manager=null;onEnable(){super.onEnable(),C&&console.warn(`Enable`,this.constructor.name+(this.__internalDidAwakeAndStart?``:` (awake)`)),this.__internalDidAwakeAndStart&&(this.active=!0),this.onEffectEnabled()}onDisable(){super.onDisable(),C&&console.warn(`Disable`,this.constructor.name),this._manager?.removeEffect(this),this.active=!1}onEffectEnabled(e){e&&e.isPostProcessingManager===!0?this._manager=e:this._manager||=ue(this),this._manager.addEffect(this),this._manager.dirty=!0}init(){}_result;_postprocessingContext=null;get postprocessingContext(){return this._postprocessingContext}apply(e){return this._postprocessingContext=e,this._result||=(this.initParameters(),this.onCreateEffect?.call(this)),this._result&&this.initParameters(),this._result}unapply(){}dispose(){C&&console.warn(`DISPOSE`,this),this._result&&(Array.isArray(this._result)?this._result.forEach(e=>e.dispose()):this._result.dispose()),this._result=void 0}initParameters(){let e=Object.keys(this);for(let t of e){let e=this[t];e instanceof S&&e.__init()}}onEditorModification(e){let t=e.propertyName;if(this[t]instanceof S){let n=e.value;return this[t].value=n,!0}}};me([p()],w.prototype,`active`,void 0);var he=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ge=h(`debugpost`),_e={};function T(e,t){_e[e]=t}function ve(e){return e.__type in _e?_e[e.__type]:(ge&&e.__type&&console.warn(`Unknown postprocessing type`,e.__type,e),w)}var ye=class{components=[];__init(e){this.components?.forEach(t=>{t.gameObject===void 0&&e.gameObject.addComponent(t),t.init()})}addEffect(e){this.components.push(e)}removeEffect(e){let t=this.components.indexOf(e);t>=0&&this.components.splice(t,1)}};he([m([e=>ve(e),w])],ye.prototype,`components`,void 0);var be=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xe=h(`debugpost`),Se;(function(e){e[e.LOW=0]=`LOW`,e[e.MEDIUM=1]=`MEDIUM`,e[e.HIGH=2]=`HIGH`,e[e.ULTRA=3]=`ULTRA`})(Se||={});var Ce=class extends w{get typeName(){return`Antialiasing`}preset=new S(2);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.SMAAEffect({preset:this.preset?.value??g.POSTPROCESSING.MODULE.SMAAPreset.HIGH,edgeDetectionMode:g.POSTPROCESSING.MODULE.EdgeDetectionMode.LUMA});return this.preset.onValueChanged=t=>{xe&&console.log(`Antialiasing preset changed to`,t),e.applyPreset(t)},e}};be([p(S)],Ce.prototype,`preset`,void 0),T(`Antialiasing`,Ce);var we=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},E=class e extends w{static useSelectiveBloom=!1;get typeName(){return`Bloom`}threshold=new S(.9);intensity=new S(1);scatter=new S(.7);selectiveBloom;init(){this.threshold.valueProcessor=e=>e,this.intensity.valueProcessor=e=>e,this.scatter.valueProcessor=e=>e}onCreateEffect(){let t;if(this.selectiveBloom??=e.useSelectiveBloom,this.selectiveBloom){let e=t=new g.POSTPROCESSING.MODULE.SelectiveBloomEffect(this.context.scene,this.context.mainCamera,{blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});e.inverted=!0}else t=new g.POSTPROCESSING.MODULE.BloomEffect({blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.ADD,mipmapBlur:!0,luminanceThreshold:this.threshold.value,luminanceSmoothing:this.scatter.value,radius:.85,intensity:this.intensity.value});return this.intensity.onValueChanged=e=>{t.intensity=e},this.threshold.onValueChanged=e=>{t.luminanceMaterial.threshold=e**2.2},this.scatter.onValueChanged=e=>{t.luminancePass.enabled=!0,t.luminanceMaterial.smoothing=e,t.mipmapBlurPass&&(t.mipmapBlurPass.radius=n.lerp(.1,.9,e))},t}};we([p(S)],E.prototype,`threshold`,void 0),we([p(S)],E.prototype,`intensity`,void 0),we([p(S)],E.prototype,`scatter`,void 0),T(`Bloom`,E);var Te=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},D=class extends w{get typeName(){return`ChromaticAberration`}intensity=new S(0);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.ChromaticAberrationEffect;return e.offset=new s(0,0),e.radialModulation=!0,e.modulationOffset=.15,this.intensity.valueProcessor=e=>e*.02,this.intensity.onValueChanged=t=>{e.offset.x=-t,e.offset.y=t},e}};Te([p(S)],D.prototype,`intensity`,void 0),T(`ChromaticAberration`,D);var O;(function(e){e[e.None=0]=`None`,e[e.Neutral=1]=`Neutral`,e[e.ACES=2]=`ACES`,e[e.AgX=3]=`AgX`,e[e.KhronosNeutral=4]=`KhronosNeutral`})(O||={});var Ee=new Map;function k(e){switch(e){case O.None:return 1;case O.Neutral:return 2;case O.ACES:return 4;case O.AgX:return 6;case O.KhronosNeutral:return 7;default:return Ee.has(e)||(Ee.set(e,!0),console.warn(`[Postprocessing] Unknown tone mapping mode`,e)),7}}function De(e){switch(e){case 1:return O.None;case 4:return O.ACES;case 6:return O.AgX;case 7:return O.Neutral;case 2:return O.Neutral;default:return O.None}}function A(e){switch(e){case 1:return g.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR;case 4:return g.POSTPROCESSING.MODULE.ToneMappingMode.ACES_FILMIC;case 6:return g.POSTPROCESSING.MODULE.ToneMappingMode.AGX;case 7:return g.POSTPROCESSING.MODULE.ToneMappingMode.NEUTRAL;case 2:return g.POSTPROCESSING.MODULE.ToneMappingMode.REINHARD;default:return g.POSTPROCESSING.MODULE.ToneMappingMode.LINEAR}}var Oe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},j=h(`debugpost`),M=class extends w{get typeName(){return`ToneMapping`}mode=new S(void 0);exposure=new S(1);setMode(e){let t=O[e];return t===void 0?(console.error(`[PostProcessing] Invalid ToneMapping mode`,e),this):(this.mode.value=t,this)}get isToneMapping(){return!0}onEffectEnabled(){let e=le(this);e&&super.onEffectEnabled(e)}_tonemappingEffect=null;onCreateEffect(){if(this.mode.isInitialized==0){let e=De(this.context.renderer.toneMapping);j&&console.log(`[PostProcessing] Initializing ToneMapping mode to renderer.toneMapping`,this.context.renderer.toneMapping+` → `+e),this.mode.initialize(e)}this._tonemappingEffect?.dispose();let e=k(this.mode.value),t=this._tonemappingEffect=new g.POSTPROCESSING.MODULE.ToneMappingEffect({mode:A(e)});return this.mode.onValueChanged=n=>{typeof n==`string`?(n=f(n),t.mode=A(n)):t.mode=A(k(n)),t.name=`ToneMapping (`+O[n]+`)`,j&&console.log(`[PostProcessing] ToneMapping mode changed to`,O[n],e,t.mode)},j&&console.log(`[PostProcessing] Use ToneMapping`,O[this.mode.value],e,t.mode,`renderer.tonemapping: `+this.context.renderer.toneMapping),t}onBeforeRender(){if(this._tonemappingEffect&&this.postprocessingContext?.handler.getEffectIsActive(this._tonemappingEffect)&&(this.mode.overrideState&&(this.context.renderer.toneMapping=k(this.mode.value)),this.exposure.overrideState&&this.exposure.value!==void 0)){let e=Math.max(0,this.exposure.value);this.context.renderer.toneMappingExposure=e}}};Oe([p(S)],M.prototype,`mode`,void 0),Oe([p(S)],M.prototype,`exposure`,void 0),T(`Tonemapping`,M);var N=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},P=class extends w{get typeName(){return`ColorAdjustments`}remap=!0;postExposure=new S(1);contrast=new S(0);hueShift=new S(0);saturation=new S(0);init(){this.postExposure.valueProcessor=e=>(this.remap&&(e=2**e),e),this.contrast.valueProcessor=e=>{if(!this.remap)return e;let t=1;return e>0?t=200:e<0&&(t=100),e/t},this.contrast.defaultValue=0,this.hueShift.valueProcessor=e=>this.remap?Math.PI*e/180:e,this.hueShift.defaultValue=0,this.saturation.valueProcessor=e=>this.remap?e<0?e/100:e/(100*Math.PI):e,this.saturation.defaultValue=0}onCreateEffect(){let e=[],t=this.postprocessingContext?.components.find(e=>e instanceof M);t||(t=new M,this.postprocessingContext?.components.push(t)),this.postExposure.onValueChanged=e=>{this.postExposure.overrideState&&t?t.exposure.value=e:console.warn(`[PostProcessing] PostExposure is set to override but no ToneMappingEffect found in the postprocessing stack. Please add a ToneMappingEffect to your postprocessing stack to use PostExposure.`)};let n=new g.POSTPROCESSING.MODULE.BrightnessContrastEffect;this.contrast.onValueChanged=e=>n.contrast=e;let r=new g.POSTPROCESSING.MODULE.HueSaturationEffect;return this.hueShift.onValueChanged=e=>r.hue=e,this.saturation.onValueChanged=e=>r.saturation=e,e.push(n),e.push(r),e}};N([p(S)],P.prototype,`postExposure`,void 0),N([p(S)],P.prototype,`contrast`,void 0),N([p(S)],P.prototype,`hueShift`,void 0),N([p(S)],P.prototype,`saturation`,void 0),T(`ColorAdjustments`,P);var F=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ke;(function(e){e[e.Off=0]=`Off`,e[e.Gaussian=1]=`Gaussian`,e[e.Bokeh=2]=`Bokeh`})(ke||={});var Ae=h(`debugpost`),I=class extends w{get typeName(){return`DepthOfField`}mode;focusDistance=new S(1);focalLength=new S(.2);aperture=new S(20);gaussianMaxRadius=new S;resolutionScale=new S(1/window.devicePixelRatio);bokehScale=new S;init(){this.focalLength.valueProcessor=e=>{let t=e/300;return d.lerp(2,.01,t)},this.aperture.valueProcessor=e=>{let t=1-e/32;return d.lerp(1,20,t)}}onCreateEffect(){if(this.mode===ke.Off){Ae&&console.warn(`DepthOfField: Mode is set to Off`);return}let e=new g.POSTPROCESSING.MODULE.DepthOfFieldEffect(this.context.mainCamera,{worldFocusRange:.2,focalLength:1,bokehScale:20,resolutionScale:this.resolutionScale.value});return this.focusDistance.onValueChanged=t=>{e.cocMaterial.worldFocusDistance=t},this.focalLength.onValueChanged=t=>e.cocMaterial.worldFocusRange=t,this.aperture.onValueChanged=t=>e.bokehScale=t,this.resolutionScale&&(this.resolutionScale.onValueChanged=t=>e.resolution.scale=t),[e]}unapply(){}};F([p()],I.prototype,`mode`,void 0),F([p(S)],I.prototype,`focusDistance`,void 0),F([p(S)],I.prototype,`focalLength`,void 0),F([p(S)],I.prototype,`aperture`,void 0),F([p(S)],I.prototype,`gaussianMaxRadius`,void 0),F([p(S)],I.prototype,`resolutionScale`,void 0),F([p(S)],I.prototype,`bokehScale`,void 0),T(`DepthOfField`,I);var je=class extends w{effect;constructor(e){super(),this.effect=e}get typeName(){return this.effect.constructor.name}onCreateEffect(){return this.effect}},Me=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},L=class extends w{get typeName(){return`PixelationEffect`}granularity=new S(10);onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.PixelationEffect;return this.granularity.onValueChanged=t=>{e.granularity=t},e}};Me([p(S)],L.prototype,`granularity`,void 0),T(`PixelationEffect`,L);var R=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},z=class extends w{get typeName(){return`ScreenSpaceAmbientOcclusion`}intensity=new S(2);falloff=new S(1);samples=new S(9);color=new S(new e(0,0,0));luminanceInfluence=new S(.7);onBeforeRender(){if(this._ssao&&this.context.mainCamera instanceof o){let e=this.context.mainCamera.far-this.context.mainCamera.near;this._ssao.ssaoMaterial.worldDistanceFalloff=e*.01,this._ssao.ssaoMaterial.worldDistanceThreshold=this.context.mainCamera.far}}_ssao;onCreateEffect(){let t=this.context.mainCamera,n=new g.POSTPROCESSING.MODULE.NormalPass(this.context.scene,t),r=new g.POSTPROCESSING.MODULE.DepthDownsamplingPass({normalBuffer:n.texture,resolutionScale:.5}),i=this._ssao=new g.POSTPROCESSING.MODULE.SSAOEffect(t,n.texture,{normalDepthBuffer:r.texture,worldDistanceThreshold:1,worldDistanceFalloff:1,worldProximityThreshold:.1,worldProximityFalloff:2,intensity:1,blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.MULTIPLY,luminanceInfluence:.5});this.intensity.onValueChanged=e=>{i.intensity=e},this.falloff.onValueChanged=e=>{i.ssaoMaterial.radius=e*.1},this.samples.onValueChanged=e=>{i.ssaoMaterial.samples=e},this.color.onValueChanged=t=>{i.color||=new e,i.color.copy(t)},this.luminanceInfluence.onValueChanged=e=>{i.luminanceInfluence=e};let a=[];return a.push(n),a.push(r),a.push(i),a}};R([p(S)],z.prototype,`intensity`,void 0),R([p(S)],z.prototype,`falloff`,void 0),R([p(S)],z.prototype,`samples`,void 0),R([p(S)],z.prototype,`color`,void 0),R([p(S)],z.prototype,`luminanceInfluence`,void 0),T(`ScreenSpaceAmbientOcclusion`,z);var B=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ne=h(`debugN8AO`),V;(function(e){e[e.Performance=0]=`Performance`,e[e.Low=1]=`Low`,e[e.Medium=2]=`Medium`,e[e.High=3]=`High`,e[e.Ultra=4]=`Ultra`})(V||={});var H=class extends w{get typeName(){return`ScreenSpaceAmbientOcclusionN8`}get pass(){return this._ssao}gammaCorrection=!0;aoRadius=new S(1);falloff=new S(1);intensity=new S(1);color=new S(new e(0,0,0));screenspaceRadius=!1;quality=V.Medium;_ssao;onValidate(){this._ssao&&(this._ssao.setQualityMode(V[this.quality]),this._ssao.configuration.gammaCorrection=this.gammaCorrection,this._ssao.configuration.screenSpaceRadius=this.screenspaceRadius)}onCreateEffect(){let n=this.context.mainCamera,r=this.context.domWidth,i=this.context.domHeight,a=this._ssao=new g.POSTPROCESSING_AO.MODULE.N8AOPostPass(this.context.scene,n,r,i);a.name=`SSAO_N8`;let o=V[this.quality];if(a.setQualityMode(o),a.configuration.transparencyAware=!1,a.configuration.halfRes=window.devicePixelRatio>1,a.effectCompositerQuad?.material){let e=a.effectCompositerQuad.material;e.fragmentShader=e.fragmentShader.replace(`if (depth == 1.0) { + texel = vec4(0.0, 0.0, 0.0, 1.0);`,`if (depth == 1.0) { + gl_FragColor = sceneTexel; + return;`),e.needsUpdate=!0}let s=new t(r,i);return a.configuration.beautyRenderTarget=s,a.configuration.autoRenderBeauty=!1,a.configuration.gammaCorrection=this.gammaCorrection,a.configuration.screenSpaceRadius=this.screenspaceRadius,Ne&&(a.enableDebugMode(),console.log(a),setInterval(()=>{console.log(`SSAO`,a.lastTime)},1e3),setInterval(()=>{console.log(`SSAO`,a.enabled,{ssao:a,autoRenderBeauty:a.configuration.autoRenderBeauty})},4e3)),this.intensity.onValueChanged=e=>{a.configuration.intensity=e},this.falloff.onValueChanged=e=>{a.configuration.distanceFalloff=e},this.aoRadius.onValueChanged=e=>{a.configuration.aoRadius=e},this.color.onValueChanged=t=>{a.color||=new e,a.configuration.color.copy(t)},a}};B([_(),p()],H.prototype,`gammaCorrection`,void 0),B([p(S)],H.prototype,`aoRadius`,void 0),B([p(S)],H.prototype,`falloff`,void 0),B([p(S)],H.prototype,`intensity`,void 0),B([p(S)],H.prototype,`color`,void 0),B([_(),p()],H.prototype,`screenspaceRadius`,void 0),B([_(),p()],H.prototype,`quality`,void 0),T(`ScreenSpaceAmbientOcclusionN8`,H);var Pe=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},U=class extends w{get typeName(){return`Sharpening`}order=b.Sharpening;_effect;onCreateEffect(){return this._effect??=new(Fe()),this.effect}get effect(){return this._effect}set amount(e){this._amount=e,this._effect&&(this._effect.uniforms.get(`amount`).value=e)}get amount(){return this._effect?this._effect.uniforms.get(`amount`).value:this._amount}_amount=1;set radius(e){this._radius=e,this._effect&&(this._effect.uniforms.get(`radius`).value=e)}get radius(){return this._effect?this._effect.uniforms.get(`radius`).value:this._radius}_radius=1};Pe([p()],U.prototype,`amount`,null),Pe([p()],U.prototype,`radius`,null);function Fe(){class e extends g.POSTPROCESSING.MODULE.Effect{constructor(){super(`Sharpening`,` + uniform sampler2D tDiffuse; + uniform float amount; + uniform float radius; + + void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) { + float tx = 1.0 / resolution.x; + float ty = 1.0 / resolution.y; + vec2 texelSize = vec2(tx, ty); + + vec4 blurred = vec4(0.0); + float total = 0.0; + + for (float x = -radius; x <= radius; x++) { + for (float y = -radius; y <= radius; y++) { + vec2 offset = vec2(x, y) * texelSize; + vec4 diffuse = texture2D(tDiffuse, uv + offset); + float weight = exp(-length(offset) * amount); + blurred += diffuse * weight; + total += weight; + } + } + + if (total > 0.0) { + blurred /= total; + } + + // Calculate the sharpened color using inputColor + vec4 sharp = inputColor + clamp(inputColor - blurred, 0.0, 1.0) * amount; + // Keep original alpha + sharp.a = inputColor.a; + + // Ensure the sharp color does not go below 0 or above 1 + // This means: sharpening must happen AFTER tonemapping. + sharp = clamp(sharp, 0.0, 1.0); + + outputColor = sharp; + } + + `,{vertexShader:` + void mainSupport() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } + `,blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.NORMAL,uniforms:new Map([[`amount`,new c(1)],[`radius`,new c(1)]]),attributes:se.CONVOLUTION})}}return e}var W=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},G=class extends w{get typeName(){return`TiltShiftEffect`}offset=new S(0);rotation=new S(0);focusArea=new S(.4);feather=new S(.3);kernelSize=new S(2);resolutionScale=new S(1/window.devicePixelRatio);init(){this.offset.defaultValue=0,this.rotation.defaultValue=0,this.focusArea.defaultValue=.4,this.feather.defaultValue=.3,this.kernelSize.defaultValue=g.POSTPROCESSING.MODULE.KernelSize.MEDIUM,this.resolutionScale.defaultValue=1/window.devicePixelRatio}onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.TiltShiftEffect({kernelSize:g.POSTPROCESSING.MODULE.KernelSize.VERY_LARGE,offset:this.offset.value,rotation:this.rotation.value,focusArea:this.focusArea.value,feather:this.feather.value});return this.offset.onValueChanged=t=>e.offset=t,this.rotation.onValueChanged=t=>e.rotation=t,this.focusArea.onValueChanged=t=>e.focusArea=t,this.feather.onValueChanged=t=>e.feather=t,this.kernelSize.onValueChanged=t=>e.blurPass.kernelSize=t,this.resolutionScale.onValueChanged=t=>e.resolution.scale=t/window.devicePixelRatio,e}};W([p(S)],G.prototype,`offset`,void 0),W([p(S)],G.prototype,`rotation`,void 0),W([p(S)],G.prototype,`focusArea`,void 0),W([p(S)],G.prototype,`feather`,void 0),W([p(S)],G.prototype,`kernelSize`,void 0),W([p(S)],G.prototype,`resolutionScale`,void 0),T(`TiltShiftEffect`,G);var K=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},q=class extends w{get typeName(){return`Vignette`}color=new S({r:0,g:0,b:0,a:1});intensity=new S(0);center=new S({x:.5,y:.5});init(){this.color.defaultValue={r:0,g:0,b:0,a:1},this.intensity.defaultValue=0,this.center.defaultValue={x:.5,y:.5}}onCreateEffect(){let e=new g.POSTPROCESSING.MODULE.VignetteEffect;return this.intensity.onValueChanged=t=>{e.offset=t,this.updateDarkness(e)},this.color.onValueChanged=t=>{this.updateDarkness(e)},e}updateDarkness(e){e.darkness=this.intensity.value}};K([p(S)],q.prototype,`color`,void 0),K([p(S)],q.prototype,`intensity`,void 0),K([p(S)],q.prototype,`center`,void 0),T(`Vignette`,q),globalThis.NEEDLE_USE_POSTPROCESSING=globalThis.NEEDLE_USE_POSTPROCESSING===void 0?!0:globalThis.NEEDLE_USE_POSTPROCESSING;var J=h(`debugpost`),Ie=Symbol(`needle:postprocessing-handler`),Y=Symbol(`needle:previous-autoclear-state`),X=Symbol(`needle:previous-tone-mapping`),Le=class e{_composer=null;_lastVolumeComponents;_effects=[];getEffectIsActive(e){return e?this._isActive&&this._effects.some(t=>t.effect===e):!1}get isActive(){return this._isActive}get composer(){return this._composer}_isActive=!1;context;constructor(e){this.context=e}apply(e){return`env`in import.meta,this._isActive=!0,this.onApply(this.context,e)}unapply(e=!0){if(J&&console.log(`Unapplying postprocessing effects`),this._isActive=!1,this._lastVolumeComponents){for(let e of this._lastVolumeComponents)e.unapply();this._lastVolumeComponents.length=0}let t=this.context;t[Ie]===this&&(delete t[Ie],typeof t.renderer[Y]==`boolean`&&(t.renderer.autoClear=t.renderer[Y]),typeof t.renderer[X]==`number`&&(t.renderer.toneMapping=t.renderer[X])),this._composer?.removeAllPasses(),e&&this._composer?.dispose(),t.composer===this._composer&&(t.composer=null),this._adaptiveDPR_OverrideActive&&(this._adaptiveDPR_OverrideActive=!1,t.devicePixelRatio=`auto`),this.handleDevicePixelRatio()}dispose(){this.unapply(!0);for(let e of this._effects)e.effect.dispose();this._effects.length=0,this._composer=null}async onApply(e,t){if(!t)return;await Promise.all([g.POSTPROCESSING.load(),g.POSTPROCESSING_AO.load()]),e[Ie]=this,J&&console.log(`Apply Postprocessing Effects`,t),this._lastVolumeComponents=[...t],this._effects.length=0;let n={handler:this,components:this._lastVolumeComponents};for(let t=0;t1){let e=Math.max(1,Math.round((a-o)*10)/10);e=59&&r>1&&n-this._adaptiveDPR_LastDecreaseTime>10&&aa?(this._adaptiveDPR_LastChangeTime=n,this.context.devicePixelRatio=e,J&&console.debug(`[PostProcessing] Increased pixel ratio from ${a.toFixed(1)} to ${e}`)):this._adaptiveDPR_OverrideActive&&(this._adaptiveDPR_OverrideActive=!1,this._adaptiveDPR_LastChangeTime=n,this.context.devicePixelRatio=`auto`,J&&console.debug(`[PostProcessing] Restored pixel ratio to auto`))}}applyEffects(e){if(this._anyPassHasDepth=!1,this._anyPassHasNormal=!1,this._hasSmaaEffect=!1,this._effects.length<=0)return;let n=e.mainCameraComponent,o=e.renderer,s=e.scene,c=n.threeCamera;if(typeof o[Y]==`boolean`&&(o.autoClear=o[Y]),o[Y]=o.autoClear,typeof o[X]==`number`&&(o.toneMapping=o[X]),o[X]=o.toneMapping,o.toneMapping!=0&&!this._effects.find(e=>e instanceof g.POSTPROCESSING.MODULE.ToneMappingEffect)){let e=new g.POSTPROCESSING.MODULE.ToneMappingEffect;e.name=`ToneMapping (${o.toneMapping})`,e.mode=A(o.toneMapping),this._effects.push({typeName:`ToneMapping`,effect:e,priority:b.ToneMapping})}this._composer||=new g.POSTPROCESSING.MODULE.EffectComposer(o,{frameBufferType:a,stencilBuffer:!0}),e.composer&&e.composer!==this._composer&&console.warn(`There's already an active EffectComposer in your scene: replacing it with a new one. This might cause unexpected behaviour. Make sure to only use one PostprocessingManager/Volume in your scene.`),e.composer=this._composer;let l=e.composer;l.setMainCamera(c),l.setRenderer(o),l.setMainScene(s),l.autoRenderToScreen=!0,l.multisampling=0;for(let e of l.passes)e.dispose();l.removeAllPasses();let u=new g.POSTPROCESSING.MODULE.RenderPass(s,c);u.name=`RenderPass`,u.mainScene=s,l.addPass(u);let d=u.render;this._customInputBuffer?.dispose(),this._customInputBuffer=null,u.render=(e,n,i,o,s)=>{if(n){if(this._multisampling<=0){d.call(u,e,n,i,o,s);return}n.samples=0,i&&(i.samples=0),(!this._customInputBuffer||this._customInputBuffer.width!==n.width||this._customInputBuffer.height!==n.height||this._customInputBuffer.samples!==this._multisampling||this._customInputBuffer.texture.format!==n.texture.format||this._customInputBuffer.texture.type!==1016)&&(this._customInputBuffer?.dispose(),this._customInputBuffer=new t(n.width,n.height,{format:n.texture.format,type:a,depthBuffer:n.depthBuffer,depthTexture:n.depthTexture?new r(n.width,n.height):void 0,stencilBuffer:n.stencilBuffer,samples:Math.max(0,this._multisampling),minFilter:n.texture.minFilter??1006,magFilter:n.texture.magFilter??1006,generateMipmaps:n.texture.generateMipmaps}),this._customInputBufferId++,this._customInputBuffer.texture.name=`CustomInputBuffer-${this._customInputBufferId}`,this._customInputBuffer.depthTexture&&n.depthTexture&&(this._customInputBuffer.depthTexture.format=n.depthTexture.format,this._customInputBuffer.depthTexture.type=n.depthTexture.type),J&&console.warn(`[PostProcessing] Input buffer created with size ${this._customInputBuffer.width}x${this._customInputBuffer.height} and samples ${this._customInputBuffer.samples}`)),d.call(u,e,this._customInputBuffer,i,o,s),e.setRenderTarget(n),ee.blit(this._customInputBuffer.texture,n,{renderer:e,depthTexture:this._customInputBuffer.depthTexture,depthWrite:!0,depthTest:!0})}};try{de(this._effects);let e=!1,t=null;for(let n=this._effects.length-1;n>=0;n--){let r=this._effects[n].effect;if(r instanceof g.POSTPROCESSING.MODULE.ToneMappingEffect){if(e){J&&console.warn(`[PostProcessing] Found multiple tonemapping effects in the scene: ${r.name} and ${t?.name}. Only the last one added will be used.`),this._effects.splice(n,1);continue}t=r,e=!0}}let n=[],r=!1;for(let e=0;ee.name).join(`, `)+`]`),this.createPassForMergeableEffects(n,l,c,s)),r=!0),n.push(i)):i instanceof g.POSTPROCESSING.MODULE.Pass?(r=!1,this.createPassForMergeableEffects(n,l,c,s),i.renderToScreen=!1,l.addPass(i)):(r=!1,this.createPassForMergeableEffects(n,l,c,s),l.addPass(i)))}this.createPassForMergeableEffects(n,l,c,s)}catch(e){console.error(`Error while applying postprocessing effects`,e),l.passes.forEach(e=>e.dispose()),l.removeAllPasses()}let f=!1;for(let e=l.passes.length-1;e>=0;e--){let t=l.passes[e],n=!1,r=!1;t.enabled&&(f||(n=!0,r=!0),f=!0),t.renderToScreen=r,t?.configuration===void 0?`autosetGamma`in t&&(t.autosetGamma=n):t.configuration.gammaCorrection=n,this._anyPassHasDepth||=t.needsDepthTexture}let p=l.depthTexture;p&&(p.source=new i({width:0,height:0}),p.needsUpdate=!0),this.handleDevicePixelRatio(),J&&console.log(`[PostProcessing] Passes →`,[...l.passes],` +--------------------------------- +• `+l.passes.map(e=>e.name||e.constructor.name+`*`).join(` +• `)+` +`),J&&this._onCreateEffectsDebug(this._composer,c)}createPassForMergeableEffects(e,t,n,r){if(e.length>0){let i=new g.POSTPROCESSING.MODULE.EffectPass(n,...e);i.name=e.map(e=>e.name).join(`, `),i.mainScene=r,i.enabled=!0,i.renderToScreen=!1,t.addPass(i),e.length=0}}handleDevicePixelRatio(){typeof this.context.devicePixelRatio==`number`&&this.context.requestSizeUpdate()}_menuEntry=null;_passIndices=null;_onCreateEffectsDebug(e,t){if(J===`passes`){let n=new g.POSTPROCESSING.MODULE.DepthEffect({blendFunction:g.POSTPROCESSING.MODULE.BlendFunction.NORMAL,inverted:!0});n.name=`Depth Effect`;let r=new g.POSTPROCESSING.MODULE.EffectPass(t,n);if(r.name=`Depth Effect Pass`,r.enabled=!1,e.passes.push(r),this._passIndices!==null){let t=[e.passes[0]];this._passIndices.length>0&&t.push(...this._passIndices.filter(e=>e!==0).map(t=>e.passes[t]).filter(e=>e)),t.length>0&&console.log(`[PostProcessing] Passes (selected) →`,t),e.passes.length=0;for(let n of t)n.enabled=!0,n.renderToScreen=!1,e.addPass(n)}let i=this.context.menu;if(i&&this._passIndices===null){this._menuEntry&&this._menuEntry.remove();let t=document.createElement(`select`);t.multiple=!0;let n=document.createElement(`option`);n.innerText=`Final Output`,n.value=`-1`,t.appendChild(n);for(let n of e.passes){let r=document.createElement(`option`);r.innerText=n.name,r.value=`${e.passes.indexOf(n)}`,r.title=n.name,t.appendChild(r)}i.appendChild(t),this._menuEntry=t,t.addEventListener(`change`,()=>{let e=Array.from(t.selectedOptions).map(e=>parseInt(e.value));e.length===1&&e[0]===-1?this._passIndices=null:this._passIndices=e,this.applyEffects(this.context)})}}}},Re=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Z=h(`debugpost`),Q=class extends ie{get isPostProcessingManager(){return!0}get effects(){return this._activeEffects}get dirty(){return this._isDirty}set dirty(e){this._isDirty=e}sharedProfile;multisampling=`auto`;adaptiveResolution=!0;addEffect(e){let t=e;return t instanceof w||(t=new je(t),typeof e.order==`number`&&(t.order=e.order)),t.gameObject===void 0&&this.gameObject.addComponent(t),this._effects.includes(t)?e:(this._effects.push(t),this._isDirty=!0,e)}removeEffect(e){let t=-1;if(t=e instanceof w?this._effects.indexOf(e):this._effects.findIndex(t=>t instanceof je&&t.effect===e),t!==-1)return this._effects.splice(t,1),this._isDirty=!0,e;if(e instanceof w){let t=this.sharedProfile?.components?.indexOf(e);t!==void 0&&t!==-1&&(this._isDirty=!0,this.sharedProfile?.components?.splice(t,1))}return e}_postprocessing;_activeEffects=[];_effects=[];markDirty(){this._isDirty=!0}awake(){Z&&(console.log(`PostprocessingManager Awake`,this),console.log(`Press P to toggle post processing`),window.addEventListener(`keydown`,e=>{e.key===`p`&&(this.enabled=!this.enabled,re(`Toggle PostProcessing `+this.name+`: Enabled=`+this.enabled),this.markDirty())})),this.sharedProfile?.__init(this)}_componentEnabledTime=-1;_multisampleAutoChangeTime=0;_multisampleAutoDecreaseTime=0;onEnable(){this._componentEnabledTime=this.context.time.realtimeSinceStartup,this._isDirty=!0}onDisable(){this._postprocessing?.unapply(),this._isDirty=!1}onBeforeRender(){if(!this.context.isInXR&&(this.context.mainCamera&&this._isDirty&&this.apply(),this.context.composer&&this._postprocessing&&this._postprocessing.composer===this.context.composer)){if(this.context.renderer.getContext().isContextLost()&&this.context.renderer.forceContextRestore(),this.context.composer.getRenderer()!==this.context.renderer&&this.context.composer.setRenderer(this.context.renderer),this.context.composer.setMainScene(this.context.scene),this.multisampling===`auto`)if(this._postprocessing&&this._postprocessing.hasSmaaEffect)this._postprocessing.multisampling!==0&&(this._postprocessing.multisampling=0,(Z||l())&&console.log(`[PostProcessing] multisampling is disabled because it's set to 'auto' on your PostprocessingManager/Volume component that also has an SMAA effect. + +If you need multisampling consider changing 'auto' to a fixed value (e.g. 4).`));else{let e=this.context.time.realtimeSinceStartup-this._multisampleAutoChangeTime;if(this.context.time.realtimeSinceStartup-this._componentEnabledTime>2&&e>.5){let t=this._postprocessing.multisampling;if(this._postprocessing.multisampling>0&&this.context.time.smoothedFps<=50){this._multisampleAutoChangeTime=this.context.time.realtimeSinceStartup,this._multisampleAutoDecreaseTime=this.context.time.realtimeSinceStartup;let e=this._postprocessing.multisampling*.5;e=Math.floor(e),e!=this._postprocessing.multisampling&&(this._postprocessing.multisampling=e),Z&&console.debug(`[PostProcessing] Reduced multisampling from ${t} to ${this._postprocessing.multisampling}`)}else if(e>1&&this.context.time.smoothedFps>=59&&this._postprocessing.multisampling10){this._multisampleAutoChangeTime=this.context.time.realtimeSinceStartup;let e=this._postprocessing.multisampling<=0?1:this._postprocessing.multisampling*2;e=Math.floor(e),e!==this._postprocessing.multisampling&&(this._postprocessing.multisampling=e),Z&&console.debug(`[PostProcessing] Increased multisampling from ${t} to ${this._postprocessing.multisampling}`)}}}else{let e=Math.max(0,Math.min(this.multisampling,this.context.renderer.capabilities.maxSamples));e!==this._postprocessing.multisampling&&(this._postprocessing.multisampling=e)}if(this._postprocessing.adaptivePixelRatio=this.adaptiveResolution,this._postprocessing.updateAdaptivePixelRatio(),this.context.mainCamera){let e=this.context.composer.passes;for(let t of e)if(t.mainCamera&&t.mainCamera!==this.context.mainCamera){this.context.composer.setMainCamera(this.context.mainCamera);break}}}}onDestroy(){this._postprocessing?.dispose()}_lastApplyTime;_rapidApplyCount=0;_isDirty=!1;apply(){if(Z&&console.log(`Apply PostProcessing "${this.name||`unnamed`}"`),l()&&(this._lastApplyTime!==void 0&&Date.now()-this._lastApplyTime<100&&(this._rapidApplyCount++,this._rapidApplyCount===5&&console.warn(`Detected rapid post processing modifications - this might be a bug`,this)),this._lastApplyTime=Date.now()),this._isDirty=!1,this._activeEffects.length=0,this.sharedProfile?.components){let e=this.sharedProfile.components;for(let t of e)t.active&&t.enabled&&!this._activeEffects.includes(t)&&this._activeEffects.push(t)}for(let e of this._effects)e.active&&e.enabled&&!this._activeEffects.includes(e)&&this._activeEffects.push(e);this._activeEffects.length>0?(this._postprocessing||=new Le(this.context),this._postprocessing.apply(this._activeEffects)?.then(()=>{this.activeAndEnabled&&(this._applyPostQueue(),this._postprocessing?(this.multisampling===`auto`?this._postprocessing.multisampling=te.isMobileDevice()?2:4:this._postprocessing.multisampling=Math.max(0,Math.min(this.multisampling,this.context.renderer.capabilities.maxSamples)),Z&&console.debug(`[PostProcessing] Set multisampling to ${this._postprocessing.multisampling} (Is Mobile: ${te.isMobileDevice()})`)):Z&&console.warn(`[PostProcessing] No composer found`))})):this._postprocessing?.unapply(!1)}_applyPostQueue(){if(this._modificationQueue){for(let e of this._modificationQueue.values())this.onEditorModification(e);this._modificationQueue.clear()}}onEditorModification(e){if(e.propertyName.startsWith(`postprocessing.`)){if(!this._postprocessing)return this._modificationQueue||=new Map,this._modificationQueue.set(e.propertyName,e),!0;if(!this._activeEffects?.length)return;let t=e.propertyName.split(`.`);if(t.length===3||t.length===4){let n=t[1],r=t[2];for(let i of this._activeEffects)if(i.typeName?.toLowerCase()===n.toLowerCase()){if(r===`active`){i.active=e.value,this.scheduleRecreate();return}if(!$.has(n)){let e=[];$.set(n,e);let t=Object.keys(i);for(let n of t)i[n]instanceof S&&e.push(n)}if($.has(n)){let a=r.toLowerCase(),o=$.get(n);for(let n of o)if(n.toLowerCase()===a){let r=i[n];r instanceof S&&(t.length===4&&t[3]===`active`?(r.overrideState=e.value,this.scheduleRecreate()):r&&r.value!==void 0&&(r.value=e.value));return}}console.warn(`Unknown modification`,r);return}}return!0}return!1}_modificationQueue;_recreateId=-1;scheduleRecreate(){let e=++this._recreateId;setTimeout(()=>{e===this._recreateId&&(this.onDisable(),this.onEnable())},200)}};Re([m(ye)],Q.prototype,`sharedProfile`,void 0),Re([m()],Q.prototype,`multisampling`,void 0),Re([m()],Q.prototype,`adaptiveResolution`,void 0);var $=new Map;ce(Q);export{T as _,U as a,b,L as c,P as d,M as f,ye as g,Ce as h,G as i,je as l,E as m,Le as n,H as o,D as p,q as r,z as s,Q as t,I as u,w as v,S as y}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.extras.X7Svjxj0.js.gz b/Needle/SampleScene/dist/assets/needle-engine.extras.X7Svjxj0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0793df9cd81317d791a412de611c2076ac949fd2 GIT binary patch literal 11720 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine@5.0.3.js b/Needle/SampleScene/dist/assets/needle-engine@5.0.3.js new file mode 100644 index 0000000..0e193f0 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine@5.0.3.js @@ -0,0 +1,229 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,Bt as r,F as i,Fr as a,Ft as o,Nt as s,On as c,Rr as l,S as u,St as ee,Xt as te,Zt as ne,_ as re,c as ie,fn as d,gn as f,gr as ae,hn as oe,in as se,tt as ce,wn as le,x as p}from"./three@0.169.19.js";import{$ as ue,$a as de,$i as fe,A as pe,Br as me,C as he,Ci as ge,Cn as _e,D as ve,Da as ye,Di as be,Dn as xe,Dt as Se,E as Ce,En as we,G as Te,Gi as Ee,Gr as De,Gt as Oe,H as m,Hn as ke,Ho as Ae,Ii as je,J as Me,Ja as Ne,Ji as Pe,Jr as Fe,Ka as h,Kr as Ie,L as Le,La as Re,Lr as ze,M as Be,Mi as Ve,Na as He,O as Ue,Oi as We,On as Ge,Ot as Ke,P as qe,Pi as Je,Pn as Ye,Q as Xe,Qi as Ze,Ro as Qe,S as $e,Si as et,T as tt,Ti as nt,Tn as rt,Tt as it,Ua as g,Uo as at,Ut as ot,V as st,Vn as ct,Wi as lt,Wo as ut,X as _,Xa as dt,Xr as ft,Y as pt,Yr as mt,Z as ht,_ as gt,_a as v,_n as _t,a as vt,ai as yt,b as bt,ba as y,bi as xt,co as b,ct as x,d as St,dn as S,eo as C,f as Ct,fn as wt,g as Tt,gi as Et,gr as w,h as Dt,ht as Ot,i as kt,j as At,ja as jt,ji as Mt,jo as Nt,jt as Pt,k as Ft,kn as It,l as Lt,n as Rt,na as zt,o as Bt,ot as Vt,p as Ht,q as Ut,qr as T,r as Wt,ra as E,s as Gt,st as Kt,t as qt,ti as D,u as Jt,un as O,v as Yt,va as k,vi as Xt,w as Zt,wi as Qt,wn as $t,x as en,xi as tn,y as nn,yi as rn,za as an}from"./needle-engine-ui.DC9_O2Mo.js";import{l as on}from"./three-examples.extras@0.169.19.js";import{C as sn,S as A,n as cn,t as ln}from"./three-examples@0.169.19.js";import{$ as un,A as dn,B as fn,Bt as pn,C as mn,Ct as hn,D as gn,Dt as _n,E as vn,Et as yn,F as bn,G as xn,Gt as Sn,H as Cn,I as wn,It as Tn,J as En,Jt as Dn,K as On,Kt as kn,L as An,Nt as jn,O as Mn,Ot as Nn,P as Pn,Q as Fn,Qt as In,R as Ln,Rt as Rn,S as zn,St as Bn,T as Vn,U as Hn,Ut as Un,V as Wn,Vt as Gn,W as Kn,Wt as qn,X as Jn,Xt as Yn,Y as Xn,Z as Zn,Zt as Qn,_ as $n,_t as er,a as tr,at as nr,b as rr,bt as ir,cn as ar,d as or,et as sr,f as cr,fn as lr,g as ur,h as dr,i as fr,it as pr,k as mr,kt as hr,ln as gr,m as _r,mn as vr,n as yr,nt as br,o as xr,ot as Sr,p as Cr,pn as wr,q as Tr,qt as Er,r as Dr,rt as Or,sn as kr,t as Ar,tt as jr,v as Mr,vt as Nr,w as Pr,wt as Fr,x as Ir,xt as Lr,y as Rr,yt as zr,z as Br,zt as Vr}from"./needle-engine-webxr.Cp-vkXLP.js";import{A as Hr,B as Ur,C as Wr,Ct as Gr,D as Kr,E as qr,Et as Jr,F as Yr,G as Xr,H as Zr,I as Qr,K as $r,L as ei,M as ti,Mt as ni,N as ri,Nt as ii,O as ai,P as oi,Q as si,R as ci,S as li,St as ui,T as di,Tt as fi,U as pi,V as mi,W as hi,X as gi,_ as _i,_t as vi,a as yi,at as bi,b as xi,bt as Si,c as Ci,ct as wi,d as Ti,dt as Ei,f as Di,ft as Oi,g as ki,gt as Ai,h as ji,ht as Mi,i as Ni,it as Pi,j as Fi,jt as Ii,k as Li,l as Ri,lt as zi,m as Bi,mt as Vi,n as Hi,nt as Ui,o as Wi,ot as Gi,p as Ki,pt as qi,q as Ji,r as Yi,s as Xi,st as Zi,t as Qi,u as $i,ut as ea,v as ta,vt as na,w as ra,wt as ia,x as aa,xt as oa,y as sa,yt as ca,z as la}from"./needle-engine.extras.ChmId5tE.js";import{C as ua,D as da,E as fa,S as pa,T as ma,a as ha,b as ga,c as _a,d as va,f as ya,g as ba,h as xa,i as Sa,l as Ca,m as wa,o as Ta,p as Ea,r as Da,s as Oa,t as ka,u as Aa,v as ja,w as Ma,x as Na,y as Pa}from"./needle-engine-particles.ByRryBGL.js";import{a as Fa,c as Ia,d as La,f as Ra,g as za,h as Ba,i as Va,l as Ha,m as Ua,n as Wa,o as Ga,p as Ka,r as qa,s as Ja,t as Ya,u as Xa,y as Za}from"./needle-engine.extras.X7Svjxj0.js";import{a as Qa,t as $a}from"./three-mesh-bvh.B-oXEGo2.js";var j=void 0,M=null,N=null,P=!1,eo=null,to=`terminal`;b(`console`)&&ro();var no=Symbol(`consoleParent`);function ro(){if(j){j.showSwitch();return}uo()}function io(){j&&(j.hide(),j.hideSwitch())}function ao(){eo||=setInterval(so,500)}var oo=0;function so(){let e=dt(),t=e!==oo;oo=e,t&&co()}function co(){ro(),N&&(N.setAttribute(`error`,`true`),N.innerText=`🤬`)}function lo(){N&&(N.removeAttribute(`error`),N.innerText=to)}function uo(e=!1){if(j!==void 0||P)return;P=!0;let t=document.createElement(`script`);t.onload=()=>{if(!globalThis.VConsole){console.warn(`🌵 Debug console failed to load.`),P=!1,j=null;return}P=!1,ao(),j=new VConsole({pluginOrder:[`default`,`needle-console`]});let t=globalThis[`needle:codegen_files`];if(t&&t.length>0&&j.addPlugin(fo()),j.addPlugin(bo()),j.addPlugin(xo()),M=No(),M&&(M[no]=M.parentElement,M.style.position=`absolute`,M.style.zIndex=(2**53-1).toString()),j.setSwitchPosition(20,30),N=Mo(),N){N.innerText=to,N.addEventListener(`click`,lo);let t=document.createElement(`style`);t.innerHTML=` + #__vconsole .vc-switch { + border: 1px solid rgba(255, 255, 255, .1); + border-radius: 50%; + width: 40px; + height: 40px; + padding: 0; + line-height: 40px; + font-size: ${40*.4}px; + text-align: center; + background: #ffffff5c; + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + user-select: none; + pointer-events: auto; + transition: transform .2s ease-in-out; + box-shadow: 0px 7px 0.5rem 0px rgb(0 0 0 / 6%), inset 0px 0px 1.3rem rgba(0,0,0,.05); + + font-family: 'Material Symbols Outlined'; + color: black; + font-size: 2.3em; + font-weight: 100; + } + #__vconsole .vc-switch:hover { + cursor: pointer; + transform: scale(1.1); + transition: transform .1s ease-in-out, background .1s linear; + background: rgba(245, 245, 245, .8); + outline: rgba(0, 0, 0, .05) 1px solid; + } + #__vconsole .vc-switch[error] { + background: rgba(255,0,0,.2); + animation: vconsole-notify 1s ease-in-out; + line-height: 35px; + } + @keyframes vconsole-notify { + from { + transform: scale(1, 1); + } + 10% { + transform: scale(1.3, 1.3); + } + 70% { + transform: scale(1.4, 1.4); + } + to { + transform: scale(1, 1); + } + } + #__vconsole .vc-panel { + font-family: monospace; + font-size: 11px; + } + #__vconsole .vc-plugin-box.vc-actived { + height: 100%; + } + #__vconsole .vc-mask { + overflow: hidden; + } + `,M?.prepend(t),e===!0&&dt()<=0&&io(),console.log(`🌵 Debug console has loaded`)}},t.onerror=()=>{console.warn(`🌵 Debug console failed to load.`+(window.crossOriginIsolated?`This page is using cross-origin isolation, so external scripts can't be loaded.`:``)),P=!1,j=null},t.src=`https://cdn.jsdelivr.net/npm/vconsole@3.15.1/dist/vconsole.min.js`,document.body.appendChild(t)}function fo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`needle-console`,`🌵 Inspect glTF`),t=()=>document.querySelector(`#__vc_plug_`+e._id+` iframe`);return e.on(`renderTab`,function(t){let n=globalThis[`needle:codegen_files`];if(!n||n.length===0)return;let r=globalThis[`needle:codegen_files`][0],i=r.indexOf(`?`);i>-1&&(r=r.substring(0,i));let a=location.protocol+`//`+location.host+location.pathname+`/`+r;e.fullUrl=`https://viewer.needle.tools?inspect&file=`+encodeURIComponent(a),t(``)}),e.on(`show`,function(){let n=t();n&&n.src!==e.fullUrl&&(n.src=e.fullUrl)}),e.on(`hide`,function(){let e=t();e&&(e.src=``)}),e.on(`addTopBar`,function(n){var r=[];r.push({name:`Open in new window ↗`,onClick:function(t){window.open(e.fullUrl,`_blank`),j?.hide()}}),r.push({name:`Reload`,onClick:function(n){let r=t();r&&(r.src=e.fullUrl)}}),r.push({name:`Fullscreen`,onClick:function(e){let n=t();n.requestFullscreen?n.requestFullscreen():n.webkitRequestFullscreen instanceof Function&&n.webkitRequestFullscreen()}}),n(r)}),e}var po=`padding: 10px; font-family: monospace;`,mo=`margin-bottom: 10px;`,F=`margin-bottom: 10px; margin-top: 15px;`,ho=`width: 100%; border-collapse: collapse; border: 1px solid rgba(0,0,0,0.1); table-layout: fixed;`,go=`border: 1px solid rgba(0,0,0,0.1); padding: 5px;`,_o=go,vo=go+` word-break: break-all;`;function I(e,t=!1){t&&e.sort((e,t)=>!!t.value-+!!e.value);let n=``;n+=``;for(let t of e){let e=typeof t.value==`boolean`?t.value?`✅`:`❌`:t.value;n+=``}return n+=`
${t.label}${e}
`,n}function yo(){try{if(document.createElement(`canvas`).getContext(`webgl2`))return`✅`}catch{}return`❌`}function bo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`device-utilities`,`📱 Device Info`);return e.on(`renderTab`,function(e){let t=`
`,n=jo();t+=`

Device: ${n}

`,t+=I([{label:`💻 Desktop`,value:C.isDesktop()},{label:`📱 Mobile Device`,value:C.isMobileDevice()},{label:`🍎 iOS`,value:C.isiOS()},{label:`📱 iPad`,value:C.isiPad()},{label:`🤖 Android`,value:C.isAndroidDevice()},{label:`🦊 Mozilla XR`,value:C.isMozillaXR()},{label:`🌵 Needle App Clip`,value:C.isNeedleAppClip()},{label:`🍏 macOS`,value:C.isMacOS()},{label:`👓 VisionOS`,value:C.isVisionOS()},{label:`🧭 Safari`,value:C.isSafari()},{label:`🕶️ Meta Quest`,value:C.isQuest()},{label:`🔗 QuickLook AR Support`,value:C.supportsQuickLookAR()}],!0);let r=[],i=C.getiOSVersion();i&&r.push({label:`🍎 iOS Version`,value:i});let a=C.getChromeVersion();a&&r.push({label:`🌐 Chrome Version`,value:a});let o=C.getSafariVersion();o&&r.push({label:`🧭 Safari Version`,value:o}),r.length>0&&(t+=I(r,!1)),t+=`
`,t+=`
`,t+=`

User Agent Info

`;let s=[{label:`User Agent`,value:navigator.userAgent},{label:`Platform`,value:navigator.platform},{label:`App Version`,value:navigator.appVersion},{label:`User Agent Data`,value:navigator.userAgentData?`Platform: ${navigator.userAgentData.platform}, Mobile: ${navigator.userAgentData.mobile}`:`Not supported`},{label:`WebXR`,value:`xr`in navigator?`✅`:`❌`},{label:`WebGPU`,value:`gpu`in navigator?`✅`:`❌`},{label:`WebGL 2`,value:yo()}];t+=I(s,!1),t+=`
`,e(t)}),e}function xo(){if(!globalThis.VConsole)return;let e=new VConsole.VConsolePlugin(`graphics-info`,`🎨 Graphics Info`);return e.on(`renderTab`,async function(e){let t=`
`,n=So();n.length>0&&(t+=`

General GPU Info

`,t+=I(n,!1));let r=wo();r.length>0&&(t+=`

WebGL

`,t+=I(r,!1));let i=To();i.length>0&&(t+=`

WebGL 2 Features

`,t+=I(i,!1));let a=Eo();a.length>0&&(t+=`

WebGL Limits

`,t+=I(a,!1));let o=Do();o.length>0&&(t+=`

Texture Formats

`,t+=I(o,!1));let s=await Oo();if(s.length>0&&(t+=`

WebGPU

`,t+=I(s,!1)),C.isSafari()){let e=Ao();e.length>0&&(t+=`

Safari GPU Info

`,t+=I(e,!1))}t+=`
`,e(t)}),e}function So(){let e=[],t=window.devicePixelRatio;e.push({label:`Device Pixel Ratio`,value:t.toString()}),e.push({label:`Width (px)`,value:(window.innerWidth*t).toString()}),e.push({label:`Height (px)`,value:(window.innerHeight*t).toString()});let n=C.isMobileDevice()?150:96,r=screen.width/n,i=screen.height/n,a=r*2.54,o=i*2.54;e.push({label:`Estimated Width (cm)`,value:a.toFixed(1)}),e.push({label:`Estimated Height (cm)`,value:o.toFixed(1)});let s=ko();if(s){e.push({label:`GPU`,value:s.renderer}),e.push({label:`Driver`,value:s.vendor}),e.push({label:`ANGLE`,value:s.angle||`Not detected`});let t=Co(s.renderer);t&&(t.manufacturer&&e.push({label:`Manufacturer`,value:t.manufacturer}),t.cardVersion&&e.push({label:`Card Version`,value:t.cardVersion}),t.brand&&e.push({label:`Brand`,value:t.brand}),e.push({label:`Integrated`,value:t.integrated?`Yes`:`No`}),t.layer&&e.push({label:`WebGL Layer`,value:t.layer}))}return e}function Co(e){if(!e)return null;let t=(e,t)=>{let n=t.match(e);return n&&n[0]},n=t(/(ANGLE)/g,e)||void 0,r=t(/((NVIDIA|AMD|Intel)[^\d]*[^\s]+)/,e)||e,i=r.split(` `);i.shift();let a=t(/(NVIDIA|AMD|Intel)/g,r)||void 0;return{manufacturer:a,cardVersion:i.length>0?i.pop():void 0,brand:i.length>0?i.join(` `):void 0,integrated:a===`Intel`,layer:n,card:r}}function wo(){let e=[],t=ko();return t&&(e.push({label:`📊 WebGL Version`,value:t.version}),e.push({label:`🎮 WebGL 2 Available`,value:yo()})),e}function To(){let e=[];try{let t=document.createElement(`canvas`).getContext(`webgl2`);if(!t)return e;e.push({label:`Float Color Buffer`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`Anisotropic Filtering`,value:t.getExtension(`EXT_texture_filter_anisotropic`)?`✅`:`❌`}),e.push({label:`Float Texture Linear`,value:t.getExtension(`OES_texture_float_linear`)?`✅`:`❌`}),e.push({label:`S3TC Compression`,value:t.getExtension(`WEBGL_compressed_texture_s3tc`)?`✅`:`❌`}),e.push({label:`ETC Compression`,value:t.getExtension(`WEBGL_compressed_texture_etc`)?`✅`:`❌`}),e.push({label:`PVRTC Compression`,value:t.getExtension(`WEBGL_compressed_texture_pvrtc`)?`✅`:`❌`}),e.push({label:`ASTC Compression`,value:t.getExtension(`WEBGL_compressed_texture_astc`)?`✅`:`❌`})}catch{}return e}function Eo(){let e=[];try{let t=document.createElement(`canvas`),n=t.getContext(`webgl2`)||t.getContext(`webgl`);if(!n)return e;let r=n instanceof WebGL2RenderingContext;e.push({label:`📏 Max Texture Size`,value:n.getParameter(n.MAX_TEXTURE_SIZE).toString()}),e.push({label:`🎨 Max Renderbuffer Size`,value:n.getParameter(n.MAX_RENDERBUFFER_SIZE).toString()}),e.push({label:`🔗 Max Vertex Attribs`,value:n.getParameter(n.MAX_VERTEX_ATTRIBS).toString()}),e.push({label:`🎯 Max Texture Units`,value:n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS).toString()}),r&&(e.push({label:`⚡ Max Samples`,value:n.getParameter(n.MAX_SAMPLES).toString()}),e.push({label:`🔄 Max Uniform Buffer Bindings`,value:n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS).toString()}),e.push({label:`📐 Max 3D Texture Size`,value:n.getParameter(n.MAX_3D_TEXTURE_SIZE).toString()}))}catch{}return e}function Do(){let e=[];try{document.createElement(`canvas`).getContext(`webgl`)&&(e.push({label:`WebGL 1 RGBA`,value:`✅`}),e.push({label:`WebGL 1 RGB`,value:`✅`}));let t=document.createElement(`canvas`).getContext(`webgl2`);t&&(e.push({label:`WebGL 2 RGBA32F`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`WebGL 2 RGB32F`,value:t.getExtension(`EXT_color_buffer_float`)?`✅`:`❌`}),e.push({label:`WebGL 2 R11F_G11F_B10F`,value:`✅`}),e.push({label:`WebGL 2 RGB565`,value:`✅`}),e.push({label:`WebGL 2 RGB5_A1`,value:`✅`}),e.push({label:`WebGL 2 RGBA4444`,value:`✅`}))}catch{}return e}async function Oo(){let e=[];if(!(`gpu`in navigator))return e.push({label:`🚀 WebGPU Support`,value:`❌ Not supported`}),e;e.push({label:`🚀 WebGPU Support`,value:`✅ Supported`});try{let t=await navigator.gpu.requestAdapter();if(!t)return e.push({label:`🎯 Adapter`,value:`No adapter available`}),e;e.push({label:`🎯 Adapter`,value:t.name||`Unknown Adapter`});let n=await t.requestDevice();e.push({label:`🔧 Device`,value:n.label||`WebGPU Device`}),e.push({label:`📏 Max Texture 2D`,value:n.limits.maxTextureDimension2D.toString()}),e.push({label:`📐 Max Texture 3D`,value:n.limits.maxTextureDimension3D.toString()}),e.push({label:`📊 Max Texture Array Layers`,value:n.limits.maxTextureArrayLayers.toString()}),e.push({label:`💾 Max Buffer Size`,value:`${(n.limits.maxBufferSize/1024/1024).toFixed(1)}MB`}),e.push({label:`🔗 Max Bind Groups`,value:n.limits.maxBindGroups.toString()})}catch(t){e.push({label:`❌ Error`,value:t.message})}return e}function ko(){try{let e=document.createElement(`canvas`),t=e.getContext(`webgl2`)||e.getContext(`webgl`);if(!t)return null;let n=t.getExtension(`WEBGL_debug_renderer_info`),r=n?t.getParameter(n.UNMASKED_RENDERER_WEBGL):t.getParameter(t.RENDERER),i=n?t.getParameter(n.UNMASKED_VENDOR_WEBGL):t.getParameter(t.VENDOR),a=t.getParameter(t.VERSION),o;if(r&&r.includes(`ANGLE`)){let e=r.match(/ANGLE \(([^)]+)\)/);e&&(o=e[1])}return{renderer:r,vendor:i,version:a,angle:o}}catch{return null}}function Ao(){let e=[];try{let t=document.createElement(`canvas`).getContext(`webgl`);if(t){let n=t.getExtension(`WEBGL_debug_renderer_info`);if(n){let r=t.getParameter(n.UNMASKED_RENDERER_WEBGL);r&&r.includes(`Apple`)&&e.push({label:`🍎 Apple GPU`,value:r})}}}catch{}try{let t=document.createElement(`canvas`).getContext(`webgl`);t&&(t.getSupportedExtensions()||[]).includes(`WEBGL_compressed_texture_pvrtc`)&&e.push({label:`🗜️ PVRTC Support`,value:`✅`})}catch{}return e}function jo(){return C.isQuest()?`Meta Quest`:C.isVisionOS()?`Vision Pro`:C.isiOS()?C.isiPad()?`iPad`:`iPhone/iPod`:C.isAndroidDevice()?`Android Device`:C.isMozillaXR()?`Mozilla XR Browser`:C.isNeedleAppClip()?`Needle App Clip`:C.isMacOS()?`Mac`:C.isDesktop()?`Desktop PC`:`Unknown Device`}function Mo(){return document.querySelector(`#__vconsole .vc-switch`)||null}function No(){return document.querySelector(`#__vconsole`)||null}var Po=new class extends T{constructor(){super([t,S],`ColorSerializer`)}onDeserialize(e){if(e!=null)return e.a===void 0?e.alpha===void 0?new t(e.r,e.g,e.b):new S(e.r,e.g,e.b,e.alpha):new S(e.r,e.g,e.b,e.a)}onSerialize(e){if(e!=null)return e.a===void 0?{r:e.r,g:e.g,b:e.b}:{r:e.r,g:e.g,b:e.b,a:e.a}}},Fo=new class extends T{constructor(){super([ce],`EulerSerializer`)}onDeserialize(e,t){if(e!=null){if(e.order)return new ce(e.x,e.y,e.z,e.order);if(e.x!=null)return new ce(e.x,e.y,e.z)}}onSerialize(e,t){return{x:e.x,y:e.y,z:e.z,order:e.order}}},Io=new class extends T{constructor(){super(d,`ObjectSerializer`)}onSerialize(e,t){if(t.objectToNode!==void 0&&e.uuid){let n=t.objectToNode[e.uuid];return D&&console.log(n,e.name,e.uuid),{node:n}}}onDeserialize(e,t){if(typeof e==`string`){if(e.endsWith(`.glb`)||e.endsWith(`.gltf`)){if(t.serializable instanceof Array&&t.serializable.includes(me))return;h()&&E(`Detected wrong usage of @serializable with Object3D or GameObject. Instead you should use AssetReference here! Please see the console for details.`);let e=t.target?.constructor?.name;console.warn(`Wrong usage of @serializable detected in your script \"${e}\"\n\nIt looks like you used @serializable(Object3D) or @serializable(GameObject) for a prefab or scene reference which is exported to a separate glTF file.\n\nTo fix this please change your code to:\n\n@serializable(AssetReference)\n${t.path}! : AssetReference;\n\0`)}return}if(e){if(e.node!==void 0&&t.nodeToObject){let n=t.nodeToObject[e.node];return D&&console.log(`Deserialized object reference?`,e,n,t?.nodeToObject),n||console.warn(`Did not find node: `+e.node,t.nodeToObject,t.object),n}else if(e.guid){if(!t.context){console.error(`Missing context`);return}let n,r=t.gltf?.scene;return r&&(n=x.findByGuid(e.guid,r)),n||=x.findByGuid(e.guid,t.context.scene),n?(n&&n.isComponent===!0&&(D&&console.warn(`Deserialized object reference is a component`),n=n.gameObject),D&&console.log(`Deserialized object reference?`,e,n,t?.nodeToObject)):((h()||D)&&console.warn(`Could not resolve object reference`,t.path,e,t.target,t.context.scene),e.could_not_resolve=!0),n}}}},Lo=new class extends T{constructor(){super([Vt,Vt],`ComponentSerializer`)}onSerialize(e,t){if(e?.guid)return{guid:e.guid}}onDeserialize(e,t){if(e?.guid){if(e.___persistentAsset){D&&console.log(`Skipping component deserialization because it's a persistent asset`,e);return}let n=t.path;D&&console.log(e.guid,t.root,t.object,t.target);let r=this.findObjectForGuid(e.guid,t.root);if(r||t.context&&(r=this.findObjectForGuid(e.guid,t.context?.scene),r))return r;(h()||D)&&console.warn(`Could not resolve component reference: "`+n+`" using guid `+e.guid,t.target),e.could_not_resolve=!0;return}}findObjectForGuid(e,t){if(t.guid===e)return t;let n=x.foreachComponent(t,t=>{if(t.guid===e)return t},!1);if(n!==void 0)return n;for(let n=0;n0;if(e&&i){let t=()=>{let t=r.method[0].toUpperCase()+r.method.slice(1);if(typeof e[t]==`function`){console.warn(`EventList method:\nCould not find method ${r.method} on object ${e.name}. Please rename ${r.method} to ${t}?\n`,e[t],` + in script: `,e),E(`EventList methods must start with lowercase letter, see console for details`);return}else console.warn(`EventList method:\nCould not find method ${r.method} on object ${e.name}`,e,typeof e[r.method])};if(typeof e[r.method]!=`function`){let n=!1,i=e;for(;i;){let e=Object.getOwnPropertyDescriptor(i,r.method);if(e&&(e.writable===!0||e.set)){n=!0;break}i=Object.getPrototypeOf(i)}!n&&(h()||D)&&t()}}function a(e){if(typeof e==`object`){let n=Io.onDeserialize(e,t);if(n||=Lo.onDeserialize(e,t),n)return n}return e}if(e){let t=r.argument;if(t===void 0?r.arguments!==void 0&&(t=r.arguments.map(a)):t=a(t),e[r.method]===void 0)console.warn(`EventList method not found: \"${r.method}\" on ${e?.name}`);else{t!==void 0&&!Array.isArray(t)&&(t=[t]);let i=new pt(e,r.method,t,r.enabled);n.push(i)}}else h()&&console.warn(`[Dev] EventList: Could not find event listener in scene (${t.object?.name})`,r)}let r=new _(n);D&&console.log(r);let i=t.target;return i!==void 0&&t.path!==void 0&&r.setEventTarget(t.path,i),r}}},zo=new WeakMap,Bo=ae.prototype.clone;ae.prototype.clone=function(){let e=Bo.call(this);return zo.has(e)||zo.set(e,this),e};var Vo=class extends T{constructor(){super([Me,a])}onSerialize(e,t){}onDeserialize(e,t){if(e instanceof ae&&t.type===Me){let t=e;zo.has(t)&&(t=zo.get(t)),t.isRenderTargetTexture=!0,t.flipY=!0,t.offset.y=1,t.repeat.y=-1,t.needsUpdate=!0,t.mipmaps=[],t instanceof i&&(t.isCompressedTexture=!1,t.format=c);let n=new Me(t.image.width,t.image.height,{colorSpace:r});return n.texture=t,n}}};new Vo;var Ho=class extends T{constructor(){super([URL])}onSerialize(e,t){return null}onDeserialize(e,t){if(typeof e==`string`&&e.length>0)return Nt(t.gltfId,e)}};new Ho;var Uo=!1;function Wo(){Uo||(Uo=!0,ut.registerCallback(at.ContextCreated,e=>{let t=e.context.domElement.getAttribute(`autoplay`);if(t!==void 0&&(t===``||t===`true`||t===`1`)&&e.files)for(let t of e.files)x.foreachComponent(t.file.scene,e=>{if(e.enabled!==!1){if(e instanceof vr&&e.playAutomatically||e instanceof Xe||e instanceof oa&&e.playOnAwake===!0)return!0;if(e instanceof vr)return e.playAutomatically=!0,!0;if(e instanceof oa)return e.playOnAwake=!0,!0}},!0)!==!0&&Ze.autoplayAnimations(t.file)}))}var L=b(`debugmissingcamera`),Go=!1;function Ko(){Go||(Go=!0,ut.registerCallback(at.MissingCamera,e=>{L&&console.warn(`Creating missing camera`);let n=e.context.scene,r=new f;r.name=`Default Fallback Camera`,n.add(r);let i=new he;if(i.sourceId=e.files?.[0]?.src??`unknown`,i.fieldOfView=35,e.context.domElement.getAttribute(`transparent`)!=null)i.clearFlags=Zt.Uninitialized;else if(e.context.domElement.getAttribute(`background-image`)?.length||e.context.lightmaps.tryGetSkybox(i.sourceId))i.clearFlags=Zt.Skybox;else{if(i.clearFlags=Zt.SolidColor,!e.context.domElement.getAttribute(`background-color`)){let e=`#efefef`;window.matchMedia(`(prefers-color-scheme: dark)`).matches&&(e=`#1f1f1f`),n.background=new t(e)}if(!n.environment){let t=new oe(e.context.renderer),r=new Si(`neutral`);n.environment=t.fromScene(r,.025).texture}}let a=Ot(r,i,!0);return r.position.x=0,r.position.y=1,r.position.z=2,e.context.domElement?.cameraControls!=0&&qo(e.context,a),a}),ut.registerCallback(at.ContextCreated,e=>{if(!e.context.mainCamera){L&&console.log(`Will not auto-fit because a default camera exists`);return}if(e.context.domElement?.cameraControls==1){if(an(e.context.mainCamera)?.isCameraController==1){L&&console.log(`Will not auto-fit because a camera controller exists`);return}qo(e.context)}}))}function qo(e,t){t??=e.mainCameraComponent;let n=t?.gameObject;if(L&&console.log(`Creating default camera controls`,t?.name),n){let r=it(n,Ce);r.sourceId=t?.sourceId??`unknown`;let i=e.domElement.getAttribute(`auto-rotate`);r.autoRotate=i!=`0`&&i?.toLowerCase()!=`false`;let a=Number.parseFloat(i||`.5`);r.autoRotateSpeed=isNaN(a)?.5:a,L&&console.log(`Auto-rotate`,r.autoRotate,`speed:`,r.autoRotateSpeed);let o=e.domElement.getAttribute(`auto-fit`);r.autoFit=o!==`0`&&o?.toLowerCase()!=`false`,r.autoTarget=!0}else console.warn(`Missing camera object, can not add orbit controls`)}function Jo(){ze.registerWaitForInteraction(()=>{let e=ie.getContext();e.addEventListener(`statechange`,()=>{setTimeout(()=>{let t=e.state;(t===`suspended`||t===`interrupted`)&&e.resume().then(()=>{console.log(`AudioContext resumed successfully`)}).catch(e=>{console.log(`Failed to resume AudioContext: `+e)})},500)})})}var R=D;b(`debugtypestore`)&&console.log(fe);function Yo(e,t){let n=ft(e,t);return n===void 0?null:n}var Xo=new De,Zo=Symbol(`deserialize-queue`);async function Qo(e,t,n,r=null,i){if(!n){console.debug(`Can not create component instances: gltf is null`);return}let a=[],o=r;typeof o==`number`&&(o=new yt(r));let s=t.indexOf(`?`);t=s===-1?t:t.substring(0,s);let c=new Ie(n.scene);c.gltfId=t,c.context=e,c.gltf=n,c.nodeToObject=i?.nodeToObjectMap,c.implementationInformation=Xo;let l=e[Zo];if(l||=e[Zo]=[],n.scenes)for(let e of n.scenes)await ts(c,e,l,a,0);if(n.children)for(let e of n.children)await ts(c,e,l,a,0);e.new_scripts_pre_setup_callbacks.push(()=>{let t=e[Zo];if(t){for(let e of t)ns(e,c);t.length=0}if(o){let e={},t=[];es(n,o,e,t);for(let r of n.scenes)es(r,o,e,t);for(let n of t)n.resolveGuids(e)}})}var $o=Symbol(`original-component-name`),z=new Map;function es(e,t,n,r){if(t===null||!e)return;let i=e.guid,a=e.guid;if(a?.length&&(z.has(a)||(R&&console.log(`Creating InstanceIdProvider with key "`+a+`" for object `+e.name),z.set(a,new yt(a)))),e.guid=(a&&z.get(a)||t).generateUUID(),i&&i!==`invalid`&&(n[i]=e.guid),e&&e.userData&&e.userData.components)for(let i of e.userData.components){if(i===null)continue;let e=i.guid;e?z.has(e)||(R&&console.log(`Creating InstanceIdProvider with key "`+e+`" for component `+i[$o]),z.set(e,new yt(e))):R&&console.warn(`Can not create IdProvider: component `+i[$o]+` has no guid`,i.guid);let a=z.get(e)||t,o=i.guid;i.guid=a.generateUUID(),o&&o!==`invalid`&&(n[o]=i.guid),i.resolveGuids&&r.push(i)}if(e.children)for(let i of e.children)es(i,t,n,r)}var B=[];async function ts(e,t,n,r,i){if(!t)return;let a=t.userData;if(a){let r=a.builtin_components;if(r&&r.length>0)for(let i of r)try{if(i===null)continue;let r=fe.get(i.name);if(r||=await fe.getAsync(i.name),r){let a=new r;a.sourceId=e.gltfId,Fe(a,i,e.implementationInformation),a.context=e.context,`guid`in i&&(a[Pe]=i.guid),a[$o]=i.name,Ot(t,a,!1),n.push({instance:a,compData:i,obj:t}),a.isCamera&&e.context&&e.context.mainCamera===null&&a.tag===`MainCamera`&&e.context.setCurrentCamera(a),e.context?.physics?.engine?.isInitialized===!1&&(a.isCollider||a.isRigidbody)&&e.context?.physics.engine?.initialize()}else R&&console.debug(`unknown component: `+i.name),B.includes(i.name)||B.push(i.name)}catch(e){console.error(i.name+` - `+e.message,e)}}if(t.children)for(let a of t.children)await ts(e,a,n,r,i+1);if(B.length>0&&i===0){let e=B.join(`, `);console.warn(`Unknown components in scene: ${e}`),B.length=0,Ae()&&zt(`Unknown components in scene:\n\n${e}\n\nThis could mean you forgot to add a npmdef to your ExportInfo\ndocumentation`,{type:Ne.Warn})}}function ns(e,t){let{instance:n,compData:r,obj:i}=e;t.object=i,t.target=n,mt(n,r,t),R&&console.debug(`add `+r.name,r,n)}var rs=class{createBuiltinComponents(e,t,n,r,i){return Qo(e,t,n,r,i)}writeBuiltinComponentData(e,t){return Yo(e,t)}parseSync(e,t,n,r){return ls(e,t,n,r)}loadSync(e,t,n,r,i){return us(e,t,n,r,i)}};function is(){We(rs)}var as=b(`printGltf`)||b(`printgltf`),os=b(`debugfileformat`);async function ss(e,t,n){let r=await gi(e,{useExtension:!0})||`unknown`;os&&console.debug(`Determined file type: '${r}' for url '${e}'`,{registeredModelLoaderCallbacks:si});for(let n of si){let{callback:i}=n,a=i({context:t,url:e,mimetype:r});if(a instanceof Promise&&await a,a)return console.debug(`Using custom loader (${n.name||`unnamed`}) for ${r} at '${e}'`),a}switch(r){case`unsupported`:return null;default:case`unknown`:{console.warn(`Unknown file type (${r}). Needle Engine will fallback to the GLTFLoader - To support more model formats please create a Needle loader plugin.\nUse import { NeedleEngineModelLoader } from \"@needle-tools/engine\" namespace to register your loader.`,e);let i=new A;return await hr(i,t,e,n),i}case`model/fbx`:case`model/vnd.autodesk.fbx`:return new cn;case`model/obj`:return new ln;case`model/vnd.usdz+zip`:case`model/vnd.usd+zip`:case`model/vnd.usda+zip`:return console.warn(r.toUpperCase()+` files are not supported.`),null;case`model/gltf+json`:case`model/gltf-binary`:case`model/vrm`:{let r=new A;return await hr(r,t,e,n),r}case`application/materialx+xml`:return new jn}}function cs(e,t){return us(t?.context||_t.Current,e,e,t?.seed||null,t?.onprogress)}async function ls(e,t,n,r){typeof n!=`string`&&(console.warn(`Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file`,n,typeof n),n=``),as&&console.log(`Parse glTF`,n);let i=await ss(n,e,n);if(!i)return;let{componentsExtension:a}=ds(i,e);if(i instanceof ln){typeof t!=`string`&&(t=new TextDecoder().decode(t));let o=i.parse(t);return await V(i,e,n,o,r,a)}if(!(i instanceof A)){if(!(`parse`in i)||typeof i.parse!=`function`){console.error(`Loader does not support parse`);return}let o=i.parse(t,n);return await V(i,e,n,o,r,a)}return new Promise((o,s)=>{try{let s=n.split(`?`)[0].trimEnd(),c=s.split(`/`);c.length>0&&c[c.length-1]!==``&&c.pop(),s=c.join(`/`),s.endsWith(`/`)||(s+=`/`),i.resourcePath=s,i.parse(t,``,async t=>{o(await V(i,e,n,t,r,a))},e=>{console.error(`Loading asset at "`+n+`" failed +`,e),o(void 0)})}catch(e){console.error(e),s(e)}})}async function us(e,t,n,r,i){ps(t);let a=await ss(t,e,n);if(!a)return;let{componentsExtension:o}=ds(a,e);return a instanceof A?new Promise((s,c)=>{try{a.load(t,async t=>{s(await V(a,e,n,t,r,o))},e=>{i?.call(a,e)},e=>{console.error(`Loading asset at "`+t+`" failed +`,e),s(void 0)})}catch(e){console.error(e),c(e)}}):await V(a,e,t,await a.loadAsync(t,i),r,o)}function ds(e,t){let n=_n(e);return e instanceof A&&Vn(e,t),{componentsExtension:n}}async function V(e,n,r,i,a,o){if(as&&console.warn(`Loaded`,r,i),i==null)return console.error(`Loaded model is null '${r}' - please make sure the loader is registered correctly`),{scene:new d,animations:[],scenes:[]};if(typeof i!=`object`)return console.error(`Loaded model is not an object '${r}' - please make sure the loader is registered correctly`),{scene:new d,animations:[],scenes:[]};if(i instanceof d)i={scene:i,animations:i.animations,scenes:[i]};else if(i instanceof u){let e=new se({color:new t(14540253)}),n=new ne(i,e);i={scene:n,animations:[],scenes:[n]}}else Array.isArray(i.scenes)===!1&&console.error(`[Needle Engine] The loaded model object does not have a scenes property '${r}' - please make sure the loader is registered correctly and three.js is not imported multiple times.`);return r.includes(`?`)&&(r=r.split(`?`)[0]),ms(e,i),je(i)&&(yn(r,i,n),await be().createBuiltinComponents(n,r,i,a,o||void 0)),await fs(i.scene,n,n.mainCamera),i}async function fs(e,t,n){n||=t.mainCamera;try{n?await t.renderer.compileAsync(e,n,t.scene).catch(e=>{console.warn(e.message)}):Se(e,t)}catch(e){console.warn(e?.message||e)}}function ps(e){if(new URL(e,window.location.href).href.startsWith(`file://`)){let e=`Hi - it looks like you are trying to load a local file which will not work. You need to use a webserver to serve your files. +Please refer to the documentation on https://docs.needle.tools or ask for help in our discord community`;zt(e),console.warn(e)}}function ms(e,t){if(`scenes`in t){for(let e of t.scenes)if(e&&!e.animations?.length)for(let n of t.animations)e.animations.includes(n)||e.animations.push(n)}if(e instanceof cn||e instanceof ln){let e=t;e instanceof d||(e=t.scene||t.scenes.find(e=>e)),e.traverse(e=>{let t=e;t?.isMesh&&ye(t,t.material)})}}var hs=!1;function gs(){hs||(hs=!0,Object.defineProperty(f.prototype,`fov`,{get:function(){return this._fov},set:function(e){let t=e!==this._fov;this._fov=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}),Object.defineProperty(f.prototype,`near`,{get:function(){return this._near},set:function(e){let t=e!==this._near;this._near=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}),Object.defineProperty(f.prototype,`far`,{get:function(){return this._far},set:function(e){let t=e!==this._far;this._far=e,t&&this.view!==void 0&&this.updateProjectionMatrix()},configurable:!0}))}var _s=!1;function vs(){_s||(_s=!0,n.prototype.slerp=function(e,t){return Re(this,e,t)},Oe(n))}var ys=h(),bs=class extends HTMLElement{static observedAttributes=[`ar`,`vr`,`quicklook`,`qrcode`];constructor(){super(),this.removeEventListener(`click`,this.#l),this.addEventListener(`click`,this.#l)}attributeChangedCallback(e,t,n){this.#s()}#e;#t;#n;#r;#i;#a;#o;#s(){if(this.#r?.remove(),this.getAttribute(`ar`)!=null)this.#i??=new Br,this.#r=this.#i.createARButton(),this.setAttribute(`aria-label`,`Enter augmented reality mode`);else if(this.getAttribute(`vr`)!=null)this.#i??=new Br,this.#r=this.#i.createVRButton(),this.setAttribute(`aria-label`,`Enter virtual reality mode`);else if(this.getAttribute(`quicklook`)!=null)this.#i??=new Br,this.#r=this.#i.createQuicklookButton(),this.setAttribute(`aria-label`,`View in AR with Apple Quick Look`);else if(this.getAttribute(`qrcode`)!=null)this.#a??=new It,this.#r=this.#a.createQRCode({anchorElement:this}),this.setAttribute(`aria-label`,`Share application with QR code`);else{ys?console.warn(`No button type specified for . Use either ar, vr or quicklook attribute.`):console.debug(`No button type specified for . Use either ar, vr or quicklook attribute.`),this.setAttribute(`aria-label`,`Needle Button with no specified type`);return}this.#e??=this.attachShadow({mode:`open`}),this.#t??=document.createElement(`slot`),this.#n??=document.createElement(`style`),this.#n.innerHTML=` + button { + all: unset; + } + `,this.getAttribute(`unstyled`)??(this.#n.innerHTML+=` + :host { + display: inline-flex; + align-items: center; + justify-content: center; + width: fit-content; + + padding: 0.4rem .5rem; + border-radius: 100vw; + + background: rgba(245, 245, 245, .8); + backdrop-filter: blur(10px); + + cursor: pointer; + color: black; + outline: rgba(0,0,0,.05) 1px solid; + + transition: all .2s; + } + :host(:hover) { + background: rgba(255, 255, 255, 1); + transition: background .2s; + } + slot { + display: flex; + align-items: center; + justify-content: center; + gap: .5rem; + } +`),this.#t.innerHTML=this.#r.innerHTML,this.#t.style.cssText=`display: flex; align-items: center; justify-content: center;`,this.#r.innerHTML=this.#t.outerHTML,this.#e.innerHTML=this.#r.outerHTML,this.#e.prepend(this.#n),we(xe,{element:this.#e}),this.#o?.disconnect(),this.#o??=new MutationObserver(()=>this.#c()),this.#o.observe(this.#r,{attributes:!0}),ys&&console.log(`Needle Button updated`,this)}#c(){this.#r&&(this.#r.style.display===`none`?this.style.display=`none`:this.style.display===`none`&&(this.style.display=``))}#l=e=>{ys&&console.log(`Needle Button clicked`,{defaultPrevented:e.defaultPrevented,hasButton:!!this.#r}),!e.defaultPrevented&&this.#r&&this.#r.click()}},H=b(`debugoverlay`),xs=`quit-ar`,Ss=class{get ARContainer(){return this.arContainer}arContainer=null;currentSession=null;_createdAROnlyElements=[];_reparentedObjects=[];contentElement=null;originalDomOverlayParent=null;requestEndAR=()=>{this.onRequestedEndAR()};onBegin(e,t,n){if(this.currentSession=n,this.arContainer=t,C.isMozillaXR()||C.isNeedleAppClip()){let n=e.domElement.children;for(let e=0;e{let t=e.renderer.domElement;t&&e.domElement.shadowRoot?.prepend(t);let n=document.querySelectorAll(`*`);for(var r=0;rconsole.log(`Clicked quit-ar button`));return}t.addEventListener(`click`,this.requestEndAR),H&&t.addEventListener(`click`,()=>console.log(`Clicked fallback close button`));let r=document.createElement(`div`);r.style.cssText=` + position: fixed; + top: 0; + right: 0; + z-index: 600; + pointer-events: all; + padding-top: env(safe-area-inset-top, 0px); + padding-right: calc(env(safe-area-inset-right, 0px) + 10px); + `,this.appendElement(r,t);var i=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);i.classList.add(`quit-ar-button`),i.setAttribute(`width`,`40px`),i.setAttribute(`height`,`40px`),i.style.cssText=` + background: rgba(255, 255, 255, .4); + -webkit-backdrop-filter: blur(8px); + backdrop-filter: blur(8px); + border-radius: 50%; + box-shadow: 0 0 5px rgba(0,0,0,.3); + outline: 1px solid rgba(255, 255, 255, .6); + display: flex; + justify-content: center; + align-items: center; + `,r.appendChild(i);var a=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);a.setAttribute(`d`,`M 12,12 L 28,28 M 28,12 12,28`),a.setAttribute(`stroke`,`#000000`),a.setAttribute(`stroke-width`,`2px`),a.style.cssText=` + /**filter: drop-shadow(0 0px 1.2px rgba(0,0,0,.7));**/ + `,i.appendChild(a),H&&console.log(`Created fallback close button`,i,e)}appendElement(e,t){return t.shadowRoot?t.shadowRoot.appendChild(e):t.appendChild(e)}},U=b(`debugloading`),W=b(`debugloadingrendering`);b(`debuglicense`);var Cs=class{className;additionalClasses},G=0,ws;function Ts(e){U&&console.log(e.progress.loaded.toFixed(0)+`/`+e.progress.total.toFixed(0),e);let t=e.count,n=e.progress.total;n===0||n===void 0?(ws!==e.name&&(G=0),ws=e.name,G+=(1-G)*.001,U&&E(`Loading `+e.name+` did not report total size`)):G=e.progress.loaded/n;let r=e.index/t+G/t;return g.clamp01(r)}var Es=class e{static LoadingContainerClassName=`loading`;loadingProgress=0;_element;_progress=0;_allowCustomLoadingElement=!0;_loadingElement;_loadingTextContainer=null;_loadingBar=null;_loadingBarFinishedColor=null;_messageContainer=null;_loadingElementOptions;constructor(e,t){this._element=e,this._loadingElementOptions=t}async onLoadingBegin(t){let n=this._element.shadowRoot||this._element;if(U&&console.warn(`Begin Loading`),!this._loadingElement){for(let t=0;t{this.loadingProgress>=.95&&!W&&(e=.9),this._progress=g.lerp(this._progress,this.loadingProgress,e*this.loadingProgress),this.updateDisplay()},e)}onDoneLoading(){if(this._loadingElement){U&&console.log(`Hiding loading element`);let e=this._loadingElement;e.animate([{opacity:1},{opacity:0}],{duration:200,easing:`ease-in-out`}).addEventListener(`finish`,()=>{e.style.display=`none`,e.remove()})}this._progressLoop&&clearInterval(this._progressLoop),this._progressLoop=null}updateDisplay(){let e=this._progress,t=(e*100).toFixed(0)+`%`;this._loadingBar&&(this._loadingBar.style.width=e*100+`%`,e>=1&&this._loadingBarFinishedColor&&(this._loadingBar.style.background=this._loadingBarFinishedColor)),this._loadingTextContainer&&(this._loadingTextContainer.textContent=t)}createLoadingElement(t){U&&!t&&console.log(`Creating loading element`),this._loadingElement=t||document.createElement(`div`);let n=this._element.getAttribute(`loading-style`);(!n||n===`auto`)&&(n=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);let r=Xt();if(!t){this._loadingElement.style.position=`absolute`,this._loadingElement.style.width=`100%`,this._loadingElement.style.height=`100%`,this._loadingElement.style.left=`0`,this._loadingElement.style.top=`0`,this._loadingElement.style.overflow=`hidden`;let e=this._element.getAttribute(`loading-background`);e?this._loadingElement.style.background=e:this._loadingElement.style.backgroundColor=`transparent`,this._loadingElement.style.display=`flex`,this._loadingElement.style.alignItems=`center`,this._loadingElement.style.justifyContent=`center`,this._loadingElement.style.zIndex=`0`,this._loadingElement.style.flexDirection=`column`,this._loadingElement.style.pointerEvents=`none`,this._loadingElement.style.color=`white`,this._loadingElement.style.fontFamily=`system-ui, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"`,this._loadingElement.style.fontSize=`1rem`,n===`light`?this._loadingElement.style.color=`rgba(0,0,0,.6)`:this._loadingElement.style.color=`rgba(255,255,255,.3)`}let i=this._loadingElementOptions?.className??e.LoadingContainerClassName;if(this._loadingElement.classList.add(i),this._loadingElementOptions?.additionalClasses)for(let e of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(e);let a=document.createElement(`div`);a.style.cssText=` + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + pointer-events: none; + `,this._loadingElement.appendChild(a);let o=this._element.getAttribute(`poster`);if(o!==null&&o!==`0`){let e=document.createElement(`div`),t=o?.length?`0px`:`50px`;e.style.cssText=` + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: -1; + overflow: hidden; + + margin: -${t}; + background: url('${o?.length?o:`/include/poster.webp`}') center center no-repeat; + background-size: cover; + filter: blur(${t}); + `,this._loadingElement.appendChild(e)}let s=document.createElement(`img`);if(s.style.userSelect=`none`,s.style.objectFit=`contain`,s.style.transform=`translateY(30px)`,s.style.opacity=`0.0000001`,s.style.transition=`transform 1s ease-out .2s, opacity .3s ease-in-out .2s`,s.src=Ye,r&&this._element){let e=this._element.getAttribute(`logo-src`);e&&(s.src=e,setTimeout(()=>{s.style.opacity=`1`,s.style.transform=`translateY(0px)`},1))}s.style.width=`80%`,s.style.height=`min(1000px, max(15%, 50px))`,a.appendChild(s);let c=document.createElement(`div`);c.style.cssText=` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + opacity: 0; + transition: opacity 1s ease-in-out 4s; + `,setTimeout(()=>{c.style.opacity=`1`},1),this._loadingElement.appendChild(c);let l=document.createElement(`div`);return l.style.display=`flex`,l.style.width=`100%`,l.style.height=`5px`,l.style.position=`absolute`,l.style.left=`0`,l.style.top=`0px`,l.style.opacity=`0`,l.style.transition=`opacity 1s ease-in-out`,l.style.backgroundColor=`rgba(240,240,240,.5)`,setTimeout(()=>{l.style.opacity=`1`},1),this._loadingElement.appendChild(l),this._loadingBar=document.createElement(`div`),l.appendChild(this._loadingBar),this._loadingBar.style.backgroundAttachment=`fixed`,this._loadingBar.style.background=`#c4c4c4ab`,this._loadingBarFinishedColor=`#ddddddab`,this._loadingBar.style.width=`0%`,this._loadingBar.style.height=`100%`,this._loadingElement}},K=b(`debugwebcomponent`),Ds=`vr`,Os=`desktop`,ks=[`ar`,Ds,Os],q=`ar-session-active`,J=`desktop-session-active`,As=[`src`,`hash`,`camera-controls`,`dracoDecoderPath`,`dracoDecoderType`,`ktx2DecoderPath`,`public-key`,`version`,`tone-mapping`,`tone-mapping-exposure`,`background-blurriness`,`background-color`,`environment-intensity`,`focus-rect`,`loadstart`,`progress`,`loadfinished`],js=class extends HTMLElement{static get observedAttributes(){return As}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){let e=this.getAttribute(`camera-controls`);return e==null?null:!(e===null||e===`False`||e===`false`||e===`0`||e===`none`)}set cameraControls(e){e===null?this.removeAttribute(`camera-controls`):this.setAttribute(`camera-controls`,e?`true`:`false`)}getContext(){return new Promise((e,t)=>{if(this._context&&this.loadingFinished)e(this._context);else{let t=()=>{this.removeEventListener(`loadfinished`,t),this._context&&this.loadingFinished&&e(this._context)};this.addEventListener(`loadfinished`,t)}})}get context(){return this._context}_context;_overlay_ar;_loadingProgress01=0;_loadingView;_previousSrc=null;_didFullyLoad=!1;_didInitialize=!1;constructor(){super(),this.attachShadow({mode:`open`,delegatesFocus:!0});let e=document.createElement(`template`);e.innerHTML=` +
+ +
+
+ +
+`,this.shadowRoot.appendChild(e.content.cloneNode(!0)),we(Ge,{element:this.shadowRoot}),this.addEventListener(`ready`,this.onReady),this.addEventListener(`error`,this.onError)}ensureInitialized(){this._didInitialize||(this._didInitialize=!0,this.initializeDom())}initializeDom(){rt(),this.setAttribute(`role`,`application`),this.setAttribute(`aria-label`,`Needle Engine 3D scene`)}connectedCallback(){if(K&&console.log(` connected`),this.ensureInitialized(),this.setPublicKey(),this.setVersion(),(this.getAttribute(`tabindex`)===null||this.getAttribute(`tabindex`)===void 0)&&this.setAttribute(`tabindex`,`0`),this._overlay_ar=new Ss,this.getOrCreateContext(),this.addEventListener(`xr-session-started`,this.onXRSessionStarted),this.onSetupDesktop(),!this.getAttribute(`src`)){let e=globalThis[`needle:codegen_files`];K&&console.log(`src is null, trying to load from globalThis["needle:codegen_files"]`,e),e&&(K&&console.log(`globalThis["needle:codegen_files"]`,e),this.setAttribute(`src`,e))}K&&console.log(`src`,this.getAttribute(`src`));let e=this._loadId;setTimeout(()=>{this.isConnected!==!1&&e===this._loadId&&this.onLoad()},1)}disconnectedCallback(){this.removeEventListener(`xr-session-started`,this.onXRSessionStarted),this._didFullyLoad=!1;let e=this.getAttribute(`keep-alive`),t=e==null||e?.length>0&&e!==`true`&&e!==`1`;K&&console.warn(` disconnected, keep-alive: "`+e+`"`,typeof e,`Dispose=`,t),t?(K&&console.warn(` dispose`),this._context?.dispose(),this._context=null,this._lastSourceFiles=null,this._loadId+=1):K&&console.warn(` is not disposed because keep-alive is set`)}connectedMoveCallback(){}attributeChangedCallback(e,t,n){switch(K&&console.log(`attributeChangedCallback`,e,t,n),e){case`src`:K&&console.warn(` +changed from "`,t,`" to "`,n,`"`),this.onLoad();break;case`hash`:this._context&&(this._context.hash=n);break;case`loadstart`:case`progress`:case`loadfinished`:typeof n==`string`&&n.length>0&&(K&&console.log(e+` attribute changed`,n),this.registerEventFromAttribute(e,n));break;case`dracoDecoderPath`:K&&console.log(`dracoDecoderPath`,n),vn(n);break;case`dracoDecoderType`:n===`wasm`||n===`js`?(K&&console.log(`dracoDecoderType`,n),gn(n)):console.error(`Invalid dracoDecoderType`,n,`expected js or wasm`);break;case`ktx2DecoderPath`:K&&console.log(`ktx2DecoderPath`,n),Mn(n);break;case`tonemapping`:case`tone-mapping`:case`tone-mapping-exposure`:case`background-blurriness`:case`background-color`:case`environment-intensity`:this.applyAttributes();break;case`public-key`:n!=`npk_95953b9200a35d0aaefda4761b4646dd1e3a100122be365466f01340a7236289`&&this.setPublicKey();break;case`version`:n!=`5.0.3`&&this.setVersion();break;case`focus-rect`:{let e=this.getAttribute(`focus-rect`);if(e){let t=this.getOrCreateContext();if(e===null)t.setCameraFocusRect(null);else if(typeof e==`string`&&e.length>0){let n=document.querySelector(e);n||console.warn(`No element found for focus-rect selector: ${e}`),t.setCameraFocusRect(n instanceof HTMLElement?n:null)}else e instanceof HTMLElement?t.setCameraFocusRect(e):console.warn(`Invalid focus-rect value. Expected a CSS selector string or an HTMLElement.`,e)}}break}}get toneMapping(){return this.getAttribute(`tonemapping`)||this.getAttribute(`tone-mapping`)}_loadId=0;_abortController=null;_lastSourceFiles=null;_createContextPromise=null;getOrCreateContext(){return this._context||=(K&&console.warn(`Create new context`),new _t({domElement:this})),this._context}async onLoad(){if(!this.isConnected)return;let e=this.getOrCreateContext(),t=this.getSourceFiles();if(!this.checkIfSourceHasChanged(t,this._lastSourceFiles))return;this._abortController&&=(K&&console.warn(`Abort previous loading process`),this._abortController.abort(),null),this._lastSourceFiles=t;let n=++this._loadId;if((t==null||t.length<=0)&&(K&&console.warn(`Clear scene`,t),e.clear(),n!==this._loadId))return;let r=this.getAttribute(`alias`);this.classList.add(`loading`);let i=Et();this.ensureLoadStartIsRegistered();let a=this.dispatchEvent(new CustomEvent(`loadstart`,{detail:{context:e,alias:r},cancelable:!0}));if(i){let e=this.getAttribute(`hide-loading-overlay`);e!=null&&e!==`0`&&(a=!1)}a===!1&&!i&&(h()||(a=!0),console.warn(`Needle Engine: You need a commercial license to override the default loading view. Visit https://needle.tools/pricing`),h()&&E(`You need a commercial license to override the default loading view. This will not work in production.`)),!this._loadingView&&a&&(this._loadingView=new Es(this)),a&&(this._didFullyLoad===!0?setTimeout(()=>{this._loadingView&&this._loadingProgress01<.3&&this._loadId===n&&this._loadingView.onLoadingBegin(`begin load`)},300):this._loadingView?.onLoadingBegin(`begin load`)),K&&console.warn(`-------------- +Needle Engine: Begin loading `+n+` +`,t),this.onBeforeBeginLoading();let o=[],s={context:this._context,name:``,progress:{},index:0,count:t.length,totalProgress01:this._loadingProgress01},c=new CustomEvent(`progress`,{detail:s}),l=[],u=new AbortController;this._abortController=u;let ee={files:t,abortSignal:u.signal,onLoadingProgress:e=>{if(K&&console.debug(`Loading progress: `,e),u.signal.aborted)return;let t=e.index;!l[t]&&e.name&&(l[t]=Ms(e.name)),e.name=l[t],a&&this._loadingView?.onLoadingUpdate(e),s.name=e.name,s.progress=e.progress,this._loadingProgress01=Ts(e),s.totalProgress01=this._loadingProgress01,this.dispatchEvent(c)},onLoadingFinished:(e,t,n)=>{K&&console.debug(`Finished loading \"${t}\" (aborted? ${u.signal.aborted})`),!u.signal.aborted&&n&&o.push({src:t,file:n})}};Ns(this);let te=this.getAttribute(`hash`);te!=null&&(e.hash=te),e.alias=r,this._createContextPromise=e.create(ee);let ne=await this._createContextPromise;if(this.applyAttributes(),K&&console.warn(`-------------- +Needle Engine: finished loading `+n+` +`,t,`Aborted? ${u.signal.aborted}`),u.signal.aborted){console.log(`Loading finished but aborted...`);return}if(this._loadId!==n){console.log(`Load id changed during loading process`);return}this._loadingProgress01=1,a&&ne&&this._loadingView?.onLoadingUpdate(1,`creating scene`),this._didFullyLoad=!0,this.classList.remove(`loading`),this.classList.add(`loading-finished`),this.dispatchEvent(new CustomEvent(`loadfinished`,{detail:{context:this._context,src:r,loadedFiles:o}}))}applyAttributes(){let e=this.getOrCreateContext();if(e.renderer){let t=ct(this.toneMapping);t!==void 0&&(e.renderer.toneMapping=t);let n=this.getAttribute(`tone-mapping-exposure`);if(n!=null){let t=parseFloat(n);isNaN(t)||(e.renderer.toneMappingExposure=t)}}let t=this.getAttribute(`background-blurriness`);if(t!=null){let n=parseFloat(t);isNaN(n)||(e.scene.backgroundBlurriness=n)}let n=this.getAttribute(`environment-intensity`);if(n!=null){let t=parseFloat(n);isNaN(t)||(e.scene.environmentIntensity=t)}let r=this.getAttribute(`background-color`);if(e.renderer)if(typeof r==`string`&&r.length>0){let t=S.fromColorRepresentation(r);K&&console.debug(` background-color changed, str:`,r,`→`,t),e.renderer.setClearColor(t,t.alpha),e.scene.background=null}else this.getAttribute(`background-image`)&&this.setAttribute(`background-image`,this.getAttribute(`background-image`))}onXRSessionStarted=()=>{let e=this.getOrCreateContext(),t=e.xrSessionMode;t===`immersive-ar`?this.onEnterAR(e.xrSession):t===`immersive-vr`&&this.onEnterVR(e.xrSession),e.xrSession?.addEventListener(`end`,()=>{this.dispatchEvent(new CustomEvent(`xr-session-ended`,{detail:{session:e.xrSession,context:this._context,sessionMode:t}})),t===`immersive-ar`?this.onExitAR(e.xrSession):t===`immersive-vr`&&this.onExitVR(e.xrSession)})};onReady=()=>this._loadingView?.onLoadingFinished();onError=()=>this._loadingView?.setMessage(`Loading failed!`);getSourceFiles(){let e=this.getAttribute(`src`);if(!e)return[];let t;t=Array.isArray(e)?e:e.startsWith(`[`)&&e.endsWith(`]`)?JSON.parse(e):e.includes(`,`)?e.split(`,`):[e];for(let e=t.length-1;e>=0;e--){let n=t[e];(n===`null`||n===`undefined`||n?.length<=0)&&t.splice(e,1)}return t}checkIfSourceHasChanged(e,t){if(e?.length!==t?.length||e==null&&t!==null||e!==null&&t==null)return!0;if(e!==null&&t!==null){for(let n=0;n0)try{let n=(0,eval)(t);typeof n==`function`&&(this._previouslyRegisteredMap.set(e,n),this.addEventListener(e,e=>n?.call(globalThis,this.getOrCreateContext(),e)))}catch(n){console.error(`Error registering event `+e+`="`+t+`" failed with the following error: +`,n)}}setPublicKey(){this.setAttribute(`public-key`,lt)}setVersion(){this.setAttribute(`version`,Ee)}getAROverlayContainer(){return this._overlay_ar.createOverlayContainer(this)}getVROverlayContainer(){for(let e=0;ethis.setupElementsForMode(e,`ar`))}onSetupVR(){this.classList.remove(q),this.classList.remove(J),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Ds))}onSetupDesktop(){this.classList.remove(q),this.classList.add(J);let e=this.getAROverlayContainer();e&&(e.classList.remove(q),e.classList.add(J)),this.foreachHtmlElement(e=>this.setupElementsForMode(e,Os))}setupElementsForMode(e,t,n=null){if(e!==this._context?.renderer?.domElement&&!(e.id===`VRButton`||e.id===`ARButton`))if(e.classList.contains(t))e.style.visibility=`visible`,e.style.display===`none`&&(e.style.display=`block`);else for(let t of ks)e.classList.contains(t)&&(e.style.visibility=`hidden`,e.style.display=`none`)}foreachHtmlElement(e){for(let t=0;t0&&(n=n.substring(0,r));let i=n.indexOf(`=`);i>0&&(n=n.substring(i));let a=n.split(`.`).pop(),o=a?[`glb`,`gltf`,`usdz`,`usd`,`fbx`,`obj`,`mtl`].indexOf(a.toLowerCase()):-1;if(a&&o>=0&&(n=n.substring(0,n.length-a.length-1)),n=decodeURIComponent(n),n.length>3){let e=``,t=!1,r=[`(`,`)`,`[`,`]`,`{`,`}`,`:`,`;`,`,`,`.`,`!`,`?`];for(let i=0;i{let n=e.getAttribute(`loading-blur`);if(n!==null&&n!==`0`&&t.domElement===e){let r=t.lodsManager.manager?.awaitLoading({frames:5,signal:AbortSignal.timeout(1e4),maxPromisesPerObject:1}).catch(e=>{}),i=`20px`;if(n.endsWith(`px`)&&(i=n),t.scene.background===null){let n=e,a=t.renderer.domElement,o=a.style.filter,s=a.style.overflow;a.style.filter+=`blur(${i})`,n.style.overflow=`hidden`,r?.then(()=>{let e=a.animate([{filter:`blur(0px)`}],{duration:170,easing:`ease-in`});e.onfinish=()=>{a.style.filter=o,n.style.overflow=s}})}else{let e=document.createElement(`div`);t.domElement.prepend(e),e.style.cssText=`position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; pointer-events: none`,e.style.backdropFilter=`blur(${i})`,r?.then(()=>{let t=e.animate([{backdropFilter:`blur(0px)`,opacity:0}],{duration:170,easing:`ease-in`});t.onfinish=()=>{e.remove()}})}}},{once:!0})}function Ps(){typeof window>`u`||(window.customElements.get(`needle-engine`)||window.customElements.define(`needle-engine`,js),window.customElements.get(`needle-button`)||window.customElements.define(`needle-button`,bs),window.customElements.get(`needle-logo-element`)||window.customElements.define(`needle-logo-element`,$t),window.customElements.get(`needle-menu`)||window.customElements.define(`needle-menu`,_e))}var Fs=!1;function Is(){Fs||(Fs=!0,Ps(),er(),ke(),Vr(),gs(),ot(),vs(),Qi(),is(),setTimeout(Jo,1e3),Ko(),Wo(),vi(),ca())}var Y=b(`debugphysics`),Ls=b(`debugcolliderplacement`),Rs=b(`debugcollisions`),zs=b(`showcolliders`),Bs=b(`debugraycasts`),X=Symbol(`needle component`),Z=Symbol(`physics body`),Vs=Symbol(`rigidbody`);globalThis.NEEDLE_USE_RAPIER=globalThis.NEEDLE_USE_RAPIER===void 0?!0:globalThis.NEEDLE_USE_RAPIER,Y&&console.log(`Use Rapier`,!0,globalThis.NEEDLE_USE_RAPIER),ut.registerCallback(at.ContextCreationStart,e=>{Y&&console.log(`Register rapier physics backend`),e.context.physics.engine=new Hs(e.context)});var Hs=class e{debugRenderColliders=!1;debugRenderRaycasts=!1;removeBody(e){if(Y&&console.log(`REMOVE BODY`,e?.name,e[Z]),!e)return;this.validate();let t=e[Z];if(e[Z]=null,t&&this.world){let t=this.objects.findIndex(t=>t===e);if(t>=0){let e=this.bodies[t];if(this.bodies.splice(t,1),this.objects.splice(t,1),e instanceof w.RAPIER_PHYSICS.MODULE.Collider){let t=e;this.world?.removeCollider(t,!0);let n=t.parent();n&&n.numColliders()<=0&&(n[X]||this.world?.removeRigidBody(n))}else e instanceof w.RAPIER_PHYSICS.MODULE.RigidBody&&(e.numColliders()<=0?this.world?.removeRigidBody(e):h()&&(e.did_log_removing||setTimeout(()=>{e.numColliders()>0&&(e.did_log_removing=!0,console.warn(`RapierPhysics: removing rigidbody with colliders from the physics world is not possible right now, please remove the colliders first`))},1)))}}}setColliderEnabled(e,t){let n=e[Z];return n?(n.setEnabled(t),Y&&console.log(`SET COLLIDER ENABLED`,e.name,t),!0):!1}updateBody(e,t,n){if(this.validate(),this.enabled&&!(e.destroyed||!e.gameObject)&&!(!t&&!n))if(e.isCollider===!0)console.warn(`TODO: implement updating collider position`);else{let r=e,i=r[Z];i&&this.syncPhysicsBody(r.gameObject,i,t,n)}}updateProperties(e){if(this.validate(),e.isCollider){let t=e,n=t[Z];n&&(this.internalUpdateColliderProperties(t,n),t.sharedMaterial&&this.updatePhysicsMaterial(t))}else{let t=e,n=this.internal_getRigidbody(t);n&&this.internalUpdateRigidbodyProperties(t,n)}}addForce(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.addForce(t,n):this._isInitialized&&console.warn(`Physics Body doesn't exist: can not apply force (does your object with the Rigidbody have a collider?)`)}addImpulse(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.applyImpulse(t,n):this._isInitialized&&console.warn(`Physics Body doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)`)}getLinearVelocity(e){this.validate();let t=this.internal_getRigidbody(e);return t?t.linvel():null}getAngularVelocity(e){this.validate();let t=this.internal_getRigidbody(e);return t?t.angvel():null}resetForces(e,t){this.validate(),this.internal_getRigidbody(e)?.resetForces(t)}resetTorques(e,t){this.validate(),this.internal_getRigidbody(e)?.resetTorques(t)}applyImpulse(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.applyImpulse(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not apply impulse (does your object with the Rigidbody have a collider?)`)}wakeup(e){this.validate();let t=this.internal_getRigidbody(e);t?t.wakeUp():this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not wake up (does your object with the Rigidbody have a collider?)`)}isSleeping(e){return this.validate(),this.internal_getRigidbody(e)?.isSleeping()}setAngularVelocity(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.setAngvel(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not set angular velocity (does your object with the Rigidbody have a collider?)`)}setLinearVelocity(e,t,n){this.validate();let r=this.internal_getRigidbody(e);r?r.setLinvel(t,n):this._isInitialized&&console.warn(`Rigidbody doesn't exist: can not set linear velocity (does your object with the Rigidbody have a collider?)`)}context;_initializePromise;_isInitialized=!1;constructor(e){this.context=e}get isInitialized(){return this._isInitialized}async initialize(){return this._initializePromise||=this.internalInitialization(),this._initializePromise}async internalInitialization(){return b(`__nophysics`)?(console.warn(`Physics are disabled`),!1):(Y&&console.log(`Initialize rapier physics engine`),`env`in import.meta,this._hasCreatedWorld?(console.error(`Invalid call to create physics world: world is already created`),!0):(this._hasCreatedWorld=!0,w.RAPIER_PHYSICS.MAYBEMODULE??(Y&&console.trace(`Loading rapier physics engine`),await(await w.RAPIER_PHYSICS.load()).init()),Y&&console.log(`Physics engine initialized, creating world...`),this._world=new w.RAPIER_PHYSICS.MODULE.World(this._gravity),this.rapierRay=new w.RAPIER_PHYSICS.MODULE.Ray({x:0,y:0,z:0},{x:0,y:0,z:1}),this.enabled=!0,this._isInitialized=!0,Y&&console.log(`Physics world created`),!0))}validate(){this._isInitialized||Y&&(this._lastWarnTime=this._lastWarnTime??0,Date.now()-this._lastWarnTime>1e3&&(this._lastWarnTime=Date.now(),console.warn(`Physics engine is not initialized`)))}rapierRay;raycastVectorsBuffer=new de(()=>new n,10);raycast(e,t,n){if(!this._isInitialized)return console.log(`Physics engine is not initialized`),null;let r=n?.maxDistance,i=n?.solid;r===void 0&&(r=1/0),i===void 0&&(i=!0);let a=this.getPhysicsRay(this.rapierRay,e,t);if(!a)return null;(this.debugRenderRaycasts||Bs)&&O.DrawRay(a.origin,a.dir,255,1);let o=this.world?.castRay(a,r,i,n?.queryFilterFlags,n?.filterGroups,void 0,void 0,e=>{let t=e[X];return n?.filterPredicate?n.filterPredicate(t):n?.useIgnoreRaycastLayer===!1?!0:!t?.gameObject.layers.isEnabled(2)});if(o){let e=a.pointAt(o.timeOfImpact),t=this.raycastVectorsBuffer.get();return t.set(e.x,e.y,e.z),{point:t,collider:o.collider[X]}}return null}raycastAndGetNormal(e,t,n){if(!this._isInitialized)return null;let r=n?.maxDistance,i=n?.solid;r===void 0&&(r=1/0),i===void 0&&(i=!0);let a=this.getPhysicsRay(this.rapierRay,e,t);if(!a)return null;(this.debugRenderRaycasts||Bs)&&O.DrawRay(a.origin,a.dir,255,1);let o=this.world?.castRayAndGetNormal(a,r,i,n?.queryFilterFlags,n?.filterGroups,void 0,void 0,e=>{let t=e[X];return n?.filterPredicate?n.filterPredicate(t):n?.useIgnoreRaycastLayer===!1?!0:!t?.gameObject.layers.isEnabled(2)});if(o){let e=a.pointAt(o.timeOfImpact),t=o.normal,n=this.raycastVectorsBuffer.get(),r=this.raycastVectorsBuffer.get();return n.set(e.x,e.y,e.z),r.set(t.x,t.y,t.z),{point:n,normal:r,collider:o.collider[X]}}return null}getPhysicsRay(e,t,n){let r=this.context?.mainCamera;if(t===void 0){let e=this.context?.input.getPointerPosition(0);if(e)t=e;else return null}if(t.z===void 0){if(!r)return console.error(`Can not perform raycast from 2d point - no main camera found`),null;let e=this.raycastVectorsBuffer.get();e.x=t.x,e.y=t.y,e.z=0,(e.x>1||e.y>1||e.y<-1||e.x<-1)&&(Y&&console.warn(`Converting screenspace to raycast space`,e),this.context?.input.convertScreenspaceToRaycastSpace(e)),e.unproject(r),t=e}let i=t;e.origin.x=i.x,e.origin.y=i.y,e.origin.z=i.z;let a=this.raycastVectorsBuffer.get();if(n)a.set(n.x,n.y,n.z);else{if(!r)return console.error(`Can not perform raycast - no camera found`),null;a.set(e.origin.x,e.origin.y,e.origin.z);let t=v(r);a.sub(t)}return a.normalize(),e.dir.x=a.x,e.dir.y=a.y,e.dir.z=a.z,e}rapierSphere=null;rapierBox=null;rapierColliderArray=[];rapierIdentityRotation={x:0,y:0,z:0,w:1};rapierForwardVector={x:0,y:0,z:1};sphereOverlap(e,t){return this.rapierSphere??=new w.RAPIER_PHYSICS.MODULE.Ball(t),this.rapierSphere.radius=t,(this.debugRenderRaycasts||Bs)&&O.DrawWireSphere(e,t,3359999,1),this.shapeOverlap(e,this.rapierIdentityRotation,this.rapierSphere)}boxOverlap(e,t,n=null){return n===null&&(n=this.rapierIdentityRotation),this.rapierBox??=new w.RAPIER_PHYSICS.MODULE.Cuboid(1,1,1),this.rapierBox.halfExtents.x=t.x*.5,this.rapierBox.halfExtents.y=t.y*.5,this.rapierBox.halfExtents.z=t.z*.5,(this.debugRenderRaycasts||Bs)&&O.DrawWireBox(e,t,3359999,1,!0,n),this.shapeOverlap(e,n,this.rapierBox)}shapeOverlap(e,t,n){return this.rapierColliderArray.length=0,!this._isInitialized||!this.world||this.world.intersectionsWithShape(e,t,n,e=>{let t=e[X],n=new Je(t.gameObject,t);return this.rapierColliderArray.push(n),!0},void 0,void 0,void 0,void 0,e=>e.isSensor()?!1:e[X].gameObject.layers.isEnabled(2)==0),this.rapierColliderArray}enabled=!1;get world(){return this._world}_tempPosition=new n;_tempQuaternion=new le;_tempScale=new n;_tempMatrix=new te;static _didLoadPhysicsEngine=!1;_isUpdatingPhysicsWorld=!1;get isUpdating(){return this._isUpdatingPhysicsWorld}_world;_hasCreatedWorld=!1;eventQueue;collisionHandler;objects=[];bodies=[];_meshCache=new Map;_gravity={x:0,y:-9.81,z:0};get gravity(){return this.world?.gravity??this._gravity}set gravity(e){this.world?this.world.gravity=e:this._gravity=e}clearCaches(){this._meshCache.clear(),this.eventQueue?.raw&&this.eventQueue?.free(),this.world?.bodies&&this.world?.free()}async addBoxCollider(e,t){if(this._isInitialized||await this.initialize(),!e.activeAndEnabled)return;if(!this.enabled){Y&&console.warn(`Physics are disabled`);return}let n=e.gameObject,r=y(n,this._tempPosition).multiply(t);r.multiplyScalar(.5),r.x<0&&(r.x=Math.abs(r.x)),r.y<0&&(r.y=Math.abs(r.y)),r.z<0&&(r.z=Math.abs(r.z));let i=1e-7;r.x1e-4||Math.abs(c.y-1)>1e-4||Math.abs(c.z-1)>1e-4){let t=`${i.uuid}_${c.x}_${c.y}_${c.z}_${n}`;if(this._meshCache.has(t))Y&&console.warn(`Use cached mesh collider`),a=this._meshCache.get(t);else{(Y||h())&&console.debug(`[Performance] Your MeshCollider \"${e.name}\" is scaled: consider applying the scale to the collider mesh instead (${c.x}, ${c.y}, ${c.z})`);let n=new Float32Array(a.length);for(let e=0;e31?console.error(`Rapier only supports 32 layers, layer ${t} is not supported`):r|=1<31?console.error(`Rapier only supports 32 layers, layer ${t} is not supported`):a|=1<=-127?t.setDominanceGroup(Math.floor(e.dominanceGroup)):t.setDominanceGroup(0),e.autoMass){t.setAdditionalMass(0,!1);for(let e=0;ee.isEnabled());this.lines.geometry.setAttribute(`position`,new p(t.vertices,3)),this.lines.geometry.setAttribute(`color`,new p(t.colors,4));let n=e.debugRender(void 0,e=>!e.isEnabled());this.disabledLines.geometry.setAttribute(`position`,new p(n.vertices,3)),this.disabledLines.geometry.setAttribute(`color`,new p(n.colors,4)),this.disabledLines.visible=n.vertices.length>0,(this.context.time.frame%30==0||this.lines.geometry.boundingSphere?.radius===0)&&(this.lines.geometry.computeBoundingSphere(),this.disabledLines.geometry.computeBoundingSphere())}else this.lines&&this.context?.scene.remove(this.lines),this.disabledLines&&this.context?.scene.remove(this.disabledLines)}syncObjects(){if(!Ls)for(let e=0;e=0;e--)r.multiply(i[e]);return r}return i.push(t.matrix),t.parent&&this.getRigidbodyRelativeMatrix(t.parent,n,r,i),r}static centerConnectionPos={x:0,y:0,z:0};static centerConnectionRot={x:0,y:0,z:0,w:1};addFixedJoint(t,n){if(!this.world){console.error(`Physics world not initialized`);return}let r=t[Z],i=n[Z];this.calculateJointRelativeMatrices(t.gameObject,n.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=w.RAPIER_PHYSICS.MODULE.JointData.fixed(e.centerConnectionPos,e.centerConnectionRot,this._tempPosition,this._tempQuaternion),o=this.world.createImpulseJoint(a,r,i,!0);Y&&console.log(`ADD FIXED JOINT`,o)}addHingeJoint(e,t,n,r){if(!this.world){console.error(`Physics world not initialized`);return}let i=e[Z],a=t[Z];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let o=w.RAPIER_PHYSICS.MODULE.JointData.revolute(n,this._tempPosition,r),s=this.world.createImpulseJoint(o,i,a,!0);Y&&console.log(`ADD HINGE JOINT`,s)}calculateJointRelativeMatrices(e,t,n){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);let r=e.matrixWorld,i=t.matrixWorld;r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.elements[0]=1,i.elements[5]=1,i.elements[10]=1,n.copy(i).premultiply(r.invert()).invert()}},Us=class{world;eventQueue;constructor(e,t){this.world=e,this.eventQueue=t}activeCollisions=[];activeCollisionsStay=[];activeTriggers=[];handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,n)=>{let r=this.world.getCollider(e),i=this.world.getCollider(t);if(!r||!i)return;let a=r[X],o=i[X];Rs&&console.log(`EVT`,a.name,o.name,n,r,i),a&&o&&(n?(this.onCollisionStarted(a,r,o,i),this.onCollisionStarted(o,i,a,r)):(this.onCollisionEnded(a,o),this.onCollisionEnded(o,a)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,n,r){let i=null;if(e.isTrigger||n.isTrigger)Pt(e.gameObject,t=>{t.onTriggerEnter&&!t.destroyed&&t.onTriggerEnter(n),this.activeTriggers.push({collider:e,component:t,otherCollider:n})});else{let a=e.gameObject;this.world.contactPair(t,r,(t,r)=>{Pt(a,r=>{if(r.destroyed)return;let o=r.onCollisionEnter||r.onCollisionStay||r.onCollisionExit;if(o||Rs){if(!i){let e=[],r=t.normal();n instanceof Un&&n.convex&&(r.x=-r.x,r.y=-r.y,r.z=-r.z);for(let n=0;n0}var qs={binary:!0,animations:!0};async function Js(e){if(!e.context)throw Error(`No context provided to exportAsGLTF`);e.scene||=e.context.scene;let t={...qs,...e},{context:n}=t,r=new on;r.register(e=>new hi(e)),r.register(e=>new Zr(e)),r.register(e=>new pi(e)),Nn(r,t.context);let i={binary:t.binary,animations:Zs(n,t.scene,[])},a=new Xs;console.debug(`Exporting GLTF`,i),a.onBeforeExport(t),Gs(!0);let o=await r.parseAsync(t.scene,i).catch(e=>(console.error(e),null));if(Gs(!1),a.onAfterExport(t),!o)throw Error(`Failed to export GLTF`);if(t.downloadAs!=null){let e=null;if(o instanceof ArrayBuffer?e=new Blob([o],{type:`application/octet-stream`}):console.error(`Can not download GLTF as a blob`,o),e){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n;let i=t.downloadAs;!i.endsWith(`.glb`)&&!i.endsWith(`.gltf`)&&(i+=t.binary?`.glb`:`.gltf`),r.download=i,r.click()}}return o}var Ys=Symbol(`needle:weight`),Xs=class{_undo=[];onBeforeExport(e){e.context.animations.mixers.forEach(e=>{let t=Ze.tryGetActionsFromMixer(e);if(t)for(let e=0;e{n.weight=n[Ys]})}e.update(0)}),e.context.scene.traverse(e=>{if(!mi(e)){let t=e.parent;t&&(e.removeFromParent(),this._undo.push(()=>t.add(e)))}})}onAfterExport(e){this._undo.forEach(e=>e()),this._undo.length=0}};function Zs(e,t,n){e.animations.mixers.forEach(e=>{let t=Ze.tryGetActionsFromMixer(e);if(t)for(let e=0;ee.layers.set(2))}},$s=class{avatarRegistryUrl=null;async getOrCreateNewAvatarInstance(e,t){if(!t)return console.error(`Can not create avatar: failed to provide id or root object`),null;let n=null;if(typeof t==`string`){if(n=await this.loadAvatar(e,t),!n){let r=new Ke;n=x.instantiate(Qe(t,e.scene),r)}}else n=t;if(!n)return null;let r=this.findAvatar(n);return r.isValid?(Q&&console.log(`[Custom Avatar] valid config`,t,Q?r:``),r):(console.warn(`[Custom Avatar] config isn't valid`,t,Q?r:``),null)}async loadAvatar(e,t){if(console.assert(t!=null&&typeof t==`string`,`Avatar id must not be null`),t.length<=0||!t)return null;if(Q&&console.log(`[Custom Avatar] `+t+`, loading...`),t.endsWith(`.glb`)||(t+=`.glb`),this.avatarRegistryUrl===null){let n=await fetch(`./`+t),r=null;if(n.ok){let e=await n.blob();e&&(r=await e.arrayBuffer())}return r?(await be().parseSync(e,r,null,0))?.scene??null:null}let n=new A;return Vn(n,e),new Promise((r,i)=>{let a=this.avatarRegistryUrl+`/`+t;n.load(a,async t=>{await be().createBuiltinComponents(e,a,t,null,void 0),r(t.scene)},e=>{Q&&console.log(`[Custom Avatar] `+e.loaded/e.total*100+`% loaded of `+e.total/1024+`kB`)},e=>{console.error(`[Custom Avatar] Error when loading: `+e),r(null)})})}cacheModel(e,t){}findAvatar(e){let t=e,r=t;r.children.length==1&&(r=e.children[0]);let i=this.findAvatarPart(r,[`head`]),a=this.findAvatarPart(r,[`left`,`hand`]),o=this.findAvatarPart(r,[`right`,`hand`]);if(!i){i=t;let e=new n;new re().setFromObject(i).getSize(e);let r=Math.max(e.x,e.y,e.z);console.warn(`[Custom Avatar] Normalizing head scale, it's too big: `+r+` meters! Should be < 0.3m`),r>.3&&i.scale.multiplyScalar(1/r*.3)}return new Qs(t,i,a,o)}findAvatarPart(e,t){let n=e.name.toLowerCase(),r=!0;for(let e of t){if(!r)break;n.indexOf(e)===-1&&(r=!1)}if(r)return e;if(e.children)for(let n of e.children){let e=this.findAvatarPart(n,t);if(e)return e}return null}handleCustomAvatarErrors(e){if(!e.ok)throw Error(e.statusText);return e}},ec=class{get extensionName(){return`DocumentExtension`}onAfterBuildDocument(e){}},tc=e({ActionBuilder:()=>jr,ActionCollection:()=>ei,ActionModel:()=>br,AlignmentConstraint:()=>Mi,Animation:()=>vr,AnimationCurve:()=>fa,AnimationExtension:()=>Fn,AnimationTrackHandler:()=>ui,Animator:()=>Xe,AnimatorController:()=>ue,Antialiasing:()=>Ba,Attractor:()=>qr,AudioExtension:()=>Zn,AudioListener:()=>wr,AudioSource:()=>lr,AudioTrackHandler:()=>Gr,Avatar:()=>mr,AvatarBlink_Simple:()=>kn,AvatarEyeLook_Rotation:()=>Sn,AvatarLoader:()=>$s,AvatarMarker:()=>gr,AvatarModel:()=>Qs,Avatar_Brain_LookAt:()=>kr,Avatar_MouthShapes:()=>Qn,Avatar_MustacheShake:()=>Yn,Avatar_POI:()=>ar,AxesHelper:()=>Vi,BaseUIComponent:()=>en,BasicIKConstraint:()=>qi,BehaviorExtension:()=>rr,BehaviorModel:()=>Or,BloomEffect:()=>Ua,BoxCollider:()=>pn,BoxGizmo:()=>cr,BoxHelperComponent:()=>Oi,Button:()=>Wt,CallInfo:()=>pt,Camera:()=>he,CameraTargetReachedEvent:()=>tt,Canvas:()=>Gt,CanvasGroup:()=>Bt,CapsuleCollider:()=>Gn,ChangeMaterialOnClick:()=>fn,ChangeTransformOnClick:()=>Wn,CharacterController:()=>ea,CharacterControllerInput:()=>Ei,ChromaticAberration:()=>Ka,ClickThrough:()=>Wi,ColorAdjustments:()=>La,ColorBySpeedModule:()=>Ta,ColorOverLifetimeModule:()=>Oa,ContactShadows:()=>Rn,ControlTrackHandler:()=>ia,CursorFollow:()=>yi,CustomBranding:()=>Cr,Deletable:()=>bi,DeleteBox:()=>Gi,DepthOfField:()=>Xa,DeviceFlag:()=>Pi,DocumentExtension:()=>ec,DragControls:()=>Ui,DropListener:()=>Ji,Duplicatable:()=>$r,EffectWrapper:()=>Ha,EmissionModule:()=>_a,EmphasizeOnClick:()=>Cn,EnvironmentScene:()=>Si,EventList:()=>_,EventListEvent:()=>ht,EventSystem:()=>ve,EventTrigger:()=>Xr,FieldWithDefault:()=>Nr,FixedJoint:()=>ri,Fog:()=>Qr,GltfExport:()=>la,GltfExportBox:()=>Ur,Gradient:()=>Ca,Graphic:()=>Dt,GraphicRaycaster:()=>Ft,GridHelper:()=>Yr,GridLayoutGroup:()=>Lt,GroundProjectedEnv:()=>Ut,GroupActionModel:()=>pr,HideOnStart:()=>Hn,HingeJoint:()=>oi,HorizontalLayoutGroup:()=>Jt,HoverAnimation:()=>Ni,Image:()=>kt,InheritVelocityModule:()=>Aa,InputField:()=>Rt,InstanceHandle:()=>hn,InstancingHandler:()=>Fr,Interactable:()=>Zi,Keyframe:()=>da,LODGroup:()=>Hr,LODModel:()=>Fi,Light:()=>ti,LimitVelocityOverLifetimeModule:()=>va,LogStats:()=>zi,LookAt:()=>Ci,LookAtConstraint:()=>Te,MainModule:()=>ya,MarkerTrackHandler:()=>fi,MaskableGraphic:()=>Tt,MeshCollider:()=>Un,MeshRenderer:()=>zr,MinMaxCurve:()=>Ea,MinMaxGradient:()=>wa,NeedleMenu:()=>dn,NestedGltf:()=>Li,Networking:()=>ai,NoiseModule:()=>xa,ObjectRaycaster:()=>pe,OffsetConstraint:()=>Kr,OpenURL:()=>Xi,OrbitControls:()=>Ce,Outline:()=>gt,Padding:()=>St,ParticleBurst:()=>ba,ParticleSubEmitter:()=>ha,ParticleSystem:()=>ka,ParticleSystemRenderer:()=>Da,PhysicsExtension:()=>Rr,PixelationEffect:()=>Ia,PlayAnimationOnClick:()=>Kn,PlayAudioOnClick:()=>xn,PlayableDirector:()=>oa,PlayerColor:()=>di,PointerEventData:()=>Be,PostProcessingHandler:()=>Wa,PreliminaryAction:()=>On,PreliminaryTrigger:()=>Tr,RawImage:()=>vt,Rect:()=>Yt,RectTransform:()=>nn,ReflectionProbe:()=>Tn,RegisteredAnimationInfo:()=>un,RemoteSkybox:()=>Ai,Renderer:()=>ir,RendererLightmap:()=>Bn,Rigidbody:()=>Le,RotationBySpeedModule:()=>ja,RotationOverLifetimeModule:()=>Pa,SceneSwitcher:()=>na,ScreenCapture:()=>Wr,ScreenSpaceAmbientOcclusion:()=>Ja,ScreenSpaceAmbientOcclusionN8:()=>Ga,ScrollFollow:()=>Yi,SeeThrough:()=>li,SetActiveOnClick:()=>En,ShadowCatcher:()=>aa,ShapeModule:()=>ga,SharpeningEffect:()=>Fa,SignalAsset:()=>Ii,SignalReceiver:()=>ni,SignalReceiverEvent:()=>ii,SignalTrackHandler:()=>Jr,Size:()=>bt,SizeBySpeedModule:()=>Na,SizeOverLifetimeModule:()=>pa,SkinnedMeshRenderer:()=>Lr,SmoothFollow:()=>xi,SpatialGrabRaycaster:()=>At,SpatialHtml:()=>qt,SpatialTrigger:()=>ta,SpatialTriggerReceiver:()=>sa,SpectatorCamera:()=>_i,SphereCollider:()=>qn,SplineContainer:()=>ji,SplineData:()=>ki,SplineWalker:()=>Bi,Sprite:()=>bn,SpriteData:()=>wn,SpriteRenderer:()=>An,SpriteSheet:()=>Ln,SubEmitterSystem:()=>Sa,SyncedCamera:()=>Ki,SyncedRoom:()=>Di,SyncedTransform:()=>qe,TapGestureTrigger:()=>Xn,TeleportTarget:()=>mn,TestRunner:()=>$i,TestSimulateUserData:()=>Ti,Text:()=>Ht,TextBuilder:()=>ur,TextExtension:()=>$n,TextureSheetAnimationModule:()=>ua,TiltShiftEffect:()=>Va,ToneMappingEffect:()=>Ra,TrailModule:()=>Ma,TransformData:()=>sr,TransformGizmo:()=>Ri,TriggerBuilder:()=>nr,TriggerModel:()=>Sr,UIRaycastUtils:()=>Ue,UIRootComponent:()=>$e,USDZExporter:()=>_r,USDZText:()=>Mr,USDZUIExtension:()=>dr,UsageMarker:()=>wi,VariantAction:()=>ci,VelocityOverLifetimeModule:()=>ma,VerticalLayoutGroup:()=>Ct,VideoPlayer:()=>ra,ViewBox:()=>Hi,Vignette:()=>qa,VisibilityAction:()=>Jn,Voip:()=>In,Volume:()=>Ya,VolumeParameter:()=>Za,VolumeProfile:()=>za,WebARCameraBackground:()=>xr,WebARSessionRoot:()=>Pn,WebXR:()=>Ir,WebXRImageTracking:()=>Dr,WebXRImageTrackingModel:()=>fr,WebXRPlaneTracking:()=>yr,WebXRTrackedImage:()=>tr,XRControllerFollow:()=>or,XRControllerModel:()=>Pr,XRControllerMovement:()=>zn,XRFlag:()=>Er,XRRig:()=>Ar,XRState:()=>Dn,__Ignore:()=>nc}),nc=class{},rc;(function(e){function t(e,t=!1,r=.75){let i=new ji,a=1-g.clamp(r,0,1);return e.forEach((r,o)=>{let s=new n;o1&&s.subVectors(e[0],r).normalize().multiplyScalar(a);let c=new ki;c.position.copy(r),c.tangentIn.copy(s),c.tangentOut.copy(s),i.addKnot(c)}),i.closed=t,i}e.createFromPoints=t})(rc||={}),Is();var $={VERSION:Ee,Context:_t,NeedleXRSession:wt,assets:{loadFromURL:cs},types:fe,onStart:Qt,onUpdate:nt,onBeforeRender:xt,onAfterRender:rn,onInitializedContext:ge,onDestroyContext:et,onClearContext:tn};globalThis.Needle?.VERSION!==void 0&&console.warn(`Needle Engine is already imported: ${globalThis.Needle.VERSION}`);function ic(e){for(let t in e)$[t]=e[t]}ic(Kt),ic(tc);for(let e of Object.getOwnPropertyNames(x))switch(e){case`prototype`:case`constructor`:case`length`:case`name`:continue;default:$[e]=x[e];break}if(!globalThis.Needle)globalThis.Needle=$;else for(let e in $)globalThis.Needle[e]=$[e];globalThis.THREE?console.warn(`Three.js is already imported`):globalThis.THREE=l;var ac=class extends $a{constructor(){super(new Worker(new URL(``+new URL(`generateMeshBVH.worker-BRfdalWV.js`,import.meta.url).href,``+import.meta.url),{type:`module`})),this.name=`GenerateMeshBVHWorker`}runTask(e,t,n={}){return new Promise((r,i)=>{if(t.getAttribute(`position`).isInterleavedBufferAttribute||t.index&&t.index.isInterleavedBufferAttribute)throw Error(`GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.`);e.onerror=e=>{i(Error(`[GenerateMeshBVHWorker] ${e.message||`Unknown error. Please check the server console. If you're using vite try adding 'three-mesh-bvh' to 'optimizeDeps.exclude' in your vite.config.js`}`))},e.onmessage=a=>{let{data:o}=a;if(o.error)i(Error(o.error)),e.onmessage=null;else if(o.serialized){let{serialized:i,position:a}=o,s=Qa.deserialize(i,t,{setIndex:!1}),c=Object.assign({setBoundingBox:!0},n);if(t.attributes.position.array=a,i.index)if(t.index)t.index.array=i.index;else{let e=new p(i.index,1,!1);t.setIndex(e)}c.setBoundingBox&&(t.boundingBox=s.getBoundingBox(new re)),n.onProgress&&n.onProgress(o.progress),r(s),e.onmessage=null}else n.onProgress&&n.onProgress(o.progress)};let a=t.index?t.index.array:null,o=t.attributes.position.array,s=[o];a&&s.push(a),e.postMessage({index:a,position:o,options:{...n,onProgress:null,includedProgressCallback:!!n.onProgress,groups:[...t.groups]}},s.map(e=>e.buffer).filter(e=>typeof SharedArrayBuffer>`u`||!(e instanceof SharedArrayBuffer)))})}};export{Ro as C,ro as E,Fo as S,io as T,ls as _,$s as a,Po as b,Ks as c,Es as d,Cs as f,us as g,cs as h,ec as i,Hs as l,bs as m,rc as n,Qs as o,Ts as p,nc as r,Js as s,ac as t,js as u,Vo as v,Io as w,Lo as x,Ho as y}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine@5.0.3.js.gz b/Needle/SampleScene/dist/assets/needle-engine@5.0.3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..fa3f3d910e0829ba419f0291ec129736c4355dde GIT binary patch literal 32242 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 n={};n.useBlobBuilder=(function(){try{return new Blob([]),!1}catch{return!0}})(),n.useArrayBufferView=!n.useBlobBuilder&&(function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}})(),t.exports.binaryFeatures=n;var r=t.exports.BlobBuilder;typeof window<`u`&&(r=t.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function i(){this._pieces=[],this._parts=[]}i.prototype.append=function(e){typeof e==`number`?this._pieces.push(e):(this.flush(),this._parts.push(e))},i.prototype.flush=function(){if(this._pieces.length>0){var e=new Uint8Array(this._pieces);n.useArrayBufferView||(e=e.buffer),this._parts.push(e),this._pieces=[]}},i.prototype.getBuffer=function(){if(this.flush(),n.useBlobBuilder){for(var e=new r,t=0,i=this._parts.length;t{var n=r().BufferBuilder,i=r().binaryFeatures;t.exports={unpack:function(e){return new a(e).unpack()},pack:function(e){var t=new o;return t.pack(e),t.getBuffer()}};function a(e){this.index=0,this.dataBuffer=e,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}a.prototype.unpack=function(){var e=this.unpack_uint8();if(e<128)return e;if((e^224)<32)return(e^224)-32;var t;if((t=e^160)<=15)return this.unpack_raw(t);if((t=e^176)<=15)return this.unpack_string(t);if((t=e^144)<=15)return this.unpack_array(t);if((t=e^128)<=15)return this.unpack_map(t);switch(e){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return t=this.unpack_uint16(),this.unpack_string(t);case 217:return t=this.unpack_uint32(),this.unpack_string(t);case 218:return t=this.unpack_uint16(),this.unpack_raw(t);case 219:return t=this.unpack_uint32(),this.unpack_raw(t);case 220:return t=this.unpack_uint16(),this.unpack_array(t);case 221:return t=this.unpack_uint32(),this.unpack_array(t);case 222:return t=this.unpack_uint16(),this.unpack_map(t);case 223:return t=this.unpack_uint32(),this.unpack_map(t)}},a.prototype.unpack_uint8=function(){var e=this.dataView[this.index]&255;return this.index++,e},a.prototype.unpack_uint16=function(){var e=this.read(2),t=(e[0]&255)*256+(e[1]&255);return this.index+=2,t},a.prototype.unpack_uint32=function(){var e=this.read(4),t=((e[0]*256+e[1])*256+e[2])*256+e[3];return this.index+=4,t},a.prototype.unpack_uint64=function(){var e=this.read(8),t=((((((e[0]*256+e[1])*256+e[2])*256+e[3])*256+e[4])*256+e[5])*256+e[6])*256+e[7];return this.index+=8,t},a.prototype.unpack_int8=function(){var e=this.unpack_uint8();return e<128?e:e-256},a.prototype.unpack_int16=function(){var e=this.unpack_uint16();return e<32768?e:e-65536},a.prototype.unpack_int32=function(){var e=this.unpack_uint32();return e<2**31?e:e-2**32},a.prototype.unpack_int64=function(){var e=this.unpack_uint64();return e<2**63?e:e-2**64},a.prototype.unpack_raw=function(e){if(this.length>31,n=(e>>23&255)-127,r=e&8388607|8388608;return(t===0?1:-1)*r*2**(n-23)},a.prototype.unpack_double=function(){var e=this.unpack_uint32(),t=this.unpack_uint32(),n=e>>31,r=(e>>20&2047)-1023,i=(e&1048575|1048576)*2**(r-20)+t*2**(r-52);return(n===0?1:-1)*i},a.prototype.read=function(e){var t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw Error(`BinaryPackFailure: read index out of range`)};function o(){this.bufferBuilder=new n}o.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},o.prototype.pack=function(e){var t=typeof e;if(t===`string`)this.pack_string(e);else if(t===`number`)Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if(t===`boolean`)e===!0?this.bufferBuilder.append(195):e===!1&&this.bufferBuilder.append(194);else if(t===`undefined`)this.bufferBuilder.append(192);else if(t===`object`)if(e===null)this.bufferBuilder.append(192);else{var n=e.constructor;if(n==Array)this.pack_array(e);else if(n==Blob||n==File||e instanceof Blob||e instanceof File)this.pack_bin(e);else if(n==ArrayBuffer)i.useArrayBufferView?this.pack_bin(new Uint8Array(e)):this.pack_bin(e);else if(`BYTES_PER_ELEMENT`in e)i.useArrayBufferView?this.pack_bin(new Uint8Array(e.buffer)):this.pack_bin(e.buffer);else if(n==Object||n.toString().startsWith(`class`))this.pack_object(e);else if(n==Date)this.pack_string(e.toString());else if(typeof e.toBinaryPack==`function`)this.bufferBuilder.append(e.toBinaryPack());else throw Error(`Type "`+n.toString()+`" not yet supported`)}else throw Error(`Type "`+t+`" not yet supported`);this.bufferBuilder.flush()},o.prototype.pack_bin=function(e){var t=e.length||e.byteLength||e.size;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this.bufferBuilder.append(218),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(t);else throw Error(`Invalid length`);this.bufferBuilder.append(e)},o.prototype.pack_string=function(e){var t=c(e);if(t<=15)this.pack_uint8(176+t);else if(t<=65535)this.bufferBuilder.append(216),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(t);else throw Error(`Invalid length`);this.bufferBuilder.append(e)},o.prototype.pack_array=function(e){var t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this.bufferBuilder.append(220),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(t);else throw Error(`Invalid length`);for(var n=0;n=-32&&e<=127)this.bufferBuilder.append(e&255);else if(e>=0&&e<=255)this.bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this.bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this.bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this.bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this.bufferBuilder.append(210),this.pack_int32(e);else if(e>=-0x8000000000000000&&e<=0x8000000000000000)this.bufferBuilder.append(211),this.pack_int64(e);else if(e>=0&&e<=0x10000000000000000)this.bufferBuilder.append(207),this.pack_uint64(e);else throw Error(`Invalid integer`)},o.prototype.pack_double=function(e){var t=0;e<0&&(t=1,e=-e);var n=Math.floor(Math.log(e)/Math.LN2),r=e/2**n-1,i=Math.floor(r*2**52),a=2**32,o=t<<31|n+1023<<20|i/a&1048575,s=i%a;this.bufferBuilder.append(203),this.pack_int32(o),this.pack_int32(s)},o.prototype.pack_object=function(e){var t=Object.keys(e).length;if(t<=15)this.pack_uint8(128+t);else if(t<=65535)this.bufferBuilder.append(222),this.pack_uint16(t);else if(t<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(t);else throw Error(`Invalid length`);for(var n in e)e.hasOwnProperty(n)&&(this.pack(n),this.pack(e[n]))},o.prototype.pack_uint8=function(e){this.bufferBuilder.append(e)},o.prototype.pack_uint16=function(e){this.bufferBuilder.append(e>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_uint32=function(e){var t=e&4294967295;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255)},o.prototype.pack_uint64=function(e){var t=e/2**32,n=e%2**32;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255),this.bufferBuilder.append((n&4278190080)>>>24),this.bufferBuilder.append((n&16711680)>>>16),this.bufferBuilder.append((n&65280)>>>8),this.bufferBuilder.append(n&255)},o.prototype.pack_int8=function(e){this.bufferBuilder.append(e&255)},o.prototype.pack_int16=function(e){this.bufferBuilder.append((e&65280)>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_int32=function(e){this.bufferBuilder.append(e>>>24&255),this.bufferBuilder.append((e&16711680)>>>16),this.bufferBuilder.append((e&65280)>>>8),this.bufferBuilder.append(e&255)},o.prototype.pack_int64=function(e){var t=Math.floor(e/2**32),n=e%2**32;this.bufferBuilder.append((t&4278190080)>>>24),this.bufferBuilder.append((t&16711680)>>>16),this.bufferBuilder.append((t&65280)>>>8),this.bufferBuilder.append(t&255),this.bufferBuilder.append((n&4278190080)>>>24),this.bufferBuilder.append((n&16711680)>>>16),this.bufferBuilder.append((n&65280)>>>8),this.bufferBuilder.append(n&255)};function s(e){var t=e.charCodeAt(0);return t<=2047?`00`:t<=65535?`000`:t<=2097151?`0000`:t<=67108863?`00000`:`000000`}function c(e){return e.length>600?new Blob([e]).size:e.replace(/[^\u0000-\u007F]/g,s).length}}))(),1),a=!0,o=!0;function s(e,t,n){let r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}function c(e,t,n){if(!e.RTCPeerConnection)return;let r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);let a=e=>{let t=n(e);t&&(r.handleEvent?r.handleEvent(t):r(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(r,a),i.apply(this,[e,a])};let a=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(n))return a.apply(this,arguments);let r=this._eventMap[t].get(n);return this._eventMap[t].delete(n),this._eventMap[t].size===0&&delete this._eventMap[t],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[e,r])},Object.defineProperty(r,`on`+t,{get(){return this[`_on`+t]},set(e){this[`_on`+t]&&(this.removeEventListener(t,this[`_on`+t]),delete this[`_on`+t]),e&&this.addEventListener(t,this[`_on`+t]=e)},enumerable:!0,configurable:!0})}function l(e){return typeof e==`boolean`?(a=e,e?`adapter.js logging disabled`:`adapter.js logging enabled`):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function u(e){return typeof e==`boolean`?(o=!e,`adapter.js deprecation warnings `+(e?`disabled`:`enabled`)):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function d(){if(typeof window==`object`){if(a)return;typeof console<`u`&&typeof console.log==`function`&&console.log.apply(console,arguments)}}function f(e,t){o&&console.warn(e+` is deprecated, please use `+t+` instead.`)}function p(e){let t={browser:null,version:null};if(e===void 0||!e.navigator)return t.browser=`Not a browser.`,t;let{navigator:n}=e;if(n.mozGetUserMedia)t.browser=`firefox`,t.version=s(n.userAgent,/Firefox\/(\d+)\./,1);else if(n.webkitGetUserMedia||e.isSecureContext===!1&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser=`chrome`,t.version=s(n.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(n.mediaDevices&&n.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser=`edge`,t.version=s(n.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(e.RTCPeerConnection&&n.userAgent.match(/AppleWebKit\/(\d+)\./))t.browser=`safari`,t.version=s(n.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&`currentDirection`in e.RTCRtpTransceiver.prototype;else return t.browser=`Not a supported browser.`,t;return t}function m(e){return Object.prototype.toString.call(e)===`[object Object]`}function h(e){return m(e)?Object.keys(e).reduce(function(t,n){let r=m(e[n]),i=r?h(e[n]):e[n],a=r&&!Object.keys(i).length;return i===void 0||a?t:Object.assign(t,{[n]:i})},{}):e}function ee(e,t,n){!t||n.has(t.id)||(n.set(t.id,t),Object.keys(t).forEach(r=>{r.endsWith(`Id`)?ee(e,e.get(t[r]),n):r.endsWith(`Ids`)&&t[r].forEach(t=>{ee(e,e.get(t),n)})}))}function g(e,t,n){let r=n?`outbound-rtp`:`inbound-rtp`,i=new Map;if(t===null)return i;let a=[];return e.forEach(e=>{e.type===`track`&&e.trackIdentifier===t.id&&a.push(e)}),a.forEach(t=>{e.forEach(n=>{n.type===r&&n.trackId===t.id&&ee(e,n,i)})}),i}var _=d;function v(e,t){let n=e&&e.navigator;if(!n.mediaDevices)return;let r=function(e){if(typeof e!=`object`||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(n=>{if(n===`require`||n===`advanced`||n===`mediaSource`)return;let r=typeof e[n]==`object`?e[n]:{ideal:e[n]};r.exact!==void 0&&typeof r.exact==`number`&&(r.min=r.max=r.exact);let i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):t===`deviceId`?`sourceId`:t};if(r.ideal!==void 0){t.optional=t.optional||[];let e={};typeof r.ideal==`number`?(e[i(`min`,n)]=r.ideal,t.optional.push(e),e={},e[i(`max`,n)]=r.ideal,t.optional.push(e)):(e[i(``,n)]=r.ideal,t.optional.push(e))}r.exact!==void 0&&typeof r.exact!=`number`?(t.mandatory=t.mandatory||{},t.mandatory[i(``,n)]=r.exact):[`min`,`max`].forEach(e=>{r[e]!==void 0&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])})}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if(e=JSON.parse(JSON.stringify(e)),e&&typeof e.audio==`object`){let t=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};e=JSON.parse(JSON.stringify(e)),t(e.audio,`autoGainControl`,`googAutoGainControl`),t(e.audio,`noiseSuppression`,`googNoiseSuppression`),e.audio=r(e.audio)}if(e&&typeof e.video==`object`){let a=e.video.facingMode;a&&=typeof a==`object`?a:{ideal:a};let o=t.version<66;if(a&&(a.exact===`user`||a.exact===`environment`||a.ideal===`user`||a.ideal===`environment`)&&!(n.mediaDevices.getSupportedConstraints&&n.mediaDevices.getSupportedConstraints().facingMode&&!o)){delete e.video.facingMode;let t;if(a.exact===`environment`||a.ideal===`environment`?t=[`back`,`rear`]:(a.exact===`user`||a.ideal===`user`)&&(t=[`front`]),t)return n.mediaDevices.enumerateDevices().then(n=>{n=n.filter(e=>e.kind===`videoinput`);let o=n.find(e=>t.some(t=>e.label.toLowerCase().includes(t)));return!o&&n.length&&t.includes(`back`)&&(o=n[n.length-1]),o&&(e.video.deviceId=a.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=r(e.video),_(`chrome: `+JSON.stringify(e)),i(e)})}e.video=r(e.video)}return _(`chrome: `+JSON.stringify(e)),i(e)},a=function(e){return t.version>=64?e:{name:{PermissionDeniedError:`NotAllowedError`,PermissionDismissedError:`NotAllowedError`,InvalidStateError:`NotAllowedError`,DevicesNotFoundError:`NotFoundError`,ConstraintNotSatisfiedError:`OverconstrainedError`,TrackStartError:`NotReadableError`,MediaDeviceFailedDueToShutdown:`NotAllowedError`,MediaDeviceKillSwitchOn:`NotAllowedError`,TabCaptureError:`AbortError`,ScreenCaptureError:`AbortError`,DeviceCaptureError:`AbortError`}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&`: `)+this.message}}};if(n.getUserMedia=function(e,t,r){i(e,e=>{n.webkitGetUserMedia(e,t,e=>{r&&r(a(e))})})}.bind(n),n.mediaDevices.getUserMedia){let e=n.mediaDevices.getUserMedia.bind(n.mediaDevices);Object.getOwnPropertyDescriptor(n.mediaDevices,`getUserMedia`)?.writable&&(n.mediaDevices.getUserMedia=function(t){return i(t,t=>e(t).then(e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach(e=>{e.stop()}),new DOMException(``,`NotFoundError`);return e},e=>Promise.reject(a(e))))})}}function y(e,t){if(!(e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices)&&e.navigator.mediaDevices){if(typeof t!=`function`){console.error(`shimGetDisplayMedia: getSourceId argument is not a function`);return}e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then(t=>{let r=n.video&&n.video.width,i=n.video&&n.video.height;return n.video={mandatory:{chromeMediaSource:`desktop`,chromeMediaSourceId:t,maxFrameRate:n.video&&n.video.frameRate||3}},r&&(n.video.mandatory.maxWidth=r),i&&(n.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(n)})}}}var b=e({fixNegotiationNeeded:()=>D,shimAddTrackRemoveTrack:()=>T,shimAddTrackRemoveTrackWithNative:()=>w,shimGetDisplayMedia:()=>y,shimGetSendersWithDtmf:()=>ne,shimGetStats:()=>S,shimGetUserMedia:()=>v,shimMediaStream:()=>te,shimOnTrack:()=>x,shimPeerConnection:()=>E,shimSenderReceiverGetStats:()=>C});function te(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function x(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`ontrack`in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,`ontrack`,{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener(`track`,this._ontrack),this.addEventListener(`track`,this._ontrack=e)},enumerable:!0,configurable:!0});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener(`addtrack`,n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.track.id):{track:n.track};let i=new Event(`track`);i.track=n.track,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)}),t.stream.getTracks().forEach(n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.id):{track:n};let i=new Event(`track`);i.track=n,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)})},this.addEventListener(`addstream`,this._ontrackpoly)),t.apply(this,arguments)}}else c(e,`track`,e=>(e.transceiver||Object.defineProperty(e,`transceiver`,{value:{receiver:e.receiver}}),e))}function ne(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`getSenders`in e.RTCPeerConnection.prototype)&&`createDTMFSender`in e.RTCPeerConnection.prototype){let t=function(e,t){return{track:t,get dtmf(){return this._dtmf===void 0&&(t.kind===`audio`?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){let i=n.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};let r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){r.apply(this,arguments);let t=this._senders.indexOf(e);t!==-1&&this._senders.splice(t,1)}}let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{this._senders.push(t(this,e))})};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach(e=>{let t=this._senders.find(t=>t.track===e);t&&this._senders.splice(this._senders.indexOf(t),1)})}}else if(typeof e==`object`&&e.RTCPeerConnection&&`getSenders`in e.RTCPeerConnection.prototype&&`createDTMFSender`in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!(`dtmf`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e},Object.defineProperty(e.RTCRtpSender.prototype,`dtmf`,{get(){return this._dtmf===void 0&&(this.track.kind===`audio`?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function S(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,n,r]=arguments;if(arguments.length>0&&typeof e==`function`)return t.apply(this,arguments);if(t.length===0&&(arguments.length===0||typeof e!=`function`))return t.apply(this,[]);let i=function(e){let t={};return e.result().forEach(e=>{let n={id:e.id,timestamp:e.timestamp,type:{localcandidate:`local-candidate`,remotecandidate:`remote-candidate`}[e.type]||e.type};e.names().forEach(t=>{n[t]=e.stat(t)}),t[n.id]=n}),t},a=function(e){return new Map(Object.keys(e).map(t=>[t,e[t]]))};return arguments.length>=2?t.apply(this,[function(e){n(a(i(e)))},e]):new Promise((e,n)=>{t.apply(this,[function(t){e(a(i(t)))},n])}).then(n,r)}}function C(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!(`getStats`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>g(t,e.track,!0))}}if(!(`getStats`in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),c(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>g(t,e.track,!1))}}if(!(`getStats`in e.RTCRtpSender.prototype&&`getStats`in e.RTCRtpReceiver.prototype))return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e=arguments[0],t,n,r;return this.getSenders().forEach(n=>{n.track===e&&(t?r=!0:t=n)}),this.getReceivers().forEach(t=>(t.track===e&&(n?r=!0:n=t),t.track===e)),r||t&&n?Promise.reject(new DOMException(`There are more than one sender or receiver for the track.`,`InvalidAccessError`)):t?t.getStats():n?n.getStats():Promise.reject(new DOMException(`There is no sender or receiver for the track.`,`InvalidAccessError`))}return t.apply(this,arguments)}}function w(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?this._shimmedLocalStreams[n.id].indexOf(r)===-1&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)});let t=this.getSenders();n.apply(this,arguments);let r=this.getSenders().filter(e=>t.indexOf(e)===-1);this._shimmedLocalStreams[e.id]=[e].concat(r)};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};let i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let n=this._shimmedLocalStreams[t].indexOf(e);n!==-1&&this._shimmedLocalStreams[t].splice(n,1),this._shimmedLocalStreams[t].length===1&&delete this._shimmedLocalStreams[t]}),i.apply(this,arguments)}}function T(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return w(e);let n=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=n.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)}),!this._reverseStreams[t.id]){let n=new e.MediaStream(t.getTracks());this._streams[t.id]=n,this._reverseStreams[n.id]=t,t=n}r.apply(this,[t])};let i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);let r=[].slice.call(arguments,1);if(r.length!==1||!r[0].getTracks().find(e=>e===t))throw new DOMException(`The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.`,`NotSupportedError`);if(this.getSenders().find(e=>e.track===t))throw new DOMException(`Track already exists.`,`InvalidAccessError`);this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let i=this._streams[n.id];if(i)i.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event(`negotiationneeded`))});else{let r=new e.MediaStream([t]);this._streams[n.id]=r,this._reverseStreams[r.id]=n,this.addStream(r)}return this.getSenders().find(e=>e.track===t)};function a(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,`g`),r.id)}),new RTCSessionDescription({type:t.type,sdp:n})}function o(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,`g`),i.id)}),new RTCSessionDescription({type:t.type,sdp:n})}[`createOffer`,`createAnswer`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){let e=arguments;return arguments.length&&typeof arguments[0]==`function`?n.apply(this,[t=>{let n=a(this,t);e[0].apply(null,[n])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):n.apply(this,arguments).then(e=>a(this,e))}};e.RTCPeerConnection.prototype[t]=r[t]});let s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type||(arguments[0]=o(this,arguments[0])),s.apply(this,arguments)};let c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,`localDescription`);Object.defineProperty(e.RTCPeerConnection.prototype,`localDescription`,{get(){let e=c.get.apply(this);return e.type===``?e:a(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);if(!e._pc)throw new DOMException(`Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.`,`TypeError`);if(e._pc!==this)throw new DOMException(`Sender was not created by this connection.`,`InvalidAccessError`);this._streams=this._streams||{};let t;Object.keys(this._streams).forEach(n=>{this._streams[n].getTracks().find(t=>e.track===t)&&(t=this._streams[n])}),t&&(t.getTracks().length===1?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event(`negotiationneeded`)))}}function E(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]})}function D(e,t){c(e,`negotiationneeded`,e=>{let n=e.target;if(!((t.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics===`plan-b`)&&n.signalingState!==`stable`))return e})}function O(e,t){let n=!1;return e=JSON.parse(JSON.stringify(e)),e.filter(e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&f(`RTCIceServer.url`,`RTCIceServer.urls`);let r=typeof t==`string`;return r&&(t=[t]),t=t.filter(e=>{if(e.indexOf(`stun:`)===0)return!1;let t=e.startsWith(`turn`)&&!e.startsWith(`turn:[`)&&e.includes(`transport=udp`);return t&&!n?(n=!0,!0):t&&!n}),delete e.url,e.urls=r?t[0]:t,!!t.length}})}var re=n(((e,t)=>{var n={};n.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},n.localCName=n.generateIdentifier(),n.splitLines=function(e){return e.trim().split(` +`).map(function(e){return e.trim()})},n.splitSections=function(e){return e.split(` +m=`).map(function(e,t){return(t>0?`m=`+e:e).trim()+`\r +`})},n.getDescription=function(e){var t=n.splitSections(e);return t&&t[0]},n.getMediaSections=function(e){var t=n.splitSections(e);return t.shift(),t},n.matchPrefix=function(e,t){return n.splitLines(e).filter(function(e){return e.indexOf(t)===0})},n.parseCandidate=function(e){for(var t=e.indexOf(`a=candidate:`)===0?e.substring(12).split(` `):e.substring(10).split(` `),n={foundation:t[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r0?t[0].split(`/`)[1]:`sendrecv`,uri:t[1]}},n.writeExtmap=function(e){return`a=extmap:`+(e.id||e.preferredId)+(e.direction&&e.direction!==`sendrecv`?`/`+e.direction:``)+` `+e.uri+`\r +`},n.parseFmtp=function(e){for(var t={},n,r=e.substr(e.indexOf(` `)+1).split(`;`),i=0;i-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},n.parseSsrcGroup=function(e){var t=e.substr(13).split(` `);return{semantics:t.shift(),ssrcs:t.map(function(e){return parseInt(e,10)})}},n.getMid=function(e){var t=n.matchPrefix(e,`a=mid:`)[0];if(t)return t.substr(6)},n.parseFingerprint=function(e){var t=e.substr(14).split(` `);return{algorithm:t[0].toLowerCase(),value:t[1]}},n.getDtlsParameters=function(e,t){return{role:`auto`,fingerprints:n.matchPrefix(e+t,`a=fingerprint:`).map(n.parseFingerprint)}},n.writeDtlsParameters=function(e,t){var n=`a=setup:`+t+`\r +`;return e.fingerprints.forEach(function(e){n+=`a=fingerprint:`+e.algorithm+` `+e.value+`\r +`}),n},n.parseCryptoLine=function(e){var t=e.substr(9).split(` `);return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},n.writeCryptoLine=function(e){return`a=crypto:`+e.tag+` `+e.cryptoSuite+` `+(typeof e.keyParams==`object`?n.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?` `+e.sessionParams.join(` `):``)+`\r +`},n.parseCryptoKeyParams=function(e){if(e.indexOf(`inline:`)!==0)return null;var t=e.substr(7).split(`|`);return{keyMethod:`inline`,keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(`:`)[0]:void 0,mkiLength:t[2]?t[2].split(`:`)[1]:void 0}},n.writeCryptoKeyParams=function(e){return e.keyMethod+`:`+e.keySalt+(e.lifeTime?`|`+e.lifeTime:``)+(e.mkiValue&&e.mkiLength?`|`+e.mkiValue+`:`+e.mkiLength:``)},n.getCryptoParameters=function(e,t){return n.matchPrefix(e+t,`a=crypto:`).map(n.parseCryptoLine)},n.getIceParameters=function(e,t){var r=n.matchPrefix(e+t,`a=ice-ufrag:`)[0],i=n.matchPrefix(e+t,`a=ice-pwd:`)[0];return r&&i?{usernameFragment:r.substr(12),password:i.substr(10)}:null},n.writeIceParameters=function(e){return`a=ice-ufrag:`+e.usernameFragment+`\r +a=ice-pwd:`+e.password+`\r +`},n.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=n.splitLines(e)[0].split(` `),i=3;i0?`9`:`0`,r+=` UDP/TLS/RTP/SAVPF `,r+=t.codecs.map(function(e){return e.preferredPayloadType===void 0?e.payloadType:e.preferredPayloadType}).join(` `)+`\r +`,r+=`c=IN IP4 0.0.0.0\r +`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r +`,t.codecs.forEach(function(e){r+=n.writeRtpMap(e),r+=n.writeFmtp(e),r+=n.writeRtcpFb(e)});var i=0;return t.codecs.forEach(function(e){e.maxptime>i&&(i=e.maxptime)}),i>0&&(r+=`a=maxptime:`+i+`\r +`),r+=`a=rtcp-mux\r +`,t.headerExtensions&&t.headerExtensions.forEach(function(e){r+=n.writeExtmap(e)}),r},n.parseRtpEncodingParameters=function(e){var t=[],r=n.parseRtpParameters(e),i=r.fecMechanisms.indexOf(`RED`)!==-1,a=r.fecMechanisms.indexOf(`ULPFEC`)!==-1,o=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`cname`}),s=o.length>0&&o[0].ssrc,c,l=n.matchPrefix(e,`a=ssrc-group:FID`).map(function(e){return e.substr(17).split(` `).map(function(e){return parseInt(e,10)})});l.length>0&&l[0].length>1&&l[0][0]===s&&(c=l[0][1]),r.codecs.forEach(function(e){if(e.name.toUpperCase()===`RTX`&&e.parameters.apt){var n={ssrc:s,codecPayloadType:parseInt(e.parameters.apt,10)};s&&c&&(n.rtx={ssrc:c}),t.push(n),i&&(n=JSON.parse(JSON.stringify(n)),n.fec={ssrc:s,mechanism:a?`red+ulpfec`:`red`},t.push(n))}}),t.length===0&&s&&t.push({ssrc:s});var u=n.matchPrefix(e,`b=`);return u.length&&(u=u[0].indexOf(`b=TIAS:`)===0?parseInt(u[0].substr(7),10):u[0].indexOf(`b=AS:`)===0?parseInt(u[0].substr(5),10)*1e3*.95-2e3*8:void 0,t.forEach(function(e){e.maxBitrate=u})),t},n.parseRtcpParameters=function(e){var t={},r=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`cname`})[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);var i=n.matchPrefix(e,`a=rtcp-rsize`);return t.reducedSize=i.length>0,t.compound=i.length===0,t.mux=n.matchPrefix(e,`a=rtcp-mux`).length>0,t},n.parseMsid=function(e){var t,r=n.matchPrefix(e,`a=msid:`);if(r.length===1)return t=r[0].substr(7).split(` `),{stream:t[0],track:t[1]};var i=n.matchPrefix(e,`a=ssrc:`).map(function(e){return n.parseSsrcMedia(e)}).filter(function(e){return e.attribute===`msid`});if(i.length>0)return t=i[0].value.split(` `),{stream:t[0],track:t[1]}},n.parseSctpDescription=function(e){var t=n.parseMLine(e),r=n.matchPrefix(e,`a=max-message-size:`),i;r.length>0&&(i=parseInt(r[0].substr(19),10)),isNaN(i)&&(i=65536);var a=n.matchPrefix(e,`a=sctp-port:`);if(a.length>0)return{port:parseInt(a[0].substr(12),10),protocol:t.fmt,maxMessageSize:i};if(n.matchPrefix(e,`a=sctpmap:`).length>0){var o=n.matchPrefix(e,`a=sctpmap:`)[0].substr(10).split(` `);return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:i}}},n.writeSctpDescription=function(e,t){var n=[];return n=e.protocol===`DTLS/SCTP`?[`m=`+e.kind+` 9 `+e.protocol+` `+t.port+`\r +`,`c=IN IP4 0.0.0.0\r +`,`a=sctpmap:`+t.port+` `+t.protocol+` 65535\r +`]:[`m=`+e.kind+` 9 `+e.protocol+` `+t.protocol+`\r +`,`c=IN IP4 0.0.0.0\r +`,`a=sctp-port:`+t.port+`\r +`],t.maxMessageSize!==void 0&&n.push(`a=max-message-size:`+t.maxMessageSize+`\r +`),n.join(``)},n.generateSessionId=function(){return Math.random().toString().substr(2,21)},n.writeSessionBoilerplate=function(e,t,r){var i,a=t===void 0?2:t;return i=e||n.generateSessionId(),`v=0\r +o=`+(r||`thisisadapterortc`)+` `+i+` `+a+` IN IP4 127.0.0.1\r +s=-\r +t=0 0\r +`},n.writeMediaSection=function(e,t,r,i){var a=n.writeRtpDescription(e.kind,t);if(a+=n.writeIceParameters(e.iceGatherer.getLocalParameters()),a+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r===`offer`?`actpass`:`active`),a+=`a=mid:`+e.mid+`\r +`,e.direction?a+=`a=`+e.direction+`\r +`:e.rtpSender&&e.rtpReceiver?a+=`a=sendrecv\r +`:e.rtpSender?a+=`a=sendonly\r +`:e.rtpReceiver?a+=`a=recvonly\r +`:a+=`a=inactive\r +`,e.rtpSender){var o=`msid:`+i.id+` `+e.rtpSender.track.id+`\r +`;a+=`a=`+o,a+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` `+o,e.sendEncodingParameters[0].rtx&&(a+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` `+o,a+=`a=ssrc-group:FID `+e.sendEncodingParameters[0].ssrc+` `+e.sendEncodingParameters[0].rtx.ssrc+`\r +`)}return a+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` cname:`+n.localCName+`\r +`,e.rtpSender&&e.sendEncodingParameters[0].rtx&&(a+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` cname:`+n.localCName+`\r +`),a},n.getDirection=function(e,t){for(var r=n.splitLines(e),i=0;i{var n=re();function r(e){return{inboundrtp:`inbound-rtp`,outboundrtp:`outbound-rtp`,candidatepair:`candidate-pair`,localcandidate:`local-candidate`,remotecandidate:`remote-candidate`}[e.type]||e.type}function i(e,t,r,i,a){var o=n.writeRtpDescription(e.kind,t);if(o+=n.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=n.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),r===`offer`?`actpass`:a||`active`),o+=`a=mid:`+e.mid+`\r +`,e.rtpSender&&e.rtpReceiver?o+=`a=sendrecv\r +`:e.rtpSender?o+=`a=sendonly\r +`:e.rtpReceiver?o+=`a=recvonly\r +`:o+=`a=inactive\r +`,e.rtpSender){var s=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=s;var c=`msid:`+(i?i.id:`-`)+` `+s+`\r +`;o+=`a=`+c,o+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` `+c,e.sendEncodingParameters[0].rtx&&(o+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` `+c,o+=`a=ssrc-group:FID `+e.sendEncodingParameters[0].ssrc+` `+e.sendEncodingParameters[0].rtx.ssrc+`\r +`)}return o+=`a=ssrc:`+e.sendEncodingParameters[0].ssrc+` cname:`+n.localCName+`\r +`,e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+=`a=ssrc:`+e.sendEncodingParameters[0].rtx.ssrc+` cname:`+n.localCName+`\r +`),o}function a(e,t){var n=!1;return e=JSON.parse(JSON.stringify(e)),e.filter(function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&!e.urls&&console.warn(`RTCIceServer.url is deprecated! Use urls instead.`);var i=typeof r==`string`;return i&&(r=[r]),r=r.filter(function(e){return e.indexOf(`turn:`)===0&&e.indexOf(`transport=udp`)!==-1&&e.indexOf(`turn:[`)===-1&&!n?(n=!0,!0):e.indexOf(`stun:`)===0&&t>=14393&&e.indexOf(`?transport=udp`)===-1}),delete e.url,e.urls=i?r[0]:r,!!r.length}})}function o(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n0;s--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=n.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(p.prototype,`localDescription`,{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(p.prototype,`remoteDescription`,{configurable:!0,get:function(){return this._remoteDescription}}),p.prototype.onicecandidate=null,p.prototype.onaddstream=null,p.prototype.ontrack=null,p.prototype.onremovestream=null,p.prototype.onsignalingstatechange=null,p.prototype.oniceconnectionstatechange=null,p.prototype.onconnectionstatechange=null,p.prototype.onicegatheringstatechange=null,p.prototype.onnegotiationneeded=null,p.prototype.ondatachannel=null,p.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),typeof this[`on`+e]==`function`&&this[`on`+e](t))},p.prototype._emitGatheringStateChange=function(){var e=new Event(`icegatheringstatechange`);this._dispatchEvent(`icegatheringstatechange`,e)},p.prototype.getConfiguration=function(){return this._config},p.prototype.getLocalStreams=function(){return this.localStreams},p.prototype.getRemoteStreams=function(){return this.remoteStreams},p.prototype._createTransceiver=function(e,t){var n=this.transceivers.length>0,r={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&n)r.iceTransport=this.transceivers[0].iceTransport,r.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();r.iceTransport=i.iceTransport,r.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(r),r},p.prototype.addTrack=function(t,n){if(this._isClosed)throw l(`InvalidStateError`,`Attempted to call addTrack on a closed peerconnection.`);if(this.transceivers.find(function(e){return e.track===t}))throw l(`InvalidAccessError`,`Track already exists.`);for(var r,i=0;i=15025)e.getTracks().forEach(function(t){n.addTrack(t,e)});else{var r=e.clone();e.getTracks().forEach(function(e,t){var n=r.getTracks()[t];e.addEventListener(`enabled`,function(e){n.enabled=e.enabled})}),r.getTracks().forEach(function(e){n.addTrack(e,r)})}},p.prototype.removeTrack=function(t){if(this._isClosed)throw l(`InvalidStateError`,`Attempted to call removeTrack on a closed peerconnection.`);if(!(t instanceof e.RTCRtpSender))throw TypeError(`Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.`);var n=this.transceivers.find(function(e){return e.rtpSender===t});if(!n)throw l(`InvalidAccessError`,`Sender was not created by this connection.`);var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,this.transceivers.map(function(e){return e.stream}).indexOf(r)===-1&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},p.prototype.removeStream=function(e){var t=this;e.getTracks().forEach(function(e){var n=t.getSenders().find(function(t){return t.track===e});n&&t.removeTrack(n)})},p.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})},p.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})},p.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,`state`,{value:`new`,writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){i.state=!e.candidate||Object.keys(e.candidate).length===0?`completed`:`gathering`,r.transceivers[t].bufferedCandidateEvents!==null&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener(`localcandidate`,this.transceivers[t].bufferCandidates),i},p.prototype._gather=function(t,r){var i=this,a=this.transceivers[r].iceGatherer;if(!a.onlocalcandidate){var o=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,a.removeEventListener(`localcandidate`,this.transceivers[r].bufferCandidates),a.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var o=new Event(`icecandidate`);o.candidate={sdpMid:t,sdpMLineIndex:r};var s=e.candidate,c=!s||Object.keys(s).length===0;if(c)(a.state===`new`||a.state===`gathering`)&&(a.state=`completed`);else{a.state===`new`&&(a.state=`gathering`),s.component=1,s.ufrag=a.getLocalParameters().usernameFragment;var l=n.writeCandidate(s);o.candidate=Object.assign(o.candidate,n.parseCandidate(l)),o.candidate.candidate=l,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var u=n.getMediaSections(i._localDescription.sdp);c?u[o.candidate.sdpMLineIndex]+=`a=end-of-candidates\r +`:u[o.candidate.sdpMLineIndex]+=`a=`+o.candidate.candidate+`\r +`,i._localDescription.sdp=n.getDescription(i._localDescription.sdp)+u.join(``);var d=i.transceivers.every(function(e){return e.iceGatherer&&e.iceGatherer.state===`completed`});i.iceGatheringState!==`gathering`&&(i.iceGatheringState=`gathering`,i._emitGatheringStateChange()),c||i._dispatchEvent(`icecandidate`,o),d&&(i._dispatchEvent(`icecandidate`,new Event(`icecandidate`)),i.iceGatheringState=`complete`,i._emitGatheringStateChange())}},e.setTimeout(function(){o.forEach(function(e){a.onlocalcandidate(e)})},0)}},p.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,`state`,{value:`failed`,writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},p.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},p.prototype._transceive=function(e,r,i){var a=o(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(a.encodings=e.sendEncodingParameters,a.rtcp={cname:n.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(a.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(a)),i&&e.rtpReceiver&&a.codecs.length>0&&(e.kind===`video`&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach(function(e){delete e.rtx}),e.recvEncodingParameters.length?a.encodings=e.recvEncodingParameters:a.encodings=[{}],a.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(a.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(a.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(a))},p.prototype.setLocalDescription=function(e){var t=this;if([`offer`,`answer`].indexOf(e.type)===-1)return Promise.reject(l(`TypeError`,`Unsupported type "`+e.type+`"`));if(!s(`setLocalDescription`,e.type,t.signalingState)||t._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not set local `+e.type+` in state `+t.signalingState));var r,i;if(e.type===`offer`)r=n.splitSections(e.sdp),i=r.shift(),r.forEach(function(e,r){var i=n.parseRtpParameters(e);t.transceivers[r].localCapabilities=i}),t.transceivers.forEach(function(e,n){t._gather(e.mid,n)});else if(e.type===`answer`){r=n.splitSections(t._remoteDescription.sdp),i=r.shift();var a=n.matchPrefix(i,`a=ice-lite`).length>0;r.forEach(function(e,r){var s=t.transceivers[r],c=s.iceGatherer,l=s.iceTransport,u=s.dtlsTransport,d=s.localCapabilities,f=s.remoteCapabilities;if(!(n.isRejected(e)&&n.matchPrefix(e,`a=bundle-only`).length===0)&&!s.rejected){var p=n.getIceParameters(e,i),m=n.getDtlsParameters(e,i);a&&(m.role=`server`),(!t.usingBundle||r===0)&&(t._gather(s.mid,r),l.state===`new`&&l.start(c,p,a?`controlling`:`controlled`),u.state===`new`&&u.start(m));var h=o(d,f);t._transceive(s,h.codecs.length>0,!1)}})}return t._localDescription={type:e.type,sdp:e.sdp},e.type===`offer`?t._updateSignalingState(`have-local-offer`):t._updateSignalingState(`stable`),Promise.resolve()},p.prototype.setRemoteDescription=function(r){var i=this;if([`offer`,`answer`].indexOf(r.type)===-1)return Promise.reject(l(`TypeError`,`Unsupported type "`+r.type+`"`));if(!s(`setRemoteDescription`,r.type,i.signalingState)||i._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not set remote `+r.type+` in state `+i.signalingState));var a={};i.remoteStreams.forEach(function(e){a[e.id]=e});var p=[],m=n.splitSections(r.sdp),h=m.shift(),ee=n.matchPrefix(h,`a=ice-lite`).length>0,g=n.matchPrefix(h,`a=group:BUNDLE `).length>0;i.usingBundle=g;var _=n.matchPrefix(h,`a=ice-options:`)[0];return _?i.canTrickleIceCandidates=_.substr(14).split(` `).indexOf(`trickle`)>=0:i.canTrickleIceCandidates=!1,m.forEach(function(s,l){var f=n.splitLines(s),m=n.getKind(s),_=n.isRejected(s)&&n.matchPrefix(s,`a=bundle-only`).length===0,v=f[0].substr(2).split(` `)[2],y=n.getDirection(s,h),b=n.parseMsid(s),te=n.getMid(s)||n.generateIdentifier();if(_||m===`application`&&(v===`DTLS/SCTP`||v===`UDP/DTLS/SCTP`)){i.transceivers[l]={mid:te,kind:m,protocol:v,rejected:!0};return}!_&&i.transceivers[l]&&i.transceivers[l].rejected&&(i.transceivers[l]=i._createTransceiver(m,!0));var x,ne,S,C,w,T,E,D,O,re=n.parseRtpParameters(s),ie,k;_||(ie=n.getIceParameters(s,h),k=n.getDtlsParameters(s,h),k.role=`client`),E=n.parseRtpEncodingParameters(s);var ae=n.parseRtcpParameters(s),oe=n.matchPrefix(s,`a=end-of-candidates`,h).length>0,A=n.matchPrefix(s,`a=candidate:`).map(function(e){return n.parseCandidate(e)}).filter(function(e){return e.component===1});if((r.type===`offer`||r.type===`answer`)&&!_&&g&&l>0&&i.transceivers[l]&&(i._disposeIceAndDtlsTransports(l),i.transceivers[l].iceGatherer=i.transceivers[0].iceGatherer,i.transceivers[l].iceTransport=i.transceivers[0].iceTransport,i.transceivers[l].dtlsTransport=i.transceivers[0].dtlsTransport,i.transceivers[l].rtpSender&&i.transceivers[l].rtpSender.setTransport(i.transceivers[0].dtlsTransport),i.transceivers[l].rtpReceiver&&i.transceivers[l].rtpReceiver.setTransport(i.transceivers[0].dtlsTransport)),r.type===`offer`&&!_){x=i.transceivers[l]||i._createTransceiver(m),x.mid=te,x.iceGatherer||=i._createIceGatherer(l,g),A.length&&x.iceTransport.state===`new`&&(oe&&(!g||l===0)?x.iceTransport.setRemoteCandidates(A):A.forEach(function(e){c(x.iceTransport,e)})),D=e.RTCRtpReceiver.getCapabilities(m),t<15019&&(D.codecs=D.codecs.filter(function(e){return e.name!==`rtx`})),T=x.sendEncodingParameters||[{ssrc:(2*l+2)*1001}];var j=!1;if(y===`sendrecv`||y===`sendonly`){if(j=!x.rtpReceiver,w=x.rtpReceiver||new e.RTCRtpReceiver(x.dtlsTransport,m),j){var M;O=w.track,b&&b.stream===`-`||(b?(a[b.stream]||(a[b.stream]=new e.MediaStream,Object.defineProperty(a[b.stream],`id`,{get:function(){return b.stream}})),Object.defineProperty(O,`id`,{get:function(){return b.track}}),M=a[b.stream]):(a.default||=new e.MediaStream,M=a.default)),M&&(u(O,M),x.associatedRemoteMediaStreams.push(M)),p.push([O,w,M])}}else x.rtpReceiver&&x.rtpReceiver.track&&(x.associatedRemoteMediaStreams.forEach(function(e){var t=e.getTracks().find(function(e){return e.id===x.rtpReceiver.track.id});t&&d(t,e)}),x.associatedRemoteMediaStreams=[]);x.localCapabilities=D,x.remoteCapabilities=re,x.rtpReceiver=w,x.rtcpParameters=ae,x.sendEncodingParameters=T,x.recvEncodingParameters=E,i._transceive(i.transceivers[l],!1,j)}else r.type===`answer`&&!_&&(x=i.transceivers[l],ne=x.iceGatherer,S=x.iceTransport,C=x.dtlsTransport,w=x.rtpReceiver,T=x.sendEncodingParameters,D=x.localCapabilities,i.transceivers[l].recvEncodingParameters=E,i.transceivers[l].remoteCapabilities=re,i.transceivers[l].rtcpParameters=ae,A.length&&S.state===`new`&&((ee||oe)&&(!g||l===0)?S.setRemoteCandidates(A):A.forEach(function(e){c(x.iceTransport,e)})),(!g||l===0)&&(S.state===`new`&&S.start(ne,ie,`controlling`),C.state===`new`&&C.start(k)),!o(x.localCapabilities,x.remoteCapabilities).codecs.filter(function(e){return e.name.toLowerCase()===`rtx`}).length&&x.sendEncodingParameters[0].rtx&&delete x.sendEncodingParameters[0].rtx,i._transceive(x,y===`sendrecv`||y===`recvonly`,y===`sendrecv`||y===`sendonly`),w&&(y===`sendrecv`||y===`sendonly`)?(O=w.track,b?(a[b.stream]||(a[b.stream]=new e.MediaStream),u(O,a[b.stream]),p.push([O,w,a[b.stream]])):(a.default||=new e.MediaStream,u(O,a.default),p.push([O,w,a.default]))):delete x.rtpReceiver)}),i._dtlsRole===void 0&&(i._dtlsRole=r.type===`offer`?`active`:`passive`),i._remoteDescription={type:r.type,sdp:r.sdp},r.type===`offer`?i._updateSignalingState(`have-remote-offer`):i._updateSignalingState(`stable`),Object.keys(a).forEach(function(t){var n=a[t];if(n.getTracks().length){if(i.remoteStreams.indexOf(n)===-1){i.remoteStreams.push(n);var r=new Event(`addstream`);r.stream=n,e.setTimeout(function(){i._dispatchEvent(`addstream`,r)})}p.forEach(function(e){var t=e[0],r=e[1];n.id===e[2].id&&f(i,t,r,[n])})}}),p.forEach(function(e){e[2]||f(i,e[0],e[1],[])}),e.setTimeout(function(){i&&i.transceivers&&i.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.state===`new`&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn(`Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification`),e.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},p.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState(`closed`)},p.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event(`signalingstatechange`);this._dispatchEvent(`signalingstatechange`,t)},p.prototype._maybeFireNegotiationNeeded=function(){var t=this;this.signalingState!==`stable`||this.needNegotiation===!0||(this.needNegotiation=!0,e.setTimeout(function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event(`negotiationneeded`);t._dispatchEvent(`negotiationneeded`,e)}},0))},p.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++}),e=`new`,t.failed>0?e=`failed`:t.checking>0?e=`checking`:t.disconnected>0?e=`disconnected`:t.new>0?e=`new`:t.connected>0?e=`connected`:t.completed>0&&(e=`completed`),e!==this.iceConnectionState){this.iceConnectionState=e;var n=new Event(`iceconnectionstatechange`);this._dispatchEvent(`iceconnectionstatechange`,n)}},p.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)}),t.connected+=t.completed,e=`new`,t.failed>0?e=`failed`:t.connecting>0?e=`connecting`:t.disconnected>0?e=`disconnected`:t.new>0?e=`new`:t.connected>0&&(e=`connected`),e!==this.connectionState){this.connectionState=e;var n=new Event(`connectionstatechange`);this._dispatchEvent(`connectionstatechange`,n)}},p.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not call createOffer after close`));var a=r.transceivers.filter(function(e){return e.kind===`audio`}).length,o=r.transceivers.filter(function(e){return e.kind===`video`}).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw TypeError(`Legacy mandatory/optional constraints not supported.`);s.offerToReceiveAudio!==void 0&&(a=s.offerToReceiveAudio===!0?1:s.offerToReceiveAudio===!1?0:s.offerToReceiveAudio),s.offerToReceiveVideo!==void 0&&(o=s.offerToReceiveVideo===!0?1:s.offerToReceiveVideo===!1?0:s.offerToReceiveVideo)}for(r.transceivers.forEach(function(e){e.kind===`audio`?(a--,a<0&&(e.wantReceive=!1)):e.kind===`video`&&(o--,o<0&&(e.wantReceive=!1))});a>0||o>0;)a>0&&(r._createTransceiver(`audio`),a--),o>0&&(r._createTransceiver(`video`),o--);var c=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach(function(i,a){var o=i.track,s=i.kind;i.mid=i.mid||n.generateIdentifier(),i.iceGatherer||=r._createIceGatherer(a,r.usingBundle);var c=e.RTCRtpSender.getCapabilities(s);t<15019&&(c.codecs=c.codecs.filter(function(e){return e.name!==`rtx`})),c.codecs.forEach(function(e){e.name===`H264`&&e.parameters[`level-asymmetry-allowed`]===void 0&&(e.parameters[`level-asymmetry-allowed`]=`1`),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach(function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)})}),c.headerExtensions.forEach(function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach(function(t){e.uri===t.uri&&(e.id=t.id)})});var l=i.sendEncodingParameters||[{ssrc:(2*a+1)*1001}];o&&t>=15019&&s===`video`&&!l[0].rtx&&(l[0].rtx={ssrc:l[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=c,i.sendEncodingParameters=l}),r._config.bundlePolicy!==`max-compat`&&(c+=`a=group:BUNDLE `+r.transceivers.map(function(e){return e.mid}).join(` `)+`\r +`),c+=`a=ice-options:trickle\r +`,r.transceivers.forEach(function(e,t){c+=i(e,e.localCapabilities,`offer`,e.stream,r._dtlsRole),c+=`a=rtcp-rsize\r +`,e.iceGatherer&&r.iceGatheringState!==`new`&&(t===0||!r.usingBundle)&&(e.iceGatherer.getLocalCandidates().forEach(function(e){e.component=1,c+=`a=`+n.writeCandidate(e)+`\r +`}),e.iceGatherer.state===`completed`&&(c+=`a=end-of-candidates\r +`))});var u=new e.RTCSessionDescription({type:`offer`,sdp:c});return Promise.resolve(u)},p.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject(l(`InvalidStateError`,`Can not call createAnswer after close`));if(!(r.signalingState===`have-remote-offer`||r.signalingState===`have-local-pranswer`))return Promise.reject(l(`InvalidStateError`,`Can not call createAnswer in signalingState `+r.signalingState));var a=n.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(a+=`a=group:BUNDLE `+r.transceivers.map(function(e){return e.mid}).join(` `)+`\r +`),a+=`a=ice-options:trickle\r +`;var s=n.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach(function(e,n){if(!(n+1>s)){if(e.rejected){e.kind===`application`?e.protocol===`DTLS/SCTP`?a+=`m=application 0 DTLS/SCTP 5000\r +`:a+=`m=application 0 `+e.protocol+` webrtc-datachannel\r +`:e.kind===`audio`?a+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r +a=rtpmap:0 PCMU/8000\r +`:e.kind===`video`&&(a+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r +a=rtpmap:120 VP8/90000\r +`),a+=`c=IN IP4 0.0.0.0\r +a=inactive\r +a=mid:`+e.mid+`\r +`;return}if(e.stream){var c;e.kind===`audio`?c=e.stream.getAudioTracks()[0]:e.kind===`video`&&(c=e.stream.getVideoTracks()[0]),c&&t>=15019&&e.kind===`video`&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1})}var l=o(e.localCapabilities,e.remoteCapabilities);!l.codecs.filter(function(e){return e.name.toLowerCase()===`rtx`}).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,a+=i(e,l,`answer`,e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(a+=`a=rtcp-rsize\r +`)}});var c=new e.RTCSessionDescription({type:`answer`,sdp:a});return Promise.resolve(c)},p.prototype.addIceCandidate=function(e){var t=this,r;return e&&!(e.sdpMLineIndex!==void 0||e.sdpMid)?Promise.reject(TypeError(`sdpMLineIndex or sdpMid required`)):new Promise(function(i,a){if(!t._remoteDescription)return a(l(`InvalidStateError`,`Can not add ICE candidate without a remote description`));if(!e||e.candidate===``)for(var o=0;o0?n.parseCandidate(e.candidate):{};if(f.protocol===`tcp`&&(f.port===0||f.port===9)||f.component&&f.component!==1)return i();if((s===0||s>0&&d.iceTransport!==t.transceivers[0].iceTransport)&&!c(d.iceTransport,f))return a(l(`OperationError`,`Can not add ICE candidate`));var p=e.candidate.trim();p.indexOf(`a=`)===0&&(p=p.substr(2)),r=n.getMediaSections(t._remoteDescription.sdp),r[s]+=`a=`+(f.type?p:`end-of-candidates`)+`\r +`,t._remoteDescription.sdp=n.getDescription(t._remoteDescription.sdp)+r.join(``)}else return a(l(`OperationError`,`Can not add ICE candidate`))}i()})},p.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var n=null;if(this.transceivers.forEach(function(e){e.rtpSender&&e.rtpSender.track===t?n=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(n=e.rtpReceiver)}),!n)throw l(`InvalidAccessError`,`Invalid selector.`);return n.getStats()}var r=[];return this.transceivers.forEach(function(e){[`rtpSender`,`rtpReceiver`,`iceGatherer`,`iceTransport`,`dtlsTransport`].forEach(function(t){e[t]&&r.push(e[t].getStats())})}),Promise.all(r).then(function(e){var t=new Map;return e.forEach(function(e){e.forEach(function(e){t.set(e.id,e)})}),t})},[`RTCRtpSender`,`RTCRtpReceiver`,`RTCIceGatherer`,`RTCIceTransport`,`RTCDtlsTransport`].forEach(function(t){var n=e[t];if(n&&n.prototype&&n.prototype.getStats){var i=n.prototype.getStats;n.prototype.getStats=function(){return i.apply(this).then(function(e){var t=new Map;return Object.keys(e).forEach(function(n){e[n].type=r(e[n]),t.set(n,e[n])}),t})}}});var m=[`createOffer`,`createAnswer`];return m.forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[0]==`function`||typeof e[1]==`function`?t.apply(this,[arguments[2]]).then(function(t){typeof e[0]==`function`&&e[0].apply(null,[t])},function(t){typeof e[1]==`function`&&e[1].apply(null,[t])}):t.apply(this,arguments)}}),m=[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`],m.forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[1]==`function`||typeof e[2]==`function`?t.apply(this,arguments).then(function(){typeof e[1]==`function`&&e[1].apply(null)},function(t){typeof e[2]==`function`&&e[2].apply(null,[t])}):t.apply(this,arguments)}}),[`getStats`].forEach(function(e){var t=p.prototype[e];p.prototype[e]=function(){var e=arguments;return typeof e[1]==`function`?t.apply(this,arguments).then(function(){typeof e[1]==`function`&&e[1].apply(null)}):t.apply(this,arguments)}}),p}}))());function k(e){let t=e&&e.navigator,n=function(e){return{name:{PermissionDeniedError:`NotAllowedError`}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}},r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,`getUserMedia`)?.writable&&(t.mediaDevices.getUserMedia=function(e){return r(e).catch(e=>Promise.reject(n(e)))})}function ae(e){`getDisplayMedia`in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}var oe=e({shimGetDisplayMedia:()=>ae,shimGetUserMedia:()=>k,shimPeerConnection:()=>A,shimReplaceTrack:()=>j});function A(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||=function(e){return e},e.RTCSessionDescription||=function(e){return e},t.version<15025)){let t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,`enabled`);Object.defineProperty(e.MediaStreamTrack.prototype,`enabled`,{set(e){t.set.call(this,e);let n=new Event(`enabled`);n.enabled=e,this.dispatchEvent(n)}})}e.RTCRtpSender&&!(`dtmf`in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,`dtmf`,{get(){return this._dtmf===void 0&&(this.track.kind===`audio`?this._dtmf=new e.RTCDtmfSender(this):this.track.kind===`video`&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);let n=(0,ie.default)(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=O(e.iceServers,t.version),d(`ICE servers after filtering:`,e.iceServers)),new n(e)},e.RTCPeerConnection.prototype=n.prototype}function j(e){e.RTCRtpSender&&!(`replaceTrack`in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}function M(e,t){let n=e&&e.navigator,r=e&&e.MediaStreamTrack;if(n.getUserMedia=function(e,t,r){f(`navigator.getUserMedia`,`navigator.mediaDevices.getUserMedia`),n.mediaDevices.getUserMedia(e).then(t,r)},!(t.version>55&&`autoGainControl`in n.mediaDevices.getSupportedConstraints())){let e=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},t=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(Object.getOwnPropertyDescriptor(n.mediaDevices,`getUserMedia`)?.writable&&(n.mediaDevices.getUserMedia=function(n){return typeof n==`object`&&typeof n.audio==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n.audio,`autoGainControl`,`mozAutoGainControl`),e(n.audio,`noiseSuppression`,`mozNoiseSuppression`)),t(n)}),r&&r.prototype.getSettings){let t=r.prototype.getSettings;r.prototype.getSettings=function(){let n=t.apply(this,arguments);return e(n,`mozAutoGainControl`,`autoGainControl`),e(n,`mozNoiseSuppression`,`noiseSuppression`),n}}if(r&&r.prototype.applyConstraints){let t=r.prototype.applyConstraints;r.prototype.applyConstraints=function(n){return this.kind===`audio`&&typeof n==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n,`autoGainControl`,`mozAutoGainControl`),e(n,`noiseSuppression`,`mozNoiseSuppression`)),t.apply(this,[n])}}}}function se(e,t){e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){let e=new DOMException(`getDisplayMedia without video constraints is undefined`);return e.name=`NotFoundError`,e.code=8,Promise.reject(e)}return n.video===!0?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}var ce=e({shimAddTransceiver:()=>he,shimCreateAnswer:()=>ve,shimCreateOffer:()=>_e,shimGetDisplayMedia:()=>se,shimGetParameters:()=>ge,shimGetUserMedia:()=>M,shimOnTrack:()=>le,shimPeerConnection:()=>ue,shimRTCDataChannel:()=>me,shimReceiverGetStats:()=>fe,shimRemoveStream:()=>pe,shimSenderGetStats:()=>de});function le(e){typeof e==`object`&&e.RTCTrackEvent&&`receiver`in e.RTCTrackEvent.prototype&&!(`transceiver`in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,`transceiver`,{get(){return{receiver:this.receiver}}})}function ue(e,t){if(typeof e!=`object`||!(e.RTCPeerConnection||e.mozRTCPeerConnection))return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]});let n={inboundrtp:`inbound-rtp`,outboundrtp:`outbound-rtp`,candidatepair:`candidate-pair`,localcandidate:`local-candidate`,remotecandidate:`remote-candidate`},r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,i,a]=arguments;return r.apply(this,[e||null]).then(e=>{if(t.version<53&&!i)try{e.forEach(e=>{e.type=n[e.type]||e.type})}catch(t){if(t.name!==`TypeError`)throw t;e.forEach((t,r)=>{e.set(r,Object.assign({},t,{type:n[t.type]||t.type}))})}return e}).then(i,a)}}function de(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function fe(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),c(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function pe(e){!e.RTCPeerConnection||`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){f(`removeStream`,`removeTrack`),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function me(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function he(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1],n=e&&`sendEncodings`in e;n&&e.sendEncodings.forEach(e=>{if(`rid`in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError(`Invalid RID value provided.`);if(`scaleResolutionDownBy`in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError(`scale_resolution_down_by must be >= 1.0`);if(`maxFramerate`in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError(`max_framerate must be >= 0.0`)});let r=t.apply(this,arguments);if(n){let{sender:t}=r,n=t.getParameters();(!(`encodings`in n)||n.encodings.length===1&&Object.keys(n.encodings[0]).length===0)&&(n.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(n).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return r})}function ge(e){if(!(typeof e==`object`&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return`encodings`in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function _e(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function ve(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}var ye=e({shimAudioContext:()=>Oe,shimCallbacksAPI:()=>Se,shimConstraints:()=>we,shimCreateOfferLegacy:()=>De,shimGetUserMedia:()=>Ce,shimLocalStreamsAPI:()=>be,shimRTCIceServerUrls:()=>Te,shimRemoteStreamsAPI:()=>xe,shimTrackEventTransceiver:()=>Ee});function be(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)){if(`getLocalStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||=[],this._localStreams}),!(`addStream`in e.RTCPeerConnection.prototype)){let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||=[],this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(n=>t.call(this,n,e)),e.getVideoTracks().forEach(n=>t.call(this,n,e))},e.RTCPeerConnection.prototype.addTrack=function(e,...n){return n&&n.forEach(e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]}),t.apply(this,arguments)}}`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||=[];let t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);let n=e.getTracks();this.getSenders().forEach(e=>{n.includes(e.track)&&this.removeTrack(e)})})}}function xe(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)&&(`getRemoteStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!(`onaddstream`in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,`onaddstream`,{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener(`addstream`,this._onaddstream),this.removeEventListener(`track`,this._onaddstreampoly)),this.addEventListener(`addstream`,this._onaddstream=e),this.addEventListener(`track`,this._onaddstreampoly=e=>{e.streams.forEach(e=>{if(this._remoteStreams||=[],this._remoteStreams.includes(e))return;this._remoteStreams.push(e);let t=new Event(`addstream`);t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let e=this;return this._onaddstreampoly||this.addEventListener(`track`,this._onaddstreampoly=function(t){t.streams.forEach(t=>{if(e._remoteStreams||=[],e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);let n=new Event(`addstream`);n.stream=t,e.dispatchEvent(n)})}),t.apply(e,arguments)}}}function Se(e){if(typeof e!=`object`||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){let r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){let n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};let s=function(e,t,n){let r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=s,s=function(e,t,n){let r=a.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=s,s=function(e,t,n){let r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=s}function Ce(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,n=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>n(we(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t))}function we(e){return e&&e.video!==void 0?Object.assign({},e,{video:h(e.video)}):e}function Te(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){let t=[];for(let n=0;ne.receiver.track.kind===`audio`);e.offerToReceiveAudio===!1&&t?t.direction===`sendrecv`?t.setDirection?t.setDirection(`sendonly`):t.direction=`sendonly`:t.direction===`recvonly`&&(t.setDirection?t.setDirection(`inactive`):t.direction=`inactive`):e.offerToReceiveAudio===!0&&!t&&this.addTransceiver(`audio`),e.offerToReceiveVideo!==void 0&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);let n=this.getTransceivers().find(e=>e.receiver.track.kind===`video`);e.offerToReceiveVideo===!1&&n?n.direction===`sendrecv`?n.setDirection?n.setDirection(`sendonly`):n.direction=`sendonly`:n.direction===`recvonly`&&(n.setDirection?n.setDirection(`inactive`):n.direction=`inactive`):e.offerToReceiveVideo===!0&&!n&&this.addTransceiver(`video`)}return t.apply(this,arguments)}}function Oe(e){typeof e!=`object`||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var ke=e({removeExtmapAllowMixed:()=>Ne,shimAddIceCandidateNullOrEmpty:()=>Pe,shimConnectionState:()=>Me,shimMaxMessageSize:()=>N,shimRTCIceCandidate:()=>je,shimSendThrowTypeError:()=>P}),Ae=t(re());function je(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&`foundation`in e.RTCIceCandidate.prototype)return;let t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if(typeof e==`object`&&e.candidate&&e.candidate.indexOf(`a=`)===0&&(e=JSON.parse(JSON.stringify(e)),e.candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){let n=new t(e),r=Ae.default.parseCandidate(e.candidate),i=Object.assign(n,r);return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,c(e,`icecandidate`,t=>(t.candidate&&Object.defineProperty(t,`candidate`,{value:new e.RTCIceCandidate(t.candidate),writable:`false`}),t))}function N(e,t){if(!e.RTCPeerConnection)return;`sctp`in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,`sctp`,{get(){return this._sctp===void 0?null:this._sctp}});let n=function(e){if(!e||!e.sdp)return!1;let t=Ae.default.splitSections(e.sdp);return t.shift(),t.some(e=>{let t=Ae.default.parseMLine(e);return t&&t.kind===`application`&&t.protocol.indexOf(`SCTP`)!==-1})},r=function(e){let t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(t===null||t.length<2)return-1;let n=parseInt(t[1],10);return n===n?n:-1},i=function(e){let n=65536;return t.browser===`firefox`&&(n=t.version<57?e===-1?16384:2147483637:t.version<60?t.version===57?65535:65536:2147483637),n},a=function(e,n){let r=65536;t.browser===`firefox`&&t.version===57&&(r=65535);let i=Ae.default.matchPrefix(e.sdp,`a=max-message-size:`);return i.length>0?r=parseInt(i[0].substr(19),10):t.browser===`firefox`&&n!==-1&&(r=2147483637),r},o=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,t.browser===`chrome`&&t.version>=76){let{sdpSemantics:e}=this.getConfiguration();e===`plan-b`&&Object.defineProperty(this,`sctp`,{get(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(n(arguments[0])){let e=r(arguments[0]),t=i(e),n=a(arguments[0],e),o;o=t===0&&n===0?1/0:t===0||n===0?Math.max(t,n):Math.min(t,n);let s={};Object.defineProperty(s,`maxMessageSize`,{get(){return o}}),this._sctp=s}return o.apply(this,arguments)}}function P(e){if(!(e.RTCPeerConnection&&`createDataChannel`in e.RTCPeerConnection.prototype))return;function t(e,t){let n=e.send;e.send=function(){let r=arguments[0],i=r.length||r.size||r.byteLength;if(e.readyState===`open`&&t.sctp&&i>t.sctp.maxMessageSize)throw TypeError(`Message too large (can send a maximum of `+t.sctp.maxMessageSize+` bytes)`);return n.apply(e,arguments)}}let n=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){let e=n.apply(this,arguments);return t(e,this),e},c(e,`datachannel`,e=>(t(e.channel,e.target),e))}function Me(e){if(!e.RTCPeerConnection||`connectionState`in e.RTCPeerConnection.prototype)return;let t=e.RTCPeerConnection.prototype;Object.defineProperty(t,`connectionState`,{get(){return{completed:`connected`,checking:`connecting`}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,`onconnectionstatechange`,{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener(`connectionstatechange`,this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener(`connectionstatechange`,this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),[`setLocalDescription`,`setRemoteDescription`].forEach(e=>{let n=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{let t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;let n=new Event(`connectionstatechange`,e);t.dispatchEvent(n)}return e},this.addEventListener(`iceconnectionstatechange`,this._connectionstatechangepoly)),n.apply(this,arguments)}})}function Ne(e,t){if(!e.RTCPeerConnection||t.browser===`chrome`&&t.version>=71||t.browser===`safari`&&t.version>=605)return;let n=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&t.sdp.indexOf(` +a=extmap-allow-mixed`)!==-1){let n=t.sdp.split(` +`).filter(e=>e.trim()!==`a=extmap-allow-mixed`).join(` +`);e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return n.apply(this,arguments)}}function Pe(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let n=e.RTCPeerConnection.prototype.addIceCandidate;!n||n.length===0||(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(t.browser===`chrome`&&t.version<78||t.browser===`firefox`&&t.version<68||t.browser===`safari`)&&arguments[0]&&arguments[0].candidate===``?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Fe({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){let n=d,r=p(e),i={browserDetails:r,commonShim:ke,extractVersion:s,disableLog:l,disableWarnings:u};switch(r.browser){case`chrome`:if(!b||!E||!t.shimChrome)return n(`Chrome shim is not included in this adapter release.`),i;if(r.version===null)return n(`Chrome shim can not determine version, not shimming.`),i;n(`adapter.js shimming chrome.`),i.browserShim=b,Pe(e,r),v(e,r),te(e,r),E(e,r),x(e,r),T(e,r),ne(e,r),S(e,r),C(e,r),D(e,r),je(e,r),Me(e,r),N(e,r),P(e,r),Ne(e,r);break;case`firefox`:if(!ce||!ue||!t.shimFirefox)return n(`Firefox shim is not included in this adapter release.`),i;n(`adapter.js shimming firefox.`),i.browserShim=ce,Pe(e,r),M(e,r),ue(e,r),le(e,r),pe(e,r),de(e,r),fe(e,r),me(e,r),he(e,r),ge(e,r),_e(e,r),ve(e,r),je(e,r),Me(e,r),N(e,r),P(e,r);break;case`edge`:if(!oe||!A||!t.shimEdge)return n(`MS edge shim is not included in this adapter release.`),i;n(`adapter.js shimming edge.`),i.browserShim=oe,k(e,r),ae(e,r),A(e,r),j(e,r),N(e,r),P(e,r);break;case`safari`:if(!ye||!t.shimSafari)return n(`Safari shim is not included in this adapter release.`),i;n(`adapter.js shimming safari.`),i.browserShim=ye,Pe(e,r),Te(e,r),De(e,r),Se(e,r),be(e,r),xe(e,r),Ee(e,r),Ce(e,r),Oe(e,r),je(e,r),N(e,r),P(e,r),Ne(e,r);break;default:n(`Unsupported browser!`);break}return i}var Ie=Fe({window:typeof window>`u`?void 0:window}),Le=e({Peer:()=>Tt,default:()=>Et,util:()=>L});function F(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}var Re=Ie.default||Ie,I=new(function(){function e(){this.isIOS=[`iPad`,`iPhone`,`iPod`].includes(navigator.platform),this.supportedBrowsers=[`firefox`,`chrome`,`safari`],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return e.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<`u`},e.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion();return this.supportedBrowsers.includes(e)?e===`chrome`?t>=this.minChromeVersion:e===`firefox`?t>=this.minFirefoxVersion:e===`safari`?!this.isIOS&&t>=this.minSafariVersion:!1:!1},e.prototype.getBrowser=function(){return Re.browserDetails.browser},e.prototype.getVersion=function(){return Re.browserDetails.version||0},e.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=Re.browserDetails.version||0;if(e===`chrome`&&t=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!(`currentDirection`in RTCRtpTransceiver.prototype))return!1;var n,r=!1;try{n=new RTCPeerConnection,n.addTransceiver(`audio`),r=!0}catch{}finally{n&&n.close()}return r},e.prototype.toString=function(){return`Supports: + browser:${this.getBrowser()} + version:${this.getVersion()} + isIOS:${this.isIOS} + isWebRTCSupported:${this.isWebRTCSupported()} + isBrowserSupported:${this.isBrowserSupported()} + isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`},e}()),ze={iceServers:[{urls:`stun:stun.l.google.com:19302`},{urls:[`turn:eu-0.turn.peerjs.com:3478`,`turn:us-0.turn.peerjs.com:3478`],username:`peerjs`,credential:`peerjsp`}],sdpSemantics:`unified-plan`},L=new(function(){function e(){this.CLOUD_HOST=`0.peerjs.com`,this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=ze,this.browser=I.getBrowser(),this.browserVersion=I.getVersion(),this.supports=function(){var e={browser:I.isBrowserSupported(),webRTC:I.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(ze),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel(`_PEERJSTEST`,{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType=`blob`,e.binaryBlob=!I.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e}(),this.pack=i.default.pack,this.unpack=i.default.unpack,this._dataCount=1}return e.prototype.noop=function(){},e.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},e.prototype.chunk=function(e){for(var t=[],n=e.size,r=Math.ceil(n/L.chunkedMTU),i=0,a=0;aTt,e=>Tt=e);var R={},Ve=Object.prototype.hasOwnProperty,z=`~`;function B(){}Object.create&&(B.prototype=Object.create(null),new B().__proto__||(z=!1));function He(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function Ue(e,t,n,r,i){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var a=new He(n,r||e,i),o=z?z+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function We(e,t){--e._eventsCount===0?e._events=new B:delete e._events[t]}function V(){this._events=new B,this._eventsCount=0}V.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)Ve.call(t,n)&&e.push(z?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},V.prototype.listeners=function(e){var t=z?z+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=Array(i);rG,e=>G=e),F(H,`default`,()=>Ke,e=>Ke=e);var U=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a},W=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r=G.All&&this._print.apply(this,W([G.All],U(e),!1))},e.prototype.warn=function(){var e=[...arguments];this._logLevel>=G.Warnings&&this._print.apply(this,W([G.Warnings],U(e),!1))},e.prototype.error=function(){var e=[...arguments];this._logLevel>=G.Errors&&this._print.apply(this,W([G.Errors],U(e),!1))},e.prototype.setLogFunction=function(e){this._print=e},e.prototype._print=function(e){var t=[...arguments].slice(1),n=W([Ge],U(t),!1);for(var r in n)n[r]instanceof Error&&(n[r]=`(`+n[r].name+`) `+n[r].message);e>=G.All?console.log.apply(console,W([],U(n),!1)):e>=G.Warnings?console.warn.apply(console,W([`WARNING`],U(n),!1)):e>=G.Errors&&console.error.apply(console,W([`ERROR`],U(n),!1))},e}()),qe={};F(qe,`Socket`,()=>$e,e=>$e=e);var K;(function(e){e.Data=`data`,e.Media=`media`})(K||={});var q;(function(e){e.BrowserIncompatible=`browser-incompatible`,e.Disconnected=`disconnected`,e.InvalidID=`invalid-id`,e.InvalidKey=`invalid-key`,e.Network=`network`,e.PeerUnavailable=`peer-unavailable`,e.SslUnavailable=`ssl-unavailable`,e.ServerError=`server-error`,e.SocketError=`socket-error`,e.SocketClosed=`socket-closed`,e.UnavailableID=`unavailable-id`,e.WebRTC=`webrtc`})(q||={});var J;(function(e){e.Binary=`binary`,e.BinaryUTF8=`binary-utf8`,e.JSON=`json`})(J||={});var Y;(function(e){e.Message=`message`,e.Disconnected=`disconnected`,e.Error=`error`,e.Close=`close`})(Y||={});var X;(function(e){e.Heartbeat=`HEARTBEAT`,e.Candidate=`CANDIDATE`,e.Offer=`OFFER`,e.Answer=`ANSWER`,e.Open=`OPEN`,e.Error=`ERROR`,e.IdTaken=`ID-TAKEN`,e.InvalidKey=`INVALID-KEY`,e.Leave=`LEAVE`,e.Expire=`EXPIRE`})(X||={});var Je={};Je=JSON.parse(`{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu ","afrokick ","ericz ","Jairo ","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana ","Carlos Caballero ","hc ","Muhammad Asif ","PrashoonB ","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski ","lmb ","Jairooo ","Moritz Stückler ","Simon ","Denis Lukov ","Philipp Hancke ","Hans Oksendahl ","Jess ","khankuan ","DUODVK ","XiZhao ","Matthias Lohr ","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt ","Chris Cowan ","Alex Chuev ","alxnull ","Yemel Jardi ","Ben Parnell ","Benny Lichtner ","fresheneesz ","bob.barstead@exaptive.com ","chandika ","emersion ","Christopher Van ","eddieherm ","Eduardo Pinho ","Evandro Zanatta ","Gardner Bickford ","Gian Luca ","PatrickJS ","jonnyf ","Hizkia Felix ","Hristo Oskov ","Isaac Madwed ","Ilya Konanykhin ","jasonbarry ","Jonathan Burke ","Josh Hamit ","Jordan Austin ","Joel Wetzell ","xizhao ","Alberto Torres ","Jonathan Mayol ","Jefferson Felix ","Rolf Erik Lekang ","Kevin Mai-Husan Chia ","Pepijn de Vos ","JooYoung ","Tobias Speicher ","Steve Blaurock ","Kyrylo Shegeda ","Diwank Singh Tomer ","Sören Balko ","Arpit Solanki ","Yuki Ito ","Artur Zayats "],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}`);var Ye=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Xe=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a},Ze=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},$e=function(e){Ye(t,e);function t(t,n,r,i,a,o){o===void 0&&(o=5e3);var s=e.call(this)||this;return s.pingInterval=o,s._disconnected=!0,s._messagesQueue=[],s._baseUrl=(t?`wss://`:`ws://`)+n+`:`+r+i+`peerjs?key=`+a,s}return t.prototype.start=function(e,t){var n=this;this._id=e;var r=`${this._baseUrl}&id=${e}&token=${t}`;this._socket||!this._disconnected||(this._socket=new WebSocket(r+`&version=`+Je.version),this._disconnected=!1,this._socket.onmessage=function(e){var t;try{t=JSON.parse(e.data),H.default.log(`Server message received:`,t)}catch{H.default.log(`Invalid server message`,e.data);return}n.emit(Y.Message,t)},this._socket.onclose=function(e){n._disconnected||(H.default.log(`Socket closed.`,e),n._cleanup(),n._disconnected=!0,n.emit(Y.Disconnected))},this._socket.onopen=function(){n._disconnected||(n._sendQueuedMessages(),H.default.log(`Socket open`),n._scheduleHeartbeat())})},t.prototype._scheduleHeartbeat=function(){var e=this;this._wsPingTimer=setTimeout(function(){e._sendHeartbeat()},this.pingInterval)},t.prototype._sendHeartbeat=function(){if(!this._wsOpen()){H.default.log(`Cannot send heartbeat, because socket closed`);return}var e=JSON.stringify({type:X.Heartbeat});this._socket.send(e),this._scheduleHeartbeat()},t.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},t.prototype._sendQueuedMessages=function(){var e,t,n=Ze([],Xe(this._messagesQueue),!1);this._messagesQueue=[];try{for(var r=Qe(n),i=r.next();!i.done;i=r.next()){var a=i.value;this.send(a)}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype.send=function(e){if(!this._disconnected){if(!this._id){this._messagesQueue.push(e);return}if(!e.type){this.emit(Y.Error,`Invalid message`);return}if(this._wsOpen()){var t=JSON.stringify(e);this._socket.send(t)}}},t.prototype.close=function(){this._disconnected||=(this._cleanup(),!0)},t.prototype._cleanup=function(){this._socket&&=(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),void 0),clearTimeout(this._wsPingTimer)},t}(R.EventEmitter),et={};F(et,`MediaConnection`,()=>dt,e=>dt=e);var tt={};F(tt,`Negotiator`,()=>it,e=>it=e);var nt=function(){return nt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1]))&&(o[0]===6||o[0]===2)){n=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]st,e=>st=e);var ot=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),st=function(e){ot(t,e);function t(t,n,r){var i=e.call(this)||this;return i.peer=t,i.provider=n,i.options=r,i._open=!1,i.metadata=r.metadata,i}return Object.defineProperty(t.prototype,`open`,{get:function(){return this._open},enumerable:!1,configurable:!0}),t}(R.EventEmitter),ct=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),lt=function(){return lt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},dt=function(e){ct(t,e);function t(n,r,i){var a=e.call(this,n,r,i)||this;return a._localStream=a.options._stream,a.connectionId=a.options.connectionId||t.ID_PREFIX+L.randomToken(),a._negotiator=new tt.Negotiator(a),a._localStream&&a._negotiator.startConnection({_stream:a._localStream,originator:!0}),a}return Object.defineProperty(t.prototype,`type`,{get:function(){return K.Media},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`localStream`,{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`remoteStream`,{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),t.prototype.addStream=function(t){H.default.log(`Receiving stream`,t),this._remoteStream=t,e.prototype.emit.call(this,`stream`,t)},t.prototype.handleMessage=function(e){var t=e.type,n=e.payload;switch(e.type){case X.Answer:this._negotiator.handleSDP(t,n.sdp),this._open=!0;break;case X.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:H.default.warn(`Unrecognized message type:${t} from peer:${this.peer}`);break}},t.prototype.answer=function(e,t){var n,r;if(t===void 0&&(t={}),this._localStream){H.default.warn(`Local stream already exists on this MediaConnection. Are you answering a call twice?`);return}this._localStream=e,t&&t.sdpTransform&&(this.options.sdpTransform=t.sdpTransform),this._negotiator.startConnection(lt(lt({},this.options._payload),{_stream:e}));var i=this.provider._getMessages(this.connectionId);try{for(var a=ut(i),o=a.next();!o.done;o=a.next()){var s=o.value;this.handleMessage(s)}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}this._open=!0},t.prototype.close=function(){this._negotiator&&=(this._negotiator.cleanup(),null),this._localStream=null,this._remoteStream=null,this.provider&&=(this.provider._removeConnection(this),null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,e.prototype.emit.call(this,`close`))},t.ID_PREFIX=`mc_`,t}(at.BaseConnection),ft={};F(ft,`DataConnection`,()=>vt,e=>vt=e);var pt={};F(pt,`EncodingQueue`,()=>ht,e=>ht=e);var mt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),ht=function(e){mt(t,e);function t(){var t=e.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(e){t._processing=!1,e.target&&t.emit(`done`,e.target.result),t.doNextTask()},t.fileReader.onerror=function(e){H.default.error(`EncodingQueue error:`,e),t._processing=!1,t.destroy(),t.emit(`error`,e)},t}return Object.defineProperty(t.prototype,`queue`,{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`size`,{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`processing`,{get:function(){return this._processing},enumerable:!1,configurable:!0}),t.prototype.enque=function(e){this.queue.push(e),!this.processing&&this.doNextTask()},t.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},t.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},t}(R.EventEmitter),gt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if(typeof n!=`function`&&n!==null)throw TypeError(`Class extends value `+String(n)+` is not a constructor or null`);e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),_t=function(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},vt=function(e){gt(t,e);function t(n,r,i){var a=e.call(this,n,r,i)||this;return a.stringify=JSON.stringify,a.parse=JSON.parse,a._buffer=[],a._bufferSize=0,a._buffering=!1,a._chunkedData={},a._encodingQueue=new pt.EncodingQueue,a.connectionId=a.options.connectionId||t.ID_PREFIX+L.randomToken(),a.label=a.options.label||a.connectionId,a.serialization=a.options.serialization||J.Binary,a.reliable=!!a.options.reliable,a._encodingQueue.on(`done`,function(e){a._bufferedSend(e)}),a._encodingQueue.on(`error`,function(){H.default.error(`DC#${a.connectionId}: Error occured in encoding from blob to arraybuffer, close DC`),a.close()}),a._negotiator=new tt.Negotiator(a),a._negotiator.startConnection(a.options._payload||{originator:!0}),a}return Object.defineProperty(t.prototype,`type`,{get:function(){return K.Data},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`dataChannel`,{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`bufferSize`,{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),t.prototype.initialize=function(e){this._dc=e,this._configureDataChannel()},t.prototype._configureDataChannel=function(){var e=this;(!L.supports.binaryBlob||L.supports.reliable)&&(this.dataChannel.binaryType=`arraybuffer`),this.dataChannel.onopen=function(){H.default.log(`DC#${e.connectionId} dc connection success`),e._open=!0,e.emit(`open`)},this.dataChannel.onmessage=function(t){H.default.log(`DC#${e.connectionId} dc onmessage:`,t.data),e._handleDataMessage(t)},this.dataChannel.onclose=function(){H.default.log(`DC#${e.connectionId} dc closed for:`,e.peer),e.close()}},t.prototype._handleDataMessage=function(t){var n=this,r=t.data,i=r.constructor,a=this.serialization===J.Binary||this.serialization===J.BinaryUTF8,o=r;if(a){if(i===Blob){L.blobToArrayBuffer(r,function(e){var t=L.unpack(e);n.emit(`data`,t)});return}else if(i===ArrayBuffer)o=L.unpack(r);else if(i===String){var s=L.binaryStringToArrayBuffer(r);o=L.unpack(s)}}else this.serialization===J.JSON&&(o=this.parse(r));if(o.__peerData){this._handleChunk(o);return}e.prototype.emit.call(this,`data`,o)},t.prototype._handleChunk=function(e){var t=e.__peerData,n=this._chunkedData[t]||{data:[],count:0,total:e.total};if(n.data[e.n]=e.data,n.count++,this._chunkedData[t]=n,n.total===n.count){delete this._chunkedData[t];var r=new Blob(n.data);this._handleDataMessage({data:r})}},t.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&=(this._negotiator.cleanup(),null),this.provider&&=(this.provider._removeConnection(this),null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&=(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),null),this.open&&(this._open=!1,e.prototype.emit.call(this,`close`))},t.prototype.send=function(t,n){if(!this.open){e.prototype.emit.call(this,`error`,Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===J.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===J.Binary||this.serialization===J.BinaryUTF8){var r=L.pack(t);if(!n&&r.size>L.chunkedMTU){this._sendChunks(r);return}L.supports.binaryBlob?this._bufferedSend(r):this._encodingQueue.enque(r)}else this._bufferedSend(t)},t.prototype._bufferedSend=function(e){(this._buffering||!this._trySend(e))&&(this._buffer.push(e),this._bufferSize=this._buffer.length)},t.prototype._trySend=function(e){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>t.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(e)}catch(e){return H.default.error(`DC#:${this.connectionId} Error when sending:`,e),this._buffering=!0,this.close(),!1}return!0},t.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var e=this._buffer[0];this._trySend(e)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},t.prototype._sendChunks=function(e){var t,n,r=L.chunk(e);H.default.log(`DC#${this.connectionId} Try to send ${r.length} chunks...`);try{for(var i=_t(r),a=i.next();!a.done;a=i.next()){var o=a.value;this.send(o,!0)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.handleMessage=function(e){var t=e.payload;switch(e.type){case X.Answer:this._negotiator.handleSDP(e.type,t.sdp);break;case X.Candidate:this._negotiator.handleCandidate(t.candidate);break;default:H.default.warn(`Unrecognized message type:`,e.type,`from peer:`,this.peer);break}},t.ID_PREFIX=`dc_`,t.MAX_BUFFERED_AMOUNT=8388608,t}(at.BaseConnection),yt={};F(yt,`API`,()=>St,e=>St=e);var bt=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},xt=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(o){if(r)throw TypeError(`Generator is already executing.`);for(;n;)try{if(r=1,i&&(a=o[0]&2?i.return:o[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,o[1])).done)return a;switch(i=0,a&&(o=[o[0]&2,a.value]),o[0]){case 0:case 1:a=o;break;case 4:return n.label++,{value:o[1],done:!1};case 5:n.label++,i=o[1],o=[0];continue;case 7:o=n.ops.pop(),n.trys.pop();continue;default:if((a=n.trys,!(a=a.length>0&&a[a.length-1]))&&(o[0]===6||o[0]===2)){n=0;continue}if(o[0]===3&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)},wt=function(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a};(function(){function e(){}return e})();var Tt=function(e){Ct(t,e);function t(n,r){var i=e.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var a;return n&&n.constructor==Object?r=n:n&&(a=n.toString()),r=Q({debug:0,host:L.CLOUD_HOST,port:L.CLOUD_PORT,path:`/`,key:t.DEFAULT_KEY,token:L.randomToken(),config:L.defaultConfig,referrerPolicy:`strict-origin-when-cross-origin`},r),i._options=r,i._options.host===`/`&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!==`/`&&(i._options.path=`/`+i._options.path),i._options.path[i._options.path.length-1]!==`/`&&(i._options.path+=`/`)),i._options.secure===void 0&&i._options.host!==L.CLOUD_HOST?i._options.secure=L.isSecure():i._options.host==L.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&H.default.setLogFunction(i._options.logFunction),H.default.logLevel=i._options.debug||0,i._api=new yt.API(r),i._socket=i._createServerConnection(),!L.supports.audioVideo&&!L.supports.data?(i._delayedAbort(q.BrowserIncompatible,`The current browser does not support WebRTC`),i):a&&!L.validateId(a)?(i._delayedAbort(q.InvalidID,`ID "${a}" is invalid`),i):(a?i._initialize(a):i._api.retrieveId().then(function(e){return i._initialize(e)}).catch(function(e){return i._abort(q.ServerError,e)}),i)}return Object.defineProperty(t.prototype,`id`,{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`options`,{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`open`,{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`socket`,{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`connections`,{get:function(){var e,t,n=Object.create(null);try{for(var r=$(this._connections),i=r.next();!i.done;i=r.next()){var a=wt(i.value,2),o=a[0];n[o]=a[1]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}return n},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`destroyed`,{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,`disconnected`,{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),t.prototype._createServerConnection=function(){var e=this,t=new qe.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return t.on(Y.Message,function(t){e._handleMessage(t)}),t.on(Y.Error,function(t){e._abort(q.SocketError,t)}),t.on(Y.Disconnected,function(){e.disconnected||(e.emitError(q.Network,`Lost connection to server.`),e.disconnect())}),t.on(Y.Close,function(){e.disconnected||e._abort(q.SocketClosed,`Underlying socket is already closed.`)}),t},t.prototype._initialize=function(e){this._id=e,this.socket.start(e,this._options.token)},t.prototype._handleMessage=function(e){var t,n,r=e.type,i=e.payload,a=e.src;switch(r){case X.Open:this._lastServerId=this.id,this._open=!0,this.emit(`open`,this.id);break;case X.Error:this._abort(q.ServerError,i.msg);break;case X.IdTaken:this._abort(q.UnavailableID,`ID "${this.id}" is taken`);break;case X.InvalidKey:this._abort(q.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case X.Leave:H.default.log(`Received leave message from ${a}`),this._cleanupPeer(a),this._connections.delete(a);break;case X.Expire:this.emitError(q.PeerUnavailable,`Could not connect to peer ${a}`);break;case X.Offer:var o=i.connectionId,s=this.getConnection(a,o);if(s&&(s.close(),H.default.warn(`Offer received for existing Connection ID:${o}`)),i.type===K.Media){var c=new et.MediaConnection(a,this,{connectionId:o,_payload:i,metadata:i.metadata});s=c,this._addConnection(a,s),this.emit(`call`,c)}else if(i.type===K.Data){var l=new ft.DataConnection(a,this,{connectionId:o,_payload:i,metadata:i.metadata,label:i.label,serialization:i.serialization,reliable:i.reliable});s=l,this._addConnection(a,s),this.emit(`connection`,l)}else{H.default.warn(`Received malformed connection type:${i.type}`);return}var u=this._getMessages(o);try{for(var d=$(u),f=d.next();!f.done;f=d.next()){var p=f.value;s.handleMessage(p)}}catch(e){t={error:e}}finally{try{f&&!f.done&&(n=d.return)&&n.call(d)}finally{if(t)throw t.error}}break;default:if(!i){H.default.warn(`You received a malformed message from ${a} of type ${r}`);return}var o=i.connectionId,s=this.getConnection(a,o);s&&s.peerConnection?s.handleMessage(e):o?this._storeMessage(o,e):H.default.warn(`You received an unrecognized message:`,e);break}},t.prototype._storeMessage=function(e,t){this._lostMessages.has(e)||this._lostMessages.set(e,[]),this._lostMessages.get(e).push(t)},t.prototype._getMessages=function(e){var t=this._lostMessages.get(e);return t?(this._lostMessages.delete(e),t):[]},t.prototype.connect=function(e,t){if(t===void 0&&(t={}),this.disconnected){H.default.warn(`You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available.`),this.emitError(q.Disconnected,`Cannot connect to new Peer after disconnecting from server.`);return}var n=new ft.DataConnection(e,this,t);return this._addConnection(e,n),n},t.prototype.call=function(e,t,n){if(n===void 0&&(n={}),this.disconnected){H.default.warn(`You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect.`),this.emitError(q.Disconnected,`Cannot connect to new Peer after disconnecting from server.`);return}if(!t){H.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var r=new et.MediaConnection(e,this,Q(Q({},n),{_stream:t}));return this._addConnection(e,r),r},t.prototype._addConnection=function(e,t){H.default.log(`add connection ${t.type}:${t.connectionId} to peerId:${e}`),this._connections.has(e)||this._connections.set(e,[]),this._connections.get(e).push(t)},t.prototype._removeConnection=function(e){var t=this._connections.get(e.peer);if(t){var n=t.indexOf(e);n!==-1&&t.splice(n,1)}this._lostMessages.delete(e.connectionId)},t.prototype.getConnection=function(e,t){var n,r,i=this._connections.get(e);if(!i)return null;try{for(var a=$(i),o=a.next();!o.done;o=a.next()){var s=o.value;if(s.connectionId===t)return s}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return null},t.prototype._delayedAbort=function(e,t){var n=this;setTimeout(function(){n._abort(e,t)},0)},t.prototype._abort=function(e,t){H.default.error(`Aborting!`),this.emitError(e,t),this._lastServerId?this.disconnect():this.destroy()},t.prototype.emitError=function(e,t){H.default.error(`Error:`,t);var n=typeof t==`string`?Error(t):t;n.type=e,this.emit(`error`,n)},t.prototype.destroy=function(){this.destroyed||(H.default.log(`Destroy peer with ID:${this.id}`),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit(`close`))},t.prototype._cleanup=function(){var e,t;try{for(var n=$(this._connections.keys()),r=n.next();!r.done;r=n.next()){var i=r.value;this._cleanupPeer(i),this._connections.delete(i)}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this.socket.removeAllListeners()},t.prototype._cleanupPeer=function(e){var t,n,r=this._connections.get(e);if(r)try{for(var i=$(r),a=i.next();!a.done;a=i.next())a.value.close()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},t.prototype.disconnect=function(){if(!this.disconnected){var e=this.id;H.default.log(`Disconnect peer with ID:${e}`),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=e,this._id=null,this.emit(`disconnected`,e)}},t.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)H.default.log(`Attempting reconnection to server with ID ${this._lastServerId}`),this._disconnected=!1,this._initialize(this._lastServerId);else if(this.destroyed)throw Error(`This peer cannot reconnect to the server. It has already been destroyed.`);else if(!this.disconnected&&!this.open)H.default.error(`In a hurry? We're still trying to make the initial connection!`);else throw Error(`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`)},t.prototype.listAllPeers=function(e){var t=this;e===void 0&&(e=function(e){}),this._api.listAllPeers().then(function(t){return e(t)}).catch(function(e){return t._abort(q.ServerError,e)})},t.DEFAULT_KEY=`peerjs`,t}(R.EventEmitter),Et=Be.Peer;export{Le as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/peerjs.UdR1_Ath.js.gz b/Needle/SampleScene/dist/assets/peerjs.UdR1_Ath.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..174c92c0eb108dece05b536682acca5fd0560c0c GIT binary patch literal 35531 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js b/Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js new file mode 100644 index 0000000..de6f214 --- /dev/null +++ b/Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js @@ -0,0 +1,947 @@ +import{$t as e,A as t,Ar as n,Bt as r,Dn as i,E as a,En as o,Er as s,Fr as c,H as l,It as u,Jn as d,O as f,On as p,Qn as m,Rt as h,S as g,Un as _,Ut as v,V as y,Vt as b,X as x,Xt as S,Y as ee,Zn as C,Zt as te,f as w,gn as T,gr as ne,it as re,jr as E,kr as D,mn as O,nt as ie,on as k,ot as A,qn as ae,qt as oe,tn as se,tr as j,wr as ce,x as le,xr as M}from"./three@0.169.19.js";var ue=`6.39.0`,de=class{dispose(){}},fe=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),n=new g;return n.setAttribute(`position`,new le(e,3)),n.setAttribute(`uv`,new le(t,2)),n})(),N=class e{static get fullscreenGeometry(){return fe}constructor(e=`Pass`,t=new m,n=new O){this.name=e,this.renderer=null,this.scene=t,this.camera=n,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthBlit=!1,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;t!==null&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return this.screen===null?null:this.screen.material}set fullscreenMaterial(t){let n=this.screen;n===null?(n=new te(e.fullscreenGeometry,t),n.frustumCulled=!1,this.scene===null&&(this.scene=new m),this.scene.add(n),this.screen=n):n.material=t}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=w){}render(e,t,n,r,i){throw Error(`Render method not implemented!`)}setSize(e,t){}initialize(e,t,n){}dispose(){for(let t of Object.keys(this)){let n=this[t];(n instanceof c||n instanceof oe||n instanceof ne||n instanceof e)&&this[t].dispose()}this.fullscreenMaterial!==null&&this.fullscreenMaterial.dispose()}},pe=class extends N{constructor(){super(`ClearMaskPass`,null,null),this.needsSwap=!1}render(e,t,n,r,i){let a=e.state.buffers.stencil;a.setLocked(!1),a.setTest(!1)}},me=`#ifdef COLOR_WRITE +#include +#include +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#endif +#ifdef DEPTH_WRITE +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +} +#endif +#ifdef USE_WEIGHTS +uniform vec4 channelWeights; +#endif +uniform float opacity;varying vec2 vUv;void main(){ +#ifdef COLOR_WRITE +vec4 texel=texture2D(inputBuffer,vUv); +#ifdef USE_WEIGHTS +texel*=channelWeights; +#endif +gl_FragColor=opacity*texel; +#ifdef COLOR_SPACE_CONVERSION +#include +#endif +#include +#else +gl_FragColor=vec4(0.0); +#endif +#ifdef DEPTH_WRITE +gl_FragDepth=readDepth(vUv); +#endif +}`,P=`varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,he=class extends j{constructor(){super({name:`CopyMaterial`,defines:{COLOR_SPACE_CONVERSION:`1`,DEPTH_PACKING:`0`,COLOR_WRITE:`1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),channelWeights:new M(null),opacity:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:me,vertexShader:P}),this.depthFunc=1}get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=e!==null;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=e!==null;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get colorSpaceConversion(){return this.defines.COLOR_SPACE_CONVERSION!==void 0}set colorSpaceConversion(e){this.colorSpaceConversion!==e&&(e?this.defines.COLOR_SPACE_CONVERSION=!0:delete this.defines.COLOR_SPACE_CONVERSION,this.needsUpdate=!0)}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){e===null?delete this.defines.USE_WEIGHTS:(this.defines.USE_WEIGHTS=`1`,this.uniforms.channelWeights.value=e),this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}},ge=class extends N{constructor(e,t=!0){super(`CopyPass`),this.fullscreenMaterial=new he,this.needsSwap=!1,this.renderTarget=e,e===void 0&&(this.renderTarget=new c(1,1,{minFilter:u,magFilter:u,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name=`CopyPass.Target`),this.autoResize=t}get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,n,r,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,n){n!==void 0&&(this.renderTarget.texture.type=n,n===1009?e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C):this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},_e=new t,ve=class extends N{constructor(e=!0,t=!0,n=!1){super(`ClearPass`,null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=n,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,n){this.color=e,this.depth=t,this.stencil=n}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,n,r,i){let a=this.overrideClearColor,o=this.overrideClearAlpha,s=e.getClearAlpha(),c=a!==null,l=o>=0;c?(e.getClearColor(_e),e.setClearColor(a,l?o:s)):l&&e.setClearAlpha(o),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),c?e.setClearColor(_e,s):l&&e.setClearAlpha(s)}},ye=class extends N{constructor(e,t){super(`MaskPass`,e,t),this.needsSwap=!1,this.clearPass=new ve(!1,!1,!0),this.inverse=!1}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,n,r,i){let a=e.getContext(),o=e.state.buffers,s=this.scene,c=this.camera,l=this.clearPass,u=+!this.inverted,d=1-u;o.color.setMask(!1),o.depth.setMask(!1),o.color.setLocked(!0),o.depth.setLocked(!0),o.stencil.setTest(!0),o.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),o.stencil.setFunc(a.ALWAYS,u,4294967295),o.stencil.setClear(d),o.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?l.render(e,null):(l.render(e,t),l.render(e,n))),this.renderToScreen?(e.setRenderTarget(null),e.render(s,c)):(e.setRenderTarget(t),e.render(s,c),e.setRenderTarget(n),e.render(s,c)),o.color.setLocked(!1),o.depth.setLocked(!1),o.stencil.setLocked(!1),o.stencil.setFunc(a.EQUAL,1,4294967295),o.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),o.stencil.setLocked(!0)}},be=1/1e3,xe=1e3,Se=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(e){typeof document<`u`&&document.hidden!==void 0&&(e?document.addEventListener(`visibilitychange`,this):document.removeEventListener(`visibilitychange`,this),this._autoReset=e)}get delta(){return this._delta*be}get fixedDelta(){return this._fixedDelta*be}set fixedDelta(e){this._fixedDelta=e*xe}get elapsed(){return this._elapsed*be}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(e===void 0?performance.now():e)-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},Ce=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:n=!1,multisampling:r=0,frameBufferType:i}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,n,i,r),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new ge,this.depthTexture=null,this.depthRenderTarget=null,this.passes=[],this.timer=new Se,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples}set multisampling(e){let t=this.inputBuffer,n=this.multisampling;n>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):n!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,e!==null){let t=e.getSize(new D),n=e.getContext().getContextAttributes().alpha,r=this.inputBuffer.texture.type;r===1009&&e.outputColorSpace===`srgb`&&(this.inputBuffer.texture.colorSpace=C,this.outputBuffer.texture.colorSpace=C,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height);for(let t of this.passes)t.initialize(e,n,r)}}replaceRenderer(e,t=!0){let n=this.renderer,r=n.domElement.parentNode;return this.setRenderer(e),t&&r!==null&&(r.removeChild(n.domElement),r.appendChild(e.domElement)),n}createDepthTexture(){let e=this.inputBuffer,t=new x;this.depthTexture=t,e.stencilBuffer?(t.format=ee,t.type=s):t.type=A;let n=t.clone();return n.name=`EffectComposer.StableDepth`,this.depthRenderTarget=new c(e.width,e.height,{depthBuffer:!0,stencilBuffer:e.stencilBuffer,depthTexture:n}),n}blitDepthBuffer(e){let t=this.renderer,n=this.depthRenderTarget,r=t.properties,i=t.getContext();t.setRenderTarget(n);let a=r.get(e).__webglFramebuffer,o=r.get(n).__webglFramebuffer,s=e.stencilBuffer?i.DEPTH_BUFFER_BIT|i.STENCIL_BUFFER_BIT:i.DEPTH_BUFFER_BIT;i.bindFramebuffer(i.READ_FRAMEBUFFER,a),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,o),i.blitFramebuffer(0,0,e.width,e.height,0,0,n.width,n.height,s,i.NEAREST),i.bindFramebuffer(i.READ_FRAMEBUFFER,null),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),t.setRenderTarget(null)}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.depthRenderTarget.dispose(),this.depthRenderTarget=null,this.inputBuffer.depthTexture=null,this.outputBuffer.depthTexture=null;for(let e of this.passes)e.setDepthTexture(null)}}createBuffer(e,t,n,r){let i=this.renderer,a=i===null?new D:i.getDrawingBufferSize(new D),o={minFilter:u,magFilter:u,stencilBuffer:t,depthBuffer:e,type:n},s=new c(a.width,a.height,o);return r>0&&(s.samples=r),n===1009&&i!==null&&i.outputColorSpace===`srgb`&&(s.texture.colorSpace=C),s.texture.name=`EffectComposer.Buffer`,s.texture.generateMipmaps=!1,s}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let n=this.passes,r=this.renderer,i=r.getDrawingBufferSize(new D),a=r.getContext().getContextAttributes().alpha,o=this.inputBuffer.texture.type;if(e.renderer=r,e.setSize(i.width,i.height),e.initialize(r,a,o),this.autoRenderToScreen&&(n.length>0&&(n[n.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),t===void 0?n.push(e):n.splice(t,0,e),this.autoRenderToScreen&&(n[n.length-1].renderToScreen=!0),e.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){let t=this.createDepthTexture();for(e of n)e.setDepthTexture(t)}else{let t=this.depthRenderTarget.depthTexture;e.setDepthTexture(t)}}removePass(e){let t=this.passes,n=t.indexOf(e);if(n!==-1&&t.splice(n,1).length>0){if(this.depthTexture!==null&&!t.reduce((e,t)=>e||t.needsDepthTexture,!1)){let t=this.depthRenderTarget.depthTexture;e.getDepthTexture()===t&&e.setDepthTexture(null),this.deleteDepthTexture()}this.autoRenderToScreen&&n===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0))}}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t=this.renderer,n=this.copyPass,r=this.inputBuffer,i=this.outputBuffer,a,o=!1;e===void 0&&(this.timer.update(),e=this.timer.getDelta());for(let s of this.passes)if(s.enabled){if(r.depthTexture=this.depthTexture,i.depthTexture=null,s.render(t,r,i,e,o),s.needsDepthBlit&&this.depthRenderTarget!==null&&this.blitDepthBuffer(r),s.needsSwap){if(o){n.renderToScreen=s.renderToScreen;let a=t.getContext(),c=t.state.buffers.stencil;c.setFunc(a.NOTEQUAL,1,4294967295),n.render(t,r,i,e,o),c.setFunc(a.EQUAL,1,4294967295)}a=r,r=i,i=a}s instanceof ye?o=!0:s instanceof pe&&(o=!1)}}setSize(e,t,n){let r=this.renderer,i=r.getSize(new D);(e===void 0||t===void 0)&&(e=i.width,t=i.height),(i.width!==e||i.height!==t)&&r.setSize(e,t,n);let a=r.getDrawingBufferSize(new D);this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.depthRenderTarget!==null&&this.depthRenderTarget.setSize(a.width,a.height);for(let e of this.passes)e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),N.fullscreenGeometry.dispose()}},F={NONE:0,DEPTH:1,CONVOLUTION:2},I={FRAGMENT_HEAD:`FRAGMENT_HEAD`,FRAGMENT_MAIN_UV:`FRAGMENT_MAIN_UV`,FRAGMENT_MAIN_IMAGE:`FRAGMENT_MAIN_IMAGE`,VERTEX_HEAD:`VERTEX_HEAD`,VERTEX_MAIN_SUPPORT:`VERTEX_MAIN_SUPPORT`},we=class{constructor(){this.shaderParts=new Map([[I.FRAGMENT_HEAD,null],[I.FRAGMENT_MAIN_UV,null],[I.FRAGMENT_MAIN_IMAGE,null],[I.VERTEX_HEAD,null],[I.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=F.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=r}};function Te(e){let t;if(e===0)t=new Float64Array;else if(e===1)t=new Float64Array([1]);else if(e>1){let n=new Float64Array(e),r=new Float64Array(e);for(let i=1;i<=e;++i){for(let e=0;e1020)throw Error(`The kernel size must be in the range [3, 1020]`);let n=e+t*2,r=t>0?Te(n).slice(t,-t):Te(n),i=Math.floor((r.length-1)/2),a=r.reduce((e,t)=>e+t,0),o=r.slice(i),s=[...Array(i+1).keys()],c=new Float64Array(Math.floor(s.length/2)),l=new Float64Array(c.length);c[0]=o[0]/a;for(let e=1,t=1,n=s.length-1;ee+t,0)-c[0]*.5)*2;if(u!==0)for(let e=0,t=c.length,n=1/u;e{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case 2:t=this.materialsFlatShadedDoubleSide;break;case 1:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case 2:t=this.materialsDoubleSide;break;case 1:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof j))return e.clone();let t=e.uniforms,n=new Map;for(let e in t){let r=t[e].value;r.isRenderTargetTexture&&(t[e].value=null,n.set(e,r))}let r=e.clone();for(let e of n)t[e[0]].value=e[1],r.uniforms[e[0]].value=e[1];return r}setMaterial(e){if(this.disposeMaterials(),this.material=e,e!==null){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let n of t)n.uniforms=Object.assign({},e.uniforms),n.side=0;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.side=1,n}),this.materialsDoubleSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.side=2,n}),this.materialsFlatShaded=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n}),this.materialsFlatShadedBackSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n.side=1,n}),this.materialsFlatShadedDoubleSide=t.map(t=>{let n=this.cloneMaterial(t);return n.uniforms=Object.assign({},e.uniforms),n.flatShading=!0,n.side=2,n})}}render(e,t,n){let r=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,ke){let r=this.originalMaterials;this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,n);for(let e of r)e[0].material=e[1];this.meshCount!==r.size&&r.clear()}else{let r=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,n),t.overrideMaterial=r}e.shadowMap.enabled=r}disposeMaterials(){if(this.material!==null){let e=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(let t of e)t.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return ke}static set workaroundEnabled(e){ke=e}},je=class{setSize(e,t){}},L=-1,R=class extends ie{constructor(e,t=L,n=L,r=1){super(),this.resizable=e,this.baseSize=new D(1,1),this.preferredSize=new D(t,n),this.target=this.preferredSize,this.s=r,this.effectiveSize=new D,this.addEventListener(`change`,()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,n=this.effectiveSize,r=this.scale;t.width===L?t.height===L?n.width=Math.round(e.width*r):n.width=Math.round(t.height*(e.width/Math.max(e.height,1))):n.width=t.width,t.height===L?t.width===L?n.height=Math.round(e.height*r):n.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):n.height=t.height}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(L),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:`change`}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return L}},Me=new class{constructor(e=0){this.nextId=e}getNextId(){return this.nextId++}reset(e=0){return this.nextId=e,this}}(2),Ne=class extends Set{constructor(e,t=Me.getNextId()){super(),this.exclusive=!1,this._layer=t,(this._layer<1||this._layer>31)&&(console.warn(`Layer out of range, resetting to 2`),Me.reset(2),this._layer=Me.getNextId()),e!==void 0&&this.set(e)}get layer(){return this._layer}set layer(e){let t=this._layer;for(let n of this)n.layers.disable(t),n.layers.enable(e);this._layer=e}getLayer(){return this.layer}setLayer(e){this.layer=e}isExclusive(){return this.exclusive}setExclusive(e){this.exclusive=e}clear(){let e=this.layer;for(let t of this)t.layers.disable(e);return super.clear()}set(e){this.clear();for(let t of e)this.add(t);return this}indexOf(e){return this.has(e)?0:-1}add(e){return this.exclusive?e.layers.set(this.layer):e.layers.enable(this.layer),super.add(e)}delete(e){return this.has(e)&&e.layers.disable(this.layer),super.delete(e)}toggle(e){let t;return this.has(e)?(this.delete(e),t=!1):(this.add(e),t=!0),t}setVisible(e){for(let t of this)e?t.layers.enable(0):t.layers.disable(0);return this}},z={SKIP:9,SET:30,ADD:0,ALPHA:1,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},Pe=new Map([[z.ADD,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.ALPHA,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,src.a*opacity);}`],[z.AVERAGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=(dst.rgb+src.rgb)*0.5;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.xy,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR_BURN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/max(b,1e-9))),vec3(1.0),step(1.0,a));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.COLOR_DODGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DARKEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DIFFERENCE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=abs(dst.rgb-src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DIVIDE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb/max(src.rgb,1e-9);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.DST,null],[z.EXCLUSION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-2.0*dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HARD_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb,1.0);vec3 b=min(src.rgb,1.0);vec3 c=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HARD_MIX,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=step(1.0,dst.rgb+src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.HUE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.x,a.yz));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.INVERT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.INVERT_RGB,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=src.rgb*max(1.0-dst.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LIGHTEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_BURN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_DODGE,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb+src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LINEAR_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(2.0*src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.LUMINOSITY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.xy,b.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.MULTIPLY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.NEGATION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-abs(1.0-dst.rgb-src.rgb),0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.NORMAL,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,opacity);}`],[z.OVERLAY,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=2.0*src.rgb*dst.rgb;vec3 b=1.0-2.0*(1.0-src.rgb)*(1.0-dst.rgb);vec3 c=mix(a,b,step(0.5,dst.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.PIN_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 c=mix(mix(src2,dst.rgb,step(0.5*dst.rgb,src.rgb)),max(src2-1.0,vec3(0.0)),step(dst.rgb,src2-1.0));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.REFLECT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb*dst.rgb/max(1.0-src.rgb,1e-9),1.0);vec3 c=mix(a,src.rgb,step(1.0,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SATURATION,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.x,b.y,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SCREEN,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-min(dst.rgb*src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SOFT_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 d=dst.rgb+(src2-1.0);vec3 w=step(0.5,src.rgb);vec3 a=dst.rgb-(1.0-src2)*dst.rgb*(1.0-dst.rgb);vec3 b=mix(d*(sqrt(dst.rgb)-dst.rgb),d*dst.rgb*((16.0*dst.rgb-12.0)*dst.rgb+3.0),w*(1.0-step(0.25,dst.rgb)));vec3 c=mix(a,b,w);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.SRC,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return src;}`],[z.SUBTRACT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`],[z.VIVID_LIGHT,`vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=mix(max(1.0-min((1.0-dst.rgb)/(2.0*src.rgb),1.0),0.0),min(dst.rgb/(2.0*(1.0-src.rgb)),1.0),step(0.5,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}`]]),Fe=class extends ie{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new M(t)}getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:`change`})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return Pe.get(this.blendFunction)}},Ie=class extends a{constructor({characters:e=` .:,'-^=*+?!|0#X%WM@`,font:t=`Arial`,fontSize:n=54,size:r=1024,cellCount:i=16}={}){super(document.createElement(`canvas`),void 0,d,d);let a=this.image;a.width=a.height=r;let o=a.getContext(`2d`),s=r/i;o.font=`${n}px ${t}`,o.textAlign=`center`,o.textBaseline=`middle`,o.fillStyle=`#ffffff`;for(let t=0,n=e.length;tthis.setChanged()),this._inputColorSpace=r,this._outputColorSpace=``}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:`change`})}setDepthTexture(e,t=w){}update(e,t,n){}setSize(e,t){}initialize(e,t,n){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof c||t instanceof oe||t instanceof ne||t instanceof N)&&this[e].dispose()}}},Le=`uniform sampler2D asciiTexture;uniform vec4 cellCount; +#ifdef USE_COLOR +uniform vec3 color; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 pixelizedUv=cellCount.zw*(0.5+floor(uv*cellCount.xy));vec4 texel=texture(inputBuffer,pixelizedUv);float lum=min(luminance(texel.rgb),1.0); +#ifdef INVERTED +lum=1.0-lum; +#endif +float characterIndex=floor(CHAR_COUNT_MINUS_ONE*lum);vec2 characterPosition=vec2(mod(characterIndex,TEX_CELL_COUNT),floor(characterIndex*INV_TEX_CELL_COUNT));vec2 offset=vec2(characterPosition.x,-characterPosition.y)*INV_TEX_CELL_COUNT;vec2 characterUv=mod(uv*(cellCount.xy*INV_TEX_CELL_COUNT),INV_TEX_CELL_COUNT);characterUv=characterUv-vec2(0.0,INV_TEX_CELL_COUNT)+offset;float asciiCharacter=texture(asciiTexture,characterUv).r; +#ifdef USE_COLOR +outputColor=vec4(color*asciiCharacter,inputColor.a); +#else +outputColor=vec4(texel.rgb*asciiCharacter,inputColor.a); +#endif +}`,Re=class extends B{constructor({asciiTexture:e=new Ie,cellSize:n=16,color:r=null,inverted:i=!1}={}){super(`ASCIIEffect`,Le,{uniforms:new Map([[`asciiTexture`,new M(null)],[`cellCount`,new M(new E)],[`color`,new M(new t)]])}),this._cellSize=-1,this.resolution=new D,this.asciiTexture=e,this.cellSize=n,this.color=r,this.inverted=i}get asciiTexture(){return this.uniforms.get(`asciiTexture`).value}set asciiTexture(e){let t=this.uniforms.get(`asciiTexture`).value;if(this.uniforms.get(`asciiTexture`).value=e,t!==null&&t!==e&&t.dispose(),e!==null){let t=e.cellCount;this.defines.set(`CHAR_COUNT_MINUS_ONE`,(e.characterCount-1).toFixed(1)),this.defines.set(`TEX_CELL_COUNT`,t.toFixed(1)),this.defines.set(`INV_TEX_CELL_COUNT`,(1/t).toFixed(9)),this.setChanged()}}get color(){return this.uniforms.get(`color`).value}set color(e){e!==null&&this.uniforms.get(`color`).value.set(e),this.defines.has(`USE_COLOR`)&&e===null?(this.defines.delete(`USE_COLOR`),this.setChanged()):!this.defines.has(`USE_COLOR`)&&e!==null&&(this.defines.set(`USE_COLOR`,`1`),this.setChanged())}get inverted(){return this.defines.has(`INVERTED`)}set inverted(e){this.inverted!==e&&(e?this.defines.set(`INVERTED`,`1`):this.defines.delete(`INVERTED`),this.setChanged())}get cellSize(){return this._cellSize}set cellSize(e){this._cellSize!==e&&(this._cellSize=e,this.updateCellCount())}updateCellCount(){let e=this.uniforms.get(`cellCount`).value,t=this.resolution;e.x=t.width/this.cellSize,e.y=t.height/this.cellSize,e.z=1/e.x,e.w=1/e.y}setSize(e,t){this.resolution.set(e,t),this.updateCellCount()}dispose(){this.asciiTexture!==null&&this.asciiTexture.dispose(),super.dispose()}},V={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},ze=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25; +#include +}`,Be=`uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}`,Ve=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],He=class extends j{constructor(e=new E){super({name:`KawaseBlurMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new E),scale:new M(1),kernel:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:ze,vertexShader:Be}),this.setTexelSize(e.x,e.y),this.kernelSize=V.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return Ve[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,e*.5,t*.5)}setSize(e,t){let n=1/e,r=1/t;this.uniforms.texelSize.value.set(n,r,n*.5,r*.5)}},H=class extends N{constructor({kernelSize:e=V.MEDIUM,resolutionScale:t=.5,width:n=R.AUTO_SIZE,height:r=R.AUTO_SIZE,resolutionX:i=n,resolutionY:a=r}={}){super(`KawaseBlurPass`),this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`Blur.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`Blur.Target.B`;let o=this.resolution=new R(this,i,a,t);o.addEventListener(`change`,e=>this.setSize(o.baseWidth,o.baseHeight)),this._blurMaterial=new He,this._blurMaterial.kernelSize=e,this.copyMaterial=new he}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial,u=l.kernelSequence,d=t;this.fullscreenMaterial=l;for(let t=0,n=u.length;t +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef RANGE +uniform vec2 range; +#elif defined(THRESHOLD) +uniform float threshold;uniform float smoothing; +#endif +varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0; +#ifdef RANGE +float low=step(range.x,l);float high=step(l,range.y);mask=low*high; +#elif defined(THRESHOLD) +mask=smoothstep(threshold,threshold+smoothing,l); +#endif +#ifdef COLOR +gl_FragColor=texel*mask; +#else +gl_FragColor=vec4(l*mask); +#endif +}`,We=class extends j{constructor(e=!1,t=null){super({name:`LuminanceMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``)},uniforms:{inputBuffer:new M(null),threshold:new M(0),smoothing:new M(1),range:new M(null)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ue,vertexShader:P}),this.colorOutput=e,this.luminanceRange=t}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD=`1`:delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD=`1`:delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return this.defines.COLOR!==void 0}set colorOutput(e){e?this.defines.COLOR=`1`:delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return this.luminanceRange!==null}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){e===null?delete this.defines.RANGE:this.defines.RANGE=`1`,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}},Ge=class extends N{constructor({renderTarget:e,luminanceRange:t,colorOutput:n,resolutionScale:r=1,width:i=R.AUTO_SIZE,height:a=R.AUTO_SIZE,resolutionX:o=i,resolutionY:s=a}={}){super(`LuminancePass`),this.fullscreenMaterial=new We(n,t),this.needsSwap=!1,this.renderTarget=e,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`LuminancePass.Target`);let l=this.resolution=new R(this,o,s,r);l.addEventListener(`change`,e=>this.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,n,r,i){let a=this.fullscreenMaterial;a.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}initialize(e,t,n){n!==void 0&&n!==1009&&(this.renderTarget.texture.type=n,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},Ke=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#define WEIGHT_INNER 0.125 +#define WEIGHT_OUTER 0.05556 +varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c; +#include +}`,qe=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}`,Je=class extends j{constructor(){super({name:`DownsamplingMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ke,vertexShader:qe})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Ye=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer; +#else +uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; +#endif +uniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius); +#include +}`,Xe=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}`,Ze=class extends j{constructor(){super({name:`UpsamplingMaterial`,uniforms:{inputBuffer:new M(null),supportBuffer:new M(null),texelSize:new M(new D),radius:new M(.85)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ye,vertexShader:Xe})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Qe=class extends N{constructor(){super(`MipmapBlurPass`),this.needsSwap=!1,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`Upsampling.Mipmap0`,this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new Je,this.upsamplingMaterial=new Ze,this.resolution=new D}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(e){if(this.levels!==e){let t=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let n=0;n=0;--t){let n=u[t];c.setSize(d.width,d.height),c.inputBuffer=d.texture,c.supportBuffer=l[t].texture,e.setRenderTarget(n),e.render(a,o),d=n}}setSize(e,t){let n=this.resolution;n.set(e,t);let r=n.width,i=n.height;for(let e=0,t=this.downsamplingMipmaps.length;ethis.setSize(m.baseWidth,m.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get distinction(){return console.warn(this.name,`distinction was removed`),1}set distinction(e){console.warn(this.name,`distinction was removed`)}get intensity(){return this.uniforms.get(`intensity`).value}set intensity(e){this.uniforms.get(`intensity`).value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}update(e,t,n){let r=this.renderTarget,i=this.luminancePass;i.enabled?(i.render(e,t),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,i.renderTarget):this.blurPass.render(e,i.renderTarget,r)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,t):this.blurPass.render(e,t,r)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.blurPass.resolution.copy(n),this.luminancePass.setSize(e,t),this.mipmapBlurPass.setSize(e,t)}initialize(e,t,n){this.blurPass.initialize(e,t,n),this.luminancePass.initialize(e,t,n),this.mipmapBlurPass.initialize(e,t,n),n!==void 0&&(this.renderTarget.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C))}},tt=`uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect); +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearDepth=depth; +#endif +float focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(linearDepth,focusNear);float high=step(focusFar,linearDepth);float factor=(linearDepth-focusNear)*low+(linearDepth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}`,nt=class extends B{constructor({blendFunction:e,focus:t=.5,dof:n=.02,aperture:r=.015,maxBlur:i=1}={}){super(`BokehEffect`,tt,{blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`focus`,new M(t)],[`dof`,new M(n)],[`aperture`,new M(r)],[`maxBlur`,new M(i)]])})}},rt=`uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(color+vec3(0.5),inputColor.a);}`,it=class extends B{constructor({blendFunction:e=z.SRC,brightness:t=0,contrast:n=0}={}){super(`BrightnessContrastEffect`,rt,{blendFunction:e,uniforms:new Map([[`brightness`,new M(t)],[`contrast`,new M(n)]])}),this.inputColorSpace=C}get brightness(){return this.uniforms.get(`brightness`).value}set brightness(e){this.uniforms.get(`brightness`).value=e}getBrightness(){return this.brightness}setBrightness(e){this.brightness=e}get contrast(){return this.uniforms.get(`contrast`).value}set contrast(e){this.uniforms.get(`contrast`).value=e}getContrast(){return this.contrast}setContrast(e){this.contrast=e}},at=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}`,ot=class extends B{constructor(e){super(`ColorAverageEffect`,at,{blendFunction:e})}},st=`uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}`,ct=class extends B{constructor({blendFunction:e,bits:t=16}={}){super(`ColorDepthEffect`,st,{blendFunction:e,uniforms:new Map([[`factor`,new M(1)]])}),this.bits=0,this.bitDepth=t}get bitDepth(){return this.bits}set bitDepth(e){this.bits=e,this.uniforms.get(`factor`).value=2**(e/3)}getBitDepth(){return this.bitDepth}setBitDepth(e){this.bitDepth=e}},lt=`#ifdef RADIAL_MODULATION +uniform float modulationOffset; +#endif +varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=inputColor.ra;vec2 ba=inputColor.ba; +#ifdef RADIAL_MODULATION +const vec2 center=vec2(0.5);float d=distance(uv,center)*2.0;d=max(d-modulationOffset,0.0);if(vActive>0.0&&d>0.0){ra=texture2D(inputBuffer,mix(uv,vUvR,d)).ra;ba=texture2D(inputBuffer,mix(uv,vUvB,d)).ba;} +#else +if(vActive>0.0){ra=texture2D(inputBuffer,vUvR).ra;ba=texture2D(inputBuffer,vUvB).ba;} +#endif +outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}`,ut=`uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}`,dt=class extends B{constructor({offset:e=new D(.001,5e-4),radialModulation:t=!1,modulationOffset:n=.15}={}){super(`ChromaticAberrationEffect`,lt,{vertexShader:ut,attributes:F.CONVOLUTION,uniforms:new Map([[`offset`,new M(e)],[`modulationOffset`,new M(n)]])}),this.radialModulation=t}get offset(){return this.uniforms.get(`offset`).value}set offset(e){this.uniforms.get(`offset`).value=e}get radialModulation(){return this.defines.has(`RADIAL_MODULATION`)}set radialModulation(e){e?this.defines.set(`RADIAL_MODULATION`,`1`):this.defines.delete(`RADIAL_MODULATION`),this.setChanged()}get modulationOffset(){return this.uniforms.get(`modulationOffset`).value}set modulationOffset(e){this.uniforms.get(`modulationOffset`).value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}},ft=`void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){ +#ifdef INVERTED +vec3 color=vec3(1.0-depth); +#else +vec3 color=vec3(depth); +#endif +outputColor=vec4(color,inputColor.a);}`,pt=class extends B{constructor({blendFunction:e=z.SRC,inverted:t=!1}={}){super(`DepthEffect`,ft,{blendFunction:e,attributes:F.DEPTH}),this.inverted=t}get inverted(){return this.defines.has(`INVERTED`)}set inverted(e){this.inverted!==e&&(e?this.defines.set(`INVERTED`,`1`):this.defines.delete(`INVERTED`),this.setChanged())}isInverted(){return this.inverted}setInverted(e){this.inverted=e}},U={RED:0,GREEN:1,BLUE:2,ALPHA:3},mt={DISCARD:0,MULTIPLY:1,MULTIPLY_RGB_SET_ALPHA:2,MULTIPLY_RGB:3},ht=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#if PASS == 1 +uniform vec4 kernel64[32]; +#else +uniform vec4 kernel16[8]; +#endif +uniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){ +#ifdef FOREGROUND +vec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x; +#else +float coc=texture2D(cocBuffer,vUv).g*scale; +#endif +if(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{ +#ifdef FOREGROUND +vec2 step=texelSize*max(cocNearFar.x,cocNearFar.y); +#else +vec2 step=texelSize*coc; +#endif +#if PASS == 1 +vec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0; +#else +vec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue; +#endif +}}`,gt=class extends j{constructor(e=!1,t=!1){super({name:`BokehMaterial`,defines:{PASS:e?`2`:`1`},uniforms:{inputBuffer:new M(null),cocBuffer:new M(null),texelSize:new M(new D),kernel64:new M(null),kernel16:new M(null),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:ht,vertexShader:P}),t&&(this.defines.FOREGROUND=`1`),this.generateKernel()}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.scale}setScale(e){this.scale=e}generateKernel(){let e=new Float64Array(128),t=new Float64Array(32),n=0,r=0;for(let i=0,a=Math.sqrt(80);i<80;++i){let o=i*2.39996323,s=Math.sqrt(i)/a,c=s*Math.cos(o),l=s*Math.sin(o);i%5==0?(t[r++]=c,t[r++]=l):(e[n++]=c,e[n++]=l)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},_t=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform mat4 projectionMatrix;uniform mat4 projectionMatrixInverse;uniform float cameraNear;uniform float cameraFar;uniform float focusDistance;uniform float focusRange;varying vec2 vUv;float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#ifdef PERSPECTIVE_CAMERA +#define getViewZ(depth) perspectiveDepthToViewZ(depth, cameraNear, cameraFar) +#else +#define getViewZ(depth) orthographicDepthToViewZ(depth, cameraNear, cameraFar) +#endif +vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(projectionMatrixInverse*clipPosition).xyz;}vec3 getViewPosition(const in vec2 screenPosition,const in float depth){return getViewPosition(screenPosition,depth,getViewZ(depth));} +#define getDistance(viewPosition) length(viewPosition) +void main(){float depth=readDepth(vUv);vec3 viewPosition=getViewPosition(vUv,depth);float distance=getDistance(viewPosition);float signedDistance=distance-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,vt=class extends j{constructor(e=null){super({name:`CircleOfConfusionMaterial`,defines:{DEPTH_PACKING:`0`},uniforms:{depthBuffer:new M(null),projectionMatrix:new M(null),projectionMatrixInverse:new M(null),cameraNear:new M(.3),cameraFar:new M(1e3),focusDistance:new M(0),focusRange:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:_t,vertexShader:P}),this.uniforms.focalLength=this.uniforms.focusRange,e!==null&&this.copyCameraSettings(e)}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){return this.focusDistance}set worldFocusDistance(e){this.focusDistance=e}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){return this.focusRange}set worldFocusRange(e){this.focusRange=e}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){this.uniforms.projectionMatrix.value=e.projectionMatrix,this.uniforms.projectionMatrixInverse.value=e.projectionMatrixInverse,this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far;let t=this.defines.PERSPECTIVE_CAMERA!==void 0;e instanceof T?t||(this.defines.PERSPECTIVE_CAMERA=!0,this.needsUpdate=!0):t&&(delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},yt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef MASK_PRECISION_HIGH +uniform mediump sampler2D maskTexture; +#else +uniform lowp sampler2D maskTexture; +#endif +#if MASK_FUNCTION != 0 +uniform float strength; +#endif +varying vec2 vUv;void main(){ +#if COLOR_CHANNEL == 0 +float mask=texture2D(maskTexture,vUv).r; +#elif COLOR_CHANNEL == 1 +float mask=texture2D(maskTexture,vUv).g; +#elif COLOR_CHANNEL == 2 +float mask=texture2D(maskTexture,vUv).b; +#else +float mask=texture2D(maskTexture,vUv).a; +#endif +#if MASK_FUNCTION == 0 +#ifdef INVERTED +mask=(mask>0.0)?0.0:1.0; +#else +mask=(mask>0.0)?1.0:0.0; +#endif +#else +mask=clamp(mask*strength,0.0,1.0); +#ifdef INVERTED +mask=1.0-mask; +#endif +#endif +#if MASK_FUNCTION == 3 +vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a); +#elif MASK_FUNCTION == 2 +gl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask); +#else +gl_FragColor=mask*texture2D(inputBuffer,vUv); +#endif +}`,bt=class extends j{constructor(e=null){super({name:`MaskMaterial`,uniforms:{maskTexture:new M(e),inputBuffer:new M(null),strength:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:yt,vertexShader:P}),this.colorChannel=U.RED,this.maskFunction=mt.DISCARD}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,e.type!==1009&&(this.defines.MASK_PRECISION_HIGH=`1`),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return this.defines.INVERTED!==void 0}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED=`1`),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}},W=class extends N{constructor(e,t=`inputBuffer`){super(`ShaderPass`),this.fullscreenMaterial=e,this.input=t}setInput(e){this.input=e}render(e,t,n,r,i){let a=this.fullscreenMaterial.uniforms;t!==null&&a!==void 0&&a[this.input]!==void 0&&(a[this.input].value=t.texture),e.setRenderTarget(this.renderToScreen?null:n),e.render(this.scene,this.camera)}initialize(e,t,n){n!==void 0&&n!==1009&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}},xt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer; +#else +uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer; +#endif +#if MASK_FUNCTION != 1 && MASK_FUNCTION != 2 +uniform lowp sampler2D farCoCBuffer; +#endif +uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv); +#if MASK_FUNCTION == 1 || MASK_FUNCTION == 2 +vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0); +#else +vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);colorFar.a*=cocNearFar.y; +#endif +vec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}`,St=new n,Ct=class extends B{constructor(e,{blendFunction:t,worldFocusDistance:n,worldFocusRange:r,focalLength:i,focusDistance:a=n||3,focusRange:o=r||i||2,bokehScale:s=1,resolutionScale:l=.5,width:u,height:d,resolutionX:f=u||R.AUTO_SIZE,resolutionY:p=d||R.AUTO_SIZE}={}){super(`DepthOfFieldEffect`,xt,{blendFunction:t,attributes:F.DEPTH,uniforms:new Map([[`nearColorBuffer`,new M(null)],[`farColorBuffer`,new M(null)],[`nearCoCBuffer`,new M(null)],[`farCoCBuffer`,new M(null)],[`scale`,new M(1)]])}),this.camera=e,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`DoF.Intermediate`,this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name=`DoF.Masked.Far`,this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name=`DoF.Bokeh.Near`,this.uniforms.get(`nearColorBuffer`).value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name=`DoF.Bokeh.Far`,this.uniforms.get(`farColorBuffer`).value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name=`DoF.CoC`,this.uniforms.get(`farCoCBuffer`).value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name=`DoF.CoC.Blurred`,this.uniforms.get(`nearCoCBuffer`).value=this.renderTargetCoCBlurred.texture,this.cocPass=new W(new vt(e));let m=this.cocMaterial;m.focusDistance=a,m.focusRange=o,this.blurPass=new H({resolutionScale:l,resolutionX:f,resolutionY:p,kernelSize:V.MEDIUM}),this.maskPass=new W(new bt(this.renderTargetCoC.texture));let h=this.maskPass.fullscreenMaterial;h.colorChannel=U.GREEN,this.maskFunction=mt.MULTIPLY_RGB,this.bokehNearBasePass=new W(new gt(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new W(new gt(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new W(new gt(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new W(new gt(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;let g=this.resolution=new R(this,f,p,l);g.addEventListener(`change`,e=>this.setSize(g.baseWidth,g.baseHeight)),this.bokehScale=s}set mainCamera(e){this.camera=e,this.cocMaterial.copyCameraSettings(e)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(e){this.maskFunction!==e&&(this.defines.set(`MASK_FUNCTION`,e.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=e,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get(`scale`).value}set bokehScale(e){this.bokehNearBasePass.fullscreenMaterial.scale=e,this.bokehNearFillPass.fullscreenMaterial.scale=e,this.bokehFarBasePass.fullscreenMaterial.scale=e,this.bokehFarFillPass.fullscreenMaterial.scale=e,this.maskPass.fullscreenMaterial.strength=e,this.uniforms.get(`scale`).value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){return this.camera.getWorldPosition(St).distanceTo(e)}setDepthTexture(e,t=w){this.cocMaterial.depthBuffer=e,this.cocMaterial.depthPacking=t}update(e,t,n){let r=this.renderTarget,i=this.renderTargetCoC,a=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){let e=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=e}this.cocPass.render(e,null,i),this.blurPass.render(e,i,a),this.maskPass.render(e,t,o),this.bokehFarBasePass.render(e,o,r),this.bokehFarFillPass.render(e,r,this.renderTargetFar),this.bokehNearBasePass.render(e,t,r),this.bokehNearFillPass.render(e,r,this.renderTargetNear)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.cocPass.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.renderTargetFar.setSize(e,t),this.renderTargetCoC.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.renderTarget.setSize(r,i),this.renderTargetNear.setSize(r,i),this.renderTargetCoCBlurred.setSize(r,i),this.bokehNearBasePass.fullscreenMaterial.setSize(e,t),this.bokehNearFillPass.fullscreenMaterial.setSize(e,t),this.bokehFarBasePass.fullscreenMaterial.setSize(e,t),this.bokehFarFillPass.fullscreenMaterial.setSize(e,t)}initialize(e,t,n){this.cocPass.initialize(e,t,n),this.maskPass.initialize(e,t,n),this.bokehNearBasePass.initialize(e,t,n),this.bokehNearFillPass.initialize(e,t,n),this.bokehFarBasePass.initialize(e,t,n),this.bokehFarFillPass.initialize(e,t,n),this.blurPass.initialize(e,t,ce),e.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH=`1`),n!==void 0&&(this.renderTarget.texture.type=n,this.renderTargetNear.texture.type=n,this.renderTargetFar.texture.type=n,this.renderTargetMasked.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C,this.renderTargetNear.texture.colorSpace=C,this.renderTargetFar.texture.colorSpace=C,this.renderTargetMasked.texture.colorSpace=C))}},wt=`uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}`,Tt=class extends B{constructor({blendFunction:e,angle:t=Math.PI*.5,scale:n=1}={}){super(`DotScreenEffect`,wt,{blendFunction:e,uniforms:new Map([[`angle`,new M(new D)],[`scale`,new M(n)]])}),this.angle=t}get angle(){return Math.acos(this.uniforms.get(`angle`).value.y)}set angle(e){this.uniforms.get(`angle`).value.set(Math.sin(e),Math.cos(e))}getAngle(){return this.angle}setAngle(e){this.angle=e}get scale(){return this.uniforms.get(`scale`).value}set scale(e){this.uniforms.get(`scale`).value=e}},Et=`#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5)) +#define ONE_OVER_TWELVE 0.08333333333333333 +varying vec2 vUvDown;varying vec2 vUvUp;varying vec2 vUvLeft;varying vec2 vUvRight;varying vec2 vUvDownLeft;varying vec2 vUvUpRight;varying vec2 vUvUpLeft;varying vec2 vUvDownRight;vec4 fxaa(const in vec4 inputColor,const in vec2 uv){float lumaCenter=luminance(inputColor.rgb);float lumaDown=luminance(texture2D(inputBuffer,vUvDown).rgb);float lumaUp=luminance(texture2D(inputBuffer,vUvUp).rgb);float lumaLeft=luminance(texture2D(inputBuffer,vUvLeft).rgb);float lumaRight=luminance(texture2D(inputBuffer,vUvRight).rgb);float lumaMin=min(lumaCenter,min(min(lumaDown,lumaUp),min(lumaLeft,lumaRight)));float lumaMax=max(lumaCenter,max(max(lumaDown,lumaUp),max(lumaLeft,lumaRight)));float lumaRange=lumaMax-lumaMin;if(lumaRange=edgeVertical);float stepLength=isHorizontal?texelSize.y:texelSize.x;float luma1=isHorizontal?lumaDown:lumaLeft;float luma2=isHorizontal?lumaUp:lumaRight;float gradient1=abs(luma1-lumaCenter);float gradient2=abs(luma2-lumaCenter);bool is1Steepest=gradient1>=gradient2;float gradientScaled=0.25*max(gradient1,gradient2);float lumaLocalAverage=0.0;if(is1Steepest){stepLength=-stepLength;lumaLocalAverage=0.5*(luma1+lumaCenter);}else{lumaLocalAverage=0.5*(luma2+lumaCenter);}vec2 currentUv=uv;if(isHorizontal){currentUv.y+=stepLength*0.5;}else{currentUv.x+=stepLength*0.5;}vec2 offset=isHorizontal?vec2(texelSize.x,0.0):vec2(0.0,texelSize.y);vec2 uv1=currentUv-offset*QUALITY(0);vec2 uv2=currentUv+offset*QUALITY(0);float lumaEnd1=luminance(texture2D(inputBuffer,uv1).rgb);float lumaEnd2=luminance(texture2D(inputBuffer,uv2).rgb);lumaEnd1-=lumaLocalAverage;lumaEnd2-=lumaLocalAverage;bool reached1=abs(lumaEnd1)>=gradientScaled;bool reached2=abs(lumaEnd2)>=gradientScaled;bool reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(1);}if(!reached2){uv2+=offset*QUALITY(1);}if(!reachedBoth){for(int i=2;i=gradientScaled;reached2=abs(lumaEnd2)>=gradientScaled;reachedBoth=reached1&&reached2;if(!reached1){uv1-=offset*QUALITY(i);}if(!reached2){uv2+=offset*QUALITY(i);}if(reachedBoth){break;}}}float distance1=isHorizontal?(uv.x-uv1.x):(uv.y-uv1.y);float distance2=isHorizontal?(uv2.x-uv.x):(uv2.y-uv.y);bool isDirection1=distance1distortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}`,Ft=`Glitch.Generated`;function G(e,t){return e+Math.random()*(t-e)}var It=class extends B{constructor({chromaticAberrationOffset:e=null,delay:t=new D(1.5,3.5),duration:n=new D(.6,1),strength:r=new D(.3,1),columns:i=.05,ratio:a=.85,perturbationMap:o=null,dtSize:s=64}={}){if(super(`GlitchEffect`,Pt,{uniforms:new Map([[`perturbationMap`,new M(null)],[`columns`,new M(i)],[`active`,new M(!1)],[`random`,new M(1)],[`seeds`,new M(new D)],[`distortion`,new M(new D)]])}),o===null){let e=new Nt(s,s,p);e.name=Ft,this.perturbationMap=e}else this.perturbationMap=o;this.time=0,this.distortion=this.uniforms.get(`distortion`).value,this.delay=t,this.duration=n,this.breakPoint=new D(G(this.delay.x,this.delay.y),G(this.duration.x,this.duration.y)),this.strength=r,this.mode=jt.SPORADIC,this.ratio=a,this.chromaticAberrationOffset=e}get seeds(){return this.uniforms.get(`seeds`).value}get active(){return this.uniforms.get(`active`).value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(e){this.delay.x=e}getMinDelay(){return this.delay.x}setMinDelay(e){this.delay.x=e}get maxDelay(){return this.delay.y}set maxDelay(e){this.delay.y=e}getMaxDelay(){return this.delay.y}setMaxDelay(e){this.delay.y=e}get minDuration(){return this.duration.x}set minDuration(e){this.duration.x=e}getMinDuration(){return this.duration.x}setMinDuration(e){this.duration.x=e}get maxDuration(){return this.duration.y}set maxDuration(e){this.duration.y=e}getMaxDuration(){return this.duration.y}setMaxDuration(e){this.duration.y=e}get minStrength(){return this.strength.x}set minStrength(e){this.strength.x=e}getMinStrength(){return this.strength.x}setMinStrength(e){this.strength.x=e}get maxStrength(){return this.strength.y}set maxStrength(e){this.strength.y=e}getMaxStrength(){return this.strength.y}setMaxStrength(e){this.strength.y=e}getMode(){return this.mode}setMode(e){this.mode=e}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(e){this.ratio=Math.min(Math.max(1-e,0),1)}get columns(){return this.uniforms.get(`columns`).value}set columns(e){this.uniforms.get(`columns`).value=e}getGlitchColumns(){return this.columns}setGlitchColumns(e){this.columns=e}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(e){this.chromaticAberrationOffset=e}get perturbationMap(){return this.uniforms.get(`perturbationMap`).value}set perturbationMap(e){let t=this.perturbationMap;t!==null&&t.name===Ft&&t.dispose(),e.minFilter=e.magFilter=k,e.wrapS=e.wrapT=d,e.generateMipmaps=!1,this.uniforms.get(`perturbationMap`).value=e}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(e){this.perturbationMap=e}generatePerturbationMap(e=64){let t=new Nt(e,e,p);return t.name=Ft,t}update(e,t,n){let r=this.mode,i=this.breakPoint,a=this.chromaticAberrationOffset,o=this.strength,s=this.time,c=!1,l=0,u=0,d;r!==jt.DISABLED&&(r===jt.SPORADIC&&(s+=n,d=s>i.x,s>=i.x+i.y&&(i.set(G(this.delay.x,this.delay.y),G(this.duration.x,this.duration.y)),s=0)),l=Math.random(),this.uniforms.get(`random`).value=l,d&&l>this.ratio||r===jt.CONSTANT_WILD?(c=!0,l*=o.y*.03,u=G(-Math.PI,Math.PI),this.seeds.set(G(-o.y,o.y),G(-o.y,o.y)),this.distortion.set(G(0,1),G(0,1))):(d||r===jt.CONSTANT_MILD)&&(c=!0,l*=o.x*.03,u=G(-Math.PI,Math.PI),this.seeds.set(G(-o.x,o.x),G(-o.x,o.x)),this.distortion.set(G(0,1),G(0,1))),this.time=s),a!==null&&(c?a.set(Math.cos(u),Math.sin(u)).multiplyScalar(l):a.set(0,0)),this.uniforms.get(`active`).value=c}dispose(){let e=this.perturbationMap;e!==null&&e.name===Ft&&e.dispose()}},Lt=`#include +#include +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i +}`,Rt=class extends j{constructor(e){super({name:`GodRaysMaterial`,defines:{SAMPLES_INT:`60`,SAMPLES_FLOAT:`60.0`},uniforms:{inputBuffer:new M(null),lightPosition:new M(e),density:new M(1),decay:new M(1),weight:new M(1),exposure:new M(1),clampMax:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Lt,vertexShader:P})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(e){this.uniforms.lightPosition.value=e}get density(){return this.uniforms.density.value}set density(e){this.uniforms.density.value=e}getDensity(){return this.uniforms.density.value}setDensity(e){this.uniforms.density.value=e}get decay(){return this.uniforms.decay.value}set decay(e){this.uniforms.decay.value=e}getDecay(){return this.uniforms.decay.value}setDecay(e){this.uniforms.decay.value=e}get weight(){return this.uniforms.weight.value}set weight(e){this.uniforms.weight.value=e}getWeight(){return this.uniforms.weight.value}setWeight(e){this.uniforms.weight.value=e}get exposure(){return this.uniforms.exposure.value}set exposure(e){this.uniforms.exposure.value=e}getExposure(){return this.uniforms.exposure.value}setExposure(e){this.uniforms.exposure.value=e}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(e){this.uniforms.clampMax.value=e}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(e){this.uniforms.clampMax.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){let t=Math.floor(e);this.defines.SAMPLES_INT=t.toFixed(0),this.defines.SAMPLES_FLOAT=t.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}},zt=class extends N{constructor(e,t,n=null){super(`RenderPass`,e,t),this.needsSwap=!1,this.needsDepthBlit=!0,this.clearPass=new ve,this.overrideMaterialManager=n===null?null:new Ae(n),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return e===null?null:e.material}set overrideMaterial(e){let t=this.overrideMaterialManager;e===null?t!==null&&(t.dispose(),this.overrideMaterialManager=null):t===null?this.overrideMaterialManager=new Ae(e):t.setMaterial(e)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.selection,c=o.layers.mask,l=a.background,u=e.shadowMap.autoUpdate,d=this.renderToScreen?null:t;s!==null&&o.layers.set(s.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(a.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(d),this.overrideMaterialManager===null?e.render(a,o):this.overrideMaterialManager.render(e,a,o),o.layers.mask=c,a.background=l,e.shadowMap.autoUpdate=u}},Bt=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv);}`,Vt=new n,Ht=new S,Ut=class extends B{constructor(e,t,{blendFunction:n=z.SCREEN,samples:r=60,density:i=.96,decay:a=.9,weight:o=.4,exposure:s=.6,clampMax:l=1,blur:u=!0,kernelSize:d=V.SMALL,resolutionScale:f=.5,width:p=R.AUTO_SIZE,height:h=R.AUTO_SIZE,resolutionX:g=p,resolutionY:_=h}={}){super(`GodRaysEffect`,Bt,{blendFunction:n,attributes:F.DEPTH,uniforms:new Map([[`map`,new M(null)]])}),this.camera=e,this._lightSource=t,this.lightSource=t,this.lightScene=new m,this.screenPosition=new D,this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`GodRays.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`GodRays.Target.B`,this.uniforms.get(`map`).value=this.renderTargetB.texture,this.renderTargetLight=new c(1,1),this.renderTargetLight.texture.name=`GodRays.Light`,this.renderTargetLight.depthTexture=new x,this.renderPassLight=new zt(this.lightScene,e),this.renderPassLight.clearPass.enabled=!1,this.blurPass=new H({kernelSize:d}),this.blurPass.enabled=u,this.copyPass=new ge(this.renderTargetLight),this.copyPass.fullscreenMaterial.channelWeights=new E(0,0,0,1),this.godRaysPass=new W(new Rt(this.screenPosition));let v=this.godRaysMaterial;v.density=i,v.decay=a,v.weight=o,v.exposure=s,v.maxIntensity=l,v.samples=r;let y=this.resolution=new R(this,g,_,f);y.addEventListener(`change`,e=>this.setSize(y.baseWidth,y.baseHeight))}set mainCamera(e){this.camera=e,this.renderPassLight.mainCamera=e}get lightSource(){return this._lightSource}set lightSource(e){this._lightSource=e,e!==null&&(e.material.depthWrite=!1,e.material.transparent=!0)}getBlurPass(){return this.blurPass}get texture(){return this.renderTargetB.texture}getTexture(){return this.texture}get godRaysMaterial(){return this.godRaysPass.fullscreenMaterial}getGodRaysMaterial(){return this.godRaysMaterial}getResolution(){return this.resolution}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.godRaysMaterial.dithering}set dithering(e){let t=this.godRaysMaterial;t.dithering=e,t.needsUpdate=!0}get blur(){return this.blurPass.enabled}set blur(e){this.blurPass.enabled=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}get samples(){return this.godRaysMaterial.samples}set samples(e){this.godRaysMaterial.samples=e}setDepthTexture(e,t=w){this.copyPass.fullscreenMaterial.depthBuffer=e,this.copyPass.fullscreenMaterial.depthPacking=t}update(e,t,n){let r=this.lightSource,i=r.parent,a=r.matrixAutoUpdate,o=this.renderTargetA,s=this.renderTargetLight;r.material.depthWrite=!0,r.matrixAutoUpdate=!1,r.updateWorldMatrix(!0,!1),i!==null&&(a||Ht.copy(r.matrix),r.matrix.copy(r.matrixWorld)),this.lightScene.add(r),this.copyPass.render(e,t),this.renderPassLight.render(e,s),r.material.depthWrite=!1,r.matrixAutoUpdate=a,i!==null&&(a||r.matrix.copy(Ht),i.add(r)),Vt.setFromMatrixPosition(r.matrixWorld).project(this.camera),this.screenPosition.set(Math.min(Math.max((Vt.x+1)*.5,-1),2),Math.min(Math.max((Vt.y+1)*.5,-1),2));let c=s;this.blurPass.enabled&&(this.blurPass.render(e,c,o),c=o),this.godRaysPass.render(e,c,this.renderTargetB)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.renderTargetLight.setSize(e,t),this.renderTargetA.setSize(r,i),this.renderTargetB.setSize(r,i),this.blurPass.resolution.copy(n)}initialize(e,t,n){this.blurPass.initialize(e,t,n),this.renderPassLight.initialize(e,t,n),this.copyPass.initialize(e,t,n),this.godRaysPass.initialize(e,t,n),n!==void 0&&(this.renderTargetA.texture.type=n,this.renderTargetB.texture.type=n,this.renderTargetLight.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetA.texture.colorSpace=C,this.renderTargetB.texture.colorSpace=C,this.renderTargetLight.texture.colorSpace=C))}},Wt=`uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}`,Gt=class extends B{constructor({blendFunction:e=z.OVERLAY,scale:t=1,lineWidth:n=0}={}){super(`GridEffect`,Wt,{blendFunction:e,uniforms:new Map([[`scale`,new M(new D)],[`lineWidth`,new M(n)]])}),this.resolution=new D,this.s=0,this.scale=t,this.l=0,this.lineWidth=n}get scale(){return this.s}set scale(e){this.s=Math.max(e,1e-6),this.setSize(this.resolution.width,this.resolution.height)}getScale(){return this.scale}setScale(e){this.scale=e}get lineWidth(){return this.l}set lineWidth(e){this.l=e,this.setSize(this.resolution.width,this.resolution.height)}getLineWidth(){return this.lineWidth}setLineWidth(e){this.lineWidth=e}setSize(e,t){this.resolution.set(e,t);let n=e/t,r=this.scale*(t*.125);this.uniforms.get(`scale`).value.set(n*r,r),this.uniforms.get(`lineWidth`).value=r/t+this.lineWidth}},Kt=`uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}`,qt=class extends B{constructor({blendFunction:e=z.SRC,hue:t=0,saturation:r=0}={}){super(`HueSaturationEffect`,Kt,{blendFunction:e,uniforms:new Map([[`hue`,new M(new n)],[`saturation`,new M(r)]])}),this.hue=t}get saturation(){return this.uniforms.get(`saturation`).value}set saturation(e){this.uniforms.get(`saturation`).value=e}getSaturation(){return this.saturation}setSaturation(e){this.saturation=e}get hue(){let e=this.uniforms.get(`hue`).value;return Math.acos((e.x*3-1)/2)}set hue(e){let t=Math.sin(e),n=Math.cos(e);this.uniforms.get(`hue`).value.set((2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3)}getHue(){return this.hue}setHue(e){this.hue=e}},Jt=`uniform vec2 distortion;uniform vec2 principalPoint;uniform vec2 focalLength;uniform float skew;float mask(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void mainUv(inout vec2 uv){vec2 xn=2.0*(uv.st-0.5);vec3 xDistorted=vec3((1.0+distortion*dot(xn,xn))*xn,1.0);mat3 kk=mat3(vec3(focalLength.x,0.0,0.0),vec3(skew*focalLength.x,focalLength.y,0.0),vec3(principalPoint.x,principalPoint.y,1.0));uv=(kk*xDistorted).xy*0.5+0.5;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=mask(uv)*inputColor;}`,Yt=class extends B{constructor({distortion:e=new D(0,0),principalPoint:t=new D(0,0),focalLength:n=new D(1,1),skew:r=0}={}){super(`LensDistortionEffect`,Jt,{uniforms:new Map([[`distortion`,new M(e)],[`principalPoint`,new M(t)],[`focalLength`,new M(n)],[`skew`,new M(r)]])})}get distortion(){return this.uniforms.get(`distortion`).value}set distortion(e){this.uniforms.get(`distortion`).value=e}get principalPoint(){return this.uniforms.get(`principalPoint`).value}set principalPoint(e){this.uniforms.get(`principalPoint`).value=e}get focalLength(){return this.uniforms.get(`focalLength`).value}set focalLength(e){this.uniforms.get(`focalLength`).value=e}get skew(){return this.uniforms.get(`skew`).value}set skew(e){this.uniforms.get(`skew`).value=e}},Xt=`#ifdef LUT_PRECISION_HIGH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D lut; +#else +uniform mediump sampler2D lut; +#endif +#else +uniform lowp sampler2D lut; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(texture2D(lut,vec2(inputColor.r,0.5)).r,texture2D(lut,vec2(inputColor.g,0.5)).r,texture2D(lut,vec2(inputColor.b,0.5)).r,inputColor.a);}`,Zt=class extends B{constructor(e,{blendFunction:t=z.SRC}={}){super(`LUT1DEffect`,Xt,{blendFunction:t,uniforms:new Map([[`lut`,new M(null)]])}),this.lut=e}get lut(){return this.uniforms.get(`lut`).value}set lut(e){this.uniforms.get(`lut`).value=e,e!==null&&(e.type===1015||e.type===1016)&&this.defines.set(`LUT_PRECISION_HIGH`,`1`)}},Qt={SCALE_UP:`lut.scaleup`};function $t(e,t,n){let r=document.createElement(`canvas`),i=r.getContext(`2d`);if(r.width=e,r.height=t,n instanceof Image)i.drawImage(n,0,0);else{let r=i.createImageData(e,t);r.data.set(n),i.putImageData(r,0,0)}return r}var K=class e{constructor(e=0,t=0,n=null){this.width=e,this.height=t,this.data=n}toCanvas(){return typeof document>`u`?null:$t(this.width,this.height,this.data)}static from(t){let{width:n,height:r}=t,i;if(t instanceof Image){let e=$t(n,r,t);e!==null&&(i=e.getContext(`2d`).getImageData(0,0,n,r).data)}else i=t.data;return new e(n,r,i)}},en=`"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;t.operation===O.SCALE_UP&&(r=v.expand(r,t.size)),postMessage(r,[r.buffer]),close()});})(); +`,tn=new t,nn=class e extends y{constructor(e,t){super(e,t,t,t),this.type=A,this.format=p,this.minFilter=u,this.magFilter=u,this.wrapS=f,this.wrapT=f,this.wrapR=f,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=r,this.domainMin=new n(0,0,0),this.domainMax=new n(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(t,n=!0){let r=this.image,i;return i=t<=r.width?Promise.reject(Error(`The target size must be greater than the current size`)):new Promise((i,a)=>{let o=URL.createObjectURL(new Blob([en],{type:`text/javascript`})),s=new Worker(o);s.addEventListener(`error`,e=>a(e.error)),s.addEventListener(`message`,n=>{let r=new e(n.data,t);this.colorSpace=r.colorSpace,r.type=this.type,r.name=this.name,URL.revokeObjectURL(o),i(r)});let c=n?[r.data.buffer]:[];s.postMessage({operation:Qt.SCALE_UP,data:r.data,size:t},c)}),i}applyLUT(e){let t=this.image,n=e.image,r=Math.min(t.width,t.height,t.depth);if(r!==Math.min(n.width,n.height,n.depth))console.error(`Size mismatch`);else if(e.type!==1015||this.type!==1015)console.error(`Both LUTs must be FloatType textures`);else if(e.format!==1023||this.format!==1023)console.error(`Both LUTs must be RGBA textures`);else{let e=t.data,i=n.data,a=r,o=a**2,s=a-1;for(let t=0,n=a**3;ti){o=new Uint8Array(e.length);for(let t=0;t=f.g){if(f.g>f.b){frac=f.rgb;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else if(f.r>=f.b){frac=f.rbg;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v1.y,v4.z);}else{frac=f.brg;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v4.x,v1.y,v4.z);}}else{if(f.b>f.g){frac=f.bgr;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v1.x,v4.y,v4.z);}else if(f.r>=f.b){frac=f.grb;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else{frac=f.gbr;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v1.x,v4.y,v4.z);}}vec4 n1=texture(lut,v1);vec4 n2=texture(lut,v2);vec4 n3=texture(lut,v3);vec4 n4=texture(lut,v4);vec4 weights=vec4(1.0-frac.x,frac.x-frac.y,frac.y-frac.z,frac.z);vec4 result=weights*mat4(vec4(n1.r,n2.r,n3.r,n4.r),vec4(n1.g,n2.g,n3.g,n4.g),vec4(n1.b,n2.b,n3.b,n4.b),vec4(1.0));return vec4(result.rgb,1.0); +#else +return texture(lut,rgb); +#endif +} +#else +#ifdef LUT_PRECISION_HIGH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D lut; +#else +uniform mediump sampler2D lut; +#endif +#else +uniform lowp sampler2D lut; +#endif +vec4 applyLUT(const in vec3 rgb){float slice=rgb.b*LUT_SIZE;float slice0=floor(slice);float interp=slice-slice0;float centeredInterp=interp-0.5;float slice1=slice0+sign(centeredInterp); +#ifdef LUT_STRIP_HORIZONTAL +float xOffset=clamp(rgb.r*LUT_TEXEL_HEIGHT,LUT_TEXEL_WIDTH*0.5,LUT_TEXEL_HEIGHT-LUT_TEXEL_WIDTH*0.5);vec2 uv0=vec2(slice0*LUT_TEXEL_HEIGHT+xOffset,rgb.g);vec2 uv1=vec2(slice1*LUT_TEXEL_HEIGHT+xOffset,rgb.g); +#else +float yOffset=clamp(rgb.g*LUT_TEXEL_WIDTH,LUT_TEXEL_HEIGHT*0.5,LUT_TEXEL_WIDTH-LUT_TEXEL_HEIGHT*0.5);vec2 uv0=vec2(rgb.r,slice0*LUT_TEXEL_WIDTH+yOffset);vec2 uv1=vec2(rgb.r,slice1*LUT_TEXEL_WIDTH+yOffset); +#endif +vec4 sample0=texture2D(lut,uv0);vec4 sample1=texture2D(lut,uv1);return mix(sample0,sample1,abs(centeredInterp));} +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 c=inputColor.rgb; +#ifdef CUSTOM_INPUT_DOMAIN +if(c.r>=domainMin.r&&c.g>=domainMin.g&&c.b>=domainMin.b&&c.r<=domainMax.r&&c.g<=domainMax.g&&c.b<=domainMax.b){c=applyLUT(scale*c+offset).rgb;}else{c=inputColor.rgb;} +#else +#if !defined(LUT_3D) || defined(TETRAHEDRAL_INTERPOLATION) +c=clamp(c,0.0,1.0); +#endif +c=applyLUT(scale*c+offset).rgb; +#endif +outputColor=vec4(c,inputColor.a);}`,an=class extends B{constructor(e,{blendFunction:t=z.SRC,tetrahedralInterpolation:r=!1,inputColorSpace:i=C}={}){super(`LUT3DEffect`,rn,{blendFunction:t,uniforms:new Map([[`lut`,new M(null)],[`scale`,new M(new n)],[`offset`,new M(new n)],[`domainMin`,new M(null)],[`domainMax`,new M(null)]])}),this.tetrahedralInterpolation=r,this.inputColorSpace=i,this.lut=e}get lut(){return this.uniforms.get(`lut`).value}set lut(e){let t=this.defines,n=this.uniforms;if(this.lut!==e&&(n.get(`lut`).value=e,e!==null)){let r=e.image,i=this.tetrahedralInterpolation;if(t.clear(),t.set(`LUT_SIZE`,Math.min(r.width,r.height).toFixed(16)),t.set(`LUT_TEXEL_WIDTH`,(1/r.width).toFixed(16)),t.set(`LUT_TEXEL_HEIGHT`,(1/r.height).toFixed(16)),n.get(`domainMin`).value=null,n.get(`domainMax`).value=null,(e.type===1015||e.type===1016)&&t.set(`LUT_PRECISION_HIGH`,`1`),r.width>r.height?t.set(`LUT_STRIP_HORIZONTAL`,`1`):e instanceof y&&t.set(`LUT_3D`,`1`),e instanceof nn){let r=e.domainMin,i=e.domainMax;(r.x!==0||r.y!==0||r.z!==0||i.x!==1||i.y!==1||i.z!==1)&&(t.set(`CUSTOM_INPUT_DOMAIN`,`1`),n.get(`domainMin`).value=r.clone(),n.get(`domainMax`).value=i.clone())}this.tetrahedralInterpolation=i}}getLUT(){return this.lut}setLUT(e){this.lut=e}updateScaleOffset(){let e=this.lut;if(e!==null){let t=Math.min(e.image.width,e.image.height),n=this.uniforms.get(`scale`).value,r=this.uniforms.get(`offset`).value;if(this.tetrahedralInterpolation&&e instanceof y)if(this.defines.has(`CUSTOM_INPUT_DOMAIN`)){let i=e.domainMax.clone().sub(e.domainMin);n.setScalar(t-1).divide(i),r.copy(e.domainMin).negate().multiply(n)}else n.setScalar(t-1),r.setScalar(0);else if(this.defines.has(`CUSTOM_INPUT_DOMAIN`)){let i=e.domainMax.clone().sub(e.domainMin).multiplyScalar(t);n.setScalar(t-1).divide(i),r.copy(e.domainMin).negate().multiply(n).addScalar(1/(2*t))}else n.setScalar((t-1)/t),r.setScalar(1/(2*t))}}configureTetrahedralInterpolation(){let e=this.lut;e!==null&&(e.minFilter=u,e.magFilter=u,this.tetrahedralInterpolation&&(e instanceof y?(e.minFilter=k,e.magFilter=k):console.warn(`Tetrahedral interpolation requires a 3D texture`)),e.needsUpdate=!0)}get tetrahedralInterpolation(){return this.defines.has(`TETRAHEDRAL_INTERPOLATION`)}set tetrahedralInterpolation(e){e?this.defines.set(`TETRAHEDRAL_INTERPOLATION`,`1`):this.defines.delete(`TETRAHEDRAL_INTERPOLATION`),this.configureTetrahedralInterpolation(),this.updateScaleOffset(),this.setChanged()}setTetrahedralInterpolationEnabled(e){this.tetrahedralInterpolation=e}},on={FULL:0,SINGLE:1},sn={DEFAULT:0,KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},cn={DEPTH:0,LUMA:1,COLOR:2},ln={DISABLED:0,DEPTH:1,CUSTOM:2},un={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},q={LINEAR:0,REINHARD:1,REINHARD2:2,REINHARD2_ADAPTIVE:3,UNCHARTED2:4,OPTIMIZED_CINEON:5,CINEON:5,ACES_FILMIC:6,AGX:7,NEUTRAL:8},dn={DEFAULT:0,ESKIL:1},fn={DERIVATIVES:`derivatives`,FRAG_DEPTH:`fragDepth`,DRAW_BUFFERS:`drawBuffers`,SHADER_TEXTURE_LOD:`shaderTextureLOD`},pn=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*(1.0+time))); +#ifdef PREMULTIPLY +outputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a); +#else +outputColor=vec4(noise,inputColor.a); +#endif +}`,mn=class extends B{constructor({blendFunction:e=z.SCREEN,premultiply:t=!1}={}){super(`NoiseEffect`,pn,{blendFunction:e}),this.premultiply=t}get premultiply(){return this.defines.has(`PREMULTIPLY`)}set premultiply(e){this.premultiply!==e&&(e?this.defines.set(`PREMULTIPLY`,`1`):this.defines.delete(`PREMULTIPLY`),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(e){this.premultiply=e}},hn=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform float cameraNear;uniform float cameraFar;centroid varying float vViewZ;centroid varying vec4 vProjTexCoord;void main(){ +#include +vec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5; +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord)); +#else +float depth=texture2D(depthBuffer,projTexCoord).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +float viewZ=orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +float depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}`,gn=`#include +#include +#include +#include +varying float vViewZ;varying vec4 vProjTexCoord;void main(){ +#include +#include +#include +#include +#include +vViewZ=mvPosition.z;vProjTexCoord=gl_Position; +#include +}`,_n=class extends j{constructor(e=null,t){super({name:`DepthComparisonMaterial`,defines:{DEPTH_PACKING:`0`},uniforms:{depthBuffer:new M(null),cameraNear:new M(.3),cameraFar:new M(1e3)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:hn,vertexShader:gn}),this.depthBuffer=e,this.depthPacking=i,this.copyCameraSettings(t)}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=i){this.depthBuffer=e,this.depthPacking=t}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},vn=`uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}`,yn=`uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}`,bn=class extends j{constructor(e=new D){super({name:`OutlineMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:vn,vertexShader:yn}),this.uniforms.texelSize.value.set(e.x,e.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},xn=class extends N{constructor(t,n,{renderTarget:r,resolutionScale:a=1,width:o=R.AUTO_SIZE,height:s=R.AUTO_SIZE,resolutionX:l=o,resolutionY:u=s}={}){super(`DepthPass`),this.needsSwap=!1,this.renderPass=new zt(t,n,new e({depthPacking:i}));let d=this.renderPass;d.skipShadowMapUpdate=!0,d.ignoreBackground=!0,this.renderTarget=r,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{minFilter:k,magFilter:k}),this.renderTarget.texture.name=`DepthPass.Target`);let f=this.resolution=new R(this,l,u,a);f.addEventListener(`change`,e=>this.setSize(f.baseWidth,f.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}initialize(e,n,r){let i=e.capabilities.reversedDepthBuffer?0:16777215,a=this.renderPass.clearPass;a.overrideClearColor=new t(i),a.overrideClearAlpha=1}},Sn=`uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength; +#ifdef USE_PATTERN +uniform lowp sampler2D patternTexture;varying vec2 vUvPattern; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg; +#ifndef X_RAY +edge.y=0.0; +#endif +edge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0; +#ifdef USE_PATTERN +vec4 patternColor=texture2D(patternTexture,vUvPattern); +#ifdef X_RAY +float hiddenFactor=0.5; +#else +float hiddenFactor=0.0; +#endif +visibilityFactor=(1.0-mask.y>0.0)?1.0:hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb; +#endif +float alpha=max(max(edge.x,edge.y),visibilityFactor); +#ifdef ALPHA +outputColor=vec4(color,alpha); +#else +outputColor=vec4(color,max(alpha,inputColor.a)); +#endif +}`,Cn=`uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}`,wn=class extends B{constructor(e,n,{blendFunction:r=z.SCREEN,patternTexture:i=null,patternScale:a=1,edgeStrength:o=1,pulseSpeed:s=0,visibleEdgeColor:l=16777215,hiddenEdgeColor:u=2230538,kernelSize:d=V.VERY_SMALL,blur:f=!1,xRay:p=!0,multisampling:m=0,resolutionScale:h=.5,width:g=R.AUTO_SIZE,height:_=R.AUTO_SIZE,resolutionX:v=g,resolutionY:y=_}={}){super(`OutlineEffect`,Sn,{uniforms:new Map([[`maskTexture`,new M(null)],[`edgeTexture`,new M(null)],[`edgeStrength`,new M(o)],[`visibleEdgeColor`,new M(new t(l))],[`hiddenEdgeColor`,new M(new t(u))],[`pulse`,new M(1)],[`patternScale`,new M(a)],[`patternTexture`,new M(null)]])}),this.blendMode.addEventListener(`change`,e=>{this.blendMode.blendFunction===z.ALPHA?this.defines.set(`ALPHA`,`1`):this.defines.delete(`ALPHA`),this.setChanged()}),this.blendMode.blendFunction=r,this.patternTexture=i,this.xRay=p,this.scene=e,this.camera=n,this.renderTargetMask=new c(1,1),this.renderTargetMask.samples=m,this.renderTargetMask.texture.name=`Outline.Mask`,this.uniforms.get(`maskTexture`).value=this.renderTargetMask.texture,this.renderTargetOutline=new c(1,1,{depthBuffer:!1}),this.renderTargetOutline.texture.name=`Outline.Edges`,this.uniforms.get(`edgeTexture`).value=this.renderTargetOutline.texture,this.clearPass=new ve,this.clearPass.overrideClearColor=new t(0),this.clearPass.overrideClearAlpha=1,this.depthPass=new xn(e,n),this.maskPass=new zt(e,n,new _n(this.depthPass.texture,n));let b=this.maskPass.clearPass;b.overrideClearColor=new t(16777215),b.overrideClearAlpha=1,this.blurPass=new H({resolutionScale:h,resolutionX:v,resolutionY:y,kernelSize:d}),this.blurPass.enabled=f;let x=this.blurPass.resolution;x.addEventListener(`change`,e=>this.setSize(x.baseWidth,x.baseHeight)),this.outlinePass=new W(new bn);let S=this.outlinePass.fullscreenMaterial;S.inputBuffer=this.renderTargetMask.texture,this.time=0,this.forceUpdate=!0,this.selection=new Ne,this.pulseSpeed=s}set mainScene(e){this.scene=e,this.depthPass.mainScene=e,this.maskPass.mainScene=e}set mainCamera(e){this.camera=e,this.depthPass.mainCamera=e,this.maskPass.mainCamera=e,this.maskPass.overrideMaterial.copyCameraSettings(e)}get resolution(){return this.blurPass.resolution}getResolution(){return this.blurPass.getResolution()}get multisampling(){return this.renderTargetMask.samples}set multisampling(e){this.renderTargetMask.samples=e,this.renderTargetMask.dispose()}get patternScale(){return this.uniforms.get(`patternScale`).value}set patternScale(e){this.uniforms.get(`patternScale`).value=e}get edgeStrength(){return this.uniforms.get(`edgeStrength`).value}set edgeStrength(e){this.uniforms.get(`edgeStrength`).value=e}get visibleEdgeColor(){return this.uniforms.get(`visibleEdgeColor`).value}set visibleEdgeColor(e){this.uniforms.get(`visibleEdgeColor`).value=e}get hiddenEdgeColor(){return this.uniforms.get(`hiddenEdgeColor`).value}set hiddenEdgeColor(e){this.uniforms.get(`hiddenEdgeColor`).value=e}getBlurPass(){return this.blurPass}getSelection(){return this.selection}getPulseSpeed(){return this.pulseSpeed}setPulseSpeed(e){this.pulseSpeed=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get selectionLayer(){return this.selection.layer}set selectionLayer(e){this.selection.layer=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get blur(){return this.blurPass.enabled}set blur(e){this.blurPass.enabled=e}get xRay(){return this.defines.has(`X_RAY`)}set xRay(e){this.xRay!==e&&(e?this.defines.set(`X_RAY`,`1`):this.defines.delete(`X_RAY`),this.setChanged())}isXRayEnabled(){return this.xRay}setXRayEnabled(e){this.xRay=e}get patternTexture(){return this.uniforms.get(`patternTexture`).value}set patternTexture(e){e===null?(this.defines.delete(`USE_PATTERN`),this.setVertexShader(null)):(e.wrapS=e.wrapT=d,this.defines.set(`USE_PATTERN`,`1`),this.setVertexShader(Cn)),this.uniforms.get(`patternTexture`).value=e,this.setChanged()}setPatternTexture(e){this.patternTexture=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}setSelection(e){return this.selection.set(e),this}clearSelection(){return this.selection.clear(),this}selectObject(e){return this.selection.add(e),this}deselectObject(e){return this.selection.delete(e),this}update(e,t,n){let r=this.scene,i=this.camera,a=this.selection,o=this.uniforms.get(`pulse`),s=r.background,c=i.layers.mask;(this.forceUpdate||a.size>0)&&(r.background=null,o.value=1,this.pulseSpeed>0&&(o.value=Math.cos(this.time*this.pulseSpeed*10)*.375+.625),this.time+=n,a.setVisible(!1),this.depthPass.render(e),a.setVisible(!0),i.layers.set(a.layer),this.maskPass.render(e,this.renderTargetMask),i.layers.mask=c,r.background=s,this.outlinePass.render(e,null,this.renderTargetOutline),this.blurPass.enabled&&this.blurPass.render(e,this.renderTargetOutline,this.renderTargetOutline)),this.forceUpdate=a.size>0}setSize(e,t){this.blurPass.setSize(e,t),this.renderTargetMask.setSize(e,t);let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.depthPass.setSize(r,i),this.renderTargetOutline.setSize(r,i),this.outlinePass.fullscreenMaterial.setSize(r,i)}initialize(e,t,n){this.blurPass.initialize(e,t,ce),n!==void 0&&(this.depthPass.initialize(e,t,n),this.maskPass.initialize(e,t,n),this.outlinePass.initialize(e,t,n))}},Tn=`uniform bool active;uniform vec4 d;void mainUv(inout vec2 uv){if(active){uv=d.xy*(floor(uv*d.zw)+0.5);}}`,En=class extends B{constructor(e=30){super(`PixelationEffect`,Tn,{uniforms:new Map([[`active`,new M(!1)],[`d`,new M(new E)]])}),this.resolution=new D,this._granularity=0,this.granularity=e}get granularity(){return this._granularity}set granularity(e){let t=Math.floor(e);t%2>0&&(t+=1),this._granularity=t,this.uniforms.get(`active`).value=t>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(e){this.granularity=e}setSize(e,t){let n=this.resolution;n.set(e,t);let r=this.granularity,i=r/n.x,a=r/n.y;this.uniforms.get(`d`).value.set(i,a,1/i,1/a)}},Dn=`uniform float focus;uniform float focalLength;uniform float fStop;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe; +#ifdef MANUAL_DOF +uniform vec4 dof; +#endif +#ifdef PENTAGON +float pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);} +#endif +vec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i); +#ifdef PENTAGON +float p=pentagon(wh); +#else +float p=1.0; +#endif +color+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){ +#ifdef PERSPECTIVE_CAMERA +float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearDepth=depth; +#endif +#ifdef MANUAL_DOF +float focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)?farDoF:nearDoF; +#else +const float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*fStop*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF; +#endif +const int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;} +#ifdef SHOW_FOCUS +float edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2); +#endif +outputColor=vec4(color,inputColor.a);}`,On=class extends B{constructor({blendFunction:e,focus:t=1,focalLength:n=24,fStop:r=.9,luminanceThreshold:i=.5,luminanceGain:a=2,bias:o=.5,fringe:s=.7,maxBlur:c=1,rings:l=3,samples:u=2,showFocus:d=!1,manualDoF:f=!1,pentagon:p=!1}={}){super(`RealisticBokehEffect`,Dn,{blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`focus`,new M(t)],[`focalLength`,new M(n)],[`fStop`,new M(r)],[`luminanceThreshold`,new M(i)],[`luminanceGain`,new M(a)],[`bias`,new M(o)],[`fringe`,new M(s)],[`maxBlur`,new M(c)],[`dof`,new M(null)]])}),this.rings=l,this.samples=u,this.showFocus=d,this.manualDoF=f,this.pentagon=p}get rings(){return Number.parseInt(this.defines.get(`RINGS_INT`))}set rings(e){let t=Math.floor(e);this.defines.set(`RINGS_INT`,t.toFixed(0)),this.defines.set(`RINGS_FLOAT`,t.toFixed(1)),this.setChanged()}get samples(){return Number.parseInt(this.defines.get(`SAMPLES_INT`))}set samples(e){let t=Math.floor(e);this.defines.set(`SAMPLES_INT`,t.toFixed(0)),this.defines.set(`SAMPLES_FLOAT`,t.toFixed(1)),this.setChanged()}get showFocus(){return this.defines.has(`SHOW_FOCUS`)}set showFocus(e){this.showFocus!==e&&(e?this.defines.set(`SHOW_FOCUS`,`1`):this.defines.delete(`SHOW_FOCUS`),this.setChanged())}get manualDoF(){return this.defines.has(`MANUAL_DOF`)}set manualDoF(e){this.manualDoF!==e&&(e?(this.defines.set(`MANUAL_DOF`,`1`),this.uniforms.get(`dof`).value=new E(.2,1,.2,2)):(this.defines.delete(`MANUAL_DOF`),this.uniforms.get(`dof`).value=null),this.setChanged())}get pentagon(){return this.defines.has(`PENTAGON`)}set pentagon(e){this.pentagon!==e&&(e?this.defines.set(`PENTAGON`,`1`):this.defines.delete(`PENTAGON`),this.setChanged())}},kn=`uniform float count; +#ifdef SCROLL +uniform float scrollSpeed; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float y=uv.y; +#ifdef SCROLL +y+=time*scrollSpeed; +#endif +vec2 sl=vec2(sin(y*count),cos(y*count));outputColor=vec4(sl.xyx,inputColor.a);}`,An=class extends B{constructor({blendFunction:e=z.OVERLAY,density:t=1.25,scrollSpeed:n=0}={}){super(`ScanlineEffect`,kn,{blendFunction:e,uniforms:new Map([[`count`,new M(0)],[`scrollSpeed`,new M(0)]])}),this.resolution=new D,this.d=t,this.scrollSpeed=n}get density(){return this.d}set density(e){this.d=e,this.setSize(this.resolution.width,this.resolution.height)}getDensity(){return this.density}setDensity(e){this.density=e}get scrollSpeed(){return this.uniforms.get(`scrollSpeed`).value}set scrollSpeed(e){this.uniforms.get(`scrollSpeed`).value=e,e===0?this.defines.delete(`SCROLL`)&&this.setChanged():this.defines.has(`SCROLL`)||(this.defines.set(`SCROLL`,`1`),this.setChanged())}setSize(e,t){this.resolution.set(e,t),this.uniforms.get(`count`).value=Math.round(t*this.density)}},jn=`uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distanceNn,o.value&&(a.get(`cameraDistance`).value=i.position.distanceTo(r),Pn.copy(r).project(i),this.screenPosition.set((Pn.x+1)*.5,(Pn.y+1)*.5)),this.time+=n*this.speed;let t=this.time-e;a.get(`radius`).value=t,t>=(a.get(`maxRadius`).value+e)*2&&(this.active=!1,o.value=!1)}}},Ln=`#include +#include +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1; +#else +uniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1; +#endif +uniform sampler2D inputBuffer;uniform vec2 cameraNearFar;float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#else +return orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#endif +}varying vec2 vUv;void main(){vec2 depth; +#if DEPTH_PACKING_0 == 3201 +depth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv)); +#else +depth.x=texture2D(depthBuffer0,vUv).r; +#endif +#if DEPTH_PACKING_1 == 3201 +depth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv)); +#else +depth.y=texture2D(depthBuffer1,vUv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);float c=log2(cameraNearFar.y+1.0);float d=pow(2.0,depth.x*c)-1.0;depth.x=a+b/d;d=pow(2.0,depth.y*c)-1.0;depth.y=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth.x=1.0-depth.x;depth.y=1.0-depth.y; +#endif +bool isMaxDepth=(depth.x==1.0); +#ifdef PERSPECTIVE_CAMERA +depth.x=viewZToOrthographicDepth(getViewZ(depth.x),cameraNearFar.x,cameraNearFar.y);depth.y=viewZToOrthographicDepth(getViewZ(depth.y),cameraNearFar.x,cameraNearFar.y); +#endif +#if DEPTH_TEST_STRATEGY == 0 +bool keep=depthTest(depth.x,depth.y); +#elif DEPTH_TEST_STRATEGY == 1 +bool keep=isMaxDepth||depthTest(depth.x,depth.y); +#else +bool keep=!isMaxDepth&&depthTest(depth.x,depth.y); +#endif +if(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}`,Rn=class extends j{constructor(){super({name:`DepthMaskMaterial`,defines:{DEPTH_EPSILON:`0.0001`,DEPTH_PACKING_0:`0`,DEPTH_PACKING_1:`0`,DEPTH_TEST_STRATEGY:sn.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new M(null),depthBuffer0:new M(null),depthBuffer1:new M(null),cameraNearFar:new M(new D(1,1))},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ln,vertexShader:P}),this.depthMode=2}set depthBuffer0(e){this.uniforms.depthBuffer0.value=e}set depthPacking0(e){this.defines.DEPTH_PACKING_0=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(e,t=w){this.depthBuffer0=e,this.depthPacking0=t}set depthBuffer1(e){this.uniforms.depthBuffer1.value=e}set depthPacking1(e){this.defines.DEPTH_PACKING_1=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(e,t=w){this.depthBuffer1=e,this.depthPacking1=t}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(e){this.defines.DEPTH_TEST_STRATEGY=e.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(e){this.maxDepthStrategy=e?sn.KEEP_MAX_DEPTH:sn.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(e){this.maxDepthStrategy=e}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(e){this.defines.DEPTH_EPSILON=e.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(e){this.epsilon=e}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(e){let t;switch(e){case 0:t=`false`;break;case 1:t=`true`;break;case 4:t=`abs(d1 - d0) <= DEPTH_EPSILON`;break;case 7:t=`abs(d1 - d0) > DEPTH_EPSILON`;break;case 2:t=`d0 > d1`;break;case 3:t=`d0 >= d1`;break;case 5:t=`d0 <= d1`;break;default:t=`d0 < d1`;break}this.defines.DEPTH_MODE=e.toFixed(0),this.defines[`depthTest(d0, d1)`]=t,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(e){this.depthMode=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},zn=class extends et{constructor(e,n,r){super(r),this.setAttributes(this.getAttributes()|F.DEPTH),this.camera=n,this.depthPass=new xn(e,n),this.clearPass=new ve(!0,!1,!1),this.clearPass.overrideClearColor=new t(0),this.depthMaskPass=new W(new Rn);let a=this.depthMaskMaterial;a.copyCameraSettings(n),a.depthBuffer1=this.depthPass.texture,a.depthPacking1=i,a.depthMode=4,this.renderTargetMasked=new c(1,1,{depthBuffer:!1}),this.renderTargetMasked.texture.name=`Bloom.Masked`,this.selection=new Ne,this._inverted=!1,this._ignoreBackground=!1}set mainScene(e){this.depthPass.mainScene=e}set mainCamera(e){this.camera=e,this.depthPass.mainCamera=e,this.depthMaskMaterial.copyCameraSettings(e)}getSelection(){return this.selection}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get inverted(){return this._inverted}set inverted(e){this._inverted=e,this.depthMaskMaterial.depthMode=e?7:4}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get ignoreBackground(){return this._ignoreBackground}set ignoreBackground(e){this._ignoreBackground=e,this.depthMaskMaterial.maxDepthStrategy=e?sn.DISCARD_MAX_DEPTH:sn.KEEP_MAX_DEPTH}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}setDepthTexture(e,t=w){this.depthMaskMaterial.depthBuffer0=e,this.depthMaskMaterial.depthPacking0=t}update(e,t,n){let r=this.camera,i=this.selection,a=this.inverted,o=t;if(this.ignoreBackground||!a||i.size>0){let n=r.layers.mask;r.layers.set(i.layer),this.depthPass.render(e),r.layers.mask=n,o=this.renderTargetMasked,this.clearPass.render(e,o),this.depthMaskPass.render(e,t,o)}super.update(e,o,n)}setSize(e,t){super.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.depthPass.setSize(e,t)}initialize(e,t,n){super.initialize(e,t,n),this.clearPass.initialize(e,t,n),this.depthPass.initialize(e,t,n),this.depthMaskPass.initialize(e,t,n),e!==null&&e.capabilities.logarithmicDepthBuffer&&(this.depthMaskPass.fullscreenMaterial.defines.LOG_DEPTH=`1`),n!==void 0&&(this.renderTargetMasked.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetMasked.texture.colorSpace=C))}},Bn=`uniform vec3 weightsR;uniform vec3 weightsG;uniform vec3 weightsB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,weightsR),dot(inputColor.rgb,weightsG),dot(inputColor.rgb,weightsB));outputColor=vec4(color,inputColor.a);}`,Vn=class extends B{constructor({blendFunction:e,intensity:t=1}={}){super(`SepiaEffect`,Bn,{blendFunction:e,uniforms:new Map([[`weightsR`,new M(new n(.393,.769,.189))],[`weightsG`,new M(new n(.349,.686,.168))],[`weightsB`,new M(new n(.272,.534,.131))]])})}get intensity(){return this.blendMode.opacity.value}set intensity(e){this.blendMode.opacity.value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}get weightsR(){return this.uniforms.get(`weightsR`).value}get weightsG(){return this.uniforms.get(`weightsG`).value}get weightsB(){return this.uniforms.get(`weightsB`).value}},Hn=`varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +#if EDGE_DETECTION_MODE != 0 +varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5; +#endif +#if EDGE_DETECTION_MODE == 1 +#include +#endif +#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1 +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);} +#elif PREDICATION_MODE == 2 +uniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);} +#endif +#if PREDICATION_MODE != 0 +vec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);} +#endif +#if EDGE_DETECTION_MODE != 0 +uniform sampler2D inputBuffer; +#endif +void main(){ +#if EDGE_DETECTION_MODE == 0 +const vec2 threshold=vec2(DEPTH_THRESHOLD); +#elif PREDICATION_MODE != 0 +vec2 threshold=calculatePredicatedThreshold(); +#else +const vec2 threshold=vec2(EDGE_THRESHOLD); +#endif +#if EDGE_DETECTION_MODE == 0 +vec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0); +#elif EDGE_DETECTION_MODE == 1 +float l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0); +#elif EDGE_DETECTION_MODE == 2 +vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0); +#endif +}`,Un=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +#if EDGE_DETECTION_MODE != 0 +varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5; +#endif +void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0); +#if EDGE_DETECTION_MODE != 0 +vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0); +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Wn=class extends j{constructor(e=new D,t=cn.COLOR){super({name:`EdgeDetectionMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``),LOCAL_CONTRAST_ADAPTATION_FACTOR:`2.0`,EDGE_THRESHOLD:`0.1`,DEPTH_THRESHOLD:`0.01`,PREDICATION_MODE:`0`,PREDICATION_THRESHOLD:`0.01`,PREDICATION_SCALE:`2.0`,PREDICATION_STRENGTH:`1.0`,DEPTH_PACKING:`0`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),predicationBuffer:new M(null),texelSize:new M(e)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Hn,vertexShader:Un}),this.edgeDetectionMode=t}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(e){this.defines.EDGE_DETECTION_MODE=e.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(e){this.edgeDetectionMode=e}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed(`6`),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(e){this.localContrastAdaptationFactor=e}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(e){this.defines.EDGE_THRESHOLD=e.toFixed(`6`),this.defines.DEPTH_THRESHOLD=(e*.1).toFixed(`6`),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(e){this.edgeDetectionThreshold=e}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(e){this.defines.PREDICATION_MODE=e.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(e){this.predicationMode=e}set predicationBuffer(e){this.uniforms.predicationBuffer.value=e}setPredicationBuffer(e){this.uniforms.predicationBuffer.value=e}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(e){this.defines.PREDICATION_THRESHOLD=e.toFixed(`6`),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(e){this.predicationThreshold=e}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(e){this.defines.PREDICATION_SCALE=e.toFixed(`6`),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(e){this.predicationScale=e}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(e){this.defines.PREDICATION_STRENGTH=e.toFixed(`6`),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(e){this.predicationStrength=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Gn=`#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize) +#if __VERSION__ < 300 +#define round(v) floor(v + 0.5) +#endif +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;iend&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;iend&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){ +#if !defined(DISABLE_CORNER_DETECTION) +vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0); +#endif +}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){ +#if !defined(DISABLE_CORNER_DETECTION) +vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0); +#endif +}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){ +#if !defined(DISABLE_DIAG_DETECTION) +weights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){ +#endif +vec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d); +#if !defined(DISABLE_DIAG_DETECTION) +}else{e.r=0.0;} +#endif +}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,Kn=`uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}`,qn=class extends j{constructor(e=new D,t=new D){super({name:`SMAAWeightsMaterial`,defines:{MAX_SEARCH_STEPS_INT:`16`,MAX_SEARCH_STEPS_FLOAT:`16.0`,MAX_SEARCH_STEPS_DIAG_INT:`8`,MAX_SEARCH_STEPS_DIAG_FLOAT:`8.0`,CORNER_ROUNDING:`25`,CORNER_ROUNDING_NORM:`0.25`,AREATEX_MAX_DISTANCE:`16.0`,AREATEX_MAX_DISTANCE_DIAG:`20.0`,AREATEX_PIXEL_SIZE:`(1.0 / vec2(160.0, 560.0))`,AREATEX_SUBTEX_SIZE:`(1.0 / 7.0)`,SEARCHTEX_SIZE:`vec2(66.0, 33.0)`,SEARCHTEX_PACKED_SIZE:`vec2(64.0, 16.0)`},uniforms:{inputBuffer:new M(null),searchTexture:new M(null),areaTexture:new M(null),resolution:new M(t),texelSize:new M(e)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Gn,vertexShader:Kn})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(e){this.uniforms.searchTexture.value=e}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(e){this.uniforms.areaTexture.value=e}setLookupTextures(e,t){this.searchTexture=e,this.areaTexture=t}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(e){let t=Math.min(Math.max(e,0),112);this.defines.MAX_SEARCH_STEPS_INT=t.toFixed(`0`),this.defines.MAX_SEARCH_STEPS_FLOAT=t.toFixed(`1`),this.needsUpdate=!0}setOrthogonalSearchSteps(e){this.orthogonalSearchSteps=e}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(e){let t=Math.min(Math.max(e,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=t.toFixed(`0`),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=t.toFixed(`1`),this.needsUpdate=!0}setDiagonalSearchSteps(e){this.diagonalSearchSteps=e}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION=`1`,this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(e){this.diagonalDetection=e}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(e){let t=Math.min(Math.max(e,0),100);this.defines.CORNER_ROUNDING=t.toFixed(`4`),this.defines.CORNER_ROUNDING_NORM=(t/100).toFixed(`4`),this.needsUpdate=!0}setCornerRounding(e){this.cornerRounding=e}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION=`1`,this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(e){this.cornerDetection=e}setSize(e,t){let n=this.uniforms;n.texelSize.value.set(1/e,1/t),n.resolution.value.set(e,t)}},Jn=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC`,Yn=`data:image/png;base64,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`,Xn=`uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}`,Zn=`varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}`,Qn=class extends B{constructor({blendFunction:e=z.SRC,preset:n=un.MEDIUM,edgeDetectionMode:r=cn.COLOR,predicationMode:i=ln.DISABLED}={}){super(`SMAAEffect`,Xn,{vertexShader:Zn,blendFunction:e,attributes:F.CONVOLUTION|F.DEPTH,uniforms:new Map([[`weightMap`,new M(null)]])});let a,o;arguments.length>1&&(a=arguments[0],o=arguments[1],arguments.length>2&&(n=arguments[2]),arguments.length>3&&(r=arguments[3])),this.renderTargetEdges=new c(1,1,{depthBuffer:!1}),this.renderTargetEdges.texture.name=`SMAA.Edges`,this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name=`SMAA.Weights`,this.uniforms.get(`weightMap`).value=this.renderTargetWeights.texture,this.clearPass=new ve(!0,!1,!1),this.clearPass.overrideClearColor=new t(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new W(new Wn),this.edgeDetectionMaterial.edgeDetectionMode=r,this.edgeDetectionMaterial.predicationMode=i,this.weightsPass=new W(new qn);let s=new v;s.onLoad=()=>{let e=new ne(a);e.name=`SMAA.Search`,e.magFilter=k,e.minFilter=k,e.generateMipmaps=!1,e.needsUpdate=!0,e.flipY=!0,this.weightsMaterial.searchTexture=e;let t=new ne(o);t.name=`SMAA.Area`,t.magFilter=u,t.minFilter=u,t.generateMipmaps=!1,t.needsUpdate=!0,t.flipY=!1,this.weightsMaterial.areaTexture=t,this.dispatchEvent({type:`load`})},s.itemStart(`search`),s.itemStart(`area`),a!==void 0&&o!==void 0?(s.itemEnd(`search`),s.itemEnd(`area`)):typeof Image<`u`&&(a=new Image,o=new Image,a.addEventListener(`load`,()=>s.itemEnd(`search`)),o.addEventListener(`load`,()=>s.itemEnd(`area`)),a.src=Jn,o.src=Yn),this.applyPreset(n)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(e){this.edgeDetectionMaterial.edgeDetectionThreshold=e}setOrthogonalSearchSteps(e){this.weightsMaterial.orthogonalSearchSteps=e}applyPreset(e){let t=this.edgeDetectionMaterial,n=this.weightsMaterial;switch(e){case un.LOW:t.edgeDetectionThreshold=.15,n.orthogonalSearchSteps=4,n.diagonalDetection=!1,n.cornerDetection=!1;break;case un.MEDIUM:t.edgeDetectionThreshold=.1,n.orthogonalSearchSteps=8,n.diagonalDetection=!1,n.cornerDetection=!1;break;case un.HIGH:t.edgeDetectionThreshold=.1,n.orthogonalSearchSteps=16,n.diagonalSearchSteps=8,n.cornerRounding=25,n.diagonalDetection=!0,n.cornerDetection=!0;break;case un.ULTRA:t.edgeDetectionThreshold=.05,n.orthogonalSearchSteps=32,n.diagonalSearchSteps=16,n.cornerRounding=25,n.diagonalDetection=!0,n.cornerDetection=!0;break}}setDepthTexture(e,t=w){this.edgeDetectionMaterial.depthBuffer=e,this.edgeDetectionMaterial.depthPacking=t}update(e,t,n){this.clearPass.render(e,this.renderTargetEdges),this.edgeDetectionPass.render(e,t,this.renderTargetEdges),this.weightsPass.render(e,this.renderTargetEdges,this.renderTargetWeights)}setSize(e,t){this.edgeDetectionMaterial.setSize(e,t),this.weightsMaterial.setSize(e,t),this.renderTargetEdges.setSize(e,t),this.renderTargetWeights.setSize(e,t)}dispose(){let{searchTexture:e,areaTexture:t}=this.weightsMaterial;e!==null&&t!==null&&(e.dispose(),t.dispose()),super.dispose()}static get searchImageDataURL(){return Jn}static get areaImageDataURL(){return Yn}};function $n(e,t,n){return e*(t-n)-t}function er(e,t,n){return Math.min(Math.max((e+t)/(t-n),0),1)}var tr=`#include +#include +uniform vec2 cameraNearFar; +#define cameraNear cameraNearFar.x +#define cameraFar cameraNearFar.y +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a; +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#endif +return depth;} +#else +uniform lowp sampler2D normalBuffer; +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#endif +return depth;} +#endif +uniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform float intensity;uniform float minRadiusScale;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +return orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){float radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;float noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i1.0||coords.t<0.0||coords.t>1.0){continue;}float sampleDepth=readDepth(coords);float viewZ=getViewZ(sampleDepth); +#ifdef PERSPECTIVE_CAMERA +float linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar); +#else +float linearSampleDepth=sampleDepth; +#endif +float proximity=abs(depth-linearSampleDepth);if(proximity +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +#ifdef DOWNSAMPLE_NORMALS +uniform lowp sampler2D normalBuffer; +#endif +varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]this.setSize(s.baseWidth,s.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e,t=w){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,n,r,i){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,n){let r=e.getContext();if(!(r.getExtension(`EXT_color_buffer_float`)||r.getExtension(`EXT_color_buffer_half_float`)))throw Error(`Rendering to float texture is not supported.`)}},cr=`uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;uniform float intensity; +#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH) +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +#endif +#ifdef COLORIZE +uniform vec3 color; +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float aoLinear=texture2D(aoBuffer,uv).r; +#if defined(DEPTH_AWARE_UPSAMPLING) && defined(NORMAL_DEPTH) && __VERSION__ == 300 +vec4 normalDepth[4];normalDepth[0]=textureOffset(normalDepthBuffer,uv,ivec2(0,0));normalDepth[1]=textureOffset(normalDepthBuffer,uv,ivec2(0,1));normalDepth[2]=textureOffset(normalDepthBuffer,uv,ivec2(1,0));normalDepth[3]=textureOffset(normalDepthBuffer,uv,ivec2(1,1));float dot01=dot(normalDepth[0].rgb,normalDepth[1].rgb);float dot02=dot(normalDepth[0].rgb,normalDepth[2].rgb);float dot03=dot(normalDepth[0].rgb,normalDepth[3].rgb);float minDot=min(dot01,min(dot02,dot03));float s=step(THRESHOLD,minDot);float smallestDistance=1.0;int index;for(int i=0;i<4;++i){float distance=abs(depth-normalDepth[i].a);if(distancethis.setSize(E.baseWidth,E.baseHeight)),this.camera=e,this.depthDownsamplingPass=new sr({normalBuffer:t,resolutionScale:te}),this.depthDownsamplingPass.enabled=a===null,this.ssaoPass=new W(new rr(e));let D=new Nt(lr,lr,p);D.wrapS=D.wrapT=d;let O=this.ssaoMaterial;O.normalBuffer=t,O.noiseTexture=D,O.minRadiusScale=v,O.samples=r,O.radius=b,O.rings=i,O.fade=ee,O.bias=S,O.distanceThreshold=m,O.distanceFalloff=h,O.proximityThreshold=g,O.proximityFalloff=_,s!==void 0&&(O.worldDistanceThreshold=s),l!==void 0&&(O.worldDistanceFalloff=l),u!==void 0&&(O.worldProximityThreshold=u),f!==void 0&&(O.worldProximityFalloff=f),a!==null&&(this.ssaoMaterial.normalDepthBuffer=a,this.defines.set(`NORMAL_DEPTH`,`1`)),this.depthAwareUpsampling=o,this.color=C}set mainCamera(e){this.camera=e,this.ssaoMaterial.copyCameraSettings(e)}get normalBuffer(){return this.ssaoMaterial.normalBuffer}set normalBuffer(e){this.ssaoMaterial.normalBuffer=e,this.depthDownsamplingPass.fullscreenMaterial.normalBuffer=e}getResolution(){return this.resolution}get ssaoMaterial(){return this.ssaoPass.fullscreenMaterial}getSSAOMaterial(){return this.ssaoMaterial}get samples(){return this.ssaoMaterial.samples}set samples(e){this.ssaoMaterial.samples=e}get rings(){return this.ssaoMaterial.rings}set rings(e){this.ssaoMaterial.rings=e}get radius(){return this.ssaoMaterial.radius}set radius(e){this.ssaoMaterial.radius=e}get depthAwareUpsampling(){return this.defines.has(`DEPTH_AWARE_UPSAMPLING`)}set depthAwareUpsampling(e){this.depthAwareUpsampling!==e&&(e?this.defines.set(`DEPTH_AWARE_UPSAMPLING`,`1`):this.defines.delete(`DEPTH_AWARE_UPSAMPLING`),this.setChanged())}isDepthAwareUpsamplingEnabled(){return this.depthAwareUpsampling}setDepthAwareUpsamplingEnabled(e){this.depthAwareUpsampling=e}get distanceScaling(){return!0}set distanceScaling(e){}get color(){return this.uniforms.get(`color`).value}set color(e){let n=this.uniforms,r=this.defines;e===null?r.has(`COLORIZE`)&&(r.delete(`COLORIZE`),n.get(`color`).value=null,this.setChanged()):r.has(`COLORIZE`)?n.get(`color`).value.set(e):(r.set(`COLORIZE`,`1`),n.get(`color`).value=new t(e),this.setChanged())}get luminanceInfluence(){return this.uniforms.get(`luminanceInfluence`).value}set luminanceInfluence(e){this.uniforms.get(`luminanceInfluence`).value=e}get intensity(){return this.uniforms.get(`intensity`).value}set intensity(e){this.uniforms.get(`intensity`).value=e}getColor(){return this.color}setColor(e){this.color=e}setDistanceCutoff(e,t){this.ssaoMaterial.distanceThreshold=e,this.ssaoMaterial.distanceFalloff=t}setProximityCutoff(e,t){this.ssaoMaterial.proximityThreshold=e,this.ssaoMaterial.proximityFalloff=t}setDepthTexture(e,t=w){this.depthDownsamplingPass.setDepthTexture(e,t),this.ssaoMaterial.depthBuffer=e,this.ssaoMaterial.depthPacking=t}update(e,t,n){let r=this.renderTarget;this.depthDownsamplingPass.enabled&&this.depthDownsamplingPass.render(e),this.ssaoPass.render(e,null,r)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.ssaoMaterial.copyCameraSettings(this.camera),this.ssaoMaterial.setSize(r,i),this.renderTarget.setSize(r,i),this.depthDownsamplingPass.resolution.scale=n.scale,this.depthDownsamplingPass.setSize(e,t)}initialize(e,t,n){try{let r=this.uniforms.get(`normalDepthBuffer`).value;r===null&&(this.depthDownsamplingPass.initialize(e,t,n),r=this.depthDownsamplingPass.texture,this.uniforms.get(`normalDepthBuffer`).value=r,this.ssaoMaterial.normalDepthBuffer=r,this.defines.set(`NORMAL_DEPTH`,`1`))}catch{this.depthDownsamplingPass.enabled=!1}}},dr=`#ifdef TEXTURE_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +varying vec2 vUv2;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){ +#ifdef UV_TRANSFORM +vec4 texel=texture2D(map,vUv2); +#else +vec4 texel=texture2D(map,uv); +#endif +outputColor=TEXEL;outputColor.a=max(inputColor.a,outputColor.a);}`,fr=`#ifdef ASPECT_CORRECTION +uniform float scale; +#else +uniform mat3 uvTransform; +#endif +varying vec2 vUv2;void mainSupport(const in vec2 uv){ +#ifdef ASPECT_CORRECTION +vUv2=uv*vec2(aspect,1.0)*scale; +#else +vUv2=(uvTransform*vec3(uv,1.0)).xy; +#endif +}`,pr=class extends B{constructor({blendFunction:e,texture:t=null,aspectCorrection:n=!1}={}){super(`TextureEffect`,dr,{blendFunction:e,defines:new Map([[`TEXEL`,`texel`]]),uniforms:new Map([[`map`,new M(null)],[`scale`,new M(1)],[`uvTransform`,new M(null)]])}),this.texture=t,this.aspectCorrection=n}get texture(){return this.uniforms.get(`map`).value}set texture(e){let t=this.texture,n=this.uniforms,r=this.defines;t!==e&&(n.get(`map`).value=e,n.get(`uvTransform`).value=e.matrix,r.delete(`TEXTURE_PRECISION_HIGH`),e!==null&&(e.matrixAutoUpdate?(r.set(`UV_TRANSFORM`,`1`),this.setVertexShader(fr)):(r.delete(`UV_TRANSFORM`),this.setVertexShader(null)),e.type!==1009&&r.set(`TEXTURE_PRECISION_HIGH`,`1`),(t===null||t.type!==e.type||t.encoding!==e.encoding)&&this.setChanged()))}getTexture(){return this.texture}setTexture(e){this.texture=e}get aspectCorrection(){return this.defines.has(`ASPECT_CORRECTION`)}set aspectCorrection(e){this.aspectCorrection!==e&&(e?this.defines.set(`ASPECT_CORRECTION`,`1`):this.defines.delete(`ASPECT_CORRECTION`),this.setChanged())}get uvTransform(){let e=this.texture;return e!==null&&e.matrixAutoUpdate}set uvTransform(e){let t=this.texture;t!==null&&(t.matrixAutoUpdate=e)}setTextureSwizzleRGBA(e,t=e,n=e,r=e){let i=`rgba`,a=``;(e!==U.RED||t!==U.GREEN||n!==U.BLUE||r!==U.ALPHA)&&(a=[`.`,i[e],i[t],i[n],i[r]].join(``)),this.defines.set(`TEXEL`,`texel`+a),this.setChanged()}update(e,t,n){this.texture.matrixAutoUpdate&&this.texture.updateMatrix()}},mr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec4 maskParams;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;float linearGradientMask(const in float x){return smoothstep(maskParams.x,maskParams.y,x)-smoothstep(maskParams.w,maskParams.z,x);}void main(){vec2 dUv=vOffset*(1.0-linearGradientMask(vUv2.y));vec4 sum=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y-dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y-dUv.y));gl_FragColor=sum*0.25; +#include +}`,hr=`uniform vec4 texelSize;uniform float kernel;uniform float scale;uniform float aspect;uniform vec2 rotation;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;void main(){vec2 uv=position.xy*0.5+0.5;vUv=uv;vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));vOffset=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;gl_Position=vec4(position.xy,1.0,1.0);}`,gr=class extends He{constructor({kernelSize:e=V.MEDIUM,offset:t=0,rotation:n=0,focusArea:r=.4,feather:i=.3}={}){super(),this.fragmentShader=mr,this.vertexShader=hr,this.kernelSize=e,this.uniforms.aspect=new M(1),this.uniforms.rotation=new M(new D),this.uniforms.maskParams=new M(new E),this._offset=t,this._focusArea=r,this._feather=i,this.rotation=n,this.updateParams()}updateParams(){let e=this.uniforms.maskParams.value,t=Math.max(this.focusArea,0),n=Math.max(t-this.feather,0);e.set(this.offset-t,this.offset-n,this.offset+t,this.offset+n)}get rotation(){return Math.acos(this.uniforms.rotation.value.x)}set rotation(e){this.uniforms.rotation.value.set(Math.cos(e),Math.sin(e))}get offset(){return this._offset}set offset(e){this._offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.updateParams()}setSize(e,t){super.setSize(e,t),this.uniforms.aspect.value=e/t}},_r=class extends H{constructor({offset:e=0,rotation:t=0,focusArea:n=.4,feather:r=.3,kernelSize:i=V.MEDIUM,resolutionScale:a=.5,resolutionX:o=R.AUTO_SIZE,resolutionY:s=R.AUTO_SIZE}={}){super({kernelSize:i,resolutionScale:a,resolutionX:o,resolutionY:s}),this.blurMaterial=new gr({kernelSize:i,offset:e,rotation:t,focusArea:n,feather:r})}},vr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D map; +#else +uniform lowp sampler2D map; +#endif +uniform vec2 maskParams;varying vec2 vUv2;float linearGradientMask(const in float x){return step(maskParams.x,x)-step(maskParams.y,x);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float mask=linearGradientMask(vUv2.y);vec4 texel=texture2D(map,uv);outputColor=mix(texel,inputColor,mask);}`,yr=`uniform vec2 rotation;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));}`,br=class extends B{constructor({blendFunction:e,offset:t=0,rotation:n=0,focusArea:r=.4,feather:i=.3,kernelSize:a=V.MEDIUM,resolutionScale:o=.5,resolutionX:s=R.AUTO_SIZE,resolutionY:l=R.AUTO_SIZE}={}){super(`TiltShiftEffect`,vr,{vertexShader:yr,blendFunction:e,uniforms:new Map([[`rotation`,new M(new D)],[`maskParams`,new M(new D)],[`map`,new M(null)]])}),this._offset=t,this._focusArea=r,this._feather=i,this.renderTarget=new c(1,1,{depthBuffer:!1}),this.renderTarget.texture.name=`TiltShift.Target`,this.uniforms.get(`map`).value=this.renderTarget.texture,this.blurPass=new _r({kernelSize:a,resolutionScale:o,resolutionX:s,resolutionY:l,offset:t,rotation:n,focusArea:r,feather:i});let u=this.resolution=new R(this,s,l,o);u.addEventListener(`change`,e=>this.setSize(u.baseWidth,u.baseHeight)),this.rotation=n,this.updateParams()}updateParams(){let e=this.uniforms.get(`maskParams`).value,t=Math.max(this.focusArea-this.feather,0);e.set(this.offset-t,this.offset+t)}get rotation(){return Math.acos(this.uniforms.get(`rotation`).value.x)}set rotation(e){this.uniforms.get(`rotation`).value.set(Math.cos(e),Math.sin(e)),this.blurPass.blurMaterial.rotation=e}get offset(){return this._offset}set offset(e){this._offset=e,this.blurPass.blurMaterial.offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.blurPass.blurMaterial.focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.blurPass.blurMaterial.feather=e,this.updateParams()}get bias(){return 0}set bias(e){}update(e,t,n){this.blurPass.render(e,t,this.renderTarget)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height),this.blurPass.resolution.copy(n)}initialize(e,t,n){this.blurPass.initialize(e,t,n),n!==void 0&&(this.renderTarget.texture.type=n,e!==null&&e.outputColorSpace===`srgb`&&(this.renderTarget.texture.colorSpace=C))}},xr=`#include +#define packFloatToRGBA(v) packDepthToRGBA(v) +#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) +uniform lowp sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=unpackRGBAToFloat(texture2D(luminanceBuffer0,vUv)); +#if __VERSION__ < 300 +float l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r; +#else +float l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r; +#endif +l0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor=(adaptedLum==1.0)?vec4(1.0):packFloatToRGBA(adaptedLum);}`,Sr=class extends j{constructor(){super({name:`AdaptiveLuminanceMaterial`,defines:{MIP_LEVEL_1X1:`0.0`},uniforms:{luminanceBuffer0:new M(null),luminanceBuffer1:new M(null),minLuminance:new M(.01),deltaTime:new M(0),tau:new M(1)},extensions:{shaderTextureLOD:!0},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:xr,vertexShader:P})}set luminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}setLuminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}set luminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}setLuminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}set mipLevel1x1(e){this.defines.MIP_LEVEL_1X1=e.toFixed(1),this.needsUpdate=!0}setMipLevel1x1(e){this.mipLevel1x1=e}set deltaTime(e){this.uniforms.deltaTime.value=e}setDeltaTime(e){this.uniforms.deltaTime.value=e}get minLuminance(){return this.uniforms.minLuminance.value}set minLuminance(e){this.uniforms.minLuminance.value=e}getMinLuminance(){return this.uniforms.minLuminance.value}setMinLuminance(e){this.uniforms.minLuminance.value=e}get adaptationRate(){return this.uniforms.tau.value}set adaptationRate(e){this.uniforms.tau.value=e}getAdaptationRate(){return this.uniforms.tau.value}setAdaptationRate(e){this.uniforms.tau.value=e}},Cr=class extends N{constructor(e,{minLuminance:t=.01,adaptationRate:n=1}={}){super(`AdaptiveLuminancePass`),this.fullscreenMaterial=new Sr,this.needsSwap=!1,this.renderTargetPrevious=new c(1,1,{minFilter:k,magFilter:k,depthBuffer:!1}),this.renderTargetPrevious.texture.name=`Luminance.Previous`;let r=this.fullscreenMaterial;r.luminanceBuffer0=this.renderTargetPrevious.texture,r.luminanceBuffer1=e,r.minLuminance=t,r.adaptationRate=n,this.renderTargetAdapted=this.renderTargetPrevious.clone(),this.renderTargetAdapted.texture.name=`Luminance.Adapted`,this.copyPass=new ge(this.renderTargetPrevious,!1)}get texture(){return this.renderTargetAdapted.texture}getTexture(){return this.renderTargetAdapted.texture}set mipLevel1x1(e){this.fullscreenMaterial.mipLevel1x1=e}get adaptationRate(){return this.fullscreenMaterial.adaptationRate}set adaptationRate(e){this.fullscreenMaterial.adaptationRate=e}render(e,t,n,r,i){this.fullscreenMaterial.deltaTime=r,e.setRenderTarget(this.renderToScreen?null:this.renderTargetAdapted),e.render(this.scene,this.camera),this.copyPass.render(e,this.renderTargetAdapted)}},wr=`#include +uniform float whitePoint; +#if TONE_MAPPING_MODE == 2 || TONE_MAPPING_MODE == 3 +uniform float middleGrey; +#if TONE_MAPPING_MODE == 3 +uniform lowp sampler2D luminanceBuffer; +#else +uniform float averageLuminance; +#endif +vec3 Reinhard2ToneMapping(vec3 color){color*=toneMappingExposure;float l=luminance(color); +#if TONE_MAPPING_MODE == 3 +float lumAvg=unpackRGBAToFloat(texture2D(luminanceBuffer,vec2(0.5))); +#else +float lumAvg=averageLuminance; +#endif +float lumScaled=(l*middleGrey)/max(lumAvg,1e-6);float lumCompressed=lumScaled*(1.0+lumScaled/(whitePoint*whitePoint));lumCompressed/=(1.0+lumScaled);return clamp(lumCompressed*color,0.0,1.0);} +#elif TONE_MAPPING_MODE == 4 +#define A 0.15 +#define B 0.50 +#define C 0.10 +#define D 0.20 +#define E 0.02 +#define F 0.30 +vec3 Uncharted2Helper(const in vec3 x){return((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}vec3 Uncharted2ToneMapping(vec3 color){color*=toneMappingExposure;return clamp(Uncharted2Helper(color)/Uncharted2Helper(vec3(whitePoint)),0.0,1.0);} +#endif +void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){ +#if TONE_MAPPING_MODE == 2 || TONE_MAPPING_MODE == 3 +outputColor=vec4(Reinhard2ToneMapping(inputColor.rgb),inputColor.a); +#elif TONE_MAPPING_MODE == 4 +outputColor=vec4(Uncharted2ToneMapping(inputColor.rgb),inputColor.a); +#else +outputColor=vec4(toneMapping(inputColor.rgb),inputColor.a); +#endif +}`,Tr=class extends B{constructor({blendFunction:e=z.SRC,adaptive:t=!1,mode:n=t?q.REINHARD2_ADAPTIVE:q.AGX,resolution:r=256,maxLuminance:i=4,whitePoint:a=i,middleGrey:o=.6,minLuminance:s=.01,averageLuminance:l=1,adaptationRate:u=1}={}){super(`ToneMappingEffect`,wr,{blendFunction:e,uniforms:new Map([[`luminanceBuffer`,new M(null)],[`maxLuminance`,new M(i)],[`whitePoint`,new M(a)],[`middleGrey`,new M(o)],[`averageLuminance`,new M(l)]])}),this.renderTargetLuminance=new c(1,1,{minFilter:h,depthBuffer:!1}),this.renderTargetLuminance.texture.generateMipmaps=!0,this.renderTargetLuminance.texture.name=`Luminance`,this.luminancePass=new Ge({renderTarget:this.renderTargetLuminance}),this.adaptiveLuminancePass=new Cr(this.luminancePass.texture,{minLuminance:s,adaptationRate:u}),this.uniforms.get(`luminanceBuffer`).value=this.adaptiveLuminancePass.texture,this.resolution=r,this.mode=n}get mode(){return Number(this.defines.get(`TONE_MAPPING_MODE`))}set mode(e){if(this.mode===e)return;let t=`169.19`.replace(/\D+/g,``)>=168?`CineonToneMapping(texel)`:`OptimizedCineonToneMapping(texel)`;switch(this.defines.clear(),this.defines.set(`TONE_MAPPING_MODE`,e.toFixed(0)),e){case q.LINEAR:this.defines.set(`toneMapping(texel)`,`LinearToneMapping(texel)`);break;case q.REINHARD:this.defines.set(`toneMapping(texel)`,`ReinhardToneMapping(texel)`);break;case q.CINEON:case q.OPTIMIZED_CINEON:this.defines.set(`toneMapping(texel)`,t);break;case q.ACES_FILMIC:this.defines.set(`toneMapping(texel)`,`ACESFilmicToneMapping(texel)`);break;case q.AGX:this.defines.set(`toneMapping(texel)`,`AgXToneMapping(texel)`);break;case q.NEUTRAL:this.defines.set(`toneMapping(texel)`,`NeutralToneMapping(texel)`);break;default:this.defines.set(`toneMapping(texel)`,`texel`);break}this.adaptiveLuminancePass.enabled=e===q.REINHARD2_ADAPTIVE,this.setChanged()}getMode(){return this.mode}setMode(e){this.mode=e}get whitePoint(){return this.uniforms.get(`whitePoint`).value}set whitePoint(e){this.uniforms.get(`whitePoint`).value=e}get middleGrey(){return this.uniforms.get(`middleGrey`).value}set middleGrey(e){this.uniforms.get(`middleGrey`).value=e}get averageLuminance(){return this.uniforms.get(`averageLuminance`).value}set averageLuminance(e){this.uniforms.get(`averageLuminance`).value=e}get adaptiveLuminanceMaterial(){return this.adaptiveLuminancePass.fullscreenMaterial}getAdaptiveLuminanceMaterial(){return this.adaptiveLuminanceMaterial}get resolution(){return this.luminancePass.resolution.width}set resolution(e){let t=Math.max(0,Math.ceil(Math.log2(e))),n=2**t;this.luminancePass.resolution.setPreferredSize(n,n),this.adaptiveLuminanceMaterial.mipLevel1x1=t}getResolution(){return this.resolution}setResolution(e){this.resolution=e}get adaptive(){return this.mode===q.REINHARD2_ADAPTIVE}set adaptive(e){this.mode=e?q.REINHARD2_ADAPTIVE:q.REINHARD2}get adaptationRate(){return this.adaptiveLuminanceMaterial.adaptationRate}set adaptationRate(e){this.adaptiveLuminanceMaterial.adaptationRate=e}get distinction(){return console.warn(this.name,`distinction was removed.`),1}set distinction(e){console.warn(this.name,`distinction was removed.`)}update(e,t,n){this.adaptiveLuminancePass.enabled&&(this.luminancePass.render(e,t),this.adaptiveLuminancePass.render(e,null,null,n))}initialize(e,t,n){this.adaptiveLuminancePass.initialize(e,t,n)}},Er=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb; +#if VIGNETTE_TECHNIQUE == 0 +float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset)); +#else +vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord)); +#endif +outputColor=vec4(color,inputColor.a);}`,Dr=class extends B{constructor({blendFunction:e,eskil:t=!1,technique:n=t?dn.ESKIL:dn.DEFAULT,offset:r=.5,darkness:i=.5}={}){super(`VignetteEffect`,Er,{blendFunction:e,defines:new Map([[`VIGNETTE_TECHNIQUE`,n.toFixed(0)]]),uniforms:new Map([[`offset`,new M(r)],[`darkness`,new M(i)]])})}get technique(){return Number(this.defines.get(`VIGNETTE_TECHNIQUE`))}set technique(e){this.technique!==e&&(this.defines.set(`VIGNETTE_TECHNIQUE`,e.toFixed(0)),this.setChanged())}get eskil(){return this.technique===dn.ESKIL}set eskil(e){this.technique=e?dn.ESKIL:dn.DEFAULT}getTechnique(){return this.technique}setTechnique(e){this.technique=e}get offset(){return this.uniforms.get(`offset`).value}set offset(e){this.uniforms.get(`offset`).value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}get darkness(){return this.uniforms.get(`darkness`).value}set darkness(e){this.uniforms.get(`darkness`).value=e}getDarkness(){return this.darkness}setDarkness(e){this.darkness=e}},Or=class extends b{load(e,t=()=>{},n=()=>{},r=null){let i=this.manager,a=new v,o=new re(a);o.setPath(this.path),o.setResponseType(`text`),i.itemStart(e),o.load(e,n=>{try{let r=this.parse(n);i.itemEnd(e),t(r)}catch(t){a.onError(e),r(t)}},n)}loadAsync(e,t=()=>{}){let n=this.manager,r=new v;return new Promise((i,a)=>{r.onError=e=>{n.itemError(e),a(`Failed to load ${e}`)},this.load(e,i,t)})}parse(e){let t=/^[\d ]+$/m,n=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm,r=t.exec(e);if(r===null)throw Error(`Missing grid information`);let i=r[0].trim().split(/\s+/g).map(e=>Number(e)),a=i[1]-i[0],o=i.length,s=o**2;for(let e=1,t=i.length;e{},n=()=>{},r=null){let i=this.manager,a=new v,o=new re(a);o.setPath(this.path),o.setResponseType(`text`),o.load(e,n=>{try{let r=this.parse(n);i.itemEnd(e),t(r)}catch(t){a.onError(e),r(t)}},n)}loadAsync(e,t=()=>{}){let n=this.manager,r=new v;return new Promise((i,a)=>{r.onError=e=>{n.itemError(e),a(`Failed to load ${e}`)},this.load(e,i,t)})}parse(e){let t=/TITLE +"([^"]*)"/,r=/LUT_3D_SIZE +(\d+)/,i=/DOMAIN_MIN +([\d.]+) +([\d.]+) +([\d.]+)/,a=/DOMAIN_MAX +([\d.]+) +([\d.]+) +([\d.]+)/,o=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm,s=t.exec(e),c=s===null?null:s[1];if(s=r.exec(e),s===null)throw Error(`Missing LUT_3D_SIZE information`);let l=Number(s[1]),u=new Float32Array(l**3*4),d=new n(0,0,0),f=new n(1,1,1);if(s=i.exec(e),s!==null&&d.set(Number(s[1]),Number(s[2]),Number(s[3])),s=a.exec(e),s!==null&&f.set(Number(s[1]),Number(s[2]),Number(s[3])),d.x>f.x||d.y>f.y||d.z>f.z)throw d.set(0,0,0),f.set(1,1,1),Error(`Invalid input domain`);let p=0;for(;(s=o.exec(e))!==null;)u[p++]=Number(s[1]),u[p++]=Number(s[2]),u[p++]=Number(s[3]),u[p++]=1;let m=new nn(u,l);return m.domainMin.copy(d),m.domainMax.copy(f),c!==null&&(m.name=c),m}},Ar=class extends b{load(e=()=>{},t=null){arguments.length===4?(e=arguments[1],t=arguments[3]):(arguments.length===3||typeof arguments[0]!=`function`)&&(e=arguments[1],t=null);let n=this.manager,r=new v;return new Promise((i,a)=>{let o=new Image,s=new Image;r.onError=e=>{n.itemError(e),t===null?a(`Failed to load ${e}`):(t(`Failed to load ${e}`),i())},r.onLoad=()=>{let t=[o,s];e(t),i(t)},o.addEventListener(`error`,e=>{r.itemError(`smaa-search`)}),s.addEventListener(`error`,e=>{r.itemError(`smaa-area`)}),o.addEventListener(`load`,()=>{n.itemEnd(`smaa-search`),r.itemEnd(`smaa-search`)}),s.addEventListener(`load`,()=>{n.itemEnd(`smaa-area`),r.itemEnd(`smaa-area`)}),n.itemStart(`smaa-search`),n.itemStart(`smaa-area`),r.itemStart(`smaa-search`),r.itemStart(`smaa-area`),o.src=Jn,s.src=Yn})}},jr=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#ifdef BILATERAL +#include +uniform vec2 cameraNearFar; +#define cameraNear cameraNearFar.x +#define cameraFar cameraNearFar.y +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a; +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#else +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;} +#endif +float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#else +return orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y); +#endif +} +#ifdef PERSPECTIVE_CAMERA +#define linearDepth(v) viewZToOrthographicDepth(getViewZ(readDepth(v)), cameraNearFar.x, cameraNearFar.y) +#else +#define linearDepth(v) readDepth(v) +#endif +#endif +#define getTexel(v) texture2D(inputBuffer, v) +#if KERNEL_SIZE == 3 +varying vec2 vUv00,vUv01,vUv02;varying vec2 vUv03,vUv04,vUv05;varying vec2 vUv06,vUv07,vUv08; +#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13 +varying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24; +#else +uniform vec2 texelSize;uniform float scale;varying vec2 vUv; +#endif +void main(){ +#if KERNEL_SIZE == 3 +vec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08)); +#ifdef BILATERAL +float z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08)); +#endif +#elif KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13 +vec4 c[]=vec4[KERNEL_SIZE_SQ](getTexel(vUv00),getTexel(vUv01),getTexel(vUv02),getTexel(vUv03),getTexel(vUv04),getTexel(vUv05),getTexel(vUv06),getTexel(vUv07),getTexel(vUv08),getTexel(vUv09),getTexel(vUv10),getTexel(vUv11),getTexel(vUv12),getTexel(vUv13),getTexel(vUv14),getTexel(vUv15),getTexel(vUv16),getTexel(vUv17),getTexel(vUv18),getTexel(vUv19),getTexel(vUv20),getTexel(vUv21),getTexel(vUv22),getTexel(vUv23),getTexel(vUv24)); +#ifdef BILATERAL +float z[]=float[KERNEL_SIZE_SQ](linearDepth(vUv00),linearDepth(vUv01),linearDepth(vUv02),linearDepth(vUv03),linearDepth(vUv04),linearDepth(vUv05),linearDepth(vUv06),linearDepth(vUv07),linearDepth(vUv08),linearDepth(vUv09),linearDepth(vUv10),linearDepth(vUv11),linearDepth(vUv12),linearDepth(vUv13),linearDepth(vUv14),linearDepth(vUv15),linearDepth(vUv16),linearDepth(vUv17),linearDepth(vUv18),linearDepth(vUv19),linearDepth(vUv20),linearDepth(vUv21),linearDepth(vUv22),linearDepth(vUv23),linearDepth(vUv24)); +#endif +#endif +vec4 result=vec4(0.0); +#ifdef BILATERAL +float w=0.0; +#if KERNEL_SIZE == 3 || (KERNEL_SIZE == 5 && MAX_VARYING_VECTORS >= 13) +float centerDepth=z[KERNEL_SIZE_SQ_HALF];for(int i=0;i= 13) +for(int i=0;i= 13 +varying vec2 vUv00,vUv01,vUv02,vUv03,vUv04;varying vec2 vUv05,vUv06,vUv07,vUv08,vUv09;varying vec2 vUv10,vUv11,vUv12,vUv13,vUv14;varying vec2 vUv15,vUv16,vUv17,vUv18,vUv19;varying vec2 vUv20,vUv21,vUv22,vUv23,vUv24; +#else +varying vec2 vUv; +#endif +void main(){vec2 uv=position.xy*0.5+0.5; +#if KERNEL_SIZE == 3 +vec2 s=texelSize*scale;vUv00=uv+s*vec2(-1.0,-1.0);vUv01=uv+s*vec2(0.0,-1.0);vUv02=uv+s*vec2(1.0,-1.0);vUv03=uv+s*vec2(-1.0,0.0);vUv04=uv;vUv05=uv+s*vec2(1.0,0.0);vUv06=uv+s*vec2(-1.0,1.0);vUv07=uv+s*vec2(0.0,1.0);vUv08=uv+s*vec2(1.0,1.0); +#elif KERNEL_SIZE == 5 +vec2 s=texelSize*scale;vUv00=uv+s*vec2(-2.0,-2.0);vUv01=uv+s*vec2(-1.0,-2.0);vUv02=uv+s*vec2(0.0,-2.0);vUv03=uv+s*vec2(1.0,-2.0);vUv04=uv+s*vec2(2.0,-2.0);vUv05=uv+s*vec2(-2.0,-1.0);vUv06=uv+s*vec2(-1.0,-1.0);vUv07=uv+s*vec2(0.0,-1.0);vUv08=uv+s*vec2(1.0,-1.0);vUv09=uv+s*vec2(2.0,-1.0);vUv10=uv+s*vec2(-2.0,0.0);vUv11=uv+s*vec2(-1.0,0.0);vUv12=uv;vUv13=uv+s*vec2(1.0,0.0);vUv14=uv+s*vec2(2.0,0.0);vUv15=uv+s*vec2(-2.0,1.0);vUv16=uv+s*vec2(-1.0,1.0);vUv17=uv+s*vec2(0.0,1.0);vUv18=uv+s*vec2(1.0,1.0);vUv19=uv+s*vec2(2.0,1.0);vUv20=uv+s*vec2(-2.0,2.0);vUv21=uv+s*vec2(-1.0,2.0);vUv22=uv+s*vec2(0.0,2.0);vUv23=uv+s*vec2(1.0,2.0);vUv24=uv+s*vec2(2.0,2.0); +#else +vUv=uv; +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Nr=class extends j{constructor({bilateral:e=!1,kernelSize:t=5}={}){super({name:`BoxBlurMaterial`,defines:{DEPTH_PACKING:`0`,DISTANCE_THRESHOLD:`0.1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),normalDepthBuffer:new M(null),texelSize:new M(new D),cameraNearFar:new M(new D),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:jr,vertexShader:Mr}),this.bilateral=e,this.kernelSize=t,this.maxVaryingVectors=8}set maxVaryingVectors(e){this.defines.MAX_VARYING_VECTORS=e.toFixed(0)}get kernelSize(){return Number(this.defines.KERNEL_SIZE)}set kernelSize(e){if(e%2==0)throw Error(`The kernel size must be an odd number`);this.defines.KERNEL_SIZE=e.toFixed(0),this.defines.KERNEL_SIZE_HALF=Math.floor(e/2).toFixed(0),this.defines.KERNEL_SIZE_SQ=(e**2).toFixed(0),this.defines.KERNEL_SIZE_SQ_HALF=Math.floor(e**2/2).toFixed(0),this.defines.INV_KERNEL_SIZE_SQ=(1/e**2).toFixed(6),this.needsUpdate=!0}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}get near(){return this.uniforms.cameraNearFar.value.x}get far(){return this.uniforms.cameraNearFar.value.y}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set normalDepthBuffer(e){this.uniforms.normalDepthBuffer.value=e,e===null?delete this.defines.NORMAL_DEPTH:this.defines.NORMAL_DEPTH=`1`,this.needsUpdate=!0}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get bilateral(){return this.defines.BILATERAL!==void 0}set bilateral(e){e===null?delete this.defines.BILATERAL:this.defines.BILATERAL=`1`,this.needsUpdate=!0}get worldDistanceThreshold(){return-$n(Number(this.defines.DISTANCE_THRESHOLD),this.near,this.far)}set worldDistanceThreshold(e){let t=er(-e,this.near,this.far);this.defines.DISTANCE_THRESHOLD=t.toFixed(12),this.needsUpdate=!0}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Pr=`#include +varying vec2 vUv; +#ifdef NORMAL_DEPTH +#ifdef GL_FRAGMENT_PRECISION_HIGH +uniform highp sampler2D normalDepthBuffer; +#else +uniform mediump sampler2D normalDepthBuffer; +#endif +float readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;} +#else +#if INPUT_DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +float readDepth(const in vec2 uv){ +#if INPUT_DEPTH_PACKING == 3201 +return unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +return texture2D(depthBuffer,uv).r; +#endif +} +#endif +void main(){ +#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING +gl_FragColor=texture2D(depthBuffer,vUv); +#else +float depth=readDepth(vUv); +#if OUTPUT_DEPTH_PACKING == 3201 +gl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth); +#else +gl_FragColor=vec4(vec3(depth),1.0); +#endif +#endif +}`,Fr=`varying vec2 vUv; +#if DEPTH_COPY_MODE == 1 +uniform vec2 texelPosition; +#endif +void main(){ +#if DEPTH_COPY_MODE == 1 +vUv=texelPosition; +#else +vUv=position.xy*0.5+0.5; +#endif +gl_Position=vec4(position.xy,1.0,1.0);}`,Ir=class extends j{constructor(){super({name:`DepthCopyMaterial`,defines:{INPUT_DEPTH_PACKING:`0`,OUTPUT_DEPTH_PACKING:`0`,DEPTH_COPY_MODE:`0`},uniforms:{depthBuffer:new M(null),texelPosition:new M(new D)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Pr,vertexShader:Fr}),this.depthCopyMode=on.FULL}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set inputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.inputDepthPacking=t}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(e){this.uniforms.texelPosition.value=e}get mode(){return this.depthCopyMode}set mode(e){this.depthCopyMode=e,this.defines.DEPTH_COPY_MODE=e.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(e){this.mode=e}},Lr=`#include +#include +#include +#define packFloatToRGBA(v) packDepthToRGBA(v) +#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) +#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +#if DEPTH_PACKING == 3201 +uniform lowp sampler2D depthBuffer; +#elif defined(GL_FRAGMENT_PRECISION_HIGH) +uniform highp sampler2D depthBuffer; +#else +uniform mediump sampler2D depthBuffer; +#endif +uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const in vec4 value){return vec4(mix(pow(value.rgb*0.9478672986+vec3(0.0521327014),vec3(2.4)),value.rgb*0.0773993808,vec3(lessThanEqual(value.rgb,vec3(0.04045)))),value.a);}float readDepth(const in vec2 uv){ +#if DEPTH_PACKING == 3201 +float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); +#else +float depth=texture2D(depthBuffer,uv).r; +#endif +#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) +float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; +#elif defined(USE_REVERSED_DEPTH_BUFFER) +depth=1.0-depth; +#endif +return depth;}float getViewZ(const in float depth){ +#ifdef PERSPECTIVE_CAMERA +return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); +#else +return orthographicDepthToViewZ(depth,cameraNear,cameraFar); +#endif +}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0; +#ifdef ENCODE_OUTPUT +#include +#endif +#include +}`,Rr=`uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}`,zr=class extends j{constructor(e,t,n,r,i=!1){super({name:`EffectMaterial`,defines:{THREE_REVISION:o.replace(/\D+/g,``),DEPTH_PACKING:`0`,ENCODE_OUTPUT:`1`},uniforms:{inputBuffer:new M(null),depthBuffer:new M(null),resolution:new M(new D),texelSize:new M(new D),cameraNear:new M(.3),cameraFar:new M(1e3),aspect:new M(1),time:new M(0)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:i}),e&&this.setShaderParts(e),t&&this.setDefines(t),n&&this.setUniforms(n),this.copyCameraSettings(r)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=w){this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader=Lr.replace(I.FRAGMENT_HEAD,e.get(I.FRAGMENT_HEAD)||``).replace(I.FRAGMENT_MAIN_UV,e.get(I.FRAGMENT_MAIN_UV)||``).replace(I.FRAGMENT_MAIN_IMAGE,e.get(I.FRAGMENT_MAIN_IMAGE)||``),this.vertexShader=Rr.replace(I.VERTEX_HEAD,e.get(I.VERTEX_HEAD)||``).replace(I.VERTEX_MAIN_SUPPORT,e.get(I.VERTEX_MAIN_SUPPORT)||``),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){this.extensions={};for(let t of e)this.extensions[t]=!0;return this}get encodeOutput(){return this.defines.ENCODE_OUTPUT!==void 0}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT=`1`:delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof T?this.defines.PERSPECTIVE_CAMERA=`1`:delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let n=this.uniforms;n.resolution.value.set(e,t),n.texelSize.value.set(1/e,1/t),n.aspect.value=e/t}static get Section(){return I}},Br=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform mediump sampler2D inputBuffer; +#else +uniform lowp sampler2D inputBuffer; +#endif +uniform vec2 kernel[STEPS];varying vec2 vOffset;varying vec2 vUv;void main(){vec4 result=texture2D(inputBuffer,vUv)*kernel[0].y;for(int i=1;i +}`,Vr=`uniform vec2 texelSize;uniform vec2 direction;uniform float scale;varying vec2 vOffset;varying vec2 vUv;void main(){vOffset=direction*texelSize*scale;vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,Hr=class extends j{constructor({kernelSize:e=35}={}){super({name:`GaussianBlurMaterial`,uniforms:{inputBuffer:new M(null),texelSize:new M(new D),direction:new M(new D),kernel:new M(null),scale:new M(1)},blending:0,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Br,vertexShader:Vr}),this._kernelSize=0,this.kernelSize=e}set inputBuffer(e){this.uniforms.inputBuffer.value=e}get kernelSize(){return this._kernelSize}set kernelSize(e){this._kernelSize=e,this.generateKernel(e)}get direction(){return this.uniforms.direction.value}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}generateKernel(e){let t=new Ee(e),n=t.linearSteps,r=new Float64Array(n*2);for(let e=0,i=0;ethis.setSize(o.baseWidth,o.baseHeight)),this.iterations=t}set mainCamera(e){this.blurMaterial.copyCameraSettings(e)}setDepthTexture(e,t=w){this.blurMaterial.depthBuffer=e,this.blurMaterial.depthPacking=t}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial;this.fullscreenMaterial=l;let u=t;for(let t=0,n=Math.max(this.iterations,1);t=167?qr:Kr;return(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3])/255}var Yr=class extends Wr{constructor({depthPacking:e=i,mode:t=on.SINGLE}={}){if(e!==3201&&e!==3200)throw Error(`Unsupported depth packing: ${e}`);super({depthPacking:e}),this.name=`DepthPickingPass`,this.fullscreenMaterial.mode=t,this.pixelBuffer=e===3201?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(e){return this.fullscreenMaterial.texelPosition.set(e.x*.5+.5,e.y*.5+.5),new Promise(e=>{this.callback=e})}render(e,t,n,r,i){let a=this.fullscreenMaterial,o=a.mode;if(o===on.FULL&&super.render(e),this.callback!==null){let t=this.renderTarget,n=this.pixelBuffer,r=t.texture.type!==A,i=0,s=0;if(o===on.SINGLE)super.render(e);else{let e=a.texelPosition;i=Math.round(e.x*t.width),s=Math.round(e.y*t.height)}e.readRenderTargetPixels(t,i,s,1,1,n),this.callback(r?Jr(n):n[0]),this.callback=null}}setSize(e,t){this.fullscreenMaterial.mode===on.FULL&&super.setSize(e,t)}};function Xr(e,t,n){for(let r of t){let t=`$1`+e+r.charAt(0).toUpperCase()+r.slice(1),i=RegExp(`([^\\.])(\\b`+r+`\\b)`,`g`);for(let e of n.entries())e[1]!==null&&n.set(e[0],e[1].replace(i,t))}}function Zr(e,t,n){let r=t.getFragmentShader(),i=t.getVertexShader(),a=r!==void 0&&/mainImage/.test(r),o=r!==void 0&&/mainUv/.test(r);if(n.attributes|=t.getAttributes(),r===void 0)throw Error(`Missing fragment shader (${t.name})`);if(o&&(n.attributes&F.CONVOLUTION)!==0)throw Error(`Effects that transform UVs are incompatible with convolution effects (${t.name})`);if(!a&&!o)throw Error(`Could not find mainImage or mainUv function (${t.name})`);{let s=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,c=n.shaderParts,l=c.get(I.FRAGMENT_HEAD)||``,u=c.get(I.FRAGMENT_MAIN_UV)||``,d=c.get(I.FRAGMENT_MAIN_IMAGE)||``,f=c.get(I.VERTEX_HEAD)||``,p=c.get(I.VERTEX_MAIN_SUPPORT)||``,m=new Set,h=new Set;if(o&&(u+=` ${e}MainUv(UV); +`,n.uvTransformation=!0),i!==null&&/mainSupport/.test(i)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(i);p+=` ${e}MainSupport(`,p+=t?`vUv); +`:`); +`;for(let e of i.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(let t of e[1].split(/\s*,\s*/))n.varyings.add(t),m.add(t),h.add(t);for(let e of i.matchAll(s))h.add(e[1])}for(let e of r.matchAll(s))h.add(e[1]);for(let e of t.defines.keys())h.add(e.replace(/\([\w\s,]*\)/g,``));for(let e of t.uniforms.keys())h.add(e);h.delete(`while`),h.delete(`for`),h.delete(`if`),t.uniforms.forEach((t,r)=>n.uniforms.set(e+r.charAt(0).toUpperCase()+r.slice(1),t)),t.defines.forEach((t,r)=>n.defines.set(e+r.charAt(0).toUpperCase()+r.slice(1),t));let g=new Map([[`fragment`,r],[`vertex`,i]]);Xr(e,h,n.defines),Xr(e,h,g),r=g.get(`fragment`),i=g.get(`vertex`);let _=t.blendMode;if(n.blendModes.set(_.blendFunction,_),a){t.inputColorSpace!==null&&t.inputColorSpace!==n.colorSpace&&(d+=t.inputColorSpace===`srgb`?`color0 = sRGBTransferOETF(color0); + `:`color0 = sRGBToLinear(color0); + `),t.outputColorSpace===``?t.inputColorSpace!==null&&(n.colorSpace=t.inputColorSpace):n.colorSpace=t.outputColorSpace,d+=`${e}MainImage(color0, UV, `,(n.attributes&F.DEPTH)!==0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(r)&&(d+=`depth, `,n.readDepth=!0),d+=`color1); + `;let i=e+`BlendOpacity`;n.uniforms.set(i,_.opacity),d+=`color0 = blend${_.blendFunction}(color0, color1, ${i}); + + `,l+=`uniform float ${i}; + +`}if(l+=r+` +`,i!==null&&(f+=i+` +`),c.set(I.FRAGMENT_HEAD,l),c.set(I.FRAGMENT_MAIN_UV,u),c.set(I.FRAGMENT_MAIN_IMAGE,d),c.set(I.VERTEX_HEAD,f),c.set(I.VERTEX_MAIN_SUPPORT,p),t.extensions!==null)for(let e of t.extensions)n.extensions.add(e)}}var Qr=class extends N{constructor(e,...t){super(`EffectPass`),this.fullscreenMaterial=new zr(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){this.fullscreenMaterial.copyCameraSettings(e);for(let t of this.effects)t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener(`change`,this.listener);this.effects=e.sort((e,t)=>t.attributes-e.attributes);for(let e of this.effects)e.addEventListener(`change`,this.listener)}updateMaterial(){let e=new we,t=0;for(let n of this.effects)if(n.blendMode.blendFunction===z.DST)e.attributes|=n.getAttributes()&F.DEPTH;else if((e.attributes&n.getAttributes()&F.CONVOLUTION)!==0)throw Error(`Convolution effects cannot be merged (${n.name})`);else Zr(`e`+ t++,n,e);let n=e.shaderParts.get(I.FRAGMENT_HEAD),r=e.shaderParts.get(I.FRAGMENT_MAIN_IMAGE),i=e.shaderParts.get(I.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())n+=t.getShaderCode().replace(a,`blend${t.blendFunction}`)+` +`;(e.attributes&F.DEPTH)===0?this.needsDepthTexture=!1:(e.readDepth&&(r=`float depth = readDepth(UV); + + `+r),this.needsDepthTexture=this.getDepthTexture()===null),e.colorSpace===`srgb`&&(r+=`color0 = sRGBToLinear(color0); + `),e.uvTransformation?(i=`vec2 transformedUv = vUv; +`+i,e.defines.set(`UV`,`transformedUv`)):e.defines.set(`UV`,`vUv`),e.shaderParts.set(I.FRAGMENT_HEAD,n),e.shaderParts.set(I.FRAGMENT_MAIN_IMAGE,r),e.shaderParts.set(I.FRAGMENT_MAIN_UV,i);for(let[t,n]of e.shaderParts)n!==null&&e.shaderParts.set(t,n.trim().replace(/^#/,` +#`));this.skipRendering=t===0,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=w){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t;for(let n of this.effects)n.setDepthTexture(e,t)}render(e,t,n,r,i){for(let n of this.effects)n.update(e,t,r);if(!this.skipRendering||this.renderToScreen){let i=this.fullscreenMaterial;i.inputBuffer=t.texture,i.time+=r*this.timeScale,e.setRenderTarget(this.renderToScreen?null:n),e.render(this.scene,this.camera)}}setSize(e,t){this.fullscreenMaterial.setSize(e,t);for(let n of this.effects)n.setSize(e,t)}initialize(e,t,n){this.renderer=e;for(let r of this.effects)r.initialize(e,t,n);this.updateMaterial(),n!==void 0&&n!==1009&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`)}dispose(){super.dispose();for(let e of this.effects)e.removeEventListener(`change`,this.listener),e.dispose()}handleEvent(e){switch(e.type){case`change`:this.recompile();break}}},$r=class extends N{constructor({kernelSize:e=35,iterations:t=1,resolutionScale:n=1,resolutionX:r=R.AUTO_SIZE,resolutionY:i=R.AUTO_SIZE}={}){super(`GaussianBlurPass`),this.renderTargetA=new c(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name=`Blur.Target.A`,this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name=`Blur.Target.B`,this.blurMaterial=new Hr({kernelSize:e}),this.copyMaterial=new he,this.copyMaterial.inputBuffer=this.renderTargetB.texture;let a=this.resolution=new R(this,r,i,n);a.addEventListener(`change`,e=>this.setSize(a.baseWidth,a.baseHeight)),this.iterations=t}render(e,t,n,r,i){let a=this.scene,o=this.camera,s=this.renderTargetA,c=this.renderTargetB,l=this.blurMaterial;this.fullscreenMaterial=l;let u=t;for(let t=0,n=Math.max(this.iterations,1);t1&&(u=c);this.fullscreenMaterial=this.copyMaterial,e.setRenderTarget(this.renderToScreen?null:n),e.render(a,o)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t);let r=n.width,i=n.height;this.renderTargetA.setSize(r,i),this.renderTargetB.setSize(r,i),this.blurMaterial.setSize(e,t)}initialize(e,t,n){n!==void 0&&(this.renderTargetA.texture.type=n,this.renderTargetB.texture.type=n,n===1009?e!==null&&e.outputColorSpace===`srgb`&&(this.renderTargetA.texture.colorSpace=C,this.renderTargetB.texture.colorSpace=C):(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`,this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH=`1`))}},ei=class extends N{constructor(e){super(`LambdaPass`,null,null),this.needsSwap=!1,this.f=e}render(e,t,n,r,i){this.f()}},ti=class extends N{constructor(e,n,{renderTarget:r,resolutionScale:i=1,width:a=R.AUTO_SIZE,height:o=R.AUTO_SIZE,resolutionX:s=a,resolutionY:l=o}={}){super(`NormalPass`),this.needsSwap=!1,this.renderPass=new zt(e,n,new se);let u=this.renderPass;u.ignoreBackground=!0,u.skipShadowMapUpdate=!0;let d=u.getClearPass();d.overrideClearColor=new t(7829503),d.overrideClearAlpha=1,this.renderTarget=r,this.renderTarget===void 0&&(this.renderTarget=new c(1,1,{minFilter:k,magFilter:k}),this.renderTarget.texture.name=`NormalPass.Target`);let f=this.resolution=new R(this,s,l,i);f.addEventListener(`change`,e=>this.setSize(f.baseWidth,f.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,n,r,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a,a)}setSize(e,t){let n=this.resolution;n.setBaseSize(e,t),this.renderTarget.setSize(n.width,n.height)}},ni=[new Float32Array(3),new Float32Array(3)],Y=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],ri=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function ii(e,t,n,r){let i=n[0]-t[0],a=n[1]-t[1],o=n[2]-t[2],s=e[0]-t[0],c=e[1]-t[1],l=e[2]-t[2],u=a*l-o*c,d=o*s-i*l,f=i*c-a*s,p=Math.sqrt(u*u+d*d+f*f),m=p*.5,h=u/p,g=d/p,_=f/p,v=-(e[0]*h+e[1]*g+e[2]*_),y=r[0]*h+r[1]*g+r[2]*_;return Math.abs(y+v)*m/3}function ai(e,t,n,r,i,a){let o=(n+r*t+i*t*t)*4;a[0]=e[o+0],a[1]=e[o+1],a[2]=e[o+2]}function oi(e,t,n,r,i,a){let o=n*(t-1),s=r*(t-1),c=i*(t-1),l=Math.floor(o),u=Math.floor(s),d=Math.floor(c),f=Math.ceil(o),p=Math.ceil(s),m=Math.ceil(c),h=o-l,g=s-u,_=c-d;if(l===o&&u===s&&d===c)ai(e,t,o,s,c,a);else{let n;h>=g&&g>=_?n=ri[0]:h>=_&&_>=g?n=ri[1]:_>=h&&h>=g?n=ri[2]:g>=h&&h>=_?n=ri[3]:g>=_&&_>=h?n=ri[4]:_>=g&&g>=h&&(n=ri[5]);let[r,i,o,s]=n,c=ni[0];c[0]=h,c[1]=g,c[2]=_;let v=ni[1],y=f-l,b=p-u,x=m-d;v[0]=y*r[0]+l,v[1]=b*r[1]+u,v[2]=x*r[2]+d,ai(e,t,v[0],v[1],v[2],Y[0]),v[0]=y*i[0]+l,v[1]=b*i[1]+u,v[2]=x*i[2]+d,ai(e,t,v[0],v[1],v[2],Y[1]),v[0]=y*o[0]+l,v[1]=b*o[1]+u,v[2]=x*o[2]+d,ai(e,t,v[0],v[1],v[2],Y[2]),v[0]=y*s[0]+l,v[1]=b*s[1]+u,v[2]=x*s[2]+d,ai(e,t,v[0],v[1],v[2],Y[3]);let S=ii(i,o,s,c)*6,ee=ii(r,o,s,c)*6,C=ii(r,i,s,c)*6,te=ii(r,i,o,c)*6;Y[0][0]*=S,Y[0][1]*=S,Y[0][2]*=S,Y[1][0]*=ee,Y[1][1]*=ee,Y[1][2]*=ee,Y[2][0]*=C,Y[2][1]*=C,Y[2][2]*=C,Y[3][0]*=te,Y[3][1]*=te,Y[3][2]*=te,a[0]=Y[0][0]+Y[1][0]+Y[2][0]+Y[3][0],a[1]=Y[0][1]+Y[1][1]+Y[2][1]+Y[3][1],a[2]=Y[0][2]+Y[1][2]+Y[2][2]+Y[3][2]}}var si=class{static expand(e,t){let n=Math.cbrt(e.length/4),r=new Float32Array(3),i=new e.constructor(t**3*4),a=e instanceof Uint8Array?255:1,o=t**2,s=1/(t-1);for(let c=0;c=e&&ce&&l<=n)if(Math.sign(u)===Math.sign(d)||Math.abs(u)<1e-4||Math.abs(d)<1e-4){let e=(u+d)/2;e<0?(a[0]=Math.abs(e),a[1]=0):(a[0]=0,a[1]=Math.abs(e))}else{let r=-t*o/s+e,i=Math.trunc(r),c=r>e?u*(r-i)/2:0,l=rMath.abs(l)?c:-l)<0?(a[0]=Math.abs(c),a[1]=Math.abs(l)):(a[0]=Math.abs(l),a[1]=Math.abs(c))}else a[0]=0,a[1]=0;return a}function yi(e,t,n,r,i){let a=X[0],o=X[1],s=.5+r,c=.5+r-1,l=t+n+1;switch(e){case 0:i[0]=0,i[1]=0;break;case 1:t<=n?Z(0,c,l/2,0,t,i):(i[0]=0,i[1]=0);break;case 2:t>=n?Z(l/2,0,l,c,t,i):(i[0]=0,i[1]=0);break;case 3:Z(0,c,l/2,0,t,a),Z(l/2,0,l,c,t,o),vi(l,X),i[0]=a[0]+o[0],i[1]=a[1]+o[1];break;case 4:t<=n?Z(0,s,l/2,0,t,i):(i[0]=0,i[1]=0);break;case 5:i[0]=0,i[1]=0;break;case 6:Math.abs(r)>0?(Z(0,s,l,c,t,a),Z(0,s,l/2,0,t,o),Z(l/2,0,l,c,t,i),o[0]+=i[0],o[1]+=i[1],i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2):Z(0,s,l,c,t,i);break;case 7:Z(0,s,l,c,t,i);break;case 8:t>=n?Z(l/2,0,l,s,t,i):(i[0]=0,i[1]=0);break;case 9:Math.abs(r)>0?(Z(0,c,l,s,t,a),Z(0,c,l/2,0,t,o),Z(l/2,0,l,s,t,i),o[0]+=i[0],o[1]+=i[1],i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2):Z(0,c,l,s,t,i);break;case 10:i[0]=0,i[1]=0;break;case 11:Z(0,c,l,s,t,i);break;case 12:Z(0,s,l/2,0,t,a),Z(l/2,0,l,s,t,o),vi(l,X),i[0]=a[0]+o[0],i[1]=a[1]+o[1];break;case 13:Z(0,c,l,s,t,i);break;case 14:Z(0,s,l,c,t,i);break;case 15:i[0]=0,i[1]=0;break}return i}function bi(e,t,n,r,i,a){let o=e===n&&t===r;if(!o){let s=(e+n)/2,c=(t+r)/2,l=r-t,u=e-n;o=l*(i-s)+u*(a-c)>0}return o}function xi(e,t,n,r,i,a){let o=0;for(let s=0;s0&&(t+=o[0],n+=o[1]),u>0&&(r+=o[0],i+=o[1]),s[0]=1-xi(t,n,r,i,1+a,0+a),s[1]=xi(t,n,r,i,1+a,1+a),s}function Si(e,t,n,r,i){let a=X[0],o=X[1],s=t+n+1;switch(e){case 0:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 1:Q(e,1,0,0+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 2:Q(e,0,0,1+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 3:Q(e,1,0,1+s,0+s,t,r,i);break;case 4:Q(e,1,1,0+s,0+s,t,r,a),Q(e,1,1,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 5:Q(e,1,1,0+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 6:Q(e,1,1,1+s,0+s,t,r,i);break;case 7:Q(e,1,1,1+s,0+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 8:Q(e,0,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,1+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 9:Q(e,1,0,1+s,1+s,t,r,i),Q(e,1,0,1+s,1+s,t,r,i);break;case 10:Q(e,0,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 11:Q(e,1,0,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 12:Q(e,1,1,1+s,1+s,t,r,i);break;case 13:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,1+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 14:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,1,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break;case 15:Q(e,1,1,1+s,1+s,t,r,a),Q(e,1,0,1+s,0+s,t,r,o),i[0]=(a[0]+o[0])/2,i[1]=(a[1]+o[1])/2;break}return i}function Ci(e,t,n){let r=new Float32Array(2);for(let i=0,a=e.length;i{function q(t,a,s){let e=document.createElement("canvas"),n=e.getContext("2d");if(e.width=t,e.height=a,s instanceof Image)n.drawImage(s,0,0);else{let r=n.createImageData(t,a);r.data.set(s),n.putImageData(r,0,0)}return e}var F=class t{constructor(a=0,s=0,e=null){this.width=a,this.height=s,this.data=e}toCanvas(){return typeof document=="undefined"?null:q(this.width,this.height,this.data)}static from(a){let{width:s,height:e}=a,n;if(a instanceof Image){let r=q(s,e,a);r!==null&&(n=r.getContext("2d").getImageData(0,0,s,e).data)}else n=a.data;return new t(s,e,n)}};var M=[new Float32Array(2),new Float32Array(2)],D=16,W=20,I=30,j=32,v=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),N=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],z=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],p=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];function C(t,a,s){return t+(a-t)*s}function B(t){return Math.min(Math.max(t,0),1)}function _(t){let a=M[0],s=M[1],e=Math.sqrt(a[0]*2)*.5,n=Math.sqrt(a[1]*2)*.5,r=Math.sqrt(s[0]*2)*.5,o=Math.sqrt(s[1]*2)*.5,c=B(t/j);a[0]=C(e,a[0],c),a[1]=C(n,a[1],c),s[0]=C(r,s[0],c),s[1]=C(o,s[1],c)}function d(t,a,s,e,n,r){let o=s-t,c=e-a,h=n,i=n+1,w=a+c*(h-t)/o,b=a+c*(i-t)/o;if(h>=t&&ht&&i<=s)if(Math.sign(w)===Math.sign(b)||Math.abs(w)<1e-4||Math.abs(b)<1e-4){let g=(w+b)/2;g<0?(r[0]=Math.abs(g),r[1]=0):(r[0]=0,r[1]=Math.abs(g))}else{let g=-a*o/c+t,k=Math.trunc(g),m=g>t?w*(g-k)/2:0,U=gMath.abs(U)?m:-U)<0?(r[0]=Math.abs(m),r[1]=Math.abs(U)):(r[0]=Math.abs(U),r[1]=Math.abs(m))}else r[0]=0,r[1]=0;return r}function J(t,a,s,e,n){let r=M[0],o=M[1],c=.5+e,h=.5+e-1,i=a+s+1;switch(t){case 0:{n[0]=0,n[1]=0;break}case 1:{a<=s?d(0,h,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 2:{a>=s?d(i/2,0,i,h,a,n):(n[0]=0,n[1]=0);break}case 3:{d(0,h,i/2,0,a,r),d(i/2,0,i,h,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 4:{a<=s?d(0,c,i/2,0,a,n):(n[0]=0,n[1]=0);break}case 5:{n[0]=0,n[1]=0;break}case 6:{Math.abs(e)>0?(d(0,c,i,h,a,r),d(0,c,i/2,0,a,o),d(i/2,0,i,h,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,c,i,h,a,n);break}case 7:{d(0,c,i,h,a,n);break}case 8:{a>=s?d(i/2,0,i,c,a,n):(n[0]=0,n[1]=0);break}case 9:{Math.abs(e)>0?(d(0,h,i,c,a,r),d(0,h,i/2,0,a,o),d(i/2,0,i,c,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):d(0,h,i,c,a,n);break}case 10:{n[0]=0,n[1]=0;break}case 11:{d(0,h,i,c,a,n);break}case 12:{d(0,c,i/2,0,a,r),d(i/2,0,i,c,a,o),_(i,M),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 13:{d(0,h,i,c,a,n);break}case 14:{d(0,c,i,h,a,n);break}case 15:{n[0]=0,n[1]=0;break}}return n}function K(t,a,s,e,n,r){let o=t===s&&a===e;if(!o){let c=(t+s)/2,h=(a+e)/2,i=e-a,w=t-s;o=i*(n-c)+w*(r-h)>0}return o}function G(t,a,s,e,n,r){let o=0;for(let c=0;c0&&(a+=o[0],s+=o[1]),w>0&&(e+=o[0],n+=o[1]),c[0]=1-G(a,s,e,n,1+r,0+r),c[1]=G(a,s,e,n,1+r,1+r),c}function Q(t,a,s,e,n){let r=M[0],o=M[1],c=a+s+1;switch(t){case 0:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 1:{A(t,1,0,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 2:{A(t,0,0,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 3:{A(t,1,0,1+c,0+c,a,e,n);break}case 4:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 5:{A(t,1,1,0+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 6:{A(t,1,1,1+c,0+c,a,e,n);break}case 7:{A(t,1,1,1+c,0+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 8:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 9:{A(t,1,0,1+c,1+c,a,e,n),A(t,1,0,1+c,1+c,a,e,n);break}case 10:{A(t,0,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 11:{A(t,1,0,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 12:{A(t,1,1,1+c,1+c,a,e,n);break}case 13:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,1+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 14:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,1,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 15:{A(t,1,1,1+c,1+c,a,e,r),A(t,1,0,1+c,0+c,a,e,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}}return n}function R(t,a,s){let e=new Float32Array(2);for(let n=0,r=t.length;n{let a=S.generate(),s=E.generate();postMessage({areaImageData:a,searchImageData:s},[a.data.buffer,s.data.buffer]),close()});})(); +`;function Di(e=!0){let t=URL.createObjectURL(new Blob([Ei],{type:`text/javascript`})),n=new Worker(t);return URL.revokeObjectURL(t),new Promise((t,r)=>{n.addEventListener(`error`,e=>r(e.error)),n.addEventListener(`message`,n=>{let r=K.from(n.data.searchImageData),i=K.from(n.data.areaImageData),a=[r.toCanvas().toDataURL(`image/png`,1),i.toCanvas().toDataURL(`image/png`,1)];e&&(localStorage.setItem(`smaa-search`,a[0]),localStorage.setItem(`smaa-area`,a[1])),t(a)}),n.postMessage(null)})}var Oi=class{constructor(){this.disableCache=!1}setCacheEnabled(e){this.disableCache=!e}generate(){let e=!this.disableCache&&window.localStorage!==void 0,t=e?[localStorage.getItem(`smaa-search`),localStorage.getItem(`smaa-area`)]:[null,null];return(t[0]!==null&&t[1]!==null?Promise.resolve(t):Di(e)).then(e=>new Promise((t,n)=>{let r=new Image,i=new Image,a=new v;a.onLoad=()=>t([r,i]),a.onError=n,r.addEventListener(`error`,e=>a.itemError(`smaa-search`)),i.addEventListener(`error`,e=>a.itemError(`smaa-area`)),r.addEventListener(`load`,()=>a.itemEnd(`smaa-search`)),i.addEventListener(`load`,()=>a.itemEnd(`smaa-area`)),a.itemStart(`smaa-search`),a.itemStart(`smaa-area`),r.src=e[0],i.src=e[1]}))}},ki=new Map([[$(0,0,0,0),new Float32Array([0,0,0,0])],[$(0,0,0,1),new Float32Array([0,0,0,1])],[$(0,0,1,0),new Float32Array([0,0,1,0])],[$(0,0,1,1),new Float32Array([0,0,1,1])],[$(0,1,0,0),new Float32Array([0,1,0,0])],[$(0,1,0,1),new Float32Array([0,1,0,1])],[$(0,1,1,0),new Float32Array([0,1,1,0])],[$(0,1,1,1),new Float32Array([0,1,1,1])],[$(1,0,0,0),new Float32Array([1,0,0,0])],[$(1,0,0,1),new Float32Array([1,0,0,1])],[$(1,0,1,0),new Float32Array([1,0,1,0])],[$(1,0,1,1),new Float32Array([1,0,1,1])],[$(1,1,0,0),new Float32Array([1,1,0,0])],[$(1,1,0,1),new Float32Array([1,1,0,1])],[$(1,1,1,0),new Float32Array([1,1,1,0])],[$(1,1,1,1),new Float32Array([1,1,1,1])]]);function Ai(e,t,n){return e+(t-e)*n}function $(e,t,n,r){return Ai(Ai(e,t,.75),Ai(n,r,.75),.875)}function ji(e,t){let n=0;return t[3]===1&&(n+=1),n===1&&t[2]===1&&e[1]!==1&&e[3]!==1&&(n+=1),n}function Mi(e,t){let n=0;return t[3]===1&&e[1]!==1&&e[3]!==1&&(n+=1),n===1&&t[2]===1&&e[0]!==1&&e[2]!==1&&(n+=1),n}var Ni=class{static generate(){let e=new Uint8ClampedArray(2178),t=new Uint8ClampedArray(1024*4);for(let t=0;t<33;++t)for(let n=0;n<66;++n){let r=.03125*n,i=.03125*t;if(ki.has(r)&&ki.has(i)){let a=ki.get(r),o=ki.get(i),s=t*66+n;e[s]=127*ji(a,o),e[s+33]=127*Mi(a,o)}}for(let n=0,r=17;r<33;++r)for(let i=0;i<64;++i,n+=4)t[n]=e[r*66+i],t[n+3]=255;return new K(64,16,t)}};export{Ut as $,gr as $t,Ct as A,ln as At,F as B,un as Bt,Ir as C,Nt as Ct,sr as D,Ae as Dt,or as E,bn as Et,Tt as F,R as Ft,I as G,An as Gt,zr as H,qn as Ht,Je as I,Ti as It,Ee as J,Vn as Jt,Ot as K,Ne as Kt,Wn as L,Qn as Lt,Yr as M,On as Mt,sn as N,zt as Nt,pt as O,N as Ot,de as P,je as Pt,jt as Q,pr as Qt,cn as R,Oi as Rt,_n as S,mn as St,Wr as T,wn as Tt,Qr as U,ur as Ut,Ce as V,Ni as Vt,we as W,rr as Wt,$r as X,In as Xt,Hr as Y,W as Yt,It as Z,si as Zt,ot as _,Ge as _t,z as a,Ze as an,He as at,he as b,ye as bt,nt as c,fn as cn,Zt as ct,Ur as d,kr as dt,_r as en,Rt as et,it as f,Qt as ft,ve as g,We as gt,pe as h,nn as ht,Cr as i,q as in,Oe as it,xn as j,K as jt,Rn as k,En as kt,gt as l,ue as ln,an as lt,vt as m,Yt as mt,Ie as n,Se as nn,qt as nt,Fe as o,Dr as on,H as ot,dt as p,ei as pt,At as q,zn as qt,Sr as r,Tr as rn,De as rt,et as s,dn as sn,V as st,Re as t,br as tn,Gt as tt,Nr as u,Or as ut,U as v,mt as vt,on as w,ti as wt,ge as x,Qe as xt,ct as y,bt as yt,B as z,Ar as zt}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js.gz b/Needle/SampleScene/dist/assets/postprocessing.Wy71DpiM.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..951fc3edd263b9625913b5e64c757d113abb6f46 GIT binary patch literal 111140 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 L#zx~Uupj>g#~*wH literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/postprocessing.ao.CBPOoA3d.js b/Needle/SampleScene/dist/assets/postprocessing.ao.CBPOoA3d.js new file mode 100644 index 0000000..43ef8e2 --- /dev/null +++ b/Needle/SampleScene/dist/assets/postprocessing.ao.CBPOoA3d.js @@ -0,0 +1,842 @@ +import{A as e,Ar as t,Er as n,Fr as r,H as i,It as a,J as o,Jn as s,On as c,Or as l,S as u,X as d,Xt as f,Y as p,Zt as m,ft as h,kr as g,lr as _,mn as v,on as y,ot as b,qn as x,tr as S,x as C}from"./three@0.169.19.js";import{t as w}from"./three-examples.extras@0.169.19.js";import{Ot as T}from"./postprocessing.Wy71DpiM.js";var E=new class extends u{boundingSphere=new _;constructor(){super(),this.setAttribute(`position`,new C(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute(`uv`,new C(new Float32Array([0,0,2,0,0,2]),2))}computeBoundingSphere(){}},D=new v,O=class{constructor(e){this._mesh=new m(E,e),this._mesh.frustumCulled=!1}render(e){e.render(this._mesh,D)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}},k={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new f},viewMat:{value:new f},projViewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},biasAdjustment:{value:new g},time:{value:0},samples:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},ortho:{value:!1},screenSpaceRadius:{value:!1},frame:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` +varying vec2 vUv; +void main() { + vUv = uv; + gl_Position = vec4(position, 1); +}`,fragmentShader:` + #define SAMPLES 16 + #define FSAMPLES 16.0 +uniform sampler2D sceneDiffuse; +uniform highp sampler2D sceneNormal; +uniform highp sampler2D sceneDepth; +uniform mat4 projectionMatrixInv; +uniform mat4 viewMatrixInv; +uniform mat4 projMat; +uniform mat4 viewMat; +uniform mat4 projViewMat; +uniform vec3 cameraPos; +uniform vec2 resolution; +uniform vec2 biasAdjustment; +uniform float time; +uniform vec3[SAMPLES] samples; +uniform float radius; +uniform float distanceFalloff; +uniform float near; +uniform float far; +uniform float frame; +uniform bool ortho; +uniform bool screenSpaceRadius; +uniform sampler2D bluenoise; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + /*return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ);*/ + #ifdef ORTHO + + return linearize_depth_ortho(d, nearZ, farZ); + + #else + return linearize_depth(linDepth, nearZ, farZ); + #endif + } + + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); +} + +mat3 makeRotationZ(float theta) { + float c = cos(theta); + float s = sin(theta); + return mat3(c, - s, 0, + s, c, 0, + 0, 0, 1); + } + +void main() { + vec4 diffuse = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + if (depth == 1.0) { + gl_FragColor = vec4(vec3(1.0), 1.0); + return; + } + vec3 worldPos = getWorldPos(depth, vUv); + #ifdef HALFRES + vec3 normal = texture2D(sceneNormal, vUv).rgb; + #else + vec3 normal = computeNormal(worldPos, vUv); + #endif + vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0); + vec2 harmoniousNumbers = vec2( + 1.618033988749895, + 1.324717957244746 + ); + noise.rg += harmoniousNumbers * frame; + noise.rg = fract(noise.rg); + vec3 helperVec = vec3(0.0, 1.0, 0.0); + if (dot(helperVec, normal) > 0.99) { + helperVec = vec3(1.0, 0.0, 0.0); + } + vec3 tangent = normalize(cross(helperVec, normal)); + vec3 bitangent = cross(normal, tangent); + mediump mat3 tbn = mat3(tangent, bitangent, normal) * makeRotationZ( noise.r * 3.1415962 * 2.0) ; + + mediump float occluded = 0.0; + mediump float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + float bias = (min( + 0.1, + distanceFalloffToUse * 0.1 + ) / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse; + bias = biasAdjustment.x + biasAdjustment.y * bias; + mediump float offsetMove = noise.g; + mediump float offsetMoveInv = 1.0 / FSAMPLES; + float farTimesNear = far * near; + float farMinusNear = far - near; + + for(int i = 0; i < SAMPLES; i++) { + mediump vec3 sampleDirection = tbn * samples[i]; + + float moveAmt = fract(offsetMove); + offsetMove += offsetMoveInv; + vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection; + vec4 offset = projMat * vec4(samplePos, 1.0); + offset.xyz /= offset.w; + offset.xyz = offset.xyz * 0.5 + 0.5; + + if (all(greaterThan(offset.xyz * (1.0 - offset.xyz), vec3(0.0)))) { + #ifdef REVERSEDEPTH + float sampleDepth = 1.0 - textureLod(sceneDepth, offset.xy, 0.0).x; + #else + float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x; + #endif + + /*#ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + #ifdef ORTHO + float distSample = near + farMinusNear * sampleDepth; + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif*/ + #ifdef ORTHO + float distSample = near + sampleDepth * farMinusNear; + #else + #ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear); + #endif + #endif + + #ifdef ORTHO + float distWorld = near + offset.z * farMinusNear; + #else + float distWorld = (farTimesNear) / (far - offset.z * farMinusNear); + #endif + + mediump float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld))); + vec2 diff = gl_FragCoord.xy - floor(offset.xy * resolution); + occluded += rangeCheck * float(distSample != distWorld) * float(sampleDepth != depth) * step(distSample + bias, distWorld) * step( + 1.0, + dot(diff, diff) + ); + + totalWeight ++; + } + } + float occ = clamp(1.0 - occluded / (totalWeight == 0.0 ? 1.0 : totalWeight), 0.0, 1.0); + gl_FragColor = vec4(occ, 0.5 + 0.5 * normal); +}`},A={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},transparencyDWFalse:{value:null},transparencyDWTrue:{value:null},transparencyDWTrueDepth:{value:null},transparencyAware:{value:!1},projMat:{value:new f},viewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},color:{value:new t(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0},aoTones:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform highp sampler2D downsampledDepth; + uniform highp sampler2D transparencyDWFalse; + uniform highp sampler2D transparencyDWTrue; + uniform highp sampler2D transparencyDWTrueDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform vec2 resolution; + uniform vec3 color; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform float intensity; + uniform float renderMode; + uniform float near; + uniform float far; + uniform float aoTones; + uniform bool gammaCorrection; + uniform bool ortho; + uniform bool screenSpaceRadius; + uniform bool fog; + uniform bool fogExp; + uniform bool colorMultiply; + uniform bool transparencyAware; + uniform float fogDensity; + uniform float fogNear; + uniform float fogFar; + uniform float radius; + uniform float distanceFalloff; + uniform vec3 cameraPos; + varying vec2 vUv; + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return ortho ? linearize_depth_ortho( + linDepth, + nearZ, + farZ + ) :linearize_depth(linDepth, nearZ, farZ); + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + // } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + + #include + #include + void main() { + //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0); + vec4 sceneTexel = texture2D(sceneDiffuse, vUv); + #ifdef REVERSEDEPTH + float depth = 1.0 - texture2D(sceneDepth, vUv).x; + #else + float depth = texture2D(sceneDepth, vUv).x; + #endif + #ifdef HALFRES + vec4 texel; + if (depth == 1.0) { + texel = vec4(0.0, 0.0, 0.0, 1.0); + } else { + vec3 worldPos = getWorldPos(depth, vUv); + vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv); + // vec4 texel = texture2D(tDiffuse, vUv); + // Find closest depth; + float totalWeight = 0.0; + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(depth, vUv + + vec2(radius, 0.0) / resolution) + ) : radius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : distanceFalloff; + for(float x = -1.0; x <= 1.0; x++) { + for(float y = -1.0; y <= 1.0; y++) { + vec2 offset = vec2(x, y); + ivec2 p = ivec2( + (vUv * resolution * 0.5) + offset + ); + vec2 pUv = vec2(p) / (resolution * 0.5); + float sampleDepth = texelFetch(downsampledDepth,p, 0).x; + vec4 sampleInfo = texelFetch(tDiffuse, p, 0); + vec3 normalSample = sampleInfo.gba * 2.0 - 1.0; + vec3 worldPosSample = getWorldPos(sampleDepth, pUv); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0); + float weight = rangeCheck; + totalWeight += weight; + texel += sampleInfo * weight; + } + } + if (totalWeight == 0.0) { + texel = texture2D(tDiffuse, vUv); + } else { + texel /= totalWeight; + } + } + #else + vec4 texel = texture2D(tDiffuse, vUv); + #endif + + #ifdef LOGDEPTH + texel.r = clamp(texel.r, 0.0, 1.0); + if (texel.r == 0.0) { + texel.r = 1.0; + } + #endif + + float finalAo = pow(texel.r, intensity); + if (aoTones > 0.0) { + finalAo = ceil(finalAo * aoTones) / aoTones; + } + float fogFactor; + float fogDepth = distance( + cameraPos, + getWorldPos(depth, vUv) + ); + if (fog) { + if (fogExp) { + fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth ); + } else { + fogFactor = smoothstep( fogNear, fogFar, fogDepth ); + } + } + if (transparencyAware) { + float transparencyDWOff = texture2D(transparencyDWFalse, vUv).a; + float transparencyDWOn = texture2D(transparencyDWTrue, vUv).a; + float adjustmentFactorOff = transparencyDWOff; + #ifdef REVERSEDEPTH + float depthSample = 1.0 - texture2D(sceneDepth, vUv).r; + float trueDepthSample = 1.0 - texture2D(transparencyDWTrueDepth, vUv).r; + #else + float depthSample = texture2D(sceneDepth, vUv).r; + float trueDepthSample = texture2D(transparencyDWTrueDepth, vUv).r; + #endif + float adjustmentFactorOn = (1.0 - transparencyDWOn) * ( + trueDepthSample == depthSample ? 1.0 : 0.0 + ); + float adjustmentFactor = max(adjustmentFactorOff, adjustmentFactorOn); + finalAo = mix(finalAo, 1.0, adjustmentFactor); + } + finalAo = mix(finalAo, 1.0, fogFactor); + vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply)); + if (renderMode == 0.0) { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 1.0) { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } else if (renderMode == 2.0) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (renderMode == 3.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } else if (renderMode == 4.0) { + if (vUv.x < 0.5) { + gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a); + } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) { + gl_FragColor = vec4(1.0); + } else { + gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a); + } + } + #include + if (gammaCorrection) { + gl_FragColor = sRGBTransferOETF(gl_FragColor); + } + } + `},j={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new f},viewMat:{value:new f},projectionMatrixInv:{value:new f},viewMatrixInv:{value:new f},cameraPos:{value:new t},resolution:{value:new g},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1.0); + }`,fragmentShader:` + uniform sampler2D sceneDiffuse; + uniform highp sampler2D sceneDepth; + uniform sampler2D tDiffuse; + uniform sampler2D blueNoise; + uniform mat4 projectionMatrixInv; + uniform mat4 viewMatrixInv; + uniform vec2 resolution; + uniform float r; + uniform float radius; + uniform float worldRadius; + uniform float index; + uniform float near; + uniform float far; + uniform float distanceFalloff; + uniform bool screenSpaceRadius; + varying vec2 vUv; + + highp float linearize_depth(highp float d, highp float zNear,highp float zFar) + { + highp float z_n = 2.0 * d - 1.0; + return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear)); + } + highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) { + float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + return linearize_depth(linDepth, nearZ, farZ); + } + highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) { + return nearZ + (farZ - nearZ) * d; + } + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + #ifdef LOGDEPTH + #ifndef ORTHO + return getWorldPosLog(vec3(coord, depth)); + #endif + #endif + + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + #include + #define NUM_SAMPLES 16 + uniform vec2 poissonDisk[NUM_SAMPLES]; + void main() { + const float pi = 3.14159; + vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y); + vec2 uv = vUv; + vec4 data = texture2D(tDiffuse, vUv); + float occlusion = data.r; + float baseOcc = data.r; + vec3 normal = data.gba * 2.0 - 1.0; + float count = 1.0; + float d = texture2D(sceneDepth, vUv).x; + if (d == 1.0) { + gl_FragColor = data; + return; + } + vec3 worldPos = getWorldPos(d, vUv); + float size = radius; + float angle; + if (index == 0.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2; + } else if (index == 1.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2; + } else if (index == 2.0) { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2; + } else { + angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2; + } + + mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); + float radiusToUse = screenSpaceRadius ? distance( + worldPos, + getWorldPos(d, vUv + + vec2(worldRadius, 0.0) / resolution) + ) : worldRadius; + float distanceFalloffToUse =screenSpaceRadius ? + radiusToUse * distanceFalloff + : radiusToUse * distanceFalloff * 0.2; + + float invDistance = (1.0 / distanceFalloffToUse); + for(int i = 0; i < NUM_SAMPLES; i++) { + vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size; + vec4 dataSample = texture2D(tDiffuse, uv + offset); + float occSample = dataSample.r; + vec3 normalSample = dataSample.gba * 2.0 - 1.0; + float dSample = texture2D(sceneDepth, uv + offset).x; + vec3 worldPosSample = getWorldPos(dSample, uv + offset); + float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal)); + float rangeCheck = float(dSample != 1.0) * exp(-1.0 * tangentPlaneDist * invDistance ) * max(dot(normal, normalSample), 0.0); + occlusion += occSample * rangeCheck; + count += rangeCheck; + } + if (count > 0.0) { + occlusion /= count; + } + occlusion = clamp(occlusion, 0.0, 1.0); + if (occlusion == 0.0) { + occlusion = 1.0; + } + gl_FragColor = vec4(occlusion, 0.5 + 0.5 * normal); + } + `},M={uniforms:{sceneDepth:{value:null},resolution:{value:new g},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new f},projectionMatrixInv:{value:new f},logDepth:{value:!1},ortho:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform highp sampler2D sceneDepth; + uniform vec2 resolution; + uniform float near; + uniform float far; + uniform bool logDepth; + uniform bool ortho; + uniform mat4 viewMatrixInv; + uniform mat4 projectionMatrixInv; + varying vec2 vUv; + layout(location = 1) out vec4 gNormal; + vec3 getWorldPosLog(vec3 posS) { + vec2 uv = posS.xy; + float z = posS.z; + float nearZ =near; + float farZ = far; + float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0; + float a = farZ / (farZ - nearZ); + float b = farZ * nearZ / (nearZ - farZ); + float linDepth = a + b / depth; + vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0; + vec4 wpos = projectionMatrixInv * clipVec; + return wpos.xyz / wpos.w; + } + vec3 getWorldPos(float depth, vec2 coord) { + if (logDepth && !ortho) { + return getWorldPosLog(vec3(coord, depth)); + } + float z = depth * 2.0 - 1.0; + vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0); + vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition; + // Perspective division + vec4 worldSpacePosition = viewSpacePosition; + worldSpacePosition.xyz /= worldSpacePosition.w; + return worldSpacePosition.xyz; + } + + vec3 computeNormal(vec3 worldPos, vec2 vUv) { + ivec2 p = ivec2(vUv * resolution); + #ifdef REVERSEDEPTH + float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x; + float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #else + float c0 = texelFetch(sceneDepth, p, 0).x; + float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x; + float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x; + float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x; + float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x; + float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x; + float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x; + float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x; + float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x; + #endif + + float dl = abs((2.0 * l1 - l2) - c0); + float dr = abs((2.0 * r1 - r2) - c0); + float db = abs((2.0 * b1 - b2) - c0); + float dt = abs((2.0 * t1 - t2) - c0); + + vec3 ce = getWorldPos(c0, vUv).xyz; + + vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz + : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz; + vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz + : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz; + + return normalize(cross(dpdx, dpdy)); + } + void main() { + vec2 uv = vUv - vec2(0.5) / resolution; + vec2 pixelSize = vec2(1.0) / resolution; + highp vec2[4] uvSamples; + uvSamples[0] = uv; + uvSamples[1] = uv + vec2(pixelSize.x, 0.0); + uvSamples[2] = uv + vec2(0.0, pixelSize.y); + uvSamples[3] = uv + pixelSize; + #ifdef REVERSEDEPTH + float depth00 = 1.0 - texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = 1.0 - texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = 1.0 - texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = 1.0 - texture2D(sceneDepth, uvSamples[3]).r; + #else + float depth00 = texture2D(sceneDepth, uvSamples[0]).r; + float depth10 = texture2D(sceneDepth, uvSamples[1]).r; + float depth01 = texture2D(sceneDepth, uvSamples[2]).r; + float depth11 = texture2D(sceneDepth, uvSamples[3]).r; + #endif + float minDepth = min(min(depth00, depth10), min(depth01, depth11)); + float maxDepth = max(max(depth00, depth10), max(depth01, depth11)); + float targetDepth = minDepth; + // Checkerboard pattern to avoid artifacts + if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { + targetDepth = maxDepth; + } + int chosenIndex = 0; + float[4] samples; + samples[0] = depth00; + samples[1] = depth10; + samples[2] = depth01; + samples[3] = depth11; + for(int i = 0; i < 4; ++i) { + if (samples[i] == targetDepth) { + chosenIndex = i; + break; + } + } + gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0); + gNormal = vec4(computeNormal( + getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex] + ), 0.0); + }`},N=Uint8Array.from(atob(`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`),e=>e.charCodeAt(0)),P=parseInt(`169.19`.replace(/\D+/g,``))>=162?class extends r{constructor(e=1,t=1,n=1,r={}){super(e,t,{...r,count:n}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}:class extends r{constructor(e=1,t=1,n=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let e=0;e{F(e,t,n)},1)}var I=class extends T{constructor(t,n,o=512,l=512){super(),this.width=o,this.height=l,this.clear=!0,this.camera=n,this.scene=t,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new e(0,0,0),gammaCorrection:!0,depthBufferType:R.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,colorMultiply:!0,transparencyAware:!1,accumulate:!1},{set:(e,t,n)=>{let r=e[t];return e[t]=n,n.equals?n.equals(r)||this.firstFrame():r!==n&&this.firstFrame(),t===`aoSamples`&&r!==n&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`denoiseSamples`&&r!==n&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`halfRes`&&r!==n&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),t===`depthAwareUpsampling`&&r!==n&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`gammaCorrection`&&(this.autosetGamma=!1),t===`transparencyAware`&&r!==n&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frames=0,this.lastViewMatrix=new f,this.lastProjectionMatrix=new f,this.configureEffectCompositer(this.configuration.depthBufferType),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.copyQuad=new O(new S({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + } + `,fragmentShader:` + uniform sampler2D tDiffuse; + varying vec2 vUv; + void main() { + gl_FragColor = texture2D(tDiffuse, vUv); + } + `})),this.writeTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.readTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.outputTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1}),this.accumulationRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c,type:h,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.accumulationQuad=new O(new S({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D tDiffuse; + uniform float frame; + varying vec2 vUv; + void main() { + vec4 color = texture2D(tDiffuse, vUv); + gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0)); + } + `})),this.bluenoise=new i(N,128,128),this.bluenoise.colorSpace=``,this.bluenoise.wrapS=s,this.bluenoise.wrapT=s,this.bluenoise.minFilter=y,this.bluenoise.magFilter=y,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new g,this._c=new e}configureHalfResTargets(){this.firstFrame(),this.configuration.halfRes?(this.depthDownsampleTarget=new P(this.width/2,this.height/2,2),this.depthDownsampleTarget.textures[0].format=x,this.depthDownsampleTarget.textures[0].type=b,this.depthDownsampleTarget.textures[0].minFilter=y,this.depthDownsampleTarget.textures[0].magFilter=y,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=c,this.depthDownsampleTarget.textures[1].type=h,this.depthDownsampleTarget.textures[1].minFilter=y,this.depthDownsampleTarget.textures[1].magFilter=y,this.depthDownsampleTarget.textures[1].depthBuffer=!1,this.depthDownsampleQuad=new O(new S(M))):(this.depthDownsampleTarget&&=(this.depthDownsampleTarget.dispose(),null),this.depthDownsampleQuad&&=(this.depthDownsampleQuad.dispose(),null))}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),e&&(this.configuration.transparencyAware=!0)}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue.depthTexture=new d(this.width,this.height,l),this.depthCopyPass=new O(new S({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===R.Reverse}},vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D depthTexture; + uniform bool reverseDepthBuffer; + varying vec2 vUv; + void main() { + if (reverseDepthBuffer) { + float d = 1.0 - texture2D(depthTexture, vUv).r; + + d += 0.00001; + gl_FragDepth = 1.0 - d; + } else { + float d = texture2D(depthTexture, vUv).r; + d += 0.00001; + gl_FragDepth = d; + } + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}))):(this.transparencyRenderTargetDWFalse&&=(this.transparencyRenderTargetDWFalse.dispose(),null),this.transparencyRenderTargetDWTrue&&=(this.transparencyRenderTargetDWTrue.dispose(),null),this.depthCopyPass&&=(this.depthCopyPass.dispose(),null))}renderTransparency(t){let n=this.scene.background,r=t.getClearColor(new e),i=t.getClearAlpha(),a=new Map,o=t.autoClearDepth;this.scene.traverse(e=>{a.set(e,e.visible)}),this.scene.background=null,t.autoClearDepth=!1,t.setClearColor(new e(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===R.Reverse,t.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),t.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=a.get(e)}),t.setClearColor(r,i),this.scene.background=n,t.autoClearDepth=o}configureSampleDependentPasses(){this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(e=R.Default,t=!1){this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let n={...k};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.aoSamples).replace(`16.0`,this.configuration.aoSamples+`.0`),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new S(n)):this.effectShaderQuad=new O(new S(n))}configureDenoisePass(e=R.Default,t=!1){this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let n={...j};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.denoiseSamples),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new S(n)):this.poissonBlurQuad=new O(new S(n))}configureEffectCompositer(e=R.Default,t=!1){this.firstFrame();let n={...A};e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new S(n)):this.effectCompositerQuad=new O(new S(n))}generateHemisphereSamples(e){let n=[];for(let r=0;r{L(e,t,n)},1)}var R={Default:1,Log:2,Reverse:3},z=class extends w{constructor(t,u,m=512,_=512){super(),this.width=m,this.height=_,this.clear=!0,this.camera=u,this.scene=t,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new e(0,0,0),gammaCorrection:!0,depthBufferType:R.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,autoRenderBeauty:!0,colorMultiply:!0,transparencyAware:!1,stencil:!1,accumulate:!1},{set:(e,t,i)=>{let s=e[t];return e[t]=i,i.equals?i.equals(s)||this.firstFrame():s!==i&&this.firstFrame(),t===`aoSamples`&&s!==i&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`denoiseSamples`&&s!==i&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`halfRes`&&s!==i&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),t===`depthAwareUpsampling`&&s!==i&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),t===`transparencyAware`&&s!==i&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),t===`stencil`&&s!==i&&(this.beautyRenderTarget.dispose(),this.beautyRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c,stencilBuffer:i}),this.beautyRenderTarget.depthTexture=new d(this.width,this.height,i?n:l),this.beautyRenderTarget.depthTexture.format=i?p:o),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frame=0,this.lastViewMatrix=new f,this.lastProjectionMatrix=new f,this.beautyRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c,stencilBuffer:!1}),this.beautyRenderTarget.depthTexture=new d(this.width,this.height,l),this.beautyRenderTarget.depthTexture.format=o,this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.writeTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.readTargetInternal=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c}),this.accumulationRenderTarget=new r(this.width,this.height,{minFilter:a,magFilter:a,depthBuffer:!1,format:c,type:h,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.bluenoise=new i(N,128,128),this.accumulationQuad=new O(new S({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D tDiffuse; + uniform float frame; + varying vec2 vUv; + void main() { + vec4 color = texture2D(tDiffuse, vUv); + gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0)); + } + `})),this.bluenoise.colorSpace=``,this.bluenoise.wrapS=s,this.bluenoise.wrapT=s,this.bluenoise.minFilter=y,this.bluenoise.magFilter=y,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this._r=new g,this._c=new e}configureHalfResTargets(){if(this.firstFrame(),this.configuration.halfRes){this.depthDownsampleTarget=new P(this.width/2,this.height/2,2),this.depthDownsampleTarget.textures[0].format=x,this.depthDownsampleTarget.textures[0].type=b,this.depthDownsampleTarget.textures[0].minFilter=y,this.depthDownsampleTarget.textures[0].magFilter=y,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=c,this.depthDownsampleTarget.textures[1].type=h,this.depthDownsampleTarget.textures[1].minFilter=y,this.depthDownsampleTarget.textures[1].magFilter=y,this.depthDownsampleTarget.textures[1].depthBuffer=!1;let e={...M};this.configuration.depthBufferType===R.Reverse&&(e.fragmentShader=`#define REVERSEDEPTH +`+e.fragmentShader),this.depthDownsampleQuad=new O(new S(e))}else this.depthDownsampleTarget&&=(this.depthDownsampleTarget.dispose(),null),this.depthDownsampleQuad&&=(this.depthDownsampleQuad.dispose(),null)}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),this.configuration.transparencyAware=e}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue=new r(this.width,this.height,{minFilter:a,magFilter:y,type:h,format:c}),this.transparencyRenderTargetDWTrue.depthTexture=new d(this.width,this.height,l),this.depthCopyPass=new O(new S({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===R.Reverse}},vertexShader:` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = vec4(position, 1); + }`,fragmentShader:` + uniform sampler2D depthTexture; + uniform bool reverseDepthBuffer; + varying vec2 vUv; + void main() { + if (reverseDepthBuffer) { + float d = 1.0 - texture2D(depthTexture, vUv).r; + + d += 0.00001; + gl_FragDepth = 1.0 - d; + } else { + float d = texture2D(depthTexture, vUv).r; + d += 0.00001; + gl_FragDepth = d; + } + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } + `}))):(this.transparencyRenderTargetDWFalse&&=(this.transparencyRenderTargetDWFalse.dispose(),null),this.transparencyRenderTargetDWTrue&&=(this.transparencyRenderTargetDWTrue.dispose(),null),this.depthCopyPass&&=(this.depthCopyPass.dispose(),null))}renderTransparency(t){let n=this.scene.background,r=t.getClearColor(new e),i=t.getClearAlpha(),a=new Map,o=t.autoClearDepth;this.scene.traverse(e=>{a.set(e,e.visible)}),this.scene.background=null,t.autoClearDepth=!1,t.setClearColor(new e(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.beautyRenderTarget.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===R.Reverse,t.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),t.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=a.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),t.clear(!0,!0,!0),this.depthCopyPass.render(t),t.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=a.get(e)}),t.setClearColor(r,i),this.scene.background=n,t.autoClearDepth=o}configureSampleDependentPasses(){this.firstFrame(),this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(e=R.Default,t=!1){this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let n={...k};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.aoSamples).replace(`16.0`,this.configuration.aoSamples+`.0`),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new S(n)):this.effectShaderQuad=new O(new S(n))}configureDenoisePass(e=R.Default,t=!1){this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let n={...j};n.fragmentShader=n.fragmentShader.replace(`16`,this.configuration.denoiseSamples),e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new S(n)):this.poissonBlurQuad=new O(new S(n))}configureEffectCompositer(e=R.Default,t=!1){this.firstFrame();let n={...A};e===R.Log?n.fragmentShader=`#define LOGDEPTH +`+n.fragmentShader:e===R.Reverse&&(n.fragmentShader=`#define REVERSEDEPTH +`+n.fragmentShader),t&&(n.fragmentShader=`#define ORTHO +`+n.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(n.fragmentShader=`#define HALFRES +`+n.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new S(n)):this.effectCompositerQuad=new O(new S(n))}generateHemisphereSamples(e){let n=[];for(let r=0;rs<|1($kMDW8iaRNZqLzt? z8LlG5Rotlw|Mxef+N3I#mv*1!Lp#F7B9KTV5(yxYc)*I%A}{NIQzN??`FB)#de(Q` z`I+7E=Vy5*oF37gSf8HuopgHScT#qGR(JaO>E7vQ>f~;5dNg|P{PNxVyE=@jkCk6jbzMeIQ~U4!RpeDvM|t+IyHi2t-RUQvyO6}S&BRhHb{@qq#@UGV%0`{OTn zd0B_~W6EFPlm1KJ&lZL4`tvJhr_7+VFGc=x=bbumRYvtG|NhPNtNQfP`ep6+i_rG` z@~{8;wYAG3%66mHcac%MY(M?l=8-o_?I?Tqe)R8ON2kQm=TXys`gJtgCI2)YM)~OT zsm$cv%syH3%e3G| z(#cGp6P-LyMrT8Rk@m{gKix2ir!n~HY)P-}_>_9z`S-Oa(Minc=>PLP9^PH%d3RT& zN6oj(yQ>u5F5jP7{`>s%^zUJ6e|O3oeYh|5egr-w{5JANAD(`{&wPI`)t7I{_Rq6c zz9!*`e0!Y~*yZ;9lXwrpo#{rv=-nxI^xOUW`_YGy_r0Pd`R?0-ye-E=p%bgo=TVV& z?~sqs-B~wDzC-Ti0!Hvh=>7ZAZ>Q&{tCIHU^O@sGuUBojCUYLiK0GuT9KE~$<+po* zuE~=qV;@AaN5IG#f%hUlQh^^H^mp!v(SN?tK~JXe$nWkcRUhsMbmZN6%8$N$|HcUntFZW0xi?>;WAO?&rjS!aPqA4bSW=vwM?$*#z&Q)^$ZVWSU^ zY(HI34W}X>`{6hO?|=6UHockF|SD*BY=3{!ZvlqkraZFe+! zVR$zz=G~d|-F;>6ZyVi*xl1=`)CHyIiVPRzW?pr$#?v4;k`U)^TAf;oW;!-+_SyhccTl9 zKA%)S`fXJEy`S)Y?S}83{kFSNaW{hAf9yY96iSe978?EbAQf^deuD-4{Vd?yEXwa- z0epi6^8GB{Xo&Lzx`6IR$SoG|53zu6u&94P7jLmZeu%|&L!Q^U3$yw`gZe2``Y9v& zDf9U$!}%$b`6*-hDKq&!26A3OE*N>qX?b?4cPE$OubvTL|H#mJ}=C!Kl*&NI=j%_c^bZ-zMl!b!s|z$NAJ93^tX{$ zz90SPsqAl8WfS;rbe^bx8{He$M`#3I%-J9NyAgD9md@NSR`8eq{yO^2^+&)J^YW27 z@IA~wT}eKiC3jAe*Ec11UPum|mhD$H48KqE`i10QXa1n{$6eQXv5b!XJGacM>fNau z?#@j*xiepW{WZ1g@hG)pf1cO&iP84K!Ky>Qwoj|+FAtN}=<~=uNpnvB^q73|^{Oa) zPJXEP#P^+hH~MW<-Ho8TUw`@Km+EdbavxuyyU_@`kJOyk_?NMsCm+PSkG0&7tGX$D zgnf4zgt<4jPuITRtM&Y)GyXJ{UvYf!DbMEn#PMR2a?RuWN?-VfQ80Sf@c@>M0f4~J$CNn`!Fe5&bg(emn^Q`whNE#QkF|KoxA-UP`MJ|Da>;BtgO8BKK8>19Ki^2?I9zh z&@R(Fi}I$@n$+>j>RzqL^IjSLh`|Ij9+L!tPe_79?=G^&$OMOR62+0p1fO7!Tjs|q z&XRmAcO&5Qjha3@Mwng@e?FzV^}EM}i#|OoE%cMZFP}DEL zQs0Z3v^dWiquM!bGtLvp1LfT_v*&hx7`>Rc9@RYhFdBb^CooE4$o)p@{pcy`@L1FR zP|jU9X*}N>eLm^o(@mN>ukB>zN4v1TCc6w%n)&ir{x`?! z2)O9Ov+ds3cHe7P^Z)zjn9ft=^lH+&j+;KndqdpIjqyd(KD^}c>*Ip;RjSd45%dvx z5wD2s(^!0$M%lAUppWpgHf{=g;sign5&$N9w;Xx+b!gxW%VdJ8S$r4H2T})5y+=e1OS)w#iPvUVSFFw zW~1^xvT&M`oow{sF>3$!=pPpmy?c?;y!ENHewyu`TYWL)FO&v+zE;eOiR8Yf`!(%p zc>`Y9-D8~}UJ880Z1PaiL$E}(PX*3v?NcQ$*V_96kD-i*x9(>C=gXIqxuPTB^z)hc zYW}v9Un9i0bUpzr?cqD4yuQ5jEtVdgqGx-3f*Uy}w5UX*Uo-d6(Urymw0v*Fd8vtNpBs z>fs3q1f7IAVa(LryQJLNX=*ch`QU6_s_zwW=vzpmuL6s%aZAwGAWlKPyMiR;JFYKY zq_EfRgU*TCg@7=4pT@sPI%{5Sk~%7qr{aHszTDZlnP-0W`>;>H{PG$#^2;yRF|l8M z`Q;e^^~*26d=mln%P+SuP`~{0El|^G7Wf{_(%0x-n%mc@Zw&SyDR3IxKT3Z?stfX) zy0}LCXwQhBHvv*FGEYaCNnT#3zm52MMfC#pb(w#^COnPXTba+}_g3!nj`0R~>UHvi zwO?nQAyY4Agc}qOK&w~jH^5e}Xo7rqJC*B;8yQ!l^+x`y`TwR0o~Da8a<#W~cb-0O z_Qj3%y@79gZ9~t>CiU-va{sy)dxv0D|2s`T~0JBXF?q284b42>Ay=VSflL><KLi~1hrq-B z5P;Yp0ulQ|Kw`I$2Hy=7`$?$SPlCmM5-#?WfU%#1jQu2N>?dJkKM5SWSdFgT&hLPa z{Rn{UM<8V13nF_G`Fnt5*Tny=V6s0BPWC?mDEng|Wl!q=E?C*qO^pADvU5m!^fxz8 z(>(isFH*gz4*fF9cKZZ79#BAv7DWf^H8~h2i4bjuruBLY3U2c={&T| zSLNTvlzsht_4ne+UY_^-IJWGyXL^O`8eKR0tg#mWqBpQ;=fj8x1)ZHz=n^gT(i{CU zI<@0^FZLriw6EjE-YEQn1qhD5&nzwq@KNTC+$693s(!Ie`UddlPvp=2ymB*E^@ugO zulzJk|90B`jQY{v&W84B)L)}bt_uuL1%{^r!|MW1d;TXp$5~1J-DtSlyWRHvZ_bym zb_Dkjj`vRox35awsOi3@d0mZ(FE`iemm$U|vlA+R z2qivA@pO{&LX3xVmov!sRWCjBa{VZI_xSqZ@wDbN7hN6PTuXUzXmR=~$*0#Dj}z1D zb?x-;>0sg-2=T@W{_Bld^wh#2-@Rl&PO#G#A6-^-1c3+h~9K zHnZ$2yiSLvUt?uIp=IyY^B~zvX|IcZ9k_Vq6hAE{-*mCd+bw-K^L>-g8)w9~nZ8D# z-4gZZh5X&(y#Rc@*-NJ`f4~pDG=|d}_u5r@CFAF-Mn9sAppVe6U-6Z0OLK<(_wR0) z(%lWoU$T6f{nDs^octa@YcC7myz%fg22Z2@<+jDnsiH`t^A&>gY4gc3i2BRBJI@== z)0LUK2mIO9(e(Qlli>4N{TmDNEtJ-|-j|g<$#?f)@DJ^}mdk#y_bWM0p|3$!*MGHcO8Cv)cgxP&o{YcI?X6&zIX?=3k!^pL5?lka_@6<<0r~6F0KF z?>=QeAC=z>fV|lJoFw}6YAnC`agDc*$ZspIy6?d26W*seIol=vwZvy1?TzTsJ^ib% zt7u>Uy2{6H^kHO($jt!CQ+4nkR^9P?szd&;>V`L}`$L%bub4j{QKfc`jLL`4nA}g0 z_uoH3-km5a4K=SsoP_Y7~bxby|?PvM_Z-aLoDDD(Mi^}cx)|Hl3H=W1`< za=(gIs;^^}uOpIgM*hAPUi(^@@!LVlE&N&cvAP*Zz-R3 z`^MjD_|bsecSORz`=0AL^z^9D@4LnNtw7z^!+p2)oY+I&)bEnqwI6f{zaQmIeLuzT z9{&f$XT#ozm>f4`J-~PP%_UF~NKd-+1 zdG+njt8af^ef#t3+v6$G?d{QJ9R0a{=yjOvMcloJUWf1BDsaD1I#K<7@{du|E*}51 z+9SbJ(%+$fyx6HdXTkSbj~aRs;IU(Gl|in{oVEH~aJX4!{8Z+N@`vx-LC`lK!Iv$5 z|MB+T1pa;|@S98^_`8`PZ%gw1Ovcwt-n>l+L0<{1eWz}IQY$~Hj~~{=)hX!1H;JEj zd#CSCpZ-5+=kBqc@9##>$?#(`{5q9YbwO#J~`a-l9UycRA z(K!U?mrib%-l(wa+CTjn*L-B3CmFk}qri6S>T0i-=H9#O!-&%~c$qNV-JhNOzXwd^ z==#RawO9`gz8MG1>X94fm7j_CXELLgd-&5-RK1*ts>^BUL3^)r;ip{qMlSMP7Ji*O zel81tH8?-{Gy;I=7V7l*8`r036}~ zLsaN_Uwye-eDiM3?K+-E*=73sw=$kjcrKTU(^o>Z&&w#QiSwUM{&@P^(C_Rzci#OA zRq(=?EZ3zjmY}tTr{e%C2$C09OFTKaxHM*sUfxT~wa!YpFgpgItywBS(McPweR`_l z5d*E_)ZBA6baxs4fF$f6CI;Oug@Z;m)b9H+1#GQ=Us!w7DTy&;gw zVS>lieqQdoH9Jugi`jeBVZ%>zZ${MfREYK9FzKwhNC|Cjw}#Maa8ktM^<)DNN6MJ` z#DbLRYV4NoWZET5*yHqdw8|4O-OUbttQ}~$_n-*?(P`1`p{dKb6Kxp*E9h-CFzAHffQ$7JE3$61p`aClFM`ER&VcO&Mj{uRv5v z5i_rCRsjluRna1YOK91cTV$dU3pBE1jT{pJt`o!+rYq)n|u)008a49-E9ca=kml%;8^1@d#?|_YObBB&Yy(9V0UcTAonXqwFjJvLEteSVAatg|!V<9kBd^g) zAehm*3#X>z^(XEXH5IKzq)|RI<%nrQLy_JhEl$J+#F!~%EV)A_Y~~9#F#rWi!E&?b zWNb#D(>W_e$O?f#TvLo{r|kUG_H%vU=QqBIO!w6jf)(T76ojKZ{+4T2ukRnl2YFKA$n^IS-WFjIu2REQ@5 zHr>vgK(9bh_jdKv(6L6zZBH89Ik6?6GWG~!mTPI0Zat!Pic&?hUk!WKX zXB1FdsCu;K+P=(4Ygih*?_=X;9wa;4P#2XQvhk*cRUcbP-qKVu6L>;F<9U!$^sO@NwQp72;l8EL&r!i1Z}9fAwqWPvFCU< zY)!bKSN(Pw#W9tvn&Hs4VeK!bWXy-AqNyZajn{CrK$Z@Nxh+-foYa><`A{2>rkP`B z8%;@bITtf#TU(X3J#Lx`(=(`ZJvFg{Lr$!f&_wgSt;Z9#W(Gf>#dHm)0h%joBJ~Wj)u9i zgb&k=-_saegp(qk!euaakqwK{16=S-+I1uim58Nt39TxVA3|=MhN|k1q9h9rmU|tiGu`@IuDmfFCC9Z(w_{vYP4K7fof zN>N%n+fM`6?>x%OF@YGbkB3ACCqv`aydW)FaswQsD(*7N%mrA4fLa>2l|rxUq*afK z*e~}Wp}2=_R%$|E&3CrLYwHzsD3&d|>oa2?#{CL){KrE6ma-dHm4C=q9vXAloRYps(8kn}O)T ziDp9F_>P^eaeTAT`tf9AuQr9t3C#v>z=X3*W`@_cVRz$Pb2IQDh3au?Y?sw|O&umg zw+BN;)DaK0c`sOJ3uxG(IJobRtVDOQr|*0#8-@@j#Us2tL_=jxB-r=mZrQB3O_Cww z!K)2?H=e_E)@J>IH>gZkceSnsR<_35nX}bww>H?xAwg$5lIa(8CU(bU z57w1GlUMVq?ldQW@ywrgEYGjJ6eI#5V^=k}N@Q!SE+Z-(yAjr}Rd%7Ejbp6o9k`P@ z4mYcUan)?sPAk00+Qg7TEVn(MW)Bh7M&cHXhG?mJvn|yG;D)9)kY&K3 zyA!i!mCH^)hADkNm>Qz%LYdSdJxAGSr-)pz4}v8*z$~-#r8y& z4L(n+@uswmxbZXu>q*UM=z0<{I+fA9tu170Cr8^^*>ngJt8lQR;sNiBKmN zxIfYvvgf27u#dt0-kRiUs%m;6(`arLR*2U!ijZ3XZRIVbEj9=>*?6uA^%L5QbB$xm zqB2uIUYPr~C%1HD3S~;FUv=$N1Ilg$v}I(FoHmwWPr{rkcw0+K zo&__+C}h1uCXw9i<%`DM*0k`)veUV7ZqRzh54UbZx4l+8k}2 zc9s*bZ)fUmXnU!hW9-0>XDLWhjv~Qk!(L5Wq!gQA13IQ4BXn(oIZwN>yq&G+$au#6i&xfQZ4^ zkfL5U2O$9EO=S`jx(ij;I^Z>NfLGSOkfz$O_G-}(_aSw(ow{5@W3kQCh9qI zRm6g*dsIGc4@}v??6@a)q|p-%G;Fs`lWd#m0JZ*NGoHxoA_*%UKK95~Een=DGJ-)* zvZ$kq7}NY#Y*V^lj)BQw`yJcvxEU*9dVogreou)-K`wQIJ8GMWlk6vlkXSH_t$A>K zFj<5gR%=UggNpe|@TJ~x1)h|<&5Xqp-W3bCa)r_jVnGTNBvIg_dz6Qc<8iu+_iHXH zceLATD|@i(gJ)VMnk&xHOgVPU=^J{n<_8C{#7#V|Ay40~ByS352C%|s!QeZDx)6uu zROToYFKVMN4ME;aw}wzP^kLRmi!y^ELYCG*nH;G@PEdB|hLwb1yc_psfCBs6bUOeU z2$yi0DlFz3&e@e-iA|E4+ZYx?Io3{ITjMpwzNg@ z<12I=6m78TLjmYn!IS3})*)mz!%FSokGX218sJvxvFPH3RU9b*P1 zQ=3XwY%Y&FBg-AA@RG(@dF`aq7Ri*DuB=D|dT={o;}sY$DkS2@6wB{-6O(CojI$oM zkZ^?LZS0q2apc4%rkX19*b3Q!9dz8KO153MR*A-O(alU{3n^G*n?eF9RuqekCR#?S zj01fp9YilU4(U>Zj*TmpY?Re>hKWo9M%f-c*1ouC(U4Q8>Y)}~WEZ-;)TY9C8;aX# zJZTRHlV=>VNNRI)LbtayW7wCp#i>NHOHl0@{!y46y1Ig_8D1 zXlrvkVw>3*J@|YYI|in(8`tR$tDb^Za#i~@-VTH_7r04DC}HEQSQjcBpM=(KykJ=> zp8I>qoF(b1T6OjjCd?iw!XdWWt`XT5X;9S~Z4o7Jb>nBBds{shlzqR+cH7M5D??zvD7*FLZjtuSJ}K# zA9CO@PI-Q@XW$r$MT$@5D6}_=&R+0%oM-7q*sfAHZ0rM!nnmVQ2*obuEd}8szFa_w zsq2AU?)vaJPoPGMLYLcy;bztA&c4-52}G;;gtF02pM_HJ@>KL`83RkavdsW7sD)?C7naWW@#e6MW$nA5jjgXEWDhtwp1<-MwUHOk*qay^9fx>k>N0V4J2xMU)kYAY@B?K&YaX4*uwSJRzFqyb|s7Z z+@%}Y**gF|5!$%PoGH|;A(3bHGdb5(UX)#FA+77!7;`!x!B`VcqI3r-vxKJfO-CzD z(V!))QHq*FyKx_Tq%#R{IcMmV;14k};nU5M89-yIv{28Lx;g0cf-ogC%UmReJ>8;B zDUb0;7<|&}`fhF+V;A?S1yQJ}v=OGoQ523?6d@}qB?Q$psI5m$4nVWpj}7g#y`7-( zuuBf@%$fusP!23RMd!wV3RZ5BywynV0r7gC+(4mkeSoY%tTY zfX~)gEVOGLf#4F5Eh-qJlfzI*45|wYpI%OIM}-~Jwo=dHRx^NP+_n|GhFJROGV=r# z;QS^|=LFK`v%;^p_)6Lj>k6oi1qNj?MDB*P(dW6K)lLdoO*=%ph->v~5TZG~!Yzy+ zOr|IlgA-c6vNIB1BwPrCGp@-Fz+pG%_%%JSohG}KfK~)J=XXSCOgh&{`NJCO*VBc( zfe73=%$17X`Y5tD!yZ~IaVXE0E29-*Vl|sB#yezg!^Lq1=Nd12fh6q*TR>|`z&Z$Q z3MqFwnvl1sD^{eES<^nCZDCCZtrBa6?ciRq#7xh1Xwe0ziE~(U;JPNjzM9T-FJG7T zWLcpZOQ~3k&>B6nr)s)WgW1diqS&nch0qQO(JlL>5^d%pC)*L*7qpZO0jcMQnYXnh z!VV95+jNHmnr7^hS{|1rsI(Q_DGkB{<;35rfn+F?orR{d5{qVGEo~{7*ZPXAA9s+(-~!dVJ2d9tt{J3=n<;vs zL#aKc>J^L3kX4!?xv}-x4b@o#SM*KC4tUh2-jZD?B$_AV5RvG?RP$D6cKsGUOgJ>_ zIvWQjtD2=MA9Gl*MDX>Ficq5;iz{c?g6%xw7`f9`Us^O`LQoU7g8Wn*FLttJtt=gF zhKO5oCeXOt0dnn%0@&FQ9_KEx2aF_#ie4Tv8mysaoqI5ES(9K5SIi`4gO0bC>~uCM zNMWo}!J$^&?)(KW78 zQwmCs;bfe$Jju~m!b}?-w0TAiJ^i4SL+jyV*^{(koc6UzP={SQo%9FX=it5EV5J4^ zh~;!p?fN)~>ORt$V3LRuf24wrb;N+d5mN$98E~hSGAEp**e9H*>{&wXOI!?s(BZ>f z4kOHQJ)a>uAsuK5hkzPJ#spd~Ql2675?B&dtK0cB&-W$_a_N4qns|>y=5mW`1B6&p zU)`GZbbt`Do@y{i#&|zY`34&&o6KJA1IdI__*ks;v9MSd)0jV49+-|}R&6J1vP>1d z=s3S2O3V~7201RLfNEkb3F*u6fQIrx35$VOrggjx*>t%BSFki)q!gjSrd`Y@ay9@4 z2C$84ds`CdX{Uv-EYSCA7w2ZRpF&4I)tolzxqSy12|C-zfJMv(2gu@V3uz9h2N4Na zke_R{S=KBJLfvsWolemPVL=Jb8yz(EYhJQ?Ole9hGxUMCoNbR+EXtGo`ZZAD=yrHP~!jkHUzs7xT90k)U> zX3*(PvJO2^-r~bexUg^}^4#9*TJ#3Vou`mzN*>UO4=dkHH<6T#8>ca4LYM-tGX_{{r4a`-H z?gsS7i6TgoGNyMSQoyrfNzWb7UCb(paq^01V>@xAXcwi4XUVuJ3i9HBbVTYOWsa8%5&vac|&60(sC;?P}9XYKT8%^I@tOQ*NJ%%yG9U@U_7w%Mz!2 z)lFuTyf}0;FJ{L`MR_8ZB;w#VZamd9%H3{tC4qr$IOSoy2*jq@M@7d=3eJS0NF!~M zL*i^ZH6=r{kNKh&}nuK3(_F~6_^t9u8c)vgL?HF-ljPs=?;TF_9B<9-*k>jP@Vfb=e zG@fC@=z`4@f>MZHwU7k^v9N)T3z&qCA;ZUN%0*F$EYON|IuB$Ul))zIN zDdspEvx;OIj?yIVVFt&XX<$NAR|uIKfTVDT`E<3*%7e-RX~-n-n%PFdem5JFl;3z9 zQ49^j9QFI^_1e$rt!3yv3vw$dw`v z*|gvOXk5QPML|+>;#8sk3#touWo^ z>^2g%Pv>4XtLJ-c(lH?3R;+ESeC^ZvlATX{XI^SsNeH_{<7ARPj$?d(&@EJ!3I(4O zNHxnmyj8d{K9P>V6c@(xrL%_dMeb~LpX}sV0VNwe`jO1_I-MFhv_?p0IiIP$6l)XD zb4nr8;|v2-_-Jm09P)#TM#ihfqN0Z&9eiZlnA{ddr16Fb0u$rimRMT>1;#)D^wPBS zWkH%-OOZYVoS4jOlEA^)Idl1(QKlw0pJy?Yvf2^^VtuyJKy2^%2S^nBkaV#=S!g1Yle)Wx)s%|3rk&cuWZW~` zT`&0C1B?6hR*iPKB%&5_z-qLuDJl z#~moQV{p*mHrG=|DMgs~A+_Nh8Z!CCvIgqO>fj^l9?lVY0h#>Fn9dVEMKH0o3{qdq z;w;_=jX$qdBR?pCwPV8~k=xZuqA+|6pa{R?xLpbe9k)B`d)sX2BQ_@2HDh-6Oaa-F z@#o&U$slVv7T8ov&Dg~@r8dWE(^_TDLFk5fL06p{@=Dg`%^Z^FAscQZbF!pd+A*IlZ!>2k3Hd;S2<^J=$=;^Rb5!7L(Yj9Vha)({uATyAh3V5&j|E1(kU zj3RS#wc}TzORo`y)ew+U(1ymAy#mf{y1+RRkc8PF4CN4j7w(%eVJm~l;WdQjvLNb#l=+FDr9AmC1$c|2KEW@?j_!B`SZE{)cvT69Gd z4T>k4zx2CKF4k!(r|5cXkubm?7{w+=SxluxYvp;}~PaA<;fDtdM5vCv@A z?uMU_L$;rc{V_L*nux27vFejMx1tZNKl9{#FV8{nz#@e#V%Eo%?MM4O~zj$WpDw{u1ll zgjOZe@`)6iHOgj-64C_TOvn2b7>6qo2{9FH9bQ}-OL`QUL=AI%6kLgC2vhHL6Oa6wV&_#aIuMZJ24L1xg2SrgESto zoEtol&;(9RscumBCAiu*$a0U0Wl^lRtGzh(;0f)?91?_-GR%xrI27nwR6Fx z50f<1XOmo;uLQg+jxJ{Gc7f}(WPAvfzLaFnmJSp)?<2ruHC?J|4`uVY#jyL-stU#$ z1gYY=m9ZlMjUp1*pR5ssZFLV-jV(3pFl8RD4*oV@%v>WNL2oK;sNu+@b)C$!9-@O% zo`F*`LRm`+YBFe~PL0Mo3qouQJM+AE*VM3uI#t5TE+*&uxyetqG9k4Q!)T3FgY;px ziHcA^u9zZoI(=JXhjkNCwliCmi%F`jXSmC8<$4YdlIwVUfo3ZXb_{yYLP0tm=dIeO z`T=#4!qqE?t+iRSFUdn@m&&*YD?`{vXWC`tf z%S<*&(5Vq7$a7>fodh$&)a%_G7%YHRw+^PDddIpTLV&#&u=sS%+ZKgv7rGOPJ>8ke z)^D*f&NXeJVrB2kjJy~P;1p;wL?`r+^YJ#*n5-e7=YaZpu!5S!VNlM zYE*(foz^Fn$JL8$?m`A>gu6j!YRsOkNMep4Y(cr2$@(}#3GxJLn_4!FpvdE0I5(PU zdxX3up$$1;#`;9ISY}w2(p1OA*lQq+f?{7ztRRBwsaxof79Q7Jh@+Y?s6$1m7EA^Q z90V(af%v?HW2E7^_CO?EsZv2|;C3*_$R#pA*rFo%_%112LP)KEz-JDUhgAo#5xE3> z!xI$WU0|3R(jcUFp1Yo-E81O|TV;9x`NnAZ!nsK>^m*J;k+A8=>aIK`y1q zb{v;gLjjg9Nk>GM3R>MU%!*I4af8Pgco?&sNi~i<1&eyDJGN#*nh4FB9SJE&RG^-a zZKdVjFk2brNX%Y?lXSjB8X_a&5L0DmgHsw^=Hsy8A#4dqZ7^`k%s|jwwD&*;iRNq~ zn`F7(vJCM4l1+Gh%Nw}k1slZ%<8ZMdR;Ub8u_#i;x>no4k_T?FmwPfh zT}-d4o`LqfYHi4gM{(I1kMr*%#a~I_2|;E$O_ApgYYD=mxexONS1N$t-rTZa*)x#4nbseZ3iM zmZG<=Z`nzst98zLz9^b2S(l=2Y7{h#B(q%?r|XbZ39QIH2V!9uPqi7rB}v1#j=dn} zraZ%vVNVd=vdg6mpTUs!OP?N2IL((!~ly!SB#bTQr zhu$mE0-SCm76$2t*Qd@9@W-&}Z3axn34`qSH8$1ev<+d@;b0`2+N1C|ioA`D&LRk0 z7wbr62X(FK`*EB~oV{*>6*ScefaM82SC`5fZreTM8?qKv6DsXzvcm9yyAQx_h!RF> zn`lrhW8qcJ+%&cj6&4=LgK)#AY&XRtV|>_jS|uM3-niO$nVKhz-pq7SSPig0D^_7+ z0sC~}Qw(}!TnLmaU0lao!;3nit?BW2&(Vc{ET$}NOeAH4bOJ2l{IMVgVlFZV%R|tV zHIbTiKm|_2Nzjs}9EJsk2?wI^1#6*~L%?zrvU!`2;iA1{_NX0Lg0Ge(q*)@x{`A;dBj z=8;|~D1tKBSVW|mu_oG9UqZnViT3zJ_a&GrcFkCt>rUY1WItt#0(aZ7=`9s5&=%OV z8FNyDdnH}bRlZvumM+#&%hkB)ArKA~O9UlOmP%@x5<47W5L;SQQ>v2r)r6s2dTk|| zDBEa>3#|#${&YhJy*Y>5P)m4T(}>k<)0Ja#FhO{{KF+5RkBC*k5rV5hK%&7%4b-!v zA6v8>^BWkR?n)VDl)mIZL|{0zn>pm5HwIFg>u7s4InFG=s7m>%Ypzm9C8zKrLs+mM zPw`2!+H5zIawpTsHb)#&USP9KMSFPT`xv%?6*GNKA-SDIa~@*%Jwl%qC7 z&?8ng*=jpP^NttAc9BJSQZLt9q?f>2-C{Z!l7cJrTPY5Bs9vVnEMDS~gyhFHHIM2@ zAu#)3RjOX3ttZlRJzVB?X4K4n7t};kj6=$ni;kRCqzQRZaG zs)-(*34oz-WTDvhe*nF@DkK#86cq7uYzR{>@uvsZ8CDb*to(s7yGs+P-1gOAR zG^-nWT+hY}Pojf<8QT$y5~!1!N3~mybAP=QwkXOmBq<-sIG$|Rs>o@bWfg}NBBfK& zT}DkUs(VC^i#>{%V7&S{HlNr;qyNRrk=-Tl4d8@i@jw*!W_p3u| zO9saryERjRleIx53$<7+k2JlP#|4+gPUEYwD$UA`o2>)f*gI4%l{RcC|361(k!&dd z1i=Hbz-@^<+#PnfyL0-9Kd0#E>dNd0i_bl`wIwa%F!O*0!5U83s$A-x=OIGREip!n zK~-`R&Q@3N6v6}IDQ6VJ@rvA{hL=MwtJvC`Qw|c3cErd6rW5wiGLAx{-l#?v}jYT zE`SHm#viXpg0!xIu%iO#_rqRm_i_}&Rh<}uXw_Qj7y*$e3l0;5Uu)F`P1V40yYUE9 zHMd(+w+>n^jC4sNoTg+k56roon9mt>TSUleLstzMu7#Ws#6w$Q&x>Xdi2Xx$I!VNL z2@`xoPc;JJeT|nZ;2^5fdNEx>p`j{~2(hsb&Q7E#2}k1) z5;h3?aGXFFjyuz43feEBE`oM8Qaz0g(069R$zuVHC z7{3i>vwt1Enet-n7uTOW;AwA#DM`-WE-or6fwpNhqx`?no8u_gG`9q>?ZwTPC6fTsj1tAg`F&$hJxuusV ziYLV4jnW=jtr2gjvxwvZ2`0IB=|2pqBQ5B>^<#bx>>T(=it*k+5d=iFS%$Q(tUtU1 zw?+J7;_^>|;d0LVc)duZHvDM|KV9_?ZpQD>ayR}U{V-mi)z<4Bd_|d*lce4Lqzzr- zyuM!N&zl-usERW{42^T+i;;23zw8BWKpjFZRp5zo-sN8OYGOP)e}+SzY6ocYuP(16r6|K#-GNQEccpEk^i|SXvP?yVLvo0ZRALQV*HysJ+H#F6287Z53k!9vkA@b;^fuq=6%hP&_F zE3<{1@wW#`bZ3FTQ75P%8fT~aBsDE?E8fpC=)*-aBE&>TZ?9$97Y_5xd6bEvF@n{HgWzULR|xFYAk4;g)ot669) zlu5#j-_A*~Q3ehl3C8&*{tuhZD^)7E0brO3wSq}Vgr_6J$)74ifJjOV&^0j1C*J|s zjijmZdIBw;x_kDRoDTk2-;%>=)-B={{on69Js?OU^g+6xoG{70q1#U1TouFa4*d#Q z5I#10x6?lt>}RD@=EmiX9~Df1Nf?|9-oE{DoU4XCGY57>67Eb=x)tvhXl2oT_A){o z^%Z0z!}z3LuR6)b&2+@gtuJD)1^bSIizFbqX45DO#7rM#K%|`)G(`5e#KJ6hTrz;RdX0)*kBGLFVkOBmP~#~=>`0)0>H!1u3tA88SHPURzLz_`POKO!~cm}1Y8zG7w zN%$bfZS!BgI#xYC#_F;ol^+s7g(U|R`qgsRyc37qvgA9{Z}gT0l`R5Y!4^R~fZ3G$ zFwt*n>E}2>v-ifdkr4orE!td+ggnEo@ZfJeGK?T6N|r7zXk&g$z2ORwX&VGX*;0u& zAotGv@LA6bqh0)L-~A01o&~Ko!{-JfsA@pn?;e0n5_hL?a*TG9;G<=1?wb?#hDdn>K1T&$uqWidjyP1 zZZiGmz&rst@;v7pD;KxYaI6k*<`0S7!I~i-=o?16Zs4n)_`AOX+vaf4ls;)n!Eq>? zr7p~O?~%#*{q_^Y0?CVvQXCd`a^B)Hi{Jak;t;0@ItFt>U6ImrXi0Os_~aU|k5c}v z=b4&5@Kqr7t0HQi@6=%KkCHCC7&M;_=%!m^-FM#jvc80XM5sMRzesKt*kfYzd!0#= zBXp097sjav3wz$0dqZIaj_k0iHWf{Gs77eUy`OAP&>~@0kR~z`jKaLnx^bp}?k;`= z1@Yhf^ZoXk*m}P8leHfyn#FekZZLPnn4-4u81MNt4Ef@k9klnvnX)1vU+N(b#Oa4t z3BZmjiM7g)&D-?=LB4sd?bCA&p&@;80d0)dp#H5RWBSDr$MSWHv!xL}CmD3Umiv+n z3}OeE9`|FsFWmSseWw+@Jz8eU?zkGX+_{t3e6N(MqQR8TBRD z1Hi@{vc2ZLW!#;*1;{~4oVhXZvQt!yJ2#vx0NoxFOTry>7_FU?V*vL)XGi_q;+46t z@W~O4Z}}RT5VXPQ#85*yn3io@Npp+h7qA3uLvp+hN7WTCt%@shCfkCPR^!x2mE%o% zTB~_i{K)UCkEi!6HQ3C|dtJ}N;hN4^e4D}Io4}n#u*%R8O;k?D-bW6jEv4z~v6Iyb!viOILc@(COS5ct23rrP((@}&;DCEdfQ@T=?)16>N;(K#m zVyIkUUy#A&gR(jkicQ^Hw}b!c{z#e-jay*ar^NF&T8L$sfZ~SPQWpC30GLndBbs?K@MSCzUGi8|aR6-73MWVF!=}GdDDpOMoi@DM z6P5Zk)!auZWn`;!(p2qzkdJd@ID5V+x*Vdh#VoY;l9Ef$OPBCTz=Dmy(SsSz3Ac%C)c$@e7qi%YiB|9+~n;6^pGRHLvuwNAv7nZogYY!|TG z?Yi*CDGoaPa@yo=JUqcCKWGrKiB*%P(RhgHPR<={sqI$~{vJHyG4tC9up6Y|vp;vk zUF7Q<1ehi3yF)-qlibQtM`ZiiVF!q2DbPGah2>L>7r}>J?NHi}UFi6<7@ay4{zOmi z9F0|)1cdS82t3Zf#BsB>&(?27epE7n?v%H!Sm$`mK&E-l(EON$k+3Lv?77QIu#}A_9_G)B z4-eTEAAGV72$3f01RMB(!lv$qCUID|Ab;u3!!Di=1qCH$ej?5a7z8O%$gw-AZk$tr z10Vne{X6fVCyvIncovWhmu|yB8~HlAVnT(kx_#%8L755Y!m}zE5#CQI}WyppZcpJjoU?18lnaV4`O z7u8mYLSlvT2^FB{tAHL>6c;(l{b14Uf$_xh_-Lf;0FQpi`mko9BNK7parV51IsS@W zdVoe>fR|pvKCf@sX!|lc(@MF%yi1My2QvjxizMw5RBDo4xTrPz^I~lbFw>A4wkO$= zI=Tu8gDcc|`?3pj>M@LZOZ|cmTlL|mydVuG;SyY*UQe>IuhgkP=*Zzzq^S)7F z+c-=_^&|O~P|-@{J(4$(*d{|CMfd9mhN_r__V4=q0J(v{i1|5}vG=iw7HzT5N4#$A zxckJd9#B$Ra&K+<&HjF`=piU@*N#V1>rp|fojVYA0ja?CgdQbgAn?eZw1>RtR<`FB zf_*gj83a{I-CNHmk|zfBqP#oO_5dnFg#mp4)88R5`pioz(cXm9qaKw63 z)2iWp*4mCOh-%;Hj-yYV2Ac@Hb~)31aTU78C0skvQqw0(&6@l^e>D^&6tpZ#*!ffA zqML@|<@UY%0#r)#?EX#>BSL}x9RhN_xp)kHVfqY$LOr^M-#xY0@RrsBP#S6X%214r zw|hJX>?9Jxb}7?bC*V$oA*&R1G`~9e?Xz?NZ3~$C7%3WAOiU{q0so-~H?4fV*b!~k zry7t*~D|{7q8$YskxLv|4@PBudj=Fe(t}xQDUdsUYu!a7=wW2+2@99Wmkr z(rMU&*Jw;fTpKw`L`*AUiHguxf2c5R1`-iVD`~)X zLrB->)fxhzN%}Y-W~JF}l>yF0d{R0Wo^pO1l+{ z6mH-3$7c+jWdiCc3TOG;Z|gkvHgC`EGKgWv3J*2kGF?< z=E2bg?YZCf&O3y6zM?Bj@ilzp-D@@MY>-O#0X$Pq&9Fn0X`4Y}c@Qcg;Z0R!Kr4(W zg1-3KFQpC`=r9Zt7yu?`YE3E2rrWyDkH9elxnj}I$FD;i@g*yS%D@qRgsFY*V| zeG0Ec4w7M12^3(NJ+l<%O->W3t{)L#$99rNR8I_eLNx(Ymh(rAgZ9STx4w6`!6i=- zZVs{39Lp<4PJ${k+#KX5*c;kAr0(aPWoDgwk8PyCU5G%~ zhaMVfrRzgks3*CZ!!6u11l58B=IzI{`^}JqL6zSah;ePC@nC~bPot2=gv_A^EQk4o z15p}=%X7oRz0js)r0kHFrylaL$*c*dDV|uXq%$*Boraz+QBRIUiX;Q19`W;rv5)<# z-qyMK@2ppIh&<&ZGVk#6b`S)tKcjvQE+vNM9~L_0czl^Ziw z8i1cgtpq@)zn4CR^82~Cq zJ~L7>Fspz3GV@VouQ@SH1G|CYJ_g^^vo5TYXVtFDbE#2xUk(;NTGrr3rW-G%?NfyL z?a8!MG*6l9=Ru;{X2`~VnY*Um5uGklwRDo9v6ZY8)6fu*!kqKV=5B6QK0R~jA*~Kk zK5gc!O-V5qVq82QmEI&QeTTeijZ<(YOBnAbS+k2Y{7c+g56QT)AqU_?48V}Ty>=&1 zZXlGwxqXqQK)`gf%>ga%(UE}t5fCN*S7Q7ovCUW?{NUIF94TM`2It60htKnQ!u53* z=&U&grWl8ilNT+VHbvL4xiC~61K_#SvGW3_27eV>MRHHC1@+T%PvhiANZt9TQ$Qb# z@+KaADv85Jy$BD{lob6CbR(-t5qzJZzPEgJguvU{Fh%PVM5vH!pAQYfMU%YJe~waw z!L^7@@RK4#E5lW4y<9+V^MHg*iLprfEn`26v~F99f}N!e!GO*Jt^;kHD}KX|`sMy4a7fn(9<3n^CV!~1?=q0#NQNJr zsXC=pQc`vWoz(IIJg*Am z;Pzg0OcEQg{w+p?$NU<`RZ|rm6TO0+2Cu003q1cs&!Kdc=u)wAc%i`H6Zt( z#V5K%dr#FTFw(~cJHh99C%-dXh`DfsBCjAtSqVu32i4aTupNuPV`MxyhZb*C70Fvt7$StS=4Wa_KAt$u>0aU%x|G4u z`I5dZkDv+6ub7G$R&)*D#Wx>%CD=^;#RsXPb*M+YVGuVn!j&<(=9FMcpIIx}Y4$ci zw+08KeVgDOO{FSUUhQiLCF89Xh;+dqwM(ik1mTMBkimFkb%c4!^}?Y`V!0gg5T$Vf zK4)v5-067E2_RUy^2>Y3)1>Z|;4HN^90$1T%u0 z5^cAR_;6fyV;@IAzaFL2xt25qUV5Ho^p38cOl}2oQfOiR&8mi(j;mGk`~&t5FfG-J zO|^_;OS@J=U;GEm8~0-KyrzpPE7$U{4Q@xvmJ<@shsTX?iy0i-jKEw^ulE#?RjsG3 z_YuV`aBY?rcj=gk3STxxkTZvO<%2Ja4?S?emrSm(ZU+rf86!SA$Ts_F@T~60Wa>Q6>!k6$)H~Z3(An&f1bR11o z$PghSDi}r~`UA(+8EqP)CCTZ)TmMw!p>dsFZnXk@yVrkryK871%*Q1)+=aamnsepcmZBf<*7tV z6wR&-W3e$qO$D61N%gNFkp#DG`O4cV>1CjmZKysVkXRS6N^Jk~UvWc5+fHwpLIZ6n zFv#TI2x>A7J4wf1noPmVlpds``iO;r-Xt?A+Q`4Etg%+Kf!pH;-%*LUGZq8i@u0Uu z`X+ZiR(&iQyEoZ6TYJ7^Eijk2FYP@ozVRJKiPXx0bMjcx(K)em7bI)_NU3(Ai0qB0 z4MPX5GV~1YtX7w?*5dwFw@5u8nlo=q@0zDf20l_>axye2Vr11is&WhMDbccdp6p1a z;0It?boSeVEgKcyZ#Q~^Y|lGT+bh#J!6*Jjv8AJbxMExYNW)CR#YwVVdE4#*4X8KM~K}Da@ir0swX@&Y?p9bG=`z6NrWtTNO^yLpfR7$aLUjqJD5)_Dk@peWz`SD0}RKiMr%Z#lCQ5%-yG$qVc_=-Cz+u5K3-o|mmGoz7Q*>k z(mT(ug>eQV33~1d6D~-OHbr2+JJ>OG9W`pTC|QP|9lca~C&?37$n2BgAl9V~!%gSs z5Wd*MhKK|#n`G6L!rsjQ&MpYb3UKS`*Ossd89-?sSt5YG58QoOZecgf@hY_I3|;Ir zJ`LdAhCb6WNDY;bL>}isDrU~%52D)THKgv5uBwTNHANpx`U;x@y1q4WprhfqZyOgM z%duJn=OB27GSX>FyF7!=;Ku5_brNYw41$M_R$tC zKaePdu9xn67UmAmWT9Ob0K28d4V~;l9&vM)0?8>-_;ibqst!c8P-a)5HB9DVZ-8Me zI9h#n|B9sfOxNCQ7yGpnR=okKr{c~+!LAEfW@Xs$fYt1Ywxe7at}XM!7Zmnz=`E!Z z*)5U3nME%=4>J2#j6Ca7%U2$p)m;D|Go@+ZO~03qc+v%D@Y%K=8*8tNn!M|9=i9Ok zL5=ZD>}x5EZ+dZ^bLi~8WJg{F<};Uy@at1Wq2w{5T9bAnCeH161O{)l_!`aRVA>BOeu30y#ax$)ur?Tby z>yvsr@GybC=<8_^R~9W+qOv5T&Uyw}w~pqnbPFTOSVrb|mf(HEji!4z!A#InZgsQk z#DG{^hTDXd?AY{*PW)-&Dj%Vei^G8wd>(GJk!fB zWQBifh*b42;>!=Fm3u%rV6qnpZ7~9~)GuWk0yb6LUM(TXQxspnD#}5=DMfMcZIIg- zLhX|+lvNx&b&RJEXiVnJ;mu_jRAMJNzAMy?Szhd|Fs_$9*|%uiyK!!7hDbWSZzrG#wnTCZ2EN9>?YUY7!z5Kie z$l`}PA}j9o*(#3oH#q113}fL2^j8a*u>kEmoD-@A5BKJb@Q9qSkBn0hFD4UT6hp^D z!KwYG!-j%w10>xe8e!4MM{Q`uF9BIoRu*e!uChTgHTwyV59$zrJu5$>=0oX|F;Uuh z!MLHcwRoPJl!0)6_ZswTQCU@M8zh zH>5w!2^BnRUjZn&+X$dpn7oXYHdGu&dL6{TTxN5(IjR{9k)o=nWXith#7Pn+qQ%4S zHA%PO<19f`9V^$VcwY#<0KyZRv483uDyHHff1ktUzlwd_G)(Tiya=67^7C>No8}C+ zz`O^+y_oQsY-`&7wBXASDyv8uPK1||xE_orejobD8T9cfh6vX3gqOVh$|xgaFRv0a zZQR9;(@>MZYlQ^VhgFkIo}o>aS!dZ;*=bn*L7CZamSKaw8^_S9awf|803&2({CsN2 z_HsRJ5sINC$tEzRt2TGRYFNqAudGjZxi&+>9oytFt!yQvE*@An8Fgs}4TA;DS)SC# zikEtRj!>`jD|7ZrN25)JiaYoBdNsBVRoby%FJ~ea(<>;O)VRFP4!(k7;c2xQT7rY4 z#(L9wieK!PB*$pZ*1G&fg}~3hw@_z% z=FWEl5G9sDa*;)W`F`6VC3s_|tp}45hkgqpEy}&iOooB8JSWscr9Fnm3x)o+am8`I zrldy|r6`MbjNBW@`s|^-QTa z<#f>1G~__xIV=vSoD`PXI9PcNxy;~_ zu^GwOX>1fKTBQe%s+gxqOqvpeZhs31B;w0;-;A4)^C^@sy)_swhICznx!ksFc4@z8 z(k%v9xNH0$8NP}L+72(OX;3lrvHf&t^gztQ%_#oG;w+knoDZ=}q534_-W?P+Ak`R- zhJtMnG{&cEBc>WyjF39zQM^W4i!bv~dl+wSACJv$&}@A}i6LU8QD+J~r&;-gId(@C zjwmZ$kC2l&fQ1@cHPxN+U1l z3ZT3lV+6(wF@}7|PlsMvg=8WFf_h0Oy;_QJCe25UDM!Z-SGiCO0#}}LpDo_sOh5fz zpem^&rTlt+7Kg|2CSlqisag|uS_+AFS=lBf($!*Sq^Z3@<)Up;5KNounqP!Hu|o&J zCAqqIdClU8quT`pBmX>H#JA?g*MOW_rEYB#XeaPcDf8`Gs`G^BXiSC&$Zzy3pd|q-fMV4dSO^B^_W!Gkkt0Q?E4LIl?Qu1Yep zt2Eu)^#yHn(S)Z(1vhT@>w*o`poZcd07Lck#z2`l$}I5)wN%)%n`}vt_ps<`I1k%8 zH0E~zT;S0VUj_X{4w7a@6jQl`qMjv^G;{?K z=Zu8Q(`gjZg2?%)$l8J2AY~%|+8Zj+VET+J)+^+f2tgDCchw3To;AK0B&DrLs=(y? zv|8$(QJ3_xw7Uq4NBgi(@>uH9S6r`Y_cR>PnEgB`0aB>U^X^<9vNP&ht>tg79Vd?& z-XS;JUlu@fnexB9_K#IYr#fNu^+-oJ0<`Auu#-&!UkL8uP1GHQ5rw7&CcexUf0(ugSXqp!w!X&gI&+EpwIH`KLWT z`dhd>(Pxbw(iD#eGhy`Kf~U(va!a%I8c@Az#xfO^A9qmDsNl_{fSWm(4#v*aDltgg zX*uR$AkLe$+WJryu6ceE`2aJ&A4GkzlpQCY zqJSdR*N&J6aS>wnI|}X`YwkEMBrs+lRn67ES3?e^H6F22Z#z$?gODZ9@%JvIZ<#Vx z6{n=cP)I*6mlRiyJbE{yNpT`G7$z#On{GqVgr^uJ7iIg%N=@_u_pfo10 zBM^w2W;Ih%o`9jjsh>w%D~euaA>yl0`iYv5nbp}%5)X(X8;|a2+L_OpF-=SHwco7G z5F6cWIno`w?>}15J%73BByZj=2Svzv*0CtdH8A7|!60^IzW#pnc)?v^z+K-;Hm5|9 zT2q+m!^>+?Xo6mP>@mtbQvogCuM7Bu8Pp^N z$c-CIeB3!ZC2RtX>l8p1LRwUfT-JVrM>o|Q>t$l%$f$gJtZqXjdw0#Hk0Qkn2i3g-P z3LC1i_x4UqvpU#${_?2*d{vMLW1cPJR#|((LqUmR&!UDs_@mWk!v1zUD_DWzo-XM3 z#$|4;k?4~SwVz%HF@&Lncd5x}>x%qfN1q<=ZrHneBY4%zAeYAFKa$vXbGpDc|ub6vs&1@B|w);~XgK;D{uFkSl*?nMctwk{KW=xosmSd>k-WH7A zvBvhy6(6KpwC!*ZeBaBsk2^>($wzo(MhDDy^Q~#jU>hS}}PpdDSMG!3JuBpAo|(o!vD< z!!FR-k0!=k&xt)u&~V4Jn=%6)%t&KCD*aA(L+=$xw3%AonWKL!xT1^s+0M&({rru} zJ;T}rBF`^7jLAh@$na$seLoZ&S-E&jLwZ(=7DC{hMHv<_7$0PKN^TW$XN!S=YDnjv z6@PP7CzFYZ=I`;z!0ZZZ+Htz7vcgUOtA(%Fad^C_aa!OOTkK`C?iljq0^YyqE^$u; z9DLMyl9)ux-bnD**kQkSdoAu{^5S-U>A4u-M;<8-Ks19S$V?9EMAY?aeB2{JqHGJO z@L`yA3&(6}dFO`7K&|hlN>(IIL1V5&O1WD3`Eb(TaYFBO(C`?aHCVPY0#` z1)mtWEP>R*tu%QtTJzGr*)A2|dW1)Jg4DSX$0c$XWMb0$y+L(GeHBGbQ9TZ6v(BGPJ3;odu7YoU2ZX%rzmS!*=*W72P2DdjoD@$^N+IShB3M@JV=2 z0~;?}OStqYy`J~K0_+V@lRs9tVD2~ACh&|E$$tl2k)jT>4RC8brzAs@2Yi$r)+z3L z@oP(TNQ^ejBi-wgBV;^W=f-6v6wWyXS4v`0&0Qg(doxz5->S)ZSbU4e0Md8@{ZYIA z9R=>)rzx09MG`fnY`)uBaBMno$x=t6V`PniM9VKGAU=vrm}~L$P2Bl8L@0DP4u^o~ zsKbw3>j>8!26ut(i@5kDP12a4p$ndteQbkE)I|5zmKd$-MYQB0iSu>*Nb06VQGV@M z4HEA^Z$wr?O}5JAZhN9jgnuDVR@ugbmt6Lsv-;-##>NPuT4P=PnX5^T5B8flGCX*! z8V4hk%IzbPG1C9@T8f>CP_hgo9$gm2Taev_sb}CtZL$< z^5`@KT)M?8*Bf$@wZUy7anTK=LA2&^T^UoID;cPXHbdR7xZ$|iom9$C#Xg5R!(rw9 zXe61*J0?S9x}sVlR?3J`;*&FvJsqO$<*tAdr3C(a~Ud(1uTlWVrX z1ak){e$b5XJb@;jiY5T!lxG{oVXh?j(!0H>w>AWdZ^j#@X759}DEztU2SfI_6@Ynf17sw5FDPHizRwu^E=9V$##H$m#k;CLbAu{>kS3Jt4|ezjIzYuwra zD?a)jC3D?;E$>!MuBxUAf+tzi&wVZWv%_^@@Wg6f%#2{ z+0-TA2Sp3vP*sG>-dPY2+NW2v{Y;Hdg&qQ^toqFf$*xpo7OM644#sbk&O=)hXL8AJi2mT;a5e zsRDo8zF+?Qxr`rz|Mj6N6)jmDQez7kHe~PKlh*ok{)8*`iSYQr>jT*fvslQ~2JY0R zzlZY0tdBwWS_+ppKuMq#CQHOA{R1m1url$%^ogXQHA@Q5gz@uB8~G% z0`H%{9YMN z|6cG+XF-zRlqKbnh5ptqCBUSGW|xU|gu4I;Mw>?53({0S!YDa}<^ATQn2u=+O9iU! zfU4_3139RndNxFPGB@y*uHL?=z91PVgChCp84^$gZ6wB24TM~{uGE1U_uV*eJ0UVD z?~|`8y+zeWaY0PKF3w5fxp!FOwU9Fml|6jPc(uJWUxTklsZ}s|h_01DDd*$GcBevl zYRwE>GH(Z@-3~;nCB{btI3Jj+L3apneb6Pa0MV+~6!M{Aru1Nx;he4A$r9_W0Tf`Q zy`ZM1_BvDOXItcxwivdZ+&_xWBFjP`2!aP+fXfAqUi#z4IvcuYhnA5f9^o4< zY_F8s3B)_wz;sZiJwsXL&wv#DB#Jm5Xx>ybwD;jRlK}>Q;zm?JVRa+)I?SC2@Y1fI zSierFiN&s!fQeGSRks7jYJ-%DOq-9@gJ;U)C%UI_ND9hQ+mvOSIn$mxfgd_J@d}kW ztCVC4p_eYWccWP&oJn4f^grVQ-G;tj&Ki|@D@nC+MUR%1Zl2hx1?s%u^-4U*VsRUF z4B@)Zqp>~0dxUciqabceJagEd>zi`PrP{llgluG6>92o0rzXov#f6crg1lDx1bjW?&qFc8YZ05?NO0F+EQ-=kDjkQsjklko^7M%>-@&j(LDPK1vbI#Fn4R?O+?7C z>&uUvd?B=I5FwnX?zC~+`9~m#SL9w0w^+{HZlZ_$Rdur_>c)Kk?B$z?xsK$VMk|rQ z&19VJeQ?imw_a0$1p##os{hi1IGTQ3tX3LFf{rKZHP7dRy|FI$CPX zU0jP)?-+RL8~q1>qr@e1yg#M_Fu-nH;X8N0&j?G0>SyP_<7F`eA@oQnY+9x_y>0G_ z4cb}#eiVb`vCjkY;H8N~02sEVxwSXwKqFhL>eXN&nUz~@T1e<}oT!bZzG}7;pWT9j zh+TwPTTeWoNu}iKCyf&uR%q1XT>XZ#&Wy6UfK25TG7ACbj`KsK6TS*qAo09Az=eT! z=(I~!f!r^5k{IelbivX3-Vt^0J+?t~(}XKbXHhC>ZLixL~1-J1X5_nvS+NOzk$R1)>7E(*VeH%;HPl= zflkgA1jmms0pbUsz%KJ}6MfHAKYim;Q+)iR0`QV=$~{gpA6n)BBrtHW=w~KTC?Z?J zmbOLW^Nw_)x@AXSH73n|vWLl19eLgBy_6~KtzDGX4I@$)Yux+%02J#TIa%Xa@(#8&F}0$Z@CXy*4gb!)k+hWcZ7Pu(9nDcvmZ8;?edY z{n`{iTL(<<0C-A=K&VIfFF=mV7P)lI84WjF&**nC5#EKK;C(26{zc zDcsxM8fBdJq5)!rj;s6oo=U$(6>MX^+o7-yk$#QhdIaj;^kxvGc?l)OKgt2T1JOQ8*7*<-yzp$?j0Ul*d0DqCTsnF_YQIN0-Gv*rGk{ zk`2q@fnYq__1j-nV_+*~78c0phd61`yZk;K>H*rwEe(L%S=%v3c#?%b&}!YZE(+W? z1f;EX$R9 zt0}HbO~6)NgGL*DDHnsKIWPjtd%K{p_HKmZPu;#9p_9m zAr~(#;L1yE+PU(!e&Zr^A+ASzhWB1T$aQAq(=SAd&+bmzgm(q3f5A{oV-IDrW<^N2 z!z-5l+ONqCFltp?NK9WNvc&XDG4<8JyQHTc96u(nVwwZ1gq*bbZ}M#5h%dcCUV0Fz z*{*ARJ1QyB#2M_%owYX)ZE=GYdfuDv(AOU9X9e|X?T6)~hG_ic{-gGYmeo$a--+^> zE*mZrN<^i{hPLb;Xb2c?)~;puXkf8tJ;v_Rkex3-1CD@rU+mLWukyjgeD!GYP{Tw4 zE#f?ftagZS=-hK%oyWl;mS}5vLeNc<4K3F=aEMd8U;iFxGJ#JA7sD_3!3Pluj|OCD zXUx8?|Ex`ru1?S^#xUSDKiLdo+OAhlF;A(AdeX%o`b+P|Q4L8)qp^*W)8BWEvh1!A zZA3+TnF_`Ls{BF$SCX`!Bg+-`Ke_#zh5}l3%`TI8*tZx zj*#hA8>4Dw8@zaGa&(;#InAzjTz6p3TWDXTBT;i*;{a*T=wdt`So_F*_-GC9Njt6q z-0ifQI$h6?F0#k@ajcyEFD&(5Akx{Ia>CP;VcwBZ7#w7rSuhs`Sxj$_`nFhcilW2w z{(E95Q3?J^qWee?1v(lcT?fzb^t zUAzKs&$6e5*1iHn_07zCDa!?8m7c~xwxz#wuU}(U8u8u6e5nhXTCddy)*W3%wm>dhzkY&PntMY1DRphV+6prvVNS ze`A1EvW6p4$O^0u;es%GF=53L9EM#>5JflzUJac;^QKUG0pCu4daf$GR0b}h34E>~ z6 z6$VdtC|R$a@+SaF&LCz&p_2ANJoVwB^f-t8+q5Yugv1UCE#2nr;Jvfn!aIwcm9?9e>KE_f^c z5k1LMYfuXb`%0rz7Ksz4Ht*H7{+cz<6N`NdrMpuI(0EVyF6-^1-^qk)b+-dBzQ-3# z+IPH{A*!!>|HSmSVF@~V-TQD3qFw}vsevRJz8hxH07yq39|d5t64%@tHL^%Eym?-i z2R*cEV+$D+)lpRk&L9t&1$09~b2(Gqka+`#lZUlAeW0Y%+PRU=+&E1dCoDVK452pH z*QcNC6*&nz8`{&~8(hyv3`O^U~9nXA+RY7S6JBq(bE zf_}e*F)o?s;H`LUXaIhRx;yrhrY*ZOIrS`+AikhuB`SR9^1ivYx05`K!ru zcU_|^Z3q*DL@*&>Pn&(`Au5cW^b z(yCEX7gGEzSN&dleyI_p#GGh=2*AOS4H&v(b_u)22h<8b1kC8EodX127f~`Yl@xvN ztPe;M`vgs+JemCmFQVg_G_`k%F}gYlNAit0DNw-NoJ%OI&BZ4`P%W?Du)+Lh>PqiCo*Zz3`4!qY`NU_0 zl~_S$ST);4y#>c16fM~3mj4n(|EG4*5bY&l9IRt`;P@}|twU)P9hqK>6mrsbzw$g9s+o8O6Aoj zYp%WB(`BaryfH?6%;&x=UVoZ}UtO9+Wzg?)#xv^I1l{bD3+)x+Xd18na<;m?tZU^X z)QCN}-J+y7K)a9?;(lp%4azVjYcet5SkL?mC1ZEeM``D_0rZ0wJS3n>vM})38HQYuZ?T%eE)&sNe_@5 zjyijy^>wP)(j4j@MZ=&L2Gu5t?NABv3C0fOYoL>W7dH=IKshvEd-f{AO_)FcU1*Z| zLtDIMU*rHyK(fCdm@4xq70EFc3IN;ww#heH@{tEf=$Cnk5j~4gt2y??cqZfNN0st- z&ogEFL+NWv;B33FNuw(g(oaRK;m~5806FY?uuU%VYTs-x57}{JL&Ipr*2hfgSmKi5 z);O)4_oO=NA%|l@r+={VXF-NLrw(;o1Prb~%&l^SHrVxI^4D>(FaTJ>9~}aW>3w#X z3T^C?^Ea?B-^tlX--ubiL-g>I9*vS?b%0`UFm?Zt^aMZ}0uV$ui1TJ*;be^B^?>15daFfpUui z6icnHDvDe)Es_vErGl4=2ekHLcW3y9z3X5y<$o(UOqy(S`pyHWr$GoTn_rW>=e_8T z=AxPaMKTC^t8Z;+uyNN-d7;UTkH~l1F_t(-T?%N0#gz}h~*NUjN)duG>&J>O^z^Y+^|rdkCkfZ6(ZUEg=jxjn5~B4%TpObUP?< z+F0N2zu~nh8UK`^RT3EVc!xvCGtR@j77wvAR|^2 zal!2nbvZOk&f^Q#v+c*3pD@6!rsGP2IV3i{Ig*&MK)C608qDV}4AARBAqy1+z0YER zy9bU6dh0P!7gFwHId0_FaaE_cxsgG*x|*|2eBTFYY1~Jpd$5~G10E@4i8mu+3f?Ym zHtOZfNlw{*!QL>Uy454e(ryY(pr9CqVf;i7pFkG=i!cTm%Oq6xUQ=MRTlqMDS z%*LW1xGn&i9ZQS2it%d17C~ss>Cs!O4@4*z?IzQu9~f2n zPxT`eg09qltC&AVam9KcPUK=L7mV^SW$(Y=9((k>p<4m|x9;d`$*$cbWv3ZtbW;5I zr!U!2y<@N2Js$|p+8&P&2RPJbBWP)Z1}#Wd1LPhXEp(+;HL#;nS$C|_PUm7P<-Yw_ ztLYGasNw>ITX4@FVe1_Rk{rFi2P>s?f2VLq1C)Sn8LhM^5xu-G<)o;O&s%f*#~}?T zH*WNb#yfP^HkG;n6E01x3d9F^wXcAtI~XsIgLB6%xE+X)laHlEIuA+svB=vg!EJ6L`H3JnVJ7~_ zWh&)l(7;0M6gku&1A?yNrL(4u_i{EyRD7gJ&|$n!l&pzHugYF(MYlTk0L=|I4@e3f z?o&dtfp$~RQ;To(?_nz+t%@sBI4Pw0&-F+tfH63`UW1RaL6q=c` zU^dp*k-V*#m!PZ1Q+FUX%}&GU2W)5^8UMTd+H%|PQu(H6-9FRxA59o4S!fno`WiAN z(~@C3mLZWOVjfX**gDhRzm5rUW6Y_l40O8RP7*&TZbOD&ek?fI9fuseGdu^j7bd54 zqp|C?59Aw_FK=qNu|kjO50mBlMmq1;OWGw8G6C=+BLW?hXdXSc2wE=*@}-vmJ<+ch z$rKSiQ$@4;xpp-GW~ho1rXS}sUI`Wfh&-2@$yZ7phU_Cre{=FvSrUx47evepP*riX z!38nh*21$`VyLo%uLie=ut_6SHFmr<*y(+hDpHIJYey&){E7Q9>bKG>gn8rhz2qcm znoyx|&n$!@_B5V$5Hr_0*$$l^sDl-mS3t6NGGT>QoylFgLc*>uU|eT9KwiMh?Jb|m z8D&>`16J>oX~|T156L+pLtTB)HQ_uNQ7~uPYJv&peths0^+FlVY%9DHhEB5x1d8Y6 zO^GQ2id^qCfx%)m47|A5K(TJhPqQhd*B=mBmIrDt+uh2>Oe?&&54M|r@-{otCxK3A z6>SJ{*6%BqM_Kbd?3!w1BiHB2n7e)>xO!6VPEEeGqE_BSiti9pYY?iywa``(@zPMP zvN7!lnN7YS7_q>|L?#?1b|CEJ20&?dJd}0?tfuz6*5R=z6^&3%labvur>crk9N?nz zgs9|ZP}T>cx3)_{JfoJaX-X7P*nt_F$ruaOOwB0-A&;gvFtEu38(~lzQ{ixt;=13q z*dNQQPx$N>Gu*MxM+Io=DAw4x)3zh`Bi#}!1VVHRS~@Ud4!3(R2+)E3+vAIfkkxgEps-QRfL&`k4AW~4r+aV*fj|N$I^cMuN-88=gbN_wVy+e= z6NGbqOR)EmKt$9-+_F_I_>WOQGM3O}{uQVWBMHkpP1l;XZ{WDV44@fD7yd!#c!0Y4jZAA%G#PQ2X9eyIGoF$-ekkrI79#A zwKlo>?;}cyy7W@*I7!uEAP`f`b_6zf&n91z5q@iRr2Eqbs0(`qR5*+EjL2c(l{69j)IO?(PBUX%3-2O%%VJ^KdozU&(RkVkt2e_zj6 z`r7v^zzB%M0n86tbM)_hGlH8(MW@1aq#r{64_2?nf^0h(ZOTIou^Sx~L&Dejs#lkK zRjUpfJ1r=F39%Yxl$jM_p3sPW>!n52l1344_HjX*+x}YnQWqI+*;x}W_OcvXqmUm< z)wV$83(tjCF8974_kK7;%&%aIMLF#KUDVC!PvIMBNLZ>7!m-g=m_BQnU`zEzai}AX zIKnkbYcM_~o^EY^dYq(Zb#la4TYCT?kk4=k4VcvaZ2W+Ny3(Hy%0-i;ez(^)WzB0+ zmfvMMh$@cAJORqk25)SGIHivXvLCfJv)PWh!*I9WVmdcj<~kBORF>5co_Zz(aa1aW zhf{{`9`Eg@LK>vdWHl&AtvZfL!sIQu+Z(1$udvWtQouiYy1#sez9 z3>M*6*xf>}gF5JRetE_w6LlTmNoT@F2gn=y#H#1?@tC3(y z@p)oZS08n-H{36H01tL(G6=40+$1sM8xy~LiD#XdT;P@@*VObtkLs+xJ|^=p7FIFI zaA88xjA6!Iu=otnG%!;EQdm5DY`xR+p5;|qNb0H=!0pdQf0>|B5NpFBrNHz-zMXlZ zXHxZ09$DHfZ^TP%k-!rkBG)5uowpE)CD$FNlLidxC_|c892xeiG&_0a)O(mP#SiVx z4Y&25#1xSFnTQgL42(hVTD7!Zv3a7Psjq?3fn=3o^i;VXhe_o$VvT;R`Kg?-G)L!) zaHm$hW3=%dr*tS#V5~eZo0Qx-KOAQlM^O(Y%-pwyK;7bKENZ@03f}WegOsgmr~-gJ zpzfD^k7uxBhQ8sl6QC&N`o*BX%-Y_u!mLe5mDi3aETK!{w&DC!E~{-OH(kLh7mNN; zbK?_`KFk^C4n5eXpdut#;3DKAA420bLOtFvy4Aw18Oa%b&r#K$Kx!}8c~I{r;BISx z>omKzUqt6gA(58IB;0XwI-67}Jt}d!_&eVf3lmm|c8q(gYfK&~cQH^x(r}&-3-tSL z-KrvEeGz)o%l#Fmn&xSmJfdxuoy7k%(&a=7iJmrXGIP1b9Xuei&N#K_{p-@YHH|OW zHB~l6U`N}nQ&LUM0!2dhx*WFggBn&{$4UyVL(jv~GmE7|0C=pVzvB0s5eF?UiOl$o zv*&#wkht;E0A;~mu%-3*t`n!LtY(Noe5H~+wufMijUDKy;V!~t=@x!*jc8tU6>$y{Om$QqP@}V`284&z95fQMy{zuf zZLA9fjjBP&ji$43BnHF%1Gx3>S&la;*Ut;6xm04`+TM2xUb{&=NsM>gDYN*luiB%n zEV*w9(w~;~bvQ%pzyoWzrqS01DH(fi`I$Y(!#=w-#x05GWS!$uze60fif^AE#^d8Q7okOcK=oD>K_XjWST2TieLJG0+%o=leS? zN*yT_W%Q;i`OKkPAnl~0z3}O@bCwUGUjlI~D9P6}3M7P-Xe*4N)=r>%jD1#Jd(hBh zGTARpiYjCPBNK+fCv>J+nZMudNLC*ISZQIRFG(XHoPTk3`ZCzC{|Z_#h;bhVgNN z5a1_7={435-NDn4oOIh_QwmHZ>jx;v3^HN1AHqzWt)IVH$@=ZZCeH<(T`9!zSJTv2 z#tP;@PK?2#y|eEKThXNE@-b?^t`eg2>;hY=xZlPld+Gs~m>FWIT>eX1&w46X(IR}X zpuma>sQHh27hwL8#Fi`Mk4n;F(USqa8VpYx3LF}s?d{~*AmEWK0efZ z2J%B7?2!Z!tgM`CP)**e7mS_6qdEvekD*IZiv%6ONW=jI2pS#FS6t+(kDGVu-E|}U$yGmes5;4ta(!1@5SWrb zQGhjut&V?)D}zIcobX!(;)JUa9oP^S(c{Rl4yaiLx-s$U0G560VLH=B6u9sUK$bQ` z;t-wfrk%euhFLp{(O`yfsR98LII)e-Mb=(hZi}1RVTA4qLb^1$)Y{KJS3@D?&ly}o zE|ye1Ekc9A0;gD@cX2K4@?3|*~7uf+}eCZP% z!l2jp{Q#vm(njZrj}6odcpO&A@yg<_Ni{~*F%+uLUqf7b+?osW@?! znfvnAn@_v}9Utm@qY8QoJzr?4koz~G?_5QM*%QzzKavwh!Xr4So6 zHx5>`;}*(XpnPo1SxM|M1%y)^_iNFq!#(pwnAw8r;$=AqL|U03eHN$SZZv4blGmEY zgpc{&hfmMnG$=)KLQ{CNSaCd|35?|mR;luT(1$d$^KUi06_wu5=Y5Xosl;1FQ=uxQC{soz@lRa6TsbnP~muC9ycasGY*9jy)Hl<_ZhUW&As zKERL9U9Yz~EAFxk@939@S;AeVCm=TszNpXi+LmP( z_rMP;@tY&CPO|?+BVT-=xv)L3bL0r{3~DN{@1&bpqYvO}Z8d97)eaS6)!QVj z5qvrh53@i9O@Rpt%_A}RT%&IQWI9h;gH)fLnQ4oAEl3td`=2yld;&Ei*?!3LJAKi$ z((PQgwyInqqJ^^qd%UR2TX=0w^xBF-^`=+417B5Ge--SVly3?L*qxc8%!LI|@Nm>v z7O6J;y;0PRXlx~9pt)@_b(DJPbcNI67>$axk|~b z8kqJFLO02);3m~CCSkyd!;!`1Cl0Hi)oK|cJTwGiha&M)hL9|D#1o5?-g1;QEQOKA zK-p-@hO}V7*K-13kx8ZXKsvPAPLj;%3jhuKf3%#=N0kGxZ=ZA00~w`WkQ*zvV~AM7 z(q37qllw5w%ZLJtt?z*&es|f3f}U#hMwdE2sM||}ofOjm=kW8y!mB>$LmLaJ>Yb4z ztr|(--Mt!onS49y-WiV-=y=(C2iQm^r=GQV4uPqhcK)YKwl32ZglCfEqh%&`$jz6( zs{#GrB3_%G6<{M)V(&s&`s3$1?e1wlTP!9cK?^XHK&nn_B zKGP;hq;~^_+z3w>=5-DC$5kf~_4$6_;3DPmpDB-+oM5X*$DZ{Z&6G-#N#67EJ44&vR* zJUvU~Bq^?7FRuNp)(}n0v2O$sy!cS52^MkPi3fX|gw5I)Bt#y*q7Y1#oNrx!R+@YJ z2XQ1RX}b&~)sIpu-^+&oyvO`yQ5i39-P<$#MDx^@^XZ-H#mL|%1EPjQpQSTLX3~sB zJY5w*G`DwJdlS3Nnf7PQb~*p&}i3u0te zk7&X4I;OMY`iW2%-uaTdTyH#x5;Gc=V)5zXEKZi1Vs9##Y*cve7$j-_0k|R+K`+#u zeSqF`Hl`#?hkbq~Ul~|yCJ3d!v`dG*FBv9N@s7S>?UMBB<1>Uj4OWZA8H9mJNo_13 z3(>+$9Ih@KR+$8%+YL1n{nJkZ{KLV`96t>0%0?U<|KeV=MPuAO$blnMWUjdbO;W-j znZ2=#EC>+5LHP4*bwT|gLvN-Dgh3HW5Fc%D0{U%J<3Lgl;!=q7w*~Uj=78Am(jkms zwa#DQq1q0u60mu9JeLM%7LqnIMDw`58lM^p0^a3DvnuRIV+S^o4gD2P#HZqgSZF6lVuVWQG_Gru`qQc|FD zheW|UBD9Dce;0Wz93gi;g7)~zr)u*jHUj^2V zp02J<2((Ao6n4V-juXYl8W&Qs67VtFjRepGn`#8t9AzLzoGfl$M1uB{U<^ZiG4up~ z=ndNHG6xgS?NH4CQ&!=Gn`5YlLvSs~EfYgdVAUWq^N7p3yzZaNjUnJtryzBt=(%nH z$r)e6n>8I+xKsb_9EbYoK8M!5zoi6G(oZ5Z`Pb^sISGaL zGsl?3tjv)-IN;CnN67?pV9I}y5-{s2V+hP+gm`>A5 z{y?dX%Y{J_zEBxZ%8F-^4m4F~tp00E6k(kErVrnqfK!zGCEjk=$SIzH+0{X53< zJvd=J7)SWYcgWYl;U7`3qC!80G{qKKFYS6M!0UvQuQRN?{wh0F?l#eY%1Am#XJo&k zP|xM8e!epF`Sm>13B#CS9=nR$Jy8;-g&W`)IJGw1Gz9Hvqck*9vHk&-DQB$1@1&&G zva10Xp3wQ7tXMrv4pMsEw0bWU&Lk_;2*&B4O`sd|Y z2DQtwyLr{wv)b$%)@c&57(xCmT)Zwvl1n_kJ)SIPItrNlB>2nW7%$^AA|e{CK`wR5 zg37{7Da^XU&&ro7a45e?bA_iv$-=EvprL9-?WQEDS8sdgVa zg?AP{wTt~SB0)osN;3#=oZN%sp8MZIYZBYa8ZoZ`3cw%YI5VrtA|wkwk4Zmzr&on52l@ih@K-*0);zx>*8c&CH;vYfix)WAXFq;{Z=(hBG$8IN*i5Edv~AbUMI! zQ@(f3oeHrqB+)g?yQNba}*7PQibN6gqi$|hgb_yiH+s6bIx=3xP`r&ft3p`i)DM2QG)e_DBcvvOS90ktnM z54Djds^4s=q07KUE<$MG-tKD}#ieO17YDI^t{bu_uJ%h!M^$gc!BEE(i1cbe&t%|3 zQo(iz!4lIm>rxsrcM)sPx;M&sB6J}>PWcp=YiMwvvPtZgcMqfribDi=iv)AQXAJc0 zPK*=>nB4qd@BGrHWB>x}7B|*#vmrM3wy0m$!Y>BukdC|Vaix%%@A)D_%MGG24G8NE zyL@mt6S5%%bvYanH}-oMjTUaHCb5R1uU+dS174tA1|O5H+%1jUt*3^h!E`E*{f3Pe zB}W*=_Ox|Rc-?4T)h383JcFEs>csE`RmdkFc7pJ=MMVg&mtU6(q#fY6O$0gmK z%(UscGifEzrkx`5N;Cll2uSQ?g^+LU_Ph_R2H|qFB)5wd1D3T>UNU4j7z9ReXMaYV z-Nd*-u%S>W>a+qXoIXkC%f4{bahinvh%6~QvPiv~Xk(W%wL%x`JL|w6tO#huCL9_D9&tPeZ&%C!gU#lrMCTL;ew=Di(rBxx6x13 zLHI}LcCexMZDX>{dsF;C>>Ne#q?N1I*+?*$=g_p!byG}?B$R)5#9&(i)!pt?JE%$K|NkO?W8?Z_zVPhNf|=e{ntdAmq#{}r0F?b zEc?7+gSS=u8J@?AO73$w_f}#$B43BD1@jWz&7>OQBJ$Jb0wEx0W^va80UU1!Z$Zlf z>K_vTPVM_}_96~xDq^K$=T*#0X;MmzStaCytCPDY6GO&HrUgvS3qSn=Nh0si4P;_2 zrc*!Mwh`PyOCH@|xvYWtJ@yrdKL}%hjP1}~4$&n1gefAxiC(xivyx}Z=>S59l-oIy zKxz#AFpNvyq4!lO5{MXUg?rB-iJPx@QD6&*{x_@_HJNU(M3~J>CcI-yn!e}*Pe{Iq zRu@!f=T?8j(U4KKQ2qRCx25_vVJThQz-l}udJ97q$knchBDiZPrahyG5cM)}@IYejiD1=)159l2o zK%#|SbJwLrbJM~g@B?}L@gMlgD;H@d zCpNFNL^a3c1TTBwu^$iFu^s_#9zW`nftgR0%QpL|Yj}@T8qGW&S&F_OTWNF>M^iCj zQ&GyDAn#7-EO+#i?oHm+$EgbpIh-AA&j~wU6urq4xsy75TPriYP>lQuWVki$F+M4? zC@XB~<)N2vd=ry$ZsPH0pwC3$Tvg*dFZrk}%&QWFgB!5UWXH%MjfOY7(K8SzQ$mNx^y1&KN)va6m^&GIs4wLGnpN z++ZobXqfu%iPt;2pdAWza;j^$A%b?rx;Zjh;pZq2P2oRcfh9pH5Sb7+8%;bjbXu~@ zlT-r{%$gsnDs_(tI4i(C4*(#i{iSfKxui@pNrMz&^-RndaiLXQ+cPq)@GDCzSPLZ4 zu}r37+CYBbZw)kl;7SgMpR0C?u8;ZwIo7uNeR~Ag;zErdKjQn@z$7GXx%`+7~{K-e`16F{a?_K@S;kU_w z1vzYqNSt|>wCpQADi#IDw^9SApav{lw8MISHEE@(Ce&P9|XW|(*P^$2b8q)vg4;=lYrXb8$52B#aqgbai*;rXY_qqXvp>tShkjWX8l(mG^)jfmR-^jvS)4I$BQk;C#Q* z)&#|6g#pT#j@V@$<_ZM0sa3rF^1yHCBu<}Y)HGDaXRDUoodP@eodFmi&JFsWFFZ=hjU=a#*lhU^7jKboE$1Dh zQ02g)rI5Gkl8)1VRUt9O?LLa*GJz_&cZ2gU41QtaBxv6Qs_v4~xy|wo`&J5AT(In} ztX|`qOi8G?sLf;F1GX?||3af#62 z)l1(|H;SAqv%sIes~fVlCTrgn>!|(dMieX3oEeKND>bm+9^mrR+LPF1WjYlNFF zq~Y7dNM8km%x6tQuu-f}Fq1|p9x3EdEMdP{YoI56aLrREdV}nfZu=4HR+p$=DvMp_ z!0=k>fbJYJaC+(VyA<+u7DDZZoxb4e6aJZlKX{ z6EVZVej}qQd;KEg6Jq3;_=R4NdzyY*OmgOJ$@ciak_{Hupe7ilXE9! z{;ikdV7R9P1{TwCDOG;(Z_&6o>lT&<=6HZ%*>x1KVvt!bI7Sk*va&}3KBbqi)BSFRDspH#sHDsdnhhbPD|5<=g>l+kKj9t0ZB}sBr&TJ?OUmEnl=8 z51o-k*(EQk=a_D54Ynoi) zLya$>DAddBcq8!IxD_9x8eD}Zz07kVwW|DPei3jqybZ>PwrvdLN)S8RY z9f$QLd1V-I{IArj2VNUWXQCQDWKeR|CHFf5SiS9Dewgwrzp|QfKWX_;x0vIBz(aY{ zvLg(C^rgUIl!}2@DBExJm8!Ev64Npo5O)wzhB}BkC|fL@XE~LR!8s#KEzcZz2M@g{ z=EZ0wxaR9G)X#eUU0_#w|85!7;brTvxqrM$D@n< z+a!>8tyI7rSyq^q&H^9I4{%a9Ze(nWi3elOpl}Q!LTt?I`k)bHB5$`Ca-~VR+(+En zxzp5me#C$-n_5nIqiQN{Ig;v-VPKJc#Q;NeAHdqEKBwGvNe>9$C$+ehWh1@2E#(o- ztPseN=|u!^mo;VVzBB+>)<`zX2&DMEuI)SEX#xgy{cx3T)quAilII=&UxI0|pAs4v z1ZZx&*3u|I{x(e#Yb^O)MP&KSy{MtP3U0NK4ACU7HJ*~Z(hyvwo3~zjx6^eA;BC>~ z5iX7MsqSpEP(P6)n<8h$N!_Q#Fl_9+S7(r{hJDj9oO8-|a_F2pgjFYTl(F=$rj!D< zoQJSp$1~Cb!&gBMXf z-1Z%_7|{R&Pz<2Q9G_@nA?~*Y@Zdj>J51cCRRX;| z#S}RWW1J9)IZx}|p6qt=AzEh#>2^OcmFBe+U22|3*}m$CMD|D{VIgYS;#EMG24nr; z6*Pn0I~gUZ)b!EjVrL&SdxYXu3@tzo`T!7@rA-VB!kjY;!rY+y%L4JvB4s0f0BFV2 zFQ^O~W!&UP|Zf&SU2pl_e%M8eb(Oin&Bv=A^@xpVZ;FJbA{{28TfNhCW5Cl&T z5giT}t$HXixNWo&L|b-zef8J`!hYP}8|2yZsiHiAKApHmt?PSG+aoX%p)1vXYLX!= z2FsWiRAj{{qy9+Jr(S8q-L5CLZwggplKkdj&DOj?@-EV$uFaz%f^ua~84|Y4_mq#D zZ{y_Nr3tOyahnDX8Y_C6k$84lLVdVGgE>1e0VpLZ1Fp3GBKaYW9`rv-iV7IwX)ka8 zRaz^^HbYg?+117;e{`L4d>qK0qL^4@_isBEb?PzKmcosn-DsDQ?YIU@L5Ni0&URo} z>9I0HHWG%m7cyA3Q?=Zxc4=&)IJh%;xlMEmizvMBjUjQT| z;vFC@#qP)L&l|Jk_`E%kq^OOb5web*g`y`GNAO8!4{V&?y}^oS66%T z$WvDv6q|TulrK3hD~&~yW4!r0Am_%x%K{qDS45MJb3P0=OkZD=ppZceM}Fulq(`Jy zz!03|+@9Bv*&cu(8W1C@vnnN@$DU0_qIy>VLMu zdcJ(K(zN!N;c$Ff-W>aNo`VhQXM7LrNRnc-NuoeQw9&h(L%&wF-qw{rbCdB%#EI7ah= zh^=ofr3?bX7-gUnPP96|yvBSRMZbc{z&(3}7LICMjIX5e+Q=LMttsNvD+$ow>ZM9^ z#@o7aoC!}Lw1suOF}bkE_e`9fl4OG_rlU{+KL*o1Ix>7yoiHn;VDZ85`dGd7gNs<# zHMkHQP)+<~9*MAjiHqVZb&4})FX@Xr8G#W5_Kc?H3Ug3#(RT6W5~H*o>@^_7hNGO} z=fJXFiL0}QiA%ikeBI2>6Vb_z62QrLj@7*iQxcS8@-w)AL$uyA&wmW=P=+pmLyn%= zIc#grSdHU%A|q>=4WK8ZP^B;FbceKErSH9?Yk7bPMZL;l)AHA21ViFF+vk0+TQPo@ zNUUNXSMYdW0c`k}U8eaDn}0{` zFVQg`1M*7E&o<%F#<1I6<*of$NAM^ZF+h`fzUc)*?el5;`m+Zu8MTaz5hWP5!q&TH z$yvCAI2Q<{EtVNnsoyBggOjpYXJ)Y&0TyztN`?NJ!d9kf_Jq%e&Eq?P1BL--W%njl zQmx6cg%%D-zTMj9FR9M9B=6@zBxb*aoEg?H?(>|R3Etc5winn0xYQBiNX{g?%?hhp z(ZVOgvW*oqRQ18&PkRFyM;32$qhcu|)Xyx~Fl}Db|xXivhK^8uUr8xg09t6gGIT$HJY2y&*=C;#JgP&25 z(hIx=2}}plQ@c-`;#Sc3wo)XGFcl7Z!0q_LlifIP=0l4y4o8iIWc|RNk??wdz8CcT z&%zym1!)w+g-jgDeOAFUe$%Qp#t7O6(wJD)z^cC$bF`Ay8-Edz#+Ef4|l{ZMk5rJO_%^3iGvigEJr=tN$=&n zJ>hl1>wpzzqHUkytb#9!K^X$N%ET8i)qZZwn_?JHiK&fCY!#lteyIi$IY+7O{HcTL zU~Lq3-#-6|2jH!H$KrS^S$%m10s7d*Wf&Rv(a6l_;g-qCfj!(tK-yJjVXly53Fh)M z&s^hpOo7s3RMw{&^{CQ|KW+o+$+UteWMVxXGsQ0-?|a@$FsFaoc0&b*msas-Cr&-7 zvK#xhdQlAWqsglgoRU0^WMPh0KcdyNhk(yaQ2Kf&TZ2^W&>e}KU}#LBy!(q!y#-wi zEfQff5b!B~s-Lh@s5*+Lh)|lg3o=}t(GOD~Z+8rF20XT%UvG=FfbXpDFaleH!4*41 zchjw=Qux$~A2ReMoR-vF$*VPYH1@U&^sNi#|e zD9FtoDiy4UpK1R>P7F_9HxD=-7@ogPIc{!xo%bl3wp$b3-=1iViz-6peAbWr^DH2~lQS@ZQA+@fu!|unY(sOLz13Xza zL9N$>%(xP0U0=O4&Sg@3;!-lf-@z%n((c+&YKsfjm!)NVzsuv#K}}XcU>CJO@O(cT z<(1@($1v%Reo~d}gD!z@p^povL>kckT6EVM0-4NtTEsR;nGFM@x|!eg#?P$;jt`lO zBPyR90)`*lwfTt=YwyF0Uk0~jCKvND)GH7DZjyKg4gyyG?en1hQj_^5z?`SL7`|EJ z$;INJQyWktH{uxosVW)RD@L{YKr=mt(!@s(deO(mm^x>u7(k{egtPKVMPA#YL%=V; zImpP5^HvlZ{wcB&2!rJwh8%r#h%O6kPTup|^u(?NU`7`T3AtWCjtAELf`w6jqXyU+ z;+>Bt^UOL#o(~N@`dYmw9)YQ3@1l&f6rumpJ`Ed(QRu$T9DID+SlE@C1&4ANc7v*6 zU4uGQiqP$rKPg)gNZ@*=s8)k={YlQ03bO4Dupj9`E2wwMK1x?LiTx zOjWTuh)1An4_Tzsy@|f4hM9LL_}djLw3V!Sp>O*28CLm;tAFD_7Z}4&3 zL4NY`fE0-lM1z=OzvK%Rw_XH#ZO`=imjdn0hz8Sw9U$Hzd5D?%EUjzs_Ud!RTJ3oj z=r&-wu{f8u>T0*cSH8$~4p@#kkkHEh{`M{Pl75kdgqCrtxJ|gYcJl^pzyy(@uA7nH zd)!dJv62BZK1~tv=d`vctps1nr7yb4JQUQ755I1f?%9BYiSw3yVsgA8Nr z*g8M}dH7}BB^DLqAJIgw?UtMi5PO zpJ~Q0T|_-5fwBmm+FebB!_X|mD>j-(H8GIGXjXUi->kiObakIqVnkyhIH#(+oHbgq z<{x<|WT~S{x}D4%x0T^qB$)y&KASb zuRjWF{1#Za=(}^%ppm#^QAWL@pCTqLLEK60U-hERl2kyJh^&QJ!P7LeF3gKr)%!J0Qp~gj~oW=v#((ZbcbfPGy|-ncLb7 zEr!a{y%F@Y@im}pMhvl3B`CcH+`dDjr?3Vxee?l+@aY~Wy5bqRJK=p_(02ptqNVx) zaC0&IZI}_P3S31_A5tbn;|en$$NxF(Vz;v^AuNh#(bYzSNM`P(H+M*YO`hsed!Hk9@1*RXIBkrj%c??BuwyuY16{Q;dTlzr9H2vc7*eIO&5Ez}&bz z#)N#;udaq@g!jmmAc$W#ne7m&m|nxpAI(5Uz1 zl0lbcO@$QkB_6_Tx2Kz(5c=1uP{4^aE%hFGW__KuW{eXM=N$g>T5Hqdy!5BgY!9@N#;$a^%#g2cwI5V z;!s4=lY?xC)D*p+RX%d{ONEm!xCwe(v(Z@+ zrLjJ<3mLt6Qz-?8IVUJ)1BqKkesO2jsmt+(EaxyiMpo)EJyZRT5B(YH% zQN4SLK2M-?P(!dX|7c8*u_gRJSe9Pu@3k5!D1Q;ty@AJ>tBisaWPt35snhxhTM(O4 zcI$GK{>0n31Dywcq`5?wadY?pbOy!qg1C`O)m2E`^6cU)BkDvT8N2`Ibk@^^itC^0V--Dqcna zjLxVKl!%ODlt0vFO{{fZP|RJj>(WrKyhr}=nSXuTvK_T!bLIz@`t$~NkYz&a=}Fa8 zwpN}%hqp0g@1PxvLLrsa{n7CmELIaFDtJWui*s~4Yr|-8AAQ25jkOIs&6x@4W^%Y3 z1f1T|n)GGeVpw6w!}(H&epw+LiLY4!n#0~0Rs$#MeGSSf-dobLN&I#To;Wi#0CV^p zk%Ma$AGU9_06AHI_};jpDB!zv9M5-Rn?a`km{8Ag=x4r^YjeNsG`#v#h&R=lYzCLE z|AK7^u_u-wCxzj+Z@(XM&FI9`RC0|JqDo<-jKpax0mkVT4J#58GJ4*9;F+Au9j)E$ zRaGe^Fk$@eH1bo2$P;d-(DELdJ+rq_CO{hf6wXgNXjR+5Zl+)Lqo1wzhId{ zjbU`9COmyH^0-69a-zsmaG%FLf5+!l0->ko7VDQi;8^ACzrHzBa9Xq0v3S*diwShR zH#W-V?ypzjJ6zM9p%#Imyr$L=KfiBOere<7&%t7kU8~_{@4bK#T54W*Y(T>&-yhh` zM%=f_t-TDP%q_(3Vd${9n=ZV8dF&v!yI~)OHCDHps&NKL^*Ix`bL6%j6;2X%ykbZz zsU~V!gJ&3WW{9V6tyz@9ZH5sNN)>XiWI3d$0SNUmG=~W>9465|##N#EaNud$M@zh; zD5AIAY9e7hbS4`Y>*Oa=VFWkj0GMhid5L4`pt8Sd|q&g9{=!M3EWc zY=IWImxQAD74s?WlUtYf>6h!-Tb^_DxZJZgHTW{^wD2Q*icS0L&LBSd-n)sL%75tu zo#_*G;0VLsEmPV`buvw6aU+e_g>$MM^hke9Qy#Vw({7&%iCO%2u)S{VMZS625Dm_A8G;!1_fc zd;jDY)d(k7qyoMe^NH|I2=pndnE^Rzy>`l@a^a}Yj>K~xH@t%>Pj%Q5Eyhe7odM1{ z&Y+pNG*u6SD=Ei;0=6j+nP6WZ`vOQ?*RKtEo9p$MZJyw!?-Eh`_^7tfu@duTvlSO(B?jx8ZaW0HyeWIXLo zoPu$s_Xjx6wz{RX;H^(lX+Z0`8as*tV8?t=hqsAJRW`hQe2;>zLj7TksvS ztB+a0G1G&r^fqY<&a;k~}@;~YE?{}6r7LOEWuQqkBw70`u^-lVf=CK!z$ zZa8#$MWhp%B&3`IGJ@_j)`+1&g&X1oA4rspR=MDIi$?r5d~UP`03bl$zYKs={ShSY zEgyPP3!J?P&kI2}p{0u6j8WPICpJYUWR7>>AeCVl&*+sRrv0`is1FGB)F7w4w1uCG zK+ALzk4d@{A&J_n+8f*a(BGh%b;wPc7neQ-xqad6`qSOF7R52B1`ABFZ55SH-fC1< z*+?EUydss?xvgyudDwhnP~Z9NBon|%1>|y1^{#v5tjR5n&1Q*37;#g3=V~<+PSo#= zbBz-4r4H6Bl5YI`Gy33&2#y#(9sRz&yZQ7hlkBZy{JAYmzzl7*6i9led}@(MpFpvY z?9t0?0shJo)yyVIxqCHw%tpwes5jZA1!zG|G7h{K$wVz#{az06FXW;Y;?6{G z?Z#AYzfNpp+PZJa=BKR)Hf3p{c%-wZvC8t!Ou$pk^g?!WLEa)0*OXsFT>6Q`nLy*~ z$C%j}i?~9Oipgc5)wrs=a_HlVIym~0UU0XnHdNBCea4r%WLB&~I(L)%R|r}UAYQz&>y zsC=zzHORiY#72KmIkzFwk{twd4nE4~3(tOyx9fnDP|}Fv!goCmoWigwzZgY;Q2GsAWWz-bTC@hI{EjphPH(Ig@|BQ|PM zqe-jju1sJESOFZJ(9g&?Zy}J;N4WAoy=jp%wiLe9faMI$SxL2kI;F#wJ4C#?m7lCu z_|>k_BmD|*8F2kzj=S@8IN@m@D;}N*Nk;vv@1+AVpd46kng+!zG6hOa^h&i}9WgCfK^+EtsLhSrHo864;Bu?3?)oE-n%VZqc z$Vr;b6!&X0RkY`+VZMo$XzYuhlQ+a^JoRFIj|GlQv5EUzPxH~hA7O*B7AqN{-ODLD ze9>4y`M=`X{#a&Iwv}2!hXi-@=c4Dc8nNVGRFhH;L$geCet?TUp6w+mtGY8MO%F@5 zkJz+Q{#}ai4F|eyp}m|GKwtajAh&+q>*9F@!h7Csg4Rz_T8;6qe22V(g zYt5B8J_FFl$}Yl|g+T(xL>)wC~5b8Bn)8O?5ZM7lQS8Zvt2WpVxn zNAPWqscJTu-{e297uTAdU?briX{R+EJ>H>nW|{f!K}-R9<~`?dxvTw--Q#r-_=@9v zM`llI^QKAJo3~PuwOH6LD^@}X`Iu8=t&nTNd}r{*pTIuX_zWj0`*&JH~{wt>^Qtch77nR8Ht3&u={GSc6cGv>(B-ZWSTB1zvQ4*!uaX7s12+--E(uNzs?ytjrQehwl+4w`crgBrr}i2( zhYzjk2jy8`X{fVT-hC>8DBR4-8JyNSkh$^zN(h_@PqEajHOas3l$%mYt=IzPDhS`6$4XWtuk z-!)V*kUL&D@?LZO%^-ODb!SJoMzT%N0 zGosz#qRxlC+{eQ#{k-|PLn(` zv*}3CUscxS*DRxZOYe;qIt)G49tp4>V-fAZ(I`5U{gLsOBaF+mzF)z&``rz@hpi2D4(pE=pq4j9!^z`z=b;5= z)h{P=&u(v_j%ds!5pLt_MXHQXJ?u>%G?z#){;ZDSDpI_g5~yxEcIj@gwiNabwu8?T z7V|=;M?7fliE_8Kg5QyzoADOHuN%`jAB^j7m^ok6^XmbMDS!rnwr(x$RK$W8r95Opk9QoP5g!o zNL2ee4z!s3VB}LfLmWIQFdTf5o(qS){bBLuFci9+9=zn~R7W&K^8}Y|@!4TpI5ToZ zkXj#df-?co?TZe3B=UedBKwY$2zjnC`XXe$%};*YOj?c>0-y~~lVmuK(PVq0tP5QU zw%8hc7FfJfLoY8T@(hMGJ^^%Aah2usyqm9`OTxfS_pY*gse68^kr^faw2+0R4PI}` zgW2dOb)dn6S(+ttD&!V^n@|`%xDWusW13GZ-b8U+c6HR&2W6DjV<1*cu`DE2hXk!; za~u~_Y6(it^O23NoYX1-h9mr~D>(RE!e}@fvzW@gS`CJkqsq2!yap1XKjhRlumUN1 z4&WcsT$~YJa#qxeI)1`EtzAI^dUtQEY=kHY#UON*1ixIzA4O-8WFZhl!2_|t;j_fu zogMD(oPJ_%(UH|JGm>g7{FDpVPg$#fRNWPN|08V2q--!&i!lSFfGG9V@m6p?3lrpt z?~+jC6Kl!%z)!~5A&2|O*Ew&SxP_4sH494+BwLv%VEQ*T5heiGA@(iVR6C6Yrutvt z)yBM_#npDYLq38iMHTXDc;JB=R0XO)S#(55xFRO&K%jIU-VS?wZIcHCG9xaV_P4TL z^+_)44X zcG;MwOt<^&WWZB)4vudkV6wpY^gLozrh9VT1R>!lNL@v}Ma)+Yd6LI3PZB=Z=k>G` zc$GxrS9PRvpDc$9G$`-n?X3Zyz*NuNty|%&YthFc9gNXZ0cV-_W))eRfoD|7-^0&T z!g`MG*V0MU;U>I&APQJx&(9j!Sx<(RrOAX)30-kdDBS3?fZgH*KnMt!)>`G(j^o%# z&=8Qd5fm9G7i@2zGO1?%7$L64Z}GNRi8yj1UCrNI;tnA9ob&U}SKtlgMtY|3p64pN z)Sc4>&Fp~2*BHT9y@8aNzKpgA3@rVi>^r&PfVu0 zpkN{gFIFE9ZsKb^Jcmq|{<^ZfW5R=0iM-3n1RiWZ=OWc_3GRhWij|ys80|jL;CE-K;Q@Q?kDh5Yh87p52)U+LI5+^s6*ObxcV0YaI=z$qRF+nN~y} z5#!E~*2EWU&37j1YkCC{%E`CdZp!3&#B$D1 zJoH=j>Uv%A!1@_c*LxN@3BhfxIzv6nPp3KUJ63BpqJo+o9^P{ZPRBW;^Da_A-(7@y z`DdsJPAA;gDU-rsL15j116GDAEnltwY+H2GCEzogJzMvNo=#et1uD5GDbumsVSS;( z+eVhN8JiAY2UxqHGFJG-_&Guf!Ea^6kec+~5`Vb~vVD_fDA7~p9z?Eg4X_BRB)B`2 zp0C$O9{gAcx0sp`k`w7yY0u!)MD{-Ti>Ip;F|`C3zX*U9(e0!?<&7OW_+0U^=+HJt zV-!&q0=`7OOOE?1NB1`M;R1bH>L5L9g*6apbZ4ErbzFWOqrEe!@@JfsrYZ?KI{JM8 zME%>eLNngaq1Em#>RI!vc%oq)Wb;h9orZB2NbK!Mc?nv(*Rq$*wu?J(@QnzWjNvrf zgq^e*8RaN@8lK_K>O{H(Pc2hH&1KZMd|R-6M{h?P*MU+XuG<~rssczb50`kntW9nx zCNPaJh|Ll??1BzM53dwA)^LA0AdTP#a7oOJ;fom%EEdZUp!FfDRER4B`y2t!m0~Z} z4=9xZSn$8hQLEdaP42d z#7cMq+=O*#mU~;xE4~irR@`g!f(BSaX#$99b)*eptFDl!)wo_>jQMxg++h@fr}NBi z0;lwCD=!25t((Gz)aAwfyncMUYl|g{xrwc(9bdR}l5-Z5l~bCX5WeUxG8FF@*O;ZH8~;ge`F5c6qTtT{ra6q z5+t1Xu|Nno5KkAzj?i&y2_SkKv-|=L)bw)wMREPbL$URPUJq}mxMUkLO+n-0mYV2@ zZYDy{n}Hbwl1cd@H{!3)F1dfR$q76@Jn$5+$X1ROgMdvFuC)aibTy^eGxZ(trOH`A z!A`2zhG;D}E$TstZBX=ft^edm_k@Efhv-(M;~MQ_j^yJscTK!BL{>o^q41ddxv5dP z2KW2Cs`eu>ww-tTb}MG#{0Yrt2I4-X9F%XTgc1A~#HBD2h_GC>+@d+LR3y|V{x3`c z)#xh?iZMWPxq)QMup@ZTeuH=c!Ye^*!;NDB)xP_CDQM#&AnJ*i&~t@w$yx`wIG;V~ z0uiHBYi#TE`{%9Opivr=Yieje$EiF)M4Fk(u{%*2L*;iw>ujPW6bc7?t0F5c{5#JxGSy)182`#FjQNQk-ac?!C5QI^ipUQrAP zf?awxik4-Ba>e07z+FpGz_NA^vb_kVAC|@d|Cm(yD$cl+Djm&xiIcu-CH(BDGcls4 z97EeKHr)+9v`a=XcQT$3oHIgQXu&r1NkX~REdvfd_PALEjS^O5Bu;4V-$n_C7sroC z7Lq^DTRBeg4BL}0hPweiZ>_DA$BCNO1QNL9*unuYeu^!v37?NyvN2X1f{Qmi;J1tFPZExAB!O&oF>$d$=TT00>jyozu(GOS^*q1Sn!#ivY9tBE>; z=ZS_TVg~b(Xi`=$RnhdwPN%RxRf-0XK!z2Un`4Lo90;s&&r)QmGSO`wx~kEsDSrri z>j~nCVF>~dzZQVmu1DlYBjiZ|9=3@yw0p#U(m$oRkEVt_s-C-Kn^Ck7GJH9+KEV?y zZ?tb$`!-7*l#`x{B&Yyu<FvPFyeQ;fb>%dBj85sj z-#RU__f~s@+bZU$5tW3;<-b@KM%}K(nGulswk5mwLvkt~E3Ep-(C)@-AP>18*E0D- z+VNpdUfoeM%;!4f#(UT(Pt=aUb-m&JBtOI~pQ_04f{0pcXU3iB3NLrBLj{iN)x%Tm zr1Df=Hgh%(^Gfb9xzDRv5LH)Ocd20(#`G#)A&RGGl!$eQe&V+57b&rcffNx51?Dw$ zje$~GqbI(=y@lE$^6IC*9WRm#cIu&dsMCzhAVtfcAgoq`;Hp{GdCM>Ln~b7ZFro30 zY<^0(i?@gC1LZe2!H$OXIy8)XZ*a@IDM2!P2xYL^>AZU6Eq3p^DO4r{;jwi3g|oD1 zR~^tJsbwk&_-WTeAAJEbUqdm8#oqxB$q*<1kTX?NyCa=6}ED;Xi8X(9G8RhB0i*-2~jEmB2}tNLaKep>%Fn1ePZ9T89C!7qEU zl7}c6bZNd~)*fYR-+U%?HCQb}A!e zKrkmJx?j42gI2M0m0{*;bbfaYkYtU|DBH&VX9H?sJpK%0k)7i|P*gX0MI%=(E1gQe zb-?$CR0nVOf1K#S(jdw4RKQTK#5>JPvjL5onoHj6N_*!C<*tVNr~-SN2vIYn7f%Qn zHr{1qZV@3cGp{+@C2#wFV5S6^7#XCxhOsJ`8(TMcb5S`PdLmJ>OKg5qeWZyI2;=(* zLtH#ssEDFJ@*y?u4d!Loc4+zJtIA&tE;Gc;z*{E{+t40cohmoepz@71zzH3QT1&|T zhj3wqE0^7P7z+XH^i&SH_u)Z}hL8G;O}DiVca^Gol{R<+dwdd_$!8`XR^am8!QcA2 zV|dHUP*)s!8o3}1HF0be!oaXOf)&YA^JL=a9!gERW0P?-fEB>}P9EQl`VhO|QqAn! z@I4h}b;eZWeF!_g4yCZMBLf+mA1B%~-T-n7Ys~vE(!>^;Jn`>roTL=~dzvPP|2~m< z$YI7_y=$2q`Yuyk1AF`x*wMqRv%I2Wib@#x7{5r?v(~yrGyz#b@}r#f*UG#irPr3E zrxTSB=t(hes>=YTST}-I+5j{CNe;8#<Vlm)LloqbmtS zk)jmFUdys#xNX1;a>q=SJy=Xt(~4(6Q+kHSjusU)x-CvE*NjCYewF3Ncx+vs-|%^w z(#V+`oNt29mHI&waq?VjItbwo3TKnhcYZgam_gF*nbrdpFqGTH`}sq|ohs+@N|WGD zbQU|?q@NM-FusI+b;(%?QEe_>WLh1rwfEAK9xWZD5c3J9;)q0)iDP2I38!2n2a&F! zIB}@qo!Qrh(fXKPriJj@8cganOF0%-duwWEae#%s9xVTgl+l+!Cfz#G=|*?=!t!~W z+7Iuz-85syZJ3}_+D*OTt`^D+#}EB+oldlDwfgIkNEKf%mDm!et|ZAvuJ3=TX%dTf z;}XDyw8mI^&YEK-fB*k4c>F8(D6@Op;DnyMhKbJ0BU{=6U`tA$ybNWB=7I)|9Nu$R zVs_D%bO@r+Cdk-u09oc5>I%uI3@0BIgsPZK=v`UUfV+8jwLtg0R02KJCS#yB{kh`q zJ4(e@bQk~=9Tw?(@}rHRE=X(S@jfb2OkPGWvk-Ij70{&kD8$lzupQhw;uk#(Jspo8 z)9x=LLRlCFQV*D^6!FWdcyS-H;Zm`4`ZP_x@=_+kr)d)-2d52&dTN?}ZLeA%-i>j)6{Xbzdp;5WMF@~rdvPn0M8cjRdhq;`8C6i zGb%a&5U`EuEcL-U=TDZh)+A%tMOx-;+jUo2 z530+<==9$tVm8TTvEd~Q-y-j0S9XY!#zvbjYyIfR0(q$g8BG&vuwCF|C=+e&hG{82 zwRT74Z86#5LZhwNLwG!=`x@kKhct@eYSqLL+M_S+UdvhB&FDrV%gq`u5F-j zGBT3Y$VT9_E~~^e(Ch{mPSTZ*#9O)et7FWbbnrne_IDA$IPMX1K&CcZkJ=* zvkMoS-PzDpR;#S2LwY?v{kD*G${PKOVwINc_dyV+b}^jK_u`!QU6EUC@rlX2-EmB7 zNAP~~!vwre766l!(OdM+SfLdhUR7vrNfn{H4;H)uYTkW*NT7-iFlOoei_Hc>m5G0W z(oit`op-W;Yau5@mLQ7*Fh3sm7CLToekqaoI8RwJ4ydu0LSqW|SFR7mQI5O4DcZn9 z7t0G}*42goeAnCTl*mk_W(ncE(ZHRX**ERQ2BR3T0`*49;Ag`I@jl->dW0>vTKkP? zpVL5h2!RrGpgeez)v%LjfXZgc4Qt6PdbLB8#!#+6Bsz61QcHHjK$wS6_bJO|4<)d0p+}>yl`3;x zo^w-^eA_u7_H#?3?`~re-J=|6DKyOE+p2mro863oJ7*WYScw{O&CAZO!Y zbbJQVPplWgb2?6W5WY}El<9Q6#=H#XM~3Ia37AUhmUhq!jZ9VmAg{hAhkb&0$<+E+ z|3E@unxarXv=5+pQZXf)N%$s;M#l0_K>NKR!8<6Si{^C|!KQGn!s4NX$@tlEFS}RyN8tjY?N%TQWktt_IxV=l*ntaI0y71t?W_2Xbp&?!s?`Q|kw5 z>>GrXnz^x0(a5iPagHUM;wbFL@hL09uB!eyn3{ZxN1BaNV$MCCbN2hGd#re9RAl&R zcVH_c8Px+atszeOIc1GZ&)uSJN|JCV{l+kN4|<0U>RXM41 z0FVF|Na!RsSVF`6lsv3t$LOdD)0jY&1wuyi!?{;dX_E-)eJ|R`{?Ia zr(+t-LHB!h(7^|Eb-uY++`MUE)wHwgaNr){!gE$n{&_5$i|u&0e0Kd6m`{05r10C& zBEXDfE=hx@>@rDHHy}Y$D)?zdO4Q+TCO3U~qEWCJZBXZ(94#vKRIi4cyn-JmeGmjx zZmi`wzSmtH<9k?u0yT;4R*Q2dv%2^ApEw4=+wCj>wF%h*fUlk!ji_wd%k?`%9l+5^ zp!!11)KMJb0G!<~?dtw;Fu2~Zd8(i7^}bDVqq;(xT{kMP1nd&|-Jy94>37_KYA*x9 zd*>u3*j-0l-aG`H(*cg~29o(h+e;Z$u@oxi!gLJ$!=^1U@Z zBm^MCb?djDhPm@fRBY`i-jE0=fscVWWAwnlHHU zdO0cjkCk)6#MgH!HTX9LlY3hX*x z3!-vDLVSNjKN5qiOd+e1&9>yf^+@xWY7^O#x7tf%f>q5WIy-a5C(pz7Y1tCD(}~%`IEf!V?*R@p%B0h<2H94) zh0cihf_9jdQoCEloxhRf$50KjE)z=xzY_)`VH6q9LSKqhSyp;`v0{iZV~wds%sA&N z;c*uj(bM%<&3k)+hoNe}mxiedDULU2am{1%5zO#TBwFE1`Lxbg+t4Ndm8UKC3Qef+ zHcARNm-K*=P%}y~5cUufGR8(^X7`)#A>*wmnKQ-)A0JZ!gBlP~f~H9>i@A?p_F~!< z=*)_OZk`pI=8fu9ZOwTH6#T$j5&`npW#`!~-|hGFH4hnY|I}HHyD95{%t2{T_qii8_np|0mkJeyx;gTux7M{|NY)=ng?}kk6T4D zOWEwttzNw*9X2_p?gzp4_%Mjnz)oRu3WOOk>-?~>f6HLhw%4_Hs|uMmNpIOY_YMtz z5E^?MD+@`3<0*U^wu+|!uIcPg*1Yn-CQZv(= zeV?1BwY84Ue&_W2l@drKKX+1|nd4$g>EvEVeosk>6r->Fk1d?`GuB7|-cOiUpoNrZ z6xnm?iBY_Rk1TG8ZVu#4v`B-ydfWWP`eAL)1Vg8_%1AR|Zu$qFu2_i(nq^^fd>c0b z5Dqi2`eux|ivn%$3*RTm86)lDLXp?yk;J@Z!{GVyi)s&7|gn`4vPedZ3 zi!CuTf#lsS0)$173X7n~>84qesiLQqd`zwH)v|gE>kcg1FO>Gp_;BkJSvDd6m#~Tc z_Jp(X3V!AZ-ebbNk3Ybtu;f()DNd!M(Hq6p>RBqNWmxL^F@!Q@^ao)IxBeB-s>2qw zqmSfmt(Ous3w-0~jelTcFueh*`mo_pjEYe)`OO#`ai2)zBOn|}UbX%Bln}9BasbUz^ZD2RVRQp3l4T!P* z3h#aSN^!wLV(|pE(7Dchq_0<`p02b`>(&bJVERd^xdzyQtR1f1Rn%N0&Mn2Bz9q+K3yRv5_L1V{g^G^+EuaVgV@y)I4!s~4L>*; z*%~;7#;Ek@ue5TD-o=dn4P#3S+dWHNA@6~!s4Mr-!KTCbDJU71`!by19U9g%R%@%4 zaC%`Jv8uopIWwN#q-oYq|u2;n(ouJQXglC4px{zGux^(dFwZdpT!Ck%MBa!L9w)*7C>aQ zFJdHX-1y5C4is`;w}RZt@xKrNtDI;(2HPkK!{bcq9Fj=Z*%au0LDk8bT1P8F6>rr` zV_6AQD(d>ADZ;d>kOsQt&)lTBf=E+OnRL!$Aa2s;kXkMp^e)AkB}9zP+kcsw>&1%< zwAHb`?xQ9-e1~ZYS9usojfx%mJab7NN;UOtw)D5ig2L%tkZEL|ujJamwDxo%211WD z$;6)eCo!~&DsWL>%p!Mr%&AHFC;>iJzZ`0o8#g)CyNh0B%hD^q+=?2Inq*KIoLr9I z-!7q(%GwampLx&%XFF*|Bzj{KxhI2nF^lxDLqtCz<}`OFMRcu!FhwEIO_E?YfGd+j zi*weUlJpM@kTP<%haJTG)1Abdmit^c4i>#m^M}){sMC6DMSMyC z>DNu!au%OQ=h-47tg2RMyt^Ejz-Sb0lyRh|geTH%PX`BiLxLbI|lpefFvOw0fHp*%a zb1uQ@m15i|G00@w+VZd)!&ea{h%20zk>#6A@SCUvKX8@cH0Su^#DDBa$#FC|m;-`8 z!3FkC?ONH&&o8h6Dhm)?H@VG;z3&l}IMbR1@kdZn%_*<7LX|r5FgHD^9*1DJ0A3wh zY=Dcy3ti{>^=eS(5agc@G603w=7{}B>eD*f>8s$)X>;wAVrHs3>_TH#rnK_{6D@!`Ld&8{Py(%}&gL_}5u)RCBGbNrdW_jKTbXVB7pVD#MLr!Q$pW9$6bh;d z!fr`rPzOX4VZQhZBjcg=&f2tAFx)B6*OHM%wz(&^Rn+_>tFUhK8Z(lH86mG?M1tR~ zUTjL!;Lyr{6;`a($x|?6tUvC^`E@`+h}gs)t9RoKWs(#piIUaZ-)Ujk7JsDC@AIv> zo42<9fe4!wsMqbRs#Etfw5;~3)>Nyz4y!`H>O`gs$NR+b<|Ac!=TEE?POr(|$z}&~ zbX~uNy&KH3iw|O2N)*lR_0Dp?lTo}H5k#OfqucXb_7dgLY+Y;IWL3>qUUq}a&-Jj8 z_|jLq$kU618Li>BV`018UYsHwxs7QGIYvdw5p8-TX^7L1Hk?__^n9@(yXkeQA;-^Pe!}c@q)xEJA!=~Bgjh}TJFf!n|sQ>{+144tm?Ci|g z;lQPNzyZO7K4|JjUe+&!@1zwolN%O7v981#q))e?>d{lQq zNP%@-BiiGb#4FCY;4Px<;{2_b<*^SW*&FR6>l}#ud@<9!drgItVV+HblWED2z`&deL%4cmTRLdxe$?lGNY{h=MK~~ zsczbdvB{C8{&tcSW+LYD!H@kXx^j6F?p#>z5Mldbz8Plzq9V4DY$~Z=r|a`jGjf*y zIyk7TW-P3H4f3(VSG`Me770Gl)dgzDegxXYRv@lFLONeOA8X=cK49g1^zBOO8u<-< z6{1fX0snq}G4x8&tswq`O)5B92Vv0R<>|_v{bW8UsR(2(y|?mp9{Po0WmtIBpG~l8 zaS)%!-rpgb6t4^ivi&H9Kn?+F09FSnWMjTDav$loxS&ka_ziqlHTTo0yV~ddXq(k> zHuzR(BR9^Wbn@=BhgqqT37uekRm!VeWsRgx`+4Z_TblI?#boOp7N1+oBv?GGaH+w3LN^mn2lm5>!>G1WG>B-u|&H@(0tMLGk)DR#}yv``xUX< zTl#B8nWXQ-brB#PzWNmHI-doVGr4Xm_@!3_a8#DJGCRP?wSk$fJX{HQ2Bq6Kr`%?V zOHP=m2YW~$3?kVk1ssq5U_n3?S=PFwLLlE0G)&j-F*$?_)qg+cf*+#c-#Mj+1YdBQ z55M95WeRir=8blmb}r`PD9-p$7*`dVB)z#M6QJB^S6(Mr=~yj z-umE;?CE}9TP|Z=mh9LA5S;9okb_=DZdue?$GOozj|B-l3Tk(sZxQM1X>iCTj^W?L z*uONW6awQ&YLk%V9d+!{eK_es(}l69);j$Wxowgdw57q}BjdH&euNQNUD-W-a+SyazFRbAebx+x1tv z>8(q2%>EXg(G*W(vtolHB`EDvM-U0WQKFsB|PU|CSl?TCb zgG^}4Arv1@o4vnXS+uZ>yMBGyDx*^(FwM;Z-(}#pS#txE5q=1a-pVn*C~GK+wO~seucGx*4f05Ar>>N;QUaf=jh)-;FI@go}-sA98NW zh4Ecz+@%!^NScVLuu{3&)zV}2zPmA_>5S-E$YE_Sh5$4!GLqIB_vpDv#1tOQ3B%ks zhO5`o*+=^)ZCAsvk zU772Z!c41Pl2?^fCcczNuXf^umU!YPu(L`puyvIMmVs50VMwg&8%a&;@Mug24CooMEw@t>Tur*x{oy|f|KHG>n0vx?FP#K!Q6msLX>Mp~?Fnjeg^ z(5?e-u`UuJRZ3X#$_+w^r+}ig$5&P++~7w%D_ziRa}j$-^6m|}K6yh!$+jT$8>+ZE zbH|p7uQO4lr^(@xZfHJr)@AR~0>&Me2KVq_NgHY#Tzbuhq?YT?**d(KsJIaFtwBP| zOjT56Z{>l%=_#~f{;BMy+F{u#GTtQi`en%ziC6b6sZf|DbccWfvyh1V`Bv`lPJ3jn zTMc@#qX6DMJx1O~NbDczeXxut}jc_13|m^SbVezdt7swJ?Q zVw=@~fk44S1U0Fk*_((I(8!CgO-U$W-im7DpwqzYS2dkwpEaPzopGlWGC92!}`<{p+@1=%ST00nu4;Jc@+I+Uqg3ric>H1=})E;6wV(yDk#D$%$*fTJ( zy&X)l?)a>Q66Cz&@{Ktes&SXu0^oS(%=~?RiiLd_dT)R5;2B^8hW4^Lm?_Cz;L_26NV zdp#qeZksW_&T3W$=JC6H#Eyv~rw8~x#%(qf3kY^pow0ngrql9h`&>Sz-u9Sl9{+#> zf!h!G1?XLiKeo;7eSGr$KOANItC=*@Vqz;T)Sn~()BG4e6t}Ra!uj3Itt$@i<5SU) zj|1_=kMnwXJWLn_BV1AD>XOBFy)GdJTS&;;ODrRdZm^^fpdfKvr`KKMAG$&9kd`+_ ztmEBc&NrI5RW{j##TGluZf9ed<2wNW6qS#oSFSd_+YxzqHY9!&uIn56y9@Vh0fT|m zqIW-LwKXYqhYx2h?bz^4upLB^GxAl;e#UAZXLHHvn?cYd7Piygy8b?rZXws3#OG5- zS`qGu}%B!E2wD=aB@Ulk>U<(_vuwHjMqv(e?2V+o10ITLobA4h2CPJP~Ck`bl| z2bO_6NnX8v$%~rQSpD|399LnkWTb2!MGD0pLh(9!aF&S?uIcQm%_7JYtn2>@m=j&Z z%>9%>{|QzF&QFp#^j~{#-kdnH^b7xgKZPgW8y#lEV=W*+?!%ctNJv5gfi?tlC#JQO zgg_hGKep1^FBbjM>^P>`45k{nSTvZK z)?BWdlYS!f(9N`zvd zAlFV2E{sLSdh02cIpaC1AX9N}I19*jyy-l}Y>HLv4iUEK6WhoZ zU1g2ixJ}r>I0;9Hz;?_cMb&eVnNz|?v^LUo;0P#oZrg%b$w1OkHw4eqYNC3t|~ z?(Q(SyK8Wl;O_1O9b5)?85{=ZruNqE+g5!~f7M^rFMS@m`kcn{oS~Ka;ap3*ldvNa zNfv*yOdb8&(>Za=1^m2T{K8axcxF%!mRRs+&A3Gyu`2gi1Q0-63oX^CvFMNS3DNtj zHjm*@cn=6Z=_g>>DifEAJ_(LTv21YD*zp2fID&QO4i@_vC^bfklo^Mx!dB(2@vc!L z!`?8p2$HBJT3MphA-GZvPK3cQ31&)x*c&Vxh(X>*S2$eitATonDWC>;emg{dW%h_( zQ6`Nh7jR5_BB%9EG4A^K(quq~CZv;UFO1QY_4K!gm5NS6eA$Uud`Mzds2#e_;$mnd znLM2W!VhqtvjrbBQ6X`|zN*+4x?ddoGk|F1;<#4Cv*l2cRdJ)C4x;mbUAy)YW9*K-C1YstD6^@b86)3zb!_2c2v9;o|UY=gmxFTaK}6} zq&Y%_StT4J*<3v@D&tlSIzqGMwf132nM>+~7B$Ta)a5V4*P;RKgMUZp6l|f|6J>@U z=*}v?VH(C$6dh6vt@cw@Ayri7EA|KL6vwoUK8=NcQ%~X6vv1Kvk$rkFV58mpFy5q- zCCR%GT*L_mu`;UU#U58l8?nV^tICc1Q2fHlJ#pQv%exRij&1z?LZ$Nd8$bm=e}^eF zDRcrtJw)z`CQCii7pqPFA|6lXSw~Xf8PR$(CHEOGnU@q3t{;`X5RTPq1^zVlqWDGt zzre7KD*oyN#+qo9L`wR>T@oRJ z6&B@EWHn1!?4Ka5crM!!{;*gvkQ#Cb=UJ$vI8kWLyZ)P%APx)t=8w!fg2!9fl6YvMP%Oq8x1A z8(;eNHTC8L66anbYrrkFOe1!ksTRHlh<;|s!>B&vXDws*Kv{Qaj5ZW z;4l)KfP^Gl?vGHG^n2;zg&&%#u`+&;u|Pd0++{U~DVMTE7~=EzS_n4*Rw{c#$;B$M z3Nk-C?hM1&EEzS_)wcbP$}vo*qmaHYO|wdniP2!0K%

Hm}n&ly>;Npb+ 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𕑌uKcqTt|_+U&{2}BmGv|<&RWLF|&R39Dys2V9Mq~ zT>Rz;(VLezTkJg&AKCF?>CR2jt=ciLYUAfNQ02mP1?ZOU9{M4h!S&+c)UU1DW3pbL zt@#a0cHa;;hcafE6 z1hRU`nvXdj9ZmgpOg+Z*`3SkD4`Vt{J+6ItIt+$hmbptyP*A8;uhp+vA*1l!8SqLZ zay)HWbq=`jgPFwSa9F`nnHsaor!mstci#|7f`9uur7^_o!yPWMKi z+6%lK^8MO>-o8IAeNLQK>@`p7n0szY8(3D18#hPWPZRrAvkBQ{hJqFA&))69T`RT*?`=&i!D0%-xW;wIVBYxbCz;3))nW6thg+af7g zUh2My_JQ3UYT2jXtwW&e5S}8rtw+v;5j)xKzd`I2Rd{(#SViBnrq>?X$@1*u*O2?t zy>b}#-VIlBYP@-Gd){yi)m%=%sQ#WPKGtE&+)vZNf;?~o{gUTv==I0&TyQ>0jFdTW z6#m!ddCRqK3zYq_@oYS8ywO@m^Z5vur>N#4sQVYSL)Ya!Yr9G-)+;~bEj63`tHPDQ5alpJM%D`-CS`G3A53(`&n+W&V~8=;W@4^UFiFF ztV*OFfaBwv+2wYM?p49=&6E5cO2CoW%eleU6rx4X55|v{dxv4&xk}H1kBBjt_;Eqo zEo+wgFIa3-QL0&SSittMwpx#XBa|k)pqoQ>y7Rl4aRvn!kksf?!n2JnY1H!g`HYl@ zxL4u3Xqvtgf?lbYi?a1aNM}yux$WXI@w?afvk1BUH0X-QMK5vcj-LMrJQWQU3VJv8 z40?0(@uF}uL%2^AV5?_0d9g`!Pke2b6JBLCzyIl#;_x!TwduR$>R0YNG9mmpe>U;< zA|vSdrkYbjIh6-obHOfVo^cj&`|38)*BX9ww{cf@k^U0M?CW?N z0B~$Ll1$}YI#zh3`grVEcMEwq4Z-@5u{^9EbaG!o9YM8G-e~Vv zPZCoD=KoImAeO&A5sWO6$Mv}S`Rq?tkcPh8-)E1F#rmEBJHI@8@5Oa0-d#9LZCs2? zWd}fMeZhDj%qH;fn0l<&3MKDoD>hBs5oU(M4yp~q*8a}UJMuESZKh0LTr zhp#vL{AuLo%tLNH(X%M2*RLghQ%c>6n<%!m{CuY77tLz~$!XR44kBf7Rbw5gPd?Ze z_$SUd=eaC@NSh-RpKlDXg$eFoJfUr`V$};vNt+kK2_8>>!0Dl9#i!j;sb{F|H4j+K z+&#JBPscQgnQ=NRT|TF;EE`GpBWs;Wdfo0OU7>GHY<9kSrW3)*>U6S+_n0Lt^S*VzOe%=RzN2142y2mPjVt#`> zU|&JscJs=)Ot2Iz?|c;m1xngKhAl>yumy3wHHGZT#aaBQso5^HA~n7|3~ay1Odl20 zy31AQhH)Tod3(4z%2>zK0Um#K@@sqf%I%3q3Me3j96vrouwkF8@p zju{;5M!%+iq#%Wm-|5^5xr}xDXmFH zU>uycL-6XoGp}9ls?@z8(zhzt4!SENUXRpjlH`z{+LR-_jKS5ZV;51!+FyNafFmwWT-%&brp^|wKfk6 zjqZ$_Eq6=w1p8LOLVc?fr+pu-Z=k>GxPqjRwt9L3n$mmxn;wxW9+fpFyE?qB+ocWm zG=W0%2gH<%nPr(9Sg!0ovF*nTT@)t=S83z767!R{rFKjFD6Th+2bj~krMOddQ0DR4#x$g0|Vm@*E|1S zz$&qCFmE^ck>nd|bwGc36Thk%6#9`^-`Z!qA;b>~bH0;iJs(~CM0|htuXuO$$bR2& z$hZg~@$I+$$J>xY=KG^V25IQ1fUl(!wd}!hSZ*#&`acfyOnkdSV!*~s(RSUwsG292 zlc4lGKoD+4t^*V%!Zr8K89({$^pUdV;ZDuR?&kg! zsF1g>xaHV=84|q^lk*`+va~nv*x5j-!mT6cZOvlgP}J|h5BAplEf@V2=$rTO8SSipmmMUPN?ty^7d;d^dPr2|G&I9x8|DzX>yec{)?Y* zvc($`)zd$M^27(;ooGOppJi|Vfgut4_Oo5WSdV>hd#E?ehyMWTk`C_x literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js b/Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js new file mode 100644 index 0000000..79dda4c --- /dev/null +++ b/Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js @@ -0,0 +1 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";var t=e({ActiveCollisionTypes:()=>yt,ActiveEvents:()=>ht,ActiveHooks:()=>gt,Ball:()=>tn,BroadPhase:()=>Zt,CCDSolver:()=>Vt,Capsule:()=>on,CharacterCollision:()=>wn,CoefficientCombineRule:()=>W,Collider:()=>jn,ColliderDesc:()=>Mn,ColliderSet:()=>Nn,ColliderShapeCastHit:()=>Xt,Cone:()=>vn,ConvexPolyhedron:()=>pn,Cuboid:()=>rn,Cylinder:()=>gn,DebugRenderBuffers:()=>Sn,DebugRenderPipeline:()=>Cn,DynamicRayCastVehicleController:()=>Dn,EventQueue:()=>An,FeatureType:()=>G,FixedImpulseJoint:()=>Et,FixedMultibodyJoint:()=>It,GenericImpulseJoint:()=>jt,HalfSpace:()=>nn,HeightFieldFlags:()=>ft,Heightfield:()=>hn,ImpulseJoint:()=>J,ImpulseJointSet:()=>Pt,IntegrationParameters:()=>wt,IslandManager:()=>Ht,JointAxesMask:()=>dt,JointData:()=>Nt,JointType:()=>U,KinematicCharacterController:()=>Tn,MassPropsMode:()=>q,MotorModel:()=>ut,MultibodyJoint:()=>Y,MultibodyJointSet:()=>Bt,NarrowPhase:()=>Qt,PhysicsPipeline:()=>bn,PidAxesMask:()=>mt,PidController:()=>En,PointColliderProjection:()=>Jt,PointProjection:()=>qt,Polyline:()=>un,PrismaticImpulseJoint:()=>kt,PrismaticMultibodyJoint:()=>Lt,Quaternion:()=>st,QueryFilterFlags:()=>vt,Ray:()=>Ut,RayColliderHit:()=>Kt,RayColliderIntersection:()=>Gt,RayIntersection:()=>Wt,RevoluteImpulseJoint:()=>At,RevoluteMultibodyJoint:()=>Rt,RigidBody:()=>bt,RigidBodyDesc:()=>xt,RigidBodySet:()=>Ct,RigidBodyType:()=>H,RopeImpulseJoint:()=>Dt,RotationOps:()=>V,RoundCone:()=>yn,RoundConvexPolyhedron:()=>mn,RoundCuboid:()=>an,RoundCylinder:()=>_n,RoundTriangle:()=>ln,SdpMatrix3:()=>ct,SdpMatrix3Ops:()=>lt,Segment:()=>sn,SerializationPipeline:()=>xn,Shape:()=>X,ShapeCastHit:()=>Yt,ShapeContact:()=>en,ShapeType:()=>K,SolverFlags:()=>_t,SphericalImpulseJoint:()=>Mt,SphericalMultibodyJoint:()=>zt,SpringImpulseJoint:()=>Ot,TempContactForceEvent:()=>kn,TempContactManifold:()=>$t,TriMesh:()=>fn,TriMeshFlags:()=>pt,Triangle:()=>cn,UnitImpulseJoint:()=>Tt,UnitMultibodyJoint:()=>Ft,Vector3:()=>ot,VectorOps:()=>B,Voxels:()=>dn,World:()=>On,default:()=>Wn,init:()=>Vn,reserveMemory:()=>Un,version:()=>Hn}),n,r=Array(128).fill(void 0);function i(e){return r[e]}r.push(void 0,null,!0,!1);var a=r.length;function o(e){a===r.length&&r.push(r.length+1);let t=a;return a=r[t],r[t]=e,t}function s(e,t){try{return e.apply(this,t)}catch(e){n.__wbindgen_export_0(o(e))}}var c=typeof TextDecoder<`u`?new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error(`TextDecoder not available`)}};typeof TextDecoder<`u`&&c.decode();var l=null;function u(e,t){return e>>>=0,c.decode((l!==null&&l.byteLength!==0||(l=new Uint8Array(n.memory.buffer)),l).subarray(e,e+t))}function d(e){return e==null}var f=null;function p(){return(f===null||!0===f.buffer.detached||f.buffer.detached===void 0&&f.buffer!==n.memory.buffer)&&(f=new DataView(n.memory.buffer)),f}function m(e){let t=i(e);return function(e){e<132||(r[e]=a,a=e)}(e),t}function h(e,t){if(!(e instanceof t))throw Error(`expected instance of ${t.name}`)}var g=128;function _(e){if(g==1)throw Error(`out of js stack`);return r[--g]=e,g}var v=null;function y(e,t){return e>>>=0,(v!==null&&v.byteLength!==0||(v=new Int32Array(n.memory.buffer)),v).subarray(e/4,e/4+t)}var b=null;function ee(){return b!==null&&b.byteLength!==0||(b=new Float32Array(n.memory.buffer)),b}function te(e,t){return e>>>=0,ee().subarray(e/4,e/4+t)}var x=null;function ne(){return x!==null&&x.byteLength!==0||(x=new Uint32Array(n.memory.buffer)),x}var S=0;function C(e,t){let n=t(4*e.length,4)>>>0;return ne().set(e,n/4),S=e.length,n}function w(e,t){let n=t(4*e.length,4)>>>0;return ee().set(e,n/4),S=e.length,n}Object.freeze({Vertex:0,0:`Vertex`,Edge:1,1:`Edge`,Face:2,2:`Face`,Unknown:3,3:`Unknown`});var T=Object.freeze({LinX:0,0:`LinX`,LinY:1,1:`LinY`,LinZ:2,2:`LinZ`,AngX:3,3:`AngX`,AngY:4,4:`AngY`,AngZ:5,5:`AngZ`}),E=Object.freeze({Revolute:0,0:`Revolute`,Fixed:1,1:`Fixed`,Prismatic:2,2:`Prismatic`,Rope:3,3:`Rope`,Spring:4,4:`Spring`,Spherical:5,5:`Spherical`,Generic:6,6:`Generic`});Object.freeze({AccelerationBased:0,0:`AccelerationBased`,ForceBased:1,1:`ForceBased`}),Object.freeze({Dynamic:0,0:`Dynamic`,Fixed:1,1:`Fixed`,KinematicPositionBased:2,2:`KinematicPositionBased`,KinematicVelocityBased:3,3:`KinematicVelocityBased`});var D=Object.freeze({Ball:0,0:`Ball`,Cuboid:1,1:`Cuboid`,Capsule:2,2:`Capsule`,Segment:3,3:`Segment`,Polyline:4,4:`Polyline`,Triangle:5,5:`Triangle`,TriMesh:6,6:`TriMesh`,HeightField:7,7:`HeightField`,Compound:8,8:`Compound`,ConvexPolyhedron:9,9:`ConvexPolyhedron`,Cylinder:10,10:`Cylinder`,Cone:11,11:`Cone`,RoundCuboid:12,12:`RoundCuboid`,RoundTriangle:13,13:`RoundTriangle`,RoundCylinder:14,14:`RoundCylinder`,RoundCone:15,15:`RoundCone`,RoundConvexPolyhedron:16,16:`RoundConvexPolyhedron`,HalfSpace:17,17:`HalfSpace`,Voxels:18,18:`Voxels`}),re=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawbroadphase_free(e>>>0,1))),O=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,re.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,re.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawbroadphase_free(e,0)}constructor(){return this.__wbg_ptr=n.rawbroadphase_new()>>>0,re.register(this,this.__wbg_ptr,this),this}castRay(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z);let r=n.rawbroadphase_castRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m));return r===0?void 0:He.__wrap(r)}finally{r[g++]=void 0}}castRayAndGetNormal(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z);let r=n.rawbroadphase_castRayAndGetNormal(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m));return r===0?void 0:We.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithRay(e,t,i,a,o,s,c,l,u,f,p,m,v){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z),n.rawbroadphase_intersectionsWithRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,_(l),u,d(f)?4294967297:f>>>0,!d(p),d(p)?0:p,!d(m),d(m)?0:m,_(v))}finally{r[g++]=void 0,r[g++]=void 0}}intersectionWithShape(e,t,i,a,o,s,c,l,u,f,m){try{let r=n.__wbindgen_add_to_stack_pointer(-16);h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,R),n.rawbroadphase_intersectionWithShape(r,this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c,d(l)?4294967297:l>>>0,!d(u),d(u)?0:u,!d(f),d(f)?0:f,_(m));var v=p().getInt32(r+0,!0),y=p().getFloat64(r+8,!0);return v===0?void 0:y}finally{n.__wbindgen_add_to_stack_pointer(16),r[g++]=void 0}}projectPoint(e,t,i,a,o,s,c,l,u,f){try{h(e,F),h(t,I),h(i,k),h(a,z);let r=n.rawbroadphase_projectPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o,s,d(c)?4294967297:c>>>0,!d(l),d(l)?0:l,!d(u),d(u)?0:u,_(f));return r===0?void 0:Re.__wrap(r)}finally{r[g++]=void 0}}projectPointAndGetFeature(e,t,i,a,o,s,c,l,u){try{h(e,F),h(t,I),h(i,k),h(a,z);let r=n.rawbroadphase_projectPointAndGetFeature(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o,d(s)?4294967297:s>>>0,!d(c),d(c)?0:c,!d(l),d(l)?0:l,_(u));return r===0?void 0:Re.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithPoint(e,t,i,a,o,s,c,l,u,f){try{h(e,F),h(t,I),h(i,k),h(a,z),n.rawbroadphase_intersectionsWithPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,_(o),s,d(c)?4294967297:c>>>0,!d(l),d(l)?0:l,!d(u),d(u)?0:u,_(f))}finally{r[g++]=void 0,r[g++]=void 0}}castShape(e,t,i,a,o,s,c,l,u,f,p,m,v,y,b){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,z),h(c,R);let r=n.rawbroadphase_castShape(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l,u,f,p,d(m)?4294967297:m>>>0,!d(v),d(v)?0:v,!d(y),d(y)?0:y,_(b));return r===0?void 0:ue.__wrap(r)}finally{r[g++]=void 0}}intersectionsWithShape(e,t,i,a,o,s,c,l,u,f,p,m){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,L),h(s,R),n.rawbroadphase_intersectionsWithShape(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,_(c),l,d(u)?4294967297:u>>>0,!d(f),d(f)?0:f,!d(p),d(p)?0:p,_(m))}finally{r[g++]=void 0,r[g++]=void 0}}collidersWithAabbIntersectingAabb(e,t,i,a,o,s){try{h(e,F),h(t,I),h(i,k),h(a,z),h(o,z),n.rawbroadphase_collidersWithAabbIntersectingAabb(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,_(s))}finally{r[g++]=void 0}}},ie=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawccdsolver_free(e>>>0,1))),ae=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ie.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawccdsolver_free(e,0)}constructor(){return this.__wbg_ptr=n.rawccdsolver_new()>>>0,ie.register(this,this.__wbg_ptr,this),this}},oe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcharactercollision_free(e>>>0,1))),se=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,oe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcharactercollision_free(e,0)}constructor(){return this.__wbg_ptr=n.rawcharactercollision_new()>>>0,oe.register(this,this.__wbg_ptr,this),this}handle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}translationDeltaApplied(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}translationDeltaRemaining(){let e=n.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);return z.__wrap(e)}toi(){return n.rawcharactercollision_toi(this.__wbg_ptr)}worldWitness1(){let e=n.rawcharactercollision_worldWitness1(this.__wbg_ptr);return z.__wrap(e)}worldWitness2(){let e=n.rawcharactercollision_worldWitness2(this.__wbg_ptr);return z.__wrap(e)}worldNormal1(){let e=n.rawcharactercollision_worldNormal1(this.__wbg_ptr);return z.__wrap(e)}worldNormal2(){let e=n.rawcharactercollision_worldNormal2(this.__wbg_ptr);return z.__wrap(e)}},ce=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcolliderset_free(e>>>0,1))),k=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ce.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ce.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcolliderset_free(e,0)}coTranslation(e){let t=n.rawcolliderset_coTranslation(this.__wbg_ptr,e);return z.__wrap(t)}coRotation(e){let t=n.rawcolliderset_coRotation(this.__wbg_ptr,e);return L.__wrap(t)}coTranslationWrtParent(e){let t=n.rawcolliderset_coTranslationWrtParent(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coRotationWrtParent(e){let t=n.rawcolliderset_coRotationWrtParent(this.__wbg_ptr,e);return t===0?void 0:L.__wrap(t)}coSetTranslation(e,t,r,i){n.rawcolliderset_coSetTranslation(this.__wbg_ptr,e,t,r,i)}coSetTranslationWrtParent(e,t,r,i){n.rawcolliderset_coSetTranslationWrtParent(this.__wbg_ptr,e,t,r,i)}coSetRotation(e,t,r,i,a){n.rawcolliderset_coSetRotation(this.__wbg_ptr,e,t,r,i,a)}coSetRotationWrtParent(e,t,r,i,a){n.rawcolliderset_coSetRotationWrtParent(this.__wbg_ptr,e,t,r,i,a)}coIsSensor(e){return n.rawcolliderset_coIsSensor(this.__wbg_ptr,e)!==0}coShapeType(e){return n.rawcolliderset_coShapeType(this.__wbg_ptr,e)}coHalfspaceNormal(e){let t=n.rawcolliderset_coHalfspaceNormal(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coHalfExtents(e){let t=n.rawcolliderset_coHalfExtents(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coSetHalfExtents(e,t){h(t,z),n.rawcolliderset_coSetHalfExtents(this.__wbg_ptr,e,t.__wbg_ptr)}coRadius(e){let t=n.rawcolliderset_coRadius(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetRadius(e,t){n.rawcolliderset_coSetRadius(this.__wbg_ptr,e,t)}coHalfHeight(e){let t=n.rawcolliderset_coHalfHeight(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetHalfHeight(e,t){n.rawcolliderset_coSetHalfHeight(this.__wbg_ptr,e,t)}coRoundRadius(e){let t=n.rawcolliderset_coRoundRadius(this.__wbg_ptr,e);return t===4294967297?void 0:t}coSetRoundRadius(e,t){n.rawcolliderset_coSetRoundRadius(this.__wbg_ptr,e,t)}coVoxelData(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coVoxelData(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=y(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coVoxelSize(e){let t=n.rawcolliderset_coVoxelSize(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coSetVoxel(e,t,r,i,a){n.rawcolliderset_coSetVoxel(this.__wbg_ptr,e,t,r,i,a)}coPropagateVoxelChange(e,t,r,i,a,o,s,c){n.rawcolliderset_coPropagateVoxelChange(this.__wbg_ptr,e,t,r,i,a,o,s,c)}coCombineVoxelStates(e,t,r,i,a){n.rawcolliderset_coCombineVoxelStates(this.__wbg_ptr,e,t,r,i,a)}coVertices(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coVertices(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=te(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coIndices(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coIndices(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=function(e,t){return e>>>=0,ne().subarray(e/4,e/4+t)}(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coTriMeshFlags(e){let t=n.rawcolliderset_coTriMeshFlags(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightFieldFlags(e){let t=n.rawcolliderset_coHeightFieldFlags(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightfieldHeights(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coHeightfieldHeights(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getInt32(i+4,!0);let a;return t!==0&&(a=te(t,r).slice(),n.__wbindgen_export_1(t,4*r,4)),a}finally{n.__wbindgen_add_to_stack_pointer(16)}}coHeightfieldScale(e){let t=n.rawcolliderset_coHeightfieldScale(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}coHeightfieldNRows(e){let t=n.rawcolliderset_coHeightfieldNRows(this.__wbg_ptr,e);return t===4294967297?void 0:t}coHeightfieldNCols(e){let t=n.rawcolliderset_coHeightfieldNCols(this.__wbg_ptr,e);return t===4294967297?void 0:t}coParent(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawcolliderset_coParent(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getFloat64(i+8,!0);return t===0?void 0:r}finally{n.__wbindgen_add_to_stack_pointer(16)}}coSetEnabled(e,t){n.rawcolliderset_coSetEnabled(this.__wbg_ptr,e,t)}coIsEnabled(e){return n.rawcolliderset_coIsEnabled(this.__wbg_ptr,e)!==0}coSetContactSkin(e,t){n.rawcolliderset_coSetContactSkin(this.__wbg_ptr,e,t)}coContactSkin(e){return n.rawcolliderset_coContactSkin(this.__wbg_ptr,e)}coFriction(e){return n.rawcolliderset_coFriction(this.__wbg_ptr,e)}coRestitution(e){return n.rawcolliderset_coRestitution(this.__wbg_ptr,e)}coDensity(e){return n.rawcolliderset_coDensity(this.__wbg_ptr,e)}coMass(e){return n.rawcolliderset_coMass(this.__wbg_ptr,e)}coVolume(e){return n.rawcolliderset_coVolume(this.__wbg_ptr,e)}coCollisionGroups(e){return n.rawcolliderset_coCollisionGroups(this.__wbg_ptr,e)>>>0}coSolverGroups(e){return n.rawcolliderset_coSolverGroups(this.__wbg_ptr,e)>>>0}coActiveHooks(e){return n.rawcolliderset_coActiveHooks(this.__wbg_ptr,e)>>>0}coActiveCollisionTypes(e){return n.rawcolliderset_coActiveCollisionTypes(this.__wbg_ptr,e)}coActiveEvents(e){return n.rawcolliderset_coActiveEvents(this.__wbg_ptr,e)>>>0}coContactForceEventThreshold(e){return n.rawcolliderset_coContactForceEventThreshold(this.__wbg_ptr,e)}coContainsPoint(e,t){return h(t,z),n.rawcolliderset_coContainsPoint(this.__wbg_ptr,e,t.__wbg_ptr)!==0}coCastShape(e,t,r,i,a,o,s,c,l){h(t,z),h(r,R),h(i,z),h(a,L),h(o,z);let u=n.rawcolliderset_coCastShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c,l);return u===0?void 0:tt.__wrap(u)}coCastCollider(e,t,r,i,a,o,s){h(t,z),h(i,z);let c=n.rawcolliderset_coCastCollider(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a,o,s);return c===0?void 0:ue.__wrap(c)}coIntersectsShape(e,t,r,i){return h(t,R),h(r,z),h(i,L),n.rawcolliderset_coIntersectsShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr)!==0}coContactShape(e,t,r,i,a){h(t,R),h(r,z),h(i,L);let o=n.rawcolliderset_coContactShape(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return o===0?void 0:rt.__wrap(o)}coContactCollider(e,t,r){let i=n.rawcolliderset_coContactCollider(this.__wbg_ptr,e,t,r);return i===0?void 0:rt.__wrap(i)}coProjectPoint(e,t,r){h(t,z);let i=n.rawcolliderset_coProjectPoint(this.__wbg_ptr,e,t.__wbg_ptr,r);return Be.__wrap(i)}coIntersectsRay(e,t,r,i){return h(t,z),h(r,z),n.rawcolliderset_coIntersectsRay(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)!==0}coCastRay(e,t,r,i,a){return h(t,z),h(r,z),n.rawcolliderset_coCastRay(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a)}coCastRayAndGetNormal(e,t,r,i,a){h(t,z),h(r,z);let o=n.rawcolliderset_coCastRayAndGetNormal(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a);return o===0?void 0:Ke.__wrap(o)}coSetSensor(e,t){n.rawcolliderset_coSetSensor(this.__wbg_ptr,e,t)}coSetRestitution(e,t){n.rawcolliderset_coSetRestitution(this.__wbg_ptr,e,t)}coSetFriction(e,t){n.rawcolliderset_coSetFriction(this.__wbg_ptr,e,t)}coFrictionCombineRule(e){return n.rawcolliderset_coFrictionCombineRule(this.__wbg_ptr,e)>>>0}coSetFrictionCombineRule(e,t){n.rawcolliderset_coSetFrictionCombineRule(this.__wbg_ptr,e,t)}coRestitutionCombineRule(e){return n.rawcolliderset_coRestitutionCombineRule(this.__wbg_ptr,e)>>>0}coSetRestitutionCombineRule(e,t){n.rawcolliderset_coSetRestitutionCombineRule(this.__wbg_ptr,e,t)}coSetCollisionGroups(e,t){n.rawcolliderset_coSetCollisionGroups(this.__wbg_ptr,e,t)}coSetSolverGroups(e,t){n.rawcolliderset_coSetSolverGroups(this.__wbg_ptr,e,t)}coSetActiveHooks(e,t){n.rawcolliderset_coSetActiveHooks(this.__wbg_ptr,e,t)}coSetActiveEvents(e,t){n.rawcolliderset_coSetActiveEvents(this.__wbg_ptr,e,t)}coSetActiveCollisionTypes(e,t){n.rawcolliderset_coSetActiveCollisionTypes(this.__wbg_ptr,e,t)}coSetShape(e,t){h(t,R),n.rawcolliderset_coSetShape(this.__wbg_ptr,e,t.__wbg_ptr)}coSetContactForceEventThreshold(e,t){n.rawcolliderset_coSetContactForceEventThreshold(this.__wbg_ptr,e,t)}coSetDensity(e,t){n.rawcolliderset_coSetDensity(this.__wbg_ptr,e,t)}coSetMass(e,t){n.rawcolliderset_coSetMass(this.__wbg_ptr,e,t)}coSetMassProperties(e,t,r,i,a){h(r,z),h(i,z),h(a,L),n.rawcolliderset_coSetMassProperties(this.__wbg_ptr,e,t,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr)}constructor(){return this.__wbg_ptr=n.rawcolliderset_new()>>>0,ce.register(this,this.__wbg_ptr,this),this}len(){return n.rawcolliderset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawcolliderset_contains(this.__wbg_ptr,e)!==0}createCollider(e,t,r,i,a,o,s,c,l,u,d,f,m,g,_,v,y,b,ee,te,x,ne,S,C,w){try{let D=n.__wbindgen_add_to_stack_pointer(-16);h(t,R),h(r,z),h(i,L),h(s,z),h(c,z),h(l,L),h(w,I),n.rawcolliderset_createCollider(D,this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u,d,f,m,g,_,v,y,b,ee,te,x,ne,S,C,w.__wbg_ptr);var T=p().getInt32(D+0,!0),E=p().getFloat64(D+8,!0);return T===0?void 0:E}finally{n.__wbindgen_add_to_stack_pointer(16)}}remove(e,t,r,i){h(t,N),h(r,I),n.rawcolliderset_remove(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}isHandleValid(e){return n.rawcolliderset_contains(this.__wbg_ptr,e)!==0}forEachColliderHandle(e){try{n.rawcolliderset_forEachColliderHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}},le=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcollidershapecasthit_free(e>>>0,1))),ue=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,le.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,le.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcollidershapecasthit_free(e,0)}colliderHandle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}witness1(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}witness2(){let e=n.rawcollidershapecasthit_witness2(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);return z.__wrap(e)}},de=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactforceevent_free(e>>>0,1))),fe=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,de.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,de.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactforceevent_free(e,0)}collider1(){return n.rawcharactercollision_handle(this.__wbg_ptr)}collider2(){return n.rawcontactforceevent_collider2(this.__wbg_ptr)}total_force(){let e=n.rawcontactforceevent_total_force(this.__wbg_ptr);return z.__wrap(e)}total_force_magnitude(){return n.rawcontactforceevent_total_force_magnitude(this.__wbg_ptr)}max_force_direction(){let e=n.rawcontactforceevent_max_force_direction(this.__wbg_ptr);return z.__wrap(e)}max_force_magnitude(){return n.rawcontactforceevent_max_force_magnitude(this.__wbg_ptr)}},pe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactmanifold_free(e>>>0,1))),me=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,pe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,pe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactmanifold_free(e,0)}normal(){let e=n.rawcontactmanifold_normal(this.__wbg_ptr);return z.__wrap(e)}local_n1(){let e=n.rawcontactmanifold_local_n1(this.__wbg_ptr);return z.__wrap(e)}local_n2(){let e=n.rawcontactmanifold_local_n2(this.__wbg_ptr);return z.__wrap(e)}subshape1(){return n.rawcontactmanifold_subshape1(this.__wbg_ptr)>>>0}subshape2(){return n.rawcontactmanifold_subshape2(this.__wbg_ptr)>>>0}num_contacts(){return n.rawcontactmanifold_num_contacts(this.__wbg_ptr)>>>0}contact_local_p1(e){let t=n.rawcontactmanifold_contact_local_p1(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}contact_local_p2(e){let t=n.rawcontactmanifold_contact_local_p2(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}contact_dist(e){return n.rawcontactmanifold_contact_dist(this.__wbg_ptr,e)}contact_fid1(e){return n.rawcontactmanifold_contact_fid1(this.__wbg_ptr,e)>>>0}contact_fid2(e){return n.rawcontactmanifold_contact_fid2(this.__wbg_ptr,e)>>>0}contact_impulse(e){return n.rawcontactmanifold_contact_impulse(this.__wbg_ptr,e)}contact_tangent_impulse_x(e){return n.rawcontactmanifold_contact_tangent_impulse_x(this.__wbg_ptr,e)}contact_tangent_impulse_y(e){return n.rawcontactmanifold_contact_tangent_impulse_y(this.__wbg_ptr,e)}num_solver_contacts(){return n.rawcontactmanifold_num_solver_contacts(this.__wbg_ptr)>>>0}solver_contact_point(e){let t=n.rawcontactmanifold_solver_contact_point(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}solver_contact_dist(e){return n.rawcontactmanifold_solver_contact_dist(this.__wbg_ptr,e)}solver_contact_friction(e){return n.rawcontactmanifold_solver_contact_friction(this.__wbg_ptr,e)}solver_contact_restitution(e){return n.rawcontactmanifold_solver_contact_restitution(this.__wbg_ptr,e)}solver_contact_tangent_velocity(e){let t=n.rawcontactmanifold_solver_contact_tangent_velocity(this.__wbg_ptr,e);return z.__wrap(t)}},he=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawcontactpair_free(e>>>0,1))),ge=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,he.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,he.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawcontactpair_free(e,0)}collider1(){return n.rawcontactpair_collider1(this.__wbg_ptr)}collider2(){return n.rawcontactpair_collider2(this.__wbg_ptr)}numContactManifolds(){return n.rawcontactpair_numContactManifolds(this.__wbg_ptr)>>>0}contactManifold(e){let t=n.rawcontactpair_contactManifold(this.__wbg_ptr,e);return t===0?void 0:me.__wrap(t)}},_e=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdebugrenderpipeline_free(e>>>0,1))),ve=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,_e.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdebugrenderpipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawdebugrenderpipeline_new()>>>0,_e.register(this,this.__wbg_ptr,this),this}vertices(){return m(n.rawdebugrenderpipeline_vertices(this.__wbg_ptr))}colors(){return m(n.rawdebugrenderpipeline_colors(this.__wbg_ptr))}render(e,t,i,a,o,s,c){try{h(e,I),h(t,k),h(i,j),h(a,P),h(o,F),n.rawdebugrenderpipeline_render(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,_(c))}finally{r[g++]=void 0}}},ye=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdeserializedworld_free(e>>>0,1))),be=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ye.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ye.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdeserializedworld_free(e,0)}takeGravity(){let e=n.rawdeserializedworld_takeGravity(this.__wbg_ptr);return e===0?void 0:z.__wrap(e)}takeIntegrationParameters(){let e=n.rawdeserializedworld_takeIntegrationParameters(this.__wbg_ptr);return e===0?void 0:M.__wrap(e)}takeIslandManager(){let e=n.rawdeserializedworld_takeIslandManager(this.__wbg_ptr);return e===0?void 0:N.__wrap(e)}takeBroadPhase(){let e=n.rawdeserializedworld_takeBroadPhase(this.__wbg_ptr);return e===0?void 0:O.__wrap(e)}takeNarrowPhase(){let e=n.rawdeserializedworld_takeNarrowPhase(this.__wbg_ptr);return e===0?void 0:F.__wrap(e)}takeBodies(){let e=n.rawdeserializedworld_takeBodies(this.__wbg_ptr);return e===0?void 0:I.__wrap(e)}takeColliders(){let e=n.rawdeserializedworld_takeColliders(this.__wbg_ptr);return e===0?void 0:k.__wrap(e)}takeImpulseJoints(){let e=n.rawdeserializedworld_takeImpulseJoints(this.__wbg_ptr);return e===0?void 0:j.__wrap(e)}takeMultibodyJoints(){let e=n.rawdeserializedworld_takeMultibodyJoints(this.__wbg_ptr);return e===0?void 0:P.__wrap(e)}},xe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawdynamicraycastvehiclecontroller_free(e>>>0,1))),Se=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,xe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawdynamicraycastvehiclecontroller_free(e,0)}constructor(e){return this.__wbg_ptr=n.rawdynamicraycastvehiclecontroller_new(e)>>>0,xe.register(this,this.__wbg_ptr,this),this}current_vehicle_speed(){return n.rawdynamicraycastvehiclecontroller_current_vehicle_speed(this.__wbg_ptr)}chassis(){return n.rawdynamicraycastvehiclecontroller_chassis(this.__wbg_ptr)}index_up_axis(){return n.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr)>>>0}set_index_up_axis(e){n.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr,e)}index_forward_axis(){return n.rawdynamicraycastvehiclecontroller_index_forward_axis(this.__wbg_ptr)>>>0}set_index_forward_axis(e){n.rawdynamicraycastvehiclecontroller_set_index_forward_axis(this.__wbg_ptr,e)}add_wheel(e,t,r,i,a){h(e,z),h(t,z),h(r,z),n.rawdynamicraycastvehiclecontroller_add_wheel(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i,a)}num_wheels(){return n.rawdynamicraycastvehiclecontroller_num_wheels(this.__wbg_ptr)>>>0}update_vehicle(e,t,i,a,o,s,c,l){try{h(t,O),h(i,F),h(a,I),h(o,k),n.rawdynamicraycastvehiclecontroller_update_vehicle(this.__wbg_ptr,e,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,d(c)?4294967297:c>>>0,_(l))}finally{r[g++]=void 0}}wheel_chassis_connection_point_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_chassis_connection_point_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_chassis_connection_point_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_chassis_connection_point_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_suspension_rest_length(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_rest_length(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_rest_length(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_rest_length(this.__wbg_ptr,e,t)}wheel_max_suspension_travel(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_max_suspension_travel(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_max_suspension_travel(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_travel(this.__wbg_ptr,e,t)}wheel_radius(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_radius(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_radius(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_radius(this.__wbg_ptr,e,t)}wheel_suspension_stiffness(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_stiffness(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_stiffness(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_stiffness(this.__wbg_ptr,e,t)}wheel_suspension_compression(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_compression(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_compression(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_compression(this.__wbg_ptr,e,t)}wheel_suspension_relaxation(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_relaxation(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_suspension_relaxation(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_suspension_relaxation(this.__wbg_ptr,e,t)}wheel_max_suspension_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_max_suspension_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_max_suspension_force(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_force(this.__wbg_ptr,e,t)}wheel_brake(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_brake(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_brake(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_brake(this.__wbg_ptr,e,t)}wheel_steering(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_steering(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_steering(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_steering(this.__wbg_ptr,e,t)}wheel_engine_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_engine_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_engine_force(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_engine_force(this.__wbg_ptr,e,t)}wheel_direction_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_direction_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_direction_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_direction_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_axle_cs(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_axle_cs(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}set_wheel_axle_cs(e,t){h(t,z),n.rawdynamicraycastvehiclecontroller_set_wheel_axle_cs(this.__wbg_ptr,e,t.__wbg_ptr)}wheel_friction_slip(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_friction_slip(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_friction_slip(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_friction_slip(this.__wbg_ptr,e,t)}wheel_side_friction_stiffness(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_side_friction_stiffness(this.__wbg_ptr,e);return t===4294967297?void 0:t}set_wheel_side_friction_stiffness(e,t){n.rawdynamicraycastvehiclecontroller_set_wheel_side_friction_stiffness(this.__wbg_ptr,e,t)}wheel_rotation(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_rotation(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_forward_impulse(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_forward_impulse(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_side_impulse(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_side_impulse(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_suspension_force(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_force(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_contact_normal_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_contact_normal_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_contact_point_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_contact_point_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_suspension_length(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_suspension_length(this.__wbg_ptr,e);return t===4294967297?void 0:t}wheel_hard_point_ws(e){let t=n.rawdynamicraycastvehiclecontroller_wheel_hard_point_ws(this.__wbg_ptr,e);return t===0?void 0:z.__wrap(t)}wheel_is_in_contact(e){return n.rawdynamicraycastvehiclecontroller_wheel_is_in_contact(this.__wbg_ptr,e)!==0}wheel_ground_object(e){try{let i=n.__wbindgen_add_to_stack_pointer(-16);n.rawdynamicraycastvehiclecontroller_wheel_ground_object(i,this.__wbg_ptr,e);var t=p().getInt32(i+0,!0),r=p().getFloat64(i+8,!0);return t===0?void 0:r}finally{n.__wbindgen_add_to_stack_pointer(16)}}},Ce=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_raweventqueue_free(e>>>0,1))),we=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ce.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_raweventqueue_free(e,0)}constructor(e){return this.__wbg_ptr=n.raweventqueue_new(e)>>>0,Ce.register(this,this.__wbg_ptr,this),this}drainCollisionEvents(e){try{n.raweventqueue_drainCollisionEvents(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}drainContactForceEvents(e){try{n.raweventqueue_drainContactForceEvents(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}clear(){n.raweventqueue_clear(this.__wbg_ptr)}},Te=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawgenericjoint_free(e>>>0,1))),A=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Te.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Te.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawgenericjoint_free(e,0)}static generic(t,r,i,a){h(t,z),h(r,z),h(i,z);let o=n.rawgenericjoint_generic(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return o===0?void 0:e.__wrap(o)}static spring(t,r,i,a,o){h(a,z),h(o,z);let s=n.rawgenericjoint_spring(t,r,i,a.__wbg_ptr,o.__wbg_ptr);return e.__wrap(s)}static rope(t,r,i){h(r,z),h(i,z);let a=n.rawgenericjoint_rope(t,r.__wbg_ptr,i.__wbg_ptr);return e.__wrap(a)}static spherical(t,r){h(t,z),h(r,z);let i=n.rawgenericjoint_spherical(t.__wbg_ptr,r.__wbg_ptr);return e.__wrap(i)}static prismatic(t,r,i,a,o,s){h(t,z),h(r,z),h(i,z);let c=n.rawgenericjoint_prismatic(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o,s);return c===0?void 0:e.__wrap(c)}static fixed(t,r,i,a){h(t,z),h(r,L),h(i,z),h(a,L);let o=n.rawgenericjoint_fixed(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr);return e.__wrap(o)}static revolute(t,r,i){h(t,z),h(r,z),h(i,z);let a=n.rawgenericjoint_revolute(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr);return a===0?void 0:e.__wrap(a)}},Ee=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawimpulsejointset_free(e>>>0,1))),j=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ee.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ee.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawimpulsejointset_free(e,0)}jointType(e){return n.rawimpulsejointset_jointType(this.__wbg_ptr,e)}jointBodyHandle1(e){return n.rawimpulsejointset_jointBodyHandle1(this.__wbg_ptr,e)}jointBodyHandle2(e){return n.rawimpulsejointset_jointBodyHandle2(this.__wbg_ptr,e)}jointFrameX1(e){let t=n.rawimpulsejointset_jointFrameX1(this.__wbg_ptr,e);return L.__wrap(t)}jointFrameX2(e){let t=n.rawimpulsejointset_jointFrameX2(this.__wbg_ptr,e);return L.__wrap(t)}jointAnchor1(e){let t=n.rawimpulsejointset_jointAnchor1(this.__wbg_ptr,e);return z.__wrap(t)}jointAnchor2(e){let t=n.rawimpulsejointset_jointAnchor2(this.__wbg_ptr,e);return z.__wrap(t)}jointSetAnchor1(e,t){h(t,z),n.rawimpulsejointset_jointSetAnchor1(this.__wbg_ptr,e,t.__wbg_ptr)}jointSetAnchor2(e,t){h(t,z),n.rawimpulsejointset_jointSetAnchor2(this.__wbg_ptr,e,t.__wbg_ptr)}jointContactsEnabled(e){return n.rawimpulsejointset_jointContactsEnabled(this.__wbg_ptr,e)!==0}jointSetContactsEnabled(e,t){n.rawimpulsejointset_jointSetContactsEnabled(this.__wbg_ptr,e,t)}jointLimitsEnabled(e,t){return n.rawimpulsejointset_jointLimitsEnabled(this.__wbg_ptr,e,t)!==0}jointLimitsMin(e,t){return n.rawimpulsejointset_jointLimitsMin(this.__wbg_ptr,e,t)}jointLimitsMax(e,t){return n.rawimpulsejointset_jointLimitsMax(this.__wbg_ptr,e,t)}jointSetLimits(e,t,r,i){n.rawimpulsejointset_jointSetLimits(this.__wbg_ptr,e,t,r,i)}jointConfigureMotorModel(e,t,r){n.rawimpulsejointset_jointConfigureMotorModel(this.__wbg_ptr,e,t,r)}jointConfigureMotorVelocity(e,t,r,i){n.rawimpulsejointset_jointConfigureMotorVelocity(this.__wbg_ptr,e,t,r,i)}jointConfigureMotorPosition(e,t,r,i,a){n.rawimpulsejointset_jointConfigureMotorPosition(this.__wbg_ptr,e,t,r,i,a)}jointConfigureMotor(e,t,r,i,a,o){n.rawimpulsejointset_jointConfigureMotor(this.__wbg_ptr,e,t,r,i,a,o)}constructor(){return this.__wbg_ptr=n.rawimpulsejointset_new()>>>0,Ee.register(this,this.__wbg_ptr,this),this}createJoint(e,t,r,i){return h(e,A),n.rawimpulsejointset_createJoint(this.__wbg_ptr,e.__wbg_ptr,t,r,i)}remove(e,t){n.rawimpulsejointset_remove(this.__wbg_ptr,e,t)}len(){return n.rawimpulsejointset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawimpulsejointset_contains(this.__wbg_ptr,e)!==0}forEachJointHandle(e){try{n.rawimpulsejointset_forEachJointHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}forEachJointAttachedToRigidBody(e,t){try{n.rawimpulsejointset_forEachJointAttachedToRigidBody(this.__wbg_ptr,e,_(t))}finally{r[g++]=void 0}}},De=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawintegrationparameters_free(e>>>0,1))),M=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,De.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,De.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawintegrationparameters_free(e,0)}constructor(){return this.__wbg_ptr=n.rawintegrationparameters_new()>>>0,De.register(this,this.__wbg_ptr,this),this}get dt(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}get contact_erp(){return n.rawintegrationparameters_contact_erp(this.__wbg_ptr)}get normalizedAllowedLinearError(){return n.rawintegrationparameters_normalizedAllowedLinearError(this.__wbg_ptr)}get normalizedPredictionDistance(){return n.rawintegrationparameters_normalizedPredictionDistance(this.__wbg_ptr)}get numSolverIterations(){return n.rawintegrationparameters_numSolverIterations(this.__wbg_ptr)>>>0}get numInternalPgsIterations(){return n.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr)>>>0}get minIslandSize(){return n.rawintegrationparameters_minIslandSize(this.__wbg_ptr)>>>0}get maxCcdSubsteps(){return n.rawintegrationparameters_maxCcdSubsteps(this.__wbg_ptr)>>>0}get lengthUnit(){return n.rawcontactforceevent_total_force_magnitude(this.__wbg_ptr)}set dt(e){n.rawintegrationparameters_set_dt(this.__wbg_ptr,e)}set contact_natural_frequency(e){n.rawintegrationparameters_set_contact_natural_frequency(this.__wbg_ptr,e)}set normalizedAllowedLinearError(e){n.rawintegrationparameters_set_normalizedAllowedLinearError(this.__wbg_ptr,e)}set normalizedPredictionDistance(e){n.rawintegrationparameters_set_normalizedPredictionDistance(this.__wbg_ptr,e)}set numSolverIterations(e){n.rawintegrationparameters_set_numSolverIterations(this.__wbg_ptr,e)}set numInternalPgsIterations(e){n.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr,e)}set minIslandSize(e){n.rawintegrationparameters_set_minIslandSize(this.__wbg_ptr,e)}set maxCcdSubsteps(e){n.rawintegrationparameters_set_maxCcdSubsteps(this.__wbg_ptr,e)}set lengthUnit(e){n.rawintegrationparameters_set_lengthUnit(this.__wbg_ptr,e)}},Oe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawislandmanager_free(e>>>0,1))),N=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Oe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Oe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawislandmanager_free(e,0)}constructor(){return this.__wbg_ptr=n.rawislandmanager_new()>>>0,Oe.register(this,this.__wbg_ptr,this),this}forEachActiveRigidBodyHandle(e){try{n.rawislandmanager_forEachActiveRigidBodyHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}},ke=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawkinematiccharactercontroller_free(e>>>0,1))),Ae=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ke.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawkinematiccharactercontroller_free(e,0)}constructor(e){return this.__wbg_ptr=n.rawkinematiccharactercontroller_new(e)>>>0,ke.register(this,this.__wbg_ptr,this),this}up(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}setUp(e){h(e,z),n.rawkinematiccharactercontroller_setUp(this.__wbg_ptr,e.__wbg_ptr)}normalNudgeFactor(){return n.rawkinematiccharactercontroller_normalNudgeFactor(this.__wbg_ptr)}setNormalNudgeFactor(e){n.rawkinematiccharactercontroller_setNormalNudgeFactor(this.__wbg_ptr,e)}offset(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}setOffset(e){n.rawkinematiccharactercontroller_setOffset(this.__wbg_ptr,e)}slideEnabled(){return n.rawkinematiccharactercontroller_slideEnabled(this.__wbg_ptr)!==0}setSlideEnabled(e){n.rawkinematiccharactercontroller_setSlideEnabled(this.__wbg_ptr,e)}autostepMaxHeight(){let e=n.rawkinematiccharactercontroller_autostepMaxHeight(this.__wbg_ptr);return e===4294967297?void 0:e}autostepMinWidth(){let e=n.rawkinematiccharactercontroller_autostepMinWidth(this.__wbg_ptr);return e===4294967297?void 0:e}autostepIncludesDynamicBodies(){let e=n.rawkinematiccharactercontroller_autostepIncludesDynamicBodies(this.__wbg_ptr);return e===16777215?void 0:e!==0}autostepEnabled(){return n.rawkinematiccharactercontroller_autostepEnabled(this.__wbg_ptr)!==0}enableAutostep(e,t,r){n.rawkinematiccharactercontroller_enableAutostep(this.__wbg_ptr,e,t,r)}disableAutostep(){n.rawkinematiccharactercontroller_disableAutostep(this.__wbg_ptr)}maxSlopeClimbAngle(){return n.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr)}setMaxSlopeClimbAngle(e){n.rawkinematiccharactercontroller_setMaxSlopeClimbAngle(this.__wbg_ptr,e)}minSlopeSlideAngle(){return n.rawkinematiccharactercontroller_minSlopeSlideAngle(this.__wbg_ptr)}setMinSlopeSlideAngle(e){n.rawkinematiccharactercontroller_setMinSlopeSlideAngle(this.__wbg_ptr,e)}snapToGroundDistance(){let e=n.rawkinematiccharactercontroller_snapToGroundDistance(this.__wbg_ptr);return e===4294967297?void 0:e}enableSnapToGround(e){n.rawkinematiccharactercontroller_enableSnapToGround(this.__wbg_ptr,e)}disableSnapToGround(){n.rawkinematiccharactercontroller_disableSnapToGround(this.__wbg_ptr)}snapToGroundEnabled(){return n.rawkinematiccharactercontroller_snapToGroundEnabled(this.__wbg_ptr)!==0}computeColliderMovement(e,t,i,a,o,s,c,l,u,f,p,m){try{h(t,O),h(i,F),h(a,I),h(o,k),h(c,z),n.rawkinematiccharactercontroller_computeColliderMovement(this.__wbg_ptr,e,t.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s,c.__wbg_ptr,l,d(u)?4294967297:Math.fround(u),f,d(p)?4294967297:p>>>0,_(m))}finally{r[g++]=void 0}}computedMovement(){let e=n.rawkinematiccharactercontroller_computedMovement(this.__wbg_ptr);return z.__wrap(e)}computedGrounded(){return n.rawkinematiccharactercontroller_computedGrounded(this.__wbg_ptr)!==0}numComputedCollisions(){return n.rawkinematiccharactercontroller_numComputedCollisions(this.__wbg_ptr)>>>0}computedCollision(e,t){return h(t,se),n.rawkinematiccharactercontroller_computedCollision(this.__wbg_ptr,e,t.__wbg_ptr)!==0}},je=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawmultibodyjointset_free(e>>>0,1))),P=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,je.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,je.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawmultibodyjointset_free(e,0)}jointType(e){return n.rawmultibodyjointset_jointType(this.__wbg_ptr,e)}jointFrameX1(e){let t=n.rawmultibodyjointset_jointFrameX1(this.__wbg_ptr,e);return L.__wrap(t)}jointFrameX2(e){let t=n.rawmultibodyjointset_jointFrameX2(this.__wbg_ptr,e);return L.__wrap(t)}jointAnchor1(e){let t=n.rawmultibodyjointset_jointAnchor1(this.__wbg_ptr,e);return z.__wrap(t)}jointAnchor2(e){let t=n.rawmultibodyjointset_jointAnchor2(this.__wbg_ptr,e);return z.__wrap(t)}jointContactsEnabled(e){return n.rawmultibodyjointset_jointContactsEnabled(this.__wbg_ptr,e)!==0}jointSetContactsEnabled(e,t){n.rawmultibodyjointset_jointSetContactsEnabled(this.__wbg_ptr,e,t)}jointLimitsEnabled(e,t){return n.rawmultibodyjointset_jointLimitsEnabled(this.__wbg_ptr,e,t)!==0}jointLimitsMin(e,t){return n.rawmultibodyjointset_jointLimitsMin(this.__wbg_ptr,e,t)}jointLimitsMax(e,t){return n.rawmultibodyjointset_jointLimitsMax(this.__wbg_ptr,e,t)}constructor(){return this.__wbg_ptr=n.rawmultibodyjointset_new()>>>0,je.register(this,this.__wbg_ptr,this),this}createJoint(e,t,r,i){return h(e,A),n.rawmultibodyjointset_createJoint(this.__wbg_ptr,e.__wbg_ptr,t,r,i)}remove(e,t){n.rawmultibodyjointset_remove(this.__wbg_ptr,e,t)}contains(e){return n.rawmultibodyjointset_contains(this.__wbg_ptr,e)!==0}forEachJointHandle(e){try{n.rawmultibodyjointset_forEachJointHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}forEachJointAttachedToRigidBody(e,t){try{n.rawmultibodyjointset_forEachJointAttachedToRigidBody(this.__wbg_ptr,e,_(t))}finally{r[g++]=void 0}}},Me=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawnarrowphase_free(e>>>0,1))),F=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Me.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Me.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawnarrowphase_free(e,0)}constructor(){return this.__wbg_ptr=n.rawnarrowphase_new()>>>0,Me.register(this,this.__wbg_ptr,this),this}contact_pairs_with(e,t){n.rawnarrowphase_contact_pairs_with(this.__wbg_ptr,e,o(t))}contact_pair(e,t){let r=n.rawnarrowphase_contact_pair(this.__wbg_ptr,e,t);return r===0?void 0:ge.__wrap(r)}intersection_pairs_with(e,t){n.rawnarrowphase_intersection_pairs_with(this.__wbg_ptr,e,o(t))}intersection_pair(e,t){return n.rawnarrowphase_intersection_pair(this.__wbg_ptr,e,t)!==0}},Ne=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawphysicspipeline_free(e>>>0,1))),Pe=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ne.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawphysicspipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawphysicspipeline_new()>>>0,Ne.register(this,this.__wbg_ptr,this),this}set_profiler_enabled(e){n.rawphysicspipeline_set_profiler_enabled(this.__wbg_ptr,e)}is_profiler_enabled(){return n.rawphysicspipeline_is_profiler_enabled(this.__wbg_ptr)!==0}timing_step(){return n.rawphysicspipeline_timing_step(this.__wbg_ptr)}timing_collision_detection(){return n.rawphysicspipeline_timing_collision_detection(this.__wbg_ptr)}timing_broad_phase(){return n.rawphysicspipeline_timing_broad_phase(this.__wbg_ptr)}timing_narrow_phase(){return n.rawphysicspipeline_timing_narrow_phase(this.__wbg_ptr)}timing_solver(){return n.rawphysicspipeline_timing_solver(this.__wbg_ptr)}timing_velocity_assembly(){return n.rawphysicspipeline_timing_velocity_assembly(this.__wbg_ptr)}timing_velocity_resolution(){return n.rawphysicspipeline_timing_velocity_resolution(this.__wbg_ptr)}timing_velocity_update(){return n.rawphysicspipeline_timing_velocity_update(this.__wbg_ptr)}timing_velocity_writeback(){return n.rawphysicspipeline_timing_velocity_writeback(this.__wbg_ptr)}timing_ccd(){return n.rawphysicspipeline_timing_ccd(this.__wbg_ptr)}timing_ccd_toi_computation(){return n.rawphysicspipeline_timing_ccd_toi_computation(this.__wbg_ptr)}timing_ccd_broad_phase(){return n.rawphysicspipeline_timing_ccd_broad_phase(this.__wbg_ptr)}timing_ccd_narrow_phase(){return n.rawphysicspipeline_timing_ccd_narrow_phase(this.__wbg_ptr)}timing_ccd_solver(){return n.rawphysicspipeline_timing_ccd_solver(this.__wbg_ptr)}timing_island_construction(){return n.rawphysicspipeline_timing_island_construction(this.__wbg_ptr)}timing_user_changes(){return n.rawphysicspipeline_timing_user_changes(this.__wbg_ptr)}step(e,t,r,i,a,o,s,c,l,u){h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(o,I),h(s,k),h(c,j),h(l,P),h(u,ae),n.rawphysicspipeline_step(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr)}stepWithEvents(e,t,r,i,a,s,c,l,u,d,f,p,m,g){h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(s,I),h(c,k),h(l,j),h(u,P),h(d,ae),h(f,we),n.rawphysicspipeline_stepWithEvents(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr,d.__wbg_ptr,f.__wbg_ptr,o(p),o(m),o(g))}},Fe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpidcontroller_free(e>>>0,1))),Ie=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Fe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpidcontroller_free(e,0)}constructor(e,t,r,i){return this.__wbg_ptr=n.rawpidcontroller_new(e,t,r,i)>>>0,Fe.register(this,this.__wbg_ptr,this),this}set_kp(e,t){n.rawpidcontroller_set_kp(this.__wbg_ptr,e,t)}set_ki(e,t){n.rawpidcontroller_set_ki(this.__wbg_ptr,e,t)}set_kd(e,t){n.rawpidcontroller_set_kd(this.__wbg_ptr,e,t)}set_axes_mask(e){n.rawpidcontroller_set_axes_mask(this.__wbg_ptr,e)}reset_integrals(){n.rawpidcontroller_reset_integrals(this.__wbg_ptr)}apply_linear_correction(e,t,r,i,a){h(t,I),h(i,z),h(a,z),n.rawpidcontroller_apply_linear_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr)}apply_angular_correction(e,t,r,i,a){h(t,I),h(i,L),h(a,z),n.rawpidcontroller_apply_angular_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr)}linear_correction(e,t,r,i,a){h(t,I),h(i,z),h(a,z);let o=n.rawpidcontroller_linear_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr);return z.__wrap(o)}angular_correction(e,t,r,i,a){h(t,I),h(i,L),h(a,z);let o=n.rawpidcontroller_angular_correction(this.__wbg_ptr,e,t.__wbg_ptr,r,i.__wbg_ptr,a.__wbg_ptr);return z.__wrap(o)}},Le=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpointcolliderprojection_free(e>>>0,1))),Re=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Le.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Le.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpointcolliderprojection_free(e,0)}colliderHandle(){return n.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr)}point(){let e=n.rawpointcolliderprojection_point(this.__wbg_ptr);return z.__wrap(e)}isInside(){return n.rawpointcolliderprojection_isInside(this.__wbg_ptr)!==0}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},ze=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawpointprojection_free(e>>>0,1))),Be=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,ze.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,ze.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawpointprojection_free(e,0)}point(){let e=n.rawpointprojection_point(this.__wbg_ptr);return z.__wrap(e)}isInside(){return n.rawpointprojection_isInside(this.__wbg_ptr)!==0}},Ve=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawraycolliderhit_free(e>>>0,1))),He=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ve.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ve.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawraycolliderhit_free(e,0)}colliderHandle(){return n.rawcharactercollision_handle(this.__wbg_ptr)}timeOfImpact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}},Ue=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawraycolliderintersection_free(e>>>0,1))),We=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ue.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ue.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawraycolliderintersection_free(e,0)}colliderHandle(){return n.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr)}normal(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},Ge=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrayintersection_free(e>>>0,1))),Ke=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ge.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ge.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrayintersection_free(e,0)}normal(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}time_of_impact(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}featureType(){return n.rawpointcolliderprojection_featureType(this.__wbg_ptr)}featureId(){let e=n.rawpointcolliderprojection_featureId(this.__wbg_ptr);return e===4294967297?void 0:e}},qe=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrigidbodyset_free(e>>>0,1))),I=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,qe.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,qe.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrigidbodyset_free(e,0)}rbTranslation(e){let t=n.rawrigidbodyset_rbTranslation(this.__wbg_ptr,e);return z.__wrap(t)}rbRotation(e){let t=n.rawrigidbodyset_rbRotation(this.__wbg_ptr,e);return L.__wrap(t)}rbSleep(e){n.rawrigidbodyset_rbSleep(this.__wbg_ptr,e)}rbIsSleeping(e){return n.rawrigidbodyset_rbIsSleeping(this.__wbg_ptr,e)!==0}rbIsMoving(e){return n.rawrigidbodyset_rbIsMoving(this.__wbg_ptr,e)!==0}rbNextTranslation(e){let t=n.rawrigidbodyset_rbNextTranslation(this.__wbg_ptr,e);return z.__wrap(t)}rbNextRotation(e){let t=n.rawrigidbodyset_rbNextRotation(this.__wbg_ptr,e);return L.__wrap(t)}rbSetTranslation(e,t,r,i,a){n.rawrigidbodyset_rbSetTranslation(this.__wbg_ptr,e,t,r,i,a)}rbSetRotation(e,t,r,i,a,o){n.rawrigidbodyset_rbSetRotation(this.__wbg_ptr,e,t,r,i,a,o)}rbSetLinvel(e,t,r){h(t,z),n.rawrigidbodyset_rbSetLinvel(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbSetAngvel(e,t,r){h(t,z),n.rawrigidbodyset_rbSetAngvel(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbSetNextKinematicTranslation(e,t,r,i){n.rawrigidbodyset_rbSetNextKinematicTranslation(this.__wbg_ptr,e,t,r,i)}rbSetNextKinematicRotation(e,t,r,i,a){n.rawrigidbodyset_rbSetNextKinematicRotation(this.__wbg_ptr,e,t,r,i,a)}rbRecomputeMassPropertiesFromColliders(e,t){h(t,k),n.rawrigidbodyset_rbRecomputeMassPropertiesFromColliders(this.__wbg_ptr,e,t.__wbg_ptr)}rbSetAdditionalMass(e,t,r){n.rawrigidbodyset_rbSetAdditionalMass(this.__wbg_ptr,e,t,r)}rbSetAdditionalMassProperties(e,t,r,i,a,o){h(r,z),h(i,z),h(a,L),n.rawrigidbodyset_rbSetAdditionalMassProperties(this.__wbg_ptr,e,t,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o)}rbLinvel(e){let t=n.rawrigidbodyset_rbLinvel(this.__wbg_ptr,e);return z.__wrap(t)}rbAngvel(e){let t=n.rawrigidbodyset_rbAngvel(this.__wbg_ptr,e);return z.__wrap(t)}rbVelocityAtPoint(e,t){h(t,z);let r=n.rawrigidbodyset_rbVelocityAtPoint(this.__wbg_ptr,e,t.__wbg_ptr);return z.__wrap(r)}rbLockTranslations(e,t,r){n.rawrigidbodyset_rbLockTranslations(this.__wbg_ptr,e,t,r)}rbSetEnabledTranslations(e,t,r,i,a){n.rawrigidbodyset_rbSetEnabledTranslations(this.__wbg_ptr,e,t,r,i,a)}rbLockRotations(e,t,r){n.rawrigidbodyset_rbLockRotations(this.__wbg_ptr,e,t,r)}rbSetEnabledRotations(e,t,r,i,a){n.rawrigidbodyset_rbSetEnabledRotations(this.__wbg_ptr,e,t,r,i,a)}rbDominanceGroup(e){return n.rawrigidbodyset_rbDominanceGroup(this.__wbg_ptr,e)}rbSetDominanceGroup(e,t){n.rawrigidbodyset_rbSetDominanceGroup(this.__wbg_ptr,e,t)}rbEnableCcd(e,t){n.rawrigidbodyset_rbEnableCcd(this.__wbg_ptr,e,t)}rbSetSoftCcdPrediction(e,t){n.rawrigidbodyset_rbSetSoftCcdPrediction(this.__wbg_ptr,e,t)}rbMass(e){return n.rawrigidbodyset_rbMass(this.__wbg_ptr,e)}rbInvMass(e){return n.rawrigidbodyset_rbInvMass(this.__wbg_ptr,e)}rbEffectiveInvMass(e){let t=n.rawrigidbodyset_rbEffectiveInvMass(this.__wbg_ptr,e);return z.__wrap(t)}rbLocalCom(e){let t=n.rawrigidbodyset_rbLocalCom(this.__wbg_ptr,e);return z.__wrap(t)}rbWorldCom(e){let t=n.rawrigidbodyset_rbWorldCom(this.__wbg_ptr,e);return z.__wrap(t)}rbInvPrincipalInertia(e){let t=n.rawrigidbodyset_rbInvPrincipalInertia(this.__wbg_ptr,e);return z.__wrap(t)}rbPrincipalInertiaLocalFrame(e){let t=n.rawrigidbodyset_rbPrincipalInertiaLocalFrame(this.__wbg_ptr,e);return L.__wrap(t)}rbPrincipalInertia(e){let t=n.rawrigidbodyset_rbPrincipalInertia(this.__wbg_ptr,e);return z.__wrap(t)}rbEffectiveWorldInvInertia(e){let t=n.rawrigidbodyset_rbEffectiveWorldInvInertia(this.__wbg_ptr,e);return Xe.__wrap(t)}rbEffectiveAngularInertia(e){let t=n.rawrigidbodyset_rbEffectiveAngularInertia(this.__wbg_ptr,e);return Xe.__wrap(t)}rbWakeUp(e){n.rawrigidbodyset_rbWakeUp(this.__wbg_ptr,e)}rbIsCcdEnabled(e){return n.rawrigidbodyset_rbIsCcdEnabled(this.__wbg_ptr,e)!==0}rbSoftCcdPrediction(e){return n.rawrigidbodyset_rbSoftCcdPrediction(this.__wbg_ptr,e)}rbNumColliders(e){return n.rawrigidbodyset_rbNumColliders(this.__wbg_ptr,e)>>>0}rbCollider(e,t){return n.rawrigidbodyset_rbCollider(this.__wbg_ptr,e,t)}rbBodyType(e){return n.rawrigidbodyset_rbBodyType(this.__wbg_ptr,e)}rbSetBodyType(e,t,r){n.rawrigidbodyset_rbSetBodyType(this.__wbg_ptr,e,t,r)}rbIsFixed(e){return n.rawrigidbodyset_rbIsFixed(this.__wbg_ptr,e)!==0}rbIsKinematic(e){return n.rawrigidbodyset_rbIsKinematic(this.__wbg_ptr,e)!==0}rbIsDynamic(e){return n.rawrigidbodyset_rbIsDynamic(this.__wbg_ptr,e)!==0}rbLinearDamping(e){return n.rawrigidbodyset_rbLinearDamping(this.__wbg_ptr,e)}rbAngularDamping(e){return n.rawrigidbodyset_rbAngularDamping(this.__wbg_ptr,e)}rbSetLinearDamping(e,t){n.rawrigidbodyset_rbSetLinearDamping(this.__wbg_ptr,e,t)}rbSetAngularDamping(e,t){n.rawrigidbodyset_rbSetAngularDamping(this.__wbg_ptr,e,t)}rbSetEnabled(e,t){n.rawrigidbodyset_rbSetEnabled(this.__wbg_ptr,e,t)}rbIsEnabled(e){return n.rawrigidbodyset_rbIsEnabled(this.__wbg_ptr,e)!==0}rbGravityScale(e){return n.rawrigidbodyset_rbGravityScale(this.__wbg_ptr,e)}rbSetGravityScale(e,t,r){n.rawrigidbodyset_rbSetGravityScale(this.__wbg_ptr,e,t,r)}rbResetForces(e,t){n.rawrigidbodyset_rbResetForces(this.__wbg_ptr,e,t)}rbResetTorques(e,t){n.rawrigidbodyset_rbResetTorques(this.__wbg_ptr,e,t)}rbAddForce(e,t,r){h(t,z),n.rawrigidbodyset_rbAddForce(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbApplyImpulse(e,t,r){h(t,z),n.rawrigidbodyset_rbApplyImpulse(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbAddTorque(e,t,r){h(t,z),n.rawrigidbodyset_rbAddTorque(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbApplyTorqueImpulse(e,t,r){h(t,z),n.rawrigidbodyset_rbApplyTorqueImpulse(this.__wbg_ptr,e,t.__wbg_ptr,r)}rbAddForceAtPoint(e,t,r,i){h(t,z),h(r,z),n.rawrigidbodyset_rbAddForceAtPoint(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}rbApplyImpulseAtPoint(e,t,r,i){h(t,z),h(r,z),n.rawrigidbodyset_rbApplyImpulseAtPoint(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i)}rbAdditionalSolverIterations(e){return n.rawrigidbodyset_rbAdditionalSolverIterations(this.__wbg_ptr,e)>>>0}rbSetAdditionalSolverIterations(e,t){n.rawrigidbodyset_rbSetAdditionalSolverIterations(this.__wbg_ptr,e,t)}rbUserData(e){return n.rawrigidbodyset_rbUserData(this.__wbg_ptr,e)>>>0}rbSetUserData(e,t){n.rawrigidbodyset_rbSetUserData(this.__wbg_ptr,e,t)}rbUserForce(e){let t=n.rawrigidbodyset_rbUserForce(this.__wbg_ptr,e);return z.__wrap(t)}rbUserTorque(e){let t=n.rawrigidbodyset_rbUserTorque(this.__wbg_ptr,e);return z.__wrap(t)}constructor(){return this.__wbg_ptr=n.rawrigidbodyset_new()>>>0,qe.register(this,this.__wbg_ptr,this),this}createRigidBody(e,t,r,i,a,o,s,c,l,u,d,f,p,m,g,_,v,y,b,ee,te,x,ne,S,C,w){return h(t,z),h(r,L),h(s,z),h(c,z),h(l,z),h(u,z),h(d,L),n.rawrigidbodyset_createRigidBody(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i,a,o,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr,u.__wbg_ptr,d.__wbg_ptr,f,p,m,g,_,v,y,b,ee,te,x,ne,S,C,w)}remove(e,t,r,i,a){h(t,N),h(r,k),h(i,j),h(a,P),n.rawrigidbodyset_remove(this.__wbg_ptr,e,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr)}len(){return n.rawrigidbodyset_len(this.__wbg_ptr)>>>0}contains(e){return n.rawrigidbodyset_contains(this.__wbg_ptr,e)!==0}forEachRigidBodyHandle(e){try{n.rawrigidbodyset_forEachRigidBodyHandle(this.__wbg_ptr,_(e))}finally{r[g++]=void 0}}propagateModifiedBodyPositionsToColliders(e){h(e,k),n.rawrigidbodyset_propagateModifiedBodyPositionsToColliders(this.__wbg_ptr,e.__wbg_ptr)}},Je=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawrotation_free(e>>>0,1))),L=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Je.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Je.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawrotation_free(e,0)}constructor(e,t,r,i){return this.__wbg_ptr=n.rawrotation_new(e,t,r,i)>>>0,Je.register(this,this.__wbg_ptr,this),this}static identity(){let t=n.rawrotation_identity();return e.__wrap(t)}get x(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}get y(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}get z(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}get w(){return n.rawrotation_w(this.__wbg_ptr)}},Ye=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawsdpmatrix3_free(e>>>0,1))),Xe=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,Ye.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ye.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawsdpmatrix3_free(e,0)}elements(){return m(n.rawsdpmatrix3_elements(this.__wbg_ptr))}},Ze=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawserializationpipeline_free(e>>>0,1))),Qe=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ze.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawserializationpipeline_free(e,0)}constructor(){return this.__wbg_ptr=n.rawccdsolver_new()>>>0,Ze.register(this,this.__wbg_ptr,this),this}serializeAll(e,t,r,i,a,o,s,c,l){return h(e,z),h(t,M),h(r,N),h(i,O),h(a,F),h(o,I),h(s,k),h(c,j),h(l,P),m(n.rawserializationpipeline_serializeAll(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l.__wbg_ptr))}deserializeAll(e){let t=n.rawserializationpipeline_deserializeAll(this.__wbg_ptr,o(e));return t===0?void 0:be.__wrap(t)}},$e=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshape_free(e>>>0,1))),R=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,$e.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,$e.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshape_free(e,0)}static cuboid(t,r,i){let a=n.rawshape_cuboid(t,r,i);return e.__wrap(a)}static roundCuboid(t,r,i,a){let o=n.rawshape_roundCuboid(t,r,i,a);return e.__wrap(o)}static ball(t){let r=n.rawshape_ball(t);return e.__wrap(r)}static halfspace(t){h(t,z);let r=n.rawshape_halfspace(t.__wbg_ptr);return e.__wrap(r)}static capsule(t,r){let i=n.rawshape_capsule(t,r);return e.__wrap(i)}static cylinder(t,r){let i=n.rawshape_cylinder(t,r);return e.__wrap(i)}static roundCylinder(t,r,i){let a=n.rawshape_roundCylinder(t,r,i);return e.__wrap(a)}static cone(t,r){let i=n.rawshape_cone(t,r);return e.__wrap(i)}static roundCone(t,r,i){let a=n.rawshape_roundCone(t,r,i);return e.__wrap(a)}static voxels(t,r){h(t,z);let i=C(r,n.__wbindgen_export_2),a=S,o=n.rawshape_voxels(t.__wbg_ptr,i,a);return e.__wrap(o)}static voxelsFromPoints(t,r){h(t,z);let i=w(r,n.__wbindgen_export_2),a=S,o=n.rawshape_voxelsFromPoints(t.__wbg_ptr,i,a);return e.__wrap(o)}static polyline(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=C(r,n.__wbindgen_export_2),s=S,c=n.rawshape_polyline(i,a,o,s);return e.__wrap(c)}static trimesh(t,r,i){let a=w(t,n.__wbindgen_export_2),o=S,s=C(r,n.__wbindgen_export_2),c=S,l=n.rawshape_trimesh(a,o,s,c,i);return l===0?void 0:e.__wrap(l)}static heightfield(t,r,i,a,o){let s=w(i,n.__wbindgen_export_2),c=S;h(a,z);let l=n.rawshape_heightfield(t,r,s,c,a.__wbg_ptr,o);return e.__wrap(l)}static segment(t,r){h(t,z),h(r,z);let i=n.rawshape_segment(t.__wbg_ptr,r.__wbg_ptr);return e.__wrap(i)}static triangle(t,r,i){h(t,z),h(r,z),h(i,z);let a=n.rawshape_triangle(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr);return e.__wrap(a)}static roundTriangle(t,r,i,a){h(t,z),h(r,z),h(i,z);let o=n.rawshape_roundTriangle(t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a);return e.__wrap(o)}static convexHull(t){let r=w(t,n.__wbindgen_export_2),i=S,a=n.rawshape_convexHull(r,i);return a===0?void 0:e.__wrap(a)}static roundConvexHull(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=n.rawshape_roundConvexHull(i,a,r);return o===0?void 0:e.__wrap(o)}static convexMesh(t,r){let i=w(t,n.__wbindgen_export_2),a=S,o=C(r,n.__wbindgen_export_2),s=S,c=n.rawshape_convexMesh(i,a,o,s);return c===0?void 0:e.__wrap(c)}static roundConvexMesh(t,r,i){let a=w(t,n.__wbindgen_export_2),o=S,s=C(r,n.__wbindgen_export_2),c=S,l=n.rawshape_roundConvexMesh(a,o,s,c,i);return l===0?void 0:e.__wrap(l)}castShape(t,r,i,a,o,s,c,l,u,d){h(t,z),h(r,L),h(i,z),h(a,e),h(o,z),h(s,L),h(c,z);let f=n.rawshape_castShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s.__wbg_ptr,c.__wbg_ptr,l,u,d);return f===0?void 0:tt.__wrap(f)}intersectsShape(t,r,i,a,o){return h(t,z),h(r,L),h(i,e),h(a,z),h(o,L),n.rawshape_intersectsShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr)!==0}contactShape(t,r,i,a,o,s){h(t,z),h(r,L),h(i,e),h(a,z),h(o,L);let c=n.rawshape_contactShape(this.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a.__wbg_ptr,o.__wbg_ptr,s);return c===0?void 0:rt.__wrap(c)}containsPoint(e,t,r){return h(e,z),h(t,L),h(r,z),n.rawshape_containsPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr)!==0}projectPoint(e,t,r,i){h(e,z),h(t,L),h(r,z);let a=n.rawshape_projectPoint(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i);return Be.__wrap(a)}intersectsRay(e,t,r,i,a){return h(e,z),h(t,L),h(r,z),h(i,z),n.rawshape_intersectsRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a)!==0}castRay(e,t,r,i,a,o){return h(e,z),h(t,L),h(r,z),h(i,z),n.rawshape_castRay(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o)}castRayAndGetNormal(e,t,r,i,a,o){h(e,z),h(t,L),h(r,z),h(i,z);let s=n.rawshape_castRayAndGetNormal(this.__wbg_ptr,e.__wbg_ptr,t.__wbg_ptr,r.__wbg_ptr,i.__wbg_ptr,a,o);return s===0?void 0:Ke.__wrap(s)}},et=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshapecasthit_free(e>>>0,1))),tt=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,et.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,et.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshapecasthit_free(e,0)}time_of_impact(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}witness1(){let e=n.rawshapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}witness2(){let e=n.rawcontactforceevent_total_force(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawshapecasthit_normal1(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawshapecasthit_normal2(this.__wbg_ptr);return z.__wrap(e)}},nt=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawshapecontact_free(e>>>0,1))),rt=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,nt.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,nt.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawshapecontact_free(e,0)}distance(){return n.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr)}point1(){let e=n.rawpointprojection_point(this.__wbg_ptr);return z.__wrap(e)}point2(){let e=n.rawcollidershapecasthit_witness1(this.__wbg_ptr);return z.__wrap(e)}normal1(){let e=n.rawcollidershapecasthit_witness2(this.__wbg_ptr);return z.__wrap(e)}normal2(){let e=n.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);return z.__wrap(e)}},it=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>n.__wbg_rawvector_free(e>>>0,1))),z=class e{static __wrap(t){t>>>=0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,it.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,it.unregister(this),e}free(){let e=this.__destroy_into_raw();n.__wbg_rawvector_free(e,0)}static zero(){let t=n.rawvector_zero();return e.__wrap(t)}constructor(e,t,r){return this.__wbg_ptr=n.rawvector_new(e,t,r)>>>0,it.register(this,this.__wbg_ptr,this),this}get x(){return n.rawintegrationparameters_dt(this.__wbg_ptr)}set x(e){n.rawintegrationparameters_set_dt(this.__wbg_ptr,e)}get y(){return n.rawkinematiccharactercontroller_offset(this.__wbg_ptr)}set y(e){n.rawvector_set_y(this.__wbg_ptr,e)}get z(){return n.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr)}set z(e){n.rawvector_set_z(this.__wbg_ptr,e)}xyz(){let t=n.rawvector_xyz(this.__wbg_ptr);return e.__wrap(t)}yxz(){let t=n.rawvector_yxz(this.__wbg_ptr);return e.__wrap(t)}zxy(){let t=n.rawvector_zxy(this.__wbg_ptr);return e.__wrap(t)}xzy(){let t=n.rawvector_xzy(this.__wbg_ptr);return e.__wrap(t)}yzx(){let t=n.rawvector_yzx(this.__wbg_ptr);return e.__wrap(t)}zyx(){let t=n.rawvector_zyx(this.__wbg_ptr);return e.__wrap(t)}};async function at(e){if(n!==void 0)return n;e!==void 0&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn(`using deprecated parameters for the initialization function; pass a single object instead`)),e===void 0&&(e=new URL(`rapier_wasm3d_bg.wasm`,``));let t=function(){let e={wbg:{}};return e.wbg.__wbg_bind_c8359b1cba058168=function(e,t,n,r){return o(i(e).bind(i(t),i(n),i(r)))},e.wbg.__wbg_buffer_609cc3eee51ed158=function(e){return o(i(e).buffer)},e.wbg.__wbg_call_672a4d21634d4a24=function(){return s((function(e,t){return o(i(e).call(i(t)))}),arguments)},e.wbg.__wbg_call_7cccdd69e0791ae2=function(){return s((function(e,t,n){return o(i(e).call(i(t),i(n)))}),arguments)},e.wbg.__wbg_call_833bed5770ea2041=function(){return s((function(e,t,n,r){return o(i(e).call(i(t),i(n),i(r)))}),arguments)},e.wbg.__wbg_call_b8adc8b1d0a0d8eb=function(){return s((function(e,t,n,r,a){return o(i(e).call(i(t),i(n),i(r),i(a)))}),arguments)},e.wbg.__wbg_length_3b4f022188ae8db6=function(e){return i(e).length},e.wbg.__wbg_length_a446193dc22c12f8=function(e){return i(e).length},e.wbg.__wbg_new_a12002a7f91c75be=function(e){return o(new Uint8Array(i(e)))},e.wbg.__wbg_newnoargs_105ed471475aaf50=function(e,t){return o(Function(u(e,t)))},e.wbg.__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a=function(e,t,n){return o(new Uint8Array(i(e),t>>>0,n>>>0))},e.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(e,t,n){return o(new Float32Array(i(e),t>>>0,n>>>0))},e.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(e){return o(new Float32Array(e>>>0))},e.wbg.__wbg_now_2c95c9de01293173=function(e){return i(e).now()},e.wbg.__wbg_performance_7a3ffd0b17f663ad=function(e){return o(i(e).performance)},e.wbg.__wbg_rawcontactforceevent_new=function(e){return o(fe.__wrap(e))},e.wbg.__wbg_rawraycolliderintersection_new=function(e){return o(We.__wrap(e))},e.wbg.__wbg_set_10bad9bee0e9c58b=function(e,t,n){i(e).set(i(t),n>>>0)},e.wbg.__wbg_set_65595bdd868b3009=function(e,t,n){i(e).set(i(t),n>>>0)},e.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07=function(){let e=typeof global>`u`?null:global;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0=function(){let e=typeof globalThis>`u`?null:globalThis;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819=function(){let e=typeof self>`u`?null:self;return d(e)?0:o(e)},e.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40=function(){let e=typeof window>`u`?null:window;return d(e)?0:o(e)},e.wbg.__wbindgen_boolean_get=function(e){let t=i(e);return typeof t==`boolean`?+!!t:2},e.wbg.__wbindgen_is_function=function(e){return typeof i(e)==`function`},e.wbg.__wbindgen_is_undefined=function(e){return i(e)===void 0},e.wbg.__wbindgen_memory=function(){return o(n.memory)},e.wbg.__wbindgen_number_get=function(e,t){let n=i(t),r=typeof n==`number`?n:void 0;p().setFloat64(e+8,d(r)?0:r,!0),p().setInt32(e+0,!d(r),!0)},e.wbg.__wbindgen_number_new=function(e){return o(e)},e.wbg.__wbindgen_object_clone_ref=function(e){return o(i(e))},e.wbg.__wbindgen_object_drop_ref=function(e){m(e)},e.wbg.__wbindgen_throw=function(e,t){throw Error(u(e,t))},e}();(typeof e==`string`||typeof Request==`function`&&e instanceof Request||typeof URL==`function`&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:a}=await async function(e,t){if(typeof Response==`function`&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==`function`)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(e.headers.get(`Content-Type`)==`application/wasm`)throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return function(e,t){return n=e.exports,at.__wbindgen_wasm_module=t,f=null,b=null,v=null,x=null,l=null,n}(r,a)}var ot=class{constructor(e,t,n){this.x=e,this.y=t,this.z=n}},B=class e{static new(e,t,n){return new ot(e,t,n)}static intoRaw(e){return new z(e.x,e.y,e.z)}static zeros(){return e.new(0,0,0)}static fromRaw(t){if(!t)return null;let n=e.new(t.x,t.y,t.z);return t.free(),n}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z}},st=class{constructor(e,t,n,r){this.x=e,this.y=t,this.z=n,this.w=r}},V=class{static identity(){return new st(0,0,0,1)}static fromRaw(e){if(!e)return null;let t=new st(e.x,e.y,e.z,e.w);return e.free(),t}static intoRaw(e){return new L(e.x,e.y,e.z,e.w)}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w}},ct=class{constructor(e){this.elements=e}get m11(){return this.elements[0]}get m12(){return this.elements[1]}get m21(){return this.m12}get m13(){return this.elements[2]}get m31(){return this.m13}get m22(){return this.elements[3]}get m23(){return this.elements[4]}get m32(){return this.m23}get m33(){return this.elements[5]}},lt=class{static fromRaw(e){let t=new ct(e.elements());return e.free(),t}},H,U,ut,dt,W,G,K,ft,pt,mt,ht,gt,_t,vt,yt,q;(function(e){e[e.Dynamic=0]=`Dynamic`,e[e.Fixed=1]=`Fixed`,e[e.KinematicPositionBased=2]=`KinematicPositionBased`,e[e.KinematicVelocityBased=3]=`KinematicVelocityBased`})(H||={});var bt=class{constructor(e,t,n){this.rawSet=e,this.colliderSet=t,this.handle=n}finalizeDeserialization(e){this.colliderSet=e}isValid(){return this.rawSet.contains(this.handle)}lockTranslations(e,t){return this.rawSet.rbLockTranslations(this.handle,e,t)}lockRotations(e,t){return this.rawSet.rbLockRotations(this.handle,e,t)}setEnabledTranslations(e,t,n,r){return this.rawSet.rbSetEnabledTranslations(this.handle,e,t,n,r)}restrictTranslations(e,t,n,r){this.setEnabledTranslations(e,t,n,r)}setEnabledRotations(e,t,n,r){return this.rawSet.rbSetEnabledRotations(this.handle,e,t,n,r)}restrictRotations(e,t,n,r){this.setEnabledRotations(e,t,n,r)}dominanceGroup(){return this.rawSet.rbDominanceGroup(this.handle)}setDominanceGroup(e){this.rawSet.rbSetDominanceGroup(this.handle,e)}additionalSolverIterations(){return this.rawSet.rbAdditionalSolverIterations(this.handle)}setAdditionalSolverIterations(e){this.rawSet.rbSetAdditionalSolverIterations(this.handle,e)}enableCcd(e){this.rawSet.rbEnableCcd(this.handle,e)}setSoftCcdPrediction(e){this.rawSet.rbSetSoftCcdPrediction(this.handle,e)}softCcdPrediction(){return this.rawSet.rbSoftCcdPrediction(this.handle)}translation(){let e=this.rawSet.rbTranslation(this.handle);return B.fromRaw(e)}rotation(){let e=this.rawSet.rbRotation(this.handle);return V.fromRaw(e)}nextTranslation(){let e=this.rawSet.rbNextTranslation(this.handle);return B.fromRaw(e)}nextRotation(){let e=this.rawSet.rbNextRotation(this.handle);return V.fromRaw(e)}setTranslation(e,t){this.rawSet.rbSetTranslation(this.handle,e.x,e.y,e.z,t)}setLinvel(e,t){let n=B.intoRaw(e);this.rawSet.rbSetLinvel(this.handle,n,t),n.free()}gravityScale(){return this.rawSet.rbGravityScale(this.handle)}setGravityScale(e,t){this.rawSet.rbSetGravityScale(this.handle,e,t)}setRotation(e,t){this.rawSet.rbSetRotation(this.handle,e.x,e.y,e.z,e.w,t)}setAngvel(e,t){let n=B.intoRaw(e);this.rawSet.rbSetAngvel(this.handle,n,t),n.free()}setNextKinematicTranslation(e){this.rawSet.rbSetNextKinematicTranslation(this.handle,e.x,e.y,e.z)}setNextKinematicRotation(e){this.rawSet.rbSetNextKinematicRotation(this.handle,e.x,e.y,e.z,e.w)}linvel(){return B.fromRaw(this.rawSet.rbLinvel(this.handle))}velocityAtPoint(e){let t=B.intoRaw(e),n=B.fromRaw(this.rawSet.rbVelocityAtPoint(this.handle,t));return t.free(),n}angvel(){return B.fromRaw(this.rawSet.rbAngvel(this.handle))}mass(){return this.rawSet.rbMass(this.handle)}effectiveInvMass(){return B.fromRaw(this.rawSet.rbEffectiveInvMass(this.handle))}invMass(){return this.rawSet.rbInvMass(this.handle)}localCom(){return B.fromRaw(this.rawSet.rbLocalCom(this.handle))}worldCom(){return B.fromRaw(this.rawSet.rbWorldCom(this.handle))}invPrincipalInertia(){return B.fromRaw(this.rawSet.rbInvPrincipalInertia(this.handle))}principalInertia(){return B.fromRaw(this.rawSet.rbPrincipalInertia(this.handle))}principalInertiaLocalFrame(){return V.fromRaw(this.rawSet.rbPrincipalInertiaLocalFrame(this.handle))}effectiveWorldInvInertia(){return lt.fromRaw(this.rawSet.rbEffectiveWorldInvInertia(this.handle))}effectiveAngularInertia(){return lt.fromRaw(this.rawSet.rbEffectiveAngularInertia(this.handle))}sleep(){this.rawSet.rbSleep(this.handle)}wakeUp(){this.rawSet.rbWakeUp(this.handle)}isCcdEnabled(){return this.rawSet.rbIsCcdEnabled(this.handle)}numColliders(){return this.rawSet.rbNumColliders(this.handle)}collider(e){return this.colliderSet.get(this.rawSet.rbCollider(this.handle,e))}setEnabled(e){this.rawSet.rbSetEnabled(this.handle,e)}isEnabled(){return this.rawSet.rbIsEnabled(this.handle)}bodyType(){return this.rawSet.rbBodyType(this.handle)}setBodyType(e,t){return this.rawSet.rbSetBodyType(this.handle,e,t)}isSleeping(){return this.rawSet.rbIsSleeping(this.handle)}isMoving(){return this.rawSet.rbIsMoving(this.handle)}isFixed(){return this.rawSet.rbIsFixed(this.handle)}isKinematic(){return this.rawSet.rbIsKinematic(this.handle)}isDynamic(){return this.rawSet.rbIsDynamic(this.handle)}linearDamping(){return this.rawSet.rbLinearDamping(this.handle)}angularDamping(){return this.rawSet.rbAngularDamping(this.handle)}setLinearDamping(e){this.rawSet.rbSetLinearDamping(this.handle,e)}recomputeMassPropertiesFromColliders(){this.rawSet.rbRecomputeMassPropertiesFromColliders(this.handle,this.colliderSet.raw)}setAdditionalMass(e,t){this.rawSet.rbSetAdditionalMass(this.handle,e,t)}setAdditionalMassProperties(e,t,n,r,i){let a=B.intoRaw(t),o=B.intoRaw(n),s=V.intoRaw(r);this.rawSet.rbSetAdditionalMassProperties(this.handle,e,a,o,s,i),a.free(),o.free(),s.free()}setAngularDamping(e){this.rawSet.rbSetAngularDamping(this.handle,e)}resetForces(e){this.rawSet.rbResetForces(this.handle,e)}resetTorques(e){this.rawSet.rbResetTorques(this.handle,e)}addForce(e,t){let n=B.intoRaw(e);this.rawSet.rbAddForce(this.handle,n,t),n.free()}applyImpulse(e,t){let n=B.intoRaw(e);this.rawSet.rbApplyImpulse(this.handle,n,t),n.free()}addTorque(e,t){let n=B.intoRaw(e);this.rawSet.rbAddTorque(this.handle,n,t),n.free()}applyTorqueImpulse(e,t){let n=B.intoRaw(e);this.rawSet.rbApplyTorqueImpulse(this.handle,n,t),n.free()}addForceAtPoint(e,t,n){let r=B.intoRaw(e),i=B.intoRaw(t);this.rawSet.rbAddForceAtPoint(this.handle,r,i,n),r.free(),i.free()}applyImpulseAtPoint(e,t,n){let r=B.intoRaw(e),i=B.intoRaw(t);this.rawSet.rbApplyImpulseAtPoint(this.handle,r,i,n),r.free(),i.free()}userForce(){return B.fromRaw(this.rawSet.rbUserForce(this.handle))}userTorque(){return B.fromRaw(this.rawSet.rbUserTorque(this.handle))}},xt=class e{constructor(e){this.enabled=!0,this.status=e,this.translation=B.zeros(),this.rotation=V.identity(),this.gravityScale=1,this.linvel=B.zeros(),this.mass=0,this.massOnly=!1,this.centerOfMass=B.zeros(),this.translationsEnabledX=!0,this.translationsEnabledY=!0,this.angvel=B.zeros(),this.principalAngularInertia=B.zeros(),this.angularInertiaLocalFrame=V.identity(),this.translationsEnabledZ=!0,this.rotationsEnabledX=!0,this.rotationsEnabledY=!0,this.rotationsEnabledZ=!0,this.linearDamping=0,this.angularDamping=0,this.canSleep=!0,this.sleeping=!1,this.ccdEnabled=!1,this.softCcdPrediction=0,this.dominanceGroup=0,this.additionalSolverIterations=0}static dynamic(){return new e(H.Dynamic)}static kinematicPositionBased(){return new e(H.KinematicPositionBased)}static kinematicVelocityBased(){return new e(H.KinematicVelocityBased)}static fixed(){return new e(H.Fixed)}static newDynamic(){return new e(H.Dynamic)}static newKinematicPositionBased(){return new e(H.KinematicPositionBased)}static newKinematicVelocityBased(){return new e(H.KinematicVelocityBased)}static newStatic(){return new e(H.Fixed)}setDominanceGroup(e){return this.dominanceGroup=e,this}setAdditionalSolverIterations(e){return this.additionalSolverIterations=e,this}setEnabled(e){return this.enabled=e,this}setTranslation(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The translation components must be numbers.`);return this.translation={x:e,y:t,z:n},this}setRotation(e){return V.copy(this.rotation,e),this}setGravityScale(e){return this.gravityScale=e,this}setAdditionalMass(e){return this.mass=e,this.massOnly=!0,this}setLinvel(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The linvel components must be numbers.`);return this.linvel={x:e,y:t,z:n},this}setAngvel(e){return B.copy(this.angvel,e),this}setAdditionalMassProperties(e,t,n,r){return this.mass=e,B.copy(this.centerOfMass,t),B.copy(this.principalAngularInertia,n),V.copy(this.angularInertiaLocalFrame,r),this.massOnly=!1,this}enabledTranslations(e,t,n){return this.translationsEnabledX=e,this.translationsEnabledY=t,this.translationsEnabledZ=n,this}restrictTranslations(e,t,n){return this.enabledTranslations(e,t,n)}lockTranslations(){return this.enabledTranslations(!1,!1,!1)}enabledRotations(e,t,n){return this.rotationsEnabledX=e,this.rotationsEnabledY=t,this.rotationsEnabledZ=n,this}restrictRotations(e,t,n){return this.enabledRotations(e,t,n)}lockRotations(){return this.restrictRotations(!1,!1,!1)}setLinearDamping(e){return this.linearDamping=e,this}setAngularDamping(e){return this.angularDamping=e,this}setCanSleep(e){return this.canSleep=e,this}setSleeping(e){return this.sleeping=e,this}setCcdEnabled(e){return this.ccdEnabled=e,this}setSoftCcdPrediction(e){return this.softCcdPrediction=e,this}setUserData(e){return this.userData=e,this}},St=class{constructor(){this.fconv=new Float64Array(1),this.uconv=new Uint32Array(this.fconv.buffer),this.data=[],this.size=0}set(e,t){let n=this.index(e);for(;this.data.length<=n;)this.data.push(null);this.data[n]??(this.size+=1),this.data[n]=t}len(){return this.size}delete(e){let t=this.index(e);te!=null))}index(e){return this.fconv[0]=e,this.uconv[0]}},Ct=class{constructor(e){this.raw=e||new I,this.map=new St,e&&e.forEachRigidBodyHandle((t=>{this.map.set(t,new bt(e,null,t))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createRigidBody(e,t){let n=B.intoRaw(t.translation),r=V.intoRaw(t.rotation),i=B.intoRaw(t.linvel),a=B.intoRaw(t.centerOfMass),o=B.intoRaw(t.angvel),s=B.intoRaw(t.principalAngularInertia),c=V.intoRaw(t.angularInertiaLocalFrame),l=this.raw.createRigidBody(t.enabled,n,r,t.gravityScale,t.mass,t.massOnly,a,i,o,s,c,t.translationsEnabledX,t.translationsEnabledY,t.translationsEnabledZ,t.rotationsEnabledX,t.rotationsEnabledY,t.rotationsEnabledZ,t.linearDamping,t.angularDamping,t.status,t.canSleep,t.sleeping,t.softCcdPrediction,t.ccdEnabled,t.dominanceGroup,t.additionalSolverIterations);n.free(),r.free(),i.free(),a.free(),o.free(),s.free(),c.free();let u=new bt(this.raw,e,l);return u.userData=t.userData,this.map.set(l,u),u}remove(e,t,n,r,i){for(let t=0;tr.unmap(e))),i.forEachJointHandleAttachedToRigidBody(e,(e=>i.unmap(e))),this.raw.remove(e,t.raw,n.raw,r.raw,i.raw),this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}forEachActiveRigidBody(e,t){e.forEachActiveRigidBodyHandle((e=>{t(this.get(e))}))}getAll(){return this.map.getAll()}},wt=class{constructor(e){this.raw=e||new M}free(){this.raw&&this.raw.free(),this.raw=void 0}get dt(){return this.raw.dt}get contact_erp(){return this.raw.contact_erp}get lengthUnit(){return this.raw.lengthUnit}get normalizedAllowedLinearError(){return this.raw.normalizedAllowedLinearError}get normalizedPredictionDistance(){return this.raw.normalizedPredictionDistance}get numSolverIterations(){return this.raw.numSolverIterations}get numInternalPgsIterations(){return this.raw.numInternalPgsIterations}get minIslandSize(){return this.raw.minIslandSize}get maxCcdSubsteps(){return this.raw.maxCcdSubsteps}set dt(e){this.raw.dt=e}set contact_natural_frequency(e){this.raw.contact_natural_frequency=e}set lengthUnit(e){this.raw.lengthUnit=e}set normalizedAllowedLinearError(e){this.raw.normalizedAllowedLinearError=e}set normalizedPredictionDistance(e){this.raw.normalizedPredictionDistance=e}set numSolverIterations(e){this.raw.numSolverIterations=e}set numInternalPgsIterations(e){this.raw.numInternalPgsIterations=e}set minIslandSize(e){this.raw.minIslandSize=e}set maxCcdSubsteps(e){this.raw.maxCcdSubsteps=e}};(function(e){e[e.Revolute=0]=`Revolute`,e[e.Fixed=1]=`Fixed`,e[e.Prismatic=2]=`Prismatic`,e[e.Rope=3]=`Rope`,e[e.Spring=4]=`Spring`,e[e.Spherical=5]=`Spherical`,e[e.Generic=6]=`Generic`})(U||={}),function(e){e[e.AccelerationBased=0]=`AccelerationBased`,e[e.ForceBased=1]=`ForceBased`}(ut||={}),function(e){e[e.LinX=1]=`LinX`,e[e.LinY=2]=`LinY`,e[e.LinZ=4]=`LinZ`,e[e.AngX=8]=`AngX`,e[e.AngY=16]=`AngY`,e[e.AngZ=32]=`AngZ`}(dt||={});var J=class e{constructor(e,t,n){this.rawSet=e,this.bodySet=t,this.handle=n}static newTyped(t,n,r){switch(t.jointType(r)){case E.Revolute:return new At(t,n,r);case E.Prismatic:return new kt(t,n,r);case E.Fixed:return new Et(t,n,r);case E.Spring:return new Ot(t,n,r);case E.Rope:return new Dt(t,n,r);case E.Spherical:return new Mt(t,n,r);case E.Generic:return new jt(t,n,r);default:return new e(t,n,r)}}finalizeDeserialization(e){this.bodySet=e}isValid(){return this.rawSet.contains(this.handle)}body1(){return this.bodySet.get(this.rawSet.jointBodyHandle1(this.handle))}body2(){return this.bodySet.get(this.rawSet.jointBodyHandle2(this.handle))}type(){return this.rawSet.jointType(this.handle)}frameX1(){return V.fromRaw(this.rawSet.jointFrameX1(this.handle))}frameX2(){return V.fromRaw(this.rawSet.jointFrameX2(this.handle))}anchor1(){return B.fromRaw(this.rawSet.jointAnchor1(this.handle))}anchor2(){return B.fromRaw(this.rawSet.jointAnchor2(this.handle))}setAnchor1(e){let t=B.intoRaw(e);this.rawSet.jointSetAnchor1(this.handle,t),t.free()}setAnchor2(e){let t=B.intoRaw(e);this.rawSet.jointSetAnchor2(this.handle,t),t.free()}setContactsEnabled(e){this.rawSet.jointSetContactsEnabled(this.handle,e)}contactsEnabled(){return this.rawSet.jointContactsEnabled(this.handle)}},Tt=class extends J{limitsEnabled(){return this.rawSet.jointLimitsEnabled(this.handle,this.rawAxis())}limitsMin(){return this.rawSet.jointLimitsMin(this.handle,this.rawAxis())}limitsMax(){return this.rawSet.jointLimitsMax(this.handle,this.rawAxis())}setLimits(e,t){this.rawSet.jointSetLimits(this.handle,this.rawAxis(),e,t)}configureMotorModel(e){this.rawSet.jointConfigureMotorModel(this.handle,this.rawAxis(),e)}configureMotorVelocity(e,t){this.rawSet.jointConfigureMotorVelocity(this.handle,this.rawAxis(),e,t)}configureMotorPosition(e,t,n){this.rawSet.jointConfigureMotorPosition(this.handle,this.rawAxis(),e,t,n)}configureMotor(e,t,n,r){this.rawSet.jointConfigureMotor(this.handle,this.rawAxis(),e,t,n,r)}},Et=class extends J{},Dt=class extends J{},Ot=class extends J{},kt=class extends Tt{rawAxis(){return T.LinX}},At=class extends Tt{rawAxis(){return T.AngX}},jt=class extends J{},Mt=class extends J{},Nt=class e{constructor(){}static fixed(t,n,r,i){let a=new e;return a.anchor1=t,a.anchor2=r,a.frame1=n,a.frame2=i,a.jointType=U.Fixed,a}static spring(t,n,r,i,a){let o=new e;return o.anchor1=i,o.anchor2=a,o.length=t,o.stiffness=n,o.damping=r,o.jointType=U.Spring,o}static rope(t,n,r){let i=new e;return i.anchor1=n,i.anchor2=r,i.length=t,i.jointType=U.Rope,i}static generic(t,n,r,i){let a=new e;return a.anchor1=t,a.anchor2=n,a.axis=r,a.axesMask=i,a.jointType=U.Generic,a}static spherical(t,n){let r=new e;return r.anchor1=t,r.anchor2=n,r.jointType=U.Spherical,r}static prismatic(t,n,r){let i=new e;return i.anchor1=t,i.anchor2=n,i.axis=r,i.jointType=U.Prismatic,i}static revolute(t,n,r){let i=new e;return i.anchor1=t,i.anchor2=n,i.axis=r,i.jointType=U.Revolute,i}intoRaw(){let e,t,n=B.intoRaw(this.anchor1),r=B.intoRaw(this.anchor2),i=!1,a=0,o=0;switch(this.jointType){case U.Fixed:let s=V.intoRaw(this.frame1),c=V.intoRaw(this.frame2);t=A.fixed(n,s,r,c),s.free(),c.free();break;case U.Spring:t=A.spring(this.length,this.stiffness,this.damping,n,r);break;case U.Rope:t=A.rope(this.length,n,r);break;case U.Prismatic:e=B.intoRaw(this.axis),this.limitsEnabled&&(i=!0,a=this.limits[0],o=this.limits[1]),t=A.prismatic(n,r,e,i,a,o),e.free();break;case U.Generic:e=B.intoRaw(this.axis);let l=this.axesMask;t=A.generic(n,r,e,l);break;case U.Spherical:t=A.spherical(n,r);break;case U.Revolute:e=B.intoRaw(this.axis),t=A.revolute(n,r,e),e.free()}return n.free(),r.free(),t}},Pt=class{constructor(e){this.raw=e||new j,this.map=new St,e&&e.forEachJointHandle((t=>{this.map.set(t,J.newTyped(e,null,t))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createJoint(e,t,n,r,i){let a=t.intoRaw(),o=this.raw.createJoint(a,n,r,i);a.free();let s=J.newTyped(this.raw,e,o);return this.map.set(o,s),s}remove(e,t){this.raw.remove(e,t),this.unmap(e)}forEachJointHandleAttachedToRigidBody(e,t){this.raw.forEachJointAttachedToRigidBody(e,t)}unmap(e){this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}getAll(){return this.map.getAll()}},Y=class e{constructor(e,t){this.rawSet=e,this.handle=t}static newTyped(t,n){switch(t.jointType(n)){case E.Revolute:return new Rt(t,n);case E.Prismatic:return new Lt(t,n);case E.Fixed:return new It(t,n);case E.Spherical:return new zt(t,n);default:return new e(t,n)}}isValid(){return this.rawSet.contains(this.handle)}setContactsEnabled(e){this.rawSet.jointSetContactsEnabled(this.handle,e)}contactsEnabled(){return this.rawSet.jointContactsEnabled(this.handle)}},Ft=class extends Y{},It=class extends Y{},Lt=class extends Ft{rawAxis(){return T.LinX}},Rt=class extends Ft{rawAxis(){return T.AngX}},zt=class extends Y{},Bt=class{constructor(e){this.raw=e||new P,this.map=new St,e&&e.forEachJointHandle((e=>{this.map.set(e,Y.newTyped(this.raw,e))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}createJoint(e,t,n,r){let i=e.intoRaw(),a=this.raw.createJoint(i,t,n,r);i.free();let o=Y.newTyped(this.raw,a);return this.map.set(a,o),o}remove(e,t){this.raw.remove(e,t),this.map.delete(e)}unmap(e){this.map.delete(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}get(e){return this.map.get(e)}forEach(e){this.map.forEach(e)}forEachJointHandleAttachedToRigidBody(e,t){this.raw.forEachJointAttachedToRigidBody(e,t)}getAll(){return this.map.getAll()}};(function(e){e[e.Average=0]=`Average`,e[e.Min=1]=`Min`,e[e.Multiply=2]=`Multiply`,e[e.Max=3]=`Max`})(W||={});var Vt=class{constructor(e){this.raw=e||new ae}free(){this.raw&&this.raw.free(),this.raw=void 0}},Ht=class{constructor(e){this.raw=e||new N}free(){this.raw&&this.raw.free(),this.raw=void 0}forEachActiveRigidBodyHandle(e){this.raw.forEachActiveRigidBodyHandle(e)}};(function(e){e[e.Vertex=0]=`Vertex`,e[e.Edge=1]=`Edge`,e[e.Face=2]=`Face`,e[e.Unknown=3]=`Unknown`})(G||={});var Ut=class{constructor(e,t){this.origin=e,this.dir=t}pointAt(e){return{x:this.origin.x+this.dir.x*e,y:this.origin.y+this.dir.y*e,z:this.origin.z+this.dir.z*e}}},Wt=class e{constructor(e,t,n,r){this.featureType=G.Unknown,this.featureId=void 0,this.timeOfImpact=e,this.normal=t,r!==void 0&&(this.featureId=r),n!==void 0&&(this.featureType=n)}static fromRaw(t){if(!t)return null;let n=new e(t.time_of_impact(),B.fromRaw(t.normal()),t.featureType(),t.featureId());return t.free(),n}},Gt=class e{constructor(e,t,n,r,i){this.featureType=G.Unknown,this.featureId=void 0,this.collider=e,this.timeOfImpact=t,this.normal=n,i!==void 0&&(this.featureId=i),r!==void 0&&(this.featureType=r)}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.time_of_impact(),B.fromRaw(n.normal()),n.featureType(),n.featureId());return n.free(),r}},Kt=class e{constructor(e,t){this.collider=e,this.timeOfImpact=t}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.timeOfImpact());return n.free(),r}},qt=class e{constructor(e,t){this.point=e,this.isInside=t}static fromRaw(t){if(!t)return null;let n=new e(B.fromRaw(t.point()),t.isInside());return t.free(),n}},Jt=class e{constructor(e,t,n,r,i){this.featureType=G.Unknown,this.featureId=void 0,this.collider=e,this.point=t,this.isInside=n,i!==void 0&&(this.featureId=i),r!==void 0&&(this.featureType=r)}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),B.fromRaw(n.point()),n.isInside(),n.featureType(),n.featureId());return n.free(),r}},Yt=class e{constructor(e,t,n,r,i){this.time_of_impact=e,this.witness1=t,this.witness2=n,this.normal1=r,this.normal2=i}static fromRaw(t,n){if(!n)return null;let r=new e(n.time_of_impact(),B.fromRaw(n.witness1()),B.fromRaw(n.witness2()),B.fromRaw(n.normal1()),B.fromRaw(n.normal2()));return n.free(),r}},Xt=class e extends Yt{constructor(e,t,n,r,i,a){super(t,n,r,i,a),this.collider=e}static fromRaw(t,n){if(!n)return null;let r=new e(t.get(n.colliderHandle()),n.time_of_impact(),B.fromRaw(n.witness1()),B.fromRaw(n.witness2()),B.fromRaw(n.normal1()),B.fromRaw(n.normal2()));return n.free(),r}},Zt=class{constructor(e){this.raw=e||new O}free(){this.raw&&this.raw.free(),this.raw=void 0}castRay(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r.origin),f=B.intoRaw(r.dir),p=Kt.fromRaw(n,this.raw.castRay(e.raw,t.raw,n.raw,d,f,i,a,o,s,c,l,u));return d.free(),f.free(),p}castRayAndGetNormal(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r.origin),f=B.intoRaw(r.dir),p=Gt.fromRaw(n,this.raw.castRayAndGetNormal(e.raw,t.raw,n.raw,d,f,i,a,o,s,c,l,u));return d.free(),f.free(),p}intersectionsWithRay(e,t,n,r,i,a,o,s,c,l,u,d){let f=B.intoRaw(r.origin),p=B.intoRaw(r.dir);this.raw.intersectionsWithRay(e.raw,t.raw,n.raw,f,p,i,a,(e=>o(Gt.fromRaw(n,e))),s,c,l,u,d),f.free(),p.free()}intersectionWithShape(e,t,n,r,i,a,o,s,c,l,u){let d=B.intoRaw(r),f=V.intoRaw(i),p=a.intoRaw(),m=this.raw.intersectionWithShape(e.raw,t.raw,n.raw,d,f,p,o,s,c,l,u);return d.free(),f.free(),p.free(),m}projectPoint(e,t,n,r,i,a,o,s,c,l){let u=B.intoRaw(r),d=Jt.fromRaw(n,this.raw.projectPoint(e.raw,t.raw,n.raw,u,i,a,o,s,c,l));return u.free(),d}projectPointAndGetFeature(e,t,n,r,i,a,o,s,c){let l=B.intoRaw(r),u=Jt.fromRaw(n,this.raw.projectPointAndGetFeature(e.raw,t.raw,n.raw,l,i,a,o,s,c));return l.free(),u}intersectionsWithPoint(e,t,n,r,i,a,o,s,c,l){let u=B.intoRaw(r);this.raw.intersectionsWithPoint(e.raw,t.raw,n.raw,u,i,a,o,s,c,l),u.free()}castShape(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h=B.intoRaw(r),g=V.intoRaw(i),_=B.intoRaw(a),v=o.intoRaw(),y=Xt.fromRaw(n,this.raw.castShape(e.raw,t.raw,n.raw,h,g,_,v,s,c,l,u,d,f,p,m));return h.free(),g.free(),_.free(),v.free(),y}intersectionsWithShape(e,t,n,r,i,a,o,s,c,l,u,d){let f=B.intoRaw(r),p=V.intoRaw(i),m=a.intoRaw();this.raw.intersectionsWithShape(e.raw,t.raw,n.raw,f,p,m,o,s,c,l,u,d),f.free(),p.free(),m.free()}collidersWithAabbIntersectingAabb(e,t,n,r,i,a){let o=B.intoRaw(r),s=B.intoRaw(i);this.raw.collidersWithAabbIntersectingAabb(e.raw,t.raw,n.raw,o,s,a),o.free(),s.free()}},Qt=class{constructor(e){this.raw=e||new F,this.tempManifold=new $t(null)}free(){this.raw&&this.raw.free(),this.raw=void 0}contactPairsWith(e,t){this.raw.contact_pairs_with(e,t)}intersectionPairsWith(e,t){this.raw.intersection_pairs_with(e,t)}contactPair(e,t,n){let r=this.raw.contact_pair(e,t);if(r){let t=r.collider1()!=e,i;for(i=0;ie.free())),this.pidControllers.forEach((e=>e.free())),this.vehicleControllers.forEach((e=>e.free())),this.integrationParameters=void 0,this.islands=void 0,this.broadPhase=void 0,this.narrowPhase=void 0,this.bodies=void 0,this.colliders=void 0,this.ccdSolver=void 0,this.impulseJoints=void 0,this.multibodyJoints=void 0,this.physicsPipeline=void 0,this.serializationPipeline=void 0,this.debugRenderPipeline=void 0,this.characterControllers=void 0,this.pidControllers=void 0,this.vehicleControllers=void 0}static fromRaw(t){return t?new e(B.fromRaw(t.takeGravity()),t.takeIntegrationParameters(),t.takeIslandManager(),t.takeBroadPhase(),t.takeNarrowPhase(),t.takeBodies(),t.takeColliders(),t.takeImpulseJoints(),t.takeMultibodyJoints()):null}takeSnapshot(){return this.serializationPipeline.serializeAll(this.gravity,this.integrationParameters,this.islands,this.broadPhase,this.narrowPhase,this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints)}static restoreSnapshot(e){return new xn().deserializeAll(e)}debugRender(e,t){return this.debugRenderPipeline.render(this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints,this.narrowPhase,e,t),new Sn(this.debugRenderPipeline.vertices,this.debugRenderPipeline.colors)}step(e,t){this.physicsPipeline.step(this.gravity,this.integrationParameters,this.islands,this.broadPhase,this.narrowPhase,this.bodies,this.colliders,this.impulseJoints,this.multibodyJoints,this.ccdSolver,e,t)}propagateModifiedBodyPositionsToColliders(){this.bodies.raw.propagateModifiedBodyPositionsToColliders(this.colliders.raw)}get timestep(){return this.integrationParameters.dt}set timestep(e){this.integrationParameters.dt=e}get lengthUnit(){return this.integrationParameters.lengthUnit}set lengthUnit(e){this.integrationParameters.lengthUnit=e}get numSolverIterations(){return this.integrationParameters.numSolverIterations}set numSolverIterations(e){this.integrationParameters.numSolverIterations=e}get numInternalPgsIterations(){return this.integrationParameters.numInternalPgsIterations}set numInternalPgsIterations(e){this.integrationParameters.numInternalPgsIterations=e}get maxCcdSubsteps(){return this.integrationParameters.maxCcdSubsteps}set maxCcdSubsteps(e){this.integrationParameters.maxCcdSubsteps=e}createRigidBody(e){return this.bodies.createRigidBody(this.colliders,e)}createCharacterController(e){let t=new Tn(e,this.integrationParameters,this.broadPhase,this.narrowPhase,this.bodies,this.colliders);return this.characterControllers.add(t),t}removeCharacterController(e){this.characterControllers.delete(e),e.free()}createPidController(e,t,n,r){let i=new En(this.integrationParameters,this.bodies,e,t,n,r);return this.pidControllers.add(i),i}removePidController(e){this.pidControllers.delete(e),e.free()}createVehicleController(e){let t=new Dn(e,this.broadPhase,this.narrowPhase,this.bodies,this.colliders);return this.vehicleControllers.add(t),t}removeVehicleController(e){this.vehicleControllers.delete(e),e.free()}createCollider(e,t){let n=t?t.handle:void 0;return this.colliders.createCollider(this.bodies,e,n)}createImpulseJoint(e,t,n,r){return this.impulseJoints.createJoint(this.bodies,e,t.handle,n.handle,r)}createMultibodyJoint(e,t,n,r){return this.multibodyJoints.createJoint(e,t.handle,n.handle,r)}getRigidBody(e){return this.bodies.get(e)}getCollider(e){return this.colliders.get(e)}getImpulseJoint(e){return this.impulseJoints.get(e)}getMultibodyJoint(e){return this.multibodyJoints.get(e)}removeRigidBody(e){this.bodies&&this.bodies.remove(e.handle,this.islands,this.colliders,this.impulseJoints,this.multibodyJoints)}removeCollider(e,t){this.colliders&&this.colliders.remove(e.handle,this.islands,this.bodies,t)}removeImpulseJoint(e,t){this.impulseJoints&&this.impulseJoints.remove(e.handle,t)}removeMultibodyJoint(e,t){this.impulseJoints&&this.multibodyJoints.remove(e.handle,t)}forEachCollider(e){this.colliders.forEach(e)}forEachRigidBody(e){this.bodies.forEach(e)}forEachActiveRigidBody(e){this.bodies.forEachActiveRigidBody(this.islands,e)}castRay(e,t,n,r,i,a,o,s){return this.broadPhase.castRay(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s))}castRayAndGetNormal(e,t,n,r,i,a,o,s){return this.broadPhase.castRayAndGetNormal(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s))}intersectionsWithRay(e,t,n,r,i,a,o,s,c){this.broadPhase.intersectionsWithRay(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a,o?o.handle:null,s?s.handle:null,this.colliders.castClosure(c))}intersectionWithShape(e,t,n,r,i,a,o,s){let c=this.broadPhase.intersectionWithShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a?a.handle:null,o?o.handle:null,this.colliders.castClosure(s));return c==null?null:this.colliders.get(c)}projectPoint(e,t,n,r,i,a,o){return this.broadPhase.projectPoint(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i?i.handle:null,a?a.handle:null,this.colliders.castClosure(o))}projectPointAndGetFeature(e,t,n,r,i,a){return this.broadPhase.projectPointAndGetFeature(this.narrowPhase,this.bodies,this.colliders,e,t,n,r?r.handle:null,i?i.handle:null,this.colliders.castClosure(a))}intersectionsWithPoint(e,t,n,r,i,a,o){this.broadPhase.intersectionsWithPoint(this.narrowPhase,this.bodies,this.colliders,e,this.colliders.castClosure(t),n,r,i?i.handle:null,a?a.handle:null,this.colliders.castClosure(o))}castShape(e,t,n,r,i,a,o,s,c,l,u,d){return this.broadPhase.castShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,r,i,a,o,s,c,l?l.handle:null,u?u.handle:null,this.colliders.castClosure(d))}intersectionsWithShape(e,t,n,r,i,a,o,s,c){this.broadPhase.intersectionsWithShape(this.narrowPhase,this.bodies,this.colliders,e,t,n,this.colliders.castClosure(r),i,a,o?o.handle:null,s?s.handle:null,this.colliders.castClosure(c))}collidersWithAabbIntersectingAabb(e,t,n){this.broadPhase.collidersWithAabbIntersectingAabb(this.narrowPhase,this.bodies,this.colliders,e,t,this.colliders.castClosure(n))}contactPairsWith(e,t){this.narrowPhase.contactPairsWith(e.handle,this.colliders.castClosure(t))}intersectionPairsWith(e,t){this.narrowPhase.intersectionPairsWith(e.handle,this.colliders.castClosure(t))}contactPair(e,t,n){this.narrowPhase.contactPair(e.handle,t.handle,n)}intersectionPair(e,t){return this.narrowPhase.intersectionPair(e.handle,t.handle)}set profilerEnabled(e){this.physicsPipeline.raw.set_profiler_enabled(e)}get profilerEnabled(){return this.physicsPipeline.raw.is_profiler_enabled()}timingStep(){return this.physicsPipeline.raw.timing_step()}timingCollisionDetection(){return this.physicsPipeline.raw.timing_collision_detection()}timingBroadPhase(){return this.physicsPipeline.raw.timing_broad_phase()}timingNarrowPhase(){return this.physicsPipeline.raw.timing_narrow_phase()}timingSolver(){return this.physicsPipeline.raw.timing_solver()}timingVelocityAssembly(){return this.physicsPipeline.raw.timing_velocity_assembly()}timingVelocityResolution(){return this.physicsPipeline.raw.timing_velocity_resolution()}timingVelocityUpdate(){return this.physicsPipeline.raw.timing_velocity_update()}timingVelocityWriteback(){return this.physicsPipeline.raw.timing_velocity_writeback()}timingCcd(){return this.physicsPipeline.raw.timing_ccd()}timingCcdToiComputation(){return this.physicsPipeline.raw.timing_ccd_toi_computation()}timingCcdBroadPhase(){return this.physicsPipeline.raw.timing_ccd_broad_phase()}timingCcdNarrowPhase(){return this.physicsPipeline.raw.timing_ccd_narrow_phase()}timingCcdSolver(){return this.physicsPipeline.raw.timing_ccd_solver()}timingIslandConstruction(){return this.physicsPipeline.raw.timing_island_construction()}timingUserChanges(){return this.physicsPipeline.raw.timing_user_changes()}};(function(e){e[e.NONE=0]=`NONE`,e[e.COLLISION_EVENTS=1]=`COLLISION_EVENTS`,e[e.CONTACT_FORCE_EVENTS=2]=`CONTACT_FORCE_EVENTS`})(ht||={});var kn=class{free(){this.raw&&this.raw.free(),this.raw=void 0}collider1(){return this.raw.collider1()}collider2(){return this.raw.collider2()}totalForce(){return B.fromRaw(this.raw.total_force())}totalForceMagnitude(){return this.raw.total_force_magnitude()}maxForceDirection(){return B.fromRaw(this.raw.max_force_direction())}maxForceMagnitude(){return this.raw.max_force_magnitude()}},An=class{constructor(e,t){this.raw=t||new we(e)}free(){this.raw&&this.raw.free(),this.raw=void 0}drainCollisionEvents(e){this.raw.drainCollisionEvents(e)}drainContactForceEvents(e){let t=new kn;this.raw.drainContactForceEvents((n=>{t.raw=n,e(t),t.free()}))}clear(){this.raw.clear()}};(function(e){e[e.NONE=0]=`NONE`,e[e.FILTER_CONTACT_PAIRS=1]=`FILTER_CONTACT_PAIRS`,e[e.FILTER_INTERSECTION_PAIRS=2]=`FILTER_INTERSECTION_PAIRS`})(gt||={}),function(e){e[e.EMPTY=0]=`EMPTY`,e[e.COMPUTE_IMPULSE=1]=`COMPUTE_IMPULSE`}(_t||={}),function(e){e[e.EXCLUDE_FIXED=1]=`EXCLUDE_FIXED`,e[e.EXCLUDE_KINEMATIC=2]=`EXCLUDE_KINEMATIC`,e[e.EXCLUDE_DYNAMIC=4]=`EXCLUDE_DYNAMIC`,e[e.EXCLUDE_SENSORS=8]=`EXCLUDE_SENSORS`,e[e.EXCLUDE_SOLIDS=16]=`EXCLUDE_SOLIDS`,e[e.ONLY_DYNAMIC=3]=`ONLY_DYNAMIC`,e[e.ONLY_KINEMATIC=5]=`ONLY_KINEMATIC`,e[e.ONLY_FIXED=6]=`ONLY_FIXED`}(vt||={}),function(e){e[e.DYNAMIC_DYNAMIC=1]=`DYNAMIC_DYNAMIC`,e[e.DYNAMIC_KINEMATIC=12]=`DYNAMIC_KINEMATIC`,e[e.DYNAMIC_FIXED=2]=`DYNAMIC_FIXED`,e[e.KINEMATIC_KINEMATIC=52224]=`KINEMATIC_KINEMATIC`,e[e.KINEMATIC_FIXED=8704]=`KINEMATIC_FIXED`,e[e.FIXED_FIXED=32]=`FIXED_FIXED`,e[e.DEFAULT=15]=`DEFAULT`,e[e.ALL=60943]=`ALL`}(yt||={});var jn=class{constructor(e,t,n,r){this.colliderSet=e,this.handle=t,this._parent=n,this._shape=r}finalizeDeserialization(e){this.handle!=null&&(this._parent=e.get(this.colliderSet.raw.coParent(this.handle)))}ensureShapeIsCached(){this._shape||=X.fromRaw(this.colliderSet.raw,this.handle)}get shape(){return this.ensureShapeIsCached(),this._shape}clearShapeCache(){this._shape=null}isValid(){return this.colliderSet.raw.contains(this.handle)}translation(){return B.fromRaw(this.colliderSet.raw.coTranslation(this.handle))}translationWrtParent(){return B.fromRaw(this.colliderSet.raw.coTranslationWrtParent(this.handle))}rotation(){return V.fromRaw(this.colliderSet.raw.coRotation(this.handle))}rotationWrtParent(){return V.fromRaw(this.colliderSet.raw.coRotationWrtParent(this.handle))}isSensor(){return this.colliderSet.raw.coIsSensor(this.handle)}setSensor(e){this.colliderSet.raw.coSetSensor(this.handle,e)}setShape(e){let t=e.intoRaw();this.colliderSet.raw.coSetShape(this.handle,t),t.free(),this._shape=e}setEnabled(e){this.colliderSet.raw.coSetEnabled(this.handle,e)}isEnabled(){return this.colliderSet.raw.coIsEnabled(this.handle)}setRestitution(e){this.colliderSet.raw.coSetRestitution(this.handle,e)}setFriction(e){this.colliderSet.raw.coSetFriction(this.handle,e)}frictionCombineRule(){return this.colliderSet.raw.coFrictionCombineRule(this.handle)}setFrictionCombineRule(e){this.colliderSet.raw.coSetFrictionCombineRule(this.handle,e)}restitutionCombineRule(){return this.colliderSet.raw.coRestitutionCombineRule(this.handle)}setRestitutionCombineRule(e){this.colliderSet.raw.coSetRestitutionCombineRule(this.handle,e)}setCollisionGroups(e){this.colliderSet.raw.coSetCollisionGroups(this.handle,e)}setSolverGroups(e){this.colliderSet.raw.coSetSolverGroups(this.handle,e)}contactSkin(){return this.colliderSet.raw.coContactSkin(this.handle)}setContactSkin(e){return this.colliderSet.raw.coSetContactSkin(this.handle,e)}activeHooks(){return this.colliderSet.raw.coActiveHooks(this.handle)}setActiveHooks(e){this.colliderSet.raw.coSetActiveHooks(this.handle,e)}activeEvents(){return this.colliderSet.raw.coActiveEvents(this.handle)}setActiveEvents(e){this.colliderSet.raw.coSetActiveEvents(this.handle,e)}activeCollisionTypes(){return this.colliderSet.raw.coActiveCollisionTypes(this.handle)}setContactForceEventThreshold(e){return this.colliderSet.raw.coSetContactForceEventThreshold(this.handle,e)}contactForceEventThreshold(){return this.colliderSet.raw.coContactForceEventThreshold(this.handle)}setActiveCollisionTypes(e){this.colliderSet.raw.coSetActiveCollisionTypes(this.handle,e)}setDensity(e){this.colliderSet.raw.coSetDensity(this.handle,e)}setMass(e){this.colliderSet.raw.coSetMass(this.handle,e)}setMassProperties(e,t,n,r){let i=B.intoRaw(t),a=B.intoRaw(n),o=V.intoRaw(r);this.colliderSet.raw.coSetMassProperties(this.handle,e,i,a,o),i.free(),a.free(),o.free()}setTranslation(e){this.colliderSet.raw.coSetTranslation(this.handle,e.x,e.y,e.z)}setTranslationWrtParent(e){this.colliderSet.raw.coSetTranslationWrtParent(this.handle,e.x,e.y,e.z)}setRotation(e){this.colliderSet.raw.coSetRotation(this.handle,e.x,e.y,e.z,e.w)}setRotationWrtParent(e){this.colliderSet.raw.coSetRotationWrtParent(this.handle,e.x,e.y,e.z,e.w)}shapeType(){return this.colliderSet.raw.coShapeType(this.handle)}halfExtents(){return B.fromRaw(this.colliderSet.raw.coHalfExtents(this.handle))}setHalfExtents(e){let t=B.intoRaw(e);this.colliderSet.raw.coSetHalfExtents(this.handle,t)}radius(){return this.colliderSet.raw.coRadius(this.handle)}setRadius(e){this.colliderSet.raw.coSetRadius(this.handle,e)}roundRadius(){return this.colliderSet.raw.coRoundRadius(this.handle)}setRoundRadius(e){this.colliderSet.raw.coSetRoundRadius(this.handle,e)}halfHeight(){return this.colliderSet.raw.coHalfHeight(this.handle)}setHalfHeight(e){this.colliderSet.raw.coSetHalfHeight(this.handle,e)}setVoxel(e,t,n,r){this.colliderSet.raw.coSetVoxel(this.handle,e,t,n,r),this._shape=null}propagateVoxelChange(e,t,n,r,i,a,o){this.colliderSet.raw.coPropagateVoxelChange(this.handle,e.handle,t,n,r,i,a,o),this._shape=null}combineVoxelStates(e,t,n,r){this.colliderSet.raw.coCombineVoxelStates(this.handle,e.handle,t,n,r),this._shape=null}vertices(){return this.colliderSet.raw.coVertices(this.handle)}indices(){return this.colliderSet.raw.coIndices(this.handle)}heightfieldHeights(){return this.colliderSet.raw.coHeightfieldHeights(this.handle)}heightfieldScale(){let e=this.colliderSet.raw.coHeightfieldScale(this.handle);return B.fromRaw(e)}heightfieldNRows(){return this.colliderSet.raw.coHeightfieldNRows(this.handle)}heightfieldNCols(){return this.colliderSet.raw.coHeightfieldNCols(this.handle)}parent(){return this._parent}friction(){return this.colliderSet.raw.coFriction(this.handle)}restitution(){return this.colliderSet.raw.coRestitution(this.handle)}density(){return this.colliderSet.raw.coDensity(this.handle)}mass(){return this.colliderSet.raw.coMass(this.handle)}volume(){return this.colliderSet.raw.coVolume(this.handle)}collisionGroups(){return this.colliderSet.raw.coCollisionGroups(this.handle)}solverGroups(){return this.colliderSet.raw.coSolverGroups(this.handle)}containsPoint(e){let t=B.intoRaw(e),n=this.colliderSet.raw.coContainsPoint(this.handle,t);return t.free(),n}projectPoint(e,t){let n=B.intoRaw(e),r=qt.fromRaw(this.colliderSet.raw.coProjectPoint(this.handle,n,t));return n.free(),r}intersectsRay(e,t){let n=B.intoRaw(e.origin),r=B.intoRaw(e.dir),i=this.colliderSet.raw.coIntersectsRay(this.handle,n,r,t);return n.free(),r.free(),i}castShape(e,t,n,r,i,a,o,s){let c=B.intoRaw(e),l=B.intoRaw(n),u=V.intoRaw(r),d=B.intoRaw(i),f=t.intoRaw(),p=Yt.fromRaw(this.colliderSet,this.colliderSet.raw.coCastShape(this.handle,c,f,l,u,d,a,o,s));return c.free(),l.free(),u.free(),d.free(),f.free(),p}castCollider(e,t,n,r,i,a){let o=B.intoRaw(e),s=B.intoRaw(n),c=Xt.fromRaw(this.colliderSet,this.colliderSet.raw.coCastCollider(this.handle,o,t.handle,s,r,i,a));return o.free(),s.free(),c}intersectsShape(e,t,n){let r=B.intoRaw(t),i=V.intoRaw(n),a=e.intoRaw(),o=this.colliderSet.raw.coIntersectsShape(this.handle,a,r,i);return r.free(),i.free(),a.free(),o}contactShape(e,t,n,r){let i=B.intoRaw(t),a=V.intoRaw(n),o=e.intoRaw(),s=en.fromRaw(this.colliderSet.raw.coContactShape(this.handle,o,i,a,r));return i.free(),a.free(),o.free(),s}contactCollider(e,t){return en.fromRaw(this.colliderSet.raw.coContactCollider(this.handle,e.handle,t))}castRay(e,t,n){let r=B.intoRaw(e.origin),i=B.intoRaw(e.dir),a=this.colliderSet.raw.coCastRay(this.handle,r,i,t,n);return r.free(),i.free(),a}castRayAndGetNormal(e,t,n){let r=B.intoRaw(e.origin),i=B.intoRaw(e.dir),a=Wt.fromRaw(this.colliderSet.raw.coCastRayAndGetNormal(this.handle,r,i,t,n));return r.free(),i.free(),a}};(function(e){e[e.Density=0]=`Density`,e[e.Mass=1]=`Mass`,e[e.MassProps=2]=`MassProps`})(q||={});var Mn=class e{constructor(e){this.enabled=!0,this.shape=e,this.massPropsMode=q.Density,this.density=1,this.friction=.5,this.restitution=0,this.rotation=V.identity(),this.translation=B.zeros(),this.isSensor=!1,this.collisionGroups=4294967295,this.solverGroups=4294967295,this.frictionCombineRule=W.Average,this.restitutionCombineRule=W.Average,this.activeCollisionTypes=yt.DEFAULT,this.activeEvents=ht.NONE,this.activeHooks=gt.NONE,this.mass=0,this.centerOfMass=B.zeros(),this.contactForceEventThreshold=0,this.contactSkin=0,this.principalAngularInertia=B.zeros(),this.angularInertiaLocalFrame=V.identity()}static ball(t){return new e(new tn(t))}static capsule(t,n){return new e(new on(t,n))}static segment(t,n){return new e(new sn(t,n))}static triangle(t,n,r){return new e(new cn(t,n,r))}static roundTriangle(t,n,r,i){return new e(new ln(t,n,r,i))}static polyline(t,n){return new e(new un(t,n))}static voxels(t,n){return new e(new dn(t,n))}static trimesh(t,n,r){return new e(new fn(t,n,r))}static cuboid(t,n,r){return new e(new rn(t,n,r))}static roundCuboid(t,n,r,i){return new e(new an(t,n,r,i))}static heightfield(t,n,r,i,a){return new e(new hn(t,n,r,i,a))}static cylinder(t,n){return new e(new gn(t,n))}static roundCylinder(t,n,r){return new e(new _n(t,n,r))}static cone(t,n){return new e(new vn(t,n))}static roundCone(t,n,r){return new e(new yn(t,n,r))}static convexHull(t){return new e(new pn(t,null))}static convexMesh(t,n){return new e(new pn(t,n))}static roundConvexHull(t,n){return new e(new mn(t,null,n))}static roundConvexMesh(t,n,r){return new e(new mn(t,n,r))}setTranslation(e,t,n){if(typeof e!=`number`||typeof t!=`number`||typeof n!=`number`)throw TypeError(`The translation components must be numbers.`);return this.translation={x:e,y:t,z:n},this}setRotation(e){return V.copy(this.rotation,e),this}setSensor(e){return this.isSensor=e,this}setEnabled(e){return this.enabled=e,this}setContactSkin(e){return this.contactSkin=e,this}setDensity(e){return this.massPropsMode=q.Density,this.density=e,this}setMass(e){return this.massPropsMode=q.Mass,this.mass=e,this}setMassProperties(e,t,n,r){return this.massPropsMode=q.MassProps,this.mass=e,B.copy(this.centerOfMass,t),B.copy(this.principalAngularInertia,n),V.copy(this.angularInertiaLocalFrame,r),this}setRestitution(e){return this.restitution=e,this}setFriction(e){return this.friction=e,this}setFrictionCombineRule(e){return this.frictionCombineRule=e,this}setRestitutionCombineRule(e){return this.restitutionCombineRule=e,this}setCollisionGroups(e){return this.collisionGroups=e,this}setSolverGroups(e){return this.solverGroups=e,this}setActiveHooks(e){return this.activeHooks=e,this}setActiveEvents(e){return this.activeEvents=e,this}setActiveCollisionTypes(e){return this.activeCollisionTypes=e,this}setContactForceEventThreshold(e){return this.contactForceEventThreshold=e,this}},Nn=class{constructor(e){this.raw=e||new k,this.map=new St,e&&e.forEachColliderHandle((e=>{this.map.set(e,new jn(this,e,null))}))}free(){this.raw&&this.raw.free(),this.raw=void 0,this.map&&this.map.clear(),this.map=void 0}castClosure(e){return t=>e?e(this.get(t)):void 0}finalizeDeserialization(e){this.map.forEach((t=>t.finalizeDeserialization(e)))}createCollider(e,t,n){let r=n!=null&&n!=null;if(r&&isNaN(n))throw Error(`Cannot create a collider with a parent rigid-body handle that is not a number.`);let i=t.shape.intoRaw(),a=B.intoRaw(t.translation),o=V.intoRaw(t.rotation),s=B.intoRaw(t.centerOfMass),c=B.intoRaw(t.principalAngularInertia),l=V.intoRaw(t.angularInertiaLocalFrame),u=this.raw.createCollider(t.enabled,i,a,o,t.massPropsMode,t.mass,s,c,l,t.density,t.friction,t.restitution,t.frictionCombineRule,t.restitutionCombineRule,t.isSensor,t.collisionGroups,t.solverGroups,t.activeCollisionTypes,t.activeHooks,t.activeEvents,t.contactForceEventThreshold,t.contactSkin,r,r?n:0,e.raw);i.free(),a.free(),o.free(),s.free(),c.free(),l.free();let d=r?e.get(n):null,f=new jn(this,u,d,t.shape);return this.map.set(u,f),f}remove(e,t,n,r){this.raw.remove(e,t.raw,n.raw,r),this.unmap(e)}unmap(e){this.map.delete(e)}get(e){return this.map.get(e)}len(){return this.map.len()}contains(e){return this.get(e)!=null}forEach(e){this.map.forEach(e)}getAll(){return this.map.getAll()}};function Pn(e,t,n,r){return new(n||=Promise)((function(i,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}c((r=r.apply(e,t||[])).next())}))}for(var Fn={byteLength:function(e){var t=zn(e),n=t[0],r=t[1];return 3*(n+r)/4-r},toByteArray:function(e){var t,n,r=zn(e),i=r[0],a=r[1],o=new In(function(e,t,n){return 3*(t+n)/4-n}(0,i,a)),s=0,c=a>0?i-4:i;for(n=0;n>16&255,o[s++]=t>>8&255,o[s++]=255&t;return a===2&&(t=Q[e.charCodeAt(n)]<<2|Q[e.charCodeAt(n+1)]>>4,o[s++]=255&t),a===1&&(t=Q[e.charCodeAt(n)]<<10|Q[e.charCodeAt(n+1)]<<4|Q[e.charCodeAt(n+2)]>>2,o[s++]=t>>8&255,o[s++]=255&t),o},fromByteArray:function(e){for(var t,n=e.length,r=n%3,i=[],a=16383,o=0,s=n-r;os?s:o+a));return r===1?(t=e[n-1],i.push(Z[t>>2]+Z[t<<4&63]+`==`)):r===2&&(t=(e[n-2]<<8)+e[n-1],i.push(Z[t>>10]+Z[t>>4&63]+Z[t<<2&63]+`=`)),i.join(``)}},Z=[],Q=[],In=typeof Uint8Array<`u`?Uint8Array:Array,Ln=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,$=0,Rn=Ln.length;$0)throw Error(`Invalid string. Length must be a multiple of 4`);var n=e.indexOf(`=`);return n===-1&&(n=t),[n,n===t?0:4-n%4]}function Bn(e,t,n){for(var r,i,a=[],o=t;o>18&63]+Z[i>>12&63]+Z[i>>6&63]+Z[63&i]);return a.join(``)}function Vn(){return Pn(this,void 0,void 0,(function*(){yield at(Fn.toByteArray(`AGFzbQEAAAAB6QykAWACf38AYAN/f38AYAR/f39/AGACf38Bf2ABfwF/YAN/f38Bf2ABfwBgBX9/f39/AGACf3wBf2AGf39/f31/AGAGf39/f39/AGABfwF9YAV/f399fwBgA39/fQBgBX9/f399AGADf3x/AGABfwF8YAR/f39/AX9gDH9/f39/f39/f399fwF/YAZ/f39/f30AYAR/f399AX9gAAF/YAR/f39/AX1gA39/fwF9YAN/f30Bf2ACf38BfGADf39/AX5gAn99AGAGf39/f39/AX9gAn98AX1gA398fQBgBH98f38AYAV/f39/fwF/YAd/f39/f39/AGACf3wBfGAIf39/f39/f38AYAF9AX1gAn9/AX1gAABgCX9/f39/f39/fwBgBH9+f38Bf2AIf39/f39/f30AYAR/f399AGADf398AGALf39/f39/f399fX8AYAh/f39/fX9/fwBgCX9/f39/fX9/fwBgBX9/fX9/AGAGf3x/f39/AGADf3x/AX9gA398fwF9YAN9fX0Bf2AGf31/f399AGAJf39/f39/fX9/AX9gBX98f39/AGAGf3x9fX19AGAFf3x9fX0AYAN/fX8AYAJ9fQF/YAF8AX9gBH99f38AYAt/f39/f39/f31/fwBgCn9/f39/f31/f38AYAZ/f319f38AYAt/f39/f39/fX9/fwBgCH9/f399fX9/AGAGf319f399AGAMf39/f31/f39/fX9/AGAPf39/f39/f39/fH98f3x/AGAPf39/f39/fX9/fH98f3x/AX9gBn9/f399fQBgBn99f3x/fwF/YAZ/fX98f38AYAV/fX1/fwBgAn5/AX9gBn9/fX9/fwBgBX9/fHx/AXxgA398fAF/YAR/fH1/AGAFf3x/fX0AYAF9AX9gAn98AGAEfX19fQF/YA5/f39/f39/f39/f39/fwBgB39/f39/f30AYA9/f39/f39/f39/f399fX8AYAt/f399f399f319fwBgCX99f39/f39/fwF/YAd/f39/f39/AX1gCn9/f39/f399fX8AYAt/f39/f39/f319fwF/YBJ/f39/f39/f39/f399f319fX0AYAd/f39/f399AX9gD39/f39/f39/f39/f39/fwBgCn9/f39/f39/f38Bf2ASf39/f39/f399fX9/fH98f3x/AX9gC39/f39/f39/f39/AGAJf39/f39/fX9/AGAGf3x/f399AX9gG39/f399fX9/f39/f39/f39/f319f39/fX9/fwF8YBB/f39/f399f39/fH98f3x/AGAIf31/f39/f38AYBt/f39/f39/fX9/f319fX9/f39/f39/fX1/fH8AYAx/f39/f39/f39/f38AYAp/fX9/f39/f39/AGAMf39/f31/f39/f39/AGAHf39/f399fwF/YAp/fH9/f39/fX1/AX9gDX9/f39/f398f3x/fH8AYAt/f39/fX9/f39/fwBgCH9/f39/fX9/AGAJf39/f39/f39/AX1gBn99f39/fwBgBH9/fX8AYA1/f39/f39/fH98f3x/AX9gB39/f39/fX8BfWAMf39/f39/fH98f3x/AX9gBn9/f39/fQF/YAZ/f39/fX0Bf2AIf31/fX99f38AYA1/fX9/f398f398f3x/AGASf39/f39/f39/f39/f39/f39/AGAGf3x/f31/AX9gBX98f39/AX9gCX99f39/f398fwBgCH98f3x/fX1/AX9gCn9/f39/f39/f38AYAd/fH1/f39/AGAGf3x/f31/AX1gAn9+AX9gBn98fX9/fwBgBX98f399AX9gDX9/f39/f399fX19fX0AYAR/fH9/AX9gBX19fX9/AX9gA31/fwF/YAl/f39/f39+fn4AYAR/fHx9AX9gB39/f39/f38Bf2ANf39/f39/f39/f39/fwBgA398fwF8YAZ/fH99fX0AYAd/fH99fX19AGACf34AYAh/f39/f39/fwF/YAd/fH19fX1/AGAJf3x8f39/f39/AGAFf39/f30Bf2AGf3x9fX1/AGAGf3x8f39/AGAEf39+fwBgA39/fgF/YAV/fn9+fwBgA39+fgBgBH19fX8Bf2ADf399AX1gAn19AGAEf319fwBgBn9/fX19fQBgA319fwF/YAV/f3x/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0CqwkgA3diZxVfX3diaW5kZ2VuX251bWJlcl9uZXcAOwN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAEA3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9nZXQAAAN3YmcWX193YmluZGdlbl9pc19mdW5jdGlvbgAEA3diZyRfX3diZ19yYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9uZXcABAN3YmceX193YmdfcmF3Y29udGFjdGZvcmNlZXZlbnRfbmV3AAQDd2JnIl9fd2JnX3BlcmZvcm1hbmNlXzdhM2ZmZDBiMTdmNjYzYWQABAN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQABAN3YmcaX193Ymdfbm93XzJjOTVjOWRlMDEyOTMxNzMAEAN3YmcbX193YmluZGdlbl9vYmplY3RfY2xvbmVfcmVmAAQDd2JnIF9fd2JnX25ld25vYXJnc18xMDVlZDQ3MTQ3NWFhZjUwAAMDd2JnG19fd2JnX2NhbGxfNjcyYTRkMjE2MzRkNGEyNAADA3diZxtfX3diZ19jYWxsXzdjY2NkZDY5ZTA3OTFhZTIABQN3YmcbX193YmdfY2FsbF84MzNiZWQ1NzcwZWEyMDQxABEDd2JnG19fd2JnX2NhbGxfYjhhZGM4YjFkMGEwZDhlYgAgA3diZxtfX3diZ19iaW5kX2M4MzU5YjFjYmEwNTgxNjgAEQN3YmcdX193YmdfYnVmZmVyXzYwOWNjM2VlZTUxZWQxNTgABAN3YmcyX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF9USElTXzU2NTc4YmU3ZTlmODMyYjAAFQN3YmcrX193Ymdfc3RhdGljX2FjY2Vzc29yX1NFTEZfMzdjNWQ0MThlNGJmNTgxOQAVA3diZy1fX3diZ19zdGF0aWNfYWNjZXNzb3JfV0lORE9XXzVkZTM3MDQzYTkxYTljNDAAFQN3YmctX193Ymdfc3RhdGljX2FjY2Vzc29yX0dMT0JBTF84OGE5MDJkMTNhNTU3ZDA3ABUDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2Q5N2U2MzdlYmUxNDVhOWEABQN3YmcaX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmUABAN3YmcaX193Ymdfc2V0XzY1NTk1YmRkODY4YjMwMDkAAQN3YmcdX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjgABAN3YmcxX193YmdfbmV3d2l0aGJ5dGVvZmZzZXRhbmRsZW5ndGhfZTZiN2U2OWFjZDRjNzM1NAAFA3diZxpfX3di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BgYGBgYAAAYGBgYCBwYAAA0BAgMDGBgYGBgYGBgYGBgYGBgYACYmBgMmAwoKCgoKAAufAQEEBgMGCwYGBgYGBgYDFQMBAAAAAwMDAAMDAwMDAwMLCwQDHAcgoAGhAS8GAgADAwUDDQYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGEQYGBgYGAgANAAAAAAAAAREBAQEBAQEBAQEKCgoKCgoKCgoKCg0BAwcAAAAAAAADAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADAwADAQcHBwcLAQEBBgMEAwMDAwMDACYmAwEBAQENCwMDAwADAwMDAwMAAQQHowEGCwsLJCQkAwQLBAQLAwUECwQEBAQEBAQLBAQLBAQEBAQEBAc0AAYEBwFwAfgI+AgFAwEAEgYJAX8BQYCAwAALB4yeAZoEBm1lbW9yeQIAB3ZlcnNpb24A1wwqX193YmdfcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9mcmVlALsII3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfbmV3AMwHJXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0VXAA9AUxcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9ub3JtYWxOdWRnZUZhY3RvcgDoCzRyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE5vcm1hbE51ZGdlRmFjdG9yAJQMJnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfb2Zmc2V0AOkLKXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0T2Zmc2V0AOoLLHJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2xpZGVFbmFibGVkAOsLL3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfc2V0U2xpZGVFbmFibGVkAI4MMXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBNYXhIZWlnaHQArAswcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9hdXRvc3RlcE1pbldpZHRoAK0LPXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBJbmNsdWRlc0R5bmFtaWNCb2RpZXMAngsvcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9hdXRvc3RlcEVuYWJsZWQA2wsucmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9lbmFibGVBdXRvc3RlcACLCy9yYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2Rpc2FibGVBdXRvc3RlcACVDDJyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX21heFNsb3BlQ2xpbWJBbmdsZQDsCzVyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE1heFNsb3BlQ2xpbWJBbmdsZQCWDDJyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX21pblNsb3BlU2xpZGVBbmdsZQDtCzVyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldE1pblNsb3BlU2xpZGVBbmdsZQCXDDRyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NuYXBUb0dyb3VuZERpc3RhbmNlAK4LMnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfZW5hYmxlU25hcFRvR3JvdW5kAO4LM3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfZGlzYWJsZVNuYXBUb0dyb3VuZACYDDNyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NuYXBUb0dyb3VuZEVuYWJsZWQA3As3cmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9jb21wdXRlQ29sbGlkZXJNb3ZlbWVudADIAjByYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2NvbXB1dGVkTW92ZW1lbnQA1AgwcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9jb21wdXRlZEdyb3VuZGVkAO8LNXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfbnVtQ29tcHV0ZWRDb2xsaXNpb25zAPALMXJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfY29tcHV0ZWRDb2xsaXNpb24A1wYgX193YmdfcmF3Y2hhcmFjdGVyY29sbGlzaW9uX2ZyZWUArAkZcmF3Y2hhcmFjdGVyY29sbGlzaW9uX25ldwDwChxyYXdjaGFyYWN0ZXJjb2xsaXNpb25faGFuZGxlAPELLXJhd2NoYXJhY3RlcmNvbGxpc2lvbl90cmFuc2xhdGlvbkRlbHRhQXBwbGllZADVCC9yYXdjaGFyYWN0ZXJjb2xsaXNpb25fdHJhbnNsYXRpb25EZWx0YVJlbWFpbmluZwDWCBlyYXdjaGFyYWN0ZXJjb2xsaXNpb25fdG9pAPILI3Jhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZFdpdG5lc3MxANcII3Jhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZFdpdG5lc3MyANMFInJhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZE5vcm1hbDEA2AgicmF3Y2hhcmFjdGVyY29sbGlzaW9uX3dvcmxkTm9ybWFsMgCOBhtfX3diZ19yYXdwaWRjb250cm9sbGVyX2ZyZWUArQkUcmF3cGlkY29udHJvbGxlcl9uZXcA1AoXcmF3cGlkY29udHJvbGxlcl9zZXRfa3AApAgXcmF3cGlkY29udHJvbGxlcl9zZXRfa2kApQgXcmF3cGlkY29udHJvbGxlcl9zZXRfa2QApggecmF3cGlkY29udHJvbGxlcl9zZXRfYXhlc19tYXNrALgLIHJhd3BpZGNvbnRyb2xsZXJfcmVzZXRfaW50ZWdyYWxzAO4JKHJhd3BpZGNvbnRyb2xsZXJfYXBwbHlfbGluZWFyX2NvcnJlY3Rpb24AsAMpcmF3cGlkY29udHJvbGxlcl9hcHBseV9hbmd1bGFyX2NvcnJlY3Rpb24AsQMicmF3cGlkY29udHJvbGxlcl9saW5lYXJfY29ycmVjdGlvbgCJAyNyYXdwaWRjb250cm9sbGVyX2FuZ3VsYXJfY29ycmVjdGlvbgCKAy1fX3diZ19yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2ZyZWUA7AYmcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9uZXcAjAs4cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9jdXJyZW50X3ZlaGljbGVfc3BlZWQA8wsqcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9jaGFzc2lzAPQLMHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfaW5kZXhfdXBfYXhpcwD1CzRyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF9pbmRleF91cF9heGlzAJkMNXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfaW5kZXhfZm9yd2FyZF9heGlzAPYLOXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X2luZGV4X2ZvcndhcmRfYXhpcwCaDCxyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2FkZF93aGVlbADWAy1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX251bV93aGVlbHMA9wsxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl91cGRhdGVfdmVoaWNsZQCNA0RyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2NoYXNzaXNfY29ubmVjdGlvbl9wb2ludF9jcwD5BkhyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9jaGFzc2lzX2Nvbm5lY3Rpb25fcG9pbnRfY3MA1QU/cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX3Jlc3RfbGVuZ3RoAL8KQ3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fcmVzdF9sZW5ndGgAiQk+cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9tYXhfc3VzcGVuc2lvbl90cmF2ZWwAwApCcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfbWF4X3N1c3BlbnNpb25fdHJhdmVsAIoJL3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfcmFkaXVzAMEKM3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3JhZGl1cwCLCT1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fc3RpZmZuZXNzAMIKQXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fc3RpZmZuZXNzAIwJP3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9jb21wcmVzc2lvbgDDCkNyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdXNwZW5zaW9uX2NvbXByZXNzaW9uAI0JPnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9yZWxheGF0aW9uAMQKQnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3N1c3BlbnNpb25fcmVsYXhhdGlvbgCOCT1yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX21heF9zdXNwZW5zaW9uX2ZvcmNlAMUKQXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX21heF9zdXNwZW5zaW9uX2ZvcmNlAI8JLnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfYnJha2UAxgoycmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfYnJha2UAkAkxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdGVlcmluZwDHCjVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdGVlcmluZwCRCTVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2VuZ2luZV9mb3JjZQDICjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9lbmdpbmVfZm9yY2UAkgk1cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9kaXJlY3Rpb25fY3MA+gY5cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfZGlyZWN0aW9uX2NzANYFMHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfYXhsZV9jcwD7BjRyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9heGxlX2NzANcFNnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfZnJpY3Rpb25fc2xpcADJCjpyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9mcmljdGlvbl9zbGlwAJMJQHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc2lkZV9mcmljdGlvbl9zdGlmZm5lc3MAygpEcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfc2lkZV9mcmljdGlvbl9zdGlmZm5lc3MAlAkxcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9yb3RhdGlvbgDLCjhyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2ZvcndhcmRfaW1wdWxzZQDMCjVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3NpZGVfaW1wdWxzZQDNCjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fZm9yY2UAzgo6cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9jb250YWN0X25vcm1hbF93cwD8BjlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2NvbnRhY3RfcG9pbnRfd3MA/QY6cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX2xlbmd0aADPCjZyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2hhcmRfcG9pbnRfd3MA/gY2cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9pc19pbl9jb250YWN0ANUKNnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfZ3JvdW5kX29iamVjdACnCRdfX3diZ19yYXdjY2Rzb2x2ZXJfZnJlZQCuCRxyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRUeXBlAIcHI3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUxAOEHI3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUyAOIHH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEZyYW1lWDEAjwYfcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50RnJhbWVYMgCQBh9yYXdpbXB1bHNlam9pbnRzZXRfam9pbnRBbmNob3IxAJEGH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEFuY2hvcjIAkgYicmF3aW1wdWxzZWpvaW50c2V0X2pvaW50U2V0QW5jaG9yMQDbBSJyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRBbmNob3IyANwFJ3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbnRhY3RzRW5hYmxlZADjBypyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRDb250YWN0c0VuYWJsZWQAvAglcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzRW5hYmxlZACAByFyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRMaW1pdHNNaW4AowchcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzTWF4AKQHIXJhd2ltcHVsc2Vqb2ludHNldF9qb2ludFNldExpbWl0cwCzBytyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3Rvck1vZGVsAIQHLnJhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbmZpZ3VyZU1vdG9yVmVsb2NpdHkAxgcucmF3aW1wdWxzZWpvaW50c2V0X2pvaW50Q29uZmlndXJlTW90b3JQb3NpdGlvbgDHByZyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3RvcgDIBx1fX3diZ19yYXdpbXB1bHNlam9pbnRzZXRfZnJlZQDNBxZyYXdpbXB1bHNlam9pbnRzZXRfbmV3ANYKHnJhd2ltcHVsc2Vqb2ludHNldF9jcmVhdGVKb2ludADGBhlyYXdpbXB1bHNlam9pbnRzZXRfcmVtb3ZlAJkJFnJhd2ltcHVsc2Vqb2ludHNldF9sZW4A9QsbcmF3aW1wdWxzZWpvaW50c2V0X2NvbnRhaW5zANkIJXJhd2ltcHVsc2Vqb2ludHNldF9mb3JFYWNoSm9pbnRIYW5kbGUAkwYycmF3aW1wdWxzZWpvaW50c2V0X2ZvckVhY2hKb2ludEF0dGFjaGVkVG9SaWdpZEJvZHkAmgkjX193YmdfcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2ZyZWUArwkccmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX25ldwCfCxtyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfZHQA+AskcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2NvbnRhY3RfZXJwAN8KNXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19ub3JtYWxpemVkQWxsb3dlZExpbmVhckVycm9yAPkLNXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlAPoLLHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19udW1Tb2x2ZXJJdGVyYXRpb25zAPsLJnJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19taW5Jc2xhbmRTaXplAPwLJ3Jhd2ludGVncmF0aW9ucGFyYW1ldGVyc19tYXhDY2RTdWJzdGVwcwD9Cx9yYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2R0AJsMNnJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfY29udGFjdF9uYXR1cmFsX2ZyZXF1ZW5jeQCcDDlyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X25vcm1hbGl6ZWRBbGxvd2VkTGluZWFyRXJyb3IAnQw5cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlAJ4MMHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfbnVtU29sdmVySXRlcmF0aW9ucwCfDCpyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X21pbklzbGFuZFNpemUAoAwrcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9tYXhDY2RTdWJzdGVwcwChDCdyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2xlbmd0aFVuaXQAogwbX193YmdfcmF3aXNsYW5kbWFuYWdlcl9mcmVlAKoGFHJhd2lzbGFuZG1hbmFnZXJfbmV3ALkLLXJhd2lzbGFuZG1hbmFnZXJfZm9yRWFjaEFjdGl2ZVJpZ2lkQm9keUhhbmRsZQCmBhpfX3diZ19yYXdnZW5lcmljam9pbnRfZnJlZQCwCRdyYXdnZW5lcmljam9pbnRfZ2VuZXJpYwDOAhZyYXdnZW5lcmljam9pbnRfc3ByaW5nALYEFHJhd2dlbmVyaWNqb2ludF9yb3BlAMEEGXJhd2dlbmVyaWNqb2ludF9zcGhlcmljYWwAxQQZcmF3Z2VuZXJpY2pvaW50X3ByaXNtYXRpYwDCAhVyYXdnZW5lcmljam9pbnRfZml4ZWQAqgIYcmF3Z2VuZXJpY2pvaW50X3Jldm9sdXRlANwCHnJhd211bHRpYm9keWpvaW50c2V0X2pvaW50VHlwZQDBBiFyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludEZyYW1lWDEAxgUhcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRGcmFtZVgyAMcFIXJhd211bHRpYm9keWpvaW50c2V0X2pvaW50QW5jaG9yMQDIBSFyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludEFuY2hvcjIAyQUpcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRDb250YWN0c0VuYWJsZWQA8wYscmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRTZXRDb250YWN0c0VuYWJsZWQAnAcncmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRMaW1pdHNFbmFibGVkALcGI3Jhd211bHRpYm9keWpvaW50c2V0X2pvaW50TGltaXRzTWluANEGI3Jhd211bHRpYm9keWpvaW50c2V0X2pvaW50TGltaXRzTWF4ANIGH19fd2JnX3Jhd211bHRpYm9keWpvaW50c2V0X2ZyZWUAzgcYcmF3bXVsdGlib2R5am9pbnRzZXRfbmV3ANcKIHJhd211bHRpYm9keWpvaW50c2V0X2NyZWF0ZUpvaW50AMcGG3Jhd211bHRpYm9keWpvaW50c2V0X3JlbW92ZQCiCR1yYXdtdWx0aWJvZHlqb2ludHNldF9jb250YWlucwCtCCdyYXdtdWx0aWJvZHlqb2ludHNldF9mb3JFYWNoSm9pbnRIYW5kbGUAngk0cmF3bXVsdGlib2R5am9pbnRzZXRfZm9yRWFjaEpvaW50QXR0YWNoZWRUb1JpZ2lkQm9keQCbCR1yYXdyaWdpZGJvZHlzZXRfcmJUcmFuc2xhdGlvbgCUBhpyYXdyaWdpZGJvZHlzZXRfcmJSb3RhdGlvbgCVBhdyYXdyaWdpZGJvZHlzZXRfcmJTbGVlcACFCRxyYXdyaWdpZGJvZHlzZXRfcmJJc1NsZWVwaW5nAPUHGnJhd3JpZ2lkYm9keXNldF9yYklzTW92aW5nAJ4IIXJhd3JpZ2lkYm9keXNldF9yYk5leHRUcmFuc2xhdGlvbgCWBh5yYXdyaWdpZGJvZHlzZXRfcmJOZXh0Um90YXRpb24AlwYgcmF3cmlnaWRib2R5c2V0X3JiU2V0VHJhbnNsYXRpb24AwgkdcmF3cmlnaWRib2R5c2V0X3JiU2V0Um90YXRpb24AvAkbcmF3cmlnaWRib2R5c2V0X3JiU2V0TGludmVsAIYGG3Jhd3JpZ2lkYm9keXNldF9yYlNldEFuZ3ZlbACHBi1yYXdyaWdpZGJvZHlzZXRfcmJTZXROZXh0S2luZW1hdGljVHJhbnNsYXRpb24A9gcqcmF3cmlnaWRib2R5c2V0X3JiU2V0TmV4dEtpbmVtYXRpY1JvdGF0aW9uALIGNnJhd3JpZ2lkYm9keXNldF9yYlJlY29tcHV0ZU1hc3NQcm9wZXJ0aWVzRnJvbUNvbGxpZGVycwClBiNyYXdyaWdpZGJvZHlzZXRfcmJTZXRBZGRpdGlvbmFsTWFzcwD3By1yYXdyaWdpZGJvZHlzZXRfcmJTZXRBZGRpdGlvbmFsTWFzc1Byb3BlcnRpZXMAtQMYcmF3cmlnaWRib2R5c2V0X3JiTGludmVsAJgGGHJhd3JpZ2lkYm9keXNldF9yYkFuZ3ZlbACZBiFyYXdyaWdpZGJvZHlzZXRfcmJWZWxvY2l0eUF0UG9pbnQAyAQicmF3cmlnaWRib2R5c2V0X3JiTG9ja1RyYW5zbGF0aW9ucwDEBihyYXdyaWdpZGJvZHlzZXRfcmJTZXRFbmFibGVkVHJhbnNsYXRpb25zAMoFH3Jhd3JpZ2lkYm9keXNldF9yYkxvY2tSb3RhdGlvbnMAxQYlcmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZFJvdGF0aW9ucwDLBSByYXdyaWdpZGJvZHlzZXRfcmJEb21pbmFuY2VHcm91cAD4ByNyYXdyaWdpZGJvZHlzZXRfcmJTZXREb21pbmFuY2VHcm91cADYBxtyYXdyaWdpZGJvZHlzZXRfcmJFbmFibGVDY2QA2ggmcmF3cmlnaWRib2R5c2V0X3JiU2V0U29mdENjZFByZWRpY3Rpb24A9QgWcmF3cmlnaWRib2R5c2V0X3JiTWFzcwDDBxlyYXdyaWdpZGJvZHlzZXRfcmJJbnZNYXNzAPkHInJhd3JpZ2lkYm9keXNldF9yYkVmZmVjdGl2ZUludk1hc3MAmgYacmF3cmlnaWRib2R5c2V0X3JiTG9jYWxDb20AmwYacmF3cmlnaWRib2R5c2V0X3JiV29ybGRDb20AnAYlcmF3cmlnaWRib2R5c2V0X3JiSW52UHJpbmNpcGFsSW5lcnRpYQCdBixyYXdyaWdpZGJvZHlzZXRfcmJQcmluY2lwYWxJbmVydGlhTG9jYWxGcmFtZQCeBiJyYXdyaWdpZGJvZHlzZXRfcmJQcmluY2lwYWxJbmVydGlhAM0GKnJhd3JpZ2lkYm9keXNldF9yYkVmZmVjdGl2ZVdvcmxkSW52SW5lcnRpYQDMBSlyYXdyaWdpZGJvZHlzZXRfcmJFZmZlY3RpdmVBbmd1bGFySW5lcnRpYQCuBhhyYXdyaWdpZGJvZHlzZXRfcmJXYWtlVXAA0wcecmF3cmlnaWRib2R5c2V0X3JiSXNDY2RFbmFibGVkAPoHI3Jhd3JpZ2lkYm9keXNldF9yYlNvZnRDY2RQcmVkaWN0aW9uAPsHHnJhd3JpZ2lkYm9keXNldF9yYk51bUNvbGxpZGVycwD8BxpyYXdyaWdpZGJvZHlzZXRfcmJDb2xsaWRlcgCIBxpyYXdyaWdpZGJvZHlzZXRfcmJCb2R5VHlwZQD9Bx1yYXdyaWdpZGJvZHlzZXRfcmJTZXRCb2R5VHlwZQDsBxlyYXdyaWdpZGJvZHlzZXRfcmJJc0ZpeGVkANQHHXJhd3JpZ2lkYm9keXNldF9yYklzS2luZW1hdGljANUHG3Jhd3JpZ2lkYm9keXNldF9yYklzRHluYW1pYwDZBx9yYXdyaWdpZGJvZHlzZXRfcmJMaW5lYXJEYW1waW5nAP4HIHJhd3JpZ2lkYm9keXNldF9yYkFuZ3VsYXJEYW1waW5nAP8HInJhd3JpZ2lkYm9keXNldF9yYlNldExpbmVhckRhbXBpbmcA9ggjcmF3cmlnaWRib2R5c2V0X3JiU2V0QW5ndWxhckRhbXBpbmcA9wgccmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZADbCBtyYXdyaWdpZGJvZHlzZXRfcmJJc0VuYWJsZWQAgAgecmF3cmlnaWRib2R5c2V0X3JiR3Jhdml0eVNjYWxlAIEIIXJhd3JpZ2lkYm9keXNldF9yYlNldEdyYXZpdHlTY2FsZQClBx1yYXdyaWdpZGJvZHlzZXRfcmJSZXNldEZvcmNlcwDcCB5yYXdyaWdpZGJvZHlzZXRfcmJSZXNldFRvcnF1ZXMA3QgacmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2UAiAYecmF3cmlnaWRib2R5c2V0X3JiQXBwbHlJbXB1bHNlAIkGG3Jhd3JpZ2lkYm9keXNldF9yYkFkZFRvcnF1ZQCKBiRyYXdyaWdpZGJvZHlzZXRfcmJBcHBseVRvcnF1ZUltcHVsc2UAiwYhcmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2VBdFBvaW50ANEEJXJhd3JpZ2lkYm9keXNldF9yYkFwcGx5SW1wdWxzZUF0UG9pbnQAnQQscmF3cmlnaWRib2R5c2V0X3JiQWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMAgggvcmF3cmlnaWRib2R5c2V0X3JiU2V0QWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMA+AgacmF3cmlnaWRib2R5c2V0X3JiVXNlckRhdGEA7QcdcmF3cmlnaWRib2R5c2V0X3JiU2V0VXNlckRhdGEAzQgbcmF3cmlnaWRib2R5c2V0X3JiVXNlckZvcmNlANMGHHJhd3JpZ2lkYm9keXNldF9yYlVzZXJUb3JxdWUA1AYaX193YmdfcmF3cmlnaWRib2R5c2V0X2ZyZWUA7gcTcmF3cmlnaWRib2R5c2V0X25ldwDiCh9yYXdyaWdpZGJvZHlzZXRfY3JlYXRlUmlnaWRCb2R5AOEBFnJhd3JpZ2lkYm9keXNldF9yZW1vdmUA+gITcmF3cmlnaWRib2R5c2V0X2xlbgD+CxhyYXdyaWdpZGJvZHlzZXRfY29udGFpbnMA+QgmcmF3cmlnaWRib2R5c2V0X2ZvckVhY2hSaWdpZEJvZHlIYW5kbGUAnwk5cmF3cmlnaWRib2R5c2V0X3Byb3BhZ2F0ZU1vZGlmaWVkQm9keVBvc2l0aW9uc1RvQ29sbGlkZXJzAIEHGF9fd2JnX3Jhd2Jyb2FkcGhhc2VfZnJlZQDPBxFyYXdicm9hZHBoYXNlX25ldwCVCRVyYXdicm9hZHBoYXNlX2Nhc3RSYXkAmQIhcmF3YnJvYWRwaGFzZV9jYXN0UmF5QW5kR2V0Tm9ybWFsAIoCInJhd2Jyb2FkcGhhc2VfaW50ZXJzZWN0aW9uc1dpdGhSYXkA5AEjcmF3YnJvYWRwaGFzZV9pbnRlcnNlY3Rpb25XaXRoU2hhcGUA1AEacmF3YnJvYWRwaGFzZV9wcm9qZWN0UG9pbnQAtAIncmF3YnJvYWRwaGFzZV9wcm9qZWN0UG9pbnRBbmRHZXRGZWF0dXJlALcCJHJhd2Jyb2FkcGhhc2VfaW50ZXJzZWN0aW9uc1dpdGhQb2ludACbAhdyYXdicm9hZHBoYXNlX2Nhc3RTaGFwZQDIASRyYXdicm9hZHBoYXNlX2ludGVyc2VjdGlvbnNXaXRoU2hhcGUA1wEvcmF3YnJvYWRwaGFzZV9jb2xsaWRlcnNXaXRoQWFiYkludGVyc2VjdGluZ0FhYmIAxQIccmF3Y29sbGlkZXJzZXRfY29UcmFuc2xhdGlvbgCfBhlyYXdjb2xsaWRlcnNldF9jb1JvdGF0aW9uAKAGJXJhd2NvbGxpZGVyc2V0X2NvVHJhbnNsYXRpb25XcnRQYXJlbnQA9wUicmF3Y29sbGlkZXJzZXRfY29Sb3RhdGlvbldydFBhcmVudAD4BR9yYXdjb2xsaWRlcnNldF9jb1NldFRyYW5zbGF0aW9uANoHKHJhd2NvbGxpZGVyc2V0X2NvU2V0VHJhbnNsYXRpb25XcnRQYXJlbnQAxAcccmF3Y29sbGlkZXJzZXRfY29TZXRSb3RhdGlvbgCvBiVyYXdjb2xsaWRlcnNldF9jb1NldFJvdGF0aW9uV3J0UGFyZW50AM8JGXJhd2NvbGxpZGVyc2V0X2NvSXNTZW5zb3IAgwgacmF3Y29sbGlkZXJzZXRfY29TaGFwZVR5cGUAnAkgcmF3Y29sbGlkZXJzZXRfY29IYWxmc3BhY2VOb3JtYWwAtAUccmF3Y29sbGlkZXJzZXRfY29IYWxmRXh0ZW50cwCjBR9yYXdjb2xsaWRlcnNldF9jb1NldEhhbGZFeHRlbnRzAOAGF3Jhd2NvbGxpZGVyc2V0X2NvUmFkaXVzAL0IGnJhd2NvbGxpZGVyc2V0X2NvU2V0UmFkaXVzAN4JG3Jhd2NvbGxpZGVyc2V0X2NvSGFsZkhlaWdodAC+CB5yYXdjb2xsaWRlcnNldF9jb1NldEhhbGZIZWlnaHQA3wkccmF3Y29sbGlkZXJzZXRfY29Sb3VuZFJhZGl1cwC/CB9yYXdjb2xsaWRlcnNldF9jb1NldFJvdW5kUmFkaXVzAOAJGnJhd2NvbGxpZGVyc2V0X2NvVm94ZWxEYXRhALgGGnJhd2NvbGxpZGVyc2V0X2NvVm94ZWxTaXplALkFGXJhd2NvbGxpZGVyc2V0X2NvU2V0Vm94ZWwAmAclcmF3Y29sbGlkZXJzZXRfY29Qcm9wYWdhdGVWb3hlbENoYW5nZQC9CSNyYXdjb2xsaWRlcnNldF9jb0NvbWJpbmVWb3hlbFN0YXRlcwDQCRlyYXdjb2xsaWRlcnNldF9jb1ZlcnRpY2VzALkGGHJhd2NvbGxpZGVyc2V0X2NvSW5kaWNlcwC6Bh1yYXdjb2xsaWRlcnNldF9jb1RyaU1lc2hGbGFncwDoBiFyYXdjb2xsaWRlcnNldF9jb0hlaWdodEZpZWxkRmxhZ3MA6QYjcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRmaWVsZEhlaWdodHMAuwYhcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRmaWVsZFNjYWxlAKEFIXJhd2NvbGxpZGVyc2V0X2NvSGVpZ2h0ZmllbGROUm93cwDOBiFyYXdjb2xsaWRlcnNldF9jb0hlaWdodGZpZWxkTkNvbHMAzwYXcmF3Y29sbGlkZXJzZXRfY29QYXJlbnQAmQcbcmF3Y29sbGlkZXJzZXRfY29TZXRFbmFibGVkAKYHGnJhd2NvbGxpZGVyc2V0X2NvSXNFbmFibGVkANsHH3Jhd2NvbGxpZGVyc2V0X2NvU2V0Q29udGFjdFNraW4A+ggccmF3Y29sbGlkZXJzZXRfY29Db250YWN0U2tpbgCECBlyYXdjb2xsaWRlcnNldF9jb0ZyaWN0aW9uAIUIHHJhd2NvbGxpZGVyc2V0X2NvUmVzdGl0dXRpb24AhggYcmF3Y29sbGlkZXJzZXRfY29EZW5zaXR5AJ8IFXJhd2NvbGxpZGVyc2V0X2NvTWFzcwCgCBdyYXdjb2xsaWRlcnNldF9jb1ZvbHVtZQChCCByYXdjb2xsaWRlcnNldF9jb0NvbGxpc2lvbkdyb3VwcwC4Bx1yYXdjb2xsaWRlcnNldF9jb1NvbHZlckdyb3VwcwC5BxxyYXdjb2xsaWRlcnNldF9jb0FjdGl2ZUhvb2tzAIcIJXJhd2NvbGxpZGVyc2V0X2NvQWN0aXZlQ29sbGlzaW9uVHlwZXMAiAgdcmF3Y29sbGlkZXJzZXRfY29BY3RpdmVFdmVudHMAiQgrcmF3Y29sbGlkZXJzZXRfY29Db250YWN0Rm9yY2VFdmVudFRocmVzaG9sZACKCB5yYXdjb2xsaWRlcnNldF9jb0NvbnRhaW5zUG9pbnQAlgUacmF3Y29sbGlkZXJzZXRfY29DYXN0U2hhcGUAiAIdcmF3Y29sbGlkZXJzZXRfY29DYXN0Q29sbGlkZXIAlQMgcmF3Y29sbGlkZXJzZXRfY29JbnRlcnNlY3RzU2hhcGUA5wIdcmF3Y29sbGlkZXJzZXRfY29Db250YWN0U2hhcGUA3AEgcmF3Y29sbGlkZXJzZXRfY29Db250YWN0Q29sbGlkZXIAtQUdcmF3Y29sbGlkZXJzZXRfY29Qcm9qZWN0UG9pbnQAlwQecmF3Y29sbGlkZXJzZXRfY29JbnRlcnNlY3RzUmF5ANoDGHJhd2NvbGxpZGVyc2V0X2NvQ2FzdFJheQC3AyRyYXdjb2xsaWRlcnNldF9jb0Nhc3RSYXlBbmRHZXROb3JtYWwA3QIacmF3Y29sbGlkZXJzZXRfY29TZXRTZW5zb3IA1gcfcmF3Y29sbGlkZXJzZXRfY29TZXRSZXN0aXR1dGlvbgD7CBxyYXdjb2xsaWRlcnNldF9jb1NldEZyaWN0aW9uAPwIJHJhd2NvbGxpZGVyc2V0X2NvRnJpY3Rpb25Db21iaW5lUnVsZQCLCCdyYXdjb2xsaWRlcnNldF9jb1NldEZyaWN0aW9uQ29tYmluZVJ1bGUAwAgncmF3Y29sbGlkZXJzZXRfY29SZXN0aXR1dGlvbkNvbWJpbmVSdWxlAIwIKnJhd2NvbGxpZGVyc2V0X2NvU2V0UmVzdGl0dXRpb25Db21iaW5lUnVsZQDBCCNyYXdjb2xsaWRlcnNldF9jb1NldENvbGxpc2lvbkdyb3VwcwCUByByYXdjb2xsaWRlcnNldF9jb1NldFNvbHZlckdyb3VwcwCVBx9yYXdjb2xsaWRlcnNldF9jb1NldEFjdGl2ZUhvb2tzAK4IIHJhd2NvbGxpZGVyc2V0X2NvU2V0QWN0aXZlRXZlbnRzAMIIKHJhd2NvbGxpZGVyc2V0X2NvU2V0QWN0aXZlQ29sbGlzaW9uVHlwZXMAwwgZcmF3Y29sbGlkZXJzZXRfY29TZXRTaGFwZQDYBS5yYXdjb2xsaWRlcnNldF9jb1NldENvbnRhY3RGb3JjZUV2ZW50VGhyZXNob2xkAP0IG3Jhd2NvbGxpZGVyc2V0X2NvU2V0RGVuc2l0eQD+CBhyYXdjb2xsaWRlcnNldF9jb1NldE1hc3MA/wgicmF3Y29sbGlkZXJzZXRfY29TZXRNYXNzUHJvcGVydGllcwDBAxlfX3diZ19yYXdjb2xsaWRlcnNldF9mcmVlAMoGEnJhd2NvbGxpZGVyc2V0X25ldwCXCRJyYXdjb2xsaWRlcnNldF9sZW4A/wsXcmF3Y29sbGlkZXJzZXRfY29udGFpbnMAgAkdcmF3Y29sbGlkZXJzZXRfY3JlYXRlQ29sbGlkZXIA6AEVcmF3Y29sbGlkZXJzZXRfcmVtb3ZlAJsEJHJhd2NvbGxpZGVyc2V0X2ZvckVhY2hDb2xsaWRlckhhbmRsZQCgCRpfX3diZ19yYXdzaGFwZWNvbnRhY3RfZnJlZQCxCRlfX3diZ19yYXduYXJyb3dwaGFzZV9mcmVlALUIEnJhd25hcnJvd3BoYXNlX25ldwCgCyFyYXduYXJyb3dwaGFzZV9jb250YWN0X3BhaXJzX3dpdGgAqAkbcmF3bmFycm93cGhhc2VfY29udGFjdF9wYWlyAOoGJnJhd25hcnJvd3BoYXNlX2ludGVyc2VjdGlvbl9wYWlyc193aXRoAKkJIHJhd25hcnJvd3BoYXNlX2ludGVyc2VjdGlvbl9wYWlyAO8HHV9fd2JnX3Jhd2NvbnRhY3RtYW5pZm9sZF9mcmVlALIJGHJhd2NvbnRhY3RwYWlyX2NvbGxpZGVyMQChCxhyYXdjb250YWN0cGFpcl9jb2xsaWRlcjIAogsicmF3Y29udGFjdHBhaXJfbnVtQ29udGFjdE1hbmlmb2xkcwCjCx5yYXdjb250YWN0cGFpcl9jb250YWN0TWFuaWZvbGQAhgkZcmF3Y29udGFjdG1hbmlmb2xkX25vcm1hbACNCBtyYXdjb250YWN0bWFuaWZvbGRfbG9jYWxfbjEAjggbcmF3Y29udGFjdG1hbmlmb2xkX2xvY2FsX24yAI8IHHJhd2NvbnRhY3RtYW5pZm9sZF9zdWJzaGFwZTEApAsccmF3Y29udGFjdG1hbmlmb2xkX3N1YnNoYXBlMgClCx9yYXdjb250YWN0bWFuaWZvbGRfbnVtX2NvbnRhY3RzAKYLI3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2xvY2FsX3AxAPAGI3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2xvY2FsX3AyAPEGH3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2Rpc3QAtAofcmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfZmlkMQC1Ch9yYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9maWQyALYKInJhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2ltcHVsc2UAtwoscmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfdGFuZ2VudF9pbXB1bHNlX3gAuAoscmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfdGFuZ2VudF9pbXB1bHNlX3kAuQomcmF3Y29udGFjdG1hbmlmb2xkX251bV9zb2x2ZXJfY29udGFjdHMApwsncmF3Y29udGFjdG1hbmlmb2xkX3NvbHZlcl9jb250YWN0X3BvaW50APIGJnJhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF9kaXN0ALoKKnJhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF9mcmljdGlvbgCUCi1yYXdjb250YWN0bWFuaWZvbGRfc29sdmVyX2NvbnRhY3RfcmVzdGl0dXRpb24AlQoycmF3Y29udGFjdG1hbmlmb2xkX3NvbHZlcl9jb250YWN0X3RhbmdlbnRfdmVsb2NpdHkAkAcdX193YmdfcmF3cG9pbnRwcm9qZWN0aW9uX2ZyZWUAswkYcmF3cG9pbnRwcm9qZWN0aW9uX3BvaW50AN4IG3Jhd3BvaW50cHJvamVjdGlvbl9pc0luc2lkZQCADCVfX3diZ19yYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9mcmVlALQJKXJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2NvbGxpZGVySGFuZGxlAIEMIHJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX3BvaW50AN8II3Jhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2lzSW5zaWRlAIIMJnJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2ZlYXR1cmVUeXBlAIMMJHJhd3BvaW50Y29sbGlkZXJwcm9qZWN0aW9uX2ZlYXR1cmVJZACvCx1fX3diZ19yYXdyYXlpbnRlcnNlY3Rpb25fZnJlZQC1CRxfX3diZ19yYXdyYXljb2xsaWRlcmhpdF9mcmVlALYJE19fd2JnX3Jhd3NoYXBlX2ZyZWUAyQcPcmF3c2hhcGVfY3Vib2lkAI0LFHJhd3NoYXBlX3JvdW5kQ3Vib2lkAIILDXJhd3NoYXBlX2JhbGwAsAsScmF3c2hhcGVfaGFsZnNwYWNlAKsGEHJhd3NoYXBlX2NhcHN1bGUA1AkRcmF3c2hhcGVfY3lsaW5kZXIAqAsWcmF3c2hhcGVfcm91bmRDeWxpbmRlcgCOCw1yYXdzaGFwZV9jb25lAKkLEnJhd3NoYXBlX3JvdW5kQ29uZQCPCw9yYXdzaGFwZV92b3hlbHMA9AYZcmF3c2hhcGVfdm94ZWxzRnJvbVBvaW50cwD1BhFyYXdzaGFwZV9wb2x5bGluZQCBChByYXdzaGFwZV90cmltZXNoAL4JFHJhd3NoYXBlX2hlaWdodGZpZWxkAKUFEHJhd3NoYXBlX3NlZ21lbnQAwgURcmF3c2hhcGVfdHJpYW5nbGUAmQQWcmF3c2hhcGVfcm91bmRUcmlhbmdsZQCYBBNyYXdzaGFwZV9jb252ZXhIdWxsAIIKGHJhd3NoYXBlX3JvdW5kQ29udmV4SHVsbAD7CRNyYXdzaGFwZV9jb252ZXhNZXNoAMMJGHJhd3NoYXBlX3JvdW5kQ29udmV4TWVzaAC/CRJyYXdzaGFwZV9jYXN0U2hhcGUAiwEYcmF3c2hhcGVfaW50ZXJzZWN0c1NoYXBlAIwCFXJhd3NoYXBlX2NvbnRhY3RTaGFwZQC0ARZyYXdzaGFwZV9jb250YWluc1BvaW50AIADFXJhd3NoYXBlX3Byb2plY3RQb2ludADeAhZyYXdzaGFwZV9pbnRlcnNlY3RzUmF5AMACEHJhd3NoYXBlX2Nhc3RSYXkAtQIccmF3c2hhcGVfY2FzdFJheUFuZEdldE5vcm1hbACAAhpfX3diZ19yYXdzaGFwZWNhc3RoaXRfZnJlZQC3CRhyYXdzaGFwZWNhc3RoaXRfd2l0bmVzczEA4AgXcmF3c2hhcGVjYXN0aGl0X25vcm1hbDEA4QgXcmF3c2hhcGVjYXN0aGl0X25vcm1hbDIA4ggiX193YmdfcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfZnJlZQC4CSZyYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF90aW1lX29mX2ltcGFjdACEDCByYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF93aXRuZXNzMQDjCCByYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF93aXRuZXNzMgDkCA9yYXdyb3RhdGlvbl9uZXcArgwUcmF3cm90YXRpb25faWRlbnRpdHkA2AwNcmF3cm90YXRpb25fdwCFDA5yYXd2ZWN0b3JfemVybwDlDA1yYXd2ZWN0b3JfbmV3AL0MD3Jhd3ZlY3Rvcl9zZXRfeQCjDA9yYXd2ZWN0b3Jfc2V0X3oApAwNcmF3dmVjdG9yX3h5egDhCQ1yYXd2ZWN0b3JfeXh6AOIJDXJhd3ZlY3Rvcl96eHkA4wkNcmF3dmVjdG9yX3h6eQDkCQ1yYXd2ZWN0b3JfeXp4AOUJDXJhd3ZlY3Rvcl96eXgA5gkWcmF3c2RwbWF0cml4M19lbGVtZW50cwDKByFfX3diZ19yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2ZyZWUA0AcacmF3ZGVidWdyZW5kZXJwaXBlbGluZV9uZXcA/AkfcmF3ZGVidWdyZW5kZXJwaXBlbGluZV92ZXJ0aWNlcwCBCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2NvbG9ycwCCCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX3JlbmRlcgCWAhhfX3diZ19yYXdldmVudHF1ZXVlX2ZyZWUAggcfX193YmdfcmF3Y29udGFjdGZvcmNlZXZlbnRfZnJlZQC5CR5yYXdjb250YWN0Zm9yY2VldmVudF9jb2xsaWRlcjIAhgwgcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2UA5QgqcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2VfbWFnbml0dWRlAIcMKHJhd2NvbnRhY3Rmb3JjZWV2ZW50X21heF9mb3JjZV9kaXJlY3Rpb24A5ggocmF3Y29udGFjdGZvcmNlZXZlbnRfbWF4X2ZvcmNlX21hZ25pdHVkZQCIDBFyYXdldmVudHF1ZXVlX25ldwDVCSJyYXdldmVudHF1ZXVlX2RyYWluQ29sbGlzaW9uRXZlbnRzAMsJJXJhd2V2ZW50cXVldWVfZHJhaW5Db250YWN0Rm9yY2VFdmVudHMAzAkTcmF3ZXZlbnRxdWV1ZV9jbGVhcgDkBx1fX3diZ19yYXdwaHlzaWNzcGlwZWxpbmVfZnJlZQDRBxZyYXdwaHlzaWNzcGlwZWxpbmVfbmV3ALEEJ3Jhd3BoeXNpY3NwaXBlbGluZV9zZXRfcHJvZmlsZXJfZW5hYmxlZACPDCZyYXdwaHlzaWNzcGlwZWxpbmVfaXNfcHJvZmlsZXJfZW5hYmxlZACJDB5yYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX3N0ZXAAkAstcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jb2xsaXNpb25fZGV0ZWN0aW9uAOUKJXJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfYnJvYWRfcGhhc2UA5gomcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19uYXJyb3dfcGhhc2UA5wogcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19zb2x2ZXIA6AorcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV9hc3NlbWJseQCRCy1yYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX3ZlbG9jaXR5X3Jlc29sdXRpb24A6QopcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV91cGRhdGUA6goscmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ192ZWxvY2l0eV93cml0ZWJhY2sAkgsdcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jY2QA6wotcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19jY2RfdG9pX2NvbXB1dGF0aW9uAJMLKXJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfY2NkX2Jyb2FkX3BoYXNlAJQLKnJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfY2NkX25hcnJvd19waGFzZQCVCyRyYXdwaHlzaWNzcGlwZWxpbmVfdGltaW5nX2NjZF9zb2x2ZXIAlgstcmF3cGh5c2ljc3BpcGVsaW5lX3RpbWluZ19pc2xhbmRfY29uc3RydWN0aW9uAOwKJnJhd3BoeXNpY3NwaXBlbGluZV90aW1pbmdfdXNlcl9jaGFuZ2VzAJcLF3Jhd3BoeXNpY3NwaXBlbGluZV9zdGVwAMkBIXJhd3BoeXNpY3NwaXBlbGluZV9zdGVwV2l0aEV2ZW50cwC4AR9fX3diZ19yYXdkZXNlcmlhbGl6ZWR3b3JsZF9mcmVlAPAHIHJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VHcmF2aXR5AJYILnJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VJbnRlZ3JhdGlvblBhcmFtZXRlcnMAsgQmcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUlzbGFuZE1hbmFnZXIAmwUjcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUJyb2FkUGhhc2UA5QckcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZU5hcnJvd1BoYXNlAJwFH3Jhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VCb2RpZXMA/wUicmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUNvbGxpZGVycwDeBSZyYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlSW1wdWxzZUpvaW50cwDmAyhyYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlTXVsdGlib2R5Sm9pbnRzAOcDJXJhd3NlcmlhbGl6YXRpb25waXBlbGluZV9zZXJpYWxpemVBbGwAwgEncmF3c2VyaWFsaXphdGlvbnBpcGVsaW5lX2Rlc2VyaWFsaXplQWxsAN0GHHJhd2NvbGxpZGVyc2V0X2lzSGFuZGxlVmFsaWQAgAkccmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVJZACvCyRyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlSWQArws1cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMAmQwPcmF3dmVjdG9yX3NldF94AJsMDnJlc2VydmVfbWVtb3J5ALsLInJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfdXAA1QgXcmF3c2hhcGVjb250YWN0X25vcm1hbDIA1QgWcmF3c2hhcGVjb250YWN0X3BvaW50MQDeCBZyYXdzaGFwZWNvbnRhY3RfcG9pbnQyAOMIGXJhd3JheWludGVyc2VjdGlvbl9ub3JtYWwA4wghcmF3cmF5Y29sbGlkZXJpbnRlcnNlY3Rpb25fbm9ybWFsAOMIF3Jhd3NoYXBlY29udGFjdF9ub3JtYWwxAOQIH3Jhd2NvbGxpZGVyc2hhcGVjYXN0aGl0X25vcm1hbDEA1QgfcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfbm9ybWFsMgDWCBhyYXdzaGFwZWNhc3RoaXRfd2l0bmVzczIA5QgxcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX251bUludGVybmFsUGdzSXRlcmF0aW9ucwD1CxhyYXdzaGFwZWNvbnRhY3RfZGlzdGFuY2UA7AsecmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVUeXBlAIMMKXJhd3JheWNvbGxpZGVyaW50ZXJzZWN0aW9uX2NvbGxpZGVySGFuZGxlAIEMIXJhd3JheWludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACEDCZyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlVHlwZQCDDCByYXdyYXljb2xsaWRlcmhpdF9jb2xsaWRlckhhbmRsZQDxCylyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACEDB5yYXdzaGFwZWNhc3RoaXRfdGltZV9vZl9pbXBhY3QA+AsmcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfY29sbGlkZXJIYW5kbGUA8QsecmF3cmF5Y29sbGlkZXJoaXRfdGltZU9mSW1wYWN0AIQMDXJhd3JvdGF0aW9uX3gA+AsNcmF3cm90YXRpb25feQDpCw1yYXdyb3RhdGlvbl96AIQMC3Jhd3ZlY3Rvcl94APgLC3Jhd3ZlY3Rvcl95AOkLC3Jhd3ZlY3Rvcl96AIQMHnJhd2NvbnRhY3Rmb3JjZWV2ZW50X2NvbGxpZGVyMQDxCyNyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfbGVuZ3RoVW5pdACHDBlfX3diZ19yYXdjb250YWN0cGFpcl9mcmVlALIJJV9fd2JnX3Jhd3JheWNvbGxpZGVyaW50ZXJzZWN0aW9uX2ZyZWUAtAkWX193YmdfcmF3cm90YXRpb25fZnJlZQCzCRRfX3diZ19yYXd2ZWN0b3JfZnJlZQC2CRhfX3diZ19yYXdzZHBtYXRyaXgzX2ZyZWUAtQkjX193YmdfcmF3c2VyaWFsaXphdGlvbnBpcGVsaW5lX2ZyZWUArgkQcmF3Y2Nkc29sdmVyX25ldwCvDRxyYXdzZXJpYWxpemF0aW9ucGlwZWxpbmVfbmV3AK8NE19fd2JpbmRnZW5fZXhwb3J0XzAAvg4fX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlcgCTDxNfX3diaW5kZ2VuX2V4cG9ydF8xAJUOE19fd2JpbmRnZW5fZXhwb3J0XzIApA0J3BEBAEEBC/cIqw7qArsMrQ+FD5UPlA/VDdQNgQ2XD60MtwuhDaENuAW4BecMvQ+ICYgJ7QPuA4QGmA/6CbEFtgygCvkJrg3WBuwFwQWTB60OrQ6tDq0OgQvBCbQLowT5AqsEogrCBvMM8gqsCMAJogf+DL4Psg6/D7wPuw+xDq4PgA7pCOwI4AflBO0JuAKvBZ0LvQXIA+4G2AauDq4Org6uDrMKzAjeCoUE4QKKBNsM4Qz0DM8MgAvQBaEHsgi7D7AOwA2vDv8NiQ/tCI0Mlg+hCaEJrw+6D9gP1g/XD9wMqQT+BdgPV3ditQzdC90L1gmKDPYKmAt0UHpmQ6MBSyH1DNcN2A2jDdoN1g32DNkNww3eDIENlw+vDKENoQ24BbgFvQ/gB+UE7Qm4Aq8FnQu9BcgD7gbYBrgOuA64DrgOswrMCN4KhQThAooE9AyhB7sPsA68D7sPug6uD4EO7Qi1DrUOtQ61DrQO1QO3DrcOtw63DrwOqQO5DrkOuQ65DrsOkAOWA+YMrwiwCPoJsQW2DKAK+QmuDdYG7AXBBZMHtg62DrYOtg6BC8EJtAujBPkCqwTzDKIHvg+yDr8PvQ6CDuwIng5boQ5foA5Ynw6TAqIOWYgJiAntA+4DkAyZD8YNpgnFDcYNxA3PDcsNxQ3FDckNxw3IDcAFhQ6GDocOiA6JDuQLmA2KDJkLxAnNCbEL3wuLDPcKxQnOCcYJgwvdC9oO9QzmDeIN3Q3tDfQN8QfnDe8N6A3fDNsNmArhDbMP8Q33DN8Now3gDfYM7g31DesN3QflDeQN7A2lDeMNrQXzDekN5gfqDd4N+AzyDfAN3A2BDd4M3gz6CpcPsQydD5EMpw7qAdQO1A7UDtQO2w79A6UO2AGkDmzKDsoOyg7KDtwO6QOoDm3SDtIO0g7SDt0O/gOmDmrmDK8IsAj9Cf8DugyhCv4JsA3VBO4FnASWB80OzQ7NDs0OgQvBCbQLowT5AqsE8gquBL4Psg6/D7wPuw/lDq4PjQ6oBdkO2Q7ZDtkO3g7qA8cOxw7HDscO3w7dBcsOyw7LDssOvA6jDl7gB8cD7Qm4Aq8FnQuABMgDywTYBtgO2A7YDtgOswrOBd4K0wK8AuUCzwzCB7sPsA7iDosO2gLMDswOzA7MDrsOvw6/Dr8Ovw60Djwi9AffA9sJmwu5DIINpASaB9MEvwfADsAOwA7ADsgGkAWbB6cDqwLQA54N9g2SDZINkQPmC9EInwq9D+AOtA/DD+EOrg+rC6sImw2mAZkN6AOdDYgEnA2UApoN4AGDCvwDwAy8C4QKtw3SBOoFpQSRB9AO0A7QDtAOxwytAo8N6gSiA/0E4QazCIwMjAzYCa4DsAXFD+YO5w6ODooP8AjnCLgD1gvaBbYInAuMBJ0F9wKkBs8Ozw7PDs8OyAyeAYMN8ASjA4EF5waFA+AL4AuSCqoOrAf0CsoP8Q7LBssP8g6PDowPsQjYC7EN/grNDKENoQ24BbgFvQ+uCvgDhASWDocK2wrgBOYFzwT2BcUOxQ7FDsUOzAz5AYkN7QSmA4kF1wm7CrYLtguDA5EEqQaMDsQP4w61D+QO9w2xD+8IvgfcCd4DmgT5CvkKxATDBPAFiAmICe0D7gOqCvMDhQGNAZAKlQLeBOcFzQSpB9UO1Q7VDtUOuQGOAYoN9gSgA/8Esg3cCvwM1wKdAugOtQapDsYP6Q7eBt8G6g7PCKoMsA+sCvUDlAGpAZEK7QHcBOEFzASqB8gOyA7IDsgOmwGCAYUN9wShA/wE7QbFBf0MkgTdA58PqwfHD+sO7A7zCOgHwg/VC6AE2QyrCf8J0wHUBO0F2wOoB9MO0w7TDtMO2wG2AYcN+ASaA4cF7QbFBb4Lvgv8Cp8PqwfRDcgP7Q7uDosP8wi2BsIPnAG4BPsBmA6LCsAP3wTpBboEwQ/XDtcO1w7XDsYMmQGRDekEnAOFBbMN3Qq9C70LngfvDrQGyQ/wDs4IjwSLBL8ClAXWAacF5AKPBYMGlwXaDPwCvAOCA6cHww7DDsMOww7BDLECjA3uBJsDggXiDLQN0QzRDJ8HoA/pB6QJzA/zDrYP9A6QDocEhAuEC/sE+wSoA6gK9wP7ApcOjAq7DdcE4gW/BIwH1g7WDtYO1g7DDJACiA3rBJgD/gS8CtIM0gygB6EP0gjND/UOnw32DpEOhgTICccJngSeBKYE3gfcA9EJ+ArgDLYNoQS1B8IE1wfRDtEO0Q7RDoUKwQfxCrAE8wLzBJIO9w7TDNMM8wmTDugIzw/4Ds4Pig6pCvIDhAGHAY8KuQ3hBOUFzgSLB8QOxA7EDsQOyQy+AYQN7ASfA4QF7QbFBeEL4QvRCrMGqweiD9AP+Q7BDbwPvQ+uD64PsQ/zCKsK9AMmmg6ICr8N3QToBbsEigfBDsEOwQ7BDsoM3gGQDfEEmQODBbIHtwXzCvMK3weSB64H0g/8DqMP/Q75DZQErQrxAyecDooKvg3Y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IH04AgAgEUE0aiB8OAIAIBFBMGogIzYCACARQRxqIC02AgAgEUEYaiAJNgIAIBFBFGogDzYCACARQRBqIDQ2AgAgEUEIaiBFNgIAIBFBBGogMzYCACARQcQAaiACKQO4EjcCACARQcwAaiAYKQMANwIAIBFB1ABqIBcpAwA3AgAgEUHcAGogEDYCACARQfgAaiAUNgIAIBFB/ABqIIEBOAIAIBFBgAFqIAs2AgAgEUGEAWogdTcCACARQYwBaiAeNgIAIBFBkAFqIHY3AgAgEUGYAWogLjYCACARQZwBaiByNwIAIBFBpAFqIDA2AgAgEUGoAWogbTcCACARQbABaiAsNgIAIBFBtAFqIHc3AgAgEUG8AWogNjYCACARQcABaiBuNwIAIBFByAFqIIkBOAIAIBFBzAFqIA42AgAgEUHQAWogbzcCACARQdgBaiAkNgIAIBFB3AFqIGs3AgAgEUHoAWogQTYCACARQewBaiCKATgCACARQfABaiCLATgCACARQfQBaiCFATgCACARQfgBaiCGATgCACARQfwBaiCHATgCACARQYACaiA3NgIAIBFBhAJqIHA3AgAgEUGMAmogOTYCACARQZACaiBqNwIAIBFBmAJqIB02AgAgEUHkAWogMjoAACARQeAAaiACKQOgEjcCACARQegAaiACKQOoEjcCACARQfAAaiAMKQMANwIAIBFBxAJqIBo2AgAgEUHIAmogMTYCACARQcwCaiA1NgIAIBFB0AJqIB82AgAgEUHUAmogLzYCACARQdgCaiB+OAIAIBFB3AJqIH84AgAgEUHgAmoggAE4AgAgEUHkAmogPzoAACARQbwCaiAEKQMANwIAIBFBtAJqIAgpAwA3AgAgEUGsAmogGykDADcCACARQaQCaiAWKQMANwIAIBFBnAJqIAIpA/gRNwIAIBFB9AJqICs6AAAgEUH1AmogQDoAACARQfYCaiAHOgAAIBFB8AJqIDg2AgAgEUHsAmogEjYCACARQegCaiBGNgIAIBFB5wJqIAEtAAA6AAAgEUHlAmogAi8B9BE7AAAgAiANQQFqIg02AvARIBVBgANqIRUgCiANRw0ACyACKALoESIKQYKAgIB4Tg0TIAYhAwwXC0EEIARBuKvBABDTDQALQQQgHkG4q8EAENMNAAtBBCAKQbirwQAQ0w0AC0EQIARBuKvBABDTDQALIAJCgcoANwOYCiACQZgKahCiDSEDDA0LIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwMCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMCwsgAkEAOgCbCiACQSU7AJkKIAJBADYCnAogAkEBOgCYCiACQZgKahCiDSEDDAoLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwJCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMCAsgAkEAOgCbCiACQSU7AJkKIAJBADYCnAogAkEBOgCYCiACQZgKahCiDSEDDAcLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwwGCyACQQA6AJsKIAJBJTsAmQogAkEANgKcCiACQQE6AJgKIAJBmApqEKINIQMMBQsgHSEDDAQLIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hEgwBC0EEQeTVwQBBhKvBABC+CiEBIABBAjYCxAcgACABNgIADA4LIBoEQCAaQTBBBBCIDwsgEiEDDAELIAJBADoAmwogAkElOwCZCiACQQA2ApwKIAJBAToAmAogAkGYCmoQog0hAwsgAigC7BEhBCANBEAgBCEBA0ACQCABKAIARQ0AIAFBxAJqKAIAIgYEQCAGQTBBBBCIDwsgAUHoAmooAgAiBkUNACABQewCaigCACAGQQN0QQQQiA8LIAFBgANqIQEgDUEBayINDQALCyACKALoESIBRQ0EIAQgAUGAA2xBEBCIDwwECwJAAkACQAJAIBMoAgQiBEEETwRAIBMgBEEEayIDNgIEIBMgEygCACIIQQRqNgIAIANFBEAgAkKBygA3A5gKIAJBmApqEKINIQMMBAsgCDUAACFoIBMgBEEFayIVNgIEIBMgCEEFaiIaNgIAAkACQCAILQAEIgEOAgQAAQsgA0EESw0CIAJCgcoANwOYCiACQZgKahCiDSEDDAQLQQxBBBCzDiIDRQ0aIAMgATYCBCADQYSAgIB4NgIADAMLIAJCgcoANwOYCiACQZgKahCiDSEDDAILIBMgBEEJ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GGogBSkDADcCACAUQRBqIAIpAwA3AgAgFEEIaiAAKQMANwIAIBRBMGogFigCADYCACAMIA9BAWoiADYC3AIgACAERgRAIBpBgPHBABCbCCAMKALUAiEEIAwoAtgCIQMLIAMgAEE0bGoiAiAMKQOQBDcCACACQShqIAxBkARqIgBBKGopAwA3AgAgAkEgaiAAQSBqKQMANwIAIAJBGGogAEEYaikDADcCACACQRBqIABBEGopAwA3AgAgAkEIaiAAQQhqKQMANwIAIAJBMGogAEEwaigCADYCACAMIA9BAmoiADYC3AIgACAERgRAIBpBkPHBABCbCCAMKALUAiEEIAwoAtgCIQMLIAMgAEE0bGoiAiAMKQPIBDcCACACQShqIAxByARqIgBBKGopAwA3AgAgAkEgaiAAQSBqKQMANwIAIAJBGGogAEEYaikDADcCACACQRBqIABBEGopAwA3AgAgAkEIaiAAQQhqKQMANwIAIAJBMGogAEEwaigCADYCACAMIA9BA2oiADYC3AIgACAERgRAIBpBoPHBABCbCCAMKALYAiEDCyADIABBNGxqIgIgDCkDgAU3AgAgAkEoaiAMQYAFaiIAQShqKQMANwIAIAJBIGogAEEgaikDADcCACACQRhqIABBGGopAwA3AgAgAkEQaiAAQRBqKQMANwIAIAJBCGogAEEIaikDADcCACACQTBqIABBMGooAgA2AgAgDCAPQQRqIgA2AtwCAkAgF0EBcUUNAAJAIAAEQCAMKALQAkUNASADKgIYIAwoAswCIgAqAgCUIANBHGoqAgAgAEEEaioCAJSSIANBIGoqAgAgAEEIaioCAJSSIgpDAACgtV0NByAKjCEKIAwoAvQCIgUgDCgC7AJGBEAgGUG03sEAELgICyAFQQN0IgIgDCgC8AJqIgAgCjgCBEEAIQMgAEEANgIAIAwgBUEBajYC9AIgDCgC8AIiDSACaiIAKgIEIQogACgCACEEAkAgBUUNAANAIAogDSAFQQFrIgJBAXYiA0EDdGoiAEEEaioCAF5FBEAgBSEDDAILIA0gBUEDdGogACkCADcCACADIQUgAkEBSw0ACwsgDSADQQN0aiIAIAo4AgQgACAENgIADAILQQBBAEGw8cEAEIgLAAtBAEEAQcDxwQAQiAsACwJAIBhBAXFFDQACQCAMKALcAiIAQQJP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AAsLQgEhMyAOQQFxRQRAIAUgCCAkIAMqAgCUICUgA0EEaioCAJSSICIgA0EIaioCAJSSICNeIgMbIQggAyAKciEKCyAKQQFxRQ0HICWMISUCQCAJQQxJBEBBACEKQ///f/8hIyAQIQNBACEFDAELIAZB/v///wNxIQlBACEKQ///f/8hIyAQIQNBACEFA0AgA0EEaioCACAllCAkIAMqAgCUkyAiIANBCGoqAgCUkyImICNeIQsgA0EQaioCACAllCAkIANBDGoqAgCUkyAiIANBFGoqAgCUkyInICYgIyALGyIjXiEMICcgIyAMGyEjIAVBAWogBSANIAsbIAwbIQ0gCyAMciAKciEKIANBGGohAyAJIAVBAmoiBUcNAAsLIA5BAXFFBEAgBSANIANBBGoqAgAgJZQgJCADKgIAlJMgIiADQQhqKgIAlJMgI14iAxshDSADIApyIQoLIApBAXFFDQcgAiAITQ0FIAIgDU0iDkUEQCAQIA1BDGxqIgMqAgAiKCAQIAhBDGxqIgwqAgAiKpMiIiAilCADKgIEIisgDCoCBCIskyIiICKUkiADKgIIIikgDCoCCCItkyIiICKUkpEhJEF/IQlBACELIBAhA0MAAAAAIScDQCADIQUgByEDICogBSoCACIjkyIiICKUICwgBSoCBCIlkyIiICKUkiAtIAUqAggiJpMiIiAilJKRISICQAJAAkAgIyAokyIjICOUICUgK5MiIyAjlJIgJiApkyIjICOUkpEiJiAkXUUEQCAiICRdRQ0BICYhJSAkISMMAwsgIiAkXQ0BICIhJSAkISMgJiEiDAILICYgIiAiICZdIgUbISUgIiAmIAUbISMgJCEiDAELICYgIiAiICZdIgUbISMgIiAmIAUbISIgJCElC0MAAAAAQwAAAAAgJSAjICKTkiAiICUgI5MiJpIgIiAmkyAlICMgIpKSlJSUIiIgIkMAAAAAXRsgIiAiXBuRQwAAgD6UIiIgJ14hBSAiICcgBRshJyALIAkgBRshCSADQQxBACADIA9HG2ohByAGIAtBAWoiC0cNAAsMBwsgDSACQajuwwAQiAsACyAAQoCAgIAoNwIADBALIAMgFkHY1cIAENMNAAtBBEEMQZDExAAoAgAiAEHMCCAAGxEAAAALIAcgAkHAwMMAEIgLAAsgBiACQcDAwwAQiAsACyAI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QwAAAABDAAAAACCMASCMAUMAAAAAXRsgjAEgjAFcGyAVKAJQIBUoAlQiHigCCEEBa0F4cWpBCGoiECAeKAKoARELACBGKAJQIEYoAlQiGCgCCEEBa0F4cWpBCGoiFCAYKAKoARELAJKSIJUBII4BII0BIKkBlJKUXg0AIB9B+AJqEKUMAkAgOi0APEUEQCAfQfAFaiAjEPsKDAELIEcgOykCADcCACAuICcpAgA3AgAgPyBAKQIANwIAIB9B8AVqIg5BGGogKEEYaigCADYCACAOQRBqIChBEGopAgA3AwAgDkEIaiAoQQhqKQIANwMAIEdBCGogO0EIaigCADYCACAuQQhqICdBCGooAgA2AgAgP0EIaiBAQQhqKAIANgIAIB8gKCkCADcD8AULIB9BuANqIiZBOGogH0HwBWoiDkE4aikDADcDACAmQTBqIA5BMGopAwA3AwAgJkEoaiAuKQMANwMAICZBIGogDkEgaikDADcDACAmQRhqIA5BGGopAwA3AwAgJkEQaiAOQRBqKQMANwMAICZBCGogDkEIaikDADcDACAfIB8pA/AFNwO4AyAfQfgCaiEOAkAgAUUNACABLQAsRQRAIB9BsAZqIg4gAUHMAGoQ+woMAQsgMyABKQKYAjcCACA4IAEpAogBNwIAICEgASkClAE3AgAgH0GwBmoiDkEYaiABQcgAaigCADYCACAOQRBqIAFBQGspAgA3AwAgDkEIaiABQThqKQIANwMAIDNBCGogAUGgAmooAgA2AgAgOEEIaiABQZABaigCADYCACAhQQhqIAFBnAFqKAIANgIAIB8gASkCMDcDsAYLIB9B+ANqIjRBOGogDkE4aikCADcDACA0QTBqIA5BMGopAgA3AwAgNEEoaiAOQShqKQIANwMAIDRBIGogDkEgaikCADcDACA0QRhqIA5BGGopAgA3AwAgNEEQaiAOQRBqKQIANwMAIDRBCGogDkEIaikCADcDACAfIA4pAgA3A/gDIB9B+ARqIiZBGGogFUEsQYQBICAbaiIBQRhqKAIANgIAICZBEGogAUEQaikCADcDACAmQQhqIAFBCGopAgA3AwAgHyABKQIANwP4BCAfQbgEaiIBIB9BuANqICYQzAIgH0G4BWoiIEEYaiBGQSxBhAEgGRtqIg5BGGooAgA2AgAgIEEQaiAOQRBqKQIANwMAICBBCGogDkEIaikCADcDACAfIA4pAgA3A7gFICYgNCAgEMwCICAgIiABIBAgHiAmIBQgGEMAAAAAIJUBQQAgEhEsACAfLQDsBUEGcUEERg0AIJUBIJUBIB8qArgFIowBIIwBIJUBXhsgjAEgjAFcGyGVAQsgH0GwBmogH0HMAWogFxCSAyAfKAK0BiEOIB8oArAGIQEgHygCuAYNAgwFC0GwvMIAQShB2LzCABDWDAALIB9BsAZqIB9BzAFqIBcQkgMgHygCtAYhDiAfKAKwBiEBIB8oArgGDQALDAILQYS4wgBBLEGwuMIAENcLAAtBsInCAEETQfS3wgAQ1wsACyAfKALQAiIBQSFJDQAgHygC1AEgAUECdEEEEIgPDAALAAtBsInCAEETQeS3wgAQ1wsACyACIAIgL0dBA3RqIQEgLyACIg5HDQALIB8oAmQiAUUNACAfKAJgIAFBA3RrQQhrIAFBCWxBEWpBCBCIDwsgGyCVATgCBCAbIJUBILEBXTYCACAfQfAGaiQADAILIAItADxBAUcNACASQcQAaioCACGsASASQUBrKgIAIaYBIBJBPGoqAgAhqAEgEkE4aioCACGqASASQTRqKgIAIacBIBJBMGoqAgAhqwEgEkEsaioCACGtASACKgKMASGZASACKgLoASGWASACKgKQASGSASACKgLsASGeASACKgL0ASGTASACKgKUASGUASACKgLEASGkASACKgL8ASGRASACKgK8ASGyASACKgLwASGiASACKgLAASGaASACKgL4ASGdASACKgKAASGQASACKgKMAiGPASACKgKwASGOASACKgKEASGNASACKgKQAiGMASACKgK0ASGVASAfILEBIAIqArgBIAIqApQClJQgAioCiAGSOALUASAfII0BILEBIJUBIIwBlJSSOALQASAfIJABILEBII4BII8BlJSSOALMASAfIJQBILEBIKIBILIBlCCdASCaAZSSIJEBIKQBlJKUkjgC4AEgHyCSASCxASCeASCyAZQgkwEgmgGUkiCdASCkAZSSlJI4AtwBIB8gmQEgsQEglgEgsgGUIJ4BIJoBlJIgogEgpAGUkpSSOALYASAfQRxqIB9BzAFqIhMgsQEgAkFAayACQagCahCcAiAfIKoBIB8qAigijgGUIK0BIB8qAhwikQGUkyCrASAfKgIgIpAB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AnQiDiADKAIcaigCACECIA8oAiwhASAXQQhqIA9BxAD8CgAAIBBBADYCxAIgEEEANgKMAiAQQQA2AoACIBcgFyoCCCABIAJqInmzlSKdATgCCCADKAIUIgEgR00NAQJAIEdBAWoiAiABSQRAIAMoAhAiASACQQJ0aiJxKAIAIicgASAOaiJyKAIAIiZJDQQgAygCCCJjICdPDQEgJyBjQaiMwgAQjw8ACyACIAFBmIzCABCICwALIAYoAowDIVIgBigCiAMhUyAPKgIAIcQBIAMoAgQhayAnICZrIhghDyAQQfgBaiIOIkMoAggiAiAYSQR/IBggAiIBayEeIB4gQygCACABa0sEQCBDIAEgHkEEQRgQ9gYgQygCCCEBCyAOKAIEIhkgAUEYbGohIyAeQQJPBEAgDyACQX9zakEYbCISBEAgI0EAIBL8CwALIBkgAkFobGogASAPakEYbGpBGGshIyABIB5qQQFrIQELICNCADcCACAjQRBqQgA3AgAgI0EIakIANwIAIAFBAWoFIBgLIQEgQyABNgIIIA4gDigCFCICIA9JBH8gDyACIgFrIRkgGSAOKAIMIAFrSwRAIA5BDGogASAZQQRBwAAQ9gYgDigCFCEBCyAOKAIQIAFBBnRqIRIgGUECTwRAIA8gAkF/c2oiD0EDcSECIBlBAmtBA08EQCAPQXxxISMDQCASQgA3AgAgEkEQakIANwIAIBJBCGpCgICAgICAgMA/NwIAIBJBGGpCADcCACASQSBqQgA3AgAgEkEoakIANwIAIBJBMGpCADcCACASQThqQgA3AgAgEkHQAGpCADcCACASQcgAakKAgICAgICAwD83AgAgEkFAa0IANwIAIBJB2ABqQgA3AgAgEkHgAGpCADcCACASQegAakIANwIAIBJB8ABqQgA3AgAgEkH4AGpCADcCACASQYgBakKAgICAgICAwD83AgAgEkGAAWpCADcCACASQbgBakIANwIAIBJBsAFqQgA3AgAgEkGoAWpCADcCACASQaABakIANwIAIBJBmAFqQgA3AgAgEkGQAWpCADcCACASQcABakIANwIAIBJByAFqQoCAgICAgIDAPzcCACASQdABakIANwIAIBJB2AFqQgA3AgAgEkHgAWpCADcCACASQegBakIANwIAIBJB8AFqQgA3AgAgEkH4AWpCADcCACAS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aiItKAIAQYCAgIB4Rg0DIC0oAqACICIoAghHDQMgIigCECIQIC0oAghPDQQgGigC5AEhGCAgIQIgLSgCBCAQQfADbGoQnQciHgRAIBggD0HgA2xqIiMgIkEEaiIQKQIANwIAICNBCGogEEEIaikCADcCACAjQQM2AswDICMgAjYCFCAjIBI2AhAgHiAtKAKUAmxBAXQgEmoiEiAaKAKUAUsEQCBBIBIQzQILIB4gIGohIAsgDyACICBHaiEPCyAOQQhqIQ4gAUEIayIBDQALDAMLDAMLQbCJwgBBE0HYqcIAENcLAAtB6KnCABCRDwALIBooAtABIgEgIEkEQCAgIAEiAmsiESAaKALIASABa0sEQCAaQcgBaiABIBFBBEHIABD2BiAaKALQASECCyAaKALMASACQcgAbGohDiARQQJPBEAgICABQX9zaiIQQQFxIQ8gASAgQQJrRwRAIBBBfnEhAQNAIA5CADcCACAOQQhqQn83AgAgDkEQakJ/NwIAIA5BGGpCfzcCACAOQSBqQX82AgAgDkHIAGpCADcCACAOQcQAakEAOwEAIA5BPGpC////+/f//7//ADcCACAOQTRqQv////v3//+//wA3AgAgDkEsakL////79///v/8ANwIAIA5BJGpCgICAgPD//79/NwIAIA5B0ABqQn83AgAgDkHYAGpCfzcCACAOQeAAakJ/NwIAIA5B6ABqQX82AgAgDkGEAWpC////+/f//7//ADcCACAOQfwAakL////79///v/8ANwIAIA5B9ABqQv////v3//+//wA3AgAgDkHsAGpCgICAgPD//79/NwIAIA5BjAFqQQA7AQAgDkGQAWohDiABQQJrIgENAAsLIA8EQCAOQn83AgggDkIANwIAIA5BADsBRCAOQv////v3//+//wA3AjwgDkL////79///v/8ANwI0IA5C////+/f//7//ADcCLCAOQoCAgIDw//+/fzcCJCAOQRBqQn83AgAgDkEYakJ/NwIAIA5BIGpBfzYCACAOQcgAaiEOCyACIBFqQQFrIQILIA5CfzcCCCAOQgA3AgAgDkEAOwFEIA5C////+/f//7//ADcCPCAOQv////v3//+//wA3AjQgDkL////79///v/8ANwIsIA5CgICAgPD//79/NwIkIA5BEGpCfzcCACAOQRhqQn83AgAgDkEgakF/NgIAIAJBAWohIAsgGiAgNgLQASAAKAJwIgJBgJTr3ANHBEAgACkDaCHIASAXQZgEaiIBENAKIBdBgAFqIAEgyAEgAhD2CSAAKQN4IsgBIBcpA4ABfCLJASDIAVQNBiAAKAKAASAXKAKIAWoiAUGAlOvcA08EQCDJAUJ/UQ0HIMkBQgF8IckBIAFBgJTr3ANrIQELIAAgATYCgAEgACDJATcDeAsgAEGAlOvcAzYCcCAXQYABahDQCiAXKQOAASHIASAAIBcoAogBIg42AlAgACDIATcDSAJAAkACQCB5RQ0AIBooApgCIgEgGigCgAIiAiABIAJJGyEiIBooApQCIYIBIBooAvwBITMgGigCqAIieiAaKAK4AiIBRgRAIBpBnAJqIWIgFyoCFEPbD8lAlCKMASAXKgIIIrABIIwBlCAXKgIQIo4BII4BkpKVIbwBQwAAAABDAACAP0MAAIA/ILABILwBlCKMAZVDAACAv5IijQEgjQGUII4BII4BII0BQwAAgD+SQwAAgECUlJSVQwAAgD+SlSCMAUMAAAAAWxshvgFDAAAAAEMAAIA/ILABlSCwAUMAAAAAWxshuQEgFyoCLCKNAUP//39/XCEBII0BIBcqAiQijAGMlEP//3//IAEbIb0BIIwBII0BlEP//39/IAEbIrIBjCG/ASAaKAKMAiJeIAIgAiBeSxshLCAaKAJgIg8gGigChAEiASABIA9LGyGDASAaKAJUIg4gGigCeCIBIAEgDksbITUgGigCSCICIBooAmwiASABIAJLGyE2ILABQwAAAD+UIcABIIwBIBcqAiiUIcEBIHlBAWshTSAaKALAAiInIBooAsQCImxBBHRqIW0gGigC2AEiIyAaKALcASJ7QYgBbGohXSAaKALMASItIBooAtABImdByABsaiFfIBooAlwiEiAPQcAEbGohfCAaKAJQIh4gDkGsB2xqIX0gGigCRCIZIAJBuAdsaiFoIBooAoABISogGigCdCExIBooAmghKyAaKALwASFuIBdBmAFqIWAgF0GwBGohYSAaKALkASEfIBooAogCISEgCSgCTCFpIAkoAkghaiAaKAKwAiFzIBooAqACIXQgFygCPCFkIBcoAjghZiAXKgIgIbcBIBJB/ABqISYgGigC9AEiOkHQAmwhFSAaKALoASJGQeADbCFPIBooArQC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osIAEJEPAAtBsInCAEETQciiwgAQ1wsACyABIHtByKrCABCODwALIAEgZ0GoqcIAEI4PAAtBmKnCABCRDwALQbCJwgBBE0GIqcIAENcLAAtB+KjCABCRDwALQbCJwgBBE0HoqMIAENcLAAsgECBnQZiqwgAQjg8AC0GIqsIAEJEPAAtBsInCAEETQfipwgAQ1wsACyAiBEBBACECA0AgAiCCAWoiA0EIaioCACGxASADQQRqKgIAIZUBIAIgM2oiBCADKgIAIAQqAgCSOAIAIARBBGoiACCVASAAKgIAkjgCACAEQQhqIgAgsQEgACoCAJI4AgAgA0EUaioCACGxASADQRBqKgIAIZUBIARBDGoiACADQQxqKgIAIAAqAgCSOAIAIARBEGoiACCVASAAKgIAkjgCACAEQRRqIgAgsQEgACoCAJI4AgAgAkEYaiECICJBAWsiIg0ACwsgF0EBNgKcBCAXIAE2ApgEIBdBATYCVCAXIHo2AlAgF0IANwKMASAXQoGAgIDAADcChAEgF0GE/8EANgKAASAXQdAAaiAXQZgEaiAXQYABakGM/8EAEPkMAAsgACkDSCHIASAXQZgEaiIBENAKIBdBgAFqIAEgyAEgDhD2CSAAKQNYIsgBIBcpA4ABfCLJASDIAVQNASAAKAJgIBcoAogBaiIBQYCU69wDTwRAIMkBQn9RDQIgyQFCAXwhyQEgAUGAlOvcA2shAQsgACABNgJgIAAgyQE3A1gLIABBgJTr3AM2AlAgF0GAAWoQ0AogFykDgAEhyQEgACAXKAKIASItNgKwASAAIMkBNwOoASAaKALYASICIBooAtwBQYgBbGohDyAaKALMASIOIBooAtABQcgAbGohAQNAAkAgDkUNACABIA5GDQAjAEEgayIRJAACQCAOKAIgIhBBf0YNAAJAAkACQAJAAkACQCAQID9JBEAgMiAQQYADbGohECAOKAIEIRIgDigCAEEBaw4CAgMBCyAQID9B6KfCABCICwALIBJBBk8NAyAQIBJBAnRqQdACaiAOKgIkOAIADAULIBJBBkkNASASQQZBiKjCABCICwALIBJBBkkNAiASQQZBmKjCABCICwALIBAgEkEMbGpBGGogDioCJDgCAAwCCyARQQA2AhggEUEBNgIMIBFBzP7BADYCCCARQgQ3AhAgEUEIakH4p8IAELgNAAsgECASQRxsakGkAWogDioCJDgCAAsgEUEgaiQAIA5ByABqIQ4MAQsgAiAPRwRAIwBBIGsiECQAAkACQAJAAkACQAJAAkAgAigCECIOID9JBEAgMiAOQYADbGohDiACKAIEIREgAigCAEEBaw4CAgMBCyAOID9B+KzCABCICwALIBFBBk8NAiAOIBFBAnRqQdACaiACKgIUOAIADAULIBFBBkkNAyARQQZBmK3CABCICwALIBFBBkkNASARQQZBqK3CABCICwALIBBBADYCGCAQQQE2AgwgEEHM/sEANgIIIBBCBDcCECAQQQhqQYitwgAQuA0ACyAOIBFBHGxqQaQBaiACKgIUOAIADAELIA4gEUEMbGpBGGogAioCFDgCAAsgEEEgaiQAIAJBiAFqIQJBACEODAELCyAaKAJcIgIgGigCYEHABGxqIRIgGigCUCIRIBooAlRBrAdsaiEQIBooAkQiHCAaKAJIQbgHbGohGANAIBAgEUchAUEBIQ4CQANAAkAgDkEBcQRAAkAgHEUNACAYIBxGDQAgHCBAIDsQ0gMgHEG4B2ohDgNAIA4gGEYNASAOIEAgOxDSAyAOQbgHaiEODAALAAtBACEcIAENAQsgAiASRg0CAkAgAi0AuAQiGUUNAAJAIAIoArQEIg5Bf0YEQCAZQQVrQXxPDQIMAQsCQCAOIDtJBEAgAi0AuQQiDyBAIA5BAnRqKAIAIh4oAoQBIiBPDQEgAioCkAQhjQEgAikC2AMhyAEgHigCgAEgD0EGdGoiDiACKgJ4IowBOAI4IA4gjAEgAioCfJI4AjQgDiCNATgCPCAOIMgBNwIsIBlBAUYNAyACLQC6BCIPIB4oAoQBIiBPDQEgHigCgAEgD0EGdGoiDiACKgLEASKMATgCOCAOIIwBIAIqAsgBkjgCNCAOII0BOAI8IA4gyAE3AiwgGUECRg0DIAItALsEIg8gHigChAEiIE8NASAeKAKAASAPQQZ0aiIOIAIqApACIowBOAI4IA4gjAEgAioClAKSOAI0IA4gjQE4AjwgDiDIATcCLCAZQQNGDQMgAi0AvAQiDyAeKAKEASIgTw0BIB4oAoABIA9BBnRqIg4gAioC3AIijAE4AjggDiCMASACKgLgApI4AjQgDiCNATgCPCAOIMgBNwIsIBlBBEcNAgwDCyAOIDtByKXCABCICwALIA8gIEHYpcIAEIgLAAtBBEEEQbilwgAQiAsACyACQcAEaiECQQAhDgwBCwsCQCARLQCkByIORQ0AAkAgESgCoAciAUF/RgRAIA5BBWtBfE8NAgwBCwJAIAEgO0kEQCARLQClByIPIEAgAUECdGooAgAiGSgChAEiIE8NASAZKAKAASAPQQZ0aiIBIBEqAngijAE4AjggASCMASARKgJ8kjgCNCABIBEpAtgDNwIsIAEgESoC2AMgESkC4AMiyAGnvpK8rSARKgLcAyDIAUIgiKe+krytQiCGhDcCJCAOQQFGDQMgES0ApgciDyAZKAKEASIgTw0BIBkoAoABIA9BBnRqIgEgESoCxAEijAE4AjggASCMASARKgLIAZI4AjQgASARKQLkBDcCLCABIBEqAuQEIBEpAuwEIsgBp76SvK0gESoC6AQgyAFCIIinvpK8rUIghoQ3AiQgDkECRg0DIBEtAKcHIg8gGSgChAEiIE8NASAZKAKAASAPQQZ0aiIBIBEqApACIowBOAI4IAEgjAEgESoClAKSOAI0IAEgESkC8AU3AiwgASARKgLwBSARKQL4BSLIAae+krytIBEqAvQFIMgBQiCIp76SvK1CIIaENwIkIA5BA0YNAyARLQCoByIPIBkoAoQBIiBPDQEgGSgCgAEgD0EGdGoiASARKgLcAiKMATgCOCABIIwBIBEqAuACkjgCNCABIBEpAvwGNwIsIAEgESoC/AYgESkChAciyAGnvpK8rSARKgKAByDIAUIgiKe+krytQiCGhDcCJCAOQQRHDQIMAwsgASA7QdihwgAQiAsACyAPICBB6KHCABCICwALQQRBBEHIocIAEIgLAAsgEUGsB2ohEQwBCwsgcigCACIBIHEoAgAiAk0EQCACIGNNBEAgASACRwRAIGsgAkEDdGohI0MAAAAAQwAAgD8gxAGVIMQBQwAAAABbGyGdASBrIAFBA3RqIRwgGigC/AEhICAaKAKIAiEeIBooAowCITAgGigCgAIhJyAaKAKgAiExIBooAqgCIRkgCSgCSCEYIAkoAkwhEiAaKALEAiERA0AgHCgCBCEBIBwoAgAhDgJAAkACQAJAAkACQAJAAkACQCARRQ0AIA4gWU8NACABIFogDkEUbGoiAigCAEcNACACKAIEIgEgEk8NASAYIAFBpAJsaiIPKAIAQYCAgIB4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HCAVQTBqIMkBNwMAIBVCidm54o7TvpcINwM4IBUgyAE3AyggBygCECJRQbABbCEQIAEqAhxDCtcjPJQhjQEgBigCiAMhEyAGKAKMAyESIAcoAgwhTwNAAkACQAJAAkAgDiAQRwRAIA4gT2oiESgCAEUNAyARQfIAai0AAA0DIBFBIGooAgBFDQMCQCARQSRqKAIAIgEgEk8NACATIAFBgANsaiIBKAIAQQFHDQAgASgCBCARQShqKAIARg0CC0GwicIAQRNBoLzCABDXCwALIBUgBzYCmAEgFSAGNgKUASAVIAQ2ApABIBVCADcCfCAVQQA2AnAgFUEANgJkIBVBADYCWCAVIAUoAkAiJDYCjAEgFSAFKAI8ICQoAghBAWtBeHFqQQhqIjk2AogBIJUBIYwBIAMoAggiAkUNASADKAIEIgEgAkEDdGohRyABQQhqIQ4gFUGIAmohJSAFKAIUIScgBSgCECEXIAUoAgQhJiAFKAIIIRogBSgCOCEsIAUoAjQhKiAVQegDaiEcIAYoAogDITQgBigCjAMhLyAkQSBqISIDQAJAIAEoAgAiAiAvTw0AIDQgAkGAA2xqIgIoAgBBAUcNACACKAIEIAEoAgRHDQAgDiEYAkAgAi0APEUNACACKgKkASGdASACKgLoASGbASACKgKoASGZASACKgLsASGaASACKgL0ASGWASACKgKsASGSASACKgLEASGoASACKgL8ASGTASACKgK8ASGkASACKgLwASGeASACKgLAASGyASACKgL4ASGiASACKgKYASGUASACKgKMAiGRASACKgKwASGQASACKgKcASGPASACKgKQAiGOASACKgK0ASGNASAVIJUBIAIqArgBIAIqApQClJQgAioCoAGSOALIAiAVII8BIJUBII0BII4BlJSSOALEAiAVIJQBIJUBIJABIJEBlJSSOALAAiAVIJIBIJUBIJ4BIKQBlCCiASCyAZSSIJMBIKgBlJKUkjgC1AIgFSCZASCVASCaASCkAZQglgEgsgGUkiCiASCoAZSSlJI4AtACIBUgnQEglQEgmwEgpAGUIJoBILIBlJIgngEgqAGUkpSSOALMAiAVQZwBaiAVQcACaiCVASACQUBrIAJBqAJqEJwCIAIoAvACIgFFDQAgAigC7AIiEyABQQN0aiErIBNBCGohDiAVKgK0ASGQASAV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AAAgKCgABCEmICggATYABCAoKAAMIQ4gKCAUNgAMICgoABQhESAoIBA2ABQgKCgAHCEiICggEjYAHCAoQQhqIiooAAAhHiAqIAI2AAAgKEEQaiISKAAAIQ8gEiATNgAAIChBGGoiEyoAACGNASATIIwBOAAAIChBIGoiAigAACEQIAIgGDYAACAoKAAkIRQgKCAgNgAkIChBKGoiASgAACEYIAEgIzYAACAoKAAsISAgKCAtNgAsIBVBwAJqIiNBKGoiJyABKQIANwMAICNBIGoiKyACKQIANwMAICNBGGoiMCATKQIANwMAICNBEGoiISASKQIANwMAICNBCGoiOCAqKQIANwMAIBUgKCkCADcDwAJBACETQQEhAiAyQQRPBEAgGUECayIBQQAgASAZTRshI0EAIQEDQCAoIAFBMGxqIhIgKCACICggAkEwbGoiAUEYaioCACABQcgAaioCAF1FaiITQTBsaiIBKQIANwIAIBJBKGogAUEoaikCADcCACASQSBqIAFBIGopAgA3AgAgEkEYaiABQRhqKQIANwIAIBJBEGogAUEQaikCADcCACASQQhqIAFBCGopAgA3AgAgE0EBdCISQQFyIQIgEyEBIBIgI0kNAAsLAkACQAJAIDJBAmsgAkYEQCAoIBNBMGxqIgEgKCACQTBsaiIyKQIANwIAIAFBKGogMkEoaiIjKQIANwIAIAFBIGogMkEgaiISKQIANwIAIAFBGGogMkEYaiItKQIANwIAIAFBEGogMkEQaiITKQIANwIAIAFBCGogMkEIaiIBKQIANwIAIDIgFSkDwAI3AgAgASA4KQMANwIAIBMgISkDADcCACAtIDApAwA3AgAgEiArKQMANwIAICMgJykDADcCACAtKgIAIakBDAELICggE0EwbGoiAkEYaiIBIDApAwA3AgAgAiAVKQPAAjcCACACQShqICcpAwA3AgAgAkEgaiArKQMANwIAIAJBEGogISkDADcCACACQQhqIDgpAwA3AgAgASoCACGpASATRQ0BIBMhAgsDQCCpASAoIAJBAWsiEkEBdiIBQTBsaiIjQRhqIhMqAgBdRQ0CICggAkEwbGoiAiAjKQIANwIAIAJBKGogI0EoaikCADcCACACQSBqICNBIGopAgA3AgAgAkEYaiATKQIANwIAIAJBEGogI0EQaikCADcCACAC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ENYMAAsgBCAHKQIANwOgAyAEIAdBCGooAgA2AqgDIARB+ABqIgFBC2pCADcAACAEQfwBaiIGQQtqQgA3AAAgBEHpAWoiBUELakIANwAAIARB1gFqIgdBC2pCADcAACAEQcMBaiIIQQtqQgA3AAAgBEIANwB7IARCADcA/wEgBEIANwDsASAEQgA3ANkBIARCADcAxgFBACEJIARBtANqQQA2AgAgBEIANwKsAyAEQbABaiINQQ9qIg4gAUEPaigAADYAACANQQhqIg0gAUEIaikAADcDACAEIAQpAHg3A7ABIARB4ABqIgFBD2oiESAGQQ9qKAAANgAAIAFBCGoiASAGQQhqKQAANwMAIAQgBCkA/AE3A2AgBEHIAGoiBkEPaiIMIAVBD2ooAAA2AAAgBkEIaiIGIAVBCGopAAA3AwAgBCAEKQDpATcDSCAEQTBqIgVBD2oiEiAHQQ9qKAAANgAAIAVBCGoiBSAHQQhqKQAANwMAIAQgBCkA1gE3AzAgBEEYaiIHQQ9qIg8gCEEPaigAADYAACAHQQhqIgcgCEEIaikAADcDACAEIAQpAMMBNwMYIARBogJqIARBsANqKQMANwEAIARBmgJqIAQpA6gDNwEAIAQgBCkDoAM3AZICIANCADcDGCADQgA3AxAgA0H////7BzYCYCADQoCAgIDw//+/fzcDWCADQv////v///+//wA3A1AgA0L////7BzcDSCADQoCAgIDw//+/fzcDQCADQv////v///+//wA3AzggA0L////7BzcDMCADQoCAgIDw//+/fzcDKCADQv////v///+//wA3AyAgAyAaOAIMIAMgFzgCCCADIBk4AgQgAyAYOAIAIANCADcCZCADQewAakIANwIAIANBgICA/AM2AnQgAy0AyAIhCCADQYgBakIANwMAIANBgAFqQgA3AwAgA0IANwN4IANBgICA/AM2ApABIANCADcClAEgA0GcAWpCADcCACADQaQBakIANwIAIANBrAFqQQA2AgAgA0L////7BzcDsAEgA0EAOgC4ASADQQA6ANQBIANC////+wc3AswBIAMgBCkDsAE3ALkBIANBwQFqIA0pAwA3AAAgA0HIAWogDigAADYAACADQQA6APABIANC////+wc3A+gBIANBADoAjAIgA0L////7BzcChAIgA0HkAWogESgAADYA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QRBqKQMANwMAIA5BCGoiCSANKQMANwMAIAQgBCkDoAM3A3ggBEHgAGoiDUEPaiIOIAFBD2ooAAA2AAAgDUEIaiINIAFBCGopAAA3AwAgBCAEKQD8ATcDYCAEQcgAaiIBQQ9qIgwgBkEPaigAADYAACABQQhqIgEgBkEIaikAADcDACAEIAQpAOkBNwNIIARBMGoiBkEPaiISIAVBD2ooAAA2AAAgBkEIaiIGIAVBCGopAAA3AwAgBCAEKQDWATcDMCAEQRhqIgVBD2oiDyAHQQ9qKAAANgAAIAVBCGoiBSAHQQhqKQAANwMAIAQgBCkAwwE3AxggBEEPaiIHIAhBD2ooAAA2AAAgBEEIaiIVIAhBCGopAAA3AwAgBCAEKQCwATcDACADQgA3AxggA0IANwMQIAMgGjgCdCADIBc4AnAgAyAZOAJsIAMgGDgCaCADQv////sHNwNgIANCgICAgPD//79/NwNYIANC////+////7//ADcDUCADQv////sHNwNIIANCgICAgPD//79/NwNAIANC////+////7//ADcDOCADQv////sHNwMwIANCgICAgPD//79/NwMoIANC////+////7//ADcDICADQoCAgICAgIDAPzcDCCADQgA3AwAgAy0AyAIhCCADQYCAgPwDNgKQASADQgA3ApQBIANBnAFqQgA3AgAgA0GkAWpCADcCACADQawBakEANgIAIANC////+wc3A7ABIANBADoAuAEgA0GIAWogESkDADcDACADQYABaiAJKQMANwMAIAMgBCkDeDcDeCADIAQpA2A3ALkBIANBwQFqIA0pAwA3AAAgA0HIAWogDigAADYAACADQQA6ANQBIANC////+wc3AswBIANBADoA8AEgA0L////7BzcD6AEgA0EAOgCMAiADQv////sHNwKEAiADQeQBaiAMKAAANgAAIANB3QFqIAEpAwA3AAAgAyAEKQNINwDVASADQYACaiASKAAANgAAIANB+QFqIAYpAwA3AAAgAyAEKQMwNwDxASADQZwCaiAPKAAANgAAIANBlQJqIAUpAwA3AAAgAyAEKQMYNwCNAiADQQA6AKgCIANC////+wc3A6ACIANBuAJqIAcoAAA2AAAgA0GxAmogFSkDADcAACADIAQpAwA3AKkCIANBgAI7AcwCIANBPzYCyAIgA0EAOgDE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IAxBAWoiATYC1AEgASALRgRAIBNBgIbDABCbCCAEKALMASELIAQoAtABIQMLIAMgAUE0bGoiBSAEKQOIAzcCACAFQShqIARBiANqIgFBKGopAwA3AgAgBUEgaiABQSBqKQMANwIAIAVBGGogAUEYaikDADcCACAFQRBqIAFBEGopAwA3AgAgBUEIaiABQQhqKQMANwIAIAVBMGogAUEwaigCADYCACAEIAxBAmoiATYC1AEgASALRgRAIBNBkIbDABCbCCAEKALMASELIAQoAtABIQMLIAMgAUE0bGoiBSAEKQPAAzcCACAFQShqIARBwANqIgFBKGopAwA3AgAgBUEgaiABQSBqKQMANwIAIAVBGGogAUEYaikDADcCACAFQRBqIAFBEGopAwA3AgAgBUEIaiABQQhqKQMANwIAIAVBMGogAUEwaigCADYCACAEIAxBA2oiATYC1AEgASALRgRAIBNBoIbDABCbCCAEKALQASEDCyADIAFBNGxqIgUgBCkD+AM3AgAgBUEoaiAEQfgDaiIBQShqKQMANwIAIAVBIGogAUEgaikDADcCACAFQRhqIAFBGGopAwA3AgAgBUEQaiABQRBqKQMANwIAIAVBCGogAUEIaikDADcCACAFQTBqIAFBMGooAgA2AgAgBCAMQQRqIgE2AtQBAkAgDkEBcUUNAAJAIAEEQCAEKALIAUUNASADKgIYIAQoAsQBIgEqAgCUIANBHGoqAgAgAUEEaioCAJSSIANBIGoqAgAgAUEIaioCAJSSIhVDAACgtV0NByAVjCEWIAQoAuwBIgEgBCgC5AFGBEAgEUHA08IAELgICyAEKALoASIHIAFBA3RqIgMgFjgCBCADQQA2AgAgBCABQQFqNgLsAUEAIQMCQCABRQ0AA0AgByABQQFrIgZBAXYiA0EDdGoiBUEEaioCACAWXUUEQCABIQMMAgsgByABQQN0aiAFKQIANwIAIAMhASAGQQFLDQALCyAHIANBA3RqIgEgFjgCBCABQQA2AgAMAgtBAEEAQbCGwwAQiAsAC0EAQQBBwIbDABCICwALAkAgEkEBcUUNAAJAIAQoAtQBIgFBAk8EQCAEKALIASIBQQFNDQEgBCgC0AEiAyoCTCAEKALEASIBKgIklCADQdAAaioCACABQShqKgIAlJIgA0HUAGoqAgAgAUEsaioCAJSSIhVDAACgtV0NByAVjCEWIAQoAuwBIgEgBCgC5AFGBEAgEUHA08IAELgICyAEKALoASIHIAFBA3RqIgMgFjgCBCADQQE2AgAgBCABQQFqNgLsAQJAIAFFBEBBACEDDAELA0AgByABQQFrIgZBAXYiA0EDdGoiBUEEaioCACAWXUUEQCABIQMMAgsgByABQQN0aiAFKQIANwIAIAMhASAGQQFLDQALCyAHIANBA3RqIgEgFjgCBCABQQE2AgAMAgtBASABQdCGwwAQiAsAC0EBIAFB4IbDABCICwALAkAgCUEBcUUNAAJAIAQoAtQBIgFBA08EQCAEKALIASIBQQJNDQEgBCgC0AEiAyoCgAEgBCgCxAEiASoCSJQgA0GEAWoqAgAgAUHMAGoqAgCUkiADQYgBaioCACABQdAAaioCAJSSIhVDAACgtV0NByAVjCEWIAQoAuwBIgEgBCgC5AFGBEAgEUHA08IAELgICyAEKALoASIHIAFBA3RqIgMgFjgCBCADQQI2AgAgBCABQQFqNgLsAQJAIAFFBEBBACEDDAELA0AgByABQQFrIgZBAXYiA0EDdGoiBUEEaioCACAWXUUEQCABIQMMAgsgByABQQN0aiAFKQIANwIAIAMhASAGQQFLDQALCyAHIANBA3RqIgEgFjgCBCABQQI2AgAMAgtBAiABQfCGwwAQiAsAC0ECIAFBgIfDABCICwALAkAgD0EBcUUNAAJAIAQoAtQBIgFBBE8EQCAEKALIASIBQQNNDQEgBCgC0AEiAyoCtAEgBCgCxAEiASoCbJQgA0G4AWoqAgAgAUHwAGoqAgCUkiADQbwBaioCACABQfQAaioCAJSSIhVDAACgtV0NByAVjCEWIAQoAuwBIgEgBCgC5AFGBEAgEUHA08IAELgICyAEKALoASIHIAFBA3RqIgMgFjgCBCADQQM2AgAgBCABQQFqNgLsAQJAIAFFBEBBACEDDAELA0AgByABQQFrIgZBAXYiA0EDdGoiBUEEaioCACAWXUUEQCABIQMMAgsgByABQQN0aiAFKQIANwIAIAMhASAGQQFLDQALCyAHIANBA3RqIgEgFjgCBCABQQM2AgAMAgtBAyABQZCHwwAQiAsAC0EDIAFBoIfDABCICwALIA5BAXENACASQQFxDQAgCUEBcQ0AIA9BAXENAEGMxMQAKAIAQQRJDQQgBEEANgK4BiAEQQE2AqwGIARBhIjDADYCqAYgBEIENwKwBiAEQYyIwwA2AugFIARBGTYC5AUgBEGEhcMANgLgBSAEQRk2AtwFIARBhIXDADYC2AUgBEGoBmogBEHYBWoQ8QkMBAsgBCgC7AFFDQMgBCgC6AEoAgAhECAEQcwFaiARELMEAkAgBCgCzAVBAUcNACAEQdgFaiIBQSRqIRIgAUEYaiEJIARB5AVqIQ9D//9/fyEeQQAhDANAAkACQAJAAkACQAJAAkACQAJAIAQoAtAFIgcgBCgC1AEiAUkEQCAEKgLUBSEZIA8gB0E0bCIFIAQoAtABaiIBKQIMNwIAIAkgASkCGDcCACASIAEpAiQ3AgAgBEHgBWogAUEIaigCADYCACAPQQhqIAFBFGooAgA2AgAgCUEIaiABQSBqKAIANgIAIBJBCGogAUEsaigCADYCACAEIAEpAgA3A9gFIAQgAS0AMCIBOgCIBiABDQggBCoC8AUiJSAllCAEKgL0BSImICaUkiAEKgL4BSInICeUkpEhFyAiICcgF5UiFZggHSAVlJIiGiAfkyEbICMgJiAXlSIVmCAdIBWUkiIYICCTIRwgJCAlIBeVIhWYIB0gFZSSIhUgIZMhFyAEKALIASILIAQoAsABRgRAIARBwAFqQcyIwwAQkQgLIAQoAsQBIAtBJGxqIgEgHzgCICABICA4AhwgASAhOAIYIAEgGjgCFCABIBg4AhAgASAVOAIMIAEgGzgCCCABIBw4AgQgASAXOAIAIAQgC0EBaiIDNgLIASAHIBAgJyAblCAlIBeUICYgHJSSkiIVIB5dIgEbIRAgBCgC1AEhBiAZIBUgHiABGyIekkMAAEg3XUUEQCAGIAdNDQIgBCgC0AEgBWpBAToAMCAEKALkBSIOIAQoAtQBIgZPDQMgBCgC0AEiASAOQTRsaiAEKALYBRCDByEFIAQoAugFIg0gBk8NBCABIA1BNGxqIAQoAtwFEIMHIQMgBCgC7AUiByAGTw0FIAEgB0E0bGogBCgC4AUQgwchASAEQcABaiIGIAsgDiAFEMYCIAYgCyANIAMQxgIgBiALIAcgARDGAiAEKALgASIFRQ0QIBmMIRUgBCgC1AEhCCAEKALcASIBQQhqIQMgASAFQQN0aiENA0AgAyEFAkACQAJAIAEoAgAiAyAEKALUASIKSQRAIAQoAtABIANBNGxqIgYtADANAyAEIAM2ApwGIAEoAgQhAyAEIAs2ApgGIAQgCkEBazYCpAYgBCAKQQFqNgKgBiAEIAYgA0EBakEDcEECdGooAgA2ApQGIAQgBiADQQJqQQNwQQJ0aigCADYCkAYgBEGoBmogBCgCxAEgBCgCyAEgBEGQBmogBEGcBmoQzwIgBiABKAIEQQFqQQNwQQJ0aiAKNgIMIAQoAtQBIgMgBCgCzAFGBEAgE0HMicMAEJsICyAEKALQASIBIANBNGxqIgcgBCkCqAY3AgAgB0EoaiAEQagGaiIGQShqKQIANwIAIAdBIGogBkEgaikCADcCACAHQRhqIAZBGGopAgA3AgAgB0EQaiAGQRBqKQIANwIAIAdBCGogBkEIaikCADcCACAHQTBqIAZBMGooAgA2AgAgBCADQQFqIgM2AtQBIAQtANwGRQ0DIAMgCk0NCyABIApBNGxqIgcoAgAiASAEKALIASIGTw0MIAQoAsQBIgMgAUEkbGoiASoCACAHKgIYlCABKgIEIAdBHGoqAgCUkiABKgIIIAdBIGoqAgCUkiIYIBVdDQ0gGEMAAKC1XSIDDRUgGIwhGCAEKALsASIBIAQoAuQBRgRAIBFBwNPCABC4CAsgFiAYIAMbIRYgFCAKIAMbIRQgBCgC6AEiDiABQQN0aiIDIBg4AgQgAyAKNgIAIAQgAUEBajYC7AEgAQ0BQQAhAwwCCyADIApBvInDABCICwALA0AgFiAOIAFBAWsiB0EBdiIDQQN0aiIGQQRqKgIAXkUEQCABIQMMAgsgDiABQQN0aiAGKQIANwIAIAMhASAHQQFLDQALCyAOIANBA3RqIgEgFjgCBCABIBQ2AgALIAUgBSANR0EDdGohAyANIAUiAUcNAAsMCgsgBiAQSwRAIARBqAZqIgEgBCgC0AEgEEE0bGogBCgCxAEgAxCpBSAEQYAHaiABQQhqKAIANgIAIAQgBCkCqAY3A/gGDA0LIBAgBkH8icMAEIgLAAsgByABQbyIwwAQiAsACyAHIAZB3IjDABCICwALIA4gBkHsiMMAEIgLAAsgDSAGQfyIwwAQiAsACyAHIAZBjInDABCICwALIAogA0HcicMAEIgLAAsgASAGQeyJwwAQiAsACyAEQeAGaiIBIARB2AVqIAMgBhCpBSAEQYAHaiABQQhqKAIANgIAIAQgBCkC4AY3A/gGDAQLIARBzAVqIBEQswQgBCgCzAUNAQwCCyAEKALUASIBIAhGDQUgASAITQ0DIAQoAtABIAhBNGxqIAFBAWs2AhQgBCgC1AEiAUUNBCAEKALQASABQTRsaiIBQTRGDQQgAUEkayAINgIAIARBADYC4AEgDEHkAEYNASAEQcwFaiARELMEIAxBAWohDCAEKALMBQ0ACwsgBCgC1AEiASAQSwRAIARBqAZqIgEgBCgC0AEgEEE0bGogBCgCxAEgBCgCyAEQqQUgBEGAB2ogAUEIaigCADYCACAEIAQpAqgGNwP4BgwBCyAQIAFBjIrDABCICwALIABBCGogBEGAB2ooAgA2AgAgACAEKQP4BjcCACAAQQE6AAwMAwsgCCABQZyJwwAQiAsAC0GsicMAEJEPAAsgAEEBOgAMIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgALIAQoAsABIgAEQCAEKALEASAAQSRsQQQQiA8LIAQoAswBIgAEQCAEKALQASAAQTRsQQQQiA8LIAQoAtgBIgAEQCAEKALcASAAQQN0QQQQiA8LIAQoAuQBIgBFDQIgBCgC6AEgAEEDdEEEEIgPDAILIARBqAZqIARBARC+AiAEKgKwBiEYIAQqAqwGIRcgBCoCqAYLIRYgACAYOAIIIAAgFzgCBCAAIBY4AgAgAEEAOgAMCyAEQZAHaiQAC549AxJ/OH0BfiMAQeABayIGJAAgAygCVCEKAkACQAJAAkACQAJAAkACQAJAIAIoAlQiCUECRiAKQQJGcUUEQEMAAIA/IAEqAggiJZghHSABKgIAIiMgASoCBCImlEMAAIC/ICUgHZKVIhiUIhkgAioCJCIflCAdICYgJpQgGJSSIhogAioCKCIblJIgJiACKgIsIiqUkyFDIAYgIyAjIB2UlCAYlEMAAIA/kiIcIB+UIB0gGZQiHiAblJIgIyAdjJQiIiAqlJIiSLytIEO8rUIghoQ3AyAgGSACKgIYIkSUIBogAioCHCJFlJIgJiACKgIgIkaUkyEkIAYgHCBElCAeIEWUkiAiIEaUkiIwvK0gJLytQiCGhDcDGCAZIAIqAgwiMpQgGiACKgIQIjSUkiAmIAIqAhQiOpSTIScgBiAyIByUIB4gNJSSICIgOpSSIjy8rSAnvK1CIIaENwMQIAIqAgAiPSAZlCACKgIEIj4gGpSSICYgAioCCCI/lJMhRyAGICIgP5QgPSAclCA+IB6UkpIiSbytIEe8rUIghoQ3AwggAyoCJCE1IAMqAiwhMSADKgIoITkgAyoCACEoIAMqAgghKyADKgIEIS4gAyoCDCEsIAMqAhQhICADKgIQISEgACoCECEqIAAqAhQhNiAAKgIAIh0gAyoCHCI7lCAAKgIEIhggAyoCGCItlJMiHyAfkiEzIAAqAggiHyAtlCAdIAMqAiAiN5STIhsgG5IhKSAGIAAqAhgiLyA3IAAqAgwiGyAzlCAdICmUIBggGCA3lCAfIDuUkyI3IDeSIjiUk5KSkiI3OAKoASAGIDYgOyAbICmUIB8gOJQgHSAzlJOSkpIiOzgCpAEgBiAqIC0gGyA4lCAYIDOUIB8gKZSTkpKSIjM4AqABIAYgLyAgIBsgHSAhlCAYICyUkyIpICmSIimUIB0gHyAslCAdICCUkyItIC2SIi2UIBggGCAglCAfICGUkyIgICCSIjiUk5KSkiIgOAKcASAGIDYgISAbIC2UIB8gOJQgHSAplJOSkpIiITgCmAEgBiAqICwgGyA4lCAYICmUIB8gLZSTkpKSIiw4ApQBIAYgLyArIBsgLiAdlCAoIBiUkyIpICmSIimUIB0gKCAflCArIB2UkyItIC2SIi2UIBggKyAYlCAuIB+UkyIrICuSIjiUk5KSkiIrOAKQASAGIDYgLiAbIC2UIB8gOJQgHSAplJOSkpIiLjgCjAEgBiAqICggGyA4lCAYICmUIB8gLZSTkpKSIig4AogBIAYgLyAxIBsgHSA5lCAYIDWUkyIpICmSIimUIB0gHyA1lCAdIDGUkyItIC2SIi2UIBggGCAxlCAfIDmUkyIxIDGSIjGUk5KSkiJAOAK0ASAGICogNSAbIDGUIBggKZQgHyAtlJOSkpIiQTgCrAEgBiA2IDkgGyAtlCAfIDGUIB0gKZSTkpKSIkI4ArABIAYgIiA3lCAcIDOUIB4gO5SSkiI1vK0gGSAzlCAaIDuUkiAmIDeUkyIxvK1CIIaENwM4IAYgIiAglCAcICyUIB4gIZSSkiI5vK0gGSAslCAaICGUkiAmICCUkyIpvK1CIIaENwMwIAYgIiArlCAcICiUIB4gLpSSkiItvK0gGSAolCAaIC6UkiAmICuUkyI4vK1CIIaENwMoIAYgIiBAlCAcIEGUIB4gQpSSkiIcvK0gGSBBlCAaIEKUkiAmIECUkyIavK1CIIaENwNAIApBA0kNAiAlIC4gIZMiGSAzICyTIh6UICggLJMiIiA7ICGTIiGUkyIslCAjICsgIJMiMyAhlCAZIDcgIJMiGZSTIjeUICYgIiAZlCAzIB6UkyIzlJKSIiJDAAAAAFsNAiAiiyIZQwAAgH9cBEAgGUMAAAA0Xw0DIBkgGUMAAAA0lF8NAwsgCUUNAyAKQQFrIQAgCkEESw0BIARBQGshEiACQTBqIQEgBkH8AGohDCAGQcgAaiIIIAZB0AFqIgsgBRshDSALIAggBRshDiADKAJQIQ8gGiAxkyE7IBwgNZMhQCAxICmTIUEgNSA5kyFCICkgOJMhSiA5IC2TIUsgOCAGQShqIABBA3RqIgAqAgQiTJMhTSAtIAAqAgAiTpMhTyAGQQhqIQhBACELIAIhAANAAkACQCALQQNNBEAgSyAIKQMAIlBCIIinviIcIDiTlCBKIFCnviIeIC2TlJMhGgJAIE8gHCBMk5QgTSAeIE6TlJMiGUMAAAAAWwRAIBohGQwBCyAZIBqUQwAAAABdDQMLIEIgHCApk5QgQSAeIDmTlJMhGgJAIBlDAAAAAFsEQCAaIRkMAQsgGiAZlEMAAAAAXQ0DCyAKQQNGDQEgGUMAAAAAXARAIEAgHCAxk5QgOyAeIDWTlJMgGZRDAAAAAF0NAwsgCkEERg0BQQRBBEGkxsMAEIgLAAtBBEEEQfTFwwAQiAsACyAGQdAAaiAAQQhqIgcoAgA2AgAgBiAAKQIANwNIIDcgKCAAKgIAIhqTlCAzIC4gAEEEaioCACIck5SSICwgKyAHKgIAIiGTlJIgIpUhGSAYIBogIyAZlJIgKpMiHpQgHSAcICYgGZSSIDaTIiCUkyIaIBqSIRogHyAglCAYICEgJSAZlJIgL5MiIZSTIhwgHJIhHCAGICEgGyAalCAYIByUIB0gHSAhlCAfIB6UkyIhICGSIiGUk5KSOALYASAGICAgGyAhlCAdIBqUIB8gHJSTkpI4AtQBIAYgHiAbIByUIB8gIZQgGCAalJOSkjgC0AEgBkH4AGoiEyAOQQhqKAIANgIAIAwgDSkCADcCACAMQQhqIA1BCGooAgA2AgAgBiAOKQIANwNwIAEoAgAiByAPIAUbIREgDyAHIAUbIRAgBCgCSCIHIAQoAkBGBEAgEkGUxsMAEJEICyAEIAdBAWo2AkggBCgCRCAHQSRsaiIHIAYpA3A3AgAgByARNgIgIAcgEDYCHCAHIBk4AhggB0EIaiATKQMANwIAIAdBEGogBkGAAWopAwA3AgALIAhBCGohCCAAQQxqIQAgAUEEaiEBIAtBAWoiCyAJSQ0ACwwCCyAAKgIIIhkgAyoCDCImlCAAKgIAIhogAyoCFCIjlJMiHSAdkiEYIAAqAgQiHSAjlCAZIAMqAhAiHJSTIh8gH5IhGyAcIAAqAgwiHyAYlCAZIBuUIBogGiAclCAdICaUkyIcIBySIhyUk5KSISAgACoCFCEeICYgHyAblCAdIByUIBkgGJSTkpIhISAAKgIQISIgIyAfIByUIBogGJQgHSAblJOSkiErIAAqAhghKiADKgIAIiYgGZQgAyoCCCIjIBqUkyIYIBiSIRggIyAdlCADKgIEIhwgGZSTIhsgG5IhGyAcIB8gGJQgGSAblCAaIBwgGpQgJiAdlJMiHCAckiIclJOSkiEsICYgHyAblCAdIByUIBkgGJSTkpIhLiAjIB8gHJQgGiAYlCAdIBuUk5KSITEgASoCACIcIBxDAACAPyABKgIIIjaYIhiUlEMAAIC/IDYgGJKVIiOUQwAAgD+SIRsgHCAYjJQiKCACKgIIIjqUIAIqAgAiPCAblCACKgIEIj0gGCAcIAEqAgQiJpQgI5QiJZQiMJSSkiEyIDwgJZQgPSAYICYgJpQgI5SSIhiUkiAmIDqUkyE0IAIqAgwiPiAblCACKgIQIj8gMJSSICggAioCFCI1lJIgMpMiLyAvlCA+ICWUID8gGJSSICYgNZSTIDSTIiQgJJSSIiORIidDAAAANF8iAEUEQCAkICeVITkgLyAnlSEzCyAeICCSIScgIiAhkiEgIB4gLJIhISAiIC6SISwgKiArkiErICogMZIhLgJAIAANACAoICuUIBsgIJQgMCAnlJKSICggLpQgGyAslCAwICGUkpIiMJMiKCAolCAlICCUIBggJ5SSICYgK5STICUgLJQgGCAhlJIgJiAulJMiMZMiJSAllJIiG5EiGEMAAAA0Xw0AICggGJUgM5QgJSAYlSA5lJJDXoNsP2ANACAyIDCTIhggKJQgNCAxkyIwICWUkiE0AkACQAJ9AkACQAJ/AkACQAJAAkACQCAjQwAAADRfRQRAIC8gGJQgJCAwlJIhMCAbQwAAADRfDQFDAAAAACEYICMgG5QiMiAvICiUICQgJZSSIiUgJZQiL5MiJEMAAAA0XkUNBCAkQwAAADRfDQRDAADAf0MAAIA/IDKYIDIgMlwbQwAAwH9DAACAPyAvmCAvIC9cG1wNAyAyvCIAIC+8IgFLDQIgASAAa0EFTw0DDAQLIBtDAAAANF8NBEEAIQEgNCAblSIbQwAAAABeRQ0EIBtDAACAPyAbQwAAgD9dGyEbDAcLQwAAAAAhGyAwjCAjlSIYQwAAAABeRQ0DIBhDAACAPyAYQwAAgD9dGyEYDAULIAAgAWtBBUkNAQsgJSA0lCAwIBuUkyAklSIYQwAAgD8gGEMAAIA/XRtDAAAAACAYQwAAAABeGyEYCwJAIDQgJSAYlJIgG5UiG0MAAAAAXUUEQCAbQwAAgD9eRQ0EICUgMJMgI5UiGEMAAAAAXkUNASAYQwAAgD8gGEMAAIA/XRshGEMAAIA/IRsMBAtDAAAAACEbIDCMICOVIhhDAAAAAF5FDQEgGEMAAIA/IBhDAACAP10bIRgMAwtBAQwBC0EACyEAQwAAAAAhGEMAAIA/DAILIBhDAAAAAFsEQEEAIQEMAQsgGEMAAIA/WwRAQQEhAQwBC0MAAIA/IBiTvCEBQQEhCAsCQAJAAkACQCAbQwAAAABbBH9BAAUgG0MAAIA/XA0BQQELIQAgBkIANwOIASAIRQ0BIAG+DAQLIAZCADcDiAFDAACAPyAbkyElIAhFDQEgAb4hIwwECyABQQJJDQEMBAsgAUECTw0DIAZBiAFqIAFBAnRqQYCAgPwDNgIAIAYqAowBIRggBioCiAEhIwwCCyAGQYgBaiABQQJ0akGAgID8AzYCACAGKgKMASEYIAYqAogBCyEjIAZCADcDiAEgBkGIAWogAEECdHJBgICA/AM2AgAgBioCjAEhGyAGKgKIASElCyAGIDogI5QgNSAYlJIiLzgCECAGIDwgI5QgPiAYlJIiJDgCCCAGID0gI5QgPyAYlJIiKDgCDCAdICAgG5QgLCAllJIiICAikyIjlCAaICcgG5QgISAllJIiJyAekyIelJMiGCAYkiEYIBkgHpQgHSArIBuUIC4gJZSSIiUgKpMiIpSTIhsgG5IhGyAGICIgHyAYlCAdIBuUIBogGiAilCAZICOUkyIiICKSIiKUk5KSOAIwIAYgHiAfICKUIBogGJQgGSAblJOSkjgCLCAGICMgHyAblCAZICKUIB0gGJSTkpI4AiggBkGQAWoiASAGQShqIgAgBkEIaiIJIAUbIghBCGooAgA2AgAgBkGcAWogCSAAIAUbIgBBCGooAgA2AgAgBiAIKQIANwOIASAGIAApAgA3ApQBIDYgJSAvk5QgHCAgICSTlCAmICcgKJOUkpIhGSACKAJAIgAgAygCQCICIAUbIQMgAiAAIAUbIQIgBCgCSCIAIAQoAkBGBEAgBEFAa0G0xcMAEJEICyAEIABBAWo2AkggBCgCRCAAQSRsaiIAIAYpA4gBNwIAIAAgAzYCICAAIAI2AhwgACAZOAIYIABBCGogASkDADcCACAAQRBqIAZBmAFqKQMANwIADAkLIAFBAkHsmcMAEIgLAAsgBkEcaiACQQxqIgBBCGooAgA2AgAgBkEIaiIBQQhqIAJBCGooAgA2AgAgBiAAKQIANwIUIAYgAikCADcDCCAGICs4AjwgBiAnOAI4IAYgIDgCNCAGIC44AjAgBiAhOAIsIAYgLDgCKCAGQYgBaiABIAZBKGoQ6AIgBigCiAFFDQcgBkHYAWogBkGUAWooAgA2AgAgBiAGKQKMATcD0AEgBigCqAEhACAGKgK4ASEjIAYqArwBISUgBioCwAEhLyAGKALEASEIIAYoAsgBIQsgBigCpAEhASAdIAYqApgBIiEgIpMiJJQgGiAGKgKcASIsIB6TIieUkyIYIBiSIRggGSAnlCAdIAYqAqABIisgKpMiIJSTIhsgG5IhGyAGICAgHyAYlCAdIBuUIBogGiAglCAZICSUkyIgICCSIiCUk5KSOAIQIAYgJyAfICCUIBogGJQgGSAblJOSkjgCDCAGICQgHyAblCAZICCUIB0gGJSTkpI4AgggAUEDTwRADAkLAkAgAEEDSQRAIAZBrAFqIQogBkEwaiINIAZBCGoiCSAGQdABaiIHIAUbIgxBCGooAgA2AgAgBkE8aiAHIAkgBRsiCUEIaigCADYCACAGIAwpAgA3AyggBiAJKQIANwI0IAIgAUECdEHU/sMAaigCAGooAgAiASADIABBAnRB1P7DAGooAgBqKAIAIgAgBRshDiAAIAEgBRshDyAcICEgBioC0AGTlCAmICwgBioC1AGTlJIgNiArIAYqAtgBk5SSIRggBEFAayEBIAQoAkgiCSAEKAJARgRAIAFBxMXDABCRCAsgBCAJQQFqIgc2AkggBCgCRCIMIAlBJGxqIgAgBikDKDcCACAAIA42AiAgACAPNgIcIAAgGDgCGCAAQQhqIA0pAwA3AgAgAEEQaiAGQShqIg1BEGopAwA3AgAgBkHwAGoiAEEIaiAKQQhqKAIANgIAIAYgCikCADcDcCAdICMgIpMiIpQgGiAlIB6TIh6UkyIYIBiSIRggGSAelCAdIC8gKpMiKpSTIhsgG5IhGyAGICogHyAYlCAdIBuUIBogGiAqlCAZICKUkyIqICqSIiqUk5KSOAIQIAYgHiAfICqUIBogGJQgGSAblJOSkjgCDCAGICIgHyAblCAZICqUIB0gGJSTkpI4AgggCEEDTw0KIAtBA08NASANQQhqIgogBkEIaiINIAAgBRsiDkEIaigCADYCACAGQTxqIAAgDSAFGyIAQQhqKAIANgIAIAYgDikCADcDKCAGIAApAgA3AjQgAiAIQQJ0QdT+wwBqKAIAaigCACIAIAMgC0ECdEHU/sMAaigCAGooAgAiAiAFGyEDIAIgACAFGyECIBwgIyAGKgJwk5QgJiAlIAYqAnSTlJIgNiAvIAYqAniTlJIhGSABKAIAIAdGBEAgAUHUxcMAEJEIIAQoAkQhDAsgBCAJQQJqNgJIIAwgB0EkbGoiACAGKQMoNwIAIAAgAzYCICAAIAI2AhwgACAZOAIYIABBEGogBkE4aikDADcCACAAQQhqIAopAwA3AgAMCQsMCQsMCAsgAEEEQYTGwwAQiAsACwJAAkACQCAJQQJNDQAgJSA+IDSTIhkgRCAykyIalCA9IDKTIhwgRSA0kyIelJMiIZQgIyA/IDqTIiIgHpQgGSBGIDqTIhmUkyIslCAmIBwgGZQgIiAalJMiK5SSkiIaQwAAAABbDQAgGosiGUMAAIB/Ww0BIBlDAAAANF8NACAZIBlDAAAANJRfRQ0BCyAKRQ0HDAELIApFDQYgCUEBayEAIAlBBE0EQCAajCEuIARBQGshEiADQTBqIQEgBkH8AGohDCAGQdgAaiIIIAZB0AFqIgsgBRshDSALIAggBRshDiACKAJQIQ8gQyAkkyEoIEggMJMhMiAkICeTITQgMCA8kyE6ICcgBioCDCI1kyExIDwgBioCCCI5kyEzIEcgBkEIaiAAQQN0aiIAKgIEIimTITcgSSAAKgIAIjuTIS0gBkGIAWohACAGQShqIQhBACELA0ACQAJAIAtBA00EQCAzIAgpAwAiUEIgiKe+IhwgNZOUIDEgUKe+Ih4gOZOUkyEaAkAgLSAcICmTlCA3IB4gO5OUkyIZQwAAAABbBEAgGiEZDAELIBkgGpRDAAAAAF0NAwsgOiAcICeTlCA0IB4gPJOUkyEaAkAgGUMAAAAAWwRAIBohGQwBCyAaIBmUQwAAAABdDQMLIAlBA0YNASAZQwAAAABcBEAgMiAcICSTlCAoIB4gMJOUkyAZlEMAAAAAXQ0DCyAJQQRGDQFBBEEEQeTGwwAQiAsAC0EEQQRBtMbDABCICwALICwgPSAAKgIAIhqTlCArID4gAEEEaioCACIck5SSICEgPyAAQQhqKgIAIh6TlJIgLpUhGSAGIB4gJSAZlJM4AmAgBiAcICYgGZSTOAJcIAYgGiAjIBmUkzgCWCAYIBogKpMiIpQgHSAcIDaTIiCUkyIaIBqSIRogHyAglCAYIB4gL5MiHpSTIhwgHJIhHCAGIB4gGyAalCAYIByUIB0gHSAelCAfICKUkyIeIB6SIh6Uk5KSOALYASAGICAgGyAelCAdIBqUIB8gHJSTkpI4AtQBIAYgIiAbIByUIB8gHpQgGCAalJOSkjgC0AEgBkH4AGoiEyAOQQhqKAIANgIAIAwgDSkCADcCACAMQQhqIA1BCGooAgA2AgAgBiAOKQIANwNwIA8gASgCACIHIAUbIREgByAPIAUbIRAgBCgCSCIHIAQoAkBGBEAgEkHUxsMAEJEICyAEIAdBAWo2AkggBCgCRCAHQSRsaiIHIAYpA3A3AgAgByARNgIgIAcgEDYCHCAHIBk4AhggB0EIaiATKQMANwIAIAdBEGogBkGAAWopAwA3AgALIAhBCGohCCAAQQxqIQAgAUEEaiEBIAogC0EBaiILSw0ACwwBCyAAQQRBxMbDABCICwALIAlFDQAgBEFAayEUIANBQGshFSACQUBrIQsgBkH8AGohDiAGQeQAaiIAIAZB0AFqIgEgBRshDyABIAAgBRshEkEAIAlrIRNBASEAQQAhAwNAIABBBUYNAiAAIApwIgFBA0sNAyAAIQkgBkEoaiIAIAFBA3RqKQMAIlCnviAAIANBA3RqIgAqAgAiLJMiHiAelCBQQiCIp74gACoCBCIrkyIiICKUkiEcIBUgA0ECdGohFiAGQYgBaiIAIAFBDGxqIQwgACADQQxsaiENQQEhAyAGQQhqIQAgAiEBIAshCANAIANBBUYNBSADQQAgAyATahsiB0EDSw0GICIgAEEEaioCACIZICuTIiCUIB4gACoCACIaICyTIiGUkiEkAkACfSAGQQhqIAdBA3RqKQMAIlCnviAakyIaIBqUIFBCIIinviAZkyInICeUkiIZQwAAADRfBEBDAAAAACEaQwAAAAAgHEMAAAA0Xw0BGiAkIByVDAELICEgGpQgICAnlJIhICAcQwAAADRfBEAgIIwgGZUhGkMAAAAADAELIBwgGZQiGSAeIBqUICIgJ5SSIicgJ5QiGpMiIUMAAAA0Xw0BICGLQwAAADRfDQECQEMAAMB/QwAAgD8gGZggGSAZXBtDAADAf0MAAIA/IBqYIBogGlwbXA0AIBm8IhEgGrwiEE0EQCAQIBFrQQVPDQEMAwsgESAQa0EFSQ0CCyAkICcgJCAnlCAcICCUkyAhlSIalJIgHJULIhlDAACAP11FDQAgGkMAAAAAXkUNACAaQwAAgD9dRQ0AIBlDAAAAAF5FDQAgDCoCACEnIA0qAgAhICAMKgIIISEgDSoCCCEuIAwqAgQhKCANKgIEITAgBkMAAIA/IBqTIiQgAUEIaioCAJQgGiACIAdBDGxqIgcqAgiUkiIyOAJsIAYgJCABKgIAlCAaIAcqAgCUkiI0OAJkIAYgJCABQQRqKgIAlCAaIAcqAgSUkiI6OAJoIAYgLkMAAIA/IBmTIhqUIBkgIZSSIiEgL5MiJCAbIBggGiAglCAZICeUkiIuICqTIieUIB0gGiAwlCAZICiUkiIoIDaTIhmUkyIaIBqSIhqUIBggHyAZlCAYICSUkyIgICCSIiCUIB0gHSAklCAfICeUkyIkICSSIiSUk5KSOALYASAGIBkgGyAklCAdIBqUIB8gIJSTkpI4AtQBIAYgJyAbICCUIB8gJJQgGCAalJOSkjgC0AEgBkH4AGoiESASQQhqKAIANgIAIA4gDykCADcCACAOQQhqIA9BCGooAgA2AgAgBiASKQIANwNwICMgLiA0k5QgJiAoIDqTlJIgJSAhIDKTlJIhGSAIKAIAIgcgFigCACIQIAUbIRcgECAHIAUbIRAgBCgCSCIHIAQoAkBGBEAgFEG0x8MAEJEICyAEIAdBAWo2AkggBCgCRCAHQSRsaiIHIAYpA3A3AgAgByAXNgIgIAcgEDYCHCAHIBk4AhggB0EIaiARKQMANwIAIAdBEGogBkGAAWopAwA3AgALIABBCGohACABQQxqIQEgCEEEaiEIIBMgA0EBaiIDakEBRw0ACyAJQQFqIQAgCiAJIgNHDQALDAULIApBAWsiAEEDSQ0EIABBA0sNASAKQQRGDQQLQQRBBEH0xsMAEIgLAAtBBEEEQYTHwwAQiAsAC0EEQQRBlMfDABCICwALQQRBBEGkx8MAEIgLAAsgBkHgAWokAA8LQYDUwgBBKEHkxcMAENYMAAuIRAMUfw99An4jAEHgB2siByQAIAdBvAFqQgA3AgAgB0IANwK0ASAHQoKAgIAwNwIMIAdCgICAgBA3AgQgB0EUaiIIQQBBoAH8CwACfSABKgIQIiYgJpQgASoCFCInICeUkiABKgIYIiggKJSSIhxDAACAKF5FBEBDAACAPyEeQwAAAAAhHEMAAAAADAELICggHJEiG5UhHCAmIBuVIR4gJyAblQshGyAHIBw4AswBIAcgGzgCyAEgByAeOALEASAHQdAFaiIJIAIgB0HEAWogAxEBACAHIAcqAswBjDgCiAcgByAHKgLIAYw4AoQHIAcgByoCxAGMOAKAByAHQZAGaiIKIAQgASAHQYAHaiAFEQIAIAdBBGoiEEEkaiAJQQhqIgsoAgA2AgAgB0E0aiAKQQhqIgooAgA2AgAgByAHKQLQBTcCICAHIAcpApAGNwIsQQAhCSAHQQA2AsABIAdBADYCsAEgByoC0AUhHCAHKgKQBiEbIAcqAtQFIR0gByoClAYhHiAHIAsqAgAgCioCAJM4AhwgByAdIB6TOAIYIAcgHCAbkzgCFCAHQdABaiABIAIgAyAEIAUgBkEBIBAQzgECQAJAAkACQAJAAkACQAJAAkACQCAHKALQASIKRQRAIAdCgICAgMAANwKcAiAHQoCAgIDAADcCkAIgB0KAgICAwAA3AoQCIAdCgICAgMAANwL4ASAHQQA2AqQCIAdBADYCjAIgB0EANgKAAiAHQQA2ApgCIAdBnAJqIRAgB0GEAmohFSAHKALAASIKQX9GBEBBBCEIDAMLIAdB+AFqQZyKwwAQkQggBygC/AEiCSAIKQIANwIAIAlBIGogCEEgaigCADYCACAJQRhqIAhBGGopAgA3AgAgCUEQaiAIQRBqKQIANwIAIAlBCGogCEEIaikCADcCACAHQQE2AoACIApFBEBDAACAPyEbQwAAAAAhBkMAAAAAIR5DAAAAACEcQwAAAAAhHQwGCyAKQQJqIQogB0E4aiEJIAcoAvgBQQFGBEAgB0H4AWpBnIrDABCRCAsgBygC/AEiCCAJKQIANwIkIAhBLGogCUEIaikCADcCACAIQTRqIAlBEGopAgA3AgAgCEE8aiAJQRhqKQIANwIAIAhBxABqIAlBIGooAgA2AgAgB0ECNgKAAiAKQQNGDQEgB0HcAGohCSAHKAL4AUECRgRAIAdB+AFqQZyKwwAQkQggBygC/AEhCAsgCCAJKQIANwJIIAhB6ABqIAlBIGooAgA2AgAgCEHgAGogCUEYaikCADcCACAIQdgAaiAJQRBqKQIANwIAIAhB0ABqIAlBCGopAgA3AgBBAyEJIAdBAzYCgAIgCkEERg0CIAdBgAFqIQkgBygC+AFBA0YEQCAHQfgBakGcisMAEJEIIAcoAvwBIQgLIAggCSkCADcCbCAIQYwBaiAJQSBqKAIANgIAIAhBhAFqIAlBGGopAgA3AgAgCEH8AGogCUEQaikCADcCACAIQfQAaiAJQQhqKQIANwIAIAdBBDYCgAIgCkEFRg0DQQRBBEHAjMMAEIgLAAsgByoC9AEhHCAHKgLwASEbIAcqAuwBIR0gByoC6AEhICAHKgLkASEiIAcqAuABISMgByoC3AEhBiAHKgLYASEfIAcqAtQBIR4CQCAKQQJrDgIACgYLQYDUwgBBKEGE8MIAENYMAAtDAAAAACAIKgIsIAgqAgiTIgaMIAgqAiQgCCoCAJMiHIsgCCoCKCAIKgIEkyIbi14iCBsiHSAcjCAbIAgbIh4gHpQgHSAdlCAGQwAAAAAgCBsiHSAdlJKSkSIflSEhIAcgBiAhlCAbIB4gH5UiHpSTIiA4AtAHIAcgHCAelCAGIB0gH5UiBpSTIh04AtQHIAcgGyAGlCAcICGUkyIGOALYByAHQbgHaiACIAdB0AdqIAMRAQAgByAGjDgCiAcgByAdjDgChAcgByAgjDgCgAcgB0GQBmogBCABIAdBgAdqIAURAgAgByoCmAYhBiAHKgKUBiEcIAcqApAGIRsgByoCwAchHSAHKgK8ByEeIAcqArgHIR8gBygCgAIiCSAHKAL4AUYEQCAHQfgBakGsisMAEJEICyAHKAL8ASAJQSRsaiIIIB0gBpM4AgggCCAeIByTOAIEIAggHyAbkzgCACAIIAcpArgHNwIMIAggBykCkAY3AhggCEEUaiAHQcAHaigCADYCACAIQSBqIAdBmAZqKAIANgIAIAcgCUEBaiIJNgKAAiAHKAL8ASEICyAHQQI2AvAEIAdCgICAgBA3AugEIAdBATYC/AQgB0KAgICAIDcC9AQgB0EBNgKIBSAHQoGAgIAQNwKABSAHQQA2ApQFIAdCADcCjAUgB0GAB2oiCiAIIAkgB0HoBGogB0GABWoQzwIgB0GYBWoiCEEwaiIMIApBMGoiCSgCADYCACAIQShqIg4gCkEoaiILKQIANwMAIAhBIGoiDSAKQSBqIhIpAgA3AwAgCEEYaiIRIApBGGoiDykCADcDACAIQRBqIhYgCkEQaiIXKQIANwMAIAhBCGoiGCAKQQhqIhQpAgA3AwAgByAHKQKABzcDmAUgCiAHKAL8ASAHKAKAAiAHQfQEaiAHQYwFahDPAiAHQdAFaiIIQTBqIAkoAgA2AgAgCEEoaiALKQIANwMAIAhBIGogEikCADcDACAIQRhqIA8pAgA3AwAgCEEQaiAXKQIANwMAIAhBCGogFCkCADcDACAHIAcpAoAHNwPQBSAHKAKEAiIJIAcoAowCIgtGBEAgFUGciMMAEJsIIAcoAoQCIQkLIAcoAogCIgggC0E0bGoiCiAHKQOYBTcCACAKQShqIA4pAwA3AgAgCkEgaiANKQMANwIAIApBGGogESkDADcCACAKQRBqIBYpAwA3AgAgCkEIaiAYKQMANwIAIApBMGogDCgCADYCACAHIAtBAWoiCjYCjAIgCSAKRgRAIBVBrIjDABCbCCAHKAKIAiEICyAIIApBNGxqIgggBykD0AU3AgAgCEEoaiAHQdAFaiIJQShqKQMANwIAIAhBIGogCUEgaikDADcCACAIQRhqIAlBGGopAwA3AgAgCEEQaiAJQRBqKQMANwIAIAhBCGogCUEIaikDADcCACAIQTBqIAlBMGooAgA2AgAgByALQQJqNgKMAiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0akIANwIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgBDAAAAAF1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0akIANwIAIAcoAqQCIgggBygCnAJGBEAgEEHA08IAELgICyAHKAKgAiIKIAhBA3RqQgE3AgAgByAIQQFqNgKkAgJAIAhFBEBBACEJDAELA0AgCiAIQQFrIgtBAXYiCUEDdGoiDEEEaioCAEMAAAAAXUUEQCAIIQkMAgsgCiAIQQN0aiAMKQIANwIAIAkhCCALQQFLDQALCyAKIAlBA3RqQgE3AgAMAQsgCCoCSCAIKgIAIhyTIRsgCCoCKCAIKgIEIgaTIh4gCCoCUCAIKgIIIh2TIh+UIAgqAiwgHZMiISAIKgJMIAaTIiCUkyAIKgJsIByTlCAhIBuUIAgqAiQgHJMiHCAflJMgCCoCcCAGk5SSIBwgIJQgHiAblJMgCCoCdCAdk5SSQwAAAABeBEAgCEEkaiIJKQIAISogCSAIQcgAaiIKKQIANwIAIAdBgAdqIgtBIGoiDCAJQSBqIg4oAgA2AgAgC0EYaiIZIAlBGGoiDSkCADcDACALQRBqIhIgCUEQaiIRKQIANwMAIAtBCGoiCyAJQQhqIgkpAgA3AwAgCSAKQQhqIgkpAgA3AgAgESAKQRBqIhEpAgA3AgAgDSAKQRhqIg0pAgA3AgAgDiAKQSBqIg4oAgA2AgAgByAqNwOAByAKIAcpA4AHNwIAIA4gDCgCADYCACANIBkpAwA3AgAgESASKQMANwIAIAkgCykDADcCAAsgB0ECNgKwAiAHQoCAgIAQNwKoAiAHQQI2ArwCIAdCgYCAgDA3ArQCIAdBAzYCyAIgB0KAgICAIDcCwAIgB0EBNgLUAiAHQoCAgIAwNwLMAiAHQQI2AuACIAdCg4CAgBA3AtgCIAdBADYC7AIgB0KDgICAIDcC5AIgB0EDNgL4AiAHQoCAgIAQNwLwAiAHQQA2AoQDIAdCgoCAgBA3AvwCIAdBgAdqIgkgCEEEIAdBqAJqIAdB2AJqEM8CIAdBiANqIghBMGoiFyAJQTBqIgooAgA2AgAgCEEoaiIYIAlBKGoiCykCADcDACAIQSBqIhQgCUEgaiIMKQIANwMAIAhBGGoiEyAJQRhqIg4pAgA3AwAgCEEQaiIZIAlBEGoiDSkCADcDACAIQQhqIhogCUEIaiISKQIANwMAIAcgBykCgAc3A4gDIActALQHIREgCSAHKAL8ASAHKAKAAiAHQbQCaiAHQeQCahDPAiAHQcADaiIIQTBqIAooAgA2AgAgCEEoaiALKQIANwMAIAhBIGogDCkCADcDACAIQRhqIA4pAgA3AwAgCEEQaiANKQIANwMAIAhBCGogEikCADcDACAHIAcpAoAHNwPAAyAHLQC0ByEPIAkgBygC/AEgBygCgAIgB0HAAmogB0HwAmoQzwIgB0H4A2oiCEEwaiAKKAIANgIAIAhBKGogCykCADcDACAIQSBqIAwpAgA3AwAgCEEYaiAOKQIANwMAIAhBEGogDSkCADcDACAIQQhqIBIpAgA3AwAgByAHKQKABzcD+AMgBy0AtAchFiAJIAcoAvwBIAcoAoACIAdBzAJqIAdB/AJqEM8CIAdBsARqIghBMGogCigCADYCACAIQShqIAspAgA3AwAgCEEgaiAMKQIANwMAIAhBGGogDikCADcDACAIQRBqIA0pAgA3AwAgCEEIaiASKQIANwMAIAcgBykCgAc3A7AEIActALQHIQ4gBygChAIiCCAHKAKMAiILRgRAIBVB8IXDABCbCCAHKAKEAiEICyAHKAKIAiIJIAtBNGxqIgogBykDiAM3AgAgCkEoaiAYKQMANwIAIApBIGogFCkDADcCACAKQRhqIBMpAwA3AgAgCkEQaiAZKQMANwIAIApBCGogGikDADcCACAKQTBqIBcoAgA2AgAgByALQQFqIgo2AowCIAggCkYEQCAVQYCGwwAQmwggBygCiAIhCSAHKAKEAiEICyAJIApBNGxqIgogBykDwAM3AgAgCkEoaiAHQcADaiIMQShqKQMANwIAIApBIGogDEEgaikDADcCACAKQRhqIAxBGGopAwA3AgAgCkEQaiAMQRBqKQMANwIAIApBCGogDEEIaikDADcCACAKQTBqIAxBMGooAgA2AgAgByALQQJqIgo2AowCIAggCkYEQCAVQZCGwwAQmwggBygCiAIhCSAHKAKEAiEICyAJIApBNGxqIgogBykD+AM3AgAgCkEoaiAHQfgDaiIMQShqKQMANwIAIApBIGogDEEgaikDADcCACAKQRhqIAxBGGopAwA3AgAgCkEQaiAMQRBqKQMANwIAIApBCGogDEEIaikDADcCACAKQTBqIAxBMGooAgA2AgAgByALQQNqIgo2AowCIAggCkYEQCAVQaCGwwAQmwggBygCiAIhCQsgCSAKQTRsaiIIIAcpA7AENwIAIAhBKGogB0GwBGoiCkEoaikDADcCACAIQSBqIApBIGopAwA3AgAgCEEYaiAKQRhqKQMANwIAIAhBEGogCkEQaikDADcCACAIQQhqIApBCGopAwA3AgAgCEEwaiAKQTBqKAIANgIAIAcgC0EEaiIINgKMAgJAIBFBAXFFDQACQCAIBEAgBygCgAJFDQEgCSoCGCAHKAL8ASIIKgIAlCAJQRxqKgIAIAhBBGoqAgCUkiAJQSBqKgIAIAhBCGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEANgIAIAcgCEEBajYCpAJBACEJAkAgCEUNAANAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEANgIADAILQQBBAEGwhsMAEIgLAAtBAEEAQcCGwwAQiAsACwJAIA9BAXFFDQACQCAHKAKMAiIIQQJPBEAgBygCgAIiCEEBTQ0BIAcoAogCIggqAkwgBygC/AEiCSoCJJQgCEHQAGoqAgAgCUEoaioCAJSSIAhB1ABqKgIAIAlBLGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEBNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEBNgIADAILQQEgCEHQhsMAEIgLAAtBASAIQeCGwwAQiAsACwJAIBZBAXFFDQACQCAHKAKMAiIIQQNPBEAgBygCgAIiCEECTQ0BIAcoAogCIggqAoABIAcoAvwBIgkqAkiUIAhBhAFqKgIAIAlBzABqKgIAlJIgCEGIAWoqAgAgCUHQAGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUECNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEECNgIADAILQQIgCEHwhsMAEIgLAAtBAiAIQYCHwwAQiAsACwJAIA5BAXFFDQACQCAHKAKMAiIIQQRPBEAgBygCgAIiCEEDTQ0BIAcoAogCIggqArQBIAcoAvwBIgkqAmyUIAhBuAFqKgIAIAlB8ABqKgIAlJIgCEG8AWoqAgAgCUH0AGoqAgCUkiIGQwAAoLVdDQggBowhBiAHKAKkAiIIIAcoApwCRgRAIBBBwNPCABC4CAsgBygCoAIiCiAIQQN0aiIJIAY4AgQgCUEDNgIAIAcgCEEBajYCpAICQCAIRQRAQQAhCQwBCwNAIAogCEEBayILQQF2IglBA3RqIgxBBGoqAgAgBl1FBEAgCCEJDAILIAogCEEDdGogDCkCADcCACAJIQggC0EBSw0ACwsgCiAJQQN0aiIIIAY4AgQgCEEDNgIADAILQQMgCEGQh8MAEIgLAAtBAyAIQaCHwwAQiAsACyARQQFxDQAgD0EBcQ0AIBZBAXENACAOQQFxDQBBjMTEACgCAEEESQ0FIAdBADYCkAcgB0EBNgKEByAHQYSIwwA2AoAHIAdCBDcCiAcgB0GMiMMANgKgBiAHQRk2ApwGIAdBhIXDADYCmAYgB0EZNgKUBiAHQYSFwwA2ApAGIAdBgAdqIAdBkAZqEPEJDAULIAcoAqQCRQ0EIAcoAqACKAIAIQsgB0GEBmogEBCzBAJAAn0CQCAHKAKEBkEBRw0AIAdBkAZqIghBJGohFiAIQRhqIRIgB0GcBmohF0P//39/IRxBACERA0ACQAJAAkACQAJAAkACQAJAIAcoAogGIgkgBygCjAIiCEkEQCAHKgKMBiEbIAdB0AdqIg1BCGoiCiAJQTRsIg8gBygCiAJqIghBFGooAgA2AgAgByAIKQIMNwPQByAHQbgHaiIUQQhqIgwgCEEgaigCADYCACAHIAgpAhg3A7gHIAdBgAdqIhNBCGoiGCAIQSxqKAIANgIAIAgtADAhDiAIKQIAISogCCkCJCErIAdBmAZqIAhBCGooAgA2AgAgByArNwOAByAHICo3A5AGIBdBCGogCigCADYCACAXIAcpA9AHNwIAIBJBCGogDCgCADYCACASIAcpA7gHNwIAIBZBCGogGCgCADYCACAWIAcpA4AHNwIAIAcgDjoAwAYgDg0HIA0gAiASIAMRAQAgByAHKgKwBow4AogHIAcgByoCrAaMOAKEByAHIAcqAqgGjDgCgAcgFCAEIAEgEyAFEQIAIAdB4AZqIg4gCigCADYCACAHQdAGaiINIAwoAgA2AgAgByAHKQLQBzcD2AYgByAHKQK4BzcDyAYgCioCACAMKgIAkyEdIAcqAtQHIAcqArwHkyEeIAcqAtAHIAcqArgHkyEfIAcoAoACIgwgBygC+AFGBEAgB0H4AWpBzIjDABCRCAsgBygC/AEgDEEkbGoiCCAdOAIIIAggHjgCBCAIIB84AgAgCCAHKQPYBjcCDCAIIAcpA8gGNwIYIAhBFGogDigCADYCACAIQSBqIA0oAgA2AgAgByAMQQFqIgo2AoACIAkgCyAfIAcqAqgGlCAeIAcqAqwGlJIgHSAHKgKwBpSSIh0gHF0iDhshCyAHKAKMAiEIAkAgGyAdIBwgDhsiHJJDAABIN11FBEAgCCAJTQ0DIAcoAogCIA9qQQE6ADAgBygCnAYiCCAHKAKMAiIJTw0EIAcoAogCIAhBNGxqIAcoApAGEIMHIQkgBygCoAYiCCAHKAKMAiIKTw0FIAcoAogCIAhBNGxqIAcoApQGEIMHIQogBygCpAYiCCAHKAKMAiIOTw0GIAcoAogCIAhBNGxqIAcoApgGEIMHIQ4gB0H4AWoiCCAMIAcoApwGIAkQxgIgCCAMIAcoAqAGIAoQxgIgCCAMIAcoAqQGIA4QxgIgBygCmAIiCkUNEyAbjCEdIAcoAowCIQ4gBygClAIiCEEIaiEJIAggCkEDdGohFANAIAkhCgJAAkACQCAIKAIAIg0gBygCjAIiCUkEQCAHKAKIAiANQTRsaiIPLQAwDQMgByANNgL0BiAIKAIEIQ0gByAMNgLwBiAHIAlBAWs2AvwGIAcgCUEBajYC+AYgByAPIA1BAWpBA3BBAnRqKAIANgLsBiAHIA8gDUECakEDcEECdGooAgA2AugGIAdBgAdqIAcoAvwBIAcoAoACIAdB6AZqIAdB9AZqEM8CIA8gCCgCBEEBakEDcEECdGogCTYCDCAHKAKMAiIPIAcoAoQCRgRAIBVBzInDABCbCAsgBygCiAIiEyAPQTRsaiIIIAcpAoAHNwIAIAhBKGogB0GAB2oiDUEoaikCADcCACAIQSBqIA1BIGopAgA3AgAgCEEYaiANQRhqKQIANwIAIAhBEGogDUEQaikCADcCACAIQQhqIBgpAgA3AgAgCEEwaiANQTBqKAIANgIAIAcgD0EBaiIINgKMAiAHLQC0B0UNAyAIIAlNDQwgEyAJQTRsaiIIKAIAIg0gBygCgAIiD08NDSAHKAL8ASITIA1BJGxqIg0qAgAgCCoCGJQgDSoCBCAIQRxqKgIAlJIgDSoCCCAIQSBqKgIAlJIiGyAdXQ0GIBtDAACgtV0iDQ0YIBuMIRsgBygCpAIiCCAHKAKcAkYEQCAQQcDTwgAQuAgLIAYgGyANGyEGIBkgCSANGyEZIAcoAqACIg0gCEEDdGoiDyAbOAIEIA8gCTYCACAHIAhBAWo2AqQCIAgNAUEAIQkMAgsgDSAJQbyJwwAQiAsACwNAIAYgDSAIQQFrIg9BAXYiCUEDdGoiE0EEaioCAF5FBEAgCCEJDAILIA0gCEEDdGogEykCADcCACAJIQggD0EBSw0ACwsgDSAJQQN0aiIIIAY4AgQgCCAZNgIACyAKIAogFEdBA3RqIQkgFCAKIghHDQALDAoLIAggC0sEQCAHQYAHaiAHKAKIAiALQTRsaiICIAcoAvwBIAoQqQUgAioCHCEbIAIqAhghHSACKgIgDA0LIAsgCEH8icMAEIgLAAsgB0G4B2ogB0GQBmogEyAPEKkFIAcqArAGIRwgByoCrAYhGyAHKgKoBiEdIAcqAswHISAgByoCyAchIiAHKgLEByEjIAcqAsAHIQYgByoCvAchHyAHKgK4ByEeDA0LIAkgCEG8iMMAEIgLAAsgCSAIQdyIwwAQiAsACyAIIAlB7IjDABCICwALIAggCkH8iMMAEIgLAAsgCCAOQYyJwwAQiAsACyAJIAhB3InDABCICwALIA0gD0HsicMAEIgLAAsgB0GEBmogEBCzBCAHKAKEBg0BDAILIAcoAowCIgggDkYNCCAIIA5NDQYgBygCiAIgDkE0bGogCEEBazYCFCAHKAKMAiIIRQ0HIAcoAogCIAhBNGxqIghBNEYNByAIQSRrIA42AgAgB0EANgKYAiARQeQARg0BIAdBhAZqIBAQswQgEUEBaiERIAcoAoQGDQALCyAHKAKMAiICIAtNDQEgB0GAB2ogBygCiAIgC0E0bGoiAiAHKAL8ASAHKAKAAhCpBSACKgIcIRsgAioCGCEdIAIqAiALIRwgByoClAchICAHKgKQByEiIAcqAowHISMgByoCiAchBiAHKgKEByEfIAcqAoAHIR4MAQsgCyACQYyKwwAQiAsACyAHKAL4ASICBEAgBygC/AEgAkEkbEEEEIgPCyAHKAKEAiICBEAgBygCiAIgAkE0bEEEEIgPCyAHKAKQAiICBEAgBygClAIgAkEDdEEEEIgPCyAHKAKcAiICRQ0AIAcoAqACIAJBA3RBBBCIDwsgACAcOAIkIAAgGzgCICAAIB04AhwgACAGOAIMIAAgHzgCCCAAIB44AgQgACAcICAgBpOUIB0gIyAek5QgGyAiIB+TlJKSOAI0IAAgASoCDCIhIBsgASoCACIGlCAdIAEqAgQiHpSTIh8gH5IiKZQgHiAcIB6UIBsgASoCCCIflJMiJCAkkiIklCAGIB0gH5QgHCAGlJMiJSAlkiIllJOSIByTOAIwIAAgISAllCAGICmUIB8gJJSTkiAbkzgCLCAAICEgJJQgHyAllCAeICmUk5IgHZM4AiggHiAjICaTIh2UIAYgIiAnkyIilJMiHCAckiEcICIgH5QgICAokyIgIB6UkyIbIBuSIRsgACAgICEgHJQgHiAblCAGICAgBpQgHSAflJMiICAgkiIglJOSkjgCGCAAICIgISAglCAGIByUIB8gG5STkpI4AhQgACAdICEgG5QgHyAglCAeIByUk5KSOAIQQQEhCQwDCyAOIAhBnInDABCICwALQayJwwAQkQ8ACyAHKAL4ASIBBEAgBygC/AEgAUEkbEEEEIgPCyAHKAKEAiIBBEAgBygCiAIgAUE0bEEEEIgPCyAHKAKQAiIBBEAgBygClAIgAUEDdEEEEIgPCyAHKAKcAiIBBEAgBygCoAIgAUEDdEEEEIgPC0EAIQkLIAAgCTYCACAHQeAHaiQAC7VAAxF/CX0BfiMAQeAGayIGJAAgBEEIaiIHKgIAIRsgBCoCACEdIAQqAgQhHCAGQSBqIAcoAgA2AgAgBkKAgICAgICAwD83AhAgBkIANwIIIAYgBCkCADcCGEMAAIA/IRcgHSAdlCAcIByUkiAbIBuUkiIZQwAAgCheBEAgGyAZkSIXlSEaIBwgF5UhGCAdIBeVIRcLIAYgGjgCLCAGIBg4AiggBiAXOAIkIAZBMGoiByAGQQhqIAEgAiAGQSRqENcDIANBADYCrAEgA0EANgK8ASADIAYpAjA3AhAgA0EYaiAHQQhqKQIANwIAIANBIGogB0EQaikCADcCACADQShqIAdBGGopAgA3AgAgA0EwaiAHQSBqKAIANgIAIAZCgICAgIiAgMA/NwKQBSAGQoCAgICIgICAgH83AogFIAYgGyAcQwAAAICUIB1DAAAAAJSSIhcgF5IiHiAbQwAAAICUIBxDAAAAAJSSIhcgF5IiGUMAAAAAlCIaIB1DAAAAgJQgG0MAAAAAlJIiFyAXkiIXQwAAAACUIhiTkpIiHzgCoAUgBiAcIBcgHkMAAAAAlCIXIBqTkpIiGzgCnAUgBiAdIBkgGCAXk5KSIhw4ApgFIAZBqANqIAMQQgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAYqAqgDIhcgF5QgBioCrAMiFyAXlJIgBioCsAMiGCAYlJJDAAAAAF5FDQBD//9/fyEXQeQAIQcCQAJAAkACQANAIAYqAqgDIh0gHZQgBioCrAMiGSAZlJIgBioCsAMiGCAYlJIiGkMAAMgrXkUNBSAGIBiMIBqRIhiVIh44ApgEIAYgGYwgGJUiGTgClAQgBiAdjCAYlSIaOAKQBCAXIBhfDQQgBkH4BWoiCSAGQYgFaiABIAIgBkGQBGoQ1wMgGiAGKgL4BZQgGSAGKgL8BZSSIB4gBioCgAaUkiIXvEH/////B3FBgICA/AdPDQYgF0P//3//XUUEQCAYIBeSIBhDvRuPOpRfDQQgAyAJEMYDRQ0CIAZBqANqIAMQQiADKAK8AUEDRg0DIBghFyAHQQFrIgcNAQsLQYDUwgBBKEGci8MAENYMAAsgBkHIBGogA0EAEL4CDA4LIBdDAACgtV9FDQIgBkHIBGogA0EBEL4CDA0LIAZByARqIANBABC+AgwMCyAGQcgEaiADQQEQvgIMCwsCQCAFRQRAIAZCgICAgMAANwJ4IAZCgICAgMAANwJsIAZCgICAgMAANwJgIAZCgICAgMAANwJUIAYgHzgCnAEgBiAbOAKYASAGIBw4ApQBIAZCgICAgIiAgMA/NwKMASAGQoCAgICIgICAgH83AoQBIAZBADYCgAEgBkEANgJoIAZBADYCXCAGQQA2AnQgBkH4AGohEyAGQeAAaiEVIAMoArwBIglBf0YEQEEEIQdBACEFDAULIAZB1ABqIgVBnIrDABCRCCAGKAJYIgcgA0EQaiIIKQIANwIAIAdBIGogCEEgaigCADYCACAHQRhqIAhBGGopAgA3AgAgB0EQaiAIQRBqKQIANwIAIAdBCGogCEEIaikCADcCACAGQQE2AlwgCUUNASAJQQJqIQkgA0E0aiEIIAYoAlRBAUYEQCAFQZyKwwAQkQggBigCWCEHCyAHIAgpAgA3AiQgB0HEAGogCEEgaigCADYCACAHQTxqIAhBGGopAgA3AgAgB0E0aiAIQRBqKQIANwIAIAdBLGogCEEIaikCADcCACAGQQI2AlwgCUEDRg0DIANB2ABqIQUgBigCVEECRgRAIAZB1ABqQZyKwwAQkQggBigCWCEHCyAHIAUpAgA3AkggB0HoAGogBUEgaigCADYCACAHQeAAaiAFQRhqKQIANwIAIAdB2ABqIAVBEGopAgA3AgAgB0HQAGogBUEIaikCADcCAEEDIQUgBkEDNgJcIAlBBEYNBCADQfwAaiEDIAYoAlRBA0YEQCAGQdQAakGcisMAEJEIIAYoAlghBwsgByADKQIANwJsIAdBjAFqIANBIGooAgA2AgAgB0GEAWogA0EYaikCADcCACAHQfwAaiADQRBqKQIANwIAIAdB9ABqIANBCGopAgA3AgAgBkEENgJcIAlBBUYNBUEEQQRBwIzDABCICwALIABBAToADCAAIAQpAgA3AgAgAEEIaiAEQQhqKAIANgIADAwLIAZByAZqIgFBEGpCADcDACABQQhqQgA3AwAgBkIANwPIBgwFC0Gsi8MAQSdB1IvDABDWDAALIAcqAiwgByoCCJMiG0MAAAAAIAcqAiQgByoCAJMiHIsgByoCKCAHKgIEkyIYi14iAxsiFyAcjCAYIAMbIh4gHpRDAAAAACAbjCADGyIaIBqUIBcgF5SSkpEiF5UhGSAGIBggGZQgHCAaIBeVIhqUkzgCkAUgBiAcIB4gF5UiF5QgGyAZlJM4AowFIAYgGyAalCAYIBeUkzgCiAUgBkH4BWogBkGEAWogASACIAZBiAVqENcDIAYoAlwiAyAGKAJURgRAIAZB1ABqQayKwwAQkQgLIAYoAlggA0EkbGoiByAGKQL4BTcCACAHQSBqIAZB+AVqIgVBIGooAgA2AgAgB0EYaiAFQRhqKQIANwIAIAdBEGogBUEQaikCADcCACAHQQhqIAVBCGopAgA3AgAgBiADQQFqIgU2AlwgBigCWCEHCyAGQQI2AugDIAZCgICAgBA3AuADIAZBATYC9AMgBkKAgICAIDcC7AMgBkEBNgKABCAGQoGAgIAQNwL4AyAGQQA2AowEIAZCADcChAQgBkH4BWoiCiAHIAUgBkHgA2ogBkH4A2oQzwIgBkGQBGoiB0EwaiIOIApBMGoiFCgCADYCACAHQShqIhAgCkEoaiILKQIANwMAIAdBIGoiESAKQSBqIg8pAgA3AwAgB0EYaiIIIApBGGoiBSkCADcDACAHQRBqIgkgCkEQaiIDKQIANwMAIAdBCGoiByAKQQhqIhYpAgA3AwAgBiAGKQL4BTcDkAQgCiAGKAJYIAYoAlwgBkHsA2ogBkGEBGoQzwIgBkHIBGoiCkEwaiAUKAIANgIAIApBKGogCykCADcDACAKQSBqIA8pAgA3AwAgCkEYaiAFKQIANwMAIApBEGogAykCADcDACAKQQhqIBYpAgA3AwAgBiAGKQL4BTcDyAQgBigCYCIFIAYoAmgiD0YEQCAVQZyIwwAQmwggBigCYCEFCyAGKAJkIgMgD0E0bGoiCyAGKQOQBDcCACALQShqIBApAwA3AgAgC0EgaiARKQMANwIAIAtBGGogCCkDADcCACALQRBqIAkpAwA3AgAgC0EIaiAHKQMANwIAIAtBMGogDigCADYCACAGIA9BAWoiBzYCaCAFIAdGBEAgFUGsiMMAEJsIIAYoAmQhAwsgAyAHQTRsaiIFIAYpA8gENwIAIAVBKGogBkHIBGoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgD0ECajYCaCAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAGKAJ8IgggA0EDdGpCADcCACAGIANBAWo2AoABAkAgA0UEQEEAIQUMAQsDQCAIIANBAWsiCUEBdiIFQQN0aiIHQQRqKgIAQwAAAABdRQRAIAMhBQwCCyAIIANBA3RqIAcpAgA3AgAgBSEDIAlBAUsNAAsLIAggBUEDdGpCADcCACAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAGKAJ8IgggA0EDdGpCATcCACAGIANBAWo2AoABAkAgA0UEQEEAIQUMAQsDQCAIIANBAWsiCUEBdiIFQQN0aiIHQQRqKgIAQwAAAABdRQRAIAMhBQwCCyAIIANBA3RqIAcpAgA3AgAgBSEDIAlBAUsNAAsLIAggBUEDdGpCATcCAAwBCyAHKgJIIAcqAgAiH5MhGyAHKgIoIAcqAgQiGJMiHiAHKgJQIAcqAggiHJMiGZQgByoCLCAckyIXIAcqAkwgGJMiGpSTIAcqAmwgH5OUIBcgG5QgByoCJCAfkyIXIBmUkyAHKgJwIBiTlJIgFyAalCAeIBuUkyAHKgJ0IByTlJJDAAAAAF4EQCAHQSRqIgkpAgAhICAJIAdByABqIgopAgA3AgAgBkH4BWoiA0EgaiIOIAlBIGoiFCgCADYCACADQRhqIhAgCUEYaiILKQIANwMAIANBEGoiESAJQRBqIgUpAgA3AwAgA0EIaiIPIAlBCGoiAykCADcDACADIApBCGoiCCkCADcCACAFIApBEGoiCSkCADcCACALIApBGGoiBSkCADcCACAUIApBIGoiAygCADYCACAGICA3A/gFIAogBikD+AU3AgAgAyAOKAIANgIAIAUgECkDADcCACAJIBEpAwA3AgAgCCAPKQMANwIACyAGQQI2AqgBIAZCgICAgBA3AqABIAZBAjYCtAEgBkKBgICAMDcCrAEgBkEDNgLAASAGQoCAgIAgNwK4ASAGQQE2AswBIAZCgICAgDA3AsQBIAZBAjYC2AEgBkKDgICAEDcC0AEgBkEANgLkASAGQoOAgIAgNwLcASAGQQM2AvABIAZCgICAgBA3AugBIAZBADYC/AEgBkKCgICAEDcC9AEgBkH4BWoiDCAHQQQgBkGgAWogBkHQAWoQzwIgBkGAAmoiA0EwaiIPIAxBMGoiEigCADYCACADQShqIgggDEEoaiINKQIANwMAIANBIGoiCSAMQSBqIgopAgA3AwAgA0EYaiIWIAxBGGoiDikCADcDACADQRBqIgUgDEEQaiIRKQIANwMAIANBCGoiAyAMQQhqIgcpAgA3AwAgBiAGKQL4BTcDgAIgBi0ArAYhFCAMIAYoAlggBigCXCAGQawBaiAGQdwBahDPAiAGQbgCaiILQTBqIBIoAgA2AgAgC0EoaiANKQIANwMAIAtBIGogCikCADcDACALQRhqIA4pAgA3AwAgC0EQaiARKQIANwMAIAtBCGogBykCADcDACAGIAYpAvgFNwO4AiAGLQCsBiEQIAwgBigCWCAGKAJcIAZBuAFqIAZB6AFqEM8CIAZB8AJqIgtBMGogEigCADYCACALQShqIA0pAgA3AwAgC0EgaiAKKQIANwMAIAtBGGogDikCADcDACALQRBqIBEpAgA3AwAgC0EIaiAHKQIANwMAIAYgBikC+AU3A/ACIAYtAKwGIQsgDCAGKAJYIAYoAlwgBkHEAWogBkH0AWoQzwIgBkGoA2oiDEEwaiASKAIANgIAIAxBKGogDSkCADcDACAMQSBqIAopAgA3AwAgDEEYaiAOKQIANwMAIAxBEGogESkCADcDACAMQQhqIAcpAgA3AwAgBiAGKQL4BTcDqAMgBi0ArAYhESAGKAJgIg0gBigCaCIORgRAIBVB8IXDABCbCCAGKAJgIQ0LIAYoAmQiByAOQTRsaiIKIAYpA4ACNwIAIApBKGogCCkDADcCACAKQSBqIAkpAwA3AgAgCkEYaiAWKQMANwIAIApBEGogBSkDADcCACAKQQhqIAMpAwA3AgAgCkEwaiAPKAIANgIAIAYgDkEBaiIDNgJoIAMgDUYEQCAVQYCGwwAQmwggBigCYCENIAYoAmQhBwsgByADQTRsaiIFIAYpA7gCNwIAIAVBKGogBkG4AmoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgDkECaiIDNgJoIAMgDUYEQCAVQZCGwwAQmwggBigCYCENIAYoAmQhBwsgByADQTRsaiIFIAYpA/ACNwIAIAVBKGogBkHwAmoiA0EoaikDADcCACAFQSBqIANBIGopAwA3AgAgBUEYaiADQRhqKQMANwIAIAVBEGogA0EQaikDADcCACAFQQhqIANBCGopAwA3AgAgBUEwaiADQTBqKAIANgIAIAYgDkEDaiIDNgJoIAMgDUYEQCAVQaCGwwAQmwggBigCZCEHCyAHIANBNGxqIgUgBikDqAM3AgAgBUEoaiAGQagDaiIDQShqKQMANwIAIAVBIGogA0EgaikDADcCACAFQRhqIANBGGopAwA3AgAgBUEQaiADQRBqKQMANwIAIAVBCGogA0EIaikDADcCACAFQTBqIANBMGooAgA2AgAgBiAOQQRqIgM2AmgCQCAUQQFxRQ0AAkAgAwRAIAYoAlxFDQEgByoCGCAGKAJYIgMqAgCUIAdBHGoqAgAgA0EEaioCAJSSIAdBIGoqAgAgA0EIaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEANgIAIAYgA0EBajYCgAFBACEHAkAgA0UNAANAIAggA0EBayIJQQF2IgdBA3RqIgVBBGoqAgAgGF1FBEAgAyEHDAILIAggA0EDdGogBSkCADcCACAHIQMgCUEBSw0ACwsgCCAHQQN0aiIDIBg4AgQgA0EANgIADAILQQBBAEGwhsMAEIgLAAtBAEEAQcCGwwAQiAsACwJAIBBBAXFFDQACQCAGKAJoIgNBAk8EQCAGKAJcIgNBAU0NASAGKAJkIgUqAkwgBigCWCIDKgIklCAFQdAAaioCACADQShqKgIAlJIgBUHUAGoqAgAgA0EsaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEBNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0EBNgIADAILQQEgA0HQhsMAEIgLAAtBASADQeCGwwAQiAsACwJAIAtBAXFFDQACQCAGKAJoIgNBA08EQCAGKAJcIgNBAk0NASAGKAJkIgUqAoABIAYoAlgiAyoCSJQgBUGEAWoqAgAgA0HMAGoqAgCUkiAFQYgBaioCACADQdAAaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUECNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0ECNgIADAILQQIgA0HwhsMAEIgLAAtBAiADQYCHwwAQiAsACwJAIBFBAXFFDQACQCAGKAJoIgNBBE8EQCAGKAJcIgNBA00NASAGKAJkIgUqArQBIAYoAlgiAyoCbJQgBUG4AWoqAgAgA0HwAGoqAgCUkiAFQbwBaioCACADQfQAaioCAJSSIhdDAACgtV0NByAXjCEYIAYoAoABIgMgBigCeEYEQCATQcDTwgAQuAgLIAYoAnwiCCADQQN0aiIFIBg4AgQgBUEDNgIAIAYgA0EBajYCgAECQCADRQRAQQAhBQwBCwNAIAggA0EBayIJQQF2IgVBA3RqIgdBBGoqAgAgGF1FBEAgAyEFDAILIAggA0EDdGogBykCADcCACAFIQMgCUEBSw0ACwsgCCAFQQN0aiIDIBg4AgQgA0EDNgIADAILQQMgA0GQh8MAEIgLAAtBAyADQaCHwwAQiAsACyAUQQFxDQAgEEEBcQ0AIAtBAXENACARQQFxDQBBjMTEACgCAEEESQ0EIAZBADYCiAYgBkEBNgL8BSAGQYSIwwA2AvgFIAZCBDcCgAYgBkGMiMMANgKYBSAGQRk2ApQFIAZBhIXDADYCkAUgBkEZNgKMBSAGQYSFwwA2AogFIAZB+AVqIAZBiAVqEPEJDAQLIAYoAoABRQ0DIAYoAnwoAgAhEiAGQfwEaiATELMEAkAgBigC/ARBAUcNACAGQYgFaiIDQSRqIQsgA0EYaiEOIAZBlAVqIRFD//9/fyEXQQAhFANAAkACQAJAAkACQAJAAkACQAJAIAYoAoAFIgggBigCaCIDSQRAIAYqAoQFIRkgESAIQTRsIgcgBigCZGoiAykCDDcCACAOIAMpAhg3AgAgCyADKQIkNwIAIAZBkAVqIANBCGooAgA2AgAgEUEIaiADQRRqKAIANgIAIA5BCGogA0EgaigCADYCACALQQhqIANBLGooAgA2AgAgBiADKQIANwOIBSAGIAMtADAiAzoAuAUgAw0IIAZBvAVqIAZBhAFqIAEgAiAOENcDIAYoAlwiDSAGKAJURgRAIAZB1ABqQcyIwwAQkQgLIAYoAlggDUEkbGoiBSAGKQK8BTcCACAFQSBqIAZBvAVqIgNBIGooAgA2AgAgBUEYaiADQRhqKQIANwIAIAVBEGogA0EQaikCADcCACAFQQhqIANBCGoiAykCADcCACAGIA1BAWoiBTYCXCAIIBIgBioCvAUgBioCoAWUIAYqAsAFIAYqAqQFlJIgAyoCACAGKgKoBZSSIhogF10iAxshEiAGKAJoIQkgGSAaIBcgAxsiF5JDAABIN11FBEAgCCAJTw0CIAYoAmQgB2pBAToAMCAGKAKUBSIQIAYoAmgiCU8NAyAGKAJkIgMgEEE0bGogBigCiAUQgwchByAGKAKYBSIPIAlPDQQgAyAPQTRsaiAGKAKMBRCDByEFIAYoApwFIgggCU8NBSADIAhBNGxqIAYoApAFEIMHIQMgBkHUAGoiCSANIBAgBxDGAiAJIA0gDyAFEMYCIAkgDSAIIAMQxgIgBigCdCIFRQ0QIBmMIRogBigCaCEKIAYoAnAiA0EIaiEHIAMgBUEDdGohDwNAIAchCQJAAkACQCADKAIAIgUgBigCaCIMSQRAIAYoAmQgBUE0bGoiBy0AMA0DIAYgBTYC7AUgAygCBCEFIAYgDTYC6AUgBiAMQQFrNgL0BSAGIAxBAWo2AvAFIAYgByAFQQFqQQNwQQJ0aigCADYC5AUgBiAHIAVBAmpBA3BBAnRqKAIANgLgBSAGQfgFaiAGKAJYIAYoAlwgBkHgBWogBkHsBWoQzwIgByADKAIEQQFqQQNwQQJ0aiAMNgIMIAYoAmgiBSAGKAJgRgRAIBVBzInDABCbCAsgBigCZCIDIAVBNGxqIgggBikC+AU3AgAgCEEoaiAGQfgFaiIHQShqKQIANwIAIAhBIGogB0EgaikCADcCACAIQRhqIAdBGGopAgA3AgAgCEEQaiAHQRBqKQIANwIAIAhBCGogB0EIaikCADcCACAIQTBqIAdBMGooAgA2AgAgBiAFQQFqIgU2AmggBi0ArAZFDQMgBSAMTQ0LIAMgDEE0bGoiCCgCACIFIAYoAlwiB08NDCAGKAJYIgMgBUEkbGoiBSoCACAIKgIYlCAFKgIEIAhBHGoqAgCUkiAFKgIIIAhBIGoqAgCUkiIZIBpdDQ0gGUMAAKC1XSIFDRUgGYwhGSAGKAKAASIDIAYoAnhGBEAgE0HA08IAELgICyAYIBkgBRshGCAWIAwgBRshFiAGKAJ8IhAgA0EDdGoiBSAZOAIEIAUgDDYCACAGIANBAWo2AoABIAMNAUEAIQUMAgsgBSAMQbyJwwAQiAsACwNAIBggECADQQFrIghBAXYiBUEDdGoiB0EEaioCAF5FBEAgAyEFDAILIBAgA0EDdGogBykCADcCACAFIQMgCEEBSw0ACwsgECAFQQN0aiIDIBg4AgQgAyAWNgIACyAJIAkgD0dBA3RqIQcgDyAJIgNHDQALDAoLIAkgEksEQCAGQfgFaiIBIAYoAmQgEkE0bGogBigCWCAFEKkFIAZB0AZqIAFBCGooAgA2AgAgBiAGKQL4BTcDyAYMDQsgEiAJQfyJwwAQiAsACyAIIANBvIjDABCICwALIAggCUHciMMAEIgLAAsgECAJQeyIwwAQiAsACyAPIAlB/IjDABCICwALIAggCUGMicMAEIgLAAsgDCAFQdyJwwAQiAsACyAFIAdB7InDABCICwALIAZBsAZqIgEgBkGIBWogAyAHEKkFIAZB0AZqIAFBCGooAgA2AgAgBiAGKQKwBjcDyAYMBAsgBkH8BGogExCzBCAGKAL8BA0BDAILIAYoAmgiAyAKRg0FIAMgCk0NAyAGKAJkIApBNGxqIANBAWs2AhQgBigCaCIDRQ0EIAYoAmQgA0E0bGoiA0E0Rg0EIANBJGsgCjYCACAGQQA2AnQgFEHkAEYNASAGQfwEaiATELMEIBRBAWohFCAGKAL8BA0ACwsgBigCaCIBIBJLBEAgBkH4BWoiASAGKAJkIBJBNGxqIAYoAlggBigCXBCpBSAGQdAGaiABQQhqKAIANgIAIAYgBikC+AU3A8gGDAELIBIgAUGMisMAEIgLAAsgAEEIaiAGQdAGaigCADYCACAAIAYpA8gGNwIAIABBAToADAwDCyAKIANBnInDABCICwALQayJwwAQkQ8ACyAAQQE6AAwgACAEKQIANwIAIABBCGogBEEIaigCADYCAAsgBigCVCIABEAgBigCWCAAQSRsQQQQiA8LIAYoAmAiAARAIAYoAmQgAEE0bEEEEIgPCyAGKAJsIgAEQCAGKAJwIABBA3RBBBCIDwsgBigCeCIARQ0BIAYoAnwgAEEDdEEEEIgPDAELIAYqAswEIRggBioCyAQhFyAAIAYqAtAEOAIIIAAgGDgCBCAAIBc4AgAgAEEAOgAMCyAGQeAGaiQAC8JLA21/A34nfSMAQaAMayIFJAACQAJAIAEgACgCOE8NACACIAAoAjQgAUEUbGoiBCgCAEcNAAJAAkACQAJAAkACQAJAIAQoAgQiFiAAKAJMTw0AIAAoAkggFkGkAmxqIgcoAgAiJEGAgICAeEYNACAEKAIIIAcoAqACRw0AIAQoAhAhJSAEKAIMIRIgACkCPCFxIAVB6AZqIgQgB0EEakGgAvwKAAAgByBxNwIEIAdBgICAgHg2AgAgACAWNgJAIABBATYCPCAAIAAoAlBBAWo2AlAgACAAKAJUQQFrNgJUIAVBFGogBEGcAvwKAAAgBSAkNgIQICUgBSgCGCITTw0BIAUoAhQiFiAlQfADbGoiBCgCkAMEQCAEKAKYAyIEIBNPDQMgFiAEQfADbGoiBygC8AIiGCAAKAI4Tw0EIAcoAvQCIhkgACgCNCAYQRRsaiIEKAIARw0EIAQoAgwiBCAAKAIgIhFPDQcgACgCLCEPIAAoAighDSAAKAIcIhQgBEEEdGpBCGoiByEIA0ACQCAPIAgoAgAiBE0EQANAIA8gBygCBCIETQ0LIA0gBEEEdGoiBygCCCASRw0ADAILAAsgDSAEQQR0aiIIKAIMIBJHDQELCyANIARBBHRqIgYpAggicqciByARTw0GIAYpAgAicachEiByQiCIpyEJIBQgB0EEdGoiBygCCCIIIARHBEADQCAIIA9PDQcgDSAIQQR0aiIHKAIAIgggBEcNAAsgByASNgIADAYLIAdBCGogEjYCAAwFCyAFQRBqEPUCDAcLQfi9wgAQkQ8AC0GIvsIAEJEPAAtBmL7CABCRDwALQai+wgAQkQ8ACyAJIBFPDQAgcUIgiKchEiAUIAlBBHRqIgcoAgwiCCAERwRAA0AgCCAPTw0CIA0gCEEEdGoiBygCBCIIIARHDQALIAdBBGogEjYCAAwBCyAHQQxqIBI2AgALIAAgD0EBayIJNgIsIA0gCUEEdGoiBykCACFxIAZBCGogB0EIaikCADcCACAGIHE3AgAgBCAJTw0AIA0gBEEEdGopAggicaciByARTw0AIHFCIIinIRICQCAJIBQgB0EEdGoiBygCCCIORwRAA0AgCSAOTQ0CIAkgDSAOQQR0aiIHKAIAIg5HDQALIAcgBDYCAAwBCyAHQQhqIAQ2AgALIBEgEk0NACAJIBQgEkEEdGoiBygCDCIORwRAA0AgCSAOTQ0CIAkgDSAOQQR0aiIHKAIEIg5HDQALIAdBBGogBDYCAAwBCyAHQQxqIAQ2AgALIAMEQCAAIAEgAhDkAyAAIBggGRDkAwsgBS0ArQIhHCAFKAKYAiFkIAUoApQCITUgBSgCkAIhJiAFKAKMAiEYIAUoAogCITYgBSgChAIhJyAFKAKAAiEJIAUoAvwBITcgBSgC8AEhZSAFKALsASE4IAUoAuQBIWYgBSgC4AEhOSAFKALQASFnIAUoAswBITogBSgCvAEhaCAFKAK4ASE7IAUoAqgBIWkgBSgCpAEhPCAFKAKYASFqIAUoApQBIT0gBSgChAEhayAFKAKAASE+IAUoAnAhbCAFKAJsIT8gBSgCXCFtIAUoAlghQCAFKAJUISggBSgCUCESIAUoAkwhQSAFKAJIIW4gBSgCQCEpIAUoAjwhQiAFKAI4IW8gBSgCMCEqIAUoAiwhQyAFKAIoIXAgBSgCICErIAUoAhwhRCAFQQA2ApQJIAVCgICAgMAANwKMCQJAAkACQAJAIBNBAnQiH0EEELMOIhAEQCAQIQEgE0EBRwRAIB9BBGsiAQRAIBBB/wEgAfwLAAsgASAQaiEBCyABQX82AgAgH0EEELMOIg9FDQEgDyEBIABBPGohRSAAQRhqIRkgE0EBRwRAIB9BBGsiAQRAIA9B/wEgAfwLAAsgASAPaiEBCyABQX82AgAgFiATQfADbGohFSAFQbgLaiEsIAVB3ARqIUYgBUHqC2ohRyAFQf0LaiFIIAVBkAxqIUkgBUHTC2ohSiAFQY8LaiFLIAVB1wJqIUxBACEOIBYhBEEAIQgDQCAEQegCai0AACJNQQJGDQUgBEHLAmotAAAhIiAEQckCai8AACEeIARBGGopAwAhcyAEQRBqKQMAIXIgBEGoA2oqAAAhdCAEQZgDaigAACEjIARBzQJqLQAAIQ0gBEHMAmotAAAhTiAEQcgCai0AACECIARBxAJqLQAAIU8gBEHAAmoqAgAhdSAEQbwCaioCACF2IARBqAJqLQAAIVAgBEGkAmoqAgAhdyAEQaACaioCACF4IARBjAJqLQAAIREgBEGIAmoqAgAheSAEQYQCaioCACF6IARB8AFqLQAAIRQgBEHsAWoqAgAheyAEQegBaioCACF8IARB1AFqLQAAIVEgBEHQAWoqAgAhfSAEQcwBaioCACF+IARBuAFqLQAAIVIgBEG0AWoqAgAhfyAEQbABaioCACGAASAEQZwBaioCACGBASAEQZgBaioCACGCASAEQZQBaioCACGDASAEQZABaioCACGEASAEQfQAaioCACGFASAEQeQAaigCACFTIARB4ABqKgIAIYYBIARB3ABqKgIAIYcBIARB2ABqKgIAIYgBIARB1ABqKgIAIYkBIARB0ABqKgIAIYoBIARBzABqKgIAIYsBIARByABqKgIAIYwBIARBxABqKgIAIY0BIARBQGsqAgAhjgEgBEE8aioCACGPASAEQThqKgIAIZABIARBNGoqAgAhkQEgBEEwaioCACGSASAEQSxqKgIAIZMBIARBKGoqAgAhlAEgBEEkaioCACGVASAEQSBqKgIAIZYBIARBDGoqAgAhlwEgBEEIaioCACGYASAEQQRqKgIAIZkBIAQqAgAhmgEgBUGIC2oiVCAEQfAAaigCADYCACAFQegKaiIBQQhqIlUgBEGAAWopAwA3AwAgAUEQaiJWIARBiAFqKQMANwMAIAVBuApqIgFBCGoiVyAEQcEBaikAADcDACABQQ9qIlggBEHIAWooAAA2AAAgBSAEQegAaikCADcDgAsgBSAEQfgAaikDADcD6AogBSAEQaABaikDADcD0AogBSAEQagBaikDADcD2AogBSAEQbkBaikAADcDuAogBUGgCmoiAUEPaiJZIARB5AFqKAAANgAAIAFBCGoiWiAEQd0BaikAADcDACAFQYgKaiIBQQhqIlsgBEH5AWopAAA3AwAgAUEPaiJcIARBgAJqKAAANgAAIAVB8AlqIgFBCGoiXSAEQZUCaikAADcDACABQQ9qIl4gBEGcAmooAAA2AAAgBSAEQdUBaikAADcDoAogBSAEQfEBaikAADcDiAogBSAEQY0CaikAADcD8AkgBUHYCWoiAUEPaiJfIARBuAJqKAAANgAAIAFBCGoiYCAEQbECaikAADcDACAFQdYJaiIaIARBxwJqLQAAOgAAIAVBuAlqIgFBGGoiYSAEQeYCai8BADsBACABQRBqImIgBEHeAmopAQA3AwAgAUEIaiJjIARB1gJqKQEANwMAIAUgBEGpAmopAAA3A9gJIAUgBEHFAmovAAA7AdQJIAUgBEHOAmopAQA3A7gJIEwgBEGQA2opAAA3AAAgBUGwAmoiAUEgaiIbIARBiQNqKQAANwMAIAFBGGoiLSAEQYEDaikAADcDACABQRBqIi4gBEH5AmopAAA3AwAgAUEIaiIvIARB8QJqKQAANwMAIAUgBEHpAmopAAA3A7ACIAVBsAlqIhcgBEGkA2ooAAA2AgAgBSAEQZwDaikAADcDqAkgBUGgCWoiHSAEQbQDaigAADYCACAFIARBrANqKQAANwOYCSAFQegGaiIBQTBqIjAgBEHoA2opAAA3AwAgAUEoaiIxIARB4ANqKQAANwMAIAFBIGoiMiAEQdgDaikAADcDACABQRhqIgogBEHQA2opAAA3AwAgAUEQaiILIARByANqKQAANwMAIAFBCGoiDCAEQcADaikAADcDACAFIARBuANqKQAANwPoBgJ/AkACQAJAAkACQCAIRSAIICVGciIGBEAgCCATTw0CIA4gEGogBSgClAkiMzYCACAFQQA2ApwLIAVCADcClAsgBUKAgICAwAA3AowLIAVB0ARqIAVBjAtqIgEQfCAFQQA2AuALIAVCADcC2AsgBUKAgICAwAA3AtALIAEgBUHQC2oQfCAFKAKMCSAzRgRAIwBBIGsiASQAQQQgBUGMCWoiNCgCACIhQQF0IgMgA0EETRsiB61CoAJ+InFCIIhCAFIEQEEAQQBBnJDCABDTDQALAkAgcaciA0H8////B00EfyABICEEfyABICFBoAJsNgIcIAEgNCgCBDYCFEEEBUEACzYCGCABQQhqQQQgAyABQRRqEPQJIAEoAghBAUcNASABKAIQISAgASgCDAVBAAsgIEGckMIAENMNAAsgASgCDCEDIDQgBzYCACA0IAM2AgQgAUEgaiQACyAFKAKQCSAzQaACbGoiA0EANgJYIANCADcCUCADQoCAgIDAADcCSCADQgQ3AkAgA0IANwI4IANCBDcCMCADQgA3AiggA0IENwIgIANCADcCGCADQgQ3AhAgA0IANwIIIANCgICAgIACNwIAIAMgBSkC0AQ3AlwgA0HkAGogBUHQBGoiAUEIaikCADcCACADQewAaiABQRBqKQIANwIAIANB9ABqIAFBGGopAgA3AgAgA0H8AGogAUEgaikCADcCACADQQA2AqQBIANCADcCnAEgA0KAgICAwAA3ApQBIANCgICAgHA3AowBIANCgICAgMAANwKEASADQQQ2AogCIANCgICAgMAANwLQASADQgA3AtgBIANCBDcC4AEgA0IANwLoASADQgQ3AvABIANCgICAgMAANwL4ASADQgA3AoACIAMgBSkCjAs3AqgBIANBsAFqIAVBjAtqIgFBCGopAgA3AgAgA0G4AWogAUEQaikCADcCACADQcABaiABQRhqKQIANwIAIANByAFqIAFBIGopAgA3AgAgA0GcAmpBADoAACADQZQCakIANwIAIANCADcCjAIgAyAcOgCdAiAFIDNBAWo2ApQJDAELIBMgI00NCSAIIBNPDQogDiAQaiAQICNBAnRqKAIANgIACyAIIBNGDQEgDiAQaigCACIDIAUoApQJIgFPDQIgDiAPaiAFKAKQCSADQaACbGoiBygCCCIDNgIAIAYNAyAeICJBEHRyDAQLIAggE0GMkMIAEIgLAAsgEyATQayQwgAQiAsACyADIAFBvJDCABCICwALIFQgFygCADYCACAFIAUpA6gJNwOACyAFQdAEaiICQQhqIgEgHSgCADYCACAFIAUpA5gJNwPQBEIAIXIgS0IANwAAIEtBCGpCADcAACBKQgA3AAAgSkEIakIANwAAIElCADcAACBJQQhqQgA3AAAgSEIANwAAIEhBCGpCADcAACBHQgA3AAAgR0EIakIANwAAIEZCADcCAEEAIU4gRkEIakEANgIAICxBEGpCADcBACAsQQhqQgA3AQAgLEIANwEAIAVCADcD0AogBUIANwPYCiBWIAJBEGopAwA3AwAgVSABKQMANwMAIAUgBSkD0AQ3A+gKIFggBUGMC2oiAUEPaigAADYAACBXIAFBCGopAAA3AwAgBSAFKQCMCzcDuAogWSAFQdALaiIBQQ9qKAAANgAAIFogAUEIaikAADcDACAFIAUpANALNwOgCiBcIAVBjQxqIgFBD2ooAAA2AAAgWyABQQhqKQAANwMAIAUgBSkAjQw3A4gKIF4gBUH6C2oiAUEPaigAADYAACBdIAFBCGopAAA3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AjwiC0H/////A3EiBrOUkiIwIBkgHZMgGiAek5QgGyAfk5QgCLOUIBwgKSAcIClgGyIZICAgLCAgICxfGyIdkyAhICggISAoYBsiGiAiICsgIiArXxsiHpOUICMgJyAjICdgGyIbICQgKiAkICpfGyIfk5QgBkEBarOUkiIcXUUEQCAGIAhNDQEgHCAwXA0BCyAIQQFHDQIgByADKQMANwMAIAcgASkCADcDICAHIANBGGopAwA3AxggByADQRBqKQMANwMQIAcgA0EIaikDADcDCCAHIAFBCGooAgA2AiggACgCACAFRgR/IABBiOHCABDICCAAKAIEBSAECyAFQQZ0aiIBIAcpAwA3AwAgASACNgIsIAEgFikCADcCMCABQShqIAcoAig2AgAgAUEgaiAHKQMgNwMAIAFBGGogBykDGDcDACABQRBqIAcpAxA3AwAgAUEIaiAHKQMINwMAIAFBOGogFkEIaigCADYCACABQYGAgIB8NgI8IAAgBUEBajYCCCAKQQF0IQMgACgCFCIBIAAoAgxGBEAgAEEMakGY4cIAELkICyAAKAIQIAFBAnRqIAM2AgAgACABQQFqNgIUIAAoAggiASAKTQ0HIAAoAgQgCkEGdGoiASgCDCIDIAAoAiBPDQggACgCHCADQQN0aiIDKAIARQ0IIAMgBUEBdCIDNgIEIAIgACgCIE8NASAAKAIcIAJBA3RqIgAoAgBFDQEgACADQQFyNgIEIAEgBTYCDCABIAEoAhxBAWo2AhwgASABKgIAIhkgLCAZICxfGzgCACABIAEqAgQiGSArIBkgK18bOAIEIAEgASoCCCIZICogGSAqXxs4AgggASABKgIQIhkgKSAZIClgGzgCECABIAEqAhQiGSAoIBkgKGAbOAIUIAEgASoCGCIZICcgGSAnYBs4AhggFSQADwsgBkEBRgRAIAcgAykDIDcDYCAHIANBOGopAwA3A3ggByADQTBqKQMANwNwIAcgA0EoaikDADcDaCAAKAIAIAVGBH8gAEG44MIAEMgIIAAoAgQFIAQLIAVBBnRqIgMgASkCADcCACADIAI2AgwgAyAWKQIANwIQIANBgYCAgHw2AhwgAyAHKQNgNwMgIANBCGogAUEIaigCADYCACADQRhqIBZBCGooAgA2AgAgA0EoaiAHKQNoNwMAIANBMGogBykDcDcDACADQThqIAcpA3g3AwAgACAFQQFqNgIIIApBAXRBAXIhAyAAKAIUIgEgACgCDEYEQCAAQQxqQcjgwgAQuQgLIAAoAhAgAUECdGogAzYCACAAIAFBAWo2AhQgACgCCCIBIApNDQUgAiAAKAIgTw0GIAAoAhwgAkEDdGoiASgCAEUNBiAAKAIEIQIgASAFQQF0IgE2AgQCQCACIApBBnRqIgIoAiwiAyAAKAIgTw0AIAAoAhwgA0EDdGoiACgCAEUNACAAIAFBAXI2AgQgAkEgaiIAIAU2AgwgACAAKAIcQQFqNgIcIAAgACoCACIZICwgGSAsXxs4AgAgACAAKgIEIhkgKyAZICtfGzgCBCAAIAAqAggiGSAqIBkgKl8bOAIIIAAgACoCECIZICkgGSApYBs4AhAgACAAKgIUIhkgKCAZIChgGzgCFCAAIAAqAhgiGSAnIBkgJ2AbOAIYIBUkAA8LQajdwgBBD0H44MIAENcLAAsgAyALQQFqNgI8IAMgGzgCOCADIBo4AjQgAyAZOAIwIAMgHzgCKCADIB44AiQgAyAdOAIgIAMoAiwhCgwIC0Go3cIAQQ9ByOHCABDXCwALIAMgLjgCGCADIDg4AhQgAyAlOAIQIAMgLzgCCCADIC04AgQgAyAmOAIAIAMgCUEBajYCHCADKAIMIQoMBgsgCCAGQcjiwgAQiAsACyAKIAVBqODCABCICwALIAogAUHY4MIAEIgLAAtBqN3CAEEPQejgwgAQ1wsACyAKIAFBqOHCABCICwALQajdwgBBD0G44cIAENcLAAsgACgCCCIEIApLDQALIAogBEHY4cIAEIgLAAsgAyACNgIsIANBgYCAgHw2AjwgAyABKQIANwIgIAMgASkCDDcCMCADQShqIAFBCGooAgA2AgAgA0E4aiABQRRqKAIANgIAIAVBATYCBCAVJAALpiwDHH8HfiZ9IwBBoBJrIgkkACAJIAg6ADcgCSAFOAIwAkACQAJAAkACfwJAAkAgBygCACIIRQ0AIAlBKGogCCAHKAIEKAIYEQAAIAlB0AdqIAkoAigiCCAJKAIsKAIMEQAAIAhFDQAgCSkD0AdC7KO27sHd7PlWhSAJKQPYB0KoieGE1YPfwVeFhFANAQtBIEEIELMOIghFDQMgCEEAOgAYIAhCidm54o7TvpcINwMQIAhBCGpBwNXCACkDADcDACAIQbjVwgApAwA3AwACQCAHKAIAIgxFDQAgBygCBCIKKAIAIgsEQCAMIAsRBgALIAooAgQiC0UNACAMIAsgCigCCBCIDwsgB0Hg+sIANgIEIAcgCDYCAEHg+sIADAELIAcoAgAiCEUNASAHKAIECyEHIAlBIGogCCAHKAIcEQAAIAlB0AdqIAkoAiAiDCAJKAIkKAIMEQAAAkAgDEUNACAJKQPQB0Lso7buwd3s+VaFIAkpA9gHQqiJ4YTVg9/BV4WEQgBSDQAgDCAMLQAYQX9zQQFxIhE6ABggBigCCCESIAYoAgQhFyAGQgQ3AgQgBigCACEYIAZBADYCACADIAQoAhAiCBEEACETIAkgAioCbCI+QwAAAD+UIkQ4AkAgCSACKgJoIj9DAAAAP5QiRTgCPCAJIAIqAmQiQEMAAAA/lCJGOAI4Q///f38hMUP//3//ITQCQCACKAIIRQRAQ///f/8hLUP//3//IQVD//9/fyEsQ///f38hLgwBC0P//3//IS1D//9//yEFQ///f38hLEP//39/IS4CQAJAIAIoAgQiBygCPEH/////A3EgBygCHEH/////A3FqDgICAAELIAcqAhghNCAHKgIUIS0gByoCECEFIAcqAgghMSAHKgIEISwgByoCACEuDAELIAcqAhgiBSAHKgI4Ii0gBSAtYBshNCAHKgIUIgUgByoCNCItIAUgLWAbIS0gByoCECIFIAcqAjAiLCAFICxgGyEFIAcqAggiLCAHKgIoIi4gLCAuXxshMSAHKgIEIiwgByoCJCIuICwgLl8bISwgByoCACIuIAcqAiAiLyAuIC9fGyEuCwJAAkACQAJAIAMgCBEEACIHKAIIRQ0AIAcoAgQiBygCPEH/////A3EgBygCHEH/////A3FqDgIAAQILIAlC////+////79/NwPgByAJQv////v3//+/fzcD2AcgCUL////79///v/8ANwPQBwwCCyAJQdgHaiAHQQhqKAIANgIAIAlB5AdqIAdBGGooAgA2AgAgCSAHKQIANwPQByAJIAcpAhA3AtwHDAELIAkgByoCGCIvIAcqAjgiMCAvIDBgGzgC5AcgCSAHKgIUIi8gByoCNCIwIC8gMGAbOALgByAJIAcqAhAiLyAHKgIwIjAgLyAwYBs4AtwHIAkgByoCCCIvIAcqAigiMCAvIDBfGzgC2AcgCSAHKgIEIi8gByoCJCIwIC8gMF8bOALUByAJIAcqAgAiLyAHKgIgIjAgLyAwXxs4AtAHCyAJQcQAaiAJQdAHaiIHIAEQwgNBBCELIC4gCSoCRCI5IC4gOWAbIi8gBSAJKgJQIi4gBSAuXxsiMF4NBCAsIAkqAkgiBSAFICxfGyI2IC0gCSoCVCIsICwgLWAbIjJeDQQgMSAJKgJMIi0gLSAxXxsiNyA0IAkqAlgiMSAxIDRgGyI0Xg0EIAkgNyA+lY78ADYC+A8gCSA2ID+VjvwANgL0DyAJIC8gQJWO/AA2AvAPIAkgNCA+lY38ADYC2AcgCSAyID+VjfwANgLUByAJIDAgQJWN/AA2AtAHIAlB3ABqIgggAiAJQfAPaiAHEKgEIAcgCEH0BvwKAAAgCUHQDmoiCCAHEHkgCSgC0A5BAUcNAyBEQwAAIEGUIjAgMZIhMSBFQwAAIEGUIjYgLJIhNCBGQwAAIEGUIiwgLpIhLyAtIDCTITAgBSA2kyE2IDkgLJMhOSAEKAIMIR8gCUGIEWoiBEEgaiEQIARB2ABqIRkgCUHUEWohGiAJQcgRaiEbIAlBjA9qISAgASoCGCFJIAEqAhQhSiABKgIQIUsgCEEEaiEOA0ACQCAJQfgOaiIEQSBqIA5BIGooAgAiDTYCACAEQRhqIA5BGGopAgA3AwAgBEEQaiAOQRBqKQIANwMAIARBCGogDkEIaikCADcDACAJIA4pAgA3A/gOIA1B/wFxIgRBwQBPDQACQAJAIARBjKnBAGotAAAOBQEAAAABAAsgCSgCiA8hByAJKAKADyEIIAkoAoQPIQsgCUHwD2oiBCACEIsFIAkoAvgPIRYgCSgC8A8hFCAJKAL0DyEVIAQgAhCLBUEAIQogCSgChBAhISAJKAL8DyEPIAkgPyALIBVBAWsiIiANQT9zQQAgDUE/a0H/AXFBAk8bIgRBCHEbIg2yQwAAAD+SlCIFIDYgNiAFIAUgNl0bIAUgBVwbIAsgDUYbIi0gPyALIAkoAoAQIiMgBEEEcRsiHLJDAAAAP5KUIgUgBSAFIDQgBSA0XRsgNCA0XBsgCyAcRhsiLJJDAAAAP5QiLjgCpA8gCSBAIAggFEEBayIkIARBAnEbIguyQwAAAD+SlCIFIDkgOSAFIAUgOV0bIAUgBVwbIAggC0YbIjogQCAIIA8gBEEBcRsiHbJDAAAAP5KUIgUgBSAFIC8gBSAvXRsgLyAvXBsgCCAdRhsiNZJDAAAAP5QiOzgCoA8gCSA+IBZBAWsiFiAHIARB/wFxQSBJGyIeskMAAAA/kpQiBSAwIDAgBSAFIDBdGyAFIAVcGyAHIB5GGyIyID4gByAhIARBEHEbIgSyQwAAAD+SlCIFIAUgBSAxIAUgMV0bIDEgMVwbIAQgB0YbIgWSQwAAAD+UIjg4AqgPIAkgRCAFIDKTQwAAAD+UkiIyOAK0DyAJIEUgLCAtk0MAAAA/lJIiNzgCsA8gCSBGIDUgOpNDAAAAP5SSIjo4AqwPIAlBwA9qIgcgAUEIaikCADcDACAJIAEpAgA3A7gPIAkgSSA4kyI1OALQDyAJKgK4DyEFIAkgSyA7kyI7OALIDyAHKgIAIS0gCSBKIC6TIjg4AswPIAkgMiAtIC2UIkcgCSoCxA8iLiAulCJMIAUgBZQiTZMiQyAJKgK8DyIsICyUIkiTkouUIDcgLCAtlCIzIDOSIjwgLiAFjJQiMyAzkiI9kouUIDogBSAtlCIzIDOSIk4gLiAsjJQiMyAzkiJPk4uUkpIiUCAuIAUgOJQgOyAslJMiMyAzkiIzlCAsICwgNZQgLSA4lJMiQSBBkiJBlCAFIDsgLZQgBSA1lJMiQiBCkiJClJOSIDWTIlGSIjU4AuwPIAkgMiA8ID2Ti5QgOiAFICyUIjwgPJIiPCAuIC2MlCI9ID2SIj2Si5QgNyBIIEOSIEeTi5SSkiJDIC4gQpQgBSAzlCAtIEGUk5IgOJMiOJIiBTgC6A8gCSAyIE4gT5KLlCA3IDwgPZOLlCA6IE0gTJIgSJMgR5OLlJKSIjIgLiBBlCAtIEKUICwgM5STkiA7kyI3kiItOALkDyAJIFEgUJMiLDgC4A8gCSA4IEOTIi44AtwPIAkgNyAykyIyOALYDwJAIBMoAghFBEBBACEIDAELIBMoAgQiB0EAIAcqAhggLGAbQQAgByoCFCAuYBtBACAHKgIQIDJgG0EAIAcqAgggNV8bQQAgByoCBCAFXxtBACAHKgIAIC1fGyEIIAcoAjxB/////wNxRQ0AIAcqAiAgLV8gByoCJCAFX3EgByoCKCA1X3EgByoCMCAyYHEgByoCNCAuYHEgByoCOCAsYHEhCiAHQSBqIQcLIAkgCDYCgBEgCSATNgL4ECAJIAo2AvQQIAkgBzYC9A8gCUEANgLwDyAJIAlB2A9qNgL8ECAJQRhqIAlB8A9qEOIDIAkoAhhBAXEEQCAJKAIcIQhBASAUayIHIAtqQQEgFWsiCiANaiAjICJrIgsgHiAWa2xqIA8gJGsiDWxqIhRB3aHxy3xzrSEnIAcgHWogCiAcaiAEIBZrIAtsaiANbGoiFUG307CFfHOtISgDQCAMKAIEIgsgCCAMKQMQQoOAgIAQhSIlQiCIIiYgKH4gJUL/////D4MiJSAnfoUgJSAofiAmICd+hUIgiYUiJadzrSImQt2h8csMfiAlQiCIIiVCt9OwhQx+hSAmQrfTsIUMfiAlQt2h8csMfoVCIImFIianIg9xIQcgJkIZiCIqQv8Ag0KBgoSIkKDAgAF+ISsgDCgCACENQQAhBCAJAn8CQAJAAkADQAJAICsgByANaikAACIphSIlQoGChIiQoMCAAX0gJUJ/hYNCgIGChIiQoMCAf4MiJUIAUgRAA0ACQCAUIA0gJXqnQQN2IAdqIAtxQWhsaiIKQRhrKAIARw0AIBUgCkEUaygCAEcNACAIIApBEGsoAgBGDQMLICVCAX0gJYMiJUIAUg0ACwsgKSApQgGGg0KAgYKEiJCgwIB/g0IAUg0CIAcgBEEIaiIEaiALcSEHDAELCyAKQQxrIQRBASAKQQRrIg0tAAAgEUYNAxogBCgCACIHIBJPDQEgGyAXIAdB7ABsaiIHKQJANwIAIAdCgICAgMAANwJAIBogBykCTDcCACAZIAcpAlg3AgAgG0EIaiAHQcgAaiILKAIANgIAIAtBADYCACAaQQhqIAdB1ABqKAIANgIAIBlBCGogB0HgAGooAgA2AgAgCUGIEWoiC0EIaiAHQQhqKQIANwMAIAtBEGogB0EQaikCADcDACALQRhqIAdBGGopAgA3AwAgCSAHKQIANwOIESAHKAJkIQsgBygCaCEPIBBBGGogB0E4aikCADcCACAQQRBqIAdBMGopAgA3AgAgEEEIaiAHQShqKQIANwIAIBAgBykCIDcCACAEIAYoAggiBzYCACAKQQhrQQA2AgAgDSAROgAAIAYoAgAgB0YEQCAGQdT7wgAQnAgLIAYoAgQgB0HsAGxqIgogCUGIEWpB5AD8CgAAIAogDzYCaCAKIAs2AmQgBiAHQQFqNgIIDAILIAkoAvwOIAkoAvgOQQl0aiIEIAggCS0ANyIHGyEKIAggBCAHGyELIAYoAggiByAGKAIARgRAIAZB5PvCABCcCAsgBiAHQQFqNgIIIAYoAgQgB0HsAGxqIgRCADcCSCAEQoCAgIDAADcCQCAEQQA2AiAgBEEANgIAIAQgCjYCaCAEIAs2AmQgBEHQAGpCADcCACAEQdgAakIANwIAIARB4ABqQQA2AgAgCSAROgCEEiAJQQA2AoASIAkgBzYC/BEgCSAINgL4ESAJIBU2AvQRIAkgFDYC8BEgDCgCBCINIA9xIgQgDCgCACILaikAAEKAgYKEiJCgwIB/gyIlUARAQQghCgNAIAQgCmohBCAKQQhqIQogCyAEIA1xIgRqKQAAQoCBgoSIkKDAgH+DIiVQDQALCyALICV6p0EDdiAEaiANcSIEaiwAACIHQQBOBH8gCyALKQMAQoCBgoSIkKDAgH+DeqdBA3YiBGotAAAFIAcLQQFxIgcgDCgCCCIKRXFFBEAgBCALaiAqp0H/AHEiDzoAACALIARBCGsgDXFqQQhqIA86AAAgDCAKIAdrNgIIIAwgDCgCDEEBajYCDCALIARBaGxqIgdBGGsiBEEQaiAJQfARaiIKQRBqKQIANwIAIARBCGogCkEIaikCADcCACAEIAkpAvARNwIAIAdBDGshBAwCCyAJQRBqIAwgDEEQahDsASAMICYgDCgCACAMKAIEICYQlgogCUHwEWoQ6AlBDGshBAwBCyAHIBJBxPvCABCICwALQQALOgCHESAEKAIAIgcgBigCCCIKTwRAIAcgCkH0+8IAEIgLAAsgBigCBCEKIAkgBEEEajYCnBIgCSAgNgKYEiAJQYiCwwA2AogSIAkgADYChBIgCSAKIAdB7ABsajYC/BEgCSAJQThqNgKUEiAJIAlBMGo2ApASIAkgCUGsD2o2AowSIAkgCUGgD2o2AoASIAkgCUE3ajYC+BEgCSAJQYcRajYC9BEgCSAJQbgPajYC8BEgAyAIIAlB8BFqQYT8wgAgHxECACAJQQhqIAlB8A9qEOIDIAkoAgwhCCAJKAIIQQFxDQALCyAJKAL0ECIEQSFJDQAgCSgC+A8gBEECdEEEEIgPCyAJQdAOaiAJQdAHahB5IAkoAtAODQEMBQsLIARBwQBB6NvDABCICwALQaT7wgAQkQ8AC0GU+8IAEJEPAAtBCEEgQZDExAAoAgAiAEHMCCAAGxEAAAALAkAgCSgC0AdBAkYNACAJKALUCCIAQSFJDQAgCSgC2AcgAEECdEEEEIgPCyAGKAIEIQsgBigCCCEOCwJAIAwoAgwiA0UNACAMKAIAIgdBCGohBiAHKQMAQn+FQoCBgoSIkKDAgH+DISUDQAJAICVQBEADQCAHQcABayEHIAYpAwAhJSAGQQhqIQYgJUKAgYKEiJCgwIB/gyIlQoCBgoSIkKDAgH9RDQALICVCgIGChIiQoMCAf4UhJQsCQCAHICV6p0EDdkFobGoiAEEEay0AACARRw0AIABBDGsoAgAiASAOTw0BIAsgAUHsAGxqIgIoAkgiAUUNACACQUBrIRAgAUEBayECIABBCGsiEygCACEAQQAhCEEkIQQCQAJAA0AgACAIdkEBcUUNASAEQSRqIQQgASAIQQFqIghHDQALQQAhAAwBC0EBIQAgAiAIRg0AIAhBAWohCiAQKAIEIARqIQgDQAJAIBMoAgAgCnZBAXFFBEAgAEEBaiEADAELIAggAEFcbGoiAiAIKQIANwIAIAJBIGogCEEgaigCADYCACACQRhqIAhBGGopAgA3AgAgAkEQaiAIQRBqKQIANwIAIAJBCGogCEEIaikCADcCAAsgCEEkaiEIIAEgCkEBaiIKRw0ACwsgECABIABrNgIICyAlQgF9ICWDISUgA0EBayIDDQEMAgsLIAEgDkG0+8IAEIgLAAsgDCgCDCIEBEAgDCgCBCECIAwoAgAiAUEIaiEGIAEpAwBCf4VCgIGChIiQoMCAf4MhJSAMKAIIIQMgASEHIAQhAANAICVQBEADQCAHQcABayEHIAYpAwAhJSAGQQhqIQYgJUKAgYKEiJCgwIB/gyIlQoCBgoSIkKDAgH9RDQALICVCgIGChIiQoMCAf4UhJQsgJUIBfSEmIBEgByAleqdBA3ZBaGxqIgpBBGstAABHBEBBgAEhCCABIAprQRhtIgogAWoiCykAACInQgGGICeDQoCBgoSIkKDAgH+DeqdBA3YgASAKQQhrIAJxaiIKKQAAIidCAYYgJ4NCgIGChIiQoMCAf4N5p0EDdmpBB00EQCAMIANBAWoiAzYCCEH/ASEICyALIAg6AAAgDCAAQQFrIgA2AgwgCkEIaiAIOgAACyAlICaDISUgBEEBayIEDQALCyASBEAgF0HEAGohBgNAIAZBBGsoAgAiAARAIAYoAgAgAEEkbEEEEIgPCyAGQewAaiEGIBJBAWsiEg0ACwsgGARAIBcgGEHsAGxBBBCIDwsgCUGgEmokAAu2KgMdfyF9AX4jAEHwAWsiAiQAIAAoAgAoAgAhBCAAKAIMKAIAIQMgACgCBCgCACEUIAIgACgCCCgCACIPNgJAIAIgFDYCPCACQdjQwQA2AjggAiABNgI0IAJBADYCJCACQQA2AhggAkEANgIMIAIgA0GUAmo2AkggAiADQYgCajYCRCACIARBACAEQSBJGzYCMCAAKAIYKAIAIgFBFGooAgAhFSABQRBqKAIAIQkgACgCECgCACIBQSxqKAIAIRogAUEoaigCACEbIBQoAowDIQEgACgCFCgCACEWAkAgAyoC+AEiLEMAAAAAWwRAIAFBgANsIQADQCAARQ0CIABBgANrIQAMAAsACyADKAKAAkECcUUEQCABQYADbCEAA0AgAEUNAiAAQYADayEADAALAAsgFCgCiAMhCCABQYADbCEKIAMqAqwBISEgAyoCqAEhJiADKgKkASEqIAMqAqABIS4gAyoCvAEhHyADKgK4ASEiIAMqArQBISkgAyoCsAEhI0EAIQEDQCAFIApGDQECQCAFIAhqIgAoAgBFDQAgAEEEaigCACEEIAIgAEEQajYCtAEgAiAENgKwASACIAE2AqwBIAJBADYCqAEgAkEMaiACQagBahCPA0UNACAAQcQAaioCACInIABByABqKgIAIjCUIiAgIJIiICAAQUBrKgIAIisgAEHMAGoqAgAiKJQiJCAkkiIkkiE2ICsgMJQiLSAtkiItICcgKJQiJSAlkiIlkyE1ICAgJJMhNyArICeUIiAgIJIiICAwICiUIiQgJJIiJJIhOCAtICWSITkgICAkkyE6IDAgMJQiICAoICiUIi0gKyArlCIlkyIvICcgJ5QiJJOSITsgJCAvkiAgkyE8ICUgLZIgJJMgIJMhPSAiISQgHyEtAn0gIyElICkgAEH2AmotAABBAUcNABpDAACAPyEkQwAAgD8hLUMAAIA/ISVDAACAPyAAQeQCai0AAEEBRw0AGiAmISQgISEtIC4hJSAqCyEgIABB0ABqKgIAIT4gAEHUAGoqAgAhPyArIABBrAJqKgIAIjOUICcgAEGoAmoqAgAiNJSTIi8gL5IhMiAwIDSUICsgAEGwAmoqAgAiL5STIjEgMZIhMSACICwgNZQgAEHYAGoqAgAgLyAoIDKUICsgMZQgJyAnIC+UIDAgM5STIi8gL5IiNZSTkpKSIi+SOAKMASACICwgOJQgPyAzICggMZQgMCA1lCArIDKUk5KSkiIrkjgCiAEgAiAsID2UID4gNCAoIDWUICcgMpQgMCAxlJOSkpIiJ5I4AoQBIAIgLTgCtAEgAiAkQwAAgD6UOAKwASACICA4AqwBIAIgJUMAAAAAlDgCqAEgAiAvOAJoIAIgKzgCZCACICc4AmAgAkEMaiIAIAJB4ABqIgQgAkGEAWoiBiACQagBaiIHEM0DIAIgLCA2lCAvkjgCjAEgAiAsIDyUICuSOAKIASACICwgOpQgJ5I4AoQBIAIgLTgCtAEgAiAkQ83MzD2UOAKwASACICA4AqwBIAIgJUMAAPBClDgCqAEgAiAvOAJoIAIgKzgCZCACICc4AmAgACAEIAYgBxDNAyACICwgO5QgL5I4AowBIAIgLCA3lCArkjgCiAEgAiAsIDmUICeSOAKEASACIC04ArQBIAIgJEPNzEw+lDgCsAEgAiAgOAKsASACICVDAABwQ5Q4AqgBIAIgLzgCaCACICs4AmQgAiAnOAJgIAAgBCAGIAcQzQMLIAFBAWohASAFQYADaiEFDAALAAsCQCADKAKAAiIAQQFxRQ0AIANBLGohCCADQShqIQogA0EkaiELIANBIGohDSADQTxqIRAgA0E4aiERIANBNGohEiADQTBqIQwgA0HMAGohEyADQcgAaiEXIANBxABqIRggA0FAayEcIA8oAhBBsAFsIR0gDygCDCEeQQAhAEEAIQEDQAJAAkAgACAdRwRAIAAgHmoiDigCAA0BDAILIAMoAoACIQAMAwsgAiABNgJQIAJBATYCTCACIA5BEGo2AlggAiAOQQRqKAIANgJUIAJBDGogAkHMAGoQjwNFDQACfQJAIA5BIGooAgBBAXEEQCAUIA5BJGooAgAgDkEoaigCABC3DCIZDQELIAMqAlghJiADKgJUISogAyoCUCEkIAMqAlwMAQsCfQJAIBktAOYCRQ0AIA5B8gBqLQAADQBDAACAPyEmQwAAgD8hKkMAAIA/ISRDAACAPyAZLQDUAkEBRw0BGiADKgKoASEmIAMqAqQBISogAyoCoAEhJCADKgKsAQwBCyADKgK4ASEmIAMqArQBISogAyoCsAEhJCADKgK8AQshICANIQYgCyEFIAohBCAIIQcCQAJAAkAgGS0A5QJBAWsOAwABAQILIAwhBiASIQUgESEEIBAhBwwBCyAcIQYgGCEFIBchBCATIQcLICYgBCoCAJQhJiAqIAUqAgCUISogJCAGKgIAlCEkICAgByoCAJQLISAgDkHQAGooAgAhBCAOQdQAaigCACIFKAIIIQYgAiAgOAK0ASACICY4ArABIAIgKjgCrAEgAiAkOAKoASADIAJBzABqIAJBDGogBCAGQQFrQXhxakEIaiAFIA5BhAFqIAJBqAFqEEQLIAFBAWohASAAQbABaiEADAALAAsgA0GgAWohCCADQbABaiEKAkAgAEHAAHFFDQAgA0HgAWohBCAPKAIQQbABbCEFIA8oAgwhAEEAIQEDQAJAIAUEQCAAKAIARQ0BIABBBGooAgAhCyAAQRBqIgYoAkQhByACQeAAaiINIAYoAkAgBygCCEEBa0F4cWpBCGogBkH0AGogBygClAERAQAgAiAGNgKQASACIAs2AowBIAIgATYCiAEgAkECNgKEASACIAIqAnQgAioCaJNDAAAAP5Q4AoABIAIgAioCcCACKgJkk0MAAAA/lDgCfCACIAIqAmwgAioCYJNDAAAAP5Q4AnggAiANNgKUASACQQxqIgYgAkGEAWoiBxCPA0UNASACQoCAgICAgIDAPzcCsAEgAkIANwKoASACIAIqAmggAioCdJJDAAAAP5Q4AsABIAIgAioCZCACKgJwkkMAAAA/lDgCvAEgAiACKgJgIAIqAmySQwAAAD+UOAK4ASACQZgBaiILQQhqIARBCGopAgA3AwAgAiAEKQIANwOYASADIAcgBiACQfgAakGQyMEAIAJBqAFqIAsQRAwBCyADKAKAAiEADAILIABBsAFqIQAgAUEBaiEBIAVBsAFrIQUMAAsACyACIAo2AmwgAiAINgJoIAIgFDYCZCACIAJBDGo2AmACQCAAQQhxRQ0AIBpFDQAgGkGAA2whCCADQfAAaiEFIANB4ABqIQcgAkHcAWohCiACQcwBaiEBIAJBvAFqIQRBACEGA0AgBiAbaiIAQegCaikDACFAIARBCGogB0EIaikCADcCACAEIAcpAgA3AgAgASAFKQIANwIAIAFBCGogBUEIaikCADcCACACIAA2AugBIAIgQDcC4AEgAkEDNgLcASACIAA2AqgBIAIgAEHMAmooAgAiCzYCuAEgAiAAQcgCaigCACINNgK0ASACIABBxAJqKAIAIhA2ArABIAIgAEHAAmooAgAiETYCrAEgAkHgAGogESAQIA0gCyAAIAQgASAKEKMCIAggBkGAA2oiBkcNAAsgAygCgAIhAAsCQCAAQQRxRQ0AIBYoAjgiAUUNACAWKAI0IQAgA0GQAWohCiADQYABaiELIAFBFGxBFGshBSAWKAJIIQ0gFigCTCEQIAJB3AFqIREgAkHMAWohByACQbwBaiEIQQAhAQNAAkACQCAAKAIAIhJBf0cEQCAAQRBqKAIAIgQNAQsgBUUNAwwBCwJAAkACQAJAIABBBGooAgAiBiAQTw0AIA0gBkGkAmxqIgYoAgBBgICAgHhGDQAgBigCoAIgAEEIaigCAEcNACAGKAIIIgwgBE0NASAGKAIEIhMgBEHwA2xqIgQoApADRQ0CIAwgBCgCmAMiDE0NAyAIIAspAgA3AgAgByAKKQIANwIAIAhBCGogC0EIaikCADcCACAHQQhqIApBCGopAgA3AgAgAiAGNgLoASACIBI2AuQBIAIgATYC4AEgAkEENgLcASACIAQ2AuwBIAIgBCgC9AIiBjYCuAEgAiAEKALwAiISNgK0ASACIARBEGoiBDYCqAEgAiATIAxB8ANsaiIMKAL0AiITNgKwASACIAwoAvACIgw2AqwBIAJB4ABqIAwgEyASIAYgBCAIIAcgERCjAiAFDQQMBgtBkYDAAEETQcTAwQAQ1wsAC0HUwMEAEJEPAAtBzMbBABCRDwALQdzGwQAQkQ8ACyAAQRRqIQAgBUEUayEFIAFBAWohAQwACwALAkACQCADKAKAAiINQSBxRQ0AIBVFDQEgCSAVQThsaiEQIANB0AFqIREgA0HAAWohEiAJQThqIQUgAyoC/AEhMCAJIQADQCAFIQEgDyAAKAIMIAAoAhAQuAwhByAPIAAoAhQgACgCGBC4DCEIAkAgB0UNACAIRQ0AIAIgCDYCtAEgAiAHNgKwASACIAA2AqwBIAJBBTYCqAEgAkEMaiACQagBahCPA0UNACAAKAIIIgVFDQAgACgCBCIEIAVBqAFsaiEMIARBqAFqIQUDQCAEIQAgBSEEIAAoAoQBIgYEQCAAKAKAASEFIAZBBnQhBgNAAn0gACgCAEEBcQRAIAAqAhgiJCAHKgJ0IiWUIAAqAhQiKiAHKgJ4IiGUkyIgICCSIS0gKiAHKgJ8Ih+UIAAqAhwiICAllJMiJiAmkiEmIAcqAowBICAgByoCgAEiIiAtlCAlICaUICEgICAhlCAkIB+UkyIgICCSIi6Uk5KSkiEgIAcqAogBICQgIiAmlCAfIC6UICUgLZSTkpKSISQgByoChAEgKiAiIC6UICEgLZQgHyAmlJOSkpIhLSAAKgIQIikgH5QgACoCCCIjICWUIAAqAgwiLCAilJIgACoCBCInICGUk5IhLiAnIB+UICkgIZQgIyAilCAsICWUk5KSISYgLCAhlCApICWUICcgIpSSkiAjIB+UkyEqICkgIpQgJyAllJMgIyAhlJMgLCAflJMMAQsgByoCjAEhICAHKgKIASEkIAcqAoQBIS0gByoCfCEuIAcqAnghJiAHKgJ0ISogByoCgAELISUgKiAFQQRqIgoqAgAiIpQgJiAFKgIAIimUkyIhICGSISEgLiAplCAqIAVBCGoiCyoCACIjlJMiHyAfkiEfIAIgICAjICUgIZQgKiAflCAmICYgI5QgLiAilJMiIyAjkiIjlJOSkpI4AmggAiAkICIgJSAflCAuICOUICogIZSTkpKSOAJkIAIgLSApICUgI5QgJiAhlCAuIB+Uk5KSkjgCYAJ9IAAoAiBBAXEEQCAAKgI4IicgCCoCdCIhlCAAKgI0IisgCCoCeCIflJMiIiAikiEjICsgCCoCfCIilCAAKgI8IiggIZSTIikgKZIhLCAIKgKMASAoIAgqAoABIikgI5QgISAslCAfICggH5QgJyAilJMiKCAokiIolJOSkpIhMSAIKgKIASAnICkgLJQgIiAolCAhICOUk5KSkiEzIAgqAoQBICsgKSAolCAfICOUICIgLJSTkpKSITQgACoCMCIrICKUIAAqAigiKCAhlCAAKgIsIi8gKZSSIAAqAiQiMiAflJOSISMgMiAilCArIB+UICggKZQgLyAhlJOSkiEsIC8gH5QgKyAhlCAyICmUkpIgKCAilJMhJyArICmUIDIgIZSTICggH5STIC8gIpSTDAELIAgqAowBITEgCCoCiAEhMyAIKgKEASE0IAgqAnwhIyAIKgJ4ISwgCCoCdCEnIAgqAoABCyEhICcgBUEQaioCACIplCAsIAVBDGoqAgAiK5STIh8gH5IhHyAjICuUICcgBUEUaioCACIolJMiIiAikiEiIAIgMSAoICEgH5QgJyAilCAsICwgKJQgIyAplJMiKCAokiIolJOSkpI4ArABIAIgMyApICEgIpQgIyAolCAnIB+Uk5KSkjgCrAEgAiA0ICsgISAolCAsIB+UICMgIpSTkpKSOAKoASACQQxqIhMgAkHgAGoiFyACQagBaiIYIBIQzQMgKiAKKgIAIimUICYgBSoCACIhlJMiHyAfkiEfIC4gIZQgKiALKgIAIiOUkyIiICKSISIgAiAgICMgJSAflCAqICKUICYgJiAjlCAuICmUkyIjICOSIiOUk5KSkjgCaCACICQgKSAlICKUIC4gI5QgKiAflJOSkpI4AmQgAiAtICEgJSAjlCAmIB+UIC4gIpSTkpKSOAJgICogCioCACAwIAAqAowBlJIiIpQgJiAhIDAgACoCiAGUkiIplJMiISAhkiEhIC4gKZQgKiALKgIAIDAgACoCkAGUkiIjlJMiHyAfkiEfIAIgICAjICUgIZQgKiAflCAmICYgI5QgLiAilJMiICAgkiIglJOSkpI4ArABIAIgJCAiICUgH5QgLiAglCAqICGUk5KSkjgCrAEgAiAtICkgJSAglCAmICGUIC4gH5STkpKSOAKoASATIBcgGCAREM0DIAVBQGshBSAGQUBqIgYNAAsLIARBAEGoASAEIAxGIgAbaiEFIABFDQALCyABIBBGIgANASABQQBBOCAAG2ohBSABIgANAAsLIA1BEHFFDQAgFUUNACAJIBVBOGxqIQcgA0HQAWohCCAJQThqIQAgAyoC/AEhIANAIAAhBSAPIAkoAgwgCSgCEBC4DCEAIA8gCSgCFCAJKAIYELgMIQECQCAARQ0AIAFFDQAgAiABNgK0ASACIAA2ArABIAIgCTYCrAEgAkEFNgKoASACQQxqIAJBqAFqEI8DRQ0AIAkoAggiAEUNACAJKAIEIgQgAEGoAWxqIQkgBEGoAWohAANAIAQhBiAAIQQgBigCYCIBBEAgBigCXCEAIAFBBnQhAQNAIAJB4ABqIgpBCGoiCyAAQQhqKAIANgIAIAIgACkCADcDYCACIAsqAgAgICAGKgJwlJI4ArABIAIgAioCZCAgIAYqAmyUkjgCrAEgAiACKgJgICAgBioCaJSSOAKoASACQQxqIAogAkGoAWogCBDNAyAAQUBrIQAgAUFAaiIBDQALCyAEQQBBqAEgBCAJRiIBG2ohACABRQ0ACwsgBSAHRiIADQEgBUEAQTggABtqIQAgBSIJDQALCyACQfABaiQAC70lAhp/A34jAEHABmsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEpAwAiH0IAUgRAIAEpAwgiIFANASABKQMQIiFQDQIgHyAhfCAfVA0DIB8gIFQNBCABLgEYIQEgCCAfPgIMIAhBAUECIB9CgICAgBBUIgYbNgKsASAIQQAgH0IgiKcgBhs2AhAgCEEUakEAQZgB/AsAIAhBtAFqQQBBnAH8CwAgCEEBNgKwASAIQQE2AtACIAGsIB9CAX15fULCmsHoBH5CgKHNoLQCfEIgiKciBsEhDgJAIAFBAE4EQCAIQQxqIAEQ3wEaDAELIAhBsAFqQQAgAWvBEN8BGgsCQCAOQQBIBEAgCEEMakEAIA5rQf//A3EQygEMAQsgCEGwAWogBkH//wFxEMoBCyAIQZwFaiAIQbABakGkAfwKAAAgAyIHQQpPBEAgCEGUBWohCwNAIAgoArwGIgFBKU8NFAJAIAFFDQAgAUH/////A2ohBiABQQJ0IQUCfyABQQFGBEBCACEfIAhBnAVqIAVqDAELIAUgC2ohASAGQf////8DcUEBakH+////B3EhCUIAIR8DQCABQQRqIgU1AgAgH0IghoQiIEKAlOvcA4AhHyAFIB8+AgAgASABNQIAICAgH0KAlOvcA359QiCGhCIfQoCU69wDgCIgPgIAIB8gIEKAlOvcA359IR8gAUEIayEBIAlBAmsiCQ0ACyAfQiCGIR8gAUEIagshASAGQQFxDQAgAUEEayIBIB8gATUCAIRCgJTr3AOAPgIACyAHQQlrIgdBCUsNAAsLIAdBAnRBuKTEAGooAgBBAXQiB0UNBSAIKAK8BiIBQSlPDRIgAQR/IAFB/////wNqIQYgAUECdCEFIAetIR8CfyABQQFGBEBCACEgIAhBnAVqIAVqDAELIAUgCGpBlAVqIQEgBkH/////A3FBAWpB/v///wdxIQlCACEgA0AgAUEEaiIFNQIAICBCIIaEIiEgH4AhICAFICA+AgAgASABNQIAICEgHyAgfn1CIIaEIiAgH4AiIT4CACAgIB8gIX59ISAgAUEIayEBIAlBAmsiCQ0ACyAgQiCGISAgAUEIagshASAGQQFxRQRAIAFBBGsiASAgIAE1AgCEIB+APgIACyAIKAK8BgVBAAshAQJAAkACQCAIKAKsASIGIAEgASAGSRsiBUEoTQRAIAVFBEBBACEFDAQLIAVBAXEhDCAFQQFHDQFBACEHDAILIAVBKEGAvMQAEI8PAAsgBUE+cSEPQQAhByAIQZwFaiEBIAhBDGohCQNAIAEgB0EBcSABKAIAIgsgCSgCAGoiB2oiETYCACAHIAtJIAcgEUtyIAFBBGoiESgCACIUIAlBBGooAgBqIgdqIQsgESALNgIAIAcgFEkgByALS3IhByAJQQhqIQkgAUEIaiEBIA8gCkECaiIKRw0ACwsgDAR/IApBAnQiCyAIQZwFamoiCSgCACEBIAkgByABIAhBDGogC2ooAgBqIgdqIgs2AgAgASAHSyAHIAtLcgUgBwtBAXFFDQAgBUEoRg0UIAhBnAVqIAVBAnRqQQE2AgAgBUEBaiEFCyAIIAU2ArwGIAgoAtACIgogBSAFIApJGyIBQSlPDRIgAUECdCEBAkACQANAIAFFDQEgAUEEayIBIAhBnAVqaigCACIFIAEgCEGwAWpqKAIAIgdGDQALIAUgB08NAQwJCyABDQgLIA5BAWohDgwIC0Gok8QAQRxBsJbEABDWDAALQdSTxABBHUHAlsQAENYMAAtBhJTEAEEcQdCWxAAQ1gwAC0HolcQAQTZBwJfEABDWDAALQaCVxABBN0Gwl8QAENYMAAtBx7zEAEEbQYC8xAAQ1gwACwALIAZFBEBBACEGIAhBADYCrAEMAQsgBkEBa0H/////A3EiAUEBaiIFQQNxIQkCQCABQQNJBEAgCEEMaiEBQgAhHwwBCyAFQfz///8HcSEHIAhBDGohAUIAIR8DQCABIAE1AgBCCn4gH3wiHz4CACABQQRqIgU1AgBCCn4gH0IgiHwhHyAFIB8+AgAgAUEIaiIFNQIAQgp+IB9CIIh8IR8gBSAfPgIAIAFBDGoiBTUCAEIKfiAfQiCIfCEgIAUgID4CACAgQiCIIR8gAUEQaiEBIAdBBGsiBw0ACwsgCQRAA0AgASABNQIAQgp+IB98IiA+AgAgAUEEaiEBICBCIIghHyAJQQFrIgkNAAsLICBCgICAgBBaBEAgBkEoRg0MIAhBDGogBkECdGogHz4CACAGQQFqIQYLIAggBjYCrAELQQAhBUEBIQwgDsEiASAEwSIHSCIaDQYgDiAEa8EgAyABIAdrIANJGyILRQ0GIAhB1AJqIgEgCEGwAWoiBEGkAfwKAABBASERIAFBARDfASEUIAhB+ANqIgEgBEGkAfwKAAAgAUECEN8BIRUgCEGcBWoiASAEQaQB/AoAACAIQawBaiEbIAhB0AJqIRwgCEH0A2ohHSABQQRrIR4gAUEDEN8BIRYgFCgCoAEhFyAVKAKgASEYIBYoAqABIRlBACEPIAgoAqwBIQYgCCgC0AIhCgJAA0AgBkEpTw0NIAZBAnQhBEEAIQECfwJAAkADQCABIARGDQEgCEEMaiABaiEFIAFBBGohASAFKAIARQ0ACyAZIAYgBiAZSRsiBEEpTw0GIARBAnQhAQJAA0AgAUUNASABIB5qIQUgAUEEayIBIAhBDGpqKAIAIgcgBSgCACIFRg0ACyAFIAdNDQJBAAwDCyABRQ0BQQAMAgsgAyALSQ0GAkAgCyAPRg0AIAsgD2siAUUNACACIA9qQTAgAfwLAAsgACAOOwEIIAAgCzYCBAwLC0EBIQcgBEEBcSEMQQAhBiAEQQFHBEAgBEE+cSESIAhBDGohASAIQZwFaiEJA0AgASAHQQFxIAEoAgAiByAJKAIAQX9zaiIFaiIQNgIAIAUgB0kgBSAQS3IgAUEEaiIQKAIAIg0gCUEEaigCAEF/c2oiBWohByAQIAc2AgAgBSANSSAFIAdLciEHIAlBCGohCSABQQhqIQEgEiAGQQJqIgZHDQALCyAMBH8gBkECdCIGIAhBDGpqIgUoAgAhASAFIAEgBiAWaigCAEF/c2oiBiAHaiIFNgIAIAUgBkkgASAGS3IFIAcLQQFxRQ0PIAggBDYCrAEgBCEGQQgLIQwgGCAGIAYgGEkbIgRBKU8NBSAEQQJ0IQECQAJAAkADQCABRQ0BIAEgHWohBSABQQRrIgEgCEEMamooAgAiByAFKAIAIgVGDQALIAUgB00NASAGIQQMAgsgAUUNACAGIQQMAQsgBARAQQEhByAEQQFxIRJBACEGIARBAUcEQCAEQT5xIRAgCEEMaiEBIAhB+ANqIQkDQCABIAdBAXEgASgCACIHIAkoAgBBf3NqIgVqIg02AgAgBSAHSSAFIA1LciABQQRqIg0oAgAiEyAJQQRqKAIAQX9zaiIFaiEHIA0gBzYCACAFIBNJIAUgB0tyIQcgCUEIaiEJIAFBCGohASAQIAZBAmoiBkcNAAsLIBIEfyAGQQJ0IgYgCEEMamoiBSgCACEBIAUgASAGIBVqKAIAQX9zaiIGIAdqIgU2AgAgBSAGSSABIAZLcgUgBwtBAXFFDRALIAggBDYCrAEgDEEEciEMCyAXIAQgBCAXSRsiBUEpTw0GIAVBAnQhAQJAAkACQANAIAFFDQEgASAcaiEGIAFBBGsiASAIQQxqaigCACIHIAYoAgAiBkYNAAsgBiAHTQ0BIAQhBQwCCyABRQ0AIAQhBQwBCyAFBEBBASEHIAVBAXEhEkEAIQYgBUEBRwRAIAVBPnEhECAIQQxqIQEgCEHUAmohCQNAIAEgB0EBcSABKAIAIgcgCSgCAEF/c2oiBGoiDTYCACAEIAdJIAQgDUtyIAFBBGoiDSgCACITIAlBBGooAgBBf3NqIgRqIQcgDSAHNgIAIAQgE0kgBCAHS3IhByAJQQhqIQkgAUEIaiEBIBAgBkECaiIGRw0ACwsgEgR/IAZBAnQiBCAIQQxqaiIGKAIAIQEgBiABIAQgFGooAgBBf3NqIgQgB2oiBjYCACABIARLIAQgBktyBSAHC0EBcUUNEAsgCCAFNgKsASAMQQJqIQwLIAogBSAFIApJGyIGQSlPDQ0gBkECdCEBAkACQAJAA0AgAUUNASABIBtqIQQgAUEEayIBIAhBDGpqKAIAIgcgBCgCACIERg0ACyAEIAdNDQEgBSEGDAILIAFFDQAgBSEGDAELIAYEQEEBIQcgBkEBcSESQQAhBSAGQQFHBEAgBkE+cSEQIAhBDGohASAIQbABaiEJA0AgASAHQQFxIAEoAgAiByAJKAIAQX9zaiIEaiINNgIAIAQgB0kgBCANS3IgAUEEaiINKAIAIhMgCUEEaigCAEF/c2oiBGohByANIAc2AgAgBCATSSAEIAdLciEHIAlBCGohCSABQQhqIQEgECAFQQJqIgVHDQALCyASBH8gBUECdCIEIAhBDGpqIgUoAgAhASAFIAEgCEGwAWogBGooAgBBf3NqIgQgB2oiBTYCACABIARLIAQgBUtyBSAHC0EBcUUNEAsgCCAGNgKsASAMQQFqIQwLIAMgD00NASACIA9qIAxBMGo6AAAgBkEpTw0NAkAgBkUEQEEAIQYMAQsgBkEBa0H/////A3EiAUEBaiIEQQNxIQkCQCABQQNJBEAgCEEMaiEBQgAhIAwBCyAEQfz///8HcSEHIAhBDGohAUIAISADQCABIAE1AgBCCn4gIHwiHz4CACABQQRqIgQ1AgBCCn4gH0IgiHwhHyAEIB8+AgAgAUEIaiIENQIAQgp+IB9CIIh8IR8gBCAfPgIAIAFBDGoiBDUCAEIKfiAfQiCIfCEfIAQgHz4CACAfQiCIISAgAUEQaiEBIAdBBGsiBw0ACwsgCQRAA0AgASABNQIAQgp+ICB8Ih8+AgAgAUEEaiEBIB9CIIghICAJQQFrIgkNAAsLIB9CgICAgBBUDQAgBkEoRg0NIAhBDGogBkECdGogID4CACAGQQFqIQYLIAggBjYCrAEgD0EBaiEPIAsgEUsiASARaiERIAENAAtBACEMIAshBQwHCyAPIANBkJfEABCICwALAAsgBEEoQYC8xAAQjw8ACyALIANBoJfEABCPDwALIARBKEGAvMQAEI8PAAsgBUEoQYC8xAAQjw8ACwALAkACfwJAAkACQCAKQSlJBEACQCAKRQRAQQAhCgwBCyAKQQFrQf////8DcSIBQQFqIgRBA3EhCQJAIAFBA0kEQCAIQbABaiEBQgAhHwwBCyAEQfz///8HcSEHIAhBsAFqIQFCACEfA0AgASABNQIAQgV+IB98Ih8+AgAgAUEEaiIENQIAQgV+IB9CIIh8IR8gBCAfPgIAIAFBCGoiBDUCAEIFfiAfQiCIfCEfIAQgHz4CACABQQxqIgQ1AgBCBX4gH0IgiHwhICAEICA+AgAgIEIgiCEfIAFBEGohASAHQQRrIgcNAAsLIAkEQANAIAEgATUCAEIFfiAffCIgPgIAIAFBBGohASAgQiCIIR8gCUEBayIJDQALCyAgQoCAgIAQVA0AIApBKEYNCiAIQbABaiAKQQJ0aiAfPgIAIApBAWohCgsgCCAKNgLQAiAKIAYgBiAKSRsiAUEpTw0IIAFBAnQhASAIQQhqIQcgCEGsAWohCwJAAn8CQANAIAFFDQEgASALaiEGIAEgB2ohBCABQQRrIQEgBCgCACIEIAYoAgAiBkYNAAsgBCAGSyAEIAZJawwBC0F/QQAgARsLQf8BcQ4CAAMEC0EAIAwNBBogAyAFQQFrIgFLBEAgASACai0AAEEBcQ0DDAQLIAEgA0HglsQAEIgLAAsgCkEoQYC8xAAQjw8ACwALIAMgBUkNBCACIAVqIQRBACEBAkACQANAIAEgBWpFDQEgBCABQQFrIgFqIgYtAAAiB0E5Rg0ACyAGIAdBAWo6AAAgASAFakEBaiIEIAVNDQEgBCAFQcClxAAQjg8ACwJAIAwEQEExIQEMAQsgAkExOgAAQTAhASAFQQFrIgZFIgcNACAHDQAgAkEBakEwIAb8CwALIA5BAWohDiAaDQEgAyAFTQ0BIAQgAToAACAFQQFqIQUMAQsgAUF/Rg0AIAFBf3MiAUUNACAGQQFqQTAgAfwLAAsgAyAFSQ0BIAULIQEgACAOOwEIIAAgATYCBAwBCyAFIANBgJfEABCPDwALIAAgAjYCACAIQcAGaiQADwsgBSADQfCWxAAQjw8ACyABQShBgLzEABCPDwALQShBKEGAvMQAEIgLAAsgBkEoQYC8xAAQjw8AC0GQvMQAQRpBgLzEABDWDAAL1i8DJH8Hfhd9IwBB4ABrIgQkACAAKAIwIg6tQgx+IianIQICQAJAAkACQAJAAkACQAJAICZCIIinDQAgAkH8////B0sNAAJAIAJFBEBBBCEQDAELQQQhASAOIRogAkEEELMOIhBFDQELAkACQCAOQQJPBEAgAkEMayICBEAgEEEAIAL8CwALIAIgEGohAgwBCyAQIQIgDkUNAQsgAkEANgIIIAJCADcCAAsgBEEYaiICQQhqQcDVwgApAwAiJjcDACAEQonZueKO076XCDcDKCAEQbjVwgApAwAiJTcDGCAEQThqICY3AwAgBEKJ2bnijtO+lwg3A0AgBCAlNwMwIAAoAjghFyAAKAI8IhJFDQcgFyASQQxsaiEbIBdBDGohASAAKAIwIRMgACgCLCEYIAJBEGohHCAXIQIDQCACKAIAIgMgE08NByACKAIEIgUgE08NBiACKAIIIgggE08NBSABIQsgGCAFQQxsaiIBKgIAIjMgGCADQQxsaiIDKgIAIjWTIiwgGCAIQQxsaiIFKgIEIjcgAyoCBCI4kyIulCABKgIEIjYgOJMiLSAFKgIAIjkgNZMiL5STIj8gP5QgLSAFKgIIIjogAyoCCCI7kyIwlCABKgIIIjwgO5MiMSAulJMiQCBAlCAxIC+UICwgMJSTIkEgQZSSkiJCQwAAgCheBEBDAAAAACE0An1DAAAAACAsICyUIC0gLZSSIDEgMZSSIj1DAAAAAFsNABpDAAAAACAvIC+UIC4gLpSSIDAgMJSSIj5DAAAAAFsNABpDAACAv0MAAIA/ICwgL5QgLSAulJIgMSAwlJIgPZEgPpGUlSIyIDJDAACAP14bIDJDAACAv10bEPIFCyEyAkAgNSAzkyIsICyUIDggNpMiLiAulJIgOyA8kyItIC2UkiI9QwAAAABbDQAgOSAzkyIvIC+UIDcgNpMiMCAwlJIgOiA8kyIxIDGUkiI+QwAAAABbDQBDAACAv0MAAIA/ICwgL5QgLiAwlJIgLSAxlJIgPZEgPpGUlSIsICxDAACAP14bICxDAACAv10bEPIFITQLQwAAAAAhLgJAIDMgOZMiLCAslCA2IDeTIi0gLZSSIDwgOpMiLyAvlJIiNkMAAAAAWw0AIDUgOZMiMCAwlCA4IDeTIjEgMZSSIDsgOpMiMyAzlJIiNUMAAAAAWw0AQwAAgL9DAACAPyAsIDCUIC0gMZSSIC8gM5SSIDaRIDWRlJUiLCAsQwAAgD9eGyAsQwAAgL9dGxDyBSEuCyACKAIAIgEgDk8NBSAQIAFBDGxqIgEgQCBCkSItlSIsIDKUIAEqAgCSOAIAIAEgQSAtlSIvIDKUIAEqAgSSOAIEIAEgPyAtlSIwIDKUIAEqAgiSOAIIIAIoAgQiASAOTw0EIBAgAUEMbGoiASAsIDSUIAEqAgCSOAIAIAEgLyA0lCABKgIEkjgCBCABIDAgNJQgASoCCJI4AgggAigCCCIBIA5PDQMgECABQQxsaiIBICwgLpQgASoCAJI4AgAgASAvIC6UIAEqAgSSOAIEIAEgMCAulCABKgIIkjgCCCACKAIAIQEgBCACKAIEIgMgAigCCCICIAIgA0sbrSADIAIgAiADSRutQiCGhDcDWCAEIAEgAiABIAJJG60gASACIAEgAksbrUIghoQ3A1AgBCABIAMgASADSRutIAEgAyABIANLG61CIIaENwNIIARByABqIQZBCCECA0AgAiEIIAYpAgAiJiAEKQMoQjiJhSIoQiCIIScgJyAmQpeSnKrbtrXCP4UiKUIgiCIlfiApQv////8PgyIpIChC/////w+DIih+hSAnICl+ICUgKH6FQiCJhSInQv////8Pg0IChSIoQt2h8csMfiAnQiCIIidCt9OwhQx+hSAoQrfTsIUMfiAnQt2h8csMfoVCIIiFIidCGYgiKEL/AINCgYKEiJCgwIABfiErIAQoAhgiAkEUayEJICZCIIinIQ0gJqchFUEAIQMgJ6ciHSAEKAIcIgdxIgUhAQJ9A0ACQCABIAJqKQAAIiogK4UiJ0KBgoSIkKDAgAF9ICdCf4WDQoCBgoSIkKDAgH+DIidQDQADQCAneqdBA3YgAWogB3FBbGwiCiAJaikCACAmUgRAICdCAX0gJ4MiJ0IAUg0BDAILCyACIApqIgJBBGsqAgAhLiACQQxrKgIAIS0gAkEIayoCAAwCCyAqICpCAYaDQoCBgoSIkKDAgH+DUARAIANBCGoiAyABaiAHcSEBDAELCyACIAVqKQAAQoCBgoSIkKDAgH+DIidQBEBBCCEBA0AgASAFaiEDIAFBCGohASACIAMgB3EiBWopAABCgIGChIiQoMCAf4MiJ1ANAAsLIAIgJ3qnQQN2IAVqIAdxIgFqLAAAIgNBAE4EQCACIAIpAwBCgIGChIiQoMCAf4N6p0EDdiIBai0AACEDCwJAIANBAXEiAyAEKAIgIgVFcUUEQCABIAJqICinQf8AcSIGOgAAIAIgAUEIayAHcWpBCGogBjoAACACIAFBbGxqIgJBFGsgFTYCACACQRBrIA02AgAgAkEMa0IANwIAIAJBBGtBADYCACAEIAUgA2s2AiAgBCAEKAIkQQFqNgIkDAELIARBEGohGSMAQTBrIgkkACAJIBw2AiggBEEYaiIPKAIMIQUgCSAJQShqNgIsAkAgBSAFQQFqIgJNBEAgDygCBCIWIBZBAWpBA3ZBB2wgFkEISRsiAUEBdiACSQRAAkACQAJAAn8gAUEBaiIBIAIgASACSxsiAkEPTwRAIAJB/////wFLDQJBfyACQQN0QQduQQFrZ3ZBAWoMAQtBBEEIQRAgAkEISRsgAkEESRsLIgKtQhR+IiZCIIinDQEgJqciAUF4Sw0BIAFBB2pBeHEiAyACQQhqIgdqIQEgASADSQ0BIAFB+P///wdLDQEgAUEIELMOIgoNAkEIIAFBkMTEACgCACIAQcwIIAAbEQAAAAsQpgwgCSgCJCECIAkoAiAhAQwECxCmDCAJKAIUIQIgCSgCECEBDAMLIAMgCmohCiAHBEAgCkH/ASAH/AsACyACQQFrIhQgAkEDdkEHbCAUQQhJGyEeAkAgBUUEQCAPKAIAIQMMAQsgCkEIaiEfIA8oAgAiA0EUayEgIAMpAwBCf4VCgIGChIiQoMCAf4MhJiAJKAIoISFBACECIAUhByADIQEDQCAmUARAA0AgAkEIaiECIAFBCGoiASkDAEKAgYKEiJCgwIB/gyImQoCBgoSIkKDAgH9RDQALICZCgIGChIiQoMCAf4UhJgsgCiAgICZ6p0EDdiACaiIiQWxsaikAACIlICEpAwBCOImFIidCIIgiKSAlQpeSnKrbtrXCP4UiJUIgiCIqfiAnQv////8PgyInICVC/////w+DIiV+hSAlICl+ICcgKn6FQiCJhSIlQv////8Pg0IChSInQt2h8csMfiAlQiCIIiVCt9OwhQx+hSAnQrfTsIUMfiAlQt2h8csMfoVCIIiFpyIjIBRxIgxqKQAAQoCBgoSIkKDAgH+DIiVQBEBBCCERA0AgDCARaiEMIBFBCGohESAKIAwgFHEiDGopAABCgIGChIiQoMCAf4MiJVANAAsLICZCAX0gJoMhJiAKICV6p0EDdiAMaiAUcSIMaiwAAEEATgRAIAopAwBCgIGChIiQoMCAf4N6p0EDdiEMCyAKIAxqICNBGXYiEToAACAfIAxBCGsgFHFqIBE6AAAgCiAMQX9zQRRsaiIMQRBqIAMgIkF/c0EUbGoiEUEQaigAADYAACAMQQhqIBFBCGopAAA3AAAgDCARKQAANwAAIAdBAWsiBw0ACwsgDyAUNgIEIA8gCjYCACAPIB4gBWs2AghBgYCAgHghASAWRQ0CIAMgFkEUbEEbakF4cSICayACIBZqQQlqQQgQiA8MAgsgDyAJQSxqQYsCQRQQywJBgYCAgHghAQwBCxCmDCAJKAIMIQIgCSgCCCEBCyAZIAI2AgQgGSABNgIAIAlBMGokACAEKAIcIgMgHXEiASAEKAIYIgJqKQAAQoCBgoSIkKDAgH+DIiZQBEBBCCEFA0AgASAFaiEBIAVBCGohBSACIAEgA3EiAWopAABCgIGChIiQoMCAf4MiJlANAAsLIAIgJnqnQQN2IAFqIANxIgFqLAAAIgVBAE4EQCACIAIpAwBCgIGChIiQoMCAf4N6p0EDdiIBai0AACEFCyABIAJqICinQf8AcSIHOgAAIAIgAyABQQhrcWpBCGogBzoAACACIAFBbGxqIgJBFGsgFTYCACACQRBrIA02AgAgAkEMa0IANwIAIAJBBGtBADYCACAEIAQoAiRBAWo2AiQgBCAEKAIgIAVBAXFrNgIgIAYpAgAiJkKXkpyq27a1wj+FIiVC/////w+DISkgJUIgiCElICZCIIinIQ0gJqchFQtDAAAAACEuQwAAAAAhLUMAAAAACyEyIAJBBGsgMCAukjgCACACQQhrIC8gMpI4AgAgAkEMayAsIC2SOAIAIAQpA0BCOIkgJoUiJ0IgiCIoICV+ICdC/////w+DIicgKX6FICggKX4gJSAnfoVCIImFIiVC/////w+DQgKFIidC3aHxywx+ICVCIIgiJUK307CFDH6FICdCt9OwhQx+ICVC3aHxywx+hUIgiIUiJUIZiCInQv8Ag0KBgoSIkKDAgAF+ISggBCgCMCIDQQxrIQJBACEFIAQoAjQiByAlpyIJcSIGIQECfwJAA0AgASADaikAACIpICiFIiVCgYKEiJCgwIABfSAlQn+Fg0KAgYKEiJCgwIB/gyIlQgBSBEADQCAmICV6p0EDdiABaiAHcUF0bCIKIAJqKQIAUQ0DICVCAX0gJYMiJUIAUg0ACwsgKSApQgGGg0KAgYKEiJCgwIB/g1AEQCAFQQhqIgUgAWogB3EhAQwBCwsgAyAGaikAAEKAgYKEiJCgwIB/gyImUARAQQghAQNAIAEgBmohAiABQQhqIQEgAyACIAdxIgZqKQAAQoCBgoSIkKDAgH+DIiZQDQALCyADICZ6p0EDdiAGaiAHcSIBaiwAACICQQBOBH8gAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiAWotAAAFIAILQQFxIgYgBCgCOCIFRXFFBEAgASADaiAnp0H/AHEiAjoAACADIAFBCGsgB3FqQQhqIAI6AAAgAyABQXRsaiICQQxrIBU2AgAgAkEIayANNgIAIAJBBGtBADYCACAEIAUgBms2AjggBCAEKAI8QQFqNgI8QQEMAgsgBEEIaiAEQTBqIgIgAkEQahDrASAEKAI0IgMgCXEiASAEKAIwIgJqKQAAQoCBgoSIkKDAgH+DIiZQBEBBCCEGA0AgASAGaiEBIAZBCGohBiACIAEgA3EiAWopAABCgIGChIiQoMCAf4MiJlANAAsLIAIgJnqnQQN2IAFqIANxIgFqLAAAIgZBAE4EQCACIAIpAwBCgIGChIiQoMCAf4N6p0EDdiIBai0AACEGCyABIAJqICenQf8AcSIFOgAAIAIgAyABQQhrcWpBCGogBToAACACIAFBdGxqIgJBDGsgFTYCACACQQhrIA02AgAgAkEEa0EANgIAIAQgBCgCPEEBajYCPCAEIAQoAjggBkEBcWs2AjhBAQwBCyADIApqIgJBBGsoAgBBAWoLIQEgAkEEayABNgIAIAhBCGohAiAEQcgAaiAIaiEGIAhBGEcNAAsLIAtBAEEMIAsgG0YiAxtqIQEgCyECIANFDQALDAcLIAEgAkGEycMAENMNAAsgASAOQeTJwwAQiAsACyABIA5B1MnDABCICwALIAEgDkHEycMAEIgLAAsgCCATQbTJwwAQiAsACyAFIBNBpMnDABCICwALIAMgE0GUycMAEIgLAAsgEq1CJH4iJqchAQJAICZCIIinDQAgAUH8////B0sNAAJAIAFFBEBBBCEFQQAhAgwBC0EEISQgEiECIAFBBBCzDiIFRQ0BCyASBEBBACEGA0BDAAAAACEuAn0CQCAEKAIkRQRAQwAAAAAhMkMAAAAAIS1DAAAAACEvQwAAAAAhLEMAAAAAITBDAAAAACExDAELIBcgBkEMbGoiCygCCCIBIAsoAgAiAyABIANLGyEJIAEgAyABIANJGyEKIAsoAgQiCCABIAEgCEkbIQwgCCABIAEgCEsbIQ8gBCgCHCILIAQpAyhCOIkiJiADIAggAyAISRutIicgAyAIIAMgCEsbrSIlQiCGhCIphSIoQiCIIiogJUK1q5P8A4UiJX4gKEL/////D4MiKCAnQpeSnKoLhSInfoUgJyAqfiAlICh+hUIgiYUiJUL/////D4NCAoUiJ0LdofHLDH4gJUIgiCIlQrfTsIUMfoUgJ0K307CFDH4gJULdofHLDH6FQiCIhSIlp3EhASAlQhmIQv8Ag0KBgoSIkKDAgAF+ISggBCgCGCIIQRRrIQdBACENAn0DQAJAIAEgCGopAAAiJyAohSIlQoGChIiQoMCAAX0gJUJ/hYNCgIGChIiQoMCAf4MiJUIAUgRAA0AgKSAleqdBA3YgAWogC3FBbGwiAyAHaikCAFENAiAlQgF9ICWDIiVCAFINAAsLQwAAAAAhLUMAAAAAIS9DAAAAACAnICdCAYaDQoCBgoSIkKDAgH+DQgBSDQIaIA1BCGoiDSABaiALcSEBDAELCyADIAhqIgFBBGsqAgAhLyABQQhrKgIAIS0gAUEMayoCAAshMiALIA+tIicgDK0iJUIghoQiKSAmhSIoQiCIIiogJUK1q5P8A4UiJX4gKEL/////D4MiKCAnQpeSnKoLhSInfoUgJyAqfiAlICh+hUIgiYUiJUL/////D4NCAoUiJ0LdofHLDH4gJUIgiCIlQrfTsIUMfoUgJ0K307CFDH4gJULdofHLDH6FQiCIhSIlp3EhASAlQhmIQv8Ag0KBgoSIkKDAgAF+IShBACEDAn0DQAJAIAEgCGopAAAiJyAohSIlQoGChIiQoMCAAX0gJUJ/hYNCgIGChIiQoMCAf4MiJUIAUgRAA0AgKSAleqdBA3YgAWogC3FBbGwiDSAHaikCAFENAiAlQgF9ICWDIiVCAFINAAsLQwAAAAAhMEMAAAAAITFDAAAAACAnICdCAYaDQoCBgoSIkKDAgH+DQgBSDQIaIANBCGoiAyABaiALcSEBDAELCyAIIA1qIgFBBGsqAgAhMSABQQhrKgIAITAgAUEMayoCAAshLCALICYgCq0iJSAJrSImQiCGhCInhSIpQiCIIiggJkK1q5P8A4UiJn4gKUL/////D4MiKSAlQpeSnKoLhSIlfoUgJSAofiAmICl+hUIgiYUiJkL/////D4NCAoUiJULdofHLDH4gJkIgiCImQrfTsIUMfoUgJUK307CFDH4gJkLdofHLDH6FQiCIhSImp3EhASAmQhmIQv8Ag0KBgoSIkKDAgAF+ISlBACENA0ACQCABIAhqKQAAIiUgKYUiJkKBgoSIkKDAgAF9ICZCf4WDQoCBgoSIkKDAgH+DIiZCAFIEQANAICcgJnqnQQN2IAFqIAtxQWxsIgMgB2opAgBRDQIgJkIBfSAmgyImQgBSDQALCyAlICVCAYaDQoCBgoSIkKDAgH+DQgBSDQIgDUEIaiINIAFqIAtxIQEMAQsLIAMgCGoiAUEEayoCACE0IAFBDGsqAgAhLiABQQhrKgIADAELQwAAAAAhNEMAAAAACyEzIAUgBkEkbGoiASA0OAIgIAEgMzgCHCABIC44AhggASAxOAIUIAEgMDgCECABICw4AgwgASAvOAIIIAEgLTgCBCABIDI4AgAgEiAGQQFqIgZHDQALCwJAIAAoAkAiAUGAgICAeEYNACABBEAgACgCRCABQQxsQQQQiA8LIAAoAkwiAUUNACAAKAJQIAFBJGxBBBCIDwsgACASNgJUIAAgBTYCUCAAIAI2AkwgACAONgJIIAAgEDYCRCAAIBo2AkAgBCgCNCIABEAgBCgCMCAAQQxsQRNqQXhxIgJrIAAgAmpBCWpBCBCIDwsgBCgCHCIABEAgBCgCGCAAQRRsQRtqQXhxIgJrIAAgAmpBCWpBCBCIDwsgBEHgAGokAA8LICQgAUGsycIAENMNAAvLJQMSf1d9BX4jAEGwAmsiBCQAIARC////+w83AtgBIARC////+////79/NwLQASAEQv////v3//+//wA3AsgBIARCgICAgPD//7//ADcCwAEgBEL////7////v383ArgBIARC////+/f//79/NwKwASAEQv////v3//+//wA3AqgBIARC////+w83AqABIARC////+////79/NwKYASAEQv////v3//+//wA3ApABIARCgICAgPD//7//ADcCiAEgBEL////7////v383AoABIARC////+/f//79/NwJ4IARC////+/f//7//ADcCcCAEQv////sPNwJoIARC////+////79/NwJgIARC////+/f//7//ADcCWCAEQoCAgIDw//+//wA3AlAgBEL////7////v383AkggBEL////79///v383AkAgBEL////79///v/8ANwI4IARC////+w83AjAgBEL////7////v383AiggBEL////79///v/8ANwIgIARCgICAgPD//7//ADcCGCAEQv////v///+/fzcCECAEQv////v3//+/fzcCCCAEQv////v3//+//wA3AgACQAJAAkACQCADQQFLBEAgAkEgaiEIIANBBXQiByACaiEFIAIqAgggAioCGJJDAAAAP5QiGyEcIAIqAgAgAioCEJJDAAAAP5QiFyEYIAIqAgQgAioCFJJDAAAAP5QiFiEZA0AgGyAIQQhqKgIAIAhBGGoqAgCSQwAAAD+UIhogGiAbXxshGyAZIAhBBGoqAgAgCEEUaioCAJJDAAAAP5QiHSAZIB1gGyEZIBwgGiAaIBxgGyEcIBYgHSAWIB1fGyEWIBggCCoCACAIQRBqKgIAkkMAAAA/lCIaIBggGmAbIRggFyAaIBcgGl8bIRcgBSAIQSBqIghHDQALIAQgFzgC4AEgBCAYOALsASAEIBY4AuQBIAQgGTgC8AEgBCAcOALoASAEIBs4AvQBQQIgGSAWkyIWIBggF5MiF14iBSAbIByTIBYgFyAFG14bIhBBAnQiBSAEQeABamoqAgAhG0NY//9AIARB7AFqIAVqKgIAIBuTlSEcIARB+AFqIAVqIQlBACEFA0AgBCACIAVqIgZBCGoiCCoCACAGQRhqKgIAIheSQwAAAD+UOAKAAiAEIAZBBGoiCioCACAGQRRqKgIAIhiSQwAAAD+UOAL8ASAEIAYqAgAiFiAGQRBqKgIAIhmSQwAAAD+UOAL4ASAcIAkqAgAgG5OU/AEiBkEITw0CIAQgBkEcbGoiBiAGKAIYQQFqNgIYIAYgBioCCCIaIAgqAgAiHSAaIB1fGzgCCCAGIAYqAgQiGiAKKgIAIh0gGiAdXxs4AgQgBiAGKgIAIhogFiAWIBpgGzgCACAGIAYqAgwiFiAZIBYgGWAbOAIMIAYgBioCECIWIBggFiAYYBs4AhAgBiAGKgIUIhggFyAXIBhfGzgCFCAHIAVBIGoiBUcNAAsgBCgCwAEiCyAEKAKkASINIAQoAogBIg4gBCgCbCIMIAQoAlAiDyAEKAI0IhEgBCgCGCIFaiIGaiIHaiIJaiIIaiIKaiISIAogCCAJIAcgBiAFIAQqAgwiIyAEKgIoIhcgFyAjXxsiPSAEKgIAIj4gBCoCHCIYIBggPmAbIj+TIAQqAhAiQCAEKgIsIhYgFiBAXxsiQSAEKgIEIkIgBCoCICIZIBkgQmAbIkOTlCAEKgIUIkQgBCoCMCIaIBogRF8bIkUgBCoCCCJGIAQqAiQiHSAdIEZgGyJHk5QgBrOUIAQqAtABIkggBCoCtAEiJCAkIEhfGyJJIAQqApgBIiEgISBJXxsiSiAEKgJ8Ih4gHiBKXxsiSyAEKgJgIh8gHyBLXxsiTCAEKgJEIiAgICBMXxsiTSAEKgLEASJOIAQqAqgBIiUgJSBOYBsiTyAEKgKMASImICYgT2AbIlAgBCoCcCInICcgUGAbIlEgBCoCVCIoICggUWAbIlIgBCoCOCIiICIgUmAbIlOTIAQqAtQBIlQgBCoCuAEiKSApIFRfGyJVIAQqApwBIiogKiBVXxsiViAEKgKAASIrICsgVl8bIlcgBCoCZCIsICwgV18bIlggBCoCSCItIC0gWF8bIlkgBCoCyAEiWiAEKgKsASIuIC4gWmAbIlsgBCoCkAEiLyAvIFtgGyJcIAQqAnQiMCAwIFxgGyJdIAQqAlgiMSAxIF1gGyJeIAQqAjwiMiAyIF5gGyJfk5QgBCoC2AEiYCAEKgK8ASIzIDMgYF8bImEgBCoCoAEiNCA0IGFfGyJiIAQqAoQBIjUgNSBiXxsiYyAEKgJoIjYgNiBjXxsiZCAEKgJMIjcgNyBkXxsiZSAEKgLMASJmIAQqArABIjggOCBmYBsiZyAEKgKUASI5IDkgZ2AbImggBCoCeCI6IDogaGAbImkgBCoCXCI7IDsgaWAbImogBCoCQCI8IDwgamAbImuTlCAEKALcASIGIAtqIgsgDWoiDSAOaiIOIAxqIgwgD2oiD7OUkiJsICMgPpMgQCBCk5QgRCBGk5QgBbOUIE0gFyAXIE1fGyBTIBggGCBTYBuTIFkgFiAWIFlfGyBfIBkgGSBfYBuTlCBlIBogGiBlXxsgayAdIB0ga2Abk5QgDyARarOUkiIXQ///f38gF0P//39/XRsiI10iBRsgPSAgICAgPV8bIhcgPyAiICIgP2AbIhiTIEEgLSAtIEFfGyIWIEMgMiAyIENgGyIZk5QgRSA3IDcgRV8bIhogRyA8IDwgR2AbIh2TlCAHs5QgTCBSkyBYIF6TlCBkIGqTlCAMs5SSIiAgbCAjIAUbIiJdIgcbIBcgHyAXIB9gGyIXIBggKCAYIChfGyIYkyAWICwgFiAsYBsiFiAZIDEgGSAxXxsiGZOUIBogNiAaIDZgGyIaIB0gOyAdIDtfGyIdk5QgCbOUIEsgUZMgVyBdk5QgYyBpk5QgDrOUkiIfICAgIiAHGyIgXSIJGyAXIB4gFyAeYBsiFyAYICcgGCAnXxsiGJMgFiArIBYgK2AbIhYgGSAwIBkgMF8bIhmTlCAaIDUgGiA1YBsiGiAdIDogHSA6XxsiHZOUIAizlCBKIFCTIFYgXJOUIGIgaJOUIA2zlJIiHiAfICAgCRsiH10iCBsgFyAhIBcgIWAbIhcgGCAmIBggJl8bIhiTIBYgKiAWICpgGyIWIBkgLyAZIC9fGyIZk5QgGiA0IBogNGAbIhogHSA5IB0gOV8bIh2TlCAKs5QgSSBPkyBVIFuTlCBhIGeTlCALs5SSIiEgHiAfIAgbIh5dIgobIBcgJCAXICRgGyAYICUgGCAlXxuTIBYgKSAWIClgGyAZIC4gGSAuXxuTlCAaIDMgGiAzYBsgHSA4IB0gOF8bk5QgErOUIEggTpMgVCBak5QgYCBmk5QgBrOUkiAhIB4gChtdIgsbIgZFDQIgAyAGRg0CQQZBBUEEQQNBAiAFIAcbIAkbIAgbIAobIAsbIQpBACADayESQQAgBmshEyAEQfgBaiAQQQJ0aiEQQQAhBSAGIQcDQCAFQQFqIQkgAiAFQQV0aiEIQQAgBSADIAMgBUkbIgVrIQwDQAJAAkAgCSAMakEBRwRAIAQgCEEIaiILKgIAIAhBGGoiDSoCAJJDAAAAP5Q4AoACIAQgCEEEaioCACAIQRRqKgIAkkMAAAA/lDgC/AEgBCAIKgIAIAhBEGoiDioCAJJDAAAAP5Q4AvgBIBwgECoCACAbk5T8ASAKTQ0BIAIgB0EFdGohBUEAIAcgAyADIAdJGyIUayEVIAdBAWohBwNAIAcgFWpBAUYNAyAEIAVBCGoiDCoCACAFQRhqIg8qAgCSQwAAAD+UOAKAAiAEIAVBBGoqAgAgBUEUaioCAJJDAAAAP5Q4AvwBIAQgBSoCACAFQRBqIhEqAgCSQwAAAD+UOAL4ASAKIBwgECoCACAbk5T8AUkEQCAFQSBqIQUgEiAHQQFqIgdqQQFHDQEMCgsLIBEpAwAhbSAIKQMAIW4gCCAFKQMANwMAIA4pAwAhbyAOIG03AwAgCykDACFtIA8pAwAhcCALIAwpAwA3AwAgDSkDACFxIA0gcDcDACAFIG43AwAgESBvNwMAIAwgbTcDACAPIHE3AwAgBiAJRg0IIAkhBSADIAdHDQQMCAsgBSADQZjfwgAQiAsACyAIQSBqIQggEyAJQQFqIglqQQFHDQEMBgsLCyAUIANBmN/CABCICwALQfzbwgBBIkGg3MIAENYMAAsgBkEIQYjfwgAQiAsACyADQQF2IQYMAQsgAyAGTw0AIARBADYCiAIgBEEBNgL8ASAEQajTwgA2AvgBIARCBDcCgAIgBEH4AWpBsNzCABC4DQALAkACQAJAAkACQCAGRQ0AIAMgBkYNACAAKAIIIQcgBkEBRgRAIAEgB08NAiACQQhqKQMAIW0gACgCBCABQQZ0aiIFQRhqIAJBGGopAwA3AwAgBUEIaiBtNwMAIAJBEGopAwAhbSAFIAIpAwA3AwAgBUEQaiBtNwMAIAUoAgwhByAFKAIcQf////8DcUEBRgRAAkAgByAAKAIgTw0AIAAoAhwgB0EDdGoiBSgCAEUNACAFIAFBAXQ2AgQMBwtBqN3CAEEPQbjdwgAQ1wsACyAAKAIUIgUgB00NAyAAKAIQIAdBAnRqIAFBAXQ2AgAMBQsgACgCACAHRgRAIABB2N3CABDICAsgACgCBCAHQQZ0aiIFQgA3AwAgBUE4akIANwMAIAVBMGpCADcDACAFQShqQgA3AwAgBUEgakIANwMAIAVBGGpCADcDACAFQRBqQgA3AwAgBUEIakIANwMAIAAgB0EBajYCCCABQQF0IQkgACgCFCIFIAAoAgxGBEAgAEEMakHo3cIAELkICyAAKAIQIAVBAnRqIAk2AgAgACAFQQFqNgIUIAAgByACIAYQOiAAKAIIIgUgB00NAyABIAVJBEAgACgCBCIJIAdBBnRqIgUqAighGyAFKgIIIRwgBSoCJCEXIAUqAgQhGCAFKgIgIRYgBSoCACEZIAkgAUEGdGoiCSAHNgIMIAkgHCAbIBsgHGAbOAIIIAkgGCAXIBcgGGAbOAIEIAkgGSAWIBYgGWAbOAIAIAkgBSoCGCIbIAUqAjgiHCAbIBxgGzgCGCAJIAUqAhQiGyAFKgI0IhwgGyAcYBs4AhQgCSAFKgIQIhsgBSoCMCIcIBsgHGAbOAIQIAkgBSgCHCIHQf////8DcSAFKAI8IgVB/////wNxaiAFIAdyQYCAgIB8cXI2AhwMBQsgASAFQYjewgAQiAsAC0HA3MIAQcUAQYjdwgAQ1gwACyABIAdBmN3CABCICwALIAcgBUHI3cIAEIgLAAsgByAFQfjdwgAQiAsACyACIAZBBXRqIQUgACgCCCECAkACQAJAIAMgBmsiBkEBRgRAAkACQCABIAJJBEAgBUEIaikDACFtIAAoAgQgAUEGdGoiAkE4aiAFQRhqKQMANwMAIAJBKGogbTcDACAFQRBqKQMAIW0gAiAFKQMANwMgIAJBMGogbTcDACACKAIsIQMgAigCPEH/////A3FBAUcNAiADIAAoAiBPDQEgACgCHCADQQN0aiIAKAIARQ0BIAAgAUEBdEEBcjYCBAwGCyABIAJBmN7CABCICwALQajdwgBBD0Go3sIAENcLAAsgACgCFCICIANNDQEgACgCECADQQJ0aiABQQF0QQFyNgIADAMLIAAoAgAgAkYEQCAAQcjewgAQyAgLIAAoAgQgAkEGdGoiA0IANwMAIANBOGpCADcDACADQTBqQgA3AwAgA0EoakIANwMAIANBIGpCADcDACADQRhqQgA3AwAgA0EQakIANwMAIANBCGpCADcDACAAIAJBAWo2AgggAUEBdEEBciEHIAAoAhQiAyAAKAIMRgRAIABBDGpB2N7CABC5CAsgACgCECADQQJ0aiAHNgIAIAAgA0EBajYCFCAAIAIgBSAGEDogACgCCCIDIAJNDQEgASADSQRAIAAoAgQiAyACQQZ0aiIAKgIoIRsgACoCCCEcIAAqAiQhFyAAKgIEIRggACoCICEWIAAqAgAhGSADIAFBBnRqIgEgAjYCLCABIBwgGyAbIBxgGzgCKCABIBggFyAXIBhgGzgCJCABIBkgFiAWIBlgGzgCICABIAAqAhgiGyAAKgI4IhwgGyAcYBs4AjggASAAKgIUIhsgACoCNCIcIBsgHGAbOAI0IAEgACoCECIbIAAqAjAiHCAbIBxgGzgCMCABIAAoAhwiAUH/////A3EgACgCPCIAQf////8DcWogACABckGAgICAfHFyNgI8DAMLIAEgA0H43sIAEIgLAAsgAyACQbjewgAQiAsACyACIANB6N7CABCICwALIARBsAJqJAALvCADFX9ofQF+QX8hDAJAAkACQAJAAkAgAS4BeCIPQQBMBEBBfyENIABBf0cEQCABKAJAQQFxRQ0FIAEoAkQiCiACKAKMA08NBiACKAKIAyAKQYADbGoiCigCAEEBRw0GIAooAgQgASgCSEcNBiAKKAIYIQwLIA9BAEgNAQsgAEF/RgRAQX8hDQwBCyABKAJMQQFxRQ0BIAEoAlAiCiACKAKMA08NAiACKAKIAyAKQYADbGoiAigCAEEBRw0CIAIoAgQgASgCVEcNAiACKAIYIQ0LIAMoAgQhCiAMIAMoAggiD0kEQCAKIAxBGGxqIgIqAhQhWiACKgIQIVkgAioCDCFYIAIqAgghVyACKgIEIVYgAioCACFUC0MAAIA/IUAgDCADKAIUIgtJBEAgAygCECAMQQZ0aiICKgI8IVsgAioCOCFcIAIqAjQhXSACKgIwIU0gAioCLCE2IAIqAighTCACKgIkITUgAioCHCFLIAIqAhghXiACKgIUIV8gAioCECFgIAIqAgwhQCACKgIIITcgAioCBCE4IAIqAgAhOSACKgIgITMLIA0gD0kEQCAKIA1BGGxqIgIqAhQhZSACKgIQIWQgAioCDCFjIAIqAgghYiACKgIEIWEgAioCACFVC0MAAIA/IUEgCyANSwRAIAMoAhAgDUEGdGoiAioCPCFmIAIqAjghZyACKgI0IWggAioCMCFQIAIqAiwhOyACKgIoIU8gAioCJCE6IAIqAhwhTiACKgIYIWkgAioCFCFqIAIqAhAhayACKgIMIUEgAioCCCE8IAIqAgQhPSACKgIAIT4gAioCICE0CyABKAJgIgtBAnYgC0EDcUEAR2oiGARAQwAAAABDAACAPyBMIAEqAmwiL4wiP5QgMyABKgJoIimUkyA2IAEqAnAiKpSTIm4gP5QgKSAzID+UIEsgKZSTIDUgKpSTIm+UkyAqIDYgP5QgNSAplJMgTSAqlJMicJSTICogOiAplCA7IC+UkiBQICqUkiJxlCApIE4gKZQgNCAvlJIgOiAqlJIicpQgLyA0ICmUIE8gL5SSIDsgKpSSInOUkpKSIiyVICyLQwjlPB5dGyF0QwAAgL9DAACAPyAqjCJtmCIoICqTlSEeIFYgYZMiMCA/lCBUIFWTIiAgKZSTICogVyBikyIxlJMhLCAxICogLJSSIjEgMZQgICApICyUkiIgICCUIDAgLyAslJIiLCAslJKSkSIwQxe30ThdIQIgKiAoIC8gL5QgHpSSICwgMJUgAhsiLJQgLyAvIDEgMJUgAhsiMZSTIkUgRSBdIGiSIiiUlCApIDGUICogKSAvlCAelCAgIDCVIAIbIjCUkyJGIEYgXCBnkiIelJSSIC8gMJQgKSAslJMiRyBHIFsgZpIiIJSUkiF1IDAgKCAwlJQgLCAeICyUlJIgMSAgIDGUlJIhdiAeID+UID+UICkgKCApjCJ3lJSTICogICBtlJSTIXhBuQQhEyAEIQogCyERQQQhAgNAIAIhDwJAAkACQAJAIAsgDk8EQCABKAJgIgIgC0kNASAOQQJ2IgIgB08NAiACIAVPDQMgASgCXCEZIAYgAkHABGxqIghBBCALIA5rIhIgEkEETxsiAzoAuAQgCCAANgK0BCAIIA02ArAEIAggDDYCrAQgCCBmOAIgIAggZzgCHCAIIGg4AhggCCBbOAIUIAggXDgCECAIIF04AgwgCCBtOAIIIAggPzgCBCAIIHc4AgAgCCAxOAI0IAggLDgCMCAIIDA4AiwgBCACQaQBbGohEEMAAAAAIR5DAAAAACEgQwAAAAAhKEMAAAAAIR9DAAAAACEtQwAAAAAhQkMAAAAAIUNDAAAAACFEQwAAAAAhMiALIA5HBEBBAUEEIBEgEUEETxsiAiACQQFNG0EGdCEaQwAAgD8gA7OVISEgFCAZaiEbQQAhFiAKIQMgFSECIBMhFwNAIBYgG2oiCUEoaikDACGFASAJQRhqKgIAIXkgCUEcaioCACF6IAlBIGoqAgAheyAJQTBqKgIAIXwgCUEUaioCACFRIAlBNGoqAgAhfSAJQQxqKgIAIX4gCUEIaioCACFSIAlBBGoqAgAhUyAJKgIAIWwgCUEkaioCACEkIAlBOGooAgAhHCAIIAlBEGoqAgA4AiggBiAXaiAcOgAAIAIgBmoiCUH4AGogJDgCACAJQdQAaiAvIGwga5MiJJQgKSBTIGqTIiWUkyImOAIAIAlB0ABqICkgUiBpkyIilCAqICSUkyIrOAIAIAlBzABqICogJZQgLyAilJMiLjgCACAJQcgAaiApIFMgX5MiJ5QgLyBsIGCTIiOUkyJIOAIAIAlBxABqICogI5QgKSBSIF6TIh2UkyJJOAIAIAlBQGsgLyAdlCAqICeUkyJKOAIAIAlB7ABqIFAgJpQgOiAulCA7ICuUkpIifzgCACAJQegAaiA7ICaUIDQgLpQgTyArlJKSIoABOAIAIAlB5ABqIDogJpQgTiAulCA0ICuUkpIigQE4AgAgCUHgAGogTSBIlCA1IEqUIDYgSZSSkiKCATgCACAJQdwAaiA2IEiUIDMgSpQgTCBJlJKSIoMBOAIAIAlB2ABqIDUgSJQgSyBKlCAzIEmUkpIihAE4AgAgCUGAAWpDAAAAAEMAAIA/ICYgf5QgLiCBAZQgKyCAAZSSkiB4IEggggGUIEoghAGUIEkggwGUkpKSkiImlSAmi0MI5TweXRs4AgAgA0EcaiB+OAIAIANBGGogIiBBID0gJJQgPiAllJMiJiAmkiImlCA9IDwgJZQgPSAilJMiKyArkiIrlCA+ID4gIpQgPCAklJMiLiAukiIulJOSkjgCACADQRRqICUgQSAulCA+ICaUIDwgK5STkpI4AgAgA0EQaiAkIEEgK5QgPCAulCA9ICaUk5KSOAIAIANBDGogHSBAIDggI5QgOSAnlJMiJiAmkiImlCA4IDcgJ5QgOCAdlJMiKyArkiIrlCA5IDkgHZQgNyAjlJMiLiAukiIulJOSkjgCACADQQhqICcgQCAulCA5ICaUIDcgK5STkpI4AgAgA0EEaiAjIEAgK5QgNyAulCA4ICaUk5KSOAIAIAMgViBaICOUIFggHZSTkiBhIGUgJJQgYyAilJOSkyA/lCApIFQgWSAdlCBaICeUk5IgVSBkICKUIGUgJZSTkpOUkyAqIFcgWCAnlCBZICOUk5IgYiBjICWUIGQgJJSTkpOUkyBRIFFDAAAAAF4gUUMAAIA/YCB9QwAAAABcG7OUlDgCACADQSBqIQMgAkHMAGohAiAXQQFqIRcgHiAhIGyUkiEeIDIgISB8lJIhMiBEICEge5SSIUQgQyAhIHqUkiFDIEIgISB5lJIhQiAoICEgUpSSISggICAhIFOUkiEgIB8gISCFAae+lJIhHyAtICEghQFCIIinvpSSIS0gGiAWQUBrIhZHDQALCyAIIDI4ApAEIAggLTgC3AMgCCAfOALYAyA9IB4ga5MiIZQgPiAgIGqTIiSUkyIlICWSISIgPCAklCA9ICggaZMiJZSTIicgJ5IhJyAQICUgQSAilCA9ICeUID4gPiAllCA8ICGUkyIjICOSIiOUk5KSOAKUASAQICQgQSAjlCA+ICKUIDwgJ5STkpI4ApABIBAgISBBICeUIDwgI5QgPSAilJOSkjgCjAEgOCAeIGCTIiKUIDkgICBfkyInlJMiIyAjkiEdIDcgJ5QgOCAoIF6TIiOUkyIfIB+SIR8gECAjIEAgHZQgOCAflCA5IDkgI5QgNyAilJMiLSAtkiItlJOSkjgCiAEgECAnIEAgLZQgOSAdlCA3IB+Uk5KSOAKEASAQICIgQCAflCA3IC2UIDggHZSTkpI4AoABIBJBAU0NBCAZIA5BBnRqIgIqAkAgHpMiHSAdlCACKgJEICCTIh0gHZSSIAIqAkggKJMiHSAdlJKRIS0gAioCACAekyIdIB2UIAIqAgQgIJMiHSAdlJIgAioCCCAokyIdIB2UkpEhMkMAAAAAIR0CQCASQQJGBEBDAAAAACEfDAELIAIqAoABIB6TIh8gH5QgAioChAEgIJMiHyAflJIgAioCiAEgKJMiHyAflJKRIR8gEkEDRg0AIAIqAsABIB6TIh4gHpQgAioCxAEgIJMiHiAelJIgAioCyAEgKJMiHiAelJKRIR0LIAggHTgCqAQgCCAfOAKkBCAIIC04AqAEIAggMjgCnAQgCCB0OAKYBCAIIHE4AogEIAggczgChAQgCCByOAKABCAIIHA4AvwDIAggbjgC+AMgCCBvOAL0AyAIQQA2AowEDAQLIA4gC0HYpMIAEJAPAAsgCyACQdikwgAQjw8ACyACIAdB6KTCABCICwALIAIgBUH4pMIAEIgLAAsgCCAkIDCUICEgLJSTIh04AogDIAggISAxlCAlIDCUkyIfOAKEAyAIICUgLJQgJCAxlJMiLTgCgAMgCCAiICyUICcgMJSTIjI4AvACIAggIyAwlCAiIDGUkyImOALsAiAIICcgMZQgIyAslJMiKzgC6AIgCCAkIEWUICEgRpSTIh44ApQDIAggISBHlCAlIEWUkyIgOAKQAyAIICUgRpQgJCBHlJMiKDgCjAMgCCAiIEaUICcgRZSTIiE4AvwCIAggIyBFlCAiIEeUkyIkOAL4AiAIICcgR5QgIyBGlJMiJTgC9AIgCCBCIDCUIEMgLJSSIEQgMZSSIiI4AtADIAggIjgCyAMgCCBCIEWUIEMgRpSSIEQgR5SSIic4AtQDIAggUCAdlCA6IC2UIDsgH5SSkiIiOAK4AyAIIDsgHZQgNCAtlCBPIB+UkpIiIzgCtAMgCCA6IB2UIE4gLZQgNCAflJKSIkI4ArADIAggTSAylCA1ICuUIDYgJpSSkiJDOAKgAyAIIDYgMpQgMyArlCBMICaUkpIiRDgCnAMgCCA1IDKUIEsgK5QgMyAmlJKSIi44ApgDIAggUCAelCA6ICiUIDsgIJSSkiJIOALEAyAIIDsgHpQgNCAolCBPICCUkpIiSTgCwAMgCCA6IB6UIE4gKJQgNCAglJKSIko4ArwDIAggTSAhlCA1ICWUIDYgJJSSkiJROAKsAyAIIDYgIZQgMyAllCBMICSUkpIiUjgCqAMgCCA1ICGUIEsgJZQgMyAklJKSIlM4AqQDIAggHSAilCAtIEKUIB8gI5SSkiB2IDIgQ5QgKyAulCAmIESUkpKSkjgC6AMgCCAeIEiUICggSpQgICBJlJKSIHUgISBRlCAlIFOUICQgUpSSkpKSOALsAyAIICc4AswDIAggJSAIKgKYA5QgJCAIKgKcA5SSICEgCCoCoAOUkiAoIAgqArADlCAgIAgqArQDlJIgHiAilJKSIh4gHpI4AvADIBRBgAJqIRQgCkGkAWohCiAVQcAEaiEVIBNBwARqIRMgEUEEayERIA9BBGohAiAPIQ4gGEEBayIYDQALCw8LQYDBwgAQkQ8AC0GwicIAQRNBkMHCABDXCwALQeDAwgAQkQ8AC0GwicIAQRNB8MDCABDXCwALrnUDOn0afwN+IwBBkANrIkMkACBDQegAaiACIAMoArgBEQAAIEMoAmwhTCBDKAJoIUcgQ0HgAGogBCAFKAK4AREAACBDKAJkIUYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIEdBAEdBACBDKAJgIkQbRQRAIAIgAygCoAERBAAiRUH/AXFBBkcgBCAFKAKgAREEACJJQf8BcUEGR3ENAiBDQRBqIAIgAygCYBEAACBDQcABaiBDKAIQIgAgQygCFCgCDBEAACAARQ0BIEMpA8ABQvq5j6ySxqjHiX+FIEMpA8gBQv/F/o/unKy7VIWEQgBSDQFBACFFIAEgACAEIAUgBiAHIAhBABBdDBILIEMgBjgCcCAIELoHIAgoAgAiAkUNAiBDQdgAaiACIAgoAgQoAhwRAAAgQ0HAAWogQygCWCJFIEMoAlwoAgwRAAAgQykDwAFC3LH4hYnRxY2mf4UgQykDyAFC16PogbHP87BWhYRCAFINAyBFIEUtABhBf3NBAXEiAjoAGCBDIAI6AHcgRyBMKAIQEQQAIQIgRCBGKAIQEQQAIQMgASoCFCEcIAEqAhAhISABKgIYISIgASoCACEQIAEqAgQhFCABKgIIIRMgQyABKAIMIgQ2AoQBIEMgE4wiBjgCgAEgQyAUjCIOOAJ8IEMgEIwiDzgCeCBDIBAgHJQgFCAhlJMiCSAJkiIJIAS+Ih6UIBQgFCAilCATIByUkyIKIAqSIgqUIBAgEyAhlCAQICKUkyILIAuSIguUk5IgIpMiDTgCkAEgQyALIB6UIAkgEJQgCiATlJOSIByTIhE4AowBIEMgCiAelCALIBOUIAkgFJSTkiAhkyISOAKIAUP//39/IR9D//9//yEMQ///f/8hFUP//3//IRZD//9//yEXQ///f38hGkP//39/IRhD//9/fyEbAkAgAigCCEUNAAJAAkAgAigCBCIBKAI8Qf////8DcSABKAIcQf////8DcWoOAgIAAQsgASoCGCEVIAEqAhQhFiABKgIQIRcgASoCCCEaIAEqAgQhGCABKgIAIRsMAQsgASoCGCIJIAEqAjgiCiAJIApgGyEVIAEqAhQiCSABKgI0IgogCSAKYBshFiABKgIQIgkgASoCMCIKIAkgCmAbIRcgASoCCCIJIAEqAigiCiAJIApfGyEaIAEqAgQiCSABKgIkIgogCSAKXxshGCABKgIAIgkgASoCICIKIAkgCl8bIRsLAkAgAygCCEUEQEP//3//IQlD//9//yEKQ///f38hC0P//39/IR0MAQtD//9//yEJQ///f/8hCkP//39/IQtD//9/fyEdAkACQCADKAIEIgEoAjxB/////wNxIAEoAhxB/////wNxag4CAgABCyABKgIYIQwgASoCFCEJIAEqAhAhCiABKgIIIR8gASoCBCELIAEqAgAhHQwBCyABKgIYIgkgASoCOCIKIAkgCmAbIQwgASoCFCIJIAEqAjQiCiAJIApgGyEJIAEqAhAiCiABKgIwIgsgCiALYBshCiABKgIIIgsgASoCKCIdIAsgHV8bIR8gASoCBCILIAEqAiQiHSALIB1fGyELIAEqAgAiHSABKgIgIhkgGSAdYBshHQsgQyAVIBqTQwAAAD+UIhkgGZQgFiAYk0MAAAA/lCIZIBmUIBcgG5NDAAAAP5QiGSAZlJKSIAwgH5NDAAAAP5QiGSAZlCAJIAuTQwAAAD+UIhkgGZQgCiAdk0MAAAA/lCIZIBmUkpJdIgE6AJcBIAENBCAMIRUgCSEWIAohFyAfIRogCyEYIB0hGyAiIQ0gHCERICEhEiATIQYgFCEOIBAhDyBGIQMgRCEEIEwhRiBHIUQMDwsgQ0EIaiAEIAUoAmARAAAgQ0HAAWoiBCBDKAIIIgAgQygCDCgCDBEAAEEAIUUgAEUNECBDKQPAAUL6uY+sksaox4l/hSBDKQPIAUL/xf6P7pysu1SFhEIAUg0QIEMgASoCDCIMOALMASBDIAEqAggiCYw4AsgBIEMgASoCBCIKjDgCxAEgQyABKgIAIguMOALAASBDIAwgCyABKgIUIg2UIAogASoCECIRlJMiEiASkiISlCAKIAogASoCGCIOlCAJIA2UkyIPIA+SIg+UIAsgCSARlCALIA6UkyIQIBCSIhCUk5IgDpM4AtgBIEMgDCAQlCALIBKUIAkgD5STkiANkzgC1AEgQyAMIA+UIAkgEJQgCiASlJOSIBGTOALQASAEIAAgAiADIAYgByAIQQEQXQwQCyBFQf8BcUEJRw0DIERFDQQgQyABKgIMIgw4AswBIEMgASoCCCIJjDgCyAEgQyABKgIEIgqMOALEASBDIAEqAgAiC4w4AsABIEMgDCALIAEqAhQiDZQgCiABKgIQIhGUkyISIBKSIhKUIAogCiABKgIYIg6UIAkgDZSTIg8gD5IiD5QgCyAJIBGUIAsgDpSTIhAgEJIiEJSTkiAOkzgC2AEgQyAMIBCUIAsgEpQgCSAPlJOSIA2TOALUASBDIAwgD5QgCSAQlCAKIBKUk5IgEZM4AtABIENBGGogAiADKAJgEQAAIENB4AJqIEMoAhgiAiBDKAIcKAIMEQAAAkAgAkUNACBDKQPgAkKtjICLoKuPmB6FIEMpA+gCQsvOwJqam+jBP4WEQgBSDQBBACFFIAAgASBDQcABaiACIEQgRiAGIAcgCEEAEHAMEAtBtILDABCRDwALQfjwwgAQkQ8AC0GI8cIAEJEPAAsgQyAiOAKQASBDIBw4AowBIEMgITgCiAEgQyAENgKEASBDIBM4AoABIEMgFDgCfCBDIBA4AnggTCEDIEchBAwKCwJAAkAgSUH/AXEOCgAHBwcHAwcHBwEHCyBFQf8BcUEFRg0DDAgLIEdFDQAgQ0HAAWoiAyABENwHIENBQGsgBCAFKAJgEQAAIENB4AJqIEMoAkAiAiBDKAJEKAIMEQAAAkAgAkUNACBDKQPgAkKtjICLoKuPmB6FIEMpA+gCQsvOwJqam+jBP4WEQgBSDQAgACADIAEgAiBHIEwgBiAHIAhBARBwDAsLQcSCwwAQkQ8ACyMAQTBrIkQkACBEQQhqIAIgAygCYBEAACBEQRBqIEQoAggiRiBEKAIMKAIMEQAAAkACQCBGRQ0AIEQpAxBCrYyAi6Crj5gehSBEKQMYQsvOwJqam+jBP4WEQgBSDQAgACABIEYgBCAFIAYgByAIQQAQeAwBCyBEIAQgBSgCYBEAACBEQRBqIgUgRCgCACIEIEQoAgQoAgwRAAAgBEUNACBEKQMQQq2MgIugq4+YHoUgRCkDGELLzsCampvowT+FhEIAUg0AIEQgASoCDCIMOAIcIEQgASoCCCIJjDgCGCBEIAEqAgQiCow4AhQgRCABKgIAIguMOAIQIEQgDCALIAEqAhQiDZQgCiABKgIQIhGUkyISIBKSIhKUIAogCiABKgIYIg6UIAkgDZSTIg8gD5IiD5QgCyAJIBGUIAsgDpSTIhAgEJIiEJSTkiAOkzgCKCBEIAwgEJQgCyASlCAJIA+Uk5IgDZM4AiQgRCAMIA+UIAkgEJQgCiASlJOSIBGTOAIgIAAgBSAEIAIgAyAGIAcgCEEBEHgLIERBMGokAAwJCyBFQf8BcQ4GAAQEBAQBBAsgBSgCYCEAIENBOGogAiADKAJgIgMRAAAgQ0HAAWoiBSBDKAI4IgggQygCPCgCDBEAACBDKQPAASFdIEMpA8gBIV4gQ0EwaiAEIAARAAAgBSBDKAIwIgUgQygCNCgCDBEAAEEAIUUgCEEAIF1Cgc/t+6qO5ZXnAIUgXkKox57Z4bjDk0eFhFAbIggEQCAFQQAgQykDwAFC3fPzxO6x3LFshSBDKQPIAUK/vvvdsdS55XaFhFAbIgUNAgsgQ0EoaiACIAMRAAAgQ0HAAWoiAiBDKAIoIgMgQygCLCgCDBEAACBDKQPAASFdIEMpA8gBIV4gQ0EgaiAEIAARAAAgAiBDKAIgIgAgQygCJCgCDBEAACADQQAgXULd8/PE7rHcsWyFIF5Cv7773bHUueV2hYRQGyIDRQ0IIABBACBDKQPAAUKBz+37qo7llecAhSBDKQPIAUKox57Z4bjDk0eFhFAbIgBFDQggQyABKgIMIgw4AswBIEMgASoCCCIJjDgCyAEgQyABKgIEIgqMOALEASBDIAEqAgAiC4w4AsABIEMgDCALIAEqAhQiDZQgCiABKgIQIhGUkyISIBKSIhKUIAogCiABKgIYIg6UIAkgDZSTIg8gD5IiD5QgCyAJIBGUIAsgDpSTIhAgEJIiEJSTkiAOkzgC2AEgQyAMIBCUIAsgEpQgCSAPlJOSIA2TOALUASBDIAwgD5QgCSAQlCAKIBKUk5IgEZM4AtABIAIgACADKgIAIAYgB0EBEIoBDAgLIAMoAmAhAyAFKAJgIUQjAEHQLWsiBSQAIAVBIGogAiADEQAAIAVBwCVqIgMgBSgCICICIAUoAiQoAgwRAAAgBSkDwCUhXSAFKQPIJSFeIAVBGGogBCBEEQAAIAMgBSgCGCJEIAUoAhwoAgwRAAACQCACQQAgXUKBz+37qo7llecAhSBeQqjHntnhuMOTR4WEUBsiBEUNACBEQQAgBSkDwCVCgc/t+6qO5ZXnAIUgBSkDyCVCqMee2eG4w5NHhYRQGyICRQ0AIAUgBjgCMCAFIAE2AiwCQAJAAkACQAJ/AkACQCAIKAIAIgFFDQAgBUEQaiABIAgoAgQoAhgRAAAgAyAFKAIQIgEgBSgCFCgCDBEAACABRQ0AIAUpA8AlQqLPgvLup8WXpX+FIAUpA8glQuPGxqTw6YbwDIWEUA0BC0EgQQgQsw4iA0UNAyADQQA6ABggA0KJ2bnijtO+lwg3AxAgA0EIakHA1cIAKQMANwMAIANBuNXCACkDADcDAAJAIAgoAgAiAUUNACAIKAIEIkQoAgAiRgRAIAEgRhEGAAsgRCgCBCJGRQ0AIAEgRiBEKAIIEIgPCyAIQbD/wgA2AgQgCCADNgIAQbD/wgAMAQsgCCgCACIDRQ0BIAgoAgQLIQEgBUEIaiADIAEoAhwRAAAgBUHAJWogBSgCCCJEIAUoAgwoAgwRAAACQAJAIERFDQAgBSkDwCVCos+C8u6nxZelf4UgBSkDyCVC48bGpPDphvAMhYRCAFINACBEIEQtABhBf3NBAXEiRzoAGCAFIEc6ADcgBUFAayAHQQhqIgEoAgA2AgAgAUEANgIAIAcpAgAhXSAHQoCAgIDAADcCACAFIF03AzggBSAEKgJsQwAAAD+UIhE4AkwgBSAEKgJoQwAAAD+UIhI4AkggBSAEKgJkIiFDAAAAP5QiIjgCRCACKgJkIRwgAioCaCEGIAUgAioCbEMAAAA/lCIPOAJYIAUgBkMAAAA/lCIQOAJUIAUgHEMAAAA/lCIdOAJQQ///f38hDEP//3//IQoCQCAEKAIIIkxFBEBD//9//yEGQ///f/8hDkP//39/IQlD//9/fyENDAELQ///f/8hBkP//3//IQ5D//9/fyEJQ///f38hDQJAAkAgBCgCBCIBKAI8Qf////8DcSABKAIcQf////8DcWoOAgIAAQsgASoCGCEKIAEqAhQhBiABKgIQIQ4gASoCCCEMIAEqAgQhCSABKgIAIQ0MAQsgASoCGCIGIAEqAjgiCSAGIAlgGyEKIAEqAhQiBiABKgI0IgkgBiAJYBshBiABKgIQIgkgASoCMCILIAkgC2AbIQ4gASoCCCIJIAEqAigiCyAJIAtfGyEMIAEqAgQiCSABKgIkIgsgCSALXxshCSABKgIAIgsgASoCICINIAsgDV8bIQ0LIAUqAjBDAAAAP5QiC0MAAAAAYEUNASAFIAogC5IiIDgCcCAFIAYgC5IiIzgCbCAFIA4gC5IiJDgCaCAFIAwgC5MiJTgCZCAFIAkgC5MiJjgCYCAFIA0gC5MiFDgCXEP//39/IQxD//9//yEKAkAgAigCCCJGRQRAQ///f/8hBkP//3//IQ5D//9/fyEJQ///f38hDQwBC0P//3//IQZD//9//yEOQ///f38hCUP//39/IQ0CQAJAIAIoAgQiASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghCiABKgIUIQYgASoCECEOIAEqAgghDCABKgIEIQkgASoCACENDAELIAEqAhgiBiABKgI4IgkgBiAJYBshCiABKgIUIgYgASoCNCIJIAYgCWAbIQYgASoCECIJIAEqAjAiDCAJIAxgGyEOIAEqAggiCSABKgIoIgwgCSAMXxshDCABKgIEIgkgASoCJCINIAkgDV8bIQkgASoCACINIAEqAiAiEyANIBNfGyENCyAFIAsgCpIiKTgCiAEgBSALIAaSIiw4AoQBIAUgCyAOkiItOAKAASAFIAwgC5MiLjgCfCAFIAkgC5MiLzgCeCAFIA0gC5MiMDgCdCAFKAIsIgMqAgwhFyADKgIEIRMgAyoCFCEfIAMqAgghFSADKgIQIR4gAyoCACEWIAMqAhghGSAFQQA2AowBIAVBkAFqIAVB3ABqIAMgBUH0AGoQsgEgBSgCkAFFDQUgEyATIBmUIBUgH5STIgYgBpIiBpQgFiAVIB6UIBYgGZSTIgkgCZIiCZSTIQsgFyAWIB+UIBMgHpSTIgogCpIiCpQhDCAWIAqUIBUgBpSTIQ0gFyAJlCEOIBUgCZQgEyAKlJMhCSAXIAaUIQYgESAPkkMAACBBlCEaIBIgEJJDAAAgQZQhGCAiIB2SQwAAIEGUIRsCQAJAAkACQCBGRQ0AIAIoAgQiASgCPEH/////A3EgASgCHEH/////A3FqDgIAAQILIAVC////+////79/NwPQJSAFQv////v3//+/fzcDyCUgBUL////79///v/8ANwPAJQwCCyAFQcglaiABQQhqKAIANgIAIAVB1CVqIAFBGGooAgA2AgAgBSABKQIANwPAJSAFIAEpAhA3AswlDAELIAUgASoCGCIKIAEqAjgiESAKIBFgGzgC1CUgBSABKgIUIgogASoCNCIRIAogEWAbOALQJSAFIAEqAhAiCiABKgIwIhEgCiARYBs4AswlIAUgASoCCCIKIAEqAigiESAKIBFfGzgCyCUgBSABKgIEIgogASoCJCIRIAogEV8bOALEJSAFIAEqAgAiCiABKgIgIhEgCiARXxs4AsAlCyAMIAuSIScgDiANkiEqIAYgCZIhKCAFKgLAASExIAUqArwBITIgBSoCuAEhMyAFKgK0ASE0IAUqArABITUgBSoCrAEhNiAFKgKoASE3IAUqAqQBITggBSoCoAEhOSAFKgKcASE6IAUqApgBITsgBSoClAEhPCAFQcweaiAFQcAlaiADEMIDIBogBSoC4B6SIQkgGCAFKgLcHpIhCiAFKgLUHiAakyELIAUqAtAeIBiTIQ8CQAJAIAUqAsweIBuTIhAgFCAbkyIGIAYgEF8bIgwgGyAFKgLYHpIiFCAbICSSIgYgBiAUYBsiDl4NACAKIBggI5IiBiAGIApgGyIRIA8gJiAYkyIGIAYgD18bIg1dDQAgCSAaICCSIgYgBiAJYBsiBiALICUgGpMiEiALIBJgGyISXUUNAQsgECEMIA8hDSALIRIgFCEOIAohESAJIQYLICcgGZMhGSAqIB+TIR8gKCAekyEeIBWMIQ8gE4whIyAWjCEgIAUgBjgC2AEgBSAROALUASAFIA44AtABIAUgEjgCzAEgBSANOALIASAFIAw4AsQBQ///f/8hBkP//39/IQ4CQCBMRQRAQ///f38hCUP//39/IQ1D//9//yELQ///f/8hDAwBC0P//39/IQlD//9/fyENQ///f/8hC0P//3//IQwCQAJAIAQoAgQiASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghDCABKgIUIQsgASoCECEGIAEqAgghDSABKgIEIQkgASoCACEODAELIAEqAhgiBiABKgI4IgkgBiAJYBshDCABKgIUIgYgASoCNCIJIAYgCWAbIQsgASoCECIGIAEqAjAiCSAGIAlgGyEGIAEqAggiCSABKgIoIgogCSAKXxshDSABKgIEIgkg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AEEQcRsiUCBFayBHbGogTWxqrUIghoQhXQNAIAVBuCxqIgBBIGogA0EgaigCACJHNgIAIABBGGogA0EYaikCADcDACAAQRBqIANBEGopAgA3AwAgAEEIaiADQQhqKQIANwMAIAUgAykCADcDuCwgR0H/AXEiAEHBAE8NFSAAQYypwQBqLQAAIQACQAJAAkACQAJAIFYOAwABAgQLIABBAWtB/wFxQQNJDQIMAwsgAEEBa0H/AXFBAkkNAQwCCyAAQQFHDQELQ///f38hDQJAIEZFBEBD//9/fyEMQ///f38hDgwBC0P//39/IQxD//9/fyEOAkACQCABKAI8Qf////8DcSABKAIcQf////8DcWoOAgIAAQsgASoCCCENIAEqAgQhDCABKgIAIQ4MAQsgASoCCCIKIAEqAigiCyAKIAtfGyENIAEqAgQiCiABKgIkIgsgCiALXxshDCABKgIAIgogASoCICILIAogC18bIQ4LIA8gDZIgBpWO/ABBAWshRSAQIAySIAmVjvwAIldBAWshSSAdIA6SIByVjvwAIlhBAWshS0P//3//IQ0CQCBGRQRAQ///f/8hDEP//3//IQ4MAQtD//9//yEMQ///f/8hDgJAAkAgASgCPEH/////A3EgASgCHEH/////A3FqDgICAAELIAEqAhghDSABKgIUIQwgASoCECEODAELIAEqAhgiCiABKgI4IgsgCiALYBshDSABKgIUIgogASoCNCILIAogC2AbIQwgASoCECIKIAEqAjAiCyAKIAtgGyEOCyAFKALILCFIIAUoAsQsIUogBSgCwCwhTSAFIF03AqgXIAUgUDYCpBcgBSBONgKgFyAFIFE2ApwXIAUgTzYCmBcgBSBSNgKUFyAFIFM2ApAXIAUgSiAMIBCTIAmVjvwAQQFqIlkgR0E/c0EAIEdBP2tB/wFxQQJPGyIAQQRxGyJHNgLAFyAFIEggDSAPkyAGlY78AEEBaiAAQRBxGyJaNgLEFyAFIE0gDiAdkyAclY78AEEBaiJbIABBAXEbIlw2ArwXIAUgSiBJIABBCHEbIko2ArQXIAUgRSBIIABB/wFxQSBJGyJINgK4FyAFIE0gSyAAQQJxGyIANgKwFyAFIABBASBYayIAaiBbIEtrIksgSkEBIFdrIkpqIFkgSWsiSSBIIEVrbGpsaq0gACBcaiBHIEpq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IgU2AgAgA0E8aigCACAFaiEFIANBQGshAyAHQQhrIgcNAAsLIAYEQANAIAMgBTYCACADQQRqKAIAIAVqIQUgA0EIaiEDIAZBAWsiBg0ACwsgBEHIAGogBRC/BiAEQdQAaiAFEL8GIAghAyAKQQdxIgUEQANAIANBBGpBADYCACADQQhqIQMgBUEBayIFDQALCyACQQdJDQEgCCALQQN0aiECA0AgA0E8akEANgIAIANBNGpBADYCACADQSxqQQA2AgAgA0EkakEANgIAIANBHGpBADYCACADQRRqQQA2AgAgA0EMakEANgIAIANBBGpBADYCACACIANBQGsiA0cNAAsMAQsgBEHIAGpBABC/BiAEQdQAakEAEL8GCyAMBEAgDkEUaiEDIAQoAmQhFCAEKAJYIRUgBCgCXCESIAQoAmghDyAEKAJMIRcgBCgCUCETIAQoAnAhGCAEKAJ0IQlBASEGQQAhDANAIA4hAiADIQ4gDCEDIAYhDAJAIAIoAgAiByAHIAIoAgQiDWpPDQAgB0ECdCICIBhqIQYgAiAUaiECIAcgCSAHIAlLGyIWIAdrIQUgByAPIAcgD0sbIhkgB2shBwJAAkACQAJAA0AgBUUNASAGKAIAIgogC08NAiAIIApBA3RqIgooAgQgCigCAGoiECATTw0DIBcgEEECdGogAzYCACAHRQ0EIAooAgQgCigCAGoiECASSQRAIBUgEEECdGogAigCADYCACAKIAooAgRBAWo2AgQgBkEEaiEGIAJBBGohAiAFQQFrIQUgB0EBayEHIA1BAWsiDUUNBgwBCwsgECASQeC7wwAQiAsACyAWIAlBoLvDABCICwALIAogC0Gwu8MAEIgLAAsgECATQcC7wwAQiAsACyAZIA9B0LvDABCICwALIA4gEUciAiAMaiEGIA5BFEEAIAIbaiEDIAINAAsLIARBhAJqIARBCGooAgA2AgAgBEGQAmogBEEgaigCADYCACAEQZwCaiAEQRRqKAIANgIAIARBqAJqIARB0ABqKAIANgIAIARBtAJqIARB3ABqKAIANgIAIAQgBCkCADcC/AEgBCAEKQIYNwOIAiAEIAQpAgw3ApQCIAQgBCkCSDcDoAIgBCAEKQJUNwKsAiAEQcACaiAEQegAaigCADYCACAEQcwCaiAEQfQAaigCADYCACAEQfABaiICQQhq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QQEgDWshBCAHKAIEQUBrIQADQCAAQShrKgIAIhIgCGAgEkMAAAAAYHIEQCAAQUBrIQAgBEEBaiIEQQFHDQEMAgsLIARFBEBBASEGDAELQQAgBGshDEEBIQYDQCAAQRhqIQ4CQAJAIA8qAgAiCEMAAAAAYA0AIA4qAgAiEkMAAAAAYA0AIBIgCEMAAKBAlGANACAGQQFqIQYMAQsgACAGQQZ0ayIEIAApAgA3AgAgBEE4aiAAQThqKQIANwIAIARBMGogAEEwaikCADcCACAEQShqIABBKGopAgA3AgAgBEEgaiAAQSBqKQIANwIAIARBGGogDikCADcCACAEQRBqIABBEGopAgA3AgAgBEEIaiAAQQhqKQIANwIACyAAQUBrIQAgDEEBayIMDQALCyAHIA0gBms2AggLCyAJIAtBKGoiACALQRhqIgQgChsiBikCADcCiAEgCSAEIAAgChsiACkCADcClAEgCUGQAWogBkEIaigCADYCACAJQZwBaiAAQQhqKAIANgIAAkAgCSgChAEiAEUNACACRQ0AIAkoAoABIgogAEEGdGohBiADIAJBBnRqIQcgA0EkaiEEIANBQGshACAFQUBqIglBwABxIQ0DQCAKQSRqIQIgCigCHCEFIAMhDAJAIA0NACAAIQwgBSADKAIcRw0AIAooAiAgAygCIEcNACACIAQpAgA3AgAgAkEYaiAEQRhqKAIANgIAIAJBEGogBEEQaikCADcCACACQQhqIARBCGopAgA3AgALIAkEQANAAkAgBSAMQRxqKAIARw0AIAooAiAgDEEgaigCAEcNACACQRhqIAxBPGooAgA2AgAgAkEQaiAMQTRqKQIANwIAIAJBCGogDEEsaikCADcCACACIAxBJGopAgA3AgALAkAgBSAMQdwAaigCAEcNACAKKAIgIAxB4ABqKAIARw0AIAJBGGogDEH8AGooAgA2AgAgAkEQaiAMQfQAaikCADcCACACQQhqIAxB7ABqKQIANwIAIAIgDEHkAGopAgA3AgALIAcgDEGAAWoiDEcNAAsLIAYgCkFAayIKRw0ACwsgAUUNAyADIAFBBnRBBBCIDwwDCyANIAVB4PnBABDTDQALIAlBADYChAEMAQsgCUEANgKEAQsgC0GAAmokAAvvHAIpfx19IwBB4ABrIgQkAEECIRdBAiEYAn9BACAAKAKk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BUEIaiIGKQIANwIAIAogBUEQaiIKKQIANwIAIAggBUEYaiIIKQIANwIAIAcgBUEgaiIHKAIANgIAIAQgWzcDMCAFIAQpAzA3AgAgByACKAIANgIAIAggCSkDADcCACAKIAspAwA3AgAgBiADKQMANwIAQQgMBAsgBikCACFbIAYgAykCADcCACAEQTBqIgJBIGoiBSAGQSBqIgcoAgA2AgAgAkEYaiIJIAZBGGoiCCkCADcDACACQRBqIgsgBkEQaiIKKQIANwMAIAJBCGoiAiAGQQhqIgYpAgA3AwAgBiADQQhqIgYpAgA3AgAgCiADQRBqIgopAgA3AgAgCCADQRhqIggpAgA3AgAgByADQSBqIgcoAgA2AgAgBCBbNwMwIAMgBCkDMDcCACAHIAUoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACAGIAIpAwA3AgAMAgsgAikCACFbIAIgAykCADcCACAEQTBqIgVBIGoiBiACQSBqIgcoAgA2AgAgBUEYaiIJIAJBGGoiCCkCADcDACAFQRBqIgsgAkEQaiIKKQIANwMAIAVBCGoiBSACQQhqIgIpAgA3AwAgAiADQQhqIgIpAgA3AgAgCiADQRBqIgopAgA3AgAgCCADQRhqIggpAgA3AgAgByADQSBqIgcoAgA2AgAgBCBbNwMwIAMgBCkDMDcCACAHIAYoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACACIAUpAwA3AgBBDAwECyACKQIAIVsgAiAFKQIANwIAIARBMGoiB0EgaiIJIAJBIGoiCigCADYCACAHQRhqIgggAkEYaiIOKQIANwMAIAdBEGoiCyACQRBqIg8pAgA3AwAgB0EIaiIHIAJBCGoiAikCADcDACACIAVBCGoiAikCADcCACAPIAVBEGoiDykCADcCACAOIAVBGGoiDikCADcCACAKIAVBIGoiCigCADYCACAEIFs3AzAgBSAEKQMwNwIAIAogCSgCADYCACAOIAgpAwA3AgAgDyALKQMANwIAIAIgBykDADcCACABKAIIIQIgASABKAIANgIIIAEgAjYCACAJIAZBIGoiAigCADYCACAIIAZBGGoiBSkCADcDACALIAZBEGoiCikCADcDACAHIAZBCGoiDikCADcDACAGKQIAIVsgBiADKQIANwIAIA4gA0EIaiIGKQIANwIAIAogA0EQaiIKKQIANwIAIAUgA0EYaiIFKQIANwIAIAIgA0EgaiICKAIANgIAIAQgWzcDMCADIAQpAzA3AgAgAiAJKAIANgIAIAUgCCkDADcCACAKIAspAwA3AgAgBiAHKQMANwIAC0EMCyEDIAEoAgQhAiABIAEgA2oiAygCADYCBCADIAI2AgAMAgsgAikCACFbIAIgBSkCADcCACAEQTBqIgNBIGoiBiACQSBqIgcoAgA2AgAgA0EYaiIJIAJBGGoiCCkCADcDACADQRBqIgsgAkEQaiIKKQIANwMAIANBCGoiAyACQQhqIgIpAgA3AwAgAiAFQQhqIgIpAgA3AgAgCiAFQRBqIgopAgA3AgAgCCAFQRhqIggpAgA3AgAgByAFQSBqIgcoAgA2AgAgBCBbNwMwIAUgBCkDMDcCACAHIAYoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACACIAMpAwA3AgBBCAshAyABKAIAIQIgASABIANqIgMoAgA2AgAgAyACNgIAIBUhFyAWIRULIAEgFTgCtAEgASAXOAKwAQwHC0GA1MIAQShBkI3DABDWDAALIAEgCTYCuAEgASAVOAK0ASABIBY4ArABDAULIAEgCTYCuAEgASAVOAK0ASABIBY4ArABIAUgAykCADcCACAFQSBqIANBIGooAgA2AgAgBUEYaiADQRhqKQIANwIAIAVBEGogA0EQaikCADcCACAFQQhqIANBCGopAgA3AgAMBAsgASAVOAK4ASABIAk2ArQBIAEgFjgCsAEgBiADKQIANwIAIAZBIGogA0EgaigCADYCACAGQRhqIANBGGopAgA3AgAgBkEQaiADQRBqKQIANwIAIAZBCGogA0EIaikCADcCAAwDCyABIBU4ArgBIAEgFjgCtAEgASAJNgKwASACIAMpAgA3AgAgAkEgaiADQSBqKAIANgIAIAJBGGogA0EYaikCADcCACACQRBqIANBEGopAgA3AgAgAkEIaiADQQhqKQIANwIADAILIAVBBEH4i8MAEIgLAAsgB0EEQfiLwwAQiAsACyABIA02ArwBCyAAIAQpA3A3AgAgAEEIaiAMKAIANgIADAILIAEgFjgCtAEgASAVOAKwAQsgACAEKQNwNwIAIABBCGogBigCADYCAAsgBEGAAWokAAvwRAMJfx59An4jAEGAA2siCiQA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gAJqJAAMAwsgCyAAQcD5wwAQiAsACyAOIABB0PnDABCICwALQQRBoAJBkMTEACgCACIAQcwIIAAbEQAAAAsgBygCJCEAIAcoAhghASAHKAIsIQkgBygCKCEDIAcoAiAhCiAHKAIcIQQgB0GAgID8AzYCICAHQoCAgPyDgIDAPzcCGCACIAQgCiADIAkgBSAQIAYQqwMgAARAIAMgAEEDdEEEEIgPCyABRQ0MIAQgAUEMbEEEEIgPDAwLIAAgASACIAcoAhBBtMTBACAFIAYQRAwLCyAHQRhqIgwhBCAHKAIQIQkgACgC8AEhCCAAKAL0ASEDIwBB4ABrIgEkACABQTBqIgBBCGoiCkEANgIAIAFBADYCCCABQoCAgIDAADcCACABQQA2AhQgAUKAgICAwAA3AgwgAUEANgIgIAFBADYCLCABQQA2AkQgASAJKgIAIh44AiggASAeOAJAIAEgHowiHzgCHCABIAkqAgSMIh04AhggASAdOAIkIAEgHTgCMCABIB8gCSoCCCIgkzgCNCABIB0gIJMiITgCPCABQZD1wwAQkwggASgCBCIJIAEpAjA3AgAgCUEIaiAKKAIANgIAIAFBATYCCCABQQA2AlAgASAfOAJMIAEgITgCSCABQRhqIAAgAUHIAGogAyABEMkCIAEoAgAiCiABKAIIIglGBEAgAUGg9cMAEJMIIAEoAgAhCgsgICAekiEeIAEoAgQiACAJQQxsaiILQQA2AgggCyAfOAIEIAsgITgCACABIAlBAWoiCzYCCCAKIAtGBEAgAUGw9cMAEJMIIAEoAgQhAAsgACALQQxsaiIAIAEpAjw3AgAgAEEIaiABQTxqIgBBCGooAgA2AgAgASAJQQJqNgIIIAFBADYCUCABIB44AkwgASAdOAJIIAFBJGogACABQcgAaiADIAEQyQIgASgCCCIAIAEoAgBGBEAgAUHA9cMAEJMICyABQQhqIgkgAEEBajYCACABKAIEIABBDGxqIgBBADYCCCAAIB44AgQgACAdOAIAIAFCgICAgBA3AkggASADNgJQIAEgA0ECajYCVCABIANBAXQiAEECajYCXCABIABBAXI2AlhBACABQcgAakEDIAggASABQQxqIgAQjAEgBEEIaiAJKAIANgIAIAQgASkCADcCACAEIAEpAgw3AgwgBEEUaiAAQQhqKAIANgIA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AwA3AwAgAkEIaiAEQQhqKQMANwMAIAMgCEEEdGohAyAFIAhBAXNBBHRqIQUgBiAJQQR0IgRrIQYgBCAHakEQayEHIAJBEGshAiAAQRBqIQAgDUEBayINDQALIAZBEGohBCABQQFxBEAgACAFIAMgBCAFSyICGyIBKQMANwMAIABBCGogAUEIaikDADcDACADIAQgBU1BBHRqIQMgBSACQQR0aiEFCyAEIAVGIAMgB0EQakZxDQAQlw0ACyALQYAGaiQAC/kXAhx/AnwjAEGwBGsiAyQAIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCADcDgAEgA0IANwN4IANCADcDcCADQgA3A2ggA0IANwNgIANCADcDWCADQgA3A1AgA0IANwNIIANCADcDQCADQgA3AzggA0IANwMwIANCADcDKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A9gDIANCADcD0AMgA0IANwPIAyADQgA3A8ADIANCADcDuAMgA0IANwOwAyADQgA3A6gDIANCADcDoAMgA0IANwOYAyADQgA3A5ADIANCADcDiAMgA0IANwOAAyADQgA3A/gCIANCADcD8AIgA0IANwPoAiADQgA3A+ACIANCADcD2AIgA0IANwPQAiADQgA3A8gCIANCADcDwAIgA0HgA2pBAEHQAPwLAEGAwMQAKAIAIgohBSACQQNrQRhtIgRBACAEQQBKGyIOIQcgDkECdEGQwMQAaiEIQQAhBANAIAMgBEEDdGogB0EASAR8RAAAAAAAAAAABSAIKAIAtws5AwAgBCAFSSILBEAgCEEEaiEIIAdBAWohByAFIAQgC2oiBE8NAQsLIAJBGGshBUEAIQcDQCADQcACaiAHQQN0aiAAKwMAIAMgB0EDdGorAwCiRAAAAAAAAAAAoDkDACAHIApJIgQEQCAKIAQgB2oiB08NAQsLIAUgDkFo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KAIIIgUoAggiAAR+IAIgAEEGdEFAaq18QswAfAUgAkIMfAshAiAFKAIUIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIgIgdFDQAgBSgCHCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgBSgCNCIABH4gAEEBa61CHH4hAyAFKAIoIgApAwBCgIGChIiQoMCAf4NCgIGChIiQoMCAf1EEQCAAQQhqIQADQCAAKQMAIQQgAEEIaiEAIARCgIGChIiQoMCAf4NCgIGChIiQoMCAf1ENAAsLIAIgA3xCJHwFIAJCCHwLIQIgBSgCSCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQIgBSgCVCIABH4gAiAAQQl0QYAEa618QogEfAUgAkIIfAshAiABIAUoAmAiAAR+IAIgAEEBa0H/////A3GtQgOGfEIQfAUgAkIIfAtCDHw3AwBBACEADA4LIAEpAwAhAiAJKAIIIgUoAggiAAR+IAIgAEEGdEFAaq18QswAfAUgAkIMfAshAiAFKAIUIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIgIgdFDQAgBSgCHCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgBSgCMCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQIgBSgCPCIABH4gAiAAQQxsQQxrQQxurUIMfnxCFHwFIAJCCHwLIQICfiAFKAJAQYCAgIB4RwRAIAUoAlQhACAFKAJIIgYEfiACIAZBDGxBDGtBDG6tQgx+fEIVfAUgAkIJfAsiA0IIfCAARQ0BGiAAQSRsQSRrQSRurUIkfiADfEIsfAwBCyACQgF8CyECAkAgBSgCWEGAgICAeEcEQCAFKAJgIgAEfiACIABBAnRBBGutfEINfAUgAkIJfAshAiAFKAJsIgAEfiACIABBAnRBBGutfEIMfAUgAkIIfAsiA0IIfCECIAUoAngiAEUNASADIABBBHRBEGutfEIYfCECDAELIAJCAXwhAgsCQCAFKAJ8QYCAgIB4RwRAIAUoAoQBIgAEfiACIABBAnRBBGutfEINfAUgAkIJfAshAiAFKAKQASIABH4gAiAAQQJ0QQRrrXxCDHwFIAJCCHwLIgJCCHwhAyAFKAKcASIARQ0BIAIgAEEBa0H/////A3GtQgOGfEIQfCEDDAELIAJCAXwhAwsgASADQgJ8NwMAQQAhAAwNCyABKQMAIQIgCSgCCCIFKAIIIgAEfiACIABBBnRBQGqtfELMAHwFIAJCDHwLIQIgBSgCFCIABH4gAiAAQQFrQf////8Dca1CA4Z8QhB8BSACQgh8C0IQfCECAkAgBSgCICIHRQ0AIAUoAhwhBiAHQQFrQf////8BcSEKAkAgB0EHcSIIRQRAIAYhAAwBCyAGIQADQEIJQgEgACgCABsgAnwhAiAAQQhqIQAgCEEBayIIDQALCyAKQQdJDQAgBiAHQQN0aiEGA0BCCUIBIAAoAgAbIAJ8QglCASAAQQhqKAIAG3xCCUIBIABBEGooAgAbfEIJQgEgAEEYaigCABt8QglCASAAQSBqKAIAG3xCCUIBIABBKGooAgAbfEIJQgEgAEEwaigCABt8QglCASAAQThqKAIAG3whAiAGIABBQGsiAEcNAAsLIAUoAjAiAAR+IAIgAEEMbEEMa0EMbq1CDH58QhR8BSACQgh8CyECIAEgBSgCPCIABH4gAiAAQQN0QQhrrXxCEHwFIAJCCHwLNwMAQQAhAAwMCyABIAEpAwBCEHw3AwBBACEADAsLIAEpAwAhAiAJKAIIIgAoAggiBgR+IAIgBkECdEEEa618QhB8BSACQgx8CyECIAEgACgCHCIGBH4gAiAAKAIYIgAgBmogAEF/c2qtfEIZfAUgAkIYfAtCPXw3AwBBACEADAoLIAEgASkDAEIMfCICNwMAIAkoAggiBUEIaigCACIABEAgBUEEaigCAEEcaiEIIABBJGwhBgNAIAEgASkDAEIcfDcDACAIIAEQVCIADQsgCEEkaiEIIAZBJGsiBg0ACyABKQMAIQILIAUoAhQiAAR+IAIgAEEGdEFAaq18QsgAfAUgAkIIfAshAiAFKAIgIgAEfiACIABBAWtB/////wNxrUIDhnxCEHwFIAJCCHwLQhB8IQICQCAFKAIsIgdFDQAgBSgCKCEGIAdBAWtB/////wFxIQoCQCAHQQdxIghFBEAgBiEADAELIAYhAANAQglCASAAKAIAGyACfCECIABBCGohACAIQQFrIggNAAsLIApBB0kNACAGIAdBA3RqIQYDQEIJQgEgACgCABsgAnxCCUIBIABBCGooAgAbfEIJQgEgAEEQaigCABt8QglCASAAQRhqKAIAG3xCCUIBIABBIGooAgAbfEIJQgEgAEEoaigCABt8QglCASAAQTBqKAIAG3xCCUIBIABBOGooAgAbfCECIAYgAEFAayIARw0ACwsgASAFQTxqKAIAIgAEfiACIABBGGxBGGtBGG6tQhh+fEIgfAUgAkIIfAtCGHw3AwBBACEADAkLIAEgASkDAEIEfDcDACAJKAIIIAEQmAUhAAwICyABIAEpAwBCDHw3AwBBACEADAcLIAEgASkDAEIMfDcDAEEAIQAMBgsgASABKQMAQhR8NwMAQQAhAAwFCyABIAEpAwBCLHw3AwBBACEADAQLIAEgASkDAEIQfDcDAEEAIQAMAwsgASABKQMAQhB8NwMAQQAhAAwCCyABIAEpAwBCBHw3AwAgCSgCCCABEJgFIgANASABIAEpAwBCBHw3AwBBACEADAELQThBARCzDiIBRQ0BIAFBMGpB6LvBACkAADcAACABQShqQeC7wQApAAA3AAAgAUEgakHYu8EAKQAANwAAIAFBGGpB0LvBACkAADcAACABQRBqQci7wQApAAA3AAAgAUEIakHAu8EAKQAANwAAIAFBuLvBACkAADcAAEEMQQQQsw4iAEUNAiAAQTg2AgggACABNgIEIABBODYC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IJSTkiAhICeUkzgCyAEgCCAmICCUICMgH5SSICIgJ5STICEgJZSTOALEASAIICEgIJQgJiAllCAjICeUkyAiIB+Uk5I4AsABICIgByoCECABKgIQkyIllCAjIAcqAhQgASoCFJMiJ5STIh8gH5IhHyAhICeUICIgByoCGCABKgIYkyIklJMiICAgkiEgIAggJCAmIB+UICIgIJQgIyAjICSUICEgJZSTIiQgJJIiJJSTkpI4AtgBIAggJyAmICSUICMgH5QgISAglJOSkjgC1AEgCCAlICYgIJQgISAklCAiIB+Uk5KSOALQAQwCCyAJIAdBoO3BABCICwALIAhBwAFqIgFBGGogB0EYaigCADYCACABQRBqIAdBEGopAgA3AwAgAUEIaiAHQQhqKQIANwMAIAggBykCADcDwAELIAogCEHAAWogAiADIAAoAiQgACgCKCAEIAVBACAIIAAoAiwqAgAgCSAGKAIoERIAGgwBCyAAKAIgIQcCQCABBEAgCCAHKgIMIiYgASoCDCIflCAHKgIAIiEgASoCACIglJMgByoCBCIiIAEqAgQiJZSTIAcqAggiIyABKgIIIieUkzgCzAEgCCAjIB+UICEgJZQgJiAnlJIgIiAglJOSOALIASAIICMgIJQgIiAflCAmICWUICEgJ5STkpI4AsQBIAggIiAnlCAmICCUICEgH5SSkiAjICWUkzgCwAEgISABKgIUIiWUICIgASoCECInlJMiHyAfkiEfICMgJ5QgASoCGCIkICGUkyIgICCSISAgCCAHKgIYICQgJiAflCAhICCUICIgIiAklCAjICWUkyIkICSSIiSUk5KSkjgC2AEgCCAHKgIUICUgJiAglCAjICSUICEgH5STkpKSOALUASAIIAcqAhAgJyAmICSUICIgH5QgIyAglJOSkpI4AtABDAELIAhBwAFqIgFBGGogB0EYaigCADYCACABQRBqIAdBEGopAgA3AwAgAUEIaiAHQQhqKQIANwMAIAggBykCADcDwAELIAogCEHAAWogACgCJCAAKAIoIAIgA0EAIAggBCAFIAAoAiwqAgAgCSAGKAIoERIAGgsgCEHgAWokAAuKGAMGfx19AX4jAEHgAmsiCyQAAkACQCAKRQRAIAkgABD/Ag0CDAELIAkgARD/Ag0BCyALIAIgAyAAEM0BAkAgCyoCACIrIAheRQRAIAsgAyoCDCIgIAMqAgAiEpMiFSADKgIcIhkgAyoCBCIRkyIWlCADKgIQIhQgEZMiFyADKgIYIhsgEpMiHJSTIhggGJQgFyADKgIgIh0gAyoCCCIXkyITlCADKgIUIiEgF5MiGiAWlJMiFiAWlCAaIByUIBUgE5STIhUgFZSSkiIcQwAAgCheBH8gCyAYIByRIhiVOAKoASALIBUgGJU4AqQBIAsgFiAYlTgCoAFBAQVBAAs2ApwBIAtBEGogAyALQZwBaiACIAEQxQMgCyoCECIsIAheDQEgA0EYaiEOIANBDGohDyAAKgIYISQgACoCECEeIAAqAhQhEyAAKgIMIRwgACoCCCEYIAAqAgAhFiAAKgIEIRUgC0EANgKEAiALQQA2AvQBIAtCADcC4AEgC0EANgLQASALQgA3ArwBIAtBADYCrAEgC0EANgKcASALIBMgFCAcICAgGJQgFiAhlJMiGiAakiIllCAYIBUgIZQgGCAUlJMiGiAakiImlCAWIBYgFJQgICAVlJMiFCAUkiIolJOSkpIiKiATIBEgHCASIBiUIBcgFpSTIhQgFJIiH5QgGCAXIBWUIBEgGJSTIhQgFJIiI5QgFiARIBaUIBIgFZSTIhEgEZIiJ5STkpKSIhGTIhQ4AqQBIAsgFIw4ArQBIAsgESATIBkgHCAbIBiUIBYgHZSTIhMgE5IiKZQgGCAVIB2UIBggGZSTIhMgE5IiLZQgFiAWIBmUIBsgFZSTIhkgGZIiGZSTkpKSIhOTIho4AuwBIAsgGow4AvwBIAsgHiASIBwgI5QgFSAnlCAYIB+Uk5KSkiISIB4gGyAcIC2UIBUgGZQgGCAplJOSkpIiG5MiIjgCgAIgCyAijDgC+AEgCyAkIBcgHCAnlCAWIB+UIBUgI5STkpKSIhcgJCAdIBwgGZQgFiAplCAVIC2Uk5KSkiIdkyIfOALwASALIB+MOALoASALIBMgKpMiIzgCyAEgCyAjjDgC2AEgCyAbIB4gICAcICaUIBUgKJQgGCAllJOSkpIiJ5MiHjgC3AEgCyAejDgC1AEgCyAdICQgISAcICiUIBYgJZQgFSAmlJOSkpIiJpMiITgCzAEgCyAhjDgCxAEgCyAnIBKTIiQ4ArgBIAsgJIw4ArABIAsgJiAXkyIlOAKoASALICWMIiA4AqABQwAAAAAhGSALICogIpQgJyAalJMgJkMAAAAAlJI4AswCIAsgESAilCASIBqUkyAXQwAAAACUIiiSOALIAiALICcgH5QgKkMAAAAAlJIgIiAmlJM4AsQCIAsgEiAflCARQwAAAACUIimSICIgF5STOALAAiALICdDAAAAAJQgHyAqlJMgJiAalJI4ArwCIAsgEkMAAAAAlCIiIB8gEZSTIBcgGpSSOAK4AiALIBMgHpQgGyAjlJMgHUMAAAAAlCIakjgCtAIgCyARIB6UIBIgI5STICiSOAKwAiALIBsgIZQgE0MAAAAAlCIfkiAeIB2UkzgCrAIgCyASICGUICmSIB4gF5STOAKoAiALIBtDAAAAAJQiHiAhIBOUkyAdICOUkjgCpAIgCyAiICEgEZSTIBcgI5SSOAKgAiALIBMgJJQgFCAblJMgGpI4ApwCIAsgESAklCASIBSUkyAokjgCmAIgCyAlIBuUIB+SICQgHZSTOAKUAiALIBIgJZQgKZIgJCAXlJM4ApACIAsgFCAdlCAeICUgE5STkjgCjAIgCyAXIBSUICIgESAllJOSOAKIAiACKgIIISMgAioCBCEeIAIqAgAhIUP//3//IREgC0GIAmohDANAAkAgC0GcAWogEGoiDSoCACIbIBuUIA1BBGoqAgAiHSAdlJIgDUEIaioCACIaIBqUkiISQwAAADReRQ0AIAwqAgAiFyAMQQRqKgIAIiJeIQ0gGyAhIBuYlCAdIB4gHZiUkiAaICMgGpiUkiASkSITlSEfIBcgIiANG4wgE5UgH5MhEiAiIBcgDRsgE5UgH5MiFyARXgRAIBogE5UhFCAdIBOVISAgGyATlSEZIBchEQsgESASXUUNACAajCATlSEUIB2MIBOVISAgG4wgE5UhGSASIRELIAxBCGohDCAQQQxqIhBB7ABHDQALAkACQCAIIBFdRQRAIAtBKGogC0EMaigCADYCACALIAspAgQ3AyAgCyArOAIwICsgLF1FDQEgESAsXUUNASALICw4AjAgCyAcIBUgCyoCFCIIlCAWIAsqAhgiEZSTIhIgEpIiEpQgFiAWIAsqAhwiF5QgGCAIlJMiFCAUkiIZlCAVIBggEZQgFSAXlJMiFCAUkiITlJOSIBeTIhQ4AiggCyAcIBmUIBggE5QgFiASlJOSIBGTIiA4AiQgCyAcIBOUIBUgEpQgGCAZlJOSIAiTIhk4AiAMAgsgCUEANgJIDAQLIBEgK15FBEAgCyoCKCEUIAsqAiQhICALKgIgIRkMAQsgCyAUOAIoIAsgIDgCJCALIBk4AiAgCyAROAIwCyALIAEqAgwiFyAZIAEqAgQiCJQgICABKgIAIhGUkyISIBKSIhiUIBEgFCARlCAZIAEqAggiEpSTIhYgFpIiFpQgCCAgIBKUIBQgCJSTIhUgFZIiFZSTkiAUkzgCPCALIBcgFpQgEiAVlCARIBiUk5IgIJM4AjggCyAXIBWUIAggGJQgEiAWlJOSIBmTOAI0AkACQCAEBEAgBCAAIAtBIGogC0E0aiAFKAIUEREARQ0BCyAGRQ0BIAYgACALQSBqIAtBNGogBygCGBERAA0BCyAJQQA2AkgMAwsgC0GIAmoiAUEIaiIFIAtBKGooAgA2AgAgCyALKQMgNwOIAiALQZwBaiACIAEQmgIgC0GcAmogD0EIaigCADYCACALQbQCaiAOQQhqKAIAIgI2AgAgBSADQQhqKAIANgIAIAFBGGoiByAOKQIAIi43AwAgAUEgaiIMIAI2AgAgC0KCgICAIDcC2AIgC0KAgICAEDcC0AIgCyAPKQIANwKUAiALIC43AqwCIAsgAykCADcDiAIgC0HwAGogC0HQAmoiAxDkBiALQUBrIgJBQGsgAxDlBiACQShqIAFBKGopAwA3AwAgAkEgaiAMKQMANwMAIAJBGGogBykDADcDACACQRBqIAFBEGopAwA3AwAgAkEIaiAFKQMANwMAIAtCgICAgDw3A5ABIAsgCykDiAI3A0AgCSgCSCIMrUIkfiIupyEBQQAhAwJAIC5CIIinDQAgAUH8////B0sNACAJKAJEIQUCQCABRQRAQQQhAkEAIQwMAQtBBCEDIAFBBBCzDiICRQ0BCyABBEAgAiAFIAH8CgAACyAJQQA2AkggACALQSBqIAtBnAFqIAtBQGsgCSAKECwgBCAGcgRAIAsgC0EwajYCiAIgC0GIAmohAEEAIQEgCUFAayIEKAIIIgUEQAJAIAAoAgAiDioCACIIQwAAAABgDQAgCEMAAKBAlCEIQQEgBWshAyAEKAIEQSRqIQADQCAAQQxrKgIAIhEgCGAgEUMAAAAAYHIEQCAAQSRqIQAgA0EBaiIDQQFHDQEMAgsLIANFBEBBASEBDAELQQAgA2shBkEBIQEDQCAAQRhqIQcCQAJAIA4qAgAiCEMAAAAAYA0AIAcqAgAiEUMAAAAAYA0AIBEgCEMAAKBAlGANACABQQFqIQEMAQsgACABQVxsaiIDIAApAgA3AgAgA0EgaiAAQSBqKAIANgIAIANBGGogBykCADcCACADQRBqIABBEGopAgA3AgAgA0EIaiAAQQhqKQIANwIACyAAQSRqIQAgBkEBayIGDQALCyAEIAUgAWs2AggLCyAJIAtBNGoiACALQSBqIgEgChsiAykCADcCTCAJIAEgACAKGyIAKQIANwJYIAlB1ABqIANBCGooAgA2AgAgCUHgAGogAEEIaigCADYCACAMRQ0DIAIgDEEkbEEEEIgPDAMLIAMgAUHY1cIAENMNAAsgCUEANgJIDAELIAlBADYCSAsgC0HgAmokAAubFwMffwp9A34jAEHAA2siCCQAIAYQtAcCQAJAAkAgBigCACIJBEAgCEEQaiAJIAYoAgQoAhwRAAAgCEHQAmogCCgCECIJIAgoAhQoAgwRAAAgCUUNAiAIKQPQAkLF2tfbg92uHoUgCCkD2AJC9ben66mDxrPiAIWEQgBSDQIgCEGoAmogAiAAIAMoApQBEQEAIARDAAAAAGBFDQEgBCAIKgK8ApIhKCAEIAgqArgCkiEpIAQgCCoCtAKSIScgCCoCsAIgBJMhKyAIKgKsAiAEkyEqAkAgCCoCqAIgBJMiLCAJKgIYYEUNACAJKgIcICpfRQ0AIAkqAiAgK19FDQAgCSoCJCAnYEUNACAJKgIoIClgRQ0AIAkqAiwgKGBFDQBBASEiQQQhEwwECyAIICggKCArk0MAACBBlSIoQ83MzD0gKEPNzMw9XRsiKJI4AjAgCCApICkgKpNDAAAgQZUiKUPNzMw9IClDzczMPV0bIimSOAIsIAggJyAnICyTQwAAIEGVIidDzczMPSAnQ83MzD1dGyInkjgCKCAIICsgKJM4AiQgCCAqICmTOAIgIAggLCAnkzgCHCAJKAAMIQYgCSAJKAAANgAMIAkpABAhMSAJIAkpAAQ3ABAgCSAxNwAEIAkgBjYAACAFKAIEIRMgBSgCACEcIAVCgICAgMAANwIAIAUoAgghCyAFQQA2AgggCUEANgIIAkAgASgCCEUNACABKAIEIgZBACAIKgIkIiggBioCGF8bQQAgCCoCICIpIAYqAhRfG0EAIAgqAhwiJyAGKgIQXxtBACAIKgIwIisgBioCCGAbQQAgCCoCLCIqIAYqAgRgG0EAIAgqAigiLCAGKgIAYBshCiAGKAI8Qf////8DcUUNACAGKgIgICxfIAYqAiQgKl9xIAYqAiggK19xIAYqAjAgJ2BxIAYqAjQgKWBxIAYqAjggKGBxIQwgBkEgaiEGCyAIIAo2AsQBIAggATYCvAEgCCAMNgK4ASAIIAY2AjggCEEANgI0IAggCEEcajYCwAEgCEEIaiAIQTRqEOIDIAgoAghBAXEEQCAIKAIMIQogCSgCCCIGQQJ0IQwDQCAJKAIAIAZGBEAgCSAGQQFBBEEEEOMGCyAJIAZBAWoiBjYCCCAJKAIEIAxqIAo2AgAgDEEEaiEMIAggCEE0ahDiAyAIKAIEIQogCCgCAEEBcQ0ACwsgCUEYaiEGIAgoArgBIgpBIU8EQCAIKAI8IApBAnRBBBCIDwsgBiAIKQIcNwIAIAZBEGogCEEcaiIKQRBqKQIANwIAIAZBCGogCkEIaikCADcCAAwDC0HQ+cIAEJEPAAsgCEEANgLgAiAIQQE2AtQCIAhBgNrCADYC0AIgCEIENwLYAiAIQdACakGI2sIAELgNAAtB4PnCABCRDwALIAkoAhQhCiAJQQA2AhQgACoCDCIrIAAqAgAiKCAAKgIUIiqUIAAqAgQiKSAAKgIQIiyUkyInICeSIjCUICkgKSAAKgIYIi2UIAAqAggiJyAqlJMiLiAukiIulCAoICcgLJQgKCAtlJMiLyAvkiIvlJOSIC2TIS0gKyAvlCAoIDCUICcgLpSTkiAqkyEqICsgLpQgJyAvlCApIDCUk5IgLJMhLCATIAtB7ABsaiESIAkoAgQiBiAJKAIIQQJ0aiEjIAkoAhAiDSAKQQJ0aiEXIAhB1AJqISQgCEGoAmoiCUEMaiEdIAlBGGohHiABKAIsIRggASgCMCERIAEoAjghJSABKAI8IRkgJ4whJyApjCEpICiMISggCEHYAWohGkECIQ4gEyEJAkACQAJAAkADQEHsACAQQewAbGshDAJAAkACQANAIAYgI0YNASAMQewAayEMIBBBAWohECAGKAIAIQogBkEEaiEGIAogGU8NAAsgBkEEayEUICJFDQEgBSgCCCEKDAILIBIgCWtB7ABuIRAgCSASRwRAIAlBxABqIQYDQCAGQQRrKAIAIgAEQCAGKAIAIABBJGxBBBCIDwsgBkHsAGohBiAQQQFrIhANAAsLIBwEQCATIBxB7ABsQQQQiA8LIAhBwANqJAAPCwJAAkACQAJAAkACQAJAIA5BAkYEQCANIBdGBEBBACEODAcLIA0oAgAhG0EBIQ4gDUEEaiENDAELIA5BAXFFDQELIAogG00NACAJIBJHBEAgCUHsAGohCgJAIAkoAgBBAkYNACAJKAJAIgtFDQAgCSgCRCALQSRsQQQQiA8LIAohCQsgDSAXRg0DA0AgFCgCACIKIA0oAgAiG00NAiAJIBJHBEAgCUHsAGohCgJAIAkoAgBBAkYNACAJKAJAIgtFDQAgCSgCRCALQSRsQQQQiA8LIAohCQsgFyANQQRqIg1HDQALDAMLIA5BAXENAQwDCyANQQRqIQ1BASEOCyAKIBtHDQECQCAJIBJGDQAgCUEMaikCACExIAlBFGopAgAhMiAJKAIAIQ8gCSkCBCEzIAhB0AJqIgpBGGoiDiAJQRxqKAIANgIAIApBEGoiFSAyNwMAIApBCGoiJiAxNwMAIAggMzcD0AIgD0ECRg0AIAkoAiAhCiAJKAJAIRYgCSgCRCEfIAkoAmQhICAJKAJoISEgCEGIAmoiC0EYaiAOKAIANgIAIAtBEGogFSkDADcDACALQQhqICYpAwA3AwAgCEHoAWoiC0EIaiAJQSxqKQIANwMAIAtBEGogCUE0aikCADcDACALQRhqIAlBPGooAgA2AgAgCEHIAWoiC0EIaiAJQdAAaikCADcDACAaIAlB2ABqKQIANwMAIAtBGGogCUHgAGooAgA2AgAgCCAIKQPQAjcDiAIgCCAJKQIkNwPoASAIIAkpAkg3A8gBIAlB7ABqIQlBAiEODAMLQfD5wgAQkQ8ACyAUKAIAIQpBACEOC0EAIQ8gCEHIAWoiC0EYakEANgIAIBpCADcDACALQQhqQgA3AwAgCEIANwPIASAKQQAgBxshIUEAIAogBxshIEEEIR9BACEKQQAhFgsgBSgCCCIVIAUoAgBGBEAgBUGA+sIAEJwICyAFKAIEIBVB7ABsaiILIA82AgAgCyAIKQOIAjcCBCALIAo2AiAgCyAIKQPoATcCJCALQQxqIAhBiAJqIgpBCGopAwA3AgAgC0EUaiAKQRBqKQMANwIAIAtBHGogCkEYaigCADYCACALQSxqIAhB6AFqIgpBCGopAwA3AgAgC0E0aiAKQRBqKQMANwIAIAtBPGogCkEYaigCADYCACALIB82AkQgCyAWNgJAIAsgITYCaCALICA2AmQgBSAVQQFqIgo2AgggCyAIKQPIATcCSCALQdAAaiAIQcgBaiIPQQhqKQMANwIAIAtB2ABqIBopAwA3AgAgC0HgAGogD0EYaigCADYCAAsgEEEBayAKTw0EIBQoAgAiCiAZSQRAICUgCkEMbGoiCigCACILIBFPDQIgCigCBCIPIBFPDQMgCigCCCIKIBFPDQQgBSgCBCAMayEMIB4gGCAKQQxsaiIKKQIANwIAIB5BCGogCkEIaigCADYCACAIQagCaiIWQQhqIBggC0EMbGoiCkEIaigCADYCACAIIAopAgA3A6gCIB0gGCAPQQxsaiIKKQIANwIAIB1BCGogCkEIaigCADYCACAIQdACaiABIBQoAgAQhAMgJEEAIAgoAtACGyEKIAdFBEAgCiAAIBZBsPbCACACIAMgCkHw9MIAQQAgCiAEIAwQIhoMAgsgCCAtOAKcAyAIICo4ApgDIAggLDgClAMgCCArOAKQAyAIICc4AowDIAggKTgCiAMgCCAoOAKEAyAKIAhBhANqIAIgAyAIQagCakGw9sIAQQAgCiAKQfD0wgAgBCAMECIaDAELCyAKIBlBvMzDABCICwALIAsgEUHMzMMAEIgLAAsgDyARQdzMwwAQiAsACyAKIBFB7MzDABCICwALIBBBAWsgCkGQ+sIAEIgLAAvCFQMQfQt/AX4jAEGAAWsiBCQAIAAoAgAhBQJAIAEEQCAEIAUqAgwiDCABKgIMIgqUIAUqAgAiByABKgIAIguUkyAFKgIEIgggASoCBCIJlJMgBSoCCCIGIAEqAggiDpSTOAIcIAQgBiAKlCAHIAmUIAwgDpSSIAggC5STkjgCGCAEIAYgC5QgCCAKlCAMIAmUIAcgDpSTkpI4AhQgBCAIIA6UIAwgC5QgByAKlJKSIAYgCZSTOAIQIAcgASoCFCIJlCAIIAEqAhAiDpSTIgogCpIhCiAGIA6UIAEqAhgiDSAHlJMiCyALkiELIAQgBSoCGCANIAwgCpQgByALlCAIIAggDZQgBiAJlJMiDSANkiINlJOSkpI4AiggBCAFKgIUIAkgDCALlCAGIA2UIAcgCpSTkpKSOAIkIAQgBSoCECAOIAwgDZQgCCAKlCAGIAuUk5KSkjgCIAwBCyAEQRBqIhZBGGogBUEYaigCADYCACAWQRBqIAVBEGopAgA3AwAgFkEIaiAFQQhqKQIANwMAIAQgBSkCADcDEAsCQCAAKAIELQAADQAgACgCDCEWAn0CQAJ/IAAoAggiGi0AACIbRQRAIBYoAgBFDQJBGCEXQRQhGEEcDAELIBYoAiBBAUcNAUE4IRdBNCEYQTwLIBZqKgIAIQcgFiAYaioCACEGIBYgF2oqAgAMAQtDAAAAACEHQwAAAAAhBkMAAAAACyEIIBYoAkgiF0EkbCIcIBYoAkQiBWohGSAAKAIQIhgqAgggB5MhByAYKgIEIAiTIQggGCoCACAGkyEGAkAgG0UEQCAXRQ0BIBxBJGsiF0EkbkEBcUUEQCAFIAUqAgAgBpM4AgAgBSAFKgIEIAiTOAIEIAUgBSoCCCAHkzgCCCAFQSRqIQULIBdBJEkNAQNAIAUgBSoCACAGkzgCACAFQQRqIhcgFyoCACAIkzgCACAFQQhqIhcgFyoCACAHkzgCACAFQSRqIhcgFyoCACAGkzgCACAFQShqIhcgFyoCACAIkzgCACAFQSxqIhcgFyoCACAHkzgCACAZIAVByABqIgVHDQALDAELIBdFDQAgF0EkbEEkayIXQSRuQQFxRQRAIAUgBSoCDCAGkzgCDCAFIAUqAhAgCJM4AhAgBSAFKgIUIAeTOAIUIAVBJGohBQsgF0EkSQ0AA0AgBUEMaiIXIBcqAgAgBpM4AgAgBUEQaiIXIBcqAgAgCJM4AgAgBUEUaiIXIBcqAgAgB5M4AgAgBUEwaiIXIBcqAgAgBpM4AgAgBUE0aiIXIBcqAgAgCJM4AgAgBUE4aiIXIBcqAgAgB5M4AgAgGSAFQcgAaiIFRw0ACwsgGi0AAEUEQCAYQQhqKAIAIQUgGCkCACEhIBZCgICAgICAgMA/NwIMIBZCADcCBCAWQQE2AgAgFiAhNwIUIBZBHGogBTYCAEEAIQUgFiABBH8gBEHQAGoiBUEYaiABQRhqKAIANgIAIAVBEGogAUEQaikCADcDACAFQQhqIAFBCGopAgA3AwAgBCABKQIANwNQQQEFQQALNgIgIBYgBCkDUDcCJCAWQSxqIARB2ABqKQMANwIAIBZBNGogBEHgAGopAwA3AgAgFkE8aiAEQegAaigCADYCACAAKAIUIARBEGogACgCHEG8/cIAIAIgA0EAIARBACAEIAAoAiAqAgAgFiAAKAIYKAIoERIAGgwBC0EAIQUgFiABBH8gBEHQAGoiBUEYaiABQRhqKAIANgIAIAVBEGogAUEQaikCADcDACAFQQhqIAFBCGopAgA3AwAgBCABKQIANwNQQQEFQQALNgIAIBYgBCkDUDcCBCAWQQxqIARB0ABqIgFBCGopAwA3AgAgFkEUaiAEQeAAaikDADcCACAWQRxqIARB6ABqKAIANgIAIBhBCGooAgAhBSAYKQIAISEgFkKAgICAgICAwD83AiwgFkIANwIkIBZBATYCICAWICE3AjQgFkE8aiAFNgIAIAAoAhQhBSAAKAIYIRggBCAEKgIcIgw4AlwgBCAEKgIYIgeMOAJYIAQgBCoCFCIIjDgCVCAEIAQqAhAiBow4AlAgBCAMIAYgBCoCJCIKlCAIIAQqAiAiC5STIgkgCZIiCZQgCCAIIAQqAigiDpQgByAKlJMiDSANkiINlCAGIAcgC5QgBiAOlJMiDyAPkiIPlJOSIA6TOAJoIAQgDCAPlCAGIAmUIAcgDZSTkiAKkzgCZCAEIAwgDZQgByAPlCAIIAmUk5IgC5M4AmAgBSABIAIgAyAAKAIcQbz9wgBBACAEQQAgBCAAKAIgKgIAIBYgGCgCKBESABoLIAAoAiQiFyoCACEHIBcqAgQhCCAXKgIIIQYgBEH4AGogACgCDCIFQdgAQcwAIAAoAggiHC0AABtqIgFBCGooAgA2AgAgBCABKQIANwNwIAUoAkgiAQRAIAUoAkQhHSABQSRsIR4gACgCLCEbIAhDCtcjPJIiEIwhESAGQwrXIzySIhKMIRMgB0MK1yM8kiIUjCEVIAAoAhAhGSAAKAIoIRZBACEaQQAhGEEBIQEDQAJAAn0CQAJAAkAgGiAdaiIAQRhqIh8qAgBDAAAAAF0EQCAWKgIIIQcgFioCBCEIIBYqAgAhBiAXKgIIIQwgFyoCBCEKIBcqAgAhCyAEKgJ4IQkgBCoCdCEOIAQqAnAhDSAEQQhqIAIgAygCtAERAAAgBCgCCCIgRQ0BIARB0ABqICAgBEEQaiAEQfAAaiAEKAIMKAIUEQIAIB8qAgAgGSoCBCAEKgJUkiAKIA6MmCAIkpMgBCoCdIyUIBkqAgAgBCoCUJIgCyANjJggBpKTIAQqAnCUkyAZKgIIIAQqAliSIAwgCYyYIAeSkyAEKgJ4lJNeRQ0FCyAcLQAADQIgBSgCAEEBcUUNASAFKgIEIgcgAEEEaioCACIIlCAFKgIIIgwgACoCACIOlJMiBiAGkiEKIAUqAgwiCyAOlCAHIABBCGoqAgAiBpSTIgkgCZIhCSAFKgIcIAYgBSoCECINIAqUIAcgCZQgDCAMIAaUIAsgCJSTIgYgBpIiD5STkpKSIQYgBSoCGCAIIA0gCZQgCyAPlCAHIAqUk5KSkiEIIAUqAhQgDiANIA+UIAwgCpQgCyAJlJOSkpIMAwtBhP/CAEEbQaD/wgAQ1wsACyAAQQhqKgIAIQYgAEEEaioCACEIIAAqAgAMAQsgBSgCIEEBcUUEQCAAQRRqKgIAIQYgAEEQaioCACEIIABBDGoqAgAMAQsgBSoCJCIHIABBEGoqAgAiCJQgBSoCKCIMIABBDGoqAgAiDpSTIgYgBpIhCiAFKgIsIgsgDpQgByAAQRRqKgIAIgaUkyIJIAmSIQkgBSoCPCAGIAUqAjAiDSAKlCAHIAmUIAwgDCAGlCALIAiUkyIGIAaSIg+Uk5KSkiEGIAUqAjggCCANIAmUIAsgD5QgByAKlJOSkpIhCCAFKgI0IA4gDSAPlCAMIAqUIAsgCZSTkpKSCyEHQQAhAAJAIAcgFioCAJMiByAVXQ0AIAcgFF4NACAIIBYqAgSTIgcgEV0NACAHIBBeDQAgBiAWKgIIkyIHIBJeRSAHIBNdQX9zcSEACyAbIBsoAgAgACAYdHI2AgALIAFBH3EhGCABQQFqIQEgHiAaQSRqIhpHDQALCyAEQYABaiQAC8AVAxB9C38BfiMAQYABayIEJAAgACgCACEFAkAgAQRAIAQgBSoCDCIMIAEqAgwiCpQgBSoCACIHIAEqAgAiC5STIAUqAgQiCCABKgIEIgmUkyAFKgIIIgYgASoCCCIOlJM4AhwgBCAGIAqUIAcgCZQgDCAOlJIgCCALlJOSOAIYIAQgBiALlCAIIAqUIAwgCZQgByAOlJOSkjgCFCAEIAggDpQgDCALlCAHIAqUkpIgBiAJlJM4AhAgByABKgIUIgmUIAggASoCECIOlJMiCiAKkiEKIAYgDpQgASoCGCINIAeUkyILIAuSIQsgBCAFKgIYIA0gDCAKlCAHIAuUIAggCCANlCAGIAmUkyINIA2SIg2Uk5KSkjgCKCAEIAUqAhQgCSAMIAuUIAYgDZQgByAKlJOSkpI4AiQgBCAFKgIQIA4gDCANlCAIIAqUIAYgC5STkpKSOAIgDAELIARBEGoiFkEYaiAFQRhqKAIANgIAIBZBEGogBUEQaikCADcDACAWQQhqIAVBCGopAgA3AwAgBCAFKQIANwMQCwJAIAAoAgQtAAANACAAKAIMIRYCfQJAAn8gACgCCCIaLQAAIhtFBEAgFigCAEUNAkEYIRhBFCEXQRwMAQsgFigCIEEBRw0BQTghGEE0IRdBPAsgFmoqAgAhByAWIBdqKgIAIQYgFiAYaioCAAwBC0MAAAAAIQdDAAAAACEGQwAAAAALIQggFigCgAEiBSAWKAKEASIXQQZ0aiEZIAAoAhAiGCoCCCAHkyEHIBgqAgQgCJMhCCAYKgIAIAaTIQYCQCAbRQRAIBdFDQEgF0EBcQRAIAUgBSoCACAGkzgCACAFIAUqAgQgCJM4AgQgBSAFKgIIIAeTOAIIIAVBQGshBQsgF0H///8fcUEBRg0BA0AgBSAFKgIAIAaTOAIAIAVBBGoiFyAXKgIAIAiTOAIAIAVBCGoiFyAXKgIAIAeTOAIAIAVBQGsiFyAXKgIAIAaTOAIAIAVBxABqIhcgFyoCACAIkzgCACAFQcgAaiIXIBcqAgAgB5M4AgAgGSAFQYABaiIFRw0ACwwBCyAXRQ0AIBdBAXEEQCAFIAUqAgwgBpM4AgwgBSAFKgIQIAiTOAIQIAUgBSoCFCAHkzgCFCAFQUBrIQULIBdB////H3FBAUYNAANAIAVBDGoiFyAXKgIAIAaTOAIAIAVBEGoiFyAXKgIAIAiTOAIAIAVBFGoiFyAXKgIAIAeTOAIAIAVBzABqIhcgFyoCACAGkzgCACAFQdAAaiIXIBcqAgAgCJM4AgAgBUHUAGoiFyAXKgIAIAeTOAIAIBkgBUGAAWoiBUcNAAsLIBotAABFBEAgGEEIaigCACEFIBgpAgAhISAWQoCAgICAgIDAPzcCDCAWQgA3AgQgFkEBNgIAIBYgITcCFCAWQRxqIAU2AgBBACEFIBYgAQR/IARB0ABqIgVBGGogAUEYaigCADYCACAFQRBqIAFBEGopAgA3AwAgBUEIaiABQQhqKQIANwMAIAQgASkCADcDUEEBBUEACzYCICAWIAQpA1A3AiQgFkEsaiAEQdgAaikDADcCACAWQTRqIARB4ABqKQMANwIAIBZBPGogBEHoAGooAgA2AgAgACgCFCAEQRBqIAAoAhxBqOPBACACIANBACAEQQAgBCAAKAIgKgIAIBYgACgCGCgCKBESABoMAQtBACEFIBYgAQR/IARB0ABqIgVBGGogAUEYaigCADYCACAFQRBqIAFBEGopAgA3AwAgBUEIaiABQQhqKQIANwMAIAQgASkCADcDUEEBBUEACzYCACAWIAQpA1A3AgQgFkEMaiAEQdAAaiIBQQhqKQMANwIAIBZBFGogBEHgAGopAwA3AgAgFkEcaiAEQegAaigCADYCACAYQQhqKAIAIQUgGCkCACEhIBZCgICAgICAgMA/NwIsIBZCADcCJCAWQQE2AiAgFiAhNwI0IBZBPGogBTYCACAAKAIUIQUgACgCGCEXIAQgBCoCHCIMOAJcIAQgBCoCGCIHjDgCWCAEIAQqAhQiCIw4AlQgBCAEKgIQIgaMOAJQIAQgDCAGIAQqAiQiCpQgCCAEKgIgIguUkyIJIAmSIgmUIAggCCAEKgIoIg6UIAcgCpSTIg0gDZIiDZQgBiAHIAuUIAYgDpSTIg8gD5IiD5STkiAOkzgCaCAEIAwgD5QgBiAJlCAHIA2Uk5IgCpM4AmQgBCAMIA2UIAcgD5QgCCAJlJOSIAuTOAJgIAUgASACIAMgACgCHEGo48EAQQAgBEEAIAQgACgCICoCACAWIBcoAigREgAaCyAAKAIkIhgqAgAhByAYKgIEIQggGCoCCCEGIARB+ABqIAAoAgwiBUGUAUGIASAAKAIIIhwtAAAbaiIBQQhqKAIANgIAIAQgASkCADcDcCAFKAKEASIBBEAgBSgCgAEhHSABQQZ0IR4gACgCLCEbIAhDCtcjPJIiEIwhESAGQwrXIzySIhKMIRMgB0MK1yM8kiIUjCEVIAAoAhAhGSAAKAIoIRZBACEaQQAhF0EBIQEDQAJAAn0CQAJAAkAgGiAdaiIAQRhqIh8qAgBDAAAAAF0EQCAWKgIIIQcgFioCBCEIIBYqAgAhBiAYKgIIIQwgGCoCBCEKIBgqAgAhCyAEKgJ4IQkgBCoCdCEOIAQqAnAhDSAEQQhqIAIgAygCtAERAAAgBCgCCCIgRQ0BIARB0ABqICAgBEEQaiAEQfAAaiAEKAIMKAIUEQIAIB8qAgAgGSoCBCAEKgJUkiAKIA6MmCAIkpMgBCoCdIyUIBkqAgAgBCoCUJIgCyANjJggBpKTIAQqAnCUkyAZKgIIIAQqAliSIAwgCYyYIAeSkyAEKgJ4lJNeRQ0FCyAcLQAADQIgBSgCAEEBcUUNASAFKgIEIgcgAEEEaioCACIIlCAFKgIIIgwgACoCACIOlJMiBiAGkiEKIAUqAgwiCyAOlCAHIABBCGoqAgAiBpSTIgkgCZIhCSAFKgIcIAYgBSoCECINIAqUIAcgCZQgDCAMIAaUIAsgCJSTIgYgBpIiD5STkpKSIQYgBSoCGCAIIA0gCZQgCyAPlCAHIAqUk5KSkiEIIAUqAhQgDiANIA+UIAwgCpQgCyAJlJOSkpIMAwtB8OTBAEEbQbTuwQAQ1wsACyAAQQhqKgIAIQYgAEEEaioCACEIIAAqAgAMAQsgBSgCIEEBcUUEQCAAQRRqKgIAIQYgAEEQaioCACEIIABBDGoqAgAMAQsgBSoCJCIHIABBEGoqAgAiCJQgBSoCKCIMIABBDGoqAgAiDpSTIgYgBpIhCiAFKgIsIgsgDpQgByAAQRRqKgIAIgaUkyIJIAmSIQkgBSoCPCAGIAUqAjAiDSAKlCAHIAmUIAwgDCAGlCALIAiUkyIGIAaSIg+Uk5KSkiEGIAUqAjggCCANIAmUIAsgD5QgByAKlJOSkpIhCCAFKgI0IA4gDSAPlCAMIAqUIAsgCZSTkpKSCyEHQQAhAAJAIAcgFioCAJMiByAVXQ0AIAcgFF4NACAIIBYqAgSTIgcgEV0NACAHIBBeDQAgBiAWKgIIkyIHIBJeRSAHIBNdQX9zcSEACyAbIBsoAgAgACAXdHI2AgALIAFBH3EhFyABQQFqIQEgHiAaQUBrIhpHDQALCyAEQYABaiQAC8YYAyR/C30CfiMAQbADayIJJAAgBhC0BwJ/AkACQAJAAkAgBigCACIOBEAgCUEQaiAOIAYoAgQoAhwRAAAgCUHgAmogCSgCECIIIAkoAhQoAgwRAAAgCEUNAiAJKQPgAkLF2tfbg92uHoUgCSkD6AJC9ben66mDxrPiAIWEQgBSDQIgCUG4AmogAiAAIAMoApQBEQEAIARDAAAAAGBFDQEgBCAJKgLMApIhLCAEIAkqAsgCkiEtIAQgCSoCxAKSITAgCSoCwAIgBJMhMiAJKgK8AiAEkyEuAkAgCSoCuAIgBJMiLyAIKgIYYEUNACAIKgIcIC5fRQ0AIAgqAiAgMl9FDQAgCCoCJCAwYEUNACAIKgIoIC1gRQ0AIAgqAiwgLGBFDQBBBCEWQQEMBgsgCSAsICwgMpNDAAAgQZUiLEPNzMw9ICxDzczMPV0bIjGSOAIwIAkgLSAtIC6TQwAAIEGVIixDzczMPSAsQ83MzD1dGyItkjgCLCAJIDAgMCAvk0MAACBBlSIsQ83MzD0gLEPNzMw9XRsiLJI4AiggCSAyIDGTOAIkIAkgLiAtkzgCICAJIC8gLJM4AhwgCCgADCEGIAggCCgAADYADCAIKQAQITcgCCAIKQAENwAQIAggNzcABCAIIAY2AAAgBSgCBCEWIAUoAgAhGyAFQoCAgIDAADcCACAFKAIIIQwgBUEANgIIIAhBADYCCCAJQTRqIgYgASAJQRxqEP8GIAlBCGogBhDhAyAJKAIIQQFxDQMMBAtBhOfBABCRDwALIAlBADYC8AIgCUEBNgLkAiAJQZTXwQA2AuACIAlCBDcC6AIgCUHgAmpBnNfBABC4DQALQZTnwQAQkQ8ACyAJKAIMIRMgCCgCCCIGQQJ0IRADQCAIKAIAIAZGBEAgCCAGQQFBBEEEEPYGCyAIIAZBAWoiBjYCCCAIKAIEIBBqIBM2AgAgEEEEaiEQIAkgCUE0ahDhAyAJKAIEIRMgCSgCAEEBcQ0ACwsgCEEYaiEOIAkoArgBIgZBIU8EQCAJKAI8IAZBAnRBBBCIDwsgDiAJKQIcNwIAIA5BEGogCUEcaiIGQRBqKQIANwIAIA5BCGogBkEIaikCADcCAEEACyEnIAgoAhQhDiAIQQA2AhQgACoCDCI2IAAqAgAiMyAAKgIUIi6UIAAqAgQiNCAAKgIQIjCUkyIsICySIi+UIDQgNCAAKgIYIjGUIAAqAggiNSAulJMiLCAskiItlCAzIDUgMJQgMyAxlJMiLCAskiIslJOSIDGTITIgNiAslCAzIC+UIDUgLZSTkiAukyEuIDYgLZQgNSAslCA0IC+Uk5IgMJMhLyAWIAxBqAFsaiEUIAgoAgQiBiAIKAIIQQJ0aiEoIAgoAhAiDyAOQQJ0aiEZIAlB5AJqISkgASgCPCEqIDWMITEgNIwhLSAzjCEsIAlB4AFqIRpBAiERIBYhCEEAIRADQEGoASAQQagBbGshEwJAAkACQANAIAYgKEYNASATQagBayETIBBBAWohECAGKAIAIQwgBkEEaiIOIQYgDCAqTw0ACyAGQQRrIRcgJ0UNASAFKAIIIQYMAgsgFCAIa0GoAW4hBiAIIBRHBEADQCAIQfwAaigCACIABEAgCEGAAWooAgAgAEEGdEEEEIgPCyAIQdgAaigCACIABEAgCEHcAGooAgAgAEEGdEEQEIgPCyAIQagBaiEIIAZBAWsiBg0ACwsgGwRAIBYgG0GoAWxBBBCIDwsgCUGwA2okAA8LAkACQAJAAkACQAJAAkAgEUECRgRAIA8gGUYEQEEAIREMBwsgDygCACESQQEhESAPQQRqIQ8MAQsgEUEBcUUNAQsgDCASTQ0AIAggFEcEQCAIQagBaiEGAkAgCCgCAEECRg0AIAgoAlwhEiAIKAJYIQogCCgCfCILBEAgCCgCgAEgC0EGdEEEEIgPCyAKRQ0AIBIgCkEGdEEQEIgPCyAGIQgLIA8gGUYNAwNAIBcoAgAiDCAPKAIAIhJNDQIgCCAURwRAIAhBqAFqIQYCQCAIKAIAQQJGDQAgCCgCXCESIAgoAlghCiAIKAJ8IgsEQCAIKAKAASALQQZ0QQQQiA8LIApFDQAgEiAKQQZ0QRAQiA8LIAYhCAsgGSAPQQRqIg9HDQALDAMLIBFBAXENAQwDCyAPQQRqIQ9BASERCyAMIBJHDQECQCAIIBRGDQAgCCgCACEMIAlB4AJqIgpBGGoiCyAIQRxqKAIANgIAIApBEGoiBiAIQRRqKQIANwMAIApBCGoiDSAIQQxqKQIANwMAIAkgCCkCBDcD4AIgCCgCICEcIAgoAkAhHSAIKQJEITcgCCgCTCEeIAgpAlAhOCAIKAJYIR8gCCgCXCEgIAgoAmAhISAIKAJ0ISIgCC8BeCEjIAgvAXohKyAIKAJ8ISQgCCgCgAEhJSAIKAKgASEmIAgoAqQBIRUgCUG4AmoiGEEYaiIKIAsoAgA2AgAgGEEQaiILIAYpAwA3AwAgGEEIaiIGIA0pAwA3AwAgCSAJKQPgAjcDuAIgDEECRg0AIAlBmAJqIg1BGGogCigCADYCACANQRBqIAspAwA3AwAgDUEIaiAGKQMANwMAIAlB+AFqIgZBCGogCEEsaikCADcDACAGQRBqIAhBNGopAgA3AwAgBkEYaiAIQTxqKAIANgIAIAlB8AFqIAhB7ABqKQIANwMAIAkgCSkDuAI3A5gCIAkgCCkCJDcD+AEgCSAIKQJkNwPoASAaIAhBnAFqKAIANgIAIAlByAFqIgZBEGogCEGUAWopAgA3AwAgBkEIaiAIQYwBaikCADcDACAJIAgpAoQBNwPIASAIQagBaiEIQQIhEQwDC0Gk58EAEJEPAAsgFygCACEMQQAhEQsgCUHwAWpCADcDACAJQcgBaiIGQQhqQgA3AwBBECEgIAZBEGpCADcDAEEAIR0gGkEANgIAIAlCADcD6AEgCUIANwPIASAMQQAgBxshFUEAIAwgBxshJkEEISVBACEeQQAhJEEAIRxBACEMQQAhH0EAISFBACEiQQAhIwsgBSgCCCILIAUoAgBGBEAgBUG058EAEJcICyAFKAIEIAtBqAFsaiIKIAw2AgAgCiAJKQOYAjcCBCAKIBw2AiAgCiAJKQP4ATcCJCAKQQxqIAlBmAJqIgZBCGopAwA3AgAgCkEUaiAGQRBqKQMANwIAIApBHGogBkEYaigCADYCACAKQSxqIAlB+AFqIgZBCGopAwA3AgAgCkE0aiAGQRBqKQMANwIAIApBPGogBkEYaigCADYCACAKICE2AmAgCiAgNgJcIAogHzYCWCAKIDg3AlAgCiAeNgJMIAogNzcCRCAKIB02AkAgCiAjOwF4IAogKzsBeiAKICU2AoABIAogJDYCfCAKICI2AnQgCiAJKQPoATcCZCAKQewAaiAJQfABaikDADcCACAKIAkpA8gBNwKEASAKQYwBaiAJQcgBaiIGQQhqKQMANwIAIApBlAFqIAZBEGopAwA3AgAgCkGcAWogGigCADYCACAKIBU2AqQBIAogJjYCoAEgBSALQQFqIgY2AggLIAYgEEEBa0sEQCAFKAIEIRggCUG4AmohDQJAAkACQCAXKAIAIgsgASgCPCIGSQRAIAEoAjggC0EMbGoiBigCACILIAEoAjAiCk8NASAGKAIEIhUgCk8NAiAGKAIIIgYgCkkNAyAGIApB7MzDABCICwALIAsgBkG8zMMAEIgLAAsgCyAKQczMwwAQiAsACyAVIApB3MzDABCICwALIA0gBkEMbCABKAIsIgZqIgopAgA3AhggDSAGIAtBDGxqIgspAgA3AgAgDSAGIBVBDGxqIgYpAgA3AgwgDUEgaiAKQQhqKAIANgIAIA1BCGogC0EIaigCADYCACANQRRqIAZBCGooAgA2AgAgCUHgAmogASAXKAIAEIQDIClBACAJKALgAhshBiAYIBNrIQsgB0UEQCALIAAgDUGU6cEAIAIgAyAGQdTnwQBBACALIAQgCxAhGiAOIQYMAgsgCSAyOAKsAyAJIC44AqgDIAkgLzgCpAMgCSA2OAKgAyAJIDE4ApwDIAkgLTgCmAMgCSAsOAKUAyALIAlBlANqIAIgAyAJQbgCakGU6cEAQQAgCyAGQdTnwQAgBCALECEaIA4hBgwBCwsgEEEBayAGQcTnwQAQiAsAC/8VAhR/A30jAEGABGsiCyQAIAsgCTgCDCALIAg4AgggCyAKOgATIAtBFGoiDCAGIAcoAoQBEQAAIAEgAigCEBEEACEKIAsgAzYCMCALIAU2AiwgCyAENgIoIAooAgQhFSAKKAIIIRggCyALQQxqNgI4IAsgC0EIajYCNCALIAw2AiQgC0EANgI8IAtBADYCwAECQCAYRQRAIABBBDoAOAwBCyAVKAI8Qf////8DcQRAIAtBQGshFiALQcABaiEdIAtB9QNqIRcgC0HEA2ohD0EAIQwgAkEMaiEeQQQhDkF/IRkCQANAIAtBJGoiAiAVIAxBBnRqIgoQqgUhIAJAICAgAiAKQSBqIgIQqgUiCF5FBEAgCCEfICAhCCACIREgCiECDAELICAhHyAKIRELAkACQAJAAkACQCAIIAldRQRAIAkgH15FDQQgH0P//39/Ww0EIBEoAhxB/////wNxQQFHDQEMAgsCQCAIQ///f39bBEAMAQsgAigCDCEKIAIoAhxB/////wNxQQFHBEAgCSAfXkUEQCAKIQwMBwsgH0P//39/WwRAIAohDAwHC0EBIQIgESgCHEH/////A3FBAUYEQCAKIQwMBQsCfyALKALAASINQSFJBEAgDSEMIBYhEEEgIQ0gHQwBCyALKAJAIQwgCygCRCEQIBYLIQIgESgCDCERIAwgDUYEQCALQTxqEK0EIAsoAkAhDCALKAJEIRAgFiECCyAQIAxBAnRqIBE2AgAgAiACKAIAQQFqNgIAIAohDAwGCyALIAc2ArADIAsgBjYCrAMgCyAFNgKoAyALIAQ2AqQDIAsgAzYCoAMgHigCACENIAsgC0ETajYCvAMgCyALQQxqNgK4AyALIAtBCGo2ArQDIAtBBToA9AMgCyALQaADajYC/AMgCyALQcADajYC+AMgASAKIAtB+ANqQYyUwwAgDRECACALQfACaiIKQQhqIhAgD0EIaikCADcDACAKQRBqIhogD0EQaikCADcDACAKQRhqIhIgD0EYaikCADcDACAKQSBqIhMgD0EgaikCADcDACAKQShqIhQgD0EoaikCADcDACALQe4CaiIbIBdBAmotAAA6AAAgCyAPKQIANwPwAiALIBcvAAA7AewCAkAgCy0A9AMiCkEFRg0AIAsqAsADIQggC0GAAmoiDUEoaiIcIBQpAwA3AwAgDUEgaiIUIBMpAwA3AwAgDUEYaiITIBIpAwA3AwAgDUEQaiISIBopAwA3AwAgDUEIaiINIBApAwA3AwAgC0H+AWoiECAbLQAAOgAAIAsgCykD8AI3A4ACIAsgCy8B7AI7AfwBIApBBEYNACAIIAldRQ0AIAtByAFqIg5BKGogHCkDADcDACAOQSBqIBQpAwA3AwAgDkEYaiATKQMANwMAIA5BEGogEikDADcDACAOQQhqIA0pAwA3AwAgC0HGAWogEC0AADoAACALIAspA4ACNwPIASALIAsvAfwBOwHEASACKAIMIRkgCCIhIQkgCiEOCwsgCSAfXkUNAyAfQ///f39bDQMgESgCHEH/////A3FBAUYNAQsgESgCDCEMDAMLQQAhAgsgESgCDCEKIAsgBzYCsAMgCyAGNgKsAyALIAU2AqgDIAsgBDYCpAMgCyADNgKgAyAeKAIAIQ0gCyALQRNqNgK8AyALIAtBDGo2ArgDIAsgC0EIajYCtAMgC0EFOgD0AyALIAtBoANqNgL8AyALIAtBwANqNgL4AyABIAogC0H4A2pBjJTDACANEQIAIAtB8AJqIgpBCGoiECAPQQhqKQIANwMAIApBEGoiGiAPQRBqKQIANwMAIApBGGoiEiAPQRhqKQIANwMAIApBIGoiEyAPQSBqKQIANwMAIApBKGoiFCAPQShqKQIANwMAIAtB7gJqIhsgF0ECai0AADoAACALIA8pAgA3A/ACIAsgFy8AADsB7AICQAJAIAstAPQDIgpBBUYNACALKgLAAyEIIAtBuAJqIg1BKGoiHCAUKQMANwMAIA1BIGoiFCATKQMANwMAIA1BGGoiEyASKQMANwMAIA1BEGoiEiAaKQMANwMAIA1BCGoiDSAQKQMANwMAIAtBtgJqIhAgGy0AADoAACALIAspA/ACNwO4AiALIAsvAewCOwG0AiAKQQRGDQAgCCAJXQ0BCyACRQ0BDAILIAtByAFqIg5BKGogHCkDADcDACAOQSBqIBQpAwA3AwAgDkEYaiATKQMANwMAIA5BEGogEikDADcDACAOQQhqIA0pAwA3AwAgC0HGAWogEC0AADoAACALIAspA7gCNwPIASALIAsvAbQCOwHEASARKAIMIRkgCCIhIQkgCiEOIAINAQsgFiEMIB0hAiALKALAASIKQSFPBEAgCygCQCEKIAsoAkQhDCAWIQILIApFDQIgAiAKQQFrIgI2AgAgDCACQQJ0aigCACEMCyAMIBhJDQALIAwgGEHI68IAEIgLAAsgDkH/AXFBBEcEQCAAIAspA8gBNwIIIAAgCy8BxAE7ADkgACAOOgA4IAAgITgCBCAAIBk2AgAgAEEwaiALQcgBaiIBQShqKQMANwIAIABBKGogAUEgaikDADcCACAAQSBqIAFBGGopAwA3AgAgAEEYaiABQRBqKQMANwIAIABBEGogC0HQAWopAwA3AgAgAEE7aiALQcYBai0AADoAAAwCCyAAQQQ6ADgMAQsgC0EkaiAVEKoFIAldRQRAIABBBDoAOAwBCyAVKAIMIQogCyAHNgKQAiALIAY2AowCIAsgBTYCiAIgCyAENgKEAiALIAM2AoACIAJBDGooAgAhAiALIAtBE2o2ApwCIAsgC0EMajYCmAIgCyALQQhqNgKUAiALQQU6APQDIAsgC0GAAmo2AswBIAsgC0HAA2oiAzYCyAEgASAKIAtByAFqQYyUwwAgAhECACALQfACaiIBQQhqIgQgA0EMaikCADcDACABQRBqIgMgC0HUA2opAgA3AwAgAUEYaiIFIAtB3ANqKQIANwMAIAFBIGoiBiALQeQDaikCADcDACABQShqIgcgC0HsA2opAgA3AwAgC0GiA2oiCiALQfcDai0AADoAACALIAspAsQDNwPwAiALIAsvAPUDOwGgAwJAIAstAPQDIgFBBUcEQCALKgLAAyEIIAtBuAJqIgJBKGogBykDADcDACACQSBqIAYpAwA3AwAgAkEYaiAFKQMANwMAIAJBEGogAykDADcDACACQQhqIAQpAwA3AwAgC0H6A2ogCi0AADoAACALIAspA/AC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AH4iRUIgiEIAUgRAQQBBAEHA0sEAENMNAAsCQCBFpyIfQfz///8HTQR/IAMgBgR/IAMgBkH0AGw2AhwgAyASKAIENgIUQQQFQQALNgIYIANBCGpBBCAfIANBFGoQ9AkgAygCCEEBRw0BIAMoAhAhCSADKAIMBUEACyAJQcDSwQAQ0w0ACyADKAIMIQkgEiAUNgIAIBIgCTYCBCADQSBqJAALIAEoAkQgBEH0AGxqIgMgCjYCBCADIAw2AgAgAyAFKQIANwIIIANBEGogGCkCADcCACADICA4AiAgAyAjOAIcIAMgITgCGCADIAIpA7gDNwIkIANBLGogGigCADYCACADQThqIBsoAgA2AgAgAyACKQP4AjcCMCADIA4pAgA3AjwgA0HEAGogBykCADcCACADQcwAaiALKQIANwIAIANB1ABqIA8pAgA3AgAgA0HcAGogFSkCADcCACADQeQAaiATKQIANwIAIANB7ABqIBkpAgA3AgAgASAEQQFqNgJIIAJB+AJqIQdDAAAAACEhIAJBwAJqIgMqAiAhIyADKgIcISAgAyoCJCEiAkACQCABKgIkIiQgJJQgASoCKCInICeUkiABKgIsIiggKJSSIitDAAAAAFwEQCAgICCUICMgI5SSICIgIpSSIilDAAAAAFwNAQsgJCAglCAnICOUkiAoICKUkiEjDAELQwAAgL9DAACAPyAkICCUICcgI5SSICggIpSSIiMgK5EgKZGUlSIgICBDAACAP14bICBDAACAv10bELkPISELIAcgAykCADcCACAHQQhqIANBCGopAgA3AgAgB0EQaiADQRBqKQIANwIAIAdBGGogA0EYaikCADcCACAHQSBqIANBIGopAgA3AgAgB0EoaiADQShqKQIANwIAIAdBMGogA0EwaikCADcCACAHICEgASoCNF86ADkgByAjQwAAAABdQX9zICEgASoCMGBxOgA4IAJBuANqIgMgAkHIAGpBxAD8CgAAIAJBgARqIgRBCGogGCkCADcDACAFKQIAIUUgAiAmIAIqAqgBkjgCmAQgAiAsIAIqAqQBkjgClAQgAiAlIAIqAqABkjgCkAQgAiBFNwOABCACQbABaiELIAJBuAFqIQkgAkGgAWohD0EAIRUjAEGAAmsiBiQAAkAgASgCCCITQQJGDQAgBy0AOEEBRw0AIAsqAgQhIyAB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AkG4AWoQYzoArAEgHkUNBEEBIQMgAioCuAEiIyAjlCACKgK8ASIgICCUkiACKgLAASIhICGUkiIiQ/7m2y5eDQEMBAsLIANBAXENAiACKgKoASEiIAIqAqQBISMgAioCoAEhIAwBCyACKgK8ASEjIAIqArgBISAgAkIANwO4ASACKgLAASEhIAJBADYCwAEgAiAgIAIqAqABkiIgOAKgASACICMgAioCpAGSIiM4AqQBIAIgISACKgKoAZIiITgCqAEgAkG4A2oiA0EIaiAFQQhqKQIANwMAIAIgBSkCADcDuAMgAiAmICGSOALQAyACICwgI5I4AswDIAIgJSAgkjgCyAMgAiABIDAgAkHIAGogCCANIAMgAkGwAWpBAEEAEGM6AKwBDAELIAJBuANqIgNBCGogBUEIaikCADcDACACIAUpAgA3A7gDIAIgJiAikjgC0AMgAiAsICOSOALMAyACICUgIJI4AsgDIAIgASAwIAJByABqIAggDSADIAJBsAFqQQBBABBjOgCsAQsgHQRAIAJB4AFqIgxBCGogBUEIaikCADcDACAFKQIAIUUgAiAlIAIqAqABkjgC8AEgAiAsIAIqAqQBkjgC9AEgAiAmIAIqAqgBkjgC+AEgAiBFNwPgASACQbgDaiEEIAJByABqIQYgAkGwAWohBSACQaABaiEJIwBB4ABrIgMkAAJAAkAgASgCHCIHQQJGDQAgCSoCACIlIAEqAiQiI5QgCSoCBCIkIAEqAigiIJSSIAkqAggiJyABKgIsIiGUkkOsxSe3XUUNACABKgIgISIgASgCACEOIAEqAgQhJiAFKgIEISwgAyAhjDgCUCADICCMOAJMIAMgI4w4AkggA0GAAjsBXCADICYgLCAmlCAOGzgCWCADICIgIiAslCAHQQFxGzgCVCADQQhqIgEgBiAMIANByABqIAggDSADQdQAahByIAMtAERBBEYNACAJQQE6AAwgBCADKQIINwIAIARBCGogAUEIaiIMKQIANwIAIARBEGogAUEQaikCADcCACAEQRhqIAFBGGopAgA3AgAgBEEgaiABQSBqKQIANwIAIARBKGogAUEoaikCADcCACAEQTBqIAFBMGopAgA3AgAgBEE4aiABQThqKQIANwIAIAkgJyAhIAwqAgAiIZSTOAIIIAkgJCAgICGUkzgCBCAJICUgIyAh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QyACQSU7AEEgAkEANgJEIAJBAToAQCACQUBrEKINDA4LIAEoADghICADIAVBQGoiBDYCBCADIAFBQGs2AgAgBEEESQ0LIAEoADwhISADIAVBxABrIgQ2AgQgAyABQcQAajYCACAEQQRJDQwgASgAQCEiIAMgBUHIAGsiBDYCBCADIAFByABqNgIAIARBBEkEQCACQQA6AEMgAkElOwBBIAJBADYCRCACQQE6AEAgAkFAaxCiDQwOCyABKABEISMgAyAFQcwAazYCBCADIAFBzABqNgIAIAEoAEghJCACQUBrIQEjAEHQAWsiAyQAQRghBAJAIAJBCGoiBSgCBCIIRQRAQQIhBQwBCyAFIAhBAWs2AgQgBSgCACEFIANBBjYCICADIAU2AhwgA0EkaiADQRxqEIcDIAECfyADLQA8IghBA0YEQCADKAIkDAELAkACQAJAIAhBAkcEQCADQUBrIANBHGoQhwMgAy0AWCIKQQNGBEAgAygCQAwFCyAKQQJGDQEgA0HcAGogA0EcahCHAyADLQB0IgtBA0YEQCADKAJcDAULIAtBAkYNAiADQfgAaiADQRxqEIcDIAMtAJABIgdBA0YEQCADKAJ4DAULIAdBAkYNAyADQZQBaiADQRxqEIcDIAMtAKwBIg1BA0YEQCADKAKUAQwFCwJAAkACQCANQQJHBEAgA0GwAWogA0EcahCHAyADLQDIASIFQQJrDgICAQMLQQQgA0HPAWpBuMvBABC+CgwHCyADKAKwAQwGC0EFIANBzwFqQbjLwQAQvgoMBQsgASADKQKwATcCjAEgASADLwDJATsApQEgASADKQIoNwIEIAFBnAFqIANBsAFqIgRBEGopAgA3AgAgAUGUAWogBEEIaikCADcCACABQacBaiADQcsBai0AADoAACABQQxqIANBJGoiBEEMaikCADcCACABQRRqIARBFGooAgA2AgAgAygCJCEEIANBAmogA0E9aiIGQQJqLQAAOgAAIANBE2ogA0FAayIJQRBqKQIANwAAIANBC2ogCUEIaikCADcAACABQTdqIANB2QBqIglBAmotAAA6AAAgASAJLwAAOwA1IAFByABqIANB3ABqIglBEGopAgA3AgAgAUFAayAJQQhqKQIANwIAIAEgAykCXDcCOCADIAYvAAA7AQAgAyADKQJANwADIAFB0wBqIANB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ACARIBQpAgA3AgAgEUEIaiAUQQhqKAIANgIAIBAgEykCADcCACAQQQhqIBNBCGooAgA2AgAgA0HQBWogDBCSAiADKALQBQ0MIA4gBCICRw0ACwsgAUEANgL0AQJAIAEoAoQDQQFHDQAgA0HQBWogHxCSAiADKALQBUEBRw0AIANB8AJqIApBCGooAgA2AgAgAyAKKQIANwPoAgwNCyABQQA2AoQDDAELCyABQQA2ArwBIAUgAkECdEEEEIgPCyABQQI2AjAgBiADQfgCakHAAfwKAAALIAFBAjYC9AEgDCADQRRqQdQC/AoAAAJAIAEoAswEIgRBAkYNAAJAIARBAXFFDQAgA0H4AmogFxCSAiADKAL4AkUNACADQfACaiAIQQhqKAIANgIAIAMgCCkCADcD6AIMCgsCQCABKALsBiINRQ0AIAEoApwHIgIgASgCoAciDk4NACABKALwBiEPIAEoApgHIQkgASgChAchByABKAL4BiEFA0AgASACQQFqIgQ2ApwHIAEgDzYCpAUgASANNgKgBSABQQA2AvgEIAFCATcCzAQgASACNgLABSABIAk2AtAFIAEgBTYC1AUgASAHNgLYBSAbIB4pAgA3AgAgG0EIaiAeQQhqKAIANgIAIBogHSkCADcCACAaQQhqIB1BCGooAgA2AgAgGSAcKQIANwIAIBlBCGogHEEIaigCADYCACADQfgCaiAXEJICIAMoAvgCDQogDiAEIgJHDQALCyABQQA2AswEIAEoAtwFQQFHDQAgA0H4AmogIBCSAiADKAL4AkEBRw0AIANB8AJqIAhBCGooAgA2AgAgAyAIKQIANwPoAgwJCyABQQI2AswEIBcgA0EUakHUAvwKAAACQCABKAIwIgZBA0YNACAGQQJGDQAgCygCACIGQSFJDQAgASgCOCAGQQJ0QQQQiA8LIAFBAzYCMAsgASgCGEEBRg0BQQAMAgsgA0HwAmogCEEIaigCADYCACADIAgpAgA3A+gCDAYLIAEoAhwiBiABKAIgRwRAQQEhAiABIAZBAWo2AhwgASAGQQJ0aigCJCEBDAcLIAFBADYCGEEACyECDAULQQEhAiABIAVBAWo2AgQgFiAFQQJ0aigCACEBDAQLIAUgBEHQqcEAEIgLAAsgA0HwAmogCkEIaigCADYCACADIAopAgA3A+gCDAELIANB8AJq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IAEgBEEYaikDADcDmAEgASAEQRBqKQMANwOQASABIARBCGopAwA3A4gBIAEgBEEoaikDADcDqAEgASAEQTBqKQMANwOwASABIARBOGopAwA3A7gBIAEoAgwiAiABKAIERgRAIAFBBGpBiOzCABDICAsgASgCCCACQQZ0aiIDIAEpA4ABNwMAIANBIGogASkDoAE3AwAgA0EYaiABKQOYATcDACADQRBqIAEpA5ABNwMAIANBCGogASkDiAE3AwAgA0EoaiABKQOoATcDACADQTBqIAEpA7ABNwMAIANBOGogASkDuAE3AwAgASACQQFqNgIMIAEoAhgiAiABKAIQRgRAIA1BmOzCABC5CAsgASgCFCACQQJ0akEANgIAIAEgAkEBajYCGAJAIAEoAiQiAkUNACABKAIgIgMoAgBBAUcNACADQQA2AgQCQCACQQFGDQAgAygCCEUNACADQQE2AgwMBAtBqN3CAEEPQbjswgAQ1wsAC0Go3cIAQQ9BqOzCABDXCwALIAEgBCkDADcDgAEgASAEQRhqKQMANwOYASABIARBEGopAwA3A5ABIAEgBEEIaikDADcDiAEgASgCDCICIAEoAgRGBEAgAUEEakHY68IAEMgICyABKAIIIAJBBnRqIgMgASkDgAE3AwAgA0IANwMgIANBGGogASkDmAE3AwAgA0EQaiABKQOQATcDACADQQhqIAEpA4gBNwMAIANBKGpCADcDACADQTBqQgA3AwAgA0E4akIANwMAIAEgAkEBajYCDCABKAIYIgIgASgCEEYEQCANQejrwgAQuQgLIAEoAhQgAkECdGpBADYCACABIAJBAWo2AhgCQCABKAIkRQ0AIAEoAiAiAigCAEEBRw0AIAJBADYCBAwCC0Go3cIAQQ9B+OvCABDXCwALIAEoAgQgASgCDCICayAHSQRAIAFBBGogAiAHQcAAQcAAEOMGCyABKAIQIAEoAhgiAmsgB0kEQCABQRBqIAIgB0EEQQQQ4wYLQQAhBSABQQA2AhggASgCDCICIAEoAgRGBEAgAUEEakHI7MIAEMgIIAEoAhghBQsgASgCCCACQQZ0aiIDQgA3AwAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0EIakIANwMAIANBKGpCADcDACADQTBqQgA3AwAgA0E4akIANwMAIAEgAkEB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JCAAQQA2AhwgACANNgIYIAAgBjYCFCAAIAw2AhAgACAHNgIMIABBADYCCCAAQoCAgIDAADcCACAAIAmtIAKtQiCGhDcCMAsgBSADQQFqNgIACyAEQSBqJAAPCyAEQQA2AhggBEEBNgIMIARBzIvCADYCCCAEQgQ3AhAgBEEIakHUi8IAELgNAAvCEQIRfwJ+IwBB4AFrIgIkAAJAIAEoAgQiA0UEQCAAQYCAgIB4NgIADAELIAEgA0EBazYCBAJAAn8gASgCACIFKAIEIgFBB00EQCACQoHKADcDkAEgAkGQAWoQog0hBEEBDAELIAUgAUEIazYCBCAFIAUoAgAiAUEIajYCACACQRBqIAEpAAAQpwggAigCFCEEIAIoAhALQQFxBEAgBCEJDAELAkACQAJAAkACQAJAAkACQAJAAkAgBEUEQEHAACEJDAELQYCAASAEIARBgIABTxsiCUEGdCIDQcAAELMOIgFFDQEgAkEANgIkIAIgATYCICACIAk2AhwgAkGkAWohDANAIAJBAjYCbCACIAU2AmggAkGQAWoiDSACQegAaiIBEMADIAIoAqABIQkgAikDmAEgAikDkAEiE0IChYRQDQogAkHwAGoiC0EYaiIQIAxBGGoiBygCADYCACALQRBqIgggDEEQaiIDKQIANwMAIAtBCGoiDiAMQQhqIgspAgA3AwAgAiAMKQIANwNwIBOnQQFxRQ0DIA0gARDAAyACKAKgASEBIAIpA5gBIAIpA5ABIhNCAoWEUARAIAEhCQwLCyACQcABaiIGQRhqIg0gBygCADYCACAGQRBqIgcgAykCADcDACAGQQhqIgMgCykCADcDACACIAwpAgA3A8ABIBOnQQFxRQRAQQFB6LDBAEGEq8EAEL4KIQkMCwsgAkEoaiIPQRhqIgYgDSgCADYCACAPQRBqIgsgBykDADcDACAPQQhqIg0gAykDADcDACACQcgAaiIDQQhqIhIgDikDADcDACADQRBqIgcgCCkDADcDACADQRhqIgMgECgCADYCACACIAIpA8ABNwMoIAIgAikDcDcDSCACKAIkIg4gAigCHEYEQCACQRxqQcirwQAQyAgLIAIoAiAgDkEGdGoiCCACKQNINwIEIAggCTYCACAIIAE2AiAgCCACKQMoNwIkIAhBDGogEikDADcCACAIQRRqIAcpAwA3AgAg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OgA0DAcLIAAgHCkCCDcCACAAQTBqIBxBCGoiAUEwaikCADcCACAAQShqIAFBKGopAgA3AgAgAEEgaiABQSBqKQIANwIAIABBGGogAUEYaikCADcCACAAQRBqIAFBEGopAgA3AgAgAEEIaiABQQhqKQIANwIADAYLIAEgA2ohAyACIAVqIQUgAkUNACAHICBPDQAgHSAhIB0gIUobIQEgHSEEA0AgASAERg0BIBxBQGsgBCAHEIQCIQIgBEEBaiEEIAJFDQALCyAAQQU6ADQMBAsgACAcKQIINwIAIABBMGogHEEIaiIBQTBqKQIANwIAIABBKGogAUEoaikCADcCACAAQSBqIAFBIGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgAMAwtBvtLCAEEcQdzSwgAQ1gwAC0G+0sIAQRxB3NLCABDWDAALIABBBDoANAsgHEHgAGokAAuxEAITfwR9IwBBkAJrIgUkACABKAIIIRMgASgCBCEOIAVBADYCGCAFQQA2ApwBAkACQCATRQ0AAkACQAJAAkAgDigCPEH/////A3EEQCAFQRxqIQsgBUGcAWohFiABKAIsIRAgASgCMCEMIAEoAjghFyABKAI8IREgBUGEAmohDyAFQewBaiESQQQhDQJAA0AgDyAOIAdBBnRqIgEpAhA3AgAgD0EIaiIUIAFBGGooAgA2AgAgBUH4AWoiCEEIaiIGIAFBCGooAgA2AgAgBSABKQIANwP4ASAFQRBqIAggAiADQQEQygQgBSoCFCEYIAUoAhAhCSAUIAFBOGooAgA2AgAgDyABKQIwNwIAIAYgAUEoaigCADYCACAFIAEpAiA3A/gBIAVBCGogCCACIANBARDKBCABQSBqIQYCQCAFKgIMQ///f38gBSgCCEEBcRsiGiAYQ///f38gCUEBcRsiGF1FBEAgGiEZIBghGiAGIQkgASEGDAELIBghGSABIQkLAkACQAJAAkACQCADIBpeRQRAIAMgGV5FDQQgGUP//39/Ww0EIAkoAhxB/////wNxQQFHDQEMAgsCQCAaQ///f39bBEAMAQsgBigCDCEBIAYoAhxB/////wNxQQFHBEAgAyAZXkUEQCABIQcMBwsgGUP//39/WwRAIAEhBwwHC0EBIQYgCSgCHEH/////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cUVyIRULIBAgD5MgGpQgEV0NAiASQQhqIhQQpQwgFCETAkAgCUUNACAJLQAsRQRAIBJBgANqIhMgCUHMAGoQ+woMAQsgEkGYA2ogCUHIAGooAgA2AgAgEkGQA2ogCUFAaykCADcDACASQYgDaiAJQThqKQIANwMAIBJBpANqIAlBoAJqKAIANgIAIBJBsANqIAlBkAFqKAIANgIAIBJBvANqIAlBnAFqKAIANgIAIBIgCSkCMDcDgAMgEiAJKQKYAjcCnAMgEiAJKQKIATcDqAMgEiAJKQKUATcCtAMgEkGAA2ohEwsgEkHIAGoiCUE4aiATQThqKQIANwMAIAlBMGogE0EwaikCADcDACAJQShqIBNBKGopAgA3AwAgCUEgaiATQSBqKQIANwMAIAlBGGogE0EYaikCADcDACAJQRBqIBNBEGopAgA3AwAgCUEIaiATQQhqKQIANwMAIBIgEykCADcDSAJAIApFDQAgCi0ALEUEQCASQcADaiIUIApBzABqEPsKDAELIBJB2ANqIApByABqKAIANgIAIBJB0ANqIApBQGspAgA3AwAgEkHIA2ogCkE4aikCADcDACASQeQDaiAKQaACaigCADYCACASQfADaiAKQZABaigCADYCACASQfwDaiAKQZwBaigCADYCACASIAopAjA3A8ADIBIgCikCmAI3AtwDIBIgCikCiAE3A+gDIBIgCikClAE3AvQDIBJBwANqIRQLIBJBiAFqIglBOGogFEE4aikCADcDACAJQTBqIBRBMGopAgA3AwAgCUEoaiAUQShqKQIANwMAIAlBIGogFEEgaikCADcDACAJQRhqIBRBGGopAgA3AwAgCUEQaiAUQRBqKQIANwMAIAlBCGogFEEIaikCADcDACASIBQpAgA3A4gBIAtBAXEEQCASQcgAaiAMEKcKCyANQQFxBEAgEkGIAWogDhCnCgsgEkGIAmoiCUEIaiAHQRxB9AAgBygCEEEBcSING2oiCkEIaikCADcDACAJQRBqIApBEGopAgA3AwAgCUEYaiAKQRhqKAIANgIAIBIgCikCADcDiAIgEkHIAWoiFCASQcgAaiAJEMwCIBJByAJqIgpBCGogCEEcQfQAIAgoAhBBAXEiExtqIgtBCGopAgA3AwAgCkEQaiALQRBqKQIANwMAIApBGGogC0EYaigCADYCACAS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IANCgICAgMAANwLQASADQgA3AtgBIANCBDcC4AEgA0IANwLoASADQgQ3AvABIANCgICAgMAANwL4ASADQgA3AoACIANCBDcCiAIgAyADKQK4BTcCqAEgA0GoA2pCADcDACADQaADakIANwMAIANByANqQgA3AwAgA0EBOgCcAiAGQQtqQgA3AAAgBEELakIANwAAIAVBC2pCADcAACADQY0GaiIIQQtqQgA3AAAgA0H6BWoiB0ELakIANwAAIANCADcDmAMgA0IANwPAAyADQgA3ALsFIANCADcAkwUgA0IANwDnBSADQgA3AJAGIANCADcA/QUgA0GEBWpBADYCACADQgA3AvwEIANCADcDuAIgA0IANwOwAiADQf////sHNgKAAyADQoCAgIDw//+/fzcD+AIgA0L////7////v/8ANwPwAiADQv////sHNwPoAiADQoCAgIDw//+/fzcD4AIgA0L////7////v/8ANwPYAiADQv////sHNwPQAiADQoCAgIDw//+/fzcDyAIgA0L////7////v/8ANwPAAiADQoCAgICAgIDAPzcDqAIgA0IANwOgAiADQaACaiIJQewAakIANwIAIANCADcChAMgA0EAOgDYAyADQv////sHNwPQAyADQgA3A7gDIANCgICA/AM3A7ADIANBgICA/AM2ApQDIAlByAFqIAZBD2ooAAA2AAAgA0HhA2ogCykAADcAACADIAMpALgFNwDZAyADQQA6APQDIANC////+wc3AuwDIANBhARqIARBD2ooAAA2AAAgA0H9A2ogCikAADcAACADIAMpAJAFNwD1AyADQQA6AJAEIANC////+wc3A4gEIAlBgAJqIAVBD2ooAAA2AAAgA0GZBGogBUEIaikAADcAACADIAMpAOQFNwCRBCADQQA6AKwEIANC////+wc3AqQEIANBvARqIAhBD2ooAAA2AAAgA0G1BGogCEEIaikAADcAACADIAMpAI0GNwCtBCADQQA6AMgEIANC////+wc3A8AEIANB2ARqIAdBD2ooAAA2AAAgA0HRBGogB0EIaikAADcAACADIAMpAPoFNwDJBCADQQA6AIgFIANBADYC+AQgA0IANwPwBCADQYACOwHsBCADQQA2AugEIANBADoA5AQgA0L////7BzcC3AQgAygCCCEGIANBDGogAygCGCII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NgIgIAAgLzYCHCAAIBE4AhggACAgOAIUIAAgITgCECAAIBY4AgwgACAMOAIIIAAgCTgCBCAAIAo4AgAgACAiKQNgNwIkIABBLGogLSkDADcCACAAQTRqICMpAwA3AgAgAEE8aiApKAIANgIAIAYgJEEBaiIkNgKEAQsgAkEMaiECICdBBGohJyAsIANBAWoiA0cNAAsLAkAgBwRAIAYgFzgCkAEgBiAYOAKMASAGIBk4AogBIAYgASkCADcClAEgBkGcAWogAUEIaigCADYCAAwBCyAGIBc4ApwBIAYgGDgCmAEgBiAZOAKUASAGQYgBaiIAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIACwJAICRFDQAgJUUNACAGKAKAASIHICRBBnRqIScgJiAlQQZ0aiEoICZBJGohAyAmQUBrIQEgJUEBcSEpICVB////H3FBAUYhKgNAIAdBJGohAiAHKAIcIQYgJiEAAkAgKUUNACABIQAgBiAmKAIcRw0AIAcoAiAgJigCIEcNACACIAMpAgA3AgAgAkEYaiADQRhqKAIANgIAIAJBEGogA0EQaikCADcCACACQQhqIANBCGopAgA3AgALICpFBEAgAkEYaiEjIAJBEGohJCACQQhqISUDQAJAIAYgAEEcaigCAEcNACAHKAIgIABBIGooAgBHDQAgIyAAQTxqKAIANgIAICQgAEE0aikCADcCACAlIABBLGopAgA3AgAgAiAAQSRqKQIANwIACwJAIAYgAEHcAGooAgBHDQAgBygCICAAQeAAaigCAEcNACAjIABB/ABqKAIANgIAICQgAEH0AGopAgA3AgAgJSAAQewAaikCADcCACACIABB5ABqKQIANwIACyAoIABBgAFqIgBHDQALCyAnIAdBQGsiB0cNAAsLICsEQCAmICtBBnRBBBCIDwsgIkGAAWokAAvYDQIHfwN9IwBB4AFrIgskACALQTBqIAMgBCgCtAERAAAgCygCNCENIAsoAjAhDCALQShqIAYgBygCtAERAAACQAJAAkACQAJAIAwEQCALKAIoIhANAQsgC0EgaiADIAQoArgBEQAAIAsoAiAiDEUNASALQaABaiAMIAsoAiQgASACIAUgBiAHIAggCSAKEGEgCy0A2AEiAUEERwRAIAtB6ABqIAtB1AFqKAIANgIAIAtB4ABqIAtBzAFqKQIANwMAIAtB2ABqIAtBxAFqKQIANwMAIAtB0ABqIAtBvAFqKQIANwMAIAtByABqIAtBtAFqKQIANwMAIAtBQGsgC0GsAWopAgA3AwAgC0GSAWogC0HbAWotAAA6AAAgCyALKQKkATcDOCALIAsvANkBOwGQAQsgACALKQM4NwIAIAAgAToANCAAIAsvAZABOwA1IABBMGogC0E4aiIBQTBqKAIANgIAIABBKGogAUEoaikDADcCACAAQSBqIAFBIGopAwA3AgAgAEEYaiABQRhqKQMANwIAIABBEGogAUEQaikDADcCACAAQQhqIAFBCGopAwA3AgAgAEE3aiALQZIBai0AADoAAAwECyALKAIsIQ4gCgR/QQAFIAcoAqwBIQogBCgCrAEhDyAHKAKoASERIAMgBCgCqAERCwAgBiAREQsAkiEUIAMgDxELACESIAYgChELACITIBMgEiASIBNdGyASIBJcGyESQQELIQogCyASOAJ4IAsgFDgCdCALIAo2AnAgDkEYaigCACEKIA5BEGooAgAhDiANQRhqKAIAIQ8gDUEQaigCACENIAtBgAFqIAMgBCgChAERAAAgC0GQAWogBiAHKAKEAREAACALKgKMASALKgKcAWANASALQaABaiIKIAEgBSAQIA4gBiAHIAIgDCAPIAMgBCAIIAkgC0HwAGoQRyALLQDUASICQQRHBEAgC0E4aiIBQRhqIApBDGooAgA2AgAgAUEMaiAKQRhqKAIANgIAIAFBMGogCkEkaigCADYCACABQSRqIApBMGooAgA2AgAgCyALKQKkATcCSCALIAspArABNwI8IAsgCykCvAE3AmAgCyALKQLIATcCVCALIAsqAqABOAI4CyALIAI6AGwMAgsgC0EYaiAGIAcoArgBEQAAIAsoAhgiDARAIAtBoAFqIAwgCygCHCABIAUgAiADIAQgCCAJIAoQYSALLQDYASIBQQRHBEAgC0GYAWogC0GwAWooAgA2AgAgC0FAayALQbwBaigCADYCACALQfgAaiALQcgBaigCADYCACALQYgBaiALQdQBaigCADYCACALIAspAqgBNwOQASALIAspArQBNwM4IAsgCykCwAE3A3AgCyALKQLMATcDgAEgCyoCpAEhCQsgACAJOAIAIAAgCykDODcCBCAAIAspA5ABNwIQIAAgCykDgAE3Ahwg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nAEgAyAGQZwBahDGAxogBkHgAGogAxBCIAMoArwBQQNGDQMgDUEBayINRQ0FIA8hDiAGKgJgIhAgEJQgBioCZCIRIBGUkiAGKgJoIhIgEpSSIg9DAADIK14NAAsLIAAgBikDMDcCCCAAQQE2AgAgACAYIBSVOAIEIABBEGogCSgCADYCAAwECyAAQQA2AgAMAwsgDkMAAKC1Xw0BCyAAIAYpAzA3AgggACAYIBSVOAIEIABBEGogBkE4aigCADYCAEEBIQQLIAAgBDYCAAsgBkHAAWokAAv+CwMJfwx9An4jAEEQayIDJAACQCAAKAIgIgQgAU0NACAAKAIcIgcgAUEDdGoiASgCACECIAFBADYCACACRQ0AIAEoAgQhBSAAIAAoAiRBAWsiATYCJCABRQRAIABBADYCFCAAQQA2AggMAQsgBUEBcyEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBAk8EQCAAKAIUIgYgBUEBdiIBTQ0BIAAoAggiBSABTQ0CIAAoAhAiCiABQQJ0aigCACECIAMgACgCBCIJIAFBBnRqIgA2AgggAyAAQSBqNgIMIANBCGogCEEBcUECdGooAgAiACgCDCEBIAAoAhxB/////wNxQQFHDQQgASAETw0DIAcgAUEDdGoiASgCAEUNAyABIAI2AgQMCgsgACgCCCIGRQ0EIAMgACgCBCIBNgIIIAMgAUEgaiICNgIMIANBCGogCEECdGoiCSgCACgCHEH/////A3FBAUYEQCAFQQFxRQRAIAEgAikDADcDACABQQhqIAJBCGopAwA3AwAgAUEQaiACQRBqKQMANwMAIAFBGGogAkEYaikDADcDACABKAIsIgAgBE8NByAHIABBA3RqIgAoAgBBAUcNByAAQQA2AgQLIAJCADcDACACQRhqQgA3AwAgAkEQakIANwMAIAJBCGpCADcDAAwNCyADIAI2AgwgAyABNgIIIAkoAgAoAgwiAiAGTw0GIAFBGGogASACQQZ0aiICQRhqKQMANwMAIAFBCGogAkEIaikDADcDACABIAIpAwA3AwAgAUEQaiACQRBqKQMANwMAIAFBIGogAkEgaikDADcDACABQShqIAJBKGopAwA3AwAgAUEwaiACQTBqKQMANwMAIAFBOGogAkE4aikDADcDACABKAIMIQIgASgCHEH/////A3FBAUYEQCACIARPDQggByACQQN0aiICKAIARQ0IIAJBADYCBAwMCyAAKAIUIgYgAksNCiACIAZByO3CABCICwALIAEgBkH47cIAEIgLAAsgASAFQYjuwgAQiAsAC0Go3cIAQQ9BmO7CABDXCwALIAEgBkkNBCABIAZBqO7CABCICwALQQBBAEGI7cIAEIgLAAtBqN3CAEEPQZjtwgAQ1wsACyACIAZBqO3CABCICwALQajdwgBBD0G47cIAENcLAAsgCiABQQJ0aiACNgIACwJAAkAgAkEBdiIBIAVJBEAgAyAJIAFBBnRqIgQ2AgggAyAEQSBqNgIMIABBEGopAwAhFyADQQhqIAJBAXFBAnRqKAIAIgQgACkDADcDACAAQRhqKQMAIRggBEEIaiAAQQhqKQMANwMAIARBEGogFzcDACAEQRhqIBg3AwAgAkECSQ0FA0AgASAGTw0DIAogAUECdGooAgAiBEEBdiIAIAVPDQIgCSABQQZ0aiICKAI8IQcgAigCHCEIIAIqAjghCyACKgIYIQwgAioCNCENIAIqAhQhDiACKgIwIQ8gAioCECEQIAIqAighESACKgIIIRIgAioCJCETIAIqAgQhFCACKgIgIRUgAioCACEWIAMgCSAAQQZ0aiICNgIIIAMgAkEgajYCDCADQQhqIARBAXFBAnRqKAIAIgIgB0H/////A3EgCEH/////A3FqIAcgCHJBgICAgHxxcjYCHCACIAwgCyALIAxfGzgCGCACIA4gDSANIA5fGzgCFCACIBAgDyAPIBBfGzgCECACIAE2AgwgAiASIBEgESASYBs4AgggAiAUIBMgEyAUYBs4AgQgAiAWIBUgFSAWYBs4AgAgACEBIARBAk8NAAsMBQsgASAFQbjuwgAQiAsACyAAIAVB2O7CABCICwALIAEgBkHI7sIAEIgLAAsgACgCECACQQJ0akEANgIACyABKAIsIQIgASgCPEH/////A3FBAUYEQAJAIAIgBE8NACAHIAJBA3RqIgAoAgBFDQAgAEEBNgIEDAILQajdwgBBD0HY7cIAENcLAAsgAiAAKAIUIgFPBEAgAiABQejtwgAQiAsACyAAKAIQIAJBAnRqQQE2AgALIANBEGokAAuZCwIbfQJ/IwBBMGsiICQAAkACQCADKgIMIgcgB5QgAyoCECIGIAaUkiADKgIUIgogCpSSIghDAAAAAFsNACAIkSITiyIIQwAAgH9cBEAgCEMAAAA0Xw0BIAggCEMAAAA0lF8NAQsgCiATlSIVjCEPIAYgE5UiFowhCiAHIBOVIheMIQggAyoCCCEQIAMqAgQhESADKgIAIRJDAACAPyELQwAAAAAhByACQQA2ArwBIAJBADYCrAEgAkEANgIwIAJCADcCKCAVIBWUIBcgF5QgFiAWlJKSIgZDAAAAAF4EQCAPIAaRIgaVIQcgCiAGlSELIAggBpUhBQsgBSABKgIAIhqUIAsgASoCBCIblJIgByABKgIIIhyUkiAFIAEqAgwiHZQgCyABKgIQIh6UkiAHIAEqAhQiH5SSXiEDIAIgByABKgIYIhSUIBwgHyADG5IiDDgCJCACIAsgFJQgGyAeIAMbkiIHOAIgIAIgBSAUlCAaIB0gAxuSIgY4AhwgAiAMIBCTOAIYIAIgByARkzgCFCACIAYgEpM4AhAgICACEEJD//9/fyEFQeQAIQECQAJAA0AgICoCACIJIAmUICAqAgQiDSANlJIgICoCCCIOIA6UkiIGQwAAyCteRQ0BIA6MIAaRIguVIQwgDYwgC5UhByAJjCALlSEGAn0gBSALXyIhRQRAQwAAAAAhCUMAAIA/IQ1DAAAAACEFIAwgDJQgBiAGlCAHIAeUkpIiDkMAAAAAXgRAIAwgDpEiBZUhCSAHIAWVIQ0gBiAFlSEFCyAUIAmUIBwgHyAcIAmUIBsgDZQgGiAFlJKSIB8gCZQgHiANlCAdIAWUkpJeIgMbkiEZIBQgBZQgGiAdIAMbkiEJIBQgDZQgGyAeIAMbkgwBCyAYQwAAAABeDQIgECAOkiEZIBIgCZIhCSARIA2SCyENAkACQAJAIBUgDJQgFyAGlCAWIAeUkpIiDkMAAAAAWw0AIA6LIgVDAACAf1wEQCAFQwAAADRfDQEgBSAFQwAAADSUXw0BCyAGIAkgEpOUIAcgDSARk5SSIAwgGSAQk5SSIA6VIgVDAAAAAGBFDQAgDkMAAAAAXSAFQwAAAABecQ0BICFFDQJBACEDDAULQQAhAyAhDQQgDkMAAKA1Xg0EDAELIAQgGCAFkiIYIBOVXQRAQQAhAwwECyAQIBUgBZQiD5IhECARIBYgBZQiCpIhESASIBcgBZQiCJIhEkP//39/IQsCQCACKAK8ASIDQQFqIiFFDQAgAiACKgIQIAiTOAIQIAIgAioCFCAKkzgCFCACIAIqAhggD5M4AhggA0UNACACIAIqAjQgCJM4AjQgAiACKgI4IAqTOAI4IAIgAioCPCAPkzgCPCAhQQJGDQAgAiACKgJYIAiTOAJYIAIgAioCXCAKkzgCXCACIAIqAmAgD5M4AmAgIUEDRg0AIAIgAioCfCAIkzgCfCACIAIqAoABIAqTOAKAASACIAIqAoQBIA+TOAKEASAMIQ8gByEKIAYhCCAhQQRGDQFBBEEEQdCNwwAQiAsACyAMIQ8gByEKIAYhCAsgDCAZIBCTIgyUIAcgDSARkyIHlCAGIAkgEpMiBpSSkiIFvEH/////B3FB////+wdLBEBBrIvDAEEnQeiLwwAQ1gwAC0EAIQMgCyAFkiALQ70bjzqUXw0CICBBADYCLCAgQgA3AiQgICAZOAIgICAgDTgCHCAgIAk4AhggICAMOAIUICAgBzgCECAgIAY4AgwgAiAgQQxqEMYDGiAgIAIQQiACKAK8AUEDRwRAIAshBSABQQFrIgENAQwDCwsgBUMAAKC1Xw0BCyAAIA84AhAgACAKOAIMIAAgCDgCCCAAIBggE5U4AgRBASEDCyAAIAM2AgAMAQsgAEEANgIACyAgQTBqJAAL1w8DEX8BfQF+IwBB0ARrIgIkACAAKAIAKAIAIQkgACgCBCIHKAIAQQFGBEAgBygCBCIDQf//A3EhCyADQRB2IQxBASEDCyAJQSBJIQcgACgCCCIIKAIAQQFGBEAgCCkDCCIUQiCIpyEEIBSnIQZBASEFCyAJQQAgBxshDUEBIQgCQCAAKAIMIgkoAgBBAUcEQEEAIQgMAQsgCSkDCCIUQiCIpyEOIBSnIQ8LIAJBGGoiB0EIaiIJIAAoAhAoAgAiCkEIaigCADYCACACQSxqIAAoAhQoAgAiEEEIaigCADYCACACIAopAgA3AxggAiAQKQIANwIkIAAoAhghECAAKAIkKAIAIREgACgCKCgCACESIAAoAiAoAgAhCiACIAAoAhwoAgA2AmwgAkGo0MEANgJgIAIgATYCXCACIA02AlggAiAONgJUIAIgDzYCUCACIAg2AkwgAiAENgJIIAIgBjYCRCACIAU2AkAgAiALNgI8IAIgDDYCOCACIAM2AjQgCigCPCEDIAooAkAhASACIBI2AnQgAiARNgJwIAIgATYCaCACIAMgASgCCEEBa0F4cWpBCGo2AmQgAkH4AGohASAAKAIsKgIAIRMgACgCMC0AACELQQAhA0EAIQYjAEHQAGsiACQAIAJBNGoiDCgCOCEEIABBGGoiCCIFQRBqIg0gB0EQaiIOKQIANwMAIAVBCGoiDyAJKQIANwMAIAAgEzgCMCAAIAcpAgA3AxgCf0EAIAQoAghFDQAaIABBzABqIhEgBCgCBCIDQRhqKAIANgIAIAAgAykCEDcCRCAAQThqIgpBCGogA0EIaigCADYCACAAIAMpAgA3AzggAEEQaiAKIAggE0EBEMoEIANBACAAKAIQQQFGGyEGQQAgAygCPEH/////A3FFDQAaIBEgA0E4aigCADYCACAAQUBrIANBKGooAgA2AgAgACADKQIwNwJEIAAgAykCIDcDOCAAQQhqIAogCCATQQEQygQgA0EgaiEDIAAoAghBAUYLIQUgASAAKQMYNwKQASABQagBaiAAQTBqKAIANgIAIAFBoAFqIA0pAwA3AgAgAUGYAWogDykDADcCACABIAw2AqwBIAEgBjYCjAEgASAENgKIASABIAU2AoQBIAEgAzYCBCABQQA2AgAgASALOgDMASABIBM4AsgBIAEgBykCADcCsAEgAUG4AWogCSkCADcCACABQcABaiAOKQIANwIAIABB0ABqJAAgAkHIAmoiACABQdAB/AoAACACQbQEaiEHIABBsAFqIQsgAkG8BGohCCACQdgDaiEKIABBBGohASAAQYQBaiEJAkACQAJAAkADQCACKALUAyIARQRAIAEhBCAJIQMgAigCzAMiBSIAQSFPBEAgAigC0AIhBCABIQMgAigCzAIhAAsgAEUNAiADIABBAWsiADYCACAEIABBAnRqKAIAIQALIAJBADYC1AMgACgCHEH/////A3FBAUcEQCAAKAIMIgAgAigC0AMiAygCCCIETw0EIAggAygCBCAAQQZ0aiIAKQIQNwIAIAhBCGoiAyAAQRhqKAIANgIAIAJBsARqIgRBCGoiBSAAQQhqKAIANgIAIAIgACkCADcDsAQgAkEQaiAEIAogAioC8ANBARDKBCAAQSBqIQYgAigCEEEBRgRAIAIgADYC1AMLIAggACkCMDcCACADIABBOGooAgA2AgAgBSAGQQhqKAIANgIAIAIgBikCADcDsAQgAkEIaiAC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BEAgDCALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgghLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAgwhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhAhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhghLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAhwhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAiAhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAiQhLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAoqAighLiAQKAIIIAtrQQNNBEAgEEEIaiALQQRBAUEBEOIGIBAoAhAhCwsgECgCDCALaiAuOAAAIBAgC0EEaiILNgIQIAo1AiwhKyAQKAIIIAtrQQdNBEAgEEEIaiALQQhBAUEBEOIGIBAoAhAhCwsgECgCDCALaiArNwAAIBAgC0EIaiILNgIQIAo1AjAhKyAQKAIIIAtrQQdNBEAgEEEIaiALQQhBAUEBEOIGIBAoAhAhCwsgECgCDCALaiArNwAAIBAgC0EIaiILNgIQIAo1AjQhKyAQKAIIIAtrQQdNBEAgEEEI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IApBADYChAELIAxB4ABqJAALrQwDDn8DfQF+IwBBsANrIgIkACAAKAIAKAIAIQMgACgCBCIGKAIAQQFGBEAgBigCBCIGQf//A3EhBEEBIQkgBkEQdiEFCyADQSBJIQdBACEGIAAoAggiCigCAEEBRgRAIAopAwgiE0IgiKchCCATpyELQQEhBgsgA0EAIAcbIQpBASEDAkAgACgCDCIHKAIAQQFHBEBBACEDDAELIAcpAwgiE0IgiKchDCATpyENCyAAKAIYKAIAIQ4gACgCHCgCACEPIAAoAhQoAgAhByACIAAoAhAoAgA2AkAgAkGI0cEANgI0IAIgATYCMCACIAo2AiwgAiAMNgIoIAIgDTYCJCACIAM2AiAgAiAINgIcIAIgCzYCGCACIAY2AhQgAiAENgIQIAIgBTYCDCACIAk2AgggBygCPCEEIAcoAkAhASACIA82AkggAiAONgJEIAIgATYCPCACIAQgASgCCEEBa0F4cWpBCGo2AjggACgCICEHIAJB+AFqIgFBCGogACgCJCgCACIAQQhqKAIANgIAIAIgACkCADcD+AEgAkHMAGohA0EAIQZBACEAQQAhBSABKgIIIRAgASoCBCERIAEqAgAhEgJAIAJBCGoiCSgCOCIIKAIIRQ0AAn9BACASIAgoAgQiBCoCAF0NABpBACASIAQqAhBeDQAaQQAgESAEKgIEXQ0AGkEAIBEgBCoCFF4NABpBAEEAIAQgECAEKgIYXhsgECAEKgIIXRsLIQAgBCgCPEH/////A3FFDQAgBCoCICASXg0AIAQqAjAgEl0NACAEKgIkIBFeDQAgBCoCNCARXQ0AIARBIGohBSAQIAQqAjheRSAQIAQqAihdQX9zcSEGCyADIAk2ApwBIAMgEDgCmAEgAyAROAKUASADIBI4ApABIAMgADYCjAEgAyAINgKIASADIAY2AoQBIAMgBTYCBCADQQA2AgAgAyABKQIANwKgASADQagBaiABQQhqKAIANgIAIAEgA0GsAfwKAAAgAkGYA2ohCSACQfwBaiEBIAJB/AJqIQYCQAJAAkADQCACKAKEAyIARQRAIAEhAyAGIQQgAigC/AIiBSIAQSFPBEAgAigCgAIhAyABIQQgAigC/AEhAAsgAEUNAyAEIABBAWsiADYCACADIABBAnRqKAIAIQALIAJBADYChAMgACgC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AEEANgIIIABCgYCAgBA3AgAgACAGKQM4NwIMIABBFGogBkFAaykDADcCACAAQRxqIAZByABqKQMANwIAIABBJGogBkHQAGopAwA3AgAgAEEsaiAGQdgAaikDADcCACAAQTRqIAZB4ABqKQMANwIAIABBPGogBkHoAGooAgA2AgAgAEEIaiECCyAGQYACaiQAIAIPCxCbDwsACxCcDwALQQRBwABBkMTEACgCACIAQcwIIAAbEQAAAAvNCQIKfwF+IwAiAiEJIAJBQGpBQHEiBCQAAkAgACgCCCIDRQRAIABBADYCFEEAIQMMAQsgACgCBCIFKAIcIQcCQAJAAkACQAJAIAUoAjxB/////wNxIAdB/////wNxakECTQRAIABBADYCFCABQQA2AgggBCAFQThqKQMANwM4IAQgBUEwaikDADcDMCAEIAVBKGopAwA3AyggBCAFQSBqKQMANwMgIAQgBUEYaikDADcDGCAEIAVBEGopAwA3AxAgBCAFQQhqKQMANwMIIAQgBSkDADcDACABKAIARQRAIAFB+OnCABDICAsgAEEMaiEGIAEoAgQiAiAEKQMANwMAIAJBCGogBCkDCDcDACACQRBqIAQpAxA3AwAgAkEYaiAEKQMYNwMAIAJBIGogBCkDIDcDACACQShqIAQpAyg3AwAgAkEwaiAEKQMwNwMAIAJBOGogBCkDODcDACACIAIoAhwiCEH/////B0H/////AyAIQf////97SxtxNgIcIAIoAjwiBEH/////A3EiCA0BDAULIAMgASgCCCIGSwRAIAEoAgAgBiICayADIAJrIghJBEAgASACIAhBwABBwAAQ4wYgASgCCCECCyABKAIEIgogAkEGdGohByAIQQJJBH8gAgUgAyAGQX9zakEGdCILBEAgB0EAIAv8CwALIAogAiADaiAGa0EGdGpBQGohByACIAhqQQFrCyEIIAdCADcDACAHQThqQgA3AwAgB0EwakIANwMAIAdBKGpCADcDACAHQSBqQgA3AwAgB0EYakIANwMAIAdBEGpCADcDACAHQQhqQgA3AwAgBSgCHCEHIAhBAWohAwsgAEEYaiEGIAEgAzYCCCAEQQE2AgAgBSgCLCEDAkAgB0H/////A3FBAUYEQCABKAIEIgJBGGogBUEYaikDADcDACACIAUpAwA3AwAgAkEIaiAFQQhq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OGogBEE4aikCADcDACADQUBrIARBQGspAgA3AwAgA0HIAGogBEHIAGopAgA3AwAgAyADKQJUNwMAIAMgAykCfDcDKCADQQI2AlwgBEEMaiINIANB0AD8CgAAIANBAjYC2AEgA0ECNgKwASAAKAIcIgdBNWohCiAHQQRqIQUgA0GIAWohDiADQagCaiIBQTVqIQsgAUEEaiEGIAAoAhghDCAAKAIUIQ8gACgCECEQIAAoAgwhESAAKAIIIRIgACgCBCETIAMoAogBIQQgA0GAAmoiAEEgaiEUIABBGGohFSAAQRBqIRZBACECA0AgDSACQShsaiIAKAIAIgFBAkYNASACQQFqIQgCQCABQQFxBEAgCCECDAELQQIhAiAIQQJGDQIgBEECRg0CIA4hACAEIgFBAXFFDQILIAFBAXFFDQEgFCAAQSRqKAIANgIAIBUgAEEcaikCADcDACAWIABBFGopAgA3AwAgA0GAAmoiAUEIaiAAQQxqKQIANwMAIAMgACkCBDcDgAIgA0HgAmoiAEEIaiAMQQhqKAIANgIAIAMgDCkCADcD4AIgA0GoAmogEyASIBEgAUGw9sIAIBAgDyAAEEMgAy0A3AIiAUEFRgRAQQEhCQwCCyADQfACaiIAQQhqIgggBkEIaikCADcDACAAQRBqIhcgBkEQaikCADcDACAAQRhqIhggBkEYaikCADcDACAAQSBqIhkgBkEgaikCADcDACAAQShqIgAgBkEoaikCADcDACADQe4CaiIaIAtBAmotAAA6AAAgAyAGKQIANwPwAiADIAsvAAA7AewCAkAgAUEERg0AQ///f38hGyAHLQA0QQRHBH0gByoCAAVD//9/fwsgAyoCqAIiG15FDQAgByAbOAIAIAUgAykD8AI3AgAgByABOgA0IAogAy8B7AI7AAAgBUEIaiAIKQMANwIAIAVBEGogFykDADcCACAFQRhqIBgpAwA3AgAgBUEgaiAZKQMANwIAIAVBKGogACkDADcCACAKQQJqIBotAAA6AAALIAJBAkcNAAsLIANBoANqJAAgCQvPBwISfwN9AkAgASgCAEEBRgRAIAEoAgghDCABKAIcIQUgASgCDCEGIAEoAiQhAiABKAIoIQQgASgCBCEHAkACQCABAn8CQAJAIAECfwJAAkACQCABKAJUIg0EQCABQfgAaiEOIAFBEGoh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GEECRg0EIAUoApwBIgBBIUkNBCAFKAIgIABBAnRBBBCIDwwECyACQcEAQejbwwAQiAsACyAFQYwHaiAFQRhqEHkgBSgCjAcNAAsLQQAhBiAFKAIYQQJGDQAgBSgCnAEiAEEhSQ0AIAUoAiAgAEECdEEEEIgPCyAFQeAHaiQAIAYLqAcCCn8EfSMAQSBrIgskACABKAKUAiEMAn0gACoCEEPbD8lAlCIVIAAqAgAiFiAVlCAAKgIUIhcgF5KSlSEYQwAAAAAgFiAYlCIWQwAAAABbDQAaQwAAgD8gFpVDAACAv5IiFSAVlCAXIBcgFUMAAIA/kkMAAIBAlJSUlQshFQJAAkACQAJAIAcoAgwiDSAMQQF0Ig4gBigCACIAak8EQCADKgIEIRcgAyoCACEWIAIoApQDIAAgBWpqIRIgBygCBCEPIA4EQCAPIABBAnRqIgAgDkECdGohAyAOIQIgACEHA0AgDUECdCITIAdqIhQgACAAIANGIhAbIhFBADYCACARQQRqIhEgACATaiADIBAbIgNGIQAgFCAHIBAbIgcgE2oiECARIAAbIhRBADYCACAQIAcgABshByARIBNqIAMgABshAyAUIAJBAkdBAnRqIQAgAkECayICDQALCyANQQFGIgAgEkEAR3ENASASQQAgDUEBRyICGyIDIA1PDQEgDyADQQJ0akGAgID8AzYCACAAIAwgEmoiA0EAR3ENAiADQQAgAhsiACANTw0CIA8gAEECdGoiB0GAgID8AzYCACAGKAIAIgMgDGoiACAMaiANSw0EIAFB3ABqIA8gAEECdGogDBDZASAKKAIAIgIgCUkNAyACIAlBuJzCABCICwALDAMLIAtBADYCGCALQQE2AgwgC0HM/sEANgIIIAtCBDcCECALQQhqQZicwgAQuA0ACyALQQA2AhggC0EBNgIMIAtBzP7BADYCCCALQgQ3AhAgC0EIakGonMIAELgNAAsgCCACQcgAbGoiAEEAOwFEIABBADYCQCAAIBU4AjwgAEEANgI4IABD//9/f0MAAAAAIAQgF14bOAIsIABD//9//0MAAACAIAQgFl0bOAIoIABC/////w83AiAgACADNgIcIAAgDDYCGCAAQgA3AhAgACABKAKYAjYCDCAAQX82AgggACAFNgIEIABBATYCACAAQwAAAABDAACAPyAHKgIAIhWVIBWLQwjlPB5fGzgCMCAAQwAAAABDAAAAACAEIBeTIhUgFUMAAAAAXRsgFSAVXBtDAAAAAEMAAAAAIBYgBJMiBCAEQwAAAABdGyAEIARcG5MgGJRDAAAAAJI4AjQgBiADIA5qNgIAIAogAkEBajYCACALQSBqJAAPCyALQQA2AhggC0EBNgIMIAtBkPvBADYCCCALQgQ3AhAgC0EIakGY+8EAELgNAAu4CAIQfw19IwBBsAJrIgMkACADIAE2AhwgA0EgaiIBQSBqIAJBIGooAgA2AgAgAUEYaiACQRhqKQIANwMAIAFBEGogAkEQaikCADcDACABQQhqIAJBCGopAgA3AwAgAyACKQIANwMgIANB4ABqIAIgACgCACIFEMwDIAAoAgQiBioCACIZQwAAAABgBEAgAyoCZCEaIAMqAmAhGyADKgJ8IRcgAyoCeCEYIAMqAnAhHCADKgJsIR0gAyADKgKAASIVIBUgAyoCdCIWIBYgAyoCaCITIBMgFl0iARsgEyATXBsiFCAUIBVdGyAUIBRcGyAZkiIeOAJcIAMgFyAXIBwgHCAaIBogHF0iAhsgGiAaXBsiFCAUIBddGyAUIBRcGyAZkiIfOAJYIAMgGCAYIB0gHSAbIBsgHV0iBBsgGyAbXBsiFCAUIBhdGyAUIBRcGyAZkiIUOAJUIAMgEyATIBYgARsgFiAWXBsiEyATIBUgEyAVXRsgFSAVXBsgGZMiFTgCUCADIBogGiAcIAIbIBwgHFwbIhMgEyAXIBMgF10bIBcgF1wbIBmTIhY4AkwgAyAbIBsgHSAEGyAdIB1cGyITIBMgGCATIBhdGyAYIBhcGyAZkyITOAJIAn9BACAAKAI0IgQoAghFDQAaIAQoAgQiAUEAIAEqAhggFWAbQQAgASoCFCAWYBtBACABKgIQIBNgG0EAIAEqAgggHl8bQQAgASoCBCAfXxtBACABKgIAIBRfGyEHQQAgASgCPEH/////A3FFDQAaIAFBIGohCCABKgIgIBRfIAEqAiQgH19xIAEqAiggHl9xIAEqAjAgE2BxIAEqAjQgFmBxIAEqAjggFWBxCyECIAAoAjAhCSAAKAIsIQogACgCKCELIAAoAiQhDCAAKAIgIQ0gACgCHCEOIAAoAhghDyAAKAIUIRAgACgCECERIAAoAgwhASAAKAIIIRIgAyAHNgLwASADIAQ2AugBIAMgAjYC5AEgAyAINgJkIANBADYCYCADIANByABqNgLsASADQRBqIANB4ABqEOIDIAMoAhBBAXEEQCADKAIUIQAgASgCDCEBA0AgAyAANgL0ASADIAk2AqwCIAMgBjYCqAIgAyAFNgKgAiADIAo2ApwCIAMgCzYCmAIgAyAMNgKUAiADIA02ApACIAMgDjYCjAIgAyAPNgKIAiADIBA2AoQCIAMgETYC+AEgAyADQSBqNgKkAiADIANB9AFqNgKAAiADIANBHGo2AvwBIBIgACADQfgBakGc9MIAIAERAgAgA0EIaiADQeAAahDiAyADKAIMIQAgAygCCEEBcQ0ACwsgAygC5AEiAEEhTwRAIAMoAmggAEECdEEEEIgPCyADQbACaiQADwsgA0EANgJwIANBATYCZCADQYDawgA2AmAgA0IENwJoIANB4ABqQYjawgAQuA0AC4gHAgp/CX0jAEEgayIEJAACQAJAAkACQAJAAkAgAiABKAIMIgZBAWtPDQAgAyABKAIQIghBAWtPDQAgASgCICIFIAJNDQIgAyABKAIkTw0CIAEoAhggAyAFbGogAmotAAAiBUEGcUEGRgRAIABBADYCKCAAQQA2AgAMAgsgAiAGTw0DIAMgCE8NAyACQQFqIgkgBk8NBCADQQFqIgogCE8NBSAJQQJ0IgsgASgCBCIMIAYgCmxBAnRqIgdqKgIAIAEqAiwiEJQhFCAHIAJBAnQiDWoqAgAgEJQhFSAFQQJxIQdDAACAPyAIs0MAAIC/kpUiDiAKs5RDAAAAv5IgASoCKCIWlCERQwAAgD8gBrNDAACAv5KVIg8gCbOUQwAAAL+SIAEqAjAiE5QhEiAPIAKzlEMAAAC/kiATlCEPIA0gDCADIAZsQQJ0aiIBaioCACAQlCETIA4gA7OUQwAAAL+SIBaUIQ4gASALaioCACAQlCEQIAVBAXEEQEEAIQFBACECIAdFIQIgACAPOAJMIAAgFTgCSCAAIBE4AkQgACASOAJAIAAgFDgCPCAAIBE4AjggACAPOAI0IAAgEzgCMCAAIA44AiwgACAFQQRxRTYCKCAAIBI4AiQgACAUOAIgIAAgETgCHCAAIBI4AhggACAQOAIUIAAgDjgCECAAIA84AgwgACATOAIIIAAgDjgCBCAAIAI2AgAMAgtBACEBQQAhAiAHRSECIAAgDzgCTCAAIBU4AkggACAROAJEIAAgEjgCQCAAIBQ4AjwgACAROAI4IAAgEjgCNCAAIBA4AjAgACAOOAIsIAAgBUEEcUU2AiggACAPOAIkIAAgFTgCICAAIBE4AhwgACASOAIYIAAgEDgCFCAAIA44AhAgACAPOAIMIAAgEzgCCCAAIA44AgQgACACNgIADAELIABBADYCKCAAQQA2AgALIARBIGokAA8LIARBADYCGCAEQQE2AgwgBEGU1sIANgIIIARCBDcCECAEQQhqQeTCwwAQuA0ACyAEQQA2AhggBEEBNgIMIARBlNbCADYCCCAEQgQ3AhAgBEEIakH0wsMAELgNAAsgBEEANgIYIARBATYCDCAEQZTWwgA2AgggBEIENwIQIARBCGpBhMPDABC4DQALIARBADYCGCAEQQE2AgwgBEGU1sIANgIIIARCBDcCECAEQQhqQZTDwwAQuA0AC9cGAgJ/GH0jAEFAaiIJJAACQCAAKAIAIgogCBCPA0UNACAAKAIEIgggASACELcMIQEgCCADIAQQtwwhAiABRQ0AIAJFDQBBDCEDAn0CQAJAIAUtALwCDQAgAS0A5gJBAUcNACACLQDmAkEBRw0AIAEtAOUCQQFHBEAgAS0A1AJBAUcNAgtBCCEDIAItAOUCQQFGDQAgAi0A1AJBAUcNAQsgACADaigCACIAKgIMIQ4gACoCBCEPIAAqAgAhFCAAKgIIDAELQwAAgD8hDkMAAIA/IQ9DAACAPyEUQwAAgD8LIRAgAkHIAGoiACoCACEdIAFByABqIgMqAgAhHiACKgJAIR8gAioCRCEgIAIqAjwhFSAFKgKEASEWIAIqAjAhESACKgI0IRIgBSoCjAEhFyACKgI4IRMgBSoCiAEhGCABKgJAISEgASoCRCEiIAEqAjwhGSAFKgJoIRogASoCMCELIAEqAjQhDCAFKgJwIRsgASoCOCENIAUqAmwhHCAJQQhqIgRBCGogAygCADYCACAJIAEpAkA3AwggCUEwaiIBQQhqIAAoAgA2AgAgBiAUIAYqAgCUOAIAIAcgFCAHKgIAlDgCACAGIA8gBioCBJQ4AgQgByAPIAcqAgSUOAIEIAYgECAGKgIIlDgCCCAHIBAgByoCCJQ4AgggBiAOIAYqAgyUOAIMIAcgDiAHKgIMlDgCDCAJIAIpAkA3AzAgCSAeIBsgGSAcIAuUIBogDJSTIg4gDpIiDpQgCyAaIA2UIBsgC5STIhAgEJIiEJQgDCAbIAyUIBwgDZSTIg8gD5IiD5STkpKSOAIgIAkgIiAcIBkgEJQgDSAPlCALIA6Uk5KSkjgCHCAJICEgGiAZIA+UIAwgDpQgDSAQlJOSkpI4AhggCiAEIAlBGGoiACAGEM0DIAkgHSAXIBUgGCARlCAWIBKUkyILIAuSIguUIBEgFiATlCAXIBGUkyIMIAySIgyUIBIgFyASlCAYIBOUkyINIA2SIg2Uk5KSkjgCLCAJICAgGCAVIAyUIBMgDZQgESALlJOSkpI4AiggCSAfIBYgFSANlCASIAuUIBMgDJSTkpKSOAIkIAogACAJQSRqIgAgBxDNAyAKIAAgASAGEM0DCyAJQUBrJAALnAYCGH0BfiAAKgJkIAYqAgAiDCACKgIAIhGUIAYqAgQiDSACQQRqKgIAIhKUkiAGKgIIIg4gAkEIaioCACILlJIgBioCDCIPIAAqAgyUIAYqAhAiFCAAKgIQlJIgBioCFCIVIAAqAhSUkpIgByoCACIWIBGUIAcqAgQiFyASlJIgByoCCCIYIAuUkpMgByoCDCIZIAAqAiSUIAcqAhAiGiAAKgIolJIgByoCFCIbIAAqAiyUkpKSIQggACoCYCABKgIAIhwgDJQgAUEEaioCACIdIA2UkiABQQhqKgIAIh4gDpSSIA8gACoCAJQgFCAAKgIElJIgFSAAKgIIlJKSIBwgFpQgHSAXlJIgHiAYlJKTIBkgACoCGJQgGiAAKgIclJIgGyAAKgIglJKSkiIJIAmUIQogACoCiAEgCSAIlJQgCiAAKgKAAZQgACoChAEgCCAIlCITlJKSIRAgACkCcCIgQiCIp74iHyAIIAogE5JDAAAAAEMAAIA/IBCVIBCLQwjlPB5dG5QiCpSTIQggBSAgp74iECAJIAqUkyIJIAmUIAggCJSSkSITlSEKIAAgCSAKlLytIAggCpS8rUIghoQgCbytIAi8rUIghoQgBSATXRsiIDcCcCAGIBUgACoCOCAgp74gEJMiCJQgACoCRCAgQiCIp74gH5MiBZSSkjgCFCAGIBQgACoCNCAIlCAAKgJAIAWUkpI4AhAgBiAPIAAqAjAgCJQgACoCPCAFlJKSOAIMIAYgDiADKgIIIB4gCJQiCSALIAWUkpSSOAIIIAYgDSADKgIEIB0gCJQiDSASIAWUkpSSOAIEIAYgDCADKgIAIBwgCJQiDCARIAWUkpSSOAIAIAQqAgAhDiAEKgIEIQ8gByAYIAQqAgggCyAFjCILlCAJk5SSOAIIIAcgFyAPIBIgC5QgDZOUkjgCBCAHIBYgDiARIAuUIAyTlJI4AgAgByAZIAggACoCSJQgBSAAKgJUlJKSOAIMIAcgGiAIIAAqAkyUIAUgACoCWJSSkjgCECAHIBsgCCAAKgJQlCAFIAAqAlyUkpI4AhQL7AUCBH8IfSMAQSBrIgkkAAJAAkACQAJAIAAoAgBBAWsOAgECAAsgBSoCACAAKgIElCAFKgIEIAAqAgiUkiAFKgIIIAAqAgyUkiAAKgIQIAYqAgCUIAAqAhQgBioCBJSSIAAqAhggBioCCJSSkiENDAELAn0CQCAEIAEgAmpPBEAgACgCBCIKIAJqIAhLDQQgAkEISQRAQQAhCEMAAAAADAMLIAMgAUECdGohCyAHIApBAnRqIQwgAkF4cSEIQQAhBSACIQQDQCAUIAUgC2oiACoCACAFIAxqIgYqAgCUkiEUIA0gAEEcaioCACAGQRxqKgIAlJIhDSAOIABBGGoqAgAgBkEYaioCAJSSIQ4gDyAAQRRqKgIAIAZBFGoqAgCUkiEPIBAgAEEQaioCACAGQRBqKgIAlJIhECARIABBDGoqAgAgBkEMaioCAJSSIREgEiAAQQhqKgIAIAZBCGoqAgCUkiESIBMgAEEEaioCACAGQQRqKgIAlJIhEyAFQSBqIQUgBEEIayIEQQdLDQALDAELDAMLIBEgDZIgEiAOkiATIA+SIBQgEJJDAAAAAJKSkpILIQ0gAiAITQ0AAkAgAkEDcSIERQRAIAghBQwBCyADIAhBAnQiBSABQQJ0amohACAHIAUgCkECdGpqIQYgCCEFA0AgBUEBaiEFIA0gACoCACAGKgIAlJIhDSAAQQRqIQAgBkEEaiEGIARBAWsiBA0ACwsgCCACa0F8Sw0AIAMgAUECdCAFQQJ0IgFqaiEAIAcgASAKQQJ0amohBiACIAVrIQUDQCANIAAqAgAgBioCAJSSIABBBGoqAgAgBkEEaioCAJSSIABBCGoqAgAgBkEIaioCAJSSIABBDGoqAgAgBkEMaioCAJSSIQ0gAEEQaiEAIAZBEGohBiAFQQRrIgUNAAsLIAlBIGokACANDwsgCUEANgIYIAlBATYCDCAJQZD7wQA2AgggCUIENwIQIAlBCGpBmPvBABC4DQAL5BECJX0JfyMAQeAAayIrJAAgK0E8aiEyIAQhLiMAQSBrIjEkAAJAIAMiLQRAIAIqAghEAAAAAAAA8D8gLbijtiIGlCEHIAIqAgQgBpQhCCACKgIAIAaUIQkCQCAtQQFGDQAgAkEMaiEDAkAgLUEMbCIwQRhrIi9BDG5BAXEEQCADISwgAiEDDAELIAJBGGohLCAHIAIqAhQgBpSSIQcgCCACKgIQIAaUkiEIIAkgAioCDCAGlJIhCQsgL0EMSQ0AIAIgMGohLwNAIAcgAyoCFCAGlJIgLEEUaioCACAGlJIhByAIIAMqAhAgBpSSICxBEGoqAgAgBpSSIQggCSAsKgIAIAaUkiAsQQxqIgMqAgAgBpSSIQkgLyAsQRhqIixHDQALCwJAAkACQAJAIAVFBEAMAQsgLiAFQQxsaiEDIAdDAACAPpQhFyAIQwAAgD6UIRggCUMAAIA+lCEZA0AgLigCACIvIC1PDQIgLkEEaigCACIzIC1PDQMgLkEIaigCACIsIC1PDQQgDiACICxBDGxqIjAqAgAiGyAJkyACIC9BDGxqIi8qAgQiGiAIkyIcIAIgM0EMbGoiLCoCCCIdIAeTIg2UIC8qAggiHiAHkyIfICwqAgQiICAIkyIGlJOUIC8qAgAiISAJkyAGIDAqAggiCiAHkyIOlCANIDAqAgQiFSAIkyINlJOUICwqAgAiBiAJkyAcIA6UIB8gDZSTlJOSQwAAwECVIg2SIQ4gCyANIBcgHkMAAIA+lJIgHUMAAIA+lJIgCkMAAIA+lJKUkiELIAwgDSAYIBpDAACAPpSSICBDAACAPpSSIBVDAACAPpSSlJIhDCAWIA0gGSAhQwAAgD6UkiAGQwAAgD6UkiAbQwAAgD6UkpSSIRYgAyAuQQxqIi5HDQALIA5DAAAAAFsNACALIA6VIQcgDCAOlSEIIBYgDpUhCQsgMiAHOAIMIDIgCDgCCCAyIAk4AgQgMiAOOAIAIDFBIGokAAwECyAvIC1BzNvCABCICwALIDMgLUHc28IAEIgLAAsgLCAtQezbwgAQiAsACyAxQQA2AhggMUEBNgIMIDFBgPzDADYCCCAxQgQ3AhAgMUEIakGI/MMAELgNAAsgK0EQaiAyQQxqKAIANgIAICsgKykCQDcDCAJAAkACQCArKgI8IhZDAAAAAFwEQAJAIAUEQCAEIAVBDGxqIQMgKyoCECEXICsqAgwhGCArKgIIIRkDQCAEKAIAIiwgLU8NBSAEQQRqKAIAIi4gLU8NBiAEQQhqKAIAIgUgLU8NAiACIAVBDGxqIjAqAgAiBiEbIAIgLkEMbGoiLyoCBCEaIC8qAgghHCAwKgIIIR4gMCoCBCIKIR8gAiAsQQxsaiIuKgIAIhUhICAuKgIEIg0hDiAuKgIIISEgK0EYaiIsIAYgK0EIaiIFKgIAIgaTIg8gD5QgLyoCACIdIAaTIhAgD5QgFSAGkyIRIA+UIBAgEJQgESAQlCARIBGUIAYgBpMiEiASlCASIBGUkpIgEiAQlJKSkiASIA+UkpKSkiIVIAogBSoCBCIGkyITIBOUIBogBpMiFCATlCANIAaTIgcgE5QgFCAUlCAHIBSUIAcgB5QgBiAGkyIIIAiUIAggB5SSkiAIIBSUkpKSIAggE5SSkpKSIg2SQ83MzD2UOAIgICwgFSAwKgIIIAUqAggiBpMiCSAJlCAvKgIIIAaTIgsgCZQgLioCCCAGkyIMIAmUIAsgC5QgDCALlCAMIAyUIAYgBpMiCiAKlCAKIAyUkpIgCiALlJKSkiAKIAmUkpKSkiIGkkPNzMw9lDgCECAsIA0gBpJDzczMPZQ4AgAgLCATIAmUIgYgBpIgFCAJlCAHIAmUIAggCZQgCyATlCAUIAuUIgYgBpIgByALlCAIIAuUIAwgE5QgDCAUlCAHIAyUIgYgBpIgCCAMlCAIIAqUIgYgBpIgCiAHlJIgCiAUlJIgCiATlJKSkpKSkpKSkpKSkpJDzcxMvZQiFTgCHCAsIA8gCZQiBiAGkiAQIAmUIBEgCZQgEiAJlCALIA+UIBAgC5QiBiAGkiARIAuUIBIgC5QgDCAPlCAMIBCUIBEgDJQiBiAGkiASIAyUIBIgCpQiBiAGkiAKIBGUkiAKIBCUkiAKIA+UkpKSkpKSkpKSkpKSkkPNzEy9lCINOAIYICwgFTgCFCAsIA8gE5QiBiAGkiAQIBOUIBEgE5QgEiATlCAUIA+UIBAgFJQiBiAGkiARIBSUIBIgFJQgByAPlCAHIBCUIBEgB5QiBiAGkiASIAeUIBIgCJQiBiAGkiAIIBGUkiAIIBCUkiAIIA+UkpKSkpKSkpKSkpKSkkPNzEy9lCIGOAIMICwgDTgCCCAsIAY4AgQgIiAbIBmTIA4gGJMiCiAcIBeTIg6UIBogGJMiBiAhIBeTIhWUk5QgICAZkyAGIB4gF5MiDZQgHyAYkyIGIA6Uk5QgHSAZkyAKIA2UIAYgFZSTlJOSQwAAwECVIgYgKyoCOJSSISIgIyAGICsqAjSUkiEjICQgBiArKgIwlJIhJCAlIAYgKyoCLJSSISUgJiArKgIoIAaUkiEmICcgKyoCJCAGlJIhJyAoICsqAiAgBpSSISggKSArKgIcIAaUkiEpICogKyoCGCAGlJIhKiADIARBDGoiBEcNAAsLICtDAADAf0MAAIA/IBaYIBYgFlwbIgYgASAilJQ4AlwgKyAGIAEgI5SUOAJYICsgBiABICSUlDgCVCArIAYgASAllJQ4AlAgKyAGIAEgJpSUOAJMICsgBiABICeUlDgCSCArIAYgASAolJQ4AkQgKyAGIAEgKZSUOAJAICsgBiABICqUlDgCPCAAICtBCGogASAWlCAGlCArQTxqEKkCDAILIAUgLUG828IAEIgLAAsgAEIANwIQIABCADcCACAAQoCAgICAgIDAPzcCCCAAQRhqQgA3AgAgAEEgakIANwIAIABBKGpBADYCAAsgK0HgAGokAA8LICwgLUGc28IAEIgLAAsgLiAtQazbwgAQiAsAC9wGAgl/Bn4jAEEQayIKJAACQAJAAn8CQAJAAkACQCABKQMAIg5CAFIEQCAOQoCAgICAgICAIFoNASADRQ0CQaB/IAEvARggDnkiD6drIgVrwUHQAGxBsKcFakHOEG0iAUHRAE8NAyAKIAFBBHQiAUHQl8QAaikDACAOIA+GENIKIAopAwggCikDAEI/iHwiEEFAIAUgAUHYl8QAai8BAGprIghBP3GtIg6IpyEFIAFB2pfEAGovAQAhASAQQgEgDoYiEUIBfSISgyIPUARAIANBCksNByADQQJ0QbSkxABqKAIAIAVLDQcLIAVBkM4ATwRAIAVBwIQ9SQ0FIAVBgMLXL08EQEEIQQkgBUGAlOvcA0kiBhshB0GAwtcvQYCU69wDIAYbDAcLQQZBByAFQYCt4gRJIgYbIQdBwIQ9QYCt4gQgBhsMBgsgBUHkAE8EQEECQQMgBUHoB0kiBhshB0HkAEHoByAGGwwGC0EKQQEgBUEJSyIHGwwFC0Gok8QAQRxB5KPEABDWDAALQfSjxABBJEGYpMQAENYMAAtBwKPEAEEhQaikxAAQ1gwACyABQdEAQeChxAAQiAsAC0EEQQUgBUGgjQZJIgYbIQdBkM4AQaCNBiAGGwshBgJAAkACQAJAIAcgAWtBAWrBIgkgBMEiAUoEQCAIQf//A3EhDCAJIARrwSADIAkgAWsgA0kbIghBAWshDUEAIQEDQCAFIAZuIQsgASADRg0DIAUgBiALbGshBSABIAJqIAtBMGo6AAAgASANRg0EIAEgB0YNAiABQQFqIQEgBkEKSSELIAZBCm4hBiALRQ0AC0HgpMQAEJUNAAsgACACIANBACAJIAQgEEIKgCAGrSAOhiAREOIEDAULIAFBAWohASAMQQFrQT9xrSETQgEhEANAIBAgE4hCAFIEQCAAQQA2AgAMBgsgASADTw0DIAEgAmogD0IKfiIPIA6Ip0EwajoAACAQQgp+IRAgDyASgyEPIAggAUEBaiIBRw0ACyAAIAIgAyAIIAkgBCAPIBEgEBDiBAwECyADIANB8KTEABCICwALIAAgAiADIAggCSAEIAWtIA6GIA98IAatIA6GIBEQ4gQMAgsgASADQYClxAAQiAsACyAAQQA2AgALIApBEGokAAv1BQEafQJ9IAIqAggiDyADKgIMIgkgAyoCACIEQwAAAACUIgYgAyoCBCIFQwAAAACUIgqTIg0gDZIiDJQgBUMAAIA/IAMqAhgiGpgiDSAFlCADKgIIIgdDAAAAAJQiCJMiDiAOkiILlCAEIAggDSAElJMiDiAOkiIRlJOSIA2TmCEOIAQgAioCBCIQIAkgEZQgBCAMlCAHIAuUk5KYIhuUIAUgAioCACIVIAkgC5QgByARlCAFIAyUk5KYIhyUkyERIBAgCSAIIAaTIgwgDJIiFpQgBEMAAIA/IAMqAhQiHZgiDCAElCAKkyILIAuSIheUIAcgCiAMIAeUkyILIAuSIhiUk5IgDJOYIQsgFSAJIAogCJMiCiAKkiIIlCAHQwAAgD8gAyoCECITmCIKIAeUIAaTIhIgEpIiEpQgBSAGIAogBZSTIgYgBpIiGZSTkiAKk5ghBiAKIBMgBiAJIAUgDyAJIBmUIAUgCJQgBCASlJOSmCITlCAHIBAgCSASlCAEIBmUIAcgCJSTkpgiCJSTIhAgEJKUIAUgBCAIlCAFIAaUkyIIIAiSlCAHIAcgBpQgBCATlJMiBiAGkpSTkpKSlCABKgIAkyIGQ///f/9eIQMgDCAdIAsgCSAHIBUgCSAYlCAHIBaUIAUgF5STkpgiCJQgBCAPIAkgF5QgBSAYlCAEIBaUk5KYIg+UkyIQIBCSlCAHIAUgD5QgByALlJMiDyAPkpQgBCAEIAuUIAUgCJSTIgggCJKUk5KSkpQgASoCBJMiCCAGQ///f/8gAxsiBl4hAiAIIAYgAhsiBiANIBogDiAJIBEgEZKUIAQgByAclCAEIA6UkyIEIASSlCAFIAUgDpQgByAblJMiBCAEkpSTkpKSlCABKgIIkyIEXUUEQCAMQwAAAAAgAhshBUMAAAAAIApDAAAAACADGyACGwwBC0MAAAAAIQUgDSEUIAQhBkMAAAAACyENIAAgFDgCDCAAIAU4AgggACANOAIEIAAgBjgCAAv/BgIOfQJ/IwBB4ABrIhIkACASQQhqIhNBIGogA0EgaigCADYCACATQRhqIANBGGopAgA3AwAgE0EQaiADQRBqKQIANwMAIBNBCGogA0EIaikCADcDACASIAMpAgA3AwggEkEsaiATEE0CQCASKAI4IgNBAkcEQCADQQFxDQFBxNjCABCRDwALQbTYwgAQkQ8ACyASKgI0IRAgEioCMCEKAkAgEioCQCIMIBIqAlAiCJQgEioCRCINIBIqAkwiDpSTIBIqAlQiBpQgEioCPCILIA4gEioCXCIHlCAIIBIqAlgiBJSTlCAMIAeUIA0gBJSTIBIqAkgiEZSTkkMAAAAAXUUEQCAHIQUgBCEPIAYhCSAIIQcgDiEEIBEhBiAKIQggECEKDAELIAghBSAOIQ8gESEJIBAhCAsgEioCLCEOAkACQCALIASSIAWSIhBDAAAAAF5FBEAgBCALXSAFIAtdcQ0BIAQgBV5FBEAgDyAHkiAFQwAAgD+SIAuTIASTkSIEIASSIgWVIQQgDSAJkiAFlSEHIAwgBpMgBZUhBiAFQwAAgD6UIQUMAwsgDyAHkiAEQwAAgD+SIAuTIAWTkSIEIASSIgSVIQUgDCAGkiAElSEHIAkgDZMgBJUhBiAEQwAAgD6UIQQMAgsgDCAGkyAQQwAAgD+SkSIEIASSIgaVIQUgCSANkyAGlSEEIAcgD5MgBpUhByAGQwAAgD6UIQYMAQsgDSAJkiALQwAAgD+SIASTIAWTkSIEIASSIgmVIQUgDCAGkiAJlSEEIAcgD5MgCZUhBiAJQwAAgD6UIQcLIAAgASkCADcCECAAQRhqIAFBCGooAgA2AgAgAEMAAAAAQwAAgD8gApUgAkMAAAAAWxs4AhwgAEMAAAAAQwAAgD9DAAAAAEMAAAAAIAogCkMAAAAAXRsgCiAKXBsiApUgAkMAAAAAWxs4AiggAEMAAAAAQwAAgD9DAAAAAEMAAAAAIAggCEMAAAAAXRsgCCAIXBsiApUgAkMAAAAAWxs4AiQgAEMAAAAAQwAAgD9DAAAAAEMAAAAAIA4iAiACQwAAAABdGyACIAJcGyIClSACQwAAAABbGzgCICAAIAYgBiAGlCAEIASUkiAFIAWUIAcgB5SSkpEiApU4AgwgACAFIAKVOAIIIAAgBCAClTgCBCAAIAcgApU4AgAgEkHgAGokAAu2DAESfyMAQeAFayIFJAACQAJAAkACQCAARQ0AIABBCGsiCigCAEEBaiEEIAogBDYCACAERQ0BIAAoAgAiBEF/Rg0CIAAgBEEBajYCACAFIAo2AgggBSAANgIEIAUgAEEEaiIENgIAIAFFDQAgAUEIayILKAIAQQFqIQYgCyAGNgIAIAZFDQEgASgCACIGQX9GDQIgASAGQQFqNgIAIAUgCzYCFCAFIAE2AhAgBSABQQRqIgY2AgwgAkUNACACQQhrIgwoAgBBAWohCCAMIAg2AgAgCEUNASACKAIAIghBf0YNAiACIAhBAWo2AgAgBSAMNgIgIAUgAjYCHCAFIAJBBGoiCTYCGCADRQ0AIANBCGsiCCgCAEEBaiEHIAggBzYCACAHRQ0BIAMoAgAiB0F/Rg0CIAMgB0EBajYCACAFIAg2AiwgBSADNgIoIAUgA0EEajYCJCAFQTBqIgdBCGoiECAGQQhqKQIANwMAIAdBEGoiESAEKQIANwMAIAdBGGoiEiAEQQhqKAIANgIAIAVBkANqIgRBCGoiEyADQQxqKQIANwMAIARBEGoiFCAJKQIANwMAIARBGGoiFSAJQQhqKAIANgIAIAUgBikCADcDMCAFIAMpAgQ3A5ADIAVB0ABqIgRCADcDaCAEQgA3A5ABIARCADcCVCAEQfgAakIANwMAIARB8ABqQgA3AwAgBEGYAWpCADcDACMAQeAAayIGQc0AaiIJQQtqQgA3AAAgBkE6aiIHQQtqQgA3AAAgBkEnaiINQQtqQgA3AAAgBkEUaiIOQQtqQgA3AAAgBkEBaiIPQQtqQgA3AAAgBEHcAGpCADcCACAGQgA3AFAgBkIANwA9IAZCADcAKiAGQgA3ABcgBkIANwAEIARCADcDCCAEQgA3AwAgBEEAOgCoASAEQv////sHNwOgASAEQgA3A4gBIARCgICA/AM3A4ABIARBgICA/AM2AmQgBEH////7BzYCUCAEQoCAgIDw//+/fzcDSCAEQv////v///+//wA3A0AgBEL////7BzcDOCAEQoCAgIDw//+/fzcDMCAEQv////v///+//wA3AyggBEL////7BzcDICAEQoCAgIDw//+/fzcDGCAEQv////v///+//wA3AxAgBCAGKQBNNwCpASAEQbEBaiAJQQhqKQAANwAAIARBuAFqIAlBD2ooAAA2AAAgBEEAOgDEASAEQv////sHNwK8ASAEQQA6AOABIARC////+wc3A9gBIARBADoA/AEgBEL////7BzcC9AEgBEHUAWogB0EPaigAADYAACAEQc0BaiAHQQhqKQAANwAAIAQgBikAOjcAxQEgBEHwAWogDUEPaigAADYAACAEQekBaiANQQhqKQAANwAAIAQgBikAJzcA4QEgBEGMAmogDkEPaigAADYAACAEQYUCaiAOQQhqKQAANwAAIAQgBikAFDcA/QEgBEEAOgCYAiAEQv////sHNwOQAiAEQagCaiAPQQ9qKAAANgAAIARBoQJqIA9BCGopAAA3AAAgBCAGKQABNwCZAiAEQYACOwG8AiAEQT82ArgCIARBADoAtAIgBEL////7BzcCrAIgBUHAAWogEigCADYCACAFQbgBaiARKQMANwMAIAVBsAFqIBApAwA3AgAgBUHMAWogEykDADcCACAFQdQBaiAUKQMANwIAIAVB3AFqIBUoAgA2AgAgBSAFKQMwNwOoASAFIAUpA5ADNwLEASADIAMoAgBBAWs2AgAgCCAIKAIAQQFrIgM2AgAgA0UEQCAFQSxqEKsNCyACIAIoAgBBAWs2AgAgDCAMKAIAQQFrIgI2AgAgAkUEQCAFQSBqEKgNCyABIAEoAgBBAWs2AgAgCyALKAIAQQFrIgE2AgAgAUUEQCAFQRRqEKsNCyAAIAAoAgBBAWs2AgAgCiAKKAIAQQFrIgA2AgAgAEUEQCAFQQhqEKgNCyAFQZwDaiAFQdAAakHAAvwKAABB4AJBEBCzDiIARQ0DIABBADYCECAAQoGAgIAQNwMAIABBFGogBUGQA2pBzAL8CgAAIAVB4AVqJAAgAEEQag8LEJsPCwALEJwPAAtBEEHgAkGQxMQAKAIAIgBBzAggABsRAAAAC+UFAQ99IAMqAgAgAioCEJMiDSACKgIEIgqUIAMqAgQgAioCFJMiESACKgIAIguUkyIJIAmSIQYgESACKgIIIgmUIAMqAgggAioCGJMiCCAKlJMiDCAMkiEHIAggAioCDCIMIAaUIAogB5QgCyAIIAuUIA0gCZSTIgggCJIiD5STkpIiCCAIlCANIAwgB5QgCSAPlCAKIAaUk5KSIg0gDZQgESAMIA+UIAsgBpQgCSAHlJOSkiIRIBGUkpIgASoCACIGIAaUkyEPQwAAAAAhBiAKIAMqAgwiEpQgCyADKgIQIhOUkyIHIAeSIQcgCSATlCAKIAMqAhQiEJSTIg4gDpIhDgJAAkAgECAMIAeUIAogDpQgCyALIBCUIAkgEpSTIhAgEJIiFJSTkpIiECAQlCASIAwgDpQgCSAUlCAKIAeUk5KSIhIgEpQgEyAMIBSUIAsgB5QgCSAOlJOSkiIOIA6UkpIiE0MAAAAAXARAIAggEJQgDSASlCARIA6UkpIhByAPQwAAAABeIAdDAAAAAF5xDQIgByAHlCAPIBOUkyIGQwAAAABdDQIgB4wgBpEiD5MgE5UiBkMAAAAAXyIBIQJDAAAAACAGIAIbIQYgBQ0BIAFFDQEgDyAHkyATlSEGQQEhAgwBC0EBIQIgD0MAAAAAXg0BCyAEIAZgRQ0AIAAgBjgCCCAAQgI3AgAgCCAQIAaUkiIHIAeUIA0gEiAGlJIiCCAIlCARIA4gBpSSIgYgBpSSkpEhBCALIAYgBJUiBowgBiACGyINlCAKIAggBJUiBowgBiACGyIIlJMiBiAGkiEGIAkgCJQgCyAHIASVIgSMIAQgAhsiB5STIgQgBJIhBCAAIAcgDCAGlCALIASUIAogCiAHlCAJIA2UkyIHIAeSIgeUk5KSOAIUIAAgDSAMIASUIAkgB5QgCyAGlJOSkjgCECAAIAggDCAHlCAKIAaUIAkgBJSTkpI4AgwPCyAAQQQ2AgALqwYCCX8GfQJAIAEoAggiBARAIAIqAgghDCACKgIEIQ0gAioCACEOAkAgBEEBRg0AIA4gASgCBCIFKgIMlCANIAVBEGoqAgCUkiAMIAVBFGoqAgCUkiIRIA4gBSoCAJQgDSAFQQRqKgIAlJIgDCAFQQhqKgIAlJIiD14iAiEGQQIhAyAEQQJGDQAgESAPIAIbIRAgBEH9////A2ohByAFQRhqIQIgBEH/////A3FBA0cEQCAHQf////8DcUEBakH+////B3EhBQNAIA4gAioCAJQgDSACQQRqKgIAlJIgDCACQQhqKgIAlJIiDyAQXiEIIA4gAkEMaioCAJQgDSACQRBqKgIAlJIgDCACQRRqKgIAlJIiESAPIBAgCBsiD14hBCARIA8gBBshECADQQFqIAMgBiAIGyAEGyEGIAJBGGohAiADIAVHIQQgA0ECaiEDIAQNAAsLIAdBAXENACADIAYgDiACKgIAlCANIAJBBGoqAgCUkiAMIAJBCGoqAgCUkiAQXhshBgsgBiABKAIUIgJJBEAgASgCECAGQQN0aiIKKAIEIQsgASgCHCEFIAEoAiAhCSABKAI0IQQgASgCOCEHQQAhAgNAAkACQCACIAtGBEAgASgCKCEFIAEoAiwhByABKAJAIQQgASgCRCEIQQAhAgNAIAIgC0YEQCAGIQNBACEJDAgLIAIgCigCAGoiASAITw0CIAQgAUECdGooAgAiAyAHSQRAQQEhCSACQQFqIQIgDiAFIANBBXRqIgEqAhCUIA0gAUEUaioCAJSSIAwgAUEYaioCAJSSi0NZ+I48X0UNAQwICwsgAyAHQaC/wwAQiAsACyAHIAIgCigCAGoiA00EQCADIAdBsL/DABCICwALIAkgBCADQQJ0aigCACIDSw0BIAMgCUHAv8MAEIgLAAsgASAIQZC/wwAQiAsACyACQQFqIQIgDiAFIANBFGxqIggqAgiUIA0gCEEMaioCAJSSIAwgCEEQaioCAJSSQwX2fz9gRQ0AC0ECIQkMAgsgBiACQYC/wwAQiAsAC0EAQQBBmP3DABCICwALIAAgAzYCBCAAIAk2AgAL7QYCA38PfSMAQYACayIFJAAgBUG4AWpBADYCACAFQgA3ArABIAVCgoCAgDA3AgggBUKAgICAEDcCACAFQTRqQQBB+AD8CwAgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggASoCBCIQIAIqAhAiCIwiEZQgASoCACIMIAIqAgwiCZSTIAIqAhQiCiABKgIIIg6UkyABKgIQIhUgEZQgCSABKgIMIg+UkyAKIAEqAhQiFpSTXiEGIAUgDCAPIAYbIAIqAgAiEpMiCzgCHCAFIAs4AhAgBSABIAFBDGoiByAGGyIGKgIIIAIqAggiE5MiCzgCJCAFIAYqAgQgAioCBCIUkyINOAIgIAUgCzgCGCAFIA04AhQgBUHAAWogASAFIAIgAxDHASAFKALAASECAkACQAJAIARFBEAgAgRAIAUqAsQBIgtDAAAAAFwEQCAAIAUpAsgBNwIMIAAgCzgCCCAAQQM2AgAgAEEUaiAFQdABaigCADYCAAwFCyAFQQA2ArwBIAVBADYCrAEgBUEANgIwIAVCADcCKCABIAcgDiAKIAkgCZQgCCAIlJIgCiAKlJKRIg2VIg6UIAwgCSANlSILlCAQIAggDZUiCJSSkiAOIBaUIAsgD5QgCCAVlJKSXiICGyIEKgIIIQ0gBCoCBCEQIAUgCow4AugBIAUgETgC5AEgBSAJjDgC4AEgBSATIA4gDiANIBOTlCALIAwgDyACGyIKIBKTlCAIIBAgFJOUkpJDbxKDOpIiCZSSIgw4AtwBIAUgDSAMkyIMOAIkIAUgFCAIIAmUkiIIOALYASAFIBAgCJMiCDgCICAFIBIgCyAJlJIiDzgC1AEgBSAKIA+TIgo4AhwgBSAMOAIYIAUgCDgCFCAFIAo4AhAgBUHsAWogASAFIAVB1AFqIAlDbxKDOpIQxwEgBSgC7AFBAUcNAiADIAkgBSoC8AGTIgNgRQRAIABBBDYCAAwFCyAAIAM4AgggAEEDNgIAIAAgBSoC/AGMOAIUIAAgBSoC+AGMOAIQIAAgBSoC9AGMOAIMDAQLIABBBDYCAAwDCyACDQEgAEEENgIADAILIABBBDYCAAwBCyAAIAUpAsgBNwIMIAAgBSoCxAE4AgggAEEDNgIAIABBFGogBUHQAWooAgA2AgALIAVBgAJqJAALsQYCA38afSMAQSBrIgkkAAJAIAZBAWpBBEkEQCABIAZBDGxqIgpBEGoiBkUNASAKQdgAaiILRQ0BIApB/ABqIgpFDQEgBioCCCEVIAYqAgQhFiAGKgIAIRcgCyoCCCEOIAsqAgQhDyALKgIAIRAgCioCCCERIAoqAgQhEiAKKgIAIRMCfSACKgIQQ9sPyUCUIgwgAioCACINIAyUIAIqAhQiDCAMkpKVIRhDAAAAACANIBiUIg1DAAAAAFsNABpDAACAPyANlUMAAIC/kiIUIBSUIAwgDCAUQwAAgD+SQwAAgECUlJSVCyEUIAEqAswBIR0gASoCxAEhHiABKgLIASEfIAQqAgAhICAEKgIEIQwgBCoCDCEhIAQqAhQhIiAEKgIIIQ0gBCoCECEZIAUqAgAhIyAFKgIEIRogBSoCDCEkIAUqAhQhJSAFKgIIIRsgBSoCECEcIAQoAjAhASAFKAIwIQIgACAUOAJsIABCADcCZCAAQQA2AlwgACAROAJAIAAgEjgCPCAAIBM4AjggACAOOAI0IAAgDzgCMCAAIBA4AiwgACAVOAIoIAAgFjgCJCAAIBc4AiAgAEH////7BzYCHCAAQoCAgIDw//+/fzcCFCAAIAM2AhAgACACNgIMIAAgATYCCCAAQfgAaiAEQSBqKAIANgIAIAAgBCkCGDcCcCAAIAUpAhg3AnwgAEGEAWogBUEgaigCADYCACAAIBMgG5QgEiAclJIgESAllJI4AlggACATIBqUIBIgJJSSIBEgHJSSOAJUIAAgEyAjlCASIBqUkiARIBuUkjgCUCAAIBAgDZQgDyAZlJIgDiAilJI4AkwgACAQIAyUIA8gIZSSIA4gGZSSOAJIIAAgECAglCAPIAyUkiAOIA2UkjgCRCAAIBggFyAelCAWIB+UkiAVIB2UkpRDAAAAAJI4AmAgACAINgIEIAAgBzYCACAJQSBqJAAPCyAJQQA2AhggCUEBNgIMIAlBkPvBADYCCCAJQgQ3AhAgCUEIakGo+8EAELgNAAsgCUEANgIYIAlBATYCDCAJQeTZwQA2AgggCUIENwIQIAlBCGpB7NnBABC4DQALoQYBCX8jAEEwayIDJAAgAyAANgIAAkACQAJAAkACQCAAQQJJBEAgASAAQcgAbGoiCCgCGCIEQQJPDQIgASAEQcgAbGotAERBAUcNBCAIQRhqIgUoAgQiBkECSQ0BIAYhBAwCCyAAQQJBxPDDABCICwALIAEgBkHIAGxqLQBEQQFHDQIgBSgCCCIKQQJJDQEgCiEECyAEQQJBpPHDABCICwALIAEgCkHIAGxqLQBEDQELQbTxwwBBLEHg8cMAENYMAAsCQAJAIAgoAiQiAkECSw0AAkACQAJAIAAgASAEQcgAbGoiBCACQQJ0aiIFKAIYRwRAIAVBGGohAgwBCyACQQJ0IgUgBGoiCSgCJARAIAlBJGohAgwCCyAEQTBqIgcgBWooAgAiBCAIKAI0IgVHDQQgByACQQFqQQAgAkECRxtBAnRqKAIAIgUgCCgCMCIHRwRAIAUhAiAHIQQMAwsgCCgCKCICQQJLDQMgACABIAZByABsaiIJIAJBAnRqIgYoAhhHBEAgBkEYaiECDAELQQEhByAGKAIkQQFHBEAgBkEkaiECDAILIAlBMGoiCSACQQJ0aigCACIGIAgoAjgiB0cEQCAGIQQgByEFDAULIAkgAkEBakEAIAJBAkcbQQJ0aigCACICIARHDQIgCCgCLCICQQJLDQMgACABIApByABsaiIBIAJBAnRqIgQoAhhHBEAgBEEYaiECDAELQQIhByABIAJBAnRqIgAoAiRBAkcEQCAAQSRqIQIMAgsgBSABQTBqIgAgAkECdGooAgAiBEcNBCAGIgQgACACQQFqQQAgAkECRxtBAnRqKAIAIgJHDQIgA0EwaiQADwsgA0EANgIYIAIgAyADQRhqQeTwwwAQgA0ACyADIAc2AgQgA0EANgIYIAIgA0EEaiADQRhqQfTwwwAQgA0ACyADIAQ2AhQgAyACNgIQIANBADYCGCADQRBqIANBFGogA0EYakGU8cMAEIANAAsgAkEDQdTwwwAQiAsACyADIAU2AgwgAyAENgIIIANBADYCGCADQQhqIANBDGogA0EYakGE8cMAEIANAAv0BQESfyMAQSBrIgQkAAJAAkACQCAAKAIMIgNBf0YNACABKAIQIQsgASgCDCEFAkAgACgCCCIMRQ0AIAAoAgQhCQJAIAUEQCAJIAxBAnRqIREgASgCBCEIIAVBAnQhDSAFQQNxIQogAyAFbEECdCEGQQAgBUF8cWshEgNAIAkoAgAiAkEBaiEAIAMgDmoiB0EBaiACSyAAIAdLcQ0CIAAgC0sNBUEAIQAgBUEETwRAIAIgDWwhE0EAIQcgCCEAA0AgACAGaiIPIAAgE2oiECoCADgCACAPQQRqIBBBBGoqAgA4AgAgD0EIaiAQQQhqKgIAOAIAIA9BDGogEEEMaioCADgCACAAQRBqIQAgEiAHQQRrIgdHDQALQQAgB2shAAsgCgRAIAIgDWwhByAIIABBAnRqIQAgCiECA0AgACAGaiAAIAdqKgIAOAIAIABBBGohACACQQFrIgINAAsLIA5BAWohDiAGIA1qIQYgESAJQQRqIglHDQALDAILIAxBAnQhCCADIQADQCAJKAIAIgJBAWohCiACIABBAWoiAkkgACAKSXENASAKIAtLDQQgCUEEaiEJIAIhACAIQQRrIggNAAtBACEFDAELIARBADYCGCAEQQE2AgwgBEH4+8EANgIIDAMLIAsgAyAMaiIAayAFbCIDRQ0AIAEoAgQgACAFbEECdGoiBiECIAMiAEEBcQRAIAZBADYCACAGIABBAWsiAEEAR0ECdGohAgsgA0EBRg0AIAYgBUECdGohBwNAIAVBAnQiASAGaiIKIAIgAiAHRiIDGyIIQQA2AgAgCCAAQQFHQQJ0aiIIIAEgAmogByADGyIJRiECIAogBiADGyIDIAFqIgogCCACGyILQQA2AgAgCiADIAIbIQYgASAIaiAJIAIbIQcgCyAAQQJHQQJ0aiECIABBAmsiAA0ACwsgBEEgaiQADwsgBEEANgIYIARBATYCDCAEQaj8wQA2AggLIARCBDcCECAEQQhqQbj7wQAQuA0AC+UGAgF/Dn0jAEGAAmsiBSQAIAVBuAFqQQA2AgAgBUIANwKwASAFQoKAgIAwNwIIIAVCgICAgBA3AgAgBUE0akEAQfgA/AsAIAIqAhAiB4whDyACKgIMIgiMIRACQCAIIAiUIgogAioCFCILIAuUIg6SIgxDAAAAAFsEQCABKgIEIQwMAQsgC4wgDJEiCZUgASoCBCIMlCEGIBAgCZUgDJQhCQsgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggBSAGIAIqAggiEZMiBjgCJCAFIAkgAioCACISkyIJOAIcIAUgBjgCGCAFIAk4AhAgBSABKgIAIgkgD5ggAioCBCITkyIGOAIgIAUgBjgCFCAFQcABaiAJIAwgBSACIAMQ0AEgBSgCwAEhAQJAAkACQCAERQRAIAEEQEMAAAAAIQYgBSoCxAEiDUMAAAAAXARAIAAgBSkCyAE3AgwgACANOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIADAULIAcgCiAHIAeUkiAOkpEiDZUhCkMAAAAAIQ4gCCANlSIHIAeUIAsgDZUiCCAIlJIiDUMAAAAAXARAIAggDZEiBpUgDJQhDiAHIAaVIAyUIQYLIAUgDzgC5AEgBSAQOALgASAFQQA2ArwBIAVBADYCrAEgBUEANgIwIAVCADcCKCAFIAuMOALoASAFIBEgCCAKIAkgCpgiDyATk5QgByAGIBKTlJIgCCAOIBGTlJJDbxKDOpIiC5SSIgg4AtwBIAUgDiAIkyIIOAIkIAUgEyAKIAuUkiIKOALYASAFIA8gCpMiCjgCICAFIBIgByALlJIiBzgC1AEgBSAGIAeTIgc4AhwgBSAIOAIYIAUgCjgCFCAFIAc4AhAgBUHsAWogCSAMIAUgBUHUAWogC0NvEoM6khDQASAFKALsAUEBRw0CIAMgCyAFKgLwAZMiA2BFBEAgAEEENgIADAULIAAgAzgCCCAAQQM2AgAgACAFKgL8AYw4AhQgACAFKgL4AYw4AhAgACAFKgL0AYw4AgwMBAsgAEEENgIADAMLIAENASAAQQQ2AgAMAgsgAEEENgIADAELIAAgBSkCyAE3AgwgACAFKgLEATgCCCAAQQM2AgAgAEEUaiAFQdABaigCADYCAAsgBUGAAmokAAvaBgIBfxF9IwBBgAJrIgUkACAFQbgBakEANgIAIAVCADcCsAEgBUKCgICAMDcCCCAFQoCAgIAQNwIAIAVBNGpBAEH4APwLACAFQQA2ArwBIAVBADYCrAEgBUEANgIwIAVCADcCKCAFIAEqAggiDiACKgIUIgaMIhAgAioCDCIIIAiUIAIqAhAiCiAKlJIgBiAGlJKRIgeVIgmYIAkgASoCDCIJlJIgAioCCCILkyIPOAIkIAUgASoCBCIRIAqMIhIgB5UiDJggDCAJlJIgAioCBCIMkyITOAIgIAUgASoCACIUIAiMIhUgB5UiDZggDSAJlJIgAioCACINkyIWOAIcIAUgDzgCGCAFIBM4AhQgBSAWOAIQIAVBwAFqIAEgBSACIAMQxgEgBSgCwAEhAgJAAkACQCAERQRAIAIEQCAFKgLEASIPQwAAAABcBEAgACAFKQLIATcCDCAAIA84AgggAEEDNgIAIABBFGogBUHQAWooAgA2AgAMBQsgBSAQOALoASAFIBI4AuQBIAUgFTgC4AEgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggBiAHlSIGIAaUIAggB5UiCCAIlCAKIAeVIgcgB5SSkpEhCiAFIAsgBiAGIA4gBiAKlSIGmCAJIAaUkiIGIAuTlCAIIBQgCCAKlSILmCAJIAuUkiILIA2TlCAHIBEgByAKlSIKmCAJIAqUkiIKIAyTlJKSQ28SgzqSIgmUkiIOOALcASAFIAYgDpMiBjgCJCAFIAwgByAJlJIiBzgC2AEgBSAKIAeTIgc4AiAgBSANIAggCZSSIgg4AtQBIAUgCyAIkyIIOAIcIAUgBjgCGCAFIAc4AhQgBSAIOAIQIAVB7AFqIAEgBSAFQdQBaiAJQ28SgzqSEMYBIAUoAuwBQQFHDQIgAyAJIAUqAvABkyIDYEUEQCAAQQQ2AgAMBQsgACADOAIIIABBAzYCACAAIAUqAvwBjDgCFCAAIAUqAvgBjDgCECAAIAUqAvQBjDgCDAwECyAAQQQ2AgAMAwsgAg0BIABBBDYCAAwCCyAAQQQ2AgAMAQsgACAFKQLIATcCDCAAIAUqAsQBOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIACyAFQYACaiQAC+YGAQ19IAQqAgAgAyoCACIGkyIHIAEqAgAiCCAGkyIJlCAEKgIEIAMqAgQiBpMiCiABKgIEIgsgBpMiEZSSIAQqAgggAyoCCCIGkyIMIAEqAggiDSAGkyIFlJIhDiAHIAeUIAogCpSSIAwgDJSSIQYCQAJAAkACQAJ9AkACQAJAAkACQAJAAkAgAioCACAIkyIPIA+UIAIqAgQgC5MiECAQlJIgAioCCCANkyINIA2UkiIIQwAAADRfRQRAIA8gCZQgECARlJIgDSAFlJIhCSAGQwAAADRfDQFDAAAAACEFIAggBpQiCyAPIAeUIBAgCpSSIA0gDJSSIgcgB5QiCpMiDEMAAAA0XkUNBCAMQwAAADRfDQRDAADAf0MAAIA/IAuYIAsgC1wbQwAAwH9DAACAPyAKmCAKIApcG1wNAyALvCIBIAq8IgJLDQIgAiABa0EFTw0DDAQLIAZDAAAANF9FDQVDAAAAACEGDAkLQwAAAAAhBiAJjCAIlSIFQwAAAABeRQ0IIAVDAACAPyAFQwAAgD9dGyEFDAMLIAEgAmtBBUkNAQsgByAOlCAJIAaUkyAMlSIFQwAAgD8gBUMAAIA/XRtDAAAAACAFQwAAAABeGyEFCyAOIAcgBZSSIAaVIgZDAAAAAF1FBEAgBkMAAIA/XkUNAUMAAAAAIQYgByAJkyAIlSIFQwAAAABeRQ0FIAVDAACAPyAFQwAAgD9dGyEFQwAAgD8hBgwBC0MAAAAAIQYgCYwgCJUiBUMAAAAAXkUNBSAFQwAAgD8gBUMAAIA/XRshBQtDAAAAACEIQQAhASAFQwAAAABcDQEgBgwCC0MAAAAAIQhBACEBIA4gBpUiBUMAAAAAXkUEQEMAAAAAIQYMBQsgBUMAAIA/IAVDAACAP10bDAELIAVDAACAP1sEQEMBAAAAIQggBgwBC0MAAIA/IAWTIQhBASEBIAYLIQdDAAAAACEJQQAhAyAHQwAAAABbBEAgCCEGDAQLIAdDAACAP1sEQEMBAAAAIQkgCCEGDAQLQwAAgD8gB5MhCUEBIQMgCCEGDAMLQwEAAAAhCUEAIQFBACEDDAILQQAhAQtBACEDQwAAAAAhCQsgACAHOAIUIAAgCTgCECAAIAM2AgwgACAFOAIIIAAgBjgCBCAAIAE2AgAL4xoDEn0afwR+IwBB4ABrIiEkAAJAAkACQAJAIABFDQAgAEEIayItKAIAQQFqISMgLSAjNgIAICNFDQEgACgCACIjQX9GDQIgACAjQQFqNgIAICEgLTYCCCAhIAA2AgQgISAAQQhqIiM2AgAgAUUNACABQQhrIi4oAgBBAWohJSAuICU2AgAgJUUNASABKAIAIiVBf0YNAiABICVBAWo2AgAgISAuNgIUICEgATYCECAhIAFBBGoiJTYCDCACRQ0AIAJBEGsiLygCAEEBaiEiIC8gIjYCACAiRQ0BIAIoAgAiIkF/Rg0CIAIgIkEBajYCACAhIC82AiAgISACNgIcICEgAkEQaiIkNgIYIANFDQAgA0EIayIwKAIAQQFqISIgMCAiNgIAICJFDQEgAygCACIiQX9GDQIgAyAiQQFqNgIAICEgMDYCLCAhIAM2AiggISADQQRqIio2AiQgBEUNACAEQQhrIjEoAgBBAWohIiAxICI2AgAgIkUNASAEKAIAIiJBf0YNAiAEICJBAWo2AgAgISAxNgI4ICEgBDYCNCAhIARBBGoiIjYCMCAhIAw2AjwgIUFAayEyICMhLCAlIQwgIiEjIAVBAEchNSAHRAAAEAAAAPBBYiElIAf8AyEFIAhBAEetITsgCkEAR60hPCMAQfAAayIfJAAgC70hOSAJvSE6AkAgIUE8aiIIKAIAEARBAUYEQCAfIAg2AgAgHyAqNgJEIB8gJDYCQCAfICw2AjwgH0Hgz8EANgIwIB8gBkEAIAZBIEkbNgIoIB8gPD4CHCAfIDs+AhAgHyAFQf//A3E2AgwgHyAFQRB2NgIIIB8gJTYCBCAfIAwoAkAiBTYCOCAfIDk+AiAgHyA5QiCIPgIkIB8gOj4CFCAfIDpCIIg+AhggHyAMKAI8IAUoAghBAWtBeHFqQQhqNgI0IB8gHzYCLAwBCyAfICo2AkQgHyAkNgJAIB8gLDYCPCAfQeDPwQA2AjAgHyA8PgIcIB8gOz4CECAfICU2AgQgHyAMKAJAIgg2AjggHyAFQf//A3E2AgwgHyAFQRB2NgIIIB9BADYCLCAfIAZBACAGQSBJGzYCKCAfIDk+AiAgHyA5QiCIPgIkIB8gOj4CFCAfIDpCIIg+AhggHyAMKAI8IAgoAghBAWtBeHFqQQhqNgI0CyAfQeAAaiIoQQhqICNBCGooAgA2AgAgHyAjKQIANwNgIB9ByABqISZBACEFQQAhJUEAISIjAEGgAWsiICQAIB9BBGoiKSgCOCIGQQhqKAIAITYgBkEEaigCACEnICBBADYCCCAgQQA2AowBQQIhDAJAIDZFDQACQCAnKAI8Qf////8DcQRAICBBDGohCiAgQYwBaiEsICkoAkAhMyAoKgIIIREgKCoCBCESICgqAgAhEyApKAI8IgZBjANqITcgBkGIA2ohOEP//39/IQ9BfyErAkADQCAnIAVBBnRqIghBIGohBgJAIAgqAiAgE5MiDSATIAgqAjCTIg4gDSAOYBsiDUMAAAAAIA1DAAAAAGAbIg0gDZQgCCoCJCASkyINIBIgCCoCNJMiDiANIA5gGyINQwAAAAAgDUMAAAAAYBsiDSANlJIgCCoCKCARkyINIBEgCCoCOJMiDiANIA5gGyINQwAAAAAgDUMAAAAAYBsiDSANlJKRIg4gCCoCACATkyINIBMgCCoCEJMiECANIBBgGyINQwAAAAAgDUMAAAAAYBsiDSANlCAIKgIEIBKTIg0gEiAIKgIUkyIQIA0gEGAbIg1DAAAAACANQwAAAABgGyINIA2UkiAIKgIIIBGTIg0gESAIKgIYkyIQIA0gEGAbIg1DAAAAACANQwAAAABgGyINIA2UkpEiEF1FBEAgDiENIBAhDiAGISMgCCEGDAELIBAhDSAIISMLAkACQAJAAkACQCAOIA9dRQRAIA0gD11FDQQgDUP//39/Ww0EICMoAhxB/////wNxQQFHDQEMAgsgDkP//39/XARAIAYoAgwhCCAGKAIcQf////8DcUEBRwRAIA0gD11FBEAgCCEFDAcLIA1D//9/f1sEQCAIIQUMBwtBASEGICMoAhxB/////wNxQQFGBEAgCCEFDAULAn8gICgCjAEiJEEhSQRAICQhBSAKISpBICEkICwMAQsgICgCDCEFICAoAhAhKiAKCyEGICMoAgwhIyAFICRGBEAgIEEIahCsBCAgKAIQISogCiEGICAoAgwhBQsgBUECdCAqaiAjNgIAIAYgBigCAEEBajYCACAIIQUMBgsCQAJ/AkAgCCAzKAIQTw0AIDMoAgwgCEGwAWxqIiQoAgBBAUcNACApIDgoAgAgNygCACAIICQoAgQgJEEQahCsBUUNACAgQZABaiAkKAJQICQoAlQiCCgCCEEBa0F4cWpBCGogJEGEAWogKCA1IAhBPGooAgARBwAgIC0AnAFBAkYNACATICAqApABIhmTIg4gDpQgEiAgKgKUASIakyIOIA6UkiARICAqApgBIhuTIg4gDpSSkSEUICAoApwBDAELICVBgH5xQQJyCyIlQf8BcUECRg0AIA8gFF5FDQAgJUEIdiE0IAYoAgwhKyAZIRUgGiEWIBshFyAUIQ8gJSEMCwsgDSAPXUUNAyANQ///f39bDQMgIygCHEH/////A3FBAUYNAQsgIygCDCEFDAMLQQAhBgsCfwJAICMoAgwiJCAzKAIQTw0AIDMoAgwgJEGwAWxqIggoAgBBAUcNACApIDgoAgAgNygCACAkIAgoAgQgCEEQahCsBUUNACAgQZABaiAIKAJQIAgoAlQiJCgCCEEBa0F4cWpBCGogCEGEAWogKCA1ICRBPGooAgARBwAgIC0AnAFBAkYNACATICAqApABIhyTIg0gDZQgEiAgKgKUASIdkyINIA2UkiARICAqApgBIh6TIg0gDZSSkSEYICAoApwBDAELICJBgH5xQQJyCyIiQf8BcUECRyAPIBhecUUEQCAGRQ0BDAILICJBCHYhNCAjKAIMISsgHCEVIB0hFiAeIRcgGCEPICIhDCAGDQELIAohBSAsIQYgICgCjAEiCEEhTwRAICAoAgwhCCAFIQYgICgCECEFCyAIRQ0C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CyAAIA84AgwgACAROAIIIAAgGDgCBCAAIA04AgAgBEGQAWokAAv6DAIRfwR9IwBBoAhrIgckAAJAAkACQAJAIABFDQAgAEEIayIKKAIAQQFqIQYgCiAGNgIAIAZFDQEgACgCACIGQX9GDQIgACAGQQFqNgIAIAcgCjYCFCAHIAA2AhAgByAAQQRqIgs2AgwgAUUNACABQQhrIgwoAgBBAWohBiAMIAY2AgAgBkUNASABKAIAIgZBf0YNAiABIAZBAWo2AgAgByAMNgIgIAcgATYCHCAHIAFBBGoiDTYCGCACRQ0AIAJBCGsiCSgCACIIQQFqIQYgCSAGNgIAIAZFDQEgAigCACIGQX9GDQIgAiAGQQFqNgIAIAcgCTYCLCAHIAI2AiggByACQQRqNgIkAkAgAioCBCIYIBiUIAIqAggiGSAZlJIgAioCDCIXIBeUkiIaQwAAAABeRQRAIAIgBjYCACAJIAg2AgBBAiEDDAELIAcgFyAakSIXlTgC/AIgByAZIBeVOAL4AiAHIBggF5U4AvQCIwBBkAFrIggkACAHQYADaiIGQgA3A5ABIAhBEGoiFEIANwMAIAZBmAFqQgA3AwAgCEHtAGoiDkELakIANwAAIAhB2gBqIg9BC2pCADcAACAIQccAaiIQQQtqQgA3AAAgCEE0aiIRQQtqQgA3AAAgCEEhaiISQQtqQgA3AAAgCEIANwMIIAhCADcAcCAIQgA3AF0gCEIANwBKIAhCADcANyAIQgA3ACQgCEGAAWoiEyAHQfQCaiIVELcEIAZB4ABqIBNBCGoiFigCADYCACAGIAgpAoABNwJYIAgqAowBIRggEyAVELcEIAhBHGogFigCADYCACAIIAgpAoABNwIUIAgqAowBIRkgBkIANwMIIAZCADcDACAGIBg4AmQgBkL////7BzcDUCAGQoCAgIDw//+/fzcDSCAGQv////v///+//wA3A0AgBkL////7BzcDOCAGQoCAgIDw//+/fzcDMCAGQv////v///+//wA3AyggBkL////7BzcDICAGQoCAgIDw//+/fzcDGCAGQv////v///+//wA3AxAgBkH4AGogCEEYaikDADcDACAGQfAAaiAUKQMANwMAIAYgCCkDCDcDaCAGQQA2AowBIAZC////+wc3A6ABIAZCADcChAEgBkEAOgCoASAGIBk4AoAB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IANB/wFxQT9NBEAgAioCBCIVIBWUIAIqAggiFiAWlJIgAioCDCIUIBSUkiIXQwAAAABeDQELIAVBAjoA7QIgAiAENgIAIAcgBjYCAAwBCyAFQfQCaiIRQQhqIhIgFCAXkSIUlTgCACAFIBYgFJU4AvgCIAUgFSAUlTgC9AIgBUHQBWoiBEIANwNoIARCADcDkAEgBEIANwJUIARB+ABqQgA3AwAgBEHwAGpCADcDACAEQZgBakIANwMAIwAiE0HgAGsiBkHNAGoiDEELakIANwAAIAZBOmoiDUELakIANwAAIAZBJ2oiDkELakIANwAAIAZBFGoiD0ELakIANwAAIAZBAWoiEEELakIANwAAIARB3ABqQgA3AgAgBkIANwBQIAZCADcAPSAGQgA3ACogBkIANwAXIAZCADcABCAEQgA3AwggBEIANwMAIARBADoAqAEgBEL////7BzcDoAEgBEIANwOIASAEQoCAgPwDNwOAASAEQYCAgPwDNgJkIARB////+wc2AlAgBEKAgICA8P//v383A0ggBEL////7////v/8ANwNAIARC////+wc3AzggBEKAgICA8P//v383AzAgBEL////7////v/8ANwMoIARC////+wc3AyAgBEKAgICA8P//v383AxggBEL////7////v/8ANwMQIAQgBikATTcAqQEgBEGxAWogDEEIaikAADcAACAEQbgBaiAMQQ9qKAAANgAAIARBADoAxAEgBEL////7BzcCvAEgBEEAOgDgASAEQv////sHNwPYASAEQQA6APwBIARC////+wc3AvQBIARB1AFqIA1BD2ooAAA2AAAgBEHNAWogDUEIaikAADcAACAEIAYpADo3AMUBIARB8AFqIA5BD2ooAAA2AAAgBEHpAWogDkEIaikAADcAACAEIAYpACc3AOEBIARBjAJqIA9BD2ooAAA2AAAgBEGFAmogD0EIaikAADcAACAEIAYpABQ3AP0BIARBADoAmAIgBEL////7BzcDkAIgBEGoAmogEEEPaigAADYAACAEQaECaiAQQQhqKQAANwAAIAQgBikAATcAmQIgBEGAAjsBvAIgBCADQf8BcTYCuAIgBEEAOgC0AiAEQv////sHNwKsAiAFQcAGaiAKQQhqKAIANgIAIAVB3AZqIAtBCGooAgA2AgAgBSAKKQIANwO4BiAF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aiIMQQtqQgA3AAAgBEHHAGoiDUELakIANwAAIARBNGoiDkELakIANwAAIARBIWoiD0ELakIANwAAIARCADcDCCAEQgA3AHAgBEIANwBdIARCADcASiAEQgA3ADcgBEIANwAkIARBgAFqIhAgBUH0AmoiEhC3BCADQeAAaiAQQQhqIhMoAgA2AgAgAyAEKQKAATcCWCAEKgKMASEVIBAgEhC3BCAEQRxqIBMoAgA2AgAgBCAEKQKAATcCFCAEKgKMASEWIANCADcDCCADQgA3AwAgAyAVOAJkIANC////+wc3A1AgA0KAgICA8P//v383A0ggA0L////7////v/8ANwNAIANC////+wc3AzggA0KAgICA8P//v383AzAgA0L////7////v/8ANwMoIANC////+wc3AyAgA0KAgICA8P//v383AxggA0L////7////v/8ANwMQIANB+ABqIARBGGopAwA3AwAgA0HwAGogESkDADcDACADIAQpAwg3A2ggA0EANgKMASADQv////sHNwOgASADQgA3AoQBIANBADoAqAEgAyAWOAKAASADQv////sHNwK8ASADQQA6AMQBIANC////+wc3A9gBIANBADoA4AEgA0G4AWogC0EPaigAADYAACADQbEBaiALQQhqKQAANwAAIAMgBCkAbTcAqQEgAyAEKQBaNwDFASADQc0BaiAMQQhqKQAANwAAIANB1AFqIAxBD2ooAAA2AAAgAyAEKQBHNwDhASADQekBaiANQQhqKQAANwAAIANB8AFqIA1BD2ooAAA2AAAgA0EAOgD8ASADQv////sHNwL0ASADQQA6AJgCIANC////+wc3A5ACIANBADoAtAIgA0L////7BzcCrAIgA0GAAjsBvAIgA0E3NgK4AiADQYwCaiAOQQ9qKAAANgAAIANBhQJqIA5BCGopAAA3AAAgAyAEKQA0NwD9ASADQagCaiAPQQ9qKAAANgAAIANBoQJqIA9BCGopAAA3AAAgAyAEKQAhNwCZAiAEQZABaiQAIAVB8ANqIAhBCGooAgA2AgAgBUGMBGogCkEIaigCADYCACAFIAgpAgA3A+gDIAUgCikCADcChAQgBUEwaiADQb0C/AoAACAGKAIAIQQgBS8BvgUhCCAFLQC9BSEDIAIgAigCAEEBazYCACAGIARBAWsiAjYCACACDQAg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NgIAIAdBBEkNACACKAAAIQcgASAEQQhrIgU2AgQgASACQQhqNgIAIAVBBEkNACACNQAEIQkgASAEQQxrIgU2AgQgASACQQxqNgIAIAVBBEkNASACNQAIIQogASAEQRBrIgU2AgQgASACQRBqNgIAIAVBBEkNAiACKgAMIQ0gASAEQRRrIgU2AgQgASACQRRqNgIAIAVBBEkNAiACKAAQIQUgASAEQRhrIgY2AgQgASACQRhqNgIAIAZBBEkNAiACNQAUIQsgASAEQRxrIgY2AgQgASACQRxqNgIAAkAgBkEESQ0AIAI1ABghDCABIARBIGsiBjYCBCABIAJBIGo2AgAgBkEESQ0AIAIoABwhBiABIARBJGsiCDYCBCABIAJBJGo2AgAgCEEESQ0AIAIqACAhDiABIARBKGsiCDYCBCABIAJBKGo2AgAgCEEESQ0AIAIqACQhDyAAIAxCIIYgC4Q3AiggACAFNgIkIAAgDTgCICAAIApCIIYgCYQ3AhggACAHNgIUIAAgDzgCDCAAIA44AgggACAGNgIEIAEgBEEsazYCBCABIAJBLGo2AgAgACACKgAoOAIQQQAMBAsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBDAMLIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQog02AgRBAQwCCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggACADQQhqEKINNgIEQQEMAQsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBCzYCACADQRBqJAALwQUBDH8jAEEgayICJAACQCABKAIEIgNFBEAgAEGAgICAeDYCAAwBCyABIANBAWs2AgQCfyABKAIAIgUoAgQiBEEHTQRAIAJCgcoANwMIQQEhBiACQQhqEKINDAELIAUgBEEIayIENgIEIAUgBSgCACIBQQhqNgIAIAIgASkAABCnCCACKAIAIQYgAigCBAshAQJAAkAgBkEBcQRAIAEhAwwBC0EEIQMgAUUEQEEAIQZBACEBDAILAn8CQEGAgAQgASABQYCABE8bIgNBBHQiBkEEELMOIgkEQCACIAk2AgwgAiADNgIIQQAhAyACQQA2AhAgBSgCACEKQQAhBgNAIARBBEkNAiAFIARBBGsiBDYCBCAFIAMgCmoiCEEEaiIHNgIAIARBBEkEQCACQoHKADcDGCACQRhqEKINDAQLIAgoAAAhCyAFIARBBGsiBDYCBCAFIAdBBGoiCDYCACAEQQNNBEAgAkKBygA3AxggAkEYahCiDQwECyAHKAAAIQwgBSAEQQRrIgQ2AgQgBSAIQQRqIgc2AgAgBEEDTQRAIAJCgcoANwMYIAJBGGoQog0MBAsgCCgAACEIIAUgBEEEayIENgIEIAUgB0EEajYCACAHKAAAIQ0gAigCCCAGRgRAIAJBCGpByKvBABC6CCACKAIMIQkLIAMgCWoiByALNgIAIAdBDGogDTYCACAHQQhqIAg2AgAgB0EEaiAMNgIAIAIgBkEBaiIGNgIQIANBEGohAyABIAZHDQALIAIoAgwhAyACKAIIIgFBgICAgHhHDQQMAwtBBCAGQbirwQAQ0w0ACyACQoHKADcDGCACQRhqEKINCyEDIAIoAggiAUUNACACKAIMIAFBBHRBBBCIDwsgAEGBgICAeDYCACAAIAM2AgQMAQsgACAGNgIIIAAgAzYCBCAAIAE2AgALIAJBIGokAAvNBQMOfwF+AXwjAEHQAmsiAiQAIAAoAgAoAgAhBCAAKAIEIgMoAgBBAUYEQCADKAIEIgNB//8DcSEIIANBEHYhCUEBIQYLIARBIEkhBSAAKAIIIgMoAgBBAUYEQCADKQMIIhBCIIinIQogEKchC0EBIQcLIARBACAFGyEMQQAhBCAAKAIMIgUoAgBBAUYEQCAFKQMIIhBCIIinIQ1BASEEIBCnIQMLIAAoAhgoAgAhDiAAKAIcKAIAIQ8gACgCFCgCACEFIAIgACgCECgCADYCRCACQcDQwQA2AjggAiABNgI0IAIgDDYCMCACIA02AiwgAiADNgIoIAIgBDYCJCACIAo2AiAgAiALNgIcIAIgBzYCGCACIAg2AhQgAiAJNgIQIAIgBjYCDCAFKAI8IQMgBSgCQCEBIAIgDzYCTCACIA42AkggAiABNgJAIAIgAyABKAIIQQFrQXhxakEIajYCPCAAKAIgIQMgAkHoAGogACgCJCgCACIBQQhqKAIANgIAIAIgASkCADcDYCACQdAAaiIBQQhqIAAoAigoAgAiBEEIaikCADcDACACIAQpAgA3A1AgACgCLCgCACIEKAIEIQAgAkHwAGogAkEMaiABIAQoAgAgACgCCEEBa0F4cWpBCGogABDJBCACQZgCaiEEA0ACQCACQcACaiIAIAJB8ABqIAQQ5wEgAigCyAJFDQAgAisDwAIhESADKAIAIQEgAkGBATYCzAIgAiAREAA2AsACIAIgASACQcwCaiAAEL8MIAIoAgQhAAJAAkAgAigCAEEBcUUEQCAAEAFBAEchASAAQYMBSw0BDAILQQEhASAAQYQBSQ0BCyAAEAILIAIoAsACIgBBhAFPBEAgABACCyACKALMAiIAQYQBTwRAIAAQAgsgAQ0BCwsgAigC9AEiAEEhTwRAIAIoAnggAEECdEEEEIgPCyACQdACaiQAC6MFAQp/AkACQCAAKAIIIgQgAU8EQCAAIAE2AgggASAERwRAIAQgAWshBCAAKAIEIAFBBHRqIQMDQCADKAIAIgAEQCADQQRqKAIAIABBAnRBBBCIDwsgA0EQaiEDIARBAWsiBA0ACwsgAigCACIARQ0BIAIoAgQgAEECdEEEEIgPDwsgAigCDCEGIAIoAgghCCACKAIEIQogAigCACELIAQhBSABIARrIgkgACgCACAEa0sEQCAAIAQgCUEEQRAQ9gYgACgCCCEFCyAAKAIEIAVBBHRqIQMCQCAJQQJJDQAgCEECdCEHIAhB/////wNLDQIgB0H8////B0sNAiAHBEAgBEF/cyABaiECIAUgCWpBAWshBUEEIQwDQCAHQQQQsw4iAUUNBCAHBEAgASAKIAf8CgAACyADQQxqIAY2AgAgA0EIaiAINgIAIANBBGogATYCACADIAg2AgAgA0EQaiEDIAJBAWsiAg0ACwwBCyABIARBf3NqIgFBA3EhAiAJQQJrQQNPBEAgAUF8cSEBA0AgA0KAgICAwAA3AgAgA0E8aiAGNgIAIANBOGpBADYCACADQTBqQoCAgIDAADcCACADQSxqIAY2AgAgA0EoakEANgIAIANBIGpCgICAgMAANwIAIANBHGogBjYCACADQRhqQQA2AgAgA0EQakKAgICAwAA3AgAgA0EMaiAGNgIAIANBCGpBADYCACADQUBrIQMgAUEEayIBDQALCyACBEADQCADQoCAgIDAADcCACADQQxqIAY2AgAgA0EIakEANgIAIANBEGohAyACQQFrIgINAAsLIAUgCWpBAWshBQsgAyAGNgIMIAMgCDYC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aiAZIAdBCGoiCxCyAyAHLQB4IgxBBUYNASALQTBqIhAgCkEwaigCADYCACALQShqIhEgCkEoaikCADcDACALQSBqIhIgCkEgaikCADcDACALQRhqIhMgCkEYaikCADcDACALQRBqIhQgCkEQaikCADcDACALQQhqIApBCGopAgA3AwAgB0EGaiIKIAdB+wBqLQAAOgAAIAcgBykCRDcDCCAHIAcvAHk7AQQgDEEERg0BIAggBykDCDcCCCAIIAcvAQQ7AD0gCEE4aiAQKAIANgIAIAhBMGogESkDADcCACAIQShqIBIpAwA3AgAgCEEgaiATKQMANwIAIAhBGGogFCkDADcCACAIQRBqIAdBEGopAwA3AgAgCEE/aiAKLQAAOgAAIAggDDoAPCAIIBY2AgQgCCAVNgIADAILQczOwQBBzABBmM/BABDXCwALIAggBykCRDcCACAIQQQ6ADwgCCAHLwBBOwA9IAhBOGogB0HEAGoiCkE4aigCADYCACAIQTBqIApBMGopAgA3AgAgCEEoaiAKQShqKQIANwIAIAhBIGogCkEgaikCADcCACAIQRhqIApBGGopAgA3AgAgCEEQaiAKQRBqKQIANwIAIAhBCGogCkEIaikCADcCACAIQT9qIAdBwwBqLQAAOgAACyAHQYABaiQADAELQczOwQBBzABBoNPBABDXCwALIAQgBCgCAEEBazYCACAPIA8oAgBBAWsiBDYCACAERQRAIAlBLGoQqA0LIAIgAigCAEEBazYCACAOIA4oAgBBAWsiAjYCACACRQRAIAlBIGoQqA0LIAAgACgCAEEBazYCACANIA0oAgBBAWsiADYCACAARQRAIAlBFGoQ7wwLQQAhACAJLQBsQQRHBEBBzABBBBCzDiIARQ0EIABBADYCCCAAQoGAgIAQNwIAIAAgCSkCMDcCDCAAQRRqIAlBOGopAgA3AgAgAEEcaiAJQUBrKQIANwIAIABBJGogCUHIAGopAgA3AgAgAEEsaiAJQdAAaikCADcCACAAQTRqIAlB2ABqKQIANwIAIABBPGogCUHgAGopAgA3AgAgAEHEAGogCUHoAGopAgA3AgAgAEEIaiEACyAJQfAAaiQAIAAPCxCbDwsACxCcDwALQQRBzABBkMTEACgCACIAQcwIIAAbEQAAAAupBAINfQF/IABBDGpBAiABKgIAIgMgACoCGJQgASoCBCIFIAAqAhyUkiABKgIIIgQgACoCIJSSIgYgAyAAKgIMlCAFIAAqAhCUkiAEIAAqAhSUkiIHXiIPIAMgACoCJJQgBSAAKgIolJIgBCAAKgIslJIgBiAHIA8bXhtBDGxqIg9BBGoqAgAhCCADIAAqAgAiB5QgBSAAKgIEIgmUkiAEIAAqAggiCpSSIQYCQAJAIA8qAgAiDCAHXA0AIAggCVwNACAPKgIIIApbDQELQQEhAAJAIAYgByAMlCAJIAiUkiAKIA9BCGoqAgAiDZSSIgIgAiACkpRDAACAv5JgBH9BAQUgBCAKIAaUkyIEIASUIAMgByAGlJMiDiAOlCAFIAkgBpSTIgUgBZSSkpEiA0O9N4Y1Xw0BIA0gCiAClCINkyILIAuUIAwgByAClCIMkyILIAuUIAggCSAClCILkyICIAKUkpKRIQIgDSAEIAOVIAKUkiIEIASUIAwgDiADlSAClJIiCCAIlCALIAUgA5UgApSSIgMgA5SSkpEiAkO9N4Y1Xw0BIAogBCAClSIFlCAHIAggApUiBJQgCSADIAKVIgOUkpIiAiACkiECIAEgBSAClCAKkzgCCCABIAMgApQgCZM4AgQgASAEIAKUIAeTOAIAIAZDAAAAAGALDwsgBkMAAAAAYA8LIAEgACkCADcCACABQQhqIABBCGooAgA2AgAgBkMAAAAAYAuVBAEVfSABKgIkIQkCQAJAIAEqAiAiC0MAAAAAXA0AIAlDAAAAAFwNACABKgIoQwAAAABbDQELIAAgASoCDCIDIAIqAggiBpQgASoCCCIEIAIqAgwiBZQgASoCBCIMIAIqAgAiDZSSIAEqAgAiDiACKgIEIg+Uk5IiByAHlCISIAMgBZQgDiANlJMgDCAPlJMgBCAGlJMiCiAKlCITIA4gBZQgAyANlJIgBCAPlJIgDCAGlJMiCCAIlCIUkyIQIA4gBpQgAyAPlCAMIAWUIAQgDZSTkpIiAyADlCIMk5IiBiAGIAEqAigiDZSUIAggB5QiBCAEkiIOIAMgCpQiBCAEkiIPkyIEIAQgC5SUIAMgB5QiBSAFkiIRIAggCpQiBSAFkiIVkiIFIAkgBZSUkpI4AhQgACAEIAggA5QiCCAIkiIWIAcgCpQiByAHkiIXkiIHIAuUIgOUIAUgCSAMIBCSIBKTIgqUIhCUkiAGIA0gESAVkyIIlCIRlJI4AhAgACAHIAOUIAogEJSSIAggEZSSOAIMIAAgBCAUIBOSIAyTIBKTIgQgC5QiA5QgBSAWIBeTIgUgCZQiCZSSIAYgDSAOIA+SIgaUIguUkjgCCCAAIAcgA5QgCiAJlJIgCCALlJI4AgQgACAEIAOUIAUgCZSSIAYgC5SSOAIADwsgAEIANwIAIABBEGpCADcCACAAQQhqQgA3AgALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEJACIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRDeASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQtgEgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFELECIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC5wEAQl9IwBBMGsiBSQAIAIqAgQiCyADKgIMIg6UIAIqAgAiDCADKgIQIgiUkyIJIAmSIQYgAioCCCIJIAiUIAsgAyoCFCIHlJMiDSANkiEKIAUgByACKgIMIg0gBpQgCyAKlCAMIAwgB5QgCSAOlJMiByAHkiIHlJOSkjgCFCAFIAggDSAHlCAMIAaUIAkgCpSTkpI4AhAgBSAOIA0gCpQgCSAHlCALIAaUk5KSOAIMIAsgAyoCACACKgIQkyIOlCAMIAMqAgQgAioCFJMiCJSTIgYgBpIhBiAIIAmUIAMqAgggAioCGJMiByALlJMiCiAKkiEKIAUgByANIAaUIAsgCpQgDCAHIAyUIA4gCZSTIgcgB5IiB5STkpI4AgggBSAIIA0gB5QgDCAGlCAJIAqUk5KSOAIEIAUgDiANIAqUIAkgB5QgCyAGlJOSkjgCACAFQRhqIAEgBSAEQQAQmQEgBSgCGCIBQQRHBEAgACAFKgIgOAIIIAAgBSgCHDYCBCAMIAUqAigiCpQgCyAFKgIkIg6UkyIEIASSIQQgCSAOlCAMIAUqAiwiCJSTIgYgBpIhBiAAIAggDSAElCAMIAaUIAsgCyAIlCAJIAqUkyIIIAiSIgiUk5KSOAIUIAAgCiANIAaUIAkgCJQgDCAElJOSkjgCECAAIA4gDSAIlCALIASUIAkgBpSTkpI4AgwLIAAgATYCACAFQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFELICIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRDwASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQvgEgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEI4BIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRCCASAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQrQIgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEJ4BIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC54EAgF/CX0jAEEwayIGJAAgAioCBCIMIAMqAgwiD5QgAioCACINIAMqAhAiCZSTIgogCpIhByACKgIIIgogCZQgDCADKgIUIgiUkyIOIA6SIQsgBiAIIAIqAgwiDiAHlCAMIAuUIA0gDSAIlCAKIA+UkyIIIAiSIgiUk5KSOAIUIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCECAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgwgDCADKgIAIAIqAhCTIg+UIA0gAyoCBCACKgIUkyIJlJMiByAHkiEHIAkgCpQgAyoCCCACKgIYkyIIIAyUkyILIAuSIQsgBiAIIA4gB5QgDCALlCANIAggDZQgDyAKlJMiCCAIkiIIlJOSkjgCCCAGIAkgDiAIlCANIAeUIAogC5STkpI4AgQgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIAIAZBGGogASAGIAQgBRCeAiAGKAIYIgFBBEcEQCAAIAYqAiA4AgggACAGKAIcNgIEIA0gBioCKCILlCAMIAYqAiQiD5STIgQgBJIhBCAKIA+UIA0gBioCLCIJlJMiByAHkiEHIAAgCSAOIASUIA0gB5QgDCAMIAmUIAogC5STIgkgCZIiCZSTkpI4AhQgACALIA4gB5QgCiAJlCANIASUk5KSOAIQIAAgDyAOIAmUIAwgBJQgCiAHlJOSkjgCDAsgACABNgIAIAZBMGokAAueBAIBfwl9IwBBMGsiBiQAIAIqAgQiDCADKgIMIg+UIAIqAgAiDSADKgIQIgmUkyIKIAqSIQcgAioCCCIKIAmUIAwgAyoCFCIIlJMiDiAOkiELIAYgCCACKgIMIg4gB5QgDCALlCANIA0gCJQgCiAPlJMiCCAIkiIIlJOSkjgCFCAGIAkgDiAIlCANIAeUIAogC5STkpI4AhAgBiAPIA4gC5QgCiAIlCAMIAeUk5KSOAIMIAwgAyoCACACKgIQkyIPlCANIAMqAgQgAioCFJMiCZSTIgcgB5IhByAJIAqUIAMqAgggAioCGJMiCCAMlJMiCyALkiELIAYgCCAOIAeUIAwgC5QgDSAIIA2UIA8gCpSTIgggCJIiCJSTkpI4AgggBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIEIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCACAGQRhqIAEgBiAEIAUQkQIgBigCGCIBQQRHBEAgACAGKgIgOAIIIAAgBigCHDYCBCANIAYqAigiC5QgDCAGKgIkIg+UkyIEIASSIQQgCiAPlCANIAYqAiwiCZSTIgcgB5IhByAAIAkgDiAElCANIAeUIAwgDCAJlCAKIAuUkyIJIAmSIgmUk5KSOAIUIAAgCyAOIAeUIAogCZQgDSAElJOSkjgCECAAIA8gDiAJlCAMIASUIAogB5STkpI4AgwLIAAgATYCACAGQTBqJAALngQCAX8JfSMAQTBrIgYkACACKgIEIgwgAyoCDCIPlCACKgIAIg0gAyoCECIJlJMiCiAKkiEHIAIqAggiCiAJlCAMIAMqAhQiCJSTIg4gDpIhCyAGIAggAioCDCIOIAeUIAwgC5QgDSANIAiUIAogD5STIgggCJIiCJSTkpI4AhQgBiAJIA4gCJQgDSAHlCAKIAuUk5KSOAIQIAYgDyAOIAuUIAogCJQgDCAHlJOSkjgCDCAMIAMqAgAgAioCEJMiD5QgDSADKgIEIAIqAhSTIgmUkyIHIAeSIQcgCSAKlCADKgIIIAIqAhiTIgggDJSTIgsgC5IhCyAGIAggDiAHlCAMIAuUIA0gCCANlCAPIAqUkyIIIAiSIgiUk5KSOAIIIAYgCSAOIAiUIA0gB5QgCiALlJOSkjgCBCAGIA8gDiALlCAKIAiUIAwgB5STkpI4AgAgBkEYaiABIAYgBCAFEPkBIAYoAhgiAUEERwRAIAAgBioCIDgCCCAAIAYoAhw2AgQgDSAGKgIoIguUIAwgBioCJCIPlJMiBCAEkiEEIAogD5QgDSAGKgIsIgmUkyIHIAeSIQcgACAJIA4gBJQgDSAHlCAMIAwgCZQgCiALlJMiCSAJkiIJlJOSkjgCFCAAIAsgDiAHlCAKIAmUIA0gBJSTkpI4AhAgACAPIA4gCZQgDCAElCAKIAeUk5KSOAIMCyAAIAE2AgAgBkEwaiQAC5IEAQ99IAMqAgAgAioCEJMiDCACKgIEIgaUIAMqAgQgAioCFJMiDSACKgIAIgiUkyIHIAeSIQkgDSACKgIIIgeUIAMqAgggAioCGJMiCiAGlJMiCyALkiEOIAogAioCDCILIAmUIAYgDpQgCCAKIAiUIAwgB5STIgogCpIiCpSTkpIiECAQlCAMIAsgDpQgByAKlCAGIAmUk5KSIhEgEZQgDSALIAqUIAggCZQgByAOlJOSkiIKIAqUkpIgASoCACIJIAmUkyEOQwAAAAAhCSAGIAMqAgwiEpQgCCADKgIQIhOUkyIMIAySIQwgByATlCAGIAMqAhQiD5STIg0gDZIhDQJAIA8gCyAMlCAGIA2UIAggCCAPlCAHIBKUkyIPIA+SIg+Uk5KSIhQgFJQgEiALIA2UIAcgD5QgBiAMlJOSkiIGIAaUIBMgCyAPlCAIIAyUIAcgDZSTkpIiByAHlJKSIghDAAAAAFwEQCAQIBSUIBEgBpQgCiAHlJKSIQZBACECIA5DAAAAAF4gBkMAAAAAXnENASAGIAaUIA4gCJSTIgdDAAAAAF0NAUMAAAAAIAaMIAeRIgeTIAiVIgsgC0MAAAAAXyIBGyEJQQEhAiAFDQEgAUUNASAHIAaTIAiVIQkMAQtBASECIA5DAAAAAF5FDQBBACECCyAAIAk4AgQgACACQQAgBCAJYBtBACACGzYCAAuiBQICfwd9IwBBIGsiAyQAAn0gASoCACIGIAaUIAEqAggiBSAFlJKRIgdDAAAANF8EQEMAAIA/IQZDAAAAAAwBCyAGIAeVIQYgBSAHlQshBQJAIAEqAgQiCYtDAAAAP11FBEAgAiAAKgIEIgcgBoyUIgo4AiwgAiAAKgIAIAmYIgg4AiggAiAFIAeUIgs4AiQgAiAHIAWMlCIFOAIgIAIgCDgCHCACIAo4AhggAiAGIAeUIgY4AhQgAiAIOAIQIAIgBTgCDCACIAs4AgggAiAIOAIEIAIgBjgCACACQUBrIQAgCUMAAAAAXUUEQCADQpCAgICgAjcCGCADQoyAgIDgATcCECADIANBEGoiARDlBiAAQQhqIANBCGoiBCkCADcCACAAIAMpAgA3AgAgAkKTgICAzAA3AlAgA0KPgICAkAI3AhggA0KLgICA0AE3AhAgAyABEOQGIAJBOGogBCkCADcCAAwCCyADQoaAgICAATcCGCADQoKAgIDAADcCECADIANBEGoiARDlBiAAQQhqIANBCGoiBCkCADcCACAAIAMpAgA3AgAgAkKJgICAzAA3AlAgA0KFgICA8AA3AhggA0KBgICAMDcCECADIAEQ5AYgAkE4aiAEKQIANwIADAELIAIgACoCACIHOAIQIAIgBSAAKgIEIgWUIgg4AhQgAiAGIAWUIgU4AgwgAiAIOAIIIAIgB4w4AgQgAiAFOAIAIANBEGoiAEEIakIANwMAIANCADcDECADIAAQ5QYgAkHIAGogA0EIaiIBKQIANwIAIAIgAykCADcCQCACQoCAgIAsNwJQIANCi4CAgLABNwIYIANCgYCAgLABNwIQIAMgABDkBiACQThqIAEpAgA3AgALIAIgAykCADcCMCADQSBqJAAL2wQCA34PfyMAQTBrIggkACABKQMQIQMgAS0AGCEQAn8gASgCBCIJRQRAQbDVwgAhBkEAIQlBAAwBCwJ/AkAgCUEBaq1CGH4iAkIgiKcNACAJQQlqIgcgAqciBmohBSAFIAZJDQAgBUH4////B0sNACAFQQgQsw4iCkUEQEEIIAVBkMTEACgCACIAQcwIIAAbEQAAAAsgBiAKagwBCxCmDCAIKAIIIglBCWohB0EACyEGIAEoAgAhBSAHBEAgBiAFIAf8CgAACyABKAIMIg0EQCAGQRhrIREgBUEIaiEHIAUpAwBCf4VCgIGChIiQoMCAf4MhAiAIQSRqIQ4gDSEPIAUhCgNAIAJQBEADQCAKQcABayEKIAcpAwAhAiAHQQhqIQcgAkKAgYKEiJCgwIB/gyICQoCBgoSIkKDAgH9RDQALIAJCgIGChIiQoMCAf4UhAgsgCEEYaiISQQhqIhMgCiACeqdBA3ZBaGxqIgtBGGsiDEEIaigCADYCACAIIAwpAgAiBDcDGCAOIAtBDGsiDCkCADcCACAOQQhqIAxBCGooAgA2AgAgESAFIAtrQWhtQRhsaiILIAQ3AgAgC0EIaiATKQMANwIAIAtBEGogEkEQaikDADcCACACQgF9IAKDIQIgD0EBayIPDQALCyABKAIICyEFQSBBCBCzDiIBBEAgASAQOgAYIAEgAzcDECABIA02AgwgASAFNgIIIAEgCTYCBCABIAY2AgAgAEHg+sIANgIEIAAgATYCACAIQTBqJAAPC0EIQSBBkMTEACgCACIAQcwIIAAbEQAAAAv6BAIFfwF+IwBBQGoiAiQAAkACQCABKAIEIgRFBEAgAEGAgICAeDYCAAwBCyABIARBAWs2AgQgASgCACEBIAJBAzYCNCACIAE2AjAgAkEQaiACQTBqEJYEAkACQAJAAkACQCACKAIQIgRBgICAgHhrDgIBAAILIAIoAhQhAQwCC0EAIAJBLGpBtKzBABC+CiEBDAELIAIoAhQhBQJAAn8CQCACKAI0IgEEQCABQQFGDQEgAigCMCIBKAIEIgZBB00EQCACQoHKADcDECACQRBqEKINDAMLIAIoAhghAyABIAZBCGs2AgQgASABKAIAIgFBCGo2AgAgASkAACIHQoCAgIAQVA0DIAJBAToAECACIAc3AxggAkEQaiACQSxqQYCqwQAQ7woMAgtBASACQSxqQbSswQAQvgoMAQtBAiACQSxqQbSswQAQvgoLIQEgBEUNASAFIARBAnRBBBCIDwwBCyAHp0EGbCIBIANGDQEgAiABNgIoIAIgAzYCLCACQQI2AhQgAkGUy8EANgIQIAJCAjcCHCACIAJBLGqtQoCAgIAwhDcDOCACIAJBKGqtQoCAgIAwhDcDMCACIAJBMGo2AhggAkEEaiIBIAJBEGoiAxCMBSADIAEQ/QpBDEEEELMOIgFFDQMgASACKQIQNwIAIAFBCGogA0EIaigCADYCACACKAIEIgMEQCACKAIIIANBARCIDwsgBEUNACAFIARBAnRBBBCIDwsgAEGBgICAeDYCACAAIAE2AgQMAQsgACAFNgIEIAAgBDYCACAAIAOtIAdCIIaENwIICyACQUBrJAAPC0EEQQxBkMTEACgCACIAQcwIIAAbEQAAAAuPBAIPfQJ/IwBBIGsiFyQAAkACQCAEBEAgAyAEQQN0aiEYIAUqAhghESAFKgIUIRIgBSoCECETIAUqAgwhDiAFKgIAIQsgBSoCCCEMIAUqAgQhDSAGKgIIIRQgBioCBCEVIAYqAgAhFgNAIAMoAgAiBCACTw0DIBcgESAUIAEgBEEMbGoiBCoCCJQiCCAOIBUgBCoCBJQiDyALlCAWIAQqAgCUIhAgDZSTIgkgCZIiCZQgCyAQIAyUIAggC5STIgogCpIiCpQgDSANIAiUIA8gDJSTIgggCJIiCJSTkpKSOAIQIBcgEiAPIA4gCpQgDCAIlCALIAmUk5KSkjgCDCAXIBMgECAOIAiUIA0gCZQgDCAKlJOSkpI4AgggA0EEaigCACIEIAJPDQIgFyARIBQgASAEQQxsaiIEKgIIlCIIIA4gCyAVIAQqAgSUIg+UIA0gFiAEKgIAlCIQlJMiCSAJkiIJlCALIAwgEJQgCyAIlJMiCiAKkiIKlCANIA0gCJQgDCAPlJMiCCAIkiIIlJOSkpI4AhwgFyASIA8gDiAKlCAMIAiUIAsgCZSTkpKSOAIYIBcgEyAQIA4gCJQgDSAJlCAMIAqUk5KSkjgCFCAAIBdBCGogF0EUaiAHEM0DIBggA0EIaiIDRw0ACwsgF0EgaiQADwsgBCACQbDCwQAQiAsACyAEIAJBoMLBABCICwALkgQBE30CQAJAIAMEQCACKgIEIgcgASoCACIMlCACKgIAIgkgASoCBCINlJMiBCAEkiEGIAkgASoCCCIOlCACKgIIIgQgDJSTIgUgBZIhBSABKgIYIhQgBCABKgIMIhAgBpQgDCAFlCANIAQgDZQgByAOlJMiBCAEkiIKlJOSkpIhBCABKgIUIhUgByAQIAWUIA4gCpQgDCAGlJOSkpIhByABKgIQIhYgCSAQIAqUIA0gBpQgDiAFlJOSkpIhBiADQQFHDQEgBiEFIAchCSAEIQoMAgtBmNrCAEHSAEHs2sIAENcLAAsgAiADQQxsaiEDIAJBDGohASAEIQogByEJIAYhBQNAIAwgAUEEaioCACIPlCANIAEqAgAiEpSTIgggCJIhCCAOIBKUIAwgAUEIaioCACILlJMiESARkiERIAQgFCALIBAgCJQgDCARlCANIA0gC5QgDiAPlJMiCyALkiITlJOSkpIiCyAEIAtgGyEEIAkgFSAPIBAgEZQgDiATlCAMIAiUk5KSkiIPIAkgD2AbIQkgBSAWIBIgECATlCANIAiUIA4gEZSTkpKSIgggBSAIYBshBSAKIAsgCiALXxshCiAHIA8gByAPXxshByAGIAggBiAIXxshBiADIAFBDGoiAUcNAAsLIAAgBDgCFCAAIAk4AhAgACAFOAIMIAAgCjgCCCAAIAc4AgQgACAGOAIAC/cEAgZ/AX4jAEFAaiICJAACQCABKAIEIgRFBEAgAEGAgICAeDYCAAwBCyABIARBAWs2AgQgASgCACEBIAJBAzYCNCACIAE2AjAgAkEQaiACQTBqEJYEAkACfwJAAkACQAJAAkAgAigCECIEQYCAgIB4aw4CAgABCyACKAIUIQEMBQsgAigCFCEFIAIoAjQiBkUNASACKAIwIgEoAgQiB0EHTQRAIAJCgcoANwMQIAJBEGoQog0MBAsgAigCGCEDIAEgB0EIazYCBCABIAEoAgAiAUEIajYCACABKQAAIghCgICAgBBUDQIgAkEBOgAQIAIgCDcDGCACQRBqIAJBLGpBgKrBABDvCgwDC0EAIAJBLGpBlKzBABC+CiEBDAMLQQEgAkEsakGUrMEAEL4KDAELIAZBAUcEQAJAIAinIgEgA0cEQCACIAE2AiggAiADNgIsIAJBAjYCFCACQZTLwQA2AhAgAkICNwIcIAIgAkEsaq1CgICAgDCENwM4IAIgAkEoaq1CgICAgDCENwMwIAIgAkEwajYCGCACQQRqIgEgAkEQaiIDEIwFIAMgARD9CkEMQQQQsw4iAUUNASABIAIpAhA3AgAgAUEIaiADQQhqKAIANgIAIAIoAgQiAwRAIAIoAgggA0EBEIgPCyAERQ0EIAUgBEECdEEEEIgPDAQLIAAgBTYCBCAAIAQ2AgAgACADrSIIIAhCIIaENwIIDAQLQQRBDEGQxMQAKAIAIgBBzAggABsRAAAAC0ECIAJBLGpBlKzBABC+CgshASAERQ0AIAUgBEECdEEEEIgPCyAAQYGAgIB4NgIAIAAgATYCBAsgAkFAayQAC4cEARN9IAEqAgQiDSACKgIAIgWUIAEqAgAiCiACKgIEIgaUkyIEIASSIQkgCiACKgIIIgSUIAEqAggiByAFlJMiAyADkiELIAUgASoCECIRlCAGIAEqAgwiEpSTIgMgA5IhDCAEIBKUIAUgASoCFCIIlJMiAyADkiEOIAAgAioCGCIPIAcgAioCDCIDIAmUIAUgC5QgBiAHIAaUIA0gBJSTIgcgB5IiEJSTkpKSIgcgDyAIIAMgDJQgBSAOlCAGIAYgCJQgBCARlJMiCCAIkiIPlJOSkpIiCCAHIAIqAhAiFCAKIAMgEJQgBiAJlCAEIAuUk5KSkiIKQwAAAACUIhMgAioCFCIVIA0gAyALlCAEIBCUIAUgCZSTkpKSIglDAAAAAJQiC5IiEJIgCCAUIBIgAyAPlCAGIAyUIAQgDpSTkpKSIgZDAAAAAJQiDSAVIBEgAyAOlCAEIA+UIAUgDJSTkpKSIgVDAAAAAJQiDJIiDpJeGzgCFCAAIAkgBSAHQwAAAACUIgQgCSATkpIgCEMAAAAAlCIDIAUgDZKSXhs4AhAgACAKIAYgBCAKIAuSkiADIAYgDJKSXhs4AgwgACAHIAggECAHkyAOIAiTXhs4AgggACAJIAUgBCATIAmTkiADIA0gBZOSXhs4AgQgACAKIAYgBCALIAqTkiADIAwgBpOSXhs4AgAL/wMCDX0BfyACKgIEIgogAyoCACIGlCACKgIAIgsgAyoCBCIIlJMiByAHkiEHIAIqAggiDCAIlCAKIAMqAggiBZSTIgQgBJIhBCABKgIgIAUgAioCDCINIAeUIAogBJQgCyALIAWUIAwgBpSTIgUgBZIiBZSTkpIiCSAJIAmUIAYgDSAElCAMIAWUIAogB5STkpIiCSAJlCAIIA0gBZQgCyAHlCAMIASUk5KSIgQgBJSSkpEiBZUiBpQgASoCGCIHIAkgBZUiCJQgASoCHCAEIAWVIgWUkpIhCSABQRhqIQMCQCABKgIUIAaUIAEqAgwiDiAIlCABKgIQIAWUkpIiDyABKgIIIAaUIAEqAgAiBCAIlCABKgIEIAWUkpIiEF1FBEAgAUEMaiADIAkgD10iERshAyAOIAcgERshBwwBCyAJIBBdRQ0AIAQhByABIQMLIAAgAioCGCADKgIIIAYgASoCJCIElJIiBiANIAsgAyoCBCAFIASUkiIFlCAKIAcgCCAElJIiB5STIgQgBJIiBJQgCyAMIAeUIAsgBpSTIgggCJIiCJQgCiAKIAaUIAwgBZSTIgYgBpIiBpSTkpKSOAIIIAAgAioCFCAFIA0gCJQgDCAGlCALIASUk5KSkjgCBCAAIAIqAhAgByANIAaUIAogBJQgDCAIlJOSkpI4AgAL2wQCCX8BfiMAQdAAayIGJAACQAJAAkAgAEUNACAAQQhrIgkoAgBBAWohByAJIAc2AgAgB0UNASAAKAIADQIgAEF/NgIAIAYgCTYCECAGIAA2AgwgBiAAQQRqIg02AgggAkUNACACQRBrIgooAgBBAWohByAKIAc2AgAgB0UNASACKAIADQIgAkF/NgIAIAYgCjYCHCAGIAI2AhggBiACQRBqIgg2AhQgBEUNACAEQQhrIgsoAgBBAWohByALIAc2AgAgB0UNASAEKAIAIgdBf0YNAiAEIAdBAWo2AgAgBiALNgIoIAYgBDYCJCAGIARBBGoiDjYCICAFRQ0AIAVBCGsiDCgCAEEBaiEHIAwgBzYCACAHRQ0BIAUoAgAiB0F/Rg0CIAUgB0EBajYCACAGIAw2AjQgBiAFNgIwIAYgBUEEaiIHNgIsIAggA70iD6cgD0IgiKcQ7wkiCARAIAZBOGogDSABIAggDiAHEKIGIAYgCCoCeCAGKgJAkjgCTCAGIAgqAnQgBioCPJI4AkggBiAIKgJwIAYqAjiSOAJEIAggBkHEAGpBARCcCgsgBSAFKAIAQQFrNgIAIAwgDCgCAEEBayIFNgIAIAVFBEAgBkE0ahCoDQsgBCAEKAIAQQFrNgIAIAsgCygCAEEBayIENgIAIARFBEAgBkEoahCoDQsgAkEANgIAIAogCigCAEEBayICNgIAIAJFBEAgBkEcahDrDAsgAEEANgIAIAkgCSgCAEEBayIANgIAIABFBEAgBkEQahCpDQsgBkHQAGokAA8LEJsPCwALEJwPAAvdBAIJfwF+IwBB0ABrIgYkAAJAAkACQCAARQ0AIABBCGsiCSgCAEEBaiEHIAkgBzYCACAHRQ0BIAAoAgANAiAAQX82AgAgBiAJNgIQIAYgADYCDCAGIABBBGoiDTYCCCACRQ0AIAJBEGsiCigCAEEBaiEHIAogBzYCACAHRQ0BIAIoAgANAiACQX82AgAgBiAKNgIcIAYgAjYCGCAGIAJBEGoiCDYCFCAERQ0AIARBCGsiCygCAEEBaiEHIAsgBzYCACAHRQ0BIAQoAgAiB0F/Rg0CIAQgB0EBajYCACAGIAs2AiggBiAENgIkIAYgBEEEaiIONgIgIAVFDQAgBUEIayIMKAIAQQFqIQcgDCAHNgIAIAdFDQEgBSgCACIHQX9GDQIgBSAHQQFqNgIAIAYgDDYCNCAGIAU2AjAgBiAFQQRqIgc2AiwgCCADvSIPpyAPQiCIpxDvCSIIBEAgBkE4aiANIAEgCCAOIAcQrAYgBiAGKgJAIAgqAoQBkjgCTCAGIAYqAjwgCCoCgAGSOAJIIAYgBioCOCAIKgJ8kjgCRCAIIAZBxABqQQEQnQoLIAUgBSgCAEEBazYCACAMIAwoAgBBAWsiBTYCACAFRQRAIAZBNGoQqA0LIAQgBCgCAEEBazYCACALIAsoAgBBAWsiBDYCACAERQRAIAZBKGoQqw0LIAJBADYCACAKIAooAgBBAWsiAjYCACACRQRAIAZBHGoQ6wwLIABBADYCACAJIAkoAgBBAWsiADYCACAARQRAIAZBEGoQqQ0LIAZB0ABqJAAPCxCbDwsACxCcDwALiAQCCX0BfyMAQTBrIhMkACATIAEqAggiDSAFKgIIIgqUIAEqAgQiDiAFKgIEIguUIAEqAgAiDyAFKgIAIhCUIAEqAgwiESAFKgIMIhKUkpKSOAIUIBMgDiAQlCARIAqUIA8gC5STkiANIBKUkzgCECATIBEgC5QgDyAKlJIgDiASlJMgDSAQlJM4AgwgEyANIAuUIBEgEJQgDyASlJMgDiAKlJOSOAIIIA4gBSoCECABKgIQkyIQlCAPIAUqAhQgASoCFJMiEpSTIgogCpIhCiANIBKUIA4gBSoCGCABKgIYkyIMlJMiCyALkiELIBMgDCARIAqUIA4gC5QgDyAPIAyUIA0gEJSTIgwgDJIiDJSTkpI4AiAgEyASIBEgDJQgDyAKlCANIAuUk5KSOAIcIBMgECARIAuUIA0gDJQgDiAKlJOSkjgCGCAOIAYqAgAgAioCAJMiEJQgDyAGKgIEIAIqAgSTIhKUkyIKIAqSIQogDSASlCAOIAYqAgggAioCCJMiDJSTIgsgC5IhCyATIAwgESAKlCAOIAuUIA8gDyAMlCANIBCUkyIMIAySIgyUk5KSOAIsIBMgEiARIAyUIA8gCpQgDSALlJOSkjgCKCATIBAgESALlCANIAyUIA4gCpSTkpI4AiQgAEEBIBNBCGogE0EkaiADIAQgByAIIAkQQyATQTBqJAAL6QQCB38BfiMAQRBrIgMkAAJAIAAvAQwiAkUEQCAAKAIAIAAoAgQgARCGAyEBDAELIANBCGogAUEIaikCADcDACADIAEpAgA3AwACQAJ/IAApAggiCaciBkGAgIAIcUUEQCADKAIEDAELIAAoAgAgAygCACADKAIEIgEgACgCBCgCDBEFAA0BIAAgBkGAgID/eXFBsICAgAJyIgY2AgggA0IBNwMAIAIgAUH//wNxayIBQQAgASACTRshAkEACyEHAkAgAygCDCIIRQRADAELIAMoAgghAQNAAn8CQAJAAkACQCABLwEAQQFrDgIBAgALIAFBBGooAgAMAwsgAUECai8BACIFDQFBAQwCCyABQQhqKAIADAELIAVB9v8XaiAFQZz/H2pxIAVBmPg3aiAFQfCxH2pxc0ERdkEBagshBSABQQxqIQEgBCAFaiEEIAhBAWsiCA0ACwsCQCAEIAdqIgEgAkH//wNxSQRAIAIgAWshBEEAIQFBACECAkACQAJAIAZBHXZBA3FBAWsOAwABAAILIAQhAgwBCyAEQf7/A3FBAXYhAgsgBkH///8AcSEIIAAoAgQhBSAAKAIAIQcDQCABQf//A3EgAkH//wNxTw0CIAFBAWohASAHIAggBSgCEBEDAEUNAAsMAgsgACgCACAAKAIEIAMQhgMhASAAIAk3AggMAgsgByAFIAMQhgMNAEEAIQYgBCACa0H//wNxIQIDQAJAIAZB//8DcSIEIAJJIQEgAiAETQ0AIAZBAWohBiAHIAggBSgCEBEDAEUNAQsLIAAgCTcCCAwBC0EBIQELIANBEGokACABC7kEAQh/AkACQCAAKAIIIgQgAU8EQCAAIAE2AgggASAERwRAIAQgAWshBCAAKAIEIAFBDGxqIQMDQCADKAIAIgAEQCADQQRqKAIAIABBAnRBBBCIDwsgA0EMaiEDIARBAWsiBA0ACwsgAigCACIARQ0BIAIoAgQgAEECdEEEEIgPDwsgAigCCCEGIAIoAgQhCCACKAIAIQkgASAEIgJrIgcgACgCACACa0sEQCAAIAIgB0EEQQwQ9gYgACgCCCECCyAAKAIEIAJBDGxqIQMCQCAHQQJJDQAgBkECdCEFIAZB/////wNLDQIgBUH8////B0sNAiAFBEAgBEF/cyABaiEBIAIgB2pBAWshAkEEIQoDQCAFQQQQsw4iBEUNBCAFBEAgBCAIIAX8CgAACyADQQhqIAY2AgAgA0EEaiAENgIAIAMgBjYCACADQQxqIQMgAUEBayIBDQALDAELIAEgBEF/c2oiAUEDcSEEIAdBAmtBA08EQCABQXxxIQEDQCADQoCAgIDAADcCACADQShqQgQ3AgAgA0EgakIANwIAIANBGGpCgICAgMAANwIAIANBEGpCBDcCACADQQhqQgA3AgAgA0EwaiEDIAFBBGsiAQ0ACwsgBARAA0AgA0KAgICAwAA3AgAgA0EIakEANgIAIANBDGohAyAEQQFrIgQNAAsLIAIgB2pBAWshAgsgAyAGNgIIIAMgCDYCBCADIAk2AgAgACACQQFqNgIICw8LIAogBUHg+cEAENMNAAvWBAIKfwF+IwBB4ABrIgckAAJAAkACQAJAIABFDQAgAEEQayIMKAIAQQFqIQogDCAKNgIAIApFDQEgACgCAA0CIABBfzYCACAHIAw2AgggByAANgIEIAcgAEEQaiINNgIAIANFDQAgA0EIayIKKAIAQQFqIQggCiAINgIAIAhFDQEgAygCACIIQX9GDQIgAyAIQQFqNgIAIAcgCjYCFCAHIAM2AhAgByADQQRqIg42AgwgBEUNACAEQQhrIggoAgBBAWohCSAIIAk2AgAgCUUNASAEKAIAIglBf0YNAiAEIAlBAWo2AgAgByAINgIgIAcgBDYCHCAHIARBBGoiDzYCGCAFRQ0AIAVBCGsiCSgCAEEBaiELIAkgCzYCACALRQ0BIAUoAgAiC0F/Rg0CIAUgC0EBajYCACAHIAk2AiwgByAFNgIoIAcgBUEEaiILNgIkIA0gAb0iEacgEUIgiKcQ7wkiDUUNAyAHQTBqIhBBBGogDiACIA8gCxDyCSAHQQA2AjAgDSAQIAZBAEcQjgQgBSAFKAIAQQFrNgIAIAkgCSgCAEEBayIFNgIAIAVFBEAgB0EsahCrDQsgBCAEKAIAQQFrNgIAIAggCCgCAEEBayIENgIAIARFBEAgB0EgahCoDQsgAyADKAIAQQFrNgIAIAogCigCAEEBayIDNgIAIANFBEAgB0EUahCoDQsgAEEANgIAIAwgDCgCAEEBayIANgIAIABFBEAgB0EIahDrDAsgB0HgAGokAA8LEJsPCwALEJwPAAtB3M3BAEHNAEG8zsEAENcLAAvmBAIOfwF+IwBB0AJrIgMkACABKAIAKAIAIQQgASgCBCIHKAIAQQFGBEAgBygCBCIFQf//A3EhCSAFQRB2IQpBASEFCyAEQSBJIQZBACEHIAEoAggiCCgCAEEBRgRAIAgpAwgiEUIgiKchCyARpyEMQQEhBwsgBEEAIAYbIQhBASEEAkAgASgCDCIGKAIAQQFHBEBBACEEDAELIAYpAwgiEUIgiKchDSARpyEOCyABKAIYKAIAIQ8gASgCHCgCACEQIAEoAhQoAgAhBiADIAEoAhAoAgA2AkQgA0HQ0cEANgI4IAMgAjYCNCADIAg2AjAgAyANNgIsIAMgDjYCKCADIAQ2AiQgAyALNgIgIAMgDDYCHCADIAc2AhggAyAJNgIUIAMgCjYCECADIAU2AgwgBigCPCEEIAYoAkAhAiADIBA2AkwgAyAPNgJIIAMgAjYCQCADIAQgAigCCEEBa0F4cWpBCGo2AjwgA0HoAGogASgCICgCACICQQhqKAIANgIAIANB0ABqIgRBCGogASgCJCgCACIFQQhqKQIANwMAIAMgAikCADcDYCADIAUpAgA3A1AgASgCKCgCACICKAIEIQEgA0HwAGoiBSADQQxqIAQgAigCACABKAIIQQFrQXhxakEIaiABEMkEIANBwAJqIAUgA0GYAmoQ5wECQCADKALIAgRAIAMpA8ACIREgAEIBNwMAIAAgETcDCCADKAL0ASIAQSFJDQEgAygCeCAAQQJ0QQQQiA8MAQsgAygC9AEiAUEhTwRAIAMoAnggAUECdEEEEIgPCyAAQgA3AwALIANB0AJqJAALzAQCCH8BfiMAQdAAayIGJAACQAJAAkACQCAARQ0AIABBCGsiCigCAEEBaiEHIAogBzYCACAHRQ0BIAAoAgAiB0F/Rg0CIAAgB0EBajYCACAGIAo2AhwgBiAANgIYIAYgAEEEaiIMNgIUIAJFDQAgAkEIayIHKAIAQQFqIQggByAINgIAIAhFDQEgAigCACIIQX9GDQIgAiAIQQFqNgIAIAYgBzYCKCAGIAI2AiQgBiACQQRqIgs2AiAgA0UNACADQQhrIggoAgBBAWohCSAIIAk2AgAgCUUNASADKAIAIglBf0YNAiADIAlBAWo2AgAgBiAINgI0IAYgAzYCMCAGIANBBGoiDTYCLCAMIAG9Ig6nIA5CIIinELgMIglFDQMgBkE4aiIMQQhqIAtBCGooAgA2AgAgBiALKQIANwM4IAZBzABqIA1BCGooAgA2AgAgBiANKQIANwJEIAZBCGogCSgCQCAJKAJEIgsoAghBAWtBeHFqQQhqIAlB9ABqIAwgBCAFQQBHIAsoAhgRCQAgBioCDCEEIAYoAgghBSADIAMoAgBBAWs2AgAgCCAIKAIAQQFrIgM2AgAgA0UEQCAGQTRqEKgNCyACIAIoAgBBAWs2AgAgByAHKAIAQQFrIgI2AgAgAkUEQCAGQShqEKgNCyAAIAAoAgBBAWs2AgAgCiAKKAIAQQFrIgA2AgAgAEUEQCAGQRxqEO8MCyAGQdAAaiQAIARDAACAvyAFQQFxGw8LEJsPCwALEJwPAAtBzM7BAEHMAEGYz8EAENcLAAuABAIBfw19IwBB4AFrIgYkACADKgIAIAIqAhAiEJMiCCACKgIEIguUIAMqAgQgAioCFCIRkyIMIAIqAgAiDZSTIgkgCZIhCiAMIAIqAggiCZQgAyoCCCACKgIYIhKTIg4gC5STIg8gD5IhByAGIA4gAioCDCIPIAqUIAsgB5QgDSAOIA2UIAggCZSTIg4gDpIiDpSTkpIiEzgCDCAGIAggDyAHlCAJIA6UIAsgCpSTkpIiCDgCBCAGIAwgDyAOlCANIAqUIAkgB5STkpIiCjgCCCAGQdgBakIANwIAIAZCADcC0AEgBkKCgICAMDcCKCAGQoCAgIAQNwIgIAZBMGpBAEGgAfwLACAGQRBqIAEoAgQgASgCCCAGQSBqIAZBBGogBBAuIAACf0ECIAUgCCAGKgIQIgWTIgcgB5QgCiAGKgIUIgqTIgcgB5SSIBMgBioCGCIHkyIIIAiUkpFdDQAaQQIgBi0AHCIBQQJGDQAaIAAgByAPIA0gCpQgCyAFlJMiCCAIkiIIlCANIAkgBZQgDSAHlJMiDCAMkiIMlCALIAsgB5QgCSAKlJMiByAHkiIHlJOSkiASkjgCCCAAIAogDyAMlCAJIAeUIA0gCJSTkpIgEZI4AgQgACAQIAUgDyAHlCALIAiUIAkgDJSTkpKSOAIAIAELOgAMIAZB4AFqJAALhAwCFn8GfiMAQRBrIg8kACAAKQMQQjiJIAGFIhhCIIgiGiABQpeSnKrbtrXCP4UiGUIgiCIbfiAYQv////8PgyIYIBlC/////w+DIhl+hSAZIBp+IBggG36FQiCJhSIYQv////8Pg0IChSIaQt2h8csMfiAYQiCIIhhCt9OwhQx+hSAaQrfTsIUMfiAYQt2h8csMfoVCIIiFIRogACgCCEUEQCAPQQhqIRAjAEEwayIEJAAgBCAAQRBqNgIoIAAoAgwhByAEIARBKGo2AiwCQAJAAkACfwJAIAcgB0EBaiICTQRAIAAoAgQiDCAMQQFqQQN2QQdsIAxBCEkbIgNBAXYgAkkEQCADQQFqIgMgAiACIANJGyICQQ9JDQIgAkH/////AU0EQEF/IAJBA3RBB25BAWtndiICQf7///8BSw0FIAJBAWoMBAsQpgwgBCgCJCECIAQoAiAhAwwGCyAAIARBLGpB9gBBCBDLAkGBgICAeCEDDAULEKYMIAQoAgwhAiAEKAIIIQMMBAtBBEEIQRAgAkEISRsgAkEESRsLIgJBA3QiBSACQQhqIgkgBWoiA0sNACADQfj///8HSw0AIANBCBCzDiIGDQFBCCADQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAQoAhQhAiAEKAIQIQMMAQsgBSAGaiEGIAkEQCAGQf8BIAn8CwALIAJBAWsiCiACQQN2QQdsIApBCEkbIRECQCAHRQRAIAAoAgAhBQwBCyAGQQhqIRIgACgCACIFQQhrIRMgBSkDAEJ/hUKAgYKEiJCgwIB/gyEYIAQoAighFEEAIQIgByEJIAUhAwNAIBhQBEADQCACQQhqIQIgA0EIaiIDKQMAQoCBgoSIkKDAgH+DIhhCgIGChIiQoMCAf1ENAAsgGEKAgYKEiJCgwIB/hSEYCyAGIBMgGHqnQQN2IAJqIhVBA3RrKQAAIhkgFCkDAEI4iYUiG0IgiCIcIBlCl5Kcqtu2tcI/hSIZQiCIIh1+IBtC/////w+DIhsgGUL/////D4MiGX6FIBkgHH4gGyAdfoVCIImFIhlC/////w+DQgKFIhtC3aHxywx+IBlCIIgiGUK307CFDH6FIBtCt9OwhQx+IBlC3aHxywx+hUIgiIWnIhYgCnEiCGopAABCgIGChIiQoMCAf4MiGVAEQEEIIQ0DQCAIIA1qIQggDUEIaiENIAYgCCAKcSIIaikAAEKAgYKEiJCgwIB/gyIZUA0ACwsgGEIBfSAYgyEYIAYgGXqnQQN2IAhqIApxIghqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQgLIAYgCGogFkEZdiINOgAAIBIgCEEIayAKcWogDToAACAGIAhBf3NBA3RqIAUgFUF/c0EDdGopAAA3AwAgCUEBayIJDQALCyAAIAo2AgQgACAGNgIAIAAgESAHazYCCEGBgICAeCEDIAxFDQAgBSAMQQN0QQ9qQXhxIgJrIAIgDGpBCWpBCBCIDwsgECACNgIEIBAgAzYCACAEQTBqJAALIAAoAgAiA0EIayEJIAAoAgQiByAap3EhAiAaQhmIIhlC/wCDQoGChIiQoMCAAX4hGwNAAn8CQAJAIAIgA2opAAAiGiAbhSIYQoGChIiQoMCAAX0gGEJ/hYNCgIGChIiQoMCAf4MiGEIAUgRAA0BBASEFIAEgCSAYeqdBA3YgAmogB3FBA3RrKQIAUQ0CIBhCAX0gGIMiGEIAUg0ACwsgGkKAgYKEiJCgwIB/gyEYIA5FBEAgGFANAiAYeqdBA3YgAmogB3EhCwtBASAYIBpCAYaDUA0CGkEAIQUgAyALaiwAACICQQBOBEAgAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhAgsgAyALaiAZp0H/AHEiDjoAACADIAtBCGsgB3FqQQhqIA46AAAgACAAKAIIIAJBAXFrNgIIIAAgACgCDEEBajYCDCADIAtBA3RrQQhrIAE3AgALIA9BEGokACAFDwtBAAshDiAXQQhqIhcgAmogB3EhAgwACwAL3gQCCX8BfiMAQSBrIgIkAAJAIAEoAgQiA0UEQCAAQYCAgIB4NgIADAELIAEgA0EBazYCBAJ/IAEoAgAiASgCBCIEQQdNBEAgAkKBygA3AwhBASEFIAJBCGoQog0MAQsgASAEQQhrIgQ2AgQgASABKAIAIgNBCGo2AgAgAiADKQAAEKcIIAIoAgAhBSACKAIECyEDAkACQAJAIAVBAXENACADRQRAQQQhA0EAIQVBACEBDAMLQdWqBSADIANB1aoFTxsiBUEMbCIGQQQQsw4iB0UNASACIAc2AgwgAiAFNgIIQQAhBiACQQA2AhAgASgCACEJQQAhBQNAAkACQCAEQQRJDQAgASAEQQRrIgQ2AgQgASAGIAlqIghBBGoiBzYCACAEQQRJDQAgCCgAACEKIAEgBEEEayIENgIEIAEgB0EEaiIINgIAIARBA0sNAQsgAkEAOgAbIAJBJTsAGSACQQA2AhwgAkEBOgAYIAJBGGoQog0hAyACKAIIIgFFDQIgAigCDCABQQxsQQQQiA8MAgsgBzUAACELIAEgBEEEayIENgIEIAEgCEEEajYCACALIAg1AABCIIaEIQsgAigCCCAFRgRAIAJBCGpByKvBABCTCAsgAigCDCAGaiIHIAo2AgAgB0EEaiALNwIAIAIgBUEBaiIFNgIQIAZBDGohBiADIAVHDQALIAIoAgwhAyACKAIIIgFBgICAgHhHDQILIABBgYCAgHg2AgAgACADNgIEDAILQQQgBkG4q8EAENMNAAsgACAFNgIIIAAgAzYCBCAAIAE2AgALIAJBIGokAAvzBAINfwF9IwBBsAJrIgMkACADIAE2AhwgA0EgaiIBQSBqIAJBIGooAgA2AgAgAUEYaiACQRhqKQIANwMAIAFBEGogAkEQaikCADcDACABQQhqIAJBCGopAgA3AwAgAyACKQIANwMgIANB+AFqIAIgACgCACIBEMAJIAAoAgQiAioCACIQQwAAAABgBEAgAyAQIAMqAowCkjgCXCADIBAgAyoCiAKSOAJYIAMgECADKgKEApI4AlQgAyADKgKAAiAQkzgCUCADIAMqAvwBIBCTOAJMIAMgAyoC+AEgEJM4AkggACgCMCEFIAAoAiwhBiAAKAIoIQcgACgCJCEIIAAoAiAhCSAAKAIcIQogACgCGCELIAAoAhQhDCAAKAIQIQ0gACgCDCEEIAAoAgghDiADQeAAaiIPIAAoAjQgA0HIAGoQ/wYgA0EQaiAPEOEDIAMoAhBBAXEEQCADKAIUIQAgBCgCDCEEA0AgAyAANgL0ASADIAU2AqwCIAMgAjYCqAIgAyABNgKgAiADIAY2ApwCIAMgBzYCmAIgAyAINgKUAiADIAk2ApACIAMgCjYCjAIgAyALNgKIAiADIAw2AoQCIAMgDTYC+AEgAyADQSBqNgKkAiADIANB9AFqNgKAAiADIANBHGo2AvwBIA4gACADQfgBakHk7sEAIAQRAgAgA0EIaiADQeAAahDhAyADKAIMIQAgAygCCEEBcQ0ACwsgAygC5AEiAEEhTwRAIAMoAmggAEECdEEEEIgPCyADQbACaiQADwsgA0EANgJwIANBATYCZCADQZTXwQA2AmAgA0IENwJoIANB4ABqQZzXwQAQuA0AC4IEARB9IAIqAgAgASoCEJMiCiABKgIEIgSUIAIqAgQgASoCFJMiESABKgIAIgeUkyIFIAWSIQUgESABKgIIIgaUIAIqAgggASoCGJMiCCAElJMiCSAJkiENIAggASoCDCISIAWUIAQgDZQgByAIIAeUIAogBpSTIgggCJIiE5STkpIhCSAKIBIgDZQgBiATlCAEIAWUk5KSIg8gD5QgCSAJlJKRIgtDAAAANF8hASAAKgIEIg5DAAAAACAJIAuVIAEblCEKIA5DAACAPyAPIAuVIAEblCEIAkACfSAAKgIAIgyMIRACQCALIA5fIgAgDCARIBIgE5QgByAFlCAGIA2Uk5KSIgZgcSAGIBBgcSIBRQRAAkACQCAGIAxeRQRAIBAgBiAGIBBdIgIbIQUgAg0BIAohBCAIIQcMBgsgAA0BIAohBCAMIQUgCCEHDAULIAohBCAIIQcgAA0CDAQLIAwhBSAJDAILIAkhBCAGIQUgDyEHIAMNAiAOIAuTIQsgDCAGkyINIAwgBpIiDl0EQCAMIQUgCyANXg0DCyANIA5eRQRAIAohBCAGIQUgCCEHDAMLIAohBCAGIQUgCCEHIAsgDl5FDQILIBAhBSAJCyEEIA8hBwsgBCAJkyIEIASUIAUgBpMiBCAElCAHIA+TIgQgBJSSkpEiBCAEjCAEIAEbIAMbC5sEAgp/An4jAEGAA2siCiQAAkAgAiABKAIUIgZPBEAgAEECOgC9AgwBCyABKAIEIQQCQCABKAIIIgsgASgCECIHIAJBgANsaiIFKQP4AiINpyIDTQ0AIAUpA/ACIg6nIQkgDUIgiKchCAJAIAIgBCADQQR0aiIMKAIIIgNHBEADQCADIAZPDQIgByADQYADbGoiDCgC8AIiAyACRw0ACyAMQfACaiAJNgIADAELIAxBCGogCTYCAAsgCCALTw0AIA5CIIinIQkgAiAEIAhBBHRqIggoAgwiA0cEQANAIAMgBk8NAiAHIANBgANsaiIIKAL0AiIDIAJHDQALIAhB9AJqIAk2AgAMAQsgCEEMaiAJNgIACyAKIAVBgAP8CgAAIAUgByAGQQFrIgNBgANsakGAA/wKAAAgASADNgIUAkAgAiADTw0AIAcgAkGAA2xqKQP4AiINpyIBIAtPDQAgDUIgiKchBgJAIAQgAUEEdGoiBSgCCCIBIANHBEADQCABIANPDQIgAyAHIAFBgANsaiIFKALwAiIBRw0ACyAFQfACaiACNgIADAELIAVBCGogAjYCAAsgBiALTw0AIAQgBkEEdGoiBCgCDCIBIANHBEADQCABIANPDQIgAyAHIAFBgANsaiIEKAL0AiIBRw0ACyAEQfQCaiACNgIADAELIARBDGogAjYCAAsgACAKQfAC/AoAAAsgCkGAA2okAAu+BAEIfyMAQRBrIgMkACADIAE2AgQgAyAANgIAIANCoICAgA43AggCfwJAAkACQCACKAIQIgkEQCACKAIUIgANAQwCCyACKAIMIgBFDQEgAigCCCIBIABBA3RqIQQgAEEBa0H/////AXFBAWohBiACKAIAIQADQAJAIABBBGooAgAiBUUNACADKAIAIAAoAgAgBSADKAIEKAIMEQUARQ0AQQEMBQtBASABKAIAIAMgAUEEaigCABEDAA0EGiAAQQhqIQAgAUEIaiIBIARHDQALDAILIABBGGwhCiAAQQFrQf////8BcUEBaiEGIAIoAgghBCACKAIAIQADQAJAIABBBGooAgAiAUUNACADKAIAIAAoAgAgASADKAIEKAIMEQUARQ0AQQEMBAtBACEHQQAhCAJAAkACQCAFIAlqIgFBCGovAQBBAWsOAgECAAsgAUEKai8BACEIDAELIAQgAUEMaigCAEEDdGovAQQhCAsCQAJAAkAgAS8BAEEBaw4CAQIACyABQQJqLwEAIQcMAQsgBCABQQRqKAIAQQN0ai8BBCEHCyADIAc7AQ4gAyAIOwEMIAMgAUEUaigCADYCCEEBIAQgAUEQaigCAEEDdGoiASgCACADIAEoAgQRAwANAxogAEEIaiEAIAVBGGoiBSAKRw0ACwwBCwsCQCAGIAIoAgRPDQAgAygCACACKAIAIAZBA3RqIgAoAgAgACgCBCADKAIEKAIMEQUARQ0AQQEMAQtBAAshASADQRBqJAAgAQuTBAEMfyABQQFrIQ4gACgCBCEKIAAoAgAhCyAAKAIIIQwCQANAIAUNAQJ/AkAgAiAESQ0AA0AgASAEaiEFAkACQAJAIAIgBGsiB0EHTQRAIAIgBEcNASACIQQMBQsCQCAFQQNqQXxxIgYgBWsiAwRAQQAhAANAIAAgBWotAABBCkYNBSADIABBAWoiAEcNAAsgB0EIayIAIANPDQEMAwsgB0EIayEACwNAIAYoAgAiCUGAgoQIIAlBipSo0ABza3IgBkEEaigCACIJQYCChAggCUGKlKjQAHNrcnFBgIGChHhxQYCBgoR4Rw0CIAZBCGohBiAAIANBCGoiA08NAAsMAQtBACEAA0AgACAFai0AAEEKRg0CIAcgAEEBaiIARw0ACyACIQQMAwsgAyAHRgRAIAIhBAwDCwNAIAMgBWotAABBCkYEQCADIQAMAgsgByADQQFqIgNHDQALIAIhBAwCCyAAIARqIgZBAWohBAJAIAIgBk0NACAAIAVqLQAAQQpHDQBBACEFIAQiBgwDCyACIARPDQALCyACIAhGDQJBASEFIAghBiACCyEAAkAgDC0AAARAIAtB1KrEAEEEIAooAgwRBQANAQsgACAIayEHQQAhAyAAIAhHBEAgACAOai0AAEEKRiEDCyABIAhqIQAgDCADOgAAIAYhCCALIAAgByAKKAIMEQUARQ0BCwtBASENCyANC8cEAgd/BH4jAEEQayIDJAACQCABKAIEIgJFBEAgAEIANwMIIABCADcDAAwBCyABIAJBAWs2AgQCfwJAAkACQCABKAIAIgEoAgQiBEEESQ0AIAEoAgAhAiABIARBBGsiBjYCBCABIAJBBGo2AgAgBkEESQ0AIAIoAAAhBiABIARBCGsiBTYCBCABIAJBCGo2AgAgBUEESQ0AIAI1AAQhCSABIARBDGsiBTYCBCABIAJBDGo2AgAgBUEESQ0BIAI1AAghCiABIARBEGsiBTYCBCABIAJBEGo2AgAgBUEESQ0CIAIoAAwhBSABIARBFGsiBzYCBCABIAJBFGo2AgAgB0EESQ0CIAIoABAhByABIARBGGsiCDYCBCABIAJBGGo2AgAgCEEESQ0CIAI1ABQhCyABIARBHGsiCDYCBCABIAJBHGo2AgAgCEEESQRAIANCgcoANwMIIANBCGoQog0MBAsgAjUAGCEMIAEgBEEgazYCBCABIAJBIGo2AgAgAigAHCEBIABCADcDCCAAQgE3AwAgACABNgIsIAAgDEIghiALhDcCJCAAIAc2AiAgACAFNgIcIAAgCkIghiAJhDcCFCAAIAY2AhAMBAsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQog0MAgsgA0KBygA3AwggA0EIahCiDQwBCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggA0EIahCiDQshASAAQgA3AwggAEICNwMAIAAgATYCEAsgA0EQaiQAC+cFAgp/AX4jAEHgAGsiByQAAkACQAJAAkAgAEUNACAAQQhrIgooAgBBAWohBiAKIAY2AgAgBkUNASAAKAIADQIgAEF/NgIAIAcgCjYCDCAHIAA2AgggByAAQQRqIgg2AgQgA0UNACADQQhrIgsoAgBBAWohBiALIAY2AgAgBkUNASADKAIAIgZBf0YNAiADIAZBAWo2AgAgByALNgIYIAcgAzYCFCAHIANBBGoiCTYCECAERQ0AIARBCGsiDCgCAEEBaiEGIAwgBjYCACAGRQ0BIAQoAgAiBkF/Rg0CIAQgBkEBajYCACAHIAw2AiQgByAENgIgIAcgBEEEaiIONgIcIAVFDQAgBUEIayINKAIAQQFqIQYgDSAGNgIAIAZFDQEgBSgCACIGQX9GDQIgBSAGQQFqNgIAIAcgDTYCMCAHIAU2AiwgByAFQQRqIgY2AiggCCABvSIQpyAQQiCIpxDwCSIPRQ0DIAdBNGoiCCAJIAIgDiAGEPIJIwBBEGsiCSQAQSxBBBCzDiIGRQRAQQRBLEGQxMQAKAIAIgBBzAggABsRAAAACyAGIAgpAgA3AgAgBkEoaiAIQShqKAIANgIAIAZBIGogCEEgaikCADcCACAGQRhqIAhBGGopAgA3AgAgBkEQaiAIQRBqKQIANwIAIAZBCGogCEEIaikCADcCACAJIAY2AgwgCUECNgIIIA8gCUEIahCBBiAJQRBqJAAgBSAFKAIAQQFrNgIAIA0gDSgCAEEBayIFNgIAIAVFBEAgB0EwahCrDQsgBCAEKAIAQQFrNgIAIAwgDCgCAEEBayIENgIAIARFBEAgB0EkahCoDQsgAyADKAIAQQFrNgIAIAsgCygCAEEBayIDNgIAIANFBEAgB0EYahCoDQsgAEEANgIAIAogCigCAEEBayIANgIAIABFBEAgB0EMahDvDAsgB0HgAGokAA8LEJsPCwALEJwPAAtBzM7BAEHMAEGoz8EAENcLAAvuAwEXfSABKgIEIgwgASoCECIHkkMAAAA/lCINIAIqAgAiA5QgASoCACIJIAEqAgwiCpJDAAAAP5QiEyACKgIEIgSUkyIFIAWSIRAgEyACKgIIIgWUIAEqAggiDiABKgIUIg+SQwAAAD+UIgggA5STIgYgBpIhESAAIAIqAhggCCACKgIMIgYgEJQgAyARlCAEIAQgCJQgDSAFlJMiCCAIkiIIlJOSkpIiFSAPIA6TQwAAAD+UIg4gBSAFlCIPIAYgBpQiFiADIAOUIheTIhIgBCAElCIUk5KLlCAHIAyTQwAAAD+UIgwgBCAFlCIHIAeSIgsgAyAGlCIHIAeSIhiSi5QgCiAJk0MAAAA/lCIHIAUgA5QiCSAJkiIJIAQgBpQiCiAKkiIKk4uUkpIiGZI4AhQgACACKgIUIA0gBiARlCAFIAiUIAMgEJSTkpKSIg0gDiALIBiTi5QgByAEIAOUIgMgA5IiAyAFIAaUIgsgC5IiC5KLlCAMIBQgEpIgD5OLlJKSIhKSOAIQIAAgAioCECATIAYgCJQgBCAQlCAFIBGUk5KSkiIEIA4gCSAKkouUIAwgAyALk4uUIAcgFyAWkiAUkyAPk4uUkpIiA5I4AgwgACAVIBmTOAIIIAAgDSASkzgCBCAAIAQgA5M4AgALuAQCCH8BfiMAQSBrIgMkACAALQAcRQRAIAAtAAAhASAAQQE6AAAgAyABOgAHAkACQCABQQFHBEAgAC0AHA0CIAAoAgwiAUUNASABQQxsIQcgACgCCCEIQQAhAUEBIQIDQAJAAkAgASAIaiIGKAIAIgQoAhRBmIjEAEYNACAEIAQoAgwiBSAGQQRqKAIAIAUbNgIMIAUNACACQQFrIQUgBkEIaigCACIGBEAgBCAGNgIQCyAAKAIMIgQgBU0NASADQRBqIAAoAgggAWoiAUEIaigCADYCACADIAEpAgA3AwggBCACa0EMbCICBEAgASABQQxqIAL8CgAACyAAIARBAWs2AgwgAygCCCIBRQ0EIAEgASgCACIBQQFrNgIAIAFBAUcNBCADQQhqENoLDAQLIAJBAWohAiAHIAFBDGoiAUcNAQwDCwsgBSAEQfC3wQAQhwsACyADQgA3AhQgA0KBgICAwAA3AgwgA0GguMEANgIIIANBB2ogA0EIakGouMEAEP8MAAsgACgCGCECQQAhBCAAQQA2AhggAgRAIAAoAhQhASACQQxsIQYDQCADQQhqIgdBCGogAUEIaigCADYCACADIAEpAgAiCTcDCCAJpyICKAIMIQUgAiAFIAMoAgwgBRs2AgwgAiACKAIAIgJBAWs2AgAgAkEBRgRAIAcQ2gsLIAFBDGohASAGQQxrIgYNAAsLIAAgACgCDAR/QQEFIAAoAhgLRToAHAsgAEEAOgAACyADQSBqJAALuAQCCH8BfiMAQSBrIgMkACAALQAcRQRAIAAtAAAhASAAQQE6AAAgAyABOgAHAkACQCABQQFHBEAgAC0AHA0CIAAoAgwiAUUNASABQQxsIQcgACgCCCEIQQAhAUEBIQIDQAJAAkAgASAIaiIGKAIAIgQoAhRBmIjEAEYNACAEIAQoAgwiBSAGQQRqKAIAIAUbNgIMIAUNACACQQFrIQUgBkEIaigCACIGBEAgBCAGNgIQCyAAKAIMIgQgBU0NASADQRBqIAAoAgggAWoiAUEIaigCADYCACADIAEpAgA3AwggBCACa0EMbCICBEAgASABQQxqIAL8CgAACyAAIARBAWs2AgwgAygCCCIBRQ0EIAEgASgCACIBQQFrNgIAIAFBAUcNBCADQQhqENoLDAQLIAJBAWohAiAHIAFBDGoiAUcNAQwDCwsgBSAEQaTcwQAQhwsACyADQgA3AhQgA0KBgICAwAA3AgwgA0GE3cEANgIIIANBB2ogA0EIakGM3cEAEP8MAAsgACgCGCECQQAhBCAAQQA2AhggAgRAIAAoAhQhASACQQxsIQYDQCADQQhqIgdBCGogAUEIaigCADYCACADIAEpAgAiCTcDCCAJpyICKAIMIQUgAiAFIAMoAgwgBRs2AgwgAiACKAIAIgJBAWs2AgAgAkEBRgRAIAcQ2gsLIAFBDGohASAGQQxrIgYNAAsLIAAgACgCDAR/QQEFIAAoAhgLRToAHAsgAEEAOgAACyADQSBqJAAL2gMBFH0CfSACKAIAQQFHBEBD//9//wwBCyACKgIEIgYgBCoCECIUIAEqAgAiFZOUIAIqAggiCSAEKgIUIhYgASoCBCIXk5SSIAIqAgwiCiAEKgIYIhAgASoCCCIYk5SSQwAAAABgIQEgAyoCCCAEKgIMIg4gBCoCACIHIAkgCYwgARsiCZQgBiAGjCABGyIGIAQqAgQiC5STIgggCJIiD5QgCyAKIAqMIAEbIgogC5QgCSAEKgIIIgiUkyIFIAWSIgyUIAcgBiAIlCAHIAqUkyIFIAWSIg2Uk5IgCpOYIQVD//9//yAKIBAgBSAOIAcgAyoCBCAOIA2UIAcgD5QgCCAMlJOSIAmTmCIQlCALIAMqAgAgDiAMlCAIIA2UIAsgD5STkiAGk5giD5STIgwgDJIiDJQgByAIIA+UIAcgBZSTIg0gDZIiDZQgCyALIAWUIAggEJSTIgUgBZIiBZSTkpKSIBiTlCAGIBQgDyAOIAWUIAsgDJQgCCANlJOSkpIgFZOUIAkgFiAQIA4gDZQgCCAFlCAHIAyUk5KSkiAXk5SSkiIHQ///f/9eRQ0AGiAKIREgCSESIAYhEyAHCyEGIAAgETgCDCAAIBI4AgggACATOAIEIAAgBjgCAAu7BAIJfQF/IABCgoCAgDA3AgggAEKAgICAEDcCACAAIAAoArwBIgs2AqwBIAAgACkCsAE3AqABIABBqAFqIABBuAFqKAIANgIAAkACQAJAAkACQAJAIAsOAwECAwALQYDUwgBBKEGIjMMAENYMAAsgACoCECABKgIAkyICIAKUIAAqAhQgASoCBJMiAiAClJIgACoCGCABKgIIkyICIAKUkkMAAKA1XUUNAwwCCyAAKgI0IAAqAhAiApMiBSABKgIEIAAqAhQiBJMiBpQgACoCOCAEkyIEIAEqAgAgApMiApSTIgMgA5QgBCABKgIIIAAqAhgiBJMiA5QgACoCPCAEkyIEIAaUkyIGIAaUIAQgApQgBSADlJMiAiAClJKSQwAAoDVdDQEMAgsgACoCNCAAKgIQIgSTIgcgACoCXCAAKgIUIgaTIgWUIAAqAjggBpMiAyAAKgJYIASTIgiUkyECIAMgACoCYCAAKgIYIgOTIgmUIAAqAjwgA5MiCiAFlJMhBSABKgIIIAOTIAIgAiAClCAFIAWUIAogCJQgByAJlJMiAiAClJKSkSIDlZQgASoCACAEkyAFIAOVlCABKgIEIAaTIAIgA5WUkpKLQwAAoDVdRQ0BC0EADwsgACALQQFqNgK8ASALQSRsIABqIgAgASkCADcCNCAAQdQAaiABQSBqKAIANgIAIABBzABqIAFBGGopAgA3AgAgAEHEAGogAUEQaikCADcCACAAQTxqIAFBCGopAgA3AgBBAQv9AwINfQF/IwBBQGoiEyQAIAMqAgAgAioCECIPkyIHIAIqAgQiDJQgAyoCBCACKgIUIhCTIgggAioCACINlJMiCSAJkiEKIAggAioCCCIJlCADKgIIIAIqAhgiEZMiCyAMlJMiDiAOkiEGIBMgCyACKgIMIg4gCpQgDCAGlCANIAsgDZQgByAJlJMiCyALkiILlJOSkiISOAIIIBMgByAOIAaUIAkgC5QgDCAKlJOSkiIHOAIAIBMgCCAOIAuUIA0gCpQgCSAGlJOSkiIKOAIEIAFBCGoiAioCACEGIAEqAgAhCCABKgIEIQsgE0EgaiACKAIANgIAIBMgBow4AhQgEyALjDgCECATIAiMOAIMIBMgASkCADcCGCATQSRqIBNBDGogEyAEEIsDQQIhAiAFIAcgEyoCJCIFkyIGIAaUIAogEyoCKCIKkyIGIAaUkiASIBMqAiwiBpMiByAHlJKRXUUEQCATLQAwIQIgACAGIA4gDSAKlCAMIAWUkyIHIAeSIgeUIA0gCSAFlCANIAaUkyIIIAiSIgiUIAwgDCAGlCAJIAqUkyIGIAaSIgaUk5KSIBGSOAIIIAAgCiAOIAiUIAkgBpQgDSAHlJOSkiAQkjgCBCAAIA8gBSAOIAaUIAwgB5QgCSAIlJOSkpI4AgALIAAgAjoADCATQUBrJAALmwQCAX8KfSMAQUBqIgQkACACKgIAIAEqAhCTIgkgASoCBCIHlCACKgIEIAEqAhSTIgwgASoCACILlJMiBSAFkiEFIAwgASoCCCIIlCACKgIIIAEqAhiTIgogB5STIgYgBpIhBiAEIAogASoCDCINIAWUIAcgBpQgCyAKIAuUIAkgCJSTIgogCpIiDpSTkpIiCjgCCCAEIAwgDSAOlCALIAWUIAggBpSTkpIiCzgCBCAEIAkgDSAGlCAIIA6UIAcgBZSTkpIiBzgCACAAQQhqIgEqAgAhBSAAKgIAIQYgACoCBCEIIARBIGoiAiABKAIANgIAIAQgACkCADcCGCAEIAWMIgU4AhQgBSAKkyIFIAogAioCAJMiCSAFIAlgGyIFQwAAAAAgBUMAAAAAYBshBSAEIAiMIgg4AhAgCCALkyIIIAsgBCoCHJMiCSAIIAlgGyIIQwAAAAAgCEMAAAAAYBshCCAEIAaMIgY4AgwgBiAHkyIGIAcgBCoCGJMiCSAGIAlgGyIGQwAAAAAgBkMAAAAAYBshBgJ9AkACQCADDQAgBkMAAAAAXA0AIAhDAAAAAFwNACAFQwAAAABbDQELIAYgBpQgCCAIlJIgBSAFlJKRDAELIARBJGogBEEMaiAEQQAQiwMgBCoCJCAHkyIHIAeUIAQqAiggC5MiByAHlJIgBCoCLCAKkyIHIAeUkpGMCyEHIARBQGskACAHC7YEAgd/BX4jAEEQayIDJAAgAAJ/AkACQCABKAIEIgRBBEkNACABKAIAIQIgASAEQQRrIgc2AgQgASACQQRqNgIAIAdBBEkNACACKAAAIQcgASAEQQhrIgU2AgQgASACQQhqNgIAIAVBBEkNACACNQAEIQkgASAEQQxrIgU2AgQgASACQQxqNgIAIAVBBEkNASACNQAIIQogASAEQRBrIgU2AgQgASACQRBqNgIAIAVBBEkNASACKAAMIQUgASAEQRRrIgY2AgQgASACQRRqNgIAIAZBBEkNASACNQAQIQsgASAEQRhrIgY2AgQgASACQRhqNgIAAkAgBkEESQ0AIAI1ABQhDCABIARBHGsiBjYCBCABIAJBHGo2AgAgBkEESQ0AIAIoABghBiABIARBIGsiCDYCBCABIAJBIGo2AgAgCEEESQ0AIAI1ABwhDSAAIAY2AhwgACAMQiCGIAuENwIUIAAgBTYCECAAIApCIIYgCYQ3AgggACAHNgIEIAEgBEEkazYCBCABIAJBJGo2AgAgACANIAI1ACBCIIaENwIgQQAMAwsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCiDTYCBEEBDAILIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQog02AgRBAQwBCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggACADQQhqEKINNgIEQQELNgIAIANBEGokAAvGCwIWfwR+IwBBEGsiESQAIAApAxAgAa0gAq1CIIaEhSIaQiCIIhxCt9OwhQx+IBpC/////w+DIhpC3aHxywx+hSAcQt2h8csMfiAaQrfTsIUMfoVCIIiFIRwgACgCCEUEQCARQQhqIRIjAEEwayIGJAAgBiAAQRBqNgIoIAAoAgwhCiAGIAZBKGo2AiwCQCAKIApBAWoiBE0EQCAAKAIEIg8gD0EBakEDdkEHbCAPQQhJGyIFQQF2IARJBEACQAJAAkACfyAFQQFqIgUgBCAEIAVJGyIEQQ9PBEAgBEH/////AUsNAkF/IARBA3RBB25BAWtndkEBagwBC0EEQQhBECAEQQhJGyAEQQRJGwsiBK1CDH4iGkIgiKcNASAapyIFQXhLDQEgBUEHakF4cSIIIARBCGoiC2ohBSAFIAhJDQEgBUH4////B0sNASAFQQgQsw4iCQ0CQQggBUGQxMQAKAIAIgBBzAggABsRAAAACxCmDCAGKAIkIQQgBigCICEFDAQLEKYMIAYoAhQhBCAGKAIQIQUMAwsgCCAJaiEJIAsEQCAJQf8BIAv8CwALIARBAWsiDSAEQQN2QQdsIA1BCEkbIRMCQCAKRQRAIAAoAgAhCAwBCyAJQQhqIRQgACgCACIIQQxrIRUgCCkDAEJ/hUKAgYKEiJCgwIB/gyEaIAYoAighFkEAIQQgCiELIAghBQNAIBpQBEADQCAEQQhqIQQgBUEIaiIFKQMAQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1ENAAsgGkKAgYKEiJCgwIB/hSEaCyAJIBYpAwAgFSAaeqdBA3YgBGoiF0F0bGopAgCFIhtCIIgiHUK307CFDH4gG0L/////D4MiG0LdofHLDH6FIB1C3aHxywx+IBtCt9OwhQx+hUIgiIWnIhggDXEiB2opAABCgIGChIiQoMCAf4MiG1AEQEEIIQwDQCAHIAxqIQcgDEEIaiEMIAkgByANcSIHaikAAEKAgYKEiJCgwIB/gyIbUA0ACwsgGkIBfSAagyEaIAkgG3qnQQN2IAdqIA1xIgdqLAAAQQBOBEAgCSkDAEKAgYKEiJCgwIB/g3qnQQN2IQcLIAcgCWogGEEZdiIMOgAAIBQgB0EIayANcWogDDoAACAJIAdBf3NBDGxqIgdBCGogCCAXQX9zQQxsaiIMQQhqKAAANgAAIAcgDCkAADcAACALQQFrIgsNAAsLIAAgDTYCBCAAIAk2AgAgACATIAprNgIIQYGAgIB4IQUgD0UNAiAIIA9BDGxBE2pBeHEiBGsgBCAPakEJakEIEIgPDAILIAAgBkEsakH0AEEMEMsCQYGAgIB4IQUMAQsQpgwgBigCDCEEIAYoAgghBQsgEiAENgIEIBIgBTYCACAGQTBqJAALIAAoAgQiCiAcp3EhBSAcQhmIIhtC/wCDQoGChIiQoMCAAX4hHSAAKAIAIQQDQAJ/AkACQCAEIAVqKQAAIhwgHYUiGkKBgoSIkKDAgAF9IBpCf4WDQoCBgoSIkKDAgH+DIhpCAFIEQANAIARBACAaeqdBA3YgBWogCnFrIghBDGxqIgtBDGsoAgAgAUYEQCACIAtBCGsoAgBGDQMLIBpCAX0gGoMiGkIAUg0ACwsgHEKAgYKEiJCgwIB/gyEaIBBFBEAgGlANAiAaeqdBA3YgBWogCnEhDgtBASAaIBxCAYaDUA0CGiAEIA5qLAAAIgVBAE4EQCAEIAQpAwBCgIGChIiQoMCAf4N6p0EDdiIOai0AACEFCyAEIA5qIBunQf8AcSIQOgAAIAQgDkEIayAKcWpBCGogEDoAACAAIAAoAgggBUEBcWs2AgggACAAKAIMQQFqNgIMIARBACAOayIIQQxsaiIAQQxrIAE2AgAgAEEIayACNgIACyAEIAhBDGxqQQRrIAM2AgAgEUEQaiQADwtBAAshECAZQQhqIhkgBWogCnEhBQwACwALxgsCFn8EfiMAQRBrIhEkACAAKQMQIAGtIAKtQiCGhIUiGkIgiCIcQrfTsIUMfiAaQv////8PgyIaQt2h8csMfoUgHELdofHLDH4gGkK307CFDH6FQiCIhSEcIAAoAghFBEAgEUEIaiESIwBBMGsiBiQAIAYgAEEQajYCKCAAKAIMIQogBiAGQShqNgIsAkAgCiAKQQFqIgRNBEAgACgCBCIPIA9BAWpBA3ZBB2wgD0EISRsiBUEBdiAESQRAAkACQAJAAn8gBUEBaiIFIAQgBCAFSRsiBEEPTwRAIARB/////wFLDQJBfyAEQQN0QQduQQFrZ3ZBAWoMAQtBBEEIQRAgBEEISRsgBEEESRsLIgStQgx+IhpCIIinDQEgGqciBUF4Sw0BIAVBB2pBeHEiCCAEQQhqIgtqIQUgBSAISQ0BIAVB+P///wdLDQEgBUEIELMOIgkNAkEIIAVBkMTEACgCACIAQcwIIAAbEQAAAAsQpgwgBigCJCEEIAYoAiAhBQwECxCmDCAGKAIUIQQgBigCECEFDAMLIAggCWohCSALBEAgCUH/ASAL/AsACyAEQQFrIg0gBEEDdkEHbCANQQhJGyETAkAgCkUEQCAAKAIAIQgMAQsgCUEIaiEUIAAoAgAiCEEMayEVIAgpAwBCf4VCgIGChIiQoMCAf4MhGiAGKAIoIRZBACEEIAohCyAIIQUDQCAaUARAA0AgBEEIaiEEIAVBCGoiBSkDAEKAgYKEiJCgwIB/gyIaQoCBgoSIkKDAgH9RDQALIBpCgIGChIiQoMCAf4UhGgsgCSAWKQMAIBUgGnqnQQN2IARqIhdBdGxqKQIAhSIbQiCIIh1Ct9OwhQx+IBtC/////w+DIhtC3aHxywx+hSAdQt2h8csMfiAbQrfTsIUMfoVCIIiFpyIYIA1xIgdqKQAAQoCBgoSIkKDAgH+DIhtQBEBBCCEMA0AgByAMaiEHIAxBCGohDCAJIAcgDXEiB2opAABCgIGChIiQoMCAf4MiG1ANAAsLIBpCAX0gGoMhGiAJIBt6p0EDdiAHaiANcSIHaiwAAEEATgRAIAkpAwBCgIGChIiQoMCAf4N6p0EDdiEHCyAHIAlqIBhBGXYiDDoAACAUIAdBCGsgDXFqIAw6AAAgCSAHQX9zQQxsaiIHQQhqIAggF0F/c0EMbGoiDEEIaigAADYAACAHIAwpAAA3AAAgC0EBayILDQALCyAAIA02AgQgACAJNgIAIAAgEyAKazYCCEGBgICAeCEFIA9FDQIgCCAPQQxsQRNqQXhxIgRrIAQgD2pBCWpBCBCIDwwCCyAAIAZBLGpB9QBBDBDLAkGBgICAeCEFDAELEKYMIAYoAgwhBCAGKAIIIQULIBIgBDYCBCASIAU2AgAgBkEwaiQACyAAKAIEIgogHKdxIQUgHEIZiCIbQv8Ag0KBgoSIkKDAgAF+IR0gACgCACEEA0ACfwJAAkAgBCAFaikAACIcIB2FIhpCgYKEiJCgwIABfSAaQn+Fg0KAgYKEiJCgwIB/gyIaQgBSBEADQCAEQQAgGnqnQQN2IAVqIApxayIIQQxsaiILQQxrKAIAIAFGBEAgAiALQQhrKAIARg0DCyAaQgF9IBqDIhpCAFINAAsLIBxCgIGChIiQoMCAf4MhGiAQRQRAIBpQDQIgGnqnQQN2IAVqIApxIQ4LQQEgGiAcQgGGg1ANAhogBCAOaiwAACIFQQBOBEAgBCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YiDmotAAAhBQsgBCAOaiAbp0H/AHEiEDoAACAEIA5BCGsgCnFqQQhqIBA6AAAgACAAKAIIIAVBAXFrNgIIIAAgACgCDEEBajYCDCAEQQAgDmsiCEEMbGoiAEEMayABNgIAIABBCGsgAjYCAAsgBCAIQQxsakEEayADOAIAIBFBEGokAA8LQQALIRAgGUEIaiIZIAVqIApxIQUMAAsAC+wDAQx9IAIqAgAiByABKgIcIg2UIAIqAgQiCCABKgIYIguUkyIFIAWSIQMgAioCCCIFIAuUIAcgASoCICIGlJMiCSAJkiEEIAAgAioCGCIMIAYgAioCDCIJIAOUIAcgBJQgCCAIIAaUIAUgDZSTIgYgBpIiBpSTkpKSOAIgIAAgAioCFCIOIA0gCSAElCAFIAaUIAcgA5STkpKSOAIcIAAgAioCECINIAsgCSAGlCAIIAOUIAUgBJSTkpKSOAIYIAcgASoCECILlCAIIAEqAgwiBpSTIgMgA5IhAyAFIAaUIAcgASoCFCIKlJMiBCAEkiEEIAAgDCAKIAkgA5QgByAElCAIIAggCpQgBSALlJMiCiAKkiIKlJOSkpI4AhQgACAOIAsgCSAElCAFIAqUIAcgA5STkpKSOAIQIAAgDSAGIAkgCpQgCCADlCAFIASUk5KSkjgCDCAHIAEqAgQiC5QgCCABKgIAIgaUkyIDIAOSIQMgBiAFlCABKgIIIgogB5STIgQgBJIhBCAAIAwgCiAJIAOUIAcgBJQgCCAKIAiUIAsgBZSTIgwgDJIiDJSTkpKSOAIIIAAgDiALIAkgBJQgBSAMlCAHIAOUk5KSkjgCBCAAIA0gBiAJIAyUIAggA5QgBSAElJOSkpI4AgAL1wQCBX0DfyAAKAI4IgooAgghCSAKKAIAIAlrQQJNBEAgCiAJQQNBBEEEEOIGIAooAgghCQsgCigCBCAJQQJ0aiILIAEpAgA3AgAgC0EIaiABQQhqKAIANgIAIAogCUEDaiIJNgIIIAooAgAgCWtBAk0EQCAKIAlBA0EEQQQQ4gYgCigCCCEJCyAKIAlBA2o2AgggCigCBCAJQQJ0aiIBIAIpAgA3AgAgAUEIaiACQQhqKAIANgIAIAMqAgwhBCADKgIIIQUgAyoCBCEHIAMqAgAhBiAAKAI8IgAoAgghAyAAKAIAIANrQQdNBEAgACADQQhBBEEEEOIGIAAoAgghAwsgACADQQhqNgIIIAAoAgQgA0ECdGoiACAEOAIcIAAgBDgCDCAGIAZDAAC0Q5WOQwAAtEOUk0MAAHBClSIEQwAAAD+UjiEGIAAgBSAHQwAAgD8gBSAFkkMAAIC/kouTlCIFQwAAAD+UkyIHIAVDAACAPyAEIAYgBpKTQwAAgL+Si5OUIgYgBiAFIAVDAAAAACAEQwAAAEBdIARDAACAP2BxIgEbIARDAABAQF0gBEMAAABAYHEiAxsgBEMAAIBAXSAEQwAAQEBgcSICGyAEQwAAgD9dIARDAAAAAGBxIgkbkiIIOAIUIAAgByAGIAZDAAAAAEMAAAAAIAUgAxsgAhsgBEMAAKBAXSAEQwAAgEBgcSIDGyABG5IiBDgCECAAIAg4AgQgACAEOAIAIAAgB0MAAAAAQwAAAAAgBSAFIAYgAhsgAxsgARsgCRuSIgQ4AhggACAEOAIIC5UEAg5/AX0jAEEgayIEJABBBCEHAkAgAygCDCIFRQRAQQAhAwwBCyADKAIAIgggAygCCCIMRiEGIAMoAgQiDSADKAIQIhBBAnQiDmoiDyAIIAYbIglFBEBBACEDDAELQQQgBSAFQQRNGyIKQQJ0IQMCQAJAIAVB/////wNLDQAgA0H8////B0sNACAJKgIAIRJBBCELIANBBBCzDiIHRQ0AIAcgEjgCAEEBIQMgBEEBNgIQIAQgBzYCDCAEIAo2AgggBUEBayIRDQEMAgsgCyADQfDdwQAQ0w0ACyAIIA5qIAwgBhshCyAPIA0gBhshCCAJIBFBAEdBAnRqIQYgBUECayEFQQQhCQJ/A0AgBCgCCCIKIBBBAnQiDiAIaiIPIAYgBiALRiIMGyINRQ0BGiANKgIAIRIgBiAOaiALIAwbIQsgDyAIIAwbIQggBUEAR0ECdCANaiEGIAMgCkYEQCAEQQhqIAMgBUEBakEEQQQQ9gYgBCgCDCEHCyAHIAlqIBI4AgAgBCADQQFqIgM2AhAgCUEEaiEJIAVBAWsiBUF/Rw0ACyAEKAIICyEKIAQoAgwhBwsgASACbCADRwRAIARBADYCGCAEQQE2AgwgBEGY2MEANgIIIARCBDcCECAEQQhqQaDYwQAQuA0ACyAAIAI2AhAgACABNgIMIAAgAzYCCCAAIAc2AgQgACAKNgIAIARBIGokAAv0AwIMfQF/IwBBIGsiEiQAIBIgAioCCCINjDgCHCASIAIqAgQiDow4AhggEiACKgIAIg+MOAIUIBJBCGogAyABIBJBFGogBBECAEEAIQMgACAFIA8gEioCCCIFlCAOIBIqAgwiBpSSIA0gEioCECIHlJIiCGAEfyAAIAIpAgA3AhwgACAHIA0gCJSTOAIMIAAgBiAOIAiUkzgCCCAAIAUgDyAIlJM4AgQgAEEkaiACQQhqKAIANgIAIAUgASoCEJMiECABKgIEIgWUIAYgASoCFJMiESABKgIAIgaUkyIJIAmSIQogESABKgIIIgmUIAcgASoCGJMiDCAFlJMiByAHkiELIAAgDCABKgIMIgcgCpQgBSALlCAGIAwgBpQgECAJlJMiDCAMkiIMlJOSkjgCGCAAIBEgByAMlCAGIAqUIAkgC5STkpI4AhQgACAQIAcgC5QgCSAMlCAFIAqUk5KSOAIQIAAgCDgCNCAAIAcgDiAGlCAPIAWUkyIIIAiSIgiUIAUgDSAFlCAOIAmUkyIKIAqSIgqUIAYgDyAJlCANIAaUkyILIAuSIguUk5IgDZM4AjAgACAHIAuUIAYgCJQgCSAKlJOSIA6TOAIsIAAgByAKlCAJIAuUIAUgCJSTkiAPkzgCKEEBBUEACzYCACASQSBqJAAL6AMBD30gAioCACABKgIQkyIKIAEqAgQiBJQgAioCBCABKgIUkyINIAEqAgAiBZSTIgYgBpIhCCANIAEqAggiBpQgAioCCCABKgIYkyIHIASUkyILIAuSIQkgByABKgIMIgsgCJQgBCAJlCAFIAcgBZQgCiAGlJMiByAHkiIHlJOSkiIOIA6UIAogCyAJlCAGIAeUIAQgCJSTkpIiDyAPlCANIAsgB5QgBSAIlCAGIAmUk5KSIg0gDZSSkiAAKgIAIgggCJSTIQhDAAAAACEHIAQgAioCDCIQlCAFIAIqAhAiEZSTIgkgCZIhCSAGIBGUIAQgAioCFCIMlJMiCiAKkiEKAkAgDCALIAmUIAQgCpQgBSAFIAyUIAYgEJSTIgwgDJIiDJSTkpIiEiASlCAQIAsgCpQgBiAMlCAEIAmUk5KSIgQgBJQgESALIAyUIAUgCZQgBiAKlJOSkiIFIAWUkpIiBkMAAAAAXARAIA4gEpQgDyAElCANIAWUkpIhBEEAIQEgCEMAAAAAXiAEQwAAAABecQ0BIAQgBJQgCCAGlJMiBUMAAAAAXQ0BQwAAAAAgBIwgBZGTIAaVIgQgBEMAAAAAXxshB0EBIQEMAQtBASEBIAhDAAAAAF5FDQBBACEBCyABIAMgB2BxC6EEAgN/Bn0CQCAAIAhJBEAgBCACQQxsaiELA0ACQAJAIAcgAEHIAGxqIgotAEQEQCAKLQBFDQIgCigCMCEJIAIgBU8NASAFIAlNDQUgCioCDCIMIAsqAgAiDSAEIAlBDGxqIgkqAgCTlCAKKgIQIg4gCyoCBCIPIAkqAgSTlJIgCioCFCIQIAsqAggiESAJKgIIk5SSQwAAAABgDQIgCigCNCIJIAVPDQUgECARIAQgCUEMbGoiCSoCCJOUIA4gDyAJKgIEk5QgDCANIAkqAgCTlJKSQwAAAABgDQIgCigCOCIJIAVPDQUgECARIAQgCUEMbGoiCSoCCJOUIA4gDyAJKgIEk5QgDCANIAkqAgCTlJKSQwAAAABgDQIgAygCCCICIAMoAgBGBEAgA0HI6MMAELgICyADIAJBAWo2AgggAygCBCACQQN0aiICIAE2AgQgAiAANgIACw8LIAUgCU0NAyACIAVBtPDDABCICwALIApBADoARCAGKAIIIgkgBigCAEYEQCAGQdjowwAQuQgLIAYoAgQgCUECdGogADYCACAGIAlBAWo2AgggCkEYaiIAIAFBAWpBA3BBAnQiCWooAgAgCkEkaiIKIAlqKAIAIAIgAyAEIAUgBiAHIAgQ0QMgCiABQQJqQQNwQQJ0IgpqKAIAIQEgCCAAIApqKAIAIgBLDQALCyAAIAhBuOjDABCICwALIAkgBUGk8MMAEIgLAAu2BAMCfgJ/AX0CQAJAAkAgAiAAKAKsByIFSwRAIAAtALUHIgZFDQICQCABIAVBAnRqKAIAIgUoAoQBIgEgAC0AsAciAk0NACAFKAKAASACQQZ0aiIBIAAqAkAiBzgCOCABIAApAqADIgM3AiwgASAHIAAqAkSSOAI0IAEgA6e+IAApAqgDIgSnvpI4AiQgASADQiCIp74gBEIgiKe+kjgCKCAGQQFGDQMgBSgChAEiASAALQCxByICTQ0AIAUoAoABIAJBBnRqIgEgACoCjAEiBzgCOCABIAApAqwEIgM3AiwgASAHIAAqApABkjgCNCABIAOnviAAKQK0BCIEp76SOAIkIAEgA0IgiKe+IARCIIinvpI4AiggBkECRg0DIAUoAoQBIgEgAC0AsgciAk0NACAFKAKAASACQQZ0aiIBIAAqAtgBIgc4AjggASAAKQK4BSIDNwIsIAEgByAAKgLcAZI4AjQgASADp74gACkCwAUiBKe+kjgCJCABIANCIIinviAEQiCIp76SOAIoIAZBA0YNAyAFKAKEASIBIAAtALMHIgJLDQILIAIgAUHIpMIAEIgLAAsgBSACQaikwgAQiAsACyAFKAKAASACQQZ0aiIBIAAqAqQCIgc4AjggASAAKQLEBiIDNwIsIAEgByAAKgKoApI4AjQgASADp74gACkCzAYiBKe+kjgCJCABIANCIIinviAEQiCIp76SOAIoIAZBBEcNAQsPC0EEQQRBuKTCABCICwAL/QMCDX8BfSMAQSBrIgMkAEEEIQUCQCACKAIMIgRFDQAgAigCACIIIAIoAggiC0YhBiACKAIEIgwgAigCECIPQQJ0Ig1qIg4gCCAGGyIJRQ0AQQQgBCAEQQRNGyIKQQJ0IQICQAJAIARB/////wNLDQAgAkH8////B0sNACAJKgIAIRBBBCEHIAJBBBCzDiIFRQ0AIAUgEDgCAEEBIQcgA0EBNgIQIAMgBTYCDCADIAo2AgggBEEBayICDQEMAgsgByACQfDdwQAQ0w0ACyAIIA1qIAsgBhshCCAOIAwgBhshBiAJIAJBAEdBAnRqIQIgBEECayEEQQQhCQJ/A0AgAygCCCIKIA9BAnQiDSAGaiIOIAIgAiAIRiILGyIMRQ0BGiAMKgIAIRAgAiANaiAIIAsbIQggDiAGIAsbIQYgBEEAR0ECdCAMaiECIAcgCkYEQCADQQhqIAcgBEEBakEEQQQQ9gYgAygCDCEFCyAFIAlqIBA4AgAgAyAHQQFqIgc2AhAgCUEEaiEJIARBAWsiBEF/Rw0ACyADKAIICyEKIAMoAgwhBQsgASAHRwRAIANBADYCGCADQQE2AgwgA0GY2MEANgIIIANCBDcCECADQQhqQaDYwQAQuA0ACyAAIAE2AgwgACABNgIIIAAgBTYCBCAAIAo2AgAgA0EgaiQAC5wEAQt/IwBBIGsiBCQAIAAoAhAiBSABaiEGIAAoAgQhCSAAKAIAIQogASAAKAIIIgcgBWsiAksEQAJAIAZBnPDAA0sEf0EABSAGQaQCbCEDQQAhAiAEIAcEfyAEIAdBpAJsNgIcIAQgACgCDDYCFEEEBUEACzYCGCAEQQhqQQQgAyAEQRRqEPQJIAQoAghBAUcNASAEKAIQIQIgBCgCDAsgAkGgicIAENMNAAsgBCgCDCECIAAgBjYCCCAAIAI2AgwgASECCyAFIQMgAiAGIAVrIgJBACACIAZNGyICSQRAIABBCGogBSACQQRBpAIQ9gYgACgCECEDCwJAIAFFDQAgACgCDCELIAZBAWshDAJAIAFBAXFFBEAgBSECDAELIAsgA0GkAmxqIgggCSAFQQFqIgIgBSAMRiIHGzYCCCAIIApBASAHGzYCBCAIQYCAgIB4NgIAIANBAWohAwsgAUEBRg0AIAJBf3MgBmohCCALIANBpAJsaiEBA0AgAUGAgICAeDYCACABQaQCakGAgICAeDYCACABQQRqQQEgCiAIGzYCACABQQhqIAJBAWoiByAJIAgbNgIAIAFBrAJqIAkgAkECaiICIAcgDEYiBxs2AgAgAUGoAmogCkEBIAcbNgIAIAhBAmshCCABQcgEaiEBIANBAmohAyACIAZHDQALCyAAIAU2AgQgAEEBNgIAIAAgAzYCECAEQSBqJAALrQQCDH8DfiMAQSBrIgkkACABKQMQIQ8gAS0AGCEMAn8gASgCBCIFRQRAQbDVwgAhA0EAIQVBAAwBCwJ/AkAgBUEBaq1CFH4iDkIgiKcNACAOpyICQXhLDQAgBUEJaiIEIAJBB2pBeHEiA2ohAiACIANJDQAgAkH4////B0sNACACQQgQsw4iBkUEQEEIIAJBkMTEACgCACIAQcwIIAAbEQAAAAsgAyAGagwBCxCmDCAJKAIAIgVBCWohBEEACyEDIAEoAgAhAiAEBEAgAyACIAT8CgAACyABKAIMIgoEQCACQQhqIQQgAikDAEJ/hUKAgYKEiJCgwIB/gyEOIAohCyACIQYDQCAOUARAA0AgBkGgAWshBiAEKQMAIQ4gBEEIaiEEIA5CgIGChIiQoMCAf4MiDkKAgYKEiJCgwIB/UQ0ACyAOQoCBgoSIkKDAgH+FIQ4LIAYgDnqnQQN2QWxsaiIHQQxrIghBCGooAgAhDSAIKQIAIRAgAyACIAdrQWxtQRRsaiIIQRRrIAdBFGspAgA3AgAgCEEMayIHIBA3AgAgB0EIaiANNgIAIA5CAX0gDoMhDiALQQFrIgsNAAsLIAEoAggLIQJBIEEIELMOIgEEQCABIAw6ABggASAPNwMQIAEgCjYCDCABIAI2AgggASAFNgIEIAEgAzYCACAAQeT/wgA2AgQgACABNgIAIAlBIGokAA8LQQhBIEGQxMQAKAIAIgBBzAggABsRAAAAC64KAxV/An4HfSMAQdAAayIHJAACQAJAAkAgAEUNACAAQQhrIgsoAgBBAWohBiALIAY2AgAgBkUNASAAKAIADQIgAEF/NgIAIAcgCzYCDCAHIAA2AgggByAAQQRqIgk2AgQgAUUNACABQQhrIgwoAgBBAWohBiAMIAY2AgAgBkUNASABKAIAIgZBf0YNAiABIAZBAWo2AgAgByAMNgIYIAcgATYCFCAHIAFBBGoiEjYCECACRQ0AIAJBCGsiDSgCAEEBaiEGIA0gBjYCACAGRQ0BIAIoAgAiBkF/Rg0CIAIgBkEBajYCACAHIA02AiQgByACNgIgIAcgAkEEaiIONgIcIANFDQAgA0EIayIPKAIAQQFqIQYgDyAGNgIAIAZFDQEgAygCACIGQX9GDQIgAyAGQQFqNgIAIAcgDzYCMCAHIAM2AiwgByADQQRqIhM2AiggB0GAgO6tBDYCTCAHQoCAgPyDgICUwQA3AkQgB0Kuj4X7g4CA0MAANwI8IAdC9tHwhZTcnqo/NwI0IwBBQGoiCCQAIAdBNGoiBioCECEdIAYqAhghHiAGKgIMIR8gBioCFCEgIAYqAgghISAGKgIEISIgBioCACEjIAkoAgghECAIQTxqIhVBADoAACAIQTRqIhZCADcCACAIQSxqIhdCADcCACAIQSRqIhhCADcCACAIQRxqIhlCADcCACAIQgA3AhQgCSgCACIKIBBGBEAjAEEgayIGJABBBCAKQQF0IhEgEUEETRsiEa1C1AF+IhtCIIhCAFIEQEEAQQBB5IbCABDTDQALAkAgG6ciGkH8////B00EfyAGIAoEfyAGIApB1AFsNgIcIAYgCSgCBDYCFEEEBUEACzYCGCAGQQhqQQQgGiAGQRRqEPQJIAYoAghBAUcNASAGKAIQIRQgBigCDAVBAAsgFEHkhsIAENMNAAsgBigCDCEKIAkgETYCACAJIAo2AgQgBkEgaiQACyAJKAIEIBBB1AFsaiIGQQA2AgAgBiAIKQIMNwIEIAZBADYCQCAGQgA3AjggBkEMaiAIQRRqKQIANwIAIAZBFGogGSkCADcCACAGQRxqIBgpAgA3AgAgBkEkaiAXKQIANwIAIAZBLGogFikCADcCACAGQTRqIBUtAAA6AAAgBkHNmbPuAzYCqAEgBkIANwKgASAGIB44AqwBIAYgHTgCnAEgBiAgOAKYASAGICE4ApQBIAYgIjgCkAEgBiAjOAKMASAGIAU4AogBIAYgHzgChAEgBiAEOAKAASAGQcwAaiAOQQhqKAIAIgo2AgAgBiAOKQIAIhs3AkQgBkHYAGogE0EIaigCACIONgIAIAYgEykCACIcNwJQIAZB5ABqIBJBCGooAgA2AgAgBiASKQIANwJcIAZB8ABqIAo2AgAgBiAbNwJoIAYgHDcCdCAGQfwAaiAONgIAIAZB0AFqQQA2AgAgBkHIAWpCADcCACAGQcABakIANwIAIAZBuAFqQgA3AgAgBkIANwKwASAJIBBBAWo2AgggCEFAayQAIAMgAygCAEEBazYCACAPIA8oAgBBAWsiAzYCACADRQRAIAdBMGoQqA0LIAIgAigCAEEBazYCACANIA0oAgBBAWsiAjYCACACRQRAIAdBJGoQqA0LIAEgASgCAEEBazYCACAMIAwoAgBBAWsiATYCACABRQRAIAdBGGoQqA0LIABBADYCACALIAsoAgBBAWsiADYCACAARQRAIAdBDGoQ0woLIAdB0ABqJAAPCxCbDwsACxCcDwALiQQCBn0GfwJAIAMEQAJAIANBAUYNACAEKgIAIgYgAioCDJQgBCoCBCIHIAJBEGoqAgCUkiAEKgIIIgggAkEUaioCAJSSIgUgBiACKgIAlCAHIAJBBGoqAgCUkiAIIAJBCGoqAgCUkiIJXiIEIQtBAiEMIANBAkYNACAFIAkgBBshBSADQf3///8DaiEOIAJBGGohBCADQf////8DcUEDRwRAIA5B/////wNxQQFqQf7///8HcSEQA0AgBiAEKgIAlCAHIARBBGoqAgCUkiAIIARBCGoqAgCUkiIJIAVeIQ0gBiAEQQxqKgIAlCAHIARBEGoqAgCUkiAIIARBFGoqAgCUkiIKIAkgBSANGyIFXiEPIAogBSAPGyEFIAxBAWogDCALIA0bIA8bIQsgBEEYaiEEIAwgEEchDSAMQQJqIQwgDQ0ACwsgDkEBcQ0AIAwgCyAGIAQqAgCUIAcgBEEEaioCAJSSIAggBEEIaioCAJSSIAVeGyELCyADIAtNDQEgACABKgIYIgY4AiAgACABKgIUIgc4AhwgACABKgIQIgg4AhggACACIAtBDGxqIgEqAggiBTgCFCAAIAEqAgQiCTgCECAAIAEqAgAiCjgCDCAAIAUgBpM4AgggACAJIAeTOAIEIAAgCiAIkzgCAA8LQQBBAEGY/cMAEIgLAAsgCyADQcDAwwAQiAsAC9kDAQx9IAIqAgAiCyADKgIIIgeUIAIqAggiDCADKgIAIgmUkyIKIAqSIQUgAioCBCIKIAmUIAsgAyoCBCIGlJMiDSANkiEEIAYgAioCDCINIAWUIAsgBJQgDCAMIAaUIAogB5STIgYgBpIiBpSTkpIiDiAHIA0gBJQgCiAGlCALIAWUk5KSIgcgB5QgCSANIAaUIAwgBZQgCiAElJOSkiIFIAWUIA4gDpSSkpEiBJUhCQJAAkACQCAFIASVIgUgBZQgByAElSIEIASUkiIGQwAAAABcBEAgCSABKgIAIgeUIg4gBCAEIAaRIgaVIAEqAgQiD5QiCJQgBSAFIAaVIA+UIgaUIA6Tkl4NASAHjCEHDAMLIAEqAgAgCZghBwwBC0MAAAAAIQgLQwAAAAAhBgsgACACKgIYIAggBCABKgIIIgSUkiIIIA0gCyAHIAkgBJSSIgeUIAogBiAFIASUkiIFlJMiBCAEkiIElCALIAwgBZQgCyAIlJMiCSAJkiIJlCAKIAogCJQgDCAHlJMiCCAIkiIIlJOSkpI4AgggACACKgIUIAcgDSAJlCAMIAiUIAsgBJSTkpKSOAIEIAAgAioCECAFIA0gCJQgCiAElCAMIAmUk5KSkjgCAAveAwINfQF/IAIqAggiCSADKgIEIgeUIAIqAgQiCiADKgIIIg2UkyIFIAWSIQYgAioCACILIA2UIAkgAyoCACIFlJMiDCAMkiEEIAUgAioCDCIMIAaUIAkgBJQgCiAKIAWUIAsgB5STIgUgBZIiDpSTkpIiCCABKgIYIgWUIAcgDCAElCALIA6UIAkgBpSTkpIiByABKgIclJIgDSAMIA6UIAogBpQgCyAElJOSkiIEIAEqAiCUkiENIAFBGGohAwJAIAEqAgwiDiAIlCAHIAEqAhCUkiAEIAEqAhSUkiIPIAEqAgggBJQgASoCACIGIAiUIAEqAgQgB5SSkiIQXUUEQCABQQxqIAMgDSAPXSIRGyEDIA4gBSARGyEFDAELIA0gEF1FDQAgBiEFIAEhAwsgACACKgIYIAMqAgggBCABKgIkIgaUkiIEIAwgCyADKgIEIAcgBpSSIgeUIAogBSAIIAaUkiIFlJMiBiAGkiIGlCALIAkgBZQgCyAElJMiCCAIkiIIlCAKIAogBJQgCSAHlJMiBCAEkiIElJOSkpI4AgggACACKgIUIAcgDCAIlCAJIASUIAsgBpSTkpKSOAIEIAAgAioCECAFIAwgBJQgCiAGlCAJIAiUk5KSkjgCAAuoBAIIfwF+IwBBQGoiBSQAAkACQAJAAkAgAEUNACAAQQhrIgkoAgBBAWohByAJIAc2AgAgB0UNASAAKAIAIgdBf0YNAiAAIAdBAWo2AgAgBSAJNgIMIAUgADYCCCAFIABBBGoiCzYCBCACRQ0AIAJBCGsiBygCAEEBaiEIIAcgCDYCACAIRQ0BIAIoAgAiCEF/Rg0CIAIgCEEBajYCACAFIAc2AhggBSACNgIUIAUgAkEEaiIKNgIQIANFDQAgA0EIayIIKAIAQQFqIQYgCCAGNgIAIAZFDQEgAygCACIGQX9GDQIgAyAGQQFqNgIAIAUgCDYCJCAFIAM2AiAgBSADQQRqIgw2AhwgCyABvSINpyANQiCIpxC4DCIGRQ0DIAVBKGoiC0EIaiAKQQhqKAIANgIAIAUgCikCADcDKCAFQTxqIAxBCGooAgA2AgAgBSAMKQIANwI0IAYoAkAgBigCRCIKKAIIQQFrQXhxakEIaiAGQfQAaiALIAQgCigCIBEUACEGIAMgAygCAEEBazYCACAIIAgoAgBBAWsiAzYCACADRQRAIAVBJGoQqA0LIAIgAigCAEEBazYCACAHIAcoAgBBAWsiAjYCACACRQRAIAVBGGoQqA0LIAAgACgCAEEBazYCACAJIAkoAgBBAWsiADYCACAARQRAIAVBDGoQ7wwLIAVBQGskACAGDwsQmw8LAAsQnA8AC0HMzsEAQcwAQZjPwQAQ1wsAC/cDAgF/DH0jAEFAaiIEJAAgAyoCACACKgIQIg6TIgkgAioCBCIKlCADKgIEIAIqAhQiD5MiCyACKgIAIgyUkyIHIAeSIQUgCyACKgIIIgeUIAMqAgggAioCGCIQkyIGIAqUkyINIA2SIQggBCAGIAIqAgwiDSAFlCAKIAiUIAwgBiAMlCAJIAeUkyIGIAaSIgaUk5KSOAIUIAQgCyANIAaUIAwgBZQgByAIlJOSkjgCECAEIAkgDSAIlCAHIAaUIAogBZSTkpI4AgwgAAJ/IAEoAkBBgICAgHhHBEAgBEEYaiABIARBDGpBAEP//39/EHEgBCgCLEEERwRAIAQtACQhAyAEKgIgIQUgBCoCHCEIIAQqAhghCSAEKAIoDAILQbCSwwAQkQ8ACyAEQRhqIAEgBEEMakEAEJIBIAQtACghAyAEKgIkIQUgBCoCICEIIAQqAhwhCSAEKAIYCzYCFCAAQQI2AhAgACADOgAMIAAgECAFIA0gDCAIlCAKIAmUkyILIAuSIguUIAwgByAJlCAMIAWUkyIGIAaSIgaUIAogCiAFlCAHIAiUkyIFIAWSIgWUk5KSkjgCCCAAIA8gCCANIAaUIAcgBZQgDCALlJOSkpI4AgQgACAOIAkgDSAFlCAKIAuUIAcgBpSTkpKSOAIAIARBQGskAAvTAwERfSADKgIAIAIqAhAiEZMiCSACKgIEIguUIAMqAgQgAioCFCISkyIOIAIqAgAiDJSTIgYgBpIhBiAOIAIqAggiDZQgAyoCCCACKgIYIhOTIgcgC5STIgggCJIhCCABKgIIIhQgByACKgIMIg8gBpQgCyAIlCAMIAcgDJQgCSANlJMiByAHkiIKlJOSkiIHlCABKgIAIhUgCSAPIAiUIA0gCpQgCyAGlJOSkiIQlCABKgIEIhYgDiAPIAqUIAwgBpQgDSAIlJOSkiIOlJKSIQoCfyAEBEAgByEGIA4hCCAQIQlBASAKQwAAAABfDQEaCyAHIBQgCpSTIQYgDiAWIAqUkyEIIBAgFSAKlJMhCSAKQwAAAABfCyEDQQIhAiAAIAUgByAGkyIFIAWUIA4gCJMiBSAFlCAQIAmTIgUgBZSSkpFdBH9BAgUgACAGIA8gDCAIlCALIAmUkyIFIAWSIgWUIAwgDSAJlCAMIAaUkyIHIAeSIgeUIAsgCyAGlCANIAiUkyIGIAaSIgaUk5KSIBOSOAIIIAAgCCAPIAeUIA0gBpQgDCAFlJOSkiASkjgCBCAAIBEgCSAPIAaUIAsgBZQgDSAHlJOSkpI4AgAgAws6AAwLmQoDCn8DfQF+IwBBgAFrIgMkACADIAEQmQUgASgCMCIGrUIMfiIRpyEFAkACQAJAIBFCIIinDQAgBUH8////B0sNACABKAIsIQQCQCAFRQRAQQQhCAwBC0EEIQcgBiEJIAVBBBCzDiIIRQ0BCyAFBEAgCCAEIAX8CgAACyABKAI8IgVBA3QhBCAFQf////8BSw0BIARB/P///wdLDQEgASgCOCEKAkAgBEUEQEEEIQFBACEHDAELQQQhCyAFIQcgBEEEELMOIgFFDQILIAQEQCABIAogBPwKAAALIANBQGsiBEEgaiADQSBqIgopAgA3AwAgBEEYaiADQRhqIgspAgA3AwAgBEEQaiADQRBqIgwpAgA3AwAgBEEIaiADQQhqIg0pAgA3AwAgAyAFNgJ8IAMgATYCeCADIAc2AnQgAyAGNgJwIAMgCDYCbCADIAk2AmggAyADKQIANwNAIwBBMGsiByQAAkAgBCgCMCIFRQ0AIAIqAgghDiACKgIEIQ8gAioCACEQIAQoAiwiBiEBIAVBDGwiBUEMayIJQQxuQQFxRQRAIAEgECABKgIAlDgCACABIA8gASoCBJQ4AgQgASAOIAEqAgiUOAIIIAFBDGohAQsgCUEMSQ0AIAUgBmohBQNAIAEgECABKgIAlDgCACABQQRqIgYgDyAGKgIAlDgCACABQQhqIgYgDiAGKgIAlDgCACABQQxqIgYgECAGKgIAlDgCACABQRBqIgYgDyAGKgIAlDgCACABQRRqIgYgDiAGKgIAlDgCACAFIAFBGGoiAUcNAAsLIAdBCGogBBCZBSAEQShqIQUgBygCECIBBEAgAUEGdCAHKAIMIgFqIQYgAioCCCEOIAIqAgQhDyACKgIAIRADQCABIBAgASoCAJQ4AgAgAUEEaiICIA8gAioCAJQ4AgAgAUEIaiICIA4gAioCAJQ4AgAgAUEQaiICIBAgAioCAJQ4AgAgAUEUaiICIA8gAioCAJQ4AgAgAUEYaiICIA4gAioCAJQ4AgAgAUEgaiICIBAgAioCAJQ4AgAgAUEkaiICIA8gAioCAJQ4AgAgAUEoaiICIA4gAioCAJQ4AgAgAUEwaiICIBAgAioCAJQ4AgAgAUE0aiICIA8gAioCAJQ4AgAgAUE4aiICIA4gAioCAJQ4AgAgBiABQUBrIgFHDQALCyADIAcpAgg3AgAgAyAFKQIANwIoIAMgBCkCNDcCNCADQTBqIAVBCGooAgA2AgAgA0E8aiAEQTxqKAIANgIAIANBCGogB0EIaiIBQQhqKQIANwIAIANBEGogAUEQaikCADcCACADQRhqIAFBGGopAgA3AgAgA0EgaiABQSBqKQIANwIAIAQoAgAiAQRAIAQoAgQgAUEGdEHAABCIDwsgBCgCDCIBBEAgBCgCECABQQJ0QQQQiA8LIAQoAhgiAQRAIAQoAhwgAUEDdEEEEIgPCyAHQTBqJABBwABBBBCzDiIBRQ0CIAEgAykCADcCACABQThqIANBOGopAgA3AgAgAUEwaiADQTBqKQIANwIAIAFBKGogA0EoaikCADcCACABQSBqIAopAgA3AgAgAUEYaiALKQIANwIAIAFBEGogDCkCADcCACABQQhqIA0pAgA3AgAgAEGApsMANgIEIAAgATYCACADQYABaiQADwsgByAFQdjVwgAQ0w0ACyALIARB2NXCABDTDQALQQRBwABBkMTEACgCACIAQcwIIAAbEQAAAAvVAwENfUMAAIA/IQoCfSACKgIEIgsgAyoCACIMlCACKgIAIg0gAyoCBCIPlJMiCCAIkiEEIAIqAggiCCAPlCALIAMqAggiCZSTIg4gDpIhBUMAAAAAIAkgAioCDCIOIASUIAsgBZQgDSANIAmUIAggDJSTIgkgCZIiCZSTkpIiECAQlCAMIA4gBZQgCCAJlCALIASUk5KSIgwgDJQgDyAOIAmUIA0gBJQgCCAFlJOSkiIEIASUkpIiBUMAAAAAXkUNABogECAFkSIHlSEGIAQgB5UhCiAMIAeVCyIHIAEqAgAiBZQgCiABKgIEIgyUkiAGIAEqAggiBJSSIAcgASoCDCIPlCAKIAEqAhAiCZSSIAYgASoCFCIQlJJeIQMgACACKgIYIAYgASoCGCIGlCAEIBAgAxuSIgQgDiANIAogBpQgDCAJIAMbkiIKlCALIAcgBpQgBSAPIAMbkiIGlJMiByAHkiIHlCANIAggBpQgDSAElJMiBSAFkiIFlCALIAsgBJQgCCAKlJMiBCAEkiIElJOSkpI4AgggACACKgIUIAogDiAFlCAIIASUIA0gB5STkpKSOAIEIAAgAioCECAGIA4gBJQgCyAHlCAIIAWUk5KSkjgCAAvHAwEQfSADKgIAIAIqAhAiE5MiCCACKgIEIgqUIAMqAgQgAioCFCIUkyILIAIqAgAiDJSTIgYgBpIhBiALIAIqAggiDZQgAyoCCCACKgIYIhWTIgcgCpSTIgkgCZIhCSAHIAIqAgwiDyAGlCAKIAmUIAwgByAMlCAIIA2UkyIHIAeSIg6Uk5KSIgcgB5QgCCAPIAmUIA0gDpQgCiAGlJOSkiIQIBCUIAsgDyAOlCAMIAaUIA0gCZSTkpIiCyALlJKSIQ4gASoCACIRIBGUIRICfyAEBEAgByEGIAshCSAQIQhBASAOIBJfDQEaCyAHIBEgDpGVIgiUIQYgCyAIlCEJIBAgCJQhCCAOIBJfCyEDQQIhAiAAIAUgByAGkyIFIAWUIAsgCZMiBSAFlCAQIAiTIgUgBZSSkpFdBH9BAgUgACAGIA8gDCAJlCAKIAiUkyIFIAWSIgWUIAwgDSAIlCAMIAaUkyIHIAeSIgeUIAogCiAGlCANIAmUkyIGIAaSIgaUk5KSIBWSOAIIIAAgCSAPIAeUIA0gBpQgDCAFlJOSkiAUkjgCBCAAIBMgCCAPIAaUIAogBZQgDSAHlJOSkpI4AgAgAws6AAwLlAQBC38jAEGAAWsiBCQAIAEoAgAhAiABQQA2AgAgBEEIaiIDQQhqIgkgAUEMaikCADcDACADQRBqIgogAUEUaikCADcDACADQRhqIgsgAUEcaikCADcDACADQSBqIgwgAUEkaigCADYCACAEIAEpAgQ3AwgCQAJAIAJBAXFFBEAgAUEEaiEDIAFBLGohBiABKAJYIQcgASgCVCEFIAEoAlAhCANAIAEoAighAiABQQA2AiggAkEBcQRAIAAgAjYCACAAIAYpAgA3AgQgAEEMaiAGQQhqKQIANwIAIABBFGogBkEQaikCADcCACAAQRxqIAZBGGopAgA3AgAgAEEkaiAGQSBqKAIANgIADAQLIAEgBUEBaiIFNgJUIAgoAgxBAWsgBU0EQCAHIAgoAhBBAmtPDQMgAUEANgJUIAEgB0EBaiIHNgJYQQAhBQsgBEEwaiICIAggBSAHEKICIAEgAkHQAPwKAAAgCSADQQhqKQIANwMAIAogA0EQaikCADcDACALIANBGGopAgA3AwAgDCADQSBqKAIANgIAIAEoAgAhAiABQQA2AgAgBCADKQIANwMIIAJBAXFFDQALCyAAIAI2AgAgACAEKQMINwIEIABBDGogCSkDADcCACAAQRRqIAopAwA3AgAgAEEcaiALKQMANwIAIABBJGogDCgCADYCAAwBCyAAQQA2AgALIARBgAFqJAALpAQCB38BfSABQQRqIQUgAUGEAWohBwNAAkACfyABKAKQASIDRQRAIAUhAiAHIgMoAgBBIU8EQCABKAIIIQIgBSEDCyADKAIAIgRFBEAgAUEANgKQAUEADAILIAMgBEEBayIDNgIAIAIgA0ECdGooAgAhAwsgAUEANgKQASADKAIcQf////8DcUEBRw0BIAMoAgwhAUEBCyEDIAAgATYCBCAAIAM2AgAPCyADKAIMIgIgASgCiAEiBigCCCIDSQRAQQEhAwJAIAEoAowBIgQqAgwiCSAGKAIEIAJBBnRqIgIqAgBgRQ0AIAIqAgQgBCoCEF9FDQAgAioCCCAEKgIUX0UNACACKgIQIAQqAgBgRQ0AIAIqAhQgBCoCBGBFDQAgAioCGCAEKgIIYEUNACABIAI2ApABIAQqAgwhCUEAIQMLIAIqAiAgCV9FDQEgAioCJCAEKgIQX0UNASACKgIoIAQqAhRfRQ0BIAIqAjAgBCoCAGBFDQEgAioCNCAEKgIEYEUNASACKgI4IAQqAghgRQ0BIAJBIGohCCADRQRAAn8gBygCACIEQSFJBEAgBCECIAUhBkEgIQQgBwwBCyABKAIEIQIgASgCCCEGIAULIQMgAiAERgRAIAEQrAQgASgCBCECIAEoAgghBiAFIQMLIAYgAkECdGogCDYCACADIAMoAgBBAWo2AgAMAgsgASAINgKQAQwBCwsgAiADQazXwQAQiAsAC6QEAgd/AX0gAUEEaiEFIAFBhAFqIQcDQAJAAn8gASgCkAEiA0UEQCAFIQIgByIDKAIAQSFPBEAgASgCCCECIAUhAwsgAygCACIERQRAIAFBADYCkAFBAAwCCyADIARBAWsiAzYCACACIANBAnRqKAIAIQMLIAFBADYCkAEgAygCHEH/////A3FBAUcNASADKAIMIQFBAQshAyAAIAE2AgQgACADNgIADwsgAygCDCICIAEoAogBIgYoAggiA0kEQEEBIQMCQCABKAKMASIEKgIMIgkgBigCBCACQQZ0aiICKgIAYEUNACACKgIEIAQqAhBfRQ0AIAIqAgggBCoCFF9FDQAgAioCECAEKgIAYEUNACACKgIUIAQqAgRgRQ0AIAIqAhggBCoCCGBFDQAgASACNgKQASAEKgIMIQlBACEDCyACKgIgIAlfRQ0BIAIqAiQgBCoCEF9FDQEgAioCKCAEKgIUX0UNASACKgIwIAQqAgBgRQ0BIAIqAjQgBCoCBGBFDQEgAioCOCAEKgIIYEUNASACQSBqIQggA0UEQAJ/IAcoAgAiBEEhSQRAIAQhAiAFIQZBICEEIAcMAQsgASgCBCECIAEoAgghBiAFCyEDIAIgBEYEQCABEK0EIAEoAgQhAiABKAIIIQYgBSEDCyAGIAJBAnRqIAg2AgAgAyADKAIAQQFqNgIADAILIAEgCDYCkAEMAQsLIAIgA0G468IAEIgLAAuLBAIOfQF/AkACQCABKgIMIgggASoCACIDkyILIAIqAgAiDCADk5QgASoCECIJIAEqAgQiBJMiDSACKgIEIg4gBJOUkiABKgIUIgogASoCCCIFkyIPIAIqAggiECAFk5SSIgZDAAAAAF8EQCADIQggBCEJIAUhCgwBCyAGIAsgC5QgDSANlJIgDyAPlJIiB2AEQEMBAAAAIQcMAQsgB0MAAAAAWw0BQwAAgD8gBiAHlSIGkyEHIAUgDyAGlJIhCiAEIA0gBpSSIQkgAyALIAaUkiEIQQEhEQsCQAJAIAggDFsNAEEAIQEgDIsiA0MAAIB/Ww0BIAiLIgRDAACAf1sNASAIIAyTiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfRQ0BCwJAIAkgDlsNAEEAIQEgDosiA0MAAIB/Ww0BIAmLIgRDAACAf1sNASAJIA6TiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfRQ0BC0EBIQEgCiAQWw0AQQAhASAQiyIDQwAAgH9bDQAgCosiBEMAAIB/Ww0AQQEhASAKIBCTiyIFQwAAADRfDQAgBSADIAQgAyAEXhtDAAAANJRfIQELIAAgBjgCGCAAIAc4AhQgACARNgIQIAAgAToADCAAIAo4AgggACAJOAIEIAAgCDgCAA8LQfCSwwBBHkGQk8MAENYMAAuICwIWfwR+IwBBEGsiECQAIAApAxAgAa0gAq1CIIaEhSIZQiCIIhtCt9OwhQx+IBlC/////w+DIhlC3aHxywx+hSAbQt2h8csMfiAZQrfTsIUMfoVCIIiFIRsgACgCCEUEQCAQQQhqIREjAEEwayIFJAAgBSAAQRBqNgIoIAAoAgwhByAFIAVBKGo2AiwCQAJAAkACfwJAIAcgB0EBaiIDTQRAIAAoAgQiDCAMQQFqQQN2QQdsIAxBCEkbIgRBAXYgA0kEQCAEQQFqIgQgAyADIARJGyIDQQ9JDQIgA0H/////AU0EQEF/IANBA3RBB25BAWtndiIDQf7///8BSw0FIANBAWoMBAsQpgwgBSgCJCEDIAUoAiAhBAwGCyAAIAVBLGpB9wBBCBDLAkGBgICAeCEEDAULEKYMIAUoAgwhAyAFKAIIIQQMBAtBBEEIQRAgA0EISRsgA0EESRsLIgNBA3QiCCADQQhqIg0gCGoiBEsNACAEQfj///8HSw0AIARBCBCzDiIGDQFBCCAEQZDExAAoAgAiAEHMCCAAGxEAAAALEKYMIAUoAhQhAyAFKAIQIQQMAQsgBiAIaiEGIA0EQCAGQf8BIA38CwALIANBAWsiCiADQQN2QQdsIApBCEkbIRICQCAHRQRAIAAoAgAhCAwBCyAGQQhqIRMgACgCACIIQQhrIRQgCCkDAEJ/hUKAgYKEiJCgwIB/gyEZIAUoAighFUEAIQMgByENIAghBANAIBlQBEADQCADQQhqIQMgBEEIaiIEKQMAQoCBgoSIkKDAgH+DIhlCgIGChIiQoMCAf1ENAAsgGUKAgYKEiJCgwIB/hSEZCyAGIBUpAwAgFCAZeqdBA3YgA2oiFkEDdGspAgCFIhpCIIgiHEK307CFDH4gGkL/////D4MiGkLdofHLDH6FIBxC3aHxywx+IBpCt9OwhQx+hUIgiIWnIhcgCnEiCWopAABCgIGChIiQoMCAf4MiGlAEQEEIIQ4DQCAJIA5qIQkgDkEIaiEOIAYgCSAKcSIJaikAAEKAgYKEiJCgwIB/gyIaUA0ACwsgGUIBfSAZgyEZIAYgGnqnQQN2IAlqIApxIglqLAAAQQBOBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQkLIAYgCWogF0EZdiIOOgAAIBMgCUEIayAKcWogDjoAACAGIAlBf3NBA3RqIAggFkF/c0EDdGopAAA3AwAgDUEBayINDQALCyAAIAo2AgQgACAGNgIAIAAgEiAHazYCCEGBgICAeCEEIAxFDQAgCCAMQQN0QQ9qQXhxIgNrIAMgDGpBCWpBCBCIDwsgESADNgIEIBEgBDYCACAFQTBqJAALIAAoAgQiByAbp3EhAyAbQhmIIhpC/wCDQoGChIiQoMCAAX4hHCAAKAIAIQQDQAJ/AkACQCADIARqKQAAIhsgHIUiGUKBgoSIkKDAgAF9IBlCf4WDQoCBgoSIkKDAgH+DIhlCAFIEQANAIAQgGXqnQQN2IANqIAdxQQN0ayIIQQhrKAIAIAFGBEAgAiAIQQRrKAIARg0DCyAZQgF9IBmDIhlCAFINAAsLIBtCgIGChIiQoMCAf4MhGSAPRQRAIBlQDQIgGXqnQQN2IANqIAdxIQsLQQEgGSAbQgGGg1ANAhogBCALaiwAACIDQQBOBEAgBCAEKQMAQoCBgoSIkKDAgH+DeqdBA3YiC2otAAAhAwsgBCALaiAap0H/AHEiDzoAACAEIAtBCGsgB3FqQQhqIA86AAAgACAAKAIIIANBAXFrNgIIIAAgACgCDEEBajYCDCAEIAtBA3RrIgBBCGsgATYCACAAQQRrIAI2AgALIBBBEGokAA8LQQALIQ8gGEEIaiIYIANqIAdxIQMMAAsAC64EAQl/IwBBIGsiAiQAAkAgASgCBCIDRQRAIABBgICAgHg2AgAMAQsgASADQQFrNgIEAn8gASgCACIBKAIEIgVBB00EQCACQoHKADcDCEEBIQQgAkEIahCiDQwBCyABIAVBCGsiBTYCBCABIAEoAgAiA0EIajYCACACIAMpAAAQpwggAigCACEEIAIoAgQLIQMCQAJAIARBAXENACADRQRAQQQhA0EAIQRBACEBDAILAn8CQEGAgAggAyADQYCACE8bIgRBA3QiBkEEELMOIgcEQCACIAc2AgwgAiAENgIIQQAhBiACQQA2AhAgASgCACEJQQAhBANAIAVBBEkNAiABIAVBBGsiBTYCBCABIAYgCWoiCEEEaiIHNgIAIAVBBEkEQCACQoHKADcDGCACQRhqEKINDAQLIAgoAAAhCCABIAVBBGsiBTYCBCABIAdBBGo2AgAgBygAACEHIAIoAgggBEYEQCACQQhqQcirwQAQuAgLIAIoAgwgBmoiCiAINgIAIApBBGogBzYCACACIARBAWoiBDYCECAGQQhqIQYgAyAERw0ACyACKAIMIQMgAigCCCIBQYCAgIB4Rw0EDAMLQQQgBkG4q8EAENMNAAsgAkKBygA3AxggAkEYahCiDQshAyACKAIIIgFFDQAgAigCDCABQQN0QQQQiA8LIABBgYCAgHg2AgAgACADNgIEDAELIAAgBDYCCCAAIAM2AgQgACABNgIACyACQSBqJAALnQQBBX8jAEHgAGsiAiQAAkACQAJAIAAEQCAAQRBrIgEoAgAiBEEBaiEDIAEgAzYCACADRQ0BIAAoAgANAiAAKALcBSEDIABBAjYC3AUgASAENgIAQQAhASADQQJHBEAgAkEIaiIBQRBqIgQgAEHwBWopAwA3AwAgAUEIaiIFIABB6AVqKQMANwMAIAIgACkD4AU3AwggAkEgaiIBQTxqIABB2AVqKAIANgIAIAFBNGogAEHQBWopAgA3AgAgAUEsaiAAQcgFaikCADcCACABQSRqIABBwAVqKQIANwIAIAFBHGogAEG4BWopAgA3AgAgAUEUaiAAQbAFaikCADcC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AEIANwO4BCAAQYCU69wDNgKwBCAAQQA2AqAEIABCADcDmAQgAEGAlOvcAzYCkAQgAEEANgKABCAAQgA3A/gDIABBgJTr3AM2AvADIABBADYC4AMgAEIANwPYAyAAQYCU69wDNgLQAyAAQQA2AsADIABCADcDuAMgAEGAlOvcAzYCsAMgAEEANgKgAyAAQgA3A5gDIABBgJTr3AM2ApADIABBADYCgAMgAEIANwP4AiAAQYCU69wDNgLwAiAAQQA2AuACIABBADYC2AIgAEIANwPQAiAAQYCU69wDNgLIAiAAQQA2ArgCIABCADcDsAIgAEGAlOvcAzYCqAIgAEEANgKYAiAAQgA3A5ACIABBgJTr3AM2AogCIABBADYC+AEgAEIANwPwASAAQYCU69wDNgLoASAAQgA3A9gBIABBADYC0AEgAEIANwPIASAAQYCU69wDNgLAASAAQQA2ArABIABCADcDqAEgAEGAlOvcAzYCoAEgAEEANgKQASAAQgA3A4gBIABBgJTr3AM2AoABIABBADYCcCAAQgA3A2ggAEGAlOvcAzYCYCAAQQA2AlAgAEEANgJIIABCADcDQCAAQYCU69wDNgI4IABBADYCKCAAQgA3AyAgAEGAlOvcAzYCGCAAQQA2AgggAEKBgICAEDcDACAAQQhqC+kDAQp/IwBB0ABrIgEkAAJAAkACQCAABEAgAEEQayICKAIAIgRBAWohAyACIAM2AgAgA0UNASAAKAIADQIgAC0AiAghAyAAQQI6AIgIIAIgBDYCAEEAIQIgA0ECRwRAIAFByABqIgIgAEGACGopAgA3AwAgAUFAayIEIABB+AdqKQIANwMAIAFBOGoiBSAAQfAHaikCADcDACABQTBqIgYgAEHoB2opAgA3AwAgAUEoaiIHIABB4AdqKQIANwMAIAFBIGoiCCAAQdgHaikCADcDACABQRhqIgkgAEHQB2opAgA3AwAgAUEOaiIKIABBiwhqLQAAOgAAIAEgACkCyAc3AxAgASAALwCJCDsBDEHQAEEEELMOIgBFDQQgAEEANgIIIABCgYCAgBA3AgAgACABKQMQNwIMIABBFGogCSkDADcCACAAQRxqIAgpAwA3AgAgAEEkaiAHKQMANwIAIABBLGogBikDADcCACAAQTRqIAUpAwA3AgAgAEE8aiAEKQMANwIAIABBxABq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///7BzYCUCAFQoCAgIDw//+/fzcDSCAFQv////v///+//wA3A0AgBUL////7BzcDOCAFQoCAgIDw//+/fzcDMCAFQv////v///+//wA3AyggBUL////7BzcDICAFQoCAgIDw//+/fzcDGCAFQv////v///+//wA3AxAgBUL////7BzcCvAEgBUEAOgDEASAFQv////sHNwPYASAFQQA6AOABIAVBuAFqIAtBD2ooAAA2AAAgBUGxAWogC0EIaikAADcAACAFIAcpAE03AKkBIAUgBykAOjcAxQEgBUHNAWogDEEIaikAADcAACAFQdQBaiAMQQ9qKAAANgAAIAUgBykAJzcA4QEgBUHpAWogDUEIaikAADcAACAFQfABaiANQQ9qKAAANgAAIAVBADoA/AEgBUL////7BzcC9AEgBUEAOgCYAiAFQv////sHNwOQAiAFQQA7AbgCIAVBADoAtAIgBUL////7BzcCrAIgBUGBjoAINgG6AiAFQYwCaiAOQQ9qKAAANgAAIAVBhQJqIA5BCGopAAA3AAAgBSAHKQAUNwD9ASAFQagCaiAPQQ9qKAAANgAAIAVBoQJqIA9BCGopAAA3AAAgBSAHKQABNwCZAiAKQQhqKAIAIQUgCikCACEQIAQgBCgCAEEBazYCACAGQYABaiAFNgIAIAZBnAFqIARBDGooAgA2AgAgBCkCBCERIAkgCSgCAEEBayIENgIAIAYgEDcDeCAGIBE3ApQBIARFBEAgBkHcAmoQqA0LIAMgAygCAEEBazYCACAIIAgoAgBBAWsiAzYCACADRQRAIAZBDGoQqA0LIAZB4AJqIAZBEGpBwAL8CgAAQeACQRAQsw4iA0UNAyADQQA2AhAgA0KBgICAEDcDACADQRRqIAZB1AJqQcwC/AoAACAGQaAFaiQAIANBEGoPCxCbDwsACxCcDwALQRBB4AJBkMTEACgCACIDQcwIIAMbEQAAAAuaAwEJfUMAAIA/IAEqAggiBZgiBCABKgIEIgMgA5RDAACAvyAFIASSlSIIlJIhBiABKgIAIgIgAiAElJQgCJRDAACAP5IhCSACIASMlCEKAkACQCACIAQgAiADlCAIlCIIlCIEkiADkyIHQwAAAABeRQRAIAIgA4wiB14gAiAEXnENASAEIAdeRQRAIAogBpJDAACAPyADkyACkyAEk5EiAiAC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DiACKgIMIgYgBpQiEiACKgIAIgQgBJQiE5MiFCACKgIEIgggCJQiD5OSi5QgASoCBCIQIAggA5QiByAHkiIVIAQgBpQiByAHkiIWkouUIAEqAgAiByAEIAOUIgkgCZIiCSAIIAaUIgogCpIiCpOLlJKSIheSkjgCFCAAIBEgF5MgBZM4AgggACAFIAsgDSAVIBaTi5QgByAEIAiUIgQgBJIiBCADIAaUIgMgA5IiA5KLlCAQIA8gFJIgDpOLlJKSIgaSkjgCECAAIAUgDCANIAkgCpKLlCAQIAQgA5OLlCAHIBMgEpIgD5MgDpOLlJKSIgOSkjgCDCAAIAsgBpMgBZM4AgQgACAMIAOTIAWTOAIAIBhBIGokAAufCQILfwJ+IwBBoAVrIgQkAAJAAkACQAJAIAFFDQAgAUEIayIGKAIAQQFqIQMgBiADNgIAIANFDQEgASgCACIDQX9GDQIgASADQQFqNgIAIAQgBjYCDCAEIAE2AgggBCABQQRqIgg2AgQgAkUNACACQQhrIgcoAgBBAWohAyAHIAM2AgAgA0UNASACKAIAIgNBf0YNAiACIANBAWo2AgAgBCAHNgLcAiAEIAI2AtgCIAQgAkEEajYC1AIgBEEQaiIDQgA3A2ggA0IANwOQASADQgA3AlQgA0H4AGpCADcDACADQfAAakIANwMAIANBmAFqQgA3AwAjAEHgAGsiBUHNAGoiCUELakIANwAAIAVBOmoiCkELakIANwAAIAVBJ2oiC0ELakIANwAAIAVBFGoiDEELakIANwAAIAVBAWoiDUELakIANwAAIANB3ABqQgA3AgAgBUIANwBQIAVCADcAPSAFQgA3ACogBUIANwAXIAVCADcABCADQRBqQQA2AgAgA0EIakIANwMAIANCADcDACADIAA4AhQgA0KAgICA8P//v383AxggA0L////7BzcDICADQv////v///+//wA3AyggA0KAgICA8P//v383AzAgA0L////7BzcDOCADQv////v///+//wA3A0AgA0KAgICA8P//v383A0ggA0KAgID8AzcDgAEgA0IANwOIASADQv////sHNwOgASADQQA6AKgBIANBgICA/AM2AmQgA0H////7BzYCUCADIAUpAE03AKkBIANBsQFqIAlBCGopAAA3AAAgA0G4AWogCUEPaigAADYAACADQQA6AMQBIANC////+wc3ArwBIANBADoA4AEgA0L////7BzcD2AEgA0EAOgD8ASADQv////sHNwL0ASADQdQBaiAKQQ9qKAAANgAAIANBzQFqIApBCGopAAA3AAAgAyAFKQA6NwDFASADQfABaiALQQ9qKAAANgAAIANB6QFqIAtBCGopAAA3AAAgAyAFKQAnNwDhASADQYwCaiAMQQ9qKAAANgAAIANBhQJqIAxBCGopAAA3AAAgAyAFKQAUNwD9ASADQQA6AJgCIANC////+wc3A5ACIANBqAJqIA1BD2ooAAA2AAAgA0GhAmogDUEIaikAADcAACADIAUpAAE3AJkCIANBgAI7AbwCIANBgIKAODYCuAIgA0EAOgC0AiADQv////sHNwKsAiAIQQhqKAIAIQMgCCkCACEOIAIgAigCAEEBazYCACAEQYABaiADNgIAIARBnAFqIAJBDGooAgA2AgAgAikCBCEPIAcgBygCAEEBayICNgIAIAQgDjcDeCAEIA83ApQBIAJFBEAgBEHcAmoQqA0LIAEgASgCAEEBazYCACAGIAYoAgBBAWsiATYCACABRQRAIARBDGoQqA0LIARB4AJqIARBEGpBwAL8CgAAQeACQRAQsw4iAUUNAyABQQA2AhAgAUKBgICAEDcDACABQRRqIARB1AJqQcwC/AoAACAEQaAFaiQAIAFBEGoPCxCbDwsACxCcDwALQRBB4AJBkMTEACgCACIBQcwIIAEbEQAAAAuDAwEQfSAAQgI3AhAgAyoCACACKgIQIg2TIgggAioCBCIJlCADKgIEIAIqAhQiDpMiDCACKgIAIgqUkyIHIAeSIQUgDCACKgIIIgeUIAMqAgggAioCGCIPkyIEIAmUkyILIAuSIQYgACABKgIIIhAgBCACKgIMIgsgBZQgCSAGlCAKIAQgCpQgCCAHlJMiBCAEkiIElJOSkiIRlCABKgIAIhIgCCALIAaUIAcgBJQgCSAFlJOSkiITlCABKgIEIgggDCALIASUIAogBZQgByAGlJOSkiIGlJKSIgVDAAAAAF86AAwgCiAGIAggBZSTIgiUIAkgEyASIAWUkyIMlJMiBiAGkiEGIAcgDJQgCiARIBAgBZSTIgSUkyIFIAWSIQUgACAPIAQgCyAGlCAKIAWUIAkgCSAElCAHIAiUkyIEIASSIgSUk5KSkjgCCCAAIA4gCCALIAWUIAcgBJQgCiAGlJOSkpI4AgQgACANIAwgCyAElCAJIAaUIAcgBZSTkpKSOAIAC4ADAQ19IAIqAhAhDSACKgIUIQ4gAioCBCIIIAMqAgAiCZQgAioCACIKIAMqAgQiBpSTIgcgB5IhBCACKgIIIgcgBpQgCCADKgIIIgWUkyILIAuSIQwgACACKgIYIAEgAUEMaiABKgIIIAUgAioCDCILIASUIAggDJQgCiAKIAWUIAcgCZSTIgUgBZIiBZSTkpIiD5QgASoCACIQIAkgCyAMlCAHIAWUIAggBJSTkpIiCZQgASoCBCAGIAsgBZQgCiAElCAHIAyUk5KSIgSUkpIgASoCDCIGIAmUIAQgASoCEJSSIA8gASoCFJSSXiIBGyICKgIIIgQgCyAKIAIqAgQiDJQgCCAQIAYgARsiCZSTIgYgBpIiBpQgCiAHIAmUIAogBJSTIgUgBZIiBZQgCCAIIASUIAcgDJSTIgQgBJIiBJSTkpKSOAIIIAAgDiAMIAsgBZQgByAElCAKIAaUk5KSkjgCBCAAIA0gCSALIASUIAggBpQgByAFlJOSkpI4AgALgAMBDX0gAioCECENIAIqAhQhDiACKgIEIgggAyoCACIJlCACKgIAIgogAyoCBCIGlJMiByAHkiEEIAIqAggiByAGlCAIIAMqAggiBZSTIgsgC5IhDCAAIAIqAhggASABQQxqIAEqAgggBSACKgIMIgsgBJQgCCAMlCAKIAogBZQgByAJlJMiBSAFkiIFlJOSkiIPlCABKgIAIhAgCSALIAyUIAcgBZQgCCAElJOSkiIJlCABKgIEIAYgCyAFlCAKIASUIAcgDJSTkpIiBJSSkiAPIAEqAhSUIAEqAgwiBiAJlCABKgIQIASUkpJeIgEbIgIqAggiBCALIAogAioCBCIMlCAIIBAgBiABGyIJlJMiBiAGkiIGlCAKIAcgCZQgCiAElJMiBSAFkiIFlCAIIAggBJQgByAMlJMiBCAEkiIElJOSkpI4AgggACAOIAwgCyAFlCAHIASUIAogBpSTkpKSOAIEIAAgDSAJIAsgBJQgCCAGlCAHIAWUk5KSkjgCAAuYCQILfwJ+IwBBoAVrIgMkAAJAAkACQAJAIABFDQAgAEEIayIFKAIAQQFqIQIgBSACNgIAIAJFDQEgACgCACICQX9GDQIgACACQQFqNgIAIAMgBTYCDCADIAA2AgggAyAAQQRqIgc2AgQgAUUNACABQQhrIgYoAgBBAWohAiAGIAI2AgAgAkUNASABKAIAIgJBf0YNAiABIAJBAWo2AgAgAyAGNgLcAiADIAE2AtgCIAMgAUEEajYC1AIgA0EQaiICQgA3A2ggAkIANwOQASACQgA3AlQgAkH4AGpCADcDACACQfAAakIANwMAIAJBmAFqQgA3AwAjAEHgAGsiBEHNAGoiCEELakIANwAAIARBOmoiCUELakIANwAAIARBJ2oiCkELakIANwAAIARBFGoiC0ELakIANwAAIARBAWoiDEELakIANwAAIAJB3ABqQgA3AgAgBEIANwBQIARCADcAPSAEQgA3ACogBEIANwAXIARCADcABCACQgA3AwggAkIANwMAIAJBADoAqAEgAkL////7BzcDoAEgAkIANwOIASACQoCAgPwDNwOAASACQYCAgPwDNgJkIAJB////+wc2AlAgAkKAgICA8P//v383A0ggAkL////7////v/8ANwNAIAJC////+wc3AzggAkKAgICA8P//v383AzAgAkL////7////v/8ANwMoIAJC////+wc3AyAgAkKAgICA8P//v383AxggAkL////7////v/8ANwMQIAIgBCkATTcAqQEgAkGxAWogCEEIaikAADcAACACQbgBaiAIQQ9qKAAANgAAIAJBADoAxAEgAkL////7BzcCvAEgAkEAOgDgASACQv////sHNwPYASACQQA6APwBIAJC////+wc3AvQBIAJB1AFqIAlBD2ooAAA2AAAgAkHNAWogCUEIaikAADcAACACIAQpADo3AMUBIAJB8AFqIApBD2ooAAA2AAAgAkHpAWogCkEIaikAADcAACACIAQpACc3AOEBIAJBjAJqIAtBD2ooAAA2AAAgAkGFAmogC0EIaikAADcAACACIAQpABQ3AP0BIAJBADoAmAIgAkL////7BzcDkAIgAkGoAmogDEEPaigAADYAACACQaECaiAMQQhqKQAANwAAIAIgBCkAATcAmQIgAkGAAjsBvAIgAkEHNgK4AiACQQA6ALQCIAJC////+wc3AqwCIAdBCGooAgAhAiAHKQIAIQ0gASABKAIAQQFrNgIAIANBgAFqIAI2AgAgA0GcAWogAUEMaigCADYCACABKQIEIQ4g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DWoQog0MAgsgAygABCEGIAEgBUEMayIKNgIEIAEgA0EMajYCACAKQQNLDQIgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwBCyACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINCyEBIARBFDYCACAEIAE2AgQMEAsgAyoACCE3IAEgBUEQazYCBCABIANBEGo2AgAgBCADKgAMOAIMIAQgNzgCCCAEIAY2AgQgBEERNgIADA8LAkACfyAHQQRPBEAgASAFQQhrIgY2AgQgASADQQhqNgIAIAZBBEkEQCACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAJBkA1qEKINDAILIAMoAAQhBiABIAVBDGsiCjYCBCABIANBDGo2AgAgCkEDSw0CIAJBADoAkw0gAkElOwCRDSACQQA2ApQNIAJBAToAkA0gAkGQDWoQog0MAQsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQshASAEQRQ2AgAgBCABNgIEDA8LIAMqAAghNyABIAVBEGs2AgQgASADQRBqNgIAIAQgAyoADDgCDCAEIDc4AgggBCAGNgIEIARBEDYCAAwOCyACQZANaiIDIAEQyQMgAigClA0hCgJAIAIoApANRQRAIAJBkAlqIgZBGGoiBSADQSBqKQIANwMAIAZBEGoiBiADQRhqKQIANwMAIAJBmAlqIgcgA0EQaikCADcDACACIAIpApgNNwOQCSABKAIEIghBBE8NASACQQA6AJMNIAJBJTsAkQ0gAkEANgKUDSACQQE6AJANIAMQog0hCgsgBEEUNgIAIAQgCjYCBAwOCyABIAhBBGs2AgQgASABKAIAIgFBBGo2AgAgASoAACE3IAQgAikDkAk3AgggBEEQaiAHKQMANwIAIARBGGogBikDADcCACAEQSBqIAUpAwA3AgAgBCA3OAIoIAQgCjYCBCAEQQ82AgAMDQsCQAJ/AkACQCAHQQRJDQAgASAFQQhrIgY2AgQgASADQQhqNgIAIAZBBEkNACADKAAEIQYgASAFQQxrIgo2AgQgASADQQxqNgIAIApBA0sNAQsgAkEAOgCTDSACQSU7AJENIAJBADYClA0gAkEBOgCQDSACQZANahCiDQwB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BGsiBA0ACwsgATUCDCEGIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACKAIEIABqIAY3AAAgAiAAQQhqIgA2AgggATUCECEGIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACIABBCGo2AgggAigCBCAAaiAGNwAAQQALtAICBX8BfiMAQaABayIBJAAgAUGMAWogAEEUaigCACIENgIAIAFB4ABqIgNBCGoiBSAAQQhqKAIANgIAIANBFGogBDYCACADQRhqIgYgACkCDCIINwMAIANBIGoiByAENgIAIAEgCDcChAEgASAAKQIANwNgIAEgCDcCbCABQoGAgIAQNwKYASABQoCAgIAQNwKQASABQThqIAFBkAFqIgAQ5AYgAEEIakIANwMAIAFCADcDkAEgAUHIAGogABDlBiABQQhqIgBBCGogBSkDADcDACAAQRBqIANBEGopAwA3AwAgAEEYaiAGKQMANwMAIABBIGogBykDADcDACAAQShqIANBKGopAwA3AwAgAUKAgICALDcDWCABIAEpA2A3AwggAiAAQdgA/AoAACABQaABaiQAC68CAQN/IwBBkAFrIgMkAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENASADQQhqIAAoAgAgA0EQahDUBSABQQFBAUEAIAMoAgggAygCDBDfAgwCCyAAKAIAIQBBACECA0AgAiADakGPAWogAEEPcSIEQTByIARB1wBqIARBCkkbOgAAIAJBAWshAiAAQQ9LIQQgAEEEdiEAIAQNAAsgAUEBQeuqxABBAiACIANqQZABakEAIAJrEN8CDAELIAAoAgAhAEEAIQIDQCACIANqQY8BaiAAQQ9xIgRBMHIgBEE3aiAEQQpJGzoAACACQQFrIQIgAEEPSyEEIABBBHYhACAEDQALIAFBAUHrqsQAQQIgAiADakGQAWpBACACaxDfAgshACADQZABaiQAIAAL5wICAn0CfwJAIAC8IgRB/////wdxIgNB////+wNNBEAgA0GAgID4A08EQCAEQQBOBEBDAACAPyAAk0MAAAA/lCIAkSICvEGAYHG+IQEgAiAAIAAgAENr0w28lEO6Ey+9kpRDdaoqPpKUIABDruU0v5RDAACAP5KVlCAAIAEgAZSTIAIgAZKVkiABkiIAIACSDwtD2g/JPyAAQwAAgD+SQwAAAD+UIgCRIgEgASAAIAAgAENr0w28lEO6Ey+9kpRDdaoqPpKUIABDruU0v5RDAACAP5KVlENoIaKzkpKTIgAgAJIhAQwCC0PaD8k/IQEgA0GBgICUA0kNAUNoIaIzIAAgACAAlCIBIAEgAUNr0w28lEO6Ey+9kpRDdaoqPpKUIAFDruU0v5RDAACAP5KVlJMgAJND2g/JP5IPCyADQYCAgPwDRwRAQwAAAAAgACAAk5UPC0MAAAAAQ9oPSUAgBEEAThsPCyABC8ICAgJ+B38gACgCBCIIBEAgACgCACEDIAAoAgwiCQRAIANBCGohBCADKQMAQn+FQoCBgoSIkKDAgH+DIQEgAyEFA0AgAVAEQANAIAVBwAJrIQUgBCkDACEBIARBCGohBCABQoCBgoSIkKDAgH+DIgFCgIGChIiQoMCAf1ENAAsgAUKAgYKEiJCgwIB/hSEBCyAFIAF6p0EDdkFYbGoiBkEYaygCACIHBEAgBkEUaygCACAHQQxsQQQQiA8LIAFCAX0hAiAGQQxrKAIAIgcEQCAGQQhrKAIAIAdBA3RBBBCIDwsgASACgyEBIAlBAWsiCQ0ACwsgAyAIQVhsakEoayAIQSlsQTFqQQgQiA8LIAAoAogCIgMEQCAAKAKMAiADQQJ0QQQQiA8LIAAoApQCIgMEQCAAKAKYAiADQQJ0QQQQiA8LC8sCAgR/BH0jAEEgayICJAACQAJAAkAgAEUNACAAQQhrIgUoAgBBAWohAyAFIAM2AgAgA0UNASAAKAIADQIgAEF/NgIAIAIgBTYCECACIAA2AgwgAiAAQQRqNgIIIAFFDQAgAUEIayIDKAIAQQFqIQQgAyAENgIAIARFDQEgASgCACIEQX9GDQIgASAEQQFqNgIAIAEqAgQiByAHlCABKgIIIgggCJSSIAEqAgwiCSAJlJKRIQYgACAJIAaVOAIwIAAgCCAGlTgCLCAAIAcgBpU4AiggASABKAIAQQFrNgIAIAMgAygCAEEBayIENgIAIAIgAzYCHCACIAE2AhggAiABQQRqNgIUIARFBEAgAkEcahCoDQsgAEEANgIAIAUgBSgCAEEBayIANgIAIABFBEAgAkEQahDnCwsgAkEgaiQADwsQmw8LAAsQnA8AC9MCAQN/IABBDGogACgCGCABaiIBEM0CIABBHGogARDNAiAAQSxqIAEQzQICQAJAIAAoAjwgACgCRCIDayACSQRAIABBPGogAyACQQRBEBD2BiAAKAJEIQMMAQsgAkUNAQsgAkEDcSEBIAAoAkAhBSACQQFrQQNPBEAgAkH8//8DcSEEIAUgA0EEdGohAgNAIAJCgICAgMAANwIAIAJBOGpCADcCACACQTBqQoCAgIDAADcCACACQShqQgA3AgAgAkEgakKAgICAwAA3AgAgAkEYakIANwIAIAJBEGpCgICAgMAANwIAIAJBCGpCADcCACACQUBrIQIgA0EEaiEDIARBBGsiBA0ACwsgAUUNACABIANqIQQgBSADQQR0aiECA0AgAkKAgICAwAA3AgAgAkEIakIANwIAIAJBEGohAiABQQFrIgENAAsgBCEDCyAAIAM2AkQLqwICCn0BfyMAQTBrIg0kACACKgIAIAEqAhCTIgkgASoCBCIDlCACKgIEIAEqAhSTIgogASoCACIFlJMiBiAGkiEGIAogASoCCCIIlCACKgIIIAEqAhiTIgQgA5STIgcgB5IhByANIAQgASoCDCILIAaUIAMgB5QgBSAEIAWUIAkgCJSTIgQgBJIiBJSTkpIiDDgCECANIAkgCyAHlCAIIASUIAMgBpSTkpIiAzgCCCANIAogCyAElCAFIAaUIAggB5STkpIiBTgCDCANQRRqIAAgDUEIahDjA0EBIQECQCADIA0qAhSTIgMgA5QgBSANKgIYkyIDIAOUkiAMIA0qAhyTIgMgA5SSIgNDAACAKF5FDQAgACoCGCADkWANAEEAIQELIA1BMGokACABC9UCAgR/AX4jAEEgayIDJAACQAJAAkACQCAABEAgAEEIayIEKAIAQQFqIQIgBCACNgIAIAJFDQEgACgCACICQX9GDQIgACACQQFqNgIAIAMgBDYCDCADIAA2AgggAyAAQQRqIgI2AgQgAiABvSIGpyAGQiCIpxC4DCICRQ0DIAIoAhAiBUEBRgRAIANBGGogAkE0aigCADYCACADIAIpAiw3AxALIAAgACgCAEEBazYCACAEIAQoAgBBAWsiADYCACAARQRAIANBDGoQ7wwLQQAhACAFBEBBGEEEELMOIgBFDQUgAEEANgIIIABCgYCAgBA3AgAgACADKQMQNwIMIABBFGogA0EYaigCADYCACAAQQhqIQALIANBIGok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DSECDAELIAEgBUEIayIENgIEIAEgASgCACICQQhqNgIAIAIpAAAiBkKAgICAEFoEQCADQQE6AAggAyAGNwMQIANBCGogA0EfakGAqsEAEO8KIQIMAQsgBEEDTQRAIANCgcoANwMIIANBCGoQog0hAgwBCyABIAVBDGsiBDYCBCABIAJBDGo2AgAgBEUEQCADQoHKADcDCCADQQhqEKINIQIMAQsgAigACCEEIAEgBUENazYCBCABIAJBDWo2AgAgAi0ADCIBQQJJDQFBDEEEELMOIgJFDQMgAiABOgAEIAJBgoCAgHg2AgALIAAgAjYCAEECIQEMAQsgACAENgIEIAAgBj4CAAsgACABOgAIIANBIGokAA8LQQRBDEGQxMQAKAIAIgBBzAggABsRAAAAC7QCAQJ/IwBBIGsiAiQAQYEBIQMgAiABKAIAQQFxBH8gASsCBBAABUGBAQs2AgwgAiABKAIMQQFxBH8gASsCEBAABUGBAQs2AhAgAiABKwIgEAA2AhggAiABKwIoEAA2AhwgAiAAQQhqIAAgAkEYaiACQRxqEIQONgIUIAIgAkEUaiAAIAJBDGogAkEQahC0DCACKAIEIQECQCACKAIAQQFxRQRAIAEQASEAIAFBhAFPBEAgARACCyAAQQFGIQAMAQtBACEAIAFBhAFJDQAgARACCyACKAIQIgFBhAFPBEAgARACCyACKAIMIgFBhAFPBEAgARACCyACKAIUIgFBhAFPBEAgARACCyACKAIcIgFBhAFPBEAgARACCyACKAIYIgFBhAFPBEAgARACCyACQSBqJAAgAAvTAgEEfyMAQbADayIBJAACQAJAAkAgAARAIABBEGsiAigCACIEQQFqIQMgAiADNgIAIANFDQEgACgCAA0CIAAoApwDIQMgAEECNgKcAyACIAQ2AgBBACECIANBAkcEQCABQRhqIgIgAEG4A2opAwA3AwAgAUEQaiIEIABBsANqKQMANwMAIAEgACkDoAM3AwAgASAAQagDaikDADcDCCABQTRqIABBIGpB/AL8CgAAQcADQRAQsw4iAEUNBCAAQQA2AhAgAEKBgICAEDcDACAAQRRqIAFBKGpBiAP8CgAAIAAgAzYCnAMgACABKQMANwOgAyAAQagDaiABKQMINwMAIABBsANqIAQpAwA3AwAgAEG4A2ogAikDADcDACAA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IAxrQXhNBEAgE0F4cSEIA0AgBEL/////DzcCACAEQThqQv////8PNwIAIARBMGpC/////w83AgAgBEEoakL/////DzcCACAEQSBqQv////8PNwIAIARBGGpC/////w83AgAgBEEQakL/////DzcCACAEQQhqQv////8PNwIAIARBQGshBCAIQQhrIggNAAsLIAsEQANAIARC/////w83AgAgBEEIaiEEIAtBAWsiCw0ACwsgBSAQakEBayEFCyAEQv////8PNwIAIAYgBUEBaiIINgI4CyAIIAxNDQQgBigCNCAMQQN0aiIEIAc2AgQgBCASNgIACyAJQX9GBEAgBigCICIJIAYoAhhGBEAgBkEYakH0v8EAELoICyAGIAlBAWo2AiAgBigCHCAJQQR0aiIEQn83AgggBCAPNgIEIAQgCjYCAAJAIAYoAjgiCCAKSwRAIAghBAwBCyAIIApBAWoiBEkEQCAEIAgiBWshECAQIAYoAjAgBWtLBEAgBkEwaiAFIBBBBEEIEOIGIAYoAjghBQsgBigCNCAFQQN0aiEEIBBBAk8EQCAKIAhrIhNBB3EhCyAIIAprQXhNBEAgE0F4cSEIA0AgBEL/////DzcCACAEQThqQv////8PNwIAIARBMGpC/////w83AgAgBEEoakL/////DzcCACAEQSBqQv////8PNwIAIARBGGpC/////w83AgAgBEEQakL/////DzcCACAEQQhqQv////8PNwIAIARBQGshBCAIQQhrIggNAAsLIAsEQANAIARC/////w83AgAgBEEIaiEEIAtBAWsiCw0ACwsgBSAQakEBayEFCyAEQv////8PNwIAIAVBAWohBAsgBiAENgI4CyAEIApNDQUgBigCNCAKQQN0aiIEIAk2AgQgBCAPNgIACyAGKAIgIQUgBigCHCEEIAYoAiwhCwJAAkAgByAJTQRAIAUgCU0NASAHIAlGDQIMCAsgBSAHSw0HCyANQQA2AjggDUEBNgIsIA1B3L/BADYCKCANQgQ3AjAgDUEoakHkv8EAELgNAAsgBCAHQQR0aiIEKAIMIQUgBCALNgIMIAQoAgghCCAEIAs2AggMBgsgDiAEQdS+wQAQiAsACyAMIARBhMDBABCICwALIAogCUGEwMEAEIgLAAsgDCAIQZTAwQAQiAsACyAKIARBlMDBABCICwAL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ACAEQRBqIgQgDCkDADcDACACQSBqIgkgDSkDADcDACACIAIpA+gPNwMYIANBDGogAkGIB2ooAgA2AgAgAyACKQOABzcCBCADQbgHaiACQYwHakHEAPwKAAAgA0HoA2ogAkGIAWopAwA3AwAgA0HgA2ogAUEwaikDADcDACADQdgDaiABQShqKQMANwMAIANB0ANqIAFBIGopAwA3AwAgA0HIA2ogAUEYaikDADcDACADQcADaiABQRBqKQMANwMAIANBuANqIAIpA1g3AwAgAyACKQNQNwOwAyADQfADaiACQZABakGgAfwKAAAgA0H0BmogAkHQB2pBxAD8CgAAIANBEGogAkGwAmpBoAP8CgAAIANB7AZqIAYpAwA3AgAgA0HkBmogBykDADcCACADQdwGaiAIKQMANwIAIANB1AZqIAQpAwA3AgAgA0HMBmogCSkDADcCACADIAIpAxg3AsQGIANBkAVqIAJB0AVqQdgA/AoAACADQegFaiACQagGakHYAPwKAAAgAyAFNgLABiADQQE2AgAgAigCDCIBBEAgAigCECABQQEQiA8LIAIoAggiAUGDAUsNAQwCCyACQQI2AuQPIAIgBjYCoAgCQCACQaAIaiIBKALEB0ECRwRAIAEQkwogAUFAaxCACiABQYAHahDSByABQeABahDrByABQcQHahCiCCABQYAFahDZCSABQdgFahC3CAwBCyABKAIAEN0JCyADQQI2AgAgAigCDCIBBEAgBCABQQEQiA8LIAIoAggiAUGEAUkNAQsgARACCyACQbAYaiQAIAAgACgCAEEBazYCACAKIAooAgBBAWsiADYCACAARQRAIANBjAhqEKcNC0EAIQAgAygCAEECRwRAIANBkAhqIANBgAj8CgAAQaAIQRAQsw4iAEUNBCAAQQA2AhAgAEKBgICAEDcDACAAQRRqIANBhAhqQYwI/AoAACAAQRBqIQALIANBkBBqJAAgAA8LEJsPCwALEJwPAAtBEEGgCEGQxMQAKAIAIgBBzAggABsRAAAAC7YCAgJ9Bn8gACgCCCIDRQRAQ///f38PCyAAKAIEIQUgA0EBcSEGAkAgA0EBRgRAQQAhA0P//39/IQEMAQsgBUHEAGohACADQX5xIQdBACEDQ///f38hAQNAIABBKGsoAgAgAEEkaygCACIEKAIIQQFrQXhxakEI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IAUoAgwiA00NAQNAIAYgA0E4bGoiBSgCMCAKRg0BIAQgBSgCLCIDSw0ACwwBCyADIARPDQAgBiADQThsaiIDQQAgAygCNCAJSRtBACADKAIwIAlJGyELCyAAIAAoAgBBAWs2AgAgCCAIKAIAQQFrIgA2AgAgAEUEQCAHQQxqEOwMCyALBH9BEEEEELMOIgBFDQQgACALNgIMIABBADYCCCAAQoGAgIAQNwIAIABBCGoFQQALIQAgB0EQaiQAIAAPCxCbDwsACxCcDwALQQRBEEGQxMQAKAIAIgBBzAggABsRAAAAC4QCAwR/AX4BfSABKAIEIQUgASgCCCIErSEGIAAoAgAiAigCCCEAIAIoAgAgAGtBB00EQCACIABBCEEBQQEQ4gYgAigCCCEACyACIABBCGoiAzYCCCACKAIEIABqIAY3AAAgBARAIARBAnQhBANAIAUqAgAhByAFQQRqIQUgAiACKAIAIANrQQNLBH8gAwUgAiADQQRBAUEBEOIGIAIoAggLIgBBBGoiAzYCCCACKAIEIABqIAc4AAAgBEEEayIEDQALCyABNQIMIQYgAigCACADa0EHTQRAIAIgA0EIQQFBARDiBiACKAIIIQMLIAIgA0EIajYCCCACKAIEIANqIAY3AABBAAuLAgEIfyMAQRBrIgIkAAJAAkACQCABRQRAIABFDQEgAEEIayIBKAIAQQFHDQIgACgCICEGIAAoAhwhAyAAKAIUIQcgACgCECEEIAAoAgghCCAAKAIEIQUgAUEANgIAAkAgAUF/Rg0AIABBBGsiCSgCAEEBayEAIAkgADYCACAADQAgAUHEAEEEEIgPCyAFBEAgCCAFQdQBbEEEEIgPCyAEBEAgByAEQQxsQQQQiA8LIANFDQMgBiADQQxsQQQQiA8MAwsgAEUNACAAQQhrIgAoAgBBAWshASAAIAE2AgAgAiAANgIMIAENAiACQQxqENMKDAILEJsPAAtBgNLBAEE/EJoPAAsgAkEQaiQAC7ICAQJ9AkACQAJAIAEoAghFDQAgASgCBCIBKAI8Qf////8DcSABKAIcQf////8DcWoOAgABAgsgAEL////7////v383AhAgAEL////79///v383AgggAEL////79///v/8ANwIADwsgACABKQIANwIAIAAgASkCEDcCDCAAQQhqIAFBCGooAgA2AgAg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AyABNgIAIAFFDQEgACgCACIBQX9GDQIgACABQQFqNgIAIAAoAgQiBUHwAGooAgAhBiAFKQJoIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL6wECBn8BfiMAQRBrIgIkAAJAAkACQCAABEAgAEEIayIDKAIAIgRBAWohASADIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCIFQZABaigCACEGIAUpAogBIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL6wECBn8BfiMAQRBrIgIkAAJAAkACQCAABEAgAEEIayIDKAIAIgRBAWohASADIAE2AgAgAUUNASAAKAIAIgFBf0YNAiAAIAFBAWo2AgAgACgCBCIFQZwBaigCACEGIAUpApQBIQcgACABNgIAIAJBCGoiASAGNgIAIAMgBDYCACACIAc3AwBBGEEEELMOIgBFDQMgAEEANgIIIABCgYCAgBA3AgAgACACKQMANwIMIABBFGogASgCADYCACACQRBqJAAgAEEIag8LEJsPCwALEJwPAAtBBEEYQZDExAAoAgAiAEHMCCAAGxEAAAAL2AECAX8BfSAAKgIAIQMgASgCACICKAIIIQEgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIoAgQgAWogAzgAACACIAFBBGoiATYCCCAAKgIEIQMgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIoAgQgAWogAzgAACACIAFBBGoiATYCCCAAKgIIIQMgAigCACABa0EDTQRAIAIgAUEEQQFBARDiBiACKAIIIQELIAIgAUEEajYCCCACKAIEIAFqIAM4AABBAAvBAQIFfwF+IwBBIGsiAiQA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AAAAlCIrkiInICGTXhshLCAgICEgICAmkiAhICeSXhshJiAiICMgIEMAAAAAlCIgICkgIpOSICogI5MgIUMAAAAAlCIhkl4bIScgIiAjICAgIiApkpIgKiAjkiAhkl4bISIgJCAlICAgKCAkk5IgKyAlkyAhkl4bISMgJCAlICAgJCAokpIgJSArkiAhkl4bISAgAygCQCITIAMoAjhGBEAgGUHo7MIAEMcICyALQQFqIRUgAygCPCIIIBNBBXRqIgFBgYCAgHw2AhwgASAmOAIYIAEgIjgCFCABICA4AhAgASALNgIMIAEgLDgCCCABICc4AgQgASAjOAIAIAMgE0EBaiIbNgJAAkAgAygCJCIFIAtLBEAgBSEBDAELIAsgBSIBayEEIAQgAygCHCABa08EQCAaIAEgBEEBakEEQQgQ4wYgAygCJCEBCyAVIAVrQQNxIQ8gAygCICEWIARBA08EQCASIAVrQXxxIQkgFiABQQN0aiEEA0AgBEEANgIAIARBGGpBADYCACAEQRBqQQA2AgAgBEEIakEANgIAIARBIGohBCABQQRqIQEgCUEEayIJDQALCyAPBEAgASAPaiEPIBEgBWtBA3EhCSAWIAFBA3RqIQQDQCAEQQA2AgAgBEEIaiEEIAlBAWsiCQ0ACyAPIQELIAMgATYCJAsgASALTQ0EIAMoAiAgC0EDdGoiASgCACEFIAFCATcCACAFRQRAIAMgAygCKEEBajYCKAsgEUEBaiERIBJBAWohEiAVIQsgGCAOQQhqIg5HDQALIBNBAWoOAwcFBAYLIAogAUGsycIAENMNAAsgASANQbCWwwAQiAsACyAFIA1BwJbDABCICwALIAsgAUGo/cMAEIgLAAsgAyAIKQMANwOAASADIAgpAyA3A6ABIAMgCEEYaikDADcDmAEgAyAIQRBqKQMANwOQASADIAhBCGopAwA3A4gBIAMgCEEoaikDADcDqAEgAyAIQTBqKQMANwOwASADIAhBOGopAwA3A7gBIAMoAgwiBSADKAIERgRAIANBBGpBiOzCABDICAsgAygCCCAFQQZ0aiIBIAMpA4ABNwMAIAFBIGogAykDoAE3AwAgAUEYaiADKQOYATcDACABQRBqIAMpA5ABNwMAIAFBCGogAykDiAE3AwAgAUEoaiADKQOoATcDACABQTBqIAMpA7ABNwMA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KAIAIgBBzAggABsRAAAACyAAQgA3AzAgAEKAgICAwAA3AyggAEIENwMgIABCADcDGCAAQoCAgICACDcDECAAQQA2AgggAEKBgICAEDcDACAAQoCAgIDAADcDkAEgAEIANwOIASAAQoCAgIDAADcDgAEgAEIENwN4IABCADcDcCAAQoCAgIDAADcDaCAAQhA3A2AgAEIANwNYIABCgICAgIAINwNQIABCidm54o7TvpcINwNIIABB0MvBACkDADcDOCAAQUBrQdjLwQApAwA3AwAgAEGoAWpBADoAACAAQaABakIANwMAIABCADcDmAEgAEEIagvJAQEBfyMAQRBrIggkACAAKAIAIAFBBiAAKAIEKAIMEQUAIQEgCEEAOgANIAggAToADCAIIAA2AgggCEEIaiACQQQgAyAEELEGIAVBBSAGIAcQsQYhASAILQANIgIgCC0ADCIDciEAAkAgAkEBRw0AIANBAXENACABKAIAIgAtAApBgAFxRQRAIAAoAgBB46rEAEECIAAoAgQoAgwRBQAhAAwBCyAAKAIAQeKqxABBASAAKAIEKAIMEQUAIQALIAhBEGokACAAQQFxC7wDAQl/IwBBQGoiASQAIAFBDGohACMAQSBrIgIkACACQQA2AhggAkEIakEQQcAFIAJBFGoQ9AkgAigCCEEBRgRAIAIoAgwgAigCEEGgicIAENMNAAsgAigCDCIFIQMDQCADQQA2AgAgA0GwAWpBADYCACADQQRqIARBA0ciBjYCACADQbQBaiAEQQFqIgdBA0ciCDYCACADQQhqIAdBACAGGzYCACADQbgBaiAEQQJqIgRBACAIGzYCACADQeACaiEDIARBBEcNAAsgAEIANwIUIABBBDYCECAAIAU2AgwgAEEENgIIIABCATcCACACQSBqJAAgAEIENwIsIABCADcCJCAAQoCAgIDAADcCHEHAAEEEELMOIgBFBEBBBEHAAEGQxMQAKAIAIgBBzAggABsRAAAACyAAQQA2AgggAEKBgICAEDcCACAAIAEpAgw3AgwgAEEUaiABQRRqKQIANwIAIABBHGogAUEcaikCADcCACAAQSRqIAFBJGopAgA3AgAgAEEsaiABQSxqKQIANwIAIABBNGogAUE0aikCADcCACAAQTxqIAFBPGooAgA2AgAgAUFAayQAIABBCGoLtAEBBn8j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QQxqIAL8CgAACyAEIAVBAWs2AgwgA0UNAiABIAM2AkggASASNwJMIARBADoAACASQoCAgIAQVCIGDQUgEkIgiKciAi0ANUUEQANAIAItADRFDQALIAIoAgAhAyACQQA2AgAgA0EBcQRAIAFB4ABqIgNBKGogAkEsaikCADcDACADQSBqIAJBJGopAgA3AwAgA0EYaiACQRxqKQIANwMAIANBEGogAkEUaikCADcDACADQQhqIAJBDGopAgA3AwAgASACKQIENwNgIAJBOEEEEIgPIAEoAkghAwwGC0HQt8EAEJEPAAsgAigCACEFIAJBADYCACAFQQFxDQNB4LfBABCRDwALIAJBAWohAiAKIANBDGoiA0cNAAsLIARBADoAAAwDCyACQQE6ADQgAUHgAGoiBUEoaiACQSxqKQIANwMAIAVBIGogAkEkaikCADcDACAFQRhqIAJBHGopAgA3AwAgBUEQaiACQRRqKQIANwMAIAVBCGogAkEMaikCADcDACABIAIpAgQ3A2ALIAcgASkDYDcBACAHQShqIAFB4ABqIgJBKGopAwA3AQAgB0EgaiACQSBqKQMANwEAIAdBGGogAkEYaikDADcBACAHQRBqIAJBEGopAwA3AQAgB0EIaiACQQhqKQMANwEACyADIAMoAgAiAkEBazYCACACQQFGBEAgAUHIAGoQ2gsLIAZFDQMLIAEoAhAiBEGEAU8EQCAEEAILIAFBkAFqJAAMBAsgAUIANwJUIAFCgYCAgMAANwJMIAFBoLjBADYCSCABQccAaiABQcgAakGouMEAEP8MAAsgAiAFQfC3wQAQhwsAC0E8QQQQsw4iAgRAIAJBADYCCCACQoGAgIAQNwIAIAIgBykBADcBDCACQRRqIAdBCGopAQA3AQAgAkEcaiAHQRBqKQEANwEAIAJBJGogB0EYaikBADcBACACQSxqIAdBIGopAQA3AQAgAkE0aiAHQShqKQEANwEAIAEgAkEIahAGNgJgIAFBCGogDSABQRBqIAFB4ABqEL8MIAEoAgwiAkGEAU8EQCACEAILIAEoAmAiAkGEAUkNASACEAIMAQsLQQRBPEGQxMQAKAIAIgBBzAggABsRAAAACyAAQQA2AgAgDCAMKAIAQQFrIgA2AgAgAEUEQCAJQQhqEOkMCyAJQRBqJAAPCxCbDwsACxCcDwALpAEB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AkGA2sIANgIIIAJCBDcCECACQQhqQYjawgAQuA0ACyABKgIEIQQgASoCACEFIAAgASoCCCIGIAOSOAIUIAAgBCADkjgCECAAIAUgA5I4AgwgACAGjCADkzgCCCAAIASMIAOTOAIEIAAgBYwgA5M4AgAgAkEgaiQAC6YBAgF/AX0jAEHAAWsiAyQAIAEqAmAhBSADQeAAaiIEIAEQ9wEgAyAEIAIQ/QICQAJAIAMoAgBBgICAgHhHBEAgBCADQeAA/AoAAEHkAEEEELMOIgFFDQEgASAEQeAA/AoAACABIAU4AmAMAgtBACEBDAELQQRB5ABBkMTEACgCACIAQcwIIAAbEQAAAAsgAEGk18MANgIEIAAgATYCACADQcABaiQAC+MCAgV/AX0jAEEgayICJAAgAiAAOAIMIAIgAEMAAAAAlCIHOAIQIAIgBzgCCCACIACMOAIYIAIgB4wiADgCHCACIAA4AhQjAEEgayIDJAAgA0EQaiIFIAJBFGoiBEEIaigCADYCACADQRxqIAJBCGoiBkEIaigCADYCACADIAQpAgA3AwggAyAGKQIANwIUQSRBBBCzDiIERQRAQQRBJEGQxMQAKAIAIgJBzAggAhsRAAAACyAEQoGAgIAQNwIAIAQgAykDCDcCCCAEIAE4AiAgBEEQaiAFKQMANwIAIARBGGogA0EYaikDADcCACACQfiewwA2AgQgAiAENgIAIANBIGokACACKAIEIQQgAigCACEFQRRBBBCzDiIDRQRAQQRBFEGQxMQAKAIAIgJBzAggAhsRAAAACyADIAU2AgwgA0EANgIIIANCgYCAgBA3AgAgAyAENgIQIAJBIGokACADQQhqC8YDAQR/IwBBMGsiAyQAIANBDGohAiAAQQBHIQQCQAJAQYACQcAAELMOIgAEQCAAQQA6AMgBIABCgYCAgBA3A8ABIABBAToAnAEgAEIENwKUASAAQgA3AowBIABCgICAgMAANwKEASAAQQA6AIABIABCADcDQCAAQgA3AwBBgAJBwAAQsw4iAUUNAiABQQA6AMgBIAFCgYCAgBA3A8ABIAFBAToAnAEgAUIENwKUASABQgA3AowBIAFCgICAgMAANwKEASABQQA6AIABIAFCADcDQCABQgA3AwAgAiAEOgAgIAIgATYCHCACQQE2AhggAiAANgIUIAJBATYCECAC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IAEgATYCECAHIAFBEGpB+IHEACgCABEDAA0BIAEoAhBB4KrEAEECIAEoAhQoAgwRBQAhBgwBCyAHIAJB+IHEACgCABEDACEGCyAEQQE6AAUgBCAGOgAEIAFBIGokACAAQQFqIQAgBUEBayIFDQALC0EBIQAgA0EEaiIBLQAERQRAIAEoAgAiACgCAEHqqsQAQQEgACgCBCgCDBEFACEACyABIAA6AAQgA0EQaiQAIAALbwECfyMAQRBrIgQkAEGAgICAeEEEIAEgAUEETRsiA2sgAUEHakEAIAFrcSACaiIBSQRAQcyKxABBKyAEQQ9qQbyKxABBiIvEABDaCgALIAAgAzYCACAAIAEgA2pBAWtBACADa3E2AgQgBEEQaiQAC24BAX8jAEEwayIDJAAgAyACNgIEIAMgATYCACADQQI2AgwgA0GYucEANgIIIANCAjcCFCADIAOtQoCAgIAQhDcDKCADIACtQoCAgIAghDcDICADIANBIGo2AhAgA0EIahCGByEAIANBMGokACAAC5gBAQF/QYABQQQQsw4iAARAIABCgICAgICAgMA/NwIcIABCADcCFCAAQX82AhAgAEKAgICAcDcCCCAAQoGAgIAQNwIAIABBJGpBAEHEAPwLACAAQQI6AHwgAEEANgJ4IABCgICAgICAgMA/NwJwIABCgICA/AM3AmggAEEIag8LQQRBgAFBkMTEACgCACIAQcwIIAAbEQAAAAttAgR9AX9BASEHIAAqAgQiAyABKgIEjJQgASoCACAAKgIAIgSUkyABKgIIIAAqAggiBZSTIgZDAAAAAF4Ef0EBBSAGIAQgASoCDJQgAyABKgIQlJIgBSABKgIUlJKVIgNDAAAAAGAgAiADYHELC4QBAQF/QSRBBBCzDiICRQRAQQRBJEGQxMQAKAIAIgBBzAggABsRAAAACyACIAEpAgA3AgAgAkEgaiABQSBqKAIANgIAIAJBGGogAUEYaikCADcCACACQRBqIAFBEGopAgA3AgAgAkEIaiABQQhqKQIANwIAIABBsPbCADYCBCAAIAI2AgALhAEBAX9BKEEEELMOIgJFBEBBBEEoQZDExAAoAgAiAEHMCCAAGxEAAAALIAIgASkCADcCACACQSBqIAFBIGopAgA3AgAgAkEYaiABQRhqKQIANwIAIAJBEGogAUEQaikCADcCACAC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t9OwhQyFIgV+IAFBDGs1AgBC3aHxywyFIgYgA0L/////D4MiA36FIAMgBX4gBCAGfoVCIImFC28BBH4gASgCACACQQR0ayIBQQxrKQAAQpeSnKrbtrXCP4UiA0IgiCIFIAFBEGspAAAgACgCACgCACkDAEI0iYUiBEIgiCIGfiADQv////8PgyIDIARC/////w+DIgR+hSADIAZ+IAQgBX6FQiCJhQtuAQd9IABCAjcCECAAIAEqAgAiBCACKgIAIgWUIAEqAgQiBiACKgIEIgeUkiABKgIIIgggAioCCCIJlJIiA0MAAAAAXzoADCAAIAkgCCADlJM4AgggACAHIAYgA5STOAIEIAAgBSAEIAOUkzgCAAtqAQN9IAAgASABQQxqIAEqAgAgAioCACIDlCABKgIEIAIqAgQiBJSSIAEqAgggAioCCCIFlJIgAyABKgIMlCAEIAEqAhCUkiAFIAEqAhSUkl4bIgEpAgA3AgAgAEEIaiABQQhqKAIANgIAC4YBAQJ/IwBBIGsiAiQAIAAoAgAhAyACQQxqIgAgASgCAEEBQQAgASgCBCgCDBEFADoACCAAIAE2AgQgAEEBOgAJIABBADYCACACIAM2AhggAiADQQRqNgIcIAAgAkEYakGM08IAELAHIAAgAkEcakGM08IAELAHIAAQhgohACACQSBqJAAgAAtrACAAQgA3AhwgACABKQIANwIAIABBJGpCADcCACAAQSxqQgA3AgAgAEE0akIANwIAIABBPGpBADYCACAAQRhqIAFBGGooAgA2AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCAAvLDQINfQ5/IwBB0AJrIhYkACAWQawBaiIDIAEQqAEgFkEIaiERIwBBMGsiFSQAAkAgAygCMCITRQ0AIAIqAgghBCACKgIEIQUgAioCACEGIAMoAiwiEiEBIBNBDGwiE0EMayIUQQxuQQFxRQRAIAEgBiABKgIAlDgCACABIAUgASoCBJQ4AgQgASAEIAEqAgiUOAIIIAFBDGohAQsgFEEMSQ0AIBIgE2ohEwNAIAEgBiABKgIAlDgCACABQQRqIhIgBSASKgIAlDgCACABQQhqIhIgBCASKgIAlDgCACABQQxqIhIgBiASKgIAlDgCACABQRBqIhIgBSASKgIAlDgCACABQRRqIhIgBCASKgIAlDgCACATIAFBGGoiAUcNAAsLAkAgAygCQEGAgICAeEYNACADKAJIIhMEQCADKAJEIQEgE0EMbCETIAIqAgghByACKgIEIQggAioCACEJA0AgASAJIAEqAgCUIgY4AgAgCCABQQRqIhIqAgCUIQQgEiAEOAIAIAcgAUEIaiIUKgIAlCEFIBQgBTgCACAGIAaUIAQgBJSSIAUgBZSSIgpDAAAAAFwEQCAUIAUgCpEiBZU4AgAgEiAEIAWVOAIAIAEgBiAFlTgCAAsgAUEMaiEBIBNBDGsiEw0ACwsgAygCVCIBRQ0AIAMoAlAhHSABQSRsIR4gAioCCCENIAIqAgQhDiACKgIAIQ9BACETA0AgDyATIB1qIgEqAgCUIQQgASAEOAIAIA4gAUEEaiISKgIAlCEFIBIgBTgCACANIAFBCGoiFCoCAJQhBiAUIAY4AgAgDyABQQxqIhcqAgCUIQcgFyAHOAIAIA4gAUEQaiIYKgIAlCEIIBggCDgCACANIAFBFGoiGSoCAJQhCSAZIAk4AgAgDyABQRhqIhoqAgCUIQogGiAKOAIAIA4gAUEcaiIbKgIAlCELIBsgCzgCACANIAFBIGoiHCoCAJQhDCAcIAw4AgAgBCAElCAFIAWUkiAGIAaUkiIQQwAAAABcBEAgEiAFIBCRIgWVOAIAIAEgBCAFlTgCACAUIAYgBZU4AgALIAcgB5QgCCAIlJIgCSAJlJIiBEMAAAAAXARAIBggCCAEkSIElTgCACAXIAcgBJU4AgAgGSAJIASVOAIACyAKIAqUIAsgC5SSIAwgDJSSIgRDAAAAAFwEQCAbIAsgBJEiBJU4AgAgGiAKIASVOAIAIBwgDCAElTgCAAsgHiATQSRqIhNHDQALCyADQUBrIRMgFUEIaiADEJkFIANBKGohEiAVKAIQIgEEQCABQQZ0IBUoAgwiAWohFCACKgIIIQQgAioCBCEFIAIqAgAhBgNAIAEgBiABKgIAlDgCACABQQRqIgIgBSACKgIAlDgCACABQQhqIgIgBCACKgIAlDgCACABQRBqIgIgBiACKgIAlDgCACABQRRqIgIgBSACKgIAlDgCACABQRhqIgIgBCACKgIAlDgCACABQSBqIgIgBiACKgIAlDgCACABQSRqIgIgBSACKgIAlDgCACABQShqIgIgBCACKgIAlDgCACABQTBqIgIgBiACKgIAlDgCACABQTRqIgIgBSACKgIAlDgCACABQThqIgIgBCACKgIAlDgCACAUIAFBQGsiAUcNAAsLIBEgEikCADcCKCARIAMpAjQ3AjQgESATKQIANwJAIBEgAykCWDcCWCARQTBqIBJBCGooAgA2AgAgEUE8aiADQTxqKAIANgIAIBFByABqIBNBCGopAgA3AgAgEUHQAGogE0EQaikCADcCACARQeAAaiADQeAAaikCADcCACARQegAaiADQegAaikCADcCACARQfAAaiADQfAAaikCADcCACARQfgAaiADQfgAaigCADYCACARQZwBaiADQZwBaigCADYCACARQZQBaiADQZQBaikCADcCACARQYwBaiADQYwBaikCADcCACARQYQBaiADQYQBaikCADcCACARIAMpAnw3AnwgESAVKQIINwIAIBFBCGogFUEIaiIBQQhqKQIANwIAIBFBEGogAUEQaikCADcCACARQRhqIAFBGGopAgA3AgAgEUEgaiABQSBqKQIANwIAIBEgAy8BoAE7AaABIAMoAgAiAQRAIAMoAgQgAUEGdEHAABCIDwsgAygCDCIBBEAgAygCECABQQJ0QQQQiA8LIAMoAhgiAQRAIAMoAhwgAUEDdEEEEIgPCyAVQTBqJABBpAFBBBCzDiIBBEAgASARQaQB/AoAACAAQYCpwwA2AgQgACABNgIAIBZB0AJqJAAPC0EEQaQBQZDExAAoAgAiAEHMCCAAGxEAAAALawEDfwJAIAEoAggiAkEASA0AIAEoAgQhAwJAIAJFBEBBASEBDAELQQEhBCACQQEQsw4iAUUNAQsgAgRAIAEgAyAC/AoAAAsgACACNgIIIAAgATYCBCAAIAI2AgAPCyAEIAJB+IrEABDTDQALZQEFfSADKgIAIgUgBZQgAyoCBCIGIAaUkiADKgIIIgcgB5SSkSEEIAAgAioCGCABKgIAIgggByAElZSSOAIIIAAgAioCFCAIIAYgBJWUkjgCBCAAIAIqAhAgCCAFIASVlJI4AgALcAEBfyMAQRBrIgIkACACQgA3AwgCQAJAIAEoAgBBAUYEQCACIAEpAgQ3AwgMAQsgASgCBCIBQQFLDQEgAkEIaiABQQJ0akGAgID8AzYCAAsgACACKQMINwIAIAJBEGokAA8LIAFBAkHsmcMAEIgLAAuCAQEGfSAC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ACACQQhqIAAgASgCZBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQsfcruTatM3aKYUgA0Ll+vT7jbn+nYt/hYRQGwttAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmARAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBEKMlPHKpOu5zMkAhSADQuSXjKHS7Pqeq3+FhFAbC2wCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQoHP7fuqjuWV5wCFIANCqMee2eG4w5NHhYRQGwtsAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmQRAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBEKBz+37qo7llecAhSADQqjHntnhuMOTR4WEUBsLbAIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIAIAIoAgwoAgwRAAAgAikDGCEDIAIpAxAhBCACQSBqJAAgAEEAIARC+rmPrJLGqMeJf4UgA0L/xf6P7pysu1SFhFAbC2sCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQq2MgIugq4+YHoUgA0LLzsCampvowT+FhFAbC2wCAX8CfiMAQSBrIgIkACACQQhqIAAgASgCYBEAACACQRBqIAIoAggiACACKAIMKAIMEQAAIAIpAxghAyACKQMQIQQgAkEgaiQAIABBACAEQtCZq8uN9PaE+ACFIANC576imeai38c2hYRQGwtsAgF/An4jAEEgayICJAAgAkEIaiAAIAEoAmQRAAAgAkEQaiACKAIIIgAgAigCDCgCDBEAACACKQMYIQMgAikDECEEIAJBIGokACAAQQAgBELQmavLjfT2hPgAhSADQue+opnmot/HNoWEUBsLawIBfwJ+IwBBIGsiAiQAIAJBCGogACABKAJgEQAAIAJBEGogAigCCCIA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DQAaQQIgCkKAgICAgICA+P8AgyILQoCAgICAgID4/wBRDQAaIApC/////////weDIg5CgICAgICAgAiEIApCAYZC/v///////w+DIApCNIinQf8PcSIGGyIMQgGDIQ0gC1AEQEEEIA5QDQEaIAZBswhrIQZCASELIA1QDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiABshDEICQgEgABshC0HLd0HMdyAAGyAGaiEGIA1QCyEAIAMgBjsBeCADIAs3A3AgA0IBNwNoIAMgDDcDYCADIAA6AHoCfwJAAkACQAJAAkAgAEEBTQRAIANBIGoiBiADQeAAaiADQQ9qEJMBQe6mxABBASAKQgBTIgAbIQVB7qbEAEHvpsQAIAAbIQcgCkI/iKchACADKAIgRQ0BIANB2ABqIAZBCGooAgA2AgAgAyADKQIgNwNQDAILIABBAkYNA0EBIQZB7qbEAEHvpsQAIApCAFMiBxtB7qbEAEEBIAcbIAQbIQUgCkI/iKcgBHIhByAAQf8BcUEERg0CIANBAzYCKCADQfOmxAA2AiQgA0ECOwEgIANBIGoMBQsgA0HQAGogA0HgAGogA0EPahAyCyAHIAUgBBshBSAAIARyIQcgAyADKAJQIAMoAlQgAy8BWEEAIANBIGoQvAUgAygCBCEGIAMoAgAMAwsgA0ECOwEgDAELIANBAzYCKCADQfCmxAA2AiQgA0ECOwEgQQEhBUEAIQdBASEGIANBIGoMAQsgA0EBNgIoIANB9qbEADYCJCADQSBqCyEAIAMgBjYCXCADIAA2AlggAyAHNgJUIAMgBTYCUCABIANB0ABqELMDIQAgA0GAAWokACAADwsgBUEARyEIIAEvAQ4hByMAQfAIayICJAAgD70hCgJ/QQMgD5lEAAAAAAAA8H9hDQAaQQIgCkKAgICAgICA+P8AgyILQoCAgICAgID4/wBRDQAaIApC/////////weDIg5CgICAgICAgAiEIApCAYZC/v///////w+DIApCNIinQf8PcSIEGyIMQgGDIQ0gC1AEQEEEIA5QDQEaIARBswhrIQRCASELIA1QDAELQoCAgICAgIAgIAxCAYYgDEKAgICAgICACFEiABshDEICQgEgABshC0HLd0HMdyAAGyAEaiEEIA1QCyEAIAIgBDsB6AggAiALNwPgCCACQgE3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CCAAQoGAgIAQNwIAIABBgICA/AM2AhggAEEQakIANwIAIABBCGoLPAEBfyMAQSBrIgQkACAEQQxqIAEgAiADEJIBIABBCGogBEEYaikCADcCACAAIAQpAhA3AgAgBEEgaiQACzcBA30gASoCBCIDIAAqAgAiBF8gACoCBCABKgIAIgIgApQgASoCCCICIAKUkpFgcSADIASMYHELPwAgACABKQIANwIMIAAgASoCBIw4AgQgACABKgIAjDgCACAAQRRqIAFBCGoiASgCADYCACAAIAEqAgCMOAIICzoBAX8gACgCACIBQYQBTwRAIAEQAgsgACgCBCIBQYQBTwRAIAEQAgsgACgCCCIAQYQBTwRAIAAQAgsLNgEBfyAAKAIAIgEEQCAAKAIEIAFBAnRBBBCIDwsgACgCFCIBBEAgACgCGCABQQN0QQQQiA8LCz8BAX8gACgCACEAIAEoAggiAkGAgIAQcUUEQCACQYCAgCBxRQRAIAAgARC7DA8LIAAgARCkCg8LIAAgARCjCgs2AQF/IAAoAgAiAQRAIAAoAgQgAUECdEEEEIgPCyAAKAIMIgEEQCAAKAIQIAFBAnRBBBCIDwsLPAEBfUMAAAAAIAAqAgAgASoCAJQgACoCBCABKgIElJIgACoCCCABKgIIlJIiAyADQwAAAABdGyADIAIbCzgBAX0gAEEANgIIIABCADcCACAAIAEqAgAiAiAClCABKgIEIgIgApSSIAEqAggiAiAClJKROAIMCz0BAn0gACABKgIEIgI4AhQgACACOAIMIAAgASoCAIsiAzgCECAAIAKMIgI4AgggACACOAIAIAAgA4w4AgQLxQMBA38gACgCACECIAEoAggiAEGAgIAQcUUEQCAAQYCAgCBxRQRAIwBBEGsiACQAQQMhAyACLQAAIgIhBCACQQpPBEAgACACIAJB5ABuIgRB5ABsa0H/AXFBAXQiA0HuqsQAai0AADoADyAAIANB7arEAGotAAA6AA5BASEDCyAERSACQQBHcUUEQCADQQFrIgMgAEENamogBEEBdEH+AXFB7qrEAGotAAA6AAALIAFBAUEBQQAgAEENaiADakEDIANrEN8CIQEgAEEQaiQAIAEPCyMAQYABayIEJAAgAi0AACEAQQAhAgNAIAIgBGpB/wBqIABBD3EiA0EwciADQTdqIANBCkkbOgAA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akGw08IAIAIgAxC6BQALOQEBfyMAQRBrIgUkACAFIAI2AgwgBSABNgIIIAAgBUEIakH80sIAIAVBDGpB/NLCACADIAQQugUACz0AIABCADcCECAAQgA3AgAgAEKAgICAgICAwD83AgggAEEYakIANwIAIABBIGpCADcCACAAQShqQQA2AgALNgEBfyMAQRBrIgIkACACQQhqIAEQ1wIgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiQACzYBAX8jAEEQayICJAAgAkEIaiABEJIEIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAs9ACAAQgA3AhAgAEIANwIAIABCgICAgICAgMA/NwIIIABBGGpCADcCACAAQSBqQgA3AgAgAEEoakEANgIACzwBAX8jAEEQayIDJAAgA0HMqcEANgIMIAMgADYCCEEAIANBCGpBqILEACADQQxqQaiCxAAgASACELoFAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQYipxAAgBEEMakGIqcQAIAIgAxC6BQALOAEBfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQuwwPCyAAIAEQpAoPCyAAIAEQowoLLwEBfSABKgIAIgIgApQgASoCBCICIAKUkiABKgIIIgIgApSSIAAqAgAiAiAClF8LMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQngEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEL4BIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBEGsiAyQAIANBCGogACABIAJBARCbASADKAIIIQAgA0EQaiQAIABBAUYLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ8AEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEQayIDJAAgA0EIaiAAIAEgAkEBENsBIAMoAgghACADQRBqJAAgAEEBRgswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCQAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ+QEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEQayIDJAAgA0EIaiAAIAEgAkEBELkBIAMoAgghACADQRBqJAAgAEEBRgswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCyAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQsQIgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEJ4CIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARCRAiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQrQIgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEN4BIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBABCZASADKAIIIQAgA0EgaiQAIABBBEcLSAEBfyABKAIAIQJBBEEEELMOIgFFBEBBBEEEQZDExAAoAgAiAEHMCCAAGxEAAAALIAEgAjYCACAAQZSPwwA2AgQgACABNgIACzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQbiFxAA2AgggAEIENwIQIABBCGpBwIXEABC4DQALOgEBfyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABBgIjEADYCCCAAQgQ3AhAgAEEIakGIiMQAELgNAAs3AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUH8vMQANgIIIAFCBDcCECABQQhqIAAQuA0ACzsBAX9BASECAkAgACABEPEFDQAgASgCAEHUp8QAQQIgASgCBCgCDBEFAA0AIABBBGogARDxBSECCyACCzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQYCuxAA2AgggAEIENwIQIABBCGpBiK7EABC4DQALngIBBn8jAEEQayICJAAgAiAANgIMIAJBDGohBCMAQSBrIgAkAEEBIQUCQCABKAIAIgNBlMzDAEEGIAEoAgQiBygCDCIGEQUADQACQCABLQAKQYABcUUEQCADQeWqxABBASAGEQUADQIgBCABQYjTwgAoAgARAwBFDQEMAgsgA0HmqsQAQQIgBhEFAA0BIABBAToADyAAIAc2AgQgACADNgIAIABBvKrE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gICAgHg2AgAgACABNgIMIABBoIfEACABKAIEIAEoAggiAC0ACCAALQAJEIQJAAsgACADNgIEIAAgAjYCACAAQYSHxAAgASgCBCABKAIIIgAtAAggAC0ACRCECQALKAEBfyMAQRBrIgIkACACIAAgAUEBEIQBIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQKCACLQAMIQAgAkEQaiQAIAALKAEBfyMAQRBrIgIkACACIAAgAUEBEPsCIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQKyACLQAMIQAgAkEQaiQAIAALJwEBfyMAQRBrIgIkACACIAAgAUEBECkgAi0ADCEAIAJBEGokACAACycBAX8jAEEQayICJAAgAiAAIAFBARAnIAItAAwhACACQRBqJAAgAAsnAQF/IwBBEGsiAiQAIAIgACABQQEQJiACLQAMIQAgAkEQaiQAIAALJwECfSAAKgIAIgEgACoCBCICIAEgAl8bIgEgACoCCCICIAEgAl8bCycBAn0gACoCZCIBIAAqAmgiAiABIAJfGyIBIAAqAmwiAiABIAJfGwsrACAAQf8BcSIAQcAATQRAIABBjKnBAGotAAAPCyAAQcEAQejbwwAQiAsACzMAIAEoAgAgACgCAC0AAEECdCIAQejEwgBqKAIAIABB2MTCAGooAgAgASgCBCgCDBEFAAslACAARQRAQfjFwgBBMhCaDwALIAAgAiADIAQgBSABKAIQESAACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEQIACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEREACyMAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQER8ACyQAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgBCABKAIQEaIBAAsjACAARQRAQfjFwgBBMhCaDwALIAAgAiADIAQgASgCEBE8AAsoAQF/IAAoAgAiAUGAgICAeHJBgICAgHhHBEAgACgCBCABQQEQiA8LCyEAIABFBEBB+MXCAEEyEJoPAAsgACACIAMgASgCEBEBAAsdACABKAIABEAgAEH0hsQANgIEIAAgATYCAA8LAAsnAQF/IAAoAgAiAgRAIAEoAgAgAiAAKAIEIAEoAgQoAgwRBQAPCwALJAAgAC0AAEUEQCABQYitxABBBRCBAw8LIAFBja3EAEEEEIEDCx8AIABFBEBB+MXCAEEyEJoPAAsgACACIAEoAhARAwALKQAgACAALQAEIAFBLkZyOgAEIAAoAgAiACgCACABIAAoAgQoAhARAwALHQAgACACIAEoAiwgASgCMCABKAI4IAEoAjwQpgILGgEBfyAAKAIAIgEEQCAAKAIEIAFBARCIDwsLUgAgAARAIAAgAUGQxMQAKAIAIgBBzAggABsRAAAACyMAQSBrIgAkACAAQQA2AhggAEEBNgIMIABBjInEADYCCCAAQgQ3AhAgAEEIaiACELgNAAsfACAAQQhqQbi3wQApAgA3AgAgAEGwt8EAKQIANwIACx8AIABBCGpByLfBACkCADcCACAAQcC3wQApAgA3AgALHwAgAEEIakGE2sEAKQIANwIAIABB/NnBACkCADcCAAsfACAAQQhqQZTawQApAgA3AgAgAEGM2sEAKQIANwIACx8AIABBCGpBtNrBACkCADcCACAAQazawQApAgA3AgALHwAgAEEIakHE2sEAKQIANwIAIABBvNrBACkCADcCAAsfACAAQQhqQdTawQApAgA3AgAgAEHM2sEAKQIANwIACx8AIABBCGpB1MnCACkCADcCACAAQczJwgApAgA3AgALHwAgAEEIakHkycIAKQIANwIAIABB3MnCACkCADcCAAsfACAAQQhqQfTJwgApAgA3AgAgAEHsycIAKQIANwIACx8AIABBCGpBhMrCACkCADcCACAAQfzJwgApAgA3AgALHwAgAEEIakGUysIAKQIANwIAIABBjMrCACkCADcCAAsfACAAQQhqQaTKwgApAgA3AgAgAEGcysIAKQIANwIACx8AIABBCGpBtMrCACkCADcCACAAQazKwgApAgA3AgALHwAgAEEIakHEysIAKQIANwIAIABBvMrCACkCADcCAAsfACAAQQhqQdTKwgApAgA3AgAgAEHMysIAKQIANwIACx8AIABBCGpB5MrCACkCADcCACAAQdzKwgApAgA3AgALHwAgAEEIakH0ysIAKQIANwIAIABB7MrCACkCADcCAAsfACAAQQhqQYTLwgApAgA3AgAgAEH8ysIAKQIANwIACx8AIABBCGpBlMvCACkCADcCACAAQYzLwgApAgA3AgALHwAgAEEIakGky8IAKQIANwIAIABBnMvCACkCADcCAAsfACAAQQhqQbTLwgApAgA3AgAgAEGsy8IAKQIANwIACx8AIABBCGpBxMvCACkCADcCACAAQbzLwgApAgA3AgALHwAgAEEIakHUy8IAKQIANwIAIABBzMvCACkCADcCAAsfACAAQQhqQeTLwgApAgA3AgAgAEHcy8IAKQIANwIACx8AIABBCGpB9MvCACkCADcCACAAQezLwgApAgA3AgALHwAgAEEIakGEzMIAKQIANwIAIABB/MvCACkCADcCAAsfACAAQQhqQZTMwgApAgA3AgAgAEGMzMIAKQIANwIACx8AIABBCGpBpMzCACkCADcCACAAQZzMwgApAgA3AgALHwAgAEEIakG0zMIAKQIANwIAIABBrMzCACkCADcCAAsfACAAQQhqQcTMwgApAgA3AgAgAEG8zMIAKQIANwIACx8AIABBCGpB1MzCACkCADcCACAAQczMwgApAgA3AgALHwAgAEEIakHkzMIAKQIANwIAIABB3MzCACkCADcCAAsfACAAQQhqQfTMwgApAgA3AgAgAEHszMIAKQIANwIACxoAIABBADYCCCAAQgA3AgAgACABKgIAOAIMCx0AIABB3KDDADYCBCAAIAE2AgAgACABKgIYOAIICx0AIABBsJ3DADYCBCAAIAE2AgAgACABKgIMOAIICx0AIABBnKHDADYCBCAAIAE2AgAgACABKgIkOAIICx0AIABBkLHDADYCBCAAIAE2AgAgACABKgIIOAIICx0AIABB9LTDADYCBCAAIAE2AgAgACABKgIIOAIICx0AIABB5K3DADYCBCAAIAE2AgAgACABKgJgOAIICx8AIABBCGpB1IHEACkCADcCACAAQcyBxAApAgA3AgALHwAgAEEIakHkgcQAKQIANwIAIABB3IHEACkCADcCAAsaACAAQQA2AgggAEGEu8EANgIEIAAgATYCAAsaACAAQQA2AgggAEHMvMEANgIEIAAgATYCAAsaACAAQQA2AgggAEHQ38EANgIEIAAgATYCAAsaACAAQQA2AgggAEG8+cEANgIEIAAgATYCAAsWACAAQdgBaiAALQDlAiAAQTBqEIAGCxgAIAAoAgAgASgCACACKAIAIAMoAgAQEAsXAQF/IAAQEiIBNgIEIAAgAUEARzYCAAsXAQF/IAAQEyIBNgIEIAAgAUEARzYCAAsXAQF/IAAQFCIBNgIEIAAgAUEARzYCAAsXAQF/IAAQFSIBNgIEIAAgAUEARzYCAAscACAAQQA2AhAgAEIANwIIIABCgICAgMAANwIACzEAIABC////9/f////+ADcCECAAQv////f//////gA3AgggAEL////3/////343AgALGgAgAEEANgIIIABBsJ3DADYCBCAAIAE2AgALrQUCFH0CfyABKgIYIQYgAAJ9QwAAgD8gAUEMaiIXKgIIIg8gASoCCCIQkyIKjCAKIBcqAgQiESABKgIEIhKTIgdDAAAAAF0iGBsiCyALlCAXKgIAIhMgASoCACIUkyIMjCAMIBgbIgggCJQgB4wgByAYGyINIA2UkpIiDkMAAAAAXkUNABogDSAOkSIDlSIOQwAAAACUIgQgCCADlSIFkyIIIAiUIAsgA5UiAyAEkyILIAuUIAVDAAAAAJQiBSADQwAAAACUIhWTIg0gDZSSkiIWQwAAgCheRQRAQwAAAAAhA0MAAAAAIQRDAACAPwwBC0MAAAAAIQNDAAAAACEEQwAAgD8gFSAOIAWSkiIOi0MAAIA/YA0AGiAIIBaRIgWVIA4Q8gVDAAAAP5QiCBDxASIJlCEEIA0gBZUgCZQhAyALIAWVIAmUIQkgCBD0AQs4AgwgACAEOAIIIAAgAzgCBCAAIAk4AgAgACAPIBCSQwAAAD+UOAIYIAAgESASkkMAAAA/lDgCFCAAIBMgFJJDAAAAP5Q4AhAgAEMAAAAAQwAAgD8gAiAGIAYgBkPbD0lAlJSUQwAAgECUQwAAQECVIgUgBiAGIAwgDJQgByAHlJIgCiAKlJKRQwAAAD+UIgOUlEPbD0lAlCIEIASSIgeSlCIElSAEQwAAAABbGzgCHCAAQwAAAABDAACAPyACIAYgBpQiBCAEkkMAAKBAlSAFlCIKIARDAAAAP5QgB5SSlCIMlSAMQwAAAABbGzgCJCAAQwAAAABDAACAPyACIAogByAEQwAAQECUIAMgA5RDAACAQJSSQwAAQEGVlJKUIAIgBSADIAOSIgIgApRDAACAPpQgBiAClEMAAEBAlEMAAAA+lJKUlJIiApUgAkMAAAAAWxsiAjgCKCAAIAI4AiALGgAgAEEANgIIIABBnKHDADYCBCAAIAE2AgALGgAgAEEANgIIIABB3KDDADYCBCAAIAE2AgALGgAgAEEANgIIIABB5K3DADYCBCAAIAE2AgALGgAgAEEANgIIIABBkLHDADYCBCAAIAE2AgALGgAgAEEANgIIIABB9LTDADYCBCAAIAE2AgALMQAgAEL////39/////4ANwIQIABC////9//////+ADcCCCAAQv////f/////fjcCAAsxACAAQv////f3/////gA3AhAgAEL////3//////4ANwIIIABC////9/////9+NwIAC58HAQR/An8gAEEIaygCBCIEQXhxIQUCQAJAAkACQAJAAkAgBUEEQQggBEEDcSIEGyABak8EQCAEQQBHIAUgAUEnaiIFS3ENAQJAAkAgAkEJTwRAIAIgAxC9BiICDQFBAAwKC0EAIQIgA0HM/3tLDQFBECADQQtqQXhxIANBC0kbIQEgAEEIayIFKAIEIgZBeHEhBCAEIAVqIQcCQAJAAkAgBkEDcUUEQCABQYACSQ0BIAZBeHEiBCABQQRySQ0BIAQgAWtBgYAITw0BDAMLIAEgBE0NAUHkx8QAKAIAIAdHBEBB4MfEACgCACAHRwRAIAcoAgQiBkECcQ0CIAZBeHEiBiAEaiIEIAFJDQIgByAGEKsFIAQgAWsiAEEQTw0MIAUgBCAFKAIEQQFxckECcjYCBCAEIAVqIgAgACgCBEEBcjYCBAwNC0HYx8QAKAIAIARqIgQgAUkNAQJAIAQgAWsiAkEPTQRAIAUgBCAFKAIEQQFxckECcjYCBCAEIAVqIgAgACgCBEEBcjYCBEEAIQJBACEADAELIAIgASAFaiIAaiEDIAUgASAFKAIEQQFxckECcjYCBCAAIAAoAgRBAXI2AgQgACACQQFyNgIEIAAgAmogAjYCACADIAMoAgRBfnE2AgQLQeDHxAAgADYCAEHYx8QAIAI2AgAMDAtB3MfEACgCACAEaiIEIAFLDQkLIAMQRSIBRQ0DIAMgBSgCBCICQXhxQXxBeCACQQNxG2oiAiACIANLGyICBEAgASAAIAL8CgAACyAAEI4DIAEMCwsgBCABayIAQQ9LDQgLDAgLIAMgASABIANLGyIDBEAgAiAAIAP8CgAACyAAQQhrKAIEIgRBeHEhAyADIAFBBEEIIARBA3EiBBtqSQ0DIARBAEcgAyAFS3ENBCAAEI4DCyACDAcLQYiD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AkEGdCABciEFDAILIAAgB0H/AXE2AiRBAQwECyADLQACQT9xIAFBBnRyIQEgB0FwSQRAIAEgAkEMdHIhBQwBCyACQRJ0QYCA8ABxIAMtAANBP3EgAUEGdHJyIgVBgIDEAEYNAQsgACAFNgIkIAVBgAFPDQFBAQwCCyAEEJEPAAtBAiAFQYAQSQ0AGkEDQQQgBUGAgARJGwshASAAIAY2AiggACABIAZqNgIsIABBBTYCNCAAQaCvxAA2AjAgAEIFNwI8IAAgAEEYaq1CgICAgOCNAYQ3A2ggACAAQRBqrUKAgICA4I0BhDcDYCAAIABBKGqtQoCAgICAjgGENwNYIAAgAEEkaq1CgICAgJCOAYQ3A1AgACAAQSBqrUKAgICAMIQ3A0gMAQsgAEEENgI0IABBwK7EADYCMCAAQgQ3AjwgACAAQRhqrUKAgICA4I0BhDcDYCAAIABBEGqtQoCAgIDgjQGENwNYIAAgAEEMaq1CgICAgDCENwNQIAAgAEEIaq1CgICAgDCENwNICyAAIABByABqNgI4IABBMGogBBC4DQALEwAgAEG4uMEANgIEIAAgATYCAAsTACAAQci4wQA2AgQgACABNgIACxMAIABB6LrBADYCBCAAIAE2AgALEAAgAEEBNgIAIAAgATYCBAsTACAAQbC8wQA2AgQgACABNgIACxAAIABBBDYCACAAIAE2AgQLGgACfyABQQlPBEAgASAAEL0GDAELIAAQRQsLEAAgACABNgIEIABBBTYCAAsTACAAQZzdwQA2AgQgACABNgIACxMAIABBrN3BADYCBCAAIAE2AgALEwAgAEG83cEANgIEIAAgATYCAAsTACAAQczdwQA2AgQgACABNgIACxMAIABB3N3BADYCBCAAIAE2AgALEwAgAEG038EANgIEIAAgATYCAAsQACAAIAE2AgQgAEEHNgIACxAAIAAgATYCBCAAQQY2AgALEwAgAEGg+cEANgIEIAAgATYCAAsWAEGExMQAIAA2AgBBgMTEAEEBNgIACxMAIABBjM/CADYCBCAAIAE2AgALEwAgAEGcz8IANgIEIAAgATYCAAsTACAAQazPwgA2AgQgACABNgIACxMAIABBvM/CADYCBCAAIAE2AgALEwAgAEHMz8IANgIEIAAgATYCAAsTACAAQdzPwgA2AgQgACABNgIACxMAIABB7M/CADYCBCAAIAE2AgALEwAgAEH8z8IANgIEIAAgATYCAAsTACAAQYzQwgA2AgQgACABNgIACxMAIABBnNDCADYCBCAAIAE2AgALEwAgAEGs0MIANgIEIAAgATYCAAsTACAAQbzQwgA2AgQgACABNgIACxMAIABBzNDCADYCBCAAIAE2AgALEwAgAEHc0MIANgIEIAAgATYCAAsTACAAQezQwgA2AgQgACABNgIACxMAIABB/NDCADYCBCAAIAE2AgALEwAgAEGM0cIANgIEIAAgATYCAAsTACAAQZzRwgA2AgQgACABNgIACxMAIABBrNHCADYCBCAAIAE2AgALEwAgAEG80cIANgIEIAAgATYCAAsTACAAQczRwgA2AgQgACABNgIACxMAIABB3NHCADYCBCAAIAE2AgALEwAgAEHs0cIANgIEIAAgATYCAAsTACAAQfzRwgA2AgQgACABNgIACxMAIABBjNLCADYCBCAAIAE2AgALEwAgAEGc0sIANgIEIAAgATYCAAsTACAAQazSwgA2AgQgACABNgIACxEAIAEgACgCACAAKAIEEIEDCxAAIAAgATYCBCAAQQM2AgALEAAgACABNgIEIABBBDYCAAsQACAAIAE2AgQgAEECNgIACxAAIAAgATYCBCAAQQE2AgALEAAgACABNgIEIABBADYCAAsQACAAQQA2AgAgACABNgIECxMAIABB+JzDADYCBCAAIAE2AgALEwAgAEGUncMANgIEIAAgATYCAAsQACAAQQI2AgAgACABNgIECxMAIABBwKDDADYCBCAAIAE2AgALEwAgAEGAocMANgIEIAAgATYCAAsQACAAQQM2AgAgACABNgIECxMAIABBwKHDADYCBCAAIAE2AgALDgAgACABQUBrIAIQwgMLEAAgAEEKNgIAIAAgATYCBAsTACAAQcikwwA2AgQgACABNgIACxAAIABBBzYCACAAIAE2AgQLEwAgAEHIp8MANgIEIAAgATYCAAsQACAAQQY2AgAgACABNgIECxMAIABByKrDADYCBCAAIAE2AgALDgAgACABQTRqIAIQwgMLEAAgAEEJNgIAIAAgATYCBAsQACAAQQs2AgAgACABNgIECxMAIABByK3DADYCBCAAIAE2AgALEAAgAEEMNgIAIAAgATYCBAsTACAAQfSwwwA2AgQgACABNgIA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eW5hbWljcy9yaWdpZF9ib2R5LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL2FycmF5LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWF0cml4LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWluX21heC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvYm9ycm93LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvbWF0cml4X3ZpZXcucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9jb25zdHJ1Y3Rpb25fdmlldy5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL3N0cmF0ZWd5L2dyaXN1LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2xpbmFsZy9sdS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9jb250ZXh0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfdHJhdmVyc2VfYnZ0dC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5bmMvbXBtYy9saXN0LnJzAGxpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfaW5zZXJ0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdXRpbHMvcG9pbnRfY2xvdWRfc3VwcG9ydF9wb2ludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9qb2ludC9tdWx0aWJvZHlfam9pbnQvdW5pdF9tdWx0aWJvZHlfam9pbnQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9qb2ludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF92ZWxvY2l0eV9jb25zdHJhaW50LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci9qb2ludF9jb25zdHJhaW50L2dlbmVyaWNfam9pbnRfY29uc3RyYWludC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2dlbmVyaWNfY29udGFjdF9jb25zdHJhaW50LnJzAGxpYnJhcnkvc3RkL3NyYy90aHJlYWQvY3VycmVudC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X3NlZ21lbnQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9zZWdtZW50LnJzAGxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3JlZml0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3JpZ2lkX2JvZHlfc2V0LnJzAGJ1aWxkcy9yYXBpZXIzZC8uLi8uLi9zcmMvZHluYW1pY3MvcmlnaWRfYm9keV9zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9qb2ludF9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9keW5hbWljcy9tdWx0aWJvZHlfam9pbnRfc2V0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL2pvaW50L2ltcHVsc2Vfam9pbnQvaW1wdWxzZV9qb2ludF9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9keW5hbWljcy9pbXB1bHNlX2pvaW50X3NldC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF9jb25zdHJhaW50c19zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvc29sdmVyL2NvbnRhY3RfY29uc3RyYWludC9jb250YWN0X2NvbnN0cmFpbnRzX3NldC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9jb2xsaWRlcl9zZXQucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9jb2xsaWRlcl9zZXQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi9jb252ZXhfaHVsbDMvdHJpYW5nbGVfZmFjZXQucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3JpZ2lkX2JvZHlfY29tcG9uZW50cy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9kYXRhL21vZGlmaWVkX29iamVjdHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9vcHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NlcmRlLTEuMC4yMTkvc3JjL2RlL2ltcGxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vY29udmV4X2h1bGxfdXRpbHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9ib3VuZGluZ192b2x1bWUvYWFiYl91dGlscy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3V0aWxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3V0aWxzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdm94ZWxzX3ZveGVscy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3ZveGVscy92b3hlbHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dlYi10aW1lLTEuMS4wL3NyYy90aW1lL2pzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvbWFzc19wcm9wZXJ0aWVzL21hc3NfcHJvcGVydGllcy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9waXBlbGluZS91c2VyX2NoYW5nZXMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTAwL3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9ibGFzLnJzAGxpYnJhcnkvYWxsb2Mvc3JjL2ZmaS9jX3N0ci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9jb3JlL3NyYy9pdGVyL3RyYWl0cy9pdGVyYXRvci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL2RlZmF1bHRfYWxsb2NhdG9yLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci92ZWxvY2l0eV9zb2x2ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3MvY2NkL2NjZF9zb2x2ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy91dGlscy9jZW50ZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvY29udHJvbC9jaGFyYWN0ZXJfY29udHJvbGxlci5ycwBidWlsZHMvcmFwaWVyM2QvLi4vLi4vc3JjL2NvbnRyb2wvY2hhcmFjdGVyX2NvbnRyb2xsZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvY29udHJvbC9yYXlfY2FzdF92ZWhpY2xlX2NvbnRyb2xsZXIucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvd2FrZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9kZWZhdWx0X3F1ZXJ5X2Rpc3BhdGNoZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3MvaXNsYW5kX21hbmFnZXIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9jeWxpbmRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9nZW5lcmljX2pvaW50X2NvbnN0cmFpbnRfYnVpbGRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvam9pbnRfY29uc3RyYWludC9qb2ludF9jb25zdHJhaW50X2J1aWxkZXIucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9jb2xsaWRlci5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3V0aWxzL2NsZWFudXAucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvY21wLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvaW50ZXJzZWN0aW9uX3Rlc3QvaW50ZXJzZWN0aW9uX3Rlc3Rfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9ub25saW5lYXJfc2hhcGVfY2FzdC9ub25saW5lYXJfc2hhcGVfY2FzdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3QvY29udGFjdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2Nsb3Nlc3RfcG9pbnRzL2Nsb3Nlc3RfcG9pbnRzX3N1cHBvcnRfbWFwX3N1cHBvcnRfbWFwLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvZGlzdGFuY2UvZGlzdGFuY2Vfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19oYWxmc3BhY2Vfc3VwcG9ydF9tYXAucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy91dGlscy92ZWNfbWFwLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L3N0ZC9zcmMvc3luYy9tcG1jL3plcm8ucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9jb252ZXhfcG9seWhlZHJvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X3RldHJhaGVkcm9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdm94ZWxzL3ZveGVsc19lZGl0aW9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvZWRpdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL2NvbnN0cnVjdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2NvbnRhY3Rfd2l0aF90d2lzdF9mcmljdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9keW5hbWljcy9zb2x2ZXIvY29udGFjdF9jb25zdHJhaW50L2NvbnRhY3Rfd2l0aF9jb3Vsb21iX2ZyaWN0aW9uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2R5bmFtaWNzL3NvbHZlci9jYXRlZ29yaXphdGlvbi5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL2NvbnZleF9odWxsMy92YWxpZGF0aW9uLnJzAGxpYnJhcnkvY29yZS9zcmMvbnVtL2ZsdDJkZWMvc3RyYXRlZ3kvZHJhZ29uLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2xpbmFsZy9zeW1tZXRyaWNfZWlnZW4ucnMAbGlicmFyeS9jb3JlL3NyYy9udW0vYmlnbnVtLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfcGZtX3BmbS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX2hhbGZzcGFjZV9wZm0ucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi9jb252ZXhfaHVsbDMvY29udmV4X2h1bGwucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19jb252ZXhfYmFsbC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX3ZveGVsc19iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfYmFsbF9iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfYmFsbF9iYWxsLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9iaW5jb2RlLTEuMy4zL3NyYy9pbnRlcm5hbC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3ZveGVscy92b3hlbHNfY2h1bmsucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZHluYW1pY3Mvam9pbnQvbXVsdGlib2R5X2pvaW50L211bHRpYm9keV9saW5rLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvZ2prL2dqay5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9icm9hZF9waGFzZV9idmgucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2N5bGluZGVyX3RvX3RyaW1lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2NvbnZleF9wb2x5aGVkcm9uX3RvX3RyaW1lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b190cmltZXNoL2JhbGxfdG9fdHJpbWVzaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX3RyaW1lc2gvY29uZV90b190cmltZXNoLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdHJpbWVzaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL2NvbnZleF9odWxsMy9pbml0aWFsX21lc2gucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZ2VvbWV0cnkvaW50ZXJhY3Rpb25fZ3JhcGgucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZGF0YS9ncmFwaC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvZW5hLTAuMTQuMy9zcmMvdW5kb19sb2cucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL25hbGdlYnJhLTAuMzQuMS9zcmMvYmFzZS9pbmRleGluZy5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9wYXJ0aXRpb25pbmcvYnZoL2J2aF9vcHRpbWl6ZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3RyYXZlcnNlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9uYWxnZWJyYS0wLjM0LjEvc3JjL2Jhc2UvY29tcG9uZW50d2lzZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9nZW9tZXRyeS9uYXJyb3dfcGhhc2UucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9uYXJyb3dfcGhhc2UucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9ib3VuZGluZ192b2x1bWUvYm91bmRpbmdfc3BoZXJlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdm94ZWxzX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfdHJpbWVzaF9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X2NvbXBvc2l0ZV9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX3ZveGVsc19jb21wb3NpdGVfc2hhcGUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19jb21wb3NpdGVfc2hhcGVfY29tcG9zaXRlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfaGVpZ2h0ZmllbGRfY29tcG9zaXRlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfY29tcG9zaXRlX3NoYXBlX3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfaGVpZ2h0ZmllbGRfc2hhcGUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9zaGFwZS9zaGFyZWRfc2hhcGUucnMAYnVpbGRzL3JhcGllcjNkLy4uLy4uL3NyYy9nZW9tZXRyeS9zaGFwZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL3NoYXBlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvcG9seWxpbmUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL3ZveGVsc190b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jeWxpbmRlcl90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jb252ZXhfcG9seWhlZHJvbl90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9iYWxsX3RvX291dGxpbmUucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL3JvdW5kX2NvbmVfdG9fb3V0bGluZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX291dGxpbmUvY2Fwc3VsZV90b19vdXRsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9yb3VuZF9jdWJvaWRfdG9fb3V0bGluZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcmFwaWVyM2QtMC4zMC4xL3NyYy9waXBlbGluZS9waHlzaWNzX3BpcGVsaW5lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3BpcGVsaW5lL2RlYnVnX3JlbmRlcl9waXBlbGluZS9kZWJ1Z19yZW5kZXJfcGlwZWxpbmUucnMAbGlicmFyeS9zdGQvc3JjL3N5cy9wYWwvd2FzbS8uLi91bnN1cHBvcnRlZC90aW1lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL3RpbWUucnMAL3J1c3RjLzExNTllNzhjNDc0N2IwMmVmOTk2ZTU1MDgyYjcwNGMwOWI5NzA1ODgvbGlicmFyeS9jb3JlL3NyYy90aW1lLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY29udGFjdF9tYW5pZm9sZHMvY29udGFjdF9tYW5pZm9sZHNfY2Fwc3VsZV9jYXBzdWxlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfY3Vib2lkX3RyaWFuZ2xlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdHJpYW5nbGUucnMAbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9iYXNlL3ZlY19zdG9yYWdlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvcGFydGl0aW9uaW5nL2J2aC9idmhfdHJlZS5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvbmFsZ2VicmEtMC4zNC4xL3NyYy9saW5hbGcvcGVybXV0YXRpb25fc2VxdWVuY2UucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3NsaWNlLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvdm94ZWxzL3ZveGVsc19uZWlnaGJvcmhvb2QucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2VuYS0wLjE0LjMvc3JjL3VuaWZ5L21vZC5ycwAvcnVzdC9kZXBzL2hhc2hicm93bi0wLjE1LjQvc3JjL3Jhdy9tb2QucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2hhc2hicm93bi0wLjE2LjAvc3JjL3Jhdy9tb2QucnMAbGlicmFyeS9jb3JlL3NyYy9mbXQvbW9kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9iaW5hcnlfaGVhcC9tb2QucnMAbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAL1VzZXJzL3NlYmNyb3pldC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLWFhcmNoNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvc3RkL3NyYy9zeW5jL21wbWMvbW9kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdGMvMTE1OWU3OGM0NzQ3YjAyZWY5OTZlNTUwODJiNzA0YzA5Yjk3MDU4OC9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL251bS9mbHQyZGVjL21vZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL2NvbXBvdW5kLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL3BpcGVsaW5lL2RlYnVnX3JlbmRlcl9waXBlbGluZS9kZWJ1Z19yZW5kZXJfYmFja2VuZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX2Jpbm5lZF9idWlsZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3BhcnRpdGlvbmluZy9idmgvYnZoX3Bsb2NfYnVpbGQucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19jdWJvaWRfY3Vib2lkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvY3Vib2lkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvZmVhdHVyZV9pZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5ydXN0dXAvdG9vbGNoYWlucy9zdGFibGUtYWFyY2g2NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZnJvbV9pdGVyX25lc3RlZC5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL21hc3NfcHJvcGVydGllcy9tYXNzX3Byb3BlcnRpZXNfdHJpbWVzaDNkLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvc2hhcGUvcG9seWdvbmFsX2ZlYXR1cmUzZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMC9zcmMvZGxtYWxsb2MucnMAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJzAGxpYnJhcnkvYWxsb2Mvc3JjL3N5bmMucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2VuYS0wLjE0LjMvc3JjL3NuYXBzaG90X3ZlYy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvanMtc3lzLTAuMy43Ny9zcmMvbGliLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9vbmNlX2NlbGwtMS4yMS4zL3NyYy9saWIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3NtYWxsdmVjLTEuMTUuMS9zcmMvbGliLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvYm91bmRpbmdfdm9sdW1lL2FhYmIucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3JhcGllcjNkLTAuMzAuMS9zcmMvZGF0YS9jb2FyZW5hLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9yYXBpZXIzZC0wLjMwLjEvc3JjL2RhdGEvYXJlbmEucnMAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3BhcnJ5M2QtMC4yNS4zL3NyYy9xdWVyeS9namsvdm9yb25vaV9zaW1wbGV4My5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3NoYXBlL2hlaWdodGZpZWxkMy5ycwAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvcGFycnkzZC0wLjI1LjMvc3JjL3F1ZXJ5L2VwYS9lcGEzLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9wYXJyeTNkLTAuMjUuMy9zcmMvdHJhbnNmb3JtYXRpb24vY29udmV4X2h1bGwyLnJzAC9Vc2Vycy9zZWJjcm96ZXQvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS1hYXJjaDY0LWFwcGxlLWRhcndpbi9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL251bS9mMzIucnMAAQEBAgEBAQIBAQECAgICAwEBAQIBAQECAQEBAgICAgMBAQECAQEBAgEBAQICAgIDAgICAwICAgMCAgIDAwMDBAAAAADDNBAAeQAAADUAAAAsAAAAQ2Fubm90IGRlc2VyaWFsaXplIGN1c3RvbSBzaGFwZS4AAAAAAAAAAAEAAAAEAAAAQWxsb2NhdGlvbiBmcm9tIGl0ZXJhdG9yIGVycm9yOiB0aGUgaXRlcmF0b3IgZGlkIG5vdCB5aWVsZCB0aGUgY29ycmVjdCBudW1iZXIgb2YgZWxlbWVudHMuAAAQVRAAWgAAAIsYEABzAAAAhAAAAAkAAAAAAAAACAAAAAQAAAAFAAAAYSB0dXBsZSBvZiBzaXplIDIAQbCrwQALYQEAAAAGAAAAERIQAGMAAACVBAAAIgAAABESEABjAAAAmAQAABwAAABzdHJ1Y3QgVHJpTWVzaCB3aXRoIDcgZWxlbWVudHMAANhVEAAeAAAAYSB0dXBsZSBvZiBzaXplIDMAQZyswQALBQEAAAAHAEGsrMEACwUBAAAABwBBvKzBAAsFAQAAAAcAQcyswQALiQ4BAAAABwAAAHN0cnVjdCBDb21wb3VuZCB3aXRoIDQgZWxlbWVudHMAVFYQAB8AAABzdHJ1Y3QgUG9seWxpbmUgd2l0aCAzIGVsZW1lbnRzAHxWEAAfAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAypFYQABgAAABzdHJ1Y3QgQ29sbGlkZXIgd2l0aCAxMSBlbGVtZW50c8RWEAAgAAAAc3RydWN0IFZveGVscyB3aXRoIDYgZWxlbWVudHMAAADsVhAAHQAAAHN0cnVjdCBIZWlnaHRGaWVsZCB3aXRoIDYgZWxlbWVudHMAABRXEAAiAAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAyMAAAAEBXEAAZAAAAc3RydWN0IFRyaU1lc2hDb25uZWN0ZWRDb21wb25lbnRzIHdpdGggMyBlbGVtZW50cwAAAGRXEAAxAAAAc3RydWN0IEdyYXBoIHdpdGggMiBlbGVtZW50c6BXEAAcAAAAc3RydWN0IExVIHdpdGggMiBlbGVtZW50cwAAAMRXEAAZAAAAc3RydWN0IElzbGFuZE1hbmFnZXIgd2l0aCA0IGVsZW1lbnRz6FcQACQAAABzdHJ1Y3QgQ29udmV4UG9seWhlZHJvbiB3aXRoIDggZWxlbWVudHMAFFgQACcAAABzdHJ1Y3QgQnZoTm9kZVdpZGUgd2l0aCAyIGVsZW1lbnRzAABEWBAAIgAAAHN0cnVjdCBCcm9hZFBoYXNlQnZoIHdpdGggNCBlbGVtZW50c3BYEAAkAAAAc3RydWN0IENvbnRhY3RNYW5pZm9sZERhdGEgd2l0aCA3IGVsZW1lbnRzAACcWBAAKgAAAHN0cnVjdCBKb2ludE1vdG9yIHdpdGggNyBlbGVtZW50cwAAANBYEAAhAAAAc3RydWN0IEdlbmVyaWNKb2ludCB3aXRoIDExIGVsZW1lbnRz/FgQACQAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDMoWRAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgNEhZEAAYAAAAc3RydWN0IEludGVncmF0aW9uUGFyYW1ldGVycyB3aXRoIDE3IGVsZW1lbnRzAAAAaFkQAC0AAABzdHJ1Y3QgTXVsdGlib2R5IHdpdGggMTggZWxlbWVudHMAAACgWRAAIQAAAHN0cnVjdCBJbnRlcmFjdGlvbkdyYXBoIHdpdGggMSBlbGVtZW50AADMWRAAJgAAAHN0cnVjdCBJbmRleFNlcXVlbmNlIHdpdGggMiBlbGVtZW50c/xZEAAkAAAAc3RydWN0IEltcHVsc2VKb2ludCB3aXRoIDUgZWxlbWVudHMAKFoQACMAAAB0dXBsZSBzdHJ1Y3QgTW9kaWZpZWRPYmplY3RzIHdpdGggMiBlbGVtZW50c1RaEAAsAAAAc3RydWN0IE11bHRpYm9keUpvaW50IHdpdGggNCBlbGVtZW50cwAAAIhaEAAlAAAAc3RydWN0IEltcHVsc2VKb2ludFNldCB3aXRoIDQgZWxlbWVudHMAALhaEAAmAAAAc3RydWN0IE11bHRpYm9keUpvaW50U2V0IHdpdGggNCBlbGVtZW50c+haEAAoAAAAc3RydWN0IE11bHRpYm9keVdvcmtzcGFjZSB3aXRoIDIgZWxlbWVudHMAAAAYWxAAKQAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgOUxbEAAYAAAAc3RydWN0IFRyaU1lc2hTaGFwZUNvbnRhY3RNYW5pZm9sZHNXb3Jrc3BhY2Ugd2l0aCAzIGVsZW1lbnRzbFsQADwAAAAxp32Kc1AoS7ksgtHwpWLmDEpcSVrnmEnkCyMkZes9q44jEAB2AAAAhgAAADoAAACOIxAAdgAAAH4AAABBAAAAjxsQAHcAAABcAAAAKwAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4AFwQACAAAAAFFxAAgQAAABMAAAAJAAAAAAAAACQAAAAEAAAACAAAAAAAAAAMAAAABAAAAAkAAAAoKQAADRgQAH0AAADrBwAACQAAAPNIEAB1AAAALgIAABEAAABpbnZhbGlkIHZhbHVlOiAsIGV4cGVjdGVkIAAAfFwQAA8AAACLXBAACwAAAGludmFsaWQgbGVuZ3RoIACoXBAADwAAAItcEAALAAAAAAAAAAQAAAAEAAAACgAAAAAAAAAEAAAABAAAAAsAAABMYXlvdXRzaXplYWxpZ25DYXBhY2l0eU92ZXJmbG93AAAAAAAEAAAABAAAAAwAAABBbGxvY0VycmxheW91dAAAEwMQAHAAAABYAAAADgAAAAACAABhbiBhcnJheSBvZiBzaXplIAAAADxdEAARAEHgusEAC5EDAQAAAA0AAAAAAAAADAAAAAQAAAAOAAAADwAAABAAAAARAAAAAAAAAAwAAAAEAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAJC0QAGMAAAAgAAAACQAAAHRoZSBlbnVtIHZhcmlhbnQgVHlwZWRTaGFwZTo6Q3VzdG9tIGNhbm5vdCBiZSBzZXJpYWxpemVkiC0QAHUAAAArAQAAIQAAAJIxEABpAAAAkwYAAB4AAACSMRAAaQAAAJQGAAAeAAAAkjEQAGkAAACVBgAAHgAAAAAAAAAkAAAABAAAABQAAAAVAAAAFgAAABcAAAAAAAAAJAAAAAQAAAAUAAAAFQAAABYAAAAXAAAAGAAAABMAAADdRRAAbwAAAL0BAAAdAAAATWF0cml4IGluaXQuIGVycm9yOiB0aGUgc2xpY2UgZGlkIG5vdCBjb250YWluIHRoZSByaWdodCBudW1iZXIgb2YgZWxlbWVudHMuAIBeEABLAAAA1SUQAG4AAABqAAAACQAAADgREAByAAAAPwAAABAAQfy9wQAL1w0BAAAAGQAAAGluc2VydGluZyB3aWxsIGFsd2F5cyBzdWNjZWVkIGFmdGVyIHJlc2VydmluZyBhZGRpdGlvbmFsIHNwYWNlAADqURAAZwAAADkBAAAOAAAA6lEQAGcAAAD5AAAAKAAAAGNvcnJ1cHQgZnJlZSBsaXN0AAAAZF8QABEAAADqURAAZwAAAPoAAAArAAAA6lEQAGcAAAB9AgAAFAAAAPkyEABnAAAA8QAAABQAAABHcmFwaDo6YWRkX2VkZ2U6IG5vZGUgaW5kaWNlcyBvdXQgb2YgYm91bmRzALBfEAArAAAA+TIQAGcAAADkAAAAGwAAAPkyEABnAAAAtQAAABQAAACAURAAaQAAAGwAAAAiAAAAgFEQAGkAAABdAAAAEgAAAAkMEAB0AAAAoQAAADUAAAB9DRAAiwAAAGoBAAAXAAAAswwQAI8AAAB+AAAAKwAAALMMEACPAAAAfwAAAEYAAACzDBAAjwAAAMAAAAA+AAAAswwQAI8AAADBAAAALwAAALMMEACPAAAAxAAAAEIAAABQYXJlbnQgcmlnaWQgYm9keSBub3QgZm91bmQubQ8QAHIAAADNAAAADgAAAG0PEAByAAAAzwAAADUAAABtDxAAcgAAANcAAAAiAAAAbQ8QAHIAAACfAAAAOAAAAIEyEAB3AAAAfAAAAD8AAACBMhAAdwAAAH0AAAAYAAAAgTIQAHcAAAB9AAAAMQAAALtKEACQAAAAPQAAADgAAAC7ShAAkAAAAD4AAAA4AAAA3fmc6I5xY+w/374bo+bK9m5vIGVudHJ5IGZvdW5kIGZvciBrZXkAAExBEACRAAAA4gEAADEAAABMQRAAkQAAAO0BAAAxAAAAAAAAAAEAAAAAAAAAJAAAAAQAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAAAAAACQAAAAEAAAACAAAACQAAAAlAAAAJgAAACcAAAAAAAAAJAAAAAQAAAAIAAAAJAAAACUAAAAmAAAAJwAAACQAAAAAAAAAJAAAAAQAAAAIAAAAJAAAACUAAAAmAAAAJwAAACQAAAAkAAAAJQAAAAAAAAAkAAAABAAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAACQYRAACAAAADhcEAAkAAAAJQAAACYAAAAnAAAAxGEQACQAAADkYRAAJAAAACUAAAAIYhAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAAAAAAAEAAAACAAAAAwAAAJ7VpcWzTDVvXtUgdzBBWb9MQRAAkQAAADoCAAAxAAAAxga2DcAmUGqn9f7SskGjt0xBEACRAAAARQIAADEAAABMQRAAkQAAAPAAAAA+AAAATEEQAJEAAADwAAAASAAAAAAAAAAMAAAABAAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAAAAAAAADAAAAAQAAAAJAAAASgAAAEsAAABMAAAATQAAAAAAAAAMAAAABAAAAAkAAABKAAAASwAAAEwAAABNAAAASgAAAAAAAAAMAAAABAAAAAkAAABKAAAASwAAAEwAAABNAAAASgAAAEoAAABLAAAAAAAAAAwAAAAEAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAGxjEAAJAAAASFwQAEoAAABLAAAATAAAAE0AAACgYxAASgAAAMBjEABKAAAASwAAAORjEABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAADkAAAA6AAAAXwAAADwAAABgAAAAYQAAAGIAAAAAAAAACAAAAAQAAABjAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQCuUBAAYAAAAFYBAAAuAAAArlAQAGAAAABFAQAANgAAAK5QEABgAAAA0gQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBuZXdfY2FwID49IGxlbq5QEABgAAAAnQQAAA0AAAABAAAARXhwZWN0ZWQgIGNvbXBvbmVudHMsIGZvdW5kIHhlEAAJAAAAgWUQABMAAABhbiBhcnJheSBvZiBsZW5ndGggNgAAAAAAAAAAAQAAAGQAAAD//////////8hlEABB4MvBAAv9CEludmFsaWQgSW1wdWxzZUpvaW50IHJlZmVyZW5jZS4gSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBoeXNpY3MgV29ybGQuCQ4QADcAAAALAAAARAAAAAkOEAA3AAAAGQAAAA4AAABJbnZhbGlkIEpvaW50IHJlZmVyZW5jZS4gSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBoeXNpY3MgV29ybGQuAAAAQw0QADkAAAAOAAAADgAAAEMNEAA5AAAADwAAAB4AAABDDRAAOQAAABoAAAAOAAAAQw0QADkAAAAbAAAAJwAAAEludmFsaWQgUmlnaWRCb2R5IHJlZmVyZW5jZS4gSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBoeXNpY3MgV29ybGQuAAAAfgwQADQAAAArAAAAOwAAAH4MEAA0AAAANgAAAD8AAABJbnZhbGlkIENvbGxpZGVyIHJlZmVyZW5jZS4gSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBoeXNpY3MgV29ybGQu4A8QADIAAAAXAAAADgAAAOAPEAAyAAAAIwAAAA4AAADgDxAAMgAAAHcAAAANAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAAAAAAAQAAAAEAAAAZQAAAGYAAABmAAAAMC4xOS4zAACUFhAAcAAAACQBAAAOAAAAYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkANQaEAA5AAAAxQAAACQAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkAAAAlwEQADAAAAAKAgAAMgAAAE5vdCB5ZXQgaW1wbGVtZW50ZWQumB4QAC4AAACoAAAAIgAAAJgeEAAuAAAA4gIAAA4AAACYHhAALgAAACUDAAAOAAAAIDYQADIAAADPAAAAMwAAACA2EAAyAAAA0wAAADMAAAAgNhAAMgAAANcAAAAzAAAA/DsQACsAAAAxAQAAQAAAAPw7EAArAAAAPAEAADgAAAD8OxAAKwAAADwBAAA+AAAA/DsQACsAAACFAQAAQAAAAPw7EAArAAAAhQEAAEYAAAD8OxAAKwAAAJABAABAAAAA/DsQACsAAACQAQAARgBB6NTBAAsNAQAAAGcAAABoAAAAaQBBgNXBAAutAwEAAABqAAAAawAAAGwAAAAMAAAABAAAAG0AAABuAAAAbwAAAHAAAAAQAAAABAAAAHEAAAByAAAAc3RydWN0IERlc2VyaWFsaXphYmxlV29ybGQgd2l0aCA5IGVsZW1lbnRzAAC4ahAAKgAAAAAAAAAFAAAABgAAAAYAAAAGAAAABgAAAAYAAAACAAAAAQAAAP////9JbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICkUaxAADQAAACFrEAAiAAAAQ2sQAAEAAABjYXBhY2l0eSBvdmVyZmxvd1RoZSBsb29zZW5pbmcgbWFyZ2luIG11c3QgYmUgcG9zaXRpdmUuAG1rEAAmAAAAD1EQAHAAAADXAwAACQAAAMM0EAB5AAAANQAAACwAAABBbGxvY2F0aW9uIGZyb20gaXRlcmF0b3IgZXJyb3I6IHRoZSBpdGVyYXRvciBkaWQgbm90IHlpZWxkIHRoZSBjb3JyZWN0IG51bWJlciBvZiBlbGVtZW50cy4AALxrEABaAAAAixgQAHMAAACEAAAACQBBuNjBAAuDDQEAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAAccEAB6AAAAlwIAADEAAAAHHBAAegAAAKoCAAAxAAAABxwQAHoAAADaAgAAIwAAAAccEAB6AAAAFgMAAC8AAAAHHBAAegAAACUDAAAvAAAATWF0cml4IGluaXQuIGZyb20gaXRlcmF0b3I6IGl0ZXJhdG9yIG5vdCBsb25nIGVub3VnaC4AAACsbBAANQAAAIsYEABzAAAATgAAAAkAAAAxp32Kc1AoS7ksgtHwpWLm1sEgOMZ4+J+eAzdZQ+Yrnd35nOiOcWPsP9++G6PmyvYMSlxJWueYSeQLIyRl6z2roqdA7j4VL6Vjo5EETxvgDOyRzR3ssvPWqESYUB18g9dpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlfUgQAHUAAACQAQAALQAAAPUFEAB2AAAA8wAAAEMAAACOIxAAdgAAAK8AAAAtAAAAjiMQAHYAAADFAAAAJgAAAI4jEAB2AAAAxwAAAEkAAACOIxAAdgAAAMgAAABHAAAAjiMQAHYAAADMAAAASQAAAI4jEAB2AAAAzQAAAEcAAADIARAAdwAAAGEBAAAqAAAAyAEQAHcAAABjAQAANwAAAI8bEAB3AAAAXAAAACsAAACPGxAAdwAAADoAAAAoAAAAjxsQAHcAAAAxAAAAGAAAAPwEEAB5AAAAMAAAAB4AAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleGRuEAAgAAAABRcQAIEAAAATAAAACQAAAIIAAAAgAAAACAAAAIMAAAAAAAAAJAAAAAQAAACEAAAAhQAAACAAAAAIAAAAhgAAAAAAAAAMAAAABAAAAIcAAACIAAAAIAAAAAgAAACJAAAAKCkAAA0YEAB9AAAA6wcAAAkAAABtaWQgPiBsZW4AAAAAbxAACQAAAAAAAAAEAAAABAAAAIoAAAAAAAAABAAAAAQAAACLAAAA2UcQAIUAAACuAgAAEwAAAPNIEAB1AAAALgIAABEAAAAAAAAABAAAAAQAAACMAAAAAAAAAAQAAAAEAAAAjQAAAExheW91dHNpemVhbGlnbkNhcGFjaXR5T3ZlcmZsb3cAAAAAAAQAAAAEAAAAjgAAAEFsbG9jRXJybGF5b3V0AAAAAAAADAAAAAQAAACPAAAAkAAAAJEAAACSAAAAAAAAAAwAAAAEAAAAjwAAAJAAAACRAAAAkgAAABIAAACTAAAAwzQQAHkAAABqAQAAIwAAAHYFEAB+AAAALAAAAB8AAAB2BRAAfgAAAGAAAAAgAAAAdgUQAH4AAABhAAAAIAAAAHYFEAB+AAAAoQAAACMAAAB2BRAAfgAAAL4AAAAvAAAAQCkQAI0AAAB7AAAAIQAAAJQsEACPAAAAMQAAAB0AAADmKhAAkQAAAIEAAAAdAAAAeCsQAJEAAABzAAAAHQAAAHgrEACRAAAAfQAAABcAAADPNhAAkgAAAHcAAAAcAAAAzzYQAJIAAAB3AAAANgAAAM82EACSAAAAmgAAADkAAADPNhAAkgAAAKEAAAAnAAAAzzYQAJIAAACwAAAAIwAAAM82EACSAAAAvQAAACoAAAAAAAAADAAAAAQAAACUAAAAlQAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAAAAAAAAwAAAAEAAAAhwAAAJ4AAACfAAAAoAAAAKEAAAAAAAAADAAAAAQAAACHAAAAngAAAJ8AAACgAAAAoQAAAJ4AAAAAAAAADAAAAAQAAACHAAAAngAAAJ8AAACgAAAAoQAAAJ4AAACeAAAAnwAAAAAAAAAMAAAABAAAAKIAAACjAAAApAAAAKUAAACmAAAApwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAAAEcRAAhwAAAMxuEACeAAAAnwAAAKAAAAChAAAAOHEQAJ4AAABYcRAAngAAAJ8AAAB8cRAAVAAAAFUAAACoAAAAVwAAAFgAAABZAAAAqQAAAFsAAACqAAAAqwAAAF4AAACsAAAArQAAAK4AAACvAAAAsAAAAGEAAACxAAAAVW5zdXBwb3J0ZWQgY29sbGlzaW9uIHBhaXIuAM82EACSAAAAEgEAABoAAADPNhAAkgAAACwBAAAqAAAAAAAAAP//////////sHIQAEHI5cEAC6UiggAAACAAAAAIAAAAgwAAALIAAACzAAAAtAAAALUAAACyAAAAsgAAALMAAAC2AAAAtwAAAIUAAAAgAAAACAAAAIYAAAC4AAAAuQAAALoAAAC7AAAAuAAAALgAAAC5AAAAvAAAAL0AAACIAAAAIAAAAAgAAACJAAAAvgAAAL8AAADAAAAAwQAAAL4AAAC+AAAAvwAAAMIAAADDAAAAzikQAJMAAABAAAAAFAAAAM4pEACTAAAARgAAAB0AAABiNxAAkwAAAGgAAAAcAAAAYjcQAJMAAABoAAAANgAAAGI3EACTAAAAtwAAACkAAABiNxAAkwAAALoAAAAXAAAAYjcQAJMAAAC9AAAAJgAAAAAAAAAwAAAABAAAAMQAAADFAAAAxgAAAMcAAAAAAAAAJAAAAAQAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAAAAAAACQAAAAEAAAAhAAAANIAAADTAAAA1AAAANUAAAAAAAAAJAAAAAQAAACEAAAA0gAAANMAAADUAAAA1QAAANIAAAAAAAAAJAAAAAQAAACEAAAA0gAAANMAAADUAAAA1QAAANIAAADSAAAA0wAAAAAAAAAkAAAABAAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAADwcxAAhAAAAKxuEADSAAAA0wAAANQAAADVAAAAJHQQANIAAABEdBAA0gAAANMAAABodBAALgAAAC8AAADcAAAAMQAAADIAAAAzAAAA3QAAADUAAADeAAAA3wAAAOAAAACsAAAArQAAAOEAAACvAAAA4gAAAD4AAADjAAAAPRQQAJMAAAA8AAAAHAAAAD0UEACTAAAAPAAAADYAAAA9FBAAkwAAAEABAAAuAAAAPRQQAJMAAAByAAAAOQAAAD0UEACTAAAAeQAAACcAAAA9FBAAkwAAAIYAAAAjAAAAPRQQAJMAAACTAAAAKgAAAMlCEACVAAAArgAAAB0AAAD1OhAAlwAAAG8AAAAcAAAA9ToQAJcAAABvAAAANgAAAPU6EACXAAAAgwAAAC0AAAD1OhAAlwAAAIYAAAAbAAAA9ToQAJcAAACQAAAAGwAAAPU6EACXAAAAmgAAACYAAABZOhAAmwAAAEgAAAAcAAAAWToQAJsAAABIAAAANgAAAAAAAAA0AAAABAAAAOQAAADlAAAAWToQAJsAAABcAAAAMQAAAFk6EACbAAAAXwAAAB8AAABZOhAAmwAAAHQAAAAfAAAAWToQAJsAAAB5AAAAKgAAAHQ4EACcAAAASgAAABwAAAB0OBAAnAAAAEoAAAA2AAAAdDgQAJwAAAAXAQAAKgAAAHQ4EACcAAAAdgAAADkAAAB0OBAAnAAAAH0AAAAnAAAAdDgQAJwAAACQAAAAIwAAAHQ4EACcAAAAnQAAAC4AAAAAAAAAMAAAAAQAAADmAAAA5wAAAHQ4EACcAAAA8gAAACIAAAC3ORAAoQAAAEsAAAAcAAAAtzkQAKEAAABLAAAANgAAAAAAAAA4AAAABAAAAOgAAADpAAAAtzkQAKEAAABiAAAANQAAALc5EAChAAAAZQAAACMAAAC3ORAAoQAAAHoAAAAjAAAAtzkQAKEAAAB/AAAALgAAABE5EAClAAAASAAAABwAAAARORAApQAAAEgAAAA2AAAAAAAAADAAAAAEAAAA6gAAAOsAAAAAAAAAPAAAAAQAAADsAAAA7QAAABE5EAClAAAAdwAAAD0AAAARORAApQAAAHoAAAArAAAAETkQAKUAAACRAAAAKwAAABE5EAClAAAAlgAAADYAAAA4UxAAagAAAMgBAAAkAAAAOFMQAGoAAADJAQAAJAAAADhTEABqAAAAygEAACQAAAA4UxAAagAAAN8BAAAYAAAAOFMQAGoAAADgAQAAGAAAADhTEABqAAAA4QEAABgAAAA4UxAAagAAAOIBAAAYAAAAOFMQAGoAAADlAQAAJwAAADhTEABqAAAA5QEAAEQAAAA4UxAAagAAAOoBAAAnAAAAOFMQAGoAAADqAQAARAAAADhTEABqAAAA7wEAACcAAAA4UxAAagAAAO8BAABEAAAAOFMQAGoAAAD0AQAAJwAAADhTEABqAAAA9AEAAEQAAABIaXQgdW5leHBlY3RlZCBzdGF0ZSBpbiBFUEE6IGZhaWxlZCB0byBwcm9qZWN0IHRoZSBvcmlnaW4gb24gdGhlIGluaXRpYWwgc2ltcGxleC4AAAAweRAAUQAAADhTEABqAAAA/AEAABEAAABwYXJyeTNkOjpxdWVyeTo6ZXBhOjplcGEzAAAAOFMQAGoAAAABAgAAKAAAADhTEABqAAAAFAIAABgAAAA4UxAAagAAABUCAAAYAAAAOFMQAGoAAAAlAgAAIgAAADhTEABqAAAALQIAABsAAAA4UxAAagAAAEQCAAAXAAAAOFMQAGoAAABGAgAALAAAADhTEABqAAAARwIAACwAAAA4UxAAagAAAEgCAAAsAAAAOFMQAGoAAAB6AgAAFwAAADhTEABqAAAAewIAACMAAAA4UxAAagAAAFYCAAAfAAAAOFMQAGoAAABjAgAAIAAAADhTEABqAAAAZgIAADoAAAA4UxAAagAAAGYCAAAvAAAAOFMQAGoAAAA9AgAALAAAADhTEABqAAAAiAIAACQAAAA4UxAAagAAAMABAAAbAAAAOFMQAGoAAAAHAgAAGgAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pbl9ib3VuZC5pc19maW5pdGUoKQCJLhAAaQAAAJcBAAAJAAAA9jcQAH0AAABPAAAADgAAAPY3EAB9AAAAbwAAAA4AAADJUhAAbgAAAMwCAAApAAAAyVIQAG4AAADYAgAAJwAAAMlSEABuAAAA2QIAACcAAADJUhAAbgAAANoCAAAnAAAAtE4QAHUAAACfAAAAIQAAALROEAB1AAAAuwAAAB0AAAC0ThAAdQAAAMQAAAAdAAAAtE4QAHUAAAC4AAAAFgAAALROEAB1AAAAFAEAAB4AAAC0ThAAdQAAABYBAAA6AAAAtE4QAHUAAAAqAQAAJQAAALROEAB1AAAAGQEAACkAAAC0ThAAdQAAAD4BAAAeAAAAtE4QAHUAAABAAQAAOgAAALROEAB1AAAAVAEAACUAAAC0ThAAdQAAAEMBAAApAAAAtE4QAHUAAABkAQAAEQAAALROEAB1AAAAZQEAABEAAAC0ThAAdQAAAGoBAAAVAAAAtE4QAHUAAABrAQAAFQAAALROEAB1AAAAeQEAACkAAACILRAAdQAAACsBAAAhAAAAAAAAACQAAAAEAAAA7gAAAO8AAADwAAAA8QAAAAAAAAAkAAAABAAAAO4AAADvAAAA8AAAAPEAAAAYAAAAkwAAAN1FEABvAAAAvQEAAB0AAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlZ2VtbTogZGltZW5zaW9ucyBtaXNtYXRjaCBmb3IgYWRkaXRpb24uAAAbfRAAJwAAAEdlbXY6IGRpbWVuc2lvbnMgbWlzbWF0Y2guAABMfRAAGgAAAE1hdHJpeCBzbGljaW5nIG91dCBvZiBib3VuZHMuAAAAcH0QAB0AAACEAxAAbQAAACIBAAAJAAAAhAMQAG0AAAAmAQAACQAAAIQDEABtAAAAHgMAAAUAAABDb2x1bW5zIHJhbmdlIHBhaXI6IHRoZSByYW5nZXMgbXVzdCBub3Qgb3ZlcmxhcC7IfRAAMAAAAENvbHVtbnMgcmFuZ2UgcGFpcjogaW5kZXggb3V0IG9mIHJhbmdlLgAAfhAAJwAAAERhdGEgc3RvcmFnZSBidWZmZXIgZGltZW5zaW9uIG1pc21hdGNoLgAwfhAAJwAAAIBEEABtAAAAfAAAAAkAAACARBAAbQAAAK4AAAAbAAAAgEQQAG0AAACjAAAAGwAAANUlEABuAAAAegQAAAwAAABDb21wb25lbnR3aXNlIG11bC9kaXY6IG1pc21hdGNoZWQgbWF0cml4IGRpbWVuc2lvbnMuoH4QADQAAAA9NRAAbwAAAJYAAAAFAAAATWF0cml4IHZpZXc6IGlucHV0IGRhdGEgYnVmZmVyIHRvbyBzbWFsbC4AAADsfhAAKQAAAPIDEABzAAAAMgAAAAkAAABNYXRyaXggaW5kZXggb3V0IG9mIGJvdW5kcy4AMH8QABsAAABNYXRyaXggYWRkaXRpb24vc3VidHJhY3Rpb24gZGltZW5zaW9ucyBtaXNtYXRjaC5UfxAAMAAAAKsREABlAAAAagEAAAEAAAAgYW5kIDogbGVmdCByb3dzICE9IHJpZ2h0IHJvd3MuTWF0cml4IG11bHRpcGxpY2F0aW9uIG91dHB1dCBkaW1lbnNpb25zIG1pc21hdGNoIDogbGVmdCBjb2xzICE9IHJpZ2h0IHJvd3MuAAC7fxAAMQAAAJx/EAAFAAAA7H8QABoAAACrERAAZQAAANgCAAAJAAAAQXhweTogbWlzbWF0Y2hlZCB2ZWN0b3Igc2hhcGVzLgAwgBAAHwAAAIcXEABmAAAAQgEAAAkAAACHFxAAZgAAAAgCAAAJAAAARG90IHByb2R1Y3QgZGltZW5zaW9ucyBtaXNtYXRjaCBmb3Igc2hhcGVzIAB4gBAAKwAAAJx/EAAFAAAAoX8QABoAAACHFxAAZgAAACAAAAAJAAAAhxcQAGYAAAAYAwAACQAAAE1hdHJpeCBlbGVtZW50cyBzd2FwIGluZGV4IG91dCBvZiBib3VuZHMuAAAA3IAQACkAAABAAhAAaAAAAMsEAAAJAAAAVW5hYmxlIHRvIGNvcHkgZnJvbSBhIG1hdHJpeCB3aXRoIGEgZGlmZmVyZW50IHNoYXBlLiCBEAA0AAAAQAIQAGgAAAD0BAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGlyb3cxIDwgc2VsZi5ucm93cygpICYmIGlyb3cyIDwgc2VsZi5ucm93cygpAABrJRAAaQAAADgBAAAJAAAAVGhlIGlucHV0IHZlY3RvciBtdXN0IG5vdCBiZSBlbXB0eS4AvIEQACMAAACpAhAAaQAAAOEAAAAJAAAATWF4aW11bSBudW1iZXIgb2YgcGVybXV0YXRpb25zIGV4Y2VlZGVkLviBEAAoAAAAZEUQAHgAAABWAAAADQAAAExVIHNvbHZlIG1hdHJpeCBkaW1lbnNpb24gbWlzbWF0Y2guADiCEAAjAAAAlQQQAGYAAAD3AAAACQAAAExVIHNvbHZlOiB1bmFibGUgdG8gc29sdmUgYSBub24tc3F1YXJlIHN5c3RlbS4AAHSCEAAuAAAAlQQQAGYAAAD8AAAACQAAAJUEEABmAAAAaQAAAB4AAAACAAAASW5kZXggb3V0IG9mIGJvdW5kcy7CMxAAagAAAFIBAAAaAAAAAAAAAAgAAAAEAAAA8gAAAK5QEABgAAAAVgEAAC4AAACuUBAAYAAAAEUBAAA2AAAArlAQAGAAAADSBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jYXAgPj0gbGVurlAQAGAAAACdBAAADQAAAA4bEACAAAAAJgEAABUAAAAbVBAAcAAAAH0FAAAJAAAAb3ZlcmZsb3cgd2hlbiBhZGRpbmcgZHVyYXRpb25zAAASQhAAbQAAAFQEAAAfAAAA6lEQAGcAAAD5AAAAKAAAAGNvcnJ1cHQgZnJlZSBsaXN0AAAAxIMQABEAAADqURAAZwAAAPoAAAArAEH4h8IAC45NAQAAAPMAAABpbnNlcnRpbmcgd2lsbCBhbHdheXMgc3VjY2VlZCBhZnRlciByZXNlcnZpbmcgYWRkaXRpb25hbCBzcGFjZQAA6lEQAGcAAAA5AQAADgAAAOpREABnAAAAEwIAACMAAABhc3NlcnRpb24gZmFpbGVkOiBpMS5nZW5lcmF0aW9uICE9IGkyLmdlbmVyYXRpb27qURAAZwAAAP4BAAANAAAA6lEQAGcAAAB9AgAAFAAAAE5vIGVsZW1lbnQgYXQgaW5kZXgAgFEQAGkAAABdAAAAEgAAAIBREABpAAAAkAAAACsAAACAURAAaQAAAJEAAAATAAAAgFEQAGkAAACRAAAAKwAAAIBREABpAAAAhwAAACsAAACAURAAaQAAAIgAAAATAAAAQ2Fubm90IGluZGV4IHRoZSBzYW1lIG9iamVjdCB0d2ljZS4AJIUQACMAAACAURAAaQAAAH8AAAAJAAAA+TIQAGcAAAChAAAAFAAAAPkyEABnAAAAogAAABQAAAD5MhAAZwAAALUAAAAUAAAA+TIQAGcAAADxAAAAFAAAAEdyYXBoOjphZGRfZWRnZTogbm9kZSBpbmRpY2VzIG91dCBvZiBib3VuZHMAoIUQACsAAAD5MhAAZwAAAOQAAAAbAAAAAAEAADgREAByAAAAPwAAABAAAACCHBAAdAAAAIIAAAAlAAAAghwQAHQAAACJAAAALwAAAIIcEAB0AAAAiQAAAE8AAACCHBAAdAAAAIoAAAAZAAAAghwQAHQAAACOAAAAOQAAAFRoZSBtaW5pbXVtIGlzbGFuZCBzaXplIG11c3QgYmUgYXQgbGVhc3QgMS4ASIYQACsAAACCHBAAdAAAAKgAAAAJAAAAghwQAHQAAAD1AAAAHQAAAIIcEAB0AAAADwEAAEwAAACCHBAAdAAAABQBAAAaAAAAghwQAHQAAAAVAQAAKQAAAIIcEAB0AAAAMAEAADwAAACCHBAAdAAAADMBAAAdAAAAghwQAHQAAAApAQAAHAAAAIIcEAB0AAAAJQEAABwAAACCHBAAdAAAADcBAAAOAAAAghwQAHQAAAA4AQAAHQAAAIIcEAB0AAAA0AAAABcAAACCHBAAdAAAAM4AAAAbAAAAghwQAHQAAADkAAAAQAAAAIIcEAB0AAAA5QAAACcAAAB9DRAAiwAAAHwBAAAjAAAAfQ0QAIsAAACDAQAAHgAAAH0NEACLAAAAhAEAAB4AAAB9DRAAiwAAAJEBAAARAAAAfQ0QAIsAAACRAQAAIwAAAJgAEACFAAAAlAAAABsAAACYABAAhQAAAJUAAAAiAAAAmAAQAIUAAADLAAAAIwAAAJgAEACFAAAAowAAACUAAACYABAAhQAAAKMAAAAYAAAAmAAQAIUAAACgAAAAGAAAAJgAEACFAAAAoQAAABgAAACYABAAhQAAAKYAAAAuAAAAmAAQAIUAAACmAAAAJgAAAJgAEACFAAAArwAAABsAAACYABAAhQAAANcAAAAnAAAAmAAQAIUAAACQAQAAFAAAAJgAEACFAAAAkwEAABgAAACYABAAhQAAAKkBAAAdAAAAmAAQAIUAAACvAQAALgAAAJgAEACFAAAAsAEAACgAAACYABAAhQAAALIBAAArAAAAmAAQAIUAAADFAQAAIAAAAJgAEACFAAAA3AEAACUAAACYABAAhQAAABcCAAAjAAAAmAAQAIUAAAAgAgAALgAAAJgAEACFAAAAFgMAADwAAACYABAAhQAAABYDAAAkAAAAmAAQAIUAAAAXAwAAOAAAAJgAEACFAAAAFwMAACAAAACYABAAhQAAAGUCAAAjAAAAmAAQAIUAAABmAgAAHQAAAJgAEACFAAAAaQIAADUAAABJbnRlcm5hbCBlcnJvcjogY29udGlndWl0eSBhc3N1bXB0aW9uIG9uIGFzc2VtYmx5X2lkIGRvZXMgbm90IGhvbGQuAHyJEABDAAAAmAAQAIUAAABuAgAADQAAAJgAEACFAAAAmAIAACwAAACYABAAhQAAANsCAAAgAAAAmAAQAIUAAADcAgAAIAAAAJgAEACFAAAAnwIAAC4AAACYABAAhQAAAKACAAAoAAAAmAAQAIUAAAChAgAANAAAAJgAEACFAAAA3wIAADIAAACYABAAhQAAAOACAAAyAAAAmAAQAIUAAAD0AgAAMgAAAJgAEACFAAAA9QIAADIAAACYABAAhQAAAF0DAAA7AAAAmAAQAIUAAABsAwAAMAAAAJgAEACFAAAAeAMAAB8AAACYABAAhQAAAIADAAAwAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi52ZWxvY2l0aWVzLmxlbigpID49IFNQQVRJQUxfRElNAACYABAAhQAAAIQDAAAVAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5kYW1waW5nLmxlbigpID49IFNQQVRJQUxfRElNAJgAEACFAAAAhQMAABUAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmFjY2VsZXJhdGlvbnMubGVuKCkgPj0gU1BBVElBTF9ESU0AAACYABAAhQAAAIYDAAAVAAAAmAAQAIUAAACLAwAAHwAAAJgAEACFAAAApgMAAB4AAACYABAAhQAAAJwDAAAwAAAAmAAQAIUAAADzAwAAJwAAAJgAEACFAAAAAAQAACgAAACYABAAhQAAAAEEAAAmAAAAmAAQAIUAAAAMBAAAFwAAAEEgcmlnaWQtYm9keSB0aGF0IGlzIG5vdCBhdCB0aGUgcm9vdCBvZiBhIG11bHRpYm9keSBtdXN0IGJlIGR5bmFtaWMuAIwQAEQAAACYABAAhQAAAAsEAAANAAAAmAAQAIUAAAC7BAAAHwAAAJgAEACFAAAAvQQAABwAAACYABAAhQAAAMEEAAAtAAAAmAAQAIUAAADBBAAAFgAAAJgAEACFAAAAAgUAABgAAACYABAAhQAAADYFAAAiAAAAmAAQAIUAAAA2BQAAFAAAAJgAEACFAAAATAUAACMAAACYABAAhQAAAEwFAAAUAAAA/i0QAIoAAABxAAAAHQAAAEludGVybmFsIGVycm9yOiBjaXJjdWxhciByaWdpZCBib2R5IGRlcGVuZGVuY3kuAPyMEAAvAAAA/i0QAIoAAABzAAAACQAAAEludmFsaWQgcGFyZW50IGluZGV4LgAAAESNEAAVAAAA/i0QAIoAAAB3AAAACQAAAG5vdCB5ZXQgaW1wbGVtZW50ZWQAIQgQAIsAAACuAAAAEQAAACEIEACLAAAAtgAAABIAAAAhCBAAiwAAANQAAAAuAAAAIQgQAIsAAADUAAAAIgAAACEIEACLAAAA2AAAABEAAAAhCBAAiwAAANwAAAA6AAAAIQgQAIsAAADfAAAAEgAAACEIEACLAAAAwwAAADEAAAAhCBAAiwAAAO0AAAAUAAAAkAcQAJAAAAAhAAAADgAAAJAHEACQAAAAIgAAAA4AAACQBxAAkAAAAEIAAAAFAAAAkAcQAJAAAABdAAAADgAAAJAHEACQAAAAXgAAAA4AAACQBxAAkAAAAIoAAAAFAAAAvBAQAHsAAABOBAAAEAAAALwQEAB7AAAAXQQAADsAAAB+JxAAewAAAA0AAAAZAAAAficQAHsAAAAcAAAAGgAAAH4nEAB7AAAAGgAAACIAAAB+JxAAewAAACkAAAAWAAAAficQAHsAAAAwAAAAHQAAAH4nEAB7AAAALgAAACUAAADVDhAAlwAAAJQBAAAJAAAA1Q4QAJcAAACDAQAAMgAAANUOEACXAAAAjgEAADoAAADVDhAAlwAAAI0BAABCAAAA1Q4QAJcAAABxAQAAMgAAANUOEACXAAAAewEAADoAAADVDhAAlwAAAHoBAABCAAAA1Q4QAJcAAABVAQAANwAAANUOEACXAAAAWwEAADsAAADVDhAAlwAAAOABAAAJAAAA1Q4QAJcAAADPAQAAMgAAANUOEACXAAAA2gEAADwAAADVDhAAlwAAANkBAABEAAAA1Q4QAJcAAAC9AQAAMgAAANUOEACXAAAAxwEAADwAAADVDhAAlwAAAMYBAABEAAAA1Q4QAJcAAAChAQAANwAAANUOEACXAAAApwEAADsAAADVDhAAlwAAAPoBAAAdAAAA1Q4QAJcAAAADAgAANwAAANUOEACXAAAAAgIAAD8AAADVDhAAlwAAAAsCAAAJAAAA1Q4QAJcAAADtAQAANwAAAOAmEACdAAAAWAAAAEAAAADgJhAAnQAAAFsAAAAjAAAA4CYQAJ0AAABcAAAAIAAAAOAmEACdAAAACgEAACQAAADgJhAAnQAAAFgBAAAxAAAA4CYQAJ0AAACHAQAAMQAAAOAmEACdAAAA1wEAADgAAADgJhAAnQAAAOMBAAApAAAA4CYQAJ0AAADlAQAAPgAAANwJEACaAAAAPwAAACMAAADcCRAAmgAAAEIAAAAjAAAA3AkQAJoAAABuAAAAIAAAANwJEACaAAAAbwAAACMAAADcCRAAmgAAAGoBAAAkAAAA3AkQAJoAAABkAQAAIQAAANwJEACaAAAAZAEAADoAAADcCRAAmgAAAGgBAAAhAAAA3AkQAJoAAABoAQAAOgAAANwJEACaAAAA2wEAAC4AAADcCRAAmgAAAOMBAAAuAAAA3AkQAJoAAADoAQAAMwAAANwJEACaAAAA/AEAABgAAADcCRAAmgAAAAACAAAYAAAA3AkQAJoAAAAPAgAALgAAANwJEACaAAAAFwIAAC4AAADcCRAAmgAAABwCAAAxAAAA3AkQAJoAAAA0AgAAGAAAANwJEACaAAAAOAIAABgAAADcCRAAmgAAAD0CAAAdAAAA3AkQAJoAAABAAgAAHgAAANwJEACaAAAAQQIAADYAAABEJhAAmwAAAF8AAABAAAAARCYQAJsAAABkAAAAIwAAAEQmEACbAAAAZQAAACAAAABEJhAAmwAAABEBAAAkAAAARCYQAJsAAABoAQAAMQAAAEQmEACbAAAAlgEAADEAAABEJhAAmwAAAN0BAAA4AAAARCYQAJsAAADnAQAAKQAAAEQmEACbAAAA6QEAAD4AAABFCRAAlgAAAIAAAABQAAAARQkQAJYAAADLAAAAUAAAAEUJEACWAAAAugAAABEAAABFCRAAlgAAAKgAAAARAAAARQkQAJYAAACWAAAAEQAAAEUJEACWAAAAhQAAABEAAABFCRAAlgAAAHAAAAARAAAARQkQAJYAAABfAAAAEQAAAEUJEACWAAAA3wAAAB0AAABFCRAAlgAAAO0AAAAdAAAARQkQAJYAAAD7AAAAHQAAAEUJEACWAAAACQEAAB0AAABFCRAAlgAAAC0BAAA1AAAARQkQAJYAAAApAQAANQAAAEUJEACWAAAAHAEAADQAAABFCRAAlgAAABgBAAA0AAAARQkQAJYAAAA0AQAAHgAAAEUJEACWAAAANgEAADYAAABFCRAAlgAAADcBAAAqAAAARQkQAJYAAAA4AQAAKgAAAGIdEACeAAAARwAAABoAAABiHRAAngAAAEgAAAAaAAAAYh0QAJ4AAABdAAAALAAAAGIdEACeAAAAaAAAACwAAABiHRAAngAAAKkAAAAmAAAAYh0QAJ4AAACqAAAAKQAAAGIdEACeAAAAuAAAACYAAABiHRAAngAAALkAAAApAAAAYh0QAJ4AAADgAAAAFQAAAGIdEACeAAAA7gAAACUAAABiHRAAngAAAO8AAAAvAAAAYh0QAJ4AAAD7AAAAJQAAAGIdEACeAAAA/AAAAC8AAABiHRAAngAAABgBAAAeAAAAYh0QAJ4AAAAZAQAAKgAAAGIdEACeAAAAIAEAABUAAAABHhAAlgAAACQAAAAaAAAAAR4QAJYAAAAlAAAAGgAAAAEeEACWAAAAXQAAABUAAAABHhAAlgAAAAUDAAAJAAAAQQ4QAJMAAACpAAAAGgAAAEEOEACTAAAA2gAAABoAAACtCBAAlwAAAM8AAAAVAAAArQgQAJcAAADcAAAAEgAAAK0IEACXAAAA1gAAAA0AAACtCBAAlwAAAOMAAAA9AAAArQgQAJcAAAAhAQAAFQAAAK0IEACXAAAAGgEAAA0AAACtCBAAlwAAADEBAAAVAAAArQgQAJcAAAAqAQAADQAAAK0IEACXAAAAOAEAAD0AAACtCBAAlwAAAAsBAAARAAAArQgQAJcAAAD9AAAAEQAAAK0IEACXAAAA9QAAABEAAACtCBAAlwAAAOgAAAARAAAArQgQAJcAAAC6AAAAEQAAAK0IEACXAAAApwAAABEAAACtCBAAlwAAAEgBAAAaAAAArQgQAJcAAABKAQAAMgAAAK0IEACXAAAASwEAACYAAACtCBAAlwAAAEwBAAAmAAAAHgEQAHgAAABgAAAAJAAAAB4BEAB4AAAAYQAAACIAAAD/GBAAfAAAAIUAAAASAAAA/xgQAHwAAABoAAAAFgAAAP8YEAB8AAAAbQAAACoAAAD/GBAAfAAAAHAAAAAhAAAA/xgQAHwAAAByAAAANAAAAP8YEAB8AAAALwEAABYAAAD/GBAAfAAAADkBAAA7AAAA/xgQAHwAAAA6AQAAPQAAAAkMEAB0AAAAWQEAABkAAAAJDBAAdAAAAKQBAABYAAAAgTIQAHcAAAB8AAAAPwAAAIEyEAB3AAAAfQAAABgAAACBMhAAdwAAAH0AAAAxAAAAgTIQAHcAAADiAAAAPQAAAIEyEAB3AAAA4wAAACkAAACBMhAAdwAAAOMAAABCAAAAgTIQAHcAAADsAAAAOQAAAIEyEAB3AAAA7QAAACUAAACBMhAAdwAAAO0AAAA+AAAArTUQAHIAAADDAAAAKAAAAK01EAByAAAAaAQAACMAAACtNRAAcgAAAKEEAAAjAAAArTUQAHIAAAB5BAAALgAAAK01EAByAAAAhQQAAC4AAACtNRAAcgAAAJkEAAAZAAAArTUQAHIAAACZBAAAKwAAAK01EAByAAAAmgQAACcAAADzLhAAdQAAAMUAAAAcAAAA8y4QAHUAAAC0AAAADQAAAPMuEAB1AAAA7wAAABwAAABtDxAAcgAAABYBAAA2AAAAbQ8QAHIAAABZAQAAIAAAAG0PEAByAAAAngEAABwAAADVQBAAdgAAAEUBAAAhAAAA1UAQAHYAAABGAQAAIQAAANVAEAB2AAAA/AAAAB0AAADVQBAAdgAAAAMBAAArAAAA1UAQAHYAAAAFAQAAMwAAANVAEAB2AAAAvwIAACgAAAAhFhAAcgAAABUAAAAsAAAAIRYQAHIAAABVAAAALAAAAMYGtg3AJlBqp/X+0rJBo7ee1aXFs0w1b17VIHcwQVm/VW5hYmxlIHRvIGluZGV4IHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UuAIiZEAAnAAAA2hMQAGIAAAAtAgAACQAAANCCEAAUAAAA2hMQAGIAAAAuAgAACQAAANoTEABiAAAAOwIAAAkAAABaGhAAeQAAAIIDAAA5AAAAWhoQAHkAAACDAwAAKwAAAFoaEAB5AAAAdgMAADAAAAAOGxAAgAAAAEwBAAAlAAAADhsQAIAAAABYAQAAMgAAAA4bEACAAAAAmAEAACYAAAAOGxAAgAAAALQBAAAOAAAADhsQAIAAAADLAQAADgAAAA4bEACAAAAAogIAABIAAAAOGxAAgAAAAKUCAAApAAAADhsQAIAAAACqAgAAKAAAAA4bEACAAAAAsAIAADEAAAAOGxAAgAAAAFwCAAAtAAAADhsQAIAAAABsAgAAJAAAAA4bEACAAAAAbgIAADgAAAAOGxAAgAAAAG8CAAAxAAAADhsQAIAAAABxAgAALAAAAGFzc2VydGlvbiBmYWlsZWQ6IG51bV93aGVlbHNfb25fZ3JvdW5kID4gMAAADhsQAIAAAAB0AgAAGQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1heF9pbXBfc3F1YXJlZCA+PSAwLjAOGxAAgAAAAIICAAAVAAAADhsQAIAAAAAsAgAALQAAAA4bEACAAAAAMAIAAB4AAAAOGxAAgAAAADgCAAAkAAAADhsQAIAAAAA+AgAAMAAAAA4bEACAAAAAPwIAACkAAAAOGxAAgAAAAEMCAAAkAAAADhsQAIAAAABLAgAAJAAAAHwZEAB0AAAAkgAAAB4AAAB8GRAAdAAAAJ0AAAApAAAAQ291bGQgbm90IGZpbmQgdGhlIENvbGxpZGVyUGFyZW50IGNvbXBvbmVudC58GRAAdAAAAKEAAAAaAAAAfBkQAHQAAAC5AAAAMQAAAHwZEAB0AAAAugAAADEAAAB8GRAAdAAAAHsAAAAhAAAAYXNzZXJ0aW9uIGZhaWxlZDogdG9pLnRvaSA8PSBkdAB8GRAAdAAAAH0BAAANAAAAfBkQAHQAAACFAQAAMQAAAHwZEAB0AAAAiAEAADEAAAB8GRAAdAAAAJwBAAAuAAAAfBkQAHQAAACdAQAAOwAAAHwZEAB0AAAAoQEAAC4AAAB8GRAAdAAAAKIBAAA7AAAAfBkQAHQAAACqAQAAJQAAAHwZEAB0AAAAqwEAADYAAAB8GRAAdAAAAKwBAAAiAAAAfBkQAHQAAACyAQAAKQAAAHwZEAB0AAAAlgEAADMAAAB8GRAAdAAAAOsBAAAhAAAAfBkQAHQAAADsAQAAIQAAAHwZEAB0AAAA+gEAAEcAAAB8GRAAdAAAAPsBAAAiAAAAfBkQAHQAAAAHAgAARwAAAHwZEAB0AAAACAIAACIAAAB8GRAAdAAAABcBAAAeAAAAfBkQAHQAAAAiAQAAKQAAAHwZEAB0AAAAJgEAABoAAAB8GRAAdAAAADoBAAAxAAAAfBkQAHQAAAA7AQAAMQAAAHwZEAB0AAAATQEAADoAAAB8GRAAdAAAAE4BAAA6AAAAfBkQAHQAAAD/AAAAIQAAAGFzc2VydGlvbiBmYWlsZWQ6IHN0YXJ0X3RpbWUgPD0gZW5kX3RpbWUkABAAcwAAADQAAAAJAAAAfQ0QAIsAAAC7AQAAGwAAAH0NEACLAAAA3AEAAB0AAAB9DRAAiwAAAN0BAABXAAAAfQ0QAIsAAADiAQAAJwAAAJgAEACFAAAA8gEAACMAAACYABAAhQAAAPwBAAAdAAAAmAAQAIUAAAD9AQAAJAAAAJgAEACFAAAAAQIAAEYAAACYABAAhQAAAPUBAABCAAAAswwQAI8AAADaAAAASgAAALMMEACPAAAA3QAAAEMAAACzDBAAjwAAAN4AAAA9AAAAswwQAI8AAADfAAAAQwAAALMMEACPAAAA8wAAAEgAAACzDBAAjwAAAPYAAAA5AAAAswwQAI8AAAD6AAAANQAAALMMEACPAAAA+wAAAE0AAACzDBAAjwAAACcBAAApAAAAIQgQAIsAAABrAAAALgAAACEIEACLAAAAawAAABwAAAAhCBAAiwAAAHkAAAARAAAAIQgQAIsAAAB9AAAAOwAAACEIEACLAAAAhAAAABIAAAAhCBAAiwAAAGAAAAAjAAAARHluYW1pY0ZpeGVkS2luZW1hdGljUG9zaXRpb25CYXNlZEtpbmVtYXRpY1ZlbG9jaXR5QmFzZWTgJhAAnQAAADYAAAA5AAAA4CYQAJ0AAAA3AAAAEwAAAOAmEACdAAAAPgAAADkAAADgJhAAnQAAAD8AAAATAAAARCYQAJsAAAA9AAAAOQAAAEQmEACbAAAAPgAAABMAAABEJhAAmwAAAEUAAAA5AAAARCYQAJsAAABGAAAAEwAAAP8YEAB8AAAABQEAABIAAACtNRAAcgAAAJsBAAARAAAArTUQAHIAAACnAQAAEQAAAK01EAByAAAA5QEAADEAAACtNRAAcgAAAPUBAAAxAAAArTUQAHIAAADyAQAALwAAAK01EAByAAAA8gEAAE4AAACtNRAAcgAAAM8CAAAgAAAArTUQAHIAAADQAgAAIAAAAK01EAByAAAA0gIAACEAAACtNRAAcgAAANMCAAAhAAAArTUQAHIAAADoAgAAJgAAAK01EAByAAAA7AIAACYAAACtNRAAcgAAADgDAAAhAAAArTUQAHIAAAA5AwAAIQAAAK01EAByAAAASQMAAD4AAACtNRAAcgAAAEoDAAA+AAAArTUQAHIAAAARBAAAOwAAAEEgY29udGFjdCBtYW5pZm9sZCBjYW5ub3QgY29udGFpbiBtb3JlIHRoYW4gMjU1IGNvbnRhY3RzIGN1cnJlbnRseSwgZHJvcHBpbmcgY29udGFjdCBpbiBleGNlc3MuAMChEABfAAAArTUQAHIAAADrAwAAHQAAAHJhcGllcjNkOjpnZW9tZXRyeTo6bmFycm93X3BoYXNlBwAAAAUAAAAWAAAAFgAAAOifEADvnxAA9J8QAAqgEAAwAAAAQAAAADQAAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAAEkIQAG0AAADJAAAAEgAAAGBQZXJmb3JtYW5jZWAgb2JqZWN0IG5vdCBmb3VuZAAAsKIQAB4AAABBFRAAYwAAACIAAAANAAAAlBYQAHAAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkKqMQACoAAABMUBAAYQAAAAgDAAAZAAAAcmVlbnRyYW50IGluaXQAAGyjEAAOAAAATFAQAGEAAAB6AgAADQAAAHJldHVybiB0aGlzAO1PEABeAAAA+xgAAAEAAABMYXp5IGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAALCjEAAqAAAATFAQAGEAAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AAD0oxAADgAAAExQEABhAAAAegIAAA0AAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AACqTRAAgwAAADQAAAAFAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAANGBAAfQAAAOsHAAAJAAAAiE8QAGQAAABRAAAACQAAAEXtdTvoujwA9dtpnRoYZ2J74pdYAqkjQABbSLHfOi3BeslLZEr8Wyup8FQ4NqAfK8YGtg3AJlBqp/X+0rJBo7d/2hzqMhpOSmryS0WG017K7JHNHeyy89aoRJhQHXyD1wKi7lP7yqOPfZ0fLvHz0Drd+ZzojnFj7D/fvhuj5sr2MICoB3eYaXIzm8uto+mdMmXKMsssUJimpx8r3JP1lTqQvJC4g/o7Qs15rzWbkltX1sEgOMZ4+J+eAzdZQ+YrnYFne69ylCtnqKMnG8YNJ8cOJNVJmz/0iiA+VTbXIWMs3Bi+kIgWG6bXEToQe85h1pHeiCI20vSo/gQ/kjqoPpnQzGrZoNsJeGefKGMWfY82hRwmEKPLNI+8DBQSa/mUrZ1/zv3jcfuOYRoVN6PnC/Wip0DuPhUvpWOjkQRPG+AMR66LrKU1tSllPX3fyPk7izGnfYpzUChLuSyC0fClYuaP4lDAspru7wXvVs0al2nlLQZgAVo9MB5LJ1Cj2aCDP/rcgyUxoo6J/6L/4eawdtSe1aXFs0w1b17VIHcwQVm/DEpcSVrnmEnkCyMkZes9q4hPEABkAAAACwEAABwAAACITxAAZAAAAA4BAAARAAAAiE8QAGQAAADHAAAACgAAAHVuaWZ5KGtleV9hPSwga2V5X2I9KQAAAKymEAAMAAAAuKYQAAgAAADAphAAAQAAAMpGEABhAAAAfwEAAAkAAABlbmE6OnVuaWZ5VXBkYXRlZCB2YXJpYWJsZSAgdG8gAPamEAARAAAAB6cQAAQAAADKRhAAYQAAAHMBAAAJAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZTogY3JlYXRlZCBuZXcga2V5OiAAAAEAAAAAAAAAV6cQABMAAADKRhAAYQAAADgBAAAJAAAAFgEAACAAAAAIAAAAFwEAAAAAAAAEAAAABAAAABgBAAAAAAAAKAAAAAQAAAAZAQAAAAAAAAwAAAAEAAAAGgEAAAAAAAAIAAAABAAAABsBAAAcAQAAcAAAAAgAAAAdAQAAAAAAABwAAAAEAAAAHgEAAAAAAAAMAAAABAAAAB8BAAAgAQAAMAAAAAQAAAAhAQAAIgEAAEAAAAAEAAAAIwEAACQBAABkAAAABAAAACUBAAAmAQAAIAAAAAgAAAAnAQAAKAEAACAAAAAIAAAAKQEAACoBAAAgAAAACAAAACsBAAAAAAAAJAAAAAQAAAAsAQAAAAAAABAAAAAEAAAALQEAAC4BAABgAAAABAAAAC8BAAAAAAAAGAAAAAQAAAAwAQAAAAAAAAwAAAAEAAAAMQEAADIBAAAgAAAACAAAADMBAAA0AQAApAAAAAQAAAA1AQAAMgEAACAAAAAIAAAANgEAADcBAABYAAAABAAAADgBAAAAAAAACAAAAAQAAAA5AQAAOgEAAFQAAAAEAAAAOwEAAAAAAAAMAAAABAAAADwBAAAmAQAAIAAAAAgAAAA9AQAAKClhc3NlcnRpb24gZmFpbGVkOiBtaW4gPD0gbWF4AAAxHxAAbAAAADoEAAAJAAAAAAAAAAQAAAAEAAAAPgEAAAAAAAAEAAAABAAAAD8BAAAAAAAABAAAAAQAAABAAQAAbWlkID4gbGVuAAAAnKkQAAkAAAAAAAAABAAAAAQAAABBAQAA2UcQAIUAAACuAgAAEwAAALpJEABxAAAA2QcAAA0AAADdRRAAbwAAAGEBAAAJAAAA80gQAHUAAAAuAgAAEQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAAAAABAAAAAQAAABCAQAATGF5b3V0c2l6ZWFsaWduQ2FwYWNpdHlPdmVyZmxvdwAAAAAABAAAAAQAAABDAQAAQWxsb2NFcnJsYXlvdXQAAAAAAAAEAAAABAAAAAcBAEGQ1cIACysBAAAARAEAAFZhclZhbHVlcGFyZW50dmFsdWVyYW5rAP//////////sKoQAEHI1cIAC70sYTMQAGAAAACaAAAAEgAAAN1FEABvAAAAvQEAAB0AAADdRRAAbwAAAKcBAAAfAAAATWF0cml4IGluZGV4IG91dCBvZiBib3VuZHMuAPiqEAAbAAAAU3ltbWV0cmljIGNnZW12OiBkaW1lbnNpb25zIG1pc21hdGNoLgAAAByrEAAlAAAAhxcQAGYAAAB/AQAACQAAAERvdCBwcm9kdWN0IGRpbWVuc2lvbnMgbWlzbWF0Y2ggZm9yIHNoYXBlcyAgYW5kIDogbGVmdCByb3dzICE9IHJpZ2h0IHJvd3MuAABcqxAAKwAAAIerEAAFAAAAjKsQABoAAACHFxAAZgAAACAAAAAJAAAALgAAAK0oEABzAAAAzwAAAC8AAACtKBAAcwAAAJEAAAAhAAAArSgQAHMAAACSAAAAIQAAAK0oEABzAAAAowAAACsAAACtKBAAcwAAALMAAAA8AAAArSgQAHMAAAAEAQAAGAAAAK0oEABzAAAAQQAAAD4AAACtKBAAcwAAAFUAAAAgAAAASW5kZXggb3V0IG9mIGJvdW5kcy4AAAAACAAAAAQAAABFAQAArlAQAGAAAABWAQAALgAAAK5QEABgAAAARQEAADYAAACuUBAAYAAAANIEAAAOAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2NhcCA+PSBsZW6uUBAAYAAAAJ0EAAANAAAAVGhlIGxvb3NlbmluZyBtYXJnaW4gbXVzdCBiZSBwb3NpdGl2ZS4AANisEAAmAAAAD1EQAHAAAADXAwAACQAAAFBvaW50IGNsb3VkIEFhYmIgY29uc3RydWN0aW9uOiB0aGUgaW5wdXQgaXRlcmF0b3Igc2hvdWxkIHlpZWxkIGF0IGxlYXN0IG9uZSBwb2ludC4AAPISEAB2AAAASAAAABgAAADyEhAAdgAAAGcAAAAYAAAApRUQAHsAAAAxAgAAFwAAAC5OEACFAAAAFgAAABcAAAAuThAAhQAAABcAAAAXAAAALk4QAIUAAAAYAAAAFwAAAC5OEACFAAAApQAAABIAAAAuThAAhQAAAKYAAAASAAAALk4QAIUAAACnAAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IGxlYXZlcy5sZW4oKSA+IDEAAExLEAB9AAAALwAAAAkAAABMSxAAfQAAAIcAAAAyAAAAYXNzZXJ0aW9uIGZhaWxlZDogIWxlZnRfbGVhdmVzLmlzX2VtcHR5KCkgJiYgIXJpZ2h0X2xlYXZlcy5pc19lbXB0eSgpAAAATEsQAH0AAACJAAAACQAAAExLEAB9AAAAjQAAACkAAABrZXkgbm90IHByZXNlbnQATEsQAH0AAACRAAAAJwAAAExLEAB9AAAAlAAAAB0AAABMSxAAfQAAAJgAAAAYAAAATEsQAH0AAACZAAAAGgAAAExLEAB9AAAAmwAAAEIAAABMSxAAfQAAAJsAAAAXAAAATEsQAH0AAACfAAAAKQAAAExLEAB9AAAAowAAACcAAABMSxAAfQAAAKYAAAAdAAAATEsQAH0AAACqAAAAGAAAAExLEAB9AAAAqwAAABoAAABMSxAAfQAAAK4AAAAbAAAATEsQAH0AAACtAAAAFwAAAExLEAB9AAAAOgAAABwAAABMSxAAfQAAAGgAAAAdAAAAnAYQAHcAAACOAAAAJwAAAJwGEAB3AAAAsAAAACoAAACcBhAAdwAAALIAAAArAAAAnAYQAHcAAADAAAAAJgAAAJwGEAB3AAAA2AAAACcAAACcBhAAdwAAAO4AAAA5AAAAnAYQAHcAAADyAAAAGAAAAJwGEAB3AAAA9gAAABoAAACcBhAAdwAAABIBAAAoAAAAnAYQAHcAAABVAQAAIAAAAJwGEAB3AAAAVgEAACIAAACcBhAAdwAAAFgBAAAwAAAAnAYQAHcAAABZAQAAKwAAAJwGEAB3AAAAWwEAACsAAACcBhAAdwAAADYBAAAgAAAAnAYQAHcAAAA3AQAAIgAAAJwGEAB3AAAAOQEAAC8AAACcBhAAdwAAADoBAAArAAAAnAYQAHcAAAA8AQAAKwAAAJwGEAB3AAAAdgEAAB4AAACcBhAAdwAAAKUBAAA3AAAAnAYQAHcAAACnAQAANwAAAJwGEAB3AAAA5gEAACoAAACcBhAAdwAAAPIBAAAdAAAAnAYQAHcAAAAPAgAAJQAAAJwGEAB3AAAADQIAABkAAACcBhAAdwAAABQCAAAlAAAAnAYQAHcAAAASAgAAGQAAAJwGEAB3AAAA/gEAACUAAACcBhAAdwAAAPsBAAAvAAAAnAYQAHcAAAAEAgAAJQAAAJwGEAB3AAAAAQIAAC8AAACcBhAAdwAAAK8BAAAqAAAAnAYQAHcAAAC7AQAAHQAAAJwGEAB3AAAA2gEAACUAAACcBhAAdwAAANcBAAAvAAAAnAYQAHcAAADgAQAAJQAAAJwGEAB3AAAA3QEAAC8AAACcBhAAdwAAAMgBAAAlAAAAnAYQAHcAAADFAQAALwAAAJwGEAB3AAAAzgEAACUAAACcBhAAdwAAAMsBAAAvAAAASTQQAHkAAAAyAQAAPwAAAEk0EAB5AAAASQEAAB8AAABJNBAAeQAAAE4BAAAmAAAASTQQAHkAAABUAQAAJgAAAEk0EAB5AAAAYwEAABsAAABJNBAAeQAAAGoBAAAjAAAASTQQAHkAAABvAQAAKgAAAEk0EAB5AAAAdwEAACMAAABJNBAAeQAAAHUBAAAqAAAASTQQAHkAAAB8AQAAIwAAAEk0EAB5AAAAfQEAACYAAABJNBAAeQAAAH4BAAAmAAAASTQQAHkAAACVAQAAIwAAAEk0EAB5AAAAnAEAACoAAABJNBAAeQAAAJoBAAAqAAAASTQQAHkAAACoAQAAKgAAAEk0EAB5AAAApgEAACoAAABJNBAAeQAAALMBAAAjAAAASTQQAHkAAAC0AQAAJgAAAEk0EAB5AAAAtQEAACYAAABJNBAAeQAAAMgBAAAjAAAASTQQAHkAAADXAQAAMgAAAEk0EAB5AAAA7gEAACMAAABJNBAAeQAAAPwBAAAyAAAAyksQAHsAAAAXAAAAJAAAAMpLEAB7AAAAGAAAAB8AAADKSxAAewAAADMAAAApAAAAyksQAHsAAAA0AAAAJAAAAMpLEAB7AAAAVQAAACEAAADKSxAAewAAADsAAAAnAAAAyksQAHsAAAA/AAAAIwAAAMpLEAB7AAAARAAAACQAAADKSxAAewAAAEUAAAAmAAAAyksQAHsAAABGAAAAJQAAAMpLEAB7AAAASwAAAC8AAADKSxAAewAAAE0AAAAlAAAAyksQAHsAAABQAAAALwAAAMpLEAB7AAAAUgAAACUAAADKSxAAewAAAC4AAAAhAAAAyksQAHsAAAAjAAAALQAAAJILEAB2AAAA6wAAABcAAACSCxAAdgAAAPYAAAAXAAAAkgsQAHYAAAD3AAAAFwAAAJILEAB2AAAAwwAAABQAAACSCxAAdgAAAMgAAAAVAAAAkgsQAHYAAAAPAQAAGwAAAJILEAB2AAAAIQEAABMAAACSCxAAdgAAACIBAAATAAAAkgsQAHYAAAAmAQAAFgAAAJILEAB2AAAANQEAABMAAACSCxAAdgAAADYBAAATAAAAkgsQAHYAAAA6AQAAFgAAAJILEAB2AAAAPQEAABsAAACSCxAAdgAAAD4BAAAPAAAAkgsQAHYAAAA/AQAACQAAAMM0EAB5AAAANQAAACwAAADDNBAAeQAAAGoBAAAjAAAA7kQQAHUAAAB9BwAAHgAAAO5EEAB1AAAAgQcAACAAAADuRBAAdQAAAIIHAAApAAAA7kQQAHUAAACFBwAAHgAAAO5EEAB1AAAAiQcAACAAAADuRBAAdQAAAIoHAAApAAAA7kQQAHUAAACLBwAAKQAAAO5EEAB1AAAAkQcAAB4AAADuRBAAdQAAAJIHAAAgAAAA7kQQAHUAAABzBwAAEgAAAO5EEAB1AAAARQgAABkAAADuRBAAdQAAAEUJAAAeAAAA7kQQAHUAAABMCQAALwAAAO5EEAB1AAAAUwkAAC8AAADuRBAAdQAAAFcJAAAvAAAA7kQQAHUAAABaCQAAJQAAAO5EEAB1AAAAXQkAAC8AAADuRBAAdQAAAGAJAAAlAAAA7kQQAHUAAABmCQAAKgAAAO5EEAB1AAAAZwkAACoAAADuRBAAdQAAAGoJAAArAAAA7kQQAHUAAABsCQAAIQAAAO5EEAB1AAAAbwkAABsAAADuRBAAdQAAAHUJAAAuAAAA7kQQAHUAAAB2CQAAHwAAAFRoZSBwcm94aW1pdHkgbWFyZ2luIG11c3QgYmUgcG9zaXRpdmUgb3IgbnVsbC4AAGi3EAAuAAAACiwQAIkAAAAPAAAABQAAAEZMEACNAAAAUgAAAAUAAABfQxAAjwAAAE0AAAAFAAAAjiIQAJUAAAANAAAABQAAAGohEACXAAAAIAAAACQAAAAAAAAAHAAAAAQAAABGAQAARwEAAOAgEACJAAAAHgAAACQAAACULBAAjwAAADEAAAAdAAAAyUIQAJUAAACuAAAAHQAAAOYqEACRAAAAgQAAAB0AAAAyAQAAIAAAAAgAAAA2AQAASAEAAEkBAABKAQAASwEAAEgBAABIAQAASQEAAEwBAABNAQAAETkQAKUAAABIAAAAHAAAABE5EAClAAAASAAAADYAAAAAAAAAMAAAAAQAAABOAQAATwEAAAAAAAA8AAAABAAAAFABAABRAQAAETkQAKUAAAB3AAAAPQAAABE5EAClAAAAegAAACsAAAARORAApQAAAJEAAAArAAAAETkQAKUAAACWAAAANgAAACYBAAAgAAAACAAAACcBAABSAQAAUwEAAFQBAABVAQAAUgEAAFIBAABTAQAAVgEAAFcBAABZOhAAmwAAAEgAAAAcAAAAWToQAJsAAABIAAAANgAAAAAAAAA0AAAABAAAAFgBAABZAQAAWToQAJsAAABcAAAAMQAAAFk6EACbAAAAXwAAAB8AAABZOhAAmwAAAHQAAAAfAAAAWToQAJsAAAB5AAAAKgAAAM4pEACTAAAAQAAAABQAAADOKRAAkwAAAEYAAAAdAAAAMgEAACAAAAAIAAAAMwEAAFoBAABbAQAAXAEAAF0BAABaAQAAWgEAAFsBAABeAQAAXwEAALc5EAChAAAASwAAABwAAAC3ORAAoQAAAEsAAAA2AAAAAAAAADgAAAAEAAAAYAEAAGEBAAC3ORAAoQAAAGIAAAA1AAAAtzkQAKEAAABlAAAAIwAAALc5EAChAAAAegAAACMAAAC3ORAAoQAAAH8AAAAuAAAAAAAAADAAAAAEAAAAxAAAAGIBAABjAQAAZAEAAAAAAAAkAAAABAAAAGUBAABmAQAAZwEAAGgBAABpAQAAagEAAGsBAABsAQAAbQEAAG4BAAAAAAAAJAAAAAQAAAAsAQAAbwEAAHABAABxAQAAcgEAAAAAAAAkAAAABAAAACwBAABvAQAAcAEAAHEBAAByAQAAbwEAAAAAAAAkAAAABAAAACwBAABvAQAAcAEAAHEBAAByAQAAbwEAAG8BAABwAQAAAAAAACQAAAAEAAAAcwEAAHQBAAB1AQAAdgEAAHcBAAB4AQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAIy6EAAsAQAAbKgQAG8BAABwAQAAcQEAAHIBAADAuhAAbwEAAOC6EABvAQAAcAEAAAS7EAAuAAAALwAAAHkBAAAxAAAAMgAAADMAAAB6AQAANQAAAHsBAAB8AQAAfQEAAH4BAAB/AQAAgAEAAIEBAACCAQAAPgAAAIMBAAAmAQAAIAAAAAgAAAA9AQAAhAEAAIUBAACGAQAAhwEAAIQBAACEAQAAhQEAAIgBAACJAQAA9ToQAJcAAABvAAAAHAAAAPU6EACXAAAAbwAAADYAAAD1OhAAlwAAAIMAAAAtAAAA9ToQAJcAAACGAAAAGwAAAPU6EACXAAAAkAAAABsAAAD1OhAAlwAAAJoAAAAmAAAAQCkQAI0AAAB7AAAAIQAAACABAAAwAAAABAAAACEBAACKAQAAiwEAAIwBAACNAQAAigEAAIoBAACLAQAAjgEAAI8BAABiNxAAkwAAAGgAAAAcAAAAYjcQAJMAAABoAAAANgAAAGI3EACTAAAAtwAAACkAAABiNxAAkwAAALoAAAAXAAAAYjcQAJMAAAC9AAAAJgAAAHgrEACRAAAAcwAAAB0AAAB4KxAAkQAAAH0AAAAXAAAAAAAAAAEAAAADAAAAAgAAAAQAAAAFAAAABwAAAAYAAAAoAQAAIAAAAAgAAAApAQAAkAEAAJEBAACSAQAAkwEAAJABAACQAQAAkQEAAJQBAAC9AAAAdDgQAJwAAABKAAAAHAAAAHQ4EACcAAAASgAAADYAAAB0OBAAnAAAABcBAAAqAAAAdDgQAJwAAAB2AAAAOQAAAHQ4EACcAAAAfQAAACcAAAB0OBAAnAAAAJAAAAAjAAAAdDgQAJwAAACdAAAALgAAAAAAAAAwAAAABAAAAJUBAACWAQAAAAAAAAwAAAAEAAAAlwEAAJgBAACZAQAAmgEAAJsBAACcAQAAnQEAAJ4BAACfAQAAoAEAAAAAAAAMAAAABAAAADwBAAChAQAAogEAAKMBAACkAQAAAAAAAAwAAAAEAAAAPAEAAKEBAACiAQAAowEAAKQBAAChAQAAAAAAAAwAAAAEAAAAPAEAAKEBAACiAQAAowEAAKQBAAChAQAAoQEAAKIBAAAAAAAADAAAAAQAAAClAQAApgEAAKcBAACoAQAAqQEAAKoBAACXAQAAmAEAAJkBAACaAQAAmwEAAJwBAACdAQAAngEAAJ8BAACgAQAAGL4QADwBAAAcqRAAoQEAAKIBAACjAQAApAEAAEy+EAChAQAAbL4QAKEBAACiAQAAkL4QAFQAAABVAAAAqwEAAFcAAABYAAAAWQAAAKwBAABbAAAArQEAAK4BAABeAAAAfgEAAH8BAACvAQAAgQEAALABAABhAAAAsQEAAFVuc3VwcG9ydGVkIGNvbGxpc2lvbiBwYWlyLgB0OBAAnAAAAPIAAAAiAAAAKgEAACAAAAAIAAAAKwEAALIBAACzAQAAtAEAALUBAACyAQAAsgEAALMBAAC2AQAAwwAAABYBAAAgAAAACAAAABcBAAC3AQAAuAEAALkBAAC6AQAAtwEAALcBAAC4AQAAuwEAALcAAADPNhAAkgAAAHcAAAAcAAAAzzYQAJIAAAB3AAAANgAAAM82EACSAAAAmgAAADkAAADPNhAAkgAAAKEAAAAnAAAAzzYQAJIAAACwAAAAIwAAAM82EACSAAAAvQAAACoAAADPNhAAkgAAABIBAAAaAAAAzzYQAJIAAAAsAQAAKgAAAD0UEACTAAAAPAAAABwAAAA9FBAAkwAAADwAAAA2AAAAPRQQAJMAAABAAQAALgAAAD0UEACTAAAAcgAAADkAAAA9FBAAkwAAAHkAAAAnAAAAPRQQAJMAAACGAAAAIwAAAD0UEACTAAAAkwAAACoAQZCCwwAL51wBAAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AAAAvAEAAL0BAAAHHBAAegAAAJcCAAAxAAAABxwQAHoAAACqAgAAMQAAAAccEAB6AAAA2gIAACMAAAAHHBAAegAAABYDAAAvAAAABxwQAHoAAAAlAwAALwAAAAIiEACLAAAAMAAAACQAAAA4UxAAagAAAEoAAAAOAAAAOFMQAGoAAABLAAAADgAAADhTEABqAAAATAAAAA4AAAA4UxAAagAAAGIAAAANAAAAOFMQAGoAAABjAAAADQAAADhTEABqAAAAZAAAAA0AAAA4UxAAagAAAHoAAAANAAAAOFMQAGoAAAB7AAAAEwAAADhTEABqAAAAfAAAABMAAABIaXQgdW5leHBlY3RlZCBzdGF0ZSBpbiBFUEE6IGZvdW5kIGluZGV4ICwgZXhwZWN0ZWQ6IAAAACTCEAApAAAATcIQAAwAAADQqxAAAQAAADhTEABqAAAAjgAAABEAAABwYXJyeTNkOjpxdWVyeTo6ZXBhOjplcGEzAAAAOFMQAGoAAACaAAAAHAAAADhTEABqAAAAmgAAABMAAAA4UxAAagAAAJsAAAATAAAAOFMQAGoAAACcAAAAEwAAADhTEABqAAAAnQAAABMAAAA4UxAAagAAAN8BAAAYAAAAOFMQAGoAAADgAQAAGAAAADhTEABqAAAA4QEAABgAAAA4UxAAagAAAOIBAAAYAAAAOFMQAGoAAADlAQAAJwAAADhTEABqAAAA5QEAAEQAAAA4UxAAagAAAOoBAAAnAAAAOFMQAGoAAADqAQAARAAAADhTEABqAAAA7wEAACcAAAA4UxAAagAAAO8BAABEAAAAOFMQAGoAAAD0AQAAJwAAADhTEABqAAAA9AEAAEQAAABIaXQgdW5leHBlY3RlZCBzdGF0ZSBpbiBFUEE6IGZhaWxlZCB0byBwcm9qZWN0IHRoZSBvcmlnaW4gb24gdGhlIGluaXRpYWwgc2ltcGxleC4AAACwwxAAUQAAADhTEABqAAAA/AEAABEAAAA4UxAAagAAABQCAAAYAAAAOFMQAGoAAAAVAgAAGAAAADhTEABqAAAAJQIAACIAAAA4UxAAagAAAC0CAAAbAAAAOFMQAGoAAABEAgAAFwAAADhTEABqAAAARgIAACwAAAA4UxAAagAAAEcCAAAsAAAAOFMQAGoAAABIAgAALAAAADhTEABqAAAAegIAABcAAAA4UxAAagAAAHsCAAAjAAAAOFMQAGoAAABWAgAAHwAAADhTEABqAAAAYwIAACAAAAA4UxAAagAAAGYCAAA6AAAAOFMQAGoAAABmAgAALwAAADhTEABqAAAAPQIAACwAAAA4UxAAagAAAIgCAAAkAAAAOFMQAGoAAADAAQAAGwAAADhTEABqAAAABwIAABoAAAA4UxAAagAAAI4CAAAXAAAAOFMQAGoAAACQAgAAIQAAADhTEABqAAAAlwIAACYAAAA4UxAAagAAAJsCAAAfAAAAOFMQAGoAAACdAgAAHwAAADhTEABqAAAAnQIAAD8AAACJLhAAaQAAANMAAAAOAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWluX2JvdW5kLmlzX2Zpbml0ZSgpAIkuEABpAAAAlwEAAAkAAAAAAAAAiS4QAGkAAAD8AgAACQAAAFJSEAB2AAAALQAAABcAAABSUhAAdgAAAFYAAAASAAAAVKwQABQAAABSUhAAdgAAAGEAAAAJAAAAUlIQAHYAAABmAAAACQAAAFJSEAB2AAAAZwAAAAoAAABSUhAAdgAAAG0AAAAJAAAAUlIQAHYAAABzAAAACgAAAFJSEAB2AAAAkQAAABYAAABSUhAAdgAAAOUAAAAeAAAAUlIQAHYAAAAOAQAAHgAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYuZGltID09IDMAUlIQAHYAAAC8AAAADQAAAFJSEAB2AAAAXAEAABQAAACeHxAAnQAAADkAAAApAAAAAAAAAAQAAAAEAAAAvgEAAL8BAADAAQAAwQEAAMIBAADDAQAAxAEAAMUBAADGAQAAxwEAAAAAAAAEAAAABAAAABgBAADIAQAAyQEAAMoBAADLAQAAAAAAAAQAAAAEAAAAGAEAAMgBAADJAQAAygEAAMsBAADIAQAAAAAAAAQAAAAEAAAAGAEAAMgBAADJAQAAygEAAMsBAADIAQAAyAEAAMkBAAAAAAAABAAAAAQAAADMAQAAzQEAAM4BAADPAQAA0AEAANEBAAC+AQAAvwEAAMABAADBAQAAwgEAAMMBAADEAQAAxQEAAMYBAADHAQAA8MYQABgBAACcpxAAyAEAAMkBAADKAQAAywEAACTHEADIAQAARMcQAMgBAADJAQAAaMcQANIBAADTAQAA1AEAANUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADcAQAA3QEAAH8BAADeAQAAgQEAAN8BAADgAQAA4QEAAENsb3Nlc3QgcG9pbnRzIG5vdCBmb3VuZCBkZXNwaXRlIHNldHRpbmcgdGhlIG1heCBkaXN0YW5jZSB0byBpbmZpbml0eS4AAFzIEABGAAAAPCAQAKMAAADMAAAAEQAAAHBhcnJ5M2Q6OnF1ZXJ5Ojpub25saW5lYXJfc2hhcGVfY2FzdDo6bm9ubGluZWFyX3NoYXBlX2Nhc3Rfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAAAPY3EAB9AAAATwAAAA4AAAD2NxAAfQAAAG8AAAAOAAAA9jcQAH0AAAARAQAADgAAAPY3EAB9AAAAKgEAACMAAAD2NxAAfQAAAC0BAAAiAAAA9jcQAH0AAAAoAQAAIwAAAGFzc2VydGlvbiBmYWlsZWQ6IHNxbmFiICE9IDAuMAAAmQoQAHUAAABHAAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IGRlbm9tICE9IDAuMAAAeSQQAHkAAAAXAQAAFQAAAAAAAAAIAAAABAAAAOIBAADjAQAAAAAAAAgAAAAEAAAA5AEAAOUBAAAAAAAACAAAAAQAAADmAQAA5wEAAAAAAAAIAAAABAAAAOgBAADpAQAAAAAAAAgAAAAEAAAA6gEAAOsBAABBIGNvbXBvdW5kIHNoYXBlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgc2hhcGUuAAAANMoQADEAAABQShAAagAAAHIAAAAJAAAAUEoQAGoAAAB+AAAAEwAAAFBKEABqAAAAfwAAABQAAABOZXN0ZWQgY29tcG9zaXRlIHNoYXBlcyBhcmUgbm90IGFsbG93ZWQuoMoQACgAAABQShAAagAAAIIAAAARAAAAUEoQAGoAAAC7AgAALAAAANRMEABoAAAANAEAABIAAADUTBAAaAAAADgBAAASAAAA1EwQAGgAAAA8AQAAEgAAANRMEABoAAAAmQEAABgAAACQPBAAagAAAK0AAAAmAAAAkDwQAGoAAACtAAAAQQAAAJA8EABqAAAAmgEAAB8AAACQPBAAagAAAJwBAAAaAAAAkDwQAGoAAACdAQAAGgAAAAAAAAAYAAAABAAAAOwBAADtAQAA7gEAAO8BAADwAQAA8QEAAPIBAADzAQAA9AEAAPUBAAAAAAAAGAAAAAQAAAAwAQAA9gEAAPcBAAD4AQAA+QEAAAAAAAAYAAAABAAAADABAAD2AQAA9wEAAPgBAAD5AQAA9gEAAAAAAAAYAAAABAAAADABAAD2AQAA9wEAAPgBAAD5AQAA9gEAAPYBAAD3AQAAAAAAABgAAAAEAAAA+gEAAPsBAAD8AQAA/QEAAP4BAAD/AQAA7AEAAO0BAADuAQAA7wEAAPABAADxAQAA8gEAAPMBAAD0AQAA9QEAAIDLEAAwAQAAnKgQAPYBAAD3AQAA+AEAAPkBAAC0yxAA9gEAANTLEAD2AQAA9wEAAPjLEAAAAgAAAQIAAAICAAADAgAABAIAAAUCAAAGAgAANQAAAAcCAAAIAgAAfQEAAH4BAAB/AQAACQIAAIEBAAAKAgAACwIAAAwCAAAPCxAAaQAAAKIAAAAyAAAADwsQAGkAAAChAQAAEgAAAC4BAABgAAAABAAAAA0CAAAOAgAADwIAABACAAARAgAAEgIAABMCAAAUAgAAFQIAABYCAAAuAQAAYAAAAAQAAAAvAQAAFwIAABgCAAAZAgAAGgIAAC4BAABgAAAABAAAAC8BAAAXAgAAGAIAABkCAAAaAgAAFwIAAC4BAABgAAAABAAAAC8BAAAXAgAAGAIAABkCAAAaAgAAFwIAABcCAAAYAgAALgEAAGAAAAAEAAAAGwIAABwCAAAdAgAAHgIAAB8CAAAgAgAADQIAAA4CAAAPAgAAEAIAABECAAASAgAAEwIAABQCAAAVAgAAFgIAAAzNEAAvAQAAjKgQABcCAAAYAgAAGQIAABoCAABAzRAAFwIAAGDNEAAXAgAAGAIAAITNEAAhAgAAIgIAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIAACkCAAAqAgAAKwIAACwCAAB/AQAALQIAAIEBAAAuAgAALwIAADACAAAAAAAABAAAAAQAAAAxAgAAMgIAADMCAAA0AgAAAAAAAAwAAAAEAAAANQIAADYCAAA3AgAAOAIAAAAAAAAMAAAABAAAADUCAAA2AgAANwIAADgCAAASAAAAOQIAAAAAAAAcAAAABAAAADoCAAA7AgAAPAIAAD0CAAA+AgAAPwIAAEACAABBAgAAQgIAAEMCAAAAAAAAHAAAAAQAAAAeAQAARAIAAEUCAABGAgAARwIAAAAAAAAcAAAABAAAAB4BAABEAgAARQIAAEYCAABHAgAARAIAAAAAAAAcAAAABAAAAB4BAABEAgAARQIAAEYCAABHAgAARAIAAEQCAABFAgAAAAAAABwAAAAEAAAASAIAAEkCAABKAgAASwIAAEwCAABNAgAAOgIAADsCAAA8AgAAPQIAAD4CAAA/AgAAQAIAAEECAABCAgAAQwIAANTOEAAeAQAA7KcQAEQCAABFAgAARgIAAEcCAAAIzxAARAIAACjPEABEAgAARQIAAEzPEABOAgAATwIAAFACAABRAgAAUgIAAFMCAABUAgAAVQIAAFYCAABXAgAAWAIAAH4BAAB/AQAAWQIAAIEBAABaAgAAWwIAAFwCAAAAAAAAHAAAAAQAAABdAgAAXgIAAF8CAABgAgAAAAAAABgAAAAEAAAAYQIAAGICAABjAgAAZAIAAGUCAAA5AgAAAAAAACQAAAAEAAAAZgIAAGcCAABoAgAAaQIAAAAAAAAkAAAABAAAAGYCAABnAgAAaAIAAGkCAAAYAAAAOQIAAAAAAAAYAAAABAAAAGECAABiAgAAYwIAAGQCAAA3AQAAWAAAAAQAAABqAgAAawIAAGwCAABtAgAAbgIAAG8CAABwAgAAcQIAAHICAABzAgAANwEAAFgAAAAEAAAAOAEAAHQCAAB1AgAAdgIAAHcCAAA3AQAAWAAAAAQAAAA4AQAAdAIAAHUCAAB2AgAAdwIAAHQCAAA3AQAAWAAAAAQAAAA4AQAAdAIAAHUCAAB2AgAAdwIAAHQCAAB0AgAAdQIAADcBAABYAAAABAAAAHgCAAB5AgAAegIAAHsCAAB8AgAAfQIAAGoCAABrAgAAbAIAAG0CAABuAgAAbwIAAHACAABxAgAAcgIAAHMCAADc0BAAOAEAAOyoEAB0AgAAdQIAAHYCAAB3AgAAENEQAHQCAAAw0RAAdAIAAHUCAABU0RAAfgIAAH8CAACAAgAAgQIAAIICAACDAgAAhAIAAIUCAACGAgAAhwIAAIgCAACJAgAAOQIAAIEBAACKAgAA3wEAAFsCAACLAgAANwEAAFgAAAAEAAAAjAIAAI0CAAAiAQAAQAAAAAQAAACOAgAAjwIAAJACAACRAgAAkgIAAJMCAACUAgAAlQIAAJYCAACXAgAAIgEAAEAAAAAEAAAAIwEAAJgCAACZAgAAmgIAAJsCAAAiAQAAQAAAAAQAAAAjAQAAmAIAAJkCAACaAgAAmwIAAJgCAAAiAQAAQAAAAAQAAAAjAQAAmAIAAJkCAACaAgAAmwIAAJgCAACYAgAAmQIAACIBAABAAAAABAAAAJwCAACdAgAAngIAAJ8CAACgAgAAoQIAAI4CAACPAgAAkAIAAJECAACSAgAAkwIAAJQCAACVAgAAlgIAAJcCAABc0hAAIwEAAByoEACYAgAAmQIAAJoCAACbAgAAkNIQAJgCAACw0hAAmAIAAJkCAADU0hAAogIAAKMCAACkAgAApQIAAKYCAACnAgAAqAIAADUAAACpAgAAqgIAAH0BAAAsAgAAOQIAAIEBAACrAgAA3wEAAFsCAACsAgAAIgEAAEAAAAAEAAAArQIAAK4CAAA0AQAApAAAAAQAAACvAgAAsAIAALECAACyAgAAswIAALQCAAC1AgAAtgIAALcCAAC4AgAANAEAAKQAAAAEAAAANQEAALkCAAC6AgAAuwIAALwCAAA0AQAApAAAAAQAAAA1AQAAuQIAALoCAAC7AgAAvAIAALkCAAA0AQAApAAAAAQAAAA1AQAAuQIAALoCAAC7AgAAvAIAALkCAAC5AgAAugIAADQBAACkAAAABAAAAL0CAAC+AgAAvwIAAMACAADBAgAAwgIAAK8CAACwAgAAsQIAALICAACzAgAAtAIAALUCAAC2AgAAtwIAALgCAADc0xAANQEAAMyoEAC5AgAAugIAALsCAAC8AgAAENQQALkCAAAw1BAAuQIAALoCAABU1BAAwwIAAMQCAADFAgAAxgIAAMcCAADIAgAAyQIAAMoCAADLAgAAzAIAAH0BAAAsAgAAOQIAAIEBAADNAgAA3wEAAM4CAADPAgAANAEAAKQAAAAEAAAA0AIAANECAAA6AQAAVAAAAAQAAADSAgAA0wIAANQCAADVAgAA1gIAANcCAADYAgAA2QIAANoCAADbAgAAOgEAAFQAAAAEAAAAOwEAANwCAADdAgAA3gIAAN8CAAA6AQAAVAAAAAQAAAA7AQAA3AIAAN0CAADeAgAA3wIAANwCAAA6AQAAVAAAAAQAAAA7AQAA3AIAAN0CAADeAgAA3wIAANwCAADcAgAA3QIAADoBAABUAAAABAAAAOACAADhAgAA4gIAAOMCAADkAgAA5QIAANICAADTAgAA1AIAANUCAADWAgAA1wIAANgCAADZAgAA2gIAANsCAABc1RAAOwEAAAypEADcAgAA3QIAAN4CAADfAgAAkNUQANwCAACw1RAA3AIAAN0CAADU1RAA5gIAAOcCAADoAgAA6QIAAOoCAADrAgAA7AIAADUAAADtAgAA7gIAAH0BAAAsAgAAOQIAAIEBAACBAQAA3wEAAFsCAADvAgAALgEAAGAAAAAEAAAA8AIAAPECAADyAgAA8wIAAC4BAABgAAAABAAAAPACAADxAgAA8gIAAPMCAAD0AgAAfwEAAAAAAAAIAAAABAAAAPUCAAD2AgAA9wIAAPgCAAD5AgAA+gIAAPsCAAD8AgAA/QIAAP4CAAAAAAAACAAAAAQAAAAbAQAA/wIAAAADAAABAwAAAgMAAAAAAAAIAAAABAAAABsBAAD/AgAAAAMAAAEDAAACAwAA/wIAAAAAAAAIAAAABAAAABsBAAD/AgAAAAMAAAEDAAACAwAA/wIAAP8CAAAAAwAAAAAAAAgAAAAEAAAAAwMAAAQDAAAFAwAABgMAAAcDAAAIAwAA9QIAAPYCAAD3AgAA+AIAAPkCAAD6AgAA+wIAAPwCAAD9AgAA/gIAAAjXEAAbAQAAzKcQAP8CAAAAAwAAAQMAAAIDAAA81xAA/wIAAFzXEAD/AgAAAAMAAIDXEAAJAwAACgMAAAsDAAAMAwAADQMAAA4DAAAPAwAAEAMAABEDAAASAwAAEwMAAH4BAAB/AQAAFAMAAIEBAAAVAwAAWwIAABYDAAAAAAAACAAAAAQAAAAXAwAAGAMAABkDAAAaAwAAAAAAAAgAAAAEAAAAFwMAABgDAAAZAwAAGgMAABsDAAA5AgAAAAAAAAgAAAAEAAAAHAMAAB0DAAAeAwAAHwMAACADAAAhAwAAIgMAACMDAAAkAwAAJQMAAAAAAAAIAAAABAAAADkBAAAmAwAAJwMAACgDAAApAwAAAAAAAAgAAAAEAAAAOQEAACYDAAAnAwAAKAMAACkDAAAmAwAAAAAAAAgAAAAEAAAAOQEAACYDAAAnAwAAKAMAACkDAAAmAwAAJgMAACcDAAAAAAAACAAAAAQAAAAqAwAAKwMAACwDAAAtAwAALgMAAC8DAAAcAwAAHQMAAB4DAAAfAwAAIAMAACEDAAAiAwAAIwMAACQDAAAlAwAAtNgQADkBAAD8qBAAJgMAACcDAAAoAwAAKQMAAOjYEAAmAwAACNkQACYDAAAnAwAALNkQADADAAAKAwAAMQMAADIDAAAzAwAANAMAAA8DAAA1AwAANgMAADcDAAATAwAAOAMAAH8BAAA5AwAAgQEAADoDAABbAgAAOwMAAGFzc2VydGlvbiBmYWlsZWQ6IGFwZXhfaGFsZl9hbmdsZSA+PSAwLjAoPBAAZwAAALUFAAAJAAAAAAAAAAgAAAAEAAAAPAMAAD0DAAA+AwAAPwMAAAAAAAAIAAAABAAAADwDAAA9AwAAPgMAAD8DAABAAwAAOQIAAAAAAAAMAAAABAAAAEEDAABCAwAAQwMAAEQDAABFAwAARgMAAEcDAABIAwAASQMAAEoDAAAAAAAADAAAAAQAAAAxAQAASwMAAEwDAABNAwAATgMAAAAAAAAMAAAABAAAADEBAABLAwAATAMAAE0DAABOAwAASwMAAAAAAAAMAAAABAAAADEBAABLAwAATAMAAE0DAABOAwAASwMAAEsDAABMAwAAAAAAAAwAAAAEAAAATwMAAFADAABRAwAAUgMAAFMDAABUAwAAQQMAAEIDAABDAwAARAMAAEUDAABGAwAARwMAAEgDAABJAwAASgMAAJjaEAAxAQAArKgQAEsDAABMAwAATQMAAE4DAADM2hAASwMAAOzaEABLAwAATAMAABDbEABVAwAAVgMAAFcDAABYAwAAWQMAAFoDAABbAwAANQAAAFwDAABdAwAAXgMAAN0BAAB/AQAAgQEAAIEBAADfAQAAWwIAAF8DAAAcAQAAcAAAAAgAAABgAwAAYQMAAGIDAABjAwAAZAMAAGUDAABmAwAAZwMAAGgDAABpAwAAHAEAAHAAAAAIAAAAHQEAAGoDAABrAwAAbAMAAG0DAAAcAQAAcAAAAAgAAAAdAQAAagMAAGsDAABsAwAAbQMAAGoDAAAcAQAAcAAAAAgAAAAdAQAAagMAAGsDAABsAwAAbQMAAGoDAABqAwAAawMAABwBAABwAAAACAAAAG4DAABvAwAAcAMAAHEDAAByAwAAcwMAAGADAABhAwAAYgMAAGMDAABkAwAAZQMAAGYDAABnAwAAaAMAAGkDAAAE3BAAHQEAANynEABqAwAAawMAAGwDAABtAwAAONwQAGoDAABY3BAAagMAAGsDAAB83BAAdAMAAHUDAAB2AwAAdwMAAHgDAAB5AwAAegMAAHsDAAB8AwAAfQMAAH4DAAB/AwAAgAMAAIEDAACBAwAAggMAAIMDAACEAwAA70MQAGoAAAB9AAAAMwAAAO9DEABqAAAAgwAAABoAAAAFJBAAcwAAAFgAAAAJAAAABSQQAHMAAABiAgAAOwAAAAUkEABzAAAAYgIAACYAAAAFJBAAcwAAAGQCAAAVAAAABSQQAHMAAABoAgAAJgAAAAUkEABzAAAAZwIAABUAAAAFJBAAcwAAAEgCAAArAAAABSQQAHMAAABJAgAAGQAAAAUkEABzAAAA7gEAAB4AAAAFJBAAcwAAAPcBAAArAAAABSQQAHMAAAD4AQAALgAAAAUkEABzAAAAAwIAACgAAAAFJBAAcwAAACYCAAAjAAAABSQQAHMAAAANAgAAJgAAAAUkEABzAAAADgIAADMAAAAFJBAAcwAAAA8CAAA2AAAABSQQAHMAAAAZAgAALgAAAGFzc2VydGlvbiBmYWlsZWQ6IHRyaWFuZ2xlc1tjdXJyX3RyaWFuZ2xlXS52ZXJ0aWNlc1tjdXJyX2VkZ2VfaWRdID09IGN1cnJfdmVydGV4BSQQAHMAAAAaAgAAIQAAAAUkEABzAAAAzwEAABgAAAAFJBAAcwAAANABAAAYAAAABSQQAHMAAADRAQAAGAAAAAUkEABzAAAA2wEAABcAAAAFJBAAcwAAALEBAAAuAAAABSQQAHMAAADAAQAAIwAAAAUkEABzAAAAwAEAAD4AAAAFJBAAcwAAAMQBAAAfAAAABSQQAHMAAAB8AwAAJAAAAAUkEABzAAAAigMAADMAAAAFJBAAcwAAAIsDAAAjAAAABSQQAHMAAACAAwAAMwAAAAUkEABzAAAAgQMAACMAAAAFJBAAcwAAAKgDAAAsAAAABSQQAHMAAACtAwAANgAAAAUkEABzAAAArgMAACoAAAAFJBAAcwAAAKEDAAAnAAAABSQQAHMAAACjAwAAIAAAAAUkEABzAAAApAMAACYAAAAFJBAAcwAAAJ8DAAAzAAAAFAcQAHsAAAAYAAAABQAAAAUkEABzAAAAwgMAACYAAAAFJBAAcwAAAM0DAAAfAAAABSQQAHMAAADTAwAAOQAAAAUkEABzAAAA1QMAACgAAAAFJBAAcwAAANgDAAAyAAAAYXNzZXJ0aW9uIGZhaWxlZDogaGFsZl9oZWlnaHQuaXNfc2lnbl9wb3NpdGl2ZSgpICYmIHJhZGl1cy5pc19zaWduX3Bvc2l0aXZlKCkAAAD3HBAAagAAAHkAAAAJAAAAQSBoZWlnaHRmaWVsZCBoZWlnaHRzIG11c3QgaGF2ZSBhdCBsZWFzdCAyIHJvd3MgYW5kIGNvbHVtbnMuAOEQADwAAADJUhAAbgAAAFwAAAAJAAAAyVIQAG4AAACUAAAAEQAAAMlSEABuAAAAWQEAACEAAADJUhAAbgAAAGsBAAAfAAAAyVIQAG4AAABsAQAAHwAAAMlSEABuAAAAbQEAAB8AAADJUhAAbgAAAKMBAAAlAAAAyVIQAG4AAADeAQAAPgAAAMlSEABuAAAAzwEAAD4AAADJUhAAbgAAAF8CAAAfAAAAyVIQAG4AAABjAgAAKwAAAMlSEABuAAAAYQIAACsAAADJUhAAbgAAAGgCAAAnAAAAyVIQAG4AAABmAgAAJwAAAMlSEABuAAAAdgIAAB8AAADJUhAAbgAAAIQCAAApAAAAyVIQAG4AAAB9AgAAKQAAAMlSEABuAAAAkwIAACUAAADJUhAAbgAAAIwCAAAlAAAAyVIQAG4AAADMAgAAKQAAAMlSEABuAAAA2AIAACcAAADJUhAAbgAAANkCAAAnAAAAyVIQAG4AAADaAgAAJwAAALROEAB1AAAAnwAAACEAAAC0ThAAdQAAALsAAAAdAAAAtE4QAHUAAADEAAAAHQAAALROEAB1AAAAuAAAABYAAAC0ThAAdQAAABQBAAAeAAAAtE4QAHUAAAAWAQAAOgAAALROEAB1AAAAKgEAACUAAAC0ThAAdQAAABkBAAApAAAAtE4QAHUAAAA+AQAAHgAAALROEAB1AAAAQAEAADoAAAC0ThAAdQAAAFQBAAAlAAAAtE4QAHUAAABDAQAAKQAAALROEAB1AAAAZAEAABEAAAC0ThAAdQAAAGUBAAARAAAAtE4QAHUAAABqAQAAFQAAALROEAB1AAAAawEAABUAAAC0ThAAdQAAAHkBAAApAAAAkjEQAGkAAACKBAAAHgAAAJIxEABpAAAAiwQAAB4AAACSMRAAaQAAAIwEAAAeAAAAkjEQAGkAAADpBAAAIAAAAJIxEABpAAAA6gQAAB8AAACSMRAAaQAAACAFAAAWAAAAkjEQAGkAAAABBQAAHwAAAJIxEABpAAAABwUAAB8AAACSMRAAaQAAAA0FAAAfAAAAkjEQAGkAAAAbBQAAIQAAAJIxEABpAAAAGAUAACUAAACSMRAAaQAAAPkEAAAeAAAAkjEQAGkAAABFBQAAKgAAAJIxEABpAAAATAUAABEAAACSMRAAaQAAAE0FAAARAAAAkjEQAGkAAABOBQAAEQAAAJIxEABpAAAAVgUAACcAAACSMRAAaQAAAFcFAAAnAAAAkjEQAGkAAABYBQAAJwAAAJIxEABpAAAA5QUAACgAAACSMRAAaQAAAOYFAAAoAAAAkjEQAGkAAADbBQAAHAAAAJIxEABpAAAAygUAACUAAACSMRAAaQAAANMFAAA3AAAAkjEQAGkAAADYBQAAIgAAAJIxEABpAAAACAYAAB8AAACSMRAAaQAAAAoGAAAjAAAAkjEQAGkAAAALBgAAIQAAAJIxEABpAAAADAYAACEAAACSMRAAaQAAAEIGAABAAAAAkjEQAGkAAABDBgAAGgAAAJIxEABpAAAAOgYAACAAAACSMRAAaQAAADoGAAATAAAAkjEQAGkAAAApBgAANwAAAJIxEABpAAAAKwYAAB8AAACSMRAAaQAAAC0GAAAYAAAAkjEQAGkAAAAyBgAAEwAAAEludEtleQAAkjEQAGkAAAAPBgAAHQAAAJIxEABpAAAAnwYAABsAAACSMRAAaQAAAGkHAAAfAAAAkjEQAGkAAABrBwAAGgAAAJIxEABpAAAAbAcAABoAAACSMRAAaQAAAG0HAAAaAAAAkjEQAGkAAAB7BwAASgAAAD1NEABsAAAA7AEAAAkAAAA9TRAAbAAAAAYCAAAJAAAAPU0QAGwAAAAdAgAACQAAAAAAAAAoAAAABAAAAIUDAACGAwAAhwMAAIgDAACJAwAAigMAAIsDAACMAwAAjQMAAI4DAAAAAAAAKAAAAAQAAAAZAQAAjwMAAJADAACRAwAAkgMAAAAAAAAoAAAABAAAABkBAACPAwAAkAMAAJEDAACSAwAAjwMAAAAAAAAoAAAABAAAABkBAACPAwAAkAMAAJEDAACSAwAAjwMAAI8DAACQAwAAAAAAACgAAAAEAAAAkwMAAJQDAACVAwAAlgMAAJcDAACYAwAAhQMAAIYDAACHAwAAiAMAAIkDAACKAwAAiwMAAIwDAACNAwAAjgMAALzmEAAZAQAArKcQAI8DAACQAwAAkQMAAJIDAADw5hAAjwMAABDnEACPAwAAkAMAADTnEACZAwAAmgMAAJsDAACcAwAAnQMAAJ4DAACfAwAANQAAAKADAAChAwAAogMAAH4BAAB/AQAAowMAAIEBAACkAwAAWwIAAKUDAAAAAAAADAAAAAQAAACmAwAApwMAAKgDAACpAwAAqgMAAKsDAACsAwAArQMAAK4DAACvAwAAAAAAAAwAAAAEAAAAHwEAALADAACxAwAAsgMAALMDAAAAAAAADAAAAAQAAAAfAQAAsAMAALEDAACyAwAAswMAALADAAAAAAAADAAAAAQAAAAfAQAAsAMAALEDAACyAwAAswMAALADAACwAwAAsQMAAAAAAAAMAAAABAAAALQDAAC1AwAAtgMAALcDAAC4AwAAuQMAAKYDAACnAwAAqAMAAKkDAACqAwAAqwMAAKwDAACtAwAArgMAAK8DAAAo6BAAHwEAAPynEACwAwAAsQMAALIDAACzAwAAXOgQALADAAB86BAAsAMAALEDAACg6BAAugMAALsDAAC8AwAAvQMAAL4DAAC/AwAAwAMAAMEDAADCAwAAwwMAAMQDAADFAwAAfwEAAMYDAACBAQAAxwMAAFsCAADIAwAAAAAAAAwAAAAEAAAAyQMAAMoDAADLAwAAzAMAAM0DAADOAwAAzwMAANADAADRAwAA0gMAAAAAAAAMAAAABAAAABoBAADTAwAA1AMAANUDAADWAwAAAAAAAAwAAAAEAAAAGgEAANMDAADUAwAA1QMAANYDAADTAwAAAAAAAAwAAAAEAAAAGgEAANMDAADUAwAA1QMAANYDAADTAwAA0wMAANQDAAAAAAAADAAAAAQAAADXAwAA2AMAANkDAADaAwAA2wMAANwDAADJAwAAygMAAMsDAADMAwAAzQMAAM4DAADPAwAA0AMAANEDAADSAwAAlOkQABoBAAC8pxAA0wMAANQDAADVAwAA1gMAAMjpEADTAwAA6OkQANMDAADUAwAADOoQAN0DAAC7AwAA3gMAAN8DAADgAwAA4QMAAMADAADiAwAA4wMAAOQDAADEAwAAfgEAAH8BAADlAwAAgQEAAOYDAABbAgAA5wMAACQBAABkAAAABAAAAOgDAADpAwAA6gMAAOsDAADsAwAA7QMAAO4DAADvAwAA8AMAAPEDAAAkAQAAZAAAAAQAAAAlAQAA8gMAAPMDAAD0AwAA9QMAACQBAABkAAAABAAAACUBAADyAwAA8wMAAPQDAAD1AwAA8gMAACQBAABkAAAABAAAACUBAADyAwAA8wMAAPQDAAD1AwAA8gMAAPIDAADzAwAAJAEAAGQAAAAEAAAA9gMAAPcDAAD4AwAA+QMAAPoDAAD7AwAA6AMAAOkDAADqAwAA6wMAAOwDAADtAwAA7gMAAO8DAADwAwAA8QMAAADrEAAlAQAALKgQAPIDAADzAwAA9AMAAPUDAAA06xAA8gMAAFTrEADyAwAA8wMAAHjrEAD8AwAA/QMAAP4DAAD/AwAAAAQAAAEEAAACBAAAAwQAAAQEAAAFBAAABgQAACwCAAB/AQAABwQAAIEBAAAIBAAAWwIAAAkEAAAAAAAAEAAAAAQAAAAKBAAACwQAAAwEAAANBAAADgQAAA8EAAAQBAAAEQQAABIEAAATBAAAAAAAABAAAAAEAAAALQEAABQEAAAVBAAAFgQAABcEAAAAAAAAEAAAAAQAAAAtAQAAFAQAABUEAAAWBAAAFwQAABQEAAAAAAAAEAAAAAQAAAAtAQAAFAQAABUEAAAWBAAAFwQAABQEAAAUBAAAFQQAAAAAAAAQAAAABAAAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAAoEAAALBAAADAQAAA0EAAAOBAAADwQAABAEAAARBAAAEgQAABMEAABs7BAALQEAAHyoEAAUBAAAFQQAABYEAAAXBAAAoOwQABQEAADA7BAAFAQAABUEAADk7BAAHgQAAB8EAAAgBAAAIQQAACIEAAAjBAAAJAQAACUEAAAmBAAAJwQAACgEAAB+AQAAfwEAACkEAACBAQAAKgQAAFsCAAArBAAAjTsQAG4AAACTAAAAIwAAANEUEABvAAAA+AAAAAkAAAD/AJkAZgBVADMAEQAiABEAzACIAEQARACqAIgAIgAwAA8ACQAGAAUAAwABAAIAAQAMAAgABAAEAAoACAACACAA8ACQAGAAUAAwABAAIAAQAMAAgABAAEAAoACAACAAEAAADwAJAAYMAAADAAEAAggAAAwACAAEBAADAAIAAQD//wAAAABJkiQAkRIpAEqkRACSJEkAyZZsANEXfQDKruwA0i/9AFuyJQC7sisAX/RFAL/0SwDbtm0A+7d/AN/+7QD///8ASUKSAJFCmwBKZNIAkmTbAMlGtgDRR6MAym4WANJvAwBb0pIAu1KYAF+E0gC/BNgA29a2APtXoADfjhYA/w8AACSZJAC0GSkAJq1EALYtSQBkm2wANBp9AGah7AA2IP0ALbklAIW5KwAo/UUAgP1LAG27bQAFun8AaPHtAADw/wAkSZIAtEmbACZt0gC2bdsAZEu2ADRKowBmYRYANmADAC3ZkgCFWZgAKI3SAIAN2ABt27YABVqgAGiBFgBBgN/DAAuRINEUEABvAAAAAQEAAAkAAADRFBAAbwAAAFECAAAaAAAA0RQQAG8AAABRAgAADQAAANEUEABvAAAATAIAAB8AAADRFBAAbwAAAE0CAAAjAAAA0RQQAG8AAAD/AgAAIQAAANEUEABvAAAAAAMAACIAAADRFBAAbwAAACkDAAAZAAAA0RQQAG8AAAApAwAADgAAAP///3////9/////f4gtEAB1AAAAvgAAAA4AAACILRAAdQAAACsBAAAhAAAA8yQQAHcAAACOAAAAHwAAAPMkEAB3AAAAjgAAABQAAADzJBAAdwAAAJoAAAAYAAAA8yQQAHcAAAClAAAAIgAAAPMkEAB3AAAApgAAACAAAADzJBAAdwAAAIcAAAAcAAAA8yQQAHcAAACCAAAAHQAAAPMkEAB3AAAAgwAAACEAAABNRhAAfAAAABwAAAAyAAAATUYQAHwAAAAcAAAAJwAAAE1GEAB8AAAAKAAAADMAAABNRhAAfAAAACgAAAAoAAAATUYQAHwAAAA/AAAAHAAAAE1GEAB8AAAASgAAABcAAABNRhAAfAAAAEoAAAAMAAAATUYQAHwAAABaAAAAIAAAAE1GEAB8AAAAWgAAABUAAABNRhAAfAAAAF8AAAAgAAAATUYQAHwAAABfAAAAFQAAAE1GEAB8AAAAfQAAABgAAABNRhAAfAAAAH0AAAANAAAATUYQAHwAAACzAAAAOwAAAE1GEAB8AAAAswAAADAAAABNRhAAfAAAALcAAAA8AAAATUYQAHwAAAC3AAAAMAAAAKNTEAB3AAAAPQAAABQAAACjUxAAdwAAAEQAAAAdAAAAo1MQAHcAAABHAAAAEQAAAKNTEAB3AAAAHgAAABUAAACjUxAAdwAAAFwAAAA2AAAAo1MQAHcAAABiAAAALAAAAKNTEAB3AAAAZAAAABQAAACjUxAAdwAAAGQAAAAhAAAARmFpbGVkIHRvIGJ1aWxkIHRoZSAyZCBjb252ZXggaHVsbCBvZiB0aGlzIHBvaW50IGNsb3VkLgBM8hAANwAAAKNTEAB3AAAAawAAAAUAAACjUxAAdwAAAIMAAAAJAAAAo1MQAHcAAACEAAAACQAAAKNTEAB3AAAAfwAAABkAAACjUxAAdwAAAHwAAAAfAAAAo1MQAHcAAAB6AAAAHwAAAKNTEAB3AAAAlAAAABsAAACjUxAAdwAAAJUAAAAbAAAAo1MQAHcAAAC6AAAADgAAAKNTEAB3AAAAuwAAAA4AAACjUxAAdwAAAK8AAAAxAAAAo1MQAHcAAACzAAAAJwAAAKNTEAB3AAAAsAAAACcAAACjUxAAdwAAAKYAAAAnAAAAo1MQAHcAAACkAAAAJwAAAKNTEAB3AAAA0AAAABQAAACjUxAAdwAAANAAAAAhAAAAo1MQAHcAAADhAAAAEwAAAKNTEAB3AAAA4gAAABMAAABiKhAAgwAAAIwAAAAWAAAAYioQAIMAAACcAAAAHAAAAGIqEACDAAAAzwAAABoAAABiKhAAgwAAAOsAAAARAAAASW50ZXJuYWwgZXJyb3I6IGV4aXRpbmcgYW4gdW5maW5pc2hlZCB3b3JrLgBiKhAAgwAAAMIAAAArAAAAYioQAIMAAAADAQAACAAAAGIqEACDAAAACwEAACAAAABiKhAAgwAAAA4BAAAcAAAAYioQAIMAAAAxAQAAGQAAAGIqEACDAAAARwEAAB0AAABiKhAAgwAAAEcBAAAWAAAAYioQAIMAAABIAQAAFgAAAGIqEACDAAAAUQEAAC8AAABiKhAAgwAAAFIBAAAaAAAAYioQAIMAAABSAQAAGQAAAGIqEACDAAAAYgEAAB4AAABiKhAAgwAAAGgBAAAeAAAAYioQAIMAAABpAQAAIQAAAGIqEACDAAAAcgEAACQAAABiKhAAgwAAAHUBAAAkAAAAYioQAIMAAAA4AQAAEQAAAGIqEACDAAAAOQEAABIAAABiKhAAgwAAAE4BAAAkAAAAYioQAIMAAACTAQAAGgAAAGIqEACDAAAA5AEAACwAAABiKhAAgwAAAPIBAAAXAAAAYioQAIMAAADBAQAAJwAAAGIqEACDAAAAwgEAABAAAABiKhAAgwAAAMIBAAAqAAAAYioQAIMAAADUAQAANAAAAGIqEACDAAAAuAEAABMAAABiKhAAgwAAALkBAAAlAAAAYioQAIMAAAC5AQAAHAAAAGIqEACDAAAAuQEAABsAAABhc3NlcnRpb24gZmFpbGVkOiAhdHJpYW5nbGVzW3RyaWFuZ2xlc1ttaWRkbGVfZmFjZXRdLmFkalttaWRkbGVfaWRdXS52YWxpZAAAYioQAIMAAAC5AQAACQAAAGIqEACDAAAApQEAABYAAABiKhAAgwAAAKkBAAAUAAAA/DEQAIQAAABuAAAAJwAAAPwxEACEAAAAfQAAACEAAAD8MRAAhAAAAIgAAAAbAAAA/DEQAIQAAACAAAAAGwAAAPwxEACEAAAAcQAAACEAAAD8MRAAhAAAALkAAAA4AAAA/DEQAIQAAAC6AAAAOAAAAPwxEACEAAAA0AAAACUAAABubyB0cmlhbmdsZSBmb3VuZC4AAPwxEACEAAAAoAAAACMAAAD8MRAAhAAAAKAAAAA6AAAA/DEQAIQAAAB8AAAAMgAAABMQEACGAAAAFgAAABQAAAATEBAAhgAAABYAAAAhAAAAExAQAIYAAAAXAAAAFAAAAGFzc2VydGlvbiBmYWlsZWQ6IGRpc3RhbmNlID4gY3JhdGU6Om1hdGg6OkRFRkFVTFRfRVBTSUxPTgAAABMQEACGAAAAKwAAAAkAAAATEBAAhgAAADIAAAAdAAAAExAQAIYAAAA2AAAAGwAAABMQEACGAAAANgAAACsAAAATEBAAhgAAAEwAAAAJAAAAExAQAIYAAABZAAAAEgAAABMQEACGAAAAWgAAABIAAAATEBAAhgAAAHEAAAAWAAAAExAQAIYAAAByAAAAFgAAAPonEACCAAAACgAAABIAAAD6JxAAggAAABMAAAAUAAAA+icQAIIAAAATAAAACQAAAPonEACCAAAAFAAAAAkAAAD6JxAAggAAABUAAAAJAAAA+icQAIIAAAAZAAAACQAAAPonEACCAAAADQAAABEAAABhc3NlcnRpb24gZmFpbGVkOiBmYWNldHNbZmFjZXQuYWRqW2ldXS52YWxpZPonEACCAAAADQAAAAkAAAB1EhAAfAAAAHYAAAAiAAAAdRIQAHwAAAC2AAAAIgAAAKw+EACFAAAAHAAAABQAAACsPhAAhQAAACAAAAAUAAAArD4QAIUAAAA6AAAAEQAAAKw+EACFAAAAPgAAABEAAAC+PxAAiAAAAB0AAAAIAAAAAAAAAAEAAAAAAAAAAgAAADI/EACLAAAAHwAAABEAAAAyPxAAiwAAACEAAAARAAAAMj8QAIsAAAAiAAAAEQAAADI/EACLAAAAJAAAABEAAAATPhAAmAAAADEAAAAaAAAAEz4QAJgAAAAjAAAANAAAABM+EACYAAAAKwAAABUAAAATPhAAmAAAACgAAAAZAAAAEz4QAJgAAAAkAAAAHgAAABM+EACYAAAAJAAAABkAAAATPhAAmAAAABAAAAAaAAAAEz4QAJgAAAATAAAAOAAAABM+EACYAAAAFgAAABwAAAATPhAAmAAAABcAAAAZAAAAR0AQAI0AAAAdAAAAEQAAAEdAEACNAAAAHgAAABEAAABHQBAAjQAAAB8AAAARAAAAR0AQAI0AAAAgAAAAEQAAAIM9EACPAAAAHQAAABEAAACDPRAAjwAAAB8AAAARAAAAgz0QAI8AAAAgAAAAEQAAAIM9EACPAAAAIgAAABEAAAD7PBAAhwAAAA0AAAAUAAAA+zwQAIcAAAAOAAAAFAAAAAAAAAABAAAAAQAAAAIAAAADAAAAAgAAAAAAAAADAAAABAAAAAUAAAAFAAAABgAAAAcAAAAGAAAABAAAAAcAAAAAAAAABAAAAAEAAAAFAAAAAgAAAAYAAAADAAAABwAAAPs8EACHAAAAJwAAAC4AAAD7PBAAhwAAACgAAAAuAAAA+zwQAIcAAAA0AAAALgAAAPs8EACHAAAANQAAAC4AAACGMBAAhQAAABsAAAAMAAAAhjAQAIUAAAAoAAAADAAAAIYwEACFAAAAWgAAAAwAAAAMMRAAhQAAACEAAAAMAAAA8y8QAJIAAAAOAAAAHAAAAPMvEACSAAAAEAAAADMAAADzLxAAkgAAABEAAAAZAAAAaS8QAIkAAAAwAAAALAAAAGkTEABwAAAATgEAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBuc3ViZGl2ID4gMAAAAGkTEABwAAAA8QEAAAUAAABpExAAcAAAAAUCAAAJAAAAaRMQAHAAAAARAgAABQAAAGkTEABwAAAAFAIAAA0AAABpExAAcAAAAB8CAAANAAAAaRMQAHAAAABGAgAACQAAAGkTEABwAAAARwIAAAkAAABpExAAcAAAAHECAAANAAAAaRMQAHAAAACNAgAAEAAAAGkTEABwAAAAjgIAABAAAABhc3NlcnRpb24gZmFpbGVkOiBuc3ViZGl2cyA+IDAAAGkTEABwAAAAwgIAAAUAAABpExAAcAAAAN8CAAAVAAAAaRMQAHAAAADsAgAADQAAAGkTEABwAAAA8AIAAA0AAABpExAAcAAAAO4CAAARAAAAaRMQAHAAAADqAgAADQAAAGkTEABwAAAAMAMAAB0AAABpExAAcAAAABsDAAAVAAAAaRMQAHAAAAAnAwAAFQAAAGkTEABwAAAAIwMAABUAAABpExAAcAAAAB8DAAAnAAAAaRMQAHAAAAAfAwAAFQAAAGkTEABwAAAACQMAABEAAABDYW5ub3QgY29tcHV0ZSB0aGUgY2VudGVyIG9mIGxlc3MgdGhhbiAxIHBvaW50LgDQ/RAALwAAAPEZEABoAAAAUwAAAAUAAADHHhAAaQAAAB4AAAARAAAAxx4QAGkAAAAfAAAAEQAAAMceEABpAAAAIAAAABEAAADHHhAAaQAAABQAAAANAAAAxx4QAGkAAAAWAAAADQAAAMceEABpAAAADQAAAAkAAADHHhAAaQAAAA4AAAAJAAAAxx4QAGkAAAAPAAAACQAAABQHEAB7AAAABwAAABgAAAAkIxAAaQAAAEgCAAAZAAAAUzYQAHsAAAAAAgAACQAAAAAAAAAQAAAABAAAACwEAAAtBAAALgQAAC8EAAAAAAAAKAAAAAQAAAAwBAAAMQQAADIEAAAzBAAAAAAAAAwAAAAEAAAANAQAADUEAAA2BAAANwQAAAAAAAAMAAAABAAAADgEAAA5BAAAOgQAADsEAAAkAQAAZAAAAAQAAAA8BAAAPQQAAD4EAAA/BAAAMAAAAEAAAAA0AAAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd2D/EAAcAAAAV0cQAGUAAAAlAAAAKABBnP/DAAulCgEAAABABAAAQQQAAEIEAAAAAAAACAAAAAQAAABJBAAASgQAAEsEAABieXRlIGFycmF5Ym9vbGVhbiBgYM7/EAAJAAAA1/8QAAEAAABpbnRlZ2VyIGAAAADo/xAACQAAANf/EAABAAAAZmxvYXRpbmcgcG9pbnQgYAQAEQAQAAAA1/8QAAEAAABjaGFyYWN0ZXIgYAAkABEACwAAANf/EAABAAAAc3RyaW5nIABAABEABwAAAHVuaXQgdmFsdWVPcHRpb24gdmFsdWVuZXd0eXBlIHN0cnVjdHNlcXVlbmNlbWFwZW51bXVuaXQgdmFyaWFudG5ld3R5cGUgdmFyaWFudHR1cGxlIHZhcmlhbnRzdHJ1Y3QgdmFyaWFudAAAAAEAAAAAAAAALjB1c2l6ZQBtXcvWLFDrY3hBpldxG4u5CQZmgQHzuVSiCC9Dgld0MgAAAAAEAAAABAAAAE0EAABvdmVyZmxvdyBpbiBEdXJhdGlvbjo6bmV3AAAAgEIQAEgAAADJAAAAEgAAAAAAAAAEAAAABAAAAE4EAABpSRAAUAAAAC4CAAARAAAAAAAAAAQAAAAEAAAATwQAAAAAAAAEAAAABAAAAFAEAABOdWxFcnJvclEEAAAMAAAABAAAAFIEAABTBAAAVAQAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAACpPEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAqTxAAKgAAALcEAAANAAAAdXNlIG9mIHN0ZDo6dGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHBvc3NpYmxlIGFmdGVyIHRoZSB0aHJlYWQncyBsb2NhbCBkYXRhIGhhcyBiZWVuIGRlc3Ryb3llZAAACAIRAF4AAAB3ChAAIQAAAAEBAAAJAAAAZmFpbGVkIHRvIGdlbmVyYXRlIHVuaXF1ZSB0aHJlYWQgSUQ6IGJpdHNwYWNlIGV4aGF1c3RlZACAAhEANwAAAF9IEAAdAAAAvAQAAA0AAABVBAAAEAAAAAQAAABWBAAAdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAX0gQAB0AAAAJBQAAKAAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQAACADEQAVAAAANQMRAA0AAABVTxAAGAAAAGQBAAAJAAAAUQQAAAwAAAAEAAAAVwQAAAAAAAAIAAAABAAAAFgEAAAAAAAACAAAAAQAAABZBAAAWgQAAFsEAABcBAAAXQQAABAAAAAEAAAAXgQAAF8EAABgBAAAYQQAAAAAAAAIAAAABAAAAGIEAABjBAAAZAQAAGEEAAB0aW1lIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtAAAA2AMRACUAAADeQRAAMwAAAA0AAAAJAAAAAEhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3cAAAAZBBEAHAAAACxHEAAqAAAAJQAAACgAAABFcnJvckxheW91dEVycm9yZQQAAAwAAAAEAAAAZgQAAGcEAABoBAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAB4BBEAEQAAAJlJEAAgAAAALgIAABEAAAAtNBAAGwAAAOgBAAAXAAAA7hcQAB4AAABVAQAACwBBzInEAAttAQAAAGkEAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAAeQsQABgAAACKAgAADgBBxIrEAAv4EQEAAABqBAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAyRhAAGgAAAL0BAAAdAAAAbk8QABkAAACDAQAAMgAAAHN3YXBfcmVtb3ZlIGluZGV4IChpcyApIHNob3VsZCBiZSA8IGxlbiAoaXMgKQAAAJgFEQAWAAAArgURABYAAADEBREAAQAAAHJlbW92YWwgaW5kZXggKGlzIAAA4AURABIAAACuBREAFgAAAMQFEQABAAAAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJPBEYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AgAHbQcAYIDwAACaEBAAIQAAAC4AAAAJAAAAwW/yhiMAAACB76yFW0FtLe4EAAABH2q/ZO04bu2Xp9r0+T/pA08YAAE+lS4Jmd8D/TgVDy/kdCPs9c/TCNwExNqwzbwZfzOmAyYf6U4CAAABfC6YW4fTvnKf2diHLxUSxlDea3BuSs8P2JXVbnGyJrBmxq0kNhUdWtNCPA5U/2PAc1XMF+/5ZfIovFX3x9yA3O1u9M7v3F/3UwUAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ID4gMH0oEAAvAAAAdgAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1pbnVzID4gMAAAAH0oEAAvAAAAdwAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLnBsdXMgPiAwfSgQAC8AAAB4AAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBNQVhfU0lHX0RJR0lUUwAAAH0oEAAvAAAAewAAAAUAAAB9KBAALwAAAMIAAAAJAAAAfSgQAC8AAAD7AAAADQAAAH0oEAAvAAAAAgEAABIAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9zdWIoZC5taW51cykuaXNfc29tZSgpAH0oEAAvAAAAegAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBkLm1hbnQuY2hlY2tlZF9hZGQoZC5wbHVzKS5pc19zb21lKCkAAH0oEAAvAAAAeQAAAAUAAAB9KBAALwAAAAsBAAAFAAAAfSgQAC8AAAAMAQAABQAAAH0oEAAvAAAADQEAAAUAAAB9KBAALwAAAHIBAAAkAAAAfSgQAC8AAAB3AQAALwAAAH0oEAAvAAAAhAEAABIAAAB9KBAALwAAAGYBAAANAAAAfSgQAC8AAABMAQAAIgAAAH0oEAAvAAAADwEAAAUAAAB9KBAALwAAAA4BAAAFAAAA30UaPQPPGubB+8z+AAAAAMrGmscX/nCr3PvU/gAAAABP3Ly+/LF3//b73P4AAAAADNZrQe+RVr4R/OT+AAAAADz8f5CtH9CNLPzs/gAAAACDmlUxKFxR00b89P4AAAAAtcmmrY+scZ1h/Pz+AAAAAMuL7iN3Ipzqe/wE/wAAAABtU3hAkUnMrpb8DP8AAAAAV862XXkSPIKx/BT/AAAAADdW+002lBDCy/wc/wAAAABPmEg4b+qWkOb8JP8AAAAAxzqCJcuFdNcA/Sz/AAAAAPSXv5fNz4agG/00/wAAAADlrCoXmAo07zX9PP8AAAAAjrI1KvtnOLJQ/UT/AAAAADs/xtLf1MiEa/1M/wAAAAC6zdMaJ0TdxYX9VP8AAAAAlsklu86fa5Og/Vz/AAAAAISlYn0kbKzbuv1k/wAAAAD22l8NWGaro9X9bP8AAAAAJvHD3pP44vPv/XT/AAAAALiA/6qorbW1Cv58/wAAAACLSnxsBV9ihyX+hP8AAAAAUzDBNGD/vMk//oz/AAAAAFUmupGMhU6WWv6U/wAAAAC9filwJHf533T+nP8AAAAAj7jluJ+936aP/qT/AAAAAJR9dIjPX6n4qf6s/wAAAADPm6iPk3BEucT+tP8AAAAAaxUPv/jwCIrf/rz/AAAAALYxMWVVJbDN+f7E/wAAAACsf3vQxuI/mRT/zP8AAAAABjsrKsQQXOQu/9T/AAAAANOSc2mZJCSqSf/c/wAAAAAOygCD8rWH/WP/5P8AAAAA6xoRkmQI5bx+/+z/AAAAAMyIUG8JzLyMmf/0/wAAAAAsZRniWBe30bP//P8AQcacxAALBUCczv8EAEHUnMQAC8QmEKXU6Oj/DAAAAAAAAABirMXreK0DABQAAAAAAIQJlPh4OT+BHgAcAAAAAACzFQfJe86XwDgAJAAAAAAAcFzqe84yfo9TACwAAAAAAGiA6aukONLVbQA0AAAAAABFIpoXJidPn4gAPAAAAAAAJ/vE1DGiY+2iAEQAAAAAAKityIw4Zd6wvQBMAAAAAADbZasajgjHg9gAVAAAAAAAmh1xQvkdXcTyAFwAAAAAAFjnG6YsaU2SDQFkAAAAAADqjXAaZO4B2icBbAAAAAAASnfvmpmjbaJCAXQAAAAAAIVrfbR7eAnyXAF8AAAAAAB3GN15oeRUtHcBhAAAAAAAwsWbW5KGW4aSAYwAAAAAAD1dlsjFUzXIrAGUAAAAAACzoJf6XLQqlccBnAAAAAAA41+gmb2fRt7hAaQAAAAAACWMOds0wpul/AGsAAAAAABcn5ijcprG9hYCtAAAAAAAzr7pVFO/3LcxArwAAAAAAOJBIvIX8/yITALEAAAAAACleFzTm84gzGYCzAAAAAAA31Mhe/NaFpiBAtQAAAAAADowH5fctaDimwLcAAAAAACWs+NcU9HZqLYC5AAAAAAAPESnpNl8m/vQAuwAAAAAABBEpKdMTHa76wL0AAAAAAAanEC2746riwYD/AAAAAAALIRXphDvH9AgAwQBAAAAACkxkenlpBCbOwMMAQAAAACdDJyh+5sQ51UDFAEAAAAAKfQ7YtkgKKxwAxwBAAAAAIXPp3peS0SAiwMkAQAAAAAt3awDQOQhv6UDLAEAAAAAj/9EXi+cZ47AAzQBAAAAAEG4jJydFzPU2gM8AQAAAACpG+O0ktsZnvUDRAEAAAAA2Xffum6/lusPBEwBAAAAAGYEEAAuAAAAfQAAABUAAABmBBAALgAAAKkAAAAFAAAAZgQQAC4AAACqAAAABQAAAGYEEAAuAAAAqwAAAAUAAABmBBAALgAAAK4AAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50ICsgZC5wbHVzIDwgKDEgPDwgNjEpAAAAZgQQAC4AAACvAAAABQAAAGYEEAAuAAAACgEAABEAAABmBBAALgAAAA0BAAAJAAAAZgQQAC4AAABAAQAACQAAAGYEEAAuAAAArQAAAAUAAABmBBAALgAAAKwAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogIWJ1Zi5pc19lbXB0eSgpAAAAZgQQAC4AAADcAQAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IGQubWFudCA8ICgxIDw8IDYxKWYEEAAuAAAA3QEAAAUAAABmBBAALgAAAN4BAAAFAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaO2YEEAAuAAAAMwIAABEAAABmBBAALgAAADYCAAAJAAAAZgQQAC4AAABsAgAACQAAAGYEEAAuAAAA4wIAACYAAABmBBAALgAAAO8CAAAmAAAAZgQQAC4AAADMAgAAJgAAACxKEAAjAAAAmQAAAA4AAAAsShAAIwAAALcAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogYnVmWzBdID4gYicwJwAsShAAIwAAALgAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogcGFydHMubGVuKCkgPj0gNAAALEoQACMAAAC5AAAABQAAAC4wLgAsShAAIwAAAAYBAAAFAAAALEoQACMAAAAHAQAABQAAAGVFZS1FLS0rTmFOaW5mMDBlMDBFMGFzc2VydGlvbiBmYWlsZWQ6IGJ1Zi5sZW4oKSA+PSBtYXhsZW4AACxKEAAjAAAAegIAAA0AAAAgKDEgPDwgKQEAAAAAAAAAtBMRAAcAAAC7ExEAAQAAAC4uMDEyMzQ1Njc4OWFiY2RlZgAAAQAAAAAAAABbY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWV4cGxpY2l0IHBhbmljAAAcFBEADgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAA0FBEAIAAAAFQUEQASAAAAAAAAAAQAAAAEAAAAcwQAAAAAAAAEAAAABAAAAHQEAAA9PSE9bWF0Y2hlc2Fzc2VydGlvbiBgbGVmdCAgcmlnaHRgIGZhaWxlZAogIGxlZnQ6IAogcmlnaHQ6IACjFBEAEAAAALMUEQAXAAAAyhQRAAkAAAAgcmlnaHRgIGZhaWxlZDogCiAgbGVmdDogAAAAoxQRABAAAADsFBEAEAAAAPwUEQAJAAAAyhQRAAkAAAA6IAAAAQAAAAAAAAAoFREAAgAAAAAAAAAMAAAABAAAAHUEAAB2BAAAdwQAACAgICAgeyAsICB7CiwKfSB9KCgKLApdMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAC9RxAAGwAAADUHAAAfAAAAZmFsc2V0cnVlAAAAvUcQABsAAACvCgAAJgAAAL1HEAAbAAAAuAoAABoAAAB1c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVytBYRAEwAAABsBhAALwAAAFwDAAAFAAAAWy4uLl1iZWdpbiA8PSBlbmQgKCA8PSApIHdoZW4gc2xpY2luZyBgYB0XEQAOAAAAKxcRAAQAAAAvFxEAEAAAAD8XEQABAAAAYnl0ZSBpbmRleCAgaXMgbm90IGEgY2hhciBib3VuZGFyeTsgaXQgaXMgaW5zaWRlICAoYnl0ZXMgKSBvZiBgAGAX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`).buffer)}))}function Hn(){return function(){let e,t;try{let a=n.__wbindgen_add_to_stack_pointer(-16);n.version(a);var r=p().getInt32(a+0,!0),i=p().getInt32(a+4,!0);return e=r,t=i,u(r,i)}finally{n.__wbindgen_add_to_stack_pointer(16),n.__wbindgen_export_1(e,t,1)}}()}function Un(e){var t=e;n.reserve_memory(t)}Q[45]=62,Q[95]=63;var Wn=Object.freeze({__proto__:null,version:Hn,reserveMemory:Un,Vector3:ot,VectorOps:B,Quaternion:st,RotationOps:V,SdpMatrix3:ct,SdpMatrix3Ops:lt,get RigidBodyType(){return H},RigidBody:bt,RigidBodyDesc:xt,RigidBodySet:Ct,IntegrationParameters:wt,get JointType(){return U},get MotorModel(){return ut},get JointAxesMask(){return dt},ImpulseJoint:J,UnitImpulseJoint:Tt,FixedImpulseJoint:Et,RopeImpulseJoint:Dt,SpringImpulseJoint:Ot,PrismaticImpulseJoint:kt,RevoluteImpulseJoint:At,GenericImpulseJoint:jt,SphericalImpulseJoint:Mt,JointData:Nt,ImpulseJointSet:Pt,MultibodyJoint:Y,UnitMultibodyJoint:Ft,FixedMultibodyJoint:It,PrismaticMultibodyJoint:Lt,RevoluteMultibodyJoint:Rt,SphericalMultibodyJoint:zt,MultibodyJointSet:Bt,get CoefficientCombineRule(){return W},CCDSolver:Vt,IslandManager:Ht,BroadPhase:Zt,NarrowPhase:Qt,TempContactManifold:$t,Shape:X,get ShapeType(){return K},get HeightFieldFlags(){return ft},get TriMeshFlags(){return pt},Ball:tn,HalfSpace:nn,Cuboid:rn,RoundCuboid:an,Capsule:on,Segment:sn,Triangle:cn,RoundTriangle:ln,Polyline:un,Voxels:dn,TriMesh:fn,ConvexPolyhedron:pn,RoundConvexPolyhedron:mn,Heightfield:hn,Cylinder:gn,RoundCylinder:_n,Cone:vn,RoundCone:yn,get ActiveCollisionTypes(){return yt},Collider:jn,get MassPropsMode(){return q},ColliderDesc:Mn,ColliderSet:Nn,get FeatureType(){return G},Ray:Ut,RayIntersection:Wt,RayColliderIntersection:Gt,RayColliderHit:Kt,PointProjection:qt,PointColliderProjection:Jt,ShapeCastHit:Yt,ColliderShapeCastHit:Xt,ShapeContact:en,World:On,PhysicsPipeline:bn,SerializationPipeline:xn,get ActiveEvents(){return ht},TempContactForceEvent:kn,EventQueue:An,get ActiveHooks(){return gt},get SolverFlags(){return _t},DebugRenderBuffers:Sn,DebugRenderPipeline:Cn,get QueryFilterFlags(){return vt},init:Vn,CharacterCollision:wn,KinematicCharacterController:Tn,get PidAxesMask(){return mt},PidController:En,DynamicRayCastVehicleController:Dn});export{t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js.gz b/Needle/SampleScene/dist/assets/rapier3d.DBFmcAzL.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4af13c9c6b6bfcb0884f560f7363915a083480a2 GIT binary patch literal 829360 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%0A~Iw?ww1*Vdk;=bf7#{$j&0EO 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%0DEo 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 z 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
H+6=-Z+8z- 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%0Ar&tE*2>BvFyWh^|r%tz?);cX!noQr5FqE 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�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 z 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 TV>m! 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

L(hjA?#kjB>nDqog1o;f!+ek>}Gpe*F=(SNtMR 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 z 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 z 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.touches.length===2){this.isScaling=!0;let t=e.touches[0],n=e.touches[1];this.initialPinchDistance=Math.hypot(n.clientX-t.clientX,n.clientY-t.clientY),this.initialScale.copy(this.gameObject.scale)}};onTouchMove=t=>{if(t.preventDefault(),this.isScaling&&t.touches.length===2){let e=t.touches[0],n=t.touches[1],r=Math.hypot(n.clientX-e.clientX,n.clientY-e.clientY)/this.initialPinchDistance,i=this.initialScale.clone().multiplyScalar(r);this.gameObject.scale.copy(i)}else if(t.touches.length===1&&!this.isScaling){let n=t.touches[0],r=this.context.renderer.domElement.getBoundingClientRect();this.touchPos.set((n.clientX-r.left)/r.width*2-1,-((n.clientY-r.top)/r.height)*2+1),this.raycaster.setFromCamera(this.touchPos,this.context.mainCamera);let i=new e;this.raycaster.ray.intersectPlane(this.plane,i)&&this.gameObject.position.copy(i)}};onTouchEnd=e=>{e.touches.length<2&&(this.isScaling=!1)}};function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var h=new WeakMap,g=class extends l{isMobile=!1;isDesktop=!1;isXR=!1;dishName=``;dishes=[];webXROrigin;dishBobAmplitude=.05;dishBobSpeed=2.5;usdzExporter;arSessionBobPaused=!1;selectedDishIndex=0;onEnable(){if(this.dishName=new URLSearchParams(window.location.search).get(`dishName`)??``,this.webXROrigin&&(this.usdzExporter=this.webXROrigin.getComponent(u)??void 0),this.dishName){let e=!1;this.dishes.forEach((t,n)=>{t&&t.name===this.dishName&&(this.selectedDishIndex=n,e=!0)}),this.dishes.forEach(t=>{if(!t)return;let n=e&&t.name===this.dishName;n||this.restoreDishBaseY(t),s.setActive(t,n)}),e||this.ensureOnlySelectedDishVisible()}else this.ensureOnlySelectedDishVisible();this.updateUSDZExporterTarget(),this.checkForDeviceType().then(()=>{this.isMobile?console.log(`[MenuController] isMobile`):this.isDesktop?this.setupDesktopControls():this.isXR}),this.setupMobileControls(),this.disableDoubleTapZoom()}onEnterXR(e){e.xr.mode===`immersive-ar`&&(this.arSessionBobPaused=!0,this.snapActiveDishToBaseY())}onLeaveXR(e){this.arSessionBobPaused=!1}update(){if(this.arSessionBobPaused||this.dishBobAmplitude<=0||this.getValidDishIndices().length===0)return;let e=this.dishes[this.selectedDishIndex];if(!e)return;let t=h.get(e);t===void 0&&(t=e.position.y,h.set(e,t));let n=this.context.time.time;e.position.y=t+Math.sin(n*this.dishBobSpeed)*this.dishBobAmplitude}async checkForDeviceType(){await this.isXRDevice()?this.isXR=!0:(console.log(`DeviceUtilities.isMobileDevice()`,c.isMobileDevice()),this.isMobile=c.isMobileDevice(),this.isMobile||(this.isDesktop=c.isDesktop()))}async isXRDevice(){if(navigator.xr)try{return await navigator.xr.isSessionSupported(`immersive-vr`)}catch{return console.log(`XR check error!`),!1}return!1}setupMobileControls(){typeof document<`u`&&document.querySelector(`#asset-picker`)||this.createMenuMobileControls()}setupDesktopControls(){}createMenuMobileControls(){let e=document.createElement(`div`);e.id=`menuControlsZone`,e.style.cssText=` + position: absolute; + display: flex; + justify-content: space-between; + bottom: 10%; + left: 10%; + right: 10%; + height: 150px; + `,document.body.appendChild(e);let t=document.createElement(`button`);t.id=`previousButton`,t.style.cssText=` + height: 100px; + width: 100px; + background-color: #ffffff; + color: #111111; + border: none; + border-radius: 50px; + box-shadow: 0 8px 24px rgba(0,0,0,0.25); + display: flex; + align-items: center; + justify-content: center; + touch-action: manipulation; + `,t.setAttribute(`aria-label`,`Previous`),t.innerHTML=` + + + + `,t.onclick=this.selectPreviousDish.bind(this);let n=document.createElement(`button`);n.id=`nextButton`,n.style.cssText=` + height: 100px; + width: 100px; + background-color: #ffffff; + color: #111111; + border: none; + border-radius: 50px; + box-shadow: 0 8px 24px rgba(0,0,0,0.25); + display: flex; + align-items: center; + justify-content: center; + touch-action: manipulation; + `,n.setAttribute(`aria-label`,`Next`),n.innerHTML=` + + + + `,n.onclick=this.selectNextDish.bind(this),this.dishName&&(t.disabled=!0,t.style.display=`none`,n.disabled=!0,n.style.display=`none`),e.appendChild(t),e.appendChild(n)}disableDoubleTapZoom(){let e=0;document.addEventListener(`touchend`,t=>{let n=Date.now();n-e<=300&&t.preventDefault(),e=n},{passive:!1})}getValidDishIndices(){return this.dishes.map((e,t)=>e==null?-1:t).filter(e=>e>=0)}ensureOnlySelectedDishVisible(){let e=this.getValidDishIndices();if(e.length===0)return;let t=this.selectedDishIndex;e.indexOf(t)<0&&(t=e[0],this.selectedDishIndex=t),e.forEach(e=>{let t=e===this.selectedDishIndex,n=this.dishes[e];t||this.restoreDishBaseY(n),s.setActive(this.dishes[e],t)})}restoreDishBaseY(e){if(!e)return;let t=h.get(e);t!==void 0&&(e.position.y=t)}snapActiveDishToBaseY(){this.restoreDishBaseY(this.dishes[this.selectedDishIndex])}getDishSlotCount(){return this.getValidDishIndices().length}getPickerLabel(){let e=this.getValidDishIndices();if(e.length===0)return`Menu`;let t=Math.max(0,e.indexOf(this.selectedDishIndex)),n=this.dishes[this.selectedDishIndex]?.name?.trim();return n?`${n} (${t+1}/${e.length})`:`Dish ${t+1} / ${e.length}`}selectPreviousDish(){let e=this.getValidDishIndices();if(e.length===0)return;let t=e.indexOf(this.selectedDishIndex);t<0&&(t=0),this.restoreDishBaseY(this.dishes[e[t]]),s.setActive(this.dishes[e[t]],!1),t=(t-1+e.length)%e.length,this.selectedDishIndex=e[t],s.setActive(this.dishes[this.selectedDishIndex],!0),this.updateUSDZExporterTarget()}selectNextDish(){let e=this.getValidDishIndices();if(e.length===0)return;let t=e.indexOf(this.selectedDishIndex);t<0&&(t=0),this.restoreDishBaseY(this.dishes[e[t]]),s.setActive(this.dishes[e[t]],!1),t=(t+1)%e.length,this.selectedDishIndex=e[t],s.setActive(this.dishes[this.selectedDishIndex],!0),this.updateUSDZExporterTarget()}updateUSDZExporterTarget(){let e=this.dishes[this.selectedDishIndex];this.usdzExporter&&e&&(this.usdzExporter.objectToExport=e)}getUrlParameter(e){return new URLSearchParams(window.location.search).get(e)}};m([o(r)],g.prototype,`dishes`,void 0),m([o(r)],g.prototype,`webXROrigin`,void 0),m([o()],g.prototype,`dishBobAmplitude`,void 0),m([o()],g.prototype,`dishBobSpeed`,void 0);var _=class extends l{volume;start(){if(!this.volume){console.warn(`No PostProcessVolume assigned`);return}this.volume.addEffect(new d({intensity:3,luminanceThreshold:.2}))}};m([o(f)],_.prototype,`volume`,void 0),a.add(`ARObjectController`,p),a.add(`MenuController`,g),a.add(`PostProcessingVolumeController`,_); \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/register_types.OB5V_DGw.js.gz b/Needle/SampleScene/dist/assets/register_types.OB5V_DGw.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1581fdba129db1163c002bc781eda528d81d9896 GIT binary patch literal 2791 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:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{s as n,l as r,o as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz b/Needle/SampleScene/dist/assets/rolldown-runtime.CYVBeYYp.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f6498208ae87ab14bfd26f4e77abbc957c71bda GIT binary patch literal 417 zcmV;S0bc$eiwFP!000023T;urZrd;n{T1h8NGM_SY)|QB*DVFwTM*QWOuHHsDxm0e zf$e`Ew9IHW>_8CjkreeFFO~~5yW=YS-Hk&u3PH5lsvI)UsFauqf1V>ts;6bq z)gJ(&K~|t4qaX+WuQ?+<`9o{;S^V7+-.9&&(r.visible=!1)),this.axis===`Y`&&(P.setFromEuler(Je.set(0,0,Math.PI/2)),r.quaternion.copy(t).multiply(P),Math.abs(F.copy(R).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Z`&&(P.setFromEuler(Je.set(0,Math.PI/2,0)),r.quaternion.copy(t).multiply(P),Math.abs(F.copy(z).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`XYZE`&&(P.setFromEuler(Je.set(0,Math.PI/2,0)),F.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(Xe.lookAt(Ye,F,R)),r.quaternion.multiply(P),r.visible=this.dragging),this.axis===`E`&&(r.visible=!1)):r.name===`START`?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name===`END`?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name===`DELTA`?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),M.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),M.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(M),r.visible=this.dragging):(r.quaternion.copy(t),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}if(r.quaternion.copy(t),this.mode===`translate`||this.mode===`scale`){let e=.99,n=.2;r.name===`X`&&Math.abs(F.copy(L).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Y`&&Math.abs(F.copy(R).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Z`&&Math.abs(F.copy(z).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XY`&&Math.abs(F.copy(z).applyQuaternion(t).dot(this.eye))Math.PI&&(r-=V),i<-Math.PI?i+=V:i>Math.PI&&(i-=V),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.enableDamping?this._currentScale=p.lerp(this._currentScale,this._scale,this.dampingFactor):this._currentScale=this._scale,this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._currentScale),a=Math.abs(e-this._spherical.radius)>U*100}if(B.setFromSpherical(this._spherical),B.applyQuaternion(this._quatInverse),n.copy(this.target).add(B),this.object.parent?this.object.parent.worldToLocal(n):this.object.position.copy(n),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=B.length();e=this._clampDistance(t*this._currentScale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=Math.abs(n)>U}else if(this.object.isOrthographicCamera){let n=new t(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._currentScale)),this.object.updateProjectionMatrix(),a=Math.abs(r-this.object.zoom)>U;let i=new t(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),e=B.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(ut.origin.copy(this.object.position),ut.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ut.direction))U&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,a||this._lastPosition.distanceToSquared(this.object.position)>U||8*(1-this._lastQuaternion.dot(this.object.quaternion))>U||this._lastTargetPosition.distanceToSquared(this.target)>U?(this.dispatchEvent(ot),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this._lastIsDamping=!0,this._isDamping=!0,!0):(this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),this.state===H.NONE&&(this._lastIsDamping=this._isDamping,this._isDamping=!1),this._lastIsDamping&&!this._isDamping&&this.state===H.NONE&&(this._isDamping=!1,this._lastIsDamping=!1,this.dispatchEvent(lt)),this._performCursorZoom=!1,!1)}_getAutoRotationAngle(e){return e===null?V/60/60*this.autoRotateSpeed:V/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){B.setFromMatrixColumn(t,0),B.multiplyScalar(-e),this._panOffset.add(B)}_panUp(e,t){this.screenSpacePanning===!0?B.setFromMatrixColumn(t,1):(B.setFromMatrixColumn(t,0),B.crossVectors(this.object.up,B)),B.multiplyScalar(e),this._panOffset.add(B)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){this.object.getWorldPosition(B).sub(this.target);let r=B.length();r*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*r/n.clientHeight,this.object.matrixWorld),this._panUp(2*t*r/n.clientHeight,this.object.matrixWorld)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrixWorld),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrixWorld)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(V*this._rotateDelta.x/t.clientHeight),this._rotateUp(V*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateUp(V*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateUp(-V*this.rotateSpeed/this.domElement.clientHeight):this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateLeft(V*this.rotateSpeed/this.domElement.clientHeight):this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this._rotateLeft(-V*this.rotateSpeed/this.domElement.clientHeight):this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(V*this._rotateDelta.x/t.clientHeight),this._rotateUp(V*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t4?n=e.array[i*e.itemSize+t]:(t===0?n=e.getX(i):t===1?n=e.getY(i):t===2?n=e.getZ(i):t===3&&(n=e.getW(i)),e.normalized===!0&&(n=p.normalize(n,e.array))),r.min[t]=Math.min(r.min[t],n),r.max[t]=Math.max(r.max[t],n)}return r}function Kt(e){return Math.ceil(e/4)*4}function qt(e,t=0){let n=Kt(e.byteLength);if(n!==e.byteLength){let r=new Uint8Array(n);if(r.set(new Uint8Array(e)),t!==0)for(let i=e.byteLength;i`u`&&typeof OffscreenCanvas<`u`?new OffscreenCanvas(1,1):document.createElement(`canvas`)}function Yt(e,t){if(e.toBlob!==void 0)return new Promise(n=>e.toBlob(n,t));let n;return t===`image/jpeg`?n=.92:t===`image/webp`&&(n=.8),e.convertToBlob({type:t,quality:n})}var Xt=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:`2.0`,generator:`THREE.GLTFExporter r`+o}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}async write(e,t,n={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},n),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),await Promise.all(this.pending);let r=this,i=r.buffers,a=r.json;n=r.options;let o=r.extensionsUsed,s=r.extensionsRequired,c=new Blob(i,{type:`application/octet-stream`}),l=Object.keys(o),u=Object.keys(s);if(l.length>0&&(a.extensionsUsed=l),u.length>0&&(a.extensionsRequired=u),a.buffers&&a.buffers.length>0&&(a.buffers[0].byteLength=c.size),n.binary===!0){let e=new FileReader;e.readAsArrayBuffer(c),e.onloadend=function(){let n=qt(e.result),r=new DataView(new ArrayBuffer(zt));r.setUint32(0,n.byteLength,!0),r.setUint32(4,Vt,!0);let i=qt(Ut(JSON.stringify(a)),32),o=new DataView(new ArrayBuffer(zt));o.setUint32(0,i.byteLength,!0),o.setUint32(4,Bt,!0);let s=new ArrayBuffer(It),c=new DataView(s);c.setUint32(0,Lt,!0),c.setUint32(4,Rt,!0);let l=It+o.byteLength+i.byteLength+r.byteLength+n.byteLength;c.setUint32(8,l,!0);let u=new Blob([s,o,i,r,n],{type:`application/octet-stream`}),d=new FileReader;d.readAsArrayBuffer(u),d.onloadend=function(){t(d.result)}}}else if(a.buffers&&a.buffers.length>0){let e=new FileReader;e.readAsDataURL(c),e.onloadend=function(){let n=e.result;a.buffers[0].uri=n,t(a)}}else t(a)}serializeUserData(e,t){if(Object.keys(e.userData).length===0)return;let n=this.options,r=this.extensionsUsed;try{let i=JSON.parse(JSON.stringify(e.userData));if(n.includeCustomExtensions&&i.gltfExtensions){t.extensions===void 0&&(t.extensions={});for(let e in i.gltfExtensions)t.extensions[e]=i.gltfExtensions[e],r[e]=!0;delete i.gltfExtensions}Object.keys(i).length>0&&(t.extras=i)}catch(t){console.warn(`THREE.GLTFExporter: userData of '`+e.name+`' won't be serialized because of JSON.stringify error - `+t.message)}}getUID(e,t=!1){if(this.uids.has(e)===!1){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let n=new t;for(let t=0,r=e.count;t5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let n=this.cache;if(n.attributesNormalized.has(e))return n.attributesNormalized.get(e);let r=e.clone(),i=new t;for(let e=0,t=r.count;e4?r=e.array[i*e.itemSize+n]:(n===0?r=e.getX(i):n===1?r=e.getY(i):n===2?r=e.getZ(i):n===3&&(r=e.getW(i)),e.normalized===!0&&(r=p.normalize(r,e.array))),t===W.FLOAT?l.setFloat32(u,r,!0):t===W.INT?l.setInt32(u,r,!0):t===W.UNSIGNED_INT?l.setUint32(u,r,!0):t===W.SHORT?l.setInt16(u,r,!0):t===W.UNSIGNED_SHORT?l.setUint16(u,r,!0):t===W.BYTE?l.setInt8(u,r):t===W.UNSIGNED_BYTE&&l.setUint8(u,r),u+=o}u%s!==0&&(u+=s-u%s)}let d={buffer:this.processBuffer(l.buffer),byteOffset:this.byteOffset,byteLength:c};return i!==void 0&&(d.target=i),i===W.ARRAY_BUFFER&&(d.byteStride=s),this.byteOffset+=c,a.bufferViews.push(d),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,n=t.json;return n.bufferViews||=[],new Promise(function(r){let i=new FileReader;i.readAsArrayBuffer(e),i.onloadend=function(){let e=qt(i.result),a={buffer:t.processBuffer(e),byteOffset:t.byteOffset,byteLength:e.byteLength};t.byteOffset+=e.byteLength,r(n.bufferViews.push(a)-1)}})}processAccessor(e,t,n,r){let i=this.json,a={1:`SCALAR`,2:`VEC2`,3:`VEC3`,4:`VEC4`,9:`MAT3`,16:`MAT4`},o;if(e.array.constructor===Float32Array)o=W.FLOAT;else if(e.array.constructor===Int32Array)o=W.INT;else if(e.array.constructor===Uint32Array)o=W.UNSIGNED_INT;else if(e.array.constructor===Int16Array)o=W.SHORT;else if(e.array.constructor===Uint16Array)o=W.UNSIGNED_SHORT;else if(e.array.constructor===Int8Array)o=W.BYTE;else if(e.array.constructor===Uint8Array)o=W.UNSIGNED_BYTE;else throw Error(`THREE.GLTFExporter: Unsupported bufferAttribute component type: `+e.array.constructor.name);if(n===void 0&&(n=0),(r===void 0||r===1/0)&&(r=e.count),r===0)return null;let s=Gt(e,n,r),c;t!==void 0&&(c=e===t.index?W.ELEMENT_ARRAY_BUFFER:W.ARRAY_BUFFER);let l=this.processBufferView(e,o,n,r,c),u={bufferView:l.id,byteOffset:l.byteOffset,componentType:o,count:r,max:s.max,min:s.min,type:a[e.itemSize]};return e.normalized===!0&&(u.normalized=!0),i.accessors||=[],i.accessors.push(u)-1}processImage(e,t,n,r=`image/png`){if(e!==null){let i=this,a=i.cache,o=i.json,s=i.options,c=i.pending;a.images.has(e)||a.images.set(e,{});let l=a.images.get(e),u=r+`:flipY/`+n.toString();if(l[u]!==void 0)return l[u];o.images||=[];let d={mimeType:r},f=Jt();f.width=Math.min(e.width,s.maxTextureSize),f.height=Math.min(e.height,s.maxTextureSize);let p=f.getContext(`2d`,{willReadFrequently:!0});if(n===!0&&(p.translate(0,f.height),p.scale(1,-1)),e.data!==void 0){t!==1023&&console.error(`GLTFExporter: Only RGBAFormat is supported.`,t),(e.width>s.maxTextureSize||e.height>s.maxTextureSize)&&console.warn(`GLTFExporter: Image size is bigger than maxTextureSize`,e);let n=new Uint8ClampedArray(e.height*e.width*4);for(let t=0;ti.processBufferViewImage(e)).then(e=>{d.bufferView=e})):f.toDataURL===void 0?c.push(Yt(f,r).then(e=>new FileReader().readAsDataURL(e)).then(e=>{d.uri=e})):d.uri=f.toDataURL(r);let m=o.images.push(d)-1;return l[u]=m,m}else throw Error(`THREE.GLTFExporter: No valid image data found. Unable to process texture.`)}processSampler(e){let t=this.json;t.samplers||=[];let n={magFilter:G[e.magFilter],minFilter:G[e.minFilter],wrapS:G[e.wrapS],wrapT:G[e.wrapT]};return t.samplers.push(n)-1}processTexture(e){let t=this.options,n=this.cache,r=this.json;if(n.textures.has(e))return n.textures.get(e);let i={keep:!0,newTexture:null};if(this._invokeAll(function(t){t.beforeWriteTexture&&t.beforeWriteTexture(e,i)}),i.keep===!1)return null;i.newTexture!=null&&(e=i.newTexture),r.textures||=[],e instanceof s&&(e=At(e,t.maxTextureSize));let a=e.userData.mimeType;a===`image/webp`&&(a=`image/png`);let o={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,a)};e.name&&(o.name=e.name),this._invokeAll(function(t){t.writeTexture&&t.writeTexture(e,o)});let c=r.textures.push(o)-1;return n.textures.set(e,c),c}processMaterial(e){let t=this.cache,n=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn(`GLTFExporter: THREE.ShaderMaterial not supported.`),null;n.materials||=[];let r={pbrMetallicRoughness:{}};e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn(`GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.`);let i=e.color.toArray().concat([e.opacity]);Ht(i,[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=i),e.isMeshStandardMaterial?(r.pbrMetallicRoughness.metallicFactor=e.metalness,r.pbrMetallicRoughness.roughnessFactor=e.roughness):(r.pbrMetallicRoughness.metallicFactor=.5,r.pbrMetallicRoughness.roughnessFactor=.5);let a=e.metalnessMap?.image?e.metalnessMap:void 0,o=e.roughnessMap?.image?e.roughnessMap:void 0;if(a||o){let e=this.buildMetalRoughTexture(a,o),t={index:this.processTexture(e),channel:e.channel};this.applyTextureTransform(t,e),r.pbrMetallicRoughness.metallicRoughnessTexture=t}if(e.map){let t={index:this.processTexture(e.map),texCoord:e.map.channel};this.applyTextureTransform(t,e.map),r.pbrMetallicRoughness.baseColorTexture=t}if(e.emissive){let t=e.emissive;if(Math.max(t.r,t.g,t.b)>0&&(r.emissiveFactor=e.emissive.toArray()),e.emissiveMap?.image){let t={index:this.processTexture(e.emissiveMap),texCoord:e.emissiveMap.channel};this.applyTextureTransform(t,e.emissiveMap),r.emissiveTexture=t}}if(e.normalMap?.image){let t={index:this.processTexture(e.normalMap),texCoord:e.normalMap.channel};e.normalScale&&e.normalScale.x!==1&&(t.scale=e.normalScale.x),this.applyTextureTransform(t,e.normalMap),r.normalTexture=t}if(e.aoMap?.image){let t={index:this.processTexture(e.aoMap),texCoord:e.aoMap.channel};e.aoMapIntensity!==1&&(t.strength=e.aoMapIntensity),this.applyTextureTransform(t,e.aoMap),r.occlusionTexture=t}e.transparent?r.alphaMode=`BLEND`:e.alphaTest>0&&(r.alphaMode=`MASK`,r.alphaCutoff=e.alphaTest),e.side===2&&(r.doubleSided=!0),e.name!==``&&(r.name=e.name),this.serializeUserData(e,r),this._invokeAll(function(t){t.writeMaterial&&t.writeMaterial(e,r)});let s=n.materials.push(r)-1;return t.materials.set(e,s),s}processMesh(e){let t={keep:!0};if(this._invokeAll(function(n){n.beforeWriteMesh&&n.beforeWriteMesh(e,t)}),t.keep!=1)return null;let n=this.cache,r=this.json,i=[e.geometry.uuid];if(Array.isArray(e.material))for(let t=0,n=e.material.length;t0){let t=[],r=[],i={};if(e.morphTargetDictionary!==void 0)for(let t in e.morphTargetDictionary)i[e.morphTargetDictionary[t]]=t;for(let a=0;a0&&(c.extras={},c.extras.targetNames=r)}let h=Array.isArray(e.material);if(h&&o.groups.length===0)return null;let g=!1;if(h&&o.index===null){let e=[];for(let t=0,n=o.attributes.position.count;t0&&(t.targets=d),o.index!==null){let r=this.getUID(o.index);(v[e].start!==void 0||v[e].count!==void 0)&&(r+=`:`+v[e].start+`:`+v[e].count),n.attributes.has(r)?t.indices=n.attributes.get(r):(t.indices=this.processAccessor(o.index,o,v[e].start,v[e].count),n.attributes.set(r,t.indices)),t.indices===null&&delete t.indices}let r=this.processMaterial(_[v[e].materialIndex]);r!==null&&(t.material=r),u.push(t)}g===!0&&o.setIndex(null),c.primitives=u,r.meshes||=[],this._invokeAll(function(t){t.writeMesh&&t.writeMesh(e,c)});let y=r.meshes.push(c)-1;return n.meshes.set(a,y),y}detectMeshQuantization(e,t){if(this.extensionsUsed[Nt])return;let n;switch(t.array.constructor){case Int8Array:n=`byte`;break;case Uint8Array:n=`unsigned byte`;break;case Int16Array:n=`short`;break;case Uint16Array:n=`unsigned short`;break;default:return}t.normalized&&(n+=` normalized`);let r=e.split(`_`,1)[0];jt[r]&&jt[r].includes(n)&&(this.extensionsUsed[Nt]=!0,this.extensionsRequired[Nt]=!0)}processCamera(e){let t=this.json;t.cameras||=[];let n=e.isOrthographicCamera,r={type:n?`orthographic`:`perspective`};return n?r.orthographic={xmag:e.right*2,ymag:e.top*2,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:r.perspective={aspectRatio:e.aspect,yfov:p.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==``&&(r.name=e.type),t.cameras.push(r)-1}processAnimation(e,t){let n=this.json,i=this.nodeMap;n.animations||=[],e=Mt.Utils.mergeMorphTargetTracks(e.clone(),t);let a=e.tracks,o=[],s=[];for(let e=0;e0){let t=[];for(let n=0,i=e.children.length;n0&&(a.children=t)}this._invokeAll(function(t){t.writeNode&&t.writeNode(e,a)});let o=n.nodes.push(a)-1;return i.set(e,o),o}processScene(e){let t=this.json,n=this.options;t.scenes||(t.scenes=[],t.scene=0);let r={};e.name!==``&&(r.name=e.name),t.scenes.push(r);let i=[];for(let t=0,r=e.children.length;t0&&(r.nodes=i),this.serializeUserData(e,r)}processObjects(e){let t=new ee;t.name=`AuxScene`;for(let n=0;n0&&this.processObjects(n);for(let e=0;e0&&(a.range=e.distance)):e.isSpotLight&&(a.type=`spot`,e.distance>0&&(a.range=e.distance),a.spot={},a.spot.innerConeAngle=(1-e.penumbra)*e.angle,a.spot.outerConeAngle=e.angle),e.decay!==void 0&&e.decay!==2&&console.warn(`THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2.`),e.target&&(e.target.parent!==e||e.target.position.x!==0||e.target.position.y!==0||e.target.position.z!==-1)&&console.warn(`THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1.`),i[this.name]||(r.extensions=r.extensions||{},r.extensions[this.name]={lights:[]},i[this.name]=!0);let o=r.extensions[this.name].lights;o.push(a),t.extensions=t.extensions||{},t.extensions[this.name]={light:o.length-1}}},Qt=class{constructor(e){this.writer=e,this.name=`KHR_materials_unlit`}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let n=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},n[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},$t=class{constructor(e){this.writer=e,this.name=`KHR_materials_clearcoat`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.clearcoat===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.clearcoatFactor=e.clearcoat,e.clearcoatMap){let t={index:n.processTexture(e.clearcoatMap),texCoord:e.clearcoatMap.channel};n.applyTextureTransform(t,e.clearcoatMap),i.clearcoatTexture=t}if(i.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let t={index:n.processTexture(e.clearcoatRoughnessMap),texCoord:e.clearcoatRoughnessMap.channel};n.applyTextureTransform(t,e.clearcoatRoughnessMap),i.clearcoatRoughnessTexture=t}if(e.clearcoatNormalMap){let t={index:n.processTexture(e.clearcoatNormalMap),texCoord:e.clearcoatNormalMap.channel};e.clearcoatNormalScale.x!==1&&(t.scale=e.clearcoatNormalScale.x),n.applyTextureTransform(t,e.clearcoatNormalMap),i.clearcoatNormalTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},en=class{constructor(e){this.writer=e,this.name=`KHR_materials_dispersion`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.dispersion===0)return;let n=this.writer.extensionsUsed,r={};r.dispersion=e.dispersion,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},tn=class{constructor(e){this.writer=e,this.name=`KHR_materials_iridescence`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.iridescence===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.iridescenceFactor=e.iridescence,e.iridescenceMap){let t={index:n.processTexture(e.iridescenceMap),texCoord:e.iridescenceMap.channel};n.applyTextureTransform(t,e.iridescenceMap),i.iridescenceTexture=t}if(i.iridescenceIor=e.iridescenceIOR,i.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],i.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let t={index:n.processTexture(e.iridescenceThicknessMap),texCoord:e.iridescenceThicknessMap.channel};n.applyTextureTransform(t,e.iridescenceThicknessMap),i.iridescenceThicknessTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},nn=class{constructor(e){this.writer=e,this.name=`KHR_materials_transmission`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.transmissionFactor=e.transmission,e.transmissionMap){let t={index:n.processTexture(e.transmissionMap),texCoord:e.transmissionMap.channel};n.applyTextureTransform(t,e.transmissionMap),i.transmissionTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},rn=class{constructor(e){this.writer=e,this.name=`KHR_materials_volume`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,r=n.extensionsUsed,i={};if(i.thicknessFactor=e.thickness,e.thicknessMap){let t={index:n.processTexture(e.thicknessMap),texCoord:e.thicknessMap.channel};n.applyTextureTransform(t,e.thicknessMap),i.thicknessTexture=t}e.attenuationDistance!==1/0&&(i.attenuationDistance=e.attenuationDistance),i.attenuationColor=e.attenuationColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},an=class{constructor(e){this.writer=e,this.name=`KHR_materials_ior`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.ior===1.5)return;let n=this.writer.extensionsUsed,r={};r.ior=e.ior,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},on=class{constructor(e){this.writer=e,this.name=`KHR_materials_specular`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.specularIntensity===1&&e.specularColor.equals(Ft)&&!e.specularIntensityMap&&!e.specularColorMap)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.specularIntensityMap){let t={index:n.processTexture(e.specularIntensityMap),texCoord:e.specularIntensityMap.channel};n.applyTextureTransform(t,e.specularIntensityMap),i.specularTexture=t}if(e.specularColorMap){let t={index:n.processTexture(e.specularColorMap),texCoord:e.specularColorMap.channel};n.applyTextureTransform(t,e.specularColorMap),i.specularColorTexture=t}i.specularFactor=e.specularIntensity,i.specularColorFactor=e.specularColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},sn=class{constructor(e){this.writer=e,this.name=`KHR_materials_sheen`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.sheen==0)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.sheenRoughnessMap){let t={index:n.processTexture(e.sheenRoughnessMap),texCoord:e.sheenRoughnessMap.channel};n.applyTextureTransform(t,e.sheenRoughnessMap),i.sheenRoughnessTexture=t}if(e.sheenColorMap){let t={index:n.processTexture(e.sheenColorMap),texCoord:e.sheenColorMap.channel};n.applyTextureTransform(t,e.sheenColorMap),i.sheenColorTexture=t}i.sheenRoughnessFactor=e.sheenRoughness,i.sheenColorFactor=e.sheenColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},cn=class{constructor(e){this.writer=e,this.name=`KHR_materials_anisotropy`}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.anisotropy==0)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.anisotropyMap){let t={index:n.processTexture(e.anisotropyMap)};n.applyTextureTransform(t,e.anisotropyMap),i.anisotropyTexture=t}i.anisotropyStrength=e.anisotropy,i.anisotropyRotation=e.anisotropyRotation,t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},ln=class{constructor(e){this.writer=e,this.name=`KHR_materials_emissive_strength`}writeMaterial(e,t){if(!e.isMeshStandardMaterial||e.emissiveIntensity===1)return;let n=this.writer.extensionsUsed,r={};r.emissiveStrength=e.emissiveIntensity,t.extensions=t.extensions||{},t.extensions[this.name]=r,n[this.name]=!0}},un=class{constructor(e){this.writer=e,this.name=`EXT_materials_bump`}writeMaterial(e,t){if(!e.isMeshStandardMaterial||e.bumpScale===1&&!e.bumpMap)return;let n=this.writer,r=n.extensionsUsed,i={};if(e.bumpMap){let t={index:n.processTexture(e.bumpMap),texCoord:e.bumpMap.channel};n.applyTextureTransform(t,e.bumpMap),i.bumpTexture=t}i.bumpFactor=e.bumpScale,t.extensions=t.extensions||{},t.extensions[this.name]=i,r[this.name]=!0}},dn=class{constructor(e){this.writer=e,this.name=`EXT_mesh_gpu_instancing`}writeNode(e,n){if(!e.isInstancedMesh)return;let r=this.writer,i=e,a=new Float32Array(i.count*3),o=new Float32Array(i.count*4),s=new Float32Array(i.count*3),c=new x,l=new t,u=new O,d=new t;for(let e=0;ee.times[e.times.length-1]){if(Math.abs(e.times[e.times.length-1]-t)t){i.set(e.times.slice(0,c+1),0),i[c+1]=t,i.set(e.times.slice(c+1),c+2),a.set(e.values.slice(0,(c+1)*r),0),a.set(o.evaluate(t),(c+1)*r),a.set(e.values.slice((c+1)*r),(c+2)*r),s=c+1;break}}return e.times=i,e.values=a,s},mergeMorphTargetTracks:function(e,t){let n=[],i={},a=e.tracks;for(let e=0;e{e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===Ne.VisualResponseProperty.VISIBILITY?t.visible=i:a===Ne.VisualResponseProperty.TRANSFORM&&(t.quaternion.slerpQuaternions(n.quaternion,r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function hn(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===Ne.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new S(new we(.001),new te({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===Ne.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function gn(e,t){hn(e.motionController,t),e.envMap&&t.traverse(t=>{t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.layers.mask!=0&&t.traverse(t=>{t.layers.mask=e.layers.mask}),e.add(t)}var _n=class{constructor(e=null,t=null){this.gltfLoader=e,this.path=fn,this._assetCache={},this.onLoad=t,this.gltfLoader||=new je}setPath(e){return this.path=e,this}createControllerModel(e){let t=new mn,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||r.hand||Pe(r,this.path,pn).then(({profile:e,assetPath:i})=>{t.motionController=new Me(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),gn(t,n),this.onLoad&&this.onLoad(n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.setPath(``),this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),gn(t,n),this.onLoad&&this.onLoad(n)},null,()=>{throw Error(`Asset ${t.motionController.assetUrl} missing or malformed.`)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},vn=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/`,yn=class{constructor(e,t,n,r,i=null,a=null){this.controller=t,this.handModel=e,this.bones=[],i===null&&(i=new je,i.setPath(n||vn)),i.load(`${r}.glb`,e=>{let t=e.scene.children[0];this.handModel.add(t),t.layers.mask=this.handModel.layers.mask;let n=t.getObjectByProperty(`type`,`SkinnedMesh`);n.frustumCulled=!1,n.castShadow=!0,n.receiveShadow=!0,[`wrist`,`thumb-metacarpal`,`thumb-phalanx-proximal`,`thumb-phalanx-distal`,`thumb-tip`,`index-finger-metacarpal`,`index-finger-phalanx-proximal`,`index-finger-phalanx-intermediate`,`index-finger-phalanx-distal`,`index-finger-tip`,`middle-finger-metacarpal`,`middle-finger-phalanx-proximal`,`middle-finger-phalanx-intermediate`,`middle-finger-phalanx-distal`,`middle-finger-tip`,`ring-finger-metacarpal`,`ring-finger-phalanx-proximal`,`ring-finger-phalanx-intermediate`,`ring-finger-phalanx-distal`,`ring-finger-tip`,`pinky-finger-metacarpal`,`pinky-finger-phalanx-proximal`,`pinky-finger-phalanx-intermediate`,`pinky-finger-phalanx-distal`,`pinky-finger-tip`].forEach(e=>{let n=t.getObjectByName(e);n===void 0?console.warn(`Couldn't find ${e} in ${r} hand mesh`):n.jointName=e,this.bones.push(n)}),a&&a(t)})}updateMesh(){let e=this.controller.joints;for(let t=0;t + #include + #include + #include + #include + + uniform float linewidth; + uniform vec2 resolution; + + attribute vec3 instanceStart; + attribute vec3 instanceEnd; + + attribute vec3 instanceColorStart; + attribute vec3 instanceColorEnd; + + #ifdef WORLD_UNITS + + varying vec4 worldPos; + varying vec3 worldStart; + varying vec3 worldEnd; + + #ifdef USE_DASH + + varying vec2 vUv; + + #endif + + #else + + varying vec2 vUv; + + #endif + + #ifdef USE_DASH + + uniform float dashScale; + attribute float instanceDistanceStart; + attribute float instanceDistanceEnd; + varying float vLineDistance; + + #endif + + void trimSegment( const in vec4 start, inout vec4 end ) { + + // trim end segment so it terminates between the camera plane and the near plane + + // conservative estimate of the near plane + float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column + float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column + float nearEstimate = - 0.5 * b / a; + + float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); + + end.xyz = mix( start.xyz, end.xyz, alpha ); + + } + + void main() { + + #ifdef USE_COLOR + + vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; + + #endif + + #ifdef USE_DASH + + vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; + vUv = uv; + + #endif + + float aspect = resolution.x / resolution.y; + + // camera space + vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); + vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); + + #ifdef WORLD_UNITS + + worldStart = start.xyz; + worldEnd = end.xyz; + + #else + + vUv = uv; + + #endif + + // special case for perspective projection, and segments that terminate either in, or behind, the camera plane + // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space + // but we need to perform ndc-space calculations in the shader, so we must address this issue directly + // perhaps there is a more elegant solution -- WestLangley + + bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column + + if ( perspective ) { + + if ( start.z < 0.0 && end.z >= 0.0 ) { + + trimSegment( start, end ); + + } else if ( end.z < 0.0 && start.z >= 0.0 ) { + + trimSegment( end, start ); + + } + + } + + // clip space + vec4 clipStart = projectionMatrix * start; + vec4 clipEnd = projectionMatrix * end; + + // ndc space + vec3 ndcStart = clipStart.xyz / clipStart.w; + vec3 ndcEnd = clipEnd.xyz / clipEnd.w; + + // direction + vec2 dir = ndcEnd.xy - ndcStart.xy; + + // account for clip-space aspect ratio + dir.x *= aspect; + dir = normalize( dir ); + + #ifdef WORLD_UNITS + + vec3 worldDir = normalize( end.xyz - start.xyz ); + vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) ); + vec3 worldUp = normalize( cross( worldDir, tmpFwd ) ); + vec3 worldFwd = cross( worldDir, worldUp ); + worldPos = position.y < 0.5 ? start: end; + + // height offset + float hw = linewidth * 0.5; + worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp; + + // don't extend the line if we're rendering dashes because we + // won't be rendering the endcaps + #ifndef USE_DASH + + // cap extension + worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir; + + // add width to the box + worldPos.xyz += worldFwd * hw; + + // endcaps + if ( position.y > 1.0 || position.y < 0.0 ) { + + worldPos.xyz -= worldFwd * 2.0 * hw; + + } + + #endif + + // project the worldpos + vec4 clip = projectionMatrix * worldPos; + + // shift the depth of the projected points so the line + // segments overlap neatly + vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd; + clip.z = clipPose.z * clip.w; + + #else + + vec2 offset = vec2( dir.y, - dir.x ); + // undo aspect ratio adjustment + dir.x /= aspect; + offset.x /= aspect; + + // sign flip + if ( position.x < 0.0 ) offset *= - 1.0; + + // endcaps + if ( position.y < 0.0 ) { + + offset += - dir; + + } else if ( position.y > 1.0 ) { + + offset += dir; + + } + + // adjust for linewidth + offset *= linewidth; + + // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... + offset /= resolution.y; + + // select end + vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; + + // back to clip space + offset *= clip.w; + + clip.xy += offset; + + #endif + + gl_Position = clip; + + vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation + + #include + #include + #include + + } + `,fragmentShader:` + uniform vec3 diffuse; + uniform float opacity; + uniform float linewidth; + + #ifdef USE_DASH + + uniform float dashOffset; + uniform float dashSize; + uniform float gapSize; + + #endif + + varying float vLineDistance; + + #ifdef WORLD_UNITS + + varying vec4 worldPos; + varying vec3 worldStart; + varying vec3 worldEnd; + + #ifdef USE_DASH + + varying vec2 vUv; + + #endif + + #else + + varying vec2 vUv; + + #endif + + #include + #include + #include + #include + #include + + vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) { + + float mua; + float mub; + + vec3 p13 = p1 - p3; + vec3 p43 = p4 - p3; + + vec3 p21 = p2 - p1; + + float d1343 = dot( p13, p43 ); + float d4321 = dot( p43, p21 ); + float d1321 = dot( p13, p21 ); + float d4343 = dot( p43, p43 ); + float d2121 = dot( p21, p21 ); + + float denom = d2121 * d4343 - d4321 * d4321; + + float numer = d1343 * d4321 - d1321 * d4343; + + mua = numer / denom; + mua = clamp( mua, 0.0, 1.0 ); + mub = ( d1343 + d4321 * ( mua ) ) / d4343; + mub = clamp( mub, 0.0, 1.0 ); + + return vec2( mua, mub ); + + } + + void main() { + + #include + + #ifdef USE_DASH + + if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps + + if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX + + #endif + + float alpha = opacity; + + #ifdef WORLD_UNITS + + // Find the closest points on the view ray and the line segment + vec3 rayEnd = normalize( worldPos.xyz ) * 1e5; + vec3 lineDir = worldEnd - worldStart; + vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd ); + + vec3 p1 = worldStart + lineDir * params.x; + vec3 p2 = rayEnd * params.y; + vec3 delta = p1 - p2; + float len = length( delta ); + float norm = len / linewidth; + + #ifndef USE_DASH + + #ifdef USE_ALPHA_TO_COVERAGE + + float dnorm = fwidth( norm ); + alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm ); + + #else + + if ( norm > 0.5 ) { + + discard; + + } + + #endif + + #endif + + #else + + #ifdef USE_ALPHA_TO_COVERAGE + + // artifacts appear on some hardware if a derivative is taken within a conditional + float a = vUv.x; + float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; + float len2 = a * a + b * b; + float dlen = fwidth( len2 ); + + if ( abs( vUv.y ) > 1.0 ) { + + alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 ); + + } + + #else + + if ( abs( vUv.y ) > 1.0 ) { + + float a = vUv.x; + float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; + float len2 = a * a + b * b; + + if ( len2 > 1.0 ) discard; + + } + + #endif + + #endif + + vec4 diffuseColor = vec4( diffuse, alpha ); + + #include + #include + + gl_FragColor = vec4( diffuseColor.rgb, alpha ); + + #include + #include + #include + #include + + } + `};var Cn=class extends Se{constructor(e){super({type:`LineMaterial`,uniforms:i.clone(pe.line.uniforms),vertexShader:pe.line.vertexShader,fragmentShader:pe.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return`WORLD_UNITS`in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS=``:delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return`USE_DASH`in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH=``:delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return`USE_ALPHA_TO_COVERAGE`in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE=``:delete this.defines.USE_ALPHA_TO_COVERAGE)}},wn=new ge,Tn=new t,En=new t,K=new ge,q=new ge,J=new ge,Dn=new t,On=new x,Y=new _,kn=new t,An=new se,jn=new ve,X=new ge,Z,Q;function Mn(e,t,n){return X.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),X.multiplyScalar(1/X.w),X.x=Q/n.width,X.y=Q/n.height,X.applyMatrix4(e.projectionMatrixInverse),X.multiplyScalar(1/X.w),Math.abs(Math.max(X.x,X.y))}function Nn(e,n){let r=e.matrixWorld,i=e.geometry,a=i.attributes.instanceStart,o=i.attributes.instanceEnd,s=Math.min(i.instanceCount,a.count);for(let i=0,c=s;id&&q.z>d)continue;if(K.z>d){let e=K.z-q.z,t=(K.z-d)/e;K.lerp(q,t)}else if(q.z>d){let e=q.z-K.z,t=(q.z-d)/e;q.lerp(K,t)}K.applyMatrix4(i),q.applyMatrix4(i),K.multiplyScalar(1/K.w),q.multiplyScalar(1/q.w),K.x*=a.x/2,K.y*=a.y/2,q.x*=a.x/2,q.y*=a.y/2,Y.start.copy(K),Y.start.z=0,Y.end.copy(q),Y.end.z=0;let s=Y.closestPointToPointParameter(Dn,!0);Y.at(s,kn);let u=p.lerp(K.z,q.z,s),f=u>=-1&&u<=1,m=Dn.distanceTo(kn){this.scheduleUpdate||=setTimeout(()=>this.update(),16)});t.observe(e,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),this.observer=t}dispatchDOMEvent(e){e.data&&Hn(this.dom,e.type,e.data.x,e.data.y)}update(){this.image=Vn(this.dom),this.needsUpdate=!0,this.scheduleUpdate=null}dispose(){this.observer&&this.observer.disconnect(),this.scheduleUpdate=clearTimeout(this.scheduleUpdate),super.dispose()}},Bn=new WeakMap;function Vn(t){let n=document.createRange(),r=new e;function i(e){let t=[],n=!1;function r(){if(n&&(n=!1,e.restore()),t.length===0)return;let r=-1/0,i=-1/0,a=1/0,o=1/0;for(let e=0;eparseFloat(e[t])),c=(a-t)/(r-t)*(p-m);o(i,u+m/4,p,m/2,m/4),d.fillStyle=s,d.strokeStyle=n,d.lineWidth=1,d.fill(),d.stroke(),o(i,u+m/4,c+m/2,m/2,m/4),d.fillStyle=n,d.fill(),o(i+c,u,m,m,m/2),d.fillStyle=n,d.fill()}(e.type===`color`||e.type===`text`||e.type===`number`)&&(f.add({x:i,y:u,width:p,height:m}),a(t,i+parseInt(t.paddingLeft),u+parseInt(t.paddingTop),e.value),f.remove())}}let h=t.overflow===`auto`||t.overflow===`hidden`;h&&f.add({x:i,y:u,width:p,height:m});for(let n=0;na.left&&na.top&&rparseFloat(e[t])),i=a.width,o=(n-a.x)/i;e.value=t+(r-t)*o,e.dispatchEvent(new InputEvent(`input`,{bubbles:!0}))}for(let t=0;t0){let e=o[0],t=e.object,n=e.uv;$.type=i.type,$.data.set(n.x,1-n.y),t.dispatchEvent($)}}i.addEventListener(`pointerdown`,a),i.addEventListener(`pointerup`,a),i.addEventListener(`pointermove`,a),i.addEventListener(`mousedown`,a),i.addEventListener(`mouseup`,a),i.addEventListener(`mousemove`,a),i.addEventListener(`click`,a)}listenToXRControllerEvents(e){let t=this,n={move:`mousemove`,select:`click`,selectstart:`mousedown`,selectend:`mouseup`};function r(e){let r=e.target;Wn.setFromXRController(r);let i=Wn.intersectObjects(t.children,!1);if(i.length>0){let t=i[0],r=t.object,a=t.uv;$.type=n[e.type],$.data.set(a.x,1-a.y),r.dispatchEvent($)}}e.addEventListener(`move`,r),e.addEventListener(`select`,r),e.addEventListener(`selectstart`,r),e.addEventListener(`selectend`,r)}},Kn=class{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error(`THREE.Pass: .render() must be implemented in derived pass.`)}dispose(){}};new ye(-1,1,1,-1,0,1),new class extends re{constructor(){super(),this.setAttribute(`position`,new C([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new C([0,2,0,0,2,0],2))}};export{In as a,_n as c,Ve as d,it as f,Ln as i,Mt as l,Gn as n,Cn as o,Fe as p,Rn as r,yn as s,Kn as t,pt as u}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/three-examples.extras@0.169.19.js.gz b/Needle/SampleScene/dist/assets/three-examples.extras@0.169.19.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..bba6eccf7ae87c9b30f0164801c9309a4bc78180 GIT binary patch literal 28538 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 r=new e.array.constructor(e.count*e.itemSize);l[n][t]=new e.constructor(r,e.itemSize,e.normalized)}))}let p=t*.5,m=10**Math.log10(1/t),h=p*m;for(let t=0;t=2.0 are supported.`));return}this.json=i,this.jsonErrorData=a;let l=new an(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&s[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}l.setExtensions(o),l.setPlugins(s),l.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function ut(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}var W={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},dt=class{constructor(e){this.parser=e,this.name=W.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},Tt=class{constructor(e){this.parser=e,this.name=W.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: WebP required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Et=class{constructor(e){this.parser=e,this.name=W.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: AVIF required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Dt=class{constructor(e){this.name=W.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Ot=class{constructor(e){this.name=W.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||r.mesh===void 0)return null;let i=t.meshes[r.mesh];for(let e of i.primitives)if(e.mode!==zt.TRIANGLES&&e.mode!==zt.TRIANGLE_STRIP&&e.mode!==zt.TRIANGLE_FAN&&e.mode!==void 0)return null;let a=r.extensions[this.name].attributes,o=[],s={};for(let e in a)o.push(this.parser.getDependency(`accessor`,a[e]).then(t=>(s[e]=t,s[e])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],i=e[0].count,a=[];for(let e of r){let t=new R,r=new n,o=new Ze,c=new n(1,1,1),l=new he(e.geometry,e.material,i);for(let e=0;e0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:`image/png`}var rn=new R,an=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ut,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new ue(this.options.manager):this.textureLoader=new Le(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Oe(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return Yt(i,a,r),Xt(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=Vt[n.magFilter]||1006,t.minFilter=Vt[n.minFilter]||1008,t.wrapS=Ht[n.wrapS]||1e3,t.wrapT=Ht[n.wrapT]||1e3,t.anisotropy=4,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new Ce(e);t.needsUpdate=!0,n(t)}),t.load(p.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),Xt(e,a),e.userData.mimeType=a.mimeType||nn(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[W.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[W.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[W.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new tt,We.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new w,We.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return Ee}loadMaterial(t){let n=this,r=this.json,a=this.extensions,o=r.materials[t],s,c={},l=o.extensions||{},u=[];if(l[W.KHR_MATERIALS_UNLIT]){let e=a[W.KHR_MATERIALS_UNLIT];s=e.getMaterialType(),u.push(e.extendParams(c,o,n))}else{let r=o.pbrMetallicRoughness||{};if(c.color=new e(1,1,1),c.opacity=1,Array.isArray(r.baseColorFactor)){let e=r.baseColorFactor;c.color.setRGB(e[0],e[1],e[2],i),c.opacity=e[3]}r.baseColorTexture!==void 0&&u.push(n.assignTexture(c,`map`,r.baseColorTexture,z)),c.metalness=r.metallicFactor===void 0?1:r.metallicFactor,c.roughness=r.roughnessFactor===void 0?1:r.roughnessFactor,r.metallicRoughnessTexture!==void 0&&(u.push(n.assignTexture(c,`metalnessMap`,r.metallicRoughnessTexture)),u.push(n.assignTexture(c,`roughnessMap`,r.metallicRoughnessTexture))),s=this._invokeOne(function(e){return e.getMaterialType&&e.getMaterialType(t)}),u.push(Promise.all(this._invokeAll(function(e){return e.extendMaterialParams&&e.extendMaterialParams(t,c)})))}o.doubleSided===!0&&(c.side=2);let d=o.alphaMode||qt.OPAQUE;if(d===qt.BLEND?(c.transparent=!0,c.depthWrite=!1):(c.transparent=!1,d===qt.MASK&&(c.alphaTest=o.alphaCutoff===void 0?.5:o.alphaCutoff)),o.normalTexture!==void 0&&s!==k&&(u.push(n.assignTexture(c,`normalMap`,o.normalTexture)),c.normalScale=new Ne(1,1),o.normalTexture.scale!==void 0)){let e=o.normalTexture.scale;c.normalScale.set(e,e)}if(o.occlusionTexture!==void 0&&s!==k&&(u.push(n.assignTexture(c,`aoMap`,o.occlusionTexture)),o.occlusionTexture.strength!==void 0&&(c.aoMapIntensity=o.occlusionTexture.strength)),o.emissiveFactor!==void 0&&s!==k){let t=o.emissiveFactor;c.emissive=new e().setRGB(t[0],t[1],t[2],i)}return o.emissiveTexture!==void 0&&s!==k&&u.push(n.assignTexture(c,`emissiveMap`,o.emissiveTexture,z)),Promise.all(u).then(function(){let e=new s(c);return o.name&&(e.name=o.name),Xt(e,o),n.associations.set(e,{materials:t}),o.extensions&&Yt(a,e,o),e})}createUniqueName(e){let t=a.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[W.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return sn(n,e,t)})}let a=[];for(let n=0,o=e.length;n0&&Qt(f,i),f.name=t.createUniqueName(i.name||`mesh_`+e),Xt(f,i),d.extensions&&Yt(r,f,d),t.assignFinalMaterial(f),c.push(f)}for(let n=0,r=c.length;n1?new _e:t.length===1?t[0]:new ye,o!==t[0])for(let e=0,n=t.length;e{let t=new Map;for(let[e,n]of r.associations)(e instanceof We||e instanceof Ce)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];Gt[i.path]===Gt.weights?e.traverse(function(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}):s.push(o);let c;switch(Gt[i.path]){case Gt.weights:c=H;break;case Gt.rotation:c=P;break;case Gt.position:case Gt.scale:c=x;break;default:switch(n.itemSize){case 1:c=H;break;default:c=x;break}break}let l=r.interpolation===void 0?ne:Kt[r.interpolation],u=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})(),ln=new WeakMap,un=class extends L{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new Oe(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,z,n).catch(n)}decodeDracoFile(e,t,n,r,a=i,o=()=>{}){let s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:a};return this.decodeGeometry(e,s).then(t).catch(o)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ln.has(e)){let t=ln.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ln.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new M;e.index&&t.setIndex(new et(e.index.array,1));for(let n=0;n{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=dn.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=o.num_components(),c=n.num_points()*s,l=c*i.BYTES_PER_ELEMENT,u=a(e,i),d=e._malloc(l);t.GetAttributeDataArrayForAllPoints(n,o,u,l,d);let f=new i(e.HEAPF32.buffer,d,c).slice();return e._free(d),{name:r,array:f,itemSize:s}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}var fn=class{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){let t=this.workerCreator();t.addEventListener(`message`,this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}},pn=1000066e3,mn=class{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let n=this._offset,r=0;for(;this._dataView.getUint8(this._offset)!==t&&re.arrayBuffer()).then(e=>WebAssembly.instantiate(e,bn)).then(this._init):WebAssembly.instantiate(Buffer.from(Sn,`base64`),bn).then(this._init),_n)}_init(e){vn=e.instance,bn.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!vn)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=vn.exports.malloc(n);yn.set(e,r),t||=Number(vn.exports.ZSTD_findDecompressedSize(r,n));let i=vn.exports.malloc(t),a=vn.exports.ZSTD_decompress(i,t,r,n),o=yn.slice(i,i+a);return vn.exports.free(r),vn.exports.free(i),o}},Sn=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`,Cn=`display-p3`,wn=`display-p3-linear`,Tn=new WeakMap,En=0,Dn,On=class e extends L{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new fn,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync(`texture-compression-etc1`),etc2Supported:await e.hasFeatureAsync(`texture-compression-etc2`),dxtSupported:await e.hasFeatureAsync(`texture-compression-bc`),bptcSupported:await e.hasFeatureAsync(`texture-compression-bptc`),pvrtcSupported:await e.hasFeatureAsync(`texture-compression-pvrtc`)},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:e.hasFeature(`texture-compression-etc1`),etc2Supported:e.hasFeature(`texture-compression-etc2`),dxtSupported:e.hasFeature(`texture-compression-bc`),bptcSupported:e.hasFeature(`texture-compression-bptc`),pvrtcSupported:e.hasFeature(`texture-compression-pvrtc`)}:this.workerConfig={astcSupported:e.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:e.extensions.has(`WEBGL_compressed_texture_astc`)&&e.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:e.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:e.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:e.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:e.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:e.extensions.has(`WEBGL_compressed_texture_pvrtc`)||e.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},this}init(){if(!this.transcoderPending){let t=new Oe(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new Oe(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),En>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),En++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new Oe(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Tn.has(e))return Tn.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:l,dfdFlags:u}}=e;if(n===`error`)return Promise.reject(r);let d;if(t.faceCount===6)d=new D(i,s,l);else{let e=i[0].mipmaps;d=t.layerCount>1?new S(e,a,o,t.layerCount,s,l):new c(e,a,o,s,l)}return d.minFilter=i[0].mipmaps.length===1?h:j,d.magFilter=h,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=Nn(t),d.premultiplyAlpha=!!(u&1),d}async _createTexture(e,t={}){let n=gn(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return Mn(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return Tn.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),En--}};On.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},On.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},On.EngineFormat={RGBAFormat:E,RGBA_ASTC_4x4_Format:Me,RGB_BPTC_UNSIGNED_Format:A,RGBA_BPTC_Format:ke,RGBA_ETC2_EAC_Format:b,RGBA_PVRTC_4BPPV1_Format:C,RGBA_S3TC_DXT5_Format:m,RGB_ETC1_Format:at,RGB_ETC2_Format:r,RGB_PVRTC_4BPPV1_Format:I,RGBA_S3TC_DXT1_Format:O},On.EngineType={UnsignedByteType:Qe,HalfFloatType:xe,FloatType:Ve},On.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o{let t=new xn;await t.init(),e(t)}),n=await Dn);let r=[];for(let i=0;i>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,c=e.levels[i],l;if(e.supercompressionScheme===0)l=c.levelData;else if(e.supercompressionScheme===2)l=n.decode(c.levelData,c.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let u;u=jn[t]===1015?new Float32Array(l.buffer,l.byteOffset,l.byteLength/Float32Array.BYTES_PER_ELEMENT):jn[t]===1016?new Uint16Array(l.buffer,l.byteOffset,l.byteLength/Uint16Array.BYTES_PER_ELEMENT):jn[t]===35902||jn[t]===35899?new Uint32Array(l.buffer,l.byteOffset,l.byteLength/Uint32Array.BYTES_PER_ELEMENT):l,r.push({data:u,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(kn.has(An[t]))a=e.pixelDepth===0?new d(r[0].data,e.pixelWidth,e.pixelHeight):new ie(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?Pe:ze,a.magFilter=ze,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new c(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?j:h,a.magFilter=h}return a.mipmaps=r,a.type=jn[t],a.format=An[t],a.colorSpace=Nn(e),a.needsUpdate=!0,Promise.resolve(a)}function Nn(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?z:i:t.colorPrimaries===10?t.transferFunction===2?Cn:wn:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),``)}var Pn=new Xe;Pn.camera=new Se,ve.basic,ve.basic,ve.points,ve.standard,ve.physical,ve.phong;var Fn=function(){var e=0,t=document.createElement(`div`);t.style.cssText=`position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000`,t.addEventListener(`click`,function(n){n.preventDefault(),r(++e%t.children.length)},!1);function n(e){return t.appendChild(e.dom),e}function r(n){for(var r=0;r=a+1e3&&(s.update(o*1e3/(e-a),100),a=e,o=0,l)){var t=performance.memory;l.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:t,setMode:r}};Fn.Panel=function(e,t,n){var r=1/0,i=0,a=Math.round,o=a(window.devicePixelRatio||1),s=80*o,c=48*o,l=3*o,u=2*o,d=3*o,f=15*o,p=74*o,m=30*o,h=document.createElement(`canvas`);h.width=s,h.height=c,h.style.cssText=`width:80px;height:48px`;var g=h.getContext(`2d`);return g.font=`bold `+9*o+`px Helvetica,Arial,sans-serif`,g.textBaseline=`top`,g.fillStyle=n,g.fillRect(0,0,s,c),g.fillStyle=t,g.fillText(e,l,u),g.fillRect(d,f,p,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d,f,p,m),{dom:h,update:function(c,_){r=Math.min(r,c),i=Math.max(i,c),g.fillStyle=n,g.globalAlpha=1,g.fillRect(0,0,s,f),g.fillStyle=t,g.fillText(a(c)+` `+e+` (`+a(r)+`-`+a(i)+`)`,l,u),g.drawImage(h,d+o,f,p-o,m,d,f,p-o,m),g.fillRect(d+p-o,f,o,m),g.fillStyle=n,g.globalAlpha=.9,g.fillRect(d+p-o,f,o,a((1-c/_)*m))}}};var In=class extends qe{constructor(e,t={}){let n=t.font;if(n===void 0)super();else{let r=n.generateShapes(e,t.size);t.depth===void 0&&t.height!==void 0&&console.warn(`THREE.TextGeometry: .height is now depreciated. Please use .depth instead`),t.depth=t.depth===void 0?t.height===void 0?50:t.height:t.depth,t.bevelThickness===void 0&&(t.bevelThickness=10),t.bevelSize===void 0&&(t.bevelSize=8),t.bevelEnabled===void 0&&(t.bevelEnabled=!1),super(r,t)}this.type=`TextGeometry`}},Ln=class extends L{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new Oe(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){let n=i.parse(JSON.parse(e));t&&t(n)},n,r)}parse(e){return new Rn(e)}},Rn=class{constructor(e){this.isFont=!0,this.type=`Font`,this.data=e}generateShapes(e,t=100){let n=[],r=zn(e,t,this.data);for(let e=0,t=r.length;e>1|(q&21845)<<1;er=(er&52428)>>2|(er&13107)<<2,er=(er&61680)>>4|(er&3855)<<4,$n[q]=((er&65280)>>8|(er&255)<<8)>>1}for(var tr=(function(e,t,n){for(var r=e.length,i=0,a=new Vn(t);i>c]=l}else for(s=new Vn(r),i=0;i>15-e[i]);return s}),nr=new K(288),q=0;q<144;++q)nr[q]=8;for(var q=144;q<256;++q)nr[q]=9;for(var q=256;q<280;++q)nr[q]=7;for(var q=280;q<288;++q)nr[q]=8;for(var rr=new K(32),q=0;q<32;++q)rr[q]=5;var ir=tr(nr,9,0),ar=tr(nr,9,1),or=tr(rr,5,0),sr=tr(rr,5,1),cr=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},lr=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},ur=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},dr=function(e){return(e+7)/8|0},fr=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new K(e.subarray(t,n))},pr=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],J=function(e,t,n){var r=Error(t||pr[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,J),!n)throw r;return r},mr=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new K(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new K(i*3));var l=function(e){var t=n.length;if(e>t){var r=new K(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=lr(e,d,1);var v=lr(e,d+1,3);if(d+=3,!v){var y=dr(d)+4,b=e[y-4]|e[y-3]<<8,x=y+b;if(x>i){c&&J(0);break}s&&l(f+b),n.set(e.subarray(y,x),f),t.b=f+=b,t.p=d=x*8,t.f=u;continue}else if(v==1)p=ar,m=sr,h=9,g=5;else if(v==2){var S=lr(e,d,31)+257,C=lr(e,d+10,15)+4,w=S+lr(e,d+5,31)+1;d+=14;for(var T=new K(w),E=new K(19),D=0;D>4;if(y<16)T[D++]=y;else{var j=0,M=0;for(y==16?(M=3+lr(e,d,3),d+=2,j=T[D-1]):y==17?(M=3+lr(e,d,7),d+=3):y==18&&(M=11+lr(e,d,127),d+=7);M--;)T[D++]=j}}var N=T.subarray(0,S),P=T.subarray(S);h=cr(N),g=cr(P),p=tr(N,h,1),m=tr(P,g,1)}else J(1);if(d>_){c&&J(0);break}}s&&l(f+131072);for(var te=(1<>4;if(d+=j&15,d>_){c&&J(0);break}if(j||J(2),F<256)n[f++]=F;else if(F==256){re=d,p=null;break}else{var ie=F-254;if(F>264){var D=F-257,I=Un[D];ie=lr(e,d,(1<>4;L||J(3),d+=L&15;var P=Zn[ae];if(ae>3){var I=Wn[ae];P+=ur(e,d)&(1<_){c&&J(0);break}s&&l(f+131072);var R=f+ie;if(f>8},gr=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},_r=function(e,t){for(var n=[],r=0;rf&&(f=a[r].s);var p=new Vn(f+1),m=vr(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<t)h+=_-(1<>=g;h>0;){var y=a[r].s;p[y]=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new K(p),l:m}},vr=function(e,t,n){return e.s==-1?Math.max(vr(e.l,t,n+1),vr(e.r,t,n+1)):t[e.s]=n},yr=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new Vn(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},br=function(e,t){for(var n=0,r=0;r>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a4&&!E[Gn[O-1]];--O);var ee=l+5<<3,k=br(i,nr)+br(a,rr)+o,A=br(i,f)+br(a,h)+o+14+3*O+br(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&ee<=k&&ee<=A)return xr(t,u,e.subarray(c,c+l));var j,M,N,P;if(hr(t,u,1+(A15&&(hr(t,u,F[w]>>5&127),u+=F[w]>>12)}}else j=ir,M=nr,N=or,P=rr;for(var w=0;w255){var ie=I>>18&31;gr(t,u,j[ie+257]),u+=M[ie+257],ie>7&&(hr(t,u,I>>23&31),u+=Un[ie]);var L=I&31;gr(t,u,N[L]),u+=P[L],L>3&&(gr(t,u,I>>5&8191),u+=Wn[L])}else gr(t,u,j[I]),u+=M[I]}return gr(t,u,j[256]),u+M[256]},Cr=new Hn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),wr=new K(0),Tr=function(e,t,n,r,i,a){var o=a.z||e.length,s=new K(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=Cr[t-1],f=d>>13,p=d&8191,m=(1<7e3||E>24576)&&(j>423||!l)){u=Sr(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var M=0;M<286;++M)x[M]=0;for(var M=0;M<30;++M)S[M]=0}var N=2,P=0,te=p,ne=k-A&32767;if(j>2&&ee==y(T-ne))for(var re=Math.min(f,j)-1,F=Math.min(32767,T),ie=Math.min(258,j);ne<=F&&--te&&k!=A;){if(e[T+N]==e[T+N-ne]){for(var I=0;IN){if(N=I,P=ne,I>re)break;for(var L=Math.min(ne,I-2),ae=0,M=0;Mae&&(ae=oe,A=R)}}}k=A,A=h[k],ne+=k-A&32767}if(P){b[E++]=268435456|Yn[N]<<18|Qn[P];var se=Yn[N]&31,z=Qn[P]&31;w+=Un[se]+Wn[z],++x[257+se],++S[z],D=T+N,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T=o&&(c[u/8|0]=l,ce=o),u=xr(c,u+1,e.subarray(T,ce))}a.i=o}return fr(s,0,r+dr(u)+i)},Er=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),Dr=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r>>8;e=n},d:function(){return~e}}},Or=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new K(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return Tr(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},kr=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},Y=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},Ar=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&J(6,`invalid zlib data`),(e[1]>>5&1)==+!t&&J(6,`invalid zlib data: `+(e[1]&32?`need`:`unexpected`)+` dictionary`),(e[1]>>3&4)+2};function jr(e,t){return Or(e,t||{},0,0)}function Mr(e,t){return mr(e.subarray(Ar(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}var Nr=function(e,t,n,r){for(var i in e){var a=e[i],o=t+i,s=r;Array.isArray(a)&&(s=kr(r,a[1]),a=a[0]),a instanceof K?n[o]=[a,s]:(n[o+=`/`]=[new K(0),s],Nr(a,o,n,r))}},Pr=typeof TextEncoder<`u`&&new TextEncoder,Fr=typeof TextDecoder<`u`&&new TextDecoder;try{Fr.decode(wr,{stream:!0})}catch{}function Ir(e,t){if(t){for(var n=new K(e.length),r=0;r>1)),o=0,s=function(e){a[o++]=e},r=0;ra.length){var c=new K(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return fr(a,0,o)}var Lr=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&J(9),t+=r+4}return t},Rr=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=Lr(l);Y(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&J(10),Y(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&(Y(e,t,n.crc),Y(e,t+4,a<0?-a-2:a),Y(e,t+8,n.size)),Y(e,t+12,c),Y(e,t+14,d),t+=16,o!=null&&(Y(e,t,u),Y(e,t+6,n.attrs),Y(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;Y(e,t,+m),Y(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},zr=function(e,t,n,r,i){Y(e,t,101010256),Y(e,t+8,n),Y(e,t+10,n),Y(e,t+12,r),Y(e,t+16,i)};function Br(e,t){t||={};var n={},r=[];Nr(e,``,n,t);var i=0,a=0;for(var o in n){var s=n[o],c=s[0],l=s[1],u=l.level==0?0:8,d=Ir(o),f=d.length,p=l.comment,m=p&&Ir(p),h=m&&m.length,g=Lr(l.extra);f>65535&&J(11);var _=u?jr(c,l):c,v=_.length,y=Dr();y.p(c),r.push(kr(l,{size:c.length,crc:y.d(),c:_,f:d,m,u:f!=o.length||m&&p.length!=h,o:i,compression:u})),i+=30+f+g+v,a+=76+2*(f+g)+(h||0)+v}for(var b=new K(a+22),x=i,S=a-i,C=0;C>3,r=65537,a=16384,o=a-1,s=65535,c=2.7182818**2.2;function l(e,n){let r=0;for(let i=0;i>3]&1<<(i&7))&&(n[r++]=i);let i=r-1;for(;r>n&(1<0;--e){let n=t+p[e]>>1;p[e]=t,t=n}for(let t=0;t0&&(e[t]=n|p[n]++<<6)}}function h(e,t,n,r,i,a){let o=t,s=0,c=0;for(;r<=i;r++){if(o.value-t.value>n)return!1;f(6,s,c,e,o);let l=d.l;if(s=d.c,c=d.lc,a[r]=l,l==63){if(o.value-t.value>n)throw Error(`Something wrong with hufUnpackEncTable`);f(8,s,c,e,o);let l=d.l+6;if(s=d.c,c=d.lc,r+l>i+1)throw Error(`Something wrong with hufUnpackEncTable`);for(;l--;)a[r++]=0;r--}else if(l>=59){let e=l-59+2;if(r+e>i+1)throw Error(`Something wrong with hufUnpackEncTable`);for(;e--;)a[r++]=0;r--}}m(a)}function g(e){return e&63}function _(e){return e>>6}function v(e,t,n,r){for(;t<=n;t++){let n=_(e[t]),i=g(e[t]);if(n>>i)throw Error(`Invalid table entry`);if(i>14){let e=r[n>>i-14];if(e.len)throw Error(`Invalid table entry`);if(e.lit++,e.p){let t=e.p;e.p=Array(e.lit);for(let n=0;n0;a--){let a=r[(n<<14-i)+e];if(a.len||a.p)throw Error(`Invalid table entry`);a.len=i,a.lit=t,e++}}}return!0}let y={c:0,lc:0};function b(e,t,n,r){e=e<<8|me(n,r),t+=8,y.c=e,y.lc=t}let x={c:0,lc:0};function S(e,t,n,r,i,a,o,s,c){if(e==t){r<8&&(b(n,r,i,a),n=y.c,r=y.lc),r-=8;let e=n>>r;if(e=new Uint8Array([e])[0],s.value+e>c)return!1;let t=o[s.value-1];for(;e-- >0;)o[s.value++]=t}else if(s.value32767?t-65536:t}let T={a:0,b:0};function D(e,t){let n=w(e),r=w(t),i=n+(r&1)+(r>>1),a=i,o=i-r;T.a=a,T.b=o}function O(e,t){let n=C(e),r=C(t),i=n-(r>>1)&s;T.a=r+i-32768&s,T.b=i}function ee(e,t,n,r,i,a,o){let s=o<16384,c=n>i?i:n,l=1,u,d;for(;l<=c;)l<<=1;for(l>>=1,u=l,l>>=1;l>=1;){d=0;let o=d+a*(i-u),c=a*l,f=a*u,p=r*l,m=r*u,h,g,_,v;for(;d<=o;d+=f){let i=d,a=d+r*(n-u);for(;i<=a;i+=m){let n=i+p,r=i+c,a=r+p;s?(D(e[i+t],e[r+t]),h=T.a,_=T.b,D(e[n+t],e[a+t]),g=T.a,v=T.b,D(h,g),e[i+t]=T.a,e[n+t]=T.b,D(_,v),e[r+t]=T.a,e[a+t]=T.b):(O(e[i+t],e[r+t]),h=T.a,_=T.b,O(e[n+t],e[a+t]),g=T.a,v=T.b,O(h,g),e[i+t]=T.a,e[n+t]=T.b,O(_,v),e[r+t]=T.a,e[a+t]=T.b)}if(n&l){let n=i+c;s?D(e[i+t],e[n+t]):O(e[i+t],e[n+t]),h=T.a,e[n+t]=T.b,e[i+t]=h}}if(i&l){let i=d,a=d+r*(n-u);for(;i<=a;i+=m){let n=i+p;s?D(e[i+t],e[n+t]):O(e[i+t],e[n+t]),h=T.a,e[n+t]=T.b,e[i+t]=h}}u=l,l>>=1}return d}function k(e,t,n,r,i,a,s,c,l){let u=0,d=0,f=s,p=Math.trunc(r.value+(i+7)/8);for(;r.value=14;){let i=t[u>>d-14&o];if(i.len)d-=i.len,S(i.lit,a,u,d,n,r,c,l,f),u=x.c,d=x.lc;else{if(!i.p)throw Error(`hufDecode issues`);let t;for(t=0;t=o&&_(e[i.p[t]])==(u>>d-o&(1<>=m,d-=m;d>0;){let e=t[u<<14-d&o];if(e.len)d-=e.len,S(e.lit,a,u,d,n,r,c,l,f),u=x.c,d=x.lc;else throw Error(`hufDecode issues`)}return!0}function A(e,t,n,i,o,s){let c={value:0},l=n.value,d=V(t,n),f=V(t,n);n.value+=4;let p=V(t,n);if(n.value+=4,d<0||d>=r||f<0||f>=r)throw Error(`Something wrong with HUF_ENCSIZE`);let m=Array(r),g=Array(a);if(u(g),h(e,n,i-(n.value-l),d,f,m),p>8*(i-(n.value-l)))throw Error(`Something wrong with hufUncompress`);v(m,d,f,g),k(m,g,e,n,p,f,s,o,c)}function j(e,t,n){for(let r=0;ra||(t[i++]=e[n++],i>a));)t[i++]=e[r++]}function P(e){let t=e.byteLength,n=[],r=0,i=new DataView(e);for(;t>0;){let e=i.getInt8(r++);if(e<0){let a=-e;t-=a+1;for(let e=0;e>8==255?i+=r&255:(n[i]=r,i++),e.value++}function re(e,t){t[0]=U(e[0]),t[1]=U(e[1]),t[2]=U(e[5]),t[3]=U(e[6]),t[4]=U(e[14]),t[5]=U(e[15]),t[6]=U(e[27]),t[7]=U(e[28]),t[8]=U(e[2]),t[9]=U(e[4]),t[10]=U(e[7]),t[11]=U(e[13]),t[12]=U(e[16]),t[13]=U(e[26]),t[14]=U(e[29]),t[15]=U(e[42]),t[16]=U(e[3]),t[17]=U(e[8]),t[18]=U(e[12]),t[19]=U(e[17]),t[20]=U(e[25]),t[21]=U(e[30]),t[22]=U(e[41]),t[23]=U(e[43]),t[24]=U(e[9]),t[25]=U(e[11]),t[26]=U(e[18]),t[27]=U(e[24]),t[28]=U(e[31]),t[29]=U(e[40]),t[30]=U(e[44]),t[31]=U(e[53]),t[32]=U(e[10]),t[33]=U(e[19]),t[34]=U(e[23]),t[35]=U(e[32]),t[36]=U(e[39]),t[37]=U(e[45]),t[38]=U(e[52]),t[39]=U(e[54]),t[40]=U(e[20]),t[41]=U(e[22]),t[42]=U(e[33]),t[43]=U(e[38]),t[44]=U(e[46]),t[45]=U(e[51]),t[46]=U(e[55]),t[47]=U(e[60]),t[48]=U(e[21]),t[49]=U(e[34]),t[50]=U(e[37]),t[51]=U(e[47]),t[52]=U(e[50]),t[53]=U(e[56]),t[54]=U(e[59]),t[55]=U(e[61]),t[56]=U(e[35]),t[57]=U(e[36]),t[58]=U(e[48]),t[59]=U(e[49]),t[60]=U(e[57]),t[61]=U(e[58]),t[62]=U(e[62]),t[63]=U(e[63])}function F(e){let t=.5*Math.cos(3.14159/4),n=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),i=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(5*3.14159/16),o=.5*Math.cos(3*3.14159/8),s=.5*Math.cos(7*3.14159/16),c=[,,,,],l=[,,,,],u=[,,,,],d=[,,,,];for(let f=0;f<8;++f){let p=f*8;c[0]=r*e[p+2],c[1]=o*e[p+2],c[2]=r*e[p+6],c[3]=o*e[p+6],l[0]=n*e[p+1]+i*e[p+3]+a*e[p+5]+s*e[p+7],l[1]=i*e[p+1]-s*e[p+3]-n*e[p+5]-a*e[p+7],l[2]=a*e[p+1]-n*e[p+3]+s*e[p+5]+i*e[p+7],l[3]=s*e[p+1]-a*e[p+3]+i*e[p+5]-n*e[p+7],u[0]=t*(e[p+0]+e[p+4]),u[3]=t*(e[p+0]-e[p+4]),u[1]=c[0]+c[3],u[2]=c[1]-c[2],d[0]=u[0]+u[1],d[1]=u[3]+u[2],d[2]=u[3]-u[2],d[3]=u[0]-u[1],e[p+0]=d[0]+l[0],e[p+1]=d[1]+l[1],e[p+2]=d[2]+l[2],e[p+3]=d[3]+l[3],e[p+4]=d[3]-l[3],e[p+5]=d[2]-l[2],e[p+6]=d[1]-l[1],e[p+7]=d[0]-l[0]}for(let f=0;f<8;++f)c[0]=r*e[16+f],c[1]=o*e[16+f],c[2]=r*e[48+f],c[3]=o*e[48+f],l[0]=n*e[8+f]+i*e[24+f]+a*e[40+f]+s*e[56+f],l[1]=i*e[8+f]-s*e[24+f]-n*e[40+f]-a*e[56+f],l[2]=a*e[8+f]-n*e[24+f]+s*e[40+f]+i*e[56+f],l[3]=s*e[8+f]-a*e[24+f]+i*e[40+f]-n*e[56+f],u[0]=t*(e[f]+e[32+f]),u[3]=t*(e[f]-e[32+f]),u[1]=c[0]+c[3],u[2]=c[1]-c[2],d[0]=u[0]+u[1],d[1]=u[3]+u[2],d[2]=u[3]-u[2],d[3]=u[0]-u[1],e[0+f]=d[0]+l[0],e[8+f]=d[1]+l[1],e[16+f]=d[2]+l[2],e[24+f]=d[3]+l[3],e[32+f]=d[3]-l[3],e[40+f]=d[2]-l[2],e[48+f]=d[1]-l[1],e[56+f]=d[0]-l[0]}function ie(e){for(let t=0;t<64;++t){let n=e[0][t],r=e[1][t],i=e[2][t];e[0][t]=n+1.5747*i,e[1][t]=n-.1873*r-.4682*i,e[2][t]=n+1.8556*r}}function I(e,t,n){for(let r=0;r<64;++r)t[n+r]=ae.toHalfFloat(L(e[r]))}function L(e){return e<=1?Math.sign(e)*Math.abs(e)**2.2:Math.sign(e)*c**(Math.abs(e)-1)}function R(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function oe(e){let t=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),n=new Uint8Array(P(t)),r=new Uint8Array(n.length);return M(n),N(n,r),new DataView(r.buffer)}function se(e){let t=Mr(e.array.slice(e.offset.value,e.offset.value+e.size)),n=new Uint8Array(t.length);return M(t),N(t,n),new DataView(n.buffer)}function z(e){let r=e.viewer,i={value:e.offset.value},a=new Uint16Array(e.columns*e.lines*(e.inputChannels.length*e.type)),o=new Uint8Array(n),s=0,c=Array(e.inputChannels.length);for(let t=0,n=e.inputChannels.length;t=n)throw Error(`Something is wrong with PIZ_COMPRESSION BITMAP_SIZE`);if(u<=d)for(let e=0;e0;){let e=ue(t.buffer,n),r=he(t,n),i=r>>2&3,s=(r>>4)-1,c=new Int8Array([s])[0],l=he(t,n);a.push({name:e,index:c,type:l,compression:i}),o-=e.length+3}let s=He.channels,c=Array(e.inputChannels.length);for(let t=0;t=0&&(l.idx[r.index]=t),e.offset=t)}}let u,d,f;if(i.acCompressedSize>0)switch(i.acCompression){case 0:u=new Uint16Array(i.totalAcUncompressedCount),A(e.array,t,n,i.acCompressedSize,u,i.totalAcUncompressedCount);break;case 1:let r=Mr(e.array.slice(n.value,n.value+i.totalAcUncompressedCount));u=new Uint16Array(r.buffer),n.value+=i.totalAcUncompressedCount;break}if(i.dcCompressedSize>0){let t={array:e.array,offset:n,size:i.dcCompressedSize};d=new Uint16Array(se(t).buffer),n.value+=i.dcCompressedSize}i.rleRawSize>0&&(f=P(Mr(e.array.slice(n.value,n.value+i.rleCompressedSize)).buffer),n.value+=i.rleCompressedSize);let p=0,m=Array(c.length);for(let e=0;e>10,n=e&1023;return(e>>15?-1:1)*(t?t===31?n?NaN:1/0:2**(t-15)*(1+n/1024):n/1024*6103515625e-14)}function ve(e,t){let n=e.getUint16(t.value,!0);return t.value+=2,n}function ye(e,t){return U(ve(e,t))}function be(e,t,n,r){let i=n.value,a=[];for(;n.value>4]}}function Oe(e,t){return[H(e,t),H(e,t)]}function ke(e,t){return[H(e,t),H(e,t),H(e,t)]}function Ae(e,t,n,r,i){if(r===`string`||r===`stringvector`||r===`iccProfile`)return de(t,n,i);if(r===`chlist`)return be(e,t,n,i);if(r===`chromaticities`)return Se(e,n);if(r===`compression`)return Ce(e,n);if(r===`box2i`)return we(e,n);if(r===`envmap`)return Ee(e,n);if(r===`tiledesc`)return De(e,n);if(r===`lineOrder`)return Te(e,n);if(r===`float`)return H(e,n);if(r===`v2f`)return Oe(e,n);if(r===`v3f`)return ke(e,n);if(r===`int`)return B(e,n);if(r===`rational`)return fe(e,n);if(r===`timecode`)return pe(e,n);if(r===`preview`)return n.value+=i,`skipped`;n.value+=i}function je(e,t){let n=Math.log2(e);return t==`ROUND_DOWN`?Math.floor(n):Math.ceil(n)}function Me(e,t,n){let r=0;switch(e.levelMode){case`ONE_LEVEL`:r=1;break;case`MIPMAP_LEVELS`:r=je(Math.max(t,n),e.roundingMode)+1;break;case`RIPMAP_LEVELS`:throw Error(`THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.`)}return r}function Ne(e,t,n,r){let i=Array(e);for(let a=0;ae.width?e.width-a:e.blockWidth,e.lines=o+e.blockHeight>e.height?e.height-o:e.blockHeight;let s=e.columns*e.totalBytes,c=e.sizee.height?e.height-i:e.blockHeight;let a=e.columns*e.totalBytes,o=e.size=e.height)continue;let c=t*a,l=(e.height-1-s)*e.outLineWidth;for(let t=0;te:o.scanOrder=e=>o.height-1-e,o.outputChannels==4?(o.format=E,o.colorSpace=i):(o.format=Ue,o.colorSpace=``),e.spec.singleTile){o.blockHeight=e.tiles.ySize,o.blockWidth=e.tiles.xSize;let n=Me(e.tiles,o.width,o.height),i=Ne(n,o.width,e.tiles.xSize,e.tiles.roundingMode),a=Ne(n,o.height,e.tiles.ySize,e.tiles.roundingMode);o.tileCount=i[0]*a[0];for(let e=0;e(i=s.indexOf(` +`))&&a=e.byteLength||!(l=n(e)))&&t(1,`no header found`),(u=l.match(r))||t(3,`bad initial token`),c.valid|=1,c.programtype=u[1],c.string+=l+` +`;l=n(e),!1!==l;){if(c.string+=l+` +`,l.charAt(0)===`#`){c.comments+=l+` +`;continue}if((u=l.match(i))&&(c.gamma=parseFloat(u[1])),(u=l.match(a))&&(c.exposure=parseFloat(u[1])),(u=l.match(o))&&(c.valid|=2,c.format=u[1]),(u=l.match(s))&&(c.valid|=4,c.height=parseInt(u[1],10),c.width=parseInt(u[2],10)),c.valid&2&&c.valid&4)break}return c.valid&2||t(3,`missing format specifier`),c.valid&4||t(3,`missing image size specifier`),c},i=function(e,n,r){let i=n;if(i<8||i>32767||e[0]!==2||e[1]!==2||e[2]&128)return new Uint8Array(e);i!==(e[2]<<8|e[3])&&t(3,`wrong scanline width`);let a=new Uint8Array(4*n*r);a.length||t(4,`unable to allocate buffer space`);let o=0,s=0,c=4*i,l=new Uint8Array(4),u=new Uint8Array(c),d=r;for(;d>0&&se.byteLength&&t(1),l[0]=e[s++],l[1]=e[s++],l[2]=e[s++],l[3]=e[s++],(l[0]!=2||l[1]!=2||(l[2]<<8|l[3])!=i)&&t(3,`bad rgbe scanline format`);let n=0,r;for(;n128;if(i&&(r-=128),(r===0||n+r>c)&&t(3,`bad scanline data`),i){let t=e[s++];for(let e=0;e{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=await Kr(a.profilePath),s;if(r){let t;if(t=e.handedness===`any`?o.layouts[Object.keys(o.layouts)[0]]:o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}}var Yr={xAxis:0,yAxis:0,button:0,state:X.ComponentState.DEFAULT};function Xr(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Zr=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===X.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Yr)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Xr(e,t);switch(this.componentProperty){case X.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case X.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case X.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case X.ComponentProperty.STATE:this.valueNodeProperty===X.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Qr=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Zr(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:X.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=X.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=X.ComponentState.PRESSED:(t.touched||this.values.button>X.ButtonTouchThreshold)&&(this.values.state=X.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===X.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>X.AxisTouchThreshold&&(this.values.state=X.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===X.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>X.AxisTouchThreshold&&(this.values.state=X.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},$r=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Qr(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},ei=new n,ti=new n,ni=new oe,ri=class extends u{constructor(e,t=1,n=16711680){let r=new M,i=e.geometry.attributes.normal.count,a=new B(i*2*3,3);r.setAttribute(`position`,a),super(r,new w({color:n,toneMapped:!1})),this.object=e,this.size=t,this.type=`VertexNormalsHelper`,this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),ni.getNormalMatrix(this.object.matrixWorld);let e=this.object.matrixWorld,t=this.geometry.attributes.position,n=this.object.geometry;if(n){let r=n.attributes.position,i=n.attributes.normal,a=0;for(let n=0,o=r.count;n=n[r])return r-1;if(t<=n[e])return e;let i=e,a=r,o=Math.floor((i+a)/2);for(;t=n[o+1];)t=a&&(c[i][0]=c[t][0]/s[u+1][l],r=c[i][0]*s[l][u]);let d=l>=-1?1:-l,f=e-1<=u?a-1:n-e;for(let e=d;e<=f;++e)c[i][e]=(c[t][e]-c[t][e-1])/s[u+1][l+e],r+=c[i][e]*s[l+e][u];e<=u&&(c[i][a]=-c[t][a-1]/s[u+1][e],r+=c[i][a]*s[e][u]),o[a][e]=r;let p=t;t=i,i=p}}let u=n;for(let e=1;e<=r;++e){for(let t=0;t<=n;++t)o[e][t]*=u;u*=n-e}return o}function ci(e,t,n,r,i){let a=i0,a=typeof i.Content==`string`&&i.Content!==``;if(e||a){let e=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let n in e){let r=e[n];t[r]===void 0?e[n]=e[n].split(`\\`).pop():e[n]=t[r]}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(`.`)+1).toLowerCase(),i;switch(r){case`bmp`:i=`image/bmp`;break;case`jpg`:case`jpeg`:i=`image/jpeg`;break;case`png`:i=`image/png`;break;case`tif`:i=`image/tiff`;break;case`tga`:this.manager.getHandler(`.tga`)===null&&console.warn(`FBXLoader: TGA loader not found, skipping `,n),i=`image/tga`;break;default:console.warn(`FBXLoader: Image type "`+r+`" is not supported.`);return}if(typeof t==`string`)return`data:`+i+`;base64,`+t;{let e=new Uint8Array(t);return window.URL.createObjectURL(new Blob([e],{type:i}))}}parseTextures(e){let t=new Map;if(`Texture`in Z.Objects){let n=Z.Objects.Texture;for(let r in n){let i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let r=e.WrapModeU,i=e.WrapModeV,a=r===void 0?0:r.value,o=i===void 0?0:i.value;if(n.wrapS=a===0?g:T,n.wrapT=o===0?g:T,`Scaling`in e){let t=e.Scaling.value;n.repeat.x=t[0],n.repeat.y=t[1]}if(`Translation`in e){let t=e.Translation.value;n.offset.x=t[0],n.offset.y=t[1]}return n}loadTexture(e,t){let n=new Set([`tga`,`tif`,`tiff`,`exr`,`dds`,`hdr`,`ktx2`]),r=e.FileName.split(`.`).pop().toLowerCase(),i=n.has(r)?this.manager.getHandler(`.${r}`):this.textureLoader;if(!i)return console.warn(`FBXLoader: ${r.toUpperCase()} loader not found, creating placeholder texture for`,e.RelativeFilename),new Ce;let a=i.path;a||i.setPath(this.textureLoader.path);let o=Q.get(e.id).children,s;o!==void 0&&o.length>0&&t[o[0].ID]!==void 0&&(s=t[o[0].ID],(s.indexOf(`blob:`)===0||s.indexOf(`data:`)===0)&&i.setPath(void 0));let c=i.load(s);return i.setPath(a),c}parseMaterials(e){let t=new Map;if(`Material`in Z.Objects){let n=Z.Objects.Material;for(let r in n){let i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let n=e.id,r=e.attrName,i=e.ShadingModel;if(typeof i==`object`&&(i=i.value),!Q.has(n))return null;let a=this.parseParameters(e,t,n),o;switch(i.toLowerCase()){case`phong`:o=new Re;break;case`lambert`:o=new U;break;default:console.warn(`THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.`,i),o=new Re;break}return o.setValues(a),o.name=r,o}parseParameters(t,n,r){let i={};t.BumpFactor&&(i.bumpScale=t.BumpFactor.value),t.Diffuse?i.color=y.toWorkingColorSpace(new e().fromArray(t.Diffuse.value),z):t.DiffuseColor&&(t.DiffuseColor.type===`Color`||t.DiffuseColor.type===`ColorRGB`)&&(i.color=y.toWorkingColorSpace(new e().fromArray(t.DiffuseColor.value),z)),t.DisplacementFactor&&(i.displacementScale=t.DisplacementFactor.value),t.Emissive?i.emissive=y.toWorkingColorSpace(new e().fromArray(t.Emissive.value),z):t.EmissiveColor&&(t.EmissiveColor.type===`Color`||t.EmissiveColor.type===`ColorRGB`)&&(i.emissive=y.toWorkingColorSpace(new e().fromArray(t.EmissiveColor.value),z)),t.EmissiveFactor&&(i.emissiveIntensity=parseFloat(t.EmissiveFactor.value)),t.Opacity&&(i.opacity=parseFloat(t.Opacity.value)),i.opacity<1&&(i.transparent=!0),t.ReflectionFactor&&(i.reflectivity=t.ReflectionFactor.value),t.Shininess&&(i.shininess=t.Shininess.value),t.Specular?i.specular=y.toWorkingColorSpace(new e().fromArray(t.Specular.value),z):t.SpecularColor&&t.SpecularColor.type===`Color`&&(i.specular=y.toWorkingColorSpace(new e().fromArray(t.SpecularColor.value),z));let a=this;return Q.get(r).children.forEach(function(e){let t=e.relationship;switch(t){case`Bump`:i.bumpMap=a.getTexture(n,e.ID);break;case`Maya|TEX_ao_map`:i.aoMap=a.getTexture(n,e.ID);break;case`DiffuseColor`:case`Maya|TEX_color_map`:i.map=a.getTexture(n,e.ID),i.map!==void 0&&(i.map.colorSpace=z);break;case`DisplacementColor`:i.displacementMap=a.getTexture(n,e.ID);break;case`EmissiveColor`:i.emissiveMap=a.getTexture(n,e.ID),i.emissiveMap!==void 0&&(i.emissiveMap.colorSpace=z);break;case`NormalMap`:case`Maya|TEX_normal_map`:i.normalMap=a.getTexture(n,e.ID);break;case`ReflectionColor`:i.envMap=a.getTexture(n,e.ID),i.envMap!==void 0&&(i.envMap.mapping=303,i.envMap.colorSpace=z);break;case`SpecularColor`:i.specularMap=a.getTexture(n,e.ID),i.specularMap!==void 0&&(i.specularMap.colorSpace=z);break;case`TransparentColor`:case`TransparencyFactor`:i.alphaMap=a.getTexture(n,e.ID),i.transparent=!0;break;default:console.warn(`THREE.FBXLoader: %s map is not supported in three.js, skipping texture.`,t);break}}),i}getTexture(e,t){return`LayeredTexture`in Z.Objects&&t in Z.Objects.LayeredTexture&&(console.warn(`THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.`),t=Q.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if(`Deformer`in Z.Objects){let n=Z.Objects.Deformer;for(let r in n){let i=n[r],a=Q.get(parseInt(r));if(i.attrType===`Skin`){let t=this.parseSkeleton(a,n);t.ID=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: skeleton attached to more than one geometry is not supported.`),t.geometryID=a.parents[0].ID,e[r]=t}else if(i.attrType===`BlendShape`){let e={id:r};e.rawTargets=this.parseMorphTargets(a,n),e.id=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: morph target attached to more than one geometry is not supported.`),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let n=[];return e.children.forEach(function(e){let r=t[e.ID];if(r.attrType!==`Cluster`)return;let i={ID:e.ID,indices:[],weights:[],transformLink:new R().fromArray(r.TransformLink.a)};`Indexes`in r&&(i.indices=r.Indexes.a,i.weights=r.Weights.a),n.push(i)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){let n=[];for(let r=0;r1?a=o:o.length>0?a=o[0]:(a=new Re({name:L.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(a)),`color`in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,n=i.groups.length;t=o.length)&&(n.materialIndex=o.length,e=!0)}if(e){let e=new Ee;o.push(e)}}return i.FBX_Deformer?(r=new Je(i,a),r.normalizeSkinWeights()):r=new ce(i,a),r}createCurve(e,t){return new je(e.children.reduce(function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e},null),new w({name:L.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1}))}getTransformData(e,t){let n={};`InheritType`in t&&(n.inheritType=parseInt(t.InheritType.value)),`RotationOrder`in t?n.eulerOrder=Ai(t.RotationOrder.value):n.eulerOrder=Ai(0),`Lcl_Translation`in t&&(n.translation=t.Lcl_Translation.value),`PreRotation`in t&&(n.preRotation=t.PreRotation.value),`Lcl_Rotation`in t&&(n.rotation=t.Lcl_Rotation.value),`PostRotation`in t&&(n.postRotation=t.PostRotation.value),`Lcl_Scaling`in t&&(n.scale=t.Lcl_Scaling.value),`ScalingOffset`in t&&(n.scalingOffset=t.ScalingOffset.value),`ScalingPivot`in t&&(n.scalingPivot=t.ScalingPivot.value),`RotationOffset`in t&&(n.rotationOffset=t.RotationOffset.value),`RotationPivot`in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){`LookAtProperty`in t&&Q.get(e.ID).children.forEach(function(t){if(t.relationship===`LookAtProperty`){let r=Z.Objects.Model[t.ID];if(`Lcl_Translation`in r){let t=r.Lcl_Translation.value;e.target===void 0?e.lookAt(new n().fromArray(t)):(e.target.position.fromArray(t),$.add(e.target))}}})}bindSkeleton(e,t,n){let r=this.parsePoseNodes();for(let i in e){let a=e[i];Q.get(parseInt(a.ID)).parents.forEach(function(e){if(t.has(e.ID)){let t=e.ID;Q.get(t).parents.forEach(function(e){n.has(e.ID)&&n.get(e.ID).bind(new Be(a.bones),r[e.ID])})}})}}parsePoseNodes(){let e={};if(`Pose`in Z.Objects){let t=Z.Objects.Pose;for(let n in t)if(t[n].attrType===`BindPose`&&t[n].NbPoseNodes>0){let r=t[n].PoseNode;Array.isArray(r)?r.forEach(function(t){e[t.Node]=new R().fromArray(t.Matrix.a)}):e[r.Node]=new R().fromArray(r.Matrix.a)}}return e}addGlobalSceneSettings(){if(`GlobalSettings`in Z){if(`AmbientColor`in Z.GlobalSettings){let t=Z.GlobalSettings.AmbientColor.value,n=t[0],r=t[1],i=t[2];if(n!==0||r!==0||i!==0){let t=new e().setRGB(n,r,i,z);$.add(new Ge(t,1))}}`UnitScaleFactor`in Z.GlobalSettings&&($.userData.unitScaleFactor=Z.GlobalSettings.UnitScaleFactor.value)}}},hi=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if(`Geometry`in Z.Objects){let n=Z.Objects.Geometry;for(let r in n){let i=Q.get(parseInt(r)),a=this.parseGeometry(i,n[r],e);t.set(parseInt(r),a)}}return this.negativeMaterialIndices===!0&&console.warn(`THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.`),t}parseGeometry(e,t,n){switch(t.attrType){case`Mesh`:return this.parseMeshGeometry(e,t,n);case`NurbsCurve`:return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let r=n.skeletons,i=[],a=e.parents.map(function(e){return Z.Objects.Model[e.ID]});if(a.length===0)return;let o=e.children.reduce(function(e,t){return r[t.ID]!==void 0&&(e=r[t.ID]),e},null);e.children.forEach(function(e){n.morphTargets[e.ID]!==void 0&&i.push(n.morphTargets[e.ID])});let s=a[0],c={};`RotationOrder`in s&&(c.eulerOrder=Ai(s.RotationOrder.value)),`InheritType`in s&&(c.inheritType=parseInt(s.InheritType.value)),`GeometricTranslation`in s&&(c.translation=s.GeometricTranslation.value),`GeometricRotation`in s&&(c.rotation=s.GeometricRotation.value),`GeometricScaling`in s&&(c.scale=s.GeometricScaling.value);let l=ki(c);return this.genGeometry(t,o,i,l)}genGeometry(e,t,n,r){let i=new M;e.attrName&&(i.name=e.attrName);let a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new B(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute(`position`,s),o.colors.length>0&&i.setAttribute(`color`,new B(o.colors,3)),t&&(i.setAttribute(`skinIndex`,new me(o.weightsIndices,4)),i.setAttribute(`skinWeight`,new B(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new oe().getNormalMatrix(r),t=new B(o.normal,3);t.applyNormalMatrix(e),i.setAttribute(`normal`,t)}if(o.uvs.forEach(function(e,t){let n=t===0?`uv`:`uv${t}`;i.setAttribute(n,new B(o.uvs[t],2))}),a.material&&a.material.mappingType!==`AllSame`){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(n,r){n!==e&&(i.addGroup(t,r-t,e),e=n,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],n=t.start+t.count;n!==o.materialIndex.length&&i.addGroup(n,o.materialIndex.length-n,e)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices===void 0?[]:e.Vertices.a,n.vertexIndices=e.PolygonVertexIndex===void 0?[]:e.PolygonVertexIndex.a,e.LayerElementColor&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],u=[],d=this;return e.vertexIndices.forEach(function(f,p){let m,h=!1;f<0&&(f^=-1,h=!0);let g=[],_=[];if(a.push(f*3,f*3+1,f*3+2),e.color){let t=Ei(p,n,f,e.color);s.push(t[0],t[1],t[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(e){_.push(e.weight),g.push(e.id)}),_.length>4){i||=(console.warn(`THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.`),!0);let e=[0,0,0,0],t=[0,0,0,0];_.forEach(function(n,r){let i=n,a=g[r];t.forEach(function(t,n,r){if(i>t){r[n]=i,i=t;let o=e[n];e[n]=a,a=o}})}),g=e,_=t}for(;_.length<4;)_.push(0),g.push(0);for(let e=0;e<4;++e)l.push(_[e]),u.push(g[e])}if(e.normal){let t=Ei(p,n,f,e.normal);o.push(t[0],t[1],t[2])}e.material&&e.material.mappingType!==`AllSame`&&(m=Ei(p,n,f,e.material)[0],m<0&&(d.negativeMaterialIndices=!0,m=0)),e.uv&&e.uv.forEach(function(e,t){let r=Ei(p,n,f,e);c[t]===void 0&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])}),r++,h&&(d.genFace(t,e,a,m,o,s,c,l,u,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],u=[])}),t}getNormalNewell(e){let t=new n(0,0,0);for(let n=0;n.5?new n(0,1,0):new n(0,0,1)).cross(t).normalize();return{normal:t,tangent:r,bitangent:t.clone().cross(r).normalize()}}flattenVertex(e,t,n){return new Ne(e.dot(t),e.dot(n))}genFace(e,t,r,i,a,o,s,c,l,u){let d;if(u>3){let e=[],i=t.baseVertexPositions||t.vertexPositions;for(let t=0;t1&&console.warn(`THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.`);let a=e.get(i[0].ID);n[r]={name:t[r].attrName,layer:a}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(e){t=t.concat(n.generateTracks(e))}),new Te(e.name,-1,t)}generateTracks(e){let t=[],r=new n,i=new n;if(e.transform&&e.transform.decompose(r,new Ze,i),r=r.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let n=this.generateVectorTrack(e.modelName,e.T.curves,r,`position`);n!==void 0&&t.push(n)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let n=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);n!==void 0&&t.push(n)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let n=this.generateVectorTrack(e.modelName,e.S.curves,i,`scale`);n!==void 0&&t.push(n)}if(e.DeformPercent!==void 0){let n=this.generateMorphTrack(e);n!==void 0&&t.push(n)}return t}generateVectorTrack(e,t,n,r){let i=this.getTimesForAllAxes(t),a=this.getKeyframeTrackValues(i,t,n);return new x(e+`.`+r,i,a)}generateRotationTrack(e,t,n,r,i){let a,o;if(t.x===void 0||t.y===void 0||t.z===void 0){console.warn(`THREE.FBXLoader: Missing rotation curves `+(t.x===void 0?`x `:``)+(t.y===void 0?`y `:``)+(t.z===void 0?`z `:``)+` for animation of `+e+`. This is currently not supported.`);return}if(t.x!==void 0&&t.y!==void 0&&t.z!==void 0){let e=this.interpolateRotations(t.x,t.y,t.z,i);a=e[0],o=e[1]}let s=Ai(0);n!==void 0&&(n=n.map(_.degToRad),n.push(s),n=new Ye().fromArray(n),n=new Ze().setFromEuler(n)),r!==void 0&&(r=r.map(_.degToRad),r.push(s),r=new Ye().fromArray(r),r=new Ze().setFromEuler(r).invert());let c=new Ze,l=new Ye,u=[];if(!(!o||!a)){for(let e=0;e2&&new Ze().fromArray(u,(e-3)/3*4).dot(c)<0&&c.set(-c.x,-c.y,-c.z,-c.w),c.toArray(u,e/3*4);return new P(e+`.quaternion`,a,u)}}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(e){return e/100}),r=$.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new H(e.modelName+`.morphTargetInfluences[`+r+`]`,t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(e,t){return e-t}),t.length>1){let e=1,n=t[0];for(let r=1;r=180||f[1]>=180||f[2]>=180){let t=Math.max(...f)/180,n=new Ye(...c,r),s=new Ye(...u,r),l=new Ze().setFromEuler(n),d=new Ze().setFromEuler(s);l.dot(d)&&d.set(-d.x,-d.y,-d.z,-d.w);let p=e.times[o-1],m=e.times[o]-p,h=new Ze,g=new Ye;for(let e=0;e<1;e+=1/t)h.copy(l.clone().slerp(d.clone(),e)),i.push(p+e*m),g.setFromQuaternion(h,r),a.push(g.x),a.push(g.y),a.push(g.z)}else i.push(e.times[o]),a.push(_.degToRad(e.values[o])),a.push(_.degToRad(t.values[o])),a.push(_.degToRad(n.values[o]))}return[i,a]}},_i=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),--this.currentIndent}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new bi,this.nodeStack=[],this.currentProp=[],this.currentPropName=``;let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),a=e.match(/^[\s\t]*$/);if(i||a)return;let o=e.match(`^\\t{`+t.currentIndent+`}(\\w+):(.*){`,``),s=e.match(`^\\t{`+t.currentIndent+`}(\\w+):[\\s\\t\\r\\n](.*)`),c=e.match(`^\\t{`+(t.currentIndent-1)+`}}`);o?t.parseNodeBegin(e,o):s?t.parseNodeProperty(e,s,n[++r]):c?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,``).replace(/"$/,``),r=t[2].split(`,`).map(function(e){return e.trim().replace(/^"/,``).replace(/"$/,``)}),i={name:n},a=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n===`PoseNode`?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),a.id!==``&&(o[n][a.id]=i)):typeof a.id==`number`?(o[n]={},o[n][a.id]=i):n!==`Properties70`&&(n===`PoseNode`?o[n]=[i]:o[n]=i),typeof a.id==`number`&&(i.id=a.id),a.name!==``&&(i.attrName=a.name),a.type!==``&&(i.attrType=a.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==``&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n=``,r=``;return e.length>1&&(n=e[1].replace(/^(\w+)::/,``),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,``).replace(/"$/,``).trim(),i=t[2].replace(/^"/,``).replace(/"$/,``).trim();r===`Content`&&i===`,`&&(i=n.replace(/"/g,``).replace(/,$/,``).trim());let a=this.getCurrentNode();if(a.name===`Properties70`){this.parseNodeSpecialProperty(e,r,i);return}if(r===`C`){let e=i.split(`,`).slice(1),t=parseInt(e[0]),n=parseInt(e[1]),o=i.split(`,`).slice(3);o=o.map(function(e){return e.trim().replace(/^"/,``)}),r=`connections`,i=[t,n],Ni(i,o),a[r]===void 0&&(a[r]=[])}r===`Node`&&(a.id=i),r in a&&Array.isArray(a[r])?a[r].push(i):r===`a`?a.a=i:a[r]=i,this.setCurrentProp(a,r),r===`a`&&i.slice(-1)!==`,`&&(a.a=ji(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==`,`&&(t.a=ji(t.a))}parseNodeSpecialProperty(e,t,n){let r=n.split(`",`).map(function(e){return e.trim().replace(/^\"/,``).replace(/\s/,`_`)}),i=r[0],a=r[1],o=r[2],s=r[3],c=r[4];switch(a){case`int`:case`enum`:case`bool`:case`ULongLong`:case`double`:case`Number`:case`FieldOfView`:c=parseFloat(c);break;case`Color`:case`ColorRGB`:case`Vector3D`:case`Lcl_Translation`:case`Lcl_Rotation`:case`Lcl_Scaling`:c=ji(c);break}this.getPrevNode()[i]={type:a,type2:o,flag:s,value:c},this.setCurrentProp(this.getPrevNode(),i)}},vi=class{parse(e){let t=new yi(e);t.skip(23);let n=t.getUint32();if(n<6400)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+n);let r=new bi;for(;!this.endOfContent(t);){let e=this.parseNode(t,n);e!==null&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let a=e.getUint8(),o=e.getString(a);if(r===0)return null;let s=[];for(let t=0;t0?s[0]:``,l=s.length>1?s[1]:``,u=s.length>2?s[2]:``;for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);r!==null&&this.parseSubNode(o,n,r)}return n.propertyList=s,typeof c==`number`&&(n.id=c),l!==``&&(n.attrName=l),u!==``&&(n.attrType=u),o!==``&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let e=n.propertyList[0];Array.isArray(e)?(t[n.name]=n,n.a=e):t[n.name]=e}else if(e===`Connections`&&n.name===`C`){let e=[];n.propertyList.forEach(function(t,n){n!==0&&e.push(t)}),t.connections===void 0&&(t.connections=[]),t.connections.push(e)}else if(n.name===`Properties70`)Object.keys(n).forEach(function(e){t[e]=n[e]});else if(e===`Properties70`&&n.name===`P`){let e=n.propertyList[0],r=n.propertyList[1],i=n.propertyList[2],a=n.propertyList[3],o;e.indexOf(`Lcl `)===0&&(e=e.replace(`Lcl `,`Lcl_`)),r.indexOf(`Lcl `)===0&&(r=r.replace(`Lcl `,`Lcl_`)),o=r===`Color`||r===`ColorRGB`||r===`Vector`||r===`Vector3D`||r.indexOf(`Lcl_`)===0?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[e]={type:r,type2:i,flag:a,value:o}}else t[n.name]===void 0?typeof n.id==`number`?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name===`PoseNode`?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case`C`:return e.getBoolean();case`D`:return e.getFloat64();case`F`:return e.getFloat32();case`I`:return e.getInt32();case`L`:return e.getInt64();case`R`:return n=e.getUint32(),e.getArrayBuffer(n);case`S`:return n=e.getUint32(),e.getString(n);case`Y`:return e.getInt16();case`b`:case`c`:case`d`:case`f`:case`i`:case`l`:let r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(i===0)switch(t){case`b`:case`c`:return e.getBooleanArray(r);case`d`:return e.getFloat64Array(r);case`f`:return e.getFloat32Array(r);case`i`:return e.getInt32Array(r);case`l`:return e.getInt64Array(r)}let o=new yi(Mr(new Uint8Array(e.getArrayBuffer(a))).buffer);switch(t){case`b`:case`c`:return o.getBooleanArray(r);case`d`:return o.getFloat64Array(r);case`f`:return o.getFloat32Array(r);case`i`:return o.getInt32Array(r);case`l`:return o.getInt64Array(r)}break;default:throw Error(`THREE.FBXLoader: Unknown property type `+t)}}},yi=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t===void 0?!0:t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)==1}getBooleanArray(e){let t=[];for(let n=0;n=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}},bi=class{add(e,t){this[e]=t}};function xi(e){return e.byteLength>=21&&Mi(e,0,21)===`Kaydara FBX Binary \0`}function Si(e){let t=[`K`,`a`,`y`,`d`,`a`,`r`,`a`,`\\`,`F`,`B`,`X`,`\\`,`B`,`i`,`n`,`a`,`r`,`y`,`\\`,`\\`],n=0;function r(t){let r=e[t-1];return e=e.slice(n+t),n++,r}for(let e=0;e=0?t.substring(0,o):t;s=s.toLowerCase();let c=o>=0?t.substring(o+1):``;if(c=c.trim(),s===`newmtl`)r={name:c},a[c]=r;else if(s===`ka`||s===`kd`||s===`ks`||s===`ke`){let e=c.split(i,3);r[s]=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])]}else r[s]=c}let o=new Ii(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},Ii=class{constructor(e=``,t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin=`anonymous`,this.side=this.options.side===void 0?0:this.options.side,this.wrap=this.options.wrap===void 0?g:this.options.wrap}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let n in e){let r=e[n],i={};t[n]=i;for(let e in r){let t=!0,n=r[e],a=e.toLowerCase();switch(a){case`kd`:case`ka`:case`ks`:this.options&&this.options.normalizeRGB&&(n=[n[0]/255,n[1]/255,n[2]/255]),this.options&&this.options.ignoreZeroRGBs&&n[0]===0&&n[1]===0&&n[2]===0&&(t=!1);break;default:break}t&&(i[a]=n)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(t){let n=this,r=this.materialsInfo[t],i={name:t,side:this.side};function a(e,t){return typeof t!=`string`||t===``?``:/^https?:\/\//i.test(t)?t:e+t}function o(e,t){if(i[e])return;let r=n.getTextureParams(t,i),o=n.loadTexture(a(n.baseUrl,r.url));o.repeat.copy(r.scale),o.offset.copy(r.offset),o.wrapS=n.wrap,o.wrapT=n.wrap,(e===`map`||e===`emissiveMap`)&&(o.colorSpace=z),i[e]=o}for(let t in r){let n=r[t],a;if(n!==``)switch(t.toLowerCase()){case`kd`:i.color=y.toWorkingColorSpace(new e().fromArray(n),z);break;case`ks`:i.specular=y.toWorkingColorSpace(new e().fromArray(n),z);break;case`ke`:i.emissive=y.toWorkingColorSpace(new e().fromArray(n),z);break;case`map_kd`:o(`map`,n);break;case`map_ks`:o(`specularMap`,n);break;case`map_ke`:o(`emissiveMap`,n);break;case`norm`:o(`normalMap`,n);break;case`map_bump`:case`bump`:o(`bumpMap`,n);break;case`map_d`:o(`alphaMap`,n),i.transparent=!0;break;case`ns`:i.shininess=parseFloat(n);break;case`d`:a=parseFloat(n),a<1&&(i.opacity=a,i.transparent=!0);break;case`tr`:a=parseFloat(n),this.options&&this.options.invertTrProperty&&(a=1-a),a>0&&(i.opacity=1-a,i.transparent=!0);break;default:break}}return this.materials[t]=new Re(i),this.materials[t]}getTextureParams(e,t){let n={scale:new Ne(1,1),offset:new Ne(0,0)},r=e.split(/\s+/),i;return i=r.indexOf(`-bm`),i>=0&&(t.bumpScale=parseFloat(r[i+1]),r.splice(i,2)),i=r.indexOf(`-s`),i>=0&&(n.scale.set(parseFloat(r[i+1]),parseFloat(r[i+2])),r.splice(i,4)),i=r.indexOf(`-o`),i>=0&&(n.offset.set(parseFloat(r[i+1]),parseFloat(r[i+2])),r.splice(i,4)),n.url=r.join(` `).trim(),n}loadTexture(e,t,n,r,i){let a=this.manager===void 0?He:this.manager,o=a.getHandler(e);o===null&&(o=new ue(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let s=o.load(e,n,r,i);return t!==void 0&&(s.mapping=t),s}},Li=/^[og]\s*(.+)?/,Ri=/^mtllib /,zi=/^usemtl /,Bi=/^usemap /,Vi=/\s+/,Hi=new n,Ui=new n,Wi=new n,Gi=new n,Ki=new n,qi=new e;function Ji(){let e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let n=this.object&&typeof this.object.currentMaterial==`function`?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize==`function`&&this.object._finalize(!0),this.object={name:e||``,fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){let n=this._finalize(!1);n&&(n.inherited||n.groupCount<=0)&&this.materials.splice(n.index,1);let r={index:this.materials.length,name:e||``,mtllib:Array.isArray(t)&&t.length>0?t[t.length-1]:``,smooth:n===void 0?this.smooth:n.smooth,groupStart:n===void 0?0:n.groupEnd,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){let t={index:typeof e==`number`?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(r),r},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){let t=this.currentMaterial();if(t&&t.groupEnd===-1&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(let e=this.materials.length-1;e>=0;e--)this.materials[e].groupCount<=0&&this.materials.splice(e,1);return e&&this.materials.length===0&&this.materials.push({name:``,smooth:this.smooth}),t}},n&&n.name&&typeof n.clone==`function`){let e=n.clone(0);e.inherited=!0,this.object.materials.push(e)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize==`function`&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){let n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){let r=this.vertices,i=this.object.geometry.vertices;i.push(r[e+0],r[e+1],r[e+2]),i.push(r[t+0],r[t+1],r[t+2]),i.push(r[n+0],r[n+1],r[n+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){let r=this.normals,i=this.object.geometry.normals;i.push(r[e+0],r[e+1],r[e+2]),i.push(r[t+0],r[t+1],r[t+2]),i.push(r[n+0],r[n+1],r[n+2])},addFaceNormal:function(e,t,n){let r=this.vertices,i=this.object.geometry.normals;Hi.fromArray(r,e),Ui.fromArray(r,t),Wi.fromArray(r,n),Ki.subVectors(Wi,Ui),Gi.subVectors(Hi,Ui),Ki.cross(Gi),Ki.normalize(),i.push(Ki.x,Ki.y,Ki.z),i.push(Ki.x,Ki.y,Ki.z),i.push(Ki.x,Ki.y,Ki.z)},addColor:function(e,t,n){let r=this.colors,i=this.object.geometry.colors;r[e]!==void 0&&i.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&i.push(r[t+0],r[t+1],r[t+2]),r[n]!==void 0&&i.push(r[n+0],r[n+1],r[n+2])},addUV:function(e,t,n){let r=this.uvs,i=this.object.geometry.uvs;i.push(r[e+0],r[e+1]),i.push(r[t+0],r[t+1]),i.push(r[n+0],r[n+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,r,i,a,o,s,c){let l=this.vertices.length,u=this.parseVertexIndex(e,l),d=this.parseVertexIndex(t,l),f=this.parseVertexIndex(n,l);if(this.addVertex(u,d,f),this.addColor(u,d,f),o!==void 0&&o!==``){let e=this.normals.length;u=this.parseNormalIndex(o,e),d=this.parseNormalIndex(s,e),f=this.parseNormalIndex(c,e),this.addNormal(u,d,f)}else this.addFaceNormal(u,d,f);if(r!==void 0&&r!==``){let e=this.uvs.length;u=this.parseUVIndex(r,e),d=this.parseUVIndex(i,e),f=this.parseUVIndex(a,e),this.addUV(u,d,f),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type=`Points`;let t=this.vertices.length;for(let n=0,r=e.length;n{i.materialsLoader.load(a.toString(),t=>{i.setMaterials(t),e()},null,t)})}t(i.createObjects(r))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}setMTLLoader(e){return this.materialsLoader=e,this}setMaterials(e){return this.materials=e,this}parse(e,t=!1){let n=new Ji;e.indexOf(`\r +`)!==-1&&(e=e.replace(/\r\n/g,` +`)),e.indexOf(`\\ +`)!==-1&&(e=e.replace(/\\\n/g,``));let r=e.split(` +`),i=[];for(let e=0,t=r.length;e=7?(qi.setRGB(parseFloat(e[4]),parseFloat(e[5]),parseFloat(e[6]),z),n.colors.push(qi.r,qi.g,qi.b)):n.colors.push(void 0,void 0,void 0);break;case`vn`:n.normals.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]));break;case`vt`:n.uvs.push(parseFloat(e[1]),parseFloat(e[2]));break}}else if(a===`f`){let e=t.slice(1).trim().split(Vi),r=[];for(let t=0,n=e.length;t0){let e=n.split(`/`);r.push(e)}}let i=r[0];for(let e=1,t=r.length-1;e1){let e=i[1].trim().toLowerCase();n.object.smooth=e!==`0`&&e!==`off`}else n.object.smooth=!0;let e=n.object.currentMaterial();e&&(e.smooth=n.object.smooth)}else{if(t===`\0`)continue;console.warn(`THREE.OBJLoader: Unexpected line: "`+t+`"`)}}return n.finalize(),t?n:this.createObjects(n)}createObjects(e){let t=new _e;if(t.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0))for(let n=0,r=e.objects.length;n0&&l.setAttribute(`normal`,new B(i.normals,3)),i.colors.length>0&&(c=!0,l.setAttribute(`color`,new B(i.colors,3))),i.hasUVIndices===!0&&l.setAttribute(`uv`,new B(i.uvs,2));let d=[];for(let t=0,n=a.length;t1){for(let e=0,t=a.length;e0){let n=new tt({size:1,sizeAttenuation:!1}),r=new M;r.setAttribute(`position`,new B(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(r.setAttribute(`color`,new B(e.colors,3)),n.vertexColors=!0);let i=new V(r,n);t.add(i)}return t}};export{st as C,lt as S,Fn as _,$r as a,un as b,Wr as c,Vr as d,Ir as f,In as g,Ln as h,X as i,Ur as l,Rn as m,pi as n,Jr as o,Br as p,ri as r,Gr as s,Yi as t,Hr as u,Pn as v,cn as x,On as y}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/three-examples@0.169.19.js.gz b/Needle/SampleScene/dist/assets/three-examples@0.169.19.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ebed6e4514953b28d6603ce8bc9d069fcee4415e GIT binary patch literal 79588 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 Gq5}Y5HbB(? literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js b/Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js new file mode 100644 index 0000000..cc8e60f --- /dev/null +++ b/Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js @@ -0,0 +1 @@ +import{Ar as e,En as t,Ft as n,Gn as r,Mt as i,Pt as a,S as o,Xt as s,Yt as c,Zt as l,_ as u,_n as d,bn as f,jr as p,jt as m,kr as h,lr as g,m as _,x as v,yr as y}from"./three@0.169.19.js";var b=1.25,x=65535;x<<16;var S=2**-24,C=Symbol(`SKIP_GENERATION`),w={strategy:0,maxDepth:40,maxLeafSize:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null,[C]:!1};function T(e,t,n){return n.min.x=t[e],n.min.y=t[e+1],n.min.z=t[e+2],n.max.x=t[e+3],n.max.y=t[e+4],n.max.z=t[e+5],n}function ee(e){let t=-1,n=-1/0;for(let r=0;r<3;r++){let i=e[r+3]-e[r];i>n&&(n=i,t=r)}return t}function te(e,t){t.set(e)}function ne(e,t,n){let r,i;for(let a=0;a<3;a++){let o=a+3;r=e[a],i=t[a],n[a]=ri?r:i}}function E(e,t,n){for(let r=0;r<3;r++){let i=t[e+2*r],a=t[e+2*r+1],o=i-a,s=i+a;on[r+3]&&(n[r+3]=s)}}function D(e){let t=e[3]-e[0],n=e[4]-e[1],r=e[5]-e[2];return 2*(t*n+n*r+r*t)}function O(e,t){return t[e+15]===x}function k(e,t){return t[e+6]}function A(e,t){return t[e+14]}function j(e){return e+8}function M(e,t){return e+t[e+6]*8}function re(e,t){return t[e+7]}function N(e){return e}function ie(e,t,n,r,i){let a=1/0,o=1/0,s=1/0,c=-1/0,l=-1/0,u=-1/0,d=1/0,f=1/0,p=1/0,m=-1/0,h=-1/0,g=-1/0,_=e.offset||0;for(let r=(t-_)*6,i=(t+n-_)*6;rc&&(c=_),tm&&(m=t);let v=e[r+2],y=e[r+3],b=v-y,x=v+y;bl&&(l=x),vh&&(h=v);let S=e[r+4],C=e[r+5],w=S-C,T=S+C;wu&&(u=T),Sg&&(g=S)}r[0]=a,r[1]=o,r[2]=s,r[3]=c,r[4]=l,r[5]=u,i[0]=d,i[1]=f,i[2]=p,i[3]=m,i[4]=h,i[5]=g}var P=32,ae=(e,t)=>e.candidate-t.candidate,F=Array(P).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),oe=new Float32Array(6);function se(e,t,n,r,i,a){let o=-1,s=0;if(a===0)o=ee(t),o!==-1&&(s=(t[o]+t[o+3])/2);else if(a===1)o=ee(e),o!==-1&&(s=ce(n,r,i,o));else if(a===2){let a=D(e),c=b*i,l=n.offset||0,u=(r-l)*6,d=(r+i-l)*6;for(let e=0;e<3;e++){let r=t[e],l=(t[e+3]-r)/P;if(i

=a.candidate?E(r,n,a.rightCacheBounds):(E(r,n,a.leftCacheBounds),a.count++)}}for(let n=0;n=P&&(i=P-1);let a=F[i];a.count++,E(t,n,a.bounds)}let t=F[P-1];te(t.bounds,t.rightCacheBounds);for(let e=P-2;e>=0;e--){let t=F[e],n=F[e+1];ne(t.bounds,n.rightCacheBounds,t.rightCacheBounds)}let f=0;for(let t=0;t=c;)s--;if(ohe)throw Error(`MeshBVH: Cannot store relative child node offset greater than 32 bits.`);return fe[n+6]=c,fe[n+7]=a,ve(o,i)}}function ye(e,t,n,r,i){let{maxDepth:a,verbose:o,maxLeafSize:s,strategy:c,onProgress:l}=i,u=e.primitiveBuffer,d=e.primitiveBufferStride,f=new Float32Array(6),p=!1,m=new le;return ie(t,n,r,m.boundingData,f),g(m,n,r,f),m;function h(e){l&&l(e/r)}function g(e,n,r,i=null,l=0){if(!p&&l>=a&&(p=!0,o&&console.warn(`BVH: Max depth of ${a} reached when generating BVH. Consider increasing maxDepth.`)),r<=s||l>=a)return h(n+r),e.offset=n,e.count=r,e;let m=se(e.boundingData,i,t,n,r,c);if(m.axis===-1)return h(n+r),e.offset=n,e.count=r,e;let _=ue(u,d,t,n,r,m);if(_===n||_===n+r)h(n+r),e.offset=n,e.count=r;else{e.splitAxis=m.axis;let i=new le,a=n,o=_-n;e.left=i,ie(t,a,o,i.boundingData,f),g(i,a,o,f,l+1);let s=new le,c=_,u=r-o;e.right=s,ie(t,c,u,s.boundingData,f),g(s,c,u,f,l+1)}return e}}function be(e,t){let n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,r=e.getRootRanges(t.range),i=r[0],a=r[r.length-1],o={offset:i.offset,count:a.offset+a.count-i.offset},s=new Float32Array(6*o.count);s.offset=o.offset,e.computePrimitiveBounds(o.offset,o.count,s),e._roots=r.map(r=>{let i=ye(e,s,r.offset,r.count,t),a=new n(32*ge(i));return _e(0,i,a),a})}var xe=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}},I=new class{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;let e=[],t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}},L,Se,Ce=[],we=new xe(()=>new u);function Te(e,t,n,r,i,a){L=we.getPrimitive(),Se=we.getPrimitive(),Ce.push(L,Se),I.setBuffer(e._roots[t]);let o=Ee(0,e.geometry,n,r,i,a);I.clearBuffer(),we.releasePrimitive(L),we.releasePrimitive(Se),Ce.pop(),Ce.pop();let s=Ce.length;return s>0&&(Se=Ce[s-1],L=Ce[s-2]),o}function Ee(e,t,n,r,i=null,a=0,o=0){let{float32Array:s,uint16Array:c,uint32Array:l}=I,u=e*2;if(O(u,c)){let t=k(e,l),n=A(u,c);return T(N(e),s,L),r(t,n,!1,o,a+e/8,L)}else{let u=j(e),d=M(e,l),f=u,p=d,m,h,g,_;if(i&&(g=L,_=Se,T(N(f),s,g),T(N(p),s,_),m=i(g),h=i(_),hnew u),ke=new u,Ae=new u,je=new u,Me=new u,Ne=!1;function Pe(e,t,n,r){if(Ne)throw Error(`MeshBVH: Recursive calls to bvhcast not supported.`);Ne=!0;let i=e._roots,a=t._roots,o,c=0,l=0,u=new s().copy(n).invert();for(let e=0,t=i.length;es&&(s=u),tc&&(c=d),rl&&(l=f)}return n[r+0]=i,n[r+1]=a,n[r+2]=o,n[r+3]=s,n[r+4]=c,n[r+5]=l,n}computePrimitiveBounds(e,t,n){let r=n.offset||0;for(let i=e,a=e+t;i=0;e--){let t=e*8,n=t*2;if(O(n,i)){let e=k(t,r),o=A(n,i);this.writePrimitiveRangeBounds(e,o,Ie,0),a.set(Ie,t)}else{let e=j(t),n=M(t,r);for(let r=0;r<3;r++){let i=a[e+r],o=a[e+r+3],s=a[n+r],c=a[n+r+3];a[t+r]=ic?o:c}}}}}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{T(0,new Float32Array(t),Fe),e.union(Fe)}),e}shapecast(e){let{boundsTraverseOrder:t,intersectsBounds:n,intersectsRange:r,intersectsPrimitive:i,scratchPrimitive:a,iterate:o}=e;if(r&&i){let e=r;r=(t,n,r,s,c)=>e(t,n,r,s,c)?!0:o(t,n,this,i,r,s,a)}else r||=i?(e,t,n,r)=>o(e,t,this,i,n,r,a):(e,t,n)=>n;let s=!1,c=0,l=this._roots;for(let e=0,i=l.length;e65535?new Uint32Array(new t(4*e)):new Uint16Array(new t(2*e))}function He(e,t){if(!e.index){let n=e.attributes.position.count,r=Ve(n,t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);e.setIndex(new v(r,1));for(let e=0;e({offset:e.start/t,count:e.count/t}))}function Ge(e,t,n){let r=Ue(e,t,n),i=We(e,n);if(!i.length)return[r];let a=[],o=r.offset,s=r.offset+r.count,c=ze(e)/n,l=[];for(let e of i){let{offset:t,count:n}=e,r=t,i=t+(isFinite(n)?n:c-t);ro&&(l.push({pos:Math.max(o,r),isStart:!0}),l.push({pos:Math.min(s,i),isStart:!1}))}l.sort((e,t)=>e.pos===t.pos?e.type===`end`?-1:1:e.pos-t.pos);let u=0,d=null;for(let e of l){let t=e.pos;u!==0&&t!==d&&a.push({offset:d,count:t-d}),u+=e.isStart?1:-1,d=t}return a}function Ke(e,t){let n=e[e.length-1],r=n.offset+n.count>2**16,i=e.reduce((e,t)=>e+t.count,0),a=r?4:2,o=t?new SharedArrayBuffer(i*a):new ArrayBuffer(i*a),s=r?new Uint32Array(o):new Uint16Array(o),c=0;for(let t=0;tthis._indirectBuffer[e]:e=>e,this.primitiveBuffer=null,this.primitiveBufferStride=null,this._indirectBuffer=null,t={...w,...t},t[C]||this.init(t)}init(e){let{geometry:t,primitiveStride:n}=this;e.indirect?this._indirectBuffer=Ke(Ge(t,e.range,n),e.useSharedArrayBuffer):He(t,e),super.init(e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new u))}getRootRanges(e){return this.indirect?[{offset:0,count:this._indirectBuffer.length}]:Ge(this.geometry,e,this.primitiveStride)}raycastObject3D(){throw Error(`BVH: raycastObject3D() not implemented`)}},B=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,r=-1/0;for(let i=0,a=e.length;ir?a:r}this.min=n,this.max=r}setFromPoints(e,t){let n=1/0,r=-1/0;for(let i=0,a=t.length;ir?o:r}this.min=n,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};B.prototype.setFromBox=(function(){let t=new e;return function(e,n){let r=n.min,i=n.max,a=1/0,o=-1/0;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let c=0;c<=1;c++){t.x=r.x*n+i.x*(1-n),t.y=r.y*s+i.y*(1-s),t.z=r.z*c+i.z*(1-c);let l=e.dot(t);a=Math.min(l,a),o=Math.max(l,o)}this.min=a,this.max=o}})(),(function(){let e=new B;return function(t,n){let r=t.points,i=t.satAxes,a=t.satBounds,o=n.points,s=n.satAxes,c=n.satBounds;for(let t=0;t<3;t++){let n=a[t],r=i[t];if(e.setFromPoints(r,o),n.isSeparated(e))return!1}for(let t=0;t<3;t++){let n=c[t],i=s[t];if(e.setFromPoints(i,r),n.isSeparated(e))return!1}}})();var Je=(function(){let t=new e,n=new e,r=new e;return function(e,i,a){let o=e.start,s=t,c=i.start,l=n;r.subVectors(o,c),t.subVectors(e.end,e.start),n.subVectors(i.end,i.start);let u=r.dot(l),d=l.dot(s),f=l.dot(l),p=r.dot(s),m=s.dot(s)*f-d*d,h,g;h=m===0?0:(u*d-p*f)/m,g=(u+h*d)/f,a.x=h,a.y=g}})(),Ye=(function(){let t=new h,n=new e,r=new e;return function(e,i,a,o){Je(e,i,t);let s=t.x,c=t.y;if(s>=0&&s<=1&&c>=0&&c<=1){e.at(s,a),i.at(c,o);return}else if(s>=0&&s<=1){c<0?i.at(0,o):i.at(1,o),e.closestPointToPoint(o,!0,a);return}else if(c>=0&&c<=1){s<0?e.at(0,a):e.at(1,a),i.closestPointToPoint(a,!0,o);return}else{let t;t=s<0?e.start:e.end;let l;l=c<0?i.start:i.end;let u=n,d=r;if(e.closestPointToPoint(l,!0,n),i.closestPointToPoint(t,!0,r),u.distanceToSquared(l)<=d.distanceToSquared(t)){a.copy(u),o.copy(l);return}else{a.copy(t),o.copy(d);return}}}})(),Xe=(function(){let t=new e,n=new e,r=new d,a=new i;return function(e,i){let{radius:o,center:s}=e,{a:c,b:l,c:u}=i;if(a.start=c,a.end=l,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o||(a.start=c,a.end=u,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o)||(a.start=l,a.end=u,a.closestPointToPoint(s,!0,t).distanceTo(s)<=o))return!0;let d=i.getPlane(r);if(Math.abs(d.distanceToPoint(s))<=o){let e=d.projectPoint(s,n);if(i.containsPoint(e))return!0}return!1}})(),Ze=[`x`,`y`,`z`],V=1e-15,Qe=V*V;function H(e){return Math.abs(e)new e),this.satBounds=[,,,,].fill().map(()=>new B),this.points=[this.a,this.b,this.c],this.plane=new d,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new i,this.needsUpdate=!0}intersectsSphere(e){return Xe(e,this)}update(){let e=this.a,t=this.b,n=this.c,r=this.points,i=this.satAxes,a=this.satBounds,o=i[0],s=a[0];this.getNormal(o),s.setFromPoints(o,r);let c=i[1],l=a[1];c.subVectors(e,t),l.setFromPoints(c,r);let u=i[2],d=a[2];u.subVectors(t,n),d.setFromPoints(u,r);let f=i[3],p=a[3];f.subVectors(n,e),p.setFromPoints(f,r);let m=c.length(),h=u.length(),g=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,m0)g(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else if(a>0)g(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(s*c>0||o!=0)g(e.a,e.b,e.c,t,n,r,o,s,c,l,u);else if(s!=0)g(e.b,e.a,e.c,n,t,r,s,o,c,l,u);else if(c!=0)g(e.c,e.a,e.b,r,t,n,c,o,s,l,u);else return!0;return!1}function v(e,t,n,r){let i=t.degenerateSegment,o=e.plane.distanceToPoint(i.start),s=e.plane.distanceToPoint(i.end);return H(o)?H(s)?m(e,t,n,r):(n&&(n.start.copy(i.start),n.end.copy(i.start)),e.containsPoint(i.start)):H(s)?(n&&(n.start.copy(i.end),n.end.copy(i.end)),e.containsPoint(i.end)):e.plane.intersectLine(i,a)==null?!1:(n&&(n.start.copy(a),n.end.copy(a)),e.containsPoint(a))}function y(e,t,n){let r=t.a;return H(e.plane.distanceToPoint(r))&&e.containsPoint(r)?(n&&(n.start.copy(r),n.end.copy(r)),!0):!1}function b(e,t,n){let r=e.degenerateSegment,i=t.a;return r.closestPointToPoint(i,!0,a),i.distanceToSquared(a)1||p<0||p>1?!1:H(r.start.z+c.z*f-(i.start.z+l.z*p))?(n&&(n.start.copy(r.start).addScaledVector(c,f),n.end.copy(r.start).addScaledVector(c,f)),!0):!1}else if(t.isDegenerateIntoPoint)return b(e,t,n);else return v(t,e,n,r);else if(e.isDegenerateIntoPoint)return t.isDegenerateIntoPoint?t.a.distanceToSquared(e.a)0&&b>0)return!1;let S=a.distanceToPoint(e.a),C=a.distanceToPoint(e.b),w=a.distanceToPoint(e.c);H(S)&&(S=0),H(C)&&(C=0),H(w)&&(w=0);let T=S*C,ee=S*w;if(T>0&&ee>0)return!1;o.copy(a.normal),s.copy(c.normal);let te=o.cross(s),ne=0,E=Math.abs(te.x),D=Math.abs(te.y);D>E&&(E=D,ne=1),Math.abs(te.z)>E&&(ne=2);let O=Ze[ne],k=this.a[O],A=this.b[O],j=this.c[O],M=e.a[O],re=e.b[O],N=e.c[O];if(_(this,k,A,j,y,b,h,g,v,f,l)||_(e,M,re,N,T,ee,S,C,w,p,u))return m(this,e,n,r);if(f.yf.x?n.start.copy(u.start):n.start.copy(l.start),p.ynew e),this.satAxes=[,,,].fill().map(()=>new e),this.satBounds=[,,,].fill().map(()=>new B),this.alignedSatBounds=[,,,].fill().map(()=>new B),this.needsUpdate=!1,t&&this.min.copy(t),n&&this.max.copy(n),r&&this.matrix.copy(r)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};W.prototype.update=(function(){return function(){let e=this.matrix,t=this.min,n=this.max,r=this.points;for(let i=0;i<=1;i++)for(let a=0;a<=1;a++)for(let o=0;o<=1;o++){let s=r[1*i|2*a|4*o];s.x=i?n.x:t.x,s.y=a?n.y:t.y,s.z=o?n.z:t.z,s.applyMatrix4(e)}let i=this.satBounds,a=this.satAxes,o=r[0];for(let e=0;e<3;e++){let t=a[e],n=i[e],s=r[1<new i),r=Array(12).fill().map(()=>new i),a=new e,o=new e;return function(e,i=0,s=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(e))return(s||c)&&(e.getCenter(o),this.closestPointToPoint(o,a),e.closestPointToPoint(a,o),s&&s.copy(a),c&&c.copy(o)),0;let l=i*i,u=e.min,d=e.max,f=this.points,p=1/0;for(let e=0;e<8;e++){let t=f[e];o.copy(t).clamp(u,d);let n=t.distanceToSquared(o);if(nnew U)}},$e=new e,et=new e;function tt(e,t,n={},r=0,i=1/0){let a=r*r,o=i*i,s=1/0,c=null;if(e.shapecast({boundsTraverseOrder:e=>($e.copy(t).clamp(e.min,e.max),$e.distanceToSquared(t)),intersectsBounds:(e,t,n)=>n{e.closestPointToPoint(t,$e);let r=t.distanceToSquared($e);return r=169,rt=parseInt(t)<=161,K=new e,q=new e,J=new e,it=new h,at=new h,ot=new h,st=new e,ct=new e,lt=new e,ut=new e;function dt(e,t,n,r,i,a,o,s){let c;if(c=a===1?e.intersectTriangle(r,n,t,!0,i):e.intersectTriangle(t,n,r,a!==2,i),c===null)return null;let l=e.origin.distanceTo(i);return ls?null:{distance:l,point:i.clone()}}function ft(t,n,r,i,a,o,s,c,l,u,d){K.fromBufferAttribute(n,o),q.fromBufferAttribute(n,s),J.fromBufferAttribute(n,c);let f=dt(t,K,q,J,ut,l,u,d);if(f){if(i){it.fromBufferAttribute(i,o),at.fromBufferAttribute(i,s),ot.fromBufferAttribute(i,c),f.uv=new h;let e=y.getInterpolation(ut,K,q,J,it,at,ot,f.uv);nt||(f.uv=e)}if(a){it.fromBufferAttribute(a,o),at.fromBufferAttribute(a,s),ot.fromBufferAttribute(a,c),f.uv1=new h;let e=y.getInterpolation(ut,K,q,J,it,at,ot,f.uv1);nt||(f.uv1=e),rt&&(f.uv2=f.uv1)}if(r){st.fromBufferAttribute(r,o),ct.fromBufferAttribute(r,s),lt.fromBufferAttribute(r,c),f.normal=new e;let n=y.getInterpolation(ut,K,q,J,st,ct,lt,f.normal);f.normal.dot(t.direction)>0&&f.normal.multiplyScalar(-1),nt||(f.normal=n)}let n={a:o,b:s,c,normal:new e,materialIndex:0};if(y.getNormal(K,q,J,n.normal),f.face=n,f.faceIndex=o,nt){let t=new e;y.getBarycoord(ut,K,q,J,t),f.barycoord=t}}return f}function pt(e){return e&&e.isMaterial?e.side:e}function mt(e,t,n,r,i,a,o){let s=r*3,c=s+0,l=s+1,u=s+2,{index:d,groups:f}=e;e.index&&(c=d.getX(c),l=d.getX(l),u=d.getX(u));let{position:p,normal:m,uv:h,uv1:g}=e.attributes;if(Array.isArray(t)){let e=r*3;for(let s=0,d=f.length;s=d&&ef&&(f=n),op&&(p=o),sm&&(m=s)}return c[e+0]!==a||c[e+1]!==u||c[e+2]!==d||c[e+3]!==f||c[e+4]!==p||c[e+5]!==m?(c[e+0]=a,c[e+1]=u,c[e+2]=d,c[e+3]=f,c[e+4]=p,c[e+5]=m,!0):!1}else{let r=j(e),i=M(e,o),s=a,l=!1,u=!1;if(t){if(!s){let e=r/8+n/32,a=i/8+n/32;l=t.has(e),u=t.has(a),s=!l&&!u}}else l=!0,u=!0;let f=s||l,p=s||u,m=!1;f&&(m=d(r,n,s));let h=!1;p&&(h=d(i,n,s));let g=m||h;if(g)for(let t=0;t<3;t++){let n=r+t,a=i+t,o=c[n],s=c[n+3],l=c[a],u=c[a+3];c[e+t]=ou?s:u}return g}}}function X(e,t,n,r,i){let a,o,s,c,l,u,d=1/n.direction.x,f=1/n.direction.y,p=1/n.direction.z,m=n.origin.x,h=n.origin.y,g=n.origin.z,_=t[e],v=t[e+3],y=t[e+1],b=t[e+3+1],x=t[e+2],S=t[e+3+2];return d>=0?(a=(_-m)*d,o=(v-m)*d):(a=(v-m)*d,o=(_-m)*d),f>=0?(s=(y-h)*f,c=(b-h)*f):(s=(b-h)*f,c=(y-h)*f),a>c||s>o||((s>a||isNaN(a))&&(a=s),(c=0?(l=(x-g)*p,u=(S-g)*p):(l=(S-g)*p,u=(x-g)*p),a>u||l>o)?!1:((l>a||a!==a)&&(a=l),(u=r)}function yt(e,t,n,r,i,a,o,s){let{geometry:c,_indirectBuffer:l}=e;for(let e=r,u=r+i;e=0,d,f;u?(d=j(e),f=M(e,c)):(d=M(e,c),f=j(e));let p=X(d,o,r,i,a)?Et(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=X(f,o,r,i,a)?Et(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var Dt=new u,Ot=new U,kt=new U,At=new s,jt=new W,Mt=new W;function Nt(e,t,n,r){I.setBuffer(e._roots[t]);let i=Pt(0,e,n,r);return I.clearBuffer(),i}function Pt(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=I,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),jt.set(n.boundingBox.min,n.boundingBox.max,r),i=jt),O(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=k(e,s),m=A(c,o);if(At.copy(r).invert(),n.boundsTree)return T(N(e),a,Mt),Mt.matrix.copy(At),Mt.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>Mt.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let t=p*3,n=(m+p)*3;tIt.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:e=>Lt.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let o=t,s=t+i;op&&(p=a),om&&(m=o),sh&&(h=s)}}return c[n+0]!==l||c[n+1]!==d||c[n+2]!==f||c[n+3]!==p||c[n+4]!==m||c[n+5]!==h?(c[n+0]=l,c[n+1]=d,c[n+2]=f,c[n+3]=p,c[n+4]=m,c[n+5]=h,!0):!1}else{let e=j(n),r=M(n,o),i=l,s=!1,u=!1;if(t){if(!i){let n=e/8+a/32,o=r/8+a/32;s=t.has(n),u=t.has(o),i=!s&&!u}}else s=!0,u=!0;let f=i||s,p=i||u,m=!1;f&&(m=d(e,a,i));let h=!1;p&&(h=d(r,a,i));let g=m||h;if(g)for(let t=0;t<3;t++){let i=e+t,a=r+t,o=c[i],s=c[i+3],l=c[a],u=c[a+3];c[n+t]=ou?s:u}return g}}}function Wt(e,t,n,r,i,a,o){I.setBuffer(e._roots[t]),Gt(0,e,n,r,i,a,o),I.clearBuffer()}function Gt(e,t,n,r,i,a,o){let{float32Array:s,uint16Array:c,uint32Array:l}=I,u=e*2;if(O(u,c))yt(t,n,r,k(e,l),A(u,c),i,a,o);else{let c=j(e);X(c,s,r,a,o)&&Gt(c,t,n,r,i,a,o);let u=M(e,l);X(u,s,r,a,o)&&Gt(u,t,n,r,i,a,o)}}var Kt=[`x`,`y`,`z`];function qt(e,t,n,r,i,a){I.setBuffer(e._roots[t]);let o=Jt(0,e,n,r,i,a);return I.clearBuffer(),o}function Jt(e,t,n,r,i,a){let{float32Array:o,uint16Array:s,uint32Array:c}=I,l=e*2;if(O(l,s))return bt(t,n,r,k(e,c),A(l,s),i,a);{let s=re(e,c),l=Kt[s],u=r.direction[l]>=0,d,f;u?(d=j(e),f=M(e,c)):(d=M(e,c),f=j(e));let p=X(d,o,r,i,a)?Jt(d,t,n,r,i,a):null;if(p){let e=p.point[l];if(u?e<=o[f+s]:e>=o[f+s+3])return p}let m=X(f,o,r,i,a)?Jt(f,t,n,r,i,a):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var Yt=new u,Xt=new U,Zt=new U,Qt=new s,$t=new W,en=new W;function tn(e,t,n,r){I.setBuffer(e._roots[t]);let i=nn(0,e,n,r);return I.clearBuffer(),i}function nn(e,t,n,r,i=null){let{float32Array:a,uint16Array:o,uint32Array:s}=I,c=e*2;if(i===null&&(n.boundingBox||n.computeBoundingBox(),$t.set(n.boundingBox.min,n.boundingBox.max,r),i=$t),O(c,o)){let i=t.geometry,l=i.index,u=i.attributes.position,d=n.index,f=n.attributes.position,p=k(e,s),m=A(c,o);if(Qt.copy(r).invert(),n.boundsTree)return T(N(e),a,en),en.matrix.copy(Qt),en.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:e=>en.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(r),e.b.applyMatrix4(r),e.c.applyMatrix4(r),e.needsUpdate=!0;for(let n=p,r=m+p;nan.distanceToBox(e),intersectsBounds:(e,t,n)=>n{if(t.boundsTree){let s=t.boundsTree;return s.shapecast({boundsTraverseOrder:e=>on.distanceToBox(e),intersectsBounds:(e,t,n)=>n{for(let x=t,S=t+o;xe.slice()),o.index=a?a.array.slice():null,o.indirectBuffer=i?i.slice():null):(o.roots=r,o.index=a?a.array:null,o.indirectBuffer=i),o}static deserialize(t,n,r={}){r={setIndex:!0,indirect:!!t.indirectBuffer,...r};let{index:i,roots:a,indirectBuffer:o}=t;t.version||(console.warn(`MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data.`),c(a));let s=new e(n,{...r,[C]:!0});if(s._roots=a,s._indirectBuffer=o||null,r.setIndex){let e=n.getIndex();if(e===null){let e=new v(t.index,1,!1);n.setIndex(e)}else e.array!==i&&(e.array.set(i),e.needsUpdate=!0)}return s;function c(e){for(let t=0;td&&(d=i),o>d&&(d=o),t[n+e]=s,t[n+e+3]=d}return t}computePrimitiveBounds(e,t,n){let r=this.geometry,i=this._indirectBuffer,a=r.attributes.position,o=r.index?r.index.array:null,s=a.normalized;if(e<0||t+e-n.offset>n.length/6)throw Error(`MeshBVH: compute triangle bounds range is invalid.`);let c=a.array,l=a.offset||0,u=3;a.isInterleavedBufferAttribute&&(u=a.data.stride);let d=[`getX`,`getY`,`getZ`],f=n.offset;for(let r=e,p=e+t;ru&&(u=i),o>u&&(u=o);let f=(u-l)/2,g=e*2;n[t+g+0]=l+f,n[t+g+1]=f+(Math.abs(l)+f)*S}}return n}raycastObject3D(e,t,n=[]){let{material:r}=e;if(r===void 0)return;gn.copy(e.matrixWorld).invert(),mn.copy(t.ray).applyMatrix4(gn),_n.setFromMatrixScale(e.matrixWorld),hn.copy(mn.direction).multiply(_n);let i=hn.length(),a=t.near/i,o=t.far/i;if(t.firstHitOnly===!0){let i=this.raycastFirst(mn,r,a,o);i=fn(i,e,t),i&&n.push(i)}else{let i=this.raycast(mn,r,a,o);for(let r=0,a=i.length;r{Y(o,this.resolveTriangleIndex(e)*3,s,c)}:e=>{Y(o,e*3,s,c)},u=G.getPrimitive(),d=t.geometry.index,f=t.geometry.attributes.position,p=t.indirect?e=>{Y(u,t.resolveTriangleIndex(e)*3,d,f)}:e=>{Y(u,e*3,d,f)};if(a){if(!(t instanceof e))throw Error(`MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.`);let r=(e,t,r,i,s,c,d,f)=>{for(let m=r,h=r+i;mpn.intersectsBox(e),intersectsTriangle:e=>pn.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},r={},i=0,a=1/0){return(this.indirect?dn:Ht)(this,e,t,n,r,i,a)}closestPointToPoint(e,t={},n=0,r=1/0){return tt(this,e,t,n,r)}},bn={Mesh:l.prototype.raycast,Line:m.prototype.raycast,LineSegments:n.prototype.raycast,LineLoop:a.prototype.raycast,Points:f.prototype.raycast,BatchedMesh:_.prototype.raycast},Z=new l,xn=[];function Sn(e,t){if(this.isBatchedMesh)Cn.call(this,e,t);else{let{geometry:r}=this;if(r.boundsTree)r.boundsTree.raycastObject3D(this,e,t);else{let r;if(this instanceof l)r=bn.Mesh;else if(this instanceof n)r=bn.LineSegments;else if(this instanceof a)r=bn.LineLoop;else if(this instanceof m)r=bn.Line;else if(this instanceof f)r=bn.Points;else throw Error(`BVH: Fallback raycast function not found.`);r.call(this,e,t)}}}function Cn(e,t){if(this.boundsTrees){let n=this.boundsTrees,r=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,a=this.matrixWorld;Z.material=this.material,Z.geometry=this.geometry;let o=Z.geometry.boundsTree,s=Z.geometry.drawRange;Z.geometry.boundingSphere===null&&(Z.geometry.boundingSphere=new g);for(let o=0,s=r.length;o=2&&t.setY(a,e.getY(i)),r>=3&&t.setZ(a,e.getZ(i)),r>=4&&t.setW(a,e.getW(i))}}else{let r=t.array,i=r.constructor,a=r.BYTES_PER_ELEMENT*e.itemSize*n;new i(r.buffer,a,e.array.length).set(e.array)}}function In(e,t,n){let r=e.elements,i=t.elements;for(let e=0,t=i.length;e{e.traverseVisible(e=>{e.isMesh&&t.push(e)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=[`position`,`normal`,`color`,`tangent`,`uv`,`uv2`],this._intermediateGeometry=Array(t.length).fill().map(()=>new o),this._diffMap=new WeakMap}getMaterials(){let e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new o){let t=[],{meshes:n,useGroups:r,_intermediateGeometry:i,_diffMap:a}=this;for(let e=0,r=n.length;e{throw e.message?Error(`${this.name}: Could not create Web Worker with error "${e.message}"`):Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw Error(`GenerateMeshBVHWorker: Already running job.`);if(this.worker===null)throw Error(`GenerateMeshBVHWorker: Worker has been disposed.`);this.running=!0;let t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}};export{yn as a,qe as c,C as d,wn as i,Ke as l,Un as n,W as o,Sn as r,U as s,Wn as t,Le as u}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz b/Needle/SampleScene/dist/assets/three-mesh-bvh.B-oXEGo2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c95f54f628c3d4a17df95405da75f3a1f25f455b GIT binary patch literal 17657 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js b/Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js new file mode 100644 index 0000000..9df634e --- /dev/null +++ b/Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js @@ -0,0 +1,406 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";import{A as t,Ar as n,It as r,Qt as i,S as a,Zt as o,_n as s,_r as c,fn as l,gr as u,it as d,jr as f,kr as ee,nt as te,tr as ne,vn as re,x as ie}from"./three@0.169.19.js";var ae=e({BaseProperty:()=>xi,Behavior:()=>Si,Block:()=>Ci,DefaultValues:()=>wi,FontLibrary:()=>Ti,FontVariant:()=>Ei,InheritableProperty:()=>Di,Inline:()=>Oi,InlineBlock:()=>ki,InlineGlyph:()=>Ai,MSDFFontMaterialUtils:()=>ji,MaterialTransformers:()=>Mi,MeshUIBaseElement:()=>Ni,ShaderChunkUI:()=>Pi,Text:()=>Fi,TypographicFont:()=>Ii,TypographicGlyph:()=>Li,default:()=>Ri,update:()=>zi}),p={};p.d=(e,t)=>{for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})};var m={};p.d(m,{ti:()=>v,nS:()=>_i,eB:()=>mr,Yp:()=>h,VB:()=>W,BC:()=>E,zN:()=>y,cV:()=>Zr,hW:()=>hi,k2:()=>we,K6:()=>V,M7:()=>g,ls:()=>q,Hi:()=>hn,EY:()=>di,MR:()=>Tt,zf:()=>Ce,Ay:()=>bi,yo:()=>vi});var h={};p.r(h),p.d(h,{get:()=>se,set:()=>oe});var g={};p.r(g),p.d(g,{alphaTestTransformer:()=>R,asPreprocessorValueTransformer:()=>Mt,toPreprocessorTriggerTransformer:()=>z,toUserDataTransformer:()=>Nt,uniformOrUserDataTransformer:()=>B});var _={fontFamily:null,fontSize:.05,fontKerning:`auto`,fontStyle:`normal`,fontWeight:`normal`,offset:.005,lineHeight:1.2,lineBreak:`- ,.:?! +`,whiteSpace:`pre-line`,flexDirection:`column`,justifyContent:`start`,alignItems:`start`,backgroundImage:null,textAlign:`left`,boxSizing:`content-box`,position:`static`,color:16777215,fontColor:16777215,fontOpacity:1,opacity:1,fontPXRange:4,fontSupersampling:!0,fontSmooth:`antialiased`,borderRadius:0,borderWidth:0,borderColor:`black`,borderOpacity:1,backgroundSize:`cover`,backgroundColor:0,backgroundOpacity:0,overflow:`visible`,letterSpacing:0,invertAlpha:!1,segments:1},oe=function(e){for(let t in e)_[t]=e[t]},se=function(e){return Object.prototype.hasOwnProperty.call(_,e)||console.warn(`ThreeMeshUI::DefaultValues is trying to retrieve non-existing property '${e}'`),_[e]},v=class{constructor(e,t=null,n=!0){this._id=e,this._value=t,this._needsUpdate=!0,this._needsProcess=!1,this._needsRender=!1,this._isPrimitive=n}get id(){return this._id}get value(){return this._value}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}update(e,t){this.output(t)}output(e){}_outputValue(e){e[this._id]=this._value}process(e){}render(e){}getInheritedInput(e){if(this._value!==`inherit`)return this._value;let t=e._parent._value;return t&&t[`_${this._id}`]?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}getDefaultValue(){return se(this._id)}isValid(e){return!0}emptyStrategyLogic(){throw Error(`ThreeMeshUI::${this.constructor.name} has empty strategy. Update has not been processed.`)}requestUpdate(){this._needsUpdate=!0}requestProcess(){this._needsProcess=!1}requestRender(){this._needsRender=!1}},ce=class extends v{constructor(){super(`renderOrder`,`auto`,!0),this.output=this._outputValue,this._actualValue=0}set value(e){this.isValid(e)&&(this._value=e,this._needsUpdate=!0)}update(e,t){if(this._value!==`auto`)this._actualValue=this._value;else{let t=e._parent._value;t!==null&&(this._actualValue=t._renderOrder._actualValue+(1+t._children._uis.indexOf(e)))}for(let t of e._children._uis)t._renderOrder._value===`auto`&&(t._renderOrder._needsUpdate=!0);this._outputValue(t)}_outputValue(e){e[this._id]=this._actualValue}get value(){return this._value}},y=class extends v{constructor(e,t=null,n=!0){super(e,t,n),this.output=this._outputValue,this._notInheritedValue=null}update(e,t){this._notInheritedValue=this._value,this._notInheritedValue===`inherit`&&(this._notInheritedValue=this.getInheritedInput(e)),this.propagate(e),this._outputValue(t)}propagate(e){for(let t of e._children._uis){let e=t[`_${this._id}`];e!==void 0&&e._value===`inherit`&&(t[`_${this._id}`]._needsUpdate=!0)}}_outputValue(e){e[this._id]=this._notInheritedValue}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}get value(){return this._value===`inherit`?this._notInheritedValue:this._value}},le=class extends y{constructor(){super(`offset`,`inherit`,!1)}update(e,t){super.update(e,t),e._parent._value!==null&&(e.position.z=this._notInheritedValue)}},ue=class extends y{constructor(){super(`fontSmooth`,`inherit`,!0),this._needsUpdate=!1,this.isValid=fe,this.output=this._outputValue}},de=[`inherit`,`none`,`antialiased`];function fe(e){return de.indexOf(e)===-1?(console.warn(`.fontSmoothing value '${e}' is not valid. Aborted`),!1):!0}var b=(e=>{var t={};return p.d(t,e),t})({BackSide:()=>1,BufferAttribute:()=>ie,BufferGeometry:()=>a,Color:()=>t,DoubleSide:()=>2,EventDispatcher:()=>te,FileLoader:()=>d,FrontSide:()=>0,LinearFilter:()=>r,Mesh:()=>o,MeshBasicMaterial:()=>i,Object3D:()=>l,Plane:()=>s,PlaneGeometry:()=>re,ShaderMaterial:()=>ne,Texture:()=>u,TextureLoader:()=>c,Vector2:()=>ee,Vector3:()=>n,Vector4:()=>f}),x=class extends v{constructor(e,t,n=!0){super(e,`unset`,n),this._input=`inherit`,this._allowsInherit=!0,this._inheritedInput=void 0,this._inline=void 0}update(e,t){this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis){let e=t[`_${this._id}`];(e._input?e._input:e._value)===`inherit`&&(t[`_${this._id}`]._needsUpdate=!0)}this.output(t)}computeOutputValue(e){this._value=this._input}_computeFromInherited(e){this._value=this._inheritedInput}set value(e){console.warn(`.(style) sub-property cannot be directly set. It must comes from inline or computed setter.`)}set inline(e){this.isValidValue(e)&&e!==this._inline&&(this._input=this._inline=e,this._needsUpdate=!0)}get inline(){return this._inline}isValidValue(e){return!0}getInheritedInput(e){if(this._input!==`inherit`)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}},S=class extends x{constructor(e,t){super(e,t,!1),this._input=new b.Vector4(0,0,0,0),this._inline=null,this._value=new b.Vector4(0,0,0,0)}get value(){return this._value}computeOutputValue(e){this._vector4ValueSetter(this._value,this._input)}set inline(e){this._vector4ValueSetter(this._input,e),!this._input.equals(this._value)&&(this._needsUpdate=!0)}set top(e){this._input.x!==e&&(this._input.x=e,this._needsUpdate=!0)}get top(){return this._input.x}set right(e){this._input.y!==e&&(this._input.y=e,this._needsUpdate=!0)}get right(){return this._input.y}set bottom(e){this._input.z!==e&&(this._input.z=e,this._needsUpdate=!0)}get bottom(){return this._input.z}set left(e){this._input.w!==e&&(this._input.w=e,this._needsUpdate=!0)}get left(){return this._input.w}dispose(){this._computed=null,this._inline=null,this._input=null,this._output=null}_vector4ValueSetter(e,t){if(t instanceof b.Vector4){e.copy(t);return}if((typeof t==`string`||t instanceof String)&&(t=t.split(` `)),Array.isArray(t))switch(t=t.map(e=>parseFloat(e)),t.length){case 1:e.setScalar(t[0]);return;case 2:e.x=e.z=t[0],e.y=e.w=t[1];return;case 3:e.x=t[0],e.y=t[1],e.z=t[2];return;case 4:e.x=t[0],e.y=t[1],e.z=t[2],e.w=t[3];return;default:console.error(`StyleVector4Property::set() Four Dimension property had more than four values`);return}isNaN(t)||e.setScalar(t)}},pe=class extends S{constructor(){super(`padding`,new b.Vector4(0,0,0,0))}computeOutputValue(e){super.computeOutputValue(e),e._bounds._needsUpdate=!0,e._bounds._needsRender=!0,e._layouter._needsProcess=!0,e._renderer._needsRender=!0,e._parent._value&&(e._parent._value._layouter._needsProcess=!0)}},me=class extends S{constructor(){super(`margin`,new b.Vector4(0,0,0,0))}computeOutputValue(e){super.computeOutputValue(e),e._renderer._needsRender=!0,e._parent._value&&(e._parent._value._flexDirection._needsProcess=!0)}},he=function(e,t,n){e[t]=n},ge=function(e,t,n){n!==null&&(e[t]=n)},C=class{constructor(e){this._definition=e}set definition(e){this._definition=e}mediate(e,t,n,r=null){for(let e in this._definition){let i=this._definition[e];if(n[e]!==void 0){let a=i.t?i.t:he;a(t,i.m,n[e]),r&&a(r,i.m,n[e])}}}static mediate(e,t,n,r,i=null){if(t)for(let e in r){let a=r[e];if(n[e]!==void 0){let r=a.t?a.t:he;r(t,a.m,n[e]),i&&r(i,a.m,n[e])}}}},_e=class extends v{constructor(){super(`parent`,null,!1)}update(e,t){e.parent&&e.parent.isUI?this._value=e.parent:this._value=null}set value(e){console.warn(`ParentProperty is readonly`)}get value(){return this._value}find(e){return this._value?e(this._value)?this._value:this._value._parent.find(e):null}dispose(){this._value=null}},w=function(e,t,n=6){return e.toFixed(n)===t.toFixed(n)},ve=class extends v{constructor(e,t){super(e,t,!0),this.output=this._outputValue}set value(e){this.isValid(e)&&(w(this._value,e)||(this._value=e,this._needsUpdate=!0))}get value(){return this._value}},ye=class extends y{constructor(e){super(e,`inherit`,!0),this.isValid=xe}},be=[b.FrontSide,b.BackSide,b.DoubleSide];function xe(e){return be.indexOf(e)===-1?(console.warn(`SideProperty value '${e}' is not valid. Abort`),!1):!0}var Se=class{constructor(){this._offsetX=0,this._offsetY=0,this._lineBreak=null,this._kerning=0,this._fontFactor=1,this._fontSize=0,this._cumulativeWidth=0,this._paddingLeft=0,this._paddingRight=0,this._marginLeft=0,this._marginRight=0}resetOffsets(){this._offsetX=this._offsetY=0,this._cumulativeWidth=0}get xadvance(){return 0}get xoffset(){return 0}get yoffset(){return 0}get width(){return 0}get height(){return 0}set lineBreak(e){this._lineBreak=e}get lineBreak(){return this._lineBreak}get anchor(){return 0}get kerning(){return this._kerning*this._fontFactor}set kerning(e){this._kerning=e}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize=e}get lineHeight(){return 0}get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e}get cumulativeWidth(){return this._cumulativeWidth}set cumulativeWidth(e){this._cumulativeWidth=e}get marginLeft(){return this._marginLeft}set marginLeft(e){this._marginLeft=e}get marginRight(){return this._marginRight}set marginRight(e){this._marginRight=e}get paddingLeft(){return this._paddingLeft}set paddingLeft(e){this._paddingLeft=e}get paddingRight(){return this._paddingRight}set paddingRight(e){this._paddingRight=e}get lineBase(){return 0}set fontFactor(e){this._fontFactor=e}get fontFactor(){return this._fontFactor}},Ce=class{constructor(e){this._char=``,this._width=1,this._heigth=1,this._xadvance=1,this._xoffset=0,this._yoffset=0,this._font=e}get font(){return this._font}get char(){return this._char}get width(){return this._width}get height(){return this._heigth}get xadvance(){return this._xadvance}get xoffset(){return this._xoffset}get yoffset(){return this._yoffset}set yoffset(e){this._yoffset=e}clone(e){throw Error(`Abstract... Need to be implemented`)}asInlineGlyph(){throw Error(`Abstract... Need to be implemented`)}},we=class extends Se{constructor(e){super(),this._typographic=e}get typographic(){return this._typographic}get xadvance(){return this._typographic.xadvance*this._fontFactor}get xoffset(){return this._typographic.xoffset*this._fontFactor}get yoffset(){return this._typographic.yoffset*this._fontFactor}get width(){return this._typographic.width*this._fontFactor}get height(){return this._typographic.height*this._fontFactor}get char(){return this._typographic.char}get anchor(){return this.yoffset}get lineHeight(){return this._typographic.font.lineHeight*this._fontFactor}get lineBase(){return this._typographic.font.lineBase*this._fontFactor}},Te={light:`100`,normal:`400`,bold:`700`,bolder:`900`};function T(e){return isNaN(e)?Te[e]||e:e.toString()}var Ee=class extends b.EventDispatcher{constructor(e,t){super(),this._isReady=!1,this._weight=T(e),this._style=t,this._size=42,this._lineHeight=42,this._lineBase=42,this._font=null}get typographic(){return this._font}get isReady(){return this._isReady}get weight(){return this._weight}get style(){return this._style}get texture(){return this._texture}set fontMaterial(e){throw Error(`FontVariant('${this.id}')::fontMaterial - is abstract.`)}get fontMaterial(){throw Error(`FontVariant('${this.id}')::fontMaterial - is abstract.`)}get id(){return`${this._name}(w:${this.weight},s:${this.style})`}getTypographicGlyph(e){let t=this._chars[e];if(t)return t;if(e.match(/\s/))return this._chars[` `];let n=this._getFallbackCharacter(e);if(n&&(t=this._chars[n],t))return t;throw Error(`FontVariant('${this.id}')::getTypographicGlyph() - character('${e}') and/or fallback character were not found in provided msdf charset.`)}_getFallbackCharacter(e){throw Error(`FontVariant(${typeof this})::_getFallbackCharacter() is abstract and should therefore be overridden.`)}getGeometricGlyph(e,t){throw Error(`FontVariant(${typeof this})::getGeometryCharacter() is abstract and should therefore be overridden.`)}getKerningAmount(e){return this._kernings[e]?this._kernings[e]:0}adjustTypographicGlyphs(e){for(let t in e){let n=this.getTypographicGlyph(t),r=e[t];for(let i in r)n[`_`+i]=e[t][i]}}_checkReadiness(){this._readyCondition()&&Oe(this)}_alterElementProperties(e){throw Error(`FontVariant(${typeof this})::_alterElementProperties() is abstract and should therefore be overridden.`)}_readyCondition(){throw Error(`FontVariant(${typeof this})::_readyCondition() is abstract and should therefore be overridden.`)}},De={type:`ready`};function Oe(e){e._isReady=!0,e.dispatchEvent(De)}var E=Ee,ke=class extends v{constructor(e=null){super(`font`,e,!1),this._needsUpdate=!1,this._fontVariant=null,this._handleFontReadyClosure=null,this.isValid=Ae}output(e){e[this._id]=this._fontVariant}update(e,t){if(this._fontVariant&&!this._fontVariant.isReady&&this._fontVariant.removeEventListener(`ready`,this._handleFontReadyClosure),this._value&&this._value instanceof E)this._fontVariant=this._value;else{let t=e._fontFamily._value;t&&(this._fontVariant=t.getVariant(e._fontWeight._value,e._fontStyle._value))}this._fontVariant&&(this._fontVariant._alterElementProperties(e),this._handleFontReadyClosure=je(e,this),this._fontVariant.isReady?this._handleFontReadyClosure():this._fontVariant.addEventListener(`ready`,this._handleFontReadyClosure),(!e._fontMaterial._defaultMaterial||!(e._fontMaterial._defaultMaterial instanceof this._fontVariant.fontMaterial))&&(e._fontMaterial._defaultMaterial=new this._fontVariant.fontMaterial,e._fontMaterial._needsUpdate=!0))}set value(e){this.isValid(e)&&this._value!==e&&(this._value=e,this._needsUpdate=!0)}get value(){return this._value}get fontVariant(){return this._fontVariant}dispose(){this._handleFontReadyClosure&&=(this._fontVariant.removeEventListener(`ready`,this._handleFontReadyClosure),null),this._value=null,this._fontVariant=null}};function Ae(e){return e instanceof E?!0:(console.warn(`.font value '${e}' is not valid. It requires a FontVariant instance. Aborted`),!1)}function je(e,t){return function(){t._needsUpdate=!0,e._glyphs._needsProcess=!0,t._fontVariant.removeEventListener(`ready`,t._handleFontReadyClosure),t._handleFontReadyClosure=null}}var Me=class extends x{constructor(e){super(`display`,e),this._value=`flex`,this._allowsInherit=!1,this._needsUpdate=!1,this.isValidValue=Pe}computeOutputValue(e){e._visible._value=this._output!==`none`}},Ne=[`none`,`flex`];function Pe(e){return Ne.indexOf(e)===-1?(console.warn(`(.style) display value '${e}' is not valid. Aborted`),!1):!0}var Fe=class extends x{constructor(e){super(`boxSizing`,e),this._allowsInherit=!1,this.isValidValue=Le}computeOutputValue(e){this._value=this._inheritedInput,e._bounds._needsUpdate=!0}},Ie=[`border-box`,`content-box`];function Le(e){return Ie.indexOf(e)===-1?(console.warn(`(.style) boxSizing value '${e}' is not valid. Aborted`),!1):!0}var D=class extends x{constructor(e,t){super(e,t,!1),this._value=new b.Color,this.output=this._outputValue}computeOutputValue(e){this._input!==`inherit`&&this._value.set(this._input)}set inline(e){this._input=this._inline=e,this._needsUpdate=!0}},O=class extends x{constructor(e,t){super(e,t,!0),this.isValidValue=Re,this._allowsInherit=!1,this._input=t,this._value=t,this.output=this._outputValue,this.computeOutputValue=this._computeFromInherited}_outputValue(e){e[this._id]=this._inheritedInput}};function Re(e){return e<0&&e>1?(console.warn(`(.style) styleFactorProperty('${this.id}') value '${e}' is not valid)`),!1):!0}var ze=class extends x{constructor(e){super(`backgroundImage`,e,!0),this._input=null,this._allowsInherit=!1,this._textureSize=new b.Vector2(1,1),this.isValidValue=Be}get value(){return this._value}output(e){e[this._id]=this._value,e.tSize=this._textureSize}computeOutputValue(e){if(this._value=this._inheritedInput,this._value instanceof b.Texture&&!this._value.image){console.warn(`ThreeMeshUI - .backgroundImage :: Please provide preloaded texture in order to have accurate sizing.`);return}this._needsProcess=!0}process(e){this._value?this._textureSize.set(this._value.image.width,this._value.image.height):this._textureSize.set(1,1)}};function Be(e){return!0}var Ve=class extends x{constructor(e){super(`backgroundSize`,e,!0),this.isValidValue=Ue,this.output=this._outputValue}},He=[`cover`,`contain`,`stretch`];function Ue(e){return He.indexOf(e)===-1?(console.warn(`(.style) backgroundSize value '${e}' is not valid. Aborted`),!1):!0}var We=class extends x{constructor(e){super(`overflow`,e,!0),this.isValidValue=Ke,this._clippingPlanes=null,this._renderStrategy=this._emptyRender}update(e,t){this._inline!==void 0&&this._inline!==`unset`?this._input=this._inline:this._computed!==void 0&&(this._input=this._computed),this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis)t._overflow._needsUpdate=!0;this.output(t)}output(e){e.clippingPlanes=this._clippingPlanes}computeOutputValue(e){super.computeOutputValue(e),this._value===`hidden`?this._renderStrategy=this._propagateRender:(this._renderStrategy=this._emptyRender,this._clippingPlanes=null);let t=e._parent._value;if(t!==null){let e=t._overflow;if((e._value===`hidden`||e._clippingPlanes!==null)&&!this._clippingPlanes){this._clippingPlanes=[new b.Plane(new b.Vector3(0,-1,0),1),new b.Plane(new b.Vector3(-1,0,0),1),new b.Plane(new b.Vector3(0,1,0),1),new b.Plane(new b.Vector3(1,0,0),1)];for(let e=0;ee.computeValue()),this._sideMediators.sort((e,t)=>e.value1&&this._sideMediators[0].mediate();while(this._sideMediators[0].value>1);let r=t>n?n/t:1,i=tn?n/t:1;this._valueUV.y*=e,this._valueUV.w*=e}if(n!==0){let e=t{switch(e._alignItems._value){case`inherit`:case`start`:return t/2;case`end`:return r-t/2;case`stretch`:case`center`:return r/2}})(),a=e._padding._value,o=e._borderWidth._value;i+=(-a.x+a.z)/2+(-o.x+o.z)/2,n.forEach(e=>{e.y+=i,e.forEach(e=>{e.offsetY+=i})})}},tt=[`start`,`center`,`end`,`stretch`],nt=function(e){return tt.indexOf(e)===-1?(console.warn(`(.style) alignItems value '${e}' is not valid. Aborted`),!1):!0},N=class extends x{constructor(){super(`alignItems`,`inherit`,!0),this.isValidValue=nt}},P=class extends x{constructor(){super(`textAlign`,`inherit`,!0),this.isValidValue=it}},rt=[`left`,`right`,`center`,`justify`,`justify-left`,`justify-right`,`justify-center`],it=function(e){return rt.indexOf(e)===-1?(console.warn(`(.style) textAlign value '${e}' is not valid. Aborted`),!1):!0},at=class extends x{constructor(){super(`flexDirection`,`inherit`,!0),this.isValid=st}},ot=[`row`,`row-reverse`,`column`,`column-reverse`];function st(e){return ot.indexOf(e)===-1?(console.warn(`(.style) flexDirection value '${e}' is not valid. Aborted`),!1):!0}var ct=class extends x{constructor(){super(`justifyContent`,`inherit`,!0),this.isValidValue=ut}},lt=[`start`,`center`,`end`,`space-between`,`space-around`,`space-evenly`];function ut(e){return lt.indexOf(e)===-1?(console.warn(`(.style) justifyContent value '${e}' is not valid. Aborted`),!1):!0}var dt=class extends x{constructor(){super(`order`,0,!0),this._value=0,this._input=0,this._allowsInherit=!1}computeOutputValue(e){this._value=this._inheritedInput,e._parent._value&&(e._parent._value._children._needsProcess=!0)}},ft=class extends x{constructor(){super(`position`,`static`,!0),this._allowsInherit=!1,this._value=`static`,this._needsUpdate=!1,this.computeOutputValue=this._computeFromInherited,this.isValidValue=mt}_computeFromInherited(e){super._computeFromInherited(e),e._parent._value&&(e._parent._value._children._needsProcess=!0)}},pt=[`static`,`absolute`];function mt(e){return pt.indexOf(e)===-1?(console.warn(`(.style) position value '${e}' is not valid. Aborted`),!1):!0}var ht=class extends x{constructor(e,t=null){super(e,t,!0),this._input=`auto`,this._auto=!0,this._relative=!1,this._updateRequired=!0}set inline(e){this.isValidValue(e)&&e!==this._inline&&(this._inline=e,this._input!==this._inline&&this._parseInput())}get inline(){return this._inline}_parseInput(){let e=!0;if(this._inline!==void 0&&this._inline!==`unset`?this._input=this._inline:this._computed===void 0?e=this._input===`inherit`:(this._computed===this._input&&(e=!1),this._input=this._computed),e){if(this._auto=!this._input||this._input===`auto`,this._auto)this._relative=!1;else if((typeof this._input==`string`||this._input instanceof String)&&this._input.endsWith(`%`)){this._relative=!0,this._value=0;let e=parseFloat(this._input.replace(`%`,``).trim());isNaN(e)||(this._value=e/100)}else this._relative=!1,this._value=this._input;this._needsUpdate=this._updateRequired=e}}update(e,t){if(this._updateRequired){this._updateRequired=!1,this._allowsInherit||(this._inheritedInput=this.getInheritedInput(e)),this.computeOutputValue(e);for(let t of e._children._uis)t[`_${this._id}`]._needsUpdate=!0;this.output(t),e._parent._value&&(e._parent._value._layouter._needsProcess=!0)}}computeOutputValue(e){e._bounds._needsUpdate=!0,e._renderer._needsRender=!0}getInheritedInput(e){if(this._input!==`inherit`&&!this._auto)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}getDefaultValue(){return 0}get value(){return this._value}},gt=class extends ht{constructor(){super(`width`)}},_t=class extends ht{constructor(){super(`height`)}computeOutputValue(e){super.computeOutputValue(e)}},vt=class extends M{constructor(){super(`textContent`),this._needsUpdate=!1}set value(e){}process(e){let t=``;for(let n=0;ne.char).join(``)}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}},Dt=class extends we{constructor(e){super(e)}get uv(){return this.typographic.uv}},Ot=class e extends Ce{constructor(e,t){super(e),this._char=t.char,this._width=t.width,this._heigth=t.height,this._xadvance=t.xadvance?t.xadvance:this._width,this._xoffset=t.xoffset?t.xoffset:0,this._yoffset=t.yoffset?t.yoffset:0,this._uv=t.uv?t.uv:null,isNaN(t.x)||(this._uv={left:t.x/e.textureWidth,right:(t.x+t.width)/e.textureWidth,top:1-(t.y+t.height)/e.textureHeight,bottom:1-t.y/e.textureHeight})}get uv(){return this._uv}clone(t){return new e(this._font,{char:t,width:this._width,height:this._heigth,xadvance:this._xadvance,xoffset:this._xoffset,yoffset:this._yoffset,uv:null})}asInlineGlyph(){return new Dt(this)}},kt=class extends b.PlaneGeometry{constructor(e,t){let n=1,r=1,i=e.typographic.font.size,a=t._segments.value;n=Math.ceil(e.typographic.width/i*a),r=Math.ceil(e.typographic.height/i*a),super(e.width,e.height,n,r),e.uv?(this._mapUVs(e),this._transformGeometry(e)):(this._nullifyUVs(),this.scale(0,0,1),this.translate(0,e.fontSize/2,0)),this.name=`GlyphGeometry`}_mapUVs(e){let t=e.uv.right-e.uv.left,n=e.uv.bottom-e.uv.top,r=this.getAttribute(`uv`).array.slice(),i=[];for(let a=0;a0)},z=function(e,t,n){e.defines&&(n?e.defines[t]===void 0&&(e.defines[t]=``,e.needsUpdate=!0):e.defines[t]!==void 0&&(delete e.defines[t],e.needsUpdate=!0))},Mt=function(e,t,n){e.defines[t]&&e.defines[t]===n||(e.defines[t]=n,e.needsUpdate=!0)},B=function(e,t,n){e.userData[t]?e.userData[t].value=n:e.uniforms[t].value=n},Nt=function(e,t,n){e.userData[t].value=n},V=class e{static ensureMaterialOptions(e){e.transparent=!0,e.alphaTest=e.alphaTest||.02}static ensureDefines(e){e.defines||={}}static ensureUserData(e,t){e.userData.glyphMap={value:t.glyphMap},e.userData.unitRange={value:new b.Vector2}}static bindUniformsWithUserData(e,t){e.uniforms.glyphMap=t.userData.glyphMap,e.uniforms.unitRange=t.userData.unitRange}static injectShaderChunks(t){e.injectVertexShaderChunks(t),e.injectFragmentShaderChunks(t)}static injectVertexShaderChunks(e){e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+At),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+jt),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+F)}static injectFragmentShaderChunks(e){e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+I),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+L)}static from(t){return class extends t{static get fontMaterialProperties(){return e.mediation}constructor(t={}){e.ensureMaterialOptions(t),super(t),e.ensureDefines(this),e.ensureUserData(this,t),this._userDefinedOnBeforeCompile=e=>{},this._onBeforeCompile=this._cumulativeOnBeforeCompile}set onBeforeCompile(e){this._userDefinedOnBeforeCompile=e}get onBeforeCompile(){return this._onBeforeCompile}_cumulativeOnBeforeCompile=t=>{e.bindUniformsWithUserData(t,this),e.injectShaderChunks(t),this._userDefinedOnBeforeCompile(t)}}}static get mediation(){return Pt}},Pt={clippingPlanes:{m:`clippingPlanes`},fontAlphaTest:{m:`alphaTest`,t:R},fontSide:{m:`side`},font:{m:`glyphMap`,t:function(e,t,n){let r=n?n.texture:null,i=n?n.unitRange:new b.Vector2;if(e[t]!==void 0){e.glyphMap=r,e.unitRange=i;return}e.userData&&e.userData.glyphMap&&(e.userData.glyphMap.value=r,e.userData.unitRange.value=i)}},color:{m:`color`},fontOpacity:{m:`opacity`},fontSmooth:{m:`NO_RGSS`,t:function(e,t,n){n&&n!==`antialiased`?e.defines.NO_RGSS=``:delete e.defines.NO_RGSS,e.needsUpdate=!0}},invertAlpha:{m:`INVERT_ALPHA`,t:z}},Ft=` +${At} +#include +void main() { + ${jt} + #include + #include + ${F} + #include +} +`,It=` +uniform vec3 diffuse; +uniform float opacity; +${I} +#include +#include +void main() { + // instead of : vec4 diffuseColor + vec4 diffuseColor = vec4( diffuse, opacity ); + ${L} + #include + // instead of + gl_FragColor = diffuseColor; + #include +} +`,Lt=.02,Rt=class e extends b.ShaderMaterial{static get mediation(){return V.mediation}constructor(e={}){super({uniforms:{glyphMap:{value:null},diffuse:{value:null},opacity:{value:1},unitRange:{value:new b.Vector2(0,0)},alphaTest:{value:Lt}},transparent:!0,clipping:!0,vertexShader:Ft,fragmentShader:It,extensions:{derivatives:!0}}),this.defines.USE_ALPHATEST=``,this.needsUpdate=!0,this.noRGSS=e.noRGSS||!1}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get opacity(){return this.uniforms.opacity.value}get unitRange(){return this.uniforms.unitRange.value}set unitRange(e){this.uniforms.unitRange.value.copy(e)}get glyphMap(){return this.uniforms.glyphMap.value}set glyphMap(e){this.uniforms.glyphMap.value=e}get isDefault(){return this.constructor===e}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms.alphaTest.value=e}},zt=class extends E{constructor(e,t,n,r){if(super(e,t),this._unitRange=new b.Vector2(1,1),n.pages?this._buildData(n):Bt(this,n),r instanceof b.Texture)this._texture=r,this._buildTexture(r);else if(typeof r==`string`||r instanceof String)Vt(this,r);else throw Error(`ThreeMeshUI::MSDFVariant provided 'texture' parameter is '${typeof r}'. Only Texture and String allowed.`);this._defaultMaterialClass=Rt,this._checkReadiness()}get texture(){return this._texture}get unitRange(){return this._unitRange}set fontMaterial(e){this._defaultMaterialClass=e}get fontMaterial(){return this._defaultMaterialClass}_buildData(e){this._font=new Et(e),this._kernings=this._buildKerningPairs(e),this._chars=this._buildCharacters(e),this._chars[` `]=this._buildCharacterWhite(e),this._chars[` +`]=this._buildCharacterWhite(e,` +`,.001,1),this._chars[` `]=this._buildCharacterWhite(e,` `,4,1),this._size=e.info.size,this._lineHeight=e.common.lineHeight,this._lineBase=e.common.base,this._distanceRange=e.distanceField.distanceRange,this._unitRange=new b.Vector2(this._distanceRange,this._distanceRange).divide(new b.Vector2(e.common.scaleW,e.common.scaleH))}_buildTexture(e){e.generateMipmaps=!1,e.minFilter=b.LinearFilter,e.magFilter=b.LinearFilter,e.needsUpdate=!0}_getFallbackCharacter(e){return W.missingCharacter(this,e)}getGeometricGlyph(e,t){return new kt(e,t)}_readyCondition(){return this._chars&&this._texture&&this._texture.image}_buildKerningPairs(e){let t={};for(let n=0;n{e._buildData(t),e._checkReadiness()})}function Vt(e,t){e._texture=new b.TextureLoader().load(t,t=>{e._buildTexture(t),e._checkReadiness()})}var H=class extends b.EventDispatcher{constructor(e){super(),this._name=e,this._variants=[],this._isReady=!1}get isReady(){return this._isReady}addVariant(e,t,n,r,i=!1){if(i||!this.getVariant(e,t)){this._isReady=!1;let i=new zt(e,t,n,r);this._variants.push(i),i.isReady?this._checkReadiness():i.addEventListener(`ready`,this._checkReadiness)}else console.warn(`FontFamily('${this._name}')::addVariant() - Variant(${e}, ${t}) already exists.`);return this}addCustomImplementationVariant(e,t=!1){return t||!this.getVariant(e.weight,e.style)?(this._isReady=!1,this._variants.push(e),e.isReady?this._checkReadiness():e.addEventListener(`ready`,this._checkReadiness)):console.warn(`FontFamily('${this._name}')::addCustomImplementationVariant() - Variant(${e.weight}, ${e.style}) already exists.`),this}getVariant(e,t){return e=T(e),this._variants.find(n=>n.weight===e&&n.style===t)}get name(){return this._name}_checkReadiness=()=>{this._variants.every(e=>e.isReady)&&Ut(this)}},Ht={type:`ready`};function Ut(e){e._isReady=!0,e.dispatchEvent(Ht)}var U={},Wt=function(e){let t=[...arguments];t.forEach(e=>{if(!(e instanceof H))throw Error(`FontLibrary::prepare() - One of the provided parameter is not a FontFamily. Instead ${typeof e} given.`)});let n=function(){return t.every(e=>e.isReady)};return new Promise((e,r)=>{if(n())e();else for(let r=0;r{n()&&e()})}})},Gt=function(e){return U[e]&&console.error(`FontLibrary::addFontFamily - Font('${e}') is already registered`),U[e]=new H(e),U[e]},Kt=function(e){return U[e]},qt=function(e){Jt=e},Jt=function(e,t){return console.error(`The character '${t}' is not included in the font characters set.`),` `};function Yt(e,t){return Jt(e,t)}var W={addFontFamily:Gt,getFontFamily:Kt,prepare:Wt,setMissingCharacterHandler:qt,missingCharacter:Yt},Xt=class extends x{constructor(){super(`fontFamily`,`inherit`,!0)}computeOutputValue(e){if(this._input instanceof H)this._value=this._input;else if(this._input!==`inherit`)if(typeof this._input==`string`){let e=W.getFontFamily(this._input);e?this._value=e:console.warn(`(.style) fontFamily, the font '${this._input}' is not registered. Aborted.`)}else console.warn(`(.style) fontFamily requires a registered fontFamily instance, or the id of a registered fontFamily.`),console.warn(`If you want to set a specific font, please use .font property instead.`)}get value(){return this._value}getInheritedInput(e){if(this._input!==`inherit`)return this._input;let t=e._parent._value;return t?t[`_${this._id}`].getInheritedInput(t):this.getDefaultValue()}},Zt=class extends x{constructor(){super(`lineHeight`,`inherit`,!0)}update(e,t){super.update(e,t),e._layouter._needsProcess=!0}},Qt=class extends x{constructor(){super(`whiteSpace`,`inherit`),this.isValidValue=en}},$t=[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`];function en(e){return $t.indexOf(e)===-1?(console.warn(`(.style) whiteSpace value '${e}' is not valid. Aborted`),!1):!0}var tn=class extends x{constructor(){super(`letterSpacing`,`inherit`,!0)}},nn=class extends x{constructor(){super(`fontSize`,`inherit`,!0)}},rn=class extends v{constructor(){super(`segments`,1,!1)}},an=class extends y{constructor(){super(`invertAlpha`,`inherit`)}},G=class extends x{constructor(){super(`fontKerning`,`inherit`),this.isValidValue=sn}},on=[`normal`,`none`,`inherit`];function sn(e){return on.indexOf(e)===-1?(console.warn(`(.style) fontKerning value '${e}' is not valid. Aborted`),!1):!0}var K=class extends y{constructor(e){super(e,`inherit`,!0)}},cn=class extends y{constructor(e){super(e,`inherit`,!1),this._mediation={},this._defaultMaterial=null}update(e,t){this._notInheritedValue=this._value,this._notInheritedValue===`inherit`?this._notInheritedValue=this.getInheritedInput(e):this.propagate(e),this._notInheritedValue?this._notInheritedValue.constructor.mediation?this._mediation={...this._notInheritedValue.constructor.mediation}:this._mediation={clippingPlanes:{m:`clippingPlanes`},fontAlphaTest:{m:`alphaTest`,t:R},fontSide:{m:`side`},color:{m:`color`},fontOpacity:{m:`opacity`}}:this._mediation={},e._transferToFontMaterial(),this._outputValue(t)}getInheritedInput(e){if(this._value!==`inherit`)return this._value;let t=e,n=null;for(;t._parent._value;)if(t=t._parent._value,t[`_${this._id}`]._value!==`inherit`){n=t[`_${this._id}`]._value;break}return n===null?this.getDefaultValue():n}getDefaultValue(){return this._defaultMaterial}},ln=function(e,t,n){e.traverse(e=>{e.renderOrder=n})},q=class extends b.Object3D{constructor(e,t){super(),Object.defineProperties(this,{isUI:{configurable:!1,enumerable:!0,value:!0}}),this._backgroundMesh=null,this._backgroundMaterial=null,this._backgroundCustomDepthMaterial=null,this._backgroundMaterialMediation={},this._backgroundMeshMediation={backgroundCastShadow:{m:`castShadow`},backgroundReceiveShadow:{m:`receiveShadow`},renderOrder:{m:`renderOrder`,t:ln}},this._fontMesh=null,this._fontMaterial=new cn(`fontMaterial`),this._fontCustomDepthMaterial=new cn(`fontCustomDepthMaterial`),this._fontMeshMediation={fontMaterial:{m:`material`},fontCustomDepthMaterial:{m:`customDepthMaterial`,t:ge},fontCastShadow:{m:`castShadow`},fontReceiveShadow:{m:`receiveShadow`},renderOrder:{m:`renderOrder`}},this._children=e.children?new e.children:new M(`children`),this._parent=new _e,this.addEventListener(`added`,this._rebuildParentUI),this.addEventListener(`removed`,this._rebuildParentUI),this._backgroundSide=new ye(`backgroundSide`),this._fontSide=new ye(`fontSide`),this._backgroundAlphaTest=new ve(`backgroundAlphaTest`,.02),this._fontAlphaTest=new ve(`fontAlphaTest`,.02),this._visible=new Qe(`visible`,!0),this._backgroundCastShadow=new K(`backgroundCastShadow`),this._fontCastShadow=new K(`fontCastShadow`),this._backgroundReceiveShadow=new K(`backgroundReceiveShadow`),this._fontReceiveShadow=new K(`fontReceiveShadow`),this._renderOrder=new ce,this._segments=e.segments?new e.segments:new rn,this._bounds=e.bounds?new e.bounds:new M(`bounds`),this._order=new dt,this._padding=new pe,this._margin=new me,this._position=new ft,this._flexDirection=e.flexDirection?new e.flexDirection:new at,this._justifyContent=e.justifyContent?new e.justifyContent:new ct,this._alignItems=e.alignItems?new e.alignItems:new N,this._display=new Me(`flex`),this._boxSizing=new Fe(`border-box`),this._width=new gt,this._height=new _t,this._backgroundColor=e.backgroundColor?new e.backgroundColor:new $e,this._backgroundOpacity=new O(`backgroundOpacity`,.5),this._backgroundImage=new ze,this._backgroundSize=new Ve(`cover`),this._color=e.color?new e.color:new D(`color`,`inherit`),this._fontOpacity=new O(`fontOpacity`,`inherit`),this._whiteSpace=e.whiteSpace?new e.whiteSpace:new Qt,this._fontFamily=e.fontFamily?new e.fontFamily:new Xt,this._fontStyle=e.fontStyle?new e.fontStyle:new yt(`normal`),this._fontWeight=e.fontWeight?new e.fontWeight:new St,this._fontSize=e.fontSize?new e.fontSize:new nn,this._lineHeight=e.lineHeight?new e.lineHeight:new Zt,this._fontKerning=e.fontKerning?new e.fontKerning:new G,this._letterSpacing=e.letterSpacing?new e.letterSpacing:new tn,this._overflow=new We(`visible`),this._borderRadius=new Xe(0),this._borderWidth=new Ze(0),this._borderColor=new D(`borderColor`,16711935),this._borderOpacity=new O(`borderOpacity`,1),this._font=new ke,this._lineBreak=e.lineBreak?new e.lineBreak:new M(`lineBreak`),this._textContent=e.textContent?new e.textContent:new vt,this._glyphs=e.glyphs?new e.glyphs:new M(`glyphs`),this._inlines=e.inlines?new e.inlines:new M(`inlines`),this._layouter=e.layouter?new e.layouter:new M(`layouter`),this._inlineJustificator=new et,this._textAlign=e.textAlign?new e.textAlign:new P,this._autoSize=e.autoSize?new e.autoSize:new M(`autoSize`),this._renderer=e.renderer?new e.renderer:new M(`renderer`),this._offset=new le,this._invertAlpha=new an,this._fontSmooth=e.fontSmooth?new e.fontSmooth:new ue,this._components=[this._textContent,this._children,this._parent,this._autoSize,this._fontFamily,this._fontStyle,this._fontWeight,this._font,this._whiteSpace,this._glyphs,this._inlines,this._visible,this._backgroundSide,this._fontSide,this._backgroundAlphaTest,this._fontAlphaTest,this._backgroundCastShadow,this._fontCastShadow,this._backgroundReceiveShadow,this._fontReceiveShadow,this._renderOrder,this._segments,this._padding,this._margin,this._width,this._height,this._borderWidth,this._boxSizing,this._bounds,this._position,this._flexDirection,this._justifyContent,this._alignItems,this._order,this._display,this._backgroundColor,this._backgroundOpacity,this._backgroundImage,this._backgroundSize,this._fontOpacity,this._color,this._fontSize,this._lineHeight,this._fontKerning,this._letterSpacing,this._borderRadius,this._borderColor,this._borderOpacity,this._lineBreak,this._offset,this._layouter,this._inlineJustificator,this._textAlign,this._invertAlpha,this._fontSmooth,this._fontMaterial,this._fontCustomDepthMaterial,this._overflow,this._renderer],this._onAfterUpdates=[],t.backgroundSide||=0,t&&this.set(t)}update(){let e={};for(let t of this._components)t._needsUpdate&&=(t.update(this,e),!1);this._transferToBackgroundMesh(e),this._transferToFontMesh(e),this._transferToBackgroundMaterial(e),this._transferToFontMaterial(e);for(let e of this._children._uis)e.update()}process(){for(let e of this._children._uis)e.process();for(let e of this._components)e._needsProcess&&=(e.process(this),!1)}render(){for(let e=0;e{this._parent._needsUpdate=!0,this.parent&&!this.parent.isUI?(J.register(this),this.activatePseudoState(`root`)):(J.remove(this),this.deactivatePseudoState(`root`))};add(e){let t=!1;for(let e=0;e{e.material&&e.material.dispose(),e.geometry&&e.geometry.dispose()}),super.clear(),this._backgroundMesh=null,this._backgroundMaterial=null,this._backgroundMaterialMediation=null,this._backgroundMeshMediation=null,this._children.dispose(),this._children=null,this._parent.dispose(),this._parent=null,this._backgroundSide=null,this._backgroundAlphaTest=null,this._visible=null,this._backgroundCastShadow=null,this._backgroundReceiveShadow=null,this._renderOrder=null,this._segments=null,this._bounds=null,this._boxSizing=null,this._padding=null,this._margin=null,this._position=null,this._flexDirection=null,this._justifyContent=null,this._alignItems=null,this._display=null,this._backgroundColor=null,this._backgroundOpacity=null,this._backgroundSize=null,this._fontOpacity=null,this._color=null,this._whiteSpace=null,this._fontFamily=null,this._fontStyle=null,this._fontWeight=null,this._lineHeight=null,this._fontKerning=null,this._letterSpacing=null,this._overflow=null,this._textAlign=null,this._font=null,this._lineBreak=null,this._layouter=null,this}get textContent(){return this._textContent.process(this),this._textContent._value}get backgroundMaterial(){return this._backgroundMaterial}set backgroundMaterial(e){this._backgroundMaterial=e,this._backgroundMaterialMediation={...e.constructor.mediation},this._transferToBackgroundMaterial(),this._backgroundMesh&&(this._backgroundMesh.material=this._backgroundMaterial,B(e,`frameSize`,this._backgroundMesh.scale))}set backgroundCustomDepthMaterial(e){this._backgroundCustomDepthMaterial=e,this._transferToBackgroundMaterial(),this._backgroundMesh&&(this._backgroundMesh.customDepthMaterial=this._backgroundCustomDepthMaterial)}get backgroundCustomDepthMaterial(){return this._backgroundCustomDepthMaterial}_transferToBackgroundMaterial(e=null){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._backgroundMaterial,e,this._backgroundMaterialMediation,this._backgroundCustomDepthMaterial)}set backgroundSide(e){this._backgroundSide.value=e,this._backgroundMaterial&&(this._backgroundMaterial.side=e)}get backgroundSide(){return this._backgroundSide.value}set backgroundAlphaTest(e){this._backgroundAlphaTest.value=e,this._backgroundMaterial&&(this._backgroundMaterial.alphaTest=e)}get backgroundAlphaTest(){return this._backgroundAlphaTest.value}get fontMaterial(){return this._fontMaterial.value}set fontMaterial(e){this._fontMaterial.value=e}set fontCustomDepthMaterial(e){this._fontCustomDepthMaterial.value=e}get fontCustomDepthMaterial(){return this._fontCustomDepthMaterial.value}_transferToFontMaterial(e=null){let t=this._fontMaterial.value;if(t){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,t,e,this._fontMaterial._mediation,this._fontCustomDepthMaterial.value)}}set fontSide(e){this._fontSide.value=e}get fontSide(){return this._fontSide.value}set fontAlphaTest(e){this._fontAlphaTest.value=e}get fontAlphaTest(){return this._fontAlphaTest.value}_transferToBackgroundMesh(e=null){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._backgroundMesh,e,this._backgroundMeshMediation)}setBackgroundMesh(e){this._backgroundMesh&&(this.remove(this._backgroundMesh),this.unbindBackgroundMeshProperties()),this._backgroundMesh=e,this._backgroundMesh&&(this.bindBackgroundMeshProperties(),this._backgroundCustomDepthMaterial&&(this._backgroundMesh.customDepthMaterial=this._backgroundCustomDepthMaterial),this._backgroundMaterial&&B(this._backgroundMaterial,`frameSize`,this._backgroundMesh.scale),this._transferToBackgroundMesh(),this.add(this._backgroundMesh))}bindBackgroundMeshProperties(){}unbindBackgroundMeshProperties(){}activatePseudoState(e){}deactivatePseudoState(e){}togglePseudoState(e){}hasPseudoState(e){return!1}set borderRadiusMediation(e){this._borderRadius.mediation=e}set backgroundCastShadow(e){this._backgroundCastShadow&&(this._backgroundCastShadow.value=e)}get backgroundCastShadow(){return this._backgroundCastShadow}set backgroundReceiveShadow(e){this._backgroundReceiveShadow&&(this._backgroundReceiveShadow.value=e)}get backgroundReceiveShadow(){return this._backgroundReceiveShadow}set renderOrder(e){this._renderOrder&&(this._renderOrder.value=e)}get renderOrder(){return this._renderOrder.value}_transferToFontMesh(e=null){if(this._fontMesh){if(!e){e={};for(let t of this._components)t.output(e)}C.mediate(this,this._fontMesh,e,this._fontMeshMediation)}}setFontMesh(e){this._fontMesh&&(this.remove(this._fontMesh),this._fontMesh.material&&this._fontMesh.material.dispose(),this._fontMesh.geometry&&this._fontMesh.geometry.dispose(),this._fontMesh=null,this.unbindFontMeshProperties()),this._fontMesh=e,this._fontMesh&&(this._fontMesh.raycast=()=>{},this.bindFontMeshProperties(),this._transferToFontMaterial(),this._transferToFontMesh(),this.add(this._fontMesh))}bindFontMeshProperties(){}unbindFontMeshProperties(){}set fontCastShadow(e){this._fontCastShadow&&(this._fontCastShadow.value=e)}get fontCastShadow(){return this._fontCastShadow}set fontReceiveShadow(e){this._fontReceiveShadow&&(this._fontReceiveShadow.value=e)}get fontReceiveShadow(){return this._fontReceiveShadow}set segments(e){this._segments.value=e}get segments(){return this._segments.value}set onAfterUpdate(e){console.warn("ThreeMeshUI v7xx : `onAfterUpdate()` property has been deprecated, please rely on `addAfterUpdate` instead."),this.addAfterUpdate(e)}addAfterUpdate(e){this._onAfterUpdates.push(e)}removeAfterUpdate(e){let t=this._onAfterUpdates.indexOf(e);t!==-1&&this._onAfterUpdates.splice(t,1)}performAfterUpdate(){for(let e=0;e 0.0 && vUvB.y > topBorderUVy ) +{ + + float w = fwidth( 1.0 - vUvB.y ) * mult; + float step = smoothstep( topBorderUVy , topBorderUVy + w , vUvB.y ); + diffuseColor = mix( diffuseColor, borderColor, step ); + +} + +// Left +float leftBorderUVx = borderWidth.w; +if( borderWidth.w > 0.0 && vUvB.x < leftBorderUVx ) +{ + + float w = fwidth( vUvB.x ) * mult ; + float step = smoothstep( leftBorderUVx , leftBorderUVx - w , vUvB.x ); + diffuseColor = mix( diffuseColor, borderColor, step ); + +} + +// Bottom +float bottomBorderUVy = borderWidth.z; +if( borderWidth.z > 0.0 && vUvB.y < bottomBorderUVy ) +{ + float w = fwidth( vUvB.y ) * mult; + float step = smoothstep( bottomBorderUVy , bottomBorderUVy - w , vUvB.y ); + diffuseColor = mix( diffuseColor, borderColor, step ); +} + +// Right +float rightBorderUVx = 1.0 - borderWidth.y; +if( borderWidth.y > 0.0 && vUvB.x > rightBorderUVx ) +{ + float w = fwidth( 1.0 - vUvB.x ) * mult; + float step = smoothstep( rightBorderUVx , rightBorderUVx + w , vUvB.x ); + diffuseColor = mix( diffuseColor, borderColor, step ); +} + + +// Step 2 ---------------------------------------------- +// Process each corners ( topLeft, topRight, bottomRight, bottomLeft ) +// To transparentize outside radiuses +// To draw ellipse border on the corner + + +// Top Left corner +if( vUvB.x < cornerTL.x && vUvB.y > cornerTL.y ) { + + // Only draw border if width is set + if( borderWidth.w + borderWidth.x > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerTL, cornerTL.x - borderWidth.w, ( 1.0 - cornerTL.y ) - borderWidth.x ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + // Then then radius + float radiusFactor = getEllipticFactor( vUvB, cornerTL, cornerTL.x, 1.0 - cornerTL.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Bottom Left +if( vUvB.x < cornerBL.x && vUvB.y < cornerBL.y ) { + + if( borderWidth.w + borderWidth.z > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerBL, cornerBL.x - borderWidth.w, cornerBL.y - borderWidth.z ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + + float radiusFactor = getEllipticFactor( vUvB, cornerBL, cornerBL.x, cornerBL.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Top Right +if( vUvB.x > cornerTR.x && vUvB.y > cornerTR.y ) { + + if( borderWidth.y + borderWidth.x > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerTR, ( 1.0 - cornerTR.x ) - borderWidth.y, ( 1.0 - cornerTR.y ) - borderWidth.x ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + float radiusFactor = getEllipticFactor( vUvB, cornerTR, 1.0 - cornerTR.x, 1.0 - cornerTR.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} +// Bottom Right +if( vUvB.x > cornerBR.x && vUvB.y < cornerBR.y ) { + + if( borderWidth.y + borderWidth.z > 0.0 ){ + + float borderFactor = getEllipticFactor( vUvB, cornerBR, ( 1.0 - cornerBR.x ) - borderWidth.y, cornerBR.y - borderWidth.z ); + float step = smoothstep( 1.0, 1.0 + fwidth( borderFactor ) * mult, borderFactor ); + diffuseColor = mix( diffuseColor, borderColor, step ); + + } + + float radiusFactor = getEllipticFactor( vUvB, cornerBR, 1.0 - cornerBR.x, cornerBR.y ); + float alphaStep = smoothstep( 1.0 , 1.0 + fwidth(radiusFactor) * mult , radiusFactor ); + diffuseColor.a = mix( diffuseColor.a, 0.0, alphaStep ); + +} + +`,fn=` + +// To be removed - required for both border and background +uniform vec3 frameSize; +uniform vec2 textureSize; + +`,pn=` + +#ifdef USE_MAP + +vec4 sampleTexture() { + + vec2 uv = vUv; + + // default stretch + #if BACKGROUND_MAPPING != 0 + + float textureRatio = textureSize.x / textureSize.y; + float panelRatio = frameSize.x / frameSize.y; + float ratio = panelRatio / textureRatio; + float ratio2 = textureRatio / panelRatio; + + // contain + #if BACKGROUND_MAPPING == 1 + if ( textureRatio < panelRatio ) { // repeat on X + float newX = uv.x * ratio; + newX += 0.5 - 0.5 * ratio; + uv.x = newX; + } else { // repeat on Y + float newY = uv.y * ratio2; + newY += 0.5 - 0.5 * ratio2; + uv.y = newY; + } + #else + // cover + if ( textureRatio < panelRatio ) { // stretch on Y + float newY = uv.y * ratio2; + newY += 0.5 - 0.5 * ratio2; + uv.y = newY; + } else { // stretch on X + float newX = uv.x * ratio; + newX += 0.5 - 0.5 * ratio; + uv.x = newX; + } + + #endif + + #endif + + return texture2D( map, uv ); + +} +#endif +`,mn=` +#ifdef USE_MAP + + vec4 textureSample = sampleTexture(); + diffuseColor *= textureSample; + +#endif +`,hn={msdfAlphaglyphParsVertexGlsl:At,msdfAlphaglyphVertexGlsl:jt,msdfOffsetglyphVertexGlsl:F,msdfAlphaglyphParsFragmentGlsl:I,msdfAlphaglyphFragmentGlsl:L,frameBorderParsVertexGlsl:Y,frameBorderVertexGlsl:X,frameCommonParsFragmentGlsl:fn,frameBorderParsFragmentGlsl:un,frameBorderFragmentGlsl:dn,frameBackgroundParsFragmentGlsl:pn,frameBackgroundFragmentGlsl:mn},gn=` +// Would be automatic on three materials and from USE_UV +#ifdef USE_MAP +varying vec2 vUv; +#endif + +${Y} + +#include + +void main() { + + #ifdef USE_MAP + vUv = uv; + #endif + + ${X} + + vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); + gl_Position = projectionMatrix * mvPosition; + + #include + +} +`,_n=` + +// Basic +uniform vec3 diffuse; +uniform float opacity; + +#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif + +${fn} + +${un} + + +#ifdef USE_MAP +varying vec2 vUv; +uniform sampler2D map; +#endif + +${pn} + +#include + +void main() { + + vec4 diffuseColor = vec4( diffuse, opacity ); + + // map + ${mn} + + ${dn} + + #ifdef USE_ALPHATEST + + if ( diffuseColor.a < alphaTest ) discard; + + #endif + + // output + gl_FragColor = diffuseColor; + + + #include +} +`,vn=class e{static get mediation(){return yn}static ensureMaterialOptions(e){e.transparent=!0,e.alphaTest=e.alphaTest||.02}static ensureDefines(e){e.defines||={}}static ensureUserData(e,t){e.userData.borderColor={value:null},e.userData.borderRadius={value:new b.Vector4(0,0,0,0)},e.userData.cornerTL={value:new b.Vector2(0,1)},e.userData.cornerTR={value:new b.Vector2(1,1)},e.userData.cornerBR={value:new b.Vector2(1,0)},e.userData.cornerBL={value:new b.Vector2(0,0)},e.userData.borderWidth={value:new b.Vector4(0,0,0,0)},e.userData.borderOpacity={value:null},e.userData.frameSize={value:new b.Vector3(1,1,1)},e.userData.textureSize={value:new b.Vector2(1,1)}}static bindUniformsWithUserData(e,t){e.uniforms.borderColor=t.userData.borderColor,e.uniforms.borderRadius=t.userData.borderRadius,e.uniforms.cornerTL=t.userData.cornerTL,e.uniforms.cornerTR=t.userData.cornerTR,e.uniforms.cornerBR=t.userData.cornerBR,e.uniforms.cornerBL=t.userData.cornerBL,e.uniforms.borderWidth=t.userData.borderWidth,e.uniforms.borderOpacity=t.userData.borderOpacity,e.uniforms.frameSize=t.userData.frameSize,e.uniforms.textureSize=t.userData.textureSize}static injectShaderChunks(t){e.injectVertexShaderChunks(t),e.injectFragmentShaderChunks(t)}static injectVertexShaderChunks(e){e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+Y),e.vertexShader=e.vertexShader.replace(`#include `,`#include +`+X)}static injectFragmentShaderChunks(e){e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+pn),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+un),e.fragmentShader=e.fragmentShader.replace(`#include `,`#include +`+fn),e.fragmentShader=e.fragmentShader.replace(`#include `,mn),e.fragmentShader=e.fragmentShader.replace(`#include `,dn+` +#include `)}},yn={clippingPlanes:{m:`clippingPlanes`},backgroundAlphaTest:{m:`alphaTest`,t:R},backgroundSide:{m:`side`},backgroundImage:{m:`map`},backgroundColor:{m:`color`},backgroundOpacity:{m:`opacity`},backgroundSize:{m:`computedBackgroundSize`,t:function(e,t,n){n=[`stretch`,`contain`,`cover`].indexOf(n),Mt(e,`BACKGROUND_MAPPING`,n)}},borderWidth:{m:`borderWidth`,t:B},borderColor:{m:`borderColor`,t:B},cornerTL:{m:`cornerTL`,t:B},cornerTR:{m:`cornerTR`,t:B},cornerBR:{m:`cornerBR`,t:B},cornerBL:{m:`cornerBL`,t:B},borderOpacity:{m:`borderOpacity`,t:B},size:{m:`frameSize`,t:B},tSize:{m:`textureSize`,t:B}},bn=class extends b.ShaderMaterial{static get mediation(){return vn.mediation}constructor(){super({uniforms:{alphaTest:{value:.02},map:{value:null},diffuse:{value:new b.Color(16777215)},opacity:{value:1},borderColor:{value:new b.Color(0)},borderOpacity:{value:0},borderRadius:{value:new b.Vector4(0,0,0,0)},cornerTL:{value:new b.Vector2(0,1)},cornerTR:{value:new b.Vector2(1,1)},cornerBR:{value:new b.Vector2(1,0)},cornerBL:{value:new b.Vector2(0,0)},borderWidth:{value:new b.Vector4(0,0,0,0)},frameSize:{value:new b.Vector3(1,1,1)},textureSize:{value:new b.Vector2(1,1)}},side:b.FrontSide,transparent:!0,clipping:!0,vertexShader:gn,fragmentShader:_n,extensions:{derivatives:!0}}),this.defines.USE_ALPHATEST=``,this.needsUpdate=!0}set map(e){this.uniforms.map.value=e,e?this.defines.USE_UV===void 0&&(this.defines.USE_UV=``,this.needsUpdate=!0):this.defines.USE_UV!==void 0&&(delete this.defines.USE_UV,this.needsUpdate=!0),this.needsUpdate=!0}get map(){return this.uniforms.map.value}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms.alphaTest.value=e}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get opacity(){return this.uniforms.opacity.value}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}},xn=class extends v{constructor(){super(`children`,null,!1),this._uis=[],this._boxes=[]}update(e,t){this._compute(e),e._layouter._needsUpdate=!0,e._renderOrder._needsUpdate=!0}process(e){this._compute(e),e._flexDirection._needsProcess=!0,e._layouter._needsProcess=!0,e._overflow._needsRender=!0}_compute(e){this._uis=e.children.filter(e=>e.visible&&e.isUI),this._boxes=this._uis.filter(e=>e.isBox).sort(this._sortOrder)}dispose(){this._uis=null,this._boxes=null}_sortOrder=(e,t)=>e._order._valuet._order._value?1:this._uis.indexOf(e){let n=t._margin._value;return e+(t._bounds._offsetWidth+n.y+n.w)},0)}function Tn(e){return e._children._boxes.reduce((e,t)=>{let n=t._margin._value;return e+(t._bounds._offsetHeight+n.x+n.z)},0)}var En=class extends N{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!0,this._process=this.emptyStrategyLogic,this._childAlign=this.emptyStrategyLogic}computeOutputValue(e){switch(this._value=this._inheritedInput,e._flexDirection._value){case`row`:case`row-reverse`:switch(this._process=Nn,this._value){case`start`:this._childAlign=kn;break;case`end`:this._childAlign=On;break;default:this._childAlign=Dn}break;case`column`:case`column-reverse`:switch(this._process=Mn,this._value){case`start`:this._childAlign=jn;break;case`end`:this._childAlign=An;break;default:this._childAlign=Dn}break}this._needsProcess=!0,e._autoSize._needsProcess=!0,e._flexDirection._needsProcess=!0,e._justifyContent._needsProcess=!0,this._needsProcess=!0,e._fontSize._needsProcess=!0,e._layouter._needsProcess=!0}process(e){this._process(e,this._childAlign);let t=`center`,n=`center`,r=`center`,i=e._padding._value,a=e._borderWidth._value;t=e._flexDirection._value.indexOf(`column`)===-1?this._value===`start`?r=`top`:this._value===`end`?r=`bottom`:`centerY`:this._value===`start`?n=`left`:this._value===`end`?n=`right`:`centerX`;let o=-(i.x-i.z)/2-(a.x-a.z)/2,s=-(i.y-i.w)/2-(a.y-a.w)/2;n===`left`?s=(i.w-i.y)/2+(a.w-a.y)/2:n===`right`&&(s=-(i.y-i.w)/2-(a.y-a.w)/2),r===`top`?o=-(i.x-i.z)/2-(a.x-a.z)/2:r===`bottom`&&(o=(i.z-i.x)/2+(a.z-a.x)/2),e._children._boxes.forEach(n=>{let r=0,i=0;t===`top`?i=-n._margin._value.x:t===`bottom`?i=n._margin._value.z:t===`left`?r=n._margin._value.w:t===`right`?r=-n._margin._value.y:t===`centerX`?r=(n._margin._value.w-n._margin._value.y)/2:t===`centerY`&&(i=(-n._margin._value.x+n._margin._value.z)/2),e._layouter._childrenPos[n.id].x+=s+r,e._layouter._childrenPos[n.id].y+=o+i})}};function Dn(){return 0}function On(e,t){return-t+e._bounds._offsetHeight/2}function kn(e,t){return t-e._bounds._offsetHeight/2}function An(e,t){return t-e._bounds._offsetWidth/2}function jn(e,t){return-t+e._bounds._offsetWidth/2}function Mn(e,t){let n=e._bounds._innerWidth/2;e._children._boxes.forEach(r=>{e._layouter._childrenPos[r.id].x=t(r,n)})}function Nn(e,t){let n=e._bounds._innerHeight/2;e._children._boxes.forEach(r=>{e._layouter._childrenPos[r.id].y=t(r,n)})}var Pn=class extends at{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!0,this._offset=0,this._reverse=1,this._process=this.emptyStrategyLogic}computeOutputValue(e){switch(this._value=this._inheritedInput,this._value){case`row`:this._process=Fn;break;case`row-reverse`:this._process=In;break;case`column`:this._process=Ln;break;case`column-reverse`:this._process=Rn;break}e._justifyContent._needsUpdate||e._justifyContent.computeOutputValue(e),e._alignItems._needsUpdate||e._alignItems.computeOutputValue(e),this._needsProcess=!0}process(e){switch(this._value){case`row`:this._offset=-e._bounds._innerWidth/2;break;case`row-reverse`:this._offset=e._bounds._innerWidth/2;break;case`column`:this._offset=e._bounds._innerHeight/2;break;case`column-reverse`:this._offset=-e._bounds._innerHeight/2;break}this._reverse=-Math.sign(this._offset),this._reverse===0&&(this._reverse=1),this._process(e),e._justifyContent._needsProcess=!0,e._layouter._needsProcess=!0}};function Fn(e){let t=e._flexDirection._offset,n=e._flexDirection._reverse,r=e._children._boxes;for(let i=0;i{e._layouter._childrenPos[t.id].x-=a-o[n]})}function Vn(e){let t=e._flexDirection._offset,{usedDirectionSpace:n,remainingSpace:r}=Un(e),i=t*2-n*Math.sign(t),a=this._computeOffset(i),o=this._computeMargin(e,r,e._flexDirection._reverse);e._children._boxes.forEach((t,n)=>{e._layouter._childrenPos[t.id].y-=a-o[n]})}function Hn(e){let t=e._bounds._computeChildrenSideWidth(e);return{usedDirectionSpace:t,remainingSpace:e._bounds._innerWidth-t}}function Un(e){let t=e._bounds._computeChildrenSideHeight(e);return{usedDirectionSpace:t,remainingSpace:e._bounds._innerHeight-t}}function Q(e){return 0}function Wn(e){return e}function Gn(e){return e/2}function Kn(e,t=0,n=1){return Array(e._children._boxes.length).fill(0)}function qn(e,t=0,n=1){let r=e._children._boxes.length,i=Array(r).fill(0);if(t>0&&r>1){let e=t/(r-1)*n;i[0]=0;for(let t=1;t0){let e=t/(r+1)*n;for(let t=0;t0){let e=t/r*n,a=e/2;i[0]=a;for(let t=1;tt&&(t=r)}return t}function ur(e){let t=0;for(let n of e._children._boxes){if(n._position._value!==`static`)continue;let e=n._margin._value,r=n._bounds._offsetHeight+e.x+e.z;r>t&&(t=r)}return t}var dr=class e extends q{constructor(t,n){e.definePropertiesValues(t,n),super(t,n),e.init(this)}bindBackgroundMeshProperties(){this._bounds._size=this._backgroundMesh.scale,this._bounds._needsProcess=!0}unbindBackgroundMeshProperties(){this._bounds._size=new b.Vector3(1,1,1),this._bounds._needsProcess=!0}static definePropertiesValues(e,t){e.children||=xn,e.bounds||=Sn,e.flexDirection||=Pn,e.justifyContent||=zn,e.alignItems||=En,e.position||=tr,e.autoSize||=nr,e.renderer||=er,t.fontSide||=0,t.invertAlpha||=!1,t.fontCastShadow||=!1,t.fontReceiveShadow||=!1,t.backgroundCastShadow||=!1,t.backgroundReceiveShadow||=!1}static init(e){Object.defineProperties(e,{isBox:{configurable:!1,enumerable:!0,value:!0}}),e.backgroundMaterial=new bn,e._renderer.render(e),e._backgroundMesh.visible=!1}},fr=class extends Array{constructor(...e){super(...e),this.width=0,this.lineBase=0,this.lineHeight=0,this.y=0}},pr=class extends v{constructor(){super(`layouter`,null,!1),this._needsUpdate=!0,this._childrenPos={}}update(e,t){this._childrenPos={};for(let t of e._children._boxes)t._position._value===`static`&&(this._childrenPos[t.id]=t.position)}process(e){}},mr=class e extends dr{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}add(e){let t=[];for(let e=0;ee.asInlineGlyph()),this._value.length){this._value[0].paddingLeft=e._padding._value.w,this._value[0].marginLeft=e._margin._value.w;let t=this._value.length-1;this._value[t].paddingRight=e._padding._value.y,this._value[t].marginRight=e._margin._value.y}e._fontSize._needsProcess=!0,e._lineBreak._needsProcess=!0,e._fontKerning._needsProcess=!0,e._layouter._needsProcess=!0}get value(){return this._value}},_r=class extends v{constructor(){super(`glyphs`,null,!1),this._needsUpdate=!1,this._value=null}process(e){e._font._fontVariant&&e._font._fontVariant.isReady&&(this._value=e._whiteSpace._whiteSpacedContent.split(``).map(t=>e._font._fontVariant.getTypographicGlyph(t)),this._value&&(e._inlines._needsProcess=!0))}get value(){return this._value}},vr=class extends D{constructor(){super(`color`,`inherit`,!1),this.output=this._outputValue}computeOutputValue(e){this._input===`inherit`?this._value.set(this.getInheritedInput(e)):this._value.set(this._input)}},yr=class extends v{constructor(e=`- ,.:?! +`){super(`lineBreak`,e,!0),this._newLineBreakability=null}update(e,t){this._needsProcess=!0}process(e){let t=e._whiteSpace._newLineBreakability;if(e._inlines._value)for(let n=0;ne.isUI&&e.isText),this._needsProcess=!0}process(e){this._value&&(this._value._layouter._needsProcess=!0)}},xr=class extends D{constructor(e){super(`backgroundColor`,e,!1),this._allowsInherit=!1,this._input=0}computeOutputValue(e){this._input===`inherit`?this._value.set(this.getInheritedInput(e)):this._value.set(this._input)}},Sr=class extends yt{constructor(){super(),this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited}},Cr=class extends St{constructor(){super()}computeOutputValue(e){this._value=T(this.getInheritedInput(e))}},wr=class extends Xt{constructor(){super(`fontFamily`,`inherit`,!0),this._input=`inherit`,this._needsUpdate=!0,this._allowsInherit=!1}computeOutputValue(e){let t=this._inheritedInput;if(t===`inherit`&&(t=this.getInheritedInput(e)),t instanceof H)this._value=t,e._font._needsUpdate=!0;else if(typeof t==`string`){let n=W.getFontFamily(t);n?(this._value=n,e._font._needsUpdate=!0):console.warn(`(.style) fontFamily, the font '${t}' is not registered. Aborted.`)}else console.warn(`(.style) fontFamily requires a registered fontFamily instance, or the id of a registered fontFamily.`),console.warn(`If you want to set a specific font, please use .font property instead.`)}get value(){return this._value}},Tr=class extends Qt{constructor(){super(),this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited,this._whiteSpacedContent=``,this._stringCollapser=this.emptyStrategyLogic,this._inlineCollapser=this.emptyStrategyLogic,this._inlineWrapper=this.emptyStrategyLogic}_computeFromInherited(e){switch(super._computeFromInherited(e),this._newLineBreakability=Dr(this._value),this._value){case`nowrap`:case`normal`:this._stringCollapser=Or;break;case`pre-line`:this._stringCollapser=kr;break;default:this._stringCollapser=Ar}switch(this._value){case`pre-line`:case`nowrap`:case`normal`:this._inlineCollapser=Fr;break;case`pre-wrap`:this._inlineCollapser=Pr;break;default:this._inlineCollapser=Ir}switch(this._value){case`pre-line`:case`pre-wrap`:case`normal`:this._inlineWrapper=jr;break;case`pre`:this._inlineWrapper=Mr;break;default:this._inlineWrapper=Nr}this._needsProcess=!0}process(e){e.isInline&&!e.isInlineBlock&&(this._whiteSpacedContent=this._stringCollapser(e._textContent._value),e._glyphs._needsProcess=!0)}},Er={" ":` `,"\n":` +`,"\r":`\r`," ":` `},Dr=function(e){switch(e){case`pre`:case`pre-wrap`:case`pre-line`:return`mandatory`}return null};function Or(e){return kr(e.replace(/\n/g,` `))}function kr(e){return e.replace(/[ ]{2,}/g,` `)}function Ar(e){return e}function jr(e,t,n,r){let i=e[t];if(i.lineBreak===`mandatory`||n+i.xadvance+i.xoffset+i.kerning>r.INNER_WIDTH)return!0;let a=zr(e,t,r);return Br(e[t-1],n,a,r)}function Mr(e,t,n,r){return e[t].lineBreak===`mandatory`}function Nr(){return!1}function Pr(e){if(!e[0])return 0;let t=e[0],n=e[e.length-1];return t.char&&t.char===` +`&&e.length>1&&Rr([t],e[1]),n.char&&n.char===` +`&&e.length>1&&Lr([n],e[e.length-2]),t.offsetX}function Fr(e){if(!e[0])return 0;let t=[],n;for(let r=0;rr){t.push(i),n=e[r+1];continue}break}Rr(t,n),t=[],n=null;for(let r=e.length-1;r>0;r--){let i=e[r];if(i.char&&Er[i.char]&&r>0){t.push(i),n=e[r-1];continue}break}return Lr(t,n),e[0].offsetX}function Ir(e){return e[0]?e[0].offsetX:0}function Lr(e,t){if(t)for(let n=0;n-1}var Vr=class extends tn{constructor(){super(),this._input=`inherit`,this._allowsInherit=!1,this.computeOutputValue=this._computeFromInherited}_computeFromInherited(e){super._computeFromInherited(e),e._fontSize._needsProcess=!0,e._layouter._needsProcess=!0}},Hr=class extends x{constructor(){super(`fontSize`,`inherit`,!0),this._allowsInherit=!1}computeOutputValue(e){this._value=this._inheritedInput,e._font._fontVariant&&(e._bounds._needsProcess=!0,e._layouter._needsProcess=!0)}process(e){if(!e._font._fontVariant||!e._font._fontVariant.isReady)return;let t=this._value/e._font._fontVariant.typographic.size,n=e._inlines._value;for(let e=0;ee._font._fontVariant.getGeometricGlyph(t,e).translate(t.offsetX,t.offsetY,0)));e.setFontMesh(new b.Mesh(t,e.fontMaterial)),e._fontMesh.renderOrder=1/0}},Xr=class extends P{constructor(){super(),this._allowsInherit=!1,this._needsUpdate=!1}computeOutputValue(e){this._value=this._inheritedInput,e._layouter._needsProcess=!0}},Zr=class e extends q{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}add(e){let t=[];for(let e=0;e{super._rebuildParentUI(),this._layouter._needsUpdate=!0};set textContent(e){this._textContent.value=e}get textContent(){return this._textContent._value}set invertAlpha(e){this._invertAlpha.value=e}get invertAlpha(){return this._invertAlpha._value}static definePropertiesValues(e,t){e.children||=Kr,e.textContent||=hr,e.glyphs||=_r,e.inlines||=gr,e.layouter||=br,e.renderer||=Yr,e.fontFamily||=wr,e.fontWeight||=Cr,e.fontStyle||=Sr,e.fontSize||=Hr,e.color||=vr,e.backgroundColor||=xr,e.lineBreak||=yr,e.letterSpacing||=Vr,e.whiteSpace||=Tr,e.segments||=Wr,e.textAlign||=Xr,e.fontKerning||=Gr}static init(e){Object.defineProperties(e,{isInline:{configurable:!1,enumerable:!0,value:!0}})}},Qr=class extends vt{constructor(){super(`textContent`,null,!1),this._needsUpdate=!1}set value(e){this._value!==e&&(this._value=e,this._needsUpdate=!0)}update(e,t){this._needsUpdate=!1;for(let t=e.children.length-1;t>=0;t--){let n=e.children[t];n.isUI&&(e.remove(n),n.clear())}e._children._uis=[],this._value&&e.add(new Zr({name:`anonymousInline`,textContent:this._value}))}},$r=class extends Array{constructor(...e){super(...e),this.width=0,this.height=0}},ei=class extends v{constructor(){super(`layouter`,null,!1),this._value=null}update(e,t){}process(e){let t=e._width._value;t=e._width._auto?1/0:e._bounds._innerWidth;let n=e._lineHeight._value,r=new $r(new fr),i=0;e._children._inlines.forEach(e=>{if(!e._inlines.value)return;this._resetInlines(e);let n=e._fontSize._value,a=e._letterSpacing._value*n,o={WHITESPACE:e._whiteSpace._value,LETTERSPACING:a,BREAKON:e._lineBreak._value,INNER_WIDTH:t},s=e._whiteSpace._inlineWrapper;i+=e._margin._value.w+e._padding._value.w,e._inlines.value.forEach((e,t,n)=>{let c=r[r.length-1];if(s(n,t,i,o)){if(r.push(new fr(e)),e.offsetX=e.xoffset,e.width===0){i=0;return}e.cumulativeWidth=e.xadvance+a,i=e.cumulativeWidth;return}r[r.length-1].push(e),e.offsetX=i+e.xoffset+e.kerning,e.cumulativeWidth=e.xadvance+e.kerning+a,i+=e.cumulativeWidth,c.length-1==1&&c[c.length-2].width===0&&(e.offsetX-=e.xoffset,i-=e.xoffset)}),i+=e._margin._value.y+e._padding._value.y});let a=e._whiteSpace._inlineCollapser,o=0,s=0,c=0;r.forEach((e,t)=>{let i=a(e),l=0,u=0;if(e.forEach(e=>{l=Math.max(l,e.lineHeight),u=Math.max(u,e.lineBase),e.offsetX-=i}),e.lineHeight=l,e.lineBase=u,t===0?c=-(l*n-l)*.5:c-=r[t-1].lineHeight*n,e.y=c,e.x=0,e.forEach(t=>{t.offsetY=c-t.anchor,t.lineHeighte.visible&&e.isUI),this._inlines=this._uis.filter(e=>e.isInline).sort(this._sortOrder)}dispose(){this._inlines=null}_sortOrder=(e,t)=>e._order._valuet._order._value?1:this._uis.indexOf(e)0&&super.add(...t),n&&(this._children._needsUpdate=!0,this._layouter._needsProcess=!0),this}set textContent(e){this._textContent.value=e}get textContent(){return super.textContent}set invertAlpha(e){this._invertAlpha.value=e}get invertAlpha(){return this._invertAlpha._value}get lines(){return this._layouter._value}static definePropertiesValues(e,t){e.flexDirection=ii,e.justifyContent=ct,e.alignItems=N,e.bounds=si,e.autoSize=li,e.renderer=ui,e.children||=ci,e.textContent||=Qr,e.layouter||=ei,e.lineHeight||=ai,e.textAlign||=ti,e.whiteSpace||=Tr,e.fontKerning||=oi,e.segments||=Ur,t.width||=`100%`,t.fontSide||=0}static init(e){Object.defineProperties(e,{isText:{configurable:!1,enumerable:!0,value:!0}})}},fi=class extends v{constructor(){super(`inlines`,null,!1),this._value=[]}process(e){this._value[0].paddingLeft=e._padding._value.w,this._value[0].marginLeft=e._margin._value.w;let t=this._value.length-1;this._value[t].paddingRight=e._padding._value.y,this._value[t].marginRight=e._margin._value.y}},pi=class extends v{constructor(){super(`renderer`)}render(e){e._backgroundMesh||e.setBackgroundMesh(new Zn(e)),e._backgroundMesh.position.x=e._inlines._value[0].offsetX+e._inlines._value[0].width/2,e._backgroundMesh.position.y=e._inlines._value[0].offsetY+e._inlines._value[0].lineBase/2,e._bounds.render(e)}},mi=class extends v{constructor(){super(`bounds`,null,!1),this._size=new b.Vector3(1,1,1),this._offsetWidth=0,this._offsetHeight=0,this._innerWidth=0,this._innerHeight=0}update(e,t){this.output(t),this._needsProcess=!0}process(e){this._offsetWidth=this._innerWidth=e._inlines._value[0].width,this._offsetHeight=this._innerHeight=e._inlines._value[0].height,this._needsRender=!0,e._borderWidth._needsRender=!0,e._borderRadius._needsRender=!0}render(e){this._size.x=this._offsetWidth,this._size.y=this._offsetHeight}output(e){e.size=this._size}},hi=class e extends q{constructor(t={}){let n={};e.definePropertiesValues(n,t),super(n,t),e.init(this)}clear(){for(let e of this._inlines._value)e.clear();return super.clear()}bindBackgroundMeshProperties(){this._backgroundMesh.raycast=()=>{},this._bounds._size=this._backgroundMesh.scale,this._bounds._needsUpdate=!0}unbindBackgroundMeshProperties(){this._bounds._size=new b.Vector3(1,1,1),this._bounds._needsUpdate=!0}add(e){let t=[];for(let e=0;eJ.update(),yi={BaseProperty:v,Block:mr,Text:di,Inline:Zr,InlineBlock:hi,MeshUIBaseElement:q,FontLibrary:W,update:vi,MSDFFontMaterialUtils:V,ShaderChunkUI:hn,Behavior:_i,FontVariant:E};typeof global<`u`&&(global.ThreeMeshUI=yi);var bi=yi,xi=m.ti,Si=m.nS,Ci=m.eB,wi=m.Yp,Ti=m.VB,Ei=m.BC,Di=m.zN,Oi=m.cV,ki=m.hW,Ai=m.k2,ji=m.K6,Mi=m.M7,Ni=m.ls,Pi=m.Hi,Fi=m.EY,Ii=m.MR,Li=m.zf,Ri=m.Ay,zi=m.yo,Bi=class extends Si{constructor(e,t={}){super(e),e._simpleState__activeStates=[],e._simpleState__normalStyles={},e._simpleState__states=t,e._simpleState__statesProperties={};for(let n in t)for(let r in t[n])e._simpleState__statesProperties[r]||(e._simpleState__statesProperties[r]=[]),e._simpleState__statesProperties[r].push(n);for(let t of e._components)e._simpleState__statesProperties[t.id]&&(e._simpleState__normalStyles[t.id]=t.inline?t.inline:t._value);e.__overridedSet=e.set,e.set=this.storeSet.bind(e),e.renderStates=this.renderStates.bind(e),e.setupState=this.setupState.bind(e),e.setState=this.setState.bind(e),e.activatePseudoState=this.activatePseudoState.bind(e),e.deactivatePseudoState=this.deactivatePseudoState.bind(e),e.togglePseudoState=this.togglePseudoState.bind(e)}act(){}attach(){}detach(){}setupState(e,t){this._simpleState__states[e]=t;let n=[];for(let r in t)this._simpleState__statesProperties[r]||(this._simpleState__statesProperties[r]=[],n.push(r)),this._simpleState__statesProperties[r].push(e);for(let e of this._components)n.indexOf(e.id)>-1&&(this._simpleState__normalStyles[e.id]=e.inline?e.inline:e._value)}renderStates(){let e={...this._simpleState__normalStyles};for(let t in this._simpleState__states)this._simpleState__activeStates.indexOf(t)>-1&&(e={...e,...this._simpleState__states[t]});this.set(e,!1)}storeSet(e,t=!0){if(t)for(let t in e)this._simpleState__statesProperties[t]&&(this._simpleState__normalStyles[t]=e[t]);this.__overridedSet(e)}activatePseudoState(e){this._simpleState__activeStates.indexOf(e)===-1&&(this._simpleState__activeStates.push(e),this.renderStates())}deactivatePseudoState(e){let t=this._simpleState__activeStates.indexOf(e);t>-1&&(this._simpleState__activeStates.splice(t,1),this.renderStates())}togglePseudoState(e){let t=this._simpleState__activeStates.indexOf(e);t>-1?this._simpleState__activeStates.splice(t,1):this._simpleState__activeStates.push(e),this.renderStates()}setState(e){Array.isArray(e)?this._simpleState__activeStates=e:this._simpleState__activeStates=[e],this.renderStates()}};export{Fi as a,ae as c,Oi as i,Ci as n,Ri as o,Ti as r,zi as s,Bi as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz b/Needle/SampleScene/dist/assets/three-mesh-ui.CgGzZ3ml.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f37c13d52f2706871cf2648a99413eeca764ec88 GIT binary patch literal 26682 zcmV)5K*_%!iwFP!000023e>%QciT3yIQ)0~Dd^r_FBw6!N27|!>7z}3e>8vF5wg|E+!1Wm^ zr{Bc8q?}B~Sf8zfCFjOxy5@a~R;q5_I;n$>`VL}&!FiIX?=jZ@mWS4nK*!P

i3rupF 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 VcRWnd4i8z@{Reox;QjHr0RWD+0et`f literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/three-quarks.DALdLWPD.js b/Needle/SampleScene/dist/assets/three-quarks.DALdLWPD.js new file mode 100644 index 0000000..addfe6f --- /dev/null +++ b/Needle/SampleScene/dist/assets/three-quarks.DALdLWPD.js @@ -0,0 +1,1039 @@ +import{$ as e,$n as t,Ar as n,At as r,Qt as i,S as a,Zt as o,_t as s,fn as c,in as l,rn as u,tr as d,vn as f,vt as p,x as m,xr as h,yr as g}from"./three@0.169.19.js";var _=`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(`.`),v=1234567,y=Math.PI/180,b=180/Math.PI;function x(){let e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0,r=Math.random()*4294967295|0;return(_[e&255]+_[e>>8&255]+_[e>>16&255]+_[e>>24&255]+`-`+_[t&255]+_[t>>8&255]+`-`+_[t>>16&15|64]+_[t>>24&255]+`-`+_[n&63|128]+_[n>>8&255]+`-`+_[n>>16&255]+_[n>>24&255]+_[r&255]+_[r>>8&255]+_[r>>16&255]+_[r>>24&255]).toLowerCase()}function S(e,t,n){return Math.max(t,Math.min(n,e))}function C(e,t){return(e%t+t)%t}function w(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function T(e,t,n){return e===t?0:(n-e)/(t-e)}function E(e,t,n){return(1-n)*e+n*t}function D(e,t,n,r){return E(e,t,1-Math.exp(-n*r))}function O(e,t=1){return t-Math.abs(C(e,t*2)-t)}function ee(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function k(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function A(e,t){return e+Math.floor(Math.random()*(t-e+1))}function j(e,t){return e+Math.random()*(t-e)}function M(e){return e*(.5-Math.random())}function N(e){e!==void 0&&(v=e);let t=v+=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 P(e){return e*y}function F(e){return e*b}function te(e){return(e&e-1)==0&&e!==0}function ne(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function re(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ie(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:console.warn(`../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function ae(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 oe(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 se={DEG2RAD:y,RAD2DEG:b,generateUUID:x,clamp:S,euclideanModulo:C,mapLinear:w,inverseLerp:T,lerp:E,damp:D,pingpong:O,smoothstep:ee,smootherstep:k,randInt:A,randFloat:j,randFloatSpread:M,seededRandom:N,degToRad:P,radToDeg:F,isPowerOfTwo:te,ceilPowerOfTwo:ne,floorPowerOfTwo:re,setQuaternionFromProperEuler:ie,normalize:oe,denormalize:ae},I=class e{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(o===0){e[t+0]=s,e[t+1]=c,e[t+2]=l,e[t+3]=u;return}if(o===1){e[t+0]=d,e[t+1]=f,e[t+2]=p,e[t+3]=m;return}if(u!==m||s!==d||c!==f||l!==p){let e=1-o,t=s*d+c*f+l*p+u*m,n=t>=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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 e(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:console.warn(`../math.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<2**-52?(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(S(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}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}},L=class e{constructor(t=0,n=0,r=0){this.isVector3=!0,e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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 e(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(le.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(le.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}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 ce.copy(this).projectOnVector(e),this.sub(ce)}reflect(e){return this.sub(ce.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(S(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)}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}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}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}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}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},ce=new L,le=new I,ue=2e3,R=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){this.isMatrix4=!0,e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}extractPosition(e){return console.warn(`THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().`),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error(`THREE.Matrix4: .multiplyToArray() has been removed.`),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/de.setFromMatrixColumn(e,0).length(),i=1/de.setFromMatrixColumn(e,1).length(),a=1/de.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(fe,e,pe)}lookAt(e,t,n){let r=this.elements;return V.subVectors(e,t),V.lengthSq()===0&&(V.z=1),V.normalize(),B.crossVectors(n,V),B.lengthSq()===0&&(Math.abs(n.z)===1?V.x+=1e-4:V.z+=1e-4,V.normalize(),B.crossVectors(n,V)),B.normalize(),me.crossVectors(V,B),r[0]=B.x,r[4]=me.x,r[8]=V.x,r[1]=B.y,r[5]=me.y,r[9]=V.y,r[2]=B.z,r[6]=me.z,r[10]=V.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],k=r[6],A=r[10],j=r[14],M=r[3],N=r[7],P=r[11],F=r[15];return i[0]=a*x+o*T+s*ee+c*M,i[4]=a*S+o*E+s*k+c*N,i[8]=a*C+o*D+s*A+c*P,i[12]=a*w+o*O+s*j+c*F,i[1]=l*x+u*T+d*ee+f*M,i[5]=l*S+u*E+d*k+f*N,i[9]=l*C+u*D+d*A+f*P,i[13]=l*w+u*O+d*j+f*F,i[2]=p*x+m*T+h*ee+g*M,i[6]=p*S+m*E+h*k+g*N,i[10]=p*C+m*D+h*A+g*P,i[14]=p*w+m*O+h*j+g*F,i[3]=_*x+v*T+y*ee+b*M,i[7]=_*S+v*E+y*k+b*N,i[11]=_*C+v*D+y*A+b*P,i[15]=_*w+v*O+y*j+b*F,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=de.set(r[0],r[1],r[2]).length(),a=de.set(r[4],r[5],r[6]).length(),o=de.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],z.copy(this);let s=1/i,c=1/a,l=1/o;return z.elements[0]*=s,z.elements[1]*=s,z.elements[2]*=s,z.elements[4]*=c,z.elements[5]*=c,z.elements[6]*=c,z.elements[8]*=l,z.elements[9]*=l,z.elements[10]*=l,t.setFromRotationMatrix(z),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=ue){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=ue){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`../math.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}},de=new L,z=new R,fe=new L(0,0,0),pe=new L(1,1,1),B=new L,me=new L,V=new L,he=new R,ge=new I,_e=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 e(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(S(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(-S(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(S(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(-S(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(S(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(-S(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:console.warn(`../math.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return he.makeRotationFromQuaternion(e),this.setFromRotationMatrix(he,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ge.setFromEuler(this),this.setFromQuaternion(ge,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(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};_e.DEFAULT_ORDER=`XYZ`;var H=class e{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 e(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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(S(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}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}};H.isVector2=!0;var U=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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 e(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}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}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)s&&e>_?e_?s0?Math.floor(t/n)*n:t,e){case G.Loop:i%=1;break;case G.PingPong:i=Math.abs(i%2-1);break}return i}var be=class e{constructor(e,t,n,r){this.p=[e,t,n,r]}genValue(e){let t=e*e,n=e*e*e,r=1-e,i=r*r,a=i*r;return this.p[0]*a+this.p[1]*i*e*3+this.p[2]*r*t*3+this.p[3]*n}derivativeCoefficients(e){let t=[];for(let n=e,r=n.length-1;r>0;r--){let e=[];for(let t=0;t1;){for(n=[],a=0,o=t.length-1;a({r:e.x,g:e.y,b:e.z,a:e.w}),Se=e=>new U(e.r,e.g,e.b,e.a),Ce=(e,t)=>{switch(t){case`Vector3`:return new L(e.x,e.y,e.z);case`Vector4`:return new U(e.x,e.y,e.z,e.w);case`Color`:return new L(e.r,e.g,e.b);case`Number`:return e;default:return e}},we=(e,t)=>{switch(t){case`Vector3`:return{x:e.x,y:e.y,z:e.z};case`Vector4`:return{x:e.x,y:e.y,z:e.z,w:e.w};case`Color`:return{r:e.x,g:e.y,b:e.z};case`Number`:return e;default:return e}},Te=class e{constructor(e,t){this.a=e,this.b=t,this.type=`value`}startGen(e){}genColor(e,t){let n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:`RandomColor`,a:xe(this.a),b:xe(this.b)}}static fromJSON(t){return new e(Se(t.a),Se(t.b))}clone(){return new e(this.a.clone(),this.b.clone())}},Ee=class e{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type=`value`}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:`ColorRange`,a:xe(this.a),b:xe(this.b)}}static fromJSON(t){return new e(Se(t.a),Se(t.b))}clone(){return new e(this.a.clone(),this.b.clone())}},De=class e{constructor(e,t){this.subType=t,this.type=`function`,this.keys=e}findKey(e){let t=0,n=0,r=this.keys.length-1;for(;n+1this.getEndX(t))n=t+1;else return t;for(let t=n;t<=r;t++)if(e>=this.getStartX(t)&&e<=this.getEndX(t))return t;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:`CLinearFunction`,subType:this.subType,keys:this.keys.map(([e,t])=>({value:we(e,this.subType),pos:t}))}}static fromJSON(t){return new e(t.keys.map(e=>[Ce(e.value,t.subType),e.pos]),t.subType)}clone(){return this.subType===`Number`?new e(this.keys.map(([e,t])=>[e,t]),this.subType):new e(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}},Oe=new L,ke=class e{constructor(e=[[new L(0,0,0),0],[new L(1,1,1),0]],t=[[1,0],[1,1]]){this.type=`function`,this.color=new De(e,`Color`),this.alpha=new De(t,`Number`)}genColor(e,t,n){return this.color.genValue(Oe,n),t.set(Oe.x,Oe.y,Oe.z,this.alpha.genValue(1,n))}toJSON(){return{type:`Gradient`,color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(t){if(t.functions){let n=t.functions.map(e=>[Ee.fromJSON(e.function).a,e.start]);return t.functions.length>0&&n.push([Ee.fromJSON(t.functions[t.functions.length-1].function).b,1]),new e(n.map(e=>[new L(e[0].x,e[0].y,e[0].z),e[1]]),n.map(e=>[e[0].w,e[1]]))}else{let n=new e;return n.alpha=De.fromJSON(t.alpha),n.color=De.fromJSON(t.color),n}}clone(){let t=new e;return t.alpha=this.alpha.clone(),t.color=this.color.clone(),t}startGen(e){}},Ae=new U,je=class e{constructor(e,t){this.indexCount=0,this.type=`function`,this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,Ae,n),e&&e[this.indexCount]!==void 0?t.lerp(Ae,e[this.indexCount]):t.lerp(Ae,Math.random()),t}toJSON(){return{type:`RandomColorBetweenGradient`,gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(t){return new e(ke.fromJSON(t.gradient1),ke.fromJSON(t.gradient2))}clone(){return new e(this.gradient1.clone(),this.gradient2.clone())}},Me=class e{constructor(e){this.color=e,this.type=`value`}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:`ConstantColor`,color:xe(this.color)}}static fromJSON(t){return new e(Se(t.color))}clone(){return new e(this.color.clone())}};function Ne(e){switch(e.type){case`ConstantColor`:return Me.fromJSON(e);case`ColorRange`:return Ee.fromJSON(e);case`RandomColor`:return Te.fromJSON(e);case`Gradient`:return ke.fromJSON(e);case`RandomColorBetweenGradient`:return je.fromJSON(e);default:return new Me(new U(1,1,1,1))}}var K=class e{constructor(e){this.value=e,this.type=`value`}startGen(e){}genValue(e){return this.value}toJSON(){return{type:`ConstantValue`,value:this.value}}static fromJSON(t){return new e(t.value)}clone(){return new e(this.value)}},Pe=class e{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type=`value`}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),se.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:`IntervalValue`,a:this.a,b:this.b}}static fromJSON(t){return new e(t.a,t.b)}clone(){return new e(this.a,this.b)}},Fe=class{constructor(){this.functions=[]}findFunction(e){let t=0,n=0,r=this.functions.length-1;for(;n+1this.getEndX(t))n=t+1;else return t;for(let t=n;t<=r;t++)if(e>=this.functions[t][1]&&e<=this.getEndX(t))return t;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1({function:e.toJSON(),start:t}))}}static fromJSON(t){return new e(t.functions.map(e=>[be.fromJSON(e.function),e.start]))}clone(){return new e(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}};function q(e){switch(e.type){case`ConstantValue`:return K.fromJSON(e);case`IntervalValue`:return Pe.fromJSON(e);case`PiecewiseBezier`:return Ie.fromJSON(e);default:return new K(0)}}var Le=class e{constructor(){this.indexCount=0,this.type=`rotation`}startGen(e){this.indexCount=e.length,e.push(new I);let t,n,r,i,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,r=t*t+n*n;while(r>1);do i=Math.random()*2-1,a=Math.random()*2-1,o=i*i+a*a;while(o>1);let s=Math.sqrt((1-r)/o);e[this.indexCount].set(t,n,s*i,s*a)}genValue(e,t,n,r){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:`RandomQuat`}}static fromJSON(t){return new e}clone(){return new e}},Re=class e{constructor(e,t){this.axis=e,this.angle=t,this.type=`rotation`}startGen(e){this.angle.startGen(e)}genValue(e,t,n,r){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,r)*n)}toJSON(){return{type:`AxisAngle`,axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(t){return new e(new L(t.axis.x,t.axis.y,t.axis.z),q(t.angle))}clone(){return new e(this.axis.clone(),this.angle.clone())}},ze=class e{constructor(e,t,n,r){this.angleX=e,this.angleY=t,this.angleZ=n,this.type=`rotation`,this.eular=new _e(0,0,0,r)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,r){return this.eular.set(this.angleX.genValue(e,r)*n,this.angleY.genValue(e,r)*n,this.angleZ.genValue(e,r)*n),t.setFromEuler(this.eular)}toJSON(){return{type:`Euler`,angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(t){return new e(q(t.angleX),q(t.angleY),q(t.angleZ),t.eulerOrder)}clone(){return new e(this.angleX,this.angleY,this.angleZ,this.eular.order)}};function Be(e){switch(e.type){case`AxisAngle`:return Re.fromJSON(e);case`Euler`:return ze.fromJSON(e);case`RandomQuat`:return Le.fromJSON(e);default:return new Le}}var Ve=class e{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type=`vec3function`}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:`Vector3Function`,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(t){return new e(q(t.x),q(t.y),q(t.z))}clone(){return new e(this.x,this.y,this.z)}};function He(e){switch(e.type){case`Vector3Function`:return Ve.fromJSON(e);default:return new Ve(new K(0),new K(0),new K(0))}}function Ue(e){switch(e.type){case`ConstantValue`:case`IntervalValue`:case`PiecewiseBezier`:return q(e);case`AxisAngle`:case`RandomQuat`:case`Euler`:return Be(e);case`Vector3Function`:return He(e);default:return new K(0)}}var We=class e{constructor(e={}){this.type=`cone`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.angle=e.angle??Math.PI/6,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[]}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=se.lerp(1-this.thickness,1,Math.random()),i=n*this.arc,a=Math.sqrt(r),o=Math.sin(i),s=Math.cos(i);e.position.x=a*s,e.position.y=a*o,e.position.z=0;let c=this.angle*a;e.velocity.set(0,0,Math.cos(c)).addScaledVector(e.position,Math.sin(c)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:`cone`,radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,angle:t.angle,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},Ge=class e{constructor(e={}){this.type=`circle`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=se.lerp(1-this.thickness,1,Math.random()),i=n*this.arc;e.position.x=Math.cos(i),e.position.y=Math.sin(i),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*r)}toJSON(){return{type:`circle`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}};function Ke(e,t){return Math.floor(Math.random()*(t-e))+e}var qe=new L(0,1,0),Je=new L(0,0,0),Ye=new L(1,1,1),Xe=new L(0,0,1),Ze=class e{constructor(e={}){this.type=`donut`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.donutRadius=e.donutRadius??this.radius*.2,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=r*Math.PI*2,s=Math.sin(a),c=Math.cos(a);e.position.x=this.radius*c,e.position.y=this.radius*s,e.position.z=0,e.velocity.z=this.donutRadius*i*Math.sin(o),e.velocity.x=this.donutRadius*i*Math.cos(o)*c,e.velocity.y=this.donutRadius*i*Math.cos(o)*s,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof I&&(this._m1.lookAt(Je,e.velocity,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`donut`,radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,donutRadius:t.donutRadius,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},Qe=class e{constructor(){this.type=`point`,this._m1=new R}update(e,t){}initialize(e){let t=Math.random(),n=Math.random(),r=t*Math.PI*2,i=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(r),s=Math.cos(r),c=Math.sin(i),l=Math.cos(i);e.velocity.x=a*c*s,e.velocity.y=a*c*o,e.velocity.z=a*l,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`point`}}static fromJSON(t){return new e}clone(){return new e}},$e=class e{constructor(e={}){this.type=`sphere`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*r-1),s=Math.sin(a),c=Math.cos(a),l=Math.sin(o),u=Math.cos(o);e.position.x=l*c,e.position.y=l*s,e.position.z=u,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`sphere`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},et=class e{constructor(e={}){this.type=`sphere`,this.currentValue=0,this.radius=e.radius??10,this.arc=e.arc??2*Math.PI,this.thickness=e.thickness??1,this.mode=e.mode??G.Random,this.spread=e.spread??0,this.speed=e.speed??new K(1),this.memory=[],this._m1=new R}update(e,t){G.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){let n=ye(this.mode,this.currentValue,this.spread,t),r=Math.random(),i=se.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(r),s=Math.sin(a),c=Math.cos(a),l=Math.sin(o),u=Math.cos(o);e.position.x=l*c,e.position.y=l*s,e.position.z=u,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i),e.rotation instanceof I&&(this._m1.lookAt(Je,e.position,qe),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:`hemisphere`,radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(t){return new e({radius:t.radius,arc:t.arc,thickness:t.thickness,mode:t.mode,speed:t.speed?q(t.speed):void 0,spread:t.spread})}clone(){return new e({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}},tt=class e{constructor(e={}){this.type=`grid`,this.width=e.width??1,this.height=e.height??1,this.column=e.column??10,this.row=e.row??10}initialize(e){let t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:`grid`,width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(t){return new e(t)}clone(){return new e({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}},nt={circle:{type:`circle`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:Ge,loadJSON:Ge.fromJSON},cone:{type:`cone`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:We,loadJSON:We.fromJSON},donut:{type:`donut`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`donutRadius`,[`number`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:Ze,loadJSON:Ze.fromJSON},point:{type:`point`,params:[],constructor:Qe,loadJSON:Qe.fromJSON},sphere:{type:`sphere`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:$e,loadJSON:$e.fromJSON},hemisphere:{type:`hemisphere`,params:[[`radius`,[`number`]],[`arc`,[`radian`]],[`thickness`,[`number`]],[`angle`,[`radian`]],[`mode`,[`emitterMode`]],[`spread`,[`number`]],[`speed`,[`valueFunc`]]],constructor:et,loadJSON:et.fromJSON},grid:{type:`grid`,params:[[`width`,[`number`]],[`height`,[`number`]],[`rows`,[`number`]],[`column`,[`number`]]],constructor:tt,loadJSON:tt.fromJSON}};function rt(e,t){return nt[e.type].loadJSON(e,t)}var it=class e{constructor(e){this.color=e,this.type=`ColorOverLife`}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(t){return new e(Ne(t.color))}clone(){return new e(this.color.clone())}reset(){}},at=class e{constructor(e){this.angularVelocity=e,this.type=`RotationOverLife`}initialize(e){typeof e.rotation==`number`&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation==`number`&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(t){return new e(q(t.angularVelocity))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone())}reset(){}},ot=class e{constructor(e){this.angularVelocity=e,this.type=`Rotation3DOverLife`,this.tempQuat=new I,this.tempQuat2=new I}initialize(e){e.rotation instanceof I&&(e.angularVelocity=new I,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof I&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(t){return new e(Be(t.angularVelocity))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone())}reset(){}},st=class e{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type=`ForceOverLife`,this._temp=new L,this._tempScale=new L,this._tempQ=new I}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace||this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t)}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(t){return new e(q(t.x),q(t.y),q(t.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){let e=this._temp,t=this._tempQ,n=this._tempScale;this.ps.emitter.matrixWorld.decompose(e,t,n),t.invert(),n.set(1/n.x,1/n.y,1/n.z)}}clone(){return new e(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}},ct=class e{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type=`SizeOverLife`}update(e){this.size instanceof Ve?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(t){return new e(Ue(t.size))}frameUpdate(e){}clone(){return new e(this.size.clone())}reset(){}},lt=class e{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type=`SpeedOverLife`}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(t){return new e(q(t.speed))}frameUpdate(e){}clone(){return new e(this.speed.clone())}reset(){}},ut=class e{constructor(e){this.frame=e,this.type=`FrameOverLife`}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof Ie&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(t){return new e(q(t.frame))}clone(){return new e(this.frame.clone())}reset(){}},dt=class e{constructor(e,t=new L(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type=`OrbitOverLife`,this.temp=new L,this.rotation=new I}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(t){return new e(q(t.orbitSpeed),t.axis?new L(t.axis[0],t.axis[1],t.axis[2]):void 0)}clone(){return new e(this.orbitSpeed.clone())}reset(){}},ft=class{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}},pt=class{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){let e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){let e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){let t=new ft(e);this.tail||=t,this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){let t=new ft(e);this.head||=t,this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){let n=new ft(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}},mt=class{constructor(){this.startSpeed=0,this.startColor=new U,this.startSize=new L(1,1,1),this.position=new L,this.velocity=new L,this.age=0,this.life=1,this.size=new L(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new U,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}},ht=class{constructor(e,t,n){this.position=e,this.size=t,this.color=n}},gt=class{constructor(){this.startSpeed=0,this.startColor=new U,this.startSize=new L(1,1,1),this.position=new L,this.velocity=new L,this.age=0,this.life=1,this.size=new L(1,1,1),this.length=100,this.speedModifier=1,this.color=new U,this.previous=new pt,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new ht(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}},_t=class e{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type=`WidthOverLength`}update(e){if(e instanceof gt){let t=e.previous.values();for(let n=0;n=e.life)&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;let n=new R;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{let n=this.subEmissions[t];n.particle&&n.particle.agem?(h=1,g=0):(h=0,g=1);let _=p-h+wt,v=m-g+wt,y=p-1+2*wt,b=m-1+2*wt,x=c&255,S=l&255,C=.5-p*p-m*m;if(C>=0){let e=n[x+r[S]]*3;C*=C,i=C*C*(X[e]*p+X[e+1]*m)}let w=.5-_*_-v*v;if(w>=0){let e=n[x+h+r[S+g]]*3;w*=w,a=w*w*(X[e]*_+X[e+1]*v)}let T=.5-y*y-b*b;if(T>=0){let e=n[x+1+r[S+1]]*3;T*=T,o=T*T*(X[e]*y+X[e+1]*b)}return 70*(i+a+o)}noise3D(e,t,n){let r=this.permMod12,i=this.perm,a,o,s,c,l=(e+t+n)*Tt,u=Math.floor(e+l),d=Math.floor(t+l),f=Math.floor(n+l),p=(u+d+f)*J,m=u-p,h=d-p,g=f-p,_=e-m,v=t-h,y=n-g,b,x,S,C,w,T;_>=v?v>=y?(b=1,x=0,S=0,C=1,w=1,T=0):_>=y?(b=1,x=0,S=0,C=1,w=0,T=1):(b=0,x=0,S=1,C=1,w=0,T=1):vx?w++:T++,b>S?w++:E++,b>C?w++:D++,x>S?T++:E++,x>C?T++:D++,S>C?E++:D++;let O=+(w>=3),ee=+(T>=3),k=+(E>=3),A=+(D>=3),j=+(w>=2),M=+(T>=2),N=+(E>=2),P=+(D>=2),F=+(w>=1),te=+(T>=1),ne=+(E>=1),re=+(D>=1),ie=b-O+Y,ae=x-ee+Y,oe=S-k+Y,se=C-A+Y,I=b-j+2*Y,L=x-M+2*Y,ce=S-N+2*Y,le=C-P+2*Y,ue=b-F+3*Y,R=x-te+3*Y,de=S-ne+3*Y,z=C-re+3*Y,fe=b-1+4*Y,pe=x-1+4*Y,B=S-1+4*Y,me=C-1+4*Y,V=d&255,he=f&255,ge=p&255,_e=m&255,H=.6-b*b-x*x-S*S-C*C;if(H<0)a=0;else{let e=i[V+i[he+i[ge+i[_e]]]]%32*4;H*=H,a=H*H*(Z[e]*b+Z[e+1]*x+Z[e+2]*S+Z[e+3]*C)}let U=.6-ie*ie-ae*ae-oe*oe-se*se;if(U<0)o=0;else{let e=i[V+O+i[he+ee+i[ge+k+i[_e+A]]]]%32*4;U*=U,o=U*U*(Z[e]*ie+Z[e+1]*ae+Z[e+2]*oe+Z[e+3]*se)}let W=.6-I*I-L*L-ce*ce-le*le;if(W<0)s=0;else{let e=i[V+j+i[he+M+i[ge+N+i[_e+P]]]]%32*4;W*=W,s=W*W*(Z[e]*I+Z[e+1]*L+Z[e+2]*ce+Z[e+3]*le)}let ve=.6-ue*ue-R*R-de*de-z*z;if(ve<0)c=0;else{let e=i[V+F+i[he+te+i[ge+ne+i[_e+re]]]]%32*4;ve*=ve,c=ve*ve*(Z[e]*ue+Z[e+1]*R+Z[e+2]*de+Z[e+3]*z)}let G=.6-fe*fe-pe*pe-B*B-me*me;if(G<0)l=0;else{let e=i[V+1+i[he+1+i[ge+1+i[_e+1]]]]%32*4;G*=G,l=G*G*(Z[e]*fe+Z[e+1]*pe+Z[e+2]*B+Z[e+3]*me)}return 27*(a+o+s+c+l)}};function Ot(e){let t=new Uint8Array(256);for(let e=0;e<256;e++)t[e]=e;for(let n=0;n<255;n++){let r=n+~~(e()*(256-n)),i=t[n];t[n]=t[r],t[r]=i}return t}function kt(e){let t=0,n=0,r=0,i=1,a=At();return t=a(` `),n=a(` `),r=a(` `),t-=a(e),t<0&&(t+=1),n-=a(e),n<0&&(n+=1),r-=a(e),r<0&&(r+=1),function(){let e=2091639*t+i*23283064365386963e-26;return t=n,n=r,r=e-(i=e|0)}}function At(){let e=4022871197;return function(t){t=t.toString();for(let n=0;n>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}var jt=class e{constructor(e,t,n,r){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=r,this.type=`TurbulenceField`,this.generator=new Dt,this.timeOffset=new L,this.temp=new L,this.temp2=new L,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){let n=e.position.x/this.scale.x,r=e.position.y/this.scale.y,i=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let e=0;e0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),Mt.set(Q[e.generatorIndex[0]].noise2D(0,e.age*n)*r*i,Q[e.generatorIndex[1]].noise2D(0,e.age*n)*r*i,Q[e.generatorIndex[2]].noise2D(0,e.age*n)*r*i),e.position.add(Mt),e.lastPosNoise.copy(Mt)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation==`number`?(e.rotation-=e.lastRotNoise,e.rotation+=Q[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*r*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),Nt.set(Q[e.generatorIndex[0]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[1]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[2]].noise2D(0,e.age*n)*r*a,Q[e.generatorIndex[3]].noise2D(0,e.age*n)*r*a).normalize(),e.rotation.multiply(Nt),e.lastRotNoise.copy(Nt)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(t){return new e(q(t.frequency),q(t.power),q(t.positionAmount),q(t.rotationAmount))}clone(){return new e(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}},Ft=class e{constructor(e=0,t=0,n=new L){this.scaleX=e,this.scaleY=t,this.position=n,this.locations=[]}transform(e,t){e.x=this.locations[t%this.locations.length].x*this.scaleX+this.position.x,e.y=this.locations[t%this.locations.length].y*this.scaleY+this.position.y,e.z=this.position.z}static fromJSON(t){let n=new e(t.scaleX,t.scaleY,new L(t.position[0],t.position[1],t.position[2]));return n.locations=t.locations.map(e=>new H(e.x,e.y)),n}clone(){let t=new e(this.scaleX,this.scaleY,this.position.clone());return t.locations=this.locations.map(e=>e.clone()),t}toJSON(){return{scaleX:this.scaleX,scaleY:this.scaleY,position:this.position,locations:this.locations.map(e=>({x:e.x,y:e.y}))}}fromImage(e,t){let n=document.createElement(`canvas`);n.width=e.width,n.height=e.height;let r=n.getContext(`2d`);if(!r)return;r.drawImage(e,0,0);let i=r.getImageData(0,0,n.width,n.height,{colorSpace:`srgb`});n.remove(),this.locations.length=0;for(let e=0;et&&this.locations.push(new H(n,i.height-e))}};function It(e){switch(e.type){case`TextureSequencer`:return Ft.fromJSON(e);default:return new Ft}}var Lt=class e{constructor(e){this.type=`ApplySequences`,this.sequencers=[],this.time=0,this.index=0,this.pCount=0,this.tempV=new L,this.delay=e}initialize(e){e.id=this.pCount,e.dst=new L,e.begin=new L,e.inMotion=!1,this.pCount++}reset(){this.time=0,this.index=0,this.pCount=0}update(t,n){let r=this.sequencers[this.index],i=t.id*this.delay;this.time>=r[0].a+i&&this.time<=r[0].b+i?(t.inMotion||(t.inMotion=!0,t.begin.copy(t.position),r[1].transform(t.dst,t.id)),t.position.lerpVectors(t.begin,t.dst,e.BEZIER.genValue((this.time-r[0].a-i)/(r[0].b-r[0].a)))):this.time>r[0].b+i&&(t.inMotion=!1)}frameUpdate(e){for(;this.index+1=this.sequencers[this.index+1][0].a;)this.index++;this.time+=e}appendSequencer(e,t){this.sequencers.push([e,t])}toJSON(){return{type:this.type,delay:this.delay,sequencers:this.sequencers.map(([e,t])=>({range:e.toJSON(),sequencer:t.toJSON()}))}}static fromJSON(t){let n=new e(t.delay);return t.sequencers.forEach(e=>{n.sequencers.push([q(e.range),It(e.sequencer)])}),n}clone(){let t=new e(this.delay);return t.sequencers=this.sequencers.map(e=>[e[0].clone(),e[1].clone()]),t}};Lt.BEZIER=new be(0,0,1,1);var Rt=class e{constructor(e,t){this.color=e,this.speedRange=t,this.type=`ColorBySpeed`}initialize(e){this.color.startGen(e.memory)}update(e,t){let n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(Ne(t.color),Pe.fromJSON(t.speedRange))}clone(){return new e(this.color.clone(),this.speedRange.clone())}reset(){}},zt=class e{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type=`SizeBySpeed`}update(e){let t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof Ve?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(Ue(t.size),Pe.fromJSON(t.speedRange))}frameUpdate(e){}clone(){return new e(this.size.clone(),this.speedRange.clone())}reset(){}},Bt=class e{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type=`RotationBySpeed`,this.tempQuat=new I}initialize(e){typeof e.rotation==`number`&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation==`number`){let n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(t){return new e(q(t.angularVelocity),Pe.fromJSON(t.speedRange))}frameUpdate(e){}clone(){return new e(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}},Vt=class e{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type=`LimitSpeedOverLife`}update(e,t){let n=e.velocity.length(),r=this.speed.genValue(e.memory,e.age/e.life);if(n>r){let i=(n-r)/n;e.velocity.multiplyScalar(1-i*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(t){return new e(q(t.speed),t.dampen)}frameUpdate(e){}clone(){return new e(this.speed.clone(),this.dampen)}reset(){}},Ht={ApplyForce:{type:`ApplyForce`,constructor:vt,params:[[`direction`,[`vec3`]],[`magnitude`,[`value`]]],loadJSON:vt.fromJSON},Noise:{type:`Noise`,constructor:Pt,params:[[`frequency`,[`value`]],[`power`,[`value`]],[`positionAmount`,[`value`]],[`rotationAmount`,[`value`]]],loadJSON:Pt.fromJSON},TurbulenceField:{type:`TurbulenceField`,constructor:jt,params:[[`scale`,[`vec3`]],[`octaves`,[`number`]],[`velocityMultiplier`,[`vec3`]],[`timeScale`,[`vec3`]]],loadJSON:jt.fromJSON},GravityForce:{type:`GravityForce`,constructor:yt,params:[[`center`,[`vec3`]],[`magnitude`,[`number`]]],loadJSON:yt.fromJSON},ColorOverLife:{type:`ColorOverLife`,constructor:it,params:[[`color`,[`colorFunc`]]],loadJSON:it.fromJSON},RotationOverLife:{type:`RotationOverLife`,constructor:at,params:[[`angularVelocity`,[`value`,`valueFunc`]]],loadJSON:at.fromJSON},Rotation3DOverLife:{type:`Rotation3DOverLife`,constructor:ot,params:[[`angularVelocity`,[`rotationFunc`]]],loadJSON:ot.fromJSON},SizeOverLife:{type:`SizeOverLife`,constructor:ct,params:[[`size`,[`value`,`valueFunc`,`vec3Func`]]],loadJSON:ct.fromJSON},ColorBySpeed:{type:`ColorBySpeed`,constructor:Rt,params:[[`color`,[`colorFunc`]],[`speedRange`,[`range`]]],loadJSON:Rt.fromJSON},RotationBySpeed:{type:`RotationBySpeed`,constructor:Bt,params:[[`angularVelocity`,[`value`,`valueFunc`]],[`speedRange`,[`range`]]],loadJSON:Bt.fromJSON},SizeBySpeed:{type:`SizeBySpeed`,constructor:zt,params:[[`size`,[`value`,`valueFunc`,`vec3Func`]],[`speedRange`,[`range`]]],loadJSON:zt.fromJSON},SpeedOverLife:{type:`SpeedOverLife`,constructor:lt,params:[[`speed`,[`value`,`valueFunc`]]],loadJSON:lt.fromJSON},FrameOverLife:{type:`FrameOverLife`,constructor:ut,params:[[`frame`,[`value`,`valueFunc`]]],loadJSON:ut.fromJSON},ForceOverLife:{type:`ForceOverLife`,constructor:st,params:[[`x`,[`value`,`valueFunc`]],[`y`,[`value`,`valueFunc`]],[`z`,[`value`,`valueFunc`]]],loadJSON:st.fromJSON},OrbitOverLife:{type:`OrbitOverLife`,constructor:dt,params:[[`orbitSpeed`,[`value`,`valueFunc`]],[`axis`,[`vec3`]]],loadJSON:dt.fromJSON},WidthOverLength:{type:`WidthOverLength`,constructor:_t,params:[[`width`,[`value`,`valueFunc`]]],loadJSON:_t.fromJSON},ChangeEmitDirection:{type:`ChangeEmitDirection`,constructor:bt,params:[[`angle`,[`value`]]],loadJSON:bt.fromJSON},EmitSubParticleSystem:{type:`EmitSubParticleSystem`,constructor:St,params:[[`particleSystem`,[`self`]],[`useVelocityAsBasis`,[`boolean`]],[`subParticleSystem`,[`particleSystem`]],[`mode`,[`number`]],[`emitProbability`,[`number`]]],loadJSON:St.fromJSON},LimitSpeedOverLife:{type:`LimitSpeedOverLife`,constructor:Vt,params:[[`speed`,[`value`,`valueFunc`]],[`dampen`,[`number`]]],loadJSON:Vt.fromJSON}};function Ut(e,t){return Ht[e.type]?Ht[e.type].loadJSON(e,t):null}var Wt=[];function Gt(e){if(!Wt.find(t=>t.id===e.id)){e.initialize();for(let t of e.emitterShapes)nt[t.type]||(nt[t.type]=t);for(let t of e.behaviors)Ht[t.type]||(Ht[t.type]=t)}}var Kt=` +#ifdef SOFT_PARTICLES + + /* #ifdef LOGDEPTH + float distSample = linearize_depth_log(sampleDepth, near, far); + #else + float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far); + #endif */ + + vec2 p2 = projPosition.xy / projPosition.w; + + p2 = 0.5 * p2 + 0.5; + + float readDepth = texture2D(depthTexture, p2.xy).r; + float viewDepth = linearize_depth(readDepth); + + float softParticlesFade = saturate(SOFT_INV_FADE_DISTANCE * ((viewDepth - SOFT_NEAR_FADE) - linearDepth)); + + gl_FragColor *= softParticlesFade; + + //gl_FragColor = vec4(softParticlesFade , 0, 0, 1); +#endif +`,qt=` +#ifdef SOFT_PARTICLES + + uniform sampler2D depthTexture; + uniform vec4 projParams; + uniform vec2 softParams; + + varying vec4 projPosition; + varying float linearDepth; + + #define SOFT_NEAR_FADE softParams.x + #define SOFT_INV_FADE_DISTANCE softParams.y + + #define zNear projParams.x + #define zFar projParams.y + + float linearize_depth(float d) + { + return (zFar * zNear) / (zFar - d * (zFar - zNear)); + } + +#endif +`,Jt=` +#ifdef SOFT_PARTICLES + varying vec4 projPosition; + varying float linearDepth; +#endif +`,Yt=` +#ifdef SOFT_PARTICLES + projPosition = gl_Position; + linearDepth = -mvPosition.z; +#endif +`,Xt=` +#ifdef USE_MAP + vec4 texelColor = texture2D( map, vUv); + #ifdef TILE_BLEND + texelColor = mix( texelColor, texture2D( map, vUvNext ), vUvBlend ); + #endif + diffuseColor *= texelColor; +#endif +`,Zt=` +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + + varying vec2 vUv; +#ifdef TILE_BLEND + varying vec2 vUvNext; + varying float vUvBlend; +#endif + +#endif +#ifdef USE_MAP + + uniform mat3 mapTransform; + varying vec2 vMapUv; +#ifdef TILE_BLEND + varying vec2 vMapUvNext; +#endif + +#endif +#ifdef USE_ALPHAMAP + + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; + +#endif +#ifdef USE_LIGHTMAP + + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; + +#endif +#ifdef USE_AOMAP + + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; + +#endif +#ifdef USE_BUMPMAP + + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; + +#endif +#ifdef USE_NORMALMAP + + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; + +#endif +#ifdef USE_DISPLACEMENTMAP + + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; + +#endif +#ifdef USE_EMISSIVEMAP + + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; + +#endif +#ifdef USE_METALNESSMAP + + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; + +#endif +#ifdef USE_ROUGHNESSMAP + + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; + +#endif +#ifdef USE_ANISOTROPYMAP + + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; + +#endif +#ifdef USE_CLEARCOATMAP + + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; + +#endif +#ifdef USE_SHEEN_COLORMAP + + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; + +#endif +#ifdef USE_IRIDESCENCEMAP + + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; + +#endif +#ifdef USE_SPECULARMAP + + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; + +#endif +#ifdef USE_SPECULAR_COLORMAP + + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; + +#endif +#ifdef USE_TRANSMISSIONMAP + + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; + +#endif +#ifdef USE_THICKNESSMAP + + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; + +#endif +`,Qt=` +#ifdef UV_TILE + attribute float uvTile; + uniform vec2 tileCount; + + mat3 makeTileTransform(float uvTile) { + float col = mod(uvTile, tileCount.x); + float row = (tileCount.y - floor(uvTile / tileCount.x) - 1.0); + + return mat3( + 1.0 / tileCount.x, 0.0, 0.0, + 0.0, 1.0 / tileCount.y, 0.0, + col / tileCount.x, row / tileCount.y, 1.0); + } +#else + mat3 makeTileTransform(float uvTile) { + return mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + + varying vec2 vUv; +#ifdef TILE_BLEND + varying vec2 vUvNext; + varying float vUvBlend; +#endif + +#endif +#ifdef USE_MAP + + uniform mat3 mapTransform; + varying vec2 vMapUv; +#ifdef TILE_BLEND + varying vec2 vMapUvNext; +#endif + +#endif +#ifdef USE_ALPHAMAP + + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; + +#endif +#ifdef USE_LIGHTMAP + + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; + +#endif +#ifdef USE_AOMAP + + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; + +#endif +#ifdef USE_BUMPMAP + + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; + +#endif +#ifdef USE_NORMALMAP + + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; + +#endif +#ifdef USE_DISPLACEMENTMAP + + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; + +#endif +#ifdef USE_EMISSIVEMAP + + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; + +#endif +#ifdef USE_METALNESSMAP + + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; + +#endif +#ifdef USE_ROUGHNESSMAP + + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; + +#endif +#ifdef USE_ANISOTROPYMAP + + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; + +#endif +#ifdef USE_CLEARCOATMAP + + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; + +#endif +#ifdef USE_SHEEN_COLORMAP + + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; + +#endif +#ifdef USE_IRIDESCENCEMAP + + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; + +#endif +#ifdef USE_SPECULARMAP + + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; + +#endif +#ifdef USE_SPECULAR_COLORMAP + + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; + +#endif +#ifdef USE_TRANSMISSIONMAP + + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; + +#endif +#ifdef USE_THICKNESSMAP + + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; + +#endif +`,$t=` +#ifdef UV_TILE + mat3 tileTransform = makeTileTransform(floor(uvTile)); + #ifdef TILE_BLEND + mat3 nextTileTransform = makeTileTransform(ceil(uvTile)); + vUvBlend = fract(uvTile); + #endif +#else + mat3 tileTransform = makeTileTransform(0.0); +#endif + +#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + +vUv = (tileTransform *vec3( uv, 1 )).xy; +#if defined( TILE_BLEND ) && defined( UV_TILE ) + vUvNext = (nextTileTransform *vec3( uv, 1 )).xy; +#endif + +#endif +#ifdef USE_MAP + +vMapUv = ( tileTransform * (mapTransform * vec3( MAP_UV, 1 ) )).xy; +#if defined( TILE_BLEND ) && defined( UV_TILE ) + vMapUvNext = (nextTileTransform * (mapTransform * vec3( MAP_UV, 1 ))).xy; +#endif + +#endif +#ifdef USE_ALPHAMAP + +vAlphaMapUv = ( tileTransform * (alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_LIGHTMAP + +vLightMapUv = ( tileTransform * (lightMapTransform * vec3( LIGHTMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_AOMAP + +vAoMapUv = ( tileTransform * (aoMapTransform * vec3( AOMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_BUMPMAP + +vBumpMapUv = ( tileTransform * (bumpMapTransform * vec3( BUMPMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_NORMALMAP + +vNormalMapUv = ( tileTransform * (normalMapTransform * vec3( NORMALMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_DISPLACEMENTMAP + +vDisplacementMapUv = ( tileTransform * (displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_EMISSIVEMAP + +vEmissiveMapUv = ( tileTransform * (emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_METALNESSMAP + +vMetalnessMapUv = ( tileTransform * (metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_ROUGHNESSMAP + +vRoughnessMapUv = ( tileTransform * (roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_ANISOTROPYMAP + +vAnisotropyMapUv = ( tileTransform * (anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOATMAP + +vClearcoatMapUv = ( tileTransform * (clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + +vClearcoatNormalMapUv = ( tileTransform * (clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + +vClearcoatRoughnessMapUv = ( tileTransform * (clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_IRIDESCENCEMAP + +vIridescenceMapUv = ( tileTransform * (iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + +vIridescenceThicknessMapUv = ( tileTransform * (iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SHEEN_COLORMAP + +vSheenColorMapUv = ( tileTransform * (sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + +vSheenRoughnessMapUv = ( tileTransform * (sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULARMAP + +vSpecularMapUv = ( tileTransform * (specularMapTransform * vec3( SPECULARMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULAR_COLORMAP + +vSpecularColorMapUv = ( tileTransform * (specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + +vSpecularIntensityMapUv = ( tileTransform * (specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_TRANSMISSIONMAP + +vTransmissionMapUv = ( tileTransform * transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) )).xy; + +#endif +#ifdef USE_THICKNESSMAP + +vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) )).xy; + +#endif + +`,en=t;function tn(){en.tile_pars_vertex=Qt,en.tile_vertex=$t,en.tile_pars_fragment=Zt,en.tile_fragment=Xt,en.soft_pars_vertex=Jt,en.soft_vertex=Yt,en.soft_pars_fragment=qt,en.soft_fragment=Kt}var nn=class extends c{constructor(e){super(),this.type=`ParticleEmitter`,this.system=e}clone(){let e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}toJSON(e,t={}){let n=this.children;this.children=this.children.filter(e=>e.type!==`ParticleSystemPreview`);let r=super.toJSON(e);return this.children=n,this.system!==null&&(r.object.ps=this.system.toJSON(e,t)),r}},$;(function(e){e[e.BillBoard=0]=`BillBoard`,e[e.StretchedBillBoard=1]=`StretchedBillBoard`,e[e.Mesh=2]=`Mesh`,e[e.Trail=3]=`Trail`,e[e.HorizontalBillBoard=4]=`HorizontalBillBoard`,e[e.VerticalBillBoard=5]=`VerticalBillBoard`})($||={});var rn=class extends o{constructor(e){super(),this.type=`VFXBatch`,this.maxParticles=1e3,this.systems=new Set;let t=new r;t.mask=e.layers.mask;let n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){let t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}},an=new L(0,0,1),on=new I,sn=new L,cn=new L;new L;var ln=60,un=new f(1,1,1,1),dn=class e{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=$.Trail&&e===$.Trail||this.rendererSettings.renderMode==$.Trail&&e!==$.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case $.Trail:this.rendererEmitterSettings={startLength:new K(30),followLocalOrigin:!1};break;case $.Mesh:this.rendererEmitterSettings={geometry:new f(1,1)},this.startRotation=new Re(new L(0,1,0),new K(0));break;case $.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===$.Mesh&&(this.startRotation=new K(0));break;case $.BillBoard:case $.VerticalBillBoard:case $.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===$.Mesh&&(this.startRotation=new K(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){if(this.temp=new L,this.travelDistance=0,this.normalMatrix=new W,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=e.duration??1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=e.startLife??new K(5),this.startSpeed=e.startSpeed??new K(0),this.startRotation=e.startRotation??new K(0),this.startSize=e.startSize??new K(1),this.startColor=e.startColor??new Me(new U(1,1,1,1)),this.emissionOverTime=e.emissionOverTime??new K(10),this.emissionOverDistance=e.emissionOverDistance??new K(0),this.emissionBursts=e.emissionBursts??[],this.onlyUsedByOther=e.onlyUsedByOther??!1,this.emitterShape=e.shape??new $e,this.behaviors=e.behaviors??[],this.worldSpace=e.worldSpace??!1,this.rendererEmitterSettings=e.rendererEmitterSettings??{},e.renderMode===$.StretchedBillBoard){let t=this.rendererEmitterSettings;e.speedFactor!==void 0&&(t.speedFactor=e.speedFactor),t.speedFactor=t.speedFactor??0,t.lengthFactor=t.lengthFactor??0}this.rendererSettings={instancingGeometry:e.instancingGeometry??un,renderMode:e.renderMode??$.BillBoard,renderOrder:e.renderOrder??0,material:e.material,uTileCount:e.uTileCount??1,vTileCount:e.vTileCount??1,blendTiles:e.blendTiles??!1,softParticles:e.softParticles??!1,softNearFade:e.softNearFade??0,softFarFade:e.softFarFade??0,layers:e.layers??new r},this.neededToUpdateRender=!0,this.particles=[],this.startTileIndex=e.startTileIndex||new K(0),this.emitter=new nn(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){on.setFromRotationMatrix(n);let r=sn,i=on,a=cn;n.decompose(r,i,a);for(let r=0;r{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!==`Scene`){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let e=0;e.1&&(e=.1),this.neededToUpdateRender&&=(this._renderer&&this._renderer.updateSystem(this),!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let t=0;tthis.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(e=>{e.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);let r=Math.ceil(t.waitEmiting);for(this.spawn(r,t,n),t.waitEmiting-=r;t.burstIndex0){let n=Math.floor(t.travelDistance*e);t.travelDistance-=n/e,t.waitEmiting+=n}}t.previousWorldPos===void 0&&(t.previousWorldPos=new L),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){if((e===void 0||typeof e==`string`)&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&this.texture?.source!==void 0){let t=this.texture.source;e.images[t.uuid]={uuid:t.uuid,url:this.texture.image.url}}let n;n=this.renderMode===$.Trail?{startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===$.Mesh?{}:this.renderMode===$.StretchedBillBoard?{speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:{};let r=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[r.uuid]&&(e.geometries[r.uuid]=r.toJSON()),{version:`3.0`,autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(e=>({time:e.time,count:e.count.toJSON(),probability:e.probability,interval:e.interval,cycle:e.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:n,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(e=>e.toJSON()),worldSpace:this.worldSpace}}static fromJSON(t,n,a){let o=rt(t.shape,n),s;if(t.renderMode===$.Trail){let e=t.rendererEmitterSettings;s={startLength:e.startLength==null?new K(30):q(e.startLength),followLocalOrigin:e.followLocalOrigin}}else t.renderMode===$.Mesh?s={}:t.renderMode===$.StretchedBillBoard?(s=t.rendererEmitterSettings,t.speedFactor!=null&&(s.speedFactor=t.speedFactor)):s={};let c=new r;t.layers&&(c.mask=t.layers);let l=new e({autoDestroy:t.autoDestroy,looping:t.looping,prewarm:t.prewarm,duration:t.duration,shape:o,startLife:q(t.startLife),startSpeed:q(t.startSpeed),startRotation:Ue(t.startRotation),startSize:Ue(t.startSize),startColor:Ne(t.startColor),emissionOverTime:q(t.emissionOverTime),emissionOverDistance:q(t.emissionOverDistance),emissionBursts:t.emissionBursts?.map(e=>({time:e.time,count:typeof e.count==`number`?new K(e.count):q(e.count),probability:e.probability??1,interval:e.interval??.1,cycle:e.cycle??1})),onlyUsedByOther:t.onlyUsedByOther,instancingGeometry:n.geometries[t.instancingGeometry],renderMode:t.renderMode,rendererEmitterSettings:s,renderOrder:t.renderOrder,layers:c,material:t.material?n.materials[t.material]:t.texture?new i({map:n.textures[t.texture],transparent:t.transparent??!0,blending:t.blending,side:2}):new i({color:16777215,transparent:!0,blending:2,side:2}),startTileIndex:typeof t.startTileIndex==`number`?new K(t.startTileIndex):q(t.startTileIndex),uTileCount:t.uTileCount,vTileCount:t.vTileCount,blendTiles:t.blendTiles,softParticles:t.softParticles,softFarFade:t.softFarFade,softNearFade:t.softNearFade,behaviors:[],worldSpace:t.worldSpace});return l.behaviors=t.behaviors.map(e=>{let t=Ut(e,l);return t.type===`EmitSubParticleSystem`&&(a[e.subParticleSystem]=t),t}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){let n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){let t=[];for(let e of this.emissionBursts){let n={};Object.assign(n,e),t.push(n)}let n=[];for(let e of this.behaviors)n.push(e.clone());let i;i=this.renderMode===$.Trail?{startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===$.StretchedBillBoard?{lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:{};let a=new r;return a.mask=this.layers.mask,new e({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:t,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:i,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:n,worldSpace:this.worldSpace,layers:a})}},fn=` + +#include +#include +#include +#include +#include +#include + +#include +#include + +void main() { + + #include + + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vColor; + + #include + + #include + #include + + outgoingLight = diffuseColor.rgb; + + #ifdef USE_COLOR_AS_ALPHA + gl_FragColor = vec4( outgoingLight, diffuseColor.r ); + #else + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #endif + + #include + #include +} +`,pn=` +#define STANDARD + +#ifdef PHYSICAL +#define IOR +#define USE_SPECULAR +#endif + +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; + +#ifdef IOR +uniform float ior; +#endif + +#ifdef USE_SPECULAR +uniform float specularIntensity; +uniform vec3 specularColor; + +#ifdef USE_SPECULAR_COLORMAP +uniform sampler2D specularColorMap; +#endif + +#ifdef USE_SPECULAR_INTENSITYMAP +uniform sampler2D specularIntensityMap; +#endif +#endif + +#ifdef USE_CLEARCOAT +uniform float clearcoat; +uniform float clearcoatRoughness; +#endif + +#ifdef USE_DISPERSION +uniform float dispersion; +#endif + +#ifdef USE_IRIDESCENCE +uniform float iridescence; +uniform float iridescenceIOR; +uniform float iridescenceThicknessMinimum; +uniform float iridescenceThicknessMaximum; +#endif + +#ifdef USE_SHEEN +uniform vec3 sheenColor; +uniform float sheenRoughness; + +#ifdef USE_SHEEN_COLORMAP +uniform sampler2D sheenColorMap; +#endif + +#ifdef USE_SHEEN_ROUGHNESSMAP +uniform sampler2D sheenRoughnessMap; +#endif +#endif + +#ifdef USE_ANISOTROPY +uniform vec2 anisotropyVector; + +#ifdef USE_ANISOTROPYMAP +uniform sampler2D anisotropyMap; +#endif +#endif + +varying vec3 vViewPosition; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void main() { + +vec4 diffuseColor = vec4( diffuse, opacity ); +#include + +ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); +vec3 totalEmissiveRadiance = emissive; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// accumulation +#include +#include +#include +#include + +// modulation +#include + +vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; +vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + +#include + +vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + +#ifdef USE_SHEEN + +// Sheen energy compensation approximation calculation can be found at the end of +// https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing +float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + +outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + +#endif + +#ifdef USE_CLEARCOAT + +float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + +vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + +outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + +#endif + +#include +#include +#include +#include +#include +#include +}`,mn=` +#include +#include +#include +#include + +#include +#include + +attribute vec3 offset; +attribute float rotation; +attribute vec3 size; + +void main() { + + vec2 alignedPosition = position.xy * size.xy; + + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; +#ifdef HORIZONTAL + vec4 mvPosition = modelMatrix * vec4( offset, 1.0 ); + mvPosition.x += rotatedPosition.x; + mvPosition.z -= rotatedPosition.y; + mvPosition = viewMatrix * mvPosition; +#elif defined(VERTICAL) + vec4 mvPosition = modelMatrix * vec4( offset, 1.0 ); + mvPosition.y += rotatedPosition.y; + mvPosition = viewMatrix * mvPosition; + mvPosition.x += rotatedPosition.x; +#else + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + mvPosition.xy += rotatedPosition; +#endif + + vColor = color; + + gl_Position = projectionMatrix * mvPosition; + + #include + + #include + + #include + #include +} +`,hn=` +#include +#include +#include +#include +#include +#include + +attribute vec3 offset; +attribute vec4 rotation; +attribute vec3 size; +// attribute vec4 color; + +void main() { + + float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z; + float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2; + float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2; + float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2; + float sx = size.x, sy = size.y, sz = size.z; + + mat4 matrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column + ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column + ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column + offset.x, offset.y, offset.z, 1.0); + + vec4 mvPosition = modelViewMatrix * (matrix * vec4( position, 1.0 )); + + vColor = color; + + gl_Position = projectionMatrix * mvPosition; + + #include + #include + #include + #include +} +`,gn=` +#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include + +attribute vec3 offset; +attribute vec4 rotation; +attribute vec3 size; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void main() { + + #include + float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z; + float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2; + float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2; + float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2; + float sx = size.x, sy = size.y, sz = size.z; + + mat4 particleMatrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column + ( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column + ( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column + offset.x, offset.y, offset.z, 1.0); + +#include +#include +#include +#include + +#include +#include +#include +#include + + // replace defaultnormal_vertex + vec3 transformedNormal = objectNormal; + mat3 m = mat3( particleMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; + transformedNormal = normalMatrix * transformedNormal; + #ifdef FLIP_SIDED + transformedNormal = - transformedNormal; + #endif + #ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif + #endif + + #include + #include + #include + #include + #include + + // replace include + vec4 mvPosition = vec4( transformed, 1.0 ); + mvPosition = modelViewMatrix * (particleMatrix * mvPosition); + gl_Position = projectionMatrix * mvPosition; + + #include + #include + + vViewPosition = - mvPosition.xyz; + + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +} +`,_n=` +#include +#include +#include +#include + +#include +#include + +attribute vec3 offset; +attribute float rotation; +attribute vec3 size; +attribute vec4 velocity; + +uniform float speedFactor; + +void main() { + float lengthFactor = velocity.w; + float avgSize = (size.x + size.y) * 0.5; +#ifdef USE_SKEW + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + vec3 viewVelocity = normalMatrix * velocity.xyz; + + vec3 scaledPos = vec3(position.xy * size.xy, position.z); + float vlength = length(viewVelocity); + vec3 projVelocity = dot(scaledPos, viewVelocity) * viewVelocity / vlength; + mvPosition.xyz += scaledPos + projVelocity * (speedFactor / avgSize + lengthFactor / vlength); +#else + vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 ); + vec3 viewVelocity = normalMatrix * velocity.xyz; + float vlength = length(viewVelocity); + mvPosition.xyz += position.y * normalize(cross(mvPosition.xyz, viewVelocity)) * avgSize; // switch the cross to match unity implementation + mvPosition.xyz -= (position.x + 0.5) * viewVelocity * (1.0 + lengthFactor / vlength) * avgSize; // minus position.x to match unity implementation +#endif + vColor = color; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include + #include +} +`;function vn(e){return e===0?`uv`:`uv${e}`}var yn=class extends l{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=gn,e.fragmentShader=pn}},bn=class extends u{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=gn,e.fragmentShader=pn}},xn=class extends rn{constructor(e){super(e),this.vector_=new L,this.vector2_=new L,this.vector3_=new L,this.quaternion_=new I,this.quaternion2_=new I,this.quaternion3_=new I,this.rotationMat_=new W,this.rotationMat2_=new W,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new s(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(e),this.geometry.setAttribute(`offset`,this.offsetBuffer),this.colorBuffer=new s(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(e),this.geometry.setAttribute(`color`,this.colorBuffer),this.settings.renderMode===$.Mesh?(this.rotationBuffer=new s(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(e),this.geometry.setAttribute(`rotation`,this.rotationBuffer)):(this.settings.renderMode===$.BillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.StretchedBillBoard)&&(this.rotationBuffer=new s(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(e),this.geometry.setAttribute(`rotation`,this.rotationBuffer)),this.sizeBuffer=new s(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(e),this.geometry.setAttribute(`size`,this.sizeBuffer),this.uvTileBuffer=new s(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(e),this.geometry.setAttribute(`uvTile`,this.uvTileBuffer),this.settings.renderMode===$.StretchedBillBoard&&(this.velocityBuffer=new s(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(e),this.geometry.setAttribute(`velocity`,this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new p,this.geometry.setIndex(this.settings.instancingGeometry.getIndex()),this.settings.instancingGeometry.hasAttribute(`normal`)&&this.geometry.setAttribute(`normal`,this.settings.instancingGeometry.getAttribute(`normal`)),this.geometry.setAttribute(`position`,this.settings.instancingGeometry.getAttribute(`position`)),this.geometry.setAttribute(`uv`,this.settings.instancingGeometry.getAttribute(`uv`)),this.buildExpandableBuffers()}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;let e={},t={};this.settings.material.type!==`MeshStandardMaterial`&&this.settings.material.type!==`MeshPhysicalMaterial`&&(e.map=new h(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST=``,e.alphaTest=new h(this.settings.material.alphaTest)),t.USE_UV=``;let n=this.settings.uTileCount,r=this.settings.vTileCount;(n>1||r>1)&&(t.UV_TILE=``,e.tileCount=new h(new H(n,r))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=``),this.settings.material.normalMap&&(t.USE_NORMALMAP=``,t.NORMALMAP_UV=vn(this.settings.material.normalMap.channel),e.normalMapTransform=new h(new W().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP=``,this.settings.blendTiles&&(t.TILE_BLEND=``),t.MAP_UV=vn(this.settings.material.map.channel),e.mapTransform=new h(new W().copy(this.settings.material.map.matrix))),t.USE_COLOR_ALPHA=``;let i;if(this.settings.softParticles){t.SOFT_PARTICLES=``;let n=this.settings.softNearFade;e.softParams=new h(new H(n,1/(this.settings.softFarFade-this.settings.softNearFade))),e.depthTexture=new h(null);let r=e.projParams=new h(new U);i=(e,t,n)=>{r.value.set(n.near,n.far,0,0)}}let a=!1;if(this.settings.renderMode===$.BillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.Mesh){let n,r;this.settings.renderMode===$.Mesh?this.settings.material.type===`MeshStandardMaterial`||this.settings.material.type===`MeshPhysicalMaterial`?(t.USE_COLOR=``,n=gn,r=pn,a=!0):(n=hn,r=fn):(n=mn,r=fn),this.settings.renderMode===$.VerticalBillBoard?t.VERTICAL=``:this.settings.renderMode===$.HorizontalBillBoard&&(t.HORIZONTAL=``);let i=!1;this.settings.renderMode===$.Mesh&&(this.settings.material.type===`MeshStandardMaterial`?(this.material=new yn({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,i=!0):this.settings.material.type===`MeshPhysicalMaterial`&&(this.material=new bn({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,i=!0)),i||(this.material=new d({uniforms:e,defines:t,vertexShader:n,fragmentShader:r,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest,lights:a}))}else if(this.settings.renderMode===$.StretchedBillBoard)e.speedFactor=new h(1),this.material=new d({uniforms:e,defines:t,vertexShader:_n,fragmentShader:fn,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest});else throw Error(`render mode unavailable`);this.material&&i&&(this.material.onBeforeRender=i)}update(){let e=0,t=0;this.systems.forEach(e=>{t+=e.particleNum}),t>this.maxParticles&&this.expandBuffers(t),this.systems.forEach(t=>{t.emitter.updateMatrixWorld&&(t.emitter.updateWorldMatrix(!0,!1),t.emitter.updateMatrixWorld(!0));let n=t.particles,r=t.particleNum,i=this.quaternion2_,a=this.vector2_,o=this.vector3_;t.emitter.matrixWorld.decompose(a,i,o),this.rotationMat_.setFromMatrix4(t.emitter.matrixWorld);for(let a=0;a0&&(this.offsetBuffer.clearUpdateRanges(),this.offsetBuffer.addUpdateRange(0,e*3),this.offsetBuffer.needsUpdate=!0,this.sizeBuffer.clearUpdateRanges(),this.sizeBuffer.addUpdateRange(0,e*3),this.sizeBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.uvTileBuffer.clearUpdateRanges(),this.uvTileBuffer.addUpdateRange(0,e),this.uvTileBuffer.needsUpdate=!0,this.settings.renderMode===$.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===$.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===$.StretchedBillBoard||this.settings.renderMode===$.HorizontalBillBoard||this.settings.renderMode===$.VerticalBillBoard||this.settings.renderMode===$.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}},Sn=` + +#include +#include +#include +#include +#include +#include + +uniform sampler2D alphaMap; +uniform float useAlphaMap; +uniform float visibility; +uniform float alphaTest; + +varying vec4 vColor; + +void main() { + #include + #include + + vec4 diffuseColor = vColor; + + #ifdef USE_MAP + #include + #ifndef USE_COLOR_AS_ALPHA + #endif + #endif + if( useAlphaMap == 1. ) diffuseColor.a *= texture2D( alphaMap, vUv).a; + if( diffuseColor.a < alphaTest ) discard; + gl_FragColor = diffuseColor; + + #include + #include +}`,Cn=` +#include +#include +#include +#include +#include +#include + +attribute vec3 previous; +attribute vec3 next; +attribute float side; +attribute float width; + +uniform vec2 resolution; +uniform float lineWidth; +uniform float sizeAttenuation; + +vec2 fix(vec4 i, float aspect) { + vec2 res = i.xy / i.w; + res.x *= aspect; + return res; +} + +void main() { + + #include + + float aspect = resolution.x / resolution.y; + + vColor = color; + + mat4 m = projectionMatrix * modelViewMatrix; + vec4 finalPosition = m * vec4( position, 1.0 ); + vec4 prevPos = m * vec4( previous, 1.0 ); + vec4 nextPos = m * vec4( next, 1.0 ); + + vec2 currentP = fix( finalPosition, aspect ); + vec2 prevP = fix( prevPos, aspect ); + vec2 nextP = fix( nextPos, aspect ); + + float w = lineWidth * width; + + vec2 dir; + if( nextP == currentP ) dir = normalize( currentP - prevP ); + else if( prevP == currentP ) dir = normalize( nextP - currentP ); + else { + vec2 dir1 = normalize( currentP - prevP ); + vec2 dir2 = normalize( nextP - currentP ); + dir = normalize( dir1 + dir2 ); + + vec2 perp = vec2( -dir1.y, dir1.x ); + vec2 miter = vec2( -dir.y, dir.x ); + //w = clamp( w / dot( miter, perp ), 0., 4., * lineWidth * width ); + + } + + //vec2 normal = ( cross( vec3( dir, 0. ) vec3( 0., 0., 1. ) ) ).xy; + vec4 normal = vec4( -dir.y, dir.x, 0., 1. ); + normal.xy *= .5 * w; + normal *= projectionMatrix; + if( sizeAttenuation == 0. ) { + normal.xy *= finalPosition.w; + normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy; + } + + finalPosition.xy += normal.xy * side; + + gl_Position = finalPosition; + + #include + #include + + vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); + + #include +}`,wn=class extends rn{constructor(e){super(e),this.vector_=new L,this.vector2_=new L,this.vector3_=new L,this.quaternion_=new I,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new a,this.indexBuffer=new m(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(e),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new m(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(e),this.geometry.setAttribute(`position`,this.positionBuffer),this.previousBuffer=new m(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(e),this.geometry.setAttribute(`previous`,this.previousBuffer),this.nextBuffer=new m(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(e),this.geometry.setAttribute(`next`,this.nextBuffer),this.widthBuffer=new m(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(e),this.geometry.setAttribute(`width`,this.widthBuffer),this.sideBuffer=new m(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(e),this.geometry.setAttribute(`side`,this.sideBuffer),this.uvBuffer=new m(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(e),this.geometry.setAttribute(`uv`,this.uvBuffer),this.colorBuffer=new m(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(e),this.geometry.setAttribute(`color`,this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;let e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new H(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV=``,t.USE_COLOR_ALPHA=``,this.settings.material.map&&(t.USE_MAP=``,t.MAP_UV=vn(this.settings.material.map.channel),e.map=new h(this.settings.material.map),e.mapTransform=new h(new W().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=``),this.settings.renderMode===$.Trail)this.material=new d({uniforms:e,defines:t,vertexShader:Cn,fragmentShader:Sn,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||2,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw Error(`render mode unavailable`)}update(){let e=0,t=0,n=0;this.systems.forEach(e=>{for(let t=0;tthis.maxParticles&&this.expandBuffers(n),this.systems.forEach(n=>{n.emitter.updateMatrixWorld&&(n.emitter.updateWorldMatrix(!0,!1),n.emitter.updateMatrixWorld(!0));let r=this.quaternion_,i=this.vector2_,a=this.vector3_;n.emitter.matrixWorld.decompose(i,r,a);let o=n.particles,s=n.particleNum,c=this.settings.uTileCount,l=this.settings.vTileCount,u=1/c,d=1/l;for(let r=0;r1&&(o=1-o,s=1-s);let c=t.getIndex().array[r*3],l=t.getIndex().array[r*3+1],u=t.getIndex().array[r*3+2],d=t.getAttribute(`position`);this._tempA.fromBufferAttribute(d,c),this._tempB.fromBufferAttribute(d,l),this._tempC.fromBufferAttribute(d,u),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,s),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:`mesh_surface`,mesh:this._geometry?this._geometry.uuid:``}}static fromJSON(t,n){return new e(n.geometries[t.geometry])}clone(){return new e(this._geometry)}update(e,t){}};Gt({id:`three.quarks`,initialize:()=>{},emitterShapes:[{type:`mesh_surface`,params:[[`geometry`,[`geometry`]]],constructor:Tn,loadJSON:Tn.fromJSON}],behaviors:[]});var En=class e extends c{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type=`BatchedRenderer`,this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(t){t._renderer=this;let n=t.getRendererSettings();for(let r=0;r{n.update(e)});for(let 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,AONode:()=>yC,AddEquation:()=>100,AddOperation:()=>2,AdditiveAnimationBlendMode:()=>it,AdditiveBlending:()=>2,AfterImageNode:()=>Dk,AgXToneMapping:()=>6,AlphaFormat:()=>ie,AlwaysCompare:()=>519,AlwaysDepth:()=>1,AlwaysStencilFunc:()=>519,AmbientLight:()=>Cp,AmbientLightNode:()=>BN,AnaglyphPassNode:()=>PA,AnalyticLightNode:()=>fj,AnamorphicNode:()=>Lk,AnimationAction:()=>_m,AnimationClip:()=>Kf,AnimationLoader:()=>np,AnimationMixer:()=>ym,AnimationObjectGroup:()=>gm,AnimationUtils:()=>Nf,ArcCurve:()=>Mu,ArrayCamera:()=>Ac,ArrayElementNode:()=>Lh,ArrowHelper:()=>fh,AssignNode:()=>M_,AttachedBindMode:()=>a,AttributeNode:()=>cb,Audio:()=>Xp,AudioAnalyser:()=>nm,AudioContext:()=>Lp,AudioListener:()=>Yp,AudioLoader:()=>Rp,AxesHelper:()=>ph,BRDF_GGX:()=>Kw,BRDF_Lambert:()=>Aw,BackSide:()=>1,BasicDepthPacking:()=>at,BasicEnvironmentNode:()=>Cw,BasicNodeLibrary:()=>$N,BasicShadowMap:()=>0,BatchNode:()=>XS,BatchedMesh:()=>nu,BloomNode:()=>gA,Bone:()=>wl,BooleanKeyframeTrack:()=>zf,Box2:()=>Nm,Box3:()=>Gn,Box3Helper:()=>sh,BoxGeometry:()=>Zi,BoxHelper:()=>oh,Break:()=>aC,BufferAttribute:()=>bi,BufferAttributeNode:()=>Vy,BufferGeometry:()=>Ii,BufferGeometryLoader:()=>Ap,BufferNode:()=>vx,BumpMapNode:()=>Qx,BypassNode:()=>Xy,ByteType:()=>x,Cache:()=>Yf,CacheNode:()=>Jy,Camera:()=>la,CameraHelper:()=>rh,CanvasTexture:()=>ku,CapsuleGeometry:()=>od,CatmullRomCurve3:()=>Ru,CineonToneMapping:()=>3,CircleGeometry:()=>sd,ClampToEdgeWrapping:()=>c,Clock:()=>Up,CodeNode:()=>KE,Color:()=>P,ColorKeyframeTrack:()=>Bf,ColorManagement:()=>Tn,ColorSpaceNode:()=>Oy,CompressedArrayTexture:()=>Du,CompressedCubeTexture:()=>Ou,CompressedTexture:()=>Eu,CompressedTextureLoader:()=>rp,ComputeNode:()=>Ky,ConeGeometry:()=>ld,ConstNode:()=>Kh,ConstantAlphaFactor:()=>213,ConstantColorFactor:()=>211,ContextNode:()=>_y,Continue:()=>iC,Controls:()=>hh,ConvertNode:()=>Rh,CubeCamera:()=>ga,CubeReflectionMapping:()=>301,CubeRefractionMapping:()=>302,CubeTexture:()=>_a,CubeTextureLoader:()=>ap,CubeTextureNode:()=>gx,CubeUVReflectionMapping:()=>306,CubicBezierCurve:()=>Yu,CubicBezierCurve3:()=>Xu,CubicInterpolant:()=>Ff,CullFaceBack:()=>1,CullFaceFront:()=>2,CullFaceFrontBack:()=>3,CullFaceNone:()=>0,Curve:()=>Au,CurvePath:()=>rd,CustomBlending:()=>5,CustomToneMapping:()=>5,CylinderGeometry:()=>cd,Cylindrical:()=>Am,DFGApprox:()=>qw,D_GGX:()=>Uw,Data3DTexture:()=>Bn,DataArrayTexture:()=>Rn,DataTexture:()=>Tl,DataTextureLoader:()=>op,DataUtils:()=>_i,DecrementStencilOp:()=>yt,DecrementWrapStencilOp:()=>xt,DefaultLoadingManager:()=>Zf,DenoiseNode:()=>iA,DepthFormat:()=>le,DepthOfFieldNode:()=>Vk,DepthStencilFormat:()=>ue,DepthTexture:()=>ho,DetachedBindMode:()=>o,DirectionalLight:()=>Sp,DirectionalLightHelper:()=>eh,DirectionalLightNode:()=>NN,Discard:()=>rb,DiscreteInterpolant:()=>Lf,DisplayP3ColorSpace:()=>dt,DodecahedronGeometry:()=>dd,DotScreenNode:()=>Uk,DoubleSide:()=>2,DstAlphaFactor:()=>206,DstColorFactor:()=>208,DynamicCopyUsage:()=>At,DynamicDrawUsage:()=>wt,DynamicReadUsage:()=>Dt,EPSILON:()=>av,EdgesGeometry:()=>gd,EllipseCurve:()=>ju,EnvironmentNode:()=>iE,EqualCompare:()=>514,EqualDepth:()=>4,EqualStencilFunc:()=>514,EquirectUVNode:()=>mw,EquirectangularReflectionMapping:()=>303,EquirectangularRefractionMapping:()=>304,Euler:()=>Dr,EventDispatcher:()=>Ft,ExpressionNode:()=>tb,ExtrudeGeometry:()=>$d,FXAANode:()=>cA,F_Schlick:()=>kw,FileLoader:()=>tp,FilmNode:()=>qk,Float16BufferAttribute:()=>Oi,Float32BufferAttribute:()=>F,FloatType:()=>E,Fn:()=>U,Fog:()=>Wc,FogExp2:()=>Uc,FogExp2Node:()=>ZA,FogNode:()=>qA,FogRangeNode:()=>YA,FramebufferTexture:()=>Tu,FrontFacingNode:()=>Qb,FrontSide:()=>0,Frustum:()=>Ta,FunctionCallNode:()=>P_,FunctionNode:()=>ZE,FunctionOverloadingNode:()=>rO,GLBufferAttribute:()=>wm,GLSL1:()=>`100`,GLSL3:()=>Mt,GLSLNodeParser:()=>XN,GTAONode:()=>eA,GaussianBlurNode:()=>Ck,GreaterCompare:()=>516,GreaterDepth:()=>6,GreaterEqualCompare:()=>518,GreaterEqualDepth:()=>5,GreaterEqualStencilFunc:()=>518,GreaterStencilFunc:()=>516,GridHelper:()=>Ym,Group:()=>jc,HalfFloatType:()=>D,HemisphereLight:()=>lp,HemisphereLightHelper:()=>Jm,HemisphereLightNode:()=>VN,IESSpotLightNode:()=>zN,INFINITY:()=>ov,IcosahedronGeometry:()=>nf,If:()=>W,ImageBitmapLoader:()=>Fp,ImageLoader:()=>ip,ImageUtils:()=>kn,IncrementStencilOp:()=>vt,IncrementWrapStencilOp:()=>bt,IndexNode:()=>VS,InstanceNode:()=>JS,InstancedBufferAttribute:()=>kl,InstancedBufferGeometry:()=>kp,InstancedInterleavedBuffer:()=>Cm,InstancedMesh:()=>Ll,InstancedPointsNodeMaterial:()=>rw,Int16BufferAttribute:()=>wi,Int32BufferAttribute:()=>Ei,Int8BufferAttribute:()=>xi,IntType:()=>w,InterleavedBuffer:()=>Kc,InterleavedBufferAttribute:()=>Jc,Interpolant:()=>Pf,InterpolateDiscrete:()=>Ze,InterpolateLinear:()=>Qe,InterpolateSmooth:()=>$e,InvertStencilOp:()=>St,IrradianceNode:()=>SC,JoinNode:()=>Bh,KeepStencilOp:()=>gt,KeyframeTrack:()=>Rf,LOD:()=>pl,LatheGeometry:()=>ad,Layers:()=>Or,LessCompare:()=>513,LessDepth:()=>2,LessEqualCompare:()=>515,LessEqualDepth:()=>3,LessEqualStencilFunc:()=>515,LessStencilFunc:()=>513,Light:()=>cp,LightProbe:()=>Ep,LightProbeNode:()=>HN,LightingContextNode:()=>bC,LightingModel:()=>Tw,LightingNode:()=>vC,LightsNode:()=>gC,Line:()=>du,Line2NodeMaterial:()=>lw,Line3:()=>Im,LineBasicMaterial:()=>ru,LineBasicNodeMaterial:()=>aw,LineCurve:()=>Zu,LineCurve3:()=>Qu,LineDashedMaterial:()=>Tf,LineDashedNodeMaterial:()=>sw,LineLoop:()=>gu,LineSegments:()=>hu,LinearDisplayP3ColorSpace:()=>ft,LinearFilter:()=>h,LinearInterpolant:()=>If,LinearMipMapLinearFilter:()=>y,LinearMipMapNearestFilter:()=>_,LinearMipmapLinearFilter:()=>v,LinearMipmapNearestFilter:()=>g,LinearSRGBColorSpace:()=>ut,LinearToneMapping:()=>1,LinearTransfer:()=>pt,Loader:()=>Qf,LoaderUtils:()=>Op,LoadingManager:()=>Xf,Loop:()=>rC,LoopNode:()=>nC,LoopOnce:()=>Je,LoopPingPong:()=>Xe,LoopRepeat:()=>Ye,LuminanceAlphaFormat:()=>ce,LuminanceFormat:()=>se,Lut3DNode:()=>Yk,MOUSE:()=>r,MRTNode:()=>tO,MatcapUVNode:()=>_E,Material:()=>di,MaterialLoader:()=>Dp,MaterialNode:()=>$,MaterialReferenceNode:()=>Ox,MathUtils:()=>ln,Matrix2:()=>jm,Matrix3:()=>j,Matrix4:()=>N,MaxEquation:()=>104,MaxMipLevelNode:()=>pb,Mesh:()=>Ji,MeshBasicMaterial:()=>fi,MeshBasicNodeMaterial:()=>Ow,MeshDepthMaterial:()=>hc,MeshDistanceMaterial:()=>gc,MeshLambertMaterial:()=>Cf,MeshLambertNodeMaterial:()=>Iw,MeshMatcapMaterial:()=>wf,MeshMatcapNodeMaterial:()=>bE,MeshNormalMaterial:()=>Sf,MeshNormalNodeMaterial:()=>pw,MeshPhongMaterial:()=>bf,MeshPhongNodeMaterial:()=>Rw,MeshPhysicalMaterial:()=>yf,MeshPhysicalNodeMaterial:()=>uE,MeshSSSNodeMaterial:()=>fE,MeshStandardMaterial:()=>vf,MeshStandardNodeMaterial:()=>cE,MeshToonMaterial:()=>xf,MeshToonNodeMaterial:()=>gE,MinEquation:()=>103,MirroredRepeatWrapping:()=>l,MixOperation:()=>1,ModelNode:()=>Pb,ModelViewProjectionNode:()=>zS,MorphNode:()=>dC,MultiplyBlending:()=>4,MultiplyOperation:()=>0,NearestFilter:()=>u,NearestMipMapLinearFilter:()=>m,NearestMipMapNearestFilter:()=>f,NearestMipmapLinearFilter:()=>p,NearestMipmapNearestFilter:()=>d,NeutralToneMapping:()=>7,NeverCompare:()=>512,NeverDepth:()=>0,NeverStencilFunc:()=>512,NoBlending:()=>0,NoColorSpace:()=>``,NoToneMapping:()=>0,Node:()=>R,NodeAttribute:()=>LE,NodeBuilder:()=>JD,NodeCache:()=>UE,NodeCode:()=>VE,NodeFrame:()=>YD,NodeFunctionInput:()=>XD,NodeLoader:()=>PE,NodeMaterial:()=>tw,NodeMaterialLoader:()=>FE,NodeMaterialObserver:()=>vh,NodeObjectLoader:()=>IE,NodeShaderStage:()=>Ah,NodeType:()=>jh,NodeUniform:()=>RE,NodeUpdateType:()=>L,NodeUtils:()=>kh,NodeVar:()=>zE,NodeVarying:()=>BE,NormalAnimationBlendMode:()=>rt,NormalBlending:()=>1,NormalMapNode:()=>Jx,NotEqualCompare:()=>517,NotEqualDepth:()=>7,NotEqualStencilFunc:()=>517,NumberKeyframeTrack:()=>Vf,Object3D:()=>Wr,Object3DNode:()=>Ob,ObjectLoader:()=>jp,ObjectSpaceNormalMap:()=>1,OctahedronGeometry:()=>rf,OneFactor:()=>201,OneMinusConstantAlphaFactor:()=>214,OneMinusConstantColorFactor:()=>212,OneMinusDstAlphaFactor:()=>207,OneMinusDstColorFactor:()=>209,OneMinusSrcAlphaFactor:()=>205,OneMinusSrcColorFactor:()=>203,OrthographicCamera:()=>Ba,OscNode:()=>dO,OutputStructNode:()=>QD,P3Primaries:()=>`p3`,PCFShadowMap:()=>1,PCFSoftShadowMap:()=>2,PI:()=>sv,PI2:()=>cv,PMREMGenerator:()=>$a,PMREMNode:()=>$T,ParallaxBarrierPassNode:()=>IA,ParameterNode:()=>WE,PassNode:()=>_k,Path:()=>id,PerspectiveCamera:()=>pa,PhongLightingModel:()=>Pw,PhysicalLightingModel:()=>OT,PixelationPassNode:()=>SA,Plane:()=>Sa,PlaneGeometry:()=>Oa,PlaneHelper:()=>ch,PointLight:()=>bp,PointLightHelper:()=>Wm,PointLightNode:()=>MN,PointUVNode:()=>JO,Points:()=>Su,PointsMaterial:()=>_u,PointsNodeMaterial:()=>SE,PolarGridHelper:()=>Xm,PolyhedronGeometry:()=>ud,PositionalAudio:()=>tm,PosterizeNode:()=>lk,PropertyBinding:()=>hm,PropertyMixer:()=>rm,PropertyNode:()=>t_,QuadraticBezierCurve:()=>$u,QuadraticBezierCurve3:()=>ed,Quaternion:()=>Hn,QuaternionKeyframeTrack:()=>Uf,QuaternionLinearInterpolant:()=>Hf,RED_GREEN_RGTC2_Format:()=>Ke,RED_RGTC1_Format:()=>We,REVISION:()=>n,RGBADepthPacking:()=>ot,RGBAFormat:()=>oe,RGBAIntegerFormat:()=>ge,RGBA_ASTC_10x10_Format:()=>Re,RGBA_ASTC_10x5_Format:()=>Fe,RGBA_ASTC_10x6_Format:()=>Ie,RGBA_ASTC_10x8_Format:()=>Le,RGBA_ASTC_12x10_Format:()=>ze,RGBA_ASTC_12x12_Format:()=>Be,RGBA_ASTC_4x4_Format:()=>De,RGBA_ASTC_5x4_Format:()=>Oe,RGBA_ASTC_5x5_Format:()=>ke,RGBA_ASTC_6x5_Format:()=>Ae,RGBA_ASTC_6x6_Format:()=>je,RGBA_ASTC_8x5_Format:()=>Me,RGBA_ASTC_8x6_Format:()=>Ne,RGBA_ASTC_8x8_Format:()=>Pe,RGBA_BPTC_Format:()=>Ve,RGBA_ETC2_EAC_Format:()=>Ee,RGBA_PVRTC_2BPPV1_Format:()=>Ce,RGBA_PVRTC_4BPPV1_Format:()=>k,RGBA_S3TC_DXT1_Format:()=>ve,RGBA_S3TC_DXT3_Format:()=>ye,RGBA_S3TC_DXT5_Format:()=>be,RGBDepthPacking:()=>st,RGBFormat:()=>ae,RGBIntegerFormat:()=>he,RGBShiftNode:()=>Gk,RGB_BPTC_SIGNED_Format:()=>He,RGB_BPTC_UNSIGNED_Format:()=>Ue,RGB_ETC1_Format:()=>we,RGB_ETC2_Format:()=>Te,RGB_PVRTC_2BPPV1_Format:()=>Se,RGB_PVRTC_4BPPV1_Format:()=>xe,RGB_S3TC_DXT1_Format:()=>_e,RGDepthPacking:()=>ct,RGFormat:()=>pe,RGIntegerFormat:()=>me,RTTNode:()=>UO,RangeNode:()=>tj,RawShaderMaterial:()=>_f,Ray:()=>_r,Raycaster:()=>Em,Rec709Primaries:()=>ht,RectAreaLight:()=>wp,RectAreaLightNode:()=>LN,RedFormat:()=>de,RedIntegerFormat:()=>fe,ReferenceNode:()=>Tx,ReflectorNode:()=>LO,ReinhardToneMapping:()=>2,RemapNode:()=>Qy,RenderOutputNode:()=>ab,RenderTarget:()=>In,RendererReferenceNode:()=>Iy,RepeatWrapping:()=>s,ReplaceStencilOp:()=>_t,Return:()=>ib,ReverseSubtractEquation:()=>102,RingGeometry:()=>af,RotateNode:()=>CE,SIGNED_RED_GREEN_RGTC2_Format:()=>qe,SIGNED_RED_RGTC1_Format:()=>Ge,SRGBColorSpace:()=>lt,SRGBTransfer:()=>mt,SSAAPassNode:()=>TA,Scene:()=>Gc,SceneNode:()=>XO,Schlick_to_F0:()=>Yw,ScreenNode:()=>TC,ScriptableNode:()=>GA,ScriptableValueNode:()=>BA,SetNode:()=>Uh,ShaderChunk:()=>ka,ShaderLib:()=>Aa,ShaderMaterial:()=>aa,ShaderNode:()=>Sg,ShadowMaterial:()=>gf,ShadowNodeMaterial:()=>kE,Shape:()=>_d,ShapeGeometry:()=>of,ShapePath:()=>mh,ShapeUtils:()=>Xd,ShortType:()=>S,Skeleton:()=>Ol,SkeletonHelper:()=>Hm,SkinnedMesh:()=>Cl,SkinningNode:()=>$S,SobelOperatorNode:()=>zk,Source:()=>jn,Sphere:()=>lr,SphereGeometry:()=>cf,Spherical:()=>km,SphericalHarmonics3:()=>Tp,SplineCurve:()=>td,SplitNode:()=>Hh,SpotLight:()=>hp,SpotLightHelper:()=>Rm,SpotLightNode:()=>RN,Sprite:()=>ll,SpriteMaterial:()=>Yc,SpriteNodeMaterial:()=>EE,SpriteSheetUVNode:()=>gO,SrcAlphaFactor:()=>204,SrcAlphaSaturateFactor:()=>210,SrcColorFactor:()=>202,StackNode:()=>gD,StaticCopyUsage:()=>kt,StaticDrawUsage:()=>Ct,StaticReadUsage:()=>Et,StereoCamera:()=>Hp,StereoPassNode:()=>kA,StorageArrayElementNode:()=>vO,StorageBufferNode:()=>tk,StorageTextureNode:()=>ik,StreamCopyUsage:()=>jt,StreamDrawUsage:()=>Tt,StreamReadUsage:()=>Ot,StringKeyframeTrack:()=>Wf,SubtractEquation:()=>101,SubtractiveBlending:()=>3,TBNViewMatrix:()=>Ux,TOUCH:()=>i,TangentSpaceNormalMap:()=>0,TempNode:()=>zh,TetrahedronGeometry:()=>lf,Texture:()=>Pn,Texture3DNode:()=>jE,TextureLoader:()=>sp,TextureNode:()=>hb,TextureSizeNode:()=>db,TextureUtils:()=>Dc,TimerNode:()=>oO,ToneMappingNode:()=>Ry,ToonOutlinePassNode:()=>RA,TorusGeometry:()=>uf,TorusKnotGeometry:()=>df,TransitionNode:()=>vA,Triangle:()=>ii,TriangleFanDrawMode:()=>2,TriangleStripDrawMode:()=>1,TrianglesDrawMode:()=>0,TriplanarTexturesNode:()=>bO,TubeGeometry:()=>ff,UVMapping:()=>300,Uint16BufferAttribute:()=>Ti,Uint32BufferAttribute:()=>Di,Uint8BufferAttribute:()=>Si,Uint8ClampedBufferAttribute:()=>Ci,Uniform:()=>bm,UniformArrayNode:()=>xx,UniformGroupNode:()=>Jg,UniformNode:()=>e_,UniformsGroup:()=>Sm,UniformsLib:()=>I,UniformsUtils:()=>na,UnsignedByteType:()=>b,UnsignedInt101111Type:()=>re,UnsignedInt248Type:()=>te,UnsignedInt5999Type:()=>ne,UnsignedIntType:()=>T,UnsignedShort4444Type:()=>ee,UnsignedShort5551Type:()=>O,UnsignedShortType:()=>C,UserDataNode:()=>sk,VSMShadowMap:()=>3,V_GGX_SmithCorrelated:()=>Vw,VarNode:()=>by,VaryingNode:()=>Sy,Vector2:()=>A,Vector3:()=>M,Vector4:()=>Fn,VectorKeyframeTrack:()=>Gf,VertexColorNode:()=>KO,VideoTexture:()=>wu,ViewportDepthNode:()=>UC,ViewportDepthTextureNode:()=>VC,ViewportSharedTextureNode:()=>fk,ViewportTextureNode:()=>LC,VolumeNodeMaterial:()=>NE,WebGL3DRenderTarget:()=>Vn,WebGLArrayRenderTarget:()=>zn,WebGLCoordinateSystem:()=>Nt,WebGLCubeRenderTarget:()=>va,WebGLMultipleRenderTargets:()=>gh,WebGLRenderTarget:()=>Ln,WebGLRenderer:()=>Hc,WebGLUtils:()=>kc,WebGPUCoordinateSystem:()=>Pt,WireframeGeometry:()=>pf,WrapAroundEnding:()=>nt,ZeroCurvatureEnding:()=>et,ZeroFactor:()=>200,ZeroSlopeEnding:()=>tt,ZeroStencilOp:()=>0,abs:()=>Av,acesFilmicToneMapping:()=>Xj,acos:()=>Ov,add:()=>L_,addMethodChaining:()=>z,addNodeElement:()=>sb,afterImage:()=>Ok,agxToneMapping:()=>eM,all:()=>lv,alphaT:()=>h_,anaglyphPass:()=>FA,anamorphic:()=>Rk,and:()=>J_,anisotropy:()=>g_,anisotropyB:()=>v_,anisotropyT:()=>__,any:()=>uv,ao:()=>rA,append:()=>Og,arrayBuffer:()=>Wg,asin:()=>Dv,assign:()=>N_,atan:()=>kv,atan2:()=>Uv,atomicAdd:()=>yM,atomicAnd:()=>CM,atomicFunc:()=>_M,atomicMax:()=>xM,atomicMin:()=>SM,atomicOr:()=>wM,atomicStore:()=>vM,atomicSub:()=>bM,atomicXor:()=>TM,attenuationColor:()=>A_,attenuationDistance:()=>k_,attribute:()=>lb,backgroundBlurriness:()=>ZO,backgroundIntensity:()=>QO,batch:()=>ZS,billboarding:()=>Aj,bitAnd:()=>Q_,bitNot:()=>$_,bitOr:()=>ev,bitXor:()=>tv,bitangentGeometry:()=>Lx,bitangentLocal:()=>Rx,bitangentView:()=>zx,bitangentWorld:()=>Bx,bitcast:()=>Vv,bleach:()=>Hj,bloom:()=>_A,blur:()=>JT,bool:()=>Ag,buffer:()=>yx,bufferAttribute:()=>Hy,bumpMap:()=>$x,burn:()=>Lj,bvec2:()=>Ng,bvec3:()=>Ig,bvec4:()=>zg,bypass:()=>Zy,cache:()=>Yy,call:()=>F_,cameraFar:()=>bb,cameraLogDepth:()=>xb,cameraNear:()=>yb,cameraNormalMatrix:()=>Eb,cameraPosition:()=>Db,cameraProjectionMatrix:()=>Sb,cameraProjectionMatrixInverse:()=>Cb,cameraViewMatrix:()=>wb,cameraWorldMatrix:()=>Tb,cbrt:()=>iy,ceil:()=>xv,checker:()=>EM,cineonToneMapping:()=>Jj,clamp:()=>sy,clearcoat:()=>c_,clearcoatRoughness:()=>l_,code:()=>qE,color:()=>kg,colorSpaceToWorking:()=>My,colorToDirection:()=>dw,compute:()=>qy,cond:()=>gy,context:()=>vy,convert:()=>Kg,convertToTexture:()=>GO,cos:()=>Tv,createCanvasElement:()=>hn,cross:()=>Qv,cubeTexture:()=>_x,dFdx:()=>Fv,dFdy:()=>Iv,dashSize:()=>C_,defaultBuildStages:()=>Nh,defaultShaderStages:()=>Mh,defined:()=>bg,degrees:()=>pv,denoise:()=>sA,densityFog:()=>QA,depth:()=>YC,depthPass:()=>bk,difference:()=>Xv,diffuseColor:()=>i_,directionToColor:()=>uw,dispersion:()=>j_,distance:()=>Yv,div:()=>B_,dodge:()=>Rj,dof:()=>Hk,dot:()=>Zv,dotScreen:()=>Wk,drawIndex:()=>qS,dynamicBufferAttribute:()=>Uy,element:()=>Gg,emissive:()=>a_,equal:()=>H_,equals:()=>dv,equirectUV:()=>hw,exp:()=>mv,exp2:()=>hv,expression:()=>nb,faceDirection:()=>ex,faceForward:()=>dy,film:()=>Jk,float:()=>G,floor:()=>bv,fog:()=>JA,fract:()=>Cv,frameGroup:()=>Zg,frameId:()=>uO,frontFacing:()=>$b,fwidth:()=>Bv,fxaa:()=>lA,gain:()=>Sj,gapSize:()=>w_,gaussianBlur:()=>wk,getColorSpaceMethod:()=>Dy,getConstNodeType:()=>xg,getCurrentStack:()=>Dg,getDirection:()=>WT,getDistanceAttenuation:()=>pj,getGeometryRoughness:()=>zw,getRoughness:()=>Bw,getShIrradianceAt:()=>jN,getTextureIndex:()=>eO,global:()=>WA,glsl:()=>XE,glslFn:()=>$E,grayscale:()=>kk,greaterThan:()=>G_,greaterThanEqual:()=>q_,hash:()=>bj,highPrecisionModelNormalViewMatrix:()=>Wb,highPrecisionModelViewMatrix:()=>Ub,hue:()=>Mk,instance:()=>YS,instanceIndex:()=>US,instancedBufferAttribute:()=>Wy,instancedDynamicBufferAttribute:()=>Gy,int:()=>K,inverseSqrt:()=>yv,invocationLocalIndex:()=>KS,invocationSubgroupIndex:()=>GS,ior:()=>E_,iridescence:()=>f_,iridescenceIOR:()=>p_,iridescenceThickness:()=>m_,ivec2:()=>jg,ivec3:()=>Pg,ivec4:()=>Lg,js:()=>JE,label:()=>yy,length:()=>Mv,lengthSq:()=>ay,lessThan:()=>W_,lessThanEqual:()=>K_,lightPosition:()=>gj,lightTargetDirection:()=>yj,lightTargetPosition:()=>_j,lightViewPosition:()=>vj,lightingContext:()=>xC,lights:()=>_C,linearDepth:()=>XC,linearSRGBTosRGB:()=>Gj,linearToneMapping:()=>Kj,localId:()=>oM,log:()=>gv,log2:()=>_v,loop:()=>oC,luminance:()=>Pk,lut3D:()=>Xk,mat2:()=>Bg,mat3:()=>Vg,mat4:()=>Hg,matcapUV:()=>vE,materialAOMap:()=>LS,materialAlphaTest:()=>tS,materialAnisotropy:()=>bS,materialAnisotropyVector:()=>RS,materialAttenuationColor:()=>OS,materialAttenuationDistance:()=>DS,materialClearcoat:()=>mS,materialClearcoatNormal:()=>gS,materialClearcoatRoughness:()=>hS,materialColor:()=>nS,materialDispersion:()=>FS,materialEmissive:()=>iS,materialIOR:()=>ES,materialIridescence:()=>xS,materialIridescenceIOR:()=>SS,materialIridescenceThickness:()=>CS,materialLightMap:()=>IS,materialLineDashOffset:()=>NS,materialLineDashSize:()=>AS,materialLineGapSize:()=>jS,materialLineScale:()=>kS,materialLineWidth:()=>MS,materialMetalness:()=>fS,materialNormal:()=>pS,materialOpacity:()=>aS,materialPointWidth:()=>PS,materialReference:()=>kx,materialReflectivity:()=>uS,materialRefractionRatio:()=>dx,materialRotation:()=>_S,materialRoughness:()=>dS,materialSheen:()=>vS,materialSheenRoughness:()=>yS,materialShininess:()=>rS,materialSpecular:()=>oS,materialSpecularColor:()=>cS,materialSpecularIntensity:()=>sS,materialSpecularStrength:()=>lS,materialThickness:()=>TS,materialTransmission:()=>wS,max:()=>Gv,maxMipLevel:()=>mb,metalness:()=>s_,min:()=>Wv,mix:()=>oy,mixElement:()=>py,mod:()=>Kv,modInt:()=>V_,modelDirection:()=>Fb,modelNormalMatrix:()=>Bb,modelPosition:()=>Lb,modelScale:()=>Rb,modelViewMatrix:()=>Hb,modelViewPosition:()=>zb,modelViewProjection:()=>BS,modelWorldMatrix:()=>Ib,modelWorldMatrixInverse:()=>Vb,morphReference:()=>fC,motionBlur:()=>Vj,mrt:()=>nO,mul:()=>z_,mx_aastep:()=>uN,mx_cell_noise_float:()=>EN,mx_contrast:()=>yN,mx_fractal_noise_float:()=>DN,mx_fractal_noise_vec2:()=>ON,mx_fractal_noise_vec3:()=>kN,mx_fractal_noise_vec4:()=>AN,mx_hsvtorgb:()=>sN,mx_noise_float:()=>bN,mx_noise_vec3:()=>xN,mx_noise_vec4:()=>SN,mx_ramplr:()=>fN,mx_ramptb:()=>pN,mx_rgbtohsv:()=>cN,mx_safepower:()=>vN,mx_splitlr:()=>hN,mx_splittb:()=>gN,mx_srgb_texture_to_lin_rec709:()=>lN,mx_transform_uv:()=>_N,mx_worley_noise_float:()=>CN,mx_worley_noise_vec2:()=>wN,mx_worley_noise_vec3:()=>TN,negate:()=>Nv,neutralToneMapping:()=>tM,nodeArray:()=>wg,nodeImmutable:()=>H,nodeObject:()=>B,nodeObjects:()=>Cg,nodeProxy:()=>V,normalFlat:()=>rx,normalGeometry:()=>tx,normalLocal:()=>nx,normalMap:()=>Yx,normalView:()=>ix,normalWorld:()=>ax,normalize:()=>Sv,not:()=>X_,notEqual:()=>U_,numWorkgroups:()=>iM,objectDirection:()=>kb,objectGroup:()=>$g,objectPosition:()=>jb,objectScale:()=>Mb,objectViewPosition:()=>Nb,objectWorldMatrix:()=>Ab,oneMinus:()=>Pv,or:()=>Y_,orthographicDepthToViewZ:()=>GC,oscSawtooth:()=>hO,oscSine:()=>fO,oscSquare:()=>pO,oscTriangle:()=>mO,output:()=>S_,outputStruct:()=>$D,overlay:()=>Bj,overloadingFn:()=>aO,parabola:()=>xj,parallaxBarrierPass:()=>LA,parallaxDirection:()=>Wx,parallaxUV:()=>Gx,parameter:()=>GE,pass:()=>vk,passTexture:()=>yk,pcurve:()=>Cj,perspectiveDepthToViewZ:()=>qC,pixelationPass:()=>CA,pmremTexture:()=>nE,pointUV:()=>YO,pointWidth:()=>T_,positionGeometry:()=>Gb,positionLocal:()=>Kb,positionPrevious:()=>qb,positionView:()=>Xb,positionViewDirection:()=>Zb,positionWorld:()=>Jb,positionWorldDirection:()=>Yb,posterize:()=>uk,pow:()=>$v,pow2:()=>ey,pow3:()=>ty,pow4:()=>ny,property:()=>n_,radians:()=>fv,rand:()=>fy,range:()=>nj,rangeFog:()=>XA,reciprocal:()=>Rv,reference:()=>Ex,referenceBuffer:()=>Dx,reflect:()=>Jv,reflectVector:()=>mx,reflectView:()=>fx,reflector:()=>RO,refract:()=>ly,refractVector:()=>hx,refractView:()=>px,reinhardToneMapping:()=>qj,remainder:()=>iv,remap:()=>$y,remapClamp:()=>eb,renderGroup:()=>Qg,renderOutput:()=>ob,rendererReference:()=>Ly,rgbShift:()=>Kk,rotate:()=>wE,rotateUV:()=>Oj,roughness:()=>o_,round:()=>Lv,rtt:()=>WO,sRGBToLinearSRGB:()=>Wj,sampler:()=>vb,saturate:()=>cy,saturation:()=>Ak,screen:()=>zj,screenCoordinate:()=>OC,screenSize:()=>DC,screenUV:()=>EC,scriptable:()=>KA,scriptableValue:()=>VA,select:()=>hy,sepia:()=>Uj,setCurrentStack:()=>Eg,shaderStages:()=>Ph,sharedUniformGroup:()=>Xg,sheen:()=>u_,sheenRoughness:()=>d_,shiftLeft:()=>nv,shiftRight:()=>rv,shininess:()=>x_,sign:()=>jv,sin:()=>wv,sinc:()=>wj,skinning:()=>eC,skinningReference:()=>tC,smoothstep:()=>uy,smoothstepElement:()=>my,sobel:()=>Bk,specularColor:()=>y_,specularF90:()=>b_,spherizeUV:()=>kj,split:()=>qg,spritesheetUV:()=>_O,sqrt:()=>vv,ssaaPass:()=>DA,stack:()=>_D,step:()=>qv,stereoPass:()=>AA,storage:()=>nk,storageBarrier:()=>uM,storageObject:()=>rk,storageTexture:()=>ak,string:()=>Ug,sub:()=>R_,subgroupIndex:()=>WS,subgroupSize:()=>sM,tan:()=>Ev,tangentGeometry:()=>Ax,tangentLocal:()=>jx,tangentView:()=>Mx,tangentWorld:()=>Nx,temp:()=>xy,texture:()=>gb,texture3D:()=>ME,textureBarrier:()=>dM,textureBicubic:()=>pT,textureCubeUV:()=>GT,textureLoad:()=>_b,textureSize:()=>fb,textureStore:()=>ok,thickness:()=>O_,threshold:()=>Fk,timerDelta:()=>lO,timerGlobal:()=>cO,timerLocal:()=>sO,toOutputColorSpace:()=>ky,toWorkingColorSpace:()=>Ay,toneMapping:()=>zy,toneMappingExposure:()=>By,toonOutlinePass:()=>zA,transformDirection:()=>ry,transformNormal:()=>lx,transformNormalToView:()=>ux,transformedBentNormalView:()=>Kx,transformedBitangentView:()=>Vx,transformedBitangentWorld:()=>Hx,transformedClearcoatNormalView:()=>cx,transformedNormalView:()=>ox,transformedNormalWorld:()=>sx,transformedTangentView:()=>Px,transformedTangentWorld:()=>Fx,transition:()=>yA,transmission:()=>D_,transpose:()=>Hv,tri:()=>Tj,tri3:()=>Ej,triNoise3D:()=>Dj,triplanarTexture:()=>SO,triplanarTextures:()=>xO,trunc:()=>zv,tslFn:()=>Tg,uint:()=>q,uniform:()=>Z,uniformArray:()=>Sx,uniformGroup:()=>Yg,uniforms:()=>Cx,userData:()=>ck,uv:()=>ub,uvec2:()=>Mg,uvec3:()=>Fg,uvec4:()=>Rg,varying:()=>Cy,varyingProperty:()=>r_,vec2:()=>J,vec3:()=>Y,vec4:()=>X,vectorComponents:()=>Fh,velocity:()=>Ij,vertexColor:()=>qO,vertexIndex:()=>HS,vibrance:()=>jk,viewZToOrthographicDepth:()=>WC,viewZToPerspectiveDepth:()=>KC,viewport:()=>kC,viewportBottomLeft:()=>FC,viewportCoordinate:()=>jC,viewportDepthTexture:()=>HC,viewportLinearDepth:()=>ZC,viewportMipTexture:()=>zC,viewportResolution:()=>NC,viewportSafeUV:()=>jj,viewportSharedTexture:()=>pk,viewportSize:()=>AC,viewportTexture:()=>RC,viewportTopLeft:()=>PC,viewportUV:()=>MC,wgsl:()=>YE,wgslFn:()=>eD,workgroupArray:()=>mM,workgroupBarrier:()=>lM,workgroupId:()=>aM,workingToColorSpace:()=>jy,xor:()=>Z_}),n=`169.19`,r={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},a=`attached`,o=`detached`,s=1e3,c=1001,l=1002,u=1003,d=1004,f=1004,p=1005,m=1005,h=1006,g=1007,_=1007,v=1008,y=1008,b=1009,x=1010,S=1011,C=1012,w=1013,T=1014,E=1015,D=1016,ee=1017,O=1018,te=1020,ne=35902,re=35899,ie=1021,ae=1022,oe=1023,se=1024,ce=1025,le=1026,ue=1027,de=1028,fe=1029,pe=1030,me=1031,he=1032,ge=1033,_e=33776,ve=33777,ye=33778,be=33779,xe=35840,Se=35841,k=35842,Ce=35843,we=36196,Te=37492,Ee=37496,De=37808,Oe=37809,ke=37810,Ae=37811,je=37812,Me=37813,Ne=37814,Pe=37815,Fe=37816,Ie=37817,Le=37818,Re=37819,ze=37820,Be=37821,Ve=36492,He=36494,Ue=36495,We=36283,Ge=36284,Ke=36285,qe=36286,Je=2200,Ye=2201,Xe=2202,Ze=2300,Qe=2301,$e=2302,et=2400,tt=2401,nt=2402,rt=2500,it=2501,at=3200,ot=3201,st=3202,ct=3203,lt=`srgb`,ut=`srgb-linear`,dt=`display-p3`,ft=`display-p3-linear`,pt=`linear`,mt=`srgb`,ht=`rec709`,gt=7680,_t=7681,vt=7682,yt=7683,bt=34055,xt=34056,St=5386,Ct=35044,wt=35048,Tt=35040,Et=35045,Dt=35049,Ot=35041,kt=35046,At=35050,jt=35042,Mt=`300 es`,Nt=2e3,Pt=2001,Ft=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+It[e>>16&255]+It[e>>24&255]+`-`+It[t&255]+It[t>>8&255]+`-`+It[t>>16&15|64]+It[t>>24&255]+`-`+It[n&63|128]+It[n>>8&255]+`-`+It[n>>16&255]+It[n>>24&255]+It[r&255]+It[r>>8&255]+It[r>>16&255]+It[r>>24&255]).toLowerCase()}function Vt(e,t,n){return Math.max(t,Math.min(n,e))}function Ht(e,t){return(e%t+t)%t}function Ut(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function Wt(e,t,n){return e===t?0:(n-e)/(t-e)}function Gt(e,t,n){return(1-n)*e+n*t}function Kt(e,t,n,r){return Gt(e,t,1-Math.exp(-n*r))}function qt(e,t=1){return t-Math.abs(Ht(e,t*2)-t)}function Jt(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function Yt(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function Xt(e,t){return e+Math.floor(Math.random()*(t-e+1))}function Zt(e,t){return e+Math.random()*(t-e)}function Qt(e){return e*(.5-Math.random())}function $t(e){e!==void 0&&(Lt=e);let t=Lt+=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 en(e){return e*Rt}function tn(e){return e*zt}function nn(e){return(e&e-1)==0&&e!==0}function rn(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function an(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function on(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function sn(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 cn(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 ln={DEG2RAD:Rt,RAD2DEG:zt,generateUUID:Bt,clamp:Vt,euclideanModulo:Ht,mapLinear:Ut,inverseLerp:Wt,lerp:Gt,damp:Kt,pingpong:qt,smoothstep:Jt,smootherstep:Yt,randInt:Xt,randFloat:Zt,randFloatSpread:Qt,seededRandom:$t,degToRad:en,radToDeg:tn,isPowerOfTwo:nn,ceilPowerOfTwo:rn,floorPowerOfTwo:an,setQuaternionFromProperEuler:on,normalize:cn,denormalize:sn},A=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(Vt(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}},j=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(un.makeScale(e,t)),this}rotate(e){return this.premultiply(un.makeRotation(-e)),this}translate(e,t){return this.premultiply(un.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)}},un=new j;function dn(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var fn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function pn(e,t){return new fn[e](t)}function mn(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}function hn(){let e=mn(`canvas`);return e.style.display=`block`,e}var gn={};function _n(e){e in gn||(gn[e]=!0,console.warn(e))}function vn(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)})}function yn(e){let t=e.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function bn(e){let t=e.elements;t[11]===-1?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}var xn=new j().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Sn=new j().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Cn={[ut]:{transfer:pt,primaries:ht,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[lt]:{transfer:mt,primaries:ht,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[ft]:{transfer:pt,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Sn),fromReference:e=>e.applyMatrix3(xn)},[dt]:{transfer:mt,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Sn),fromReference:e=>e.applyMatrix3(xn).convertLinearToSRGB()}},wn=new Set([ut,ft]),Tn={enabled:!0,_workingColorSpace:ut,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!wn.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=Cn[t].toReference,i=Cn[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return Cn[e].primaries},getTransfer:function(e){return e===``?pt:Cn[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(Cn[t].luminanceCoefficients)}};function En(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Dn(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}var On,kn=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{On===void 0&&(On=mn(`canvas`)),On.width=e.width,On.height=e.height;let n=On.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=On}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=mn(`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;e0&&(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 s:e.x-=Math.floor(e.x);break;case c:e.x=e.x<0?0:1;break;case l: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 s:e.y-=Math.floor(e.y);break;case c:e.y=e.y<0?0:1;break;case l: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++}};Pn.DEFAULT_IMAGE=null,Pn.DEFAULT_MAPPING=300,Pn.DEFAULT_ANISOTROPY=4;var Fn=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(Vt(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},M=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(Wn.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Wn.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 Un.copy(this).projectOnVector(e),this.sub(Un)}reflect(e){return this.sub(Un.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(Vt(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}},Un=new M,Wn=new Hn,Gn=class{constructor(e=new M(1/0,1/0,1/0),t=new M(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,qn),qn.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(tr),nr.subVectors(this.max,tr),Yn.subVectors(e.a,tr),Xn.subVectors(e.b,tr),Zn.subVectors(e.c,tr),Qn.subVectors(Xn,Yn),$n.subVectors(Zn,Xn),er.subVectors(Yn,Zn);let t=[0,-Qn.z,Qn.y,0,-$n.z,$n.y,0,-er.z,er.y,Qn.z,0,-Qn.x,$n.z,0,-$n.x,er.z,0,-er.x,-Qn.y,Qn.x,0,-$n.y,$n.x,0,-er.y,er.x,0];return!ar(t,Yn,Xn,Zn,nr)||(t=[1,0,0,0,1,0,0,0,1],!ar(t,Yn,Xn,Zn,nr))?!1:(rr.crossVectors(Qn,$n),t=[rr.x,rr.y,rr.z],ar(t,Yn,Xn,Zn,nr))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,qn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(qn).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:(Kn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Kn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Kn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Kn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Kn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Kn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Kn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Kn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Kn),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)}},Kn=[new M,new M,new M,new M,new M,new M,new M,new M],qn=new M,Jn=new Gn,Yn=new M,Xn=new M,Zn=new M,Qn=new M,$n=new M,er=new M,tr=new M,nr=new M,rr=new M,ir=new M;function ar(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){ir.fromArray(e,a);let o=i.x*Math.abs(ir.x)+i.y*Math.abs(ir.y)+i.z*Math.abs(ir.z),s=t.dot(ir),c=n.dot(ir),l=r.dot(ir);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}var or=new Gn,sr=new M,cr=new M,lr=class{constructor(e=new M,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?or.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;sr.subVectors(e,this.center);let t=sr.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(sr,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):(cr.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(sr.copy(e.center).add(cr)),this.expandByPoint(sr.copy(e.center).sub(cr))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},ur=new M,dr=new M,fr=new M,pr=new M,mr=new M,hr=new M,gr=new M,_r=class{constructor(e=new M,t=new M(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,ur)),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=ur.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(ur.copy(this.origin).addScaledVector(this.direction,t),ur.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){dr.copy(e).add(t).multiplyScalar(.5),fr.copy(t).sub(e).normalize(),pr.copy(this.origin).sub(dr);let i=e.distanceTo(t)*.5,a=-this.direction.dot(fr),o=pr.dot(this.direction),s=-pr.dot(fr),c=pr.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(dr).addScaledVector(fr,d),f}intersectSphere(e,t){ur.subVectors(e.center,this.origin);let n=ur.dot(this.direction),r=ur.dot(ur)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,ur)!==null}intersectTriangle(e,t,n,r,i){mr.subVectors(t,e),hr.subVectors(n,e),gr.crossVectors(mr,hr);let a=this.direction.dot(gr),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;pr.subVectors(this.origin,e);let s=o*this.direction.dot(hr.crossVectors(pr,hr));if(s<0)return null;let c=o*this.direction.dot(mr.cross(pr));if(c<0||s+c>a)return null;let l=-o*pr.dot(gr);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)}},N=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/vr.setFromMatrixColumn(e,0).length(),i=1/vr.setFromMatrixColumn(e,1).length(),a=1/vr.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(br,e,xr)}lookAt(e,t,n){let r=this.elements;return wr.subVectors(e,t),wr.lengthSq()===0&&(wr.z=1),wr.normalize(),Sr.crossVectors(n,wr),Sr.lengthSq()===0&&(Math.abs(n.z)===1?wr.x+=1e-4:wr.z+=1e-4,wr.normalize(),Sr.crossVectors(n,wr)),Sr.normalize(),Cr.crossVectors(wr,Sr),r[0]=Sr.x,r[4]=Cr.x,r[8]=wr.x,r[1]=Sr.y,r[5]=Cr.y,r[9]=wr.y,r[2]=Sr.z,r[6]=Cr.z,r[10]=wr.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],ee=r[13],O=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*O+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*ee+s*re+c*se,i[1]=l*x+u*T+d*O+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*ee+d*re+f*se,i[2]=p*x+m*T+h*O+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*ee+h*re+g*se,i[3]=_*x+v*T+y*O+b*ie,i[7]=_*S+v*E+y*te+b*ae,i[11]=_*C+v*D+y*ne+b*oe,i[15]=_*w+v*ee+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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=vr.set(r[0],r[1],r[2]).length(),a=vr.set(r[4],r[5],r[6]).length(),o=vr.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],yr.copy(this);let s=1/i,c=1/a,l=1/o;return yr.elements[0]*=s,yr.elements[1]*=s,yr.elements[2]*=s,yr.elements[4]*=c,yr.elements[5]*=c,yr.elements[6]*=c,yr.elements[8]*=l,yr.elements[9]*=l,yr.elements[10]*=l,t.setFromRotationMatrix(yr),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=Nt){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=Nt){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}},vr=new M,yr=new N,br=new M(0,0,0),xr=new M(1,1,1),Sr=new M,Cr=new M,wr=new M,Tr=new N,Er=new Hn,Dr=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(Vt(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(-Vt(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(Vt(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(-Vt(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(Vt(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(-Vt(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Tr.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Tr,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Er.setFromEuler(this),this.setFromQuaternion(Er,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}};Dr.DEFAULT_ORDER=`XYZ`;var Or=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){Gr.subVectors(r,t),Kr.subVectors(n,t),qr.subVectors(e,t);let a=Gr.dot(Gr),o=Gr.dot(Kr),s=Gr.dot(qr),c=Kr.dot(Kr),l=Kr.dot(qr),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,Jr)===null?!1:Jr.x>=0&&Jr.y>=0&&Jr.x+Jr.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,Jr)===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,Jr.x),s.addScaledVector(a,Jr.y),s.addScaledVector(o,Jr.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return ti.setScalar(0),ni.setScalar(0),ri.setScalar(0),ti.fromBufferAttribute(e,t),ni.fromBufferAttribute(e,n),ri.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(ti,i.x),a.addScaledVector(ni,i.y),a.addScaledVector(ri,i.z),a}static isFrontFacing(e,t,n,r){return Gr.subVectors(n,t),Kr.subVectors(e,t),Gr.cross(Kr).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 Gr.subVectors(this.c,this.b),Kr.subVectors(this.a,this.b),Gr.cross(Kr).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;Yr.subVectors(r,n),Xr.subVectors(i,n),Qr.subVectors(e,n);let s=Yr.dot(Qr),c=Xr.dot(Qr);if(s<=0&&c<=0)return t.copy(n);$r.subVectors(e,r);let l=Yr.dot($r),u=Xr.dot($r);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(Yr,a);ei.subVectors(e,i);let f=Yr.dot(ei),p=Xr.dot(ei);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(Xr,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return Zr.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(Zr,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(Yr,a).addScaledVector(Xr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},ai={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},oi={h:0,s:0,l:0},si={h:0,s:0,l:0};function ci(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 P=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=lt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Tn.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Tn.workingColorSpace){return this.r=e,this.g=t,this.b=n,Tn.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Tn.workingColorSpace){if(e=Ht(e,1),t=Vt(t,0,1),n=Vt(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=ci(i,r,e+1/3),this.g=ci(i,r,e),this.b=ci(i,r,e-1/3)}return Tn.toWorkingColorSpace(this,r),this}setStyle(e,t=lt){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=lt){let n=ai[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=En(e.r),this.g=En(e.g),this.b=En(e.b),this}copyLinearToSRGB(e){return this.r=Dn(e.r),this.g=Dn(e.g),this.b=Dn(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=lt){return Tn.fromWorkingColorSpace(li.copy(this),e),Math.round(Vt(li.r*255,0,255))*65536+Math.round(Vt(li.g*255,0,255))*256+Math.round(Vt(li.b*255,0,255))}getHexString(e=lt){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Tn.workingColorSpace){Tn.fromWorkingColorSpace(li.copy(this),t);let n=li.r,r=li.g,i=li.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+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){console.warn(`THREE.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.6,type:`Material`,generator:`Material.toJSON`}};n.uuid=this.uuid,n.type=this.type,this.name!==``&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==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.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.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++}},fi=class extends di{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new P(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 Dr,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}},pi=mi();function mi(){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 hi(e){Math.abs(e)>65504&&console.warn(`THREE.DataUtils.toHalfFloat(): Value out of range.`),e=Vt(e,-65504,65504),pi.floatView[0]=e;let t=pi.uint32View[0],n=t>>23&511;return pi.baseTable[n]+((t&8388607)>>pi.shiftTable[n])}function gi(e){let t=e>>10;return pi.uint32View[0]=pi.mantissaTable[pi.offsetTable[t]+(e&1023)]+pi.exponentTable[t],pi.floatView[0]}var _i={toHalfFloat:hi,fromHalfFloat:gi},vi=new M,yi=new A,bi=class{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=Ct,this.updateRanges=[],this.gpuType=E,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;r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2))&&(Li.copy(i).invert(),Ri.copy(e.ray).applyMatrix4(Li),!(n.boundingBox!==null&&Ri.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Ri)))}_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;in.far?null:{distance:l,point:qi.clone(),object:e}}function Xi(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,Vi),e.getVertexPosition(c,Hi),e.getVertexPosition(l,Ui);let u=Yi(e,t,n,r,Vi,Hi,Ui,Ki);if(u){let e=new M;ii.getBarycoord(Ki,Vi,Hi,Ui,e),i&&(u.uv=ii.getInterpolatedAttribute(i,s,c,l,e,new A)),a&&(u.uv1=ii.getInterpolatedAttribute(a,s,c,l,e,new A)),o&&(u.normal=ii.getInterpolatedAttribute(o,s,c,l,e,new M),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new M,materialIndex:0};ii.getNormal(Vi,Hi,Ui,t.normal),u.face=t,u.barycoord=e}return u}var Zi=class e extends Ii{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 F(c,3)),this.setAttribute(`normal`,new F(l,3)),this.setAttribute(`uv`,new F(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 M;for(let a=0;a0?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;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let e in this.extensions)this.extensions[e]===!0&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}},oa=new M,sa=new Hn,ca=new M,la=class extends Wr{constructor(){super(),this.isCamera=!0,this.type=`Camera`,this.matrixWorldInverse=new N,this.projectionMatrix=new N,this.projectionMatrixInverse=new N,this.coordinateSystem=Nt}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorld.decompose(oa,sa,ca),ca.x===1&&ca.y===1&&ca.z===1?this.matrixWorldInverse.copy(this.matrixWorld).invert():this.matrixWorldInverse.compose(oa,sa,ca.set(1,1,1)).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorld.decompose(oa,sa,ca),ca.x===1&&ca.y===1&&ca.z===1?this.matrixWorldInverse.copy(this.matrixWorld).invert():this.matrixWorldInverse.compose(oa,sa,ca.set(1,1,1)).invert()}clone(){return new this.constructor().copy(this)}},ua=new M,da=new A,fa=new A,pa=class extends la{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type=`PerspectiveCamera`,this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=zt*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(Rt*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return zt*2*Math.atan(Math.tan(Rt*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){ua.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(ua.x,ua.y).multiplyScalar(-e/ua.z),ua.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(ua.x,ua.y).multiplyScalar(-e/ua.z)}getViewSize(e,t){return this.getViewBounds(e,da,fa),t.subVectors(fa,da)}setViewOffset(e,t,n,r,i,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(Rt*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,i=-.5*r,a=this.view;if(this.view!==null&&this.view.enabled){let e=a.fullWidth,o=a.fullHeight;i+=a.offsetX*r/e,t-=a.offsetY*n/o,r*=a.width/e,n*=a.height/o}let o=this.filmOffset;o!==0&&(i+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(i,i+r,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},ma=-90,ha=1,ga=class extends Wr{constructor(e,t,n){super(),this.type=`CubeCamera`,this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new pa(ma,ha,e,t);r.layers=this.layers,this.add(r);let i=new pa(ma,ha,e,t);i.layers=this.layers,this.add(i);let a=new pa(ma,ha,e,t);a.layers=this.layers,this.add(a);let o=new pa(ma,ha,e,t);o.layers=this.layers,this.add(o);let s=new pa(ma,ha,e,t);s.layers=this.layers,this.add(s);let c=new pa(ma,ha,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,r,i,a,o,s]=t;for(let e of t)this.remove(e);if(e===2e3)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),i.up.set(0,0,-1),i.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),s.up.set(0,1,0),s.lookAt(0,0,-1);else if(e===2001)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),i.up.set(0,0,1),i.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),s.up.set(0,-1,0),s.lookAt(0,0,-1);else throw Error(`THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: `+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[i,a,o,s,c,l]=this.children,u=e.getRenderTarget(),d=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,i),e.setRenderTarget(n,1,r),e.render(t,a),e.setRenderTarget(n,2,r),e.render(t,o),e.setRenderTarget(n,3,r),e.render(t,s),e.setRenderTarget(n,4,r),e.render(t,c),n.texture.generateMipmaps=m,e.setRenderTarget(n,5,r),e.render(t,l),e.setRenderTarget(u,d,f),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}},_a=class extends Pn{constructor(e,t,n,r,i,a,o,s,c,l){e=e===void 0?[]:e,t=t===void 0?301:t,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}},va=class extends Ln{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let n={width:e,height:e,depth:1};this.texture=new _a([n,n,n,n,n,n],t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps===void 0?!1:t.generateMipmaps,this.texture.minFilter=t.minFilter===void 0?h:t.minFilter}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},r=new Zi(5,5,5),i=new aa({name:`CubemapFromEquirect`,uniforms:Qi(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});i.uniforms.tEquirect.value=t;let a=new Ji(r,i),o=t.minFilter;return t.minFilter===1008&&(t.minFilter=h),new ga(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,r){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}},ya=new M,ba=new M,xa=new j,Sa=class{constructor(e=new M(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=ya.subVectors(n,t).cross(ba.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){let n=e.delta(ya),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;let i=-(e.start.dot(this.normal)+this.constant)/r;return i<0||i>1?null:t.copy(e.start).addScaledVector(n,i)}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||xa.getNormalMatrix(e),r=this.coplanarPoint(ya).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)}},Ca=new lr,wa=new M,Ta=class{constructor(e=new Sa,t=new Sa,n=new Sa,r=new Sa,i=new Sa,a=new Sa){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=Nt){let n=this.planes,r=e.elements,i=r[0],a=r[1],o=r[2],s=r[3],c=r[4],l=r[5],u=r[6],d=r[7],f=r[8],p=r[9],m=r[10],h=r[11],g=r[12],_=r[13],v=r[14],y=r[15];if(n[0].setComponents(s-i,d-c,h-f,y-g).normalize(),n[1].setComponents(s+i,d+c,h+f,y+g).normalize(),n[2].setComponents(s+a,d+l,h+p,y+_).normalize(),n[3].setComponents(s-a,d-l,h-p,y-_).normalize(),n[4].setComponents(s-o,d-u,h-m,y-v).normalize(),t===2e3)n[5].setComponents(s+o,d+u,h+m,y+v).normalize();else if(t===2001)n[5].setComponents(o,u,m,v).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(),Ca.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Ca.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Ca)}intersectsSprite(e){return Ca.center.set(0,0,0),Ca.radius=.7071067811865476,Ca.applyMatrix4(e.matrixWorld),this.intersectsSphere(Ca)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,wa.y=r.normal.y>0?e.max.y:e.min.y,wa.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(wa)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Ea(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function Da(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},I={common:{diffuse:{value:new P(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new j},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new j}},envmap:{envMap:{value:null},envMapRotation:{value:new j},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new j}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new j}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new j},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new j},normalScale:{value:new A(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new j},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new j}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new j}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new j}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new P(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new P(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0},uvTransform:{value:new j}},sprite:{diffuse:{value:new P(16777215)},opacity:{value:1},center:{value:new A(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new j},alphaMap:{value:null},alphaMapTransform:{value:new j},alphaTest:{value:0}}},Aa={basic:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.fog]),vertexShader:ka.meshbasic_vert,fragmentShader:ka.meshbasic_frag},lambert:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.fog,I.lights,{emissive:{value:new P(0)}}]),vertexShader:ka.meshlambert_vert,fragmentShader:ka.meshlambert_frag},phong:{uniforms:$i([I.common,I.specularmap,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.fog,I.lights,{emissive:{value:new P(0)},specular:{value:new P(1118481)},shininess:{value:30}}]),vertexShader:ka.meshphong_vert,fragmentShader:ka.meshphong_frag},standard:{uniforms:$i([I.common,I.envmap,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.roughnessmap,I.metalnessmap,I.fog,I.lights,{emissive:{value:new P(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ka.meshphysical_vert,fragmentShader:ka.meshphysical_frag},toon:{uniforms:$i([I.common,I.aomap,I.lightmap,I.emissivemap,I.bumpmap,I.normalmap,I.displacementmap,I.gradientmap,I.fog,I.lights,{emissive:{value:new P(0)}}]),vertexShader:ka.meshtoon_vert,fragmentShader:ka.meshtoon_frag},matcap:{uniforms:$i([I.common,I.bumpmap,I.normalmap,I.displacementmap,I.fog,{matcap:{value:null}}]),vertexShader:ka.meshmatcap_vert,fragmentShader:ka.meshmatcap_frag},points:{uniforms:$i([I.points,I.fog]),vertexShader:ka.points_vert,fragmentShader:ka.points_frag},dashed:{uniforms:$i([I.common,I.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ka.linedashed_vert,fragmentShader:ka.linedashed_frag},depth:{uniforms:$i([I.common,I.displacementmap]),vertexShader:ka.depth_vert,fragmentShader:ka.depth_frag},normal:{uniforms:$i([I.common,I.bumpmap,I.normalmap,I.displacementmap,{opacity:{value:1}}]),vertexShader:ka.meshnormal_vert,fragmentShader:ka.meshnormal_frag},sprite:{uniforms:$i([I.sprite,I.fog]),vertexShader:ka.sprite_vert,fragmentShader:ka.sprite_frag},background:{uniforms:{uvTransform:{value:new j},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ka.background_vert,fragmentShader:ka.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new j}},vertexShader:ka.backgroundCube_vert,fragmentShader:ka.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ka.cube_vert,fragmentShader:ka.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ka.equirect_vert,fragmentShader:ka.equirect_frag},distanceRGBA:{uniforms:$i([I.common,I.displacementmap,{referencePosition:{value:new M},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ka.distanceRGBA_vert,fragmentShader:ka.distanceRGBA_frag},shadow:{uniforms:$i([I.lights,I.fog,{color:{value:new P(0)},opacity:{value:1}}]),vertexShader:ka.shadow_vert,fragmentShader:ka.shadow_frag}};Aa.physical={uniforms:$i([Aa.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new j},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new j},clearcoatNormalScale:{value:new A(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new j},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new j},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new j},sheen:{value:0},sheenColor:{value:new P(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new j},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new j},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new j},transmissionSamplerSize:{value:new A},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new j},attenuationDistance:{value:0},attenuationColor:{value:new P(0)},specularColor:{value:new P(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new j},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new j},anisotropyVector:{value:new A},anisotropyMap:{value:null},anisotropyMapTransform:{value:new j}}]),vertexShader:ka.meshphysical_vert,fragmentShader:ka.meshphysical_frag};var ja={r:0,b:0,g:0},Ma=new Dr,Na=new N;function Pa(e,t,n,r,i,a,o){let s=new P(0),c=a===!0?0:1,l,u,d=null,f=0,p=null;function m(e){let r=e.isScene===!0?e.background:null;return r&&r.isTexture&&(r=(e.backgroundBlurriness>0?n:t).get(r)),r}function h(t){let n=!1,i=m(t);i===null?_(s,c):i&&i.isColor&&(_(i,1),n=!0);let a=e.xr.getEnvironmentBlendMode();a===`additive`?r.buffers.color.setClear(0,0,0,1,o):a===`alpha-blend`&&r.buffers.color.setClear(0,0,0,0,o),(e.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))}function g(t,n){let r=m(n);r&&(r.isCubeTexture||r.mapping===306)?(u===void 0&&(u=new Ji(new Zi(1,1,1),new aa({name:`BackgroundCubeMaterial`,uniforms:Qi(Aa.backgroundCube.uniforms),vertexShader:Aa.backgroundCube.vertexShader,fragmentShader:Aa.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute(`normal`),u.geometry.deleteAttribute(`uv`),u.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,`envMap`,{get:function(){return this.uniforms.envMap.value}}),i.update(u)),Ma.copy(n.backgroundRotation),Ma.x*=-1,Ma.y*=-1,Ma.z*=-1,r.isCubeTexture&&r.isRenderTargetTexture===!1&&(Ma.y*=-1,Ma.z*=-1),u.material.uniforms.envMap.value=r,u.material.uniforms.flipEnvMap.value=r.isCubeTexture&&r.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(Na.makeRotationFromEuler(Ma)),u.material.toneMapped=Tn.getTransfer(r.colorSpace)!==mt,(d!==r||f!==r.version||p!==e.toneMapping)&&(u.material.needsUpdate=!0,d=r,f=r.version,p=e.toneMapping),u.layers.enableAll(),t.unshift(u,u.geometry,u.material,0,0,null)):r&&r.isTexture&&(l===void 0&&(l=new Ji(new Oa(2,2),new aa({name:`BackgroundMaterial`,uniforms:Qi(Aa.background.uniforms),vertexShader:Aa.background.vertexShader,fragmentShader:Aa.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute(`normal`),Object.defineProperty(l.material,`map`,{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=r,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.toneMapped=Tn.getTransfer(r.colorSpace)!==mt,r.matrixAutoUpdate===!0&&r.updateMatrix(),l.material.uniforms.uvTransform.value.copy(r.matrix),(d!==r||f!==r.version||p!==e.toneMapping)&&(l.material.needsUpdate=!0,d=r,f=r.version,p=e.toneMapping),l.layers.enableAll(),t.unshift(l,l.geometry,l.material,0,0,null))}function _(t,n){t.getRGB(ja,ta(e)),r.buffers.color.setClear(ja.r,ja.g,ja.b,n,o)}return{getClearColor:function(){return s},setClearColor:function(e,t=1){s.set(e),c=t,_(s,c)},getClearAlpha:function(){return c},setClearAlpha:function(e){c=e,_(s,c)},render:h,addToRenderList:g}}function Fa(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),r={},i=f(null),a=i,o=!1;function s(n,r,i,s,c){let u=!1,f=d(s,i,r);a!==f&&(a=f,l(a.object)),u=p(n,s,i,c),u&&m(n,s,i,c),c!==null&&t.update(c,e.ELEMENT_ARRAY_BUFFER),(u||o)&&(o=!1,b(n,r,i,s),c!==null&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(c).buffer))}function c(){return e.createVertexArray()}function l(t){return e.bindVertexArray(t)}function u(t){return e.deleteVertexArray(t)}function d(e,t,n){let i=n.wireframe===!0,a=r[e.id];a===void 0&&(a={},r[e.id]=a);let o=a[t.id];o===void 0&&(o={},a[t.id]=o);let s=o[i];return s===void 0&&(s=f(c()),o[i]=s),s}function f(e){let t=[],r=[],i=[];for(let e=0;e=0){let n=i[t],r=o[t];if(r===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(r=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(r=e.instanceColor)),n===void 0||n.attribute!==r||r&&n.data!==r.data)return!0;s++}return a.attributesNum!==s||a.index!==r}function m(e,t,n,r){let i={},o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=o[t];n===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(n=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(n=e.instanceColor));let r={};r.attribute=n,n&&n.data&&(r.data=n.data),i[t]=r,s++}a.attributes=i,a.attributesNum=s,a.index=r}function h(){let e=a.newAttributes;for(let t=0,n=e.length;t=0){let s=o[r];if(s===void 0&&(r===`instanceMatrix`&&n.instanceMatrix&&(s=n.instanceMatrix),r===`instanceColor`&&n.instanceColor&&(s=n.instanceColor)),s!==void 0){let r=s.normalized,o=s.itemSize,c=t.get(s);if(c===void 0)continue;let l=c.buffer,u=c.type,d=c.bytesPerElement,f=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===1013;if(s.isInterleavedBufferAttribute){let t=s.data,c=t.stride,p=s.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return`highp`;t=`mediump`}return t===`mediump`&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let l=n.precision===void 0?`highp`:n.precision,u=c(l);u!==l&&(console.warn(`THREE.WebGLRenderer:`,l,`not supported, using`,u,`instead.`),l=u);let d=n.logarithmicDepthBuffer===!0,f=n.reverseDepthBuffer===!0&&t.has(`EXT_clip_control`);if(f===!0){let e=t.get(`EXT_clip_control`);e.clipControlEXT(e.LOWER_LEFT_EXT,e.ZERO_TO_ONE_EXT)}let p=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),m=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_TEXTURE_SIZE),g=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),_=e.getParameter(e.MAX_VERTEX_ATTRIBS),v=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),y=e.getParameter(e.MAX_VARYING_VECTORS),b=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),x=m>0,S=e.getParameter(e.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:s,precision:l,logarithmicDepthBuffer:d,reverseDepthBuffer:f,maxTextures:p,maxVertexTextures:m,maxTextureSize:h,maxCubemapSize:g,maxAttributes:_,maxVertexUniforms:v,maxVaryings:y,maxFragmentUniforms:b,vertexTextures:x,maxSamples:S}}function Ra(e){let t=this,n=null,r=0,i=!1,a=!1,o=new Sa,s=new j,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let n=e.length!==0||t||r!==0||i;return i=t,r=e.length,n},this.beginShadows=function(){a=!0,u(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(e,t){n=u(e,t,0)},this.setState=function(t,o,s){let d=t.clippingPlanes,f=t.clipIntersection,p=t.clipShadows,m=e.get(t);if(!i||d===null||d.length===0||a&&!p)a?u(null):l();else{let e=a?0:r,t=e*4,i=m.clippingState||null;c.value=i,i=u(d,o,t,s);for(let e=0;e!==t;++e)i[e]=n[e];m.clippingState=i,this.numIntersection=f?this.numPlanes:0,this.numPlanes+=e}};function l(){c.value!==n&&(c.value=n,c.needsUpdate=r>0),t.numPlanes=r,t.numIntersection=0}function u(e,n,r,i){let a=e===null?0:e.length,l=null;if(a!==0){if(l=c.value,i!==!0||l===null){let t=r+a*4,i=n.matrixWorldInverse;s.getNormalMatrix(i),(l===null||l.length0){let o=new va(a.height);return o.fromEquirectangularTexture(e,r),t.set(r,o),r.addEventListener(`dispose`,i),n(o.texture,r.mapping)}else return null}}return r}function i(e){let n=e.target;n.removeEventListener(`dispose`,i);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function a(){t=new WeakMap}return{get:r,dispose:a}}var Ba=class extends la{constructor(e=-1,t=1,n=1,r=-1,i=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type=`OrthographicCamera`,this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=i,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,i,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2,i=n-e,a=n+e,o=r+t,s=r-t;if(this.view!==null&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;i+=e*this.view.offsetX,a=i+e*this.view.width,o-=t*this.view.offsetY,s=o-t*this.view.height}this.projectionMatrix.makeOrthographic(i,a,o,s,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}},Va=4,Ha=[.125,.215,.35,.446,.526,.582],Ua=20,Wa=new Ba,Ga=new P,Ka=null,qa=0,Ja=0,Ya=!1,Xa=(1+Math.sqrt(5))/2,Za=1/Xa,Qa=[new M(-Xa,Za,0),new M(Xa,Za,0),new M(-Za,0,Xa),new M(Za,0,Xa),new M(0,Xa,-Za),new M(0,Xa,Za),new M(-1,1,-1),new M(1,1,-1),new M(-1,1,1),new M(1,1,1)],$a=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100){Ka=this._renderer.getRenderTarget(),qa=this._renderer.getActiveCubeFace(),Ja=this._renderer.getActiveMipmapLevel(),Ya=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);let i=this._allocateTargets();return i.depthBuffer=!0,this._sceneToCubeUV(e,n,r,i),t>0&&this._blur(i,0,0,t),this._applyPMREM(i),this._cleanup(i),i}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=ao(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=io(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?c:0,c,c),s.setRenderTarget(r),f&&s.render(d,i),s.render(e,i)}d.geometry.dispose(),d.material.dispose(),s.toneMapping=l,s.autoClear=c,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=ao()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=io());let i=r?this._cubemapMaterial:this._equirectMaterial,a=new Ji(this._lodPlanes[0],i),o=i.uniforms;o.envMap.value=e;let s=this._cubeSize;no(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,Wa)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodPlanes.length;for(let t=1;tUa&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${Ua}`);let h=[],g=0;for(let e=0;e_-Va?r-_+Va:0),4*(this._cubeSize-v),3*v,2*v),s.setRenderTarget(t),s.render(l,Wa)}};function eo(e){let t=[],n=[],r=[],i=e,a=e-Va+1+Ha.length;for(let o=0;oe-Va?s=Ha[o-e+Va-1]:o===0&&(s=0),r.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];f.set(r,18*e),p.set(d,12*e);let i=[e,e,e,e,e,e];m.set(i,6*e)}let h=new Ii;h.setAttribute(`position`,new bi(f,3)),h.setAttribute(`uv`,new bi(p,2)),h.setAttribute(`faceIndex`,new bi(m,1)),t.push(h),i>Va&&i--}return{lodPlanes:t,sizeLods:n,sigmas:r}}function to(e,t,n){let r=new Ln(e,t,n);return r.texture.mapping=306,r.texture.name=`PMREM.cubeUv`,r.scissorTest=!0,r}function no(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function ro(e,t,n){let r=new Float32Array(Ua),i=new M(0,1,0);return new aa({name:`SphericalGaussianBlur`,defines:{n:Ua,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:r},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function io(){return new aa({name:`EquirectangularToCubeUV`,uniforms:{envMap:{value:null}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function ao(){return new aa({name:`CubemapToCubeUV`,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:oo(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function oo(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function so(e){let t=new WeakMap,n=null;function r(r){if(r&&r.isTexture){let o=r.mapping,s=o===303||o===304,c=o===301||o===302;if(s||c){let o=t.get(r),l=o===void 0?0:o.texture.pmremVersion;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return n===null&&(n=new $a(e)),o=s?n.fromEquirectangular(r,o):n.fromCubemap(r,o),o.texture.pmremVersion=r.pmremVersion,t.set(r,o),o.texture;if(o!==void 0)return o.texture;{let l=r.image;return s&&l&&l.height>0||c&&l&&i(l)?(n=new $a(e),o=s?n.fromEquirectangular(r):n.fromCubemap(r),o.texture.pmremVersion=r.pmremVersion,t.set(r,o),r.addEventListener(`dispose`,a),o.texture):null}}}return r}function i(e){let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function a(e){let n=e.target;n.removeEventListener(`dispose`,a);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function o(){t=new WeakMap,n!==null&&(n.dispose(),n=null)}return{get:r,dispose:o}}function co(e){let t={};function n(n){if(t[n]!==void 0)return t[n];let r;switch(n){case`WEBGL_depth_texture`:r=e.getExtension(`WEBGL_depth_texture`)||e.getExtension(`MOZ_WEBGL_depth_texture`)||e.getExtension(`WEBKIT_WEBGL_depth_texture`);break;case`EXT_texture_filter_anisotropic`:r=e.getExtension(`EXT_texture_filter_anisotropic`)||e.getExtension(`MOZ_EXT_texture_filter_anisotropic`)||e.getExtension(`WEBKIT_EXT_texture_filter_anisotropic`);break;case`WEBGL_compressed_texture_s3tc`:r=e.getExtension(`WEBGL_compressed_texture_s3tc`)||e.getExtension(`MOZ_WEBGL_compressed_texture_s3tc`)||e.getExtension(`WEBKIT_WEBGL_compressed_texture_s3tc`);break;case`WEBGL_compressed_texture_pvrtc`:r=e.getExtension(`WEBGL_compressed_texture_pvrtc`)||e.getExtension(`WEBKIT_WEBGL_compressed_texture_pvrtc`);break;default:r=e.getExtension(n)}return t[n]=r,r}return{has:function(e){return n(e)!==null},init:function(){n(`EXT_color_buffer_float`),n(`WEBGL_clip_cull_distance`),n(`OES_texture_float_linear`),n(`EXT_color_buffer_half_float`),n(`WEBGL_multisampled_render_to_texture`),n(`WEBGL_render_shared_exponent`)},get:function(e){let t=n(e);return t===null&&_n(`THREE.WebGLRenderer: `+e+` extension not supported.`),t}}}function lo(e,t,n,r){let i={},a=new WeakMap;function o(e){let s=e.target;s.index!==null&&t.remove(s.index);for(let e in s.attributes)t.remove(s.attributes[e]);for(let e in s.morphAttributes){let n=s.morphAttributes[e];for(let e=0,r=n.length;et.maxTextureSize&&(m=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);let h=new Float32Array(p*m*4*u),g=new Rn(h,p,m,u);g.type=E,g.needsUpdate=!0;let _=f*4;for(let t=0;t0)return e;let i=t*n,a=xo[i];if(a===void 0&&(a=new Float32Array(i),xo[i]=a),t!==0){r.toArray(a,0);for(let r=1,i=0;r!==t;++r)i+=n,e[r].toArray(a,i)}return a}function Do(e,t){if(e.length!==t.length)return!1;for(let n=0,r=e.length;n`:` `} ${i}: ${n[e]}`)}return r.join(` +`)}function Ds(e){let t=Tn.getPrimaries(Tn.workingColorSpace),n=Tn.getPrimaries(e),r;switch(t===n?r=``:t===`p3`&&n===`rec709`?r=`LinearDisplayP3ToLinearSRGB`:t===`rec709`&&n===`p3`&&(r=`LinearSRGBToLinearDisplayP3`),e){case ut:case ft:return[r,`LinearTransferOETF`];case lt:case dt:return[r,`sRGBTransferOETF`];default:return console.warn(`THREE.WebGLProgram: Unsupported color space:`,e),[r,`LinearTransferOETF`]}}function Os(e,t,n){let r=e.getShaderParameter(t,e.COMPILE_STATUS),i=e.getShaderInfoLog(t).trim();if(r&&i===``)return``;let a=/ERROR: 0:(\d+)/.exec(i);if(a){let r=parseInt(a[1]);return n.toUpperCase()+` + +`+i+` + +`+Es(e.getShaderSource(t),r)}else return i}function ks(e,t){let n=Ds(t);return`vec4 ${e}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function As(e,t){let n;switch(t){case 1:n=`Linear`;break;case 2:n=`Reinhard`;break;case 3:n=`Cineon`;break;case 4:n=`ACESFilmic`;break;case 6:n=`AgX`;break;case 7:n=`Neutral`;break;case 5:n=`Custom`;break;default:console.warn(`THREE.WebGLProgram: Unsupported toneMapping:`,t),n=`Linear`}return`vec3 `+e+`( vec3 color ) { return `+n+`ToneMapping( color ); }`}var js=new M;function Ms(){return Tn.getLuminanceCoefficients(js),[`float luminance( const in vec3 rgb ) {`,` const vec3 weights = vec3( ${js.x.toFixed(4)}, ${js.y.toFixed(4)}, ${js.z.toFixed(4)} );`,` return dot( weights, rgb );`,`}`].join(` +`)}function Ns(e){return[e.extensionClipCullDistance?`#extension GL_ANGLE_clip_cull_distance : require`:``,e.extensionMultiDraw?`#extension GL_ANGLE_multi_draw : require`:``].filter(Is).join(` +`)}function Ps(e){let t=[];for(let n in e){let r=e[n];r!==!1&&t.push(`#define `+n+` `+r)}return t.join(` +`)}function Fs(e,t){let n={},r=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function Bs(e){return e.replace(zs,Hs)}var Vs=new Map;function Hs(e,t){let n=ka[t];if(n===void 0){let e=Vs.get(t);if(e!==void 0)n=ka[e],console.warn(`THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.`,t,e);else throw Error(`Can not resolve #include <`+t+`>`)}return Bs(n)}var Us=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ws(e){return e.replace(Us,Gs)}function Gs(e,t,n,r){let i=``;for(let e=parseInt(t);e0&&(g+=` +`),_=[`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m].filter(Is).join(` +`),_.length>0&&(_+=` +`)):(g=[Ks(n),`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m,n.extensionClipCullDistance?`#define USE_CLIP_DISTANCE`:``,n.batching?`#define USE_BATCHING`:``,n.batchingColor?`#define USE_BATCHING_COLOR`:``,n.instancing?`#define USE_INSTANCING`:``,n.instancingColor?`#define USE_INSTANCING_COLOR`:``,n.instancingMorph?`#define USE_INSTANCING_MORPH`:``,n.useFog&&n.fog?`#define USE_FOG`:``,n.useFog&&n.fogExp2?`#define FOG_EXP2`:``,n.map?`#define USE_MAP`:``,n.envMap?`#define USE_ENVMAP`:``,n.envMap?`#define `+u:``,n.lightMap?`#define USE_LIGHTMAP`:``,n.aoMap?`#define USE_AOMAP`:``,n.bumpMap?`#define USE_BUMPMAP`:``,n.normalMap?`#define USE_NORMALMAP`:``,n.normalMapObjectSpace?`#define USE_NORMALMAP_OBJECTSPACE`:``,n.normalMapTangentSpace?`#define USE_NORMALMAP_TANGENTSPACE`:``,n.displacementMap?`#define USE_DISPLACEMENTMAP`:``,n.emissiveMap?`#define USE_EMISSIVEMAP`:``,n.anisotropy?`#define USE_ANISOTROPY`:``,n.anisotropyMap?`#define USE_ANISOTROPYMAP`:``,n.clearcoatMap?`#define USE_CLEARCOATMAP`:``,n.clearcoatRoughnessMap?`#define USE_CLEARCOAT_ROUGHNESSMAP`:``,n.clearcoatNormalMap?`#define USE_CLEARCOAT_NORMALMAP`:``,n.iridescenceMap?`#define USE_IRIDESCENCEMAP`:``,n.iridescenceThicknessMap?`#define USE_IRIDESCENCE_THICKNESSMAP`:``,n.specularMap?`#define USE_SPECULARMAP`:``,n.specularColorMap?`#define USE_SPECULAR_COLORMAP`:``,n.specularIntensityMap?`#define USE_SPECULAR_INTENSITYMAP`:``,n.roughnessMap?`#define USE_ROUGHNESSMAP`:``,n.metalnessMap?`#define USE_METALNESSMAP`:``,n.alphaMap?`#define USE_ALPHAMAP`:``,n.alphaHash?`#define USE_ALPHAHASH`:``,n.transmission?`#define USE_TRANSMISSION`:``,n.transmissionMap?`#define USE_TRANSMISSIONMAP`:``,n.thicknessMap?`#define USE_THICKNESSMAP`:``,n.sheenColorMap?`#define USE_SHEEN_COLORMAP`:``,n.sheenRoughnessMap?`#define USE_SHEEN_ROUGHNESSMAP`:``,n.mapUv?`#define MAP_UV `+n.mapUv:``,n.alphaMapUv?`#define ALPHAMAP_UV `+n.alphaMapUv:``,n.lightMapUv?`#define LIGHTMAP_UV `+n.lightMapUv:``,n.aoMapUv?`#define AOMAP_UV `+n.aoMapUv:``,n.emissiveMapUv?`#define EMISSIVEMAP_UV `+n.emissiveMapUv:``,n.bumpMapUv?`#define BUMPMAP_UV `+n.bumpMapUv:``,n.normalMapUv?`#define NORMALMAP_UV `+n.normalMapUv:``,n.displacementMapUv?`#define DISPLACEMENTMAP_UV `+n.displacementMapUv:``,n.metalnessMapUv?`#define METALNESSMAP_UV `+n.metalnessMapUv:``,n.roughnessMapUv?`#define ROUGHNESSMAP_UV `+n.roughnessMapUv:``,n.anisotropyMapUv?`#define ANISOTROPYMAP_UV `+n.anisotropyMapUv:``,n.clearcoatMapUv?`#define CLEARCOATMAP_UV `+n.clearcoatMapUv:``,n.clearcoatNormalMapUv?`#define CLEARCOAT_NORMALMAP_UV `+n.clearcoatNormalMapUv:``,n.clearcoatRoughnessMapUv?`#define CLEARCOAT_ROUGHNESSMAP_UV `+n.clearcoatRoughnessMapUv:``,n.iridescenceMapUv?`#define IRIDESCENCEMAP_UV `+n.iridescenceMapUv:``,n.iridescenceThicknessMapUv?`#define IRIDESCENCE_THICKNESSMAP_UV `+n.iridescenceThicknessMapUv:``,n.sheenColorMapUv?`#define SHEEN_COLORMAP_UV `+n.sheenColorMapUv:``,n.sheenRoughnessMapUv?`#define SHEEN_ROUGHNESSMAP_UV `+n.sheenRoughnessMapUv:``,n.specularMapUv?`#define SPECULARMAP_UV `+n.specularMapUv:``,n.specularColorMapUv?`#define SPECULAR_COLORMAP_UV `+n.specularColorMapUv:``,n.specularIntensityMapUv?`#define SPECULAR_INTENSITYMAP_UV `+n.specularIntensityMapUv:``,n.transmissionMapUv?`#define TRANSMISSIONMAP_UV `+n.transmissionMapUv:``,n.thicknessMapUv?`#define THICKNESSMAP_UV `+n.thicknessMapUv:``,n.vertexTangents&&n.flatShading===!1?`#define USE_TANGENT`:``,n.vertexColors?`#define USE_COLOR`:``,n.vertexAlphas?`#define USE_COLOR_ALPHA`:``,n.vertexUv1s?`#define USE_UV1`:``,n.vertexUv2s?`#define USE_UV2`:``,n.vertexUv3s?`#define USE_UV3`:``,n.pointsUvs?`#define USE_POINTS_UV`:``,n.flatShading?`#define FLAT_SHADED`:``,n.skinning?`#define USE_SKINNING`:``,n.morphTargets?`#define USE_MORPHTARGETS`:``,n.morphNormals&&n.flatShading===!1?`#define USE_MORPHNORMALS`:``,n.morphColors?`#define USE_MORPHCOLORS`:``,n.morphTargetsCount>0?`#define MORPHTARGETS_TEXTURE_STRIDE `+n.morphTextureStride:``,n.morphTargetsCount>0?`#define MORPHTARGETS_COUNT `+n.morphTargetsCount:``,n.doubleSided?`#define DOUBLE_SIDED`:``,n.flipSided?`#define FLIP_SIDED`:``,n.shadowMapEnabled?`#define USE_SHADOWMAP`:``,n.shadowMapEnabled?`#define `+c:``,n.sizeAttenuation?`#define USE_SIZEATTENUATION`:``,n.numLightProbes>0?`#define USE_LIGHT_PROBES`:``,n.logarithmicDepthBuffer?`#define USE_LOGDEPTHBUF`:``,n.reverseDepthBuffer?`#define USE_REVERSEDEPTHBUF`:``,`uniform mat4 modelMatrix;`,`uniform mat4 modelViewMatrix;`,`uniform mat4 projectionMatrix;`,`uniform mat4 viewMatrix;`,`uniform mat3 normalMatrix;`,`uniform vec3 cameraPosition;`,`uniform bool isOrthographic;`,`#ifdef USE_INSTANCING`,` attribute mat4 instanceMatrix;`,`#endif`,`#ifdef USE_INSTANCING_COLOR`,` attribute vec3 instanceColor;`,`#endif`,`#ifdef USE_INSTANCING_MORPH`,` uniform sampler2D morphTexture;`,`#endif`,`attribute vec3 position;`,`attribute vec3 normal;`,`attribute vec2 uv;`,`#ifdef USE_UV1`,` attribute vec2 uv1;`,`#endif`,`#ifdef USE_UV2`,` attribute vec2 uv2;`,`#endif`,`#ifdef USE_UV3`,` attribute vec2 uv3;`,`#endif`,`#ifdef USE_TANGENT`,` attribute vec4 tangent;`,`#endif`,`#if defined( USE_COLOR_ALPHA )`,` attribute vec4 color;`,`#elif defined( USE_COLOR )`,` attribute vec3 color;`,`#endif`,`#ifdef USE_SKINNING`,` attribute vec4 skinIndex;`,` attribute vec4 skinWeight;`,`#endif`,` +`].filter(Is).join(` +`),_=[Ks(n),`#define SHADER_TYPE `+n.shaderType,`#define SHADER_NAME `+n.shaderName,m,n.useFog&&n.fog?`#define USE_FOG`:``,n.useFog&&n.fogExp2?`#define FOG_EXP2`:``,n.alphaToCoverage?`#define ALPHA_TO_COVERAGE`:``,n.map?`#define USE_MAP`:``,n.matcap?`#define USE_MATCAP`:``,n.envMap?`#define USE_ENVMAP`:``,n.envMap?`#define `+l:``,n.envMap?`#define `+u:``,n.envMap?`#define `+d:``,f?`#define CUBEUV_TEXEL_WIDTH `+f.texelWidth:``,f?`#define CUBEUV_TEXEL_HEIGHT `+f.texelHeight:``,f?`#define CUBEUV_MAX_MIP `+f.maxMip+`.0`:``,n.lightMap?`#define USE_LIGHTMAP`:``,n.aoMap?`#define USE_AOMAP`:``,n.bumpMap?`#define USE_BUMPMAP`:``,n.normalMap?`#define USE_NORMALMAP`:``,n.normalMapObjectSpace?`#define USE_NORMALMAP_OBJECTSPACE`:``,n.normalMapTangentSpace?`#define USE_NORMALMAP_TANGENTSPACE`:``,n.emissiveMap?`#define USE_EMISSIVEMAP`:``,n.anisotropy?`#define USE_ANISOTROPY`:``,n.anisotropyMap?`#define USE_ANISOTROPYMAP`:``,n.clearcoat?`#define USE_CLEARCOAT`:``,n.clearcoatMap?`#define USE_CLEARCOATMAP`:``,n.clearcoatRoughnessMap?`#define USE_CLEARCOAT_ROUGHNESSMAP`:``,n.clearcoatNormalMap?`#define USE_CLEARCOAT_NORMALMAP`:``,n.dispersion?`#define USE_DISPERSION`:``,n.iridescence?`#define USE_IRIDESCENCE`:``,n.iridescenceMap?`#define USE_IRIDESCENCEMAP`:``,n.iridescenceThicknessMap?`#define USE_IRIDESCENCE_THICKNESSMAP`:``,n.specularMap?`#define USE_SPECULARMAP`:``,n.specularColorMap?`#define USE_SPECULAR_COLORMAP`:``,n.specularIntensityMap?`#define USE_SPECULAR_INTENSITYMAP`:``,n.roughnessMap?`#define USE_ROUGHNESSMAP`:``,n.metalnessMap?`#define USE_METALNESSMAP`:``,n.alphaMap?`#define USE_ALPHAMAP`:``,n.alphaTest?`#define USE_ALPHATEST`:``,n.alphaHash?`#define USE_ALPHAHASH`:``,n.sheen?`#define USE_SHEEN`:``,n.sheenColorMap?`#define USE_SHEEN_COLORMAP`:``,n.sheenRoughnessMap?`#define USE_SHEEN_ROUGHNESSMAP`:``,n.transmission?`#define USE_TRANSMISSION`:``,n.transmissionMap?`#define USE_TRANSMISSIONMAP`:``,n.thicknessMap?`#define USE_THICKNESSMAP`:``,n.vertexTangents&&n.flatShading===!1?`#define USE_TANGENT`:``,n.vertexColors||n.instancingColor||n.batchingColor?`#define USE_COLOR`:``,n.vertexAlphas?`#define USE_COLOR_ALPHA`:``,n.vertexUv1s?`#define USE_UV1`:``,n.vertexUv2s?`#define USE_UV2`:``,n.vertexUv3s?`#define USE_UV3`:``,n.pointsUvs?`#define USE_POINTS_UV`:``,n.gradientMap?`#define USE_GRADIENTMAP`:``,n.flatShading?`#define FLAT_SHADED`:``,n.doubleSided?`#define DOUBLE_SIDED`:``,n.flipSided?`#define FLIP_SIDED`:``,n.shadowMapEnabled?`#define USE_SHADOWMAP`:``,n.shadowMapEnabled?`#define `+c:``,n.premultipliedAlpha?`#define PREMULTIPLIED_ALPHA`:``,n.numLightProbes>0?`#define USE_LIGHT_PROBES`:``,n.decodeVideoTexture?`#define DECODE_VIDEO_TEXTURE`:``,n.logarithmicDepthBuffer?`#define USE_LOGDEPTHBUF`:``,n.reverseDepthBuffer?`#define USE_REVERSEDEPTHBUF`:``,`uniform mat4 viewMatrix;`,`uniform vec3 cameraPosition;`,`uniform bool isOrthographic;`,n.toneMapping===0?``:`#define TONE_MAPPING`,n.toneMapping===0?``:ka.tonemapping_pars_fragment,n.toneMapping===0?``:As(`toneMapping`,n.toneMapping),n.dithering?`#define DITHERING`:``,n.opaque?`#define OPAQUE`:``,ka.colorspace_pars_fragment,ks(`linearToOutputTexel`,n.outputColorSpace),Ms(),n.useDepthPacking?`#define DEPTH_PACKING `+n.depthPacking:``,` +`].filter(Is).join(` +`)),o=Bs(o),o=Ls(o,n),o=Rs(o,n),s=Bs(s),s=Ls(s,n),s=Rs(s,n),o=Ws(o),s=Ws(s),n.isRawShaderMaterial!==!0&&(v=`#version 300 es +`,g=[p,`#define attribute in`,`#define varying out`,`#define texture2D texture`].join(` +`)+` +`+g,_=[`#define varying in`,n.glslVersion===`300 es`?``:`layout(location = 0) out highp vec4 pc_fragColor;`,n.glslVersion===`300 es`?``:`#define gl_FragColor pc_fragColor`,`#define gl_FragDepthEXT gl_FragDepth`,`#define texture2D texture`,`#define textureCube texture`,`#define texture2DProj textureProj`,`#define texture2DLodEXT textureLod`,`#define texture2DProjLodEXT textureProjLod`,`#define textureCubeLodEXT textureLod`,`#define texture2DGradEXT textureGrad`,`#define texture2DProjGradEXT textureProjGrad`,`#define textureCubeGradEXT textureGrad`].join(` +`)+` +`+_);let y=v+g+o,b=v+_+s,x=Cs(i,i.VERTEX_SHADER,y),S=Cs(i,i.FRAGMENT_SHADER,b);i.attachShader(h,x),i.attachShader(h,S),n.index0AttributeName===void 0?n.morphTargets===!0&&i.bindAttribLocation(h,0,`position`):i.bindAttribLocation(h,0,n.index0AttributeName),i.linkProgram(h);function C(t){if(e.debug.checkShaderErrors){let n=i.getProgramInfoLog(h).trim(),r=i.getShaderInfoLog(x).trim(),a=i.getShaderInfoLog(S).trim(),o=!0,s=!0;if(i.getProgramParameter(h,i.LINK_STATUS)===!1)if(o=!1,typeof e.debug.onShaderError==`function`)e.debug.onShaderError(i,h,x,S);else{let e=Os(i,x,`vertex`),r=Os(i,S,`fragment`);console.error(`THREE.WebGLProgram: Shader Error `+i.getError()+` - VALIDATE_STATUS `+i.getProgramParameter(h,i.VALIDATE_STATUS)+` + +Material Name: `+t.name+` +Material Type: `+t.type+` + +Program Info Log: `+n+` +`+e+` +`+r)}else n===``?(r===``||a===``)&&(s=!1):console.warn(`THREE.WebGLProgram: Program Info Log:`,n);s&&(t.diagnostics={runnable:o,programLog:n,vertexShader:{log:r,prefix:g},fragmentShader:{log:a,prefix:_}})}i.deleteShader(x),i.deleteShader(S),w=new Ss(i,h),T=Fs(i,h)}let w;this.getUniforms=function(){return w===void 0&&C(this),w};let T;this.getAttributes=function(){return T===void 0&&C(this),T};let E=n.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return E===!1&&(E=i.getProgramParameter(h,ws)),E},this.destroy=function(){r.releaseStatesOfProgram(this),i.deleteProgram(h),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=Ts++,this.cacheKey=t,this.usedTimes=1,this.program=h,this.vertexShader=x,this.fragmentShader=S,this}var $s=0,ec=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),i=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(i)===!1&&(a.add(i),i.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,e.usedTimes===0&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new tc(e),t.set(e,n)),n}},tc=class{constructor(e){this.id=$s++,this.code=e,this.usedTimes=0}};function nc(e,t,n,r,i,a,o){let s=new Or,c=new ec,l=new Set,u=[],d=i.logarithmicDepthBuffer,f=i.reverseDepthBuffer,p=i.vertexTextures,m=i.precision,h={MeshDepthMaterial:`depth`,MeshDistanceMaterial:`distanceRGBA`,MeshNormalMaterial:`normal`,MeshBasicMaterial:`basic`,MeshLambertMaterial:`lambert`,MeshPhongMaterial:`phong`,MeshToonMaterial:`toon`,MeshStandardMaterial:`physical`,MeshPhysicalMaterial:`physical`,MeshMatcapMaterial:`matcap`,LineBasicMaterial:`basic`,LineDashedMaterial:`dashed`,PointsMaterial:`points`,ShadowMaterial:`shadow`,SpriteMaterial:`sprite`};function g(e){return l.add(e),e===0?`uv`:`uv${e}`}function _(a,s,u,_,v){let y=_.fog,b=v.geometry,x=a.isMeshStandardMaterial?_.environment:null,S=(a.isMeshStandardMaterial?n:t).get(a.envMap||x),C=S&&S.mapping===306?S.image.height:null,w=h[a.type];a.precision!==null&&(m=i.getMaxPrecision(a.precision),m!==a.precision&&console.warn(`THREE.WebGLProgram.getParameters:`,a.precision,`not supported, using`,m,`instead.`));let T=b.morphAttributes.position||b.morphAttributes.normal||b.morphAttributes.color,E=T===void 0?0:T.length,D=0;b.morphAttributes.position!==void 0&&(D=1),b.morphAttributes.normal!==void 0&&(D=2),b.morphAttributes.color!==void 0&&(D=3);let ee,O,te,ne;if(w){let e=Aa[w];ee=e.vertexShader,O=e.fragmentShader}else ee=a.vertexShader,O=a.fragmentShader,c.update(a),te=c.getVertexShaderID(a),ne=c.getFragmentShaderID(a);let re=e.getRenderTarget(),ie=v.isInstancedMesh===!0,ae=v.isBatchedMesh===!0,oe=!!a.map,se=!!a.matcap,ce=!!S,le=!!a.aoMap,ue=!!a.lightMap,de=!!a.bumpMap,fe=!!a.normalMap,pe=!!a.displacementMap,me=!!a.emissiveMap,he=!!a.metalnessMap,ge=!!a.roughnessMap,_e=a.anisotropy>0,ve=a.clearcoat>0,ye=a.dispersion>0,be=a.iridescence>0,xe=a.sheen>0,Se=a.transmission>0,k=_e&&!!a.anisotropyMap,Ce=ve&&!!a.clearcoatMap,we=ve&&!!a.clearcoatNormalMap,Te=ve&&!!a.clearcoatRoughnessMap,Ee=be&&!!a.iridescenceMap,De=be&&!!a.iridescenceThicknessMap,Oe=xe&&!!a.sheenColorMap,ke=xe&&!!a.sheenRoughnessMap,Ae=!!a.specularMap,je=!!a.specularColorMap,Me=!!a.specularIntensityMap,Ne=Se&&!!a.transmissionMap,Pe=Se&&!!a.thicknessMap,Fe=!!a.gradientMap,Ie=!!a.alphaMap,Le=a.alphaTest>0,Re=!!a.alphaHash,ze=!!a.extensions,Be=0;a.toneMapped&&(re===null||re.isXRRenderTarget===!0)&&(Be=e.toneMapping);let Ve={shaderID:w,shaderType:a.type,shaderName:a.name,vertexShader:ee,fragmentShader:O,defines:a.defines,customVertexShaderID:te,customFragmentShaderID:ne,isRawShaderMaterial:a.isRawShaderMaterial===!0,glslVersion:a.glslVersion,precision:m,batching:ae,batchingColor:ae&&v._colorsTexture!==null,instancing:ie,instancingColor:ie&&v.instanceColor!==null,instancingMorph:ie&&v.morphTexture!==null,supportsVertexTextures:p,outputColorSpace:re===null?e.outputColorSpace:re.isXRRenderTarget===!0?re.texture.colorSpace:ut,alphaToCoverage:!!a.alphaToCoverage,map:oe,matcap:se,envMap:ce,envMapMode:ce&&S.mapping,envMapCubeUVHeight:C,aoMap:le,lightMap:ue,bumpMap:de,normalMap:fe,displacementMap:p&&pe,emissiveMap:me,normalMapObjectSpace:fe&&a.normalMapType===1,normalMapTangentSpace:fe&&a.normalMapType===0,metalnessMap:he,roughnessMap:ge,anisotropy:_e,anisotropyMap:k,clearcoat:ve,clearcoatMap:Ce,clearcoatNormalMap:we,clearcoatRoughnessMap:Te,dispersion:ye,iridescence:be,iridescenceMap:Ee,iridescenceThicknessMap:De,sheen:xe,sheenColorMap:Oe,sheenRoughnessMap:ke,specularMap:Ae,specularColorMap:je,specularIntensityMap:Me,transmission:Se,transmissionMap:Ne,thicknessMap:Pe,gradientMap:Fe,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Ie,alphaTest:Le,alphaHash:Re,combine:a.combine,mapUv:oe&&g(a.map.channel),aoMapUv:le&&g(a.aoMap.channel),lightMapUv:ue&&g(a.lightMap.channel),bumpMapUv:de&&g(a.bumpMap.channel),normalMapUv:fe&&g(a.normalMap.channel),displacementMapUv:pe&&g(a.displacementMap.channel),emissiveMapUv:me&&g(a.emissiveMap.channel),metalnessMapUv:he&&g(a.metalnessMap.channel),roughnessMapUv:ge&&g(a.roughnessMap.channel),anisotropyMapUv:k&&g(a.anisotropyMap.channel),clearcoatMapUv:Ce&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:we&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Te&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:Ee&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:De&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:Oe&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:ke&&g(a.sheenRoughnessMap.channel),specularMapUv:Ae&&g(a.specularMap.channel),specularColorMapUv:je&&g(a.specularColorMap.channel),specularIntensityMapUv:Me&&g(a.specularIntensityMap.channel),transmissionMapUv:Ne&&g(a.transmissionMap.channel),thicknessMapUv:Pe&&g(a.thicknessMap.channel),alphaMapUv:Ie&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&(fe||_e),vertexColors:a.vertexColors,vertexAlphas:a.vertexColors===!0&&!!b.attributes.color&&b.attributes.color.itemSize===4,pointsUvs:v.isPoints===!0&&!!b.attributes.uv&&(oe||Ie),fog:!!y,useFog:a.fog===!0,fogExp2:!!y&&y.isFogExp2,flatShading:a.flatShading===!0,sizeAttenuation:a.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:f,skinning:v.isSkinnedMesh===!0,morphTargets:b.morphAttributes.position!==void 0,morphNormals:b.morphAttributes.normal!==void 0,morphColors:b.morphAttributes.color!==void 0,morphTargetsCount:E,morphTextureStride:D,numDirLights:s.directional.length,numPointLights:s.point.length,numSpotLights:s.spot.length,numSpotLightMaps:s.spotLightMap.length,numRectAreaLights:s.rectArea.length,numHemiLights:s.hemi.length,numDirLightShadows:s.directionalShadowMap.length,numPointLightShadows:s.pointShadowMap.length,numSpotLightShadows:s.spotShadowMap.length,numSpotLightShadowsWithMaps:s.numSpotLightShadowsWithMaps,numLightProbes:s.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&u.length>0,shadowMapType:e.shadowMap.type,toneMapping:Be,decodeVideoTexture:oe&&a.map.isVideoTexture===!0&&Tn.getTransfer(a.map.colorSpace)===`srgb`,premultipliedAlpha:a.premultipliedAlpha,doubleSided:a.side===2,flipSided:a.side===1,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:ze&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(ze&&a.extensions.multiDraw===!0||ae)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return Ve.vertexUv1s=l.has(1),Ve.vertexUv2s=l.has(2),Ve.vertexUv3s=l.has(3),l.clear(),Ve}function v(t){let n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),t.defines!==void 0)for(let e in t.defines)n.push(e),n.push(t.defines[e]);return t.isRawShaderMaterial===!1&&(y(n,t),b(n,t),n.push(e.outputColorSpace)),n.push(t.customProgramCacheKey),n.join()}function y(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}function b(e,t){s.disableAll(),t.supportsVertexTextures&&s.enable(0),t.instancing&&s.enable(1),t.instancingColor&&s.enable(2),t.instancingMorph&&s.enable(3),t.matcap&&s.enable(4),t.envMap&&s.enable(5),t.normalMapObjectSpace&&s.enable(6),t.normalMapTangentSpace&&s.enable(7),t.clearcoat&&s.enable(8),t.iridescence&&s.enable(9),t.alphaTest&&s.enable(10),t.vertexColors&&s.enable(11),t.vertexAlphas&&s.enable(12),t.vertexUv1s&&s.enable(13),t.vertexUv2s&&s.enable(14),t.vertexUv3s&&s.enable(15),t.vertexTangents&&s.enable(16),t.anisotropy&&s.enable(17),t.alphaHash&&s.enable(18),t.batching&&s.enable(19),t.dispersion&&s.enable(20),t.batchingColor&&s.enable(21),e.push(s.mask),s.disableAll(),t.fog&&s.enable(0),t.useFog&&s.enable(1),t.flatShading&&s.enable(2),t.logarithmicDepthBuffer&&s.enable(3),t.reverseDepthBuffer&&s.enable(4),t.skinning&&s.enable(5),t.morphTargets&&s.enable(6),t.morphNormals&&s.enable(7),t.morphColors&&s.enable(8),t.premultipliedAlpha&&s.enable(9),t.shadowMapEnabled&&s.enable(10),t.doubleSided&&s.enable(11),t.flipSided&&s.enable(12),t.useDepthPacking&&s.enable(13),t.dithering&&s.enable(14),t.transmission&&s.enable(15),t.sheen&&s.enable(16),t.opaque&&s.enable(17),t.pointsUvs&&s.enable(18),t.decodeVideoTexture&&s.enable(19),t.alphaToCoverage&&s.enable(20),e.push(s.mask)}function x(e){let t=h[e.type],n;if(t){let e=Aa[t];n=na.clone(e.uniforms)}else n=e.uniforms;return n}function S(t,n){let r;for(let e=0,t=u.length;e0?r.push(u):a.transparent===!0?i.push(u):n.push(u),e.onAfterRenderListPush?.(e,t,a,l)}function c(e,t,a,s,c,l){let u=o(e,t,a,s,c,l);a.transmission>0?r.unshift(u):a.transparent===!0?i.unshift(u):n.unshift(u)}function l(e,t){n.length>1&&n.sort(e||ic),r.length>1&&r.sort(t||ac),i.length>1&&i.sort(t||ac)}function u(){for(let n=t,r=e.length;n=r.length?(i=new oc,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function cc(){let e={};return{get:function(t){if(e[t.id]!==void 0)return e[t.id];let n;switch(t.type){case`DirectionalLight`:n={direction:new M,color:new P};break;case`SpotLight`:n={position:new M,direction:new M,color:new P,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:n={position:new M,color:new P,distance:0,decay:0};break;case`HemisphereLight`:n={direction:new M,skyColor:new P,groundColor:new P};break;case`RectAreaLight`:n={color:new P,position:new M,halfWidth:new M,halfHeight:new M};break}return e[t.id]=n,n}}}function lc(){let e={};return{get:function(t){if(e[t.id]!==void 0)return e[t.id];let n;switch(t.type){case`DirectionalLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A};break;case`SpotLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A};break;case`PointLight`:n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new A,shadowCameraNear:1,shadowCameraFar:1e3};break}return e[t.id]=n,n}}}var uc=0;function dc(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function fc(e){let t=new cc,n=lc(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)r.probe.push(new M);let i=new M,a=new N,o=new N;function s(i){let a=0,o=0,s=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0;i.sort(dc);for(let e=0,y=i.length;e0&&(e.has(`OES_texture_float_linear`)===!0?(r.rectAreaLTC1=I.LTC_FLOAT_1,r.rectAreaLTC2=I.LTC_FLOAT_2):(r.rectAreaLTC1=I.LTC_HALF_1,r.rectAreaLTC2=I.LTC_HALF_2)),r.ambient[0]=a,r.ambient[1]=o,r.ambient[2]=s;let y=r.hash;(y.directionalLength!==c||y.pointLength!==l||y.spotLength!==u||y.rectAreaLength!==d||y.hemiLength!==f||y.numDirectionalShadows!==p||y.numPointShadows!==m||y.numSpotShadows!==h||y.numSpotMaps!==g||y.numLightProbes!==v)&&(r.directional.length=c,r.spot.length=u,r.rectArea.length=d,r.point.length=l,r.hemi.length=f,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=m,r.pointShadowMap.length=m,r.spotShadow.length=h,r.spotShadowMap.length=h,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=m,r.spotLightMatrix.length=h+g-_,r.spotLightMap.length=g,r.numSpotLightShadowsWithMaps=_,r.numLightProbes=v,y.directionalLength=c,y.pointLength=l,y.spotLength=u,y.rectAreaLength=d,y.hemiLength=f,y.numDirectionalShadows=p,y.numPointShadows=m,y.numSpotShadows=h,y.numSpotMaps=g,y.numLightProbes=v,r.version=uc++)}function c(e,t){let n=0,s=0,c=0,l=0,u=0,d=t.matrixWorldInverse;for(let t=0,f=e.length;t=i.length?(a=new pc(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var hc=class extends di{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type=`MeshDepthMaterial`,this.depthPacking=at,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},gc=class extends di{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type=`MeshDistanceMaterial`,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},_c=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,vc=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function yc(e,t,n){let r=new Ta,i=new A,a=new A,o=new Fn,s=new hc({depthPacking:ot}),c=new gc,l={},d=n.maxTextureSize,f={0:1,1:0,2:2},p=new aa({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new A},radius:{value:4}},vertexShader:_c,fragmentShader:vc}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new Ii;h.setAttribute(`position`,new bi(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new Ji(h,p),_=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;this.render=function(t,n,s){if(_.enabled===!1||_.autoUpdate===!1&&_.needsUpdate===!1||t.length===0)return;let c=e.getRenderTarget(),l=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.state;p.setBlending(0),p.buffers.color.setClear(1,1,1,1),p.buffers.depth.setTest(!0),p.setScissorTest(!1);let m=v!==3&&this.type===3,h=v===3&&this.type!==3;for(let c=0,l=t.length;cd||i.y>d)&&(i.x>d&&(a.x=Math.floor(d/g.x),i.x=a.x*g.x,f.mapSize.x=a.x),i.y>d&&(a.y=Math.floor(d/g.y),i.y=a.y*g.y,f.mapSize.y=a.y)),f.map===null||m===!0||h===!0){let e=this.type===3?{}:{minFilter:u,magFilter:u};f.map!==null&&f.map.dispose(),f.map=new Ln(i.x,i.y,e),f.map.texture.name=l.name+`.shadowMap`,f.camera.updateProjectionMatrix()}e.setRenderTarget(f.map),e.clear();let _=f.getViewportCount();for(let e=0;e<_;e++){let t=f.getViewport(e);o.set(a.x*t.x,a.y*t.y,a.x*t.z,a.y*t.w),p.viewport(o),f.updateMatrices(l,e),r=f.getFrustum(),x(n,s,f.camera,l,this.type)}f.isPointLightShadow!==!0&&this.type===3&&y(f,s),f.needsUpdate=!1}v=this.type,_.needsUpdate=!1,e.setRenderTarget(c,l,f)};function y(n,r){let a=t.update(g);p.defines.VSM_SAMPLES!==n.blurSamples&&(p.defines.VSM_SAMPLES=n.blurSamples,m.defines.VSM_SAMPLES=n.blurSamples,p.needsUpdate=!0,m.needsUpdate=!0),n.mapPass===null&&(n.mapPass=new Ln(i.x,i.y)),p.uniforms.shadow_pass.value=n.map.texture,p.uniforms.resolution.value=n.mapSize,p.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(r,null,a,p,g,null),m.uniforms.shadow_pass.value=n.mapPass.texture,m.uniforms.resolution.value=n.mapSize,m.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(r,null,a,m,g,null)}function b(t,n,r,i){let a=null,o=r.isPointLight===!0?t.customDistanceMaterial:t.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?c:s,e.localClippingEnabled&&n.clipShadows===!0&&Array.isArray(n.clippingPlanes)&&n.clippingPlanes.length!==0||n.displacementMap&&n.displacementScale!==0||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){let e=a.uuid,t=n.uuid,r=l[e];r===void 0&&(r={},l[e]=r);let i=r[t];i===void 0&&(i=a.clone(),r[t]=i,n.addEventListener(`dispose`,S)),a=i}if(a.visible=n.visible,a.wireframe=n.wireframe,i===3?a.side=n.shadowSide===null?n.side:n.shadowSide:a.side=n.shadowSide===null?f[n.side]:n.shadowSide,a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,r.isPointLight===!0&&a.isMeshDistanceMaterial===!0){let t=e.properties.get(a);t.light=r}return a}function x(n,i,a,o,s){if(n.visible===!1)return;if(n.layers.test(i.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&s===3)&&(!n.frustumCulled||r.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);let r=t.update(n),c=n.material;if(Array.isArray(c)){let t=r.groups;for(let l=0,u=t.length;l=2):(re=parseFloat(/^WebGL (\d)/.exec(ie)[1]),ne=re>=1);let ae=null,oe={},se=e.getParameter(e.SCISSOR_BOX),ce=e.getParameter(e.VIEWPORT),le=new Fn().fromArray(se),ue=new Fn().fromArray(ce);function de(t,n,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;ot?(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2):(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0),e}function Cc(e,t){let n=e.image&&e.image.width?e.image.width/e.image.height:1;return n>t?(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0):(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2),e}function wc(e){return e.repeat.x=1,e.repeat.y=1,e.offset.x=0,e.offset.y=0,e}function Tc(e,t,n,r){let i=Ec(r);switch(n){case ie:return e*t;case se:return e*t;case ce:return e*t*2;case de:return e*t/i.components*i.byteLength;case fe:return e*t/i.components*i.byteLength;case pe:return e*t*2/i.components*i.byteLength;case me:return e*t*2/i.components*i.byteLength;case ae:return e*t*3/i.components*i.byteLength;case oe:return e*t*4/i.components*i.byteLength;case ge:return e*t*4/i.components*i.byteLength;case _e:case ve:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8;case ye:case be:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case Se:case Ce:return Math.max(e,16)*Math.max(t,8)/4;case xe:case k:return Math.max(e,8)*Math.max(t,8)/2;case we:case Te:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8;case Ee:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case De:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case Oe:return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16;case ke:return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16;case Ae:return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16;case je:return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16;case Me:return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16;case Ne:return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16;case Pe:return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16;case Fe:return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16;case Ie:return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16;case Le:return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16;case Re:return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16;case ze:return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16;case Be:return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16;case Ve:case He:case Ue:return Math.ceil(e/4)*Math.ceil(t/4)*16;case We:case Ge:return Math.ceil(e/4)*Math.ceil(t/4)*8;case Ke:case qe:return Math.ceil(e/4)*Math.ceil(t/4)*16}throw Error(`Unable to determine texture byte length for ${n} format.`)}function Ec(e){switch(e){case b:case x:return{byteLength:1,components:1};case C:case S:case D:return{byteLength:2,components:1};case ee:case O:return{byteLength:2,components:4};case T:case w:case E:return{byteLength:4,components:1};case ne:case re:return{byteLength:4,components:3}}throw Error(`Unknown texture type ${e}.`)}var Dc={contain:Sc,cover:Cc,fill:wc,getByteLength:Tc};function Oc(e,t,n,r,i,a,o){let f=t.has(`WEBGL_multisampled_render_to_texture`)?t.get(`WEBGL_multisampled_render_to_texture`):null,m=typeof navigator>`u`?!1:/OculusBrowser/g.test(navigator.userAgent),_=new A,y=new WeakMap,b,x=new WeakMap,S=!1;try{S=typeof OffscreenCanvas<`u`&&new OffscreenCanvas(1,1).getContext(`2d`)!==null}catch{}function C(e,t){return S?new OffscreenCanvas(e,t):mn(`canvas`)}function w(e,t,n){let r=1,i=Fe(e);if((i.width>n||i.height>n)&&(r=n/Math.max(i.width,i.height)),r<1)if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof VideoFrame<`u`&&e instanceof VideoFrame){let n=Math.floor(r*i.width),a=Math.floor(r*i.height);b===void 0&&(b=C(n,a));let o=t?C(n,a):b;return o.width=n,o.height=a,o.getContext(`2d`).drawImage(e,0,0,n,a),console.warn(`THREE.WebGLRenderer: Texture has been resized from (`+i.width+`x`+i.height+`) to (`+n+`x`+a+`).`),o}else return`data`in e&&console.warn(`THREE.WebGLRenderer: Image in DataTexture is too big (`+i.width+`x`+i.height+`).`),e;return e}function T(e){return e.generateMipmaps&&e.minFilter!==1003&&e.minFilter!==1006}function E(t){e.generateMipmap(t)}function D(n,r,i,a,o=!1){if(n!==null){if(e[n]!==void 0)return e[n];console.warn(`THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '`+n+`'`)}let s=r;if(r===e.RED&&(i===e.FLOAT&&(s=e.R32F),i===e.HALF_FLOAT&&(s=e.R16F),i===e.UNSIGNED_BYTE&&(s=e.R8)),r===e.RED_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.R8UI),i===e.UNSIGNED_SHORT&&(s=e.R16UI),i===e.UNSIGNED_INT&&(s=e.R32UI),i===e.BYTE&&(s=e.R8I),i===e.SHORT&&(s=e.R16I),i===e.INT&&(s=e.R32I)),r===e.RG&&(i===e.FLOAT&&(s=e.RG32F),i===e.HALF_FLOAT&&(s=e.RG16F),i===e.UNSIGNED_BYTE&&(s=e.RG8)),r===e.RG_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RG8UI),i===e.UNSIGNED_SHORT&&(s=e.RG16UI),i===e.UNSIGNED_INT&&(s=e.RG32UI),i===e.BYTE&&(s=e.RG8I),i===e.SHORT&&(s=e.RG16I),i===e.INT&&(s=e.RG32I)),r===e.RGB_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RGB8UI),i===e.UNSIGNED_SHORT&&(s=e.RGB16UI),i===e.UNSIGNED_INT&&(s=e.RGB32UI),i===e.BYTE&&(s=e.RGB8I),i===e.SHORT&&(s=e.RGB16I),i===e.INT&&(s=e.RGB32I)),r===e.RGBA_INTEGER&&(i===e.UNSIGNED_BYTE&&(s=e.RGBA8UI),i===e.UNSIGNED_SHORT&&(s=e.RGBA16UI),i===e.UNSIGNED_INT&&(s=e.RGBA32UI),i===e.BYTE&&(s=e.RGBA8I),i===e.SHORT&&(s=e.RGBA16I),i===e.INT&&(s=e.RGBA32I)),r===e.RGB&&(i===e.UNSIGNED_INT_5_9_9_9_REV&&(s=e.RGB9_E5),i===e.UNSIGNED_INT_10F_11F_11F_REV&&(s=e.R11F_G11F_B10F)),r===e.RGBA){let t=o?pt:Tn.getTransfer(a);i===e.FLOAT&&(s=e.RGBA32F),i===e.HALF_FLOAT&&(s=e.RGBA16F),i===e.UNSIGNED_BYTE&&(s=t===`srgb`?e.SRGB8_ALPHA8:e.RGBA8),i===e.UNSIGNED_SHORT_4_4_4_4&&(s=e.RGBA4),i===e.UNSIGNED_SHORT_5_5_5_1&&(s=e.RGB5_A1)}return(s===e.R16F||s===e.R32F||s===e.RG16F||s===e.RG32F||s===e.RGBA16F||s===e.RGBA32F)&&t.get(`EXT_color_buffer_float`),s}function ee(t,n){let r;return t?n===null||n===1014||n===1020?r=e.DEPTH24_STENCIL8:n===1015?r=e.DEPTH32F_STENCIL8:n===1012&&(r=e.DEPTH24_STENCIL8,console.warn(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):n===null||n===1014||n===1020?r=e.DEPTH_COMPONENT24:n===1015?r=e.DEPTH_COMPONENT32F:n===1012&&(r=e.DEPTH_COMPONENT16),r}function O(e,t){return T(e)===!0||e.isFramebufferTexture&&e.minFilter!==1003&&e.minFilter!==1006?Math.log2(Math.max(t.width,t.height))+1:e.mipmaps!==void 0&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function te(e){let t=e.target;t.removeEventListener(`dispose`,te),re(t),t.isVideoTexture&&y.delete(t)}function ne(e){let t=e.target;t.removeEventListener(`dispose`,ne),ae(t)}function re(e){let t=r.get(e);if(t.__webglInit===void 0)return;let n=e.source,i=x.get(n);if(i){let r=i[t.__cacheKey];r.usedTimes--,r.usedTimes===0&&ie(e),Object.keys(i).length===0&&x.delete(n)}r.remove(e)}function ie(t){let n=r.get(t);e.deleteTexture(n.__webglTexture);let i=t.source,a=x.get(i);delete a[n.__cacheKey],o.memory.textures--}function ae(t){let n=r.get(t);if(t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let r=0;r=i.maxTextures&&console.warn(`THREE.WebGLTextures: Trying to use `+e+` texture units while this GPU supports only `+i.maxTextures),oe+=1,e}function le(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}function de(t,i){let a=r.get(t);if(t.isVideoTexture&&Ne(t),t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){let e=t.image;if(e===null)console.warn(`THREE.WebGLRenderer: Texture marked for update but no image data found.`);else if(e.complete===!1)console.warn(`THREE.WebGLRenderer: Texture marked for update but image is incomplete`);else{be(a,t,i);return}}n.bindTexture(e.TEXTURE_2D,a.__webglTexture,e.TEXTURE0+i)}function fe(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){be(a,t,i);return}n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+i)}function pe(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){be(a,t,i);return}n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+i)}function me(t,i){let a=r.get(t);if(t.version>0&&a.__version!==t.version){xe(a,t,i);return}n.bindTexture(e.TEXTURE_CUBE_MAP,a.__webglTexture,e.TEXTURE0+i)}let he={[s]:e.REPEAT,[c]:e.CLAMP_TO_EDGE,[l]:e.MIRRORED_REPEAT},ge={[u]:e.NEAREST,[d]:e.NEAREST_MIPMAP_NEAREST,[p]:e.NEAREST_MIPMAP_LINEAR,[h]:e.LINEAR,[g]:e.LINEAR_MIPMAP_NEAREST,[v]:e.LINEAR_MIPMAP_LINEAR},_e={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function ve(n,a){if(a.type===1015&&t.has(`OES_texture_float_linear`)===!1&&(a.magFilter===1006||a.magFilter===1007||a.magFilter===1005||a.magFilter===1008||a.minFilter===1006||a.minFilter===1007||a.minFilter===1005||a.minFilter===1008)&&console.warn(`THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),e.texParameteri(n,e.TEXTURE_WRAP_S,he[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,he[a.wrapT]),(n===e.TEXTURE_3D||n===e.TEXTURE_2D_ARRAY)&&e.texParameteri(n,e.TEXTURE_WRAP_R,he[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,ge[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,ge[a.minFilter]),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,_e[a.compareFunction])),t.has(`EXT_texture_filter_anisotropic`)===!0){if(a.magFilter===1003||a.minFilter!==1005&&a.minFilter!==1008||a.type===1015&&t.has(`OES_texture_float_linear`)===!1)return;if(a.anisotropy>1||r.get(a).__currentAnisotropy){let o=t.get(`EXT_texture_filter_anisotropic`);e.texParameterf(n,o.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,i.getMaxAnisotropy())),r.get(a).__currentAnisotropy=a.anisotropy}}}function ye(t,n){let r=!1;t.__webglInit===void 0&&(t.__webglInit=!0,n.addEventListener(`dispose`,te));let i=n.source,a=x.get(i);a===void 0&&(a={},x.set(i,a));let s=le(n);if(s!==t.__cacheKey){a[s]===void 0&&(a[s]={texture:e.createTexture(),usedTimes:0},o.memory.textures++,r=!0),a[s].usedTimes++;let i=a[t.__cacheKey];i!==void 0&&(a[t.__cacheKey].usedTimes--,i.usedTimes===0&&ie(n)),t.__cacheKey=s,t.__webglTexture=a[s].texture}return r}function be(t,o,s){let c=e.TEXTURE_2D;(o.isDataArrayTexture||o.isCompressedArrayTexture)&&(c=e.TEXTURE_2D_ARRAY),o.isData3DTexture&&(c=e.TEXTURE_3D);let l=ye(t,o),u=o.source;n.bindTexture(c,t.__webglTexture,e.TEXTURE0+s);let d=r.get(u);if(u.version!==d.__version||l===!0){n.activeTexture(e.TEXTURE0+s);let t=Tn.getPrimaries(Tn.workingColorSpace),r=o.colorSpace===``?null:Tn.getPrimaries(o.colorSpace),f=o.colorSpace===``||t===r?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,o.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,o.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,f);let p=w(o.image,!1,i.maxTextureSize);p=Pe(o,p);let m=a.convert(o.format,o.colorSpace),h=a.convert(o.type),g=D(o.internalFormat,m,h,o.colorSpace,o.isVideoTexture);ve(c,o);let _,v=o.mipmaps,y=o.isVideoTexture!==!0,b=d.__version===void 0||l===!0,x=u.dataReady,S=O(o,p);if(o.isDepthTexture)g=ee(o.format===ue,o.type),b&&(y?n.texStorage2D(e.TEXTURE_2D,1,g,p.width,p.height):n.texImage2D(e.TEXTURE_2D,0,g,p.width,p.height,0,m,h,null));else if(o.isDataTexture)if(v.length>0){y&&b&&n.texStorage2D(e.TEXTURE_2D,S,g,v[0].width,v[0].height);for(let t=0,r=v.length;t0){let r=Tc(_.width,_.height,o.format,o.type);for(let i of o.layerUpdates){let a=_.data.subarray(i*r/_.data.BYTES_PER_ELEMENT,(i+1)*r/_.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,i,_.width,_.height,1,m,a,0,0)}o.clearLayerUpdates()}else n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,_.width,_.height,p.depth,m,_.data,0,0)}else n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,t,g,_.width,_.height,p.depth,0,_.data,0,0);else console.warn(`THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`);else y?x&&n.texSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,_.width,_.height,p.depth,m,h,_.data):n.texImage3D(e.TEXTURE_2D_ARRAY,t,g,_.width,_.height,p.depth,0,m,h,_.data)}else{y&&b&&n.texStorage2D(e.TEXTURE_2D,S,g,v[0].width,v[0].height);for(let t=0,r=v.length;t0){let t=Tc(p.width,p.height,o.format,o.type);for(let r of o.layerUpdates){let i=p.data.subarray(r*t/p.data.BYTES_PER_ELEMENT,(r+1)*t/p.data.BYTES_PER_ELEMENT);n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,r,p.width,p.height,1,m,h,i)}o.clearLayerUpdates()}else n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,p.width,p.height,p.depth,m,h,p.data)}else n.texImage3D(e.TEXTURE_2D_ARRAY,0,g,p.width,p.height,p.depth,0,m,h,p.data);else if(o.isData3DTexture)y?(b&&n.texStorage3D(e.TEXTURE_3D,S,g,p.width,p.height,p.depth),x&&n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,p.width,p.height,p.depth,m,h,p.data)):n.texImage3D(e.TEXTURE_3D,0,g,p.width,p.height,p.depth,0,m,h,p.data);else if(o.isFramebufferTexture){if(b)if(y)n.texStorage2D(e.TEXTURE_2D,S,g,p.width,p.height);else{let t=p.width,r=p.height;for(let i=0;i>=1,r>>=1}}else if(v.length>0){if(y&&b){let t=Fe(v[0]);n.texStorage2D(e.TEXTURE_2D,S,g,t.width,t.height)}for(let t=0,r=v.length;t0&&S++;let t=Fe(m[0]);n.texStorage2D(e.TEXTURE_CUBE_MAP,S,v,t.width,t.height)}for(let t=0;t<6;t++)if(p){y?x&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,m[t].width,m[t].height,g,_,m[t].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,v,m[t].width,m[t].height,0,g,_,m[t].data);for(let r=0;r>l),r=Math.max(1,i.height>>l);c===e.TEXTURE_3D||c===e.TEXTURE_2D_ARRAY?n.texImage3D(c,l,p,t,r,i.depth,0,u,d,null):n.texImage2D(c,l,p,t,r,0,u,d,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),Me(i)?f.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,s,c,r.get(o).__webglTexture,0,je(i)):(c===e.TEXTURE_2D||c>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&c<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,s,c,r.get(o).__webglTexture,l),n.bindFramebuffer(e.FRAMEBUFFER,null)}function k(t,n,r){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=ee(n.stencilBuffer,a),s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=je(n);Me(n)?f.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,c,o,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,c,o,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,o,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,s,e.RENDERBUFFER,t)}else{let t=n.textures;for(let i=0;i{delete i.__boundDepthTexture,delete i.__depthDisposeCallback,e.removeEventListener(`dispose`,t)};e.addEventListener(`dispose`,t),i.__depthDisposeCallback=t}i.__boundDepthTexture=e}if(t.depthTexture&&!i.__autoAllocateDepthBuffer){if(a)throw Error(`target.depthTexture not supported in Cube render targets`);Ce(i.__webglFramebuffer,t)}else if(a){i.__webglDepthbuffer=[];for(let r=0;r<6;r++)if(n.bindFramebuffer(e.FRAMEBUFFER,i.__webglFramebuffer[r]),i.__webglDepthbuffer[r]===void 0)i.__webglDepthbuffer[r]=e.createRenderbuffer(),k(i.__webglDepthbuffer[r],t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=i.__webglDepthbuffer[r];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,a)}}else if(n.bindFramebuffer(e.FRAMEBUFFER,i.__webglFramebuffer),i.__webglDepthbuffer===void 0)i.__webglDepthbuffer=e.createRenderbuffer(),k(i.__webglDepthbuffer,t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,r=i.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,r),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,r)}n.bindFramebuffer(e.FRAMEBUFFER,null)}function Te(t,n,i){let a=r.get(t);n!==void 0&&Se(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),i!==void 0&&we(t)}function Ee(t){let i=t.texture,s=r.get(t),c=r.get(i);t.addEventListener(`dispose`,ne);let l=t.textures,u=t.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=e.createTexture()),c.__version=i.version,o.memory.textures++),u){s.__webglFramebuffer=[];for(let t=0;t<6;t++)if(i.mipmaps&&i.mipmaps.length>0){s.__webglFramebuffer[t]=[];for(let n=0;n0){s.__webglFramebuffer=[];for(let t=0;t0&&Me(t)===!1){s.__webglMultisampledFramebuffer=e.createFramebuffer(),s.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,s.__webglMultisampledFramebuffer);for(let n=0;n0)for(let r=0;r0)for(let n=0;n0){if(Me(t)===!1){let i=t.textures,a=t.width,o=t.height,s=e.COLOR_BUFFER_BIT,c=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,l=r.get(t),u=i.length>1;if(u)for(let t=0;t0&&t.has(`WEBGL_multisampled_render_to_texture`)===!0&&n.__useRenderToTexture!==!1}function Ne(e){let t=o.render.frame;y.get(e)!==t&&(y.set(e,t),e.update())}function Pe(e,t){let n=e.colorSpace,r=e.format,i=e.type;return e.isCompressedTexture===!0||e.isVideoTexture===!0||n!==`srgb-linear`&&n!==``&&(Tn.getTransfer(n)===`srgb`?(r!==1023||i!==1009)&&console.warn(`THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):console.error(`THREE.WebGLTextures: Unsupported texture color space:`,n)),t}function Fe(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement?(_.width=e.naturalWidth||e.width,_.height=e.naturalHeight||e.height):typeof VideoFrame<`u`&&e instanceof VideoFrame?(_.width=e.displayWidth,_.height=e.displayHeight):(_.width=e.width,_.height=e.height),_}this.allocateTextureUnit=ce,this.resetTextureUnits=se,this.setTexture2D=de,this.setTexture2DArray=fe,this.setTexture3D=pe,this.setTextureCube=me,this.rebindTextures=Te,this.setupRenderTarget=Ee,this.updateRenderTargetMipmap=De,this.updateMultisampleRenderTarget=Ae,this.setupDepthRenderbuffer=we,this.setupFrameBufferTexture=Se,this.useMultisampledRTT=Me}function kc(e,t){function n(n,r=``){let i,a=Tn.getTransfer(r);if(n===1009)return e.UNSIGNED_BYTE;if(n===1017)return e.UNSIGNED_SHORT_4_4_4_4;if(n===1018)return e.UNSIGNED_SHORT_5_5_5_1;if(n===35902)return e.UNSIGNED_INT_5_9_9_9_REV;if(n===35899)return e.UNSIGNED_INT_10F_11F_11F_REV;if(n===1010)return e.BYTE;if(n===1011)return e.SHORT;if(n===1012)return e.UNSIGNED_SHORT;if(n===1013)return e.INT;if(n===1014)return e.UNSIGNED_INT;if(n===1015)return e.FLOAT;if(n===1016)return e.HALF_FLOAT;if(n===1021)return e.ALPHA;if(n===1022)return e.RGB;if(n===1023)return e.RGBA;if(n===1024)return e.LUMINANCE;if(n===1025)return e.LUMINANCE_ALPHA;if(n===1026)return e.DEPTH_COMPONENT;if(n===1027)return e.DEPTH_STENCIL;if(n===1028)return e.RED;if(n===1029)return e.RED_INTEGER;if(n===1030)return e.RG;if(n===1031)return e.RG_INTEGER;if(n===1033)return e.RGBA_INTEGER;if(n===33776||n===33777||n===33778||n===33779)if(a===`srgb`)if(i=t.get(`WEBGL_compressed_texture_s3tc_srgb`),i!==null){if(n===33776)return i.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===33777)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===33778)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===33779)return i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(i=t.get(`WEBGL_compressed_texture_s3tc`),i!==null){if(n===33776)return i.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===33777)return i.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===33778)return i.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===33779)return i.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===35840||n===35841||n===35842||n===35843)if(i=t.get(`WEBGL_compressed_texture_pvrtc`),i!==null){if(n===35840)return i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===35841)return i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===35842)return i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===35843)return i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===36196||n===37492||n===37496)if(i=t.get(`WEBGL_compressed_texture_etc`),i!==null){if(n===36196||n===37492)return a===`srgb`?i.COMPRESSED_SRGB8_ETC2:i.COMPRESSED_RGB8_ETC2;if(n===37496)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:i.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===37808||n===37809||n===37810||n===37811||n===37812||n===37813||n===37814||n===37815||n===37816||n===37817||n===37818||n===37819||n===37820||n===37821)if(i=t.get(`WEBGL_compressed_texture_astc`),i!==null){if(n===37808)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:i.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===37809)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:i.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===37810)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:i.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===37811)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:i.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===37812)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:i.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===37813)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:i.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===37814)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:i.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===37815)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:i.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===37816)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:i.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===37817)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:i.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===37818)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:i.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===37819)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:i.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===37820)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:i.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===37821)return a===`srgb`?i.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:i.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===36492||n===36494||n===36495)if(i=t.get(`EXT_texture_compression_bptc`),i!==null){if(n===36492)return a===`srgb`?i.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:i.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===36494)return i.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===36495)return i.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===36283||n===36284||n===36285||n===36286)if(i=t.get(`EXT_texture_compression_rgtc`),i!==null){if(n===36492)return i.COMPRESSED_RED_RGTC1_EXT;if(n===36284)return i.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===36285)return i.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===36286)return i.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===1020?e.UNSIGNED_INT_24_8:e[n]===void 0?null:e[n]}return{convert:n}}var Ac=class extends pa{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},jc=class extends Wr{constructor(){super(),this.isGroup=!0,this.type=`Group`}},Mc={type:`move`},Nc=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new jc,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 jc,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new M,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new M),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new jc,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new M,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new M),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),s=.02,l=.005;c.inputState.pinching&&o>s+l?(c.inputState.pinching=!1,this.dispatchEvent({type:`pinchend`,handedness:e.handedness,target:this})):!c.inputState.pinching&&o<=s-l&&(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));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(Mc)))}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 jc;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}},Pc=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,Fc=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`,Ic=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){let r=new Pn,i=e.properties.get(r);i.__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,n=new aa({vertexShader:Pc,fragmentShader:Fc,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Ji(new Oa(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Lc=class extends Ft{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=new Ic,h=t.getContextAttributes(),g=null,_=null,v=[],y=[],x=new A,S=null,C=new pa;C.layers.enable(1),C.viewport=new Fn;let w=new pa;w.layers.enable(2),w.viewport=new Fn;let E=[C,w],D=new Ac;D.layers.enable(1),D.layers.enable(2);let ee=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.controllerAutoUpdate=!0,this.getController=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getGripSpace()},this.getHand=function(e){let t=v[e];return t===void 0&&(t=new Nc,v[e]=t),t.getHandSpace()};function ne(e){let t=y.indexOf(e.inputSource);if(t===-1)return;let n=v[t];n!==void 0&&(n.update(e.inputSource,e.frame,c||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function re(){r.removeEventListener(`select`,ne),r.removeEventListener(`selectstart`,ne),r.removeEventListener(`selectend`,ne),r.removeEventListener(`squeeze`,ne),r.removeEventListener(`squeezestart`,ne),r.removeEventListener(`squeezeend`,ne),r.removeEventListener(`end`,re),r.removeEventListener(`inputsourceschange`,ie);for(let e=0;e=0&&(y[r]=null,v[r]&&v[r].disconnect(n))}for(let t=0;t=y.length){y.push(n),r=e;break}else if(y[e]===null){y[e]=n,r=e;break}if(r===-1)break}let i=v[r];i&&i.connect(n)}}let ae=new M,se=new M;function ce(e,t,n){ae.setFromMatrixPosition(t.matrixWorld),se.setFromMatrixPosition(n.matrixWorld);let r=ae.distanceTo(se),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 de(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;m.texture!==null&&(m.depthNear>0&&(t=m.depthNear),m.depthFar>0&&(n=m.depthFar)),D.near=w.near=C.near=t,D.far=w.far=C.far=n,(ee!==D.near||O!==D.far)&&(r.updateRenderState({depthNear:D.near,depthFar:D.far}),ee=D.near,O=D.far);let i=e.parent,a=D.cameras;de(D,i);for(let e=0;e0&&(e.alphaTest.value=r.alphaTest);let i=t.get(r),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,Rc.copy(o),Rc.x*=-1,Rc.y*=-1,Rc.z*=-1,a.isCubeTexture&&a.isRenderTargetTexture===!1&&(Rc.y*=-1,Rc.z*=-1),e.envMapRotation.value.setFromMatrix4(zc.makeRotationFromEuler(Rc)),e.flipEnvMap.value=a.isCubeTexture&&a.isRenderTargetTexture===!1?-1:1,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 Vc(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;e0&&(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?console.warn(`THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.`):console.warn(`THREE.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 Hc=class{constructor(e={}){let{canvas:t=hn(),context:r=null,depth:i=!0,stencil:a=!1,alpha:o=!1,antialias:s=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:l=!1,powerPreference:u=`default`,failIfMajorPerformanceCaveat:d=!1}=e;this.isWebGLRenderer=!0;let f;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);f=r.getContextAttributes().alpha}else f=o;let p=new Uint32Array(4),m=new Int32Array(4),h=null,g=null,_=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=lt,this.toneMapping=0,this.toneMappingExposure=1;let x=this,S=!1,C=0,w=0,T=null,E=-1,ee=null,O=new Fn,te=new Fn,ne=null,re=new P(0),ie=0,ae=t.width,oe=t.height,se=1,ce=null,le=null,ue=new Fn(0,0,ae,oe),de=new Fn(0,0,ae,oe),fe=!1,pe=new Ta,me=!1,he=!1,ge=new N,_e=new N,ve=new M,ye=new Fn,be={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},xe=!1;function Se(){return T===null?se:1}let k=r;function Ce(e,n){return t.getContext(e,n)}try{let e={alpha:!0,depth:i,stencil:a,antialias:s,premultipliedAlpha:c,preserveDrawingBuffer:l,powerPreference:u,failIfMajorPerformanceCaveat:d};if(`setAttribute`in t&&t.setAttribute(`data-engine`,`three.js r${n}`),t.addEventListener(`webglcontextlost`,Xe,!1),t.addEventListener(`webglcontextrestored`,Ze,!1),t.addEventListener(`webglcontextcreationerror`,Qe,!1),k===null){let t=`webgl2`;if(k=Ce(t,e),k===null)throw Ce(t)?Error(`Error creating WebGL context with your selected attributes.`):Error(`Error creating WebGL context.`)}}catch(e){throw console.error(`THREE.WebGLRenderer: `+e.message),e}let we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){we=new co(k),we.init(),Ge=new kc(k,we),Te=new La(k,we,e,Ge),Ee=new xc(k),Te.reverseDepthBuffer&&Ee.buffers.depth.setReversed(!0),De=new fo(k),Oe=new rc,ke=new Oc(k,we,Ee,Oe,Te,Ge,De),Ae=new za(x),je=new so(x),Me=new Da(k),Ke=new Fa(k,Me),Ne=new lo(k,Me,De,Ke),Pe=new mo(k,Ne,Me,De),He=new po(k,Te,ke),ze=new Ra(Oe),Fe=new nc(x,Ae,je,we,Te,Ke,ze),Ie=new Bc(x,Oe),Le=new sc,Re=new mc(we),Ve=new Pa(x,Ae,je,Ee,Pe,f,c),Be=new yc(x,Pe,Te),qe=new Vc(k,De,Te,Ee),Ue=new Ia(k,we,De),We=new uo(k,we,De),De.programs=Fe.programs,x.capabilities=Te,x.extensions=we,x.properties=Oe,x.renderLists=Le,x.shadowMap=Be,x.state=Ee,x.info=De}Je();let Ye=new Lc(x,k);this.xr=Ye,this.getContext=function(){return k},this.getContextAttributes=function(){return k.getContextAttributes()},this.forceContextLoss=function(){let e=we.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=we.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return se},this.setPixelRatio=function(e){e!==void 0&&(se=e,this.setSize(ae,oe,!1))},this.getSize=function(e){return e.set(ae,oe)},this.setSize=function(e,n,r=!0){if(Ye.isPresenting){console.warn(`THREE.WebGLRenderer: Can't change size while VR device is presenting.`);return}ae=e,oe=n,t.width=Math.floor(e*se),t.height=Math.floor(n*se),r===!0&&(t.style.width=e+`px`,t.style.height=n+`px`),this.setViewport(0,0,e,n)},this.getDrawingBufferSize=function(e){return e.set(ae*se,oe*se).floor()},this.setDrawingBufferSize=function(e,n,r){ae=e,oe=n,se=r,t.width=Math.floor(e*r),t.height=Math.floor(n*r),this.setViewport(0,0,e,n)},this.getCurrentViewport=function(e){return e.copy(O)},this.getViewport=function(e){return e.copy(ue)},this.setViewport=function(e,t,n,r){e.isVector4?ue.set(e.x,e.y,e.z,e.w):ue.set(e,t,n,r),Ee.viewport(O.copy(ue).multiplyScalar(se).round())},this.getScissor=function(e){return e.copy(de)},this.setScissor=function(e,t,n,r){e.isVector4?de.set(e.x,e.y,e.z,e.w):de.set(e,t,n,r),Ee.scissor(te.copy(de).multiplyScalar(se).round())},this.getScissorTest=function(){return fe},this.setScissorTest=function(e){Ee.setScissorTest(fe=e)},this.setOpaqueSort=function(e){ce=e},this.setTransparentSort=function(e){le=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor.apply(Ve,arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha.apply(Ve,arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(T!==null){let t=T.texture.format;e=t===1033||t===1031||t===1029}if(e){let e=T.texture.type,t=e===1009||e===1014||e===1012||e===1020||e===1017||e===1018,n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(p[0]=i,p[1]=a,p[2]=o,p[3]=r,k.clearBufferuiv(k.COLOR,0,p)):(m[0]=i,m[1]=a,m[2]=o,m[3]=r,k.clearBufferiv(k.COLOR,0,m))}else r|=k.COLOR_BUFFER_BIT}t&&(r|=k.DEPTH_BUFFER_BIT,k.clearDepth(+!this.capabilities.reverseDepthBuffer)),n&&(r|=k.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),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.dispose=function(){t.removeEventListener(`webglcontextlost`,Xe,!1),t.removeEventListener(`webglcontextrestored`,Ze,!1),t.removeEventListener(`webglcontextcreationerror`,Qe,!1),Le.dispose(),Re.dispose(),Oe.dispose(),Ae.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Ye.dispose(),Ye.removeEventListener(`sessionstart`,at),Ye.removeEventListener(`sessionend`,ot),st.stop()};function Xe(e){e.preventDefault(),console.log(`THREE.WebGLRenderer: Context Lost.`),S=!0}function Ze(){console.log(`THREE.WebGLRenderer: Context Restored.`),S=!1;let e=De.autoReset,t=Be.enabled,n=Be.autoUpdate,r=Be.needsUpdate,i=Be.type;Je(),De.autoReset=e,Be.enabled=t,Be.autoUpdate=n,Be.needsUpdate=r,Be.type=i}function Qe(e){console.error(`THREE.WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function $e(e){let t=e.target;t.removeEventListener(`dispose`,$e),et(t)}function et(e){tt(e),Oe.remove(e)}function tt(e){let t=Oe.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=be);let o=i.isMesh&&i.matrixWorld.determinant()<0,s=vt(e,t,n,r,i);Ee.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.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;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(Ee.setLineWidth(r.wireframeLinewidth*Se()),g.setMode(k.LINES)):g.setMode(k.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),Ee.setLineWidth(e*Se()),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(i._multiDrawInstances!==null)g.renderMultiDrawInstances(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount,i._multiDrawInstances);else if(we.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?Me.get(c).bytesPerElement:1,o=Oe.get(r).currentProgram.getUniforms();for(let r=0;r{function n(){if(r.forEach(function(e){Oe.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}we.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new Ea;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Ye.setAnimationLoop(e),e===null?st.stop():st.start()},Ye.addEventListener(`sessionstart`,at),Ye.addEventListener(`sessionend`,ot),this.render=function(e,t){if(t!==void 0&&t.isCamera!==!0){console.error(`THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(S===!0)return;if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),Ye.enabled===!0&&Ye.isPresenting===!0&&(Ye.cameraAutoUpdate===!0&&Ye.updateCamera(t),t=Ye.getCamera()),e.isScene===!0&&e.onBeforeRender(x,e,t,T),g=Re.get(e,y.length),g.init(t),y.push(g),_e.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),pe.setFromProjectionMatrix(_e),he=this.localClippingEnabled,me=ze.init(this.clippingPlanes,he),h=Le.get(e,_.length),h.init(),_.push(h),Ye.enabled===!0&&Ye.isPresenting===!0){let e=x.xr.getDepthSensingMesh();e!==null&&ct(e,t,-1/0,x.sortObjects)}ct(e,t,0,x.sortObjects),h.finish(),x.sortObjects===!0&&h.sort(ce,le),xe=Ye.enabled===!1||Ye.isPresenting===!1||Ye.hasDepthSensing()===!1,xe&&Ve.addToRenderList(h,e),this.info.render.frame++,me===!0&&ze.beginShadows();let n=g.state.shadowsArray;Be.render(n,e,t),me===!0&&ze.endShadows(),this.info.autoReset===!0&&this.info.reset();let r=h.opaque,i=h.transmissive;if(g.setupLights(),t.isArrayCamera){let n=t.cameras;if(i.length>0)for(let t=0,a=n.length;t0&&ft(r,i,e,t),xe&&Ve.render(e),dt(h,e,t);T!==null&&(ke.updateMultisampleRenderTarget(T),ke.updateRenderTargetMipmap(T)),e.isScene===!0&&e.onAfterRender(x,e,t),Ke.resetDefaultState(),E=-1,ee=null,y.pop(),y.length>0?(g=y[y.length-1],me===!0&&ze.setGlobalState(x.clippingPlanes,g.state.camera)):g=null,_.pop(),h=_.length>0?_[_.length-1]:null};function ct(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.isLight)g.pushLight(e),e.castShadow&&g.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||pe.intersectsSprite(e)){r&&ye.setFromMatrixPosition(e.matrixWorld).applyMatrix4(_e);let t=Pe.update(e),i=e.material;i.visible&&h.push(e,t,i,n,ye.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||pe.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),ye.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),ye.copy(e.boundingSphere.center)),ye.applyMatrix4(e.matrixWorld).applyMatrix4(_e)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a0&&pt(i,t,n),a.length>0&&pt(a,t,n),o.length>0&&pt(o,t,n),Ee.buffers.depth.setTest(!0),Ee.buffers.depth.setMask(!0),Ee.buffers.color.setMask(!0),Ee.setPolygonOffset(!1)}function ft(e,t,n,r){if((n.isScene===!0?n.overrideMaterial:null)!==null)return;g.state.transmissionRenderTarget[r.id]===void 0&&(g.state.transmissionRenderTarget[r.id]=new Ln(1,1,{generateMipmaps:!0,type:we.has(`EXT_color_buffer_half_float`)||we.has(`EXT_color_buffer_float`)?D:b,minFilter:v,samples:4,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Tn.workingColorSpace}));let i=g.state.transmissionRenderTarget[r.id],o=r.viewport||O;i.setSize(o.z,o.w);let s=x.getRenderTarget();x.setRenderTarget(i),x.getClearColor(re),ie=x.getClearAlpha(),ie<1&&x.setClearColor(16777215,.5),x.clear(),xe&&Ve.render(n);let c=x.toneMapping;x.toneMapping=0;let l=r.viewport;if(r.viewport!==void 0&&(r.viewport=void 0),g.setupLightsView(r),me===!0&&ze.setGlobalState(x.clippingPlanes,r),pt(e,n,r),ke.updateMultisampleRenderTarget(i),ke.updateRenderTargetMipmap(i),we.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let i=0,a=t.length;i0),d=!!n.morphAttributes.position,f=!!n.morphAttributes.normal,p=!!n.morphAttributes.color,m=0;r.toneMapped&&(T===null||T.isXRRenderTarget===!0)&&(m=x.toneMapping);let h=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=h===void 0?0:h.length,v=Oe.get(r),y=g.state.lights;if(me===!0&&(he===!0||e!==ee)){let t=e===ee&&r.id===E;ze.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===c?r.fog===!0&&v.fog!==a||v.numClippingPlanes!==void 0&&(v.numClippingPlanes!==ze.numPlanes||v.numIntersection!==ze.numIntersection)?b=!0:v.vertexAlphas===l&&v.vertexTangents===u&&v.morphTargets===d&&v.morphNormals===f&&v.morphColors===p&&v.toneMapping===m?v.morphTargetsCount!==_&&(b=!0):b=!0:b=!0:b=!0:(b=!0,v.__version=r.version);let S=v.currentProgram;b===!0&&(S=ht(r,t,i));let C=!1,w=!1,D=!1,O=S.getUniforms(),te=v.uniforms;if(Ee.useProgram(S.program)&&(C=!0,w=!0,D=!0),(r.id!==E||r._forceRefresh)&&(E=r.id,w=!0,r._forceRefresh=!1),C||ee!==e){Te.reverseDepthBuffer?(ge.copy(e.projectionMatrix),yn(ge),bn(ge),O.setValue(k,`projectionMatrix`,ge)):O.setValue(k,`projectionMatrix`,e.projectionMatrix),O.setValue(k,`viewMatrix`,e.matrixWorldInverse);let t=O.map.cameraPosition;t!==void 0&&t.setValue(k,ve.setFromMatrixPosition(e.matrixWorld)),Te.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),ee!==e&&(ee=e,w=!0,D=!0)}if(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,ke))}i.isBatchedMesh&&(O.setOptional(k,i,`batchingTexture`),O.setValue(k,`batchingTexture`,i._matricesTexture,ke),O.setOptional(k,i,`batchingIdTexture`),O.setValue(k,`batchingIdTexture`,i._indirectTexture,ke),O.setOptional(k,i,`batchingColorTexture`),i._colorsTexture!==null&&O.setValue(k,`batchingColorTexture`,i._colorsTexture,ke));let ne=n.morphAttributes;if((ne.position!==void 0||ne.normal!==void 0||ne.color!==void 0)&&He.update(i,n,S),(w||v.receiveShadow!==i.receiveShadow)&&(v.receiveShadow=i.receiveShadow,O.setValue(k,`receiveShadow`,i.receiveShadow)),r.isMeshGouraudMaterial&&r.envMap!==null&&(te.envMap.value=c,te.flipEnvMap.value=c.isCubeTexture&&c.isRenderTargetTexture===!1?-1:1),r.isMeshStandardMaterial&&r.envMap===null&&t.environment!==null&&(te.envMapIntensity.value=t.environmentIntensity),w&&(O.setValue(k,`toneMappingExposure`,x.toneMappingExposure),v.needsLights&&yt(te,D),a&&r.fog===!0&&Ie.refreshFogUniforms(te,a),Ie.refreshMaterialUniforms(te,r,se,oe,g.state.transmissionRenderTarget[e.id]),Ss.upload(k,gt(v),te,ke)),r.isShaderMaterial&&r.uniformsNeedUpdate===!0&&(Ss.upload(k,gt(v),te,ke),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.isShaderMaterial||r.isRawShaderMaterial){let e=r.uniformsGroups;for(let t=0,n=e.length;t0&&ke.useMultisampledRTT(e)===!1?Oe.get(e).__webglMultisampledFramebuffer:Array.isArray(l)?l[n]:l,O.copy(e.viewport),te.copy(e.scissor),ne=e.scissorTest}else O.copy(ue).multiplyScalar(se).floor(),te.copy(de).multiplyScalar(se).floor(),ne=fe;if(Ee.bindFramebuffer(k.FRAMEBUFFER,i)&&r&&Ee.drawBuffers(e,i),Ee.viewport(O),Ee.scissor(te),Ee.setScissorTest(ne),a){let r=Oe.get(e.texture);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(o){let r=Oe.get(e.texture),i=t||0;k.framebufferTextureLayer(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,r.__webglTexture,n||0,i)}E=-1},this.readRenderTargetPixels=function(e,t,n,r,i,a,o){if(!(e&&e.isWebGLRenderTarget)){console.error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let s=Oe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(s=s[o]),s){Ee.bindFramebuffer(k.FRAMEBUFFER,s);try{let o=e.texture,s=o.format,c=o.type;if(!Te.textureFormatReadable(s)){console.error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!Te.textureTypeReadable(c)){console.error(`THREE.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,Ge.convert(s),Ge.convert(c),a)}finally{let e=T===null?null:Oe.get(T).__webglFramebuffer;Ee.bindFramebuffer(k.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,r,i,a,o){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let s=Oe.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&o!==void 0&&(s=s[o]),s){let o=e.texture,c=o.format,l=o.type;if(!Te.textureFormatReadable(c))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!Te.textureTypeReadable(l))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);if(t>=0&&t<=e.width-r&&n>=0&&n<=e.height-i){Ee.bindFramebuffer(k.FRAMEBUFFER,s);let e=k.createBuffer();k.bindBuffer(k.PIXEL_PACK_BUFFER,e),k.bufferData(k.PIXEL_PACK_BUFFER,a.byteLength,k.STREAM_READ),k.readPixels(t,n,r,i,Ge.convert(c),Ge.convert(l),0);let o=T===null?null:Oe.get(T).__webglFramebuffer;Ee.bindFramebuffer(k.FRAMEBUFFER,o);let u=k.fenceSync(k.SYNC_GPU_COMMANDS_COMPLETE,0);return k.flush(),await vn(k,u,4),k.bindBuffer(k.PIXEL_PACK_BUFFER,e),k.getBufferSubData(k.PIXEL_PACK_BUFFER,0,a),k.deleteBuffer(e),k.deleteSync(u),a}else throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyFramebufferToTexture function signature has changed.`),t=arguments[0]||null,e=arguments[1]);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;ke.setTexture2D(e,0),k.copyTexSubImage2D(k.TEXTURE_2D,n,0,0,o,s,i,a),Ee.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyTextureToTexture function signature has changed.`),r=arguments[0]||null,e=arguments[1],t=arguments[2],i=arguments[3]||0,n=null);let a,o,s,c,l,u;n===null?(a=e.image.width,o=e.image.height,s=0,c=0):(a=n.max.x-n.min.x,o=n.max.y-n.min.y,s=n.min.x,c=n.min.y),r===null?(l=0,u=0):(l=r.x,u=r.y);let d=Ge.convert(t.format),f=Ge.convert(t.type);ke.setTexture2D(t,0),k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),k.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let p=k.getParameter(k.UNPACK_ROW_LENGTH),m=k.getParameter(k.UNPACK_IMAGE_HEIGHT),h=k.getParameter(k.UNPACK_SKIP_PIXELS),g=k.getParameter(k.UNPACK_SKIP_ROWS),_=k.getParameter(k.UNPACK_SKIP_IMAGES),v=e.isCompressedTexture?e.mipmaps[i]:e.image;k.pixelStorei(k.UNPACK_ROW_LENGTH,v.width),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,v.height),k.pixelStorei(k.UNPACK_SKIP_PIXELS,s),k.pixelStorei(k.UNPACK_SKIP_ROWS,c),e.isDataTexture?k.texSubImage2D(k.TEXTURE_2D,i,l,u,a,o,d,f,v.data):e.isCompressedTexture?k.compressedTexSubImage2D(k.TEXTURE_2D,i,l,u,v.width,v.height,d,v.data):k.texSubImage2D(k.TEXTURE_2D,i,l,u,a,o,d,f,v),k.pixelStorei(k.UNPACK_ROW_LENGTH,p),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,m),k.pixelStorei(k.UNPACK_SKIP_PIXELS,h),k.pixelStorei(k.UNPACK_SKIP_ROWS,g),k.pixelStorei(k.UNPACK_SKIP_IMAGES,_),i===0&&t.generateMipmaps&&k.generateMipmap(k.TEXTURE_2D),Ee.unbindTexture()},this.copyTextureToTexture3D=function(e,t,n=null,r=null,i=0){e.isTexture!==!0&&(_n(`WebGLRenderer: copyTextureToTexture3D function signature has changed.`),n=arguments[0]||null,r=arguments[1]||null,e=arguments[2],t=arguments[3],i=arguments[4]||0);let a,o,s,c,l,u,d,f,p,m=e.isCompressedTexture?e.mipmaps[i]:e.image;n===null?(a=m.width,o=m.height,s=m.depth,c=0,l=0,u=0):(a=n.max.x-n.min.x,o=n.max.y-n.min.y,s=n.max.z-n.min.z,c=n.min.x,l=n.min.y,u=n.min.z),r===null?(d=0,f=0,p=0):(d=r.x,f=r.y,p=r.z);let h=Ge.convert(t.format),g=Ge.convert(t.type),_;if(t.isData3DTexture)ke.setTexture3D(t,0),_=k.TEXTURE_3D;else if(t.isDataArrayTexture||t.isCompressedArrayTexture)ke.setTexture2DArray(t,0),_=k.TEXTURE_2D_ARRAY;else{console.warn(`THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.`);return}k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,t.flipY),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),k.pixelStorei(k.UNPACK_ALIGNMENT,t.unpackAlignment);let v=k.getParameter(k.UNPACK_ROW_LENGTH),y=k.getParameter(k.UNPACK_IMAGE_HEIGHT),b=k.getParameter(k.UNPACK_SKIP_PIXELS),x=k.getParameter(k.UNPACK_SKIP_ROWS),S=k.getParameter(k.UNPACK_SKIP_IMAGES);k.pixelStorei(k.UNPACK_ROW_LENGTH,m.width),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,m.height),k.pixelStorei(k.UNPACK_SKIP_PIXELS,c),k.pixelStorei(k.UNPACK_SKIP_ROWS,l),k.pixelStorei(k.UNPACK_SKIP_IMAGES,u),e.isDataTexture||e.isData3DTexture?k.texSubImage3D(_,i,d,f,p,a,o,s,h,g,m.data):t.isCompressedArrayTexture?k.compressedTexSubImage3D(_,i,d,f,p,a,o,s,h,m.data):k.texSubImage3D(_,i,d,f,p,a,o,s,h,g,m),k.pixelStorei(k.UNPACK_ROW_LENGTH,v),k.pixelStorei(k.UNPACK_IMAGE_HEIGHT,y),k.pixelStorei(k.UNPACK_SKIP_PIXELS,b),k.pixelStorei(k.UNPACK_SKIP_ROWS,x),k.pixelStorei(k.UNPACK_SKIP_IMAGES,S),i===0&&t.generateMipmaps&&k.generateMipmap(_),Ee.unbindTexture()},this.initRenderTarget=function(e){Oe.get(e).__webglFramebuffer===void 0&&ke.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?ke.setTextureCube(e,0):e.isData3DTexture?ke.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?ke.setTexture2DArray(e,0):ke.setTexture2D(e,0),Ee.unbindTexture()},this.resetState=function(){C=0,w=0,T=null,Ee.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return Nt}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=e===`display-p3`?`display-p3`:`srgb`,t.unpackColorSpace=Tn.workingColorSpace===`display-p3-linear`?`display-p3`:`srgb`}},Uc=class e{constructor(e,t=25e-5){this.isFogExp2=!0,this.name=``,this.color=new P(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}}},Wc=class e{constructor(e,t=1,n=1e3){this.isFog=!0,this.name=``,this.color=new P(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}}},Gc=class extends Wr{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 Dr,this.environmentIntensity=1,this.environmentRotation=new Dr,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}},Kc=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=Ct,this.updateRanges=[],this.version=0,this.uuid=Bt()}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;re.far||t.push({distance:s,point:Zc.clone(),uv:ii.getInterpolation(Zc,rl,il,al,ol,sl,cl,new A),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 ul(e,t,n,r,i,a){el.subVectors(e,n).addScalar(.5).multiply(r),i===void 0?tl.copy(el):(tl.x=a*el.x-i*el.y,tl.y=i*el.x+a*el.y),e.copy(t),e.x+=tl.x,e.y+=tl.y,e.applyMatrix4(nl)}var dl=new M,fl=new M,pl=class extends Wr{constructor(){super(),this._currentLevel=0,this.type=`LOD`,Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,n=t.length;e0){let n,r;for(n=1,r=t.length;n0){dl.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(dl);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){dl.setFromMatrixPosition(e.matrixWorld),fl.setFromMatrixPosition(this.matrixWorld);let n=dl.distanceTo(fl)/e.zoom;t[0].object.visible=!0;let r,i;for(r=1,i=t.length;r=e)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let a=r[this.index];i.push(a),this.index++,a.start=e.start,a.count=e.count,a.z=t,a.index=n}reset(){this.list.length=0,this.index=0}},Vl=new N,Hl=new N,Ul=new N,Wl=new P(1,1,1),Gl=new N,Kl=new Ta,ql=new Gn,Jl=new lr,Yl=new M,Xl=new M,Zl=new M,Ql=new Bl,$l=new Ji,eu=[];function tu(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;a65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new bi(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error(`BatchedMesh: All geometries must consistently have "index".`);for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`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(`BatchedMesh: All attributes must have a consistent itemSize and normalized value.`)}}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Gn);let e=this.boundingBox,t=this._drawInfo;e.makeEmpty();for(let n=0,r=t.length;n=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw Error(`BatchedMesh: Maximum item count reached.`);let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(n=this._availableInstanceIds.pop(),this._drawInfo[n]=t):(n=this._drawInfo.length,this._drawInfo.push(t));let r=this._matricesTexture,i=r.image.data;Ul.toArray(i,n*16),r.needsUpdate=!0;let a=this._colorsTexture;return a&&(Wl.toArray(a.image.data,n*4),a.needsUpdate=!0),n}addGeometry(e,t=-1,n=-1){if(this._initializeGeometry(e),this._validateGeometry(e),this._drawInfo.length>=this._maxInstanceCount)throw Error(`BatchedMesh: Maximum item count reached.`);let r={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1},i=null,a=this._reservedRanges,o=this._drawRanges,s=this._bounds;this._geometryCount!==0&&(i=a[a.length-1]),t===-1?r.vertexCount=e.getAttribute(`position`).count:r.vertexCount=t,i===null?r.vertexStart=0:r.vertexStart=i.vertexStart+i.vertexCount;let c=e.getIndex(),l=c!==null;if(l&&(n===-1?r.indexCount=c.count:r.indexCount=n,i===null?r.indexStart=0:r.indexStart=i.indexStart+i.indexCount),r.indexStart!==-1&&r.indexStart+r.indexCount>this._maxIndexCount||r.vertexStart+r.vertexCount>this._maxVertexCount)throw Error(`BatchedMesh: Reserved space request exceeds the maximum buffer size.`);let u=this._geometryCount;return this._geometryCount++,a.push(r),o.push({start:l?r.indexStart:r.vertexStart,count:-1}),s.push({boxInitialized:!1,box:new Gn,sphereInitialized:!1,sphere:new lr}),this.setGeometryAt(u,e),u}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error(`BatchedMesh: Maximum geometry count reached.`);this._validateGeometry(t);let n=this.geometry,r=n.getIndex()!==null,i=n.getIndex(),a=t.getIndex(),o=this._reservedRanges[e];if(r&&a.count>o.indexCount||t.attributes.position.count>o.vertexCount)throw Error(`BatchedMesh: Reserved space not large enough for provided geometry.`);let s=o.vertexStart,c=o.vertexCount;for(let e in n.attributes){let r=t.getAttribute(e),i=n.getAttribute(e);tu(r,i,s);let a=r.itemSize;for(let e=r.count,t=c;e=t.length||t[e].active===!1?this:(t[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this)}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;let n=this._bounds[e],r=n.box,i=this.geometry;if(n.boxInitialized===!1){r.makeEmpty();let t=i.index,a=i.attributes.position,o=this._drawRanges[e];for(let e=o.start,n=o.start+o.count;e=this._geometryCount)return null;let n=this._bounds[e],r=n.sphere,i=this.geometry;if(n.sphereInitialized===!1){r.makeEmpty(),this.getBoundingBoxAt(e,ql),ql.getCenter(r.center);let t=i.index,a=i.attributes.position,o=this._drawRanges[e],s=0;for(let e=o.start,n=o.start+o.count;e=n.length||n[e].active===!1?this:(t.toArray(i,e*16),r.needsUpdate=!0,this)}getMatrixAt(e,t){let n=this._drawInfo,r=this._matricesTexture.image.data;return e>=n.length||n[e].active===!1?null:t.fromArray(r,e*16)}setColorAt(e,t){this._colorsTexture===null&&this._initColorsTexture();let n=this._colorsTexture,r=this._colorsTexture.image.data,i=this._drawInfo;return e>=i.length||i[e].active===!1?this:(t.toArray(r,e*4),n.needsUpdate=!0,this)}getColorAt(e,t){let n=this._colorsTexture.image.data,r=this._drawInfo;return e>=r.length||r[e].active===!1?null:t.fromArray(n,e*4)}setVisibleAt(e,t){let n=this._drawInfo;return e>=n.length||n[e].active===!1||n[e].visible===t?this:(n[e].visible=t,this._visibilityChanged=!0,this)}getVisibleAt(e){let t=this._drawInfo;return e>=t.length||t[e].active===!1?!1:t[e].visible}setGeometryIdAt(e,t){let n=this._drawInfo;return e>=n.length||n[e].active===!1||t<0||t>=this._geometryCount?null:(n[e].geometryIndex=t,this)}getGeometryIdAt(e){let t=this._drawInfo;return e>=t.length||t[e].active===!1?-1:t[e].geometryIndex}getGeometryRangeAt(e,t={}){if(e<0||e>=this._geometryCount)return null;let n=this._drawRanges[e];return t.start=n.start,t.count=n.count,t}raycast(e,t){let n=this._drawInfo,r=this._drawRanges,i=this.matrixWorld,a=this.geometry;$l.material=this.material,$l.geometry.index=a.index,$l.geometry.attributes=a.attributes,$l.geometry.boundingBox===null&&($l.geometry.boundingBox=new Gn),$l.geometry.boundingSphere===null&&($l.geometry.boundingSphere=new lr);for(let a=0,o=n.length;a({...e})),this._reservedRanges=e._reservedRanges.map(e=>({...e})),this._drawInfo=e._drawInfo.map(e=>({...e})),this._bounds=e._bounds.map(e=>({boxInitialized:e.boxInitialized,box:e.box.clone(),sphereInitialized:e.sphereInitialized,sphere:e.sphere.clone()})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.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(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}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=this._drawInfo,c=this._multiDrawStarts,l=this._multiDrawCounts,u=this._drawRanges,d=this.perObjectFrustumCulled,f=this._indirectTexture,p=f.image.data;d&&(Gl.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),Kl.setFromProjectionMatrix(Gl,e.coordinateSystem));let m=0;if(this.sortObjects){Hl.copy(this.matrixWorld).invert(),Yl.setFromMatrixPosition(n.matrixWorld).applyMatrix4(Hl),Xl.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(Hl);for(let e=0,t=s.length;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er)return;lu.applyMatrix4(e.matrixWorld);let s=t.ray.origin.distanceTo(lu);if(!(st.far))return{distance:s,point:uu.clone().applyMatrix4(e.matrixWorld),index:i,face:null,faceIndex:null,barycoord:null,object:e}}var pu=new M,mu=new M,hu=class extends du{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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var wu=class extends Pn{constructor(e,t,n,r,i,a,o,s,c){super(e,t,n,r,i,a,o,s,c),this.isVideoTexture=!0,this.minFilter=a===void 0?h:a,this.magFilter=i===void 0?h:i,this.generateMipmaps=!1;let l=this;function u(){l.needsUpdate=!0,e.requestVideoFrameCallback(u)}`requestVideoFrameCallback`in e&&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)}},Tu=class extends Pn{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=u,this.minFilter=u,this.generateMipmaps=!1,this.needsUpdate=!0}},Eu=class extends Pn{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}},Du=class extends Eu{constructor(e,t,n,r,i,a){super(e,t,n,i,a),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=c,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ou=class extends Eu{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}},ku=class extends Pn{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}},Au=class{constructor(){this.type=`Curve`,this.arcLengthDivisions=200}getPoint(){return console.warn(`THREE.Curve: .getPoint() not implemented.`),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,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){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 A:new M);return s.copy(o).sub(a).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new M,r=[],i=[],a=[],o=new M,s=new N;for(let t=0;t<=e;t++){let n=t/e;r[t]=this.getTangentAt(n,new M)}i[0]=new M,a[0]=new M;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(Vt(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(Vt(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.6,type:`Curve`,generator:`Curve.toJSON`}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},ju=class extends Au{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 A){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}},Mu=class extends ju{constructor(e,t,n,r,i,a){super(e,t,n,n,r,i,a),this.isArcCurve=!0,this.type=`ArcCurve`}};function Nu(){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 Pu=new M,Fu=new Nu,Iu=new Nu,Lu=new Nu,Ru=class extends Au{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 M){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]:(Pu.subVectors(r[0],r[1]).add(r[0]),c=Pu);let u=r[o%i],d=r[(o+1)%i];if(this.closed||o+2r.length-2?r.length-1:a+1],u=r[a>r.length-3?r.length-1:a+2];return n.set(zu(o,s.x,c.x,l.x,u.x),zu(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){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;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let 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}},ad=class e extends Ii{constructor(e=[new A(0,-.5),new A(.5,0),new A(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=Vt(r,0,Math.PI*2);let i=[],a=[],o=[],s=[],c=[],l=1/t,u=new M,d=new A,f=new M,p=new M,m=new M,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;n0&&v(!0),t>0&&v(!1)),this.setIndex(l),this.setAttribute(`position`,new F(u,3)),this.setAttribute(`normal`,new F(d,3)),this.setAttribute(`uv`,new F(f,2));function _(){let a=new M,_=new M,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;n0&&(l.push(i,a,s),v+=3),t>0&&(l.push(a,o,s),v+=3)}c.addGroup(g,v,0),g+=v}function v(n){let i=p,a=new A,m=new M,_=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.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 M,t=new M,n=new M,r=new M,o=new A,s=new A,c=new A;for(let l=0,u=0;l80*n){s=l=e[0],c=u=e[1];for(let t=n;tl&&(l=d),f>u&&(u=f);p=Math.max(l-s,u-c),p=p===0?0:32767/p}return xd(a,o,n,s,c,p,0),o}};function yd(e,t,n,r,i){let a,o;if(i===Yd(e,t,n,r)>0)for(a=t;a=t;a-=r)o=Kd(a,e[a],e[a+1],o);return o&&Rd(o,o.next)&&(qd(o),o=o.next),o}function bd(e,t){if(!e)return e;t||=e;let n=e,r;do if(r=!1,!n.steiner&&(Rd(n,n.next)||Ld(n.prev,n,n.next)===0)){if(qd(n),n=t=n.prev,n===n.next)break;r=!0}else n=n.next;while(r||n!==t);return t}function xd(e,t,n,r,i,a,o){if(!e)return;!o&&a&&jd(e,r,i,a);let s=e,c,l;for(;e.prev!==e.next;){if(c=e.prev,l=e.next,a?Cd(e,r,i,a):Sd(e)){t.push(c.i/n|0),t.push(e.i/n|0),t.push(l.i/n|0),qd(e),e=l.next,s=l.next;continue}if(e=l,e===s){o?o===1?(e=wd(bd(e),t,n),xd(e,t,n,r,i,a,2)):o===2&&Td(e,t,n,r,i,a):xd(bd(e),t,n,r,i,a,1);break}}}function Sd(e){let t=e.prev,n=e,r=e.next;if(Ld(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=ia?i>o?i:o:a>o?a:o,p=s>c?s>l?s:l:c>l?c:l,m=r.next;for(;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&Fd(i,s,a,c,o,l,m.x,m.y)&&Ld(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function Cd(e,t,n,r){let i=e.prev,a=e,o=e.next;if(Ld(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=sc?s>l?s:l:c>l?c:l,g=u>d?u>f?u:f:d>f?d:f,_=Nd(p,m,t,n,r),v=Nd(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&&Fd(s,u,c,d,l,f,y.x,y.y)&&Ld(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&&Fd(s,u,c,d,l,f,b.x,b.y)&&Ld(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&&Fd(s,u,c,d,l,f,y.x,y.y)&&Ld(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&&Fd(s,u,c,d,l,f,b.x,b.y)&&Ld(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function wd(e,t,n){let r=e;do{let i=r.prev,a=r.next.next;!Rd(i,a)&&zd(i,r,r.next,a)&&Ud(i,a)&&Ud(a,i)&&(t.push(i.i/n|0),t.push(r.i/n|0),t.push(a.i/n|0),qd(r),qd(r.next),r=e=a),r=r.next}while(r!==e);return bd(r)}function Td(e,t,n,r,i,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&Id(o,e)){let s=Gd(o,e);o=bd(o,o.next),s=bd(s,s.next),xd(o,t,n,r,i,a,0),xd(s,t,n,r,i,a,0);return}e=e.next}o=o.next}while(o!==e)}function Ed(e,t,n,r){let i=[],a,o,s,c,l;for(a=0,o=t.length;a=n.next.y&&n.next.y!==n.y){let e=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=a&&e>r&&(r=e,i=n.x=n.x&&n.x>=c&&a!==n.x&&Fd(oi.x||n.x===i.x&&Ad(i,n)))&&(i=n,u=d)),n=n.next;while(n!==s);return i}function Ad(e,t){return Ld(e.prev,e,t.prev)<0&&Ld(t.next,e,e.next)<0}function jd(e,t,n,r){let i=e;do i.z===0&&(i.z=Nd(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,Md(i)}function Md(e){let t,n,r,i,a,o,s,c,l=1;do{for(n=e,e=null,a=null,o=0;n;){for(o++,r=n,s=0,t=0;t0||c>0&&r;)s!==0&&(c===0||!r||n.z<=r.z)?(i=n,n=n.nextZ,s--):(i=r,r=r.nextZ,c--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;n=r}a.nextZ=null,l*=2}while(o>1);return e}function Nd(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 Pd(e){let t=e,n=e;do(t.x=(e-o)*(a-s)&&(e-o)*(r-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(i-o)*(r-s)}function Id(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Hd(e,t)&&(Ud(e,t)&&Ud(t,e)&&Wd(e,t)&&(Ld(e.prev,e,t.prev)||Ld(e,t.prev,t))||Rd(e,t)&&Ld(e.prev,e,e.next)>0&&Ld(t.prev,t,t.next)>0)}function Ld(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Rd(e,t){return e.x===t.x&&e.y===t.y}function zd(e,t,n,r){let i=Vd(Ld(e,t,n)),a=Vd(Ld(e,t,r)),o=Vd(Ld(n,r,e)),s=Vd(Ld(n,r,t));return!!(i!==a&&o!==s||i===0&&Bd(e,n,t)||a===0&&Bd(e,r,t)||o===0&&Bd(n,e,r)||s===0&&Bd(n,t,r))}function Bd(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 Vd(e){return e>0?1:e<0?-1:0}function Hd(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&&zd(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function Ud(e,t){return Ld(e.prev,e,e.next)<0?Ld(e,t,e.next)>=0&&Ld(e,e.prev,t)>=0:Ld(e,t,e.prev)<0||Ld(e,e.next,t)<0}function Wd(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 Gd(e,t){let n=new Jd(e.i,e.x,e.y),r=new Jd(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 Kd(e,t,n,r){let i=new Jd(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 qd(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 Jd(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Yd(e,t,n,r){let i=0;for(let a=t,o=n-r;a2&&e[t-1].equals(e[0])&&e.pop()}function Qd(e,t){for(let n=0;n2**-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 A(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 A(r/a,i/a)}let ne=[];for(let e=0,t=E.length,n=t-1,r=e+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=E.length;e=0;){let r=n,i=n-1;i<0&&(i=e.length-1);for(let e=0,n=s+p*2;e0)&&f.push(t,i,c),(e!==n-1||s0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:``,PHYSICAL:``},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},bf=class extends di{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type=`MeshPhongMaterial`,this.color=new P(16777215),this.specular=new P(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Dr,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},xf=class extends di{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:``},this.type=`MeshToonMaterial`,this.color=new P(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},Sf=class extends di{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type=`MeshNormalMaterial`,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}},Cf=class extends di{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type=`MeshLambertMaterial`,this.color=new P(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new P(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Dr,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},wf=class extends di{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:``},this.type=`MeshMatcapMaterial`,this.color=new P(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new A(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:``},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}},Tf=class extends ru{constructor(e){super(),this.isLineDashedMaterial=!0,this.type=`LineDashedMaterial`,this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};function Ef(e,t,n){return!e||!n&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT==`number`?new t(e):Array.prototype.slice.call(e)}function Df(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Of(e){function t(t,n){return e[t]-e[n]}let n=e.length,r=Array(n);for(let e=0;e!==n;++e)r[e]=e;return r.sort(t),r}function kf(e,t,n){let r=e.length,i=new e.constructor(r);for(let a=0,o=0;o!==r;++a){let r=n[a]*t;for(let n=0;n!==t;++n)i[o++]=e[r+n]}return i}function Af(e,t,n,r){let i=1,a=e[0];for(;a!==void 0&&a[r]===void 0;)a=e[i++];if(a===void 0)return;let o=a[r];if(o!==void 0)if(Array.isArray(o))do o=a[r],o!==void 0&&(t.push(a.time),n.push.apply(n,o)),a=e[i++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[r],o!==void 0&&(t.push(a.time),o.toArray(n,n.length)),a=e[i++];while(a!==void 0);else do o=a[r],o!==void 0&&(t.push(a.time),n.push(o)),a=e[i++];while(a!==void 0)}function jf(e,t,n,r,i=30){let a=e.clone();a.name=t;let o=[];for(let e=0;e=r)){c.push(t.times[e]);for(let n=0;na.tracks[e].times[0]&&(s=a.tracks[e].times[0]);for(let e=0;e=r.times[d]){let e=d*c+s,t=e+c-s;f=r.values.slice(e,t)}else{let e=r.createInterpolant(),t=s,n=c-s;e.evaluate(a),f=e.resultBuffer.slice(t,n)}i===`quaternion`&&new Hn().fromArray(f).normalize().conjugate().toArray(f);let p=o.times.length;for(let e=0;e=i)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Df(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===$e,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Rf.prototype.TimeBufferType=Float32Array,Rf.prototype.ValueBufferType=Float32Array,Rf.prototype.DefaultInterpolation=Qe;var zf=class extends Rf{constructor(e,t,n){super(e,t,n)}};zf.prototype.ValueTypeName=`bool`,zf.prototype.ValueBufferType=Array,zf.prototype.DefaultInterpolation=Ze,zf.prototype.InterpolantFactoryMethodLinear=void 0,zf.prototype.InterpolantFactoryMethodSmooth=void 0;var Bf=class extends Rf{};Bf.prototype.ValueTypeName=`color`;var Vf=class extends Rf{};Vf.prototype.ValueTypeName=`number`;var Hf=class extends Pf{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)Hn.slerpFlat(i,0,a,c-o,a,c,s);return i}},Uf=class extends Rf{InterpolantFactoryMethodLinear(e){return new Hf(this.times,this.values,this.getValueSize(),e)}};Uf.prototype.ValueTypeName=`quaternion`,Uf.prototype.InterpolantFactoryMethodSmooth=void 0;var Wf=class extends Rf{constructor(e,t,n){super(e,t,n)}};Wf.prototype.ValueTypeName=`string`,Wf.prototype.ValueBufferType=Array,Wf.prototype.DefaultInterpolation=Ze,Wf.prototype.InterpolantFactoryMethodLinear=void 0,Wf.prototype.InterpolantFactoryMethodSmooth=void 0;var Gf=class extends Rf{};Gf.prototype.ValueTypeName=`vector`;var Kf=class{constructor(e=``,t=-1,n=[],r=rt){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=Bt(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,r=1/(e.fps||1);for(let e=0,i=n.length;e!==i;++e)t.push(Jf(n[e]).scale(r));let i=new this(e.name,e.duration,t,e.blendMode);return i.uuid=e.uuid,i}static toJSON(e){let t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=n.length;e!==r;++e)t.push(Rf.toJSON(n[e]));return r}static CreateFromMorphTargetSequence(e,t,n,r){let i=t.length,a=[];for(let e=0;e1){let e=a[1],t=r[e];t||(r[e]=t=[]),t.push(n)}}let a=[];for(let e in r)a.push(this.CreateFromMorphTargetSequence(e,r[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error(`THREE.AnimationClip: No animation in JSONLoader data.`),null;let n=function(e,t,n,r,i){if(n.length!==0){let a=[],o=[];Af(n,a,o,r),a.length!==0&&i.push(new e(t,a,o))}},r=[],i=e.name||`default`,a=e.fps||30,o=e.blendMode,s=e.length||-1,c=e.hierarchy||[];for(let e=0;e{t&&t(i),this.manager.itemEnd(e)},0),i;if($f[e]!==void 0){$f[e].push({onLoad:t,onProgress:n,onError:r});return}$f[e]=[],$f[e].push({onLoad:t,onProgress:n,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?`include`:`same-origin`}),o=this.mimeType,s=this.responseType;fetch(a).then(t=>{if(t.status===200||t.status===0){if(t.status===0&&console.warn(`THREE.FileLoader: HTTP Status 0 received.`),typeof ReadableStream>`u`||t.body===void 0||t.body.getReader===void 0)return t;let n=$f[e],r=t.body.getReader(),i=t.headers.get(`X-File-Size`)||t.headers.get(`Content-Length`),a=i?parseInt(i):0,o=a!==0,s=0,c=new ReadableStream({start(e){t();function t(){r.read().then(({done:r,value:i})=>{if(r)e.close();else{s+=i.byteLength;let r=new ProgressEvent(`progress`,{lengthComputable:o,loaded:s,total:a});for(let e=0,t=n.length;e{e.error(t)})}}});return new Response(c)}else throw new ep(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(s){case`arraybuffer`:return e.arrayBuffer();case`blob`:return e.blob();case`document`:return e.text().then(e=>new DOMParser().parseFromString(e,o));case`json`:return e.json();default:if(o===void 0)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(n);return e.arrayBuffer().then(e=>r.decode(e))}}}).then(t=>{Yf.add(e,t);let n=$f[e];delete $f[e];for(let e=0,r=n.length;e{let n=$f[e];if(n===void 0)throw this.manager.itemError(e),t;delete $f[e];for(let e=0,r=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},np=class extends Qf{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new tp(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(n){try{t(i.parse(JSON.parse(n)))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){let t=[];for(let n=0;n0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(let t in e.uniforms){let i=e.uniforms[t];switch(r.uniforms[t]={},i.type){case`t`:r.uniforms[t].value=n(i.value);break;case`c`:r.uniforms[t].value=new P().setHex(i.value);break;case`v2`:r.uniforms[t].value=new A().fromArray(i.value);break;case`v3`:r.uniforms[t].value=new M().fromArray(i.value);break;case`v4`:r.uniforms[t].value=new Fn().fromArray(i.value);break;case`m3`:r.uniforms[t].value=new j().fromArray(i.value);break;case`m4`:r.uniforms[t].value=new N().fromArray(i.value);break;default:r.uniforms[t].value=i.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(let t in e.extensions)r.extensions[t]=e.extensions[t];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=n(e.map)),e.matcap!==void 0&&(r.matcap=n(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=n(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=n(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=n(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let t=e.normalScale;Array.isArray(t)===!1&&(t=[t,t]),r.normalScale=new A().fromArray(t)}return e.displacementMap!==void 0&&(r.displacementMap=n(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=n(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=n(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=n(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=n(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=n(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=n(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=n(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=n(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=n(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=n(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=n(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=n(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new A().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=n(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=n(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=n(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=n(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=n(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=n(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(t){return e.createMaterialFromType(t)}static createMaterialFromType(e){return new{ShadowMaterial:gf,SpriteMaterial:Yc,RawShaderMaterial:_f,ShaderMaterial:aa,PointsMaterial:_u,MeshPhysicalMaterial:yf,MeshStandardMaterial:vf,MeshPhongMaterial:bf,MeshToonMaterial:xf,MeshNormalMaterial:Sf,MeshLambertMaterial:Cf,MeshDepthMaterial:hc,MeshDistanceMaterial:gc,MeshBasicMaterial:fi,MeshMatcapMaterial:wf,LineDashedMaterial:Tf,LineBasicMaterial:ru,Material:di}[e]}},Op=class{static decodeText(e){if(console.warn(`THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.`),typeof TextDecoder<`u`)return new TextDecoder().decode(e);let t=``;for(let n=0,r=e.length;n0){i=new ip(new Xf(t)),i.setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t0){r=new ip(this.manager),r.setCrossOrigin(this.crossOrigin);for(let t=0,r=e.length;t{let t=new Gn;t.min.fromArray(e.boxMin),t.max.fromArray(e.boxMax);let n=new lr;return n.radius=e.sphereRadius,n.center.fromArray(e.sphereCenter),{boxInitialized:e.boxInitialized,box:t,sphereInitialized:e.sphereInitialized,sphere:n}}),a._maxInstanceCount=e.maxInstanceCount,a._maxVertexCount=e.maxVertexCount,a._maxIndexCount=e.maxIndexCount,a._geometryInitialized=e.geometryInitialized,a._geometryCount=e.geometryCount,a._matricesTexture=c(e.matricesTexture.uuid),e.colorsTexture!==void 0&&(a._colorsTexture=c(e.colorsTexture.uuid));break;case`LOD`:a=new pl;break;case`Line`:a=new du(o(e.geometry),s(e.material));break;case`LineLoop`:a=new gu(o(e.geometry),s(e.material));break;case`LineSegments`:a=new hu(o(e.geometry),s(e.material));break;case`PointCloud`:case`Points`:a=new Su(o(e.geometry),s(e.material));break;case`Sprite`:a=new ll(s(e.material));break;case`Group`:a=new jc;break;case`Bone`:a=new wl;break;default:a=new Wr}if(a.uuid=e.uuid,e.name!==void 0&&(a.name=e.name),e.matrix===void 0?(e.position!==void 0&&a.position.fromArray(e.position),e.rotation!==void 0&&a.rotation.fromArray(e.rotation),e.quaternion!==void 0&&a.quaternion.fromArray(e.quaternion),e.scale!==void 0&&a.scale.fromArray(e.scale)):(a.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)),e.up!==void 0&&a.up.fromArray(e.up),e.castShadow!==void 0&&(a.castShadow=e.castShadow),e.receiveShadow!==void 0&&(a.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(a.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(a.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(a.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(a.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&a.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(a.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(a.visible=e.visible),e.frustumCulled!==void 0&&(a.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(a.renderOrder=e.renderOrder),e.userData!==void 0&&(a.userData=e.userData),e.layers!==void 0&&(a.layers.mask=e.layers),e.children!==void 0){let o=e.children;for(let e=0;e`u`&&console.warn(`THREE.ImageBitmapLoader: createImageBitmap() not supported.`),typeof fetch>`u`&&console.warn(`THREE.ImageBitmapLoader: fetch() not supported.`),this.options={premultiplyAlpha:`none`}}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=``),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Yf.get(e);if(a!==void 0){if(i.manager.itemStart(e),a.then){a.then(n=>{t&&t(n),i.manager.itemEnd(e)}).catch(e=>{r&&r(e)});return}return setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a}let o={};o.credentials=this.crossOrigin===`anonymous`?`same-origin`:`include`,o.headers=this.requestHeader;let s=fetch(e,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(i.options,{colorSpaceConversion:`none`}))}).then(function(n){return Yf.add(e,n),t&&t(n),i.manager.itemEnd(e),n}).catch(function(t){r&&r(t),Yf.remove(e),i.manager.itemError(e),i.manager.itemEnd(e)});Yf.add(e,s),i.manager.itemStart(e)}},Ip,Lp=class{static getContext(){return Ip===void 0&&(Ip=new(window.AudioContext||window.webkitAudioContext)),Ip}static setContext(e){Ip=e}},Rp=class extends Qf{constructor(e){super(e)}load(e,t,n,r){let i=this,a=new tp(this.manager);a.setResponseType(`arraybuffer`),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){try{let n=e.slice(0);Lp.getContext().decodeAudioData(n,function(e){t(e)}).catch(o)}catch(e){o(e)}},n,r);function o(t){r?r(t):console.error(t),i.manager.itemError(e)}}},zp=new N,Bp=new N,Vp=new N,Hp=class{constructor(){this.type=`StereoCamera`,this.aspect=1,this.eyeSep=.064,this.cameraL=new pa,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new pa,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){let t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Vp.copy(e.projectionMatrix);let n=t.eyeSep/2,r=n*t.near/t.focus,i=t.near*Math.tan(Rt*t.fov*.5)/t.zoom,a,o;Bp.elements[12]=-n,zp.elements[12]=n,a=-i*t.aspect+r,o=i*t.aspect+r,Vp.elements[0]=2*t.near/(o-a),Vp.elements[8]=(o+a)/(o-a),this.cameraL.projectionMatrix.copy(Vp),a=-i*t.aspect-r,o=i*t.aspect-r,Vp.elements[0]=2*t.near/(o-a),Vp.elements[8]=(o+a)/(o-a),this.cameraR.projectionMatrix.copy(Vp)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Bp),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(zp)}},Up=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Wp(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=Wp();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function Wp(){return performance.now()}var Gp=new M,Kp=new Hn,qp=new M,Jp=new M,Yp=class extends Wr{constructor(){super(),this.type=`AudioListener`,this.context=Lp.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Up}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter===null?this.gain.disconnect(this.context.destination):(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);let t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Gp,Kp,qp),!(!Number.isFinite(Gp.x)||!Number.isFinite(Gp.y)||!Number.isFinite(Gp.z)))if(Jp.set(0,0,-1).applyQuaternion(Kp),t.positionX){let e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Gp.x,e),t.positionY.linearRampToValueAtTime(Gp.y,e),t.positionZ.linearRampToValueAtTime(Gp.z,e),t.forwardX.linearRampToValueAtTime(Jp.x,e),t.forwardY.linearRampToValueAtTime(Jp.y,e),t.forwardZ.linearRampToValueAtTime(Jp.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(Gp.x,Gp.y,Gp.z),t.setOrientation(Jp.x,Jp.y,Jp.z,n.x,n.y,n.z)}},Xp=class extends Wr{constructor(e){super(),this.type=`Audio`,this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType=`empty`,this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType=`audioNode`,this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType=`mediaNode`,this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType=`mediaStreamNode`,this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType=`buffer`,this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn(`THREE.Audio: Audio is already playing.`);return}if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress%=this.duration||(this.buffer?this.buffer.duration:Number.MAX_VALUE)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){console.warn(`THREE.Audio: this Audio has no playback control.`);return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,r,this._addIndex*t,1,t);for(let e=t,i=t+t;e!==i;++e)if(n[e]!==n[e+t]){o.setValue(n,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,r=n*this._origIndex;e.getValue(t,r);for(let e=n,i=r;e!==i;++e)t[e]=t[r+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let r=0;r!==i;++r)e[t+r]=e[n+r]}_slerp(e,t,n,r){Hn.slerpFlat(e,t,e,t,e,n,r)}_slerpAdditive(e,t,n,r,i){let a=this._workIndex*i;Hn.multiplyQuaternionsFlat(e,a,e,t,e,n),Hn.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,n,r,i){let a=1-r;for(let o=0;o!==i;++o){let i=t+o;e[i]=e[i]*a+e[n+o]*r}}_lerpAdditive(e,t,n,r,i){for(let a=0;a!==i;++a){let i=t+a;e[i]=e[i]+e[n+a]*r}}},im=`\\[\\]\\.:\\/`,am=RegExp(`[`+im+`]`,`g`),om=`[^`+im+`]`,sm=`[^`+im.replace(`\\.`,``)+`]`,cm=`((?:WC+[\\/:])*)`.replace(`WC`,om),lm=`(WCOD+)?`.replace(`WCOD`,sm),um=`(?:\\.(WC+)(?:\\[(.+)\\])?)?`.replace(`WC`,om),dm=`\\.(WC+)(?:\\[(.+)\\])?`.replace(`WC`,om),fm=RegExp(`^`+cm+lm+um+dm+`$`),pm=[`material`,`materials`,`bones`,`map`],mm=class{constructor(e,t,n){let r=n||hm.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,i=n.length;r!==i;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},hm=class e{constructor(t,n,r){this.path=n,this.parsedPath=r||e.parseTrackName(n),this.node=e.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,n,r){return t&&t.isAnimationObjectGroup?new e.Composite(t,n,r):new e(t,n,r)}static sanitizeNodeName(e){return e.replace(/\s/g,`_`).replace(am,``)}static parseTrackName(e){let t=fm.exec(e);if(t===null)throw Error(`PropertyBinding: Cannot parse trackName: `+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(`.`);if(r!==void 0&&r!==-1){let e=n.nodeName.substring(r+1);pm.indexOf(e)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=e)}if(n.propertyName===null||n.propertyName.length===0)throw Error(`PropertyBinding: can not parse propertyName from trackName: `+e);return n}static findNode(e,t){if(t===void 0||t===``||t===`.`||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(e,r){for(let i=0;i=i){let a=i++,l=e[a];t[l.uuid]=c,e[c]=l,t[s]=a,e[a]=o;for(let e=0,t=r;e!==t;++e){let t=n[e],r=t[a],i=t[c];t[c]=r,t[a]=i}}}this.nCachedObjects_=i}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,r=n.length,i=this.nCachedObjects_,a=e.length;for(let o=0,s=arguments.length;o!==s;++o){let s=arguments[o].uuid,c=t[s];if(c!==void 0)if(delete t[s],c0&&(t[o.uuid]=c),e[c]=o,e.pop();for(let e=0,t=r;e!==t;++e){let t=n[e];t[c]=t[i],t.pop()}}}this.nCachedObjects_=i}subscribe_(e,t){let n=this._bindingsIndicesByPath,r=n[e],i=this._bindings;if(r!==void 0)return i[r];let a=this._paths,o=this._parsedPaths,s=this._objects,c=s.length,l=this.nCachedObjects_,u=Array(c);r=i.length,n[e]=r,a.push(e),o.push(t),i.push(u);for(let n=l,r=s.length;n!==r;++n){let r=s[n];u[n]=new hm(r,e,t)}return u}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){let r=this._paths,i=this._parsedPaths,a=this._bindings,o=a.length-1,s=a[o],c=e[o];t[c]=n,a[n]=s,a.pop(),i[n]=i[o],i.pop(),r[n]=r[o],r.pop()}}},_m=class{constructor(e,t,n=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=r;let i=t.tracks,a=i.length,o=Array(a),s={endingStart:et,endingEnd:et};for(let e=0;e!==a;++e){let t=i[e].createInterpolant(null);o[e]=t,t.settings=s}this._interpolantSettings=s,this._interpolants=o,this._propertyBindings=Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Ye,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let n=this._clip.duration,r=e._clip.duration,i=r/n,a=n/r;e.warp(1,i,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let r=this._mixer,i=r.time,a=this.timeScale,o=this._timeScaleInterpolant;o===null&&(o=r._lendControlInterpolant(),this._timeScaleInterpolant=o);let s=o.parameterPositions,c=o.sampleValues;return s[0]=i,s[1]=i+n,c[0]=e/a,c[1]=t/a,this}stopWarping(){let e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,r){if(!this.enabled){this._updateWeight(e);return}let i=this._startTime;if(i!==null){let r=(e-i)*n;r<0||n===0?t=0:(this._startTime=null,t=n*r)}t*=this._updateTimeScale(e);let a=this._updateTime(t),o=this._updateWeight(e);if(o>0){let e=this._interpolants,t=this._propertyBindings;switch(this.blendMode){case it:for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulateAdditive(o);break;case rt:default:for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(n!==null){let r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;if(n!==null){let r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,r=this.time+e,i=this._loopCount,a=n===Xe;if(e===0)return i===-1?r:a&&(i&1)==1?t-r:r;if(n===2200){i===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));handle_stop:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break handle_stop}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:`finished`,action:this,direction:e<0?-1:1})}}else{if(i===-1&&(e>=0?(i=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let n=Math.floor(r/t);r-=t*n,i+=Math.abs(n);let o=this.repetitions-i;if(o<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:`finished`,action:this,direction:e>0?1:-1});else{if(o===1){let t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=i,this.time=r,this._mixer.dispatchEvent({type:`loop`,action:this,loopDelta:n})}}else this.time=r;if(a&&(i&1)==1)return t-r}return r}_setEndings(e,t,n){let r=this._interpolantSettings;n?(r.endingStart=tt,r.endingEnd=tt):(e?r.endingStart=this.zeroSlopeAtStart?tt:et:r.endingStart=nt,t?r.endingEnd=this.zeroSlopeAtEnd?tt:et:r.endingEnd=nt)}_scheduleFading(e,t,n){let r=this._mixer,i=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,s=a.sampleValues;return o[0]=i,s[0]=t,o[1]=i+e,s[1]=n,this}},vm=new Float32Array(1),ym=class extends Ft{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,r=e._clip.tracks,i=r.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,c=this._bindingsByRootAndName,l=c[s];l===void 0&&(l={},c[s]=l);for(let e=0;e!==i;++e){let i=r[e],c=i.name,u=l[c];if(u!==void 0)++u.referenceCount,a[e]=u;else{if(u=a[e],u!==void 0){u._cacheIndex===null&&(++u.referenceCount,this._addInactiveBinding(u,s,c));continue}let r=t&&t._propertyBindings[e].binding.parsedPath;u=new rm(hm.create(n,c,r),i.ValueTypeName,i.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,s,c),a[e]=u}o[e].resultBuffer=u.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let t=(e._localRoot||this._root).uuid,n=e._clip.uuid,r=this._actionsByClip[n];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,n,t)}let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];n.useCount++===0&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];--n.useCount===0&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,r=this.time+=e,i=Math.sign(e),a=this._accuIndex^=1;for(let o=0;o!==n;++o)t[o]._update(r,e,i,a);let o=this._bindings,s=this._nActiveBindings;for(let e=0;e!==s;++e)o[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Mm).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},Pm=new M,Fm=new M,Im=class{constructor(e=new M,t=new M){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Pm.subVectors(e,this.start),Fm.subVectors(this.end,this.start);let n=Fm.dot(Fm),r=Fm.dot(Pm)/n;return t&&(r=Vt(r,0,1)),r}closestPointToPoint(e,t,n){let r=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},Lm=new M,Rm=class extends Wr{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type=`SpotLightHelper`;let n=new Ii,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1;e<32;e++,t++){let n=e/32*Math.PI*2,i=t/32*Math.PI*2;r.push(Math.cos(n),Math.sin(n),1,Math.cos(i),Math.sin(i),1)}n.setAttribute(`position`,new F(r,3)),this.cone=new hu(n,new ru({fog:!1,toneMapped:!1})),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Lm.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Lm),this.color===void 0?this.cone.material.color.copy(this.light.color):this.cone.material.color.set(this.color)}},zm=new M,Bm=new N,Vm=new N,Hm=class extends hu{constructor(e){let t=Um(e),n=new Ii,r=[],i=[],a=new P(0,0,1),o=new P(0,1,0);for(let e=0;e1)for(let n=0;n.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{lh.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(lh,t)}}setLength(e,t=e*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},ph=class extends hu{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Ii;r.setAttribute(`position`,new F(t,3)),r.setAttribute(`color`,new F(n,3));let i=new ru({vertexColors:!0,toneMapped:!1});super(r,i),this.type=`AxesHelper`}setColors(e,t,n){let r=new P,i=this.geometry.attributes.color.array;return r.set(e),r.toArray(i,0),r.toArray(i,3),r.set(t),r.toArray(i,6),r.toArray(i,9),r.set(n),r.toArray(i,12),r.toArray(i,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},mh=class{constructor(){this.type=`ShapePath`,this.color=new P,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new id,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,r){return this.currentPath.quadraticCurveTo(e,t,n,r),this}bezierCurveTo(e,t,n,r,i,a){return this.currentPath.bezierCurveTo(e,t,n,r,i,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e){let t=[];for(let n=0,r=e.length;n2**-52){if(c<0&&(n=t[a],s=-s,o=t[i],c=-c),e.yo.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{let t=c*(e.x-n.x)-s*(e.y-n.y);if(t===0)return!0;if(t<0)continue;r=!r}}else{if(e.y!==n.y)continue;if(o.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=o.x)return!0}}return r}let r=Xd.isClockWise,i=this.subPaths;if(i.length===0)return[];let a,o,s,c=[];if(i.length===1)return o=i[0],s=new _d,s.curves=o.curves,c.push(s),c;let l=!r(i[0].getPoints());l=e?!l:l;let u=[],d=[],f=[],p=0,m;d[p]=void 0,f[p]=[];for(let t=0,n=i.length;t1){let e=!1,t=0;for(let e=0,t=d.length;e0&&e===!1&&(f=u)}let h;for(let e=0,t=d.length;e>>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 bh=e=>yh(e),xh=e=>yh(e),Sh=(...e)=>yh(e);function Ch(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of wh(e))n.push(n,yh(r.slice(0,-4)),i.getCacheKey(t));return yh(n)}function*wh(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}var kh=Object.freeze({__proto__:null,arrayBufferToBase64:Dh,base64ToArrayBuffer:Oh,getCacheKey:Ch,getNodeChildren:wh,getValueFromType:Eh,getValueType:Th,hash:Sh,hashArray:xh,hashString:bh}),Ah={VERTEX:`vertex`,FRAGMENT:`fragment`},L={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},jh={BOOLEAN:`bool`,INTEGER:`int`,FLOAT:`float`,VECTOR2:`vec2`,VECTOR3:`vec3`,VECTOR4:`vec4`,MATRIX2:`mat2`,MATRIX3:`mat3`,MATRIX4:`mat4`},Mh=[`fragment`,`vertex`],Nh=[`setup`,`analyze`,`generate`],Ph=[...Mh,`compute`],Fh=[`x`,`y`,`z`,`w`],Ih=0,R=class extends Ft{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=L.NONE,this.updateBeforeType=L.NONE,this.updateAfterType=L.NONE,this.uuid=ln.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:Ih++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,L.FRAME)}onRenderUpdate(e){return this.onUpdate(e,L.RENDER)}onObjectUpdate(e){return this.onUpdate(e,L.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of wh(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=Ch(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return wh(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Lh=class extends R{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Rh=class extends R{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},zh=class extends R{static get type(){return`TempNode`}constructor(e){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)}},Bh=class extends zh{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}},Vh=Fh.join(``),Hh=class extends R{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(Fh.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===Vh.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}},Uh=class extends zh{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Xh=e=>Yh(e).split(``).sort().join(``),Zh={setup(e,t){return e(Cg(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(qh.assign(n,...e),n);if(Jh.has(t)){let r=Jh.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Jh.has(t.slice(0,t.length-6))){let r=Jh.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Yh(t),B(new Hh(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Xh(t.slice(3).toLowerCase()),n=>B(new Uh(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Xh(t.slice(4).toLowerCase()),()=>B(new Wh(B(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),B(new Hh(e,t));else if(/^\d+$/.test(t)===!0)return B(new Lh(n,new Kh(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},Qh=new WeakMap,$h=new WeakMap,eg=function(e,t=null){let n=Th(e);if(n===`node`){let t=Qh.get(e);return t===void 0&&(t=new Proxy(e,Zh),Qh.set(e,t),Qh.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return B(_g(e,t));else if(n===`shader`)return U(e);return e},tg=function(e,t=null){for(let n in e)e[n]=B(e[n],t);return e},ng=function(e,t=null){let n=e.length;for(let r=0;rB(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...wg(t))):n===null?(...n)=>i(new e(t,...wg(n))):(n=B(n),(...r)=>i(new e(t,...wg(r),n)))},ig=function(e,...t){return B(new e(...wg(t)))},ag=class extends R{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=$h.get(e.constructor);r===void 0&&(r=new WeakMap,$h.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=B(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=B(a.call(n))}else{let r=t.jsFunc;i=B(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},og=class extends R{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return Cg(e),B(new ag(this,e))}setup(){return this.call()}},sg=[!1,!0],cg=[0,1,2,3],lg=[-1,-2],ug=[.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],dg=new Map;for(let e of sg)dg.set(e,new Kh(e));var fg=new Map;for(let e of cg)fg.set(e,new Kh(e,`uint`));var pg=new Map([...fg].map(e=>new Kh(e.value,`int`)));for(let e of lg)pg.set(e,new Kh(e,`int`));var mg=new Map([...pg].map(e=>new Kh(e.value)));for(let e of ug)mg.set(e,new Kh(e));for(let e of ug)mg.set(-e,new Kh(-e));var hg={bool:dg,uint:fg,ints:pg,float:mg},gg=new Map([...dg,...mg]),_g=(e,t)=>gg.has(e)?gg.get(e):e.isNode===!0?e:new Kh(e,t),vg=e=>{try{return e.getNodeType()}catch{return}},yg=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[Eh(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return B(t.get(n[0]));if(n.length===1){let t=_g(n[0],e);return vg(t)===e?B(t):B(new Rh(t,e))}return B(new Bh(n.map(e=>_g(e)),e))}},bg=e=>typeof e==`object`&&e?e.value:e,xg=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function Sg(e,t){return new Proxy(new og(e,t),Zh)}var B=(e,t=null)=>eg(e,t),Cg=(e,t=null)=>new tg(e,t),wg=(e,t=null)=>new ng(e,t),V=(...e)=>new rg(...e),H=(...e)=>new ig(...e),U=(e,t)=>{let n=new Sg(e,t),r=(...e)=>{let t;return Cg(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r},Tg=(...e)=>(console.warn(`TSL.ShaderNode: tslFn() has been renamed to Fn().`),U(...e));z(`toGlobal`,e=>(e.global=!0,e));var Eg=e=>{qh=e},Dg=()=>qh,W=(...e)=>qh.If(...e);function Og(e){return qh&&qh.add(e),e}z(`append`,Og);var kg=new yg(`color`),G=new yg(`float`,hg.float),K=new yg(`int`,hg.ints),q=new yg(`uint`,hg.uint),Ag=new yg(`bool`,hg.bool),J=new yg(`vec2`),jg=new yg(`ivec2`),Mg=new yg(`uvec2`),Ng=new yg(`bvec2`),Y=new yg(`vec3`),Pg=new yg(`ivec3`),Fg=new yg(`uvec3`),Ig=new yg(`bvec3`),X=new yg(`vec4`),Lg=new yg(`ivec4`),Rg=new yg(`uvec4`),zg=new yg(`bvec4`),Bg=new yg(`mat2`),Vg=new yg(`mat3`),Hg=new yg(`mat4`),Ug=(e=``)=>B(new Kh(e,`string`)),Wg=e=>B(new Kh(e,`ArrayBuffer`));z(`toColor`,kg),z(`toFloat`,G),z(`toInt`,K),z(`toUint`,q),z(`toBool`,Ag),z(`toVec2`,J),z(`toIVec2`,jg),z(`toUVec2`,Mg),z(`toBVec2`,Ng),z(`toVec3`,Y),z(`toIVec3`,Pg),z(`toUVec3`,Fg),z(`toBVec3`,Ig),z(`toVec4`,X),z(`toIVec4`,Lg),z(`toUVec4`,Rg),z(`toBVec4`,zg),z(`toMat2`,Bg),z(`toMat3`,Vg),z(`toMat4`,Hg);var Gg=V(Lh),Kg=(e,t)=>B(new Rh(B(e),t)),qg=(e,t)=>B(new Hh(B(e),t));z(`element`,Gg),z(`convert`,Kg);var Jg=class extends R{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}},Yg=e=>new Jg(e),Xg=(e,t=0)=>new Jg(e,!0,t),Zg=Xg(`frame`),Qg=Xg(`render`),$g=Yg(`object`),e_=class extends Gh{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=$g}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}},Z=(e,t)=>{let n=xg(t||e);return B(new e_(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))},t_=class extends R{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}},n_=(e,t)=>B(new t_(e,t)),r_=(e,t)=>B(new t_(e,t,!0)),i_=H(t_,`vec4`,`DiffuseColor`),a_=H(t_,`vec3`,`EmissiveColor`),o_=H(t_,`float`,`Roughness`),s_=H(t_,`float`,`Metalness`),c_=H(t_,`float`,`Clearcoat`),l_=H(t_,`float`,`ClearcoatRoughness`),u_=H(t_,`vec3`,`Sheen`),d_=H(t_,`float`,`SheenRoughness`),f_=H(t_,`float`,`Iridescence`),p_=H(t_,`float`,`IridescenceIOR`),m_=H(t_,`float`,`IridescenceThickness`),h_=H(t_,`float`,`AlphaT`),g_=H(t_,`float`,`Anisotropy`),__=H(t_,`vec3`,`AnisotropyT`),v_=H(t_,`vec3`,`AnisotropyB`),y_=H(t_,`color`,`SpecularColor`),b_=H(t_,`float`,`SpecularF90`),x_=H(t_,`float`,`Shininess`),S_=H(t_,`vec4`,`Output`),C_=H(t_,`float`,`dashSize`),w_=H(t_,`float`,`gapSize`),T_=H(t_,`float`,`pointWidth`),E_=H(t_,`float`,`IOR`),D_=H(t_,`float`,`Transmission`),O_=H(t_,`float`,`Thickness`),k_=H(t_,`float`,`AttenuationDistance`),A_=H(t_,`color`,`AttenuationColor`),j_=H(t_,`float`,`Dispersion`),M_=class extends zh{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 Fh.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?wg(t):Cg(t[0]),B(new P_(B(e),t)));z(`call`,F_);var I_=class e extends zh{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}},L_=V(I_,`+`),R_=V(I_,`-`),z_=V(I_,`*`),B_=V(I_,`/`),V_=V(I_,`%`),H_=V(I_,`==`),U_=V(I_,`!=`),W_=V(I_,`<`),G_=V(I_,`>`),K_=V(I_,`<=`),q_=V(I_,`>=`),J_=V(I_,`&&`),Y_=V(I_,`||`),X_=V(I_,`!`),Z_=V(I_,`^^`),Q_=V(I_,`&`),$_=V(I_,`~`),ev=V(I_,`|`),tv=V(I_,`^`),nv=V(I_,`<<`),rv=V(I_,`>>`);z(`add`,L_),z(`sub`,R_),z(`mul`,z_),z(`div`,B_),z(`modInt`,V_),z(`equal`,H_),z(`notEqual`,U_),z(`lessThan`,W_),z(`greaterThan`,G_),z(`lessThanEqual`,K_),z(`greaterThanEqual`,q_),z(`and`,J_),z(`or`,Y_),z(`not`,X_),z(`xor`,Z_),z(`bitAnd`,Q_),z(`bitNot`,$_),z(`bitOr`,ev),z(`bitXor`,tv),z(`shiftLeft`,nv),z(`shiftRight`,rv);var iv=(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),V_(...e));z(`remainder`,iv);var Q=class e extends zh{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=X(Y(r),0):e=X(Y(e),0);let i=z_(e,r).xyz;return Sv(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return R_(1,o).build(t,n);else if(r===e.RECIPROCAL)return B_(1,o).build(t,n);else if(r===e.DIFFERENCE)return Av(R_(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};Q.ALL=`all`,Q.ANY=`any`,Q.EQUALS=`equals`,Q.RADIANS=`radians`,Q.DEGREES=`degrees`,Q.EXP=`exp`,Q.EXP2=`exp2`,Q.LOG=`log`,Q.LOG2=`log2`,Q.SQRT=`sqrt`,Q.INVERSE_SQRT=`inversesqrt`,Q.FLOOR=`floor`,Q.CEIL=`ceil`,Q.NORMALIZE=`normalize`,Q.FRACT=`fract`,Q.SIN=`sin`,Q.COS=`cos`,Q.TAN=`tan`,Q.ASIN=`asin`,Q.ACOS=`acos`,Q.ATAN=`atan`,Q.ABS=`abs`,Q.SIGN=`sign`,Q.LENGTH=`length`,Q.NEGATE=`negate`,Q.ONE_MINUS=`oneMinus`,Q.DFDX=`dFdx`,Q.DFDY=`dFdy`,Q.ROUND=`round`,Q.RECIPROCAL=`reciprocal`,Q.TRUNC=`trunc`,Q.FWIDTH=`fwidth`,Q.BITCAST=`bitcast`,Q.TRANSPOSE=`transpose`,Q.ATAN2=`atan2`,Q.MIN=`min`,Q.MAX=`max`,Q.MOD=`mod`,Q.STEP=`step`,Q.REFLECT=`reflect`,Q.DISTANCE=`distance`,Q.DIFFERENCE=`difference`,Q.DOT=`dot`,Q.CROSS=`cross`,Q.POW=`pow`,Q.TRANSFORM_DIRECTION=`transformDirection`,Q.MIX=`mix`,Q.CLAMP=`clamp`,Q.REFRACT=`refract`,Q.SMOOTHSTEP=`smoothstep`,Q.FACEFORWARD=`faceforward`;var av=G(1e-6),ov=G(1e6),sv=G(Math.PI),cv=G(Math.PI*2),lv=V(Q,Q.ALL),uv=V(Q,Q.ANY),dv=V(Q,Q.EQUALS),fv=V(Q,Q.RADIANS),pv=V(Q,Q.DEGREES),mv=V(Q,Q.EXP),hv=V(Q,Q.EXP2),gv=V(Q,Q.LOG),_v=V(Q,Q.LOG2),vv=V(Q,Q.SQRT),yv=V(Q,Q.INVERSE_SQRT),bv=V(Q,Q.FLOOR),xv=V(Q,Q.CEIL),Sv=V(Q,Q.NORMALIZE),Cv=V(Q,Q.FRACT),wv=V(Q,Q.SIN),Tv=V(Q,Q.COS),Ev=V(Q,Q.TAN),Dv=V(Q,Q.ASIN),Ov=V(Q,Q.ACOS),kv=V(Q,Q.ATAN),Av=V(Q,Q.ABS),jv=V(Q,Q.SIGN),Mv=V(Q,Q.LENGTH),Nv=V(Q,Q.NEGATE),Pv=V(Q,Q.ONE_MINUS),Fv=V(Q,Q.DFDX),Iv=V(Q,Q.DFDY),Lv=V(Q,Q.ROUND),Rv=V(Q,Q.RECIPROCAL),zv=V(Q,Q.TRUNC),Bv=V(Q,Q.FWIDTH),Vv=V(Q,Q.BITCAST),Hv=V(Q,Q.TRANSPOSE),Uv=V(Q,Q.ATAN2),Wv=V(Q,Q.MIN),Gv=V(Q,Q.MAX),Kv=V(Q,Q.MOD),qv=V(Q,Q.STEP),Jv=V(Q,Q.REFLECT),Yv=V(Q,Q.DISTANCE),Xv=V(Q,Q.DIFFERENCE),Zv=V(Q,Q.DOT),Qv=V(Q,Q.CROSS),$v=V(Q,Q.POW),ey=V(Q,Q.POW,2),ty=V(Q,Q.POW,3),ny=V(Q,Q.POW,4),ry=V(Q,Q.TRANSFORM_DIRECTION),iy=e=>z_(jv(e),$v(Av(e),1/3)),ay=e=>Zv(e,e),oy=V(Q,Q.MIX),sy=(e,t=0,n=1)=>B(new Q(Q.CLAMP,B(e),B(t),B(n))),cy=e=>sy(e),ly=V(Q,Q.REFRACT),uy=V(Q,Q.SMOOTHSTEP),dy=V(Q,Q.FACEFORWARD),fy=U(([e])=>Cv(wv(Kv(Zv(e.xy,J(12.9898,78.233)),sv)).mul(43758.5453))),py=(e,t,n)=>oy(t,n,e),my=(e,t,n)=>uy(t,n,e);z(`all`,lv),z(`any`,uv),z(`equals`,dv),z(`radians`,fv),z(`degrees`,pv),z(`exp`,mv),z(`exp2`,hv),z(`log`,gv),z(`log2`,_v),z(`sqrt`,vv),z(`inverseSqrt`,yv),z(`floor`,bv),z(`ceil`,xv),z(`normalize`,Sv),z(`fract`,Cv),z(`sin`,wv),z(`cos`,Tv),z(`tan`,Ev),z(`asin`,Dv),z(`acos`,Ov),z(`atan`,kv),z(`abs`,Av),z(`sign`,jv),z(`length`,Mv),z(`lengthSq`,ay),z(`negate`,Nv),z(`oneMinus`,Pv),z(`dFdx`,Fv),z(`dFdy`,Iv),z(`round`,Lv),z(`reciprocal`,Rv),z(`trunc`,zv),z(`fwidth`,Bv),z(`atan2`,Uv),z(`min`,Wv),z(`max`,Gv),z(`mod`,Kv),z(`step`,qv),z(`reflect`,Jv),z(`distance`,Yv),z(`dot`,Zv),z(`cross`,Qv),z(`pow`,$v),z(`pow2`,ey),z(`pow3`,ty),z(`pow4`,ny),z(`transformDirection`,ry),z(`mix`,py),z(`clamp`,sy),z(`refract`,ly),z(`smoothstep`,my),z(`faceForward`,dy),z(`difference`,Xv),z(`saturate`,cy),z(`cbrt`,iy),z(`transpose`,Hv),z(`rand`,fy);var hy=V(class extends R{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?n_(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});z(`select`,hy);var gy=(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),hy(...e));z(`cond`,gy);var _y=class extends R{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}},vy=V(_y),yy=(e,t)=>vy(e,{label:t});z(`context`,vy),z(`label`,yy);var by=class extends R{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}},xy=V(by);z(`temp`,xy),z(`toVar`,(...e)=>xy(...e).append());var Sy=class extends R{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,Ah.VERTEX);e.flowNodeFromShaderStage(Ah.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}},Cy=V(Sy);z(`varying`,Cy);var wy=`WorkingColorSpace`,Ty=`OutputColorSpace`;function Ey(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function Dy(e,t){return Ey(e)+`To`+Ey(t)}var Oy=class extends zh{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===wy?Tn.workingColorSpace:t===Ty?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=Dy(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=X(s(n.rgb),n.a),o}},ky=e=>B(new Oy(B(e),wy,Ty)),Ay=e=>B(new Oy(B(e),Ty,wy)),jy=(e,t)=>B(new Oy(B(e),wy,t)),My=(e,t)=>B(new Oy(B(e),t,wy));z(`toOutputColorSpace`,ky),z(`toWorkingColorSpace`,Ay),z(`workingToColorSpace`,jy),z(`colorSpaceToWorking`,My);var Ny=class extends Lh{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Py=class extends R{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=L.OBJECT}setGroup(e){return this.group=e,this}element(e){return B(new Ny(this,B(e)))}setNodeType(e){let t=Z(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eB(new Py(e,t,n)),Iy=class extends Py{static get type(){return`RendererReferenceNode`}constructor(e,t,n=null){super(e,t,n),this.renderer=n,this.setGroup(Qg)}updateReference(e){return this.reference=this.renderer===null?e.renderer:this.renderer,this.reference}},Ly=(e,t,n)=>B(new Iy(e,t,n)),Ry=class extends zh{static get type(){return`ToneMappingNode`}constructor(e,t=By,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return Sh(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=X(i(t.rgb,this.exposureNode),t.a),r}},zy=(e,t,n)=>B(new Ry(e,B(t),B(n))),By=Ly(`toneMappingExposure`,`float`);z(`toneMapping`,(e,t,n)=>zy(t,n,e));var Vy=class extends Gh{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=Ct,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new Kc(n,i),s=new Jc(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=Cy(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}},Hy=(e,t,n,r)=>B(new Vy(e,t,n,r)),Uy=(e,t,n,r)=>Hy(e,t,n,r).setUsage(wt),Wy=(e,t,n,r)=>Hy(e,t,n,r).setInstanced(!0),Gy=(e,t,n,r)=>Uy(e,t,n,r).setInstanced(!0);z(`toAttribute`,e=>Hy(e.value));var Ky=class extends R{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=L.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eB(new Ky(B(e),t,n));z(`compute`,qy);var Jy=class extends R{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}},Yy=(e,...t)=>B(new Jy(B(e),...t));z(`cache`,Yy);var Xy=class extends R{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}},Zy=V(Xy);z(`bypass`,Zy);var Qy=class extends R{static get type(){return`RemapNode`}constructor(e,t,n,r=G(0),i=G(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}},$y=V(Qy,null,null,{doClamp:!1}),eb=V(Qy);z(`remap`,$y),z(`remapClamp`,eb);var tb=class extends R{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}},nb=V(tb),rb=e=>(e?hy(e,nb(`discard`)):nb(`discard`)).append(),ib=()=>nb(`return`).append();z(`discard`,rb);var ab=class extends zh{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==Tn.workingColorSpace&&(t=t.workingToColorSpace(r)),t}},ob=(e,t=null,n=null)=>B(new ab(B(e),t,n));z(`renderOutput`,ob);function sb(e){console.warn(`THREE.TSLBase: AddNodeElement has been removed in favor of tree-shaking. Trying add`,e)}var cb=class extends R{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):Cy(this).build(e,n)}else return console.warn(`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}},lb=(e,t)=>B(new cb(e,t)),ub=e=>lb(`uv`+(e>0?e:``),`vec2`),db=class extends R{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)}},fb=V(db),pb=class extends e_{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=L.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))}}},mb=V(pb),hb=class extends e_{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=L.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return ub(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Z(this.value.matrix)),this._matrixUniform.mul(Y(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?L.FRAME:L.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(K(fb(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=My(nb(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=B(e),t.referenceNode=this.getSelf(),B(t)}blur(e){let t=this.clone();return t.biasNode=B(e).mul(mb(t)),t.referenceNode=this.getSelf(),B(t)}level(e){let t=this.clone();return t.levelNode=B(e),t.referenceNode=this.getSelf(),B(t)}size(e){return fb(this,e)}bias(e){let t=this.clone();return t.biasNode=B(e),t.referenceNode=this.getSelf(),B(t)}compare(e){let t=this.clone();return t.compareNode=B(e),t.referenceNode=this.getSelf(),B(t)}grad(e,t){let n=this.clone();return n.gradNode=[B(e),B(t)],n.referenceNode=this.getSelf(),B(n)}depth(e){let t=this.clone();return t.depthNode=B(e),t.referenceNode=this.getSelf(),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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}},gb=V(hb),_b=(...e)=>gb(...e).setSampler(!1),vb=e=>(e.isNode===!0?e:gb(e)).convert(`sampler`),yb=Z(`float`).label(`cameraNear`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.near),bb=Z(`float`).label(`cameraFar`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.far),xb=Z(`float`).label(`cameraLogDepth`).setGroup(Qg).onRenderUpdate(({camera:e})=>2/(Math.log(e.far+1)/Math.LN2)),Sb=Z(`mat4`).label(`cameraProjectionMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.projectionMatrix),Cb=Z(`mat4`).label(`cameraProjectionMatrixInverse`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.projectionMatrixInverse),wb=Z(`mat4`).label(`cameraViewMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.matrixWorldInverse),Tb=Z(`mat4`).label(`cameraWorldMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.matrixWorld),Eb=Z(`mat3`).label(`cameraNormalMatrix`).setGroup(Qg).onRenderUpdate(({camera:e})=>e.normalMatrix),Db=Z(new M).label(`cameraPosition`).setGroup(Qg).onRenderUpdate(({camera:e},t)=>t.value.setFromMatrixPosition(e.matrixWorld)),Ob=class e extends R{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=L.OBJECT,this._uniformNode=new e_(null)}getNodeType(){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`}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 M,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new M,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new M,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new M,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};Ob.WORLD_MATRIX=`worldMatrix`,Ob.POSITION=`position`,Ob.SCALE=`scale`,Ob.VIEW_POSITION=`viewPosition`,Ob.DIRECTION=`direction`;var kb=V(Ob,Ob.DIRECTION),Ab=V(Ob,Ob.WORLD_MATRIX),jb=V(Ob,Ob.POSITION),Mb=V(Ob,Ob.SCALE),Nb=V(Ob,Ob.VIEW_POSITION),Pb=class extends Ob{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}},Fb=H(Pb,Pb.DIRECTION),Ib=H(Pb,Pb.WORLD_MATRIX),Lb=H(Pb,Pb.POSITION),Rb=H(Pb,Pb.SCALE),zb=H(Pb,Pb.VIEW_POSITION),Bb=Z(new j).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),Vb=Z(new N).onObjectUpdate(({object:e},t)=>t.value.copy(e.matrixWorld).invert()),Hb=wb.mul(Ib).toVar(`modelViewMatrix_2`),Ub=U(e=>(e.context.isHighPrecisionModelViewMatrix=!0,Z(`mat4`).onObjectUpdate(({object:e,camera:t})=>e.modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld)))).once()().toVar(`highPrecisionModelViewMatrix`),Wb=U(e=>{let t=e.context.isHighPrecisionModelViewMatrix;return Z(`mat3`).onObjectUpdate(({object:e,camera:n})=>(t!==!0&&e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix)))}).once()().toVar(`highPrecisionModelNormalMatrix`),Gb=lb(`position`,`vec3`),Kb=Gb.varying(`positionLocal`),qb=Gb.varying(`positionPrevious`),Jb=Ib.mul(Kb).xyz.varying(`v_positionWorld`),Yb=Kb.transformDirection(Ib).varying(`v_positionWorldDirection`).normalize().toVar(`positionWorldDirection`),Xb=Hb.mul(Kb).xyz.varying(`v_positionView`),Zb=Xb.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),Qb=class extends R{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}},$b=H(Qb),ex=G($b).mul(2).sub(1),tx=lb(`normal`,`vec3`),nx=U(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),Y(0,1,0)):tx,`vec3`).once()().toVar(`normalLocal`),rx=Xb.dFdx().cross(Xb.dFdy()).normalize().toVar(`normalFlat`),ix=U(e=>{let t;return t=e.material.flatShading===!0?rx:Cy(ux(nx),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),ax=Cy(ix.transformDirection(wb),`v_normalWorld`).normalize().toVar(`normalWorld`),ox=U(e=>e.context.setupNormal(),`vec3`).once()().mul(ex).toVar(`transformedNormalView`),sx=ox.transformDirection(wb).toVar(`transformedNormalWorld`),cx=U(e=>e.context.setupClearcoatNormal(),`vec3`).once()().mul(ex).toVar(`transformedClearcoatNormalView`),lx=U(([e,t=Ib])=>{let n=Vg(t),r=e.div(Y(n[0].dot(n[0]),n[1].dot(n[1]),n[2].dot(n[2])));return n.mul(r).xyz}),ux=U(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=Bb.mul(e);return wb.transformDirection(r)}),dx=Z(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),fx=Zb.negate().reflect(ox),px=Zb.negate().refract(ox,dx),mx=fx.transformDirection(wb).toVar(`reflectVector`),hx=px.transformDirection(wb).toVar(`reflectVector`),gx=class extends hb{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?mx:e.mapping===302?hx:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),Y(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?Y(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}},_x=V(gx),vx=class extends e_{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}},yx=(e,t,n)=>B(new vx(e,t,n)),bx=class extends Lh{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},xx=class extends vx{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=L.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nB(new xx(e,t)),Cx=(e,t)=>(console.warn(`TSL.UniformArrayNode: uniforms() has been renamed to uniformArray().`),B(new xx(e,t))),wx=class extends Lh{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Tx=class extends R{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=L.OBJECT}element(e){return B(new wx(this,B(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?Sx(null,e):e===`texture`?gb(null):e===`cubeTexture`?_x(null):Z(null,e):yx(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eB(new Tx(e,t,n)),Dx=(e,t,n,r)=>B(new Tx(e,t,r,n)),Ox=class extends Tx{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}},kx=(e,t,n)=>B(new Ox(e,t,n)),Ax=U(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),lb(`tangent`,`vec4`)))(),jx=Ax.xyz.toVar(`tangentLocal`),Mx=Hb.mul(X(jx,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),Nx=Mx.transformDirection(wb).varying(`v_tangentWorld`).normalize().toVar(`tangentWorld`),Px=Mx.toVar(`transformedTangentView`),Fx=Px.transformDirection(wb).normalize().toVar(`transformedTangentWorld`),Ix=e=>e.mul(Ax.w).xyz,Lx=Cy(Ix(tx.cross(Ax)),`v_bitangentGeometry`).normalize().toVar(`bitangentGeometry`),Rx=Cy(Ix(nx.cross(jx)),`v_bitangentLocal`).normalize().toVar(`bitangentLocal`),zx=Cy(Ix(ix.cross(Mx)),`v_bitangentView`).normalize().toVar(`bitangentView`),Bx=Cy(Ix(ax.cross(Nx)),`v_bitangentWorld`).normalize().toVar(`bitangentWorld`),Vx=Ix(ox.cross(Px)).normalize().toVar(`transformedBitangentView`),Hx=Vx.transformDirection(wb).normalize().toVar(`transformedBitangentWorld`),Ux=Vg(Mx,zx,ix),Wx=Zb.mul(Ux),Gx=(e,t)=>e.sub(Wx.mul(t)),Kx=(()=>{let e=v_.cross(Zb);return e=e.cross(v_).normalize(),e=oy(e,ox,g_.mul(o_.oneMinus()).oneMinus().pow2().pow2()).normalize(),e})(),qx=U(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=ex.mul(m.inverseSqrt());return L_(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),Jx=class extends zh{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=Y(r.xy.mul(n),r.z));let i=null;return t===1?i=ux(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?Ux.mul(r).normalize():qx({eye_pos:Xb,surf_norm:ix,mapN:r,uv:ub()})),i}},Yx=V(Jx),Xx=U(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||ub()),forceUVContext:!0}),r=G(n(e=>e));return J(G(n(e=>e.add(e.dFdx()))).sub(r),G(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Zx=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(ex),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Qx=class extends zh{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 Zx({surf_pos:Xb,surf_norm:ix,dHdxy:Xx({textureNode:this.textureNode,bumpScale:e})})}},$x=V(Qx),eS=new Map,$=class e extends R{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=eS.get(e);return n===void 0&&(n=kx(e,t),eS.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?Y():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:G(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=Yx(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?$x(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):ix;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?Yx(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):ix;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=Bg(RS.x,RS.y,RS.y.negate(),RS.x).mul(e.rg.mul(2).sub(J(1)).normalize().mul(e.b))}else i=RS;else if(r===e.IRIDESCENCE_THICKNESS){let e=Ex(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Ex(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};$.ALPHA_TEST=`alphaTest`,$.COLOR=`color`,$.OPACITY=`opacity`,$.SHININESS=`shininess`,$.SPECULAR=`specular`,$.SPECULAR_STRENGTH=`specularStrength`,$.SPECULAR_INTENSITY=`specularIntensity`,$.SPECULAR_COLOR=`specularColor`,$.REFLECTIVITY=`reflectivity`,$.ROUGHNESS=`roughness`,$.METALNESS=`metalness`,$.NORMAL=`normal`,$.CLEARCOAT=`clearcoat`,$.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,$.CLEARCOAT_NORMAL=`clearcoatNormal`,$.EMISSIVE=`emissive`,$.ROTATION=`rotation`,$.SHEEN=`sheen`,$.SHEEN_ROUGHNESS=`sheenRoughness`,$.ANISOTROPY=`anisotropy`,$.IRIDESCENCE=`iridescence`,$.IRIDESCENCE_IOR=`iridescenceIOR`,$.IRIDESCENCE_THICKNESS=`iridescenceThickness`,$.IOR=`ior`,$.TRANSMISSION=`transmission`,$.THICKNESS=`thickness`,$.ATTENUATION_DISTANCE=`attenuationDistance`,$.ATTENUATION_COLOR=`attenuationColor`,$.LINE_SCALE=`scale`,$.LINE_DASH_SIZE=`dashSize`,$.LINE_GAP_SIZE=`gapSize`,$.LINE_WIDTH=`linewidth`,$.LINE_DASH_OFFSET=`dashOffset`,$.POINT_WIDTH=`pointWidth`,$.DISPERSION=`dispersion`,$.LIGHT_MAP=`light`,$.AO_MAP=`ao`;var tS=H($,$.ALPHA_TEST),nS=H($,$.COLOR),rS=H($,$.SHININESS),iS=H($,$.EMISSIVE),aS=H($,$.OPACITY),oS=H($,$.SPECULAR),sS=H($,$.SPECULAR_INTENSITY),cS=H($,$.SPECULAR_COLOR),lS=H($,$.SPECULAR_STRENGTH),uS=H($,$.REFLECTIVITY),dS=H($,$.ROUGHNESS),fS=H($,$.METALNESS),pS=H($,$.NORMAL).context({getUV:null}),mS=H($,$.CLEARCOAT),hS=H($,$.CLEARCOAT_ROUGHNESS),gS=H($,$.CLEARCOAT_NORMAL).context({getUV:null}),_S=H($,$.ROTATION),vS=H($,$.SHEEN),yS=H($,$.SHEEN_ROUGHNESS),bS=H($,$.ANISOTROPY),xS=H($,$.IRIDESCENCE),SS=H($,$.IRIDESCENCE_IOR),CS=H($,$.IRIDESCENCE_THICKNESS),wS=H($,$.TRANSMISSION),TS=H($,$.THICKNESS),ES=H($,$.IOR),DS=H($,$.ATTENUATION_DISTANCE),OS=H($,$.ATTENUATION_COLOR),kS=H($,$.LINE_SCALE),AS=H($,$.LINE_DASH_SIZE),jS=H($,$.LINE_GAP_SIZE),MS=H($,$.LINE_WIDTH),NS=H($,$.LINE_DASH_OFFSET),PS=H($,$.POINT_WIDTH),FS=H($,$.DISPERSION),IS=H($,$.LIGHT_MAP),LS=H($,$.AO_MAP),RS=Z(new A).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))}),zS=class extends zh{static get type(){return`ModelViewProjectionNode`}constructor(e=null){super(`vec4`),this.positionNode=e}setup(e){if(e.shaderStage===`fragment`)return Cy(e.context.mvp);let t=this.positionNode||Kb,n=e.renderer.nodes.modelViewMatrix||Hb;return Sb.mul(n).mul(t)}},BS=V(zS),VS=class e extends R{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:Cy(this).build(t,n),a}};VS.VERTEX=`vertex`,VS.INSTANCE=`instance`,VS.SUBGROUP=`subgroup`,VS.INVOCATION_LOCAL=`invocationLocal`,VS.INVOCATION_SUBGROUP=`invocationSubgroup`,VS.DRAW=`draw`;var HS=H(VS,VS.VERTEX),US=H(VS,VS.INSTANCE),WS=H(VS,VS.SUBGROUP),GS=H(VS,VS.INVOCATION_SUBGROUP),KS=H(VS,VS.INVOCATION_LOCAL),qS=H(VS,VS.DRAW),JS=class extends R{static get type(){return`InstanceNode`}constructor(e){super(`void`),this.instanceMesh=e,this.instanceMatrixNode=null,this.instanceColorNode=null,this.updateType=L.FRAME,this.buffer=null,this.bufferColor=null}setup(e){let t=this.instanceMatrixNode,n=this.instanceColorNode,r=this.instanceMesh;if(t===null){let e=r.instanceMatrix;if(r.count<=1e3)t=yx(e.array,`mat4`,Math.max(r.count,1)).element(US);else{let n=new Cm(e.array,16,1);this.buffer=n;let r=e.usage===35048?Gy:Wy;t=Hg(r(n,`vec4`,16,0),r(n,`vec4`,16,4),r(n,`vec4`,16,8),r(n,`vec4`,16,12))}this.instanceMatrixNode=t}let i=r.instanceColor;if(i&&n===null){let e=new kl(i.array,3),t=i.usage===35048?Gy:Wy;this.bufferColor=e,n=Y(t(e,`vec3`,3,0)),this.instanceColorNode=n}let a=t.mul(Kb).xyz;if(Kb.assign(a),e.hasGeometryAttribute(`normal`)){let e=lx(nx,t);nx.assign(e)}this.instanceColorNode!==null&&r_(`vec3`,`vInstanceColor`).assign(this.instanceColorNode)}update(){this.instanceMesh.instanceMatrix.usage!==35048&&this.buffer!=null&&this.instanceMesh.instanceMatrix.version!==this.buffer.version&&(this.buffer.version=this.instanceMesh.instanceMatrix.version),this.instanceMesh.instanceColor&&this.instanceMesh.instanceColor.usage!==35048&&this.bufferColor!=null&&this.instanceMesh.instanceColor.version!==this.bufferColor.version&&(this.bufferColor.version=this.instanceMesh.instanceColor.version)}},YS=V(JS),XS=class extends R{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=US:this.batchingIdNode=qS);let t=U(([e])=>{let t=fb(_b(this.batchMesh._indirectTexture),0),n=K(e).modInt(K(t)),r=K(e).div(K(t));return _b(this.batchMesh._indirectTexture,jg(n,r)).x}).setLayout({name:`getIndirectIndex`,type:`uint`,inputs:[{name:`id`,type:`int`}]})(K(this.batchingIdNode)),n=this.batchMesh._matricesTexture,r=fb(_b(n),0),i=G(t).mul(4).toInt().toVar(),a=i.modInt(r),o=i.div(K(r)),s=Hg(_b(n,jg(a,o)),_b(n,jg(a.add(1),o)),_b(n,jg(a.add(2),o)),_b(n,jg(a.add(3),o))),c=this.batchMesh._colorsTexture;if(c!==null){let e=U(([e])=>{let t=fb(_b(c),0).x,n=e;return _b(c,jg(n.modInt(t),n.div(t))).rgb}).setLayout({name:`getBatchingColor`,type:`vec3`,inputs:[{name:`id`,type:`int`}]})(t);r_(`vec3`,`vBatchColor`).assign(e)}let l=Vg(s);Kb.assign(s.mul(Kb));let u=nx.div(Y(l[0].dot(l[0]),l[1].dot(l[1]),l[2].dot(l[2]))),d=l.mul(u).xyz;nx.assign(d),e.hasGeometryAttribute(`tangent`)&&jx.mulAssign(l)}},ZS=V(XS),QS=new WeakMap,$S=class extends R{static get type(){return`SkinningNode`}constructor(e,t=!1){super(`void`),this.skinnedMesh=e,this.useReference=t,this.updateType=L.OBJECT,this.skinIndexNode=lb(`skinIndex`,`uvec4`),this.skinWeightNode=lb(`skinWeight`,`vec4`);let n,r,i;t?(n=Ex(`bindMatrix`,`mat4`),r=Ex(`bindMatrixInverse`,`mat4`),i=Dx(`skeleton.boneMatrices`,`mat4`,e.skeleton.bones.length)):(n=Z(e.bindMatrix,`mat4`),r=Z(e.bindMatrixInverse,`mat4`),i=yx(e.skeleton.boneMatrices,`mat4`,e.skeleton.bones.length)),this.bindMatrixNode=n,this.bindMatrixInverseNode=r,this.boneMatricesNode=i,this.previousBoneMatricesNode=null}getSkinnedPosition(e=this.boneMatricesNode,t=Kb){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=L_(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}getSkinnedNormal(e=this.boneMatricesNode,t=nx){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=L_(r.x.mul(o),r.y.mul(s),r.z.mul(c),r.w.mul(l));return u=a.mul(u).mul(i),u.transformDirection(t).xyz}getPreviousSkinnedPosition(e){let t=e.object;return this.previousBoneMatricesNode===null&&(t.skeleton.previousBoneMatrices=new Float32Array(t.skeleton.boneMatrices),this.previousBoneMatricesNode=Dx(`skeleton.previousBoneMatrices`,`mat4`,t.skeleton.bones.length)),this.getSkinnedPosition(this.previousBoneMatricesNode,qb)}needsPreviousBoneMatrices(e){let t=e.renderer.getMRT();return t&&t.has(`velocity`)}setup(e){this.needsPreviousBoneMatrices(e)&&qb.assign(this.getPreviousSkinnedPosition(e));let t=this.getSkinnedPosition();if(Kb.assign(t),e.hasGeometryAttribute(`normal`)){let t=this.getSkinnedNormal();nx.assign(t),e.hasGeometryAttribute(`tangent`)&&jx.assign(t)}}generate(e,t){if(t!==`void`)return Kb.build(e,t)}update(e){let t=(this.useReference?e.object:this.skinnedMesh).skeleton;QS.get(t)!==e.frameId&&(QS.set(t,e.frameId),this.previousBoneMatricesNode!==null&&t.previousBoneMatrices.set(t.boneMatrices),t.update())}},eC=e=>B(new $S(e)),tC=e=>B(new $S(e,!0)),nC=class extends R{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tB(new nC(wg(e,`int`))).append(),iC=()=>nb(`continue`).append(),aC=()=>nb(`break`).append(),oC=(...e)=>(console.warn(`TSL.LoopNode: loop() has been renamed to Loop().`),rC(...e)),sC=new WeakMap,cC=new Fn,lC=U(({bufferMap:e,influence:t,stride:n,width:r,depth:i,offset:a})=>{let o=K(HS).mul(n).add(a),s=o.div(r);return _b(e,jg(o.sub(s.mul(r)),s)).depth(i).mul(t)});function uC(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=sC.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 Rn(p,u,d,a);m.type=E,m.needsUpdate=!0;let h=l*4;for(let e=0;e{let t=G(0).toVar();this.mesh.count>1&&this.mesh.morphTexture!==null&&this.mesh.morphTexture!==void 0?t.assign(_b(this.mesh.morphTexture,jg(K(e).add(1),K(US))).r):t.assign(Ex(`morphTargetInfluences`,`float`).element(e).toVar()),n===!0&&Kb.addAssign(lC({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:K(0)})),r===!0&&nx.addAssign(lC({bufferMap:o,influence:t,stride:s,width:l,depth:e,offset:K(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)}},fC=V(dC),pC=e=>e.sort((e,t)=>e.id-t.id),mC=(e,t)=>{for(let n of t)if(n.isAnalyticLightNode&&n.light.id===e)return n;return null},hC=new WeakMap,gC=class extends R{static get type(){return`LightsNode`}constructor(e=[]){super(`vec3`),this.totalDiffuseNode=Y().toVar(`totalDiffuse`),this.totalSpecularNode=Y().toVar(`totalSpecular`),this.outgoingLightNode=Y().toVar(`outgoingLight`),this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this.global=!0}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.getDataFromNode(this);for(let n of t.nodes)n.build(e)}setupLightsNode(e){let t=[],n=this._lightNodes,r=pC(this._lights),i=e.renderer.nodes.library;for(let e of r)if(e.isNode)t.push(B(e));else{let r=null;if(n!==null&&(r=mC(e.id,n)),r===null){let n=i.getLightNodeClass(e.constructor);if(n===null){console.warn(`LightsNode.setupNodeLights: Light node not found for ${e.constructor.name}`);continue}let r=null;hC.has(e)?r=hC.get(e):(r=new n(e),hC.set(e,r)),t.push(r)}}this._lightNodes=t}setup(e){this._lightNodes===null&&this.setupLightsNode(e);let t=e.context,n=t.lightingModel,r=this.outgoingLightNode;if(n){let{_lightNodes:i,totalDiffuseNode:a,totalSpecularNode:o}=this;t.outgoingLight=r;let s=e.addStack(),c=e.getDataFromNode(this);c.nodes=s.nodes,n.start(t,s,e);for(let t of i)t.build(e);n.indirect(t,s,e);let{backdrop:l,backdropAlpha:u}=t,{directDiffuse:d,directSpecular:f,indirectDiffuse:p,indirectSpecular:m}=t.reflectedLight,h=d.add(p);l!==null&&(h=Y(u===null?l:u.mix(h,l)),t.material.transparent=!0),a.assign(h),o.assign(f.add(m)),r.assign(a.add(o)),n.finish(t,s,e),r=r.bypass(e.removeStack())}return r}setLights(e){return this._lights=e,this._lightNodes=null,this._lightNodesHash=null,this}getLights(){return this._lights}},_C=V(gC),vC=class extends R{static get type(){return`LightingNode`}constructor(){super(`vec3`),this.isLightingNode=!0}generate(){console.warn(`Abstract function.`)}},yC=class extends vC{static get type(){return`AONode`}constructor(e=null){super(),this.aoNode=e}setup(e){e.context.ambientOcclusion.mulAssign(this.aoNode)}},bC=class extends _y{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:Y().toVar(`directDiffuse`),directSpecular:Y().toVar(`directSpecular`),indirectDiffuse:Y().toVar(`indirectDiffuse`),indirectSpecular:Y().toVar(`indirectSpecular`)};return{radiance:Y().toVar(`radiance`),irradiance:Y().toVar(`irradiance`),iblIrradiance:Y().toVar(`iblIrradiance`),ambientOcclusion:G(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)}},xC=V(bC),SC=class extends vC{static get type(){return`IrradianceNode`}constructor(e){super(),this.node=e}setup(e){e.context.irradiance.addAssign(this.node)}},CC,wC,TC=class e extends R{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=L.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=L.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(wC),wC.multiplyScalar(t.getPixelRatio())):wC.copy(n.viewport):n===null?t.getDrawingBufferSize(CC):(CC.width=n.width,CC.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Z(CC||=new A):t===e.VIEWPORT?Z(wC||=new Fn):J(OC.div(DC)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(DC).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};TC.COORDINATE=`coordinate`,TC.VIEWPORT=`viewport`,TC.SIZE=`size`,TC.UV=`uv`;var EC=H(TC,TC.UV),DC=H(TC,TC.SIZE),OC=H(TC,TC.COORDINATE),kC=H(TC,TC.VIEWPORT),AC=kC.zw,jC=OC.sub(kC.xy),MC=jC.div(AC),NC=U(()=>(console.warn(`TSL.ViewportNode: "viewportResolution" is deprecated. Use "screenSize" instead.`),DC),`vec2`).once()(),PC=U(()=>(console.warn(`TSL.ViewportNode: "viewportTopLeft" is deprecated. Use "screenUV" instead.`),EC),`vec2`).once()(),FC=U(()=>(console.warn(`TSL.ViewportNode: "viewportBottomLeft" is deprecated. Use "screenUV.flipY()" instead.`),EC.flipY()),`vec2`).once()(),IC=new A,LC=class extends hb{static get type(){return`ViewportTextureNode`}constructor(e=EC,t=null,n=null){n===null&&(n=new Tu,n.minFilter=v),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=L.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(IC);let n=this.value;(n.image.width!==IC.width||n.image.height!==IC.height)&&(n.image.width=IC.width,n.image.height=IC.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}},RC=V(LC),zC=V(LC,null,null,{generateMipmaps:!0}),BC=null,VC=class extends LC{static get type(){return`ViewportDepthTextureNode`}constructor(e=EC,t=null){BC===null&&(BC=new ho),super(e,t,BC)}},HC=V(VC),UC=class e extends R{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=JC().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?KC(Xb.z,yb,bb):WC(Xb.z,yb,bb):n===e.LINEAR_DEPTH&&(i=r===null?WC(Xb.z,yb,bb):t.isPerspectiveCamera?WC(qC(r,yb,bb),yb,bb):r),i}};UC.DEPTH_BASE=`depthBase`,UC.DEPTH=`depth`,UC.LINEAR_DEPTH=`linearDepth`;var WC=(e,t,n)=>e.add(t).div(t.sub(n)),GC=(e,t,n)=>t.sub(n).mul(e).sub(t),KC=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),qC=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),JC=V(UC,UC.DEPTH_BASE),YC=H(UC,UC.DEPTH),XC=V(UC,UC.LINEAR_DEPTH),ZC=XC(HC());YC.assign=e=>JC(e);var QC=class e extends R{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return U(()=>{let r=Sx(e),i=n_(`float`,`distanceToPlane`),a=n_(`float`,`distanceToGradient`),o=n_(`float`,`clipOpacity`);o.assign(1);let s;if(rC(n,({i:e})=>{s=r.element(e),i.assign(Xb.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(uy(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(Xb.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(uy(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}i_.a.mulAssign(o),i_.a.equal(0).discard()})()}setupDefault(e,t,n){return U(()=>{let r=Sx(e),i;if(rC(n,({i:e})=>{i=r.element(e),Xb.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(Xb.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};QC.ALPHA_TO_COVERAGE=`alphaToCoverage`,QC.DEFAULT=`default`;var $C=()=>B(new QC),ew=()=>B(new QC(QC.ALPHA_TO_COVERAGE)),tw=class extends di{static get type(){return`NodeMaterial`}constructor(){super(),this.isNodeMaterial=!0,this.type=this.constructor.type,this.forceSinglePass=!1,this.fog=!0,this.lights=!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.positionNode=null,this.depthNode=null,this.shadowNode=null,this.shadowPositionNode=null,this.outputNode=null,this.mrtNode=null,this.fragmentNode=null,this.vertexNode=null}customProgramCacheKey(){return this.type+Ch(this)}build(e){this.setup(e)}setupObserver(e){return new vh(e)}setup(e){e.context.setupNormal=()=>this.setupNormal(e),e.addStack(),e.stack.outputNode=this.vertexNode||this.setupPosition(e),e.addFlow(`vertex`,e.removeStack()),e.addStack();let t,n=this.setupClipping(e);if(this.depthWrite===!0&&this.setupDepth(e),this.fragmentNode===null){this.setupDiffuseColor(e),this.setupVariants(e);let r=this.setupLighting(e);n!==null&&e.stack.add(n);let i=X(r,i_.a).max(0);if(t=this.setupOutput(e,i),S_.assign(t),this.outputNode!==null&&(t=this.outputNode),e.renderer.getRenderTarget()!==null){let n=e.renderer.getMRT(),r=this.mrtNode;n===null?r!==null&&(t=r):(t=n,r!==null&&(t=n.merge(r)))}}else{let n=this.fragmentNode;n.isOutputStructNode!==!0&&(n=X(n)),t=this.setupOutput(e,n)}e.stack.outputNode=t,e.addFlow(`fragment`,e.removeStack()),e.monitor=this.setupObserver(e)}setupClipping(e){if(e.clippingContext===null)return null;let{globalClippingCount:t,localClippingCount:n}=e.clippingContext,r=null;if(t||n){let t=e.renderer.samples;this.alphaToCoverage&&t>1?r=ew():e.stack.add($C())}return r}setupDepth(e){let{renderer:t}=e,n=this.depthNode;if(n===null){let e=`getMRT`in t&&t.getMRT();e&&e.has(`depth`)?n=e.get(`depth`):t.logarithmicDepthBuffer===!0&&(n=BS().w.add(1).log2().mul(xb).mul(.5))}n!==null&&YC.assign(n).append()}setupPosition(e){let{object:t}=e,n=t.geometry;if(e.addStack(),(n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color)&&fC(t).append(),t.isSkinnedMesh===!0&&tC(t).append(),this.displacementMap){let e=kx(`displacementMap`,`texture`),t=kx(`displacementScale`,`float`),n=kx(`displacementBias`,`float`);Kb.addAssign(nx.normalize().mul(e.x.mul(t).add(n)))}t.isBatchedMesh&&ZS(t).append(),t.instanceMatrix&&t.instanceMatrix.isInstancedBufferAttribute===!0&&YS(t).append(),this.positionNode!==null&&Kb.assign(this.positionNode);let r=BS();return e.context.vertex=e.removeStack(),e.context.mvp=r,r}setupDiffuseColor({object:e,geometry:t}){let n=this.colorNode?X(this.colorNode):nS;this.vertexColors===!0&&t.hasAttribute(`color`)&&(n=X(n.xyz.mul(lb(`color`,`vec3`)),n.a)),e.instanceColor&&(n=r_(`vec3`,`vInstanceColor`).mul(n)),e.isBatchedMesh&&e._colorsTexture&&(n=r_(`vec3`,`vBatchColor`).mul(n)),i_.assign(n);let r=this.opacityNode?G(this.opacityNode):aS;if(i_.a.assign(i_.a.mul(r)),this.alphaTestNode!==null||this.alphaTest>0){let e=this.alphaTestNode===null?tS:G(this.alphaTestNode);i_.a.lessThanEqual(e).discard()}this.transparent===!1&&this.blending===1&&this.alphaToCoverage===!1&&i_.a.assign(1)}setupVariants(){}setupOutgoingLight(){return this.lights===!0?Y(0):i_.rgb}setupNormal(){return this.normalNode?Y(this.normalNode):pS}setupEnvironment(){let e=null;return this.envNode?e=this.envNode:this.envMap&&(e=this.envMap.isCubeTexture?kx(`envMap`,`cubeTexture`):kx(`envMap`,`texture`)),e}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new SC(IS)),t}setupLights(e){let t=[],n=this.setupEnvironment(e);n&&n.isLightingNode&&t.push(n);let r=this.setupLightMap(e);if(r&&r.isLightingNode&&t.push(r),this.aoNode!==null||e.material.aoMap){let e=this.aoNode===null?LS:this.aoNode;t.push(new yC(e))}let i=this.lightsNode||e.lightsNode;return t.length>0&&(i=_C([...i.getLights(),...t])),i}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().getLights().length>0?o=xC(a,this.setupLightingModel(e),n,r):n!==null&&(o=Y(r===null?n:oy(o,n,r))),(i&&i.isNode===!0||t.emissive&&t.emissive.isColor===!0)&&(a_.assign(Y(i||iS)),o=o.add(a_)),o}setupOutput(e,t){if(this.fog===!0){let n=e.fogNode;n&&(t=X(n.mix(t.rgb,n.colorNode),t.a))}return 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=di.prototype.toJSON.call(this,e),r=wh(this);n.inputNodes={};for(let{property:t,childNode:i}of r)n.inputNodes[t]=i.toJSON(e).uuid;function i(e){let t=[];for(let n in e){let r=e[n];delete r.metadata,t.push(r)}return t}if(t){let t=i(e.textures),r=i(e.images),a=i(e.nodes);t.length>0&&(n.textures=t),r.length>0&&(n.images=r),a.length>0&&(n.nodes=a)}return n}copy(e){return this.lightsNode=e.lightsNode,this.envNode=e.envNode,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.positionNode=e.positionNode,this.depthNode=e.depthNode,this.shadowNode=e.shadowNode,this.shadowPositionNode=e.shadowPositionNode,this.outputNode=e.outputNode,this.mrtNode=e.mrtNode,this.fragmentNode=e.fragmentNode,this.vertexNode=e.vertexNode,super.copy(e)}},nw=new _u,rw=class extends tw{static get type(){return`InstancedPointsNodeMaterial`}constructor(e={}){super(),this.lights=!1,this.useAlphaToCoverage=!0,this.useColor=e.vertexColors,this.pointWidth=1,this.pointColorNode=null,this.pointWidthNode=null,this.setDefaultValues(nw),this.setValues(e)}setup(e){this.setupShaders(e),super.setup(e)}setupShaders({renderer:e}){let t=this.alphaToCoverage,n=this.useColor;this.vertexNode=U(()=>{let e=lb(`instancePosition`).xyz,t=X(Hb.mul(X(e,1))),n=kC.z.div(kC.w),r=Sb.mul(t),i=Gb.xy.toVar();return i.mulAssign(this.pointWidthNode?this.pointWidthNode:PS),i.assign(i.div(kC.z)),i.y.assign(i.y.mul(n)),i.assign(i.mul(r.w)),r.addAssign(X(i,0,0)),r})(),this.fragmentNode=U(()=>{let r=G(1).toVar(),i=ay(ub().mul(2).sub(1));if(t&&e.samples>1){let e=G(i.fwidth()).toVar();r.assign(uy(e.oneMinus(),e.add(1),i).oneMinus())}else i.greaterThan(1).discard();let a;return a=this.pointColorNode?this.pointColorNode:n?lb(`instanceColor`).mul(nS):nS,r.mulAssign(aS),X(a,r)})()}get alphaToCoverage(){return this.useAlphaToCoverage}set alphaToCoverage(e){this.useAlphaToCoverage!==e&&(this.useAlphaToCoverage=e,this.needsUpdate=!0)}},iw=new ru,aw=class extends tw{static get type(){return`LineBasicNodeMaterial`}constructor(e){super(),this.isLineBasicNodeMaterial=!0,this.lights=!1,this.setDefaultValues(iw),this.setValues(e)}},ow=new Tf,sw=class extends tw{static get type(){return`LineDashedNodeMaterial`}constructor(e){super(),this.isLineDashedNodeMaterial=!0,this.lights=!1,this.setDefaultValues(ow),this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setupVariants(){let e=this.offsetNode,t=this.dashScaleNode?G(this.dashScaleNode):kS,n=this.dashSizeNode?G(this.dashSizeNode):AS,r=this.dashSizeNode?G(this.dashGapNode):jS;C_.assign(n),w_.assign(r);let i=Cy(lb(`lineDistance`).mul(t));(e?i.add(e):i).mod(C_.add(w_)).greaterThan(C_).discard()}},cw=new Tf,lw=class extends tw{static get type(){return`Line2NodeMaterial`}constructor(e={}){super(),this.lights=!1,this.setDefaultValues(cw),this.useAlphaToCoverage=!0,this.useColor=e.vertexColors,this.useDash=e.dashed,this.useWorldUnits=!1,this.dashOffset=0,this.lineWidth=1,this.lineColorNode=null,this.offsetNode=null,this.dashScaleNode=null,this.dashSizeNode=null,this.gapSizeNode=null,this.setValues(e)}setup(e){this.setupShaders(e),super.setup(e)}setupShaders({renderer:e}){let t=this.alphaToCoverage,n=this.useColor,r=this.dashed,i=this.worldUnits,a=U(({start:e,end:t})=>{let n=Sb.element(2).element(2),r=Sb.element(3).element(2).mul(-.5).div(n).sub(e.z).div(t.z.sub(e.z));return X(oy(e.xyz,t.xyz,r),t.w)}).setLayout({name:`trimSegment`,type:`vec4`,inputs:[{name:`start`,type:`vec4`},{name:`end`,type:`vec4`}]});this.vertexNode=U(()=>{let e=lb(`instanceStart`),t=lb(`instanceEnd`),n=X(Hb.mul(X(e,1))).toVar(`start`),o=X(Hb.mul(X(t,1))).toVar(`end`);i&&(r_(`vec3`,`worldStart`).assign(n.xyz),r_(`vec3`,`worldEnd`).assign(o.xyz));let s=kC.z.div(kC.w);W(Sb.element(2).element(3).equal(-1),()=>{W(n.z.lessThan(0).and(o.z.greaterThan(0)),()=>{o.assign(a({start:n,end:o}))}).ElseIf(o.z.lessThan(0).and(n.z.greaterThanEqual(0)),()=>{n.assign(a({start:o,end:n}))})});let c=Sb.mul(n),l=Sb.mul(o),u=c.xyz.div(c.w),d=l.xyz.div(l.w),f=d.xy.sub(u.xy).toVar();f.x.assign(f.x.mul(s)),f.assign(f.normalize());let p=X().toVar();if(i){let e=o.xyz.sub(n.xyz).normalize(),t=oy(n.xyz,o.xyz,.5).normalize(),i=e.cross(t).normalize(),a=e.cross(i),s=r_(`vec4`,`worldPos`);s.assign(Gb.y.lessThan(.5).select(n,o));let c=MS.mul(.5);s.addAssign(X(Gb.x.lessThan(0).select(i.mul(c),i.mul(c).negate()),0)),r||(s.addAssign(X(Gb.y.lessThan(.5).select(e.mul(c).negate(),e.mul(c)),0)),s.addAssign(X(a.mul(c),0)),W(Gb.y.greaterThan(1).or(Gb.y.lessThan(0)),()=>{s.subAssign(X(a.mul(2).mul(c),0))})),p.assign(Sb.mul(s));let l=Y().toVar();l.assign(Gb.y.lessThan(.5).select(u,d)),p.z.assign(l.z.mul(p.w))}else{let e=J(f.y,f.x.negate()).toVar(`offset`);f.x.assign(f.x.div(s)),e.x.assign(e.x.div(s)),e.assign(Gb.x.lessThan(0).select(e.negate(),e)),W(Gb.y.lessThan(0),()=>{e.assign(e.sub(f))}).ElseIf(Gb.y.greaterThan(1),()=>{e.assign(e.add(f))}),e.assign(e.mul(MS)),e.assign(e.div(kC.w)),p.assign(Gb.y.lessThan(.5).select(c,l)),e.assign(e.mul(p.w)),p.assign(p.add(X(e,0,0)))}return p})();let o=U(({p1:e,p2:t,p3:n,p4:r})=>{let i=e.sub(n),a=r.sub(n),o=t.sub(e),s=i.dot(a),c=a.dot(o),l=i.dot(o),u=a.dot(a),d=o.dot(o).mul(u).sub(c.mul(c)),f=s.mul(c).sub(l.mul(u)).div(d).clamp();return J(f,s.add(c.mul(f)).div(u).clamp())});this.fragmentNode=U(()=>{let a=ub();if(r){let e=this.offsetNode?G(this.offsetNodeNode):NS,t=this.dashScaleNode?G(this.dashScaleNode):kS,n=this.dashSizeNode?G(this.dashSizeNode):AS,r=this.dashSizeNode?G(this.dashGapNode):jS;C_.assign(n),w_.assign(r);let i=lb(`instanceDistanceStart`),o=lb(`instanceDistanceEnd`),s=Cy(Gb.y.lessThan(.5).select(t.mul(i),kS.mul(o)).add(NS)),c=e?s.add(e):s;a.y.lessThan(-1).or(a.y.greaterThan(1)).discard(),c.mod(C_.add(w_)).greaterThan(C_).discard()}let s=G(1).toVar(`alpha`);if(i){let n=r_(`vec3`,`worldStart`),i=r_(`vec3`,`worldEnd`),a=r_(`vec4`,`worldPos`).xyz.normalize().mul(1e5),c=i.sub(n),l=o({p1:n,p2:i,p3:Y(0,0,0),p4:a}),u=n.add(c.mul(l.x)),d=a.mul(l.y),f=u.sub(d).length().div(MS);if(!r)if(t&&e.samples>1){let e=f.fwidth();s.assign(uy(e.negate().add(.5),e.add(.5),f).oneMinus())}else f.greaterThan(.5).discard()}else if(t&&e.samples>1){let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1)),n=e.mul(e).add(t.mul(t)),r=G(n.fwidth()).toVar(`dlen`);W(a.y.abs().greaterThan(1),()=>{s.assign(uy(r.oneMinus(),r.add(1),n).oneMinus())})}else W(a.y.abs().greaterThan(1),()=>{let e=a.x,t=a.y.greaterThan(0).select(a.y.sub(1),a.y.add(1));e.mul(e).add(t.mul(t)).greaterThan(1).discard()});let c;if(this.lineColorNode)c=this.lineColorNode;else if(n){let e=lb(`instanceColorStart`),t=lb(`instanceColorEnd`);c=Gb.y.lessThan(.5).select(e,t).mul(nS)}else c=nS;return X(c,s)})()}get worldUnits(){return this.useWorldUnits}set worldUnits(e){this.useWorldUnits!==e&&(this.useWorldUnits=e,this.needsUpdate=!0)}get dashed(){return this.useDash}set dashed(e){this.useDash!==e&&(this.useDash=e,this.needsUpdate=!0)}get alphaToCoverage(){return this.useAlphaToCoverage}set alphaToCoverage(e){this.useAlphaToCoverage!==e&&(this.useAlphaToCoverage=e,this.needsUpdate=!0)}},uw=e=>B(e).mul(.5).add(.5),dw=e=>B(e).mul(2).sub(1),fw=new Sf,pw=class extends tw{static get type(){return`MeshNormalNodeMaterial`}constructor(e){super(),this.lights=!1,this.isMeshNormalNodeMaterial=!0,this.setDefaultValues(fw),this.setValues(e)}setupDiffuseColor(){let e=this.opacityNode?G(this.opacityNode):aS;i_.assign(X(uw(ox),e))}},mw=class extends zh{static get type(){return`EquirectUVNode`}constructor(e=Yb){super(`vec2`),this.dirNode=e}setup(){let e=this.dirNode;return J(e.z.atan2(e.x).mul(1/(Math.PI*2)).add(.5),e.y.clamp(-1,1).asin().mul(1/Math.PI).add(.5))}},hw=V(mw),gw=class extends va{constructor(e=1,t={}){super(e,t),this.isCubeRenderTarget=!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 Zi(5,5,5),a=hw(Yb),o=new tw;o.colorNode=gb(t,a,0),o.side=1,o.blending=0;let s=new Ji(i,o),c=new Gc;c.add(s),t.minFilter===1008&&(t.minFilter=h);let l=new ga(1,10,this),u=e.getMRT();return e.setMRT(null),l.update(e,c),e.setMRT(u),t.minFilter=n,t.currentGenerateMipmaps=r,s.geometry.dispose(),s.material.dispose(),this}},_w=new WeakMap,vw=class extends zh{static get type(){return`CubeMapNode`}constructor(e){super(`vec3`),this.envNode=e,this._cubeTexture=null,this._cubeTextureNode=_x();let t=new _a;t.isRenderTargetTexture=!0,this._defaultTexture=t,this.updateBeforeType=L.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(_w.has(e)){let t=_w.get(e);xw(t,e.mapping),this._cubeTexture=t}else{let n=e.image;if(yw(n)){let r=new gw(n.height);r.fromEquirectangularTexture(t,e),xw(r.texture,e.mapping),this._cubeTexture=r.texture,_w.set(e,r.texture),e.addEventListener(`dispose`,bw)}else this._cubeTexture=this._defaultTexture}this._cubeTextureNode.value=this._cubeTexture}else this._cubeTextureNode=this.envNode}}}setup(e){return this.updateBefore(e),this._cubeTextureNode}};function yw(e){return e==null?!1:e.height>0}function bw(e){let t=e.target;t.removeEventListener(`dispose`,bw);let n=_w.get(t);n!==void 0&&(_w.delete(t),n.dispose())}function xw(e,t){t===303?e.mapping=301:t===304&&(e.mapping=302)}var Sw=V(vw),Cw=class extends vC{static get type(){return`BasicEnvironmentNode`}constructor(e=null){super(),this.envNode=e}setup(e){e.context.environment=Sw(this.envNode)}},ww=class extends vC{static get type(){return`BasicLightMapNode`}constructor(e=null){super(),this.lightMapNode=e}setup(e){let t=G(1/Math.PI);e.context.irradianceLightMap=this.lightMapNode.mul(t)}},Tw=class{start(){}finish(){}direct(){}directRectArea(){}indirect(){}ambientOcclusion(){}},Ew=class extends Tw{constructor(){super()}indirect(e,t,n){let r=e.ambientOcclusion,i=e.reflectedLight,a=n.context.irradianceLightMap;i.indirectDiffuse.assign(X(0)),a?i.indirectDiffuse.addAssign(a):i.indirectDiffuse.addAssign(X(1,1,1,0)),i.indirectDiffuse.mulAssign(r),i.indirectDiffuse.mulAssign(i_.rgb)}finish(e,t,n){let r=n.material,i=e.outgoingLight,a=n.context.environment;if(a)switch(r.combine){case 0:i.rgb.assign(oy(i.rgb,i.rgb.mul(a.rgb),lS.mul(uS)));break;case 1:i.rgb.assign(oy(i.rgb,a.rgb,lS.mul(uS)));break;case 2:i.rgb.addAssign(a.rgb.mul(lS.mul(uS)));break;default:console.warn(`THREE.BasicLightingModel: Unsupported .combine value:`,r.combine);break}}},Dw=new fi,Ow=class extends tw{static get type(){return`MeshBasicNodeMaterial`}constructor(e){super(),this.isMeshBasicNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Dw),this.setValues(e)}setupNormal(){return ix}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightMap(e){let t=null;return e.material.lightMap&&(t=new ww(IS)),t}setupOutgoingLight(){return i_.rgb}setupLightingModel(){return new Ew}},kw=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))}),Aw=U(e=>e.diffuseColor.mul(1/Math.PI)),jw=()=>G(.25),Mw=U(({dotNH:e})=>x_.mul(G(.5)).add(1).mul(G(1/Math.PI)).mul(e.pow(x_))),Nw=U(({lightDirection:e})=>{let t=e.add(Zb).normalize(),n=ox.dot(t).clamp(),r=kw({f0:y_,f90:1,dotVH:Zb.dot(t).clamp()}),i=jw(),a=Mw({dotNH:n});return r.mul(i).mul(a)}),Pw=class extends Ew{constructor(e=!0){super(),this.specular=e}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=ox.dot(e).clamp().mul(t);n.directDiffuse.addAssign(r.mul(Aw({diffuseColor:i_.rgb}))),this.specular===!0&&n.directSpecular.addAssign(r.mul(Nw({lightDirection:e})).mul(lS))}indirect({ambientOcclusion:e,irradiance:t,reflectedLight:n}){n.indirectDiffuse.addAssign(t.mul(Aw({diffuseColor:i_}))),n.indirectDiffuse.mulAssign(e)}},Fw=new Cf,Iw=class extends tw{static get type(){return`MeshLambertNodeMaterial`}constructor(e){super(),this.isMeshLambertNodeMaterial=!0,this.lights=!0,this.setDefaultValues(Fw),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightingModel(){return new Pw(!1)}},Lw=new bf,Rw=class extends tw{static get type(){return`MeshPhongNodeMaterial`}constructor(e){super(),this.isMeshPhongNodeMaterial=!0,this.lights=!0,this.shininessNode=null,this.specularNode=null,this.setDefaultValues(Lw),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t?new Cw(t):null}setupLightingModel(){return new Pw}setupVariants(){let e=(this.shininessNode?G(this.shininessNode):rS).max(1e-4);x_.assign(e);let t=this.specularNode||oS;y_.assign(t)}copy(e){return this.shininessNode=e.shininessNode,this.specularNode=e.specularNode,super.copy(e)}},zw=U(()=>{let e=ix.dFdx().abs().max(ix.dFdy().abs());return e.x.max(e.y).max(e.z)}),Bw=U(e=>{let{roughness:t}=e,n=zw(),r=t.max(.0525);return r=r.add(n),r=r.min(1),r}),Vw=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 B_(.5,i.add(a).max(av))}).setLayout({name:`V_GGX_SmithCorrelated`,type:`float`,inputs:[{name:`alpha`,type:`float`},{name:`dotNL`,type:`float`},{name:`dotNV`,type:`float`}]}),Hw=U(({alphaT:e,alphaB:t,dotTV:n,dotBV:r,dotTL:i,dotBL:a,dotNV:o,dotNL:s})=>{let c=s.mul(Y(e.mul(n),t.mul(r),o).length()),l=o.mul(Y(e.mul(i),t.mul(a),s).length());return B_(.5,c.add(l)).saturate()}).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`}]}),Uw=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`}]}),Ww=G(1/Math.PI),Gw=U(({alphaT:e,alphaB:t,dotNH:n,dotTH:r,dotBH:i})=>{let a=e.mul(t),o=Y(t.mul(r),e.mul(i),a.mul(n)),s=o.dot(o),c=a.div(s);return Ww.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`}]}),Kw=U(e=>{let{lightDirection:t,f0:n,f90:r,roughness:i,f:a,USE_IRIDESCENCE:o,USE_ANISOTROPY:s}=e,c=e.normalView||ox,l=i.pow2(),u=t.add(Zb).normalize(),d=c.dot(t).clamp(),f=c.dot(Zb).clamp(),p=c.dot(u).clamp(),m=kw({f0:n,f90:r,dotVH:Zb.dot(u).clamp()}),h,g;if(bg(o)&&(m=f_.mix(m,a)),bg(s)){let e=__.dot(t),n=__.dot(Zb),r=__.dot(u),i=v_.dot(t),a=v_.dot(Zb),o=v_.dot(u);h=Hw({alphaT:h_,alphaB:l,dotTV:n,dotBV:a,dotTL:e,dotBL:i,dotNV:f,dotNL:d}),g=Gw({alphaT:h_,alphaB:l,dotNH:p,dotTH:r,dotBH:o})}else h=Vw({alpha:l,dotNL:d,dotNV:f}),g=Uw({alpha:l,dotNH:p});return m.mul(h).mul(g)}),qw=U(({roughness:e,dotNV:t})=>{let n=X(-1,-.0275,-.572,.022),r=X(1,.0425,1.04,-.04),i=e.mul(n).add(r),a=i.x.mul(i.x).min(t.mul(-9.28).exp2()).mul(i.x).add(i.y);return J(-1.04,1.04).mul(a).add(i.zw)}).setLayout({name:`DFGApprox`,type:`vec2`,inputs:[{name:`roughness`,type:`float`},{name:`dotNV`,type:`vec3`}]}),Jw=U(e=>{let{dotNV:t,specularColor:n,specularF90:r,roughness:i}=e,a=qw({dotNV:t,roughness:i});return n.mul(a.x).add(r.mul(a.y))}),Yw=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(Y(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`}]}),Xw=U(({roughness:e,dotNH:t})=>{let n=e.pow2(),r=G(1).div(n),i=t.pow2().oneMinus().max(.0078125);return G(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`}]}),Zw=U(({dotNV:e,dotNL:t})=>G(1).div(G(4).mul(t.add(e).sub(t.mul(e))))).setLayout({name:`V_Neubelt`,type:`float`,inputs:[{name:`dotNV`,type:`float`},{name:`dotNL`,type:`float`}]}),Qw=U(({lightDirection:e})=>{let t=e.add(Zb).normalize(),n=ox.dot(e).clamp(),r=ox.dot(Zb).clamp(),i=Xw({roughness:d_,dotNH:ox.dot(t).clamp()}),a=Zw({dotNV:r,dotNL:n});return u_.mul(i).mul(a)}),$w=U(({N:e,V:t,roughness:n})=>{let r=J(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`}]}),eT=U(({f:e})=>{let t=e.length();return Gv(t.mul(t).add(e.z).div(t.add(1)),0)}).setLayout({name:`LTC_ClippedSphereFormFactor`,type:`float`,inputs:[{name:`f`,type:`vec3`}]}),tT=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,Gv(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`}]}),nT=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=Y().toVar();return W(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(Vg(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=Y(0).toVar();g.addAssign(tT({v1:f,v2:p})),g.addAssign(tT({v1:p,v2:m})),g.addAssign(tT({v1:m,v2:h})),g.addAssign(tT({v1:h,v2:f})),d.assign(Y(eT({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`}]}),rT=1/6,iT=e=>z_(rT,z_(e,z_(e,e.negate().add(3)).sub(3)).add(1)),aT=e=>z_(rT,z_(e,z_(e,z_(3,e).sub(6))).add(4)),oT=e=>z_(rT,z_(e,z_(e,z_(-3,e).add(3)).add(3)).add(1)),sT=e=>z_(rT,$v(e,3)),cT=e=>iT(e).add(aT(e)),lT=e=>oT(e).add(sT(e)),uT=e=>L_(-1,aT(e).div(iT(e).add(aT(e)))),dT=e=>L_(1,sT(e).div(oT(e).add(sT(e)))),fT=(e,t,n)=>{let r=e.uvNode,i=z_(r,t.zw).add(.5),a=bv(i),o=Cv(i),s=cT(o.x),c=lT(o.x),l=uT(o.x),u=dT(o.x),d=uT(o.y),f=dT(o.y),p=J(a.x.add(l),a.y.add(d)).sub(.5).mul(t.xy),m=J(a.x.add(u),a.y.add(d)).sub(.5).mul(t.xy),h=J(a.x.add(l),a.y.add(f)).sub(.5).mul(t.xy),g=J(a.x.add(u),a.y.add(f)).sub(.5).mul(t.xy),_=cT(o.y).mul(L_(s.mul(e.uv(p).level(n)),c.mul(e.uv(m).level(n)))),v=lT(o.y).mul(L_(s.mul(e.uv(h).level(n)),c.mul(e.uv(g).level(n))));return _.add(v)},pT=U(([e,t=G(3)])=>{let n=J(e.size(K(t))),r=J(e.size(K(t.add(1)))),i=B_(1,n),a=B_(1,r),o=fT(e,X(i,n),bv(t)),s=fT(e,X(a,r),xv(t));return Cv(t).mix(o,s)}),mT=U(([e,t,n,r,i])=>{let a=Y(ly(t.negate(),Sv(e),B_(1,r))),o=Y(Mv(i[0].xyz),Mv(i[1].xyz),Mv(i[2].xyz));return Sv(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`}]}),hT=U(([e,t])=>e.mul(sy(t.mul(2).sub(2),0,1))).setLayout({name:`applyIorToRoughness`,type:`float`,inputs:[{name:`roughness`,type:`float`},{name:`ior`,type:`float`}]}),gT=zC(),_T=U(([e,t,n])=>pT(gT.uv(e),_v(G(DC.x)).mul(hT(t,n)))),vT=U(([e,t,n])=>(W(n.notEqual(0),()=>mv(gv(t).negate().div(n).negate().mul(e))),Y(1))).setLayout({name:`volumeAttenuation`,type:`vec3`,inputs:[{name:`transmissionDistance`,type:`float`},{name:`attenuationColor`,type:`vec3`},{name:`attenuationDistance`,type:`float`}]}),yT=U(([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m])=>{let h,g;if(m){h=X().toVar(),g=Y().toVar();let i=u.sub(1).mul(m.mul(.025)),a=Y(u.sub(i),u,u.add(i));rC({start:0,end:3},({i})=>{let u=a.element(i),m=mT(e,t,d,u,s),_=o.add(m),v=l.mul(c.mul(X(_,1))),y=J(v.xy.div(v.w)).toVar();y.addAssign(1),y.divAssign(2),y.assign(J(y.x,y.y.oneMinus()));let b=_T(y,n,u);h.element(i).assign(b.element(i)),h.a.addAssign(b.a),g.element(i).assign(r.element(i).mul(vT(Mv(m),f,p).element(i)))}),h.a.divAssign(3)}else{let i=mT(e,t,d,u,s),a=o.add(i),m=l.mul(c.mul(X(a,1))),_=J(m.xy.div(m.w)).toVar();_.addAssign(1),_.divAssign(2),_.assign(J(_.x,_.y.oneMinus())),h=_T(_,n,u),g=r.mul(vT(Mv(i),f,p))}let _=g.rgb.mul(h.rgb),v=Y(Jw({dotNV:e.dot(t).clamp(),specularColor:i,specularF90:a,roughness:n})),y=g.r.add(g.g,g.b).div(3);return X(v.oneMinus().mul(_),h.a.oneMinus().mul(y).oneMinus())}),bT=Vg(3.2404542,-.969266,.0556434,-1.5371385,1.8760108,-.2040259,-.4985314,.041556,1.0572252),xT=e=>{let t=e.sqrt();return Y(1).add(t).div(Y(1).sub(t))},ST=(e,t)=>e.sub(t).div(e.add(t)).pow2(),CT=(e,t)=>{let n=e.mul(2*Math.PI*1e-9),r=Y(54856e-17,44201e-17,52481e-17),i=Y(1681e3,1795300,2208400),a=Y(43278e5,93046e5,66121e5),o=G(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=Y(s.x.add(o),s.y,s.z).div(1.0685e-7),bT.mul(s)},wT=U(({outsideIOR:e,eta2:t,cosTheta1:n,thinFilmThickness:r,baseF0:i})=>{let a=oy(e,t,uy(0,.03,r)),o=e.div(a).pow2().mul(G(1).sub(n.pow2())),s=G(1).sub(o).sqrt(),c=kw({f0:ST(a,e),f90:1,dotVH:n}),l=c.oneMinus(),u=a.lessThan(e).select(Math.PI,0),d=G(Math.PI).sub(u),f=xT(i.clamp(0,.9999)),p=kw({f0:ST(f,a.toVec3()),f90:1,dotVH:s}),m=Y(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=Y(d).add(m),_=c.mul(p).clamp(1e-5,.9999),v=_.sqrt(),y=l.pow2().mul(p).div(Y(1).sub(_)),b=c.add(y),x=y.sub(l);for(let e=1;e<=2;++e){x=x.mul(v);let t=CT(G(e).mul(h),G(e).mul(g)).mul(2);b=b.add(x.mul(t))}return b.max(Y(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`}]}),TT=U(({normal:e,viewDir:t,roughness:n})=>{let r=e.dot(t).saturate(),i=n.pow2(),a=hy(n.lessThan(.25),G(-339.2).mul(i).add(G(161.4).mul(n)).sub(25.9),G(-8.48).mul(i).add(G(14.3).mul(n)).sub(9.95)),o=hy(n.lessThan(.25),G(44).mul(i).sub(G(23.7).mul(n)).add(3.26),G(1.97).mul(i).sub(G(3.27).mul(n)).add(.72));return hy(n.lessThan(.25),0,G(.1).mul(n).sub(.025)).add(a.mul(r).add(o).exp()).mul(1/Math.PI).saturate()}),ET=Y(.04),DT=G(1),OT=class extends Tw{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}start(e){if(this.clearcoat===!0&&(this.clearcoatRadiance=Y().toVar(`clearcoatRadiance`),this.clearcoatSpecularDirect=Y().toVar(`clearcoatSpecularDirect`),this.clearcoatSpecularIndirect=Y().toVar(`clearcoatSpecularIndirect`)),this.sheen===!0&&(this.sheenSpecularDirect=Y().toVar(`sheenSpecularDirect`),this.sheenSpecularIndirect=Y().toVar(`sheenSpecularIndirect`)),this.iridescence===!0){let e=ox.dot(Zb).clamp();this.iridescenceFresnel=wT({outsideIOR:G(1),eta2:p_,cosTheta1:e,thinFilmThickness:m_,baseF0:y_}),this.iridescenceF0=Yw({f:this.iridescenceFresnel,f90:1,dotVH:e})}if(this.transmission===!0){let t=Jb;e.backdrop=yT(sx,Db.sub(Jb).normalize(),o_,i_,y_,b_,t,Ib,wb,Sb,E_,O_,A_,k_,this.dispersion?j_:null),e.backdropAlpha=D_,i_.a.mulAssign(oy(1,e.backdrop.a,D_))}}computeMultiscattering(e,t,n){let r=qw({roughness:o_,dotNV:ox.dot(Zb).clamp()}),i=(this.iridescenceF0?f_.mix(y_,this.iridescenceF0):y_).mul(r.x).add(n.mul(r.y)),a=r.x.add(r.y).oneMinus(),o=y_.add(y_.oneMinus().mul(.047619)),s=i.mul(o).div(a.mul(o).oneMinus());e.addAssign(i),t.addAssign(s.mul(a))}direct({lightDirection:e,lightColor:t,reflectedLight:n}){let r=ox.dot(e).clamp().mul(t);if(this.sheen===!0&&this.sheenSpecularDirect.addAssign(r.mul(Qw({lightDirection:e}))),this.clearcoat===!0){let n=cx.dot(e).clamp().mul(t);this.clearcoatSpecularDirect.addAssign(n.mul(Kw({lightDirection:e,f0:ET,f90:DT,roughness:l_,normalView:cx})))}n.directDiffuse.addAssign(r.mul(Aw({diffuseColor:i_.rgb}))),n.directSpecular.addAssign(r.mul(Kw({lightDirection:e,f0:y_,f90:1,roughness:o_,iridescence:this.iridescence,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=ox,f=Zb,p=Xb.toVar(),m=$w({N:d,V:f,roughness:o_}),h=a.uv(m).toVar(),g=o.uv(m).toVar(),_=Vg(Y(h.x,0,h.y),Y(0,1,0),Y(h.z,0,h.w)).toVar(),v=y_.mul(g.x).add(y_.oneMinus().mul(g.y)).toVar();i.directSpecular.addAssign(e.mul(v).mul(nT({N:d,V:f,P:p,mInv:_,p0:s,p1:c,p2:l,p3:u}))),i.directDiffuse.addAssign(e.mul(i_).mul(nT({N:d,V:f,P:p,mInv:Vg(1,0,0,0,1,0,0,0,1),p0:s,p1:c,p2:l,p3:u})))}indirect(e,t,n){this.indirectDiffuse(e,t,n),this.indirectSpecular(e,t,n),this.ambientOcclusion(e,t,n)}indirectDiffuse({irradiance:e,reflectedLight:t}){t.indirectDiffuse.addAssign(e.mul(Aw({diffuseColor:i_})))}indirectSpecular({radiance:e,iblIrradiance:t,reflectedLight:n}){if(this.sheen===!0&&this.sheenSpecularIndirect.addAssign(t.mul(u_,TT({normal:ox,viewDir:Zb,roughness:d_}))),this.clearcoat===!0){let e=Jw({dotNV:cx.dot(Zb).clamp(),specularColor:ET,specularF90:DT,roughness:l_});this.clearcoatSpecularIndirect.addAssign(this.clearcoatRadiance.mul(e))}let r=Y().toVar(`singleScattering`),i=Y().toVar(`multiScattering`),a=t.mul(1/Math.PI);this.computeMultiscattering(r,i,b_);let o=r.add(i),s=i_.mul(o.r.max(o.g).max(o.b).oneMinus());n.indirectSpecular.addAssign(e.mul(r)),n.indirectSpecular.addAssign(i.mul(a)),n.indirectDiffuse.addAssign(s.mul(a))}ambientOcclusion({ambientOcclusion:e,reflectedLight:t}){let n=ox.dot(Zb).clamp().add(e),r=o_.mul(-16).oneMinus().negate().exp2(),i=e.sub(n.pow(r).oneMinus()).clamp();this.clearcoat===!0&&this.clearcoatSpecularIndirect.mulAssign(e),this.sheen===!0&&this.sheenSpecularIndirect.mulAssign(e),t.indirectDiffuse.mulAssign(e),t.indirectSpecular.mulAssign(i)}finish(e){let{outgoingLight:t}=e;if(this.clearcoat===!0){let e=kw({dotVH:cx.dot(Zb).clamp(),f0:ET,f90:DT}),n=t.mul(c_.mul(e).oneMinus()).add(this.clearcoatSpecularDirect.add(this.clearcoatSpecularIndirect).mul(c_));t.assign(n)}if(this.sheen===!0){let e=u_.r.max(u_.g).max(u_.b).mul(.157).oneMinus(),n=t.mul(e).add(this.sheenSpecularDirect,this.sheenSpecularIndirect);t.assign(n)}}},kT=G(1),AT=G(-2),jT=G(.8),MT=G(-1),NT=G(.4),PT=G(2),FT=G(.305),IT=G(3),LT=G(.21),RT=G(4),zT=G(4),BT=G(16),VT=U(([e])=>{let t=Y(Av(e)).toVar(),n=G(-1).toVar();return W(t.x.greaterThan(t.z),()=>{W(t.x.greaterThan(t.y),()=>{n.assign(hy(e.x.greaterThan(0),0,3))}).Else(()=>{n.assign(hy(e.y.greaterThan(0),1,4))})}).Else(()=>{W(t.z.greaterThan(t.y),()=>{n.assign(hy(e.z.greaterThan(0),2,5))}).Else(()=>{n.assign(hy(e.y.greaterThan(0),1,4))})}),n}).setLayout({name:`getFace`,type:`float`,inputs:[{name:`direction`,type:`vec3`}]}),HT=U(([e,t])=>{let n=J().toVar();return W(t.equal(0),()=>{n.assign(J(e.z,e.y).div(Av(e.x)))}).ElseIf(t.equal(1),()=>{n.assign(J(e.x.negate(),e.z.negate()).div(Av(e.y)))}).ElseIf(t.equal(2),()=>{n.assign(J(e.x.negate(),e.y).div(Av(e.z)))}).ElseIf(t.equal(3),()=>{n.assign(J(e.z.negate(),e.y).div(Av(e.x)))}).ElseIf(t.equal(4),()=>{n.assign(J(e.x.negate(),e.z).div(Av(e.y)))}).Else(()=>{n.assign(J(e.x,e.y).div(Av(e.z)))}),z_(.5,n.add(1))}).setLayout({name:`getUV`,type:`vec2`,inputs:[{name:`direction`,type:`vec3`},{name:`face`,type:`float`}]}),UT=U(([e])=>{let t=G(0).toVar();return W(e.greaterThanEqual(jT),()=>{t.assign(kT.sub(e).mul(MT.sub(AT)).div(kT.sub(jT)).add(AT))}).ElseIf(e.greaterThanEqual(NT),()=>{t.assign(jT.sub(e).mul(PT.sub(MT)).div(jT.sub(NT)).add(MT))}).ElseIf(e.greaterThanEqual(FT),()=>{t.assign(NT.sub(e).mul(IT.sub(PT)).div(NT.sub(FT)).add(PT))}).ElseIf(e.greaterThanEqual(LT),()=>{t.assign(FT.sub(e).mul(RT.sub(IT)).div(FT.sub(LT)).add(IT))}).Else(()=>{t.assign(G(-2).mul(_v(z_(1.16,e))))}),t}).setLayout({name:`roughnessToMip`,type:`float`,inputs:[{name:`roughness`,type:`float`}]}),WT=U(([e,t])=>{let n=e.toVar();n.assign(z_(2,n).sub(1));let r=Y(n,1).toVar();return W(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`}]}),GT=U(([e,t,n,r,i,a])=>{let o=G(n),s=Y(t),c=sy(UT(o),AT,a),l=Cv(c),u=bv(c),d=Y(KT(e,s,u,r,i,a)).toVar();return W(l.notEqual(0),()=>{let t=Y(KT(e,s,u.add(1),r,i,a)).toVar();d.assign(oy(d,t,l))}),d}),KT=U(([e,t,n,r,i,a])=>{let o=G(n).toVar(),s=Y(t),c=G(VT(s)).toVar(),l=G(Gv(zT.sub(o),0)).toVar();o.assign(Gv(o,zT));let u=G(hv(o)).toVar(),d=J(HT(s,c).mul(u.sub(2)).add(1)).toVar();return W(c.greaterThan(2),()=>{d.y.addAssign(u),c.subAssign(3)}),d.x.addAssign(c.mul(u)),d.x.addAssign(l.mul(z_(3,BT))),d.y.addAssign(z_(4,hv(a).sub(u))),d.x.mulAssign(r),d.y.mulAssign(i),e.uv(d).grad(J(),J())}),qT=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=Tv(r);return KT(e,n.mul(c).add(i.cross(n).mul(wv(r))).add(i.mul(i.dot(n).mul(c.oneMinus()))),t,a,o,s)}),JT=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=Y(hy(t,n,Qv(n,r))).toVar();W(lv(f.equals(Y(0))),()=>{f.assign(Y(r.z,0,r.x.negate()))}),f.assign(Sv(f));let p=Y().toVar();return p.addAssign(i.element(K(0)).mul(qT({theta:0,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d}))),rC({start:K(1),end:e},({i:e})=>{W(e.greaterThanEqual(a),()=>{aC()});let t=G(o.mul(G(e))).toVar();p.addAssign(i.element(e).mul(qT({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(qT({theta:t,axis:f,outputDirection:r,mipInt:s,envMap:c,CUBEUV_TEXEL_WIDTH:l,CUBEUV_TEXEL_HEIGHT:u,CUBEUV_MAX_MIP:d})))}),X(p,1)}),YT=null,XT=new WeakMap;function ZT(e){let t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(2**t,112)),texelHeight:n,maxMip:t}}function QT(e){let t=XT.get(e);if((t===void 0?-1:t.pmremVersion)!==e.pmremVersion){let n=e.image;if(e.isCubeTexture)if(eE(n))t=YT.fromCubemap(e,t);else return null;else if(tE(n))t=YT.fromEquirectangular(e,t);else return null;t.pmremVersion=e.pmremVersion,XT.set(e,t)}return t.texture}var $T=class extends zh{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 Pn;r.isRenderTargetTexture=!0,this._texture=gb(r),this._width=Z(0),this._height=Z(0),this._maxMip=Z(0),this.updateBeforeType=L.RENDER}set value(e){this._value=e,this._pmrem=null}get value(){return this._value}updateFromTexture(e){let t=ZT(e.image.height);this._texture.value=e,this._width.value=t.texelWidth,this._height.value=t.texelHeight,this._maxMip.value=t.maxMip}updateBefore(){let e=this._pmrem,t=e?e.pmremVersion:-1,n=this._value;t!==n.pmremVersion&&(e=n.isPMREMTexture===!0?n:QT(n),e!==null&&(this._pmrem=e,this.updateFromTexture(e)))}setup(e){YT===null&&(YT=e.createPMREMGenerator()),this.updateBefore(e);let t=this.uvNode;t===null&&e.context.getUV&&(t=e.context.getUV(this));let n=this.value;e.renderer.coordinateSystem===2e3&&n.isPMREMTexture!==!0&&n.isRenderTargetTexture===!0&&(t=Y(t.x.negate(),t.yz));let r=this.levelNode;return r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),GT(this._texture,t,r,this._width,this._height,this._maxMip)}};function eE(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 tE(e){return e==null?!1:e.height>0}var nE=V($T),rE=new WeakMap,iE=class extends vC{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 e=n.isTextureNode?n.value:t[n.property],r=rE.get(e);r===void 0&&(r=nE(e),rE.set(e,r)),n=r}let r=t.envMap?Ex(`envMapIntensity`,`float`,e.material):Ex(`environmentIntensity`,`float`,e.scene),i=t.useAnisotropy===!0||t.anisotropy>0?Kx:ox,a=n.context(aE(o_,i)).mul(r),o=n.context(oE(sx)).mul(Math.PI).mul(r),s=Yy(a),c=Yy(o);e.context.radiance.addAssign(s),e.context.iblIrradiance.addAssign(c);let l=e.context.lightingModel.clearcoatRadiance;if(l){let e=Yy(n.context(aE(l_,cx)).mul(r));l.addAssign(e)}}},aE=(e,t)=>{let n=null;return{getUV:()=>(n===null&&(n=Zb.negate().reflect(t),n=e.mul(e).mix(n,t).normalize(),n=n.transformDirection(wb)),n),getTextureLevel:()=>e}},oE=e=>({getUV:()=>e,getTextureLevel:()=>G(1)}),sE=new vf,cE=class extends tw{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(sE),this.setValues(e)}setupEnvironment(e){let t=super.setupEnvironment(e);return t===null&&e.environmentNode&&(t=e.environmentNode),t?new iE(t):null}setupLightingModel(){return new OT}setupSpecular(){let e=oy(Y(.04),i_.rgb,s_);y_.assign(e),b_.assign(1)}setupVariants(){let e=this.metalnessNode?G(this.metalnessNode):fS;s_.assign(e);let t=this.roughnessNode?G(this.roughnessNode):dS;t=Bw({roughness:t}),o_.assign(t),this.setupSpecular(),i_.assign(X(i_.rgb.mul(e.oneMinus()),i_.a))}copy(e){return this.emissiveNode=e.emissiveNode,this.metalnessNode=e.metalnessNode,this.roughnessNode=e.roughnessNode,super.copy(e)}},lE=new yf,uE=class extends cE{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(lE),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?G(this.iorNode):ES;E_.assign(e),y_.assign(oy(Wv(ey(E_.sub(1).div(E_.add(1))).mul(cS),Y(1)).mul(sS),i_.rgb,s_)),b_.assign(oy(sS,1,s_))}setupLightingModel(){return new OT(this.useClearcoat,this.useSheen,this.useIridescence,this.useAnisotropy,this.useTransmission,this.useDispersion)}setupVariants(e){if(super.setupVariants(e),this.useClearcoat){let e=this.clearcoatNode?G(this.clearcoatNode):mS,t=this.clearcoatRoughnessNode?G(this.clearcoatRoughnessNode):hS;c_.assign(e),l_.assign(Bw({roughness:t}))}if(this.useSheen){let e=this.sheenNode?Y(this.sheenNode):vS,t=this.sheenRoughnessNode?G(this.sheenRoughnessNode):yS;u_.assign(e),d_.assign(t)}if(this.useIridescence){let e=this.iridescenceNode?G(this.iridescenceNode):xS,t=this.iridescenceIORNode?G(this.iridescenceIORNode):SS,n=this.iridescenceThicknessNode?G(this.iridescenceThicknessNode):CS;f_.assign(e),p_.assign(t),m_.assign(n)}if(this.useAnisotropy){let e=(this.anisotropyNode?J(this.anisotropyNode):bS).toVar();g_.assign(e.length()),W(g_.equal(0),()=>{e.assign(J(1,0))}).Else(()=>{e.divAssign(J(g_)),g_.assign(g_.saturate())}),h_.assign(g_.pow2().mix(o_.pow2(),1)),__.assign(Ux[0].mul(e.x).add(Ux[1].mul(e.y))),v_.assign(Ux[1].mul(e.x).sub(Ux[0].mul(e.y)))}if(this.useTransmission){let e=this.transmissionNode?G(this.transmissionNode):wS,t=this.thicknessNode?G(this.thicknessNode):TS,n=this.attenuationDistanceNode?G(this.attenuationDistanceNode):DS,r=this.attenuationColorNode?Y(this.attenuationColorNode):OS;if(D_.assign(e),O_.assign(t),k_.assign(n),A_.assign(r),this.useDispersion){let e=this.dispersionNode?G(this.dispersionNode):FS;j_.assign(e)}}}setupClearcoatNormal(){return this.clearcoatNormalNode?Y(this.clearcoatNormalNode):gS}setup(e){e.context.setupClearcoatNormal=()=>this.setupClearcoatNormal(e),super.setup(e)}copy(e){return this.clearcoatNode=e.clearcoatNode,this.clearcoatRoughnessNode=e.clearcoatRoughnessNode,this.clearcoatNormalNode=e.clearcoatNormalNode,this.sheenNode=e.sheenNode,this.sheenRoughnessNode=e.sheenRoughnessNode,this.iridescenceNode=e.iridescenceNode,this.iridescenceIORNode=e.iridescenceIORNode,this.iridescenceThicknessNode=e.iridescenceThicknessNode,this.specularIntensityNode=e.specularIntensityNode,this.specularColorNode=e.specularColorNode,this.transmissionNode=e.transmissionNode,this.thicknessNode=e.thicknessNode,this.attenuationDistanceNode=e.attenuationDistanceNode,this.attenuationColorNode=e.attenuationColorNode,this.dispersionNode=e.dispersionNode,this.anisotropyNode=e.anisotropyNode,super.copy(e)}},dE=class extends OT{constructor(e,t,n,r){super(e,t,n),this.useSSS=r}direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i){if(this.useSSS===!0){let{thicknessColorNode:r,thicknessDistortionNode:a,thicknessAmbientNode:o,thicknessAttenuationNode:s,thicknessPowerNode:c,thicknessScaleNode:l}=i.material,u=e.add(ox.mul(a)).normalize(),d=Y(G(Zb.dot(u.negate()).saturate().pow(c).mul(l)).add(o).mul(r));n.directDiffuse.addAssign(d.mul(s.mul(t)))}super.direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i)}},fE=class extends uE{static get type(){return`MeshSSSNodeMaterial`}constructor(e){super(e),this.thicknessColorNode=null,this.thicknessDistortionNode=G(.1),this.thicknessAmbientNode=G(0),this.thicknessAttenuationNode=G(.1),this.thicknessPowerNode=G(2),this.thicknessScaleNode=G(10)}get useSSS(){return this.thicknessColorNode!==null}setupLightingModel(){return new dE(this.useClearcoat,this.useSheen,this.useIridescence,this.useSSS)}copy(e){return this.thicknessColorNode=e.thicknessColorNode,this.thicknessDistortionNode=e.thicknessDistortionNode,this.thicknessAmbientNode=e.thicknessAmbientNode,this.thicknessAttenuationNode=e.thicknessAttenuationNode,this.thicknessPowerNode=e.thicknessPowerNode,this.thicknessScaleNode=e.thicknessScaleNode,super.copy(e)}},pE=U(({normal:e,lightDirection:t,builder:n})=>{let r=J(e.dot(t).mul(.5).add(.5),0);if(n.material.gradientMap)return Y(kx(`gradientMap`,`texture`).context({getUV:()=>r}).r);{let e=r.fwidth().mul(.5);return oy(Y(.7),Y(1),uy(G(.7).sub(e.x),G(.7).add(e.x),r.x))}}),mE=class extends Tw{direct({lightDirection:e,lightColor:t,reflectedLight:n},r,i){let a=pE({normal:tx,lightDirection:e,builder:i}).mul(t);n.directDiffuse.addAssign(a.mul(Aw({diffuseColor:i_.rgb})))}indirect({ambientOcclusion:e,irradiance:t,reflectedLight:n}){n.indirectDiffuse.addAssign(t.mul(Aw({diffuseColor:i_}))),n.indirectDiffuse.mulAssign(e)}},hE=new xf,gE=class extends tw{static get type(){return`MeshToonNodeMaterial`}constructor(e){super(),this.isMeshToonNodeMaterial=!0,this.lights=!0,this.setDefaultValues(hE),this.setValues(e)}setupLightingModel(){return new mE}},_E=class extends zh{static get type(){return`MatcapUVNode`}constructor(){super(`vec2`)}setup(){let e=Y(Zb.z,0,Zb.x.negate()).normalize(),t=Zb.cross(e);return J(e.dot(ox),t.dot(ox)).mul(.495).add(.5)}},vE=H(_E),yE=new wf,bE=class extends tw{static get type(){return`MeshMatcapNodeMaterial`}constructor(e){super(),this.lights=!1,this.isMeshMatcapNodeMaterial=!0,this.setDefaultValues(yE),this.setValues(e)}setupVariants(e){let t=vE,n;n=e.material.matcap?kx(`matcap`,`texture`).context({getUV:()=>t}):Y(oy(.2,.8,t.y)),i_.rgb.mulAssign(n.rgb)}},xE=new _u,SE=class extends tw{static get type(){return`PointsNodeMaterial`}constructor(e){super(),this.isPointsNodeMaterial=!0,this.lights=!1,this.transparent=!0,this.sizeNode=null,this.setDefaultValues(xE),this.setValues(e)}copy(e){return this.sizeNode=e.sizeNode,super.copy(e)}},CE=class extends zh{static get type(){return`RotateNode`}constructor(e,t){super(),this.positionNode=e,this.rotationNode=t}getNodeType(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 Bg(e,r,r.negate(),e).mul(n)}else{let e=t,r=Hg(X(1,0,0,0),X(0,Tv(e.x),wv(e.x).negate(),0),X(0,wv(e.x),Tv(e.x),0),X(0,0,0,1)),i=Hg(X(Tv(e.y),0,wv(e.y),0),X(0,1,0,0),X(wv(e.y).negate(),0,Tv(e.y),0),X(0,0,0,1)),a=Hg(X(Tv(e.z),wv(e.z).negate(),0,0),X(wv(e.z),Tv(e.z),0,0),X(0,0,1,0),X(0,0,0,1));return r.mul(i).mul(a).mul(X(n,1)).xyz}}},wE=V(CE),TE=new Yc,EE=class extends tw{static get type(){return`SpriteNodeMaterial`}constructor(e){super(),this.isSpriteNodeMaterial=!0,this.lights=!1,this._useSizeAttenuation=!0,this.positionNode=null,this.rotationNode=null,this.scaleNode=null,this.setDefaultValues(TE),this.setValues(e)}setupPosition({object:e,camera:t,context:n}){let r=this.sizeAttenuation,{positionNode:i,rotationNode:a,scaleNode:o}=this,s=Kb,c=Hb.mul(Y(i||0)),l=J(Ib[0].xyz.length(),Ib[1].xyz.length());o!==null&&(l=l.mul(o)),!r&&t.isPerspectiveCamera&&(l=l.mul(c.z.negate()));let u=s.xy;if(e.center&&e.center.isVector2===!0){let e=Fy(`center`,`vec2`);u=u.sub(e.sub(.5))}u=u.mul(l);let d=G(a||_S),f=wE(u,d);c=X(c.xy.add(f),c.zw);let p=Sb.mul(c);return n.vertex=s,p}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)}},DE=class extends Tw{constructor(){super(),this.shadowNode=G(1).toVar(`shadowMask`)}direct({shadowMask:e}){this.shadowNode.mulAssign(e)}finish(e){i_.a.mulAssign(this.shadowNode.oneMinus()),e.outgoingLight.rgb.assign(i_.rgb)}},OE=new gf,kE=class extends tw{static get type(){return`ShadowNodeMaterial`}constructor(e){super(),this.isShadowNodeMaterial=!0,this.lights=!0,this.setDefaultValues(OE),this.setValues(e)}setupLightingModel(){return new DE}},AE=U(({texture:e,uv:t})=>{let n=1e-4,r=Y().toVar();return W(t.x.lessThan(n),()=>{r.assign(Y(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(Y(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(Y(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(Y(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(Y(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(Y(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(Y(-n,0,0))).r.sub(e.uv(t.add(Y(n,0,0))).r),a=e.uv(t.add(Y(0,-n,0))).r.sub(e.uv(t.add(Y(0,n,0))).r),o=e.uv(t.add(Y(0,0,-n))).r.sub(e.uv(t.add(Y(0,0,n))).r);r.assign(Y(i,a,o))}),r.normalize()}),jE=class extends hb{static get type(){return`Texture3DNode`}constructor(e,t=null,n=null){super(e,t,n),this.isTexture3DNode=!0}getInputType(){return`texture3D`}getDefaultUV(){return Y(.5,.5,.5)}setUpdateMatrix(){}setupUV(e,t){return t}generateUV(e,t){return t.build(e,`vec3`)}normal(e){return AE({texture:this,uv:e})}},ME=V(jE),NE=class extends tw{static get type(){return`VolumeNodeMaterial`}constructor(e={}){super(),this.lights=!1,this.isVolumeNodeMaterial=!0,this.testNode=null,this.setValues(e)}setup(e){let t=ME(this.map,null,0),n=U(({orig:e,dir:t})=>{let n=Y(-.5),r=Y(.5),i=t.reciprocal(),a=n.sub(e).mul(i),o=r.sub(e).mul(i),s=Wv(a,o),c=Gv(a,o);return J(Gv(s.x,Gv(s.y,s.z)),Wv(c.x,Wv(c.y,c.z)))});this.fragmentNode=U(()=>{let e=Cy(Y(Vb.mul(X(Db,1)))),r=Cy(Gb.sub(e)).normalize(),i=J(n({orig:e,dir:r})).toVar();i.x.greaterThan(i.y).discard(),i.assign(J(Gv(i.x,0),i.y));let a=Y(e.add(i.x.mul(r))).toVar(),o=Y(r.abs().reciprocal()).toVar(),s=G(Wv(o.x,Wv(o.y,o.z))).toVar(`delta`);s.divAssign(kx(`steps`,`float`));let c=X(kx(`base`,`color`),0).toVar();return rC({type:`float`,start:i.x,end:i.y,update:`+= delta`},()=>{let e=n_(`float`,`d`).assign(t.uv(a.add(.5)).r);this.testNode===null?(c.a.assign(1),aC()):this.testNode({map:t,mapValue:e,probe:a,finalColor:c}).append(),a.addAssign(r.mul(s))}),c.a.equal(0).discard(),X(c)})(),super.setup(e)}},PE=class extends Qf{constructor(e){super(e),this.textures={},this.nodes={}}load(e,t,n,r){let i=new tp(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,n=>{try{t(this.parse(JSON.parse(n)))}catch(t){r?r(t):console.error(t),this.manager.itemError(e)}},n,r)}parseNodes(e){let t={};if(e!==void 0){for(let n of e){let{uuid:e,type:r}=n;t[e]=this.createNodeFromType(r),t[e].uuid=e}let n={nodes:t,textures:this.textures};for(let r of e)r.meta=n,t[r.uuid].deserialize(r),delete r.meta}return t}parse(e){let t=this.createNodeFromType(e.type);return t.uuid=e.uuid,e.meta={nodes:this.parseNodes(e.nodes),textures:this.textures},t.deserialize(e),delete e.meta,t}setTextures(e){return this.textures=e,this}setNodes(e){return this.nodes=e,this}createNodeFromType(e){return this.nodes[e]===void 0?(console.error(`THREE.NodeLoader: Node type not found:`,e),G()):B(new this.nodes[e])}},FE=class extends Dp{constructor(e){super(e),this.nodes={},this.nodeMaterials={}}parse(e){let t=super.parse(e),n=this.nodes,r=e.inputNodes;for(let e in r)t[e]=n[r[e]];return t}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}createMaterialFromType(e){let t=this.nodeMaterials[e];return t===void 0?super.createMaterialFromType(e):new t}},IE=class extends jp{constructor(e){super(e),this.nodes={},this.nodeMaterials={},this._nodesJSON=null}setNodes(e){return this.nodes=e,this}setNodeMaterials(e){return this.nodeMaterials=e,this}parse(e,t){this._nodesJSON=e.nodes;let n=super.parse(e,t);return this._nodesJSON=null,n}parseNodes(e,t){if(e!==void 0){let n=new PE;return n.setNodes(this.nodes),n.setTextures(t),n.parseNodes(e)}return{}}parseMaterials(e,t){let n={};if(e!==void 0){let r=this.parseNodes(this._nodesJSON,t),i=new FE;i.setTextures(t),i.setNodes(r),i.setNodeMaterials(this.nodeMaterials);for(let t=0,r=e.length;tB(new WE(e,t)),KE=class extends R{static get type(){return`CodeNode`}constructor(e=``,t=[],n=``){super(`code`),this.isCodeNode=!0,this.code=e,this.language=n,this.includes=t}isGlobal(){return!0}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}},qE=V(KE),JE=(e,t)=>qE(e,t,`js`),YE=(e,t)=>qE(e,t,`wgsl`),XE=(e,t)=>qE(e,t,`glsl`),ZE=class extends KE{static get type(){return`FunctionNode`}constructor(e=``,t=[],n=``){super(e,t,n)}getNodeType(e){return this.getNodeFunction(e).type}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)+` +`,t===`property`?o:e.format(`${o}()`,i,t)}},QE=(e,t=[],n=``)=>{for(let e=0;er.call(...e);return i.functionNode=r,i},$E=(e,t)=>QE(e,t,`glsl`),eD=(e,t)=>QE(e,t,`wgsl`),tD=class{constructor(e,t){this.name=e,this.value=t,this.boundary=0,this.itemSize=0,this.offset=0}setValue(e){this.value=e}getValue(){return this.value}},nD=class extends tD{constructor(e,t=0){super(e,t),this.isNumberUniform=!0,this.boundary=4,this.itemSize=1}},rD=class extends tD{constructor(e,t=new A){super(e,t),this.isVector2Uniform=!0,this.boundary=8,this.itemSize=2}},iD=class extends tD{constructor(e,t=new M){super(e,t),this.isVector3Uniform=!0,this.boundary=16,this.itemSize=3}},aD=class extends tD{constructor(e,t=new Fn){super(e,t),this.isVector4Uniform=!0,this.boundary=16,this.itemSize=4}},oD=class extends tD{constructor(e,t=new P){super(e,t),this.isColorUniform=!0,this.boundary=16,this.itemSize=3}},sD=class extends tD{constructor(e,t=new j){super(e,t),this.isMatrix3Uniform=!0,this.boundary=48,this.itemSize=12}},cD=class extends tD{constructor(e,t=new N){super(e,t),this.isMatrix4Uniform=!0,this.boundary=64,this.itemSize=16}},lD=class extends nD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},uD=class extends rD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},dD=class extends iD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},fD=class extends aD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},pD=class extends oD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},mD=class extends sD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},hD=class extends cD{constructor(e){super(e.name,e.value),this.nodeUniform=e}getValue(){return this.nodeUniform.value}},gD=class extends R{static get type(){return`StackNode`}constructor(e=null){super(),this.nodes=[],this.outputNode=null,this.parent=e,this._currentCond=null,this.isStackNode=!0}getNodeType(e){return this.outputNode?this.outputNode.getNodeType(e):`void`}add(e){return this.nodes.push(e),this}If(e,t){return this._currentCond=hy(e,new Sg(t)),this.add(this._currentCond)}ElseIf(e,t){let n=hy(e,new Sg(t));return this._currentCond.elseNode=n,this._currentCond=n,this}Else(e){return this._currentCond.elseNode=new Sg(e),this}build(e,...t){let n=Dg();Eg(this);for(let t of this.nodes)t.build(e,`void`);return Eg(n),this.outputNode?this.outputNode.build(e,...t):super.build(e,...t)}else(...e){return console.warn(`TSL.StackNode: .else() has been renamed to .Else().`),this.Else(...e)}elseif(...e){return console.warn(`TSL.StackNode: .elseif() has been renamed to .ElseIf().`),this.ElseIf(...e)}},_D=V(gD),vD=class{constructor(){this.weakMap=new WeakMap}get(e){let t=this.weakMap;for(let n=0;n0&&this._blur(i,0,0,t),this._applyPMREM(i),this._cleanup(i),i}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}async compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=BD(),await this._compileMaterial(this._cubemapMaterial))}async compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=VD(),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())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?c:0,c,c),s.render(e,i)}s.autoClear=c,e.background=d}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?this._cubemapMaterial===null&&(this._cubemapMaterial=BD(e)):this._equirectMaterial===null&&(this._equirectMaterial=VD(e));let i=r?this._cubemapMaterial:this._equirectMaterial;i.fragmentNode.value=e;let a=this._lodMeshes[0];a.material=i;let o=this._cubeSize;LD(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,SD)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodPlanes.length;for(let t=1;txD&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${m} samples when the maximum is set to ${xD}`);let h=[],g=0;for(let e=0;e_-yD?r-_+yD:0),4*(this._cubeSize-v),3*v,2*v),s.setRenderTarget(t),s.render(l,SD)}};function FD(e){let t=[],n=[],r=[],i=[],a=e,o=e-yD+1+bD.length;for(let s=0;se-yD?c=bD[s-e+yD-1]:s===0&&(c=0),r.push(c);let l=1/(o-2),u=-l,d=1+l,f=[u,u,d,u,d,d,u,u,d,d,u,d],p=new Float32Array(108),m=new Float32Array(72),h=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=jD[e];p.set(r,18*i),m.set(f,12*i);let a=[i,i,i,i,i,i];h.set(a,6*i)}let g=new Ii;g.setAttribute(`position`,new bi(p,3)),g.setAttribute(`uv`,new bi(m,2)),g.setAttribute(`faceIndex`,new bi(h,1)),t.push(g),i.push(new Ji(g,null)),a>yD&&a--}return{lodPlanes:t,sizeLods:n,sigmas:r,lodMeshes:i}}function ID(e,t,n){let r=new In(e,t,n);return r.texture.mapping=306,r.texture.name=`PMREM.cubeUv`,r.texture.isPMREMTexture=!0,r.scissorTest=!0,r}function LD(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function RD(e){let t=new tw;return t.depthTest=!1,t.depthWrite=!1,t.blending=0,t.name=`PMREM_${e}`,t}function zD(e,t,n){let r=Sx(Array(xD).fill(0)),i=Z(new M(0,1,0)),a=Z(0),o=G(xD),s=Z(0),c={n:o,latitudinal:s,weights:r,poleAxis:i,outputDirection:ND,dTheta:a,samples:Z(1),envMap:gb(null),mipInt:Z(0),CUBEUV_TEXEL_WIDTH:G(1/t),CUBEUV_TEXEL_HEIGHT:G(1/n),CUBEUV_MAX_MIP:G(e)},l=RD(`blur`);return l.uniforms=c,l.fragmentNode=JT({...c,latitudinal:s.equal(1)}),l}function BD(e){let t=RD(`cubemap`);return t.fragmentNode=_x(e,ND),t}function VD(e){let t=RD(`equirect`);return t.fragmentNode=gb(e,hw(ND),0),t}var HD=0,UD=class{constructor(e=``,t=[],n=0,r=[]){this.name=e,this.bindings=t,this.index=n,this.bindingsReference=r,this.id=HD++}},WD=new WeakMap,GD=new Map([[2,`vec2`],[3,`vec3`],[4,`vec4`],[9,`mat3`],[16,`mat4`]]),KD=new Map([[Int8Array,`int`],[Int16Array,`int`],[Int32Array,`int`],[Uint8Array,`uint`],[Uint16Array,`uint`],[Uint32Array,`uint`],[Float32Array,`float`]]),qD=e=>(e=Number(e),e+(e%1?``:`.0`)),JD=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.updateNodes=[],this.updateBeforeNodes=[],this.updateAfterNodes=[],this.hashNodes={},this.monitor=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.bindings={vertex:{},fragment:{},compute:{}},this.bindingsIndexes={},this.bindGroups=null,this.attributes=[],this.bufferAttributes=[],this.varyings=[],this.codes={},this.vars={},this.flow={code:``},this.chaining=[],this.stack=_D(),this.stacks=[],this.tab=` `,this.currentFunctionNode=null,this.context={material:this.material},this.cache=new UE,this.globalCache=this.cache,this.flowsData=new WeakMap,this.shaderStage=null,this.buildStage=null,this.useComparisonMethod=!1}getBindGroupsCache(){let e=WD.get(this.renderer);return e===void 0&&(e=new vD,WD.set(this.renderer,e)),e}createRenderTarget(e,t,n){return new In(e,t,n)}createCubeRenderTarget(e,t){return new gw(e,t)}createPMREMGenerator(){return new PD(this.renderer)}includes(e){return this.nodes.includes(e)}_getBindGroup(e,t){let n=this.getBindGroupsCache(),r=[],i=!0;for(let e of t)r.push(e),i&&=e.groupNode.shared!==!0;let a;return i?(a=n.get(r),a===void 0&&(a=new UD(e,r,this.bindingsIndexes[e].group,r),n.set(r,a))):a=new UD(e,r,this.bindingsIndexes[e].group,r),a}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 Ph)for(let r in n[e]){let i=n[e][r];(t[r]||(t[r]=[])).push(...i)}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=0?`${Math.round(t)}u`:`0u`;if(e===`bool`)return t?`true`:`false`;if(e===`color`)return`${this.getType(`vec3`)}( ${qD(t.r)}, ${qD(t.g)}, ${qD(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)return`${this.getType(e)}( ${i(t.x)}, ${i(t.y)}, ${i(t.z)}, ${i(t.w)} )`;if(n>4&&t&&(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 LE(e,t);return 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===`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=GD.get(e);return(t===`float`?``:t[0])+n}getTypeFromArray(e){return KD.get(e.constructor)}getTypeFromAttribute(e){let t=e;e.isInterleavedBufferAttribute&&(t=e.data);let n=t.array,r=e.itemSize,i=e.normalized,a;return!(e instanceof Oi)&&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`)}addStack(){return this.stack=_D(this.stack),this.stacks.push(Dg()||this.stack),Eg(this.stack),this.stack}removeStack(){let e=this.stack;return this.stack=e.parent,Eg(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);return r===void 0&&(r={},n.setData(e,r)),r[t]===void 0&&(r[t]={}),r[t]}getNodeProperties(e,t=`any`){let n=this.getDataFromNode(e,t);return n.properties||={outputNode:null}}getBufferAttributeFromNode(e,t){let n=this.getDataFromNode(e),r=n.bufferAttribute;return r===void 0&&(r=new LE(`nodeAttribute`+ this.uniforms.index++,t,e),this.bufferAttributes.push(r),n.bufferAttribute=r),r}getStructTypeFromNode(e,t=this.shaderStage){let n=this.getDataFromNode(e,t);return n.structType===void 0&&(e.name=`StructType${this.structs.index++}`,this.structs[t].push(e),n.structType=e),e}getUniformFromNode(e,t,n=this.shaderStage,r=null){r===`in`&&(console.warn(`NodeBuilder: "in" is a reserved word, using "inValue" instead.`,e,r),e.name=`inValue`,r=e.name);let i=this.getDataFromNode(e,n,this.globalCache),a=i.uniform;if(a===void 0){let o=this.uniforms.index++;a=new RE(r||`nodeUniform`+o,t,e),this.uniforms[n].push(a),i.uniform=a}return a}getVarFromNode(e,t=null,n=e.getNodeType(this),r=this.shaderStage){let i=this.getDataFromNode(e,r),a=i.variable;if(a===void 0){let e=this.vars[r]||(this.vars[r]=[]);t===null&&(t=`nodeVar`+e.length),a=new zE(t,n),e.push(a),i.variable=a}return a}getVaryingFromNode(e,t=null,n=e.getNodeType(this)){let r=this.getDataFromNode(e,`any`),i=r.varying;if(i===void 0){let e=this.varyings,a=e.length;t===null&&(t=`nodeVarying`+a),i=new BE(t,n),e.push(i),r.varying=i}return i}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 VE(`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+=`; +`),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}buildFunctionNode(e){let t=new ZE,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 WE(e.type,e.name);e.layout=null;let r=e.call(n),i=this.flowStagesNode(r,t.type);return e.layout=t,i}flowStagesNode(e,t=null){let n=this.flow,r=this.vars,i=this.cache,a=this.buildStage,o=this.stack,s={code:``};this.flow=s,this.vars={},this.cache=new UE,this.stack=_D();for(let n of Nh)this.setBuildStage(n),s.result=e.build(this,t);return s.vars=this.getVars(this.shaderStage),this.flow=n,this.vars=r,this.cache=i,this.stack=o,this.setBuildStage(a),s}getFunctionOperator(){return null}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.shaderStage;this.setShaderStage(e);let a=this.flowChildNode(t,n);return r!==null&&(a.code+=`${this.tab+r} = ${a.result};\n`),this.flowCode[e]=this.flowCode[e]+a.code,this.setShaderStage(i),a}getAttributesArray(){return this.attributes.concat(this.bufferAttributes)}getAttributes(){console.warn(`Abstract function.`)}getVaryings(){console.warn(`Abstract function.`)}getVar(e,t){return`${this.getType(e)} ${t}`}getVars(e){let t=``,n=this.vars[e];if(n!==void 0)for(let e of n)t+=`${this.getVar(e.type,e.name)}; `;return t}getUniforms(){console.warn(`Abstract function.`)}getCodes(e){let t=this.codes[e],n=``;if(t!==void 0)for(let e of t)n+=e.code+` +`;return n}getHash(){return this.vertexShader+this.fragmentShader+this.computeShader}setShaderStage(e){this.shaderStage=e}getShaderStage(){return this.shaderStage}setBuildStage(e){this.buildStage=e}getBuildStage(){return this.buildStage}buildCode(){console.warn(`Abstract function.`)}build(){let{object:e,material:t,renderer:n}=this;if(t!==null){let e=n.nodes.library.fromMaterial(t);e===null&&(console.error(`NodeMaterial: Material "${t.type}" is not compatible.`),e=new tw),e.build(this)}else this.addFlow(`compute`,e);for(let e of Nh){this.setBuildStage(e),this.context.vertex&&this.context.vertex.isNode&&this.flowNodeFromShaderStage(`vertex`,this.context.vertex);for(let t of Ph){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}getNodeUniform(e,t){if(t===`float`||t===`int`||t===`uint`)return new lD(e);if(t===`vec2`||t===`ivec2`||t===`uvec2`)return new uD(e);if(t===`vec3`||t===`ivec3`||t===`uvec3`)return new dD(e);if(t===`vec4`||t===`ivec4`||t===`uvec4`)return new fD(e);if(t===`color`)return new pD(e);if(t===`mat3`)return new mD(e);if(t===`mat4`)return new hD(e);throw Error(`Uniform "${t}" not declared.`)}createNodeMaterial(e=`NodeMaterial`){throw Error(`THREE.NodeBuilder: createNodeMaterial() was deprecated. Use new ${e}() instead.`)}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?this.format(`${e}.${`xyz`.slice(0,i)}`,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 r${n} - Node System\n`}},YD=class{constructor(){this.time=0,this.deltaTime=0,this.frameId=0,this.renderId=0,this.startTime=null,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={renderMap:new WeakMap,frameMap:new WeakMap},e.set(t,n)),n}updateBeforeNode(e){let t=e.getUpdateBeforeType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateBeforeMap,n);t.get(n)!==this.frameId&&e.updateBefore(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateBeforeMap,n);t.get(n)!==this.renderId&&e.updateBefore(this)!==!1&&t.set(n,this.renderId)}else t===L.OBJECT&&e.updateBefore(this)}updateAfterNode(e){let t=e.getUpdateAfterType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateAfterMap,n);t.get(n)!==this.frameId&&e.updateAfter(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateAfterMap,n);t.get(n)!==this.renderId&&e.updateAfter(this)!==!1&&t.set(n,this.renderId)}else t===L.OBJECT&&e.updateAfter(this)}updateNode(e){let t=e.getUpdateType(),n=e.updateReference(this);if(t===L.FRAME){let{frameMap:t}=this._getMaps(this.updateMap,n);t.get(n)!==this.frameId&&e.update(this)!==!1&&t.set(n,this.frameId)}else if(t===L.RENDER){let{renderMap:t}=this._getMaps(this.updateMap,n);t.get(n)!==this.renderId&&e.update(this)!==!1&&t.set(n,this.renderId)}else t===L.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}},XD=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};XD.isNodeFunctionInput=!0;var ZD=class extends R{static get type(){return`StructTypeNode`}constructor(e){super(),this.types=e,this.isStructTypeNode=!0}getMemberTypes(){return this.types}},QD=class extends R{static get type(){return`OutputStructNode`}constructor(...e){super(),this.members=e,this.isOutputStructNode=!0}setup(e){super.setup(e);let t=this.members,n=[];for(let r=0;ri&&(r=n,i=a)}}this._candidateFnCall=n=r(...t)}return n}},iO=V(rO),aO=e=>(...t)=>iO(e,...t),oO=class e extends e_{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=L.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};oO.LOCAL=`local`,oO.GLOBAL=`global`,oO.DELTA=`delta`,oO.FRAME=`frame`;var sO=(e,t=0)=>B(new oO(oO.LOCAL,e,t)),cO=(e,t=0)=>B(new oO(oO.GLOBAL,e,t)),lO=(e,t=0)=>B(new oO(oO.DELTA,e,t)),uO=H(oO,oO.FRAME).toUint(),dO=class e extends R{static get type(){return`OscNode`}constructor(t=e.SINE,n=sO()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=B(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};dO.SINE=`sine`,dO.SQUARE=`square`,dO.TRIANGLE=`triangle`,dO.SAWTOOTH=`sawtooth`;var fO=V(dO,dO.SINE),pO=V(dO,dO.SQUARE),mO=V(dO,dO.TRIANGLE),hO=V(dO,dO.SAWTOOTH),gO=class extends R{static get type(){return`SpriteSheetUVNode`}constructor(e,t=ub(),n=G(0)){super(`vec2`),this.countNode=e,this.uvNode=t,this.frameNode=n}setup(){let{frameNode:e,uvNode:t,countNode:n}=this,{width:r,height:i}=n,a=e.mod(r.mul(i)).floor(),o=a.mod(r),s=i.sub(a.add(1).div(r).ceil()),c=n.reciprocal(),l=J(o,s);return t.add(l).mul(c)}},_O=V(gO),vO=class extends Lh{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}setup(e){return e.isAvailable(`storageBuffer`)===!1&&this.node.bufferObject===!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.bufferObject===!0&&r!==!0?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}},yO=V(vO),bO=class extends R{static get type(){return`TriplanarTexturesNode`}constructor(e,t=null,n=null,r=G(1),i=Kb,a=nx){super(`vec4`),this.textureXNode=e,this.textureYNode=t,this.textureZNode=n,this.scaleNode=r,this.positionNode=i,this.normalNode=a}setup(){let{textureXNode:e,textureYNode:t,textureZNode:n,scaleNode:r,positionNode:i,normalNode:a}=this,o=a.abs().normalize();o=o.div(o.dot(Y(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 L_(gb(u,s).mul(o.x),gb(d,c).mul(o.y),gb(f,l).mul(o.z))}},xO=V(bO),SO=(...e)=>xO(...e),CO=new Sa,wO=new M,TO=new M,EO=new M,DO=new N,OO=new M(0,0,-1),kO=new Fn,AO=new M,jO=new M,MO=new Fn,NO=new A,PO=new In,FO=EC.flipX(),IO=!1,LO=class extends hb{static get type(){return`ReflectorNode`}constructor(e={}){super(PO.texture,FO);let{target:t=new Wr,resolution:n=1,generateMipmaps:r=!1,bounces:i=!0}=e;this.target=t,this.resolution=n,this.generateMipmaps=r,this.bounces=i,this.updateBeforeType=i?L.RENDER:L.FRAME,this.virtualCameras=new WeakMap,this.renderTargets=new WeakMap}_updateResolution(e,t){let n=this.resolution;t.getDrawingBufferSize(NO),e.setSize(Math.round(NO.width*n),Math.round(NO.height*n))}setup(e){return this._updateResolution(PO,e.renderer),super.setup(e)}getTextureNode(){return this.textureNode}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 In(0,0,{type:D}),this.generateMipmaps===!0&&(t.texture.minFilter=y,t.texture.generateMipmaps=!0),this.renderTargets.set(e,t)),t}updateBefore(e){if(this.bounces===!1&&IO)return!1;IO=!0;let{scene:t,camera:n,renderer:r,material:i}=e,{target:a}=this,o=this.getVirtualCamera(n),s=this.getRenderTarget(o);if(r.getDrawingBufferSize(NO),this._updateResolution(s,r),TO.setFromMatrixPosition(a.matrixWorld),EO.setFromMatrixPosition(n.matrixWorld),DO.extractRotation(a.matrixWorld),wO.set(0,0,1),wO.applyMatrix4(DO),AO.subVectors(TO,EO),AO.dot(wO)>0)return;AO.reflect(wO).negate(),AO.add(TO),DO.extractRotation(n.matrixWorld),OO.set(0,0,-1),OO.applyMatrix4(DO),OO.add(EO),jO.subVectors(TO,OO),jO.reflect(wO).negate(),jO.add(TO),o.coordinateSystem=n.coordinateSystem,o.position.copy(AO),o.up.set(0,1,0),o.up.applyMatrix4(DO),o.up.reflect(wO),o.lookAt(jO),o.near=n.near,o.far=n.far,o.updateMatrixWorld(),o.projectionMatrix.copy(n.projectionMatrix),CO.setFromNormalAndCoplanarPoint(wO,TO),CO.applyMatrix4(o.matrixWorldInverse),kO.set(CO.normal.x,CO.normal.y,CO.normal.z,CO.constant);let c=o.projectionMatrix;MO.x=(Math.sign(kO.x)+c.elements[8])/c.elements[0],MO.y=(Math.sign(kO.y)+c.elements[9])/c.elements[5],MO.z=-1,MO.w=(1+c.elements[10])/c.elements[14],kO.multiplyScalar(1/kO.dot(MO)),c.elements[2]=kO.x,c.elements[6]=kO.y,c.elements[10]=kO.z-0,c.elements[14]=kO.w,this.value=s.texture,i.visible=!1;let l=r.getRenderTarget(),u=r.getMRT();r.setMRT(null),r.setRenderTarget(s),r.render(t,o),r.setMRT(u),r.setRenderTarget(l),i.visible=!0,IO=!1}},RO=e=>B(new LO(e)),zO=new Ba(-1,1,1,-1,0,1),BO=new class extends Ii{constructor(e=!1){super();let t=e===!1?[0,-1,0,1,2,1]:[0,2,0,0,2,0];this.setAttribute(`position`,new F([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new F(t,2))}},VO=class extends Ji{constructor(e=null){super(BO,e),this.camera=zO,this.isQuadMesh=!0}renderAsync(e){return e.renderAsync(this,zO)}render(e){e.render(this,zO)}},HO=new A,UO=class extends hb{static get type(){return`RTTNode`}constructor(e,t=null,n=null,r={type:D}){let i=new In(t,n,r);super(i.texture,ub()),this.node=e,this.width=t,this.height=n,this.renderTarget=i,this.textureNeedsUpdate=!0,this.autoUpdate=!0,this.updateMap=new WeakMap,this._rttNode=null,this._quadMesh=new VO(new tw),this.updateBeforeType=L.RENDER}get autoSize(){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.autoSize===!0){this.pixelRatio=e.getPixelRatio();let t=e.getSize(HO);this.setSize(t.width,t.height)}this._quadMesh.material.fragmentNode=this._rttNode;let t=e.getRenderTarget();e.setRenderTarget(this.renderTarget),this._quadMesh.render(e),e.setRenderTarget(t)}clone(){let e=new hb(this.value,this.uvNode,this.levelNode);return e.sampler=this.sampler,e.referenceNode=this,e}},WO=(e,...t)=>B(new UO(B(e),...t)),GO=(e,...t)=>e.isTextureNode?e:WO(e,...t),KO=class extends cb{static get type(){return`VertexColorNode`}constructor(e=0){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 Fn(1,1,1,1)),r}serialize(e){super.serialize(e),e.index=this.index}deserialize(e){super.deserialize(e),this.index=e.index}},qO=(...e)=>B(new KO(...e)),JO=class extends R{static get type(){return`PointUVNode`}constructor(){super(`vec2`),this.isPointUVNode=!0}generate(){return`vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )`}},YO=H(JO),XO=class e extends R{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Ex(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Ex(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};XO.BACKGROUND_BLURRINESS=`backgroundBlurriness`,XO.BACKGROUND_INTENSITY=`backgroundIntensity`;var ZO=H(XO,XO.BACKGROUND_BLURRINESS),QO=H(XO,XO.BACKGROUND_INTENSITY),$O={Storage:`storage`,ReadOnlyStorage:`read-only-storage`},ek={WriteOnly:`write-only`,ReadOnly:`read-only`},tk=class extends vx{static get type(){return`StorageBufferNode`}constructor(e,t,n=0){super(e,t,n),this.isStorageBufferNode=!0,this.access=$O.Storage,this.isAtomic=!1,this.bufferObject=!1,this.bufferCount=n,this._attribute=null,this._varying=null,this.global=!0,e.isStorageBufferAttribute!==!0&&e.isStorageInstancedBufferAttribute!==!0&&(e.isInstancedBufferAttribute?e.isStorageInstancedBufferAttribute=!0:e.isStorageBufferAttribute=!0)}getHash(e){if(this.bufferCount===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getInputType(){return`storageBuffer`}element(e){return yO(this,e)}setBufferObject(e){return this.bufferObject=e,this}setAccess(e){return this.access=e,this}toReadOnly(){return this.setAccess($O.ReadOnlyStorage)}setAtomic(e){return this.isAtomic=e,this}toAtomic(){return this.setAtomic(!0)}generate(e){if(e.isAvailable(`storageBuffer`))return super.generate(e);let t=this.getNodeType(e);this._attribute===null&&(this._attribute=Hy(this.value),this._varying=Cy(this._attribute));let n=this._varying.build(e,t);return e.registerTransform(n,this._attribute),n}},nk=(e,t,n)=>B(new tk(e,t,n)),rk=(e,t,n)=>B(new tk(e,t,n).setBufferObject(!0)),ik=class extends hb{static get type(){return`StorageTextureNode`}constructor(e,t,n=null){super(e,t),this.storeNode=n,this.isStorageTextureNode=!0,this.access=ek.WriteOnly}getInputType(){return`storageTexture`}setup(e){super.setup(e);let t=e.getNodeProperties(this);t.storeNode=this.storeNode}setAccess(e){return this.access=e,this}generate(e,t){let n;return n=this.storeNode===null?super.generate(e,t):this.generateStore(e),n}toReadOnly(){return this.setAccess(ek.ReadOnly)}toWriteOnly(){return this.setAccess(ek.WriteOnly)}generateStore(e){let{uvNode:t,storeNode:n}=e.getNodeProperties(this),r=super.generate(e,`property`),i=t.build(e,`uvec2`),a=n.build(e,`vec4`),o=e.generateTextureStore(e,r,i,a);e.addLineFlowCode(o,this)}},ak=V(ik),ok=(e,t,n)=>{let r=ak(e,t,n);return n!==null&&r.append(),r},sk=class extends Tx{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}},ck=(e,t,n)=>B(new sk(e,t,n)),lk=class extends zh{static get type(){return`PosterizeNode`}constructor(e,t){super(),this.sourceNode=e,this.stepsNode=t}setup(){let{sourceNode:e,stepsNode:t}=this;return e.mul(t).floor().div(t)}},uk=V(lk),dk=null,fk=class extends LC{static get type(){return`ViewportSharedTextureNode`}constructor(e=EC,t=null){dk===null&&(dk=new Tu),super(e,t,dk)}updateReference(){return this}},pk=V(fk),mk=new A,hk=class extends hb{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},gk=class extends hk{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},_k=class e extends zh{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 ho;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new In(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:D,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=L.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Z(0),this._cameraFar=Z(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=B(new gk(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=B(new gk(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=qC(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=WC(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(mk);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};_k.COLOR=`color`,_k.DEPTH=`depth`;var vk=(e,t,n)=>B(new _k(_k.COLOR,e,t,n)),yk=(e,t)=>B(new hk(e,t)),bk=(e,t)=>B(new _k(_k.DEPTH,e,t)),xk=new VO,Sk=new VO,Ck=class extends zh{static get type(){return`GaussianBlurNode`}constructor(e,t=null,n=2){super(`vec4`),this.textureNode=e,this.directionNode=t,this.sigma=n,this._invSize=Z(new A),this._passDirection=Z(new A),this._horizontalRT=new In,this._horizontalRT.texture.name=`GaussianBlurNode.horizontal`,this._verticalRT=new In,this._verticalRT.texture.name=`GaussianBlurNode.vertical`,this._textureNode=yk(this,this._verticalRT.texture),this.updateBeforeType=L.RENDER,this.resolution=new A(1,1)}setSize(e,t){e=Math.max(Math.round(e*this.resolution.x),1),t=Math.max(Math.round(t*this.resolution.y),1),this._invSize.value.set(1/e,1/t),this._horizontalRT.setSize(e,t),this._verticalRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value,i=t.getRenderTarget(),a=t.getMRT(),o=n.value;xk.material=this._material,Sk.material=this._material,this.setSize(r.image.width,r.image.height);let s=r.type;this._horizontalRT.texture.type=s,this._verticalRT.texture.type=s,t.setMRT(null),t.setRenderTarget(this._horizontalRT),this._passDirection.value.set(1,0),xk.render(t),n.value=this._horizontalRT.texture,t.setRenderTarget(this._verticalRT),this._passDirection.value.set(0,1),Sk.render(t),t.setRenderTarget(i),t.setMRT(a),n.value=o}getTextureNode(){return this._textureNode}setup(e){let t=this.textureNode;if(t.isTextureNode!==!0)return console.error(`GaussianBlurNode requires a TextureNode.`),X();let n=t.uvNode||ub(),r=J(this.directionNode||1),i=e=>t.uv(e),a=U(()=>{let e=3+2*this.sigma,t=this._getCoefficients(e),a=this._invSize,o=r.mul(this._passDirection),s=G(t[0]).toVar(),c=X(i(n).mul(s)).toVar();for(let r=1;rB(new Ck(GO(e),t,n)),Tk=new A,Ek=new VO,Dk=class extends zh{static get type(){return`AfterImageNode`}constructor(e,t=.96){super(e),this.textureNode=e,this.textureNodeOld=gb(),this.damp=Z(t),this._compRT=new In,this._compRT.texture.name=`AfterImageNode.comp`,this._oldRT=new In,this._oldRT.texture.name=`AfterImageNode.old`,this._textureNode=yk(this,this._compRT.texture),this.updateBeforeType=L.RENDER}getTextureNode(){return this._textureNode}setSize(e,t){this._compRT.setSize(e,t),this._oldRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value.type;this._compRT.texture.type=r,this._oldRT.texture.type=r,t.getDrawingBufferSize(Tk),this.setSize(Tk.x,Tk.y);let i=t.getRenderTarget(),a=n.value;this.textureNodeOld.value=this._oldRT.texture,t.setRenderTarget(this._compRT),Ek.render(t);let o=this._oldRT;this._oldRT=this._compRT,this._compRT=o,t.setRenderTarget(i),n.value=a}setup(e){let t=this.textureNode,n=this.textureNodeOld,r=t.uvNode||ub();n.uvNode=r;let i=e=>t.uv(e),a=U(([e,t])=>{let n=G(t).toVar();return Gv(jv(X(e).toVar().sub(n)),0)}),o=U(()=>{let e=X(n),t=X(i(r));return e.mulAssign(this.damp.mul(a(e,.1))),Gv(t,e)}),s=this._materialComposed||=new tw;s.name=`AfterImage`,s.fragmentNode=o(),Ek.material=s;let c=e.getNodeProperties(this);return c.textureNode=t,this._textureNode}dispose(){this._compRT.dispose(),this._oldRT.dispose()}},Ok=(e,t)=>B(new Dk(GO(e),t)),kk=U(([e])=>Pk(e.rgb)),Ak=U(([e,t=G(1)])=>t.mix(Pk(e.rgb),e.rgb)),jk=U(([e,t=G(1)])=>{let n=L_(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 oy(e.rgb,r,i)}),Mk=U(([e,t=G(1)])=>{let n=Y(.57735,.57735,.57735),r=t.cos();return Y(e.rgb.mul(r).add(n.cross(e.rgb).mul(t.sin()).add(n.mul(Zv(n,e.rgb).mul(r.oneMinus())))))}),Nk=new M,Pk=(e,t=Y(...Tn.getLuminanceCoefficients(Nk)))=>Zv(e,t),Fk=(e,t)=>oy(Y(0),e,Pk(e).sub(t).max(0)),Ik=new VO,Lk=class extends zh{static get type(){return`AnamorphicNode`}constructor(e,t,n,r){super(`vec4`),this.textureNode=e,this.tresholdNode=t,this.scaleNode=n,this.colorNode=Y(.1,0,1),this.samples=r,this.resolution=new A(1,1),this._renderTarget=new In,this._renderTarget.texture.name=`anamorphic`,this._invSize=Z(new A),this._textureNode=yk(this,this._renderTarget.texture),this.updateBeforeType=L.RENDER}getTextureNode(){return this._textureNode}setSize(e,t){this._invSize.value.set(1/e,1/t),e=Math.max(Math.round(e*this.resolution.x),1),t=Math.max(Math.round(t*this.resolution.y),1),this._renderTarget.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=this.textureNode,r=n.value;this._renderTarget.texture.type=r.type;let i=t.getRenderTarget(),a=n.value;Ik.material=this._material,this.setSize(r.image.width,r.image.height),t.setRenderTarget(this._renderTarget),Ik.render(t),t.setRenderTarget(i),n.value=a}setup(e){let t=this.textureNode,n=t.uvNode||ub(),r=e=>t.uv(e),i=U(()=>{let e=this.samples,t=Math.floor(e/2),i=Y(0).toVar();return rC({start:-t,end:t},({i:e})=>{let a=G(e).abs().div(t).oneMinus(),o=Fk(r(J(n.x.add(this._invSize.x.mul(e).mul(this.scaleNode)),n.y)),this.tresholdNode).mul(a);i.addAssign(o)}),i.mul(this.colorNode)}),a=this._material||=new tw;a.name=`Anamorphic`,a.fragmentNode=i();let o=e.getNodeProperties(this);return o.textureNode=t,this._textureNode}dispose(){this._renderTarget.dispose()}},Rk=(e,t=.9,n=3,r=32)=>B(new Lk(GO(e),B(t),B(n),r)),zk=class extends zh{static get type(){return`SobelOperatorNode`}constructor(e){super(),this.textureNode=e,this.updateBeforeType=L.RENDER,this._invSize=Z(new A)}updateBefore(){let e=this.textureNode.value;this._invSize.value.set(1/e.image.width,1/e.image.height)}setup(){let{textureNode:e}=this,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=this._invSize,r=Vg(-1,-2,-1,0,0,0,1,2,1),i=Vg(-1,0,1,-2,0,2,-1,0,1),a=Pk(n(t.add(e.mul(J(-1,-1)))).xyz),o=Pk(n(t.add(e.mul(J(-1,0)))).xyz),s=Pk(n(t.add(e.mul(J(-1,1)))).xyz),c=Pk(n(t.add(e.mul(J(0,-1)))).xyz),l=Pk(n(t.add(e.mul(J(0,0)))).xyz),u=Pk(n(t.add(e.mul(J(0,1)))).xyz),d=Pk(n(t.add(e.mul(J(1,-1)))).xyz),f=Pk(n(t.add(e.mul(J(1,0)))).xyz),p=Pk(n(t.add(e.mul(J(1,1)))).xyz),m=L_(r[0][0].mul(a),r[1][0].mul(c),r[2][0].mul(d),r[0][1].mul(o),r[1][1].mul(l),r[2][1].mul(f),r[0][2].mul(s),r[1][2].mul(u),r[2][2].mul(p)),h=L_(i[0][0].mul(a),i[1][0].mul(c),i[2][0].mul(d),i[0][1].mul(o),i[1][1].mul(l),i[2][1].mul(f),i[0][2].mul(s),i[1][2].mul(u),i[2][2].mul(p));return X(Y(m.mul(m).add(h.mul(h)).sqrt()),1)})()}},Bk=e=>B(new zk(GO(e))),Vk=class extends zh{static get type(){return`DepthOfFieldNode`}constructor(e,t,n,r,i){super(),this.textureNode=e,this.viewZNode=t,this.focusNode=n,this.apertureNode=r,this.maxblurNode=i,this._aspect=Z(0),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value;this._aspect.value=e.image.width/e.image.height}setup(){let e=this.textureNode,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=J(1,this._aspect),r=J(sy(this.focusNode.add(this.viewZNode).mul(this.apertureNode),this.maxblurNode.negate(),this.maxblurNode)),i=r.mul(.9),a=r.mul(.7),o=r.mul(.4),s=X(0);return s=s.add(n(t)),s=s.add(n(t.add(J(0,.4).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,.37).mul(e).mul(r)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(r)))),s=s.add(n(t.add(J(-.37,.15).mul(e).mul(r)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(r)))),s=s.add(n(t.add(J(.37,-.15).mul(e).mul(r)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(r)))),s=s.add(n(t.add(J(-.15,-.37).mul(e).mul(r)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(r)))),s=s.add(n(t.add(J(-.15,.37).mul(e).mul(r)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(r)))),s=s.add(n(t.add(J(.37,.15).mul(e).mul(r)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(r)))),s=s.add(n(t.add(J(-.37,-.15).mul(e).mul(r)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,-.37).mul(e).mul(r)))),s=s.add(n(t.add(J(.15,.37).mul(e).mul(i)))),s=s.add(n(t.add(J(-.37,.15).mul(e).mul(i)))),s=s.add(n(t.add(J(.37,-.15).mul(e).mul(i)))),s=s.add(n(t.add(J(-.15,-.37).mul(e).mul(i)))),s=s.add(n(t.add(J(-.15,.37).mul(e).mul(i)))),s=s.add(n(t.add(J(.37,.15).mul(e).mul(i)))),s=s.add(n(t.add(J(-.37,-.15).mul(e).mul(i)))),s=s.add(n(t.add(J(.15,-.37).mul(e).mul(i)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(a)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(a)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(a)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(a)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(a)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(a)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(a)))),s=s.add(n(t.add(J(0,.4).mul(e).mul(a)))),s=s.add(n(t.add(J(.29,.29).mul(e).mul(o)))),s=s.add(n(t.add(J(.4,0).mul(e).mul(o)))),s=s.add(n(t.add(J(.29,-.29).mul(e).mul(o)))),s=s.add(n(t.add(J(0,-.4).mul(e).mul(o)))),s=s.add(n(t.add(J(-.29,.29).mul(e).mul(o)))),s=s.add(n(t.add(J(-.4,0).mul(e).mul(o)))),s=s.add(n(t.add(J(-.29,-.29).mul(e).mul(o)))),s=s.add(n(t.add(J(0,.4).mul(e).mul(o)))),s=s.div(41),s.a=1,X(s)})()}},Hk=(e,t,n=1,r=.025,i=1)=>B(new Vk(GO(e),B(t),B(n),B(r),B(i))),Uk=class extends zh{static get type(){return`DotScreenNode`}constructor(e,t=new A(.5,.5),n=1.57,r=1){super(`vec4`),this.inputNode=e,this.center=Z(t),this.angle=Z(n),this.scale=Z(r)}setup(){let e=this.inputNode,t=U(()=>{let e=wv(this.angle),t=Tv(this.angle),n=ub().mul(DC).sub(this.center),r=J(t.mul(n.x).sub(e.mul(n.y)),e.mul(n.x).add(t.mul(n.y))).mul(this.scale);return wv(r.x).mul(wv(r.y)).mul(4)});return U(()=>{let n=e;return X(Y(L_(n.r,n.g,n.b).div(3).mul(10).sub(5).add(t())),n.a)})()}},Wk=(e,t,n,r)=>B(new Uk(B(e),t,n,r)),Gk=class extends zh{static get type(){return`RGBShiftNode`}constructor(e,t=.005,n=0){super(`vec4`),this.textureNode=e,this.amount=Z(t),this.angle=Z(n)}setup(){let{textureNode:e}=this,t=e.uvNode||ub(),n=t=>e.uv(t);return U(()=>{let e=J(Tv(this.angle),wv(this.angle)).mul(this.amount),r=n(t.add(e)),i=n(t),a=n(t.sub(e));return X(r.r,i.g,a.b,i.a)})()}},Kk=(e,t,n)=>B(new Gk(GO(e),t,n)),qk=class extends zh{static get type(){return`FilmNode`}constructor(e,t=null,n=null){super(),this.inputNode=e,this.intensityNode=t,this.uvNode=n}setup(){let e=this.uvNode||ub();return U(()=>{let t=this.inputNode.rgb,n=fy(Cv(e.add(sO()))),r=t.add(t.mul(sy(n.add(.1),0,1)));return this.intensityNode!==null&&(r=oy(t,r,this.intensityNode)),X(r,this.inputNode.a)})()}},Jk=V(qk),Yk=class extends zh{static get type(){return`Lut3DNode`}constructor(e,t,n,r){super(),this.inputNode=e,this.lutNode=t,this.size=Z(n),this.intensityNode=r}setup(){let{inputNode:e,lutNode:t}=this,n=e=>t.uv(e);return U(()=>{let t=e,r=G(1).div(this.size);return X(oy(t,X(n(Y(G(.5).div(this.size)).add(t.rgb.mul(G(1).sub(r)))).rgb,t.a),this.intensityNode))})()}},Xk=(e,t,n,r)=>B(new Yk(B(e),B(t),n,B(r))),Zk=new VO,Qk=new P,$k=new A,eA=class extends zh{static get type(){return`GTAONode`}constructor(e,t,n){super(),this.depthNode=e,this.normalNode=t,this.radius=Z(.25),this.resolution=Z(new A),this.thickness=Z(1),this.distanceExponent=Z(1),this.distanceFallOff=Z(1),this.scale=Z(1),this.noiseNode=gb(tA()),this.cameraProjectionMatrix=Z(n.projectionMatrix),this.cameraProjectionMatrixInverse=Z(n.projectionMatrixInverse),this.SAMPLES=Z(16),this._aoRenderTarget=new In,this._aoRenderTarget.texture.name=`GTAONode.AO`,this._material=null,this._textureNode=yk(this,this._aoRenderTarget.texture),this.updateBeforeType=L.FRAME}getTextureNode(){return this._textureNode}setSize(e,t){this.resolution.value.set(e,t),this._aoRenderTarget.setSize(e,t)}updateBefore(e){let{renderer:t}=e,n=t.getDrawingBufferSize($k),r=t.getRenderTarget(),i=t.getMRT();t.getClearColor(Qk);let a=t.getClearAlpha();Zk.material=this._material,this.setSize(n.width,n.height),t.setMRT(null),t.setClearColor(16777215,1),t.setRenderTarget(this._aoRenderTarget),Zk.render(t),t.setRenderTarget(r),t.setMRT(i),t.setClearColor(Qk,a)}setup(e){let t=ub(),n=e=>this.depthNode.uv(e).x,r=e=>this.noiseNode.uv(e),i=U(([e])=>{let t=this.cameraProjectionMatrix.mul(X(e,1)),r=t.xy.div(t.w).mul(.5).add(.5).toVar();r=J(r.x,r.y.oneMinus());let i=n(r);return Y(r,i)}),a=U(([e,t])=>{e=J(e.x,e.y.oneMinus()).mul(2).sub(1);let n=X(Y(e,t),1),r=X(this.cameraProjectionMatrixInverse.mul(n));return r.xyz.div(r.w)}),o=U(()=>{let e=n(t);e.greaterThanEqual(1).discard();let o=a(t,e),s=this.normalNode.rgb.normalize(),c=this.radius,l=fb(this.noiseNode,0),u=J(t.x,t.y.oneMinus());u=u.mul(this.resolution.div(l));let d=r(u),f=Y(d.xyz.mul(2).sub(1).xy,0).normalize(),p=Vg(f,Y(f.y.mul(-1),f.x,0),Y(0,0,1)),m=this.SAMPLES.lessThan(30).select(3,5),h=L_(this.SAMPLES,m.sub(1)).div(m),g=G(0).toVar();return rC({start:K(0),end:m,type:`int`,condition:`<`},({i:e})=>{let t=G(e).div(G(m)).mul(sv),n=X(Tv(t),wv(t),0,L_(.5,z_(.5,d.w)));n.xyz=Sv(p.mul(n.xyz));let r=Sv(o.xyz.negate()),l=Sv(Qv(n.xyz,r)),u=Qv(l,r),f=Sv(s.sub(l.mul(Zv(s,l)))),_=Qv(f,l),v=J(Zv(r,_),Zv(r,_.negate())).toVar();rC({end:h,type:`int`,name:`j`,condition:`<`},({j:e})=>{let t=n.xyz.mul(c).mul(n.w).mul($v(B_(G(e).add(1),G(h)),this.distanceExponent)),s=i(o.add(t)),l=a(s.xy,s.z).sub(o);W(Av(l.z).lessThan(this.thickness),()=>{let t=Zv(r,Sv(l));v.x.addAssign(Gv(0,z_(t.sub(v.x),oy(1,G(2).div(G(e).add(2)),this.distanceFallOff))))});let u=i(o.sub(t)),d=a(u.xy,u.z).sub(o);W(Av(d.z).lessThan(this.thickness),()=>{let t=Zv(r,Sv(d));v.y.addAssign(Gv(0,z_(t.sub(v.y),oy(1,G(2).div(G(e).add(2)),this.distanceFallOff))))})});let y=vv(R_(1,v.mul(v))),b=Zv(f,u),x=Zv(f,r),S=z_(.5,Ov(v.y).sub(Ov(v.x)).add(y.x.mul(v.x).sub(y.y.mul(v.y)))),C=z_(.5,R_(2,v.x.mul(v.x)).sub(v.y.mul(v.y))),w=b.mul(S).add(x.mul(C));g.addAssign(w)}),g.assign(sy(g.div(m),0,1)),g.assign($v(g,this.scale)),X(Y(g),1)}),s=this._material||=new tw;return s.fragmentNode=o().context(e.getSharedContext()),s.name=`GTAO`,s.needsUpdate=!0,this._textureNode}dispose(){this._aoRenderTarget.dispose()}};function tA(e=5){let t=Math.floor(e)%2==0?Math.floor(e)+1:Math.floor(e),n=nA(t),r=n.length,i=new Uint8Array(r*4);for(let e=0;eB(new eA(B(e),B(t),n)),iA=class extends zh{static get type(){return`DenoiseNode`}constructor(e,t,n,r,i){super(),this.textureNode=e,this.depthNode=t,this.normalNode=n,this.noiseNode=r,this.cameraProjectionMatrixInverse=Z(i.projectionMatrixInverse),this.lumaPhi=Z(5),this.depthPhi=Z(5),this.normalPhi=Z(5),this.radius=Z(5),this.index=Z(0),this._resolution=Z(new A),this._sampleVectors=Sx(aA(16,2,1)),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value;this._resolution.value.set(e.image.width,e.image.height)}setup(){let e=ub(),t=e=>this.textureNode.uv(e),n=e=>this.depthNode.uv(e).x,r=e=>this.normalNode.uv(e),i=e=>this.noiseNode.uv(e),a=U(([e,t])=>{e=J(e.x,e.y.oneMinus()).mul(2).sub(1);let n=X(Y(e,t),1),r=X(this.cameraProjectionMatrixInverse.mul(n));return r.xyz.div(r.w)}),o=U(([e,i,o,s])=>{let c=t(s),l=n(s),u=r(s).rgb.normalize(),d=c.rgb,f=a(s,l),p=$v(Gv(Zv(i,u).toVar(),0),this.normalPhi).toVar(),m=Av(Pk(d).sub(Pk(e))).toVar(),h=Gv(G(1).sub(m.div(this.lumaPhi)),0).toVar(),g=Av(Zv(o.sub(f),i)).toVar(),_=Gv(G(1).sub(g.div(this.depthPhi)),0),v=h.mul(_).mul(p);return X(d.mul(v),v)}),s=U(([e])=>{let s=n(e),c=r(e).rgb.normalize(),l=t(e);W(s.greaterThanEqual(1).or(Zv(c,c).equal(0)),()=>l);let u=Y(l.rgb),d=a(e,s),f=fb(this.noiseNode,0),p=J(e.x,e.y.oneMinus());p=p.mul(this._resolution.div(f));let m=i(p),h=J(wv(m.element(this.index.mod(4).mul(2).mul(sv))),Tv(m.element(this.index.mod(4).mul(2).mul(sv)))),g=Bg(h.x,h.y.negate(),h.x,h.y),_=G(1).toVar(),v=Y(l.rgb).toVar();return rC({start:K(0),end:K(16),type:`int`,condition:`<`},({i:t})=>{let n=this._sampleVectors.element(t).toVar(),r=g.mul(n.xy.mul(G(1).add(n.z.mul(this.radius.sub(1))))).div(this._resolution).toVar(),i=o(u,c,d,e.add(r).toVar());v.addAssign(i.xyz),_.addAssign(i.w)}),W(_.greaterThan(G(0)),()=>{v.divAssign(_)}),X(v,l.a)}).setLayout({name:`denoise`,type:`vec4`,inputs:[{name:`uv`,type:`vec2`}]});return U(()=>s(e))()}};function aA(e,t,n){let r=oA(e,t,n),i=[];for(let t=0;tB(new iA(GO(e),B(t),B(n),B(r),i)),cA=class extends zh{static get type(){return`FXAANode`}constructor(e){super(),this.textureNode=e,this.updateBeforeType=L.RENDER,this._invSize=Z(new A)}updateBefore(){let e=this.textureNode.value;this._invSize.value.set(1/e.image.width,1/e.image.height)}setup(){let e=this.textureNode.bias(-100),t=e.uvNode||ub(),n=t=>e.uv(t),r=(t,n,r)=>e.uv(t.add(n.mul(r))),i=K(5),a=U(([e,t])=>{let n=X(t).toVar(),r=X(Av(X(e).toVar().sub(n))).toVar();return Gv(Gv(Gv(r.r,r.g),r.b),r.a)}),o=U(([e,t,o,s])=>{let c=n(e).toVar(),l=r(e,J(0,-1),t.xy).toVar(),u=r(e,J(1,0),t.xy).toVar(),d=r(e,J(0,1),t.xy).toVar(),f=r(e,J(-1,0),t.xy).toVar(),p=a(c,d).toVar(),m=a(c,l).toVar(),h=a(c,u).toVar(),g=a(c,f).toVar();W(Gv(p,Gv(m,Gv(h,g))).toVar().lessThan(o),()=>c);let _=R_(p.add(m),h.add(g)).toVar();_.mulAssign(s),W(Av(_).lessThan(.3),()=>{let n=J(h.greaterThan(g).select(1,-1).toVar(),m.greaterThan(p).select(1,-1).toVar()).toVar(),i=a(c,r(e,J(n.x,n.y),t.xy)).toVar(),o=a(c,r(e,J(n.x.negate(),n.y.negate()),t.xy)).toVar();_.assign(o.sub(i)),_.mulAssign(s),W(Av(_).lessThan(.3),()=>oy(c,d.add(l).add(u).add(f).mul(.25),.4))});let v=J().toVar();W(_.lessThanEqual(0),()=>{d.assign(f),l.assign(u),v.x.assign(0),v.y.assign(t.y)}).Else(()=>{v.x.assign(t.x),v.y.assign(0)});let y=a(c,d).toVar(),b=a(c,l).toVar();W(y.lessThanEqual(b),()=>{d.assign(l)});let x=K(0).toVar(),S=K(0).toVar(),C=G(0).toVar(),w=G(0).toVar(),T=J(e).toVar(),E=J(e).toVar(),D=K(0).toVar(),ee=K(0).toVar();rC(i,({i:t})=>{let r=t.add(1).toVar();W(x.equal(0),()=>{C.addAssign(r),T.assign(e.add(v.mul(C)));let i=n(T.xy),o=a(i,c).toVar(),s=a(i,d).toVar();W(o.greaterThan(s),()=>{x.assign(1)}),D.assign(t)}),W(S.equal(0),()=>{w.addAssign(r),E.assign(e.sub(v.mul(w)));let i=n(E.xy),o=a(i,c).toVar(),s=a(i,d).toVar();W(o.greaterThan(s),()=>{S.assign(1)}),ee.assign(t)}),W(x.equal(1).or(S.equal(1)),()=>{aC()})}),W(x.equal(0).and(S.equal(0)),()=>c);let O=G(1).toVar(),te=G(1).toVar();W(x.equal(1),()=>{O.assign(G(D).div(G(i.sub(1))))}),W(S.equal(1),()=>{te.assign(G(ee).div(G(i.sub(1))))});let ne=Wv(O,te);return ne.assign($v(ne,.5)),ne.assign(G(1).sub(ne)),oy(c,d,ne.mul(.5))}).setLayout({name:`FxaaPixelShader`,type:`vec4`,inputs:[{name:`uv`,type:`vec2`},{name:`fxaaQualityRcpFrame`,type:`vec2`},{name:`fxaaQualityEdgeThreshold`,type:`float`},{name:`fxaaQualityinvEdgeThreshold`,type:`float`}]});return U(()=>{let e=G(.2),n=G(1).div(e);return o(t,this._invSize,e,n)})()}},lA=e=>B(new cA(GO(e))),uA=new VO,dA=new P(0,0,0),fA=new P,pA=new A,mA=new A(1,0),hA=new A(0,1),gA=class extends zh{static get type(){return`BloomNode`}constructor(e,t=1,n=0,r=0){super(),this.inputNode=e,this.strength=Z(t),this.radius=Z(n),this.threshold=Z(r),this.smoothWidth=Z(.01),this._renderTargetsHorizontal=[],this._renderTargetsVertical=[],this._nMips=5,this._renderTargetBright=new In(1,1,{type:D}),this._renderTargetBright.texture.name=`UnrealBloomPass.bright`,this._renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e{let e=this.inputNode,t=Pk(e.rgb),n=uy(this.threshold,this.threshold.add(this.smoothWidth),t);return oy(X(0),e,n)});this._highPassFilterMaterial=this._highPassFilterMaterial||new tw,this._highPassFilterMaterial.fragmentNode=t().context(e.getSharedContext()),this._highPassFilterMaterial.name=`Bloom_highPass`,this._highPassFilterMaterial.needsUpdate=!0;let n=[3,5,7,9,11];for(let t=0;toy(e,G(1.2).sub(e),t)).setLayout({name:`lerpBloomFactor`,type:`float`,inputs:[{name:`factor`,type:`float`},{name:`radius`,type:`float`}]}),o=U(()=>{let e=a(r.element(0),this.radius).mul(X(i.element(0),1)).mul(this._textureNodeBlur0),t=a(r.element(1),this.radius).mul(X(i.element(1),1)).mul(this._textureNodeBlur1),n=a(r.element(2),this.radius).mul(X(i.element(2),1)).mul(this._textureNodeBlur2),o=a(r.element(3),this.radius).mul(X(i.element(3),1)).mul(this._textureNodeBlur3),s=a(r.element(4),this.radius).mul(X(i.element(4),1)).mul(this._textureNodeBlur4);return e.add(t).add(n).add(o).add(s).mul(this.strength)});return this._compositeMaterial=this._compositeMaterial||new tw,this._compositeMaterial.fragmentNode=o().context(e.getSharedContext()),this._compositeMaterial.name=`Bloom_comp`,this._compositeMaterial.needsUpdate=!0,this._textureOutput}dispose(){for(let e=0;er.uv(e),l=U(()=>{let e=i.element(0).toVar(),n=c(s).rgb.mul(e).toVar();return rC({start:K(1),end:K(t),type:`int`,condition:`<`},({i:t})=>{let r=G(t),l=i.element(t),u=o.mul(a).mul(r),d=c(s.add(u)).rgb,f=c(s.sub(u)).rgb;n.addAssign(L_(d,f).mul(l)),e.addAssign(G(2).mul(l))}),X(n.div(e),1)}),u=new tw;return u.fragmentNode=l().context(e.getSharedContext()),u.name=`Bloom_seperable`,u.needsUpdate=!0,u.colorTexture=r,u.direction=o,u.invSize=a,u}},_A=(e,t,n,r)=>B(new gA(B(e),t,n,r)),vA=class extends zh{static get type(){return`TransitionNode`}constructor(e,t,n,r,i,a){super(),this.textureNodeA=e,this.textureNodeB=t,this.mixTextureNode=n,this.mixRatioNode=r,this.thresholdNode=i,this.useTextureNode=a}setup(){let{textureNodeA:e,textureNodeB:t,mixTextureNode:n,mixRatioNode:r,thresholdNode:i,useTextureNode:a}=this,o=e=>{let t=e.uvNode||ub();return e.uv(t)};return U(()=>{let s=o(e),c=o(t),l=X().toVar();return W(a.equal(K(1)),()=>{let e=o(n),t=r.mul(i.mul(2).add(1)).sub(i),a=sy(R_(e.r,t).mul(G(1).div(i)),0,1);l.assign(oy(s,c,a))}).Else(()=>{l.assign(oy(c,s,r))}),l})()}},yA=(e,t,n,r=0,i=.1,a=0)=>B(new vA(GO(e),GO(t),GO(n),B(r),B(i),B(a))),bA=class extends zh{static get type(){return`PixelationNode`}constructor(e,t,n,r,i,a){super(),this.textureNode=e,this.depthNode=t,this.normalNode=n,this.pixelSize=r,this.normalEdgeStrength=i,this.depthEdgeStrength=a,this._resolution=Z(new Fn),this.updateBeforeType=L.RENDER}updateBefore(){let e=this.textureNode.value,t=e.image.width,n=e.image.height;this._resolution.value.set(t,n,1/t,1/n)}setup(){let{textureNode:e,depthNode:t,normalNode:n}=this,r=e.uvNode||ub(),i=t.uvNode||ub(),a=n.uvNode||ub(),o=()=>e.uv(r),s=(e,n)=>t.uv(i.add(J(e,n).mul(this._resolution.zw))).r,c=(e,t)=>n.uv(a.add(J(e,t).mul(this._resolution.zw))).rgb.normalize(),l=e=>{let t=n_(`float`,`diff`);return t.addAssign(sy(s(1,0).sub(e))),t.addAssign(sy(s(-1,0).sub(e))),t.addAssign(sy(s(0,1).sub(e))),t.addAssign(sy(s(0,-1).sub(e))),bv(uy(.01,.02,t).mul(2)).div(2)},u=(e,t,n,r)=>{let i=s(e,t).sub(n),a=c(e,t),o=Y(1,1,1),l=sy(uy(-.01,.01,Zv(r.sub(a),o)),0,1),u=sy(jv(i.mul(.25).add(.0025)),0,1);return G(1).sub(Zv(r,a)).mul(u).mul(l)},d=(e,t)=>{let n=n_(`float`,`indicator`);return n.addAssign(u(0,-1,e,t)),n.addAssign(u(0,1,e,t)),n.addAssign(u(-1,0,e,t)),n.addAssign(u(1,0,e,t)),qv(.1,n)};return U(()=>{let e=o(),t=n_(`float`,`depth`),n=n_(`vec3`,`normal`);W(this.depthEdgeStrength.greaterThan(0).or(this.normalEdgeStrength.greaterThan(0)),()=>{t.assign(s(0,0)),n.assign(c(0,0))});let r=n_(`float`,`dei`);W(this.depthEdgeStrength.greaterThan(0),()=>{r.assign(l(t))});let i=n_(`float`,`nei`);W(this.normalEdgeStrength.greaterThan(0),()=>{i.assign(d(t,n))});let a=r.greaterThan(0).select(G(1).sub(r.mul(this.depthEdgeStrength)),i.mul(this.normalEdgeStrength).add(1));return e.mul(a)})()}},xA=(e,t,n,r=6,i=.3,a=.4)=>B(new bA(GO(e),GO(t),GO(n),B(r),B(i),B(a))),SA=class extends _k{static get type(){return`PixelationPassNode`}constructor(e,t,n=6,r=.3,i=.4){super(`color`,e,t,{minFilter:u,magFilter:u}),this.pixelSize=n,this.normalEdgeStrength=r,this.depthEdgeStrength=i,this.isPixelationPassNode=!0,this._mrt=nO({output:S_,normal:ix})}setSize(e,t){let n=this.pixelSize.value?this.pixelSize.value:this.pixelSize,r=Math.floor(e/n),i=Math.floor(t/n);super.setSize(r,i)}setup(){return xA(super.getTextureNode(`output`),super.getTextureNode(`depth`),super.getTextureNode(`normal`),this.pixelSize,this.normalEdgeStrength,this.depthEdgeStrength)}},CA=(e,t,n,r,i)=>B(new SA(e,t,n,r,i)),wA=new A,TA=class extends _k{static get type(){return`SSAAPassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isSSAAPassNode=!0,this.sampleLevel=4,this.unbiased=!0,this.clearColor=new P(0),this.clearAlpha=0,this._currentClearColor=new P,this.sampleWeight=Z(1),this.sampleRenderTarget=null,this._quadMesh=new VO}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(wA);this.setSize(i.width,i.height),this.sampleRenderTarget.setSize(this.renderTarget.width,this.renderTarget.height),t.getClearColor(this._currentClearColor);let a=t.getClearAlpha(),o=t.getRenderTarget(),s=t.getMRT(),c=t.autoClear;this._cameraNear.value=r.near,this._cameraFar.value=r.far,t.setMRT(this.getMRT()),t.autoClear=!1;let l=EA[Math.max(0,Math.min(this.sampleLevel,5))],u=1/l.length,d={fullWidth:this.renderTarget.width,fullHeight:this.renderTarget.height,offsetX:0,offsetY:0,width:this.renderTarget.width,height:this.renderTarget.height},f=Object.assign({},r.view);f.enabled&&Object.assign(d,f);for(let e=0;e=0&&(e[t]=gb(this.sampleRenderTarget.textures[n]).mul(this.sampleWeight))}t=nO(e)}else t=gb(this.sampleRenderTarget.texture).mul(this.sampleWeight);return this._quadMesh.material=new tw,this._quadMesh.material.fragmentNode=t,this._quadMesh.material.transparent=!0,this._quadMesh.material.depthTest=!1,this._quadMesh.material.depthWrite=!1,this._quadMesh.material.premultipliedAlpha=!0,this._quadMesh.material.blending=2,this._quadMesh.material.normals=!1,this._quadMesh.material.name=`SSAA`,super.setup(e)}dispose(){super.dispose(),this.sampleRenderTarget!==null&&this.sampleRenderTarget.dispose()}},EA=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]],DA=(e,t)=>B(new TA(e,t)),OA=new A,kA=class extends _k{static get type(){return`StereoPassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isStereoPassNode=!0,this.stereo=new Hp,this.stereo.aspect=.5}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r,stereo:i,renderTarget:a}=this;this._pixelRatio=t.getPixelRatio(),i.cameraL.coordinateSystem=t.coordinateSystem,i.cameraR.coordinateSystem=t.coordinateSystem,i.update(r);let o=t.getSize(OA);this.setSize(o.width,o.height);let s=t.autoClear;t.autoClear=!1;let c=t.getRenderTarget(),l=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(a),t.setMRT(this._mrt),t.clear(),a.scissorTest=!0,a.scissor.set(0,0,a.width/2,a.height),a.viewport.set(0,0,a.width/2,a.height),t.render(n,i.cameraL),a.scissor.set(a.width/2,0,a.width/2,a.height),a.viewport.set(a.width/2,0,a.width/2,a.height),t.render(n,i.cameraR),a.scissorTest=!1,t.setRenderTarget(c),t.setMRT(l),t.autoClear=s}},AA=(e,t)=>B(new kA(e,t)),jA=new A,MA=new VO,NA=class extends _k{static get type(){return`StereoCompositePassNode`}constructor(e,t){super(_k.COLOR,e,t),this.isStereoCompositePassNode=!0,this.stereo=new Hp;let n={minFilter:h,magFilter:u,type:D};this._renderTargetL=new In(1,1,n),this._renderTargetR=new In(1,1,n),this._mapLeft=gb(this._renderTargetL.texture),this._mapRight=gb(this._renderTargetR.texture),this._material=null}updateStereoCamera(e){this.stereo.cameraL.coordinateSystem=e,this.stereo.cameraR.coordinateSystem=e,this.stereo.update(this.camera)}setSize(e,t){super.setSize(e,t),this._renderTargetL.setSize(this.renderTarget.width,this.renderTarget.height),this._renderTargetR.setSize(this.renderTarget.width,this.renderTarget.height)}updateBefore(e){let{renderer:t}=e,{scene:n,stereo:r,renderTarget:i}=this;this._pixelRatio=t.getPixelRatio(),this.updateStereoCamera(t.coordinateSystem);let a=t.getSize(jA);this.setSize(a.width,a.height);let o=t.getRenderTarget();t.setRenderTarget(this._renderTargetL),t.render(n,r.cameraL),t.setRenderTarget(this._renderTargetR),t.render(n,r.cameraR),t.setRenderTarget(i),MA.material=this._material,MA.render(t),t.setRenderTarget(o)}dispose(){super.dispose(),this._renderTargetL.dispose(),this._renderTargetR.dispose(),this._material!==null&&this._material.dispose()}},PA=class extends NA{static get type(){return`AnaglyphPassNode`}constructor(e,t){super(e,t),this.isAnaglyphPassNode=!0,this._colorMatrixLeft=Z(new j().fromArray([.4561,-.0400822,-.0152161,.500484,-.0378246,-.0205971,.176381,-.0157589,-.00546856])),this._colorMatrixRight=Z(new j().fromArray([-.0434706,.378476,-.0721527,-.0879388,.73364,-.112961,-.00155529,-.0184503,1.2264]))}setup(e){let t=ub(),n=U(()=>{let e=this._mapLeft.uv(t),n=this._mapRight.uv(t);return X(sy(this._colorMatrixLeft.mul(e.rgb).add(this._colorMatrixRight.mul(n.rgb))).rgb,Gv(e.a,n.a))}),r=this._material||=new tw;return r.fragmentNode=n().context(e.getSharedContext()),r.name=`Anaglyph`,r.needsUpdate=!0,super.setup(e)}},FA=(e,t)=>B(new PA(e,t)),IA=class extends NA{static get type(){return`ParallaxBarrierPassNode`}constructor(e,t){super(e,t),this.isParallaxBarrierPassNode=!0}setup(e){let t=ub(),n=U(()=>{let e=X().toVar();return W(Kv(OC.y,2).greaterThan(1),()=>{e.assign(this._mapLeft.uv(t))}).Else(()=>{e.assign(this._mapRight.uv(t))}),e}),r=this._material||=new tw;return r.fragmentNode=n().context(e.getSharedContext()),r.needsUpdate=!0,super.setup(e)}},LA=(e,t)=>B(new IA(e,t)),RA=class extends _k{static get type(){return`ToonOutlinePassNode`}constructor(e,t,n,r,i){super(_k.COLOR,e,t),this.colorNode=n,this.thicknessNode=r,this.alphaNode=i,this._materialCache=new WeakMap}updateBefore(e){let{renderer:t}=e,n=t.getRenderObjectFunction();t.setRenderObjectFunction((e,n,r,i,a,o,s)=>{if((a.isMeshToonMaterial||a.isMeshToonNodeMaterial)&&a.wireframe===!1){let c=this._getOutlineMaterial(a);t.renderObject(e,n,r,i,c,o,s)}t.renderObject(e,n,r,i,a,o,s)}),super.updateBefore(e),t.setRenderObjectFunction(n)}_createMaterial(){let e=new tw;e.isMeshToonOutlineMaterial=!0,e.name=`Toon_Outline`,e.side=1;let t=nx.negate(),n=Sb.mul(Hb),r=G(1),i=n.mul(X(Kb,1)),a=n.mul(X(Kb.add(t),1)),o=Sv(i.sub(a));return e.vertexNode=i.add(o.mul(this.thicknessNode).mul(i.w).mul(r)),e.colorNode=X(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}},zA=(e,t,n=new P(0,0,0),r=.003,i=1)=>B(new RA(e,t,B(n),B(r),B(i))),BA=class extends R{static get type(){return`ScriptableValueNode`}constructor(e=null){super(),this._value=e,this._cache=null,this.inputType=null,this.outpuType=null,this.events=new Ft,this.isScriptableValueNode=!0}get isScriptableOutputNode(){return this.outputType!==null}set value(e){this._value!==e&&(this._cache&&this.inputType===`URL`&&this.value.value instanceof ArrayBuffer&&(URL.revokeObjectURL(this._cache),this._cache=null),this._value=e,this.events.dispatchEvent({type:`change`}),this.refresh())}get value(){return this._value}refresh(){this.events.dispatchEvent({type:`refresh`})}getValue(){let e=this.value;if(e&&this._cache===null&&this.inputType===`URL`&&e.value instanceof ArrayBuffer)this._cache=URL.createObjectURL(new Blob([e.value]));else if(e&&e.value!==null&&e.value!==void 0&&((this.inputType===`URL`||this.inputType===`String`)&&typeof e.value==`string`||this.inputType===`Number`&&typeof e.value==`number`||this.inputType===`Vector2`&&e.value.isVector2||this.inputType===`Vector3`&&e.value.isVector3||this.inputType===`Vector4`&&e.value.isVector4||this.inputType===`Color`&&e.value.isColor||this.inputType===`Matrix3`&&e.value.isMatrix3||this.inputType===`Matrix4`&&e.value.isMatrix4))return e.value;return this._cache||e}getNodeType(e){return this.value&&this.value.isNode?this.value.getNodeType(e):`float`}setup(){return this.value&&this.value.isNode?this.value:G()}serialize(e){super.serialize(e),this.value===null?e.value=null:this.inputType===`ArrayBuffer`?e.value=Dh(this.value):e.value=this.value?this.value.toJSON(e.meta).uuid:null,e.inputType=this.inputType,e.outputType=this.outputType}deserialize(e){super.deserialize(e);let t=null;e.value!==null&&(t=e.inputType===`ArrayBuffer`?Oh(e.value):e.inputType===`Texture`?e.meta.textures[e.value]:e.meta.nodes[e.value]||null),this.value=t,this.inputType=e.inputType,this.outputType=e.outputType}},VA=V(BA),HA=class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},UA=class{constructor(e){this.scriptableNode=e}get parameters(){return this.scriptableNode.parameters}get layout(){return this.scriptableNode.getLayout()}getInputLayout(e){return this.scriptableNode.getInputLayout(e)}get(e){let t=this.parameters[e];return t?t.getValue():null}},WA=new HA,GA=class extends R{static get type(){return`ScriptableNode`}constructor(e=null,t={}){super(),this.codeNode=e,this.parameters=t,this._local=new HA,this._output=VA(),this._outputs={},this._source=this.source,this._method=null,this._object=null,this._value=null,this._needsOutputUpdate=!0,this.onRefresh=this.onRefresh.bind(this),this.isScriptableNode=!0}get source(){return this.codeNode?this.codeNode.code:``}setLocal(e,t){return this._local.set(e,t)}getLocal(e){return this._local.get(e)}onRefresh(){this._refresh()}getInputLayout(e){for(let t of this.getLayout())if(t.inputType&&(t.id===e||t.name===e))return t}getOutputLayout(e){for(let t of this.getLayout())if(t.outputType&&(t.id===e||t.name===e))return t}setOutput(e,t){let n=this._outputs;return n[e]===void 0?n[e]=VA(t):n[e].value=t,this}getOutput(e){return this._outputs[e]}getParameter(e){return this.parameters[e]}setParameter(e,t){let n=this.parameters;return t&&t.isScriptableNode?(this.deleteParameter(e),n[e]=t,n[e].getDefaultOutput().events.addEventListener(`refresh`,this.onRefresh)):t&&t.isScriptableValueNode?(this.deleteParameter(e),n[e]=t,n[e].events.addEventListener(`refresh`,this.onRefresh)):n[e]===void 0?(n[e]=VA(t),n[e].events.addEventListener(`refresh`,this.onRefresh)):n[e].value=t,this}getValue(){return this.getDefaultOutput().getValue()}deleteParameter(e){let t=this.parameters[e];return t&&(t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.removeEventListener(`refresh`,this.onRefresh)),this}clearParameters(){for(let e of Object.keys(this.parameters))this.deleteParameter(e);return this.needsUpdate=!0,this}call(e,...t){let n=this.getObject()[e];if(typeof n==`function`)return n(...t)}async callAsync(e,...t){let n=this.getObject()[e];if(typeof n==`function`)return n.constructor.name===`AsyncFunction`?await n(...t):n(...t)}getNodeType(e){return this.getDefaultOutputNode().getNodeType(e)}refresh(e=null){e===null?this._refresh():this.getOutput(e).refresh()}getObject(){if(this.needsUpdate&&this.dispose(),this._object!==null)return this._object;let e=()=>this.refresh(),t=(e,t)=>this.setOutput(e,t),n=new UA(this),r=WA.get(`THREE`),i=WA.get(`TSL`);this._object=this.getMethod(this.codeNode)(n,this._local,WA,e,t,r,i);let a=this._object.layout;if(a&&(a.cache===!1&&this._local.clear(),this._output.outputType=a.outputType||null,Array.isArray(a.elements)))for(let e of a.elements){let t=e.id||e.name;e.inputType&&(this.getParameter(t)===void 0&&this.setParameter(t,null),this.getParameter(t).inputType=e.inputType),e.outputType&&(this.getOutput(t)===void 0&&this.setOutput(t,null),this.getOutput(t).outputType=e.outputType)}return this._object}deserialize(e){super.deserialize(e);for(let e in this.parameters){let t=this.parameters[e];t.isScriptableNode&&(t=t.getDefaultOutput()),t.events.addEventListener(`refresh`,this.onRefresh)}}getLayout(){return this.getObject().layout}getDefaultOutputNode(){let e=this.getDefaultOutput().value;return e&&e.isNode?e:G()}getDefaultOutput(){return this._exec()._output}getMethod(){if(this.needsUpdate&&this.dispose(),this._method!==null)return this._method;let e=[`parameters`,`local`,`global`,`refresh`,`setOutput`,`THREE`,`TSL`],t=[`layout`,`init`,`main`,`dispose`].join(`, `),n=`var `+t+`; var output = {}; +`,r=` +return { ...output, `+t+` };`,i=n+this.codeNode.code+r;return this._method=Function(...e,i),this._method}dispose(){this._method!==null&&(this._object&&typeof this._object.dispose==`function`&&this._object.dispose(),this._method=null,this._object=null,this._source=null,this._value=null,this._needsOutputUpdate=!0,this._output.value=null,this._outputs={})}setup(){return this.getDefaultOutputNode()}getCacheKey(e){let t=[bh(this.source),this.getDefaultOutputNode().getCacheKey(e)];for(let n in this.parameters)t.push(this.parameters[n].getCacheKey(e));return xh(t)}set needsUpdate(e){e===!0&&this.dispose()}get needsUpdate(){return this.source!==this._source}_exec(){return this.codeNode===null?this:(this._needsOutputUpdate===!0&&(this._value=this.call(`main`),this._needsOutputUpdate=!1),this._output.value=this._value,this)}_refresh(){this.needsUpdate=!0,this._exec(),this._output.refresh()}},KA=V(GA),qA=class extends R{static get type(){return`FogNode`}constructor(e,t){super(`float`),this.isFogNode=!0,this.colorNode=e,this.factorNode=t}getViewZNode(e){let t,n=e.context.getViewZ;return n!==void 0&&(t=n(this)),(t||Xb.z).negate()}setup(){return this.factorNode}},JA=V(qA),YA=class extends qA{static get type(){return`FogRangeNode`}constructor(e,t,n){super(e),this.isFogRangeNode=!0,this.nearNode=t,this.farNode=n}setup(e){let t=this.getViewZNode(e);return uy(this.nearNode,this.farNode,t)}},XA=V(YA),ZA=class extends qA{static get type(){return`FogExp2Node`}constructor(e,t){super(e),this.isFogExp2Node=!0,this.densityNode=t}setup(e){let t=this.getViewZNode(e),n=this.densityNode;return n.mul(n,t,t).negate().exp().oneMinus()}},QA=V(ZA),$A=null,ej=null,tj=class extends R{static get type(){return`RangeNode`}constructor(e=G(),t=G()){super(),this.minNode=e,this.maxNode=t}getVectorLength(e){let t=e.getTypeLength(Th(this.minNode.value)),n=e.getTypeLength(Th(this.maxNode.value));return t>n?t:n}getNodeType(e){return e.object.count>1?e.getTypeFromLength(this.getVectorLength(e)):`float`}setup(e){let t=e.object,n=null;if(t.count>1){let r=this.minNode.value,i=this.maxNode.value,a=e.getTypeLength(Th(r)),o=e.getTypeLength(Th(i));$A||=new Fn,ej||=new Fn,$A.setScalar(0),ej.setScalar(0),a===1?$A.setScalar(r):r.isColor?$A.set(r.r,r.g,r.b):$A.set(r.x,r.y,r.z||0,r.w||0),o===1?ej.setScalar(i):i.isColor?ej.set(i.r,i.g,i.b):ej.set(i.x,i.y,i.z||0,i.w||0);let s=4*t.count,c=new Float32Array(s);for(let e=0;egb(e,t.xy).compare(t.z)),ij=U(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>gb(e,t).compare(n),i=Ex(`mapSize`,`vec2`,n).setGroup(Qg),a=Ex(`radius`,`float`,n).setGroup(Qg),o=J(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return L_(r(t.xy.add(J(s,c)),t.z),r(t.xy.add(J(0,c)),t.z),r(t.xy.add(J(l,c)),t.z),r(t.xy.add(J(d,f)),t.z),r(t.xy.add(J(0,f)),t.z),r(t.xy.add(J(p,f)),t.z),r(t.xy.add(J(s,0)),t.z),r(t.xy.add(J(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(J(p,0)),t.z),r(t.xy.add(J(l,0)),t.z),r(t.xy.add(J(d,m)),t.z),r(t.xy.add(J(0,m)),t.z),r(t.xy.add(J(p,m)),t.z),r(t.xy.add(J(s,u)),t.z),r(t.xy.add(J(0,u)),t.z),r(t.xy.add(J(l,u)),t.z)).mul(1/17)}),aj=U(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>gb(e,t).compare(n),i=Ex(`mapSize`,`vec2`,n).setGroup(Qg),a=J(1).div(i),o=a.x,s=a.y,c=t.xy,l=Cv(c.mul(i).add(.5));return c.subAssign(l.mul(a)),L_(r(c,t.z),r(c.add(J(o,0)),t.z),r(c.add(J(0,s)),t.z),r(c.add(a),t.z),oy(r(c.add(J(o.negate(),0)),t.z),r(c.add(J(o.mul(2),0)),t.z),l.x),oy(r(c.add(J(o.negate(),s)),t.z),r(c.add(J(o.mul(2),s)),t.z),l.x),oy(r(c.add(J(0,s.negate())),t.z),r(c.add(J(0,s.mul(2))),t.z),l.y),oy(r(c.add(J(o,s.negate())),t.z),r(c.add(J(o,s.mul(2))),t.z),l.y),oy(oy(r(c.add(J(o.negate(),s.negate())),t.z),r(c.add(J(o.mul(2),s.negate())),t.z),l.x),oy(r(c.add(J(o.negate(),s.mul(2))),t.z),r(c.add(J(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),oj=U(({depthTexture:e,shadowCoord:t})=>{let n=G(1).toVar(),r=gb(e).uv(t.xy).rg,i=qv(t.z,r.x);return W(i.notEqual(G(1)),()=>{let e=t.z.sub(r.x),a=Gv(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=sy(R_(o,.3).div(.6499999999999999)),n.assign(sy(Gv(i,o)))}),n}),sj=U(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=G(0).toVar(),a=G(0).toVar(),o=e.lessThanEqual(G(1)).select(G(0),G(2).div(e.sub(1))),s=e.lessThanEqual(G(1)).select(G(0),G(-1));return rC({start:K(0),end:K(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(G(e).mul(o)),l=r.uv(L_(OC.xy,J(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),J(i,vv(a.sub(i.mul(i))))}),cj=U(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=G(0).toVar(),a=G(0).toVar(),o=e.lessThanEqual(G(1)).select(G(0),G(2).div(e.sub(1))),s=e.lessThanEqual(G(1)).select(G(0),G(-1));return rC({start:K(0),end:K(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(G(e).mul(o)),l=r.uv(L_(OC.xy,J(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(L_(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),J(i,vv(a.sub(i.mul(i))))}),lj=[rj,ij,aj,oj],uj=null,dj=new VO,fj=class extends vC{static get type(){return`AnalyticLightNode`}constructor(e=null){super(),this.updateType=L.FRAME,this.light=e,this.color=new P,this.colorNode=Z(this.color).setGroup(Qg),this.baseColorNode=null,this.shadowMap=null,this.shadowNode=null,this.shadowColorNode=null,this.vsmShadowMapVertical=null,this.vsmShadowMapHorizontal=null,this.vsmMaterialVertical=null,this.vsmMaterialHorizontal=null,this.isAnalyticLightNode=!0}getCacheKey(){return Sh(super.getCacheKey(),this.light.id,+!!this.light.castShadow)}getHash(){return this.light.uuid}setupShadow(e){let{object:t,renderer:n}=e;if(n.shadowMap.enabled===!1)return;let r=this.shadowColorNode;if(r===null){uj===null&&(uj=new tw,uj.fragmentNode=X(0,0,0,1),uj.isShadowNodeMaterial=!0,uj.name=`ShadowMaterial`);let i=n.shadowMap.type,a=this.light.shadow,o=new ho;o.compareFunction=513;let s=e.createRenderTarget(a.mapSize.width,a.mapSize.height);if(s.depthTexture=o,a.camera.updateProjectionMatrix(),i===3){o.compareFunction=null,this.vsmShadowMapVertical=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:pe,type:D}),this.vsmShadowMapHorizontal=e.createRenderTarget(a.mapSize.width,a.mapSize.height,{format:pe,type:D});let t=gb(o),n=gb(this.vsmShadowMapVertical.texture),r=Ex(`blurSamples`,`float`,a).setGroup(Qg),i=Ex(`radius`,`float`,a).setGroup(Qg),s=Ex(`mapSize`,`vec2`,a).setGroup(Qg),c=this.vsmMaterialVertical||=new tw;c.fragmentNode=sj({samples:r,radius:i,size:s,shadowPass:t}).context(e.getSharedContext()),c.name=`VSMVertical`,c=this.vsmMaterialHorizontal||=new tw,c.fragmentNode=cj({samples:r,radius:i,size:s,shadowPass:n}).context(e.getSharedContext()),c.name=`VSMHorizontal`}let c=Ex(`intensity`,`float`,a).setGroup(Qg),l=Ex(`bias`,`float`,a).setGroup(Qg),u=Ex(`normalBias`,`float`,a).setGroup(Qg),d=t.material.shadowPositionNode||Jb,f=Z(a.matrix).setGroup(Qg).mul(d.add(ax.mul(u)));f=f.xyz.div(f.w);let p=f.z.add(l);n.coordinateSystem===2001&&(p=p.mul(2).sub(1)),f=Y(f.x,f.y.oneMinus(),p);let m=f.x.greaterThanEqual(0).and(f.x.lessThanEqual(1)).and(f.y.greaterThanEqual(0)).and(f.y.lessThanEqual(1)).and(f.z.lessThanEqual(1)),h=a.filterNode||lj[n.shadowMap.type]||null;if(h===null)throw Error(`THREE.WebGPURenderer: Shadow map type not supported yet.`);let g=gb(s.texture,f),_=m.select(h({depthTexture:i===3?this.vsmShadowMapHorizontal.texture:o,shadowCoord:f,shadow:a}),G(1));this.shadowMap=s,this.light.shadow.map=s,this.shadowNode=_,this.shadowColorNode=r=this.colorNode.mul(oy(1,_.rgb.mix(g,1),c.mul(g.a))),this.baseColorNode=this.colorNode}this.colorNode=r,this.updateBeforeType=L.RENDER}setup(e){this.colorNode=this.baseColorNode||this.colorNode,this.light.castShadow?e.object.receiveShadow&&this.setupShadow(e):this.shadowNode!==null&&this.disposeShadow()}updateShadow(e){let{shadowMap:t,light:n}=this,{renderer:r,scene:i,camera:a}=e,o=r.shadowMap.type;this._depthVersionCached=t.depthTexture.version;let s=i.overrideMaterial;i.overrideMaterial=uj,t.setSize(n.shadow.mapSize.width,n.shadow.mapSize.height),n.shadow.updateMatrices(n),n.shadow.camera.layers.mask=a.layers.mask;let c=r.getRenderTarget(),l=r.getRenderObjectFunction();r.setRenderObjectFunction((e,...t)=>{(e.castShadow===!0||e.receiveShadow&&o===3)&&r.renderObject(e,...t)}),r.setRenderTarget(t),r.render(i,n.shadow.camera),r.setRenderObjectFunction(l),n.isPointLight!==!0&&o===3&&this.vsmPass(e,n),r.setRenderTarget(c),i.overrideMaterial=s}vsmPass(e,t){let{renderer:n}=e;this.vsmShadowMapVertical.setSize(t.shadow.mapSize.width,t.shadow.mapSize.height),this.vsmShadowMapHorizontal.setSize(t.shadow.mapSize.width,t.shadow.mapSize.height),n.setRenderTarget(this.vsmShadowMapVertical),dj.material=this.vsmMaterialVertical,dj.render(n),n.setRenderTarget(this.vsmShadowMapHorizontal),dj.material=this.vsmMaterialHorizontal,dj.render(n)}disposeShadow(){this.shadowMap.dispose(),this.shadowMap=null,this.vsmShadowMapVertical!==null&&(this.vsmShadowMapVertical.dispose(),this.vsmShadowMapVertical=null,this.vsmMaterialVertical.dispose(),this.vsmMaterialVertical=null),this.vsmShadowMapHorizontal!==null&&(this.vsmShadowMapHorizontal.dispose(),this.vsmShadowMapHorizontal=null,this.vsmMaterialHorizontal.dispose(),this.vsmMaterialHorizontal=null),this.shadowNode=null,this.shadowColorNode=null,this.baseColorNode=null,this.updateBeforeType=L.NONE}updateBefore(e){let t=this.light.shadow;(t.needsUpdate||t.autoUpdate)&&(this.updateShadow(e),this.shadowMap.depthTexture.version===this._depthVersionCached&&(t.needsUpdate=!1))}update(){let{light:e}=this;this.color.copy(e.color).multiplyScalar(e.intensity)}},pj=U(e=>{let{lightDistance:t,cutoffDistance:n,decayExponent:r}=e,i=t.pow(r).max(.01).reciprocal();return n.greaterThan(0).select(i.mul(t.div(n).pow4().oneMinus().clamp().pow2()),i)}),mj;function hj(e){mj||=new WeakMap;let t=mj.get(e);return t===void 0&&mj.set(e,t={}),t}function gj(e){let t=hj(e);return t.position||=Z(new M).setGroup(Qg).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.matrixWorld))}function _j(e){let t=hj(e);return t.targetPosition||=Z(new M).setGroup(Qg).onRenderUpdate((t,n)=>n.value.setFromMatrixPosition(e.target.matrixWorld))}function vj(e){let t=hj(e);return t.viewPosition||=Z(new M).setGroup(Qg).onRenderUpdate(({camera:t},n)=>{n.value=n.value||new M,n.value.setFromMatrixPosition(e.matrixWorld),n.value.applyMatrix4(t.matrixWorldInverse)})}var yj=e=>wb.transformDirection(gj(e).sub(_j(e))),bj=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)}),xj=(e,t)=>$v(z_(4,e.mul(R_(1,e))),t),Sj=(e,t)=>e.lessThan(.5)?xj(e.mul(2),t).div(2):R_(1,xj(z_(R_(1,e),2),t).div(2)),Cj=(e,t,n)=>$v(B_($v(e,t),L_($v(e,t),$v(R_(1,e),n))),1/t),wj=(e,t)=>wv(sv.mul(t.mul(e).sub(1))).div(sv.mul(t.mul(e).sub(1))),Tj=U(([e])=>e.fract().sub(.5).abs()).setLayout({name:`tri`,type:`float`,inputs:[{name:`x`,type:`float`}]}),Ej=U(([e])=>Y(Tj(e.z.add(Tj(e.y.mul(1)))),Tj(e.z.add(Tj(e.x.mul(1)))),Tj(e.y.add(Tj(e.x.mul(1)))))).setLayout({name:`tri3`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),Dj=U(([e,t,n])=>{let r=Y(e).toVar(),i=G(1.4).toVar(),a=G(0).toVar(),o=Y(r).toVar();return rC({start:G(0),end:G(3),type:`float`,condition:`<=`},()=>{let e=Y(Ej(o.mul(2))).toVar();r.addAssign(e.add(n.mul(G(.1).mul(t)))),o.mulAssign(1.8),i.mulAssign(1.5),r.mulAssign(1.2);let s=G(Tj(r.z.add(Tj(r.x.add(Tj(r.y)))))).toVar();a.addAssign(s.div(i)),o.addAssign(.14)}),a}).setLayout({name:`triNoise3D`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`spd`,type:`float`},{name:`time`,type:`float`}]}),Oj=U(([e,t,n=J(.5)])=>wE(e.sub(n),t).add(n)),kj=U(([e,t,n=J(.5)])=>{let r=e.sub(n),i=r.dot(r),a=i.mul(i).mul(t);return e.add(r.mul(a))}),Aj=U(({position:e=null,horizontal:t=!0,vertical:n=!1})=>{let r;e===null?r=Ib:(r=Ib.toVar(),r[3][0]=e.x,r[3][1]=e.y,r[3][2]=e.z);let i=wb.mul(r);return bg(t)&&(i[0][0]=Ib[0].length(),i[0][1]=0,i[0][2]=0),bg(n)&&(i[1][0]=0,i[1][1]=Ib[1].length(),i[1][2]=0),i[2][0]=0,i[2][1]=0,i[2][2]=1,Sb.mul(i).mul(Kb)}),jj=U(([e=null])=>{let t=XC();return XC(HC(e)).sub(t).lessThan(0).select(EC,e)}),Mj=new WeakMap,Nj=class extends zh{static get type(){return`VelocityNode`}constructor(){super(`vec2`),this.updateType=L.OBJECT,this.updateAfterType=L.OBJECT,this.previousModelWorldMatrix=Z(new N),this.previousProjectionMatrix=Z(new N).setGroup(Qg),this.previousCameraViewMatrix=Z(new N)}update({frameId:e,camera:t,object:n}){let r=Fj(n);this.previousModelWorldMatrix.value.copy(r);let i=Pj(t);i.frameId!==e&&(i.frameId=e,i.previousProjectionMatrix===void 0?(i.previousProjectionMatrix=new N,i.previousCameraViewMatrix=new N,i.currentProjectionMatrix=new N,i.currentCameraViewMatrix=new N,i.previousProjectionMatrix.copy(t.projectionMatrix),i.previousCameraViewMatrix.copy(t.matrixWorldInverse)):(i.previousProjectionMatrix.copy(i.currentProjectionMatrix),i.previousCameraViewMatrix.copy(i.currentCameraViewMatrix)),i.currentProjectionMatrix.copy(t.projectionMatrix),i.currentCameraViewMatrix.copy(t.matrixWorldInverse),this.previousProjectionMatrix.value.copy(i.previousProjectionMatrix),this.previousCameraViewMatrix.value.copy(i.previousCameraViewMatrix))}updateAfter({object:e}){Fj(e).copy(e.matrixWorld)}setup(){let e=this.previousCameraViewMatrix.mul(this.previousModelWorldMatrix),t=Sb.mul(Hb).mul(Kb),n=this.previousProjectionMatrix.mul(e).mul(qb);return R_(t.xy.div(t.w),n.xy.div(n.w))}};function Pj(e){let t=Mj.get(e);return t===void 0&&(t={},Mj.set(e,t)),t}function Fj(e,t=0){let n=Pj(e),r=n[t];return r===void 0&&(n[t]=r=new N),r}var Ij=H(Nj),Lj=U(([e,t])=>Wv(1,e.oneMinus().div(t)).oneMinus()).setLayout({name:`burnBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Rj=U(([e,t])=>Wv(e.div(t.oneMinus()),1)).setLayout({name:`dodgeBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),zj=U(([e,t])=>e.oneMinus().mul(t.oneMinus()).oneMinus()).setLayout({name:`screenBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Bj=U(([e,t])=>oy(e.mul(2).mul(t),e.oneMinus().mul(2).mul(t.oneMinus()).oneMinus(),qv(.5,e))).setLayout({name:`overlayBlend`,type:`vec3`,inputs:[{name:`base`,type:`vec3`},{name:`blend`,type:`vec3`}]}),Vj=U(([e,t,n=K(16)])=>{let r=t=>e.uv(t),i=ub(),a=r(i).toVar(),o=G(n);return rC({start:K(1),end:n,type:`int`,condition:`<=`},({i:e})=>{let n=t.mul(G(e).div(o.sub(1)).sub(.5));a.addAssign(r(i.add(n)))}),a.divAssign(o),a}),Hj=U(([e,t=1])=>{let n=e,r=Pk(n.rgb),i=Y(r),a=Wv(1,Gv(0,G(10).mul(r.sub(.45)))),o=oy(i.mul(n.rgb).mul(2),G(2).mul(i.oneMinus()).mul(n.rgb.oneMinus()).oneMinus(),a),s=n.a.mul(t),c=s.mul(o.rgb);return c.addAssign(n.rgb.mul(s.oneMinus())),X(c,n.a)}),Uj=U(([e])=>{let t=Y(e);return X(Zv(t,Y(.393,.769,.189)),Zv(t,Y(.349,.686,.168)),Zv(t,Y(.272,.534,.131)),e.a)}),Wj=U(([e])=>oy(e.mul(.9478672986).add(.0521327014).pow(2.4),e.mul(.0773993808),e.lessThanEqual(.04045))).setLayout({name:`sRGBToLinearSRGB`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Gj=U(([e])=>oy(e.pow(.41666).mul(1.055).sub(.055),e.mul(12.92),e.lessThanEqual(.0031308))).setLayout({name:`linearSRGBTosRGB`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),Kj=U(([e,t])=>e.mul(t).clamp()).setLayout({name:`linearToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),qj=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`}]}),Jj=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`}]}),Yj=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)}),Xj=U(([e,t])=>{let n=Vg(.59719,.35458,.04823,.076,.90834,.01566,.0284,.13383,.83777),r=Vg(1.60475,-.53108,-.07367,-.10208,1.10813,-.00605,-.00327,-.07276,1.07602);return e=e.mul(t).div(.6),e=n.mul(e),e=Yj(e),e=r.mul(e),e.clamp()}).setLayout({name:`acesFilmicToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),Zj=Vg(Y(1.6605,-.1246,-.0182),Y(-.5876,1.1329,-.1006),Y(-.0728,-.0083,1.1187)),Qj=Vg(Y(.6274,.0691,.0164),Y(.3293,.9195,.088),Y(.0433,.0113,.8956)),$j=U(([e])=>{let t=Y(e).toVar(),n=Y(t.mul(t)).toVar(),r=Y(n.mul(n)).toVar();return G(15.5).mul(r.mul(n)).sub(z_(40.14,r.mul(t))).add(z_(31.96,r).sub(z_(6.868,n.mul(t))).add(z_(.4298,n).add(z_(.1191,t).sub(.00232))))}),eM=U(([e,t])=>{let n=Y(e).toVar(),r=Vg(Y(.856627153315983,.137318972929847,.11189821299995),Y(.0951212405381588,.761241990602591,.0767994186031903),Y(.0482516061458583,.101439036467562,.811302368396859)),i=Vg(Y(1.1271005818144368,-.1413297634984383,-.14132976349843826),Y(-.11060664309660323,1.157823702216272,-.11060664309660294),Y(-.016493938717834573,-.016493938717834257,1.2519364065950405)),a=G(-12.47393),o=G(4.026069);return n.mulAssign(t),n.assign(Qj.mul(n)),n.assign(r.mul(n)),n.assign(Gv(n,1e-10)),n.assign(_v(n)),n.assign(n.sub(a).div(o.sub(a))),n.assign(sy(n,0,1)),n.assign($j(n)),n.assign(i.mul(n)),n.assign($v(Gv(Y(0),n),Y(2.2))),n.assign(Zj.mul(n)),n.assign(sy(n,0,1)),n}).setLayout({name:`agxToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),tM=U(([e,t])=>{let n=G(.76),r=G(.15);e=e.mul(t);let i=Wv(e.r,Wv(e.g,e.b)),a=hy(i.lessThan(.08),i.sub(z_(6.25,i.mul(i))),.04);e.subAssign(a);let o=Gv(e.r,Gv(e.g,e.b));W(o.lessThan(n),()=>e);let s=R_(1,n),c=R_(1,s.mul(s).div(o.add(s.sub(n))));e.mulAssign(c.div(o));let l=R_(1,B_(1,r.mul(o.sub(c)).add(1)));return oy(e,Y(c),l)}).setLayout({name:`neutralToneMapping`,type:`vec3`,inputs:[{name:`color`,type:`vec3`},{name:`exposure`,type:`float`}]}),nM=class extends R{static get type(){return`ComputeBuiltinNode`}constructor(e,t){super(t),this._builtinName=e}getHash(e){return this.getBuiltinName(e)}getNodeType(){return this.nodeType}setBuiltinName(e){return this._builtinName=e,this}getBuiltinName(){return this._builtinName}hasBuiltin(e){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):(console.warn(`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}},rM=(e,t)=>B(new nM(e,t)),iM=rM(`numWorkgroups`,`uvec3`),aM=rM(`workgroupId`,`uvec3`),oM=rM(`localId`,`uvec3`),sM=rM(`subgroupSize`,`uint`),cM=V(class extends R{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}}),lM=()=>cM(`workgroup`).append(),uM=()=>cM(`storage`).append(),dM=()=>cM(`texture`).append(),fM=class extends Lh{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}},pM=class extends R{constructor(e,t,n=0){super(t),this.bufferType=t,this.bufferCount=n,this.isWorkgroupInfoNode=!0,this.scope=e}label(e){return this.name=e,this}getHash(){return this.uuid}setScope(e){return this.scope=e,this}getInputType(){return`${this.scope}Array`}element(e){return B(new fM(this,e))}generate(e){return e.getScopedArray(this.name||`${this.scope}Array_${this.id}`,this.scope.toLowerCase(),this.bufferType,this.bufferCount)}},mM=(e,t)=>B(new pM(`Workgroup`,e,t)),hM=class extends zh{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};hM.ATOMIC_LOAD=`atomicLoad`,hM.ATOMIC_STORE=`atomicStore`,hM.ATOMIC_ADD=`atomicAdd`,hM.ATOMIC_SUB=`atomicSub`,hM.ATOMIC_MAX=`atomicMax`,hM.ATOMIC_MIN=`atomicMin`,hM.ATOMIC_AND=`atomicAnd`,hM.ATOMIC_OR=`atomicOr`,hM.ATOMIC_XOR=`atomicXor`;var gM=V(hM),_M=(e,t,n,r)=>{let i=gM(e,t,n,r);return i.append(),i},vM=(e,t,n=null)=>_M(hM.ATOMIC_STORE,e,t,n),yM=(e,t,n=null)=>_M(hM.ATOMIC_ADD,e,t,n),bM=(e,t,n=null)=>_M(hM.ATOMIC_SUB,e,t,n),xM=(e,t,n=null)=>_M(hM.ATOMIC_MAX,e,t,n),SM=(e,t,n=null)=>_M(hM.ATOMIC_MIN,e,t,n),CM=(e,t,n=null)=>_M(hM.ATOMIC_AND,e,t,n),wM=(e,t,n=null)=>_M(hM.ATOMIC_OR,e,t,n),TM=(e,t,n=null)=>_M(hM.ATOMIC_XOR,e,t,n),EM=U(([e=ub()])=>{let t=e.mul(2),n=t.x.floor(),r=t.y.floor();return n.add(r).mod(2).sign()}),DM=U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar();return hy(Ag(e).toVar(),i,r)}).setLayout({name:`mx_select`,type:`float`,inputs:[{name:`b`,type:`bool`},{name:`t`,type:`float`},{name:`f`,type:`float`}]}),OM=U(([e,t])=>{let n=Ag(t).toVar(),r=G(e).toVar();return hy(n,r.negate(),r)}).setLayout({name:`mx_negate_if`,type:`float`,inputs:[{name:`val`,type:`float`},{name:`b`,type:`bool`}]}),kM=U(([e])=>K(bv(G(e).toVar()))).setLayout({name:`mx_floor`,type:`int`,inputs:[{name:`x`,type:`float`}]}),AM=U(([e,t])=>{let n=G(e).toVar();return t.assign(kM(n)),n.sub(G(t))}),jM=aO([U(([e,t,n,r,i,a])=>{let o=G(a).toVar(),s=G(i).toVar(),c=G(r).toVar(),l=G(n).toVar(),u=G(t).toVar(),d=G(e).toVar(),f=G(R_(1,s)).toVar();return R_(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=G(a).toVar(),s=G(i).toVar(),c=Y(r).toVar(),l=Y(n).toVar(),u=Y(t).toVar(),d=Y(e).toVar(),f=G(R_(1,s)).toVar();return R_(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`}]})]),MM=aO([U(([e,t,n,r,i,a,o,s,c,l,u])=>{let d=G(u).toVar(),f=G(l).toVar(),p=G(c).toVar(),m=G(s).toVar(),h=G(o).toVar(),g=G(a).toVar(),_=G(i).toVar(),v=G(r).toVar(),y=G(n).toVar(),b=G(t).toVar(),x=G(e).toVar(),S=G(R_(1,p)).toVar(),C=G(R_(1,f)).toVar();return G(R_(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=G(u).toVar(),f=G(l).toVar(),p=G(c).toVar(),m=Y(s).toVar(),h=Y(o).toVar(),g=Y(a).toVar(),_=Y(i).toVar(),v=Y(r).toVar(),y=Y(n).toVar(),b=Y(t).toVar(),x=Y(e).toVar(),S=G(R_(1,p)).toVar(),C=G(R_(1,f)).toVar();return G(R_(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`}]})]),NM=aO([U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=q(q(e).toVar().bitAnd(q(7))).toVar(),o=G(DM(a.lessThan(q(4)),i,r)).toVar(),s=G(z_(2,DM(a.lessThan(q(4)),r,i))).toVar();return OM(o,Ag(a.bitAnd(q(1)))).add(OM(s,Ag(a.bitAnd(q(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=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=q(q(e).toVar().bitAnd(q(15))).toVar(),c=G(DM(s.lessThan(q(8)),o,a)).toVar(),l=G(DM(s.lessThan(q(4)),a,DM(s.equal(q(12)).or(s.equal(q(14))),o,i))).toVar();return OM(c,Ag(s.bitAnd(q(1)))).add(OM(l,Ag(s.bitAnd(q(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`}]})]),PM=aO([U(([e,t,n])=>{let r=G(n).toVar(),i=G(t).toVar(),a=Fg(e).toVar();return Y(NM(a.x,i,r),NM(a.y,i,r),NM(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=G(r).toVar(),a=G(n).toVar(),o=G(t).toVar(),s=Fg(e).toVar();return Y(NM(s.x,o,a,i),NM(s.y,o,a,i),NM(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`}]})]),FM=U(([e])=>z_(.6616,G(e).toVar())).setLayout({name:`mx_gradient_scale2d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),IM=U(([e])=>z_(.982,G(e).toVar())).setLayout({name:`mx_gradient_scale3d_0`,type:`float`,inputs:[{name:`v`,type:`float`}]}),LM=aO([FM,U(([e])=>z_(.6616,Y(e).toVar())).setLayout({name:`mx_gradient_scale2d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),RM=aO([IM,U(([e])=>z_(.982,Y(e).toVar())).setLayout({name:`mx_gradient_scale3d_1`,type:`vec3`,inputs:[{name:`v`,type:`vec3`}]})]),zM=U(([e,t])=>{let n=K(t).toVar(),r=q(e).toVar();return r.shiftLeft(n).bitOr(r.shiftRight(K(32).sub(n)))}).setLayout({name:`mx_rotl32`,type:`uint`,inputs:[{name:`x`,type:`uint`},{name:`k`,type:`int`}]}),BM=U(([e,t,n])=>{e.subAssign(n),e.bitXorAssign(zM(n,K(4))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(zM(e,K(6))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(zM(t,K(8))),t.addAssign(e),e.subAssign(n),e.bitXorAssign(zM(n,K(16))),n.addAssign(t),t.subAssign(e),t.bitXorAssign(zM(e,K(19))),e.addAssign(n),n.subAssign(t),n.bitXorAssign(zM(t,K(4))),t.addAssign(e)}),VM=U(([e,t,n])=>{let r=q(n).toVar(),i=q(t).toVar(),a=q(e).toVar();return r.bitXorAssign(i),r.subAssign(zM(i,K(14))),a.bitXorAssign(r),a.subAssign(zM(r,K(11))),i.bitXorAssign(a),i.subAssign(zM(a,K(25))),r.bitXorAssign(i),r.subAssign(zM(i,K(16))),a.bitXorAssign(r),a.subAssign(zM(r,K(4))),i.bitXorAssign(a),i.subAssign(zM(a,K(14))),r.bitXorAssign(i),r.subAssign(zM(i,K(24))),r}).setLayout({name:`mx_bjfinal`,type:`uint`,inputs:[{name:`a`,type:`uint`},{name:`b`,type:`uint`},{name:`c`,type:`uint`}]}),HM=U(([e])=>G(q(e).toVar()).div(G(q(K(4294967295))))).setLayout({name:`mx_bits_to_01`,type:`float`,inputs:[{name:`bits`,type:`uint`}]}),UM=U(([e])=>{let t=G(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`}]}),WM=aO([U(([e])=>{let t=K(e).toVar(),n=q(q(1)).toVar(),r=q(q(K(3735928559)).add(n.shiftLeft(q(2))).add(q(13))).toVar();return VM(r.add(q(t)),r,r)}).setLayout({name:`mx_hash_int_0`,type:`uint`,inputs:[{name:`x`,type:`int`}]}),U(([e,t])=>{let n=K(t).toVar(),r=K(e).toVar(),i=q(q(2)).toVar(),a=q().toVar(),o=q().toVar(),s=q().toVar();return a.assign(o.assign(s.assign(q(K(3735928559)).add(i.shiftLeft(q(2))).add(q(13))))),a.addAssign(q(r)),o.addAssign(q(n)),VM(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=K(n).toVar(),i=K(t).toVar(),a=K(e).toVar(),o=q(q(3)).toVar(),s=q().toVar(),c=q().toVar(),l=q().toVar();return s.assign(c.assign(l.assign(q(K(3735928559)).add(o.shiftLeft(q(2))).add(q(13))))),s.addAssign(q(a)),c.addAssign(q(i)),l.addAssign(q(r)),VM(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=K(r).toVar(),a=K(n).toVar(),o=K(t).toVar(),s=K(e).toVar(),c=q(q(4)).toVar(),l=q().toVar(),u=q().toVar(),d=q().toVar();return l.assign(u.assign(d.assign(q(K(3735928559)).add(c.shiftLeft(q(2))).add(q(13))))),l.addAssign(q(s)),u.addAssign(q(o)),d.addAssign(q(a)),BM(l,u,d),l.addAssign(q(i)),VM(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=K(i).toVar(),o=K(r).toVar(),s=K(n).toVar(),c=K(t).toVar(),l=K(e).toVar(),u=q(q(5)).toVar(),d=q().toVar(),f=q().toVar(),p=q().toVar();return d.assign(f.assign(p.assign(q(K(3735928559)).add(u.shiftLeft(q(2))).add(q(13))))),d.addAssign(q(l)),f.addAssign(q(c)),p.addAssign(q(s)),BM(d,f,p),d.addAssign(q(o)),f.addAssign(q(a)),VM(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`}]})]),GM=aO([U(([e,t])=>{let n=K(t).toVar(),r=q(WM(K(e).toVar(),n)).toVar(),i=Fg().toVar();return i.x.assign(r.bitAnd(K(255))),i.y.assign(r.shiftRight(K(8)).bitAnd(K(255))),i.z.assign(r.shiftRight(K(16)).bitAnd(K(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=K(n).toVar(),i=K(t).toVar(),a=q(WM(K(e).toVar(),i,r)).toVar(),o=Fg().toVar();return o.x.assign(a.bitAnd(K(255))),o.y.assign(a.shiftRight(K(8)).bitAnd(K(255))),o.z.assign(a.shiftRight(K(16)).bitAnd(K(255))),o}).setLayout({name:`mx_hash_vec3_1`,type:`uvec3`,inputs:[{name:`x`,type:`int`},{name:`y`,type:`int`},{name:`z`,type:`int`}]})]),KM=aO([U(([e])=>{let t=J(e).toVar(),n=K().toVar(),r=K().toVar(),i=G(AM(t.x,n)).toVar(),a=G(AM(t.y,r)).toVar(),o=G(UM(i)).toVar(),s=G(UM(a)).toVar();return LM(G(jM(NM(WM(n,r),i,a),NM(WM(n.add(K(1)),r),i.sub(1),a),NM(WM(n,r.add(K(1))),i,a.sub(1)),NM(WM(n.add(K(1)),r.add(K(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=Y(e).toVar(),n=K().toVar(),r=K().toVar(),i=K().toVar(),a=G(AM(t.x,n)).toVar(),o=G(AM(t.y,r)).toVar(),s=G(AM(t.z,i)).toVar(),c=G(UM(a)).toVar(),l=G(UM(o)).toVar(),u=G(UM(s)).toVar();return RM(G(MM(NM(WM(n,r,i),a,o,s),NM(WM(n.add(K(1)),r,i),a.sub(1),o,s),NM(WM(n,r.add(K(1)),i),a,o.sub(1),s),NM(WM(n.add(K(1)),r.add(K(1)),i),a.sub(1),o.sub(1),s),NM(WM(n,r,i.add(K(1))),a,o,s.sub(1)),NM(WM(n.add(K(1)),r,i.add(K(1))),a.sub(1),o,s.sub(1)),NM(WM(n,r.add(K(1)),i.add(K(1))),a,o.sub(1),s.sub(1)),NM(WM(n.add(K(1)),r.add(K(1)),i.add(K(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`}]})]),qM=aO([U(([e])=>{let t=J(e).toVar(),n=K().toVar(),r=K().toVar(),i=G(AM(t.x,n)).toVar(),a=G(AM(t.y,r)).toVar(),o=G(UM(i)).toVar(),s=G(UM(a)).toVar();return LM(Y(jM(PM(GM(n,r),i,a),PM(GM(n.add(K(1)),r),i.sub(1),a),PM(GM(n,r.add(K(1))),i,a.sub(1)),PM(GM(n.add(K(1)),r.add(K(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=Y(e).toVar(),n=K().toVar(),r=K().toVar(),i=K().toVar(),a=G(AM(t.x,n)).toVar(),o=G(AM(t.y,r)).toVar(),s=G(AM(t.z,i)).toVar(),c=G(UM(a)).toVar(),l=G(UM(o)).toVar(),u=G(UM(s)).toVar();return RM(Y(MM(PM(GM(n,r,i),a,o,s),PM(GM(n.add(K(1)),r,i),a.sub(1),o,s),PM(GM(n,r.add(K(1)),i),a,o.sub(1),s),PM(GM(n.add(K(1)),r.add(K(1)),i),a.sub(1),o.sub(1),s),PM(GM(n,r,i.add(K(1))),a,o,s.sub(1)),PM(GM(n.add(K(1)),r,i.add(K(1))),a.sub(1),o,s.sub(1)),PM(GM(n,r.add(K(1)),i.add(K(1))),a,o.sub(1),s.sub(1)),PM(GM(n.add(K(1)),r.add(K(1)),i.add(K(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`}]})]),JM=aO([U(([e])=>HM(WM(K(kM(G(e).toVar())).toVar()))).setLayout({name:`mx_cell_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=J(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar()))}).setLayout({name:`mx_cell_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=Y(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar(),K(kM(t.z)).toVar()))}).setLayout({name:`mx_cell_noise_float_2`,type:`float`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=X(e).toVar();return HM(WM(K(kM(t.x)).toVar(),K(kM(t.y)).toVar(),K(kM(t.z)).toVar(),K(kM(t.w)).toVar()))}).setLayout({name:`mx_cell_noise_float_3`,type:`float`,inputs:[{name:`p`,type:`vec4`}]})]),YM=aO([U(([e])=>{let t=K(kM(G(e).toVar())).toVar();return Y(HM(WM(t,K(0))),HM(WM(t,K(1))),HM(WM(t,K(2))))}).setLayout({name:`mx_cell_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`float`}]}),U(([e])=>{let t=J(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar();return Y(HM(WM(n,r,K(0))),HM(WM(n,r,K(1))),HM(WM(n,r,K(2))))}).setLayout({name:`mx_cell_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec2`}]}),U(([e])=>{let t=Y(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar(),i=K(kM(t.z)).toVar();return Y(HM(WM(n,r,i,K(0))),HM(WM(n,r,i,K(1))),HM(WM(n,r,i,K(2))))}).setLayout({name:`mx_cell_noise_vec3_2`,type:`vec3`,inputs:[{name:`p`,type:`vec3`}]}),U(([e])=>{let t=X(e).toVar(),n=K(kM(t.x)).toVar(),r=K(kM(t.y)).toVar(),i=K(kM(t.z)).toVar(),a=K(kM(t.w)).toVar();return Y(HM(WM(n,r,i,a,K(0))),HM(WM(n,r,i,a,K(1))),HM(WM(n,r,i,a,K(2))))}).setLayout({name:`mx_cell_noise_vec3_3`,type:`vec3`,inputs:[{name:`p`,type:`vec4`}]})]),XM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar(),c=G(0).toVar(),l=G(1).toVar();return rC(o,()=>{c.addAssign(l.mul(KM(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`}]}),ZM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar(),c=Y(0).toVar(),l=G(1).toVar();return rC(o,()=>{c.addAssign(l.mul(qM(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`}]}),QM=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar();return J(XM(s,o,a,i),XM(s.add(Y(K(19),K(193),K(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`}]}),$M=U(([e,t,n,r])=>{let i=G(r).toVar(),a=G(n).toVar(),o=K(t).toVar(),s=Y(e).toVar();return X(Y(ZM(s,o,a,i)).toVar(),G(XM(s.add(Y(K(19),K(193),K(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`}]}),eN=aO([U(([e,t,n,r,i,a,o])=>{let s=K(o).toVar(),c=G(a).toVar(),l=K(i).toVar(),u=K(r).toVar(),d=K(n).toVar(),f=K(t).toVar(),p=J(e).toVar(),m=Y(YM(J(f.add(u),d.add(l)))).toVar(),h=J(m.x,m.y).toVar();h.subAssign(.5),h.mulAssign(c),h.addAssign(.5);let g=J(J(J(G(f),G(d)).add(h)).toVar().sub(p)).toVar();return W(s.equal(K(2)),()=>Av(g.x).add(Av(g.y))),W(s.equal(K(3)),()=>Gv(Av(g.x),Av(g.y))),Zv(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=K(c).toVar(),u=G(s).toVar(),d=K(o).toVar(),f=K(a).toVar(),p=K(i).toVar(),m=K(r).toVar(),h=K(n).toVar(),g=K(t).toVar(),_=Y(e).toVar(),v=Y(YM(Y(g.add(p),h.add(f),m.add(d)))).toVar();v.subAssign(.5),v.mulAssign(u),v.addAssign(.5);let y=Y(Y(Y(G(g),G(h),G(m)).add(v)).toVar().sub(_)).toVar();return W(l.equal(K(2)),()=>Av(y.x).add(Av(y.y)).add(Av(y.z))),W(l.equal(K(3)),()=>Gv(Gv(Av(y.x),Av(y.y)),Av(y.z))),Zv(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`}]})]),tN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=G(1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();l.assign(Wv(l,n))})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_float_0`,type:`float`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),nN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=J(1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();W(n.lessThan(l.x),()=>{l.y.assign(l.x),l.x.assign(n)}).ElseIf(n.lessThan(l.y),()=>{l.y.assign(n)})})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_vec2_0`,type:`vec2`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),rN=U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=J(e).toVar(),o=K().toVar(),s=K().toVar(),c=J(AM(a.x,o),AM(a.y,s)).toVar(),l=Y(1e6,1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{let n=G(eN(c,e,t,o,s,i,r)).toVar();W(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)})})}),W(r.equal(K(0)),()=>{l.assign(vv(l))}),l}).setLayout({name:`mx_worley_noise_vec3_0`,type:`vec3`,inputs:[{name:`p`,type:`vec2`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]}),iN=aO([tN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=G(1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();u.assign(Wv(u,a))})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_float_1`,type:`float`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),aN=aO([nN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=J(1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();W(a.lessThan(u.x),()=>{u.y.assign(u.x),u.x.assign(a)}).ElseIf(a.lessThan(u.y),()=>{u.y.assign(a)})})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_vec2_1`,type:`vec2`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),oN=aO([rN,U(([e,t,n])=>{let r=K(n).toVar(),i=G(t).toVar(),a=Y(e).toVar(),o=K().toVar(),s=K().toVar(),c=K().toVar(),l=Y(AM(a.x,o),AM(a.y,s),AM(a.z,c)).toVar(),u=Y(1e6,1e6,1e6).toVar();return rC({start:-1,end:K(1),name:`x`,condition:`<=`},({x:e})=>{rC({start:-1,end:K(1),name:`y`,condition:`<=`},({y:t})=>{rC({start:-1,end:K(1),name:`z`,condition:`<=`},({z:n})=>{let a=G(eN(l,e,t,n,o,s,c,i,r)).toVar();W(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)})})})}),W(r.equal(K(0)),()=>{u.assign(vv(u))}),u}).setLayout({name:`mx_worley_noise_vec3_1`,type:`vec3`,inputs:[{name:`p`,type:`vec3`},{name:`jitter`,type:`float`},{name:`metric`,type:`int`}]})]),sN=U(([e])=>{let t=e.y,n=e.z,r=Y().toVar();return W(t.lessThan(1e-4),()=>{r.assign(Y(n,n,n))}).Else(()=>{let i=e.x;i=i.sub(bv(i)).mul(6).toVar();let a=K(zv(i)),o=i.sub(G(a)),s=n.mul(t.oneMinus()),c=n.mul(t.mul(o).oneMinus()),l=n.mul(t.mul(o.oneMinus()).oneMinus());W(a.equal(K(0)),()=>{r.assign(Y(n,l,s))}).ElseIf(a.equal(K(1)),()=>{r.assign(Y(c,n,s))}).ElseIf(a.equal(K(2)),()=>{r.assign(Y(s,n,l))}).ElseIf(a.equal(K(3)),()=>{r.assign(Y(s,c,n))}).ElseIf(a.equal(K(4)),()=>{r.assign(Y(l,s,n))}).Else(()=>{r.assign(Y(n,s,c))})}),r}).setLayout({name:`mx_hsvtorgb`,type:`vec3`,inputs:[{name:`hsv`,type:`vec3`}]}),cN=U(([e])=>{let t=Y(e).toVar(),n=G(t.x).toVar(),r=G(t.y).toVar(),i=G(t.z).toVar(),a=G(Wv(n,Wv(r,i))).toVar(),o=G(Gv(n,Gv(r,i))).toVar(),s=G(o.sub(a)).toVar(),c=G().toVar(),l=G().toVar(),u=G().toVar();return u.assign(o),W(o.greaterThan(0),()=>{l.assign(s.div(o))}).Else(()=>{l.assign(0)}),W(l.lessThanEqual(0),()=>{c.assign(0)}).Else(()=>{W(n.greaterThanEqual(o),()=>{c.assign(r.sub(i).div(s))}).ElseIf(r.greaterThanEqual(o),()=>{c.assign(L_(2,i.sub(n).div(s)))}).Else(()=>{c.assign(L_(4,n.sub(r).div(s)))}),c.mulAssign(1/6),W(c.lessThan(0),()=>{c.addAssign(1)})}),Y(c,l,u)}).setLayout({name:`mx_rgbtohsv`,type:`vec3`,inputs:[{name:`c`,type:`vec3`}]}),lN=U(([e])=>{let t=Y(e).toVar(),n=Ig(G_(t,Y(.04045))).toVar();return oy(Y(t.div(12.92)).toVar(),Y($v(Gv(t.add(Y(.055)),Y(0)).div(1.055),Y(2.4))).toVar(),n)}).setLayout({name:`mx_srgb_texture_to_lin_rec709`,type:`vec3`,inputs:[{name:`color`,type:`vec3`}]}),uN=(e,t)=>{e=G(e),t=G(t);let n=J(t.dFdx(),t.dFdy()).length().mul(.7071067811865476);return uy(e.sub(n),e.add(n),t)},dN=(e,t,n,r)=>oy(e,t,n[r].clamp()),fN=(e,t,n=ub())=>dN(e,t,n,`x`),pN=(e,t,n=ub())=>dN(e,t,n,`y`),mN=(e,t,n,r,i)=>oy(e,t,uN(n,r[i])),hN=(e,t,n,r=ub())=>mN(e,t,n,r,`x`),gN=(e,t,n,r=ub())=>mN(e,t,n,r,`y`),_N=(e=1,t=0,n=ub())=>n.mul(e).add(t),vN=(e,t=1)=>(e=G(e),e.abs().pow(t).mul(e.sign())),yN=(e,t=1,n=.5)=>G(e).sub(n).mul(t).add(n),bN=(e=ub(),t=1,n=0)=>KM(e.convert(`vec2|vec3`)).mul(t).add(n),xN=(e=ub(),t=1,n=0)=>qM(e.convert(`vec2|vec3`)).mul(t).add(n),SN=(e=ub(),t=1,n=0)=>(e=e.convert(`vec2|vec3`),X(qM(e),KM(e.add(J(19,73)))).mul(t).add(n)),CN=(e=ub(),t=1)=>iN(e.convert(`vec2|vec3`),t,K(1)),wN=(e=ub(),t=1)=>aN(e.convert(`vec2|vec3`),t,K(1)),TN=(e=ub(),t=1)=>oN(e.convert(`vec2|vec3`),t,K(1)),EN=(e=ub())=>JM(e.convert(`vec2|vec3`)),DN=(e=ub(),t=3,n=2,r=.5,i=1)=>XM(e,K(t),n,r).mul(i),ON=(e=ub(),t=3,n=2,r=.5,i=1)=>QM(e,K(t),n,r).mul(i),kN=(e=ub(),t=3,n=2,r=.5,i=1)=>ZM(e,K(t),n,r).mul(i),AN=(e=ub(),t=3,n=2,r=.5,i=1)=>$M(e,K(t),n,r).mul(i),jN=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(z_(n,n).sub(z_(r,r)))),a}),MN=class extends fj{static get type(){return`PointLightNode`}constructor(e=null){super(e),this.cutoffDistanceNode=Z(0).setGroup(Qg),this.decayExponentNode=Z(0).setGroup(Qg)}update(e){let{light:t}=this;super.update(e),this.cutoffDistanceNode.value=t.distance,this.decayExponentNode.value=t.decay}setup(e){let{colorNode:t,cutoffDistanceNode:n,decayExponentNode:r,light:i}=this,a=e.context.lightingModel,o=vj(i).sub(Xb),s=o.normalize(),c=pj({lightDistance:o.length(),cutoffDistance:n,decayExponent:r}),l=t.mul(c),u=e.context.reflectedLight;a.direct({lightDirection:s,lightColor:l,reflectedLight:u},e.stack,e)}},NN=class extends fj{static get type(){return`DirectionalLightNode`}constructor(e=null){super(e)}setup(e){super.setup(e);let t=e.context.lightingModel,n=this.colorNode,r=yj(this.light),i=e.context.reflectedLight;t.direct({lightDirection:r,lightColor:n,reflectedLight:i},e.stack,e)}},PN=new N,FN=new N,IN=null,LN=class extends fj{static get type(){return`RectAreaLightNode`}constructor(e=null){super(e),this.halfHeight=Z(new M).setGroup(Qg),this.halfWidth=Z(new M).setGroup(Qg)}update(e){super.update(e);let{light:t}=this,n=e.camera.matrixWorldInverse;FN.identity(),PN.copy(t.matrixWorld),PN.premultiply(n),FN.extractRotation(PN),this.halfWidth.value.set(t.width*.5,0,0),this.halfHeight.value.set(0,t.height*.5,0),this.halfWidth.value.applyMatrix4(FN),this.halfHeight.value.applyMatrix4(FN)}setup(e){super.setup(e);let t,n;e.isAvailable(`float32Filterable`)?(t=gb(IN.LTC_FLOAT_1),n=gb(IN.LTC_FLOAT_2)):(t=gb(IN.LTC_HALF_1),n=gb(IN.LTC_HALF_2));let{colorNode:r,light:i}=this,a=e.context.lightingModel,o=vj(i),s=e.context.reflectedLight;a.directRectArea({lightColor:r,lightPosition:o,halfWidth:this.halfWidth,halfHeight:this.halfHeight,reflectedLight:s,ltc_1:t,ltc_2:n},e.stack,e)}static setLTC(e){IN=e}},RN=class extends fj{static get type(){return`SpotLightNode`}constructor(e=null){super(e),this.coneCosNode=Z(0).setGroup(Qg),this.penumbraCosNode=Z(0).setGroup(Qg),this.cutoffDistanceNode=Z(0).setGroup(Qg),this.decayExponentNode=Z(0).setGroup(Qg)}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){let{coneCosNode:t,penumbraCosNode:n}=this;return uy(t,n,e)}setup(e){super.setup(e);let t=e.context.lightingModel,{colorNode:n,cutoffDistanceNode:r,decayExponentNode:i,light:a}=this,o=vj(a).sub(Xb),s=o.normalize(),c=s.dot(yj(a)),l=this.getSpotAttenuation(c),u=pj({lightDistance:o.length(),cutoffDistance:r,decayExponent:i}),d=n.mul(l).mul(u),f=e.context.reflectedLight;t.direct({lightDirection:s,lightColor:d,reflectedLight:f},e.stack,e)}},zN=class extends RN{static get type(){return`IESSpotLightNode`}getSpotAttenuation(e){let t=this.light.iesMap,n=null;return n=t&&t.isTexture===!0?gb(t,J(e.acos().mul(1/Math.PI),0),0).r:super.getSpotAttenuation(e),n}},BN=class extends fj{static get type(){return`AmbientLightNode`}constructor(e=null){super(e)}setup({context:e}){e.irradiance.addAssign(this.colorNode)}},VN=class extends fj{static get type(){return`HemisphereLightNode`}constructor(e=null){super(e),this.lightPositionNode=gj(e),this.lightDirectionNode=this.lightPositionNode.normalize(),this.groundColorNode=Z(new P).setGroup(Qg)}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=oy(n,t,ix.dot(r).mul(.5).add(.5));e.context.irradiance.addAssign(i)}},HN=class extends fj{static get type(){return`LightProbeNode`}constructor(e=null){super(e);let t=[];for(let e=0;e<9;e++)t.push(new M);this.lightProbe=Sx(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=jN(ax,this.lightProbe);e.context.irradiance.addAssign(t)}},UN=class{parseFunction(){console.warn(`Abstract function.`)}},WN=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};WN.isNodeFunction=!0;var GN=/^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i,KN=/[a-z_0-9]+/gi,qN=`#pragma main`,JN=e=>{e=e.trim();let t=e.indexOf(qN),n=t===-1?e:e.slice(t+12),r=n.match(GN);if(r!==null&&r.length===5){let i=r[4],a=[],o=null;for(;(o=KN.exec(i))!==null;)a.push(o);let s=[],c=0;for(;c9bKA(WDEwFCTYI-iusI@_6l~ZNV3N)M{%Z0J2+85>Ip4kSEANUk-IGI4PlrJ;p2SJ^E!uF?4ZIp8@%X>cW)g>? zAJ3y|GL5oejM4s=k9+vbmkGL0|Lf(*oM6lB+G1a>jOi2~LMD9C~t?nJ?u!uLWP`Ddb_Ad@L5 zLey4=&LG3d$=DrYS?j?AbcUbv4QoRuoQ&L~I2pScD-=T~oV&|(KORrqgk^5oI~;m| zC)tR#nM1l6j=Uf|nns>VJMITK%1(pfh?TlOF<`P)d*{%J++nz!j4s_YmGH|Bfrra1 z@XQQ@dx99p$z&9G5_DR9 z9(&nw5>Ht{Lk;&K3&NB_&j-*+y!~l1V@*4oLMKVw<-R+{iAzBpkAV(DJjRjg+v$kF zct7)CPDSr0l{=6WOS?*-aoa0xgG`qNC!xz~rz)DL1B`8;6}IoIg6jV<33JU z>76<3x!yxJ;BB;F&rJi5uB%Jedk`zr%^2b^ngvN583VOHXE*{l4f=_jEGhhta|Z8@ zTtA+lxonZoB1&bH)!}cqG4@p(h-3i<9LiS-rTPN0cmOC5$q+{WktLDus0nH za3bfGg8M-pEF1lC$x%ivCqWLXO<`xkak7lr0`{ik$(cKmpuZNdx18v^^Yaq+mKnZY zPFQ>a`(#0~g)(3fnfTojw6!0)Jf?L!8Nt3A&D``FFS02oIS*6VcPHsI#71voANJjB zJPpIEcuaR08}O?s><1B!qdbLczx5I0auv4BVZ#o+|QU353ulI8Cunse(QT2U88Z zKkZ{3d7&e9#9;wKoAhKt(fZ1HPg)U~V-)%Xma1L%e#8K7l(9p@^)fydb-N*Pw37zT z22NgNQ9W8;7DQ8ilI_!Y5_2LtqE*dsqOx3#fDC}Pl!h*aT;V~8Da|*gy=Dt+;uc`* zkRQ&TtAn)hawj@Mk%$EafB5)R1KI>1czgIUz==8#zD(EPYzcqnh?6M8$s`V4zHp8P zus;pMBiF-wVvX4nbd!9mU2Wit6Pbfm2(7gZ-u$R!C$(ff6c2X=eg&{=2#4ZSS;7-GglpaJww!v8~Uk7l2 zqc}*_0tq@mPc@CX3NZs+42}XE`igQtFu35QRE{anp?7r@!vQW}0b)1^61EcEQ1M>f z$r@ZEzIe2TmCZUohl3#X+{9-Kqfes=&TxK>o(>3V61vOFhN5y52XWT*5{wmx^Wgyw;%Ps`l1He+LAp+JYHb2uBR92eI9NvRIPmu4$?`+$4*5FI z1pFXz=L$ZT@GI>43Vx8m;br&a^x~XRff zldWztpyH}IV4bO^2s%+8KFUJJa|v~$;WTuUr-)IbAYmb4Y{KC*UCX9{yAfvJYUpoY( z+C!sPZlqnWzI5P-umOGA27@q7fzsn6*9#(5$X|U1mW#XwN69qJrel`N1v2^c=HiB- zx)}8&Ts7}d!Y*bw2^n>g=;Q*9Pm9K8K8EAd?x{^9cXq9IN8{`?I?HH;lyd1N;=b_t z9FDKGyDaX&u{%xEz>W68sbVAdAK*B_ZiW+cy|)Eet#}D4*dE&kPUUGC@b%3i^R1&u zb%C!Dz%OG^ce;BI-n!wyTr&so7LS8;GQtT~WHp@R!CIm3#(AWo_2+PM*zHc@+*SDT z98S)UPR>uRzc6Y(gA*@Ki^yg)fRh1RyFhRGdqFmKC)yS|nlOY03OGm|gbxv%M1=?8 zEK`{EgRoDqK3=FUb>W0Ee;Q-^PQm=5#rF{A@kSRPCJIdtn-IG*k&-R3u}UE?a;I9U zmvInf^wM%hmO{YUkYo-g(G#>}9uQnHB{`(H?IP5IqU3s^6%@4iy|<1q3wp;>XeaCC zK!GwW&R@3gv5qb@6sC53oyH4DL`xx5 z>V^WYQvjA@9o_)7xxERCTqbd!PrnY4WAgT#L4#m^vu@- z4YO8s%8EXXW4=yUIbA#?G=<;t7|czcVjTw=PjD238Q(-B4$AM7lL1GZ1w?wWmTzgG z&#{}}G}G`sg&!AWpBd=&>_d+4ULEh{dNCEf$X}go0Z-g06+~i^fkw3d8t|B++7}Zj zxPN>m3Hewj`!p<sLc6?1YO|) zPOwhLE*1niQX?2f1ds$=Zg)TCQMTgmd92B}DQ#`|}36nm^W9VH# z!|U5|pdr@w%*C7{DH$^mBaa~hcCs0`A;WPItAW}d=%}^oPFQtp77WaMpkdbX^$#ib zoXmS@V7dbhvzBkd>bo4pWa;V!4isW7*Okb%Oo=4Hz%2&`ZY}SWwY1yquAv4TmAR4c zCMIQ@4Gi2`UXSIyj>+9ggD(aWzLsZr2xmc*TSyH!3z8&Gu+R3LA&3m&ELfNtAsgsP zqAmk{2KX4@`DGH{WAk3{*o8BqD3JhvAI_#>7EHpWA=_z6uvuRX)(PEIz@DJ9V-vq# zz(7k-L}@1`e!T!6&ha!$+%Qj1x8NMl@;8n;11jF2#sKT*e;v+aV_0f%9_MKJ-5s3A z`Fcq@A*G~2lc_sBq`( zS1jj;iSKIqgHr}n7ZaB8BWGtH4@Gn-hJ25J2$gw4HJW4`Z%n8Sf@rD3@!bN>&s$b`)%V`E0@Yln~l=cKG7}*bp`tPy8v7adk-bVQrZ2CmhCA2E6IKD;Hi?bT>=} za1micAZ8QDSrARrr{(v}wKVH;{JKn2D306G(d%Nl9f|HH-g@qqj$Y5*fQuv>#lyrU zieF6&u;;=>sx-m=1zb$C$u#R`$<$Na_+JNb*|#t+KmG;|?zOk4$Z$O+oP> zGr@JZJYhV}3@%R?*BlO00xCAR2Y*dnpB%btnxa3Zg*e8hVxJ&0oJ8WZej90!bt?2>prMQJP;Uot zb$HM_zB)WS?_C{V@7H@8cmEz!EP>lP{1btHJn5crNqGcU$9tVMg?^k-xRx=-6hc}t z#EFI&GDNS_z25KHwS`^N>$}QfTRQS6hivP}lN@qeN1htUdalyPJk}VRJssOzGaoc9TGZSazJ2!F0*j#el-sSba4*$sEhh(W7b`0Dh z$6bEBy58^A_bx9#8p~$iz&F?M4-DOHT<`Y|K3^NS88(p(9l6XQjS=WmEhJV zxisDS(i~BEcN7d1#X6=%o46JQI0dFM8e%ZhhMwN5OeAjaTre48*)MlTDv2r z1Q@y=Hifc1GD6ujVdp|X>YCvs#ocK?BTB#AHM9;_K{PZav;(+`GgmVa**^rncAq&S z{>FNuwUgo)LxFrO%qY~5f{ioib~_z|8@cX4*Tb9}IrdmY*(6;6*DCh1xOY@zx28Gd zl*`xq1QJX#w;!s^#~ls&(G8~xwby|zRulJO1Z)-WkERhKx(Arm8LTjucry74sOGkzaImukk?{3kqS8juVa zRGN=Gj1}Omn~dWq@KVMLT~DAp2@Oeh=2MWGxVIyaIyXi}CJLbS^lA+2y1A=!=uVP= zU+BY-$Bfze;&JHOyd55LOm~E_&eskvpzto#l;EzLO%pdW?sIkx3a?0Y=w`0>ph`a= zfGlqZ@sM$_X$G+`z@`<%ApzqA$J#yP?S#XO?fKAwZWbr*5EmM^&MpKxXK|Q42t?k( zDj=8yyJNEh_ZbJ99k>=?vjZ0t97Mx)j`-66o}h@fMC5I&8*sgMPULM&NX%%$0Jmd{d1ByfiAxQ5jld_N8@a+zLp8sD0oT*M zNs0yo`0&xRlBvOm;3*~YbwH8DTI2(UEL0Z zZBQ5Kp@1t3j-CLe$_%0_%T2|hb|N8axkN5}h=_GM_6>XBz629Zd(F0OTjCO|BkRp= ziOCF1YiDOiq9Ow&!PgQ>kF;j9*_1epO=PRpQjNGUaT2}{A5xqUb3r*i=>vT1o|(d+ z27DxTi@okR$VU5dk`UnuW=3)!=kU>08>qhoF1J+2{t`Y?hLTBF%lP#rT-248U!6Mlwp09Zp|hBA)+8U=O3c%rAwSW5G5Py@Hmn%tRz>*2K6W9jof zxL(XP&NFa*wz^MyBzT6iQS9%J+#nL^9|@dHH9z;+-syuYJ&{;Z58w_L`O5GaxFNS{ zn1M?epKEq>^}yBKgV>(v5E%CWVn@ycxDjjLJCY$t<1C3M+(c7{?6K9LgIGm90^(=Y z3|uDgOFH0ACYTp}F$9+^OUp~KV$AQ=3 zBf2~j0AA0&07%_JPe9IG#&9eofLGoXfD6{Jxrh_ail3mEXx24~($1%_4}I5r7}E7jECQ1t!hGVsUT8RS|0c&i8}q*iD)ZRI;%gWB zK^XR9H<3%Za}WI>6GQY@kHpSnw#xpXG2U}LBN5T1jK&y0X6(Dug+iRh;)-#lK?z-B zD_aA8ij$BvVUI$Iu!0e;8T3Q!@*cdshdyy9VzbwQemLcNzia5nF*k=FLSHSV<$}k| z^ZxA;`pg}Nb(N&z*ZR|Y=+CgneUFAT!i|AggdHJ|L+DfQ9X7U0@RX|#iST`Q)B}%l z_(xpn*6(w`X*^U4u!Vr03tO|Lga~^8!4@A1j1Z=?eIlV!VXfuqK82-bYbigaMWP%Z zJ{NF0O&a354_=@9p9M?saKIJzGw?>(dl2%bGw=$1h~C|UM|d(u)Ry3d*iF1x7{l}w z;3}RDM{>o7J@BN_@F93|OFax(gx(RZ<4G=io7~9abDk#<#q8rQh?VF%Q?Vf=}n*2k8VS zshFU9l2W6MUr1>)Ml5>Z$38y-ukOK*nf3152kOLX3Yp=Qg@ zU=J|FnG#qs&W91QB|~u+IpqvFr0{8yP_t^muOCpbIaHsn8H}x(jyh!7`o1Svacr5C z<#A4MCTx$wx+7)E+u<6abAsTzRxK!e0mCrv^F{Hg1H&+7;m?OO%snOkID}#1E>q9t z*YSr37&7zv>k;R1j(a-jP%gE? zK8(2c;MoHNk-qb~GOl|2K>-VI)}NLNfAI7^J0{6EVTFJlO5MLXsa?(pDE7E-x#xze z{`XxC*PZqW8#Gbq<1PezBOLZ1NCF?Ho}^3z19Wn6#TJMGy&eVLgIo;b9t4s*xF6C8 z;|?xagmDL_L%3%d-W@{d_PI&GatR@hhJ62=&3LT)HzOtlo2GK|KlNl>&HVcwgw$SI zKm3RH49MzaNQFGh=xed=?<8c!<-hV|Ft* zzUS~f2k`zLLOP#p@5g5la#}TcVUvJzFL zBo5Zg5-c^mZgp*!VZB*G{gjZ#G#Vy`gOQkrrtWzyauQ135ZHV65>$d z&E<8iA&5AgE_FU0bAscC%!~wutxI!=XvtkNOO{c1zsj2!pPla-dqeR~(Y#0^Vw1ql8BtA@7o`#x6tUZ;2=U zHMoB3{7BHrWMnSj!9I**W`D|A#*g=1C{ujkacHTS`BiRAep~z7>%i?6nghnX^BJfA^SY{;ISK}5{RiMWv!I;4P;@pwv26xiCQFlHgl7Pbc9#}3PPnZyfL&_{^q z20RLRSCR#X7~-)^K$UDP5+HGOeGvdDDGLNdiOF065@%C)1`)sVe(sT=;ut^lAexSe zEQIpLtOvmv#I!>uIeF-Fu(}ogG2|eF4%~}`ijGP=7nnS0==34x*2(NVn*pck zUwRO0hRIBg5|fg@GLpLwaq4y5c_y7OM;8<%9Q+0>`u9|ro=+&iP=JmvAf^UHYz%um z#%!Ef?++j*zTbSo?A@~{a}?tjIrjo4ZsPXikllqB_cWd}OlAbQBT>04>p~(pTYAhO z)P9)(4nfKrXAd;2ON^EeF!7|F#{NA_lri(#@cq3H6T>!{W$M6WoZzuuY;*_{W;V>` z<$^^O4|3gu37>3ZtsnO#T&?!^3V4~|SrGGy|69T3vj1$t%<=lFkZM=F%K^yH@;GD?G&B+MvFM#GH8MoXA*Gh-I-0TT#tmTm@#P?rprB+La<(LIX@ z@!97NkPG-EQS$K_B*y7?xKIF1FLFS^p`c6eW+JNHGR88E9LRwLiJQm;Bv?s;!lj66 z<%|{*D9V`-P_cd9-}jKY0j*<049^;Gl;vN!%|BQP;wI!^q86+7uxxRpu-dvT_DTCib zO3qesNcJJ+21M*2U5dC^Yn=y3mCW(+p2w6DleKG~!{rs@KtOoQ4{4km(6OF&Gzc}R zV+T+NQY=@-XbCBv1dJSgxQDbraCSI^G%pyw91&Q8ecj4|En1RV^k>>*k=#9iK!ZVc ziut5OGX}VlwqXf{X#D=72U53pKLerko6{iE(#`K7<@RuF>Fmq6xhArGNU2M{;suu) zL}#+cOGslOl-YZLbnQ;D>`CC!4l{b}6VQl~4?a5&_dxj~wgrZeQfsu7S)(y_=K@k8 z#hT3^O>PnzosOcF9J?!BOid2D}1*|Co?EGl)W&<&M65b=3Z4-lT)h3lOW?o4r%zDTz&Z3KcEo9;*K%07i(}%ZV5t|KRnJLlgfzeAxwn;{%@FS zws2oXOkJD03jtFH#FwFfab9u(Q*QIc=HLPN6>!>zsl3*m4QYh+@Q6hiyLB~$ndX_g zzZB6+oe4{NAj^6OvZOB{%lS-#SxnuR<48V|aWsM%4r3`~JGqCMvioA=aKS-}6u#}k zj694g&Yb%Pm=UJ>I=;x?Rv78r7x>E@H_p~SLlZkMw!Kw+FV3=fEYH#-g~>4y_X@N2 zqTO4CJI#sezbe#OFwrwTD$Es5<8Z3(aSGFQ2ZDg!-z%tY&BjRXgF;FXt18BLd{6_& z6WQ}i1?Cl=?ZbS?Rcc=jX_&8Kd;oKC&sEEHe5RoKArWeDu7GeED2RsFc^CEjB`o;D z_}W{QA#(2Q_71Xl?jUi#ogN-t@7Cb#( zt__!+^WFLi0_U4V5s=Li^eCE#d4k3YT<6Z^j}zZP?A-ZSL{i7b4e%VhRk!l52Bh@2 z2_F4zK}dhwFr~j+;M3o27|`Dxn2_H_4aW4>h7tX(!;tSTfr1ZBA9{p`Vm^pVuhIj{49;z}O z;T`yybLX?Si>kz#d|x0y}WQ0yaFbKpQ$V(5k^b zgVf8cxB-`$QzzT@D095fP1A3#@6&f7#S7sj3|aYGHVRVI3pp%x z9A_2>{zmQ3KTCPkw^jLNh_j8z$zfhbH~3c1N#i%SWgr1W?(K_jEmB1* z^fbNb07_{SYUP)MI4QC6YLGY)V&(%cvscN>tWqgQH`y&BriZjqfXgpsdC@csSF07A zWX@f!hH5sd)lsd1YE4vYp;{Z&woq*w)pk(LMYTSvd8p>28b-ANvTMk;kzGf21KCYv zw~*aN_7<|Yk-dX#7ukJed&u^YjgdV-^%|<%s9s0)2C6qvy@l#+RNq4NZB*Yubr;q9 zsP3V&R^&w~5>qa@)w=Lhd$lcaZBMw~t&8xju3+ zatEkiLwy_d>!{yA{U++SP`{1(Td2Q{`a7uaqJAIsJ=FJ6AEW*Nc{SwO$g3l-fxIU2 zTF7f7Zwq5wY zhkPIT82JN)YY5v2*AZ?Y+(fvAa2w$*gtrmiLD)sOkFbZZk1$4ffCe=*u+gB71`RZ5 zqCpD{+Gwza2HR+`g9a`d^wGdW10M}A8Vv5}p3X{l=&lT>nPb-*%~pF0t}=(bXNE3M zHtp>iJZ6r)UEAcKmjnJn(8gX?5+sA-h|o74m&#VNzSG=kZ`F5N-)oRPhm4*>CeI)_ zky*+pi%*G8a^FpHsl1Yd|1l%fAENR%eumJo8oP^9 z1}qpvr3i3Y%kws4Ck7uo{NGt6EB|+<5`5r=LIQy-IH{CyH7i@Cpqi97OHnn`iu{ys z26h}LdsEvjMO9qhEM--!r9RH3F4@(nY~e~|X^nU<8zBqj`Rpp~8D30E)yPWpuKi6@ zIJV4^v9xYKEwOG}^|I0OcWW(wMH`M^JJB0^w}c(qZPsDH7Pd-_YTYsh^vf@ofvpn# zuU)lU<%(U?OZ#k0&jzm09#H$$lDQMeuvTn6@7Kb-Mg}eQU-ZZpX{{1!RgLso(m!ZY ztZ^r$)6BtTewv?V702Fg*sXSJ+inPchVS`cJPk|P|H)pzer>lP`)-#Z`#(-r$s@NQ z``)(8P!fro<=3xY*UFo6$G263aAdUoN?SRZiF(vfk%lVaKXKJAJ5KG-KS{@GDp{hJ zP`51FQew@|CLoN5C0u5d@btW{4U=1xQJcD_bH{8c3rB~90oeg2xO zbPS#~S+Df7R_O#p(zQyzXqAeRj7qs%z^)fZX&hoScax}ecm4M2@DQmNJvT@Z>Sd#& zBpx%#8-2&VRNlam7f;DcN7&zRqm60w5XJLoBTk48aO18LlvirL(}?X~=0uyVYuF`0X6J-r~rUwF>0Pf;a1SbE~=C zXg9Z@YL{h(TxD8@Mt!Sorrmxjsa#bJ#+0mB?<@i58_#! zzdrQj!*pTfd^KxP$4v%*qGZ?a0>+pvUCkMNG8TWAdm;s)8Vc=tz znB7mqc=v4v@}17z51FufKgG#p_frNT`903SC)wX;KvXyr@~rURnXc!2Ct^6E@h=%Q zLm*azpIMO3{_a;T(w!vO^>_cuAjR0n{uMm{cmK$UAJBDt<@&ogBE}8Z@c|z0W)TGG zC1J-d2G{d=H;SmMmj+29=5V5c+z6hdAG>j+SulAKbvY8zG+IH2$wW5rH*Gza$i+8u z=tX&w#92(|BuKg6xAUR~^rF3RG8R}m(Q1gZ4eGQ~Qfv}Uv`Qrgb1}=p!8H8{6PzhDIX_nqc%xw7}@kuQy=j zg>i({oJDxf$}$!Zt&xv*dF92EWx+Vh6b?p9HmkqiFcj~C(E|-5XM$Ye3X7qbqEZw>6v9}g!crKjs2B}nlye=Emoth>qm~JUrD+&Z z8ngFaE2wJFcODfRI?mRq1SPPHOklKJQJ?IhRLiPNwO9$Sy?pf+C%Zf;XBx!%Fho|w zDy;NOuJUT^MkAv1jZTa56A2F=s)`9%mRFLK$~Dkfl*Za63v@;8qVx5T7dA>_9IHl^ zmnSUCb*$)Ju5)UnEUZP!RPW(9j?j{92+3<**V?cd+ss}XE%M^D^f4<%P_=EOvmsF@v9M<_h^OZ22=lcg~LCAE+Rn3ka(*_v2S<3R|Orp>n^ofjb_nRbAKSIqxi zmq(!m5slK4{`?c8rHC!*N5JXLjLI-;Yt`Ol@&Lp)S;gjuUKaCA&dsfnk7N+%Ez2Md zUG~B8oZE3Re=;PDcUD%N91>r^ zT1iD?Jp(JLxK>n=9Ep%q7LsC)GpVo+Tv<2W<+vY*D9G3=lDDPuwdzD#R7bM6lrx9itjC zu;ESZ*1-_o*tbps;Z6P4i6Ojc+&USAH_clofbgbu>!c9gv~QgV!kevI$A$1_`_}Q; zkOe-DvLIXL#+)=}tuNxt8AHBnX3=NUKVb7bVG}y0 zR|FV2hv&xia*&={p zCA5~6Da}&9b$n}F8Cbo_gl1_Gz^F2?W|axevP}TP%D`GyCRX>UTV26M()SL%-H|I3 z{cZDKoBuZX?-u{9^WPT#-M&?~L*i&f9~MvwUUT{~2b1xS985+$aWEOb%eB%K6$So#ngLTM zwA^ZJdEh&-l~zM5fPv##LDjWVm^hg=twfezNvr|k(k42WCbww~a{riSZ0y*Zlb7;5 zuH8CQYYe2FPARdxYG_4e3aH;YrPzu{cNw5TR|}BVJEhRds)>~{OpE3XsOAi z(7@KMQ;Mv#>IuyDty6NXj0`IQFm^$hR*TVuCl(WSII$so1EaVNa)1zcozrAadfEcs z;?y`}ly~b^ET$pObdT&jm02TR!E>0)z(+G{-2li3}O=<9P`B^E* zDPBM*Rk6rRCna>VpR4+srw*9Hvn<6e>nL?DOM&(qgWVv!Az?TOL&yeV*Thq-IY>q) z%v&0nBwQB8C@GaCt)ItGji3e*FV-x$TRa1dS7XWZ+0+H$hYXT1cEe8XC4RN@5?3l^ za&2T*gTz`;*%|UcZT(UqN{O7>%jnh4%cxQ*8np^OW~RlRDz%w9XSm(^-UMxONYwZjyAV!*}7+f*wyh@5Xy;RZ_mXS~16AWDS? zno1FrCJ;2$B`lqAAofb1cv`(%x*KKL zWOs9OKA)p`1I5X3)85(H*<6gWad-#1QOPKh$MiTV-Fft-zdN~+FiNv!h!HnmcJBIN z>^Q)k*Y+E zER@woNoiz|7Y4*<$qlmZk_g!VqwbgU{oc{(hwj_n{>9l@=lr1C+dH|2TAAx_F#6Ov zx$YfxPEHRGc7u{`f3Shk^~u@c#fR(O;pfYftHXoc6ldi1^LUz-T!`{k2uZ2DTIG_g zv>q;_!ixhvk5S7azZLr1;72o!v^j8#UlkbCu5qxlP;IN;*x70V+OcabduOK%U9&`DhTGgBX8KhgYC;XFsMf64TJ0UM zS!l~?}zTHf-+ud)O_@c-pgNgiv%qUY2bM41? zFbKSWdRyI~x?OJr+Ok`9+GN5_#maXVJFhW$X>e?UR&Wy>@kI={^OiI~MK7WYP>4f;9VPE9kpl`}7i8sCp=0t-mHAYuxG=u!$ zQ9*iQr+atzW|Hl)oMOY!jHiWLMDK$0R7(}_t{5*iJB9nMywXnnL!*JOP_0>Ow%%Y1 z)wZ@8J3Ec-+V*Y_%<-4Y74X zJM~=~)mkkJTNY~C?RL9LqVz1fh~OdOjz}r}V$BA5OVZ8U4_BvrXKel-pZN1`1}MX6 zR>CMvyz=+&MDQCAHr`&Jofyy8jrfHPdU&^Z`{jx9{KA5&Avu4Y`i%1_*}{y`js7 zmv=MXAMz{iMc*hL$$&j3EyjtB(ykb;73&r6`46^?v1-e^8~R~Q7df-v+&GW*Gn?bGl5z3I69Uy!m7u#syTdv^t~x7Ecn1x)L37x;JZ zZARbg=|q*vifiho)4+F#OA(8bVG)K)Buu`!wUnAP-cqMV4G|-Z{gi$2n_e3U#~`$5 zJY}V_%Hnt3i*xNFBk8H!T-b5$*mE#`uNXd@i z4+^}&%zO1LDlsH!X}P>>g3D#L!mvXCWV26`(7}>|fB#-8=%f>sA<_@&2lb4auOK;#sh9f`SILdNX!WbPK9(6vPUiVJUI>(1puqYsBoy*IU z^J7RH4+6&n*BL?V%pi4Q458D9sg}5Ne$u_TzPh;l0={#1SN@hxC&c>!_~z%0{Ds|r z{`BrABjw!Pu}I3u3cbxo(j;LVOvdgcr9w#>XK(vB+$_Tzxlx2ehZBr>;!e6wq9WH$ zAo2~5f-u90~0GAHGIC$1ln8?x_^(v8dzWF0s>9MeaaX(u`* zc2p5?LO;36!L|?%BM*}@*Hd%(wdmEDUMM@$EN0YC(np41L&hM&82^k9n@Fii>gn^| z&I_COF$^YOWU^^AalMC57z`t_$DAf_r@GMjJRyJT#`(6&k!n5;5pSv*rXbb7i6z$& zZwGyc@uQ^oP)@s}&7ZJI;jyJY zi2}!COLNNfc@-&nj96d)lqj28R4^rck-0YAG?@Mv8wc}%xo@xtNv6o$M_7c+{e(qG z-&dIZ>br}9uJd~gt8jj|VHIB6cUX%UTM+X=;ZDRkfVL~ys{_VlvLWR$V|xk|iy2!~ zpja%wO>u7e*Y+!31L+Ax;Vf1z-pDu)d17DVHITl~G5amv>^Kiu+x%FIk(lL=pm>_G6oS;0v&9?DJ>VCku6{HfZ8+o;yp8wxC3EOR=HapwzIFY&& zK2C8WVTd*OZUs5skL=4`xlw@uLo8r%ZgrMueJ1#@ri7HnWP*mBcqU$olIEkKZ@ zW7niAAj!?HNs08Y_~ob#(5BY+e*7dJ8mT|xtx=Fz)Nl= zD|Za%{9n^2Y}9Tu69Hq~3l=$J-H9%a8H5PiVC_+tZ)~aaGKM`wRD%5@9MW|VtT79**ucMp@qGv z?bN9n&Xs4E};md-CUuz9t<_cM^HJsWG|9r!j zTEmw{!&!)tWS3PjmuFXpXHQ(pb)K$L zS*>1PM&>nzafcd|UscEo)4}Re;xu29d(lz!oVO$-P7MO`N<@*@WV6s~k_8^+-N6Z- z^rL(%@S}Wu&X00lC$HSD*XPkC=ejP>`|9aGU`RU5Rb8nj<= zSfz!iBK}1uRyJr=bI_`C(0?u;47Ev`HcMmIc%r6E zGl!h!cb7)gGo3M0f8#bHJcWC9CO=-;cI{ouc{JQrB zzjEJ{7-xmHYFl=#y|ryaphe2NrAS*6nD~XwHX{g}btC)N_Pf|$S8rCVV}sE(+d8s>?rsU_e)?PQN0bGS#q=&@{cSK{VG zd;E_(=gTGtTu~DQPH)10&Z%E-B02rEl>8`sEU!11oQ+z_x!~#k!w&@*jbBSu*zmPf z^Z(V44u}!ZFuC=mVdnqfLj|H@g~-*b5c7ZbX#-KShRIc}Vdnpi=MY2-G)%4q8fO06 zPbi>A9+m8El@p4eePE%&xlwwxVC*PH^Iv;VL6pI-61*5LS@^BT7M?5dUwMcj2YAc_ z=D+<^!~b{h1(3^IiC%J8m$X}4iC%VC$Nn9!3-Bu`IS8uc)UqP|YD%a+VZ49mEdmmI z6tPDVn~T`|H{U5BjivrSvW?UO==a|+V9rG1&}QyL;+X!2-Z!8FJR}0GtgME1NQ7AO z1%!X;4FX9i4dDD=f2}}|JnE4-dGlOKM~lrxFu9O9HV|i=H3JV_NiQX(+?y z2R`}2in!sWUXZ3SvuHSqm`$KyvjviTSzN09#g|UnWIT-%^8kLMgyJqSd zD@|DV(7M<+^wM48&@=#MK$*XdvR!*c+<{2f0@~qA;;9r#tzX17Y7tkeN17fh(v)41 z(5*#GVHW9Htw__Cm0t$Jz{7@MO{W~KDYt?(E0<#3I@dH2Q#JOKEva=HWjTXOmswis zS%__9fVkum@~EebL~1Y9T4Mw5M0$)bFnvax$czg`X?{kXr~qgr?&gXu0&9CgG&(Y( zyoGE*khZZ9RT}UC$PpPiEVWyzKM<*eU`E3;RRa0m5Ib{->O-jQ=ni_}IQaW_ZTG%# zoQwl#D~V;I5cvFPuSas0+5O#UjWAVAUIj0cwaHJoWujThI@+vu9WNRp^_kp%Tqh~g zZ-0#f8JOQU%F#zl7+Py%rtAdO(D9a=t>NY$JX%03u^uz&rpPSfxh=(K!>Q#gO7Yr! z3DZ(@z_VLN*DK#Xv2n9!HZH3)N2^yLi{+-OFAJ9b6DEN=6~I5D0{ADX0RA;9fQzXB zHugL>_Z6B|gF2Wg#kiJDGJ!=%NOylpkH3P`JR@)t{g4r0Osn7qKH>iHX^tgWt>7wO z@MTnBG0w{-VmezCPYv}%>BM@0GKQK}DMOJp;V`>g%*}8!!30E{2}o9Xv$JX5*len- zQ?B?MN9!h%rX{3ZY#hbGp}WKhQ+KDrgOBKjP8D2|20bley0MiPECzXO*?lL(fI;>O~`Hg#D-t3VDFz>9gTzk1xsVK zf{*{)JT(q}ZIbqWZ<5{?dwP&Bxd(~TS}FAAP9puQ$es8o zbhF|IRHB=tQe)3TB^CZKR6_2NQyORx1x;|{k~9Mvu!)j}1nNXhLjnz|nThGkJ>SSx zu|}Rb%74k4p=Fqy7tHMZpRdlWpV#Fk$rUzOn92(3vqwx-q8@~h-47tHu)k@v%9FRm}- ziJ7k7SHzQMO+Tg?PZlaP1V3r<(p!jnL@lC@Vyl;)X7|T1B;Y)8WEfSt?A=lHf zZ-x;0*^8QbHLtgz?_u|rn1Fr#C1t3A zlQPuANhwNv^wv{viG4z9*b^Q_A$h=Fkooyxh-j*@CyJc*y z-U$Js+;T)>`}bJ@FeF?)6{b?9rK9(#^1WUtpv9rlin??jcj zG9|~j|5|>%6ScIn*{|602@VIJL?~pydlZ&dy}1(!Q>)%WLYE}tqqYf_T5>Ht zwP9r1Co3~*B5|t2vNEF}5~oTmOPWN`LLslM)1Ok8A5>EoFtWcN#f#=t*~;HQFY^}- zuj9F!`01LpfGV4Q`!@fiC)X}WivSz4%^cZCx$2N#&YpW2Sv>fsUNOzR`*J^JiszLU z&T$`>Q?1DA0|}fp*#4 za+JY0zK6XKhP`wQ#GSwu4;(@4xO6jABDQrBwrK*oU8r>7m0V79LOpwP(1@_QZ_t>! zJyhv%$4)ga@9K?%_;s$;WNc)Sks4n$q9AEkN^a>^Ot1E@99?=qL=V}^T)EhCE1B3r zN_=BQ5~^K&tVBY!OOO>v=;InKS7wx+X}%fi!V3>#a($7ETFEBgn+?mGa_4kQ@cx(;c3wp;8eMni!8ZueZjNHD$6@etv(he+zmi zT#`?zphxO8HwVwDTP4>@s<9OjX1;EfVk@f#Rzev0x>aId@yhaD&MK+pRa~k{3*|Xp zNv*IF)9d3@p6Qj;npOfUth)RzxSAv}u@!n|I-ByboKJBQ`X}r=(&c;-UXYZ|mRHm0 z=L*l~e5wYm5!$mE2SI|p?B_@RM_ZHx-@yRVUN` zj6>Of$Z70-`EAJsqMIrWeFO8r0M z8ug#>fhzuRF$Id6g-qQ58d7m46lXGVDhoynDiL2&f%s$obLCWE9jmXEy46U?!5xP$R!64#e191Rk^fw8v=r<8p*;cd(dj3W7ZNE$V4fF7VqJj#?|-7fES!Ib z&RB^?0{(GY47IX6EW|1;PH1ZhljjoF%f&3*(~qgGiVMn}JetZt`}C*PEUyZ`yZf{G z8|9oy-uhY8(_}I|O(4^IG}j?%Kb;&aQ^|v+kcmF)>`8=`E?il}mJo&H4S%yHH5e=DrI zXb%)Ng62wpz2k+IlYLrP%RYUmw-foo?Njize+wROjWt6pb17>xNtwDRKcPh8<@@;q znfdZD<7PXzHdJ51=#0wq550n}+D?LN4JSeE!>zncYb7ik8Cie>M&~%+by?dRtX&s&G1Bx%q8!ne6Ldo%i7dZlUzS0AB5Mkw;ar+57nN6R^2p~9g3wQJq`z>Wf0_rsiqvBVxiysB;9D@+2x1DF zxj~fXHw$?vTTvp)Aue7is>4`DEd}Koms$$OMrtXjbkrWx4UC;Oi4?E;yG_^<_;BzAMQL_n)aN|X3go9dg-Ow@=LuZfMMqvDnt8p`kF z;AC`&wRth7CZrmzbn!vqn$R|J0$mesjQNL2}`G)d6oEvy%? z(l@d}76pgS6q4%OtLel z%qOW@NR%wpA|EM`%es(@r0P(U>8G5f;`vqE#0iwUm#n6d`JG&oN6nYcYLqvMy!A-& zsF3Jx>3wulyQN2%MhZ0=rET^cTT+Ji(T)A%yp*^U<*h%Fm(sZ()Z6%R-Y4sA>Uk+4 z|M~v5ew_EodfQLr{h9u5{Wx!Ny}G27U;N+mwZlz9LjER5!HwkU`^>u3kYwRtdF2xP zf&nL6e+BO&=Z1-me){h%{4GRH?^xiN&}$C*ECOFe;4cyQLj?G@?9Lz)fk*@r5eRrd zeNNI%l-Gaxo8Yfqr$%j&7-^_BUb?TG_@zt4L*IhL5C*yIpopCSEi9=P2@;|@3DD92 zEeYt+06mtezK^Jqf}~6y7?9zRe7=^2<=fwc8dPN{1rNfqvPod^^6OZhx!k1oMU8&Z zkw1=i96>5Z#1nxqd0MOonNwBoaWIN31$X>Af?Redh-|U=&iJ5N*~|e&Vyv9~2Fw34 zQ zp1@ z&wfGl`iWT}&wf#%mEH)`Ybr03({eM(tI>YQbf&D}?yh)`lEIPzrm_=x!13##UN~Ts zlcDKtA!ZcMF+F_13eQG9FiiV%<}%&oMMO-ErHji`$D}B?K+-1{_EVRgA5uF;J71>8 zy#pJg!tWnxk~iCUYR(OP6SFNKde;)xw-@1ZU*`H}nC+(tM4M)7D^6s%X5{%-oM$}q z3&QX{q&sR?UkrkUki?M557#KGG>Me@b>64ll9%Kzfa|LaX|_soZ54!UWOTbIY zKbe~BI+9xOVFm1z*=@a%gsI|Pc5)Qs7xfk^n2Mv_7lDBYOhjNT0wWO^ia_sqhJdN| z$jMT*g-S0@f}v95`9c%=6gR+z(lt(Tn$d+QPg~NftbnTUx`q9c zH0;ubMm+^lds8qXyT36?(Q}f3Cyb!Ff2*V_yAI|2z%+TfpU?F#d&P;%|K;vo+uO#K z1mVwTeucB!n-L{QCUvzXGkJ3D?sGcnoFskq@x-tMN$60dnxt$ij`p{|PZjPUWjmRk zeP_2X7Evewg*#AHsFDp_x7UsvoBYeGTLxs4-=WO~6?w-NEBWM37^<4(j?lAKd`jlI z7Oo0;lrxalb@T$>ELUcq-2)hG1%yf!STky&;pTZjvUr`>wIV6vwv3tMjb&}`Q2N#N zMbU`bv`GW9Au}>3YuLMzM_~Xa>|)w1+8LR}w3)RFu$9(K$mUUuv9m{UdyO9_mQB0E zWCB*+$PE6><4v=%Y0>7a)oo@$YX&bxHZ2GhL2D|kyv$;*UVOvO5t4QT5@Z2bt!i)3 z*ib_ynaCvVFHdt4x7UvwUaB^2a!fXhH;=-{Z9dkwG;@*Tq+JAr*X13Iq4tn%s2-^A zP3t6URLHmK_+m0tyHHVyFKHdMng~(b7tW+jK=OwV<&d7`Rs4BQW&xR-qq({*zyi3r z>G{xX;NfWM2kP`3+7ae-5?=?xPz%AKSfuG1Mw#ZY|O`-7`aO@Yn)AkJ1 z+@~au8&YN{A?P&CgGnqaT|g4dkgJGodj<;f385;nf}sC14<@m!bZ}{+Ql^mQW*0(?f#1Ja-;xdP`1&STg}kdjR0_^CYuo%{{Bn3JMQ2?@p$%YsQP zD;-c$eEyt0La9n415#47MUQl30cjLK2dG8lf`}p@`AHafV@eFy+#OnVS7diUZ1O-F z={CuXB+W1-SFVhVuz)Nb5FAFy!jto?a0nF`{vsiVeX=T~}pzVn`Bc2B(O#W(@^PkK#2_90_dTFD}b+gVedT^6~X(1}`%RgWfzl?Q5Z2df-}U zaCsu7k_9Nj$2t6-#hffo2WK%Qi__z?I0Il0 zObahg!7MLXoDRXP@B*H<#vAzUgZbvgX%CDyFHT2bx_JTbvf~x}4$k7`otE70XsrE4 zXyJ*Kkw`c-HtLHO2h}nTS@SFa+6Kgi1Z+gcAOs{}7%~Qt9x0)QAfO{)PcjB^8v!Gd zF$m8HSdNTA6h=yD0uXGG5?dFnPJ)%mI0aLaXj&4o7Nv+{u$%}B!WRkH;;DF$fbE-# z_XyaUsqq*I6|BB@xKBmzQCQ^xLGR8d6*z)L`}IVVkPzDvn+#h90bS8@*g%zDX4hp- zr{z;xaQ}e_t9=@Q@6CY4zdtq#NV-3^YbmVO6|3upFSJ2F29*}@jW%empgIJ;(gu|h zRCuVZlCoKPpRNKk<%gH~Jzkga+Ys&7CG0M-H6id@P6_<(odH8v%?R*^ ztmXuM%UOZnBY`R>1-#i)(*nQs#1NrKV8cia_h)ln!wsjty>}zEI{h|E= zDzgpRDvQt%hxdIQm+RX;#Bs;I8ppjD_Ouzx<2Xh;(CRWzn+Zw5tQyHjG>xKue;lTM zXowxR_)@V2h{-KM5MYNkj{fz(VrYM{odZJL`_DyXS;6n-Hg_yx1HxoPE+7-;KF z9XVj|`b)@Zt6_|Q2%2cq;vO|=bEDcNZ*H(Lv1t-X4HytKhJV$9BNvnZ#4_PpYH=U< zuF&7lMNSyG&JDNQetubdyt?w)vH`iWS%h$Xe)zC)mBU*HjI-I8@4Q< zk{o*XnfN-!SorE<>?e{#=ROl((7QnF{p_~ljx}XpWVBVM@h!I65$0jKwfmMPz`ZSm zibG;1&VYqD;!WjwDiP<#jW`z0#HnvC4_Iq)lw66E;!>Ui7xKvUK^!kH#p!V?Plgxr z#CIJ-2atC$v_5$jL(`M1ILA`o!|xe+5kupX=P|TAVGN+XGxB4c!!wd1989C* z2N*|(kKP%f@H;vq8Ae2Bq`;4X_T&M!abnuMZe`8)t)ls3Yuer+%pBc>T(vfk`3y3ji_F2PO!K<6YQAqRn?JS| zBJ&|Y-?diF7p)~^z7Uzi&|Ej4wN}mNttI5Xkh%8(e$`q*?n}shA#(4X#UGm2t;^>7 z*0%X$>q6u{0_eNeW%EUA3%Os&+#`TLYh5;JAj}^QpKNR9nMW`$zm8ZfSsR)&4Br`?JBJi?c#Z#J= zuH|U+SU6@dveTHs$j)O1Bb&zzM>d6Dm~2cK>}SGYKf{5Y#OxFu7BLvtGk~JEB8H=S z9WxlztC+!2#Iyjj2=)C3&(q0Xe|*D@+vVsAZ}VIB0}z9hItBzi)I5XG&hqr%t!iA3|t&CK?w0NO%uI zy))Sj_*ce^AUHaceSm*uOe6}&(jzQB66MRwq`9o#xszJPNgp?GkrM}ZEDg;)VBQQB z{AIk1EoGb%cx&_UcMQHr48E=yd_6Jt`p(!Jim^8mL+?loy<>0aMPlehT`~5ck(RPS zup?7!l>yJ9ML#a!-+TyBP`+zfNM z8FIM?rg9I=)gH*@)|bkyFIQWiFciP5(YL#0>1o2B7EFmI{As~>Z{jK>HpC|UX~7U} z!k-q5zb39kVyA4vpB4<6Cj4pPcxd9^Nk!Sj=#ruCMSz#0_fieeT9|7VVUJnMkOvk? zKA2$GGR^ynq%haQm)NDmO+6l&eLMTrGg>4qKBSiSy{Zj%!!IsLTjZX~()N|}+t-v+ zV#bC;jb+_l&hKAWPF*c-EeFS%b)m5>Z^y%UriFMF3eMcxP|S+uNXdEw1R0e1^%d#jU)tY<&=c zkw|d_xwI}})y1oPW7+;70#T^auL22)M4DR;Y9zPWF*A0rMiw0F2Ht(~jtiA@xY`;6 zE)Q@}gUVPKnZYsHGOR#glS>@PaRq`KTViA=o`1D1 zyjKO=xFGF_DM&fu%*?wtEHBm|i@jv7bTWQjDtEJP$AX1pe%L6%C`2N@(>7W+Zj>z+ z$e3B&NLzUzbpLNg*Q$PPDT#zz)L*(5XT75FLZ~ z!poi%?RNb71>=M7(@UE0*})X7nDLaB?4Z~dC0l{j{7f(9(97|ZK)1yqfqsZLq>!vi z=y3c2?goJ_iDv-p38=&wO4Ja9tA*e`km6J#jbv7?>er4`>>Z8oRO1UF6IeaULIeaUbIeaUrIeaU*IeaV0IhLhm=NQt`a|~&bHiooN z8$(*GjUg>XXS*G_R7(F_@$s5m;J2<1Atth!E?RtPCvU491TU}0R=`031o zlg_dD$2cCe{GYWGGB+Nf>S*JVRm`{%NeRA@`8v~BHjvOS~~ zWNIjLQnWXqu3k@?f@56U*fLX7VSGch4*>qRy6>}tb|AV`y8`UWk|l5 zzdqJ$jWKj{@rhvV^qwU#U*xVYA-qaDlvp&r$U*e|SNIK7S{?S5I=9V-R(uDBw(mg4 zb6{5pi!7DahO+^k_RfO;)2;-?cE$c1dg>Exy_-DG-D9876q|s#iXZDP2r}+Tk~lfGqg|OT7G9$NP>E)|sO0!C{@QLrYa%TbweRscoz2+nd`EuPkescuON4!=VQ9Hf zpc4ERuX@N&E{00#;QXR54F~MHWa+Fpcv*U5q1de9WULG?37dz#=WtsP-<=to^OU{G zvo*_0!J;DPe0EN5E@`r1?|=O8)0^i{-oL2ibX&S#eti4G^IKEDW^7i- z-(yDWXm=2*`7Bja{48VV? zQ``LV;3RD6s>7Jwa2;2h&WSRtdNK3mG!Qsu$jT!NjK`qP8J@lOnpAZK!`^0}(LAS$ zeh#%>6#YE3R`{OOGM+pLD@l!?!#!#JD|00Ww;}vo=WBGd3wzk1*-GSrRdB^ylo>)>saRQm# zPSqRl#fve=?bD?WQqL%CoYFcxFMi;QW%>A3-jT$<$;se~d z<70nlE&r8J?owx_YE2fmPgm38f%32nPh0cF26=Z<4*DoE0t6w4@G*>`ZOBE(f^fo- zCa8;>yj(tRC`JLZWjyLU37L%#G7KF|Y5MQw!38_OgYy9`4(I_MEWtB1FAJ8;JLklh zQewhfyUGg;aESvon#IEb0(Q96X%)|L&S|x?-W1@$jo<_LH7%#h7nhLgXŠ)D>e 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Ξ;|X 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⁣qosY$CFSb7GDnStx--C#sIgz`AyW{i#*uNv!-`X&~&ja8Q&1v*vOlDRg!O!Bat?iAu z>z@am+1v9#kC&@0;m+Yfc5~AB<}O;2MwB;-G;PGNyp13kHNHe~+yH4cX#{yAf>_bN zEm&T#QRADt*|L#yor%VmDFafMHD=uL7u1x)o=+R!+?@wYF+)?}4^1j6oaX^b$i=~9 zFXluX4R$kkfPMR7%k50P`68bJNzCvDn>1N(7LG1*Qif(tTEuZ2&K2Kw|dlSjRsZH$-1hu#D zM*S%(0s%D!FA%8ZAQA?fTod=Yyk)XWj_aM*lb_=sWAV`DS8*eV!5Os+Ao}7a|^WSHbb(Y z?Pf?u^dd&TQSg8GSN>gGf(~6-L!jOIJDj6R`nOx4t5!+geqCk-yvFS%x9a1eFSNt59{LwejFB4_z3a>iuabx9d)ajgL6WUB^X9E9uu zOiUHrjI@C~;R`i&N%Zzpu)ZE`Zb}KY@q{7jnUl!(OJ?Xms7I18$b%LRrLQ67&`X|P zL&M=U(WyYbQ$fDNNjSeAlFVkBv`pV#Norn!T-pj6oH(^IU9(-RWJ9Z>rt8*5ItNQ$ zDg^><(ozGmUAOcgDg!uN`w%ShJPH!H8Ha>>JIVdK#6J%RXgQvL0v*Th;oygZ{r*S4 z{i3jwKXwm3eC+$}7l}*<<-wzaQ-Ao)9b0;>;gUS;{#M{d!|9#CjWQ(z@A(P|%2Z$t za0F*Y96$tTBuG>#lcKU0*c2G0B}X&E=g*%#d!{rJ8$!#M2bAm7=S4};!D2>4^6kd; z$)cDqihX(ea}XJzj*mRs+HdfA>6n>OQpju2O6O7S#1vgL5{&1lvoXq|F&}QeOL^eZU!?0C%ud7fsCppyqfdaWjIw(IjCae zFdfm00(wVy%fU^QHy|J#fIs8;VVdIrWROLK=OH4WJ$vz@ah8suNYH1)AU1_x%8>%rZ_N>_mvoy~gte8~cF;*l5W)yvrrEnMryj6V}c_$mUo<3T2#iDK7~@<@nSNLhTzC)*0}r>6n?MlCvYN3D3nmm`)bbzK*| z!~mT^96Js6+aie7P<4bq@t!n zol;S9tFgFl(1v82oL@VYsvbNzf&|*yZ)g;>xNf+xL)1C?7nVI(x$Htl`^4q0cdY+c zZvy*D)m`|bTLgw`ZIYVpP+BIjKu}Vz5XZ8*KaGtVyjsQXo{aANFDz)P7Zj)Vftg)B zvC4&roLTuqz}&~@6)1y`4Xs(#$WgVb(?A*?tJ_4cHc$;3utx*_HMpnm~9vhZ*Frzpvlc^(ctaM2DfS(^loY@ zgt-v)eO+1K_S0tN(E;!Y+k_cQ*yMp3d-=y^?6zir*r;f5^^Co$pRw`?_=Ih?MSWil za!=sTk#zYkblgtNF zZ9V{cn9_QH|9DA4k<^w+Tj<#4{yvn&r7;1CsrFg7)AE(BzBiv`Z1#z}lthPV^A4x}es7bhM8sWZy$EOmjG4wNTE!Vw47qn^O)PlJnytKiN zPJSLd5%h=dyYCPB_0Wcgo5x%f)b#Z+rv~-i{{5xI2p;vJU<`(j7IYypmgj7w3g+8I zxO(1K6?kw3en%l|EmoF$(m>|d+3y?)FYyO@B?^{2993FQlr9UL0-BLb94bkmMNU4MfWz6=_}CTkA4?O4uPJdLu@K;&P3ubLACO`T^#s+YuQhA62>Gv(PnQbt-szDVLe0*?g)k z$>n`f$tby$A(?je$lhdJ;ZwGmpi7zjk((wpJUr#-4vLGi0_jmO#QR3n8M-8pcTbM~ zt5^6~a=;aD)q$MM7Jec`%X!tI8%ewwo2A*URGo=fzPV}pEz-7gk?yO%!nFTgpFlc9C2X+hLp(k0s^xv@3~ZI}u!)2GKzx zn#pxe-b6@$JlLMO|26r6LQ=-JEl5g@(Rhjk2N5Yyu4|@YGz5DHKv2|4wa;|RlsPj! zw1QFz-Bz)1E{bLgMY9)0vwaEj*^8pNbt$E;piu!j6#>Z%w|7y=?H!|$>O%BL7eM4$ z>IS1l6F`b4Sd$jbE!jFF8R0!(vUS7V6nao_Mu5$C_9MR^xlTgbZYP&Lps96W7#yQiDoGJN=VkwA zd1;g*>=in(7rtmM|7VMb{huwK;QuT}?*cDU?g1^-9?%xm@l|}F>4Ape32l`ZwEO`t zXyHmPXyIxvXgMp8i(q>;lkQ5&UeV%uuV{-$yrPW^=kexqN8b(L^g?=RX)Qs4ox6W; zkuZp3%+4Z|9KvrA-?&9$l#aKSCZnR@B7ONT^00zt6X+ClvB|vt*}?Adhr@2qPdrs^ zlNK+wHzLy+C-V*uju8sm0f?wCmY5VQXqVsrnu-LmGXA1KU!KUYl1vR=J zLRh0Gmde#6C`9@@+RP0^05!lqQDnThoC4!=nx%CXOckz1-~?I#!tX;5sTRUtEi#Ce zpezFtx;#b#e8s?$N|6Vk!jF*%_iId27v49eU4$Omr$N4I^X0CHO&C11MRRBcyCXZG zD8--@XQBM~C4n7HK|P{sYLEdx?F#t#K+9hYu=hDi59I8%49RL zA_f&nW?*bH>8&+e+7BwB#49;b#UrOa=Y}Ns@GPo9VOCB`r3jBfQQml_Q~X@<#|Kbimnq=*}Rj`z8O(S<$a5J1#<~^H^sdys66fx6rMa0ao<5+9@ssk)P%@NN>A<)SGWK5VD9%>q z?xkvdPPz5PSUH7zdU~o?n3^h0w=3n=>fpK0l?nH}cAAg@|20h=bVYKV3WA8-@?Y-~ za>aiQ0& zg-{#TrAvNJO#{bXHD(r3v?Jyzi*|m7&y%Ro7W0Yj!fslz zu?&N7$~wtK3kT1!KfmbP!jn}n8X*M?Fw|r$|GKI+^kaCV`Jaxg-n+TKPcGX0_pNKT zwq>>E-4Fl}ZF)BZN@1Cf4DYg^IuLn7@|KK>uI+xGa6p6ZIQkbm4!^hf@2}P%wrd7K z0H`_;0##rI9mz2+ysWP2%xHRIG=23@)A0WZ0U+6QCYzqfrmr5K%ie28+*gT^{3mmI-RK+ z`YBfy0mGSx>*}YXvdkRF`@du$+rNJxUsesIQrDN-fgJoL19|!T2eP+nAeFlIY6o)o zyD)R~2xdO}Q!#V&XJO{((G&LdFT>2yAH~cMqQ}Qa^zPq+9;3e=Jw86vPrqvqFCN>( zAOF-%y!g|0@#68BIRDGG@#3%9$4?m35C4{py!bclc}MkLxsEQprgG!LkJumdE#uawU04aPJY;N25IGq`KtYj1ay$Pen2NF_s7wfmMKng ze;-(uv)}*4Be6QLjUBj6tseaL@9Y8EeiZljS9Tx%@$c-z*1mYY-QQo^-S`QGvO;3Y zgq-wMd+W6?-fFw4h-LWd_3M{1@mC}9l}tP`5>@eIodAD8fWP>yDt>Ats^agBL{}-;()Xjr{L){|!z zp(?iBRc}YLifXrAG>#5>E1MdE$G^^I6YN0GHp5q{DjH&N2iDo(Sbt9-kfsS9+CNiYVBpKcx;&cb7{t z_-on%U6X>}jCSMG+-Uqdf517vZa8PZsitPZoZc;$hL%DZG34wwb*Li>N?l4nJreP( zl*7IZRsWbNa&hIT`rj#^w9C!+>3);sFb!k9ogC2++#N^M6*L`0+E~s7i~~I z3*gC2>F{z$Vj5g*qc9JwB=UPuFNzH{JNP}k7_P6U%`Hl4jD2b&A5AIwD)2*!pxy|-fbi7ilF_>NRUhv<%6 zYf=Y!EI?UeuYd5VE8{};O2V}_35wS4j9R#>YoP!Gimz_x20Lo##T<%g@Zh})my8Rf z-SR%v$}Y0Y81CHAVT{bZhJ50j6(@739J~lyn;8r(Ow&s1AgSWu0w`=O=5ZQ~bT8}! zP^>%v#YF@Pb_w70oz&FQTa&6VMw_XKQ3nie(R9v!`ync(Y8tdfhdK9X(;<41iECEP z7D$6Tkr$0HGCk;h;6c(-;ly;Xw^unuVa6b?4396M!=5oO$E04m$U@Nd1BZyx>#~5( zT$15d{F2k{Z@0etmh@3QUP;n(J91<`kE6mFJ|DW$sh@T%zWJJ<4j)g65~pasCejGX zq%KFXZUvL4;#ZJ`kV9{-`s)G)N-i3P&J~F{`Xu}3p#*u>jSQV&PpczmLSC)JYRM~Ch=-+)v zm`hgm$#~13RQ9b7*=*sky_2KUgF{e>-|e6GToRd}prU@5PMpF8h4Yz%`f%C$I&7NZ zP{yAgaxNr&(LFmmIrAGW-}z}7;qIKtAVZG zx?DQ=qYXbKh}&r_4NnZaW+Q3~i*3~Q6S?Dtrpdq-q@S@UnFiU&%GrjTy(nR6Vx_-? z^xeH~?|l@{qR`5Fjd_zFt;BC3@t7@&EQqa)SJ=WLFVfj?g^|M3_M_pN+aIFHMU8c- zr+J&(r#jrF4Bx}XJP(^mbJ*84IT8eC8Ia_!JZkTe#*at2c5K8E$>CxaC0tdHjmJ?K zp%K-uxl1mF+_g+BAsjq)1z>&b5xC=W8+Su8e8w{{Re0x8&Sk#2`!)A&ydr%c-LR4K z(p?gsc3YG7)l6%+9jIHr0>E{hsGRV&A$vKzti!CwxmHfQV4gDZ-Ge~ji#XmFR?R!Z zziIQ|4~GM^lBuzNZusaRI0D}S!yz$hRK`E`RcW&-yNXMXTiQDZxm!1Y)70R zttcjl4!HS+XVRhcj)?oCF>Geqdc3Zo_tsIrTaxT?dX2{sKks)9iVf7pqBmJ5()Iub z#m2Sb(O?fre59mP3iqgzx?p(w!O?DiYkl2G!GNMJa~m_a>oZ?s=1Y)I1();=<9u*9 z5(}!(=e@%I7?fh*DhQ0ooi3MEt*rxNS2cj*8XD;A(3(gLgWH>@#Uboi5yZJ^ryd3K ze6to1NHoaRv{A<9F@%75aeRI>*grTM9D>)=-irwjxVs-^SUz`c$lmEmzXYn^_R`+r z!RhJ2@rS|b;qGx)Rk&w`C^tHCetd9p{IpV=D$R@s?c&|^HK#BB-;2gC#pQSFomy!44vgy8kF`4O$>z#G-RByiKP$<}u@Ji?E3bF$OM(+ujc~e1J~#f)|K$ItF%9y@6=O+b#K5Us06rxe=Q-oKpd!zL zkvAj-1e-xZ%u-$73%EmyjOA&3%^KP@<3JgIw&Cv|V}#O^IB-5YAsLBYYBa~e&i^Wjd>q{HWuQv7)E;p5=+ zth;y6J2*KW`lTYm4`!**QFs3U?xdB);`GZLI0sg#!;>G3B4CiAwNuRV#jiKz-TU2c z?_h6ebBfY0N5Q<$Nx=3_wan?>d+1XcbgLe8&^vkGuY(7Avs&U)@5t``Kg`~j9g`37 zS`ooHTq%1J-{6}-JbJfVQqa)a@@wlc-@C2XbufeTPXbJl{f630O)rm5_Pc|#?)$^; zULO|a$$d4uC@VSJ6_u>&!H+dPcz4)6-Unjh_~dxiT!rcEDoSMIEx)Gp(fMKj;Pmh( zYnIxzkOx1OmwQbT>|r9->8cxJ!r^>1o)RU!Xsg@(8Aq>=;rMg zh1lJ91-oG~Zv6|#2!*({v5{Z^M3*3ph-aUXS#Wa{&HcpSUj4IjjpDOsFHOLh)PYA> z;)z%bz)|*0m&7Ee;5yOtNK8Wd8&DY}rvJdd3;GlO9nl~0@0k9Kf9LcV|IX-X?gTEG z(nv6T#e>pu$%G8ZHBG!poX5iH;?D4I!Wj*`Tg{y2@HxDfI|(?z48HL0$bd*Y&V*j5 z7cZRA?in5htcCNF;T)4P%<=A#33Ck3(OLbQoJ<5y7@`V8L>^2W{Ppb)%ytL7UDt;Z ze~(lAr?pR#2N@)yhVxz*$^OCqL9f4iyw^oeNa9@uML3O;i4FN~x4-xC;P^uc2zlA{ zkb}LG!;>=sFAPX4)gByU+qz;6SW~rzUQziGm`txMb98cc`cafw~oO!0N0kSY0oK$IZetsCIepu)BM2L(%U6Ia?VIqr8^y}ity|G4W66p&`q=FrR~881S8sM+rf#-_`T4bm1&ne2 z32#Bnv1i$YlyfY>HH?jL%`y_*$}$?pz`s@_CuR$&0cs#5vw(q)WHAfULgZ#afyQMa z1yRDdW)Y2JMIi&K7SWo8OK4VBQ7KV96V`GWCqk{81zSCUW_fc%$nrL94XU;l$VAj? zp={_X`ZjAYk+-bChFyh`Yik))R;8}s1D8a7t#uQ%qIlgkU{-2h0$S0rtgQsT0{2wwshhu=VwKy>s!88vstOab{(h^gp*pNeq1D%3ZH4Bg zSFY49Tzh?(b(Ss&f<3=(mmtqSwM!6N6^N}8#C8Q@TR?D^hUeEM0Pb-SxI`Sx zmya=6PyOx=BX_k!P|%5$vu{lW3EevFwOs7hoFJf-@(XCJ!#o(atH)f3hPE8uv~ zs-SLN5EiGsSJN@{3jMZaTrfu8Af{yh{ER!e+~-ea(+63v095mPE8ROeKkgfK8D+#J znl7$l){91LWL%#o=kGwT=s>RmIP57wy@w~c38NU8-6Xh*O;AoG2|nhd(8FdZK%%c8 zzh}t;#p9*=4u0T%@@I;CfZr?S>?y%9&i%Cz!D;kg;vdY>cfL9T4nH90q?qm;!b zvyuVvu}ZT87`8kb0Bf%r10dYG0$ZyKY}XdpUR6L|HswMu8wJ0x$^{#IgO8l@?b2{- zDhc%p#kFN?N^P5^sy$XnzuFqy5gkid=d83z4V%8 z!Gx8bj)VTmVDIEp_iXn=_i@JGEGWWiZh!Az;S9!)unemiBghyV?}JJR=Ekr&_6#Y- z1MoaHvo0V+7PTcr)Mf52YYqP|YqQMS{BPn@uHYE{?_y^HLqdt6N^IipnZXb< z-kB>|m;aYV`d`f=g;1e2Q2lPN|NA(p__D8IK>nL~oBve|-9PW4eScpO?LpE5V#NPn zJjN$kFpBCVRv*rG_YW*-)f3`wxeq4@N zn2y+|Xv9+S&@iT=y9cT(pAPoBC-U+CAAXb8KO6th%Mh%Blz|8YfY})iea$~RIY#>P z6p8s-*v|o`ieRS$P`DgO&5-&MySXzol1ufvc-?~EWozH=AM`(V&om<`od>@yj8!^0 z-Tmh|Uzg7TkHCP|T%`_u&YdBTN7qkzMA<%2omeA&nx=GM3&UxBT&vR{{A~9LR%md# zyZ8OU@dqxrFyL_6Ry|$71HOEPp;E6M8Y%uOa;ei;|&EmcgpiMPa1su<9}tpJ7`AdN|FA zrS~FhfvPQ?9Z>({9U9_>i-X&AQ8?1TqCp!i7us&1HX?r=&O=;B$x(Q)KG^{)>bO~f zF(?6pYux>@Z+$;F_DUYcL0_4>wSStWzsfK8T?ccRj-V6b`!F4?s>lWuDfNANQk@^N zz=VR&RZW*bWm0|Pb@i5a&47DZyQSC7Ni!u^^tw4{=H!O%Qx<;aV?Y}K6}>Ss z46>v}=~P;jl8oou2B$YFJE+U5!!>%6IlHlGURj>8gFA#j|?TQAG)2@fuWSq zr7+6CmKwt*4v#nMHiwPP#;4uGgZ78{$xpP6;Yla$o#=_ z=`JG?YDOGPJgQbo&m~{bZl?$9J9SB)zURL%G~kzxh)kejo=_u_tF@3K^{gdFS69GsT?p>Vi?|iInNsJ@S4Q(is3E|k1!TH6_a5rQ;UNt zUA^=%w5f6}^F6zz!oAueXQO^JV>xZx4Nm!|xufWf2t#4*BiiGEA;6yL8wkn9!Wy?D z(&q?Y0rYPp%)g`q5`O-ytfdI2VyJFgde7i8qNMjM+|&%T`Fs&f(0V?q&q)B|mU6HY z?^8vGgwx>%12j8)lDoTccvH9JaXEgxLumD5iW5h6)XT1^0o9xF&8;{GJyiDy|Ekky3I z^`|vZgt#JB6H8Kr5BqugMjw6%tI5g-zh%0ANkTh(kBs&P&7Xi-0sLSP(MOJW0ghTm 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͂ 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 Nh!r4o{c- zVtCnbxZRasbC(xhFZfH)n(Hsc5R74IiPU+%NG)6Ul&yQWxbAz;xS96_+krbiGO6Y>iC7MsvwfQ}P&`Ja@*lrnGS-6zJ+VVcwMOEiQ5lQ{A zqnQm(^-LSG5J|&tVT_JU8M}_OR3{Q5j@%qF4b_|&qc`eUN;X=1pjX2|0W39EbLdaM zQIsZv>Wa4DHdm1~-Pn=czzU#mDb_U9r%+o9_50yLX&Myg7}RydENdMpE1{-B9WGCj z+RW$|d-v=O<}ypNCu|?(_6&60cojyzvd&?mMFr|PrF4hFou@ue3dFs^&KI2!1phDQ zhJb$NK7N9c;vW8%5BbjnZc${BF z`jEZpQ+Ro(wEja5X;VF|^Du(6-+Ef`@C(xJd_un?+#ewC6&xy`xLJZhNaZ`}=fJz? z!Y)k%C3Lp>P7XG3*EyUEsF^pT{ZK|P)+R)8rC+`Tt#Qw=-T(#47D&su1PzsCP|THO zQ9t%MqeG}ZJHG}l%W-1do`lB8=->;PONqee0oroqMAt`^Ej0u{7H&LcpQJ95QvqIy z2$&dhc+-%v*Jdx?xOoWMl^9~`-1`CCNxF&t%RYeuI4F24P+6E?eE;$D z+v(nBv(-NN`Ute|13B7N;^xUgau=psL56l`vA4n6Ipa=Tjh3#5(dchBwN_}#A)>8s z180-Hg;Zm>+;>qgANUUs_%R5<2335aV>X{?c7nWg1Gxfqy$U2vc@nFK+P1JY)vSir zto~uABf^am!slHdt_G%5F3ZGPnVhmx zF_dy*ZxfIY3Z*55Qn+;pnbF7?2h-g*cB$U@j0XL}+vbt?Dz560A-0oJ_xbNtSyR%# zT%)fa=EqWJ1#W-q4blyUL&>p_Q0h5VP3v;#GL;)Hxk%z}$eL2dp(;(d0ppyy+#Lqf zWSonO@de+Ax>79Yo@l!lSK zjR}8L1-}4!+$T3Bqpc|OS{8aO=48U)U2-bTOAAGeKupHnq;(<(2l%faV_-uB_Tz0cF>y{!SvcwnKg~8B4^=O!ZLxdMc%`vr*2zl;S-$;gvInTN)X2m?~T$(SV z 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

E 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/index.html b/Needle/SampleScene/dist/index.html new file mode 100644 index 0000000..e4c217d --- /dev/null +++ b/Needle/SampleScene/dist/index.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Sample Scene + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + \ No newline at end of file diff --git a/Needle/SampleScene/dist/index.html.gz b/Needle/SampleScene/dist/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..f006517ef207e46ebdba39460df9a286e6c2917d GIT binary patch literal 2761 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 + customElements.define(componentName, class extends HTMLElement { + + static get observedAttributes() { + return knownAttributes; + } + + constructor() { + super(); + this.attachShadow({ mode: 'open' }); + const template = document.createElement('template'); + template.innerHTML = ` + + `; + this.shadowRoot.appendChild(template.content.cloneNode(true)); + + const script = document.createElement('script'); + script.type = 'module'; + const url = new URL('.', import.meta.url); + this.basePath = this.getAttribute('base-path') || `${url.protocol}//${url.host}${url.pathname}`; + while(this.basePath.endsWith('/')) { + this.basePath = this.basePath.slice(0, -1); + } + script.src = this.getAttribute('script-src') || `${this.basePath}/assets/index-Dng8tdEB.js`; + this.shadowRoot.appendChild(script); + + this.needleEngine = document.createElement('needle-engine'); + this.updateAttributes(); + this.shadowRoot.appendChild(this.needleEngine); + + console.debug(this.basePath, script.src, this.needleEngine.getAttribute("src")); + } + + onConnectedCallback() { + console.debug('NeedleEmbed connected to the DOM'); + } + + disconnectedCallback() { + console.debug('NeedleEmbed disconnected from the DOM'); + } + + attributeChangedCallback(name, oldValue, newValue) { + console.debug(`NeedleApp attribute changed: ${name} from ${oldValue} to ${newValue}`); + this.updateAttributes(); + } + + updateAttributes() { + console.debug("NeedleApp updating attributes"); + + const src = this.getAttribute('src') || null; + if(src) this.needleEngine.setAttribute("src", src); + else this.needleEngine.removeAttribute("src"); + + for(const attr of knownAttributes) { + + if(attr === "src") continue; // already handled above + + if(this.hasAttribute(attr)) { + this.needleEngine.setAttribute(attr, this.getAttribute(attr)); + } + else { + this.needleEngine.removeAttribute(attr); + } + } + } + }); +} +else { + console.warn(`needle-app <${componentName}> already defined.`); +} diff --git a/Needle/SampleScene/dist/needle.buildinfo.json b/Needle/SampleScene/dist/needle.buildinfo.json new file mode 100644 index 0000000..40cb57f --- /dev/null +++ b/Needle/SampleScene/dist/needle.buildinfo.json @@ -0,0 +1 @@ +{"time":"2026-04-19T20:37:55.948Z","totalsize":14929996,"files":[{"path":"assets/Box.glb","hash":"f16df09406daf6b6d6763e6d5fd30855534a246d5c5f9569d9e0a94ef3c8aa70","size":1256},{"path":"assets/Duck.glb","hash":"aa58f5302fb10aab72926edf508e8f6164d8d2ffe4ce312cb8070cd22c58adfa","size":21648},{"path":"assets/favicon.DtN_Fmav.ico","hash":"8d99ceeacb8facc2b07ea2ce437fc23f6d7ce42492e9abbb7bb98d82749abc96","size":15086},{"path":"assets/generateMeshBVH.worker-BRfdalWV.js","hash":"26dbdd8c06867454f8cf046d7963692ba10f4b6eebd5cbde83227908dbb2a886","size":390545},{"path":"assets/generateMeshBVH.worker-BRfdalWV.js.gz","hash":"7eae0d7a22c7346403d73cf42a22b1f8d7008922462bcb217a00f66c2a2fb97a","size":96965},{"path":"assets/GenerateMeshBVHWorker.DMD7ZOpN.js","hash":"c39f757743906680af5dc17743a0082c4385e230ab5006b427953bdec6f4f76a","size":80},{"path":"assets/gltf-progressive.U_EoiMHF.js","hash":"ce973f888e6f0a58412b8a19a8979d1c9f8abff70331618be4f8ec8d19a5a1a5","size":40226},{"path":"assets/gltf-progressive.U_EoiMHF.js.gz","hash":"2688b26b0057126d1dc35224fca821960e9ae3d351785e8f0f5392bbf017562d","size":13752},{"path":"assets/gltf-progressive.worker-DbINgLUC.js","hash":"d95d7d669ac99e74ab7945b52f825793c8977a9b6045aa7f202b867a6295abd4","size":533027},{"path":"assets/gltf-progressive.worker-DbINgLUC.js.gz","hash":"9ce0dcfd79441e40258af9801a62c13ed8bb454de617b28a81951b22c5bc3f1c","size":140931},{"path":"assets/image_0_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb","hash":"b0f54f54bb6f7baf71daf8af53d78dcc397a57f474d6498f30d22539bb7a6181","size":15100},{"path":"assets/image_1_bd770b64-5582-56ba-a9b1-f67888bd38d5.glb","hash":"041edaae6a0ceed7bba7764c841bcde2e930ec8b6146e5f32c3a829e80be4c18","size":8144},{"path":"assets/index-Dng8tdEB.js","hash":"60ac66371d243ff55274eaeb82f557f3373ab1af0b15381d4ad12e99f3b7d34b","size":3935},{"path":"assets/index-Dng8tdEB.js.gz","hash":"14a8ff969773d4cb6ae6cfdec318c6c50ba7c875e416f34308e72cb805b4dd22","size":1744},{"path":"assets/index.2XwOwFJz.css","hash":"25faeee214aadb9a8bfcaf563f5297c14dbebe5bb03ac0f5c2e95c4bb8801cb9","size":1317},{"path":"assets/index.2XwOwFJz.css.gz","hash":"628d1722e3b1dbeb9a4b29bb1ab09ba911c26a2ad0d32860b92c3cd450334109","size":656},{"path":"assets/JsMaterialXCore.B97gKRq_.wasm","hash":"6b0d149adcb290fac326c754c878a5d8389b2fe7e6c5dbaf22129b2e83673762","size":1410873},{"path":"assets/JsMaterialXCore.DGnKx6GJ.js","hash":"3458954c3137edcdf72a873eb4a92fc8fd947676a10c7dab1d2ef8e501ce5c07","size":65},{"path":"assets/JsMaterialXGenShader.data.DOxudtll.txt","hash":"9eaf101c24d568abe8b21a35cec29df32a9d8ee18986787abcada3ac95ffacc5","size":1512300},{"path":"assets/JsMaterialXGenShader.data.vJnq-SJK.js","hash":"8469e42ae946745a483b829903a8ebe26775c6084a19f85928633c5bbe5cca59","size":65},{"path":"assets/JsMaterialXGenShader.DFP9U7Gu.js","hash":"b3026b30cb3dc86f025d4a21b8befe5b9cbbd2b3d471ecc18c0dd7ed591ce0bb","size":65},{"path":"assets/JsMaterialXGenShader.P2pWAaz9.wasm","hash":"09adab7b142ea4dc768ac40b7947a5eac5c7556a50dbf60281db9c11d555a98e","size":2564784},{"path":"assets/materialx.CnHmG--Y.js","hash":"46e0e6b37df7b132f6340e2bd84211f916c24933868671ba4b5d3a507f8d878c","size":140597},{"path":"assets/materialx.CnHmG--Y.js.gz","hash":"2a3d121d401ee013951712a5ad6a4d7d023201b4ea28625d9d07791999a8a80e","size":42394},{"path":"assets/materialx.eMaybKAQ.js","hash":"d25f196b1725a13ce1bc579a42fe162335314670daf1e24c973b45b7eda95140","size":233},{"path":"assets/materialx.eMaybKAQ.js.gz","hash":"a2c260cb703b423b85ba96b38f3c00a9b1021882ec5feb13338ca1fa3db8db3e","size":168},{"path":"assets/mesh_lod_0_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb","hash":"f8da5669733e570beaec261b11eac49e609127bd18a6659a092778528d749fd8","size":22384},{"path":"assets/mesh_lod_3_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb","hash":"e108d6cd8fadc4250b03577a3ed0c1ae5b065ebd0011f190607ee2d326378bfc","size":20700},{"path":"assets/mesh_lod_4_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb","hash":"b458d3955aaec8fcb63eae900bc06d20be7ddc3a66dda71b4d60fd3241b4be1e","size":17052},{"path":"assets/mesh_lod_5_574cdeb8-0722-52ff-8265-69ff097cc5ec.glb","hash":"bb8e1498ec2927c147170e55aa7b06c62b407f3e8998ac4f66edf5f1e4004b11","size":8484},{"path":"assets/N8AO.BjEz-iDD.js","hash":"4cefe55666ddaef9c47c0551139b2d66ae8fea3a65561cd57d6d74407221db4c","size":121},{"path":"assets/N8AO.BjEz-iDD.js.gz","hash":"56f9f28b5421023ec75626b8e90daeef9a81516e622abf962190b9e7d4231ac0","size":119},{"path":"assets/needle-engine-particles.ByRryBGL.js","hash":"e398404aed04d5d03cf2f9f9e51355a49dbf743d86e5e3b74a9bccf4d0736c42","size":57273},{"path":"assets/needle-engine-particles.ByRryBGL.js.gz","hash":"e0dee9f19710b0f6b2c8b4f67f246f13b60173f202584437d02f27da07f8a89a","size":15292},{"path":"assets/needle-engine-ui.DC9_O2Mo.js","hash":"621375763266fe17e077d817e7f95aae81177469b0d53a28e11c871de1b0a1cd","size":549854},{"path":"assets/needle-engine-ui.DC9_O2Mo.js.gz","hash":"e82aaa6a21d475c4ec7e4848388a9b0039786aa775596543fc67b83b9da56fbe","size":156633},{"path":"assets/needle-engine-webxr.Cp-vkXLP.js","hash":"12a612c4d3cfa2f73a32fcc5987e06da993098f2fc1f016679e54d03ed98c250","size":339639},{"path":"assets/needle-engine-webxr.Cp-vkXLP.js.gz","hash":"a309cf8b115b86776c75f7502dc26ee2dbca3982e277449f05a401569736f64e","size":95878},{"path":"assets/needle-engine.BJP2NBoC.js","hash":"baa3d6660ade76a55ba22625b3d4ce682507fa967afb4b15a7122c840b77ea7d","size":8806},{"path":"assets/needle-engine.BJP2NBoC.js.gz","hash":"042d5bd562bfc7e4d89e76b88e15dd365ee678fc4f22ab846cc6be909a35aeeb","size":2125},{"path":"assets/needle-engine.BlkazeHq.js","hash":"5c03f993d081dcd7acb77bd49894418f6f849ddb810fa37f8adc6e2690c4080b","size":17976},{"path":"assets/needle-engine.BlkazeHq.js.gz","hash":"55c4fc88c9e7415267923a01b08fa250cfd147d184155fffba9d76b74f86696b","size":7317},{"path":"assets/needle-engine.CE4b2dOg.js","hash":"926d66907210eb8304c8ebb022b07804b2528a1cb0fcb3a693dafb920cf9af4b","size":83},{"path":"assets/needle-engine.D6xdy26G.js","hash":"493a70cfc7882efd95a49064109d497fa52da8cb21ebead82269844699410225","size":8399},{"path":"assets/needle-engine.D6xdy26G.js.gz","hash":"ae0ffbee3b9df88dfbdadc6c9b7ef7e3a526dd2a9fd1dca7d3e189004eb1feb3","size":2824},{"path":"assets/needle-engine.dep.B3nA4wQ5.js","hash":"903cb1e6d479f412d33f3c6f420da30914ebdc32f2fa5af317ef1b6a83c19d46","size":157},{"path":"assets/needle-engine.dep.B3nA4wQ5.js.gz","hash":"f3ef06e5c09c66b910c15a96d56be694dfc1043699234de32880009cc425418d","size":146},{"path":"assets/needle-engine.dep.BzZBR-mM.js","hash":"446200bd2574e013d8968923320e1092907cfb8f4890ae1a2007ad3a2efb4ec5","size":91},{"path":"assets/needle-engine.dep.DFJFZC0m.js","hash":"fb9b21b29e7bdd4af6e14c3716d27ffc9642107224b17a3cc1cf383c57355f80","size":3621},{"path":"assets/needle-engine.dep.DFJFZC0m.js.gz","hash":"a52e033c1ec67b0da0e40f27167b672650f08af40a738a27ba51a4b8f226276d","size":1473},{"path":"assets/needle-engine.extras.ChmId5tE.js","hash":"ea94334a0362eb24e01ef4482f587075844110147ed9193d8c158fbef467ae7b","size":288044},{"path":"assets/needle-engine.extras.ChmId5tE.js.gz","hash":"fe49a5f4ce6fa80b19d2a9f43ef6625d13193d0f75a6a2560a9f121adcb1346c","size":77879},{"path":"assets/needle-engine.extras.X7Svjxj0.js","hash":"e389a82a9aca89f24633072e3ac6205cfbb095304e507d15f57c0b67f7396290","size":45379},{"path":"assets/needle-engine.extras.X7Svjxj0.js.gz","hash":"0330e6838160be1799827af5815826fa56d6c0147074d3f71cc394830700849f","size":11720},{"path":"assets/needle-engine@5.0.3.js","hash":"e43ebae9bfa9ba2305ea679b0cddf6255417871622e8496fab73756f00b91005","size":102424},{"path":"assets/needle-engine@5.0.3.js.gz","hash":"ea9c7eca1a844ab5a09f425c06497b256a6a26eef66b57ef352c08c962c62237","size":32242},{"path":"assets/peerjs.UdR1_Ath.js","hash":"4d1141e782b5074ff0bc6471d1496892bf4cc3d37bff6b26dbb543ff3215f511","size":139970},{"path":"assets/peerjs.UdR1_Ath.js.gz","hash":"d655e3293942f858436231a5f1c98cacebc4f12b462bbbf7091d91fca6b1804f","size":35531},{"path":"assets/postprocessing.ao.CBPOoA3d.js","hash":"7a37bc7181d0c756352d5abc137c4f06efecfb612daa25d1205d8b324d7b7945","size":162950},{"path":"assets/postprocessing.ao.CBPOoA3d.js.gz","hash":"790e5a6a9ca7d2f16cb26690f29f5ff4bfd05fdbb27409cc2c5393eda9b1cc27","size":77949},{"path":"assets/postprocessing.Wy71DpiM.js","hash":"a13d1598fd4cc60a06e264fef9ed207185963a01b21473cc30dfdcd11307b2b1","size":318819},{"path":"assets/postprocessing.Wy71DpiM.js.gz","hash":"205160a2233b8646a9c1ec6c6f17a414067d811299e3f13f5332a6ce5b66ac61","size":111140},{"path":"assets/rapier3d.DBFmcAzL.js","hash":"dee0e85e47299f58b6af45b9e0d3ec8e87365a2bcfbfe521c7ca7731f721c031","size":2236518},{"path":"assets/rapier3d.DBFmcAzL.js.gz","hash":"756ae1c26b91e37df8728ee0e438208e9138a328daaac20c91d9c9ec0be6a9d1","size":829360},{"path":"assets/register_types.OB5V_DGw.js","hash":"344e277bb4baf5c19d6a2a8dc1ca07b0be0fc166afc0b97618cbde999646b972","size":8403},{"path":"assets/register_types.OB5V_DGw.js.gz","hash":"7db07a8f3d8b1e5b1ba8c3ec8e3682c1e6756fe48b38350feb4b258caed152f5","size":2791},{"path":"assets/rolldown-runtime.CYVBeYYp.js","hash":"c62a259caf983f4ea8940cae8d9abe35924f21613de275b1102b5f9e6243c126","size":685},{"path":"assets/rolldown-runtime.CYVBeYYp.js.gz","hash":"52bb3183225ba42d42738dbbe972d6bd0b05d307269e38b8c3ca2a672979ba57","size":417},{"path":"assets/SampleScene.glb","hash":"6cf71aea15b33c6599e6b9a925dbdf4d33caaadfb48711833ce09eb25e7fe1fd","size":81048},{"path":"assets/three-examples.extras@0.169.19.js","hash":"aef05f51f28253590813af5c26dfe874758b55347a4f1507651360283e5945e8","size":104242},{"path":"assets/three-examples.extras@0.169.19.js.gz","hash":"2e77c22adae2eaa948008185b897dc15f38cfab9e24abf60f73fd37695a37ebf","size":28538},{"path":"assets/three-examples@0.169.19.js","hash":"f5be3eb225b7faf48484f52e55aa3061a210557515b978b684ec69fe316c2650","size":238182},{"path":"assets/three-examples@0.169.19.js.gz","hash":"b6dfea7a41a1df6b642d2d6a4e57654f61bbce9a34610dd3f56bd6141f82ca00","size":79588},{"path":"assets/three-mesh-bvh.B-oXEGo2.js","hash":"9dff9b6b9018b998059a57cde938ad273062e25a06232f019bbc5a6b0ef4b7c7","size":54824},{"path":"assets/three-mesh-bvh.B-oXEGo2.js.gz","hash":"4c10233f3f98214c2604e628406d76cd9419b3629e42f2b4c356f5b15b15e093","size":17657},{"path":"assets/three-mesh-ui.CgGzZ3ml.js","hash":"1e33cd1d93ac2c9e4cea4d6b35094401cce041850d374f105513a44283b5884d","size":113137},{"path":"assets/three-mesh-ui.CgGzZ3ml.js.gz","hash":"6f016243f03011b37c43bcb2b307876075338430f185ea3c82ecfc67bdcc9e70","size":26682},{"path":"assets/three-quarks.DALdLWPD.js","hash":"4be7a10535ad22e8333ffa70d687606c5778dd03fddc7298c4f665911bc9c452","size":148379},{"path":"assets/three-quarks.DALdLWPD.js.gz","hash":"17ba7fe25a94d37f6d7d6d56c8c6cb2c748b4d6c297e67e72a4cbad96316268c","size":34112},{"path":"assets/three@0.169.19.js","hash":"e867c49a8afe22f7d79b960e57640ac4427d50a587a878b0e560cbb5a42d00ef","size":965775},{"path":"assets/three@0.169.19.js.gz","hash":"3ece83a0fb0555973130bc83e5eeecc11c4409975e0aec455441b37f920490de","size":249564},{"path":"index.html","hash":"3aeaf54653d7c460a1af18590262bac2c4c01c0a01cb3496abf9189ae6647275","size":7378},{"path":"index.html.gz","hash":"36cad744b4b1b7ea478f8a6605f7daf48d2798787c2761a25806b2c50a995d8e","size":2761},{"path":"needle-app.js","hash":"8712250b1be2d089cb123170185738d1594d60fd24bc97dbd3afeb4e703a86ae","size":3505}]} \ No newline at end of file

TC|97W?1R&T@ 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 M0bt3Ui.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{$t as t,A as n,Ar as r,At as i,Bt as a,Cn as o,Cr as s,Dt as c,Et as l,Fr as u,G as d,Gt as f,Ir as p,It as m,Jt as h,K as g,Kn as _,Mt as ee,On as te,Qn as ne,Qt as v,R as re,S as ie,Sn as ae,Vt as oe,Wn as y,Wt as se,Xn as ce,Xt as b,Yn as le,Zn as ue,Zt as x,_ as de,_n as fe,_r as pe,a as me,an as he,b as ge,d as _e,dt as ve,er as ye,fn as S,gn as be,gr as xe,gt as Se,ht as Ce,i as we,in as Te,jr as C,kr as Ee,l as De,lt as Oe,m as ke,mn as Ae,nt as je,pt as Me,qt as Ne,r as Pe,rn as Fe,sr as Ie,tn as Le,tr as Re,tt as ze,u as Be,ur as Ve,vn as He,wn as Ue,wr as We,x as Ge,xr as Ke}from"./three@0.169.19.js";import{$a as qe,$i as Je,$r as Ye,Aa as Xe,An as Ze,Ba as Qe,Bi as $e,Bn as et,Bo as tt,Br as w,C as nt,Co as rt,Cr as it,Ct as at,Di as ot,Ei as st,Er as ct,Fi as lt,Gi as ut,Gn as dt,Ho as ft,Ht as pt,Ia as mt,Jn as ht,Jt as gt,Ka as T,Kt as _t,L as vt,Lr as yt,Lt as bt,Ma as xt,Mr as St,N as Ct,Ni as wt,Nr as Tt,Nt as Et,Oa as Dt,P as Ot,Q as kt,Qi as At,Qn as jt,Qr as Mt,Qt as Nt,Rr as Pt,Sn as Ft,Sr as It,Tt as Lt,Ua as Rt,Uo as zt,Vt as Bt,Wn as Vt,Wo as Ht,X as Ut,Xi as E,Xn as Wt,Yn as Gt,Yt as Kt,Zi as qt,Zr as Jt,_a as Yt,_n as Xt,_t as Zt,an as Qt,ba as $t,c as en,co as D,cr as O,ct as k,dn as tn,ei as nn,eo as A,fi as rn,fn as j,gn as an,gr as on,hn as sn,j as cn,jo as ln,kn as un,kt as dn,la as fn,ln as pn,m as M,ma as mn,mi as hn,mr as gn,mt as _n,na as vn,ni as yn,nn as bn,o as xn,oo as Sn,ot as N,p as Cn,pa as wn,pn as Tn,q as En,qi as Dn,qt as On,ra as kn,s as An,so as jn,sr as Mn,ta as Nn,ti as Pn,to as Fn,tr as In,un as Ln,va as Rn,vi as zn,wi as Bn,wr as Vn,x as Hn,y as Un,yn as Wn,yt as Gn,z as Kn,zn as qn,zo as Jn}from"./needle-engine-ui.DC9_O2Mo.js";import{a as Yn,c as Xn,i as Zn,o as Qn,p as $n,s as er}from"./three-examples.extras@0.169.19.js";import{a as tr,c as nr,i as rr,n as P,o as ir,r as ar,s as or}from"./gltf-progressive.U_EoiMHF.js";import{S as sr,c as cr,d as lr,f as ur,l as dr,p as fr,r as pr,s as mr,u as hr}from"./three-examples@0.169.19.js";var gr=D(`debugwebxr`),_r=class{static tryFindAvatarObjects(e,t,n){if(n.head&&n.leftHand&&n.rightHand)return;let r=e.name.toLocaleLowerCase();!n.head&&r.includes(`head`)&&(gr&&console.log(`FOUND AVATAR HEAD`,e.name),n.head=new w(``,t,e)),r.includes(`hand`)&&(!n.leftHand&&r.includes(`left`)&&(gr&&console.log(`FOUND AVATAR LEFT HAND`,e.name),n.leftHand=new w(``,t,e)),!n.rightHand&&r.includes(`right`)&&(gr&&console.log(`FOUND AVATAR RIGHT HAND`,e.name),n.rightHand=new w(``,t,e)));for(let r=0;r=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},yr=D(`debuganimation`),br=class{x;y},xr=class extends N{get isAnimationComponent(){return!0}addClip(e){this.animations||=[],this.animations.includes(e)||this.animations.push(e)}playAutomatically=!0;randomStartTime=!1;minMaxSpeed;minMaxOffsetNormalized;loop=!0;clampWhenFinished=!1;get time(){if(this.actions){for(let e of this.actions)if(e.isRunning())return e.time}return 0}set time(e){if(this.actions)for(let t of this.actions)t.time=e}get duration(){if(this.actions){for(let e of this.actions)if(e.isRunning())return e.getClip().duration}return 0}_tempAnimationClipBeforeGameObjectExisted=null;get clip(){return this.animations?.length?this.animations[0]:null}set clip(e){if(!this.__didAwake){yr&&console.warn(`Assign clip during serialization`,e),this._tempAnimationClipBeforeGameObjectExisted=e;return}e&&(this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(e)&&(this.animations.length>0?this.animations.splice(0,0,e):this.animations.push(e)))}set clips(e){this.animations=e}_tempAnimationsArray;set animations(e){e==null||!Array.isArray(e)||(this.gameObject?this.gameObject.animations=e:this._tempAnimationsArray=e)}get animations(){return this.gameObject?.animations||this._tempAnimationsArray||[]}mixer=void 0;get actions(){return this._actions}set actions(e){this._actions=e}_actions;_handles;awake(){this.mixer=void 0,yr&&console.log(`Animation Awake`,this.name,this),this._tempAnimationsArray&&=(this.animations=this._tempAnimationsArray,void 0),this._tempAnimationClipBeforeGameObjectExisted&&=(this.clip=this._tempAnimationClipBeforeGameObjectExisted,null),this.actions=[],this._handles=[]}onEnable(){if(this.playAutomatically&&this.animations?.length>0){let e=Math.floor(Math.random()*this.animations.length),t=this.animations[e];this.play(e,{exclusive:!0,fadeDuration:0,startTime:this.randomStartTime?Math.random()*t.duration:0,loop:this.loop,clampWhenFinished:this.clampWhenFinished})}}update(){this.mixer&&(this.mixer.update(this.context.time.deltaTime),this._handles.forEach(e=>e.update()))}onDisable(){this.mixer&&this.mixer.stopAllAction()}onDestroy(){this.context.animations.unregisterAnimationMixer(this.mixer)}getAction(e){return this.actions?.find(t=>t.getClip().name===e)||null}get isPlaying(){if(this.actions){for(let e=0;e=this.animations.length){yr&&console.log(`No animation at index`,e);return}e=this.animations[e]}else typeof e==`string`&&(e=this.animations.find(t=>t.name===e));if(!e){console.error(`Could not find clip`,e);return}let n=this.actions.find(t=>t.getClip()===e);if(!n){console.error(`Could not find action`,e);return}t?.fadeDuration?n.fadeOut(t.fadeDuration):n.stop()}pause(e,t=!1){if(e===void 0){for(let e of this.actions)e.paused=!t;return}else if(typeof e==`number`){if(e>=this.animations.length){yr&&console.log(`No animation at index`,e);return}e=this.animations[e]}else typeof e==`string`&&(e=this.animations.find(t=>t.name===e));if(!e){console.error(`Could not find clip`,e);return}let n=this.actions.find(t=>t.getClip()===e);if(!n){console.error(`Could not find action`,e);return}n.paused=!t}resume(){for(let e of this.actions)e.paused=!1}play(e=0,t){if(yr&&console.log(`PLAY`,e),this.ensureMixer(),!this.mixer){yr&&console.warn(`Missing mixer`,this);return}e===void 0&&(e=0);let n=e;if(typeof e==`number`){if(e>=this.animations.length){yr&&console.log(`No animation at index`,e);return}n=this.animations[e]}else typeof e==`string`&&(n=this.animations.find(t=>t.name===e));if(!n){console.error(`Could not find clip`,e);return}t||={};for(let e of this.actions)if(e.getClip()===n)return this.internalOnPlay(e,t);if(!n.tracks){console.warn(`Clip is no AnimationClip`,n);return}let r=this.mixer.clipAction(n);return this.actions.push(r),this.internalOnPlay(r,t)}internalOnPlay(e,t){var n=this.actions.find(t=>t===e);if(n===e&&n.isRunning()&&n.time=e.getClip().duration&&(e.time=0);t?.minMaxSpeed?e.timeScale=Rt.lerp(t.minMaxSpeed.x,t.minMaxSpeed.y,Math.random()):e.timeScale=t?.speed??1,t?.loop==null?e.loop=se:e.loop=t.loop?f:se,t?.clampWhenFinished&&(e.clampWhenFinished=!0),e.paused=!1,e.play(),window.requestAnimationFrame(()=>At.testIfRootCanAnimate(e)),yr&&console.log(`PLAY`,e.getClip().name,e);let r=new Sr(e,this.mixer,t,e=>{this._handles.splice(this._handles.indexOf(r),1)});return this._handles.push(r),r.waitForFinish()}tryFindHandle(e){for(let t of this._handles)if(t.action===e)return t}ensureMixer(){if(!this.mixer){let e=`animationMixer`;this.gameObject[e]&&(this.mixer=this.gameObject[e]),(!this.mixer||!this.mixer.clipAction)&&(this.mixer=new me(this.gameObject),this.gameObject[e]=this.mixer)}this.context.animations.registerAnimationMixer(this.mixer)}};vr([E()],xr.prototype,`playAutomatically`,void 0),vr([E()],xr.prototype,`randomStartTime`,void 0),vr([E(br)],xr.prototype,`minMaxSpeed`,void 0),vr([E(br)],xr.prototype,`minMaxOffsetNormalized`,void 0),vr([E()],xr.prototype,`loop`,void 0),vr([E()],xr.prototype,`clampWhenFinished`,void 0),vr([E(we)],xr.prototype,`clips`,null);var Sr=class{mixer;action;promise=null;_options;_resolveCallback=null;_resolvedOrRejectedCallback;constructor(e,t,n,r){this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=r,this._options=n}waitForFinish(){return this.promise?this.promise:(this.promise=new Promise(e=>{this._resolveCallback=e}),this.mixer.addEventListener(`finished`,this.onFinished),this.promise)}update(){this._options&&this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){this.dispose(),this._resolvedOrRejectedCallback?.call(this,this),this._resolveCallback?.call(this,this.action)}onFinished=e=>{e.action===this.action&&this.onResolve()};dispose(){this.mixer.removeEventListener(`finished`,this.onFinished)}},Cr=class extends N{get listener(){return this._listener??=new De,this._listener}_listener=null;onEnable(){yt.registerWaitForInteraction(this.onInteraction),this.addListenerIfItExists()}onDisable(){yt.unregisterWaitForInteraction(this.onInteraction),this.removeListenerIfItExists()}onInteraction=()=>{this.destroyed||this.listener!=null&&this.addListenerIfItExists()};addListenerIfItExists(){let e=this._listener;if(!e||e?.parent)return;let t=this.context.mainCameraComponent||k.getComponentInParent(this.gameObject,nt);t?.threeCamera?t.threeCamera.add(e):this.gameObject.add(e),e.filter?(e.gain.connect(e.filter),e.filter.connect(e.context.destination)):e.gain.connect(e.context.destination)}removeListenerIfItExists(){let e=this._listener;e&&(e.removeFromParent(),e.filter&&e.filter.disconnect(),e.gain&&e.gain.disconnect())}},wr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},F=D(`debugaudio`),Tr;(function(e){e[e.Logarithmic=0]=`Logarithmic`,e[e.Linear=1]=`Linear`,e[e.Custom=2]=`Custom`})(Tr||={});var I=class e extends N{static get userInteractionRegistered(){return yt.userInteractionRegistered}static registerWaitForAllowAudio(e){yt.registerWaitForInteraction(e)}clip=``;playOnAwake=!1;preload=!0;playInBackground=!0;get isPlaying(){return this.sound?.isPlaying??!1}get duration(){return this.sound?.buffer?.duration}get time01(){let e=this.duration;return e&&this.sound?this.sound?.context.currentTime/e:0}set time01(e){let t=this.duration;t&&this.sound&&(this.time=e*t)}get time(){return this.sound?.source?this.sound.source?.context.currentTime-this._lastContextTime+this.sound.offset:0}set time(e){if(this.sound){if(e===this.sound.offset)return;let t=this.isPlaying;this.stop(),this.sound.offset=e,t&&this.play()}}get loop(){return this.sound&&(this._loop=this.sound.getLoop()),this._loop}set loop(e){this._loop=e,this.sound&&this.sound.setLoop(e)}get spatialBlend(){return this._spatialBlend}set spatialBlend(e){e!==this._spatialBlend&&(this._spatialBlend=e,this._needUpdateSpatialDistanceSettings=!0)}get minDistance(){return this._minDistance}set minDistance(e){this._minDistance!==e&&(this._minDistance=e,this._needUpdateSpatialDistanceSettings=!0)}get maxDistance(){return this._maxDistance}set maxDistance(e){this._maxDistance!==e&&(this._maxDistance=e,this._needUpdateSpatialDistanceSettings=!0)}_spatialBlend=0;_minDistance=1;_maxDistance=100;get volume(){return this._volume}set volume(e){this._volume=e,this.sound&&!this.context.application.muted&&(F&&console.log(this.name,`audio set volume`,e),this.sound.setVolume(e))}_volume=1;set pitch(e){this.sound&&this.sound.setPlaybackRate(e)}get pitch(){return this.sound?this.sound.getPlaybackRate():1}rollOffMode=0;_loop=!1;sound=null;helper=null;wasPlaying=!1;audioLoader=null;shouldPlay=!1;_lastClipStartedLoading=null;_audioElement=null;get Sound(){if(!this.sound&&e.userInteractionRegistered){let e=this.gameObject.getComponent(Cr)??this.context.mainCamera.getComponent(Cr)??Zt(Cr,this.context,!1);!e&&this.context.mainCamera&&(e=this.context.mainCamera.addComponent(Cr)),e?.listener?(this.sound=new ae(e.listener),this.gameObject?.add(this.sound)):F&&console.warn(`No audio listener found in scene - can not play audio`)}return this.sound}get ShouldPlay(){return this.shouldPlay}get audioContext(){return this.sound?.context}awake(){F&&console.log(`[AudioSource]`,this),this.audioLoader=new Be,this.playOnAwake&&(this.shouldPlay=!0),this.preload&&typeof this.clip==`string`&&this.audioLoader.load(this.clip,this.createAudio,()=>{},console.error)}onEnable(){this.sound&&this.gameObject.add(this.sound),e.userInteractionRegistered?this.playOnAwake&&this.context.application.isVisible&&this.play():e.registerWaitForAllowAudio(()=>{this.enabled&&!this.destroyed&&this.shouldPlay&&this.onNewClip(this.clip)}),globalThis.addEventListener(`visibilitychange`,this.onVisibilityChanged),this.context.application.addEventListener(Pt.MuteChanged,this.onApplicationMuteChanged)}onDisable(){globalThis.removeEventListener(`visibilitychange`,this.onVisibilityChanged),this.context.application.removeEventListener(Pt.MuteChanged,this.onApplicationMuteChanged),this.pause()}onVisibilityChanged=()=>{switch(document.visibilityState){case`hidden`:(this.playInBackground===!1||A.isMobileDevice())&&(this.wasPlaying=this.isPlaying,this.isPlaying&&this.pause());break;case`visible`:F&&console.log(`visible`,this.enabled,this.playOnAwake,!this.isPlaying,e.userInteractionRegistered,this.wasPlaying),this.enabled&&this.playOnAwake&&!this.isPlaying&&e.userInteractionRegistered&&this.wasPlaying&&this.play();break}};onApplicationMuteChanged=()=>{this.context.application.muted?this.sound?.setVolume(0):this.sound?.setVolume(this.volume)};createAudio=t=>{if(this.destroyed){F&&console.warn(`AudioSource destroyed, not creating audio`,this.name);return}F&&console.log(`AudioBuffer finished loading`,t);let n=this.Sound;if(!n){F&&console.warn(`Failed getting sound?`,this.name);return}n.isPlaying&&n.stop(),t&&n.setBuffer(t),n.loop=this._loop,this.context.application.muted?n.setVolume(0):n.setVolume(this.volume),n.autoplay=this.shouldPlay&&e.userInteractionRegistered,this.applySpatialDistanceSettings(),n.isPlaying&&n.stop(),e.registerWaitForAllowAudio(this.__onAllowAudioCallback)};__onAllowAudioCallback=()=>{this.shouldPlay&&this.play()};applySpatialDistanceSettings(){let e=this.sound;if(!e)return;this._needUpdateSpatialDistanceSettings=!1;let t=Rt.lerp(10*this._maxDistance/Math.max(1e-4,this.spatialBlend),this._minDistance,this.spatialBlend);switch(F&&console.log(this.name,this._minDistance,this._maxDistance,this.spatialBlend,`Ref distance=`+t),e.setRefDistance(t),e.setMaxDistance(Math.max(.01,this._maxDistance)),this.rollOffMode){case Tr.Logarithmic:e.setDistanceModel(`exponential`);break;case Tr.Linear:e.setDistanceModel(`linear`);break;case Tr.Custom:console.warn(`Custom rolloff for AudioSource is not supported: `+this.name);break}this.spatialBlend>0?F&&!this.helper&&(this.helper=new dr(e,e.getRefDistance()),e.add(this.helper)):this.helper&&this.helper.parent&&this.helper.removeFromParent()}async onNewClip(e){if(e&&(this.clip=e),typeof e==`string`)if(F&&console.log(e),e.endsWith(`.mp3`)||e.endsWith(`.wav`)){if(this.audioLoader||=new Be,this.shouldPlay=!0,this._lastClipStartedLoading===e){F&&console.log(`Is currently loading:`,this._lastClipStartedLoading,this);return}this._lastClipStartedLoading=e,F&&console.log(`load audio`,e);let t=await this.audioLoader.loadAsync(e).catch(console.error);if(this.destroyed)return;this._lastClipStartedLoading===e&&(this._lastClipStartedLoading=null),t&&this.createAudio(t)}else console.warn(`Unsupported audio clip type`,e);else this.shouldPlay=!0,this.createAudio()}play(e=void 0){!e&&this.clip&&(e=this.clip),e!==void 0&&typeof e!=`string`&&!(e instanceof MediaStream)&&(T()&&console.warn(`Called play on AudioSource with unknown argument type:`,e+` +Using the assigned clip instead:`,this.clip),e=this.clip);let t=!this.sound||e&&e!==this.clip;if(typeof e==`string`&&!this.audioLoader&&(t=!0),(e instanceof MediaStream||typeof e==`string`)&&(this.clip=e),t){this.shouldPlay=!0,this.onNewClip(e);return}if(this.shouldPlay=!0,this._hasEnded=!1,F&&console.log(`play`,this.sound?.getVolume(),this.sound),this.sound&&!this.sound.isPlaying){let e=this.context.application.muted;e&&this.sound.setVolume(0),this.gameObject?.add(this.sound),this.clip instanceof MediaStream?(this.sound.setMediaStreamSource(this.clip),this._audioElement||(this._audioElement=document.createElement(`audio`),this._audioElement.style.display=`none`),this._audioElement.parentNode||this.context.domElement.shadowRoot?.append(this._audioElement),this._audioElement.srcObject=this.clip,this._audioElement.autoplay=!1):(this._audioElement&&this._audioElement.remove(),this.sound.play(e?.1:0))}}pause(){F&&console.log(`Pause`,this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.isPlaying&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,this.sound.pause()),this._audioElement?.remove()}stop(){F&&console.log(`Pause`,this),this._hasEnded=!0,this.shouldPlay=!1,this.sound&&this.sound.source&&(this._lastContextTime=this.sound?.context.currentTime,F&&console.log(this._lastContextTime),this.sound.stop()),this._audioElement?.remove()}_lastContextTime=0;_hasEnded=!0;_needUpdateSpatialDistanceSettings=!1;update(){this.helper&&(this.isPlaying&&this.helper.update(),this.helper.visible=this.isPlaying),this._needUpdateSpatialDistanceSettings&&this.applySpatialDistanceSettings(),this.sound&&!this.sound.isPlaying&&this.shouldPlay&&!this._hasEnded&&(this._hasEnded=!0,F&&console.log(`Audio clip ended`,this.clip),this.dispatchEvent(new CustomEvent(`ended`,{detail:this})))}};wr([E(URL)],I.prototype,`clip`,void 0),wr([E()],I.prototype,`playOnAwake`,void 0),wr([E()],I.prototype,`preload`,void 0),wr([E()],I.prototype,`playInBackground`,void 0),wr([E()],I.prototype,`loop`,null),wr([E()],I.prototype,`spatialBlend`,null),wr([E()],I.prototype,`minDistance`,null),wr([E()],I.prototype,`maxDistance`,null),wr([E()],I.prototype,`volume`,null),wr([E()],I.prototype,`pitch`,null),wr([E()],I.prototype,`rollOffMode`,void 0);var Er=D(`debugautosync`),Dr=Symbol(`syncerId`),Or=new class{_syncers={};getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];let t=new kr(e);return t[Dr]=e.guid,this._syncers[t[Dr]]=t,t}removeSyncer(e){delete this._syncers[e[Dr]]}},kr=class{comp;constructor(e){this.comp=e}hasChanges=!1;changedProperties={};get networkingKey(){return this.comp.guid}_isReceiving=!1;_isInit=!1;init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this.comp.context.post_render_callbacks.push(this.onHandleSending),this.comp.context.connection.beginListen(this.networkingKey,this.onHandleReceiving);let t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}destroy(){this._isInit&&=(this.comp.context.post_render_callbacks.splice(this.comp.context.post_render_callbacks.indexOf(this.onHandleSending),1),this.comp.context.connection.stopListen(this.networkingKey,this.onHandleReceiving),this.comp=null,!1)}notifyChanged(e,t){this._isReceiving||(Er&&console.log(`Property changed: `+e,t),this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending=()=>{if(!this.hasChanges)return;this.hasChanges=!1;let e=this.comp.context.connection;if(!e||!e.isConnected||!e.isInRoom){for(let e in this.changedProperties)delete this.changedProperties[e];return}for(let t in this.changedProperties){let n=this.changedProperties[t];Er&&console.log(`SEND`,this.comp.guid,this.networkingKey),e.send(this.networkingKey,{guid:this.comp.guid,property:t,data:n},hn.Queued),delete this.changedProperties[t]}};onHandleReceiving=e=>{if(Er&&console.log(`SYNCFIELD RECEIVE`,this.comp.name,this.comp.guid,e),this._isInit&&this.comp&&e.guid===this.comp.guid)try{this._isReceiving=!0,this.comp[e.property]=e.data}catch(e){console.error(e)}finally{this._isReceiving=!1}}};function Ar(e,t){let n=t!==e;return!n&&e&&t&&(Array.isArray(e)&&Array.isArray(t)||typeof e==`object`&&typeof t==`object`)&&(n=!0),n}var jr=Symbol(`AutoSyncHandler`);function Mr(e){if(e[jr])return e[jr];let t=Or.getOrCreateSyncer(e);return t?.init(e),e[jr]=t,t}function Nr(e){let t=e[jr];t&&(Or.removeSyncer(t),t.destroy(),delete e[jr])}var Pr=function(e=null){return function(t,n){let r=``;r=typeof n==`string`?n:n.name;let i=null,a;typeof e==`string`?a=t[e]:typeof e==`function`&&(a=e),a==null&&(T()||Er)&&e!=null&&console.warn(`syncField: no callback function found for property "`+r+`"`,`"`+e+`"`);let o=t,s=o.__internalAwake;if(typeof s!=`function`){(Er||T())&&console.error(`@syncField can currently only used on Needle Engine Components, custom object of type "`+t?.constructor?.name+`" is not supported`,t);return}Er&&console.log(r);let c=Symbol(r);o.__internalAwake=function(){if(this[c]===void 0){if(this[c]=this[r],i=Or.getOrCreateSyncer(this),Object.getOwnPropertyDescriptor(this,r)?.set===void 0){let e=!1;Object.defineProperty(this,r,{set:function(t){let n=this[c];if(this[c]=t,e){(T()||Er)&&console.warn(`Recursive call detected`,r);return}e=!0;try{let e=Ar(t,n);Er&&console.log(`SyncField assignment`,r,`changed?`,e,t,a),e&&a?.call(this,t,n)!==!1&&Mr(this)?.notifyChanged(r,t)}finally{e=!1}},get:function(){return this[c]},configurable:!0,enumerable:!0})}i?.init(this),s.call(this)}};let l=o.__internalDestroy;o.__internalDestroy=function(){Nr(this),l.call(this)}}},Fr=new Map;function Ir(e,t){if(Fr.has(e))return Fr.get(e);let n=Lr(new URL(e,window.location.href),t);return Fr.set(e,n),n.finally(()=>{Fr.delete(e)}),n}async function Lr(e,t){if(!e)return Promise.resolve(null);let n=e.pathname,r=e.toString().toLowerCase().includes(`pmrem`)||e.searchParams.get(`pmrem`)!=null,i=n.endsWith(`.exr`),a=n.endsWith(`.hdr`),o=n.endsWith(`.ktx2`),s;if(i)s=new lr;else if(a)s=new hr;else if(o){let{ktx2Loader:e}=ir(t);s=e}else s=new pe;let c=e.toString();return await s.loadAsync(c).then(e=>{if(e){let t=n.lastIndexOf(`/`);e.name=n.substring(t>=0?t+1:0),r?e.mapping=306:e.mapping=304,s instanceof pe&&(e.colorSpace=ue)}return e}).catch(t=>(console.warn(`Failed to load texture from url:`,e),null))}var Rr=D(`debugavatar`),zr=class e extends N{static getAvatar(t){return t>=0&&t{this.target&&e&&e.guid===this.avatar?.guid&&Xe(this.target,e.position)})}update(){if((!this.context.connection.isConnected||this._model?.hasOwnership)&&(Br.LastChangeTime!==this._lastPoiChangedTime&&(this._lastPoiChangedTime=Br.LastChangeTime,this._lookDuration=0),this.selectTarget(),this._currentTargetObject&&this.context.time.frameCount%10==0&&this.target)){let e=Yt(this._currentTargetObject);Xe(this.target,e),this.context.connection.isConnected&&this.avatar&&(this.context.connection.send(Vr.TargetChanged,this._targetModel),this._targetModel.guid=this.avatar.guid,this._targetModel.position.copy(e))}}selectTarget(){if(this.context.time.time-this._lastUpdateTime>this._lookDuration){this._lastUpdateTime=this.context.time.time,this._lookDuration=Math.random()*.5+.2;let e=Br.Pois;if(e.length>0){let t=e[Math.floor(Math.random()*e.length)];if(t&&t.obj){if(t.avatar&&t.avatar===this.avatar)return;this._currentTargetObject=t.obj}}}}},L=D(`debugnetworkingstreams`),R;(function(e){e.Connected=`peer-user-connected`,e.StreamReceived=`receive-stream`,e.StreamEnded=`call-ended`,e.Disconnected=`peer-user-disconnected`,e.UserJoined=`user-joined`})(R||={});var Wr=class{type=R.StreamEnded;userId;direction;constructor(e,t){this.userId=e,this.direction=t}},Gr=class{type=R.StreamReceived;userId;stream;target;constructor(e,t,n){this.userId=e,this.stream=t,this.target=n}},Kr=class{guid;peerId;dontSave=!0;constructor(e,t){this.guid=e.id,this.peerId=t}},qr;(function(e){e.Incoming=`incoming`,e.Outgoing=`outgoing`})(qr||={});var Jr=class extends je{peerId;userId;direction;call;get stream(){return this._stream}_stream=null;_isDisposed=!1;close(){this._isDisposed||(this._isDisposed=!0,this.call.close(),Qr(this._stream))}get isOpen(){return this.call.peerConnection?.connectionState===`connected`}get isOpening(){return this.call.peerConnection?.connectionState===`connecting`}get isClosed(){return!this.isOpen||this._isDisposed}constructor(e,t,n,r=null){super(),this.peerId=t.peer,this.userId=e,this.call=t,this.direction=n,this._stream=r,t.on(`stream`,t=>{if(L&&console.log(`Receive stream`,` +Audio:`,t.getAudioTracks(),` +Video:`,t.getVideoTracks()),this._stream=t,n===qr.Incoming){let n=new Gr(e,t,this);this.dispatchEvent(n)}}),t.on(`close`,()=>{this.dispatchEvent(new Wr(e,n))})}};function Yr(e){return e=e.replace(`a=fmtp:111 minptime=10;useinbandfec=1`,`a=fmtp:111 ptime=5;useinbandfec=1;stereo=1;maxplaybackrate=48000;maxaveragebitrat=128000;sprop-stereo=1`),e}var Xr=class e extends je{static instances=new Map;static getOrCreate(t,n){if(e.instances.has(n))return e.instances.get(n);let r=new e(t,n);return e.instances.set(n,r),r}getMyPeerId(){if(this.context.connection.connectionId)return this.getPeerIdFromUserId(this.context.connection.connectionId)}getPeerIdFromUserId(e){return this.id+`-`+e}getUserIdFromPeerId(e){return e.substring(this.id.length+1)}makeCall(e,t){if(!t?.id){L?console.warn(`Can not make a call: mediastream has no id or is undefined`):console.debug(`Can not make a call: mediastream has no id or is undefined`);return}let n={metadata:{userId:this.context.connection.connectionId,streamId:t.id},sdpTransform:e=>Yr(e)},r=this._peer?.call(e,t,n);if(r){let n=this.registerCall(r,qr.Outgoing,t);return L&&console.warn(`📞 CALL ${e}`,` +Outgoing:`,this._outgoingCalls,` +Incoming:`,this._incomingCalls),n}else L&&console.error(`Failed to make call`,e,t,this._peer)}closeAll(){for(let e of this._incomingCalls)e.close();for(let e of this._outgoingCalls)e.close();this.updateCalls()}updateCalls=()=>{for(let e=this._incomingCalls.length-1;e>=0;e--){let t=this._incomingCalls[e];t.isClosed&&!t.isOpening&&this._incomingCalls.splice(e,1)}for(let e=this._outgoingCalls.length-1;e>=0;e--){let t=this._outgoingCalls[e],n=!1;t.isClosed&&!t.isOpening&&(t.stream?.active?L&&console.warn(`!!! Stream is still active, don't remove call`,t.userId,`Your id: `+this.context.connection.connectionId):(L&&console.warn(`!!! Remove closed call`,t.userId),n=!0)),this.context.connection.userIsInRoom(t.userId)===!1&&(L&&console.warn(`!!! User is not in room anymore, remove call`,t.userId),n=!0),n&&(t.close(),this._outgoingCalls.splice(e,1))}};get peer(){return this._peer}get incomingCalls(){return this._incomingCalls}id;context;_incomingCalls=[];_outgoingCalls=[];_peer;constructor(e,t){super(),this.context=e,this.id=t,this.setupPeer();let n=Object.getOwnPropertyDescriptor(navigator,`getUserMedia`)?.writable;try{n?navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia:L&&console.warn(`[PeerJs] getUserMedia is not writable`)}catch(e){L&&console.error(`[PeerJs] Error setting getUserMedia`,e)}}_enabled=!1;_enabledPeer=!1;onConnectRoomFn=this.onConnectRoom.bind(this);enable(){this._enabled||(this._enabled=!0,this.context.connection.beginListen(O.JoinedRoom,this.onConnectRoomFn),this.subscribePeerEvents())}disable(){this._enabled&&(this._enabled=!1,this.context.connection.stopListen(O.JoinedRoom,this.onConnectRoomFn),this.unsubscribePeerEvents())}onConnectRoom(){this.setupPeer()}async setupPeer(){if(this.context.connection.connectionId&&!this._enabledPeer){if(this._enabledPeer=!0,!this._peer){let e=this.getMyPeerId();e?this._peer=await gn(e):console.error(`Failed to setup peerjs because we dont have a connection id`,this.context.connection.connectionId)}this._enabled&&this.subscribePeerEvents()}}subscribePeerEvents(){this._peer&&(this._peer.on(`open`,this.onPeerConnect),this._peer.on(`close`,this.onPeerClose),this._peer.on(`call`,this.onPeerReceivingCall),this._peer.on(`disconnected`,this.onPeerDisconnected),this._peer.on(`error`,this.onPeerError))}unsubscribePeerEvents(){this._peer&&(this._peer.off(`open`,this.onPeerConnect),this._peer.off(`close`,this.onPeerClose),this._peer.off(`call`,this.onPeerReceivingCall),this._peer.off(`disconnected`,this.onPeerDisconnected),this._peer.off(`error`,this.onPeerError))}onPeerConnect=e=>{if(L&&console.log(`PEER opened as`,e),e===null){console.error(`Peer connection failed`,e);return}this.context.connection.send(R.Connected,new Kr(this,e))};onPeerClose=()=>{L&&console.log(`PEER closed`),this.updateCalls()};onPeerDisconnected=()=>{L&&console.log(`PEER disconnected`),this.updateCalls()};onPeerError=e=>{L&&console.error(`PEER error`,e)};onPeerReceivingCall=e=>{e.answer(void 0,{sdpTransform:e=>Yr(e)}),this.registerCall(e,qr.Incoming,null)};registerCall(e,t,n){let r=e.metadata;(!r||!r.userId)&&console.error(`Missing call metadata`,e);let i=r.userId;t===qr.Incoming&&L?console.warn(`← Receive call from`,e.metadata,e.connectionId):L&&console.warn(`→ Make call to`,e.metadata);let a=t===qr.Incoming?this._incomingCalls:this._outgoingCalls,o=new Jr(i,e,t,n);return a.push(o),e.on(`error`,e=>{console.error(`Call error`,e)}),e.on(`close`,()=>{L&&console.log(`Call ended`,e.metadata);let n=a.indexOf(o);n!==-1&&a.splice(n,1),o.close(),this.dispatchEvent(new Wr(i,t))}),o.addEventListener(R.StreamEnded,e=>{this.dispatchEvent(e)}),t===qr.Incoming&&(o.addEventListener(R.StreamReceived,e=>{this.dispatchEvent(e)}),e.on(`stream`,()=>{L&&console.log(`Received stream for call`,e.metadata);let t=0,n=setInterval(()=>{let r=t===0;!o.isOpen&&r&&(L&&console.warn(`Close call because stream is not active`,e.metadata),t+=1,clearInterval(n),o.close())},2e3)})),o}},Zr=class e extends je{static create(t,n){let r=Xr.getOrCreate(t.context,n||t.context.connection.connectionId||t.guid);return new e(t.context,r)}context;peer;_sendingStreams=new Map;debug=!1;constructor(e,t){if(super(),lt(e)){let n=e;e=n.context,t=Xr.getOrCreate(n.context,n.guid)}else typeof t==`string`&&(t=Xr.getOrCreate(e,t));if(!e)throw Error(`Failed to create NetworkedStreams because context is undefined`);if(!(e instanceof Xt))throw Error(`Failed to create NetworkedStreams because context is not an instance of Context`);if(!t)throw Error(`Failed to create NetworkedStreams because peer is undefined`);this.context=e,this.peer=t,L&&(this.debug=!0)}startSendingStream(e){this._sendingStreams.has(e)?console.warn(`Received start sending stream with stream that is already being sent`):(this._sendingStreams.set(e,[]),this.updateSendingCalls())}stopSendingStream(e){if(e){let t=this._sendingStreams.get(e);if(t){for(let e of t)e.close();t.length=0}this._sendingStreams.delete(e),t&&this.debug&&this.debugLogCurrentState()}this.updateSendingCalls()}_enabled=!1;get enabled(){return this._enabled}enable(){this._enabled||(this._enabled=!0,this.peer.enable(),this.peer.addEventListener(R.StreamReceived,this.onCallStreamReceived),this.peer.addEventListener(R.StreamEnded,this.onCallEnded),this.context.connection.beginListen(R.Connected,this.onUserConnected),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.UserJoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.UserLeftRoom,this.onUserLeft),this.context.connection.beginListen(O.LeftRoom,this.onLeftRoom),this._tickIntervalId=setInterval(this.tick,5e3))}disable(){this._enabled&&(this._enabled=!1,this.peer.disable(),this.peer.removeEventListener(R.StreamReceived,this.onCallStreamReceived),this.peer.removeEventListener(R.StreamEnded,this.onCallEnded),this.context.connection.stopListen(R.Connected,this.onUserConnected),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.UserJoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.UserLeftRoom,this.onUserLeft),this.context.connection.stopListen(O.LeftRoom,this.onLeftRoom),this._tickIntervalId!=null&&(clearInterval(this._tickIntervalId),this._tickIntervalId=void 0))}_tickIntervalId;tick=()=>{this.updateSendingCalls()};onJoinedRoom=e=>{this._sendingStreams.size>0&&(this.debug&&console.warn(`${e?.userId?`User ${e.userId}`:`You`} joined room`,e,this._sendingStreams.size),this.updateSendingCalls())};onLeftRoom=e=>{this.debug&&console.warn(`${e?.userId||`You`} left room`,e),this.stopCallsToUsersThatAreNotInTheRoomAnymore(),this.peer.closeAll()};onCallStreamReceived=e=>{this.debug&&console.log(`Call with `+e.userId+` started`),this.dispatchEvent({type:R.StreamReceived,target:this,stream:e.stream,userId:e.userId}),this.debug&&this.debugLogCurrentState()};onCallEnded=e=>{this.debug&&console.log(`Call with `+e.userId+` ended`),this.dispatchEvent(e),this.debug&&this.debugLogCurrentState()};onUserConnected=e=>{if(this.peer.id===e.guid){this.debug&&console.log(`PEER USER CONNECTED`,e.guid,e,this._sendingStreams.size);let t=this._sendingStreams.keys().next().value;if(!t)return;this.peer.makeCall(e.peerId,t)}else L&&console.log(`Unknown user connected`,e.guid,e.peerId)};onUserLeft=e=>{this.debug&&console.log(`User left room: `+e.userId),this.stopCallsToUsersThatAreNotInTheRoomAnymore()};updateSendingCalls(){let e=this.context.connection.connectionId;for(let t of this._sendingStreams.keys()){let n=this._sendingStreams.get(t)||[];for(let r of this.context.connection.usersInRoom()){if(r===e)continue;let i=this.peer.getPeerIdFromUserId(r);if(n.find(e=>e.peerId===i&&e.direction===qr.Outgoing&&!e.isClosed&&e.stream?.active))L&&console.debug(`Already have a call with user `+r+` / peer `+i);else{let e=this.peer.makeCall(i,t);e&&n.push(e)}}this._sendingStreams.set(t,n)}this.stopCallsToUsersThatAreNotInTheRoomAnymore()}stopCallsToUsersThatAreNotInTheRoomAnymore(){for(let e of this._sendingStreams.keys()){let t=this._sendingStreams.get(e);if(t)for(let e=t.length-1;e>=0;e--){let n=t[e];this.context.connection.userIsInRoom(n.userId)?L&&(this.context.connection.connectionId===n.userId?console.warn(`You are still in the room [${e}] ${n.userId}`):console.log(`User is still in room [${e}] ${n.userId}`)):(L&&console.log(`Remove call ${[e]} to user that is not in room anymore ${n.userId}`),n.close(),t.splice(e,1))}}this.peer.updateCalls(),this.debug&&this.debugLogCurrentState()}debugLogCurrentState(){console.warn(`You (${this.context.connection.connectionId}) are currently sending ${this._sendingStreams.size} and receiving ${this.peer.incomingCalls.length} calls (${this.peer.incomingCalls.map(e=>e.userId).join(`, `)})`,this.peer.incomingCalls)}};function Qr(e){if(e&&e instanceof MediaStream)for(let t of e.getTracks())t.stop()}var $r=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ei=`noVoip`,ti=D(`debugvoip`),ni=class extends N{autoConnect=!0;runInBackground=!0;createMenuButton=!0;debug=!1;_net;_menubutton;awake(){ti&&(this.debug=!0),this.debug&&(console.log(`VOIP debugging: press 'v' to toggle mute or 'c' to toggle connect/disconnect`),window.addEventListener(`keydown`,async e=>{switch(e.key.toLowerCase()){case`v`:console.log(`MUTE?`,!this.isMuted),this.setMuted(!this.isMuted);break;case`c`:this.isSending?this.disconnect():this.connect();break}}),window.addEventListener(`blur`,()=>{console.log(`VOIP: MUTE ON BLUR`),this.setMuted(!0)}),window.addEventListener(`focus`,()=>{console.log(`VOIP: UNMUTE ON FOCUS`),this.setMuted(!1)}))}onEnable(){this._net||=Zr.create(this),this.debug&&(this._net.debug=!0),this._net.addEventListener(R.StreamReceived,this.onReceiveStream),this._net.addEventListener(R.StreamEnded,this.onStreamEnded),this._net.enable(),this.autoConnect&&this.context.connection.isConnected&&this.connect(),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.LeftRoom,this.onLeftRoom),this.onEnabledChanged(),this.updateButton(),window.addEventListener(`visibilitychange`,this.onVisibilityChanged)}onDisable(){this._net&&(this._net.stopSendingStream(this._outputStream),this._net.removeEventListener(R.StreamReceived,this.onReceiveStream),this._net.removeEventListener(R.StreamEnded,this.onStreamEnded),this._net?.disable()),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.LeftRoom,this.onLeftRoom),this.onEnabledChanged(),this.updateButton(),window.removeEventListener(`visibilitychange`,this.onVisibilityChanged)}onDestroy(){this._menubutton?.remove(),this._menubutton=void 0}_allowSending=!0;_outputStream=null;get isSending(){return this._outputStream!=null&&this._outputStream.active}async connect(e){return this._net?this.context.connection.isConnected?await A.microphonePermissionsGranted()?(this._allowSending=!0,this._net?.stopSendingStream(this._outputStream),Qr(this._outputStream),this._outputStream=await this.getAudioStream(e),this._outputStream?(this.debug&&console.log(`VOIP: Got audio stream`),this._net?.startSendingStream(this._outputStream),this.updateButton(),!0):(this.updateButton(),await A.microphonePermissionsGranted()?console.error(`VOIP: Could not get audio stream - please make sure to connect an audio device and grant microphone permissions`):Nn(`Microphone permissions not granted: Please grant microphone permissions to use voice chat`),(this.debug||T())&&console.log(`VOIP: Failed to get audio stream`),!1)):(console.error(`Cannot connect to voice chat - microphone permissions not granted`),this.updateButton(),!1):(console.error(`Cannot connect to voice chat - not connected to server`),this.updateButton(),!1):(console.error(`Cannot connect to voice chat - NetworkedStreams not initialized. Make sure the component is enabled before calling this method.`),!1)}disconnect(e){e?.remember&&(this._allowSending=!1),this._net?.stopSendingStream(this._outputStream),Qr(this._outputStream),this._outputStream=null,this.updateButton()}setMuted(e){let t=this._outputStream?.getAudioTracks();if(t)for(let n of t)n.enabled=!e}get isMuted(){if(this._outputStream===null)return!1;let e=this._outputStream?.getAudioTracks();if(e){for(let t of e)if(!t.enabled)return!0}return!1}async updateButton(){if(this.createMenuButton){if(this._menubutton||(this._menubutton=document.createElement(`button`),this._menubutton.addEventListener(`click`,()=>{this.isSending?this.disconnect({remember:!0}):this.connect(),A.microphonePermissionsGranted().then(e=>{e||kn(`Microphone permissions not granted. Please allow your browser to use the microphone to be able to talk. Click on the button on the left side of your browser's address bar to allow microphone permissions.`)})})),this._menubutton){this.context.menu.appendChild(this._menubutton),this.activeAndEnabled?this._menubutton.style.display=``:this._menubutton.style.display=`none`,this._menubutton.title=this.isSending?`Click to disable your microphone`:`Click to enable your microphone`;let e=(this.isSending,``),t=this.isSending?`mic`:`mic_off`;await A.microphonePermissionsGranted()||(e=`No Permission`,t=`mic_off`,this._menubutton.title=`Microphone permissions not granted. Please allow your browser to use the microphone to be able to talk. This can usually be done in the addressbar of the webpage.`),this._menubutton.innerText=e,this._menubutton.prepend(Ze(t)),this.context.connection.isConnected==0?this._menubutton.setAttribute(`disabled`,``):this._menubutton.removeAttribute(`disabled`)}}else this.activeAndEnabled||this._menubutton?.remove()}getFrequency(e){return this.unsupported_getfrequency||(this.unsupported_getfrequency=!0,T()&&kn(`VOIP: getFrequency is currently not supported`),console.warn(`VOIP: getFrequency is currently not supported`)),null}async getAudioStream(e){if(!navigator.mediaDevices.getUserMedia)return console.error(`No getDisplayMedia support`),null;let t=async e=>await navigator.mediaDevices.getUserMedia({audio:e??!0,video:!1}).catch(e=>(console.warn(`VOIP failed getting audio stream`,e),null)),n=await t(e);if(!n)return null;if(A.isiOS()&&e?.deviceId===void 0){let n=(await navigator.mediaDevices.enumerateDevices()).find(e=>(e.kind===`audioinput`||e.kind===`audiooutput`)&&!e.label.includes(`iPhone`));if(n){let r=Object.assign({},e);return r.deviceId=n.deviceId,await t(r)}}return n}onJoinedRoom=async()=>{this.debug&&console.log(`VOIP: Joined room`),await Sn(300),this.autoConnect&&!this.isSending&&this._allowSending&&this.connect()};onLeftRoom=()=>{this.debug&&console.log(`VOIP: Left room`),this.disconnect();for(let e of this._incomingStreams.values())Qr(e.srcObject);this._incomingStreams.clear()};_incomingStreams=new Map;onReceiveStream=e=>{let t=e.target.userId,n=e.stream,r=this._incomingStreams.get(t);r||(r=new Audio,this._incomingStreams.set(t,r)),r.srcObject=n,r.setAttribute(`autoplay`,`true`),yt.registerWaitForInteraction(()=>{r?.play().catch(e=>{console.error(`VOIP: Failed to play audio`,e)})})};onStreamEnded=e=>{Qr(this._incomingStreams.get(e.userId)?.srcObject),this._incomingStreams.delete(e.userId)};onEnabledChanged=()=>{for(let e of this._incomingStreams){let t=e[1];t.muted=!this.enabled}};onVisibilityChanged=()=>{if(this.runInBackground)return;let e=document.visibilityState!==`visible`;this.setMuted(e);for(let t of this._incomingStreams){let n=t[1];n.muted=e}}};$r([E()],ni.prototype,`autoConnect`,void 0),$r([E()],ni.prototype,`runInBackground`,void 0),$r([E()],ni.prototype,`createMenuButton`,void 0);var ri=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ii=D(`debugmouth`),ai=class extends N{idle=[];talking=[];marker=null;voip=null;lastMouthChangeTime=0;mouthChangeLength=0;awake(){setTimeout(()=>{this.voip=k.findObjectOfType(ni,this.context),this.marker||=k.getComponentInParent(this.gameObject,zr)},3e3)}update(){if(!this.voip||this.context.time.frameCount%10!=0)return;let e=this.marker?.connectionId??null;if(!e){ii&&(e=null);return}let t=this.voip.getFrequency(e)??0;this.updateLips(t)}updateLips(e){if(this.context.time.time-this.lastMouthChangeTime>this.mouthChangeLength){if(this.mouthChangeLength=.05+Math.random()*.1,this.talking&&this.talking.length>0&&e>30){this.lastMouthChangeTime=this.context.time.time;let e=Math.floor(Math.random()*this.talking.length);this.setMouthShapeActive(this.talking,e)}else if(this.idle.length>0&&this.context.time.time-this.lastMouthChangeTime>.5){this.lastMouthChangeTime=this.context.time.time;let e=Math.floor(Math.random()*this.idle.length);this.setMouthShapeActive(this.idle,e)}}}setMouthShapeActive(e,t){if(e){e==this.idle?this.talking.map(e=>e.visible=!1):this.idle.map(e=>e.visible=!1);for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ci=D(`debugxrflags`),li=D(`disablexrflags`);li&&console.warn(`XRFlags are disabled`);var ui;(function(e){e[e.Never=0]=`Never`,e[e.Browser=1]=`Browser`,e[e.AR=2]=`AR`,e[e.VR=4]=`VR`,e[e.FirstPerson=8]=`FirstPerson`,e[e.ThirdPerson=16]=`ThirdPerson`,e[e.All=4294967295]=`All`})(ui||={});var di=class e{static Global=new e;Mask=ui.Browser|ui.ThirdPerson;Has(e){return(this.Mask&e)!==0}Set(e){ci&&console.warn(`Set XR flag state to`,e),this.Mask=e,fi.Apply()}Enable(e){this.Mask|=e,fi.Apply()}Disable(e){this.Mask&=~e,fi.Apply()}Toggle(e){this.Mask^=e,fi.Apply()}EnableAll(){this.Mask=-1,fi.Apply()}DisableAll(){this.Mask=0,fi.Apply()}},fi=class e extends N{static registry=[];static Apply(){for(let e of this.registry)e.UpdateVisible(di.Global)}static firstApply;static buffer=new di;visibleIn;awake(){e.registry.push(this)}onEnable(){e.firstApply?this.UpdateVisible(di.Global):(e.firstApply=!0,e.Apply())}onDestroy(){let t=e.registry.indexOf(this);t>=0&&e.registry.splice(t,1)}get isOn(){return this.gameObject.visible}UpdateVisible(t=null){if(li)return;let n,r=t;if(r&&typeof r==`number`&&(console.assert(typeof r==`number`,`XRFlag.UpdateVisible: state must be a number`,r),ci&&console.log(r),e.buffer.Mask=r,t=e.buffer),t instanceof di?(ci&&console.warn(this.name,`use passed in mask`,t.Mask,this.visibleIn),n=t.Has(this.visibleIn)):(ci&&console.log(this.name,`use global mask`),di.Global.Has(this.visibleIn)),n!==void 0)if(n)ci&&console.log(this.name,`is visible`,this.gameObject.uuid),k.setActive(this.gameObject,!0);else{if(ci&&console.log(this.name,`is not visible`,this.gameObject.uuid),!this.gameObject.visible)return;this.gameObject.visible=!1}}};si([E()],fi.prototype,`visibleIn`,void 0);var pi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},mi=class extends N{eyes=[];lastBlinkTime=0;blinkLength=0;eyesOpen=!0;state=null;awake(){this.state=k.getComponentInParent(this.gameObject,fi)}update(){if(!(!this.gameObject||!this.gameObject.visible)&&!(!this.eyes||!Array.isArray(this.eyes)||this.eyes.length===0)&&this.context.time.time-this.lastBlinkTime>this.blinkLength){if(this.lastBlinkTime=this.context.time.time,this.state&&!this.state.isOn||!this.activeAndEnabled)return;if(this.eyesOpen=!this.eyesOpen,this.blinkLength=Math.random(),this.eyesOpen?(this.blinkLength*=3,this.blinkLength+=.5,Math.random()<.1&&(this.blinkLength=.1+Math.random()*.2)):(this.blinkLength*=Math.random()*.2,this.blinkLength+=.1),Math.random()<.1&&(this.blinkLength*=3),this.blinkLength=Math.max(.2,this.blinkLength),this.blinkLength=Math.min(3,this.blinkLength),this.eyes)for(let e of this.eyes)e&&(e.visible=this.eyesOpen)}}};pi([E(S)],mi.prototype,`eyes`,void 0),pi([E()],mi.prototype,`lastBlinkTime`,void 0),pi([E()],mi.prototype,`blinkLength`,void 0),pi([E()],mi.prototype,`eyesOpen`,void 0);var hi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},gi=class e extends N{head=null;eyes=null;target=null;brain=null;awake(){this.brain||=k.getComponentInParent(this.gameObject,Ur),this.brain||=k.addComponent(this.gameObject,Ur),this.brain&&this.target&&(this.brain.controlledTarget=this.target)}vec=new r;static forward=new r(0,0,1);currentTargetPoint=new r;update(){let t=this.target;if(t&&this.head){let n=this.eyes;if(n){let r=Yt(t);this.currentTargetPoint.lerp(r,this.context.time.deltaTime/.1);let i=Yt(this.head),a=this.vec.copy(this.currentTargetPoint).sub(i).normalize();if(a.length()<.1)return;let o=e.forward;if(o.set(0,0,1),o.applyQuaternion(Rn(this.head)),o.dot(a)>.45)for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vi=class extends N{get isCollider(){return!0}attachedRigidbody=null;isTrigger=!1;sharedMaterial;membership=[0];filter;awake(){super.awake(),this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}start(){this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}onEnable(){this.attachedRigidbody||=this.gameObject.getComponentInParent(vt)}onDisable(){this.context.physics.engine?.setColliderEnabled(this,!1)||this.context.physics.engine?.removeBody(this)}onDestroy(){this.context.physics.engine?.removeBody(this)}get body(){return this.context.physics.engine?.getBody(this)}updateProperties=()=>{this.context.physics.engine?.updateProperties(this)};updatePhysicsMaterial(){this.context.physics.engine?.updatePhysicsMaterial(this)}};_i([E(vt)],vi.prototype,`attachedRigidbody`,void 0),_i([E()],vi.prototype,`isTrigger`,void 0),_i([E()],vi.prototype,`sharedMaterial`,void 0),_i([E()],vi.prototype,`membership`,void 0),_i([E()],vi.prototype,`filter`,void 0);var yi=class extends vi{radius=.5;center=new r(0,0,0);onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addSphereCollider(this),tt(this.gameObject.scale,this.updateProperties)}onDisable(){super.onDisable(),Jn(this.gameObject.scale,this.updateProperties)}onValidate(){this.updateProperties()}};_i([Kn(),E()],yi.prototype,`radius`,void 0),_i([E(r)],yi.prototype,`center`,void 0);var bi=class e extends vi{static add(t,n){let r=_n(t,e);return r.autoFit(),n?.rigidbody===!0&&_n(t,vt,{isKinematic:!1}),r}size=new r(1,1,1);center=new r(0,0,0);onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addBoxCollider(this,this.size),tt(this.gameObject.scale,this.updateProperties)}onDisable(){super.onDisable(),Jn(this.gameObject.scale,this.updateProperties)}onValidate(){this.updateProperties()}autoFit(e){let t=this.gameObject,n=t.position.clone(),i=t.quaternion.clone(),a=t.scale.clone(),o=t.parent;t.position.set(0,0,0),t.quaternion.set(0,0,0,1),t.scale.set(1,1,1),t.parent=null,t.updateMatrix();let s=fn([t]);t.position.copy(n),t.quaternion.copy(i),t.scale.copy(a),t.parent=o,e?.debug===!0&&Ln.DrawWireBox3(s,16768256,20),this.size=s.getSize(new r)||new r(1,1,1),this.center=s.getCenter(new r)||new r(0,0,0),this.size.length()<=0&&this.size.set(.01,.01,.01)}};_i([Kn(),E(r)],bi.prototype,`size`,void 0),_i([E(r)],bi.prototype,`center`,void 0);var xi=class extends vi{sharedMesh;convex=!1;onEnable(){if(super.onEnable(),!(!this.context.physics.engine||this.context.physics.engine.setColliderEnabled(this,!0)))if(this.sharedMesh?.isMesh||(this.gameObject instanceof x||this.gameObject instanceof ve)&&(this.sharedMesh=this.gameObject),this.sharedMesh?.isMesh)this.context.physics.engine.addMeshCollider(this,this.sharedMesh,this.convex),P.assignMeshLOD(this.sharedMesh,0).then(e=>{e&&this.activeAndEnabled&&this.context.physics.engine&&this.sharedMesh&&(this.context.physics.engine.removeBody(this),this.sharedMesh.geometry=e,this.context.physics.engine.addMeshCollider(this,this.sharedMesh,this.convex))});else{let e=this.sharedMesh;if(e?.isGroup){console.warn(`MeshCollider mesh is a group \"${this.sharedMesh?.name||this.gameObject.name}\", adding all children as colliders. This is currently not fully supported (colliders can not be removed from world again)`,this);let t=[];for(let n in e.children){let r=e.children[n];r.isMesh&&(this.context.physics.engine.addMeshCollider(this,r,this.convex),t.push(P.assignMeshLOD(r,0)))}Promise.all(t).then(e=>{if(e.some(e=>e)==0)return;this.context.physics.engine?.removeBody(this);let t=new x;for(let n of e)n&&this.activeAndEnabled&&(t.geometry=n,this.context.physics.engine?.addMeshCollider(this,t,this.convex))})}else (T()||D(`showcolliders`))&&console.warn(`[MeshCollider] A MeshCollider mesh is assigned to an unknown object on \"${this.gameObject.name}\", but it's neither a Mesh nor a Group. Please double check that you attached the collider component to the right object and report a bug otherwise!`,this)}}};_i([E(x)],xi.prototype,`sharedMesh`,void 0),_i([E()],xi.prototype,`convex`,void 0);var Si=class extends vi{center=new r(0,0,0);radius=.5;height=2;onEnable(){super.onEnable(),this.context.physics.engine?.setColliderEnabled(this,!0)||this.context.physics.engine?.addCapsuleCollider(this,this.height,this.radius)}};_i([E(r)],Si.prototype,`center`,void 0),_i([E()],Si.prototype,`radius`,void 0),_i([E()],Si.prototype,`height`,void 0);var Ci=Symbol(`customVisibilityFlag`);function wi(e,t){e.layers[Ci]=t}var Ti=Symbol(`DidPatchLayers`);function Ei(){let e=i.prototype;if(e[Ti])return;e[Ti]=!0;let t=e.test;e.test=function(e){return this[Ci]===!1?!1:t.call(this,e)}}var Di=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Oi=D(`debugcontactshadows`);Bn(e=>{let t=e.domElement.getAttribute(`contactshadows`)||e.domElement.getAttribute(`contact-shadows`);if(t!=null&&t!=`0`&&t!=`false`){console.debug("Auto-creating ContactShadows because of `contactshadows` attribute");let n=ki.auto(e),r=parseFloat(t);isNaN(r)||(n.opacity=r,n.darkness=r)}});var ki=class e extends N{static _instances=new Map;static auto(t,n){if(t||=Xt.Current,!t)throw Error(`No context provided and no current context set.`);let r=this._instances.get(t);if(!r||r.destroyed){let n=new S;n.name=`ContactShadows`,r=_n(n,e,{autoFit:!1,occludeBelowGround:!1}),this._instances.set(t,r)}return t.scene.add(r.gameObject),r.fitShadows(n),r}autoFit=!1;darkness=.5;opacity=.5;blur=4;occludeBelowGround=!1;backfaceShadows=!0;minSize;manualUpdate=!1;set needsUpdate(e){this._needsUpdate=e}get needsUpdate(){return this._needsUpdate}_needsUpdate=!1;shadowsRoot=new S;shadowCamera;shadowGroup=new ve;renderTarget;renderTargetBlur;plane;occluderMesh;blurPlane;planeMaterial;depthMaterial;horizontalBlurMaterial;verticalBlurMaterial;textureSize=512;fitShadows(e={}){Oi&&console.warn(`Fitting shadows to scene`),Qe(this.shadowsRoot,!1);let t=fn(e.object||this.context.scene,[this.shadowsRoot]),n=Math.max(1,this.blur/32),i=t.max.x-t.min.x,a=t.max.z-t.min.z;t.expandByVector(new r(n*i,0,n*a)),Oi&&Ln.DrawWireBox3(t,16776960,60),this.gameObject.parent&&t.applyMatrix4(this.gameObject.parent.matrixWorld.clone().invert());let o=t.min,s=Math.max(1e-5,(t.max.y-o.y)*.002);t.max.y+=s,this.shadowsRoot.position.set((o.x+t.max.x)/2,o.y-s,(o.z+t.max.z)/2),this.shadowsRoot.scale.set(t.max.x-o.x,t.max.y-o.y,t.max.z-o.z),e.positionOffset&&(e.positionOffset.x!==void 0&&(this.shadowsRoot.position.x+=e.positionOffset.x),e.positionOffset.y!==void 0&&(this.shadowsRoot.position.y+=e.positionOffset.y),e.positionOffset.z!==void 0&&(this.shadowsRoot.position.z+=e.positionOffset.z)),e.scaleFactor&&(e.scaleFactor.x!==void 0&&(this.shadowsRoot.scale.x*=e.scaleFactor.x),e.scaleFactor.y!==void 0&&(this.shadowsRoot.scale.y*=e.scaleFactor.y),e.scaleFactor.z!==void 0&&(this.shadowsRoot.scale.z*=e.scaleFactor.z)),this.applyMinSize(),this.shadowsRoot.matrixWorldNeedsUpdate=!0,Oi&&console.log(`Fitted shadows to scene`,this.shadowsRoot.scale.clone())}awake(){e._instances.set(this.context,this),this.shadowsRoot.hideFlags=wt.DontExport,Qe(this.shadowsRoot,!1)}start(){Oi&&console.log(`Create ContactShadows on `+this.gameObject.name,this),this.gameObject.add(this.shadowsRoot),this.shadowsRoot.add(this.shadowGroup),this.renderTarget=new u(this.textureSize,this.textureSize),this.renderTarget.texture.generateMipmaps=!1,this.renderTargetBlur=new u(this.textureSize,this.textureSize),this.renderTargetBlur.texture.generateMipmaps=!1;let e=new He(1,1).rotateX(Math.PI/2);this.gameObject instanceof x&&(console.warn(`ContactShadows can not be added to a Mesh. Please add it to a Group or an empty Object`),wi(this.gameObject,!1)),this.plane=new x(e,this.planeMaterial=new v({map:this.renderTarget.texture,opacity:this.opacity,color:0,transparent:!0,depthWrite:!1,side:0})),this.plane.scale.y=-1,this.plane.layers.set(2),this.shadowsRoot.add(this.plane),this.plane&&(this.plane.renderOrder=1),this.occluderMesh=new x(this.plane.geometry,new v({depthWrite:!0,stencilWrite:!0,colorWrite:!1,side:1})).translateY(-1e-4),this.occluderMesh.renderOrder=-100,this.occluderMesh.layers.set(2),this.shadowsRoot.add(this.occluderMesh),this.blurPlane=new x(e),this.blurPlane.visible=!1,this.shadowGroup.add(this.blurPlane),this.shadowCamera=new Ae(-1/2,1/2,1/2,-1/2,0,1),this.shadowCamera.layers.enableAll(),this.shadowCamera.rotation.x=Math.PI/2,this.shadowCamera.matrixWorldAutoUpdate=!1,this.shadowGroup.add(this.shadowCamera),this.shadowCamera.updateMatrix(),this.depthMaterial=new t,this.depthMaterial.userData.darkness={value:this.darkness},this.depthMaterial.blending=5,this.depthMaterial.blendEquation=104,this.depthMaterial.onBeforeCompile=e=>{this.depthMaterial&&(e.uniforms.darkness=this.depthMaterial.userData.darkness,e.fragmentShader=` + uniform float darkness; + ${e.fragmentShader.replace(`gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );`,`gl_FragColor = vec4( vec3( 1.0 ), ( 1.0 - fragCoordZ ) * darkness * opacity * (gl_FrontFacing ? 1.0 : 0.66) );`)} + `)},this.depthMaterial.depthTest=!1,this.depthMaterial.depthWrite=!1,this.horizontalBlurMaterial=new Re(cr),this.horizontalBlurMaterial.depthTest=!1,this.verticalBlurMaterial=new Re(mr),this.verticalBlurMaterial.depthTest=!1,this.shadowGroup.visible=!1,this.autoFit?this.fitShadows():this.applyMinSize()}onEnable(){this._needsUpdate=!0}onDestroy(){e._instances.get(this.context)===this&&e._instances.delete(this.context),this.renderTarget?.dispose(),this.renderTargetBlur?.dispose(),this.depthMaterial?.dispose(),this.horizontalBlurMaterial?.dispose(),this.verticalBlurMaterial?.dispose(),this.blurPlane?.geometry.dispose(),this.plane?.geometry.dispose(),this.occluderMesh?.geometry.dispose()}onBeforeRender(e){if(this.manualUpdate&&!this._needsUpdate)return;if(this._needsUpdate=!1,!this.renderTarget||!this.renderTargetBlur||!this.depthMaterial||!this.shadowCamera||!this.blurPlane||!this.shadowGroup||!this.plane||!this.horizontalBlurMaterial||!this.verticalBlurMaterial||!this.planeMaterial){Oi&&console.error(`ContactShadows: not initialized yet`);return}this.depthMaterial.userData.darkness.value=this.darkness,this.planeMaterial.opacity=this.opacity;let t=this.context.scene,n=this.context.renderer,r=n.getRenderTarget();this.shadowGroup.visible=!0,this.occluderMesh&&(this.occluderMesh.visible=!1);let i=this.plane.visible;this.plane.visible=!1,this.gameObject instanceof x&&wi(this.gameObject,!1);let a=t.background;t.background=null,t.overrideMaterial=this.depthMaterial,this.backfaceShadows?this.depthMaterial.side=2:this.depthMaterial.side=0;let o=n.getClearAlpha();n.setClearAlpha(0);let s=n.xr.enabled;n.xr.enabled=!1;let c=this.context.scene.matrixWorldAutoUpdate;this.context.scene.matrixWorldAutoUpdate=!1;let l=n.renderLists.get(t,0),u=l.transparent;Ai.length=0,l.transparent=Ai,ji.length=0;for(let e of l.opaque){if(!e.object.visible)continue;let t=e.material,n=e.material.colorWrite==0||t.wireframe===!0||mn(e.object)===!1;!n&&e.material.isLineMaterial&&(n=!0),!n&&e.material.isPointsMaterial&&(n=!0),n&&(ji.push(e.object),e.object[`needle:visible`]=e.object.visible,e.object.visible=!1)}this.shadowCamera.parent?this.shadowCamera.matrixWorld.multiplyMatrices(this.shadowCamera.parent.matrixWorld,this.shadowCamera.matrix):this.shadowCamera.matrixWorld.copy(this.shadowCamera.matrix),this.shadowCamera.matrixWorldInverse.copy(this.shadowCamera.matrixWorld).invert(),n.setRenderTarget(this.renderTarget),n.clear(),n.render(t,this.shadowCamera),l.transparent=u;for(let e of ji)e[`needle:visible`]!=null&&(e.visible=e[`needle:visible`]);t.overrideMaterial=null;let d=Math.max(this.blur,.05);this.blurShadow(d*2),this.blurShadow(d*.5),this.shadowGroup.visible=!1,this.occluderMesh&&(this.occluderMesh.visible=this.occludeBelowGround),this.plane.visible=i,n.setRenderTarget(r),n.setClearAlpha(o),t.background=a,n.xr.enabled=s,this.context.scene.matrixWorldAutoUpdate=c}blurShadow(e){if(!this.blurPlane||!this.shadowCamera||!this.renderTarget||!this.renderTargetBlur||!this.horizontalBlurMaterial||!this.verticalBlurMaterial)return;this.blurPlane.visible=!0;let t=this.shadowsRoot.worldScale,n=(t.x+t.z)/2,r=t.z/n,i=t.x/n;this.blurPlane.material=this.horizontalBlurMaterial,this.blurPlane.material.uniforms.tDiffuse.value=this.renderTarget.texture,this.horizontalBlurMaterial.uniforms.h.value=e*1/this.textureSize*r;let a=this.context.renderer,o=a.getRenderTarget();a.setRenderTarget(this.renderTargetBlur),a.render(this.blurPlane,this.shadowCamera),this.blurPlane.material=this.verticalBlurMaterial,this.blurPlane.material.uniforms.tDiffuse.value=this.renderTargetBlur.texture,this.verticalBlurMaterial.uniforms.v.value=e*1/this.textureSize*i,a.setRenderTarget(this.renderTarget),a.render(this.blurPlane,this.shadowCamera),this.blurPlane.visible=!1,a.setRenderTarget(o)}applyMinSize(){this.minSize&&this.shadowsRoot.scale.set(Math.max(this.minSize.x||0,this.shadowsRoot.scale.x),Math.max(this.minSize.y||0,this.shadowsRoot.scale.y),Math.max(this.minSize.z||0,this.shadowsRoot.scale.z))}};Di([E()],ki.prototype,`autoFit`,void 0),Di([E()],ki.prototype,`darkness`,void 0),Di([E()],ki.prototype,`opacity`,void 0),Di([E()],ki.prototype,`blur`,void 0),Di([E()],ki.prototype,`occludeBelowGround`,void 0),Di([E()],ki.prototype,`backfaceShadows`,void 0);var Ai=[],ji=[],Mi=D(`debugstencil`);function Ni(e,t){return(e&1<=0;e--){let n=r[e];if(Ni(n.layer,t)){Mi&&console.log(n),setTimeout(()=>{ft()&&bt(t.gameObject)&&(kn(`Stencil not supported on instanced objects`),console.warn(`Stencil not supported on instanced objects`,t))},500);for(let e=0;et.name===e);r?(r.value=t,r.textureTransform=n):this._overrides.push({name:e,value:t,textureTransform:n})}getOverride(e){return this._overrides.find(t=>t.name===e)}removeOveride(e){let t=this._overrides.findIndex(t=>t.name===e);t>=0&&this._overrides.splice(t,1)}clearAllOverrides(){this._overrides=[]}get overrides(){return this._overrides}hasOverrides(){return this._overrides.length>0}setDefine(e,t){this._defines[e]=t}clearDefine(e){this._defines[e]=void 0}getDefines(){return this._defines}getCacheKey(){let e=[],t=Object.keys(this._defines).sort();for(let n of t){let t=this._defines[n];t!==void 0&&e.push(`d:${n}=${t}`)}for(let t of this._overrides){if(t.value===null)continue;let n=``;if(t.value instanceof xe){if(n=t.value.uuid||`texture`,t.textureTransform){let e=t.textureTransform;e.offset&&(n+=`;to:${e.offset.x},${e.offset.y}`),e.repeat&&(n+=`;tr:${e.repeat.x},${e.repeat.y}`)}}else if(Array.isArray(t.value))n=t.value.join(`,`);else if(t.value&&typeof t.value==`object`&&`r`in t.value){let e=t.value;n=`${e.r},${e.g},${e.b},${e.a===void 0?``:e.a}`}else if(t.value&&typeof t.value==`object`&&`x`in t.value){let e=t.value;n=`${e.x},${e.y}${e.z===void 0?``:`,${e.z}`}${e.w===void 0?``:`,${e.w}`}`}else n=String(t.value);e.push(`${t.name}=${n}`)}return e.join(`;`)}},Ui=Symbol(`originalValues`),Wi=Symbol(`savedTextureTransforms`);function Gi(e){let t=Vi.getBlock(e);if(t)return{block:t,owner:e};if(e.parent&&e.parent.type===`Group`&&(t=Vi.getBlock(e.parent),t))return{block:t,owner:e.parent}}var Ki=Symbol(`beforeRenderingFlag`),qi=new WeakMap,Ji=new WeakMap,Yi=function(e,t,n,r){let i=Gi(this)?.block;if(i&&i.hasOverrides()){let e=i.getOverride(`transmission`)?.value,t=i.getOverride(`transparent`)?.value;e!==void 0&&typeof e==`number`&&`transmission`in n&&e!==n.transmission&&(Ji.set(this,n.transmission),n.transmission=e),t!==void 0&&typeof t==`boolean`&&t!==n.transparent&&(qi.set(this,n.transparent),n.transparent=t)}},Xi=function(e,t,n,r){let i=qi.get(e);i!==void 0&&(qi.delete(e),n.transparent=i);let a=Ji.get(e);a!==void 0&&(Ji.delete(e),n.transmission=a)},Zi=function(e,t,n,r,i,a){let o=this.material;if(!o)return;if(Array.isArray(o)){if(!o.includes(i))return}else if(o!==i)return;this[Ki]===void 0&&(this[Ki]=new WeakSet),this[Ki].add(i);let s=Gi(this);if(!s)return;let{block:c,owner:l}=s,u=c.overrides,d=i,f=c.getDefines(),p=Object.keys(f);if(p.length>0){d.defines||={};for(let e of p){let t=f[e];t!==void 0&&(d.defines[e]=t)}}if(u.length===0&&p.length===0)return;let m=p.length>0;d[Ui]||(d[Ui]=[]);let h=d[Ui];for(let e of u){if(e.value===null)continue;let t=d[e.name],n=h.find(t=>t.name===e.name);if(n?n.value=t:h.push({name:e.name,value:t}),!m&&!!t!=!!e.value&&(m=!0),d[e.name]=e.value,e.textureTransform&&e.value instanceof xe){let t=e.value;d[Wi]||(d[Wi]=[]),d[Wi].push({name:e.name,offsetX:t.offset.x,offsetY:t.offset.y,repeatX:t.repeat.x,repeatY:t.repeat.y});let n=e.textureTransform;n.offset&&t.offset.copy(n.offset),n.repeat&&t.repeat.copy(n.repeat)}}m&&(d.needsUpdate=!0),d._forceRefresh=!0},Qi=function(e,t,n,r,i,a){if(this[Ki]===void 0||!this[Ki].has(i))return;this[Ki].delete(i);let o=Gi(this);if(!o)return;let{block:s,owner:c}=o,l=s.overrides,u=i,d=u[Ui],f=s.getDefines(),p=Object.keys(f),m=!1;if(p.length>0&&u.defines){for(let e of p)delete u.defines[e];m=!0}if(l.length===0){m&&(u.needsUpdate=!0,u._forceRefresh=!0);return}if(!d)return;let h=u[Wi];if(h&&h.length>0){for(let e of h){let t=l.find(t=>t.name===e.name);t?.value instanceof xe&&(t.value.offset.set(e.offsetX,e.offsetY),t.value.repeat.set(e.repeatX,e.repeatY))}h.length=0}for(let e of l){let t=d.find(t=>t.name===e.name);t&&(!m&&!!e.value!=!!t.value&&(m=!0),u[e.name]=t.value)}m&&(u.needsUpdate=!0),u._forceRefresh=!0};function $i(e,t){e.type===`Group`?e.children.forEach(n=>{(n.type===`Mesh`||n.type===`SkinnedMesh`)&&ea(n,e,t)}):(e.type===`Mesh`||e.type===`SkinnedMesh`)&&ea(e,e,t)}function ea(e,t,n){if(!Vi.isHooked(e,t)){if(Vi.addHook(e,t),e[`needle:materialPropertyBlock`]=n,!e.onBeforeRender)e.onBeforeRender=Zi;else{let t=e.onBeforeRender;e.onBeforeRender=function(e,n,r,i,a,o){t.call(this,e,n,r,i,a,o),Zi.call(this,e,n,r,i,a,o)}}if(!e.onAfterRender)e.onAfterRender=Qi;else{let t=e.onAfterRender;e.onAfterRender=function(e,n,r,i,a,o){Qi.call(this,e,n,r,i,a,o),t.call(this,e,n,r,i,a,o)}}e.onBeforeRenderListPush=Yi,e.onAfterRenderListPush=Xi}}var ta=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},na=D(`debugreflectionprobe`),ra=D(`noreflectionprobe`),ia=null;new Ue;var aa=Symbol(`reflectionProbeKey`),oa=class e extends N{static _probes=new Map;static testBox=new de;static isUsingReflectionProbe(e){return!!e[aa]}static onEnabled=new Ut;static onDisabled=new Ut;static get(t,n,r,i){if(!t||t.isObject3D!==!0||ra)return null;let a=e._probes.get(n);if(a){for(let e of a)if(e.__didAwake||e.__internalAwake(),e.activeAndEnabled){if(i){if(e.gameObject===i)return e}else if(e.isInBox(t))return na&&console.log(`Found reflection probe`,t.name,e.name),e}}return na&&console.debug(`Did not find reflection probe`,t.name,r,t),null}_texture;_textureUrlInFlight;set texture(e){if(this._texture!==e){if(typeof e==`string`){na&&console.debug(`[ReflectionProbe] Loading reflection probe texture from URL: ${e}`),this._textureUrlInFlight=e,Ir(ln(this.sourceId,e),this.context.renderer).then(t=>{this._textureUrlInFlight===e&&t&&(this._textureUrlInFlight=void 0,na&&console.debug(`[ReflectionProbe] Successfully loaded reflection probe texture: ${e}`),this.texture=t)});return}this.__didAwake&&(this._textureUrlInFlight=void 0),this._texture=e,na&&console.debug(`[ReflectionProbe] Set reflection probe texture `+(e?.name||`(removed)`)),e&&(e instanceof re||e.mapping===306||e.mapping!==303&&(e.mapping=303),e.colorSpace=a,e.needsUpdate=!0)}}get texture(){return this._texture}intensity=1;center=new r;size=new r(1,1,1);__lightmapIntensityScale=!0;isInBox(t){return ia??=new de,ia.setFromCenterAndSize(this.gameObject.worldPosition.add(this.center),this.size),fn([t],void 0,void 0,e.testBox),e.testBox.isEmpty()?ia.containsPoint(t.worldPosition):ia?.intersectsBox(e.testBox)}constructor(){super(),e._probes.has(this.context)||e._probes.set(this.context,[]),e._probes.get(this.context)?.push(this)}awake(){this._texture&&(this._texture.mapping!==306&&(this._texture.mapping=303),this._texture.colorSpace=a,this._texture.needsUpdate=!0)}update(){na&&(ia??=new de,ia.setFromCenterAndSize(this.gameObject.worldPosition.add(this.center),this.size),Ln.DrawWireBox3(ia,5592320))}onEnable(){e.onEnabled?.invoke(this)}onDisable(){e.onDisabled?.invoke(this)}start(){this._texture||console.warn(`[ReflectionProbe] Missing texture. Please assign a custom cubemap texture. To use reflection probes assign them to your renderer's "anchor" property.`)}onDestroy(){let t=e._probes.get(this.context);if(t){let e=t.indexOf(this);e>=0&&t.splice(e,1)}}apply(e){if(ra||!this.enabled||!this.texture)return;let t=Hi.get(e);t.setOverride(`envMap`,this.texture),t.setOverride(`envMapRotation`,this.gameObject.rotation);let n=this.intensity;this.__lightmapIntensityScale&&t.getOverride(`lightMap`)&&(n/=Math.PI),t.setOverride(`envMapIntensity`,n)}unapply(e){let t=Hi.get(e);t&&t.getOverride(`envMap`)?.value===this.texture&&t.removeOveride(`envMap`)}};ta([E([xe,String])],oa.prototype,`texture`,null),ta([E()],oa.prototype,`intensity`,void 0),ta([E(r)],oa.prototype,`center`,void 0),ta([E(r)],oa.prototype,`size`,void 0);var sa=D(`debugexr`),ca=class{get name(){return`EXT_texture_exr`}parser;constructor(e){this.parser=e,sa&&console.log(e)}loadTexture(e){let t=this.name,n=this.parser,r=n.json.textures[e];if(sa&&console.log(`EXT_texture_exr.loadTexture`,e,r),!r.extensions||!r.extensions[t])return null;let i=r.extensions[t],a=new lr(n.options.manager);return sa&&console.log(`EXT_texture_exr.loadTexture`,i),n.loadTextureImage(e,i.source,a)}};typeof window<`u`&&window.addEventListener(`unhandledrejection`,e=>{});var la=Pn,ua=`$___Export_Components`,da=`NEEDLE_components`,fa=class{[Dn]},pa=class{node;nodeIndex;nodeDef;constructor(e,t,n){this.node=e,this.nodeIndex=t,this.nodeDef=n}},ma=class{get name(){return da}exportContext;objectToNodeMap={};context;writer;registerExport(e){e.register(e=>{if(`serializeUserData`in e){let t=e.serializeUserData.bind(e);this.writer=e,e.serializeUserData=(n,r)=>{try{this.serializeUserData(n,r)&&(e.extensionsUsed[this.name]=!0),t(n,r)}finally{this.afterSerializeUserData(n,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){let n=e.userData?.components;return!n||n.length<=0?!1:(delete e.userData.components,e[ua]=n,!0)}afterSerializeUserData(e,t){if(e.type===`Scene`&&la&&console.log(`DONE`,JSON.stringify(t)),e[ua]===void 0)return;let n=e[ua];delete e[ua],n!==null&&(e.userData.components=n)}writeNode(e,t){let n=this.writer.json.nodes.length;la&&console.log(e.name,n,e.uuid);let r=new pa(e,n,t);this.exportContext[n]=r,this.objectToNodeMap[e.uuid]=n}afterParse(e){la&&console.log(`AFTER`,e);for(let e in this.exportContext){let t=this.exportContext[e],n=t.node,r=t.nodeDef,i=t.nodeIndex,a=n.userData?.components;if(!a||a.length<=0)continue;let o=new fa;r.extensions=r.extensions||{},r.extensions[this.name]=o,this.context.object=n,this.context.nodeId=i,this.context.objectToNode=this.objectToNodeMap;let s=[];for(let e of a){this.context.target=e;let t=ot().writeBuiltinComponentData(e,this.context);t!==null&&s.push(t)}s.length>0&&(o[Dn]=s,la&&console.log(`DID WRITE`,n,`nodeIndex`,i,s))}}parser;nodeToObjectMap={};gltf=null;beforeRoot(){return la&&console.log(`BEGIN LOAD`),this.nodeToObjectMap={},null}async afterRoot(e){this.gltf=e;let t=e.parser,n=t?.extensions;if(!n)return;let r=n[this.name];la&&console.log(`After root`,e,this.parser,n);let i=[];if(r===!0){let n=t.json.nodes;if(n){for(let e=0;e`/materials/`+(e.material??0)),r=!0)}}!r&&(la||T())&&console.warn(`[NEEDLE_components] Component '${o.name}' on object '${n.name}' is not added to a mesh or failed to retrieve materials from glTF.`)}o&&this.parser&&r.push(nn(this.parser,o).catch(e=>console.error(`Error while resolving references (see console for details) +`,e,n,o))),n.userData=n.userData||{},n.userData[Dn]=n.userData.builtin_components||[],n.userData[Dn].push(o)}await Promise.all(r).catch(e=>{console.error(`Error while loading components`,e)})}}},ha=`NEEDLE_gameobject_data`,ga=class{get name(){return ha}parser;constructor(e){this.parser=e}afterRoot(e){let t=[];for(let e=0;enull)}async findAndApplyExtensionData(e,t){let n=await this.parser.getDependency(`node`,e);n&&this.applyExtensionData(n,t)}applyExtensionData(e,t){t.layers===void 0&&(t.layers=0),e.userData.layer=t.layers,e.layers.disableAll(),e.layers.set(t.layers),e.userData.tag=t.tag??`none`,e.hideFlags=0,e.userData.static=t.static??!1,e.visible=t.activeSelf??!0,e.guid=t.guid}},_a=`NEEDLE_lighting_settings`,va=D(`debugenvlight`),ya=class{get name(){return _a}parser;sourceId;context;constructor(e,t,n){this.parser=e,this.sourceId=t,this.context=n}afterRoot(e){let t=this.parser.json.extensions;if(t){let r=t[_a];if(r){va&&console.log(`Loaded "`+this.name+`", src: "`+this.sourceId+`"`,r);let t;if(e.scene.children.length===1){let n=e.scene.children[0];t=k.addComponent(n,ba,{},{callAwake:!1})}else{let n=new S;n.name=`LightSettings `+this.sourceId,e.scene.add(n),t=k.addComponent(n,ba,{},{callAwake:!1})}t.sourceId=this.sourceId,t.ambientIntensity=r.ambientIntensity,t.ambientLight=new n().fromArray(r.ambientLight),Array.isArray(r.ambientTrilight)&&(t.ambientTrilight=r.ambientTrilight.map(e=>new n().fromArray(e))),t.ambientMode=r.ambientMode,t.environmentReflectionSource=r.environmentReflectionSource}}return null}};Ht.registerCallback(zt.ContextCreated,e=>{let t=e.context,n=k.findObjectOfType(ba,t);n?.sourceId&&(n.enabled=!0)});var ba=class extends N{ambientMode=Vt.Skybox;ambientLight;ambientTrilight;ambientIntensity=1;environmentReflectionSource=dt.Skybox;_hasReflection=!1;_ambientLightObj;_hemisphereLightObj;awake(){if(this.sourceId){let e=this.environmentReflectionSource===dt.Skybox?It.Skybox:It.Reflection,t=this.context.lightmaps.tryGet(this.sourceId,e,0);this._hasReflection=t!=null,t&&this.context.sceneLighting.internalRegisterReflection(this.sourceId,t)}this.enabled=!1,this.context.sceneLighting.internalRegisterSceneLightSettings(this),va&&window.addEventListener(`keydown`,e=>{if(!this.destroyed)switch(e.key){case`l`:this.enabled=!this.enabled;break}});let e=this.gameObject.userData?.components;if(e){let t=e.indexOf(this);e.splice(t,1),e.push(this)}}onDestroy(){this.context.sceneLighting.internalUnregisterSceneLightSettings(this)}calculateIntensityFactor(e){let t=Math.max(e.r,e.g,e.b);return 2.2*Rt.lerp(0,1.33,t)}onEnable(){if(va&&console.warn(`💡🟡 >>> Enable lighting`,this.sourceId,this.enabled,this),this.ambientMode==Vt.Flat){if(this.ambientLight&&!this._ambientLightObj){let e=this.calculateIntensityFactor(this.ambientLight);this._ambientLightObj=new Pe(this.ambientLight,this.ambientIntensity*e),va&&console.log(`Created ambient light`,this.sourceId,this._ambientLightObj,this.ambientIntensity,e)}this._ambientLightObj&&this.gameObject.add(this._ambientLightObj)}else if(this.ambientMode===Vt.Trilight){if(this.ambientTrilight){let e=this.ambientTrilight[0],t=this.ambientTrilight[this.ambientTrilight.length-1],n=this.calculateIntensityFactor(t);this._hemisphereLightObj=new Me(t,e,this.ambientIntensity*n),this.gameObject.add(this._hemisphereLightObj),va&&console.log(`Created hemisphere ambient light`,this.sourceId,this._hemisphereLightObj,this.ambientIntensity,n)}}else this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._hemisphereLightObj&&this._hemisphereLightObj.removeFromParent();this.sourceId&&(this.context.domElement.getAttribute(`environment-image`)||this.context.sceneLighting.internalEnableReflection(this.sourceId))}onDisable(){va&&console.warn(`💡⚫ <<< Disable lighting:`,this.sourceId,this),this._ambientLightObj&&this._ambientLightObj.removeFromParent(),this._hemisphereLightObj&&this._hemisphereLightObj.removeFromParent(),this.sourceId&&this.context.sceneLighting.internalDisableReflection(this.sourceId)}},xa;(function(e){async function t(e,t){if(!e)throw Error(`URL or XML string is required to load a MaterialX material`);let n=await on.MaterialX.load(),r=e.trimStart().startsWith(`<`),i=r?e:await fetch(e).then(e=>e.text()).catch(console.error);if(!i)return console.warn(`Failed to load MaterialX file from url`,e),null;let a;if(t?.url||!r){let n=(t?.url||e).split(`/`);n.pop(),a=n.join(`/`)}let o=new pe;return n.Experimental_API.createMaterialXMaterial(i,t?.materialNameOrIndex??0,{getTexture:async e=>(!e.startsWith(`http`)&&!e.startsWith(`data:`)&&!e.startsWith(`blob:`)&&!e.startsWith(`file:`)&&a&&(e=a+`/`+e),o.loadAsync(e).catch(t=>{console.warn(`Failed to load texture for MaterialX material ${e}`,t)}))},{cacheKey:e})}e.loadFromUrl=t})(xa||={});var Sa=class extends oe{loadAsync(e,t){return new Promise((n,r)=>{this.load(e,n,t,r)})}load(e,t,n,r){n?.({type:`progress`,loaded:0,total:0}),xa.loadFromUrl(e,{}).then(n=>{n?t(this.onLoaded(n)):r?.(Error(`Failed to load MaterialX material from url: `+e))})}onLoaded(e){return St.createPrimitive(`ShaderBall`,{material:e})}},Ca=class{context;loader;url;parser;get name(){return`materialx-loading-helper`}constructor(e,t,n,r){this.context=e,this.loader=t,this.url=n,this.parser=r}mtlxLoader;async beforeRoot(){if(this.parser.json.extensions?.NEEDLE_materials_mtlx){let e=await on.MaterialX.load();try{this.mtlxLoader=new e.MaterialXLoader(this.parser,{cacheKey:`${this.url}:materialx`,parameters:{precision:this.context.renderer?.capabilities.precision}},{getFrame:()=>this.context.time.frame,getTime:()=>this.context.time.time})}catch(e){console.error(e)}}}loadMaterial(e){return this.mtlxLoader?this.mtlxLoader.loadMaterial(e):null}},wa;(function(e){e[e.Fragment=35632]=`Fragment`,e[e.Vertex=35633]=`Vertex`})(wa||={});var Ta;(function(e){e[e.INT=5124]=`INT`,e[e.FLOAT=5126]=`FLOAT`,e[e.FLOAT_VEC2=35664]=`FLOAT_VEC2`,e[e.FLOAT_VEC3=35665]=`FLOAT_VEC3`,e[e.FLOAT_VEC4=35666]=`FLOAT_VEC4`,e[e.INT_VEC2=35667]=`INT_VEC2`,e[e.INT_VEC3=35668]=`INT_VEC3`,e[e.INT_VEC4=35669]=`INT_VEC4`,e[e.BOOL=35670]=`BOOL`,e[e.BOOL_VEC2=35671]=`BOOL_VEC2`,e[e.BOOL_VEC3=35672]=`BOOL_VEC3`,e[e.BOOL_VEC4=35673]=`BOOL_VEC4`,e[e.FLOAT_MAT2=35674]=`FLOAT_MAT2`,e[e.FLOAT_MAT3=35675]=`FLOAT_MAT3`,e[e.FLOAT_MAT4=35676]=`FLOAT_MAT4`,e[e.SAMPLER_2D=35678]=`SAMPLER_2D`,e[e.SAMPLER_3D=35680]=`SAMPLER_3D`,e[e.SAMPLER_CUBE=35681]=`SAMPLER_CUBE`,e[e.UNKNOWN=0]=`UNKNOWN`})(Ta||={});var Ea=D(`debugcustomshader`),Da=`NEEDLE_techniques_webgl`,Oa;(function(e){e[e.INT=5124]=`INT`,e[e.FLOAT=5126]=`FLOAT`,e[e.FLOAT_VEC2=35664]=`FLOAT_VEC2`,e[e.FLOAT_VEC3=35665]=`FLOAT_VEC3`,e[e.FLOAT_VEC4=35666]=`FLOAT_VEC4`,e[e.INT_VEC2=35667]=`INT_VEC2`,e[e.INT_VEC3=35668]=`INT_VEC3`,e[e.INT_VEC4=35669]=`INT_VEC4`,e[e.BOOL=35670]=`BOOL`,e[e.BOOL_VEC2=35671]=`BOOL_VEC2`,e[e.BOOL_VEC3=35672]=`BOOL_VEC3`,e[e.BOOL_VEC4=35673]=`BOOL_VEC4`,e[e.FLOAT_MAT2=35674]=`FLOAT_MAT2`,e[e.FLOAT_MAT3=35675]=`FLOAT_MAT3`,e[e.FLOAT_MAT4=35676]=`FLOAT_MAT4`,e[e.SAMPLER_2D=35678]=`SAMPLER_2D`,e[e.SAMPLER_3D=35680]=`SAMPLER_3D`,e[e.SAMPLER_CUBE=35681]=`SAMPLER_CUBE`,e[e.UNKNOWN=0]=`UNKNOWN`})(Oa||={});var ka=class{objectToWorldMatrix=new b;worldToObjectMatrix=new b;objectToWorld=[];worldToObject=[];updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),Wt(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),Wt(this.worldToObjectMatrix,this.worldToObject)}},Aa;(function(e){e[e.Off=0]=`Off`,e[e.Front=1]=`Front`,e[e.Back=2]=`Back`})(Aa||={});var ja;(function(e){e[e.Never=1]=`Never`,e[e.Less=2]=`Less`,e[e.Equal=3]=`Equal`,e[e.LEqual=4]=`LEqual`,e[e.Greater=5]=`Greater`,e[e.NotEqual=6]=`NotEqual`,e[e.GEqual=7]=`GEqual`,e[e.Always=8]=`Always`})(ja||={});var Ma=class e extends y{identifier;onBeforeRenderSceneCallback=this.onBeforeRenderScene.bind(this);clone(){let e=super.clone();return Pa(e),e}constructor(e,...t){super(...t),this.identifier=e,Ea&&console.log(this),this.type=`NEEDLE_CUSTOM_SHADER`,this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName],(this.depthTextureUniform||this.opaqueTextureUniform)&&Xt.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}dispose(){super.dispose();let e=Xt.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);e>=0&&Xt.Current.pre_render_callbacks.splice(e,1)}_sphericalHarmonicsName=`unity_SpecCube0`;_objToWorldName=`hlslcc_mtx4x4unity_ObjectToWorld`;_worldToObjectName=`hlslcc_mtx4x4unity_WorldToObject`;static viewProjection=new b;static _viewProjectionValues=[];_viewProjectionName=`hlslcc_mtx4x4unity_MatrixVP`;static viewMatrix=new b;static _viewMatrixValues=[];_viewMatrixName=`hlslcc_mtx4x4unity_MatrixV`;static _worldSpaceCameraPosName=`_WorldSpaceCameraPos`;static _worldSpaceCameraPos=new r;static _mainLightColor=new C;static _mainLightPosition=new r;static _lightData=new C;_rendererData=new ka;get depthTextureUniform(){if(this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&Xt.Current.setRequireColor(!0),this.depthTextureUniform&&Xt.Current.setRequireDepth(!0)}onBeforeRender(e,t,n,r,i,a){r.attributes.tangent||r.computeTangents(),this.onUpdateUniforms(n,i)}onUpdateUniforms(t,n){let r=Xt.Current;if(t&&(e.viewProjection&&this.uniforms[this._viewProjectionName]&&(e.viewProjection.copy(t.projectionMatrix).multiply(t.matrixWorldInverse),Wt(e.viewProjection,e._viewProjectionValues)),e.viewMatrix&&this.uniforms[this._viewMatrixName]&&(e.viewMatrix.copy(t.matrixWorldInverse),Wt(e.viewMatrix,e._viewMatrixValues)),this.uniforms[e._worldSpaceCameraPosName]&&e._worldSpaceCameraPos.setFromMatrixPosition(t.matrixWorld)),this.uniforms._TimeParameters&&(this.uniforms._TimeParameters.value=r.sceneLighting.timeVec4),this.uniforms._Time){let e=this.uniforms._Time.value;e.x=r.sceneLighting.timeVec4.x/20,e.y=r.sceneLighting.timeVec4.x,e.z=r.sceneLighting.timeVec4.x*2,e.w=r.sceneLighting.timeVec4.x*3}if(this.uniforms._SinTime){let e=this.uniforms._SinTime.value;e.x=Math.sin(r.sceneLighting.timeVec4.x/8),e.y=Math.sin(r.sceneLighting.timeVec4.x/4),e.z=Math.sin(r.sceneLighting.timeVec4.x/2),e.w=Math.sin(r.sceneLighting.timeVec4.x)}if(this.uniforms._CosTime){let e=this.uniforms._CosTime.value;e.x=Math.cos(r.sceneLighting.timeVec4.x/8),e.y=Math.cos(r.sceneLighting.timeVec4.x/4),e.z=Math.cos(r.sceneLighting.timeVec4.x/2),e.w=Math.cos(r.sceneLighting.timeVec4.x)}if(this.uniforms.unity_DeltaTime){let e=this.uniforms.unity_DeltaTime.value;e.x=r.time.deltaTime,e.y=1/r.time.deltaTime,e.z=r.time.smoothedDeltaTime,e.w=1/r.time.smoothedDeltaTime}let i=r.mainLight;if(i){let t=Yt(i.gameObject,e._mainLightPosition);this.uniforms._MainLightPosition={value:t.normalize()},e._mainLightColor.set(i.color.r,i.color.g,i.color.b,0),this.uniforms._MainLightColor={value:e._mainLightColor};let n=i.intensity;e._lightData.z=n,this.uniforms.unity_LightData={value:e._lightData}}if(t&&(e.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=e._viewProjectionValues),e.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=e._viewMatrixValues),this.uniforms[e._worldSpaceCameraPosName]&&(this.uniforms[e._worldSpaceCameraPosName]={value:e._worldSpaceCameraPos}),r.mainCameraComponent)){if(this.uniforms._ProjectionParams){let e=this.uniforms._ProjectionParams.value;e.x=1,e.y=r.mainCameraComponent.nearClipPlane,e.z=r.mainCameraComponent.farClipPlane,e.w=1/e.z,this.uniforms._ProjectionParams.value=e}if(this.uniforms._ZBufferParams){let e=this.uniforms._ZBufferParams.value,t=r.mainCameraComponent;e.x=1-t.farClipPlane/t.nearClipPlane,e.y=t.farClipPlane/t.nearClipPlane,e.z=e.x/t.farClipPlane,e.w=e.y/t.farClipPlane,this.uniforms._ZBufferParams.value=e}if(this.uniforms._ScreenParams){let e=this.uniforms._ScreenParams.value;e.x=r.domWidth,e.y=r.domHeight,e.z=1+1/e.x,e.w=1+1/e.y,this.uniforms._ScreenParams.value=e}if(this.uniforms._ScaledScreenParams){let e=this.uniforms._ScaledScreenParams.value;e.x=r.domWidth,e.y=r.domHeight,e.z=1+1/e.x,e.w=1+1/e.y,this.uniforms._ScaledScreenParams.value=e}}let a=this.depthTextureUniform;a&&(a.value=r.depthTexture);let o=this.opaqueTextureUniform;if(o&&(o.value=r.opaqueColorTexture),n){let e=this._rendererData;e.updateFrom(n),this.uniforms[this._worldToObjectName].value=e.worldToObject,this.uniforms[this._objToWorldName].value=e.objectToWorld}this.uniformsNeedUpdate=!0}},Na=class{get name(){return Da}parser;identifier;constructor(e,t){this.parser=e,this.identifier=t}loadMaterial(e){let t=this.parser.json.materials[e];if(!t)return Ea&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions.NEEDLE_techniques_webgl)return Ea&&console.log(`Material ${e} does not use NEEDLE_techniques_webgl`),null;Ea&&console.log(`Material ${e} uses NEEDLE_techniques_webgl`,t);let n=t.extensions[Da].technique;if(n<0)return console.debug(`Material ${e} does not have a valid technique index`),null;let r=this.parser.json.extensions[Da];if(!r)return Ea?console.error(`Missing shader data`,this.parser.json.extensions):console.debug(`Missing custom shader data in parser.json.extensions`),null;Ea&&console.log(r);let i=r.techniques[n];return i?new Promise(async(e,o)=>{let s=await ht(r,i.program),c=s?.fragmentShader,l=s?.vertexShader;if(!c||!l)return o();Ea&&console.log(`loadMaterial`,t,s);let u={},d=i.uniforms;(l.includes(`_Time`)||c.includes(`_Time`))&&(u._Time={value:new C(0,0,0,0)}),(l.includes(`_SinTime`)||c.includes(`_SinTime`))&&(u._SinTime={value:new C(0,0,0,0)}),(l.includes(`_CosTime`)||c.includes(`_CosTime`))&&(u._CosTime={value:new C(0,0,0,0)}),(l.includes(`unity_DeltaTime`)||c.includes(`unity_DeltaTime`))&&(u.unity_DeltaTime={value:new C(0,0,0,0)});for(let e in d){let t=e;switch(t){case`_TimeParameters`:u[t]={value:new C};break;case`hlslcc_mtx4x4unity_MatrixV`:case`hlslcc_mtx4x4unity_MatrixVP`:u[t]={value:[]};break;case`_MainLightPosition`:case`_MainLightColor`:case`_WorldSpaceCameraPos`:u[t]={value:[0,0,0,1]};break;case`unity_OrthoParams`:break;case`unity_SpecCube0`:u[t]={value:null};break;default:case`_ScreenParams`:case`_ZBufferParams`:case`_ProjectionParams`:u[t]={value:[0,0,0,0]};break;case`_CameraOpaqueTexture`:case`_CameraDepthTexture`:u[t]={value:null};break}}let f=!1;if(t.extensions&&t.extensions.NEEDLE_techniques_webgl){let e=t.extensions[Da];if(e.technique===n){Ea&&console.log(t.name,`Material Properties`,e);for(let t in e.values){let n=e.values[t];if(typeof n==`string`){if(n.startsWith(`/textures/`)){let e=n.substring(10),r=Number.parseInt(e);if(r>=0){let e=await this.parser.getDependency(`texture`,r);e instanceof xe&&(e.colorSpace=a,e.needsUpdate=!0),u[t]={value:e};continue}}switch(t){case`alphaMode`:n===`BLEND`&&(f=!0);continue}}if(Array.isArray(n)&&n.length===4){u[t]={value:new C(n[0],n[1],n[2],n[3])};continue}u[t]={value:n}}}}let p=new Ma(this.identifier,{name:t.name??``,uniforms:u,vertexShader:l,fragmentShader:c,lights:!1});switch(p.glslVersion=Oe,p.vertexShader=p.vertexShader.replace(`#version 300 es`,``),p.fragmentShader=p.fragmentShader.replace(`#version 300 es`,``),u._Cull?.value){case Aa.Off:p.side=2;break;case Aa.Front:p.side=1;break;case Aa.Back:p.side=0;break;default:p.side=0;break}switch(u._ZTest?.value){case ja.Equal:p.depthTest=!0,p.depthFunc=4;break;case ja.NotEqual:p.depthTest=!0,p.depthFunc=7;break;case ja.Less:p.depthTest=!0,p.depthFunc=2;break;case ja.LEqual:p.depthTest=!0,p.depthFunc=3;break;case ja.Greater:p.depthTest=!0,p.depthFunc=6;break;case ja.GEqual:p.depthTest=!0,p.depthFunc=5;break;case ja.Always:p.depthTest=!1,p.depthFunc=1;break}p.transparent=f,f&&(p.depthWrite=!1),Gt(u),p.onUpdateUniforms();for(let e in d){let t=e,n=d[e].type;if(u[t]?.value===void 0)switch(n){case Ta.SAMPLER_2D:u[t]={value:jt},console.warn(`Missing/unassigned texture, fallback to white: `+t);break;default:t===`unity_OrthoParams`||console.warn(`TODO: EXPECTED UNIFORM / fallback NOT SET: `+t,d[e]);break}}Ea&&console.log(p.uuid,u),Pa(p),e(p)}):null}};function Pa(e){if(e.uniforms){Ea&&console.log(`Uniforms:`,e.uniforms);for(let n in e.uniforms)switch(t(n,n),n){case`_Color`:t(`color`,n);break;case`_map`:t(`map`,n);break}}function t(t,n){Object.getOwnPropertyDescriptor(e,t)||Object.defineProperty(e,t,{get:()=>e.uniforms[n].value,set:t=>{e.uniforms[n].value=t,e.needsUpdate=!0}})}}var Fa=D(`debugextensions`),Ia,La=e(()=>import(`./needle-engine.dep.BzZBR-mM.js`).then(async e=>(Ia=e.GLTFAnimationPointerExtension,Ia)),__vite__mapDeps([0,1,2,3]),import.meta.url).catch(e=>{console.warn(`Failed to import GLTFLoaderAnimationPointer. Please use @needle-tools/three-animationpointer for full KHR_animation support`,e)}),Ra=[];function za(e){Ra.includes(e)||Ra.push(e)}function Ba(e){let t=Ra.indexOf(e);t>=0&&Ra.splice(t,1)}function Va(e){if(e instanceof sr){let t=new ma;return e.register(e=>(t.parser=e,t)),t}return null}var Ha=class{resolvePath(e){return e.includes(`/extensions/builtin_components/`)?e.replace(`/extensions/builtin_components/`,`/userData/components/`):e.includes(`extensions/builtin_components/`)?e.replace(`extensions/builtin_components/`,`/userData/components/`):e}};async function Ua(e,t,n,r){let i=n.indexOf(`?`);i>=0&&(n=n.substring(0,i)),r||=n,(r.startsWith(`blob:`)||r.startsWith(`data:`))&&console.debug(`[GLTFLoader] Suspicious sourceId detected`),e.register(e=>new ga(e)),e.register(e=>new Jt(e)),e.register(e=>new it(e,t.lightmaps,r)),e.register(e=>new ya(e,r,t)),e.register(e=>new Na(e,r)),e.register(e=>new Fi(e,r)),e.register(e=>new P(e)),e.register(e=>new ca(e)),e.register(e=>new Vn(e)),e.register(r=>new Ca(t,e,n,r)),bn()&&e.register(e=>new Qt(e)),await La.catch(e=>{}),e.register(e=>{if(Ia){let t=new Ia(e);return t.setAnimationPointerResolver.bind(t)(new Ha),t}else return(Fa||T())&&console.error(`Missing KHR_animation_pointer extension...`),{name:`KHR_animation_pointer_NOT_AVAILABLE`}});for(let r of Ra)r.onImport&&r.onImport(e,n,t)}function Wa(e,t){for(let n of Ra)n.onExport&&n.onExport(e,t)}function Ga(e,t,n){for(let r of Ra)r.onLoaded&&r.onLoaded(e,t,n)}var z=D(`debuginstancing`),Ka=class e{static instance=new e;static getStartInstanceCount=e=>4;objs=[];setup(e,t,n,r,i,a=0){e.applySettings(t);let o=this.tryCreateOrAddInstance(t,n,i);if(o){r===null&&(r=[]),r.push(o);let e=o.object.material;Array.isArray(e)?e.forEach(e=>P.assignTextureLOD(e,0)):P.assignTextureLOD(e,0);let t=o.object,n=t.geometry;P.assignMeshLOD(t,0).then(e=>{e&&n!=e&&o.setGeometry(e)})}else if(a<=0&&t.type!==`Mesh`){let o=a+1;for(let a of t.children)r=this.setup(e,a,n,r,i,o)}return a===0&&i.useMatrixWorldAutoUpdate&&r&&r.length>=0&&this.autoUpdateInstanceMatrix(t),r}tryCreateOrAddInstance(t,n,r){if(t.type===`Mesh`){let i=r.foundMeshes;if(r.foundMeshes+=1,!r.rend.enableInstancing)return null;if(r.rend.enableInstancing!==!0){if(i>=r.rend.enableInstancing.length)return z&&console.error(`Something is wrong with instance setup`,t,r.rend.enableInstancing,i),null;if(!r.rend.enableInstancing[i])return null}let a=t,o=a.material;for(let e of this.objs)if(e.canAdd(a.geometry,o))return e.addInstance(a);let s=e.getStartInstanceCount(t);(!s||s<0)&&(s=4);let c=t.name;c?.length||(c=rt());let l=new Ja(c,a.geometry,o,s,n);return this.objs.push(l),l.addInstance(a)}return null}autoUpdateInstanceMatrix(e){let t=e.matrixWorld.multiplyMatrices.bind(e.matrixWorld),n=e.matrixWorld.clone(),r=(r,i)=>{let a=t(r,i);return(e[Kt]||n.equals(a)===!1)&&(n.copy(a),e[Kt]=!0),a};e.matrixWorld.multiplyMatrices=r}},qa=class e{static all=[];get name(){return this.object.name}get isActive(){return this.__instanceIndex>=0}get vertexCount(){return this.object.geometry.attributes.position.count}get maxVertexCount(){return Math.max(this.meshInformation.vertexCount,this.vertexCount)}get reservedVertexCount(){return this.__reservedVertexRange}get indexCount(){return this.object.geometry.index?this.object.geometry.index.count:0}get maxIndexCount(){return Math.max(this.meshInformation.indexCount,this.indexCount)}get reservedIndexCount(){return this.__reservedIndexRange}object;renderer;__instanceIndex=-1;__reservedVertexRange=0;__reservedIndexRange=0;__geometryIndex=-1;meshInformation;constructor(t,n){this.__instanceIndex=-1,this.object=t,this.renderer=n,t[On]=n,this.meshInformation=Ya(t.geometry),e.all.push(this)}updateMeshInformation(){let e=Ya(this.object.geometry),t=this.meshInformation.vertexCount,n=this.meshInformation.indexCount;return Object.assign(this.meshInformation,e),t!==this.meshInformation.vertexCount||n!==this.meshInformation.indexCount}updateInstanceMatrix(e=!1,t=!0){this.__instanceIndex<0||(t&&this.object.updateWorldMatrix(!0,e),this.renderer.updateInstance(this.object.matrixWorld,this.__instanceIndex))}setMatrix(e){this.__instanceIndex<0||this.renderer.updateInstance(e,this.__instanceIndex)}setGeometry(e){if(this.__geometryIndex<0)return!1;let t=this;if(this.vertexCount>this.__reservedVertexRange)return n(`Instancing: Can not update geometry (${this.name}), reserved vertex range is too small: ${this.__reservedVertexRange.toLocaleString()} < ${this.vertexCount.toLocaleString()} vertices for ${this.name}`);if(this.indexCount>this.__reservedIndexRange)return n(`Instancing: Can not update geometry (${this.name}), reserved index range is too small: ${this.__reservedIndexRange.toLocaleString()} < ${this.indexCount.toLocaleString()} indices for ${this.name}`);return this.renderer.updateGeometry(e,this.__geometryIndex);function n(e){return t.updateMeshInformation()&&(t.renderer.remove(t,!0),t.renderer.add(t))?!0:((T()||z)&&console.error(e),!1)}}add(){this.__instanceIndex>=0||(this.renderer.add(this),k.markAsInstancedRendered(this.object,!0))}remove(t){if(!(this.__instanceIndex<0)&&(this.renderer.remove(this,t),k.markAsInstancedRendered(this.object,!1),t)){let t=e.all.indexOf(this);t>=0&&e.all.splice(t,1)}}},Ja=class{get batchedMesh(){return this._batchedMesh}get visible(){return this._batchedMesh.visible}set visible(e){this._batchedMesh.visible=e}get castShadow(){return this._batchedMesh.castShadow}set castShadow(e){this._batchedMesh.castShadow=e}set receiveShadow(e){this._batchedMesh.receiveShadow=e}allowResize=!0;name=``;geometry;material;get count(){return this._currentInstanceCount}updateBounds(e=!0,t=!0){if(this._needUpdateBounds=!1,e&&this._batchedMesh.computeBoundingBox(),t&&this._batchedMesh.computeBoundingSphere(),z&&this._batchedMesh.boundingSphere){let e=this._batchedMesh.boundingSphere;Ln.DrawWireSphere(e.center,e.radius,65280)}}_context;_batchedMesh;_handles=[];_geometryIds=new WeakMap;_maxInstanceCount;_currentInstanceCount=0;_currentVertexCount=0;_currentIndexCount=0;_maxVertexCount;_maxIndexCount;static nullMatrix=new b;canAdd(e,t){return this._maxVertexCount>1e7||t!==this.material||!this.validateGeometry(e)?!1:!!(!this.mustGrow(e)||this.allowResize)}_needUpdateBounds=!1;_debugMaterial=null;getBatchedMeshName(){return this.name?`${this.name} (BatchedMesh)`:`BatchedMesh`}constructor(e,t,n,r,i){this.name=e,this.geometry=t,this.material=n,this._context=i,this._maxInstanceCount=Math.max(2,r),z&&(this._debugMaterial=Xa());let a=this.tryEstimateVertexCountSize(this._maxInstanceCount,[t],r);this._maxVertexCount=a.vertexCount,this._maxIndexCount=a.indexCount,this._batchedMesh=new ke(this._maxInstanceCount,this._maxVertexCount,this._maxIndexCount,this._debugMaterial??this.material),this._batchedMesh.name=this.getBatchedMeshName(),this._batchedMesh[_t]=!0,this._batchedMesh.visible=!0,this._context.scene.add(this._batchedMesh),n instanceof y&&(n.defines.USE_INSTANCING=!0,n.needsUpdate=!0),i.pre_render_callbacks.push(this.onBeforeRender),i.post_render_callbacks.push(this.onAfterRender),z&&console.log(`Instanced renderer (${this.name}) created with ${this._maxInstanceCount} instances, ${this._maxVertexCount} max vertices and ${this._maxIndexCount} max indices for \"${e}\"`)}dispose(){z&&console.warn(`Dispose instanced renderer`,this.name),this._context.scene.remove(this._batchedMesh),this._batchedMesh.dispose(),this._batchedMesh=null,this._handles=[]}addInstance(e){let t=new qa(e,this);e.castShadow===!0&&this._batchedMesh.castShadow===!1&&(this._batchedMesh.castShadow=!0),e.receiveShadow===!0&&this._batchedMesh.receiveShadow===!1&&(this._batchedMesh.receiveShadow=!0);try{this.add(t)}catch(t){return console.error(`Failed adding mesh to instancing (object name: \"${e.name}\", instances: ${this._currentInstanceCount.toLocaleString()}/${this._maxInstanceCount.toLocaleString()}, vertices: ${this._currentVertexCount.toLocaleString()}/${this._maxVertexCount.toLocaleString()}, indices: ${this._currentIndexCount.toLocaleString()}/${this._maxIndexCount.toLocaleString()})\n`,t),T()&&Nn(`Failed instancing mesh. See the browser console for details.`),null}return t}add(e){let t=e.object.geometry;if(!t||!t.attributes)return console.error(`Cannot add object to instancing without geometry`,e.name),!1;if(this._currentInstanceCount+1>this._maxInstanceCount||this.mustGrow(t))if(this.allowResize)this.grow(t);else return console.error(`Cannot add instance, max count reached`,this.name,this.count,this._maxInstanceCount),!1;return e.object.updateWorldMatrix(!0,!0),this.addGeometry(e),this._handles[e.__instanceIndex]=e,this._currentInstanceCount+=1,this.markNeedsUpdate(),this._currentInstanceCount>0&&(this._batchedMesh.visible=!0),!0}remove(e,t){e&&(e.__instanceIndex<0||this._handles[e.__instanceIndex]!=e||this._currentInstanceCount<=0||(this.removeGeometry(e,t),this._handles[e.__instanceIndex]=null,e.__instanceIndex=-1,this._currentInstanceCount>0&&--this._currentInstanceCount,this._currentInstanceCount<=0&&(this._batchedMesh.visible=!1),this.markNeedsUpdate()))}updateInstance(e,t){this._batchedMesh.setMatrixAt(t,e),this.markNeedsUpdate()}updateGeometry(e,t){return this.validateGeometry(e)?(this.mustGrow()&&this.grow(e),z&&console.debug(`[Instancing] UPDATE GEOMETRY at `+t,this._batchedMesh._geometryCount,e.name,Ya(e),e.attributes.position.count,e.index?e.index.count:0),this._batchedMesh.setGeometryAt(t,e),this._geometryIds.set(e,t),this.markNeedsUpdate(),!0):!1}onBeforeRender=()=>{this._batchedMesh.layers.enableAll(),this._needUpdateBounds&&this._batchedMesh[_t]===!0&&(z===`verbose`&&console.log(`Update instancing bounds`,this.name,this._batchedMesh.matrixWorldNeedsUpdate),this.updateBounds())};onAfterRender=()=>{this._batchedMesh.layers.disableAll()};validateGeometry(e){let t=this.geometry;for(let n in t.attributes)if(n!==`batchId`&&!e.hasAttribute(n))return T()&&console.warn(`BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`),!1;return!0}markNeedsUpdate(){z===`verbose`&&console.warn(`Marking instanced mesh dirty`,this.name),this._needUpdateBounds=!0}mustGrow(e){if(this.count>=this._maxInstanceCount)return!0;if(!e||!e.attributes||this._geometryIds.has(e))return!1;let t=Ya(e),n=t.vertexCount,r=t.indexCount;return this._currentVertexCount+n>this._maxVertexCount||this._currentIndexCount+r>this._maxIndexCount}_growId=0;grow(e){let t=++this._growId,n=this.count>=this._maxInstanceCount?Math.ceil(this._maxInstanceCount*2):this._maxInstanceCount,r=this.tryEstimateVertexCountSize(n,[e]),i=1.25,a=Math.max(this._maxVertexCount,Math.ceil(r.vertexCount*i)),o=Math.max(this._maxIndexCount,Math.ceil(r.indexCount*i));if(z){let t=Ya(e);console.warn(`[Instancing] Growing Buffer\nMesh: \"${this.name}${e.name?.length?`/`+e.name:``}\" (${t.vertexCount.toLocaleString()} vertices, ${t.indexCount.toLocaleString()} indices)\nMax count ${this._maxInstanceCount.toLocaleString()} → ${n.toLocaleString()}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${a.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${o.toLocaleString()}`),this._debugMaterial=Xa()}else T()&&console.debug(`[Instancing] Growing Buffer\nMesh: \"${this.name}${e.name?.length?`/`+e.name:``}\"\nMax count ${this._maxInstanceCount} → ${n}\nMax vertex count ${this._maxVertexCount.toLocaleString()} -> ${a.toLocaleString()}\nMax index count ${this._maxIndexCount.toLocaleString()} -> ${o.toLocaleString()}`);this._maxVertexCount=a,this._maxIndexCount=o;let s=new ke(n,this._maxVertexCount,this._maxIndexCount,this._debugMaterial??this.material);s.name=this.getBatchedMeshName(),s.layers=this._batchedMesh.layers,s.castShadow=this._batchedMesh.castShadow,s.receiveShadow=this._batchedMesh.receiveShadow,s.visible=this._batchedMesh.visible,s[_t]=this._batchedMesh[_t],s.matrixAutoUpdate=this._batchedMesh.matrixAutoUpdate,s.matrixWorldNeedsUpdate=this._batchedMesh.matrixWorldNeedsUpdate,s.matrixAutoUpdate=this._batchedMesh.matrixAutoUpdate,s.matrixWorld.copy(this._batchedMesh.matrixWorld),s.matrix.copy(this._batchedMesh.matrix),this._batchedMesh.dispose(),this._batchedMesh.removeFromParent(),this._geometryIds=new WeakMap,this._batchedMesh=s,this._maxInstanceCount=n;let c=[...this._handles];this._handles=[];for(let e of c){if(t!==this._growId){z&&console.warn(`[Instancing] Aborting grow since another grow happened in the meantime`);return}e&&e.__instanceIndex>=0&&(this.addGeometry(e),this._handles[e.__instanceIndex]=e)}this._context.scene.add(s)}tryEstimateVertexCountSize(e,t,n=1){let r=new Map;for(let e of this._handles)if(e&&e.__instanceIndex>=0&&e.object.geometry){if(r.has(e.object.geometry)){let t=r.get(e.object.geometry);t.count+=1}else{let t={count:1,...Ya(e.object.geometry)};r.set(e.object.geometry,t)}if(t&&t?.length>0){let n=t.indexOf(e.object.geometry);n!==-1&&t.splice(n,1)}}let i=0,a=0,o=0;for(let[e,t]of r)o+=1,i+=t.vertexCount,a+=t.indexCount;let s=Math.ceil(i/Math.max(1,o))*o,c=Math.ceil(a/Math.max(1,o))*o;if(t)for(let e of t){let t=Ya(e);t!=null&&(s+=t.vertexCount*n,c+=t.indexCount*n)}return z&&console.log(`[Instancing] Estimated size for new buffer ${this.name}\nGeometries: ${o} (New: ${t?.length||0})\nInstances: ${e}\nEstimated Vertices: ${s.toLocaleString()}\nEstimated Indices: ${c.toLocaleString()}`),{vertexCount:s,indexCount:c}}addGeometry(e){let t=e.object.geometry;if(!t)return;let n=this._geometryIds.get(t);n==null?(z&&console.warn(`[Instancing] > ADD NEW GEOMETRY \"${e.name} (${t.name}; ${t.uuid})\"\nCurrent Instances: ${this._currentInstanceCount}\nMax Vertices: ${e.maxVertexCount.toLocaleString()}\nMax Indices: ${e.maxIndexCount.toLocaleString()}\nMax Triangles: ${(e.maxIndexCount/3).toLocaleString()}`),n=this._batchedMesh.addGeometry(t,e.maxVertexCount,e.maxIndexCount),this._geometryIds.set(t,n),this._currentVertexCount+=e.maxVertexCount,this._currentIndexCount+=e.maxIndexCount):z===`verbose`&&console.log(`[Instancing] > ADD INSTANCE \"${e.name}\"\nGEOMETRY_ID=${n}\n${this._currentInstanceCount} instances`);let r=this._batchedMesh.addInstance(n);e.__geometryIndex=n,e.__instanceIndex=r,e.__reservedVertexRange=e.maxVertexCount,e.__reservedIndexRange=e.maxIndexCount,this._batchedMesh.setMatrixAt(r,e.object.matrixWorld),z&&console.debug(`[Instancing] > ADDED INSTANCE \"${e.name}\"\nGEOMETRY_ID=${n}\n${this._currentInstanceCount} instances\nIndex: ${e.__instanceIndex}\nVertices: ${this._currentVertexCount.toLocaleString()}/${this._maxVertexCount.toLocaleString()},\nIndices: ${this._currentIndexCount.toLocaleString()}/${this._maxIndexCount.toLocaleString()}`)}removeGeometry(e,t){if(e.__instanceIndex<0){console.warn(`Cannot remove geometry, instance index is invalid`,e.name);return}z&&console.debug(`[Instancing] < REMOVE INSTANCE \"${e.name}\" at [${e.__instanceIndex}]\nGEOMETRY_ID=${e.__geometryIndex}\n${this._currentInstanceCount} instances\nIndex: ${e.__instanceIndex}`),this._batchedMesh.deleteInstance(e.__instanceIndex)}};function Ya(e){if(!e)return T()&&console.error(`Cannot get mesh information from null geometry`),{vertexCount:0,indexCount:0};let t=e.attributes?.position?.count||0,n=e.index?e.index.count:0,r=P.getMeshLODExtension(e);if(r){let e=r.lods[0],i=e.vertexCount,a=e.indexCount,o=Math.min(200,Math.ceil(i*.05));i+=o,a+=20,t=Math.max(t,i),n=Math.max(n,a)}return t=Math.ceil(t),n=Math.ceil(n),{vertexCount:t,indexCount:n}}function Xa(){let e=new Te({color:new n(Math.random(),Math.random(),Math.random())});return e.emissive=e.color,e.emissiveIntensity=.3,D(`wireframe`)&&(e.wireframe=!0),e}var Za=D(`debuglightmaps`),Qa=Symbol(`lightmapKey`),$a=class{get lightmap(){return this.lightmapTexture}set lightmap(e){e!==this.lightmapTexture&&(this.lightmapTexture=e,this.applyLightmap(),this.updatePropertyBlockTexture(),this.lightmapTexture&&P.assignTextureLOD(this.lightmapTexture,0).then(e=>{e?.isTexture&&(this.lightmapTexture=e,this.updatePropertyBlockTexture())}))}lightmapIndex=-1;lightmapScaleOffset=new C(1,1,0,0);renderer;_isApplied=!1;get context(){return this.renderer.context}get gameObject(){return this.renderer.gameObject}lightmapTexture=null;constructor(e){this.renderer=e}init(e,t,n){console.assert(this.gameObject!==void 0&&this.gameObject!==null,`Missing gameobject`,this),this.lightmapIndex=e,!(this.lightmapIndex<0)&&(this.lightmapScaleOffset=t,this.lightmapTexture=n,P.assignTextureLOD(n,0).then(e=>{e?.isTexture&&(this.lightmapTexture=e,this.updatePropertyBlockTexture())}),Za==`show`?(console.log(`Lightmap:`,this.gameObject.name,e,` +ScaleOffset:`,t,` +Texture:`,n),this.setLightmapDebugMaterial()):Za&&console.log(`Use debuglightmaps=show to render lightmaps only in the scene.`),this.applyLightmap())}updateLightmapUniforms(e){}applyLightmap(){if(this._isApplied)return;if(this.gameObject.type===`Object3D`){Za&&console.warn(`Can not add lightmap. Is this object missing a renderer?`,this.gameObject.name);return}let e=this.gameObject;if(this.ensureLightmapUvs(e),this.lightmapIndex>=0&&this.lightmapTexture){this.lightmapTexture.channel=1;let e=this.lightmapScaleOffset;for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},to=D(`debugrenderer`),no=D(`debugskinnedmesh`),ro=D(`noinstancing`),io=D(`wireframe`),ao;(function(e){e[e.Off=0]=`Off`,e[e.BlendProbes=1]=`BlendProbes`,e[e.BlendProbesAndSkybox=2]=`BlendProbesAndSkybox`,e[e.Simple=3]=`Simple`})(ao||={});var oo=class{path=null;asset=null;default},so;(function(e){e[e.Both=0]=`Both`,e[e.Back=1]=`Back`,e[e.Front=2]=`Front`})(so||={});var co=class{_renderer;_targets=[];_indexMapMaxIndex;_indexMap;_changed=!1;get changed(){return this._changed}set changed(e){e===!0&&to&&console.warn(`SharedMaterials have changed: `+this._renderer.name),this._changed=e}is(e){return this._renderer===e}constructor(e,t){this._renderer=e;let n=this.setMaterial.bind(this),r=this.getMaterial.bind(this),i=e.gameObject;if(this._targets=[],i)switch(i.type){case`Group`:this._targets=[...i.children];break;case`SkinnedMesh`:case`Mesh`:this._targets.push(i);break}let a=!1,o,s=0;for(let e=0;e=this._targets.length)return;let n=this._targets[t];!n||n.material===void 0||(n.material=e,this.changed=!0)}getMaterial(e){if(e=this.resolveIndex(e),e<0)return null;let t=this._targets;if(e>=t.length)return null;let n=t[e];return n?n.material:null}},B=class e extends N{static setInstanced(t,n){let r=Lt(t,e);return r.setInstancingEnabled(n),r}static isInstanced(t){let n=Gn(t,e);return n?n.isInstancingActive:gt.isUsingInstancing(t)}static setVisible(e,t){wi(e,t)}receiveShadows=!1;shadowCastingMode=fo.Off;lightmapIndex=-1;lightmapScaleOffset=new C(1,1,0,0);enableInstancing=void 0;renderOrder=void 0;allowOcclusionWhenDynamic=!0;probeAnchor;reflectionProbeUsage=ao.Off;_lightmaps;get sharedMesh(){if(this.gameObject.type===`Mesh`||this.gameObject.type===`SkinnesMesh`)return this.gameObject;if(this.gameObject.type===`Group`)return this.gameObject.children[0]}_sharedMeshes=[];get sharedMeshes(){if(this.destroyed||!this.gameObject)return this._sharedMeshes;if(this._sharedMeshes.length=0,this.gameObject.type===`Group`)for(let e of this.gameObject.children)(e.type===`Mesh`||e.type===`SkinnedMesh`)&&this._sharedMeshes.push(e);else (this.gameObject.type===`Mesh`||this.gameObject.type===`SkinnedMesh`)&&this._sharedMeshes.push(this.gameObject);return this._sharedMeshes}get sharedMaterial(){return this.sharedMaterials?.[0]}set sharedMaterial(e){this.sharedMaterials[0]!==e&&(this.sharedMaterials[0]=e,this.applyLightmapping())}get material(){return this.sharedMaterials?.[0]}set material(e){this.sharedMaterial=e}_sharedMaterials;_originalMaterials;_probeAnchorLastFrame;set sharedMaterials(e){if(!this._originalMaterials)this._originalMaterials=e;else if(e){let t=!1;for(let n=0;n0&&(this.gameObject.renderOrder=this.renderOrder[0])):this.context.addBeforeRenderListener(this.gameObject,this.onBeforeRenderThree);if(this._lightmaps=void 0,this.applyLightmapping(),io)for(let e=0;e=0&&!this._lightmaps){let e=this._lightmapTextureOverride===void 0?this.context.lightmaps.tryGetLightmap(this.sourceId,this.lightmapIndex):this._lightmapTextureOverride;if(e){this._lightmaps||=[];let t=new $a(this);t.init(this.lightmapIndex,this.lightmapScaleOffset,e),this._lightmaps.push(t)}else to&&console.warn(`[Renderer] No lightmaps found ${this.name} (${this.sourceId}, ${this.lightmapIndex})`)}}_isInstancingEnabled=!1;_handles=void 0;get isInstancingActive(){return this._handles!=null&&this._handles.length>0&&this._isInstancingEnabled}get instances(){if(!this._handles||this._handles.length<=0)return null;if(this._handlesTempArray.length=0,this._handles)for(let e of this._handles)this._handlesTempArray.push(e);return this._handlesTempArray}_handlesTempArray=[];setInstancingEnabled(e){if(this._isInstancingEnabled===e)return e&&(this._handles===void 0||this._handles!=null&&this._handles.length>0);if(this._isInstancingEnabled=e,e){if(this.enableInstancing===void 0&&(this.enableInstancing=!0),this._handles===void 0){if(this._handles=Ka.instance.setup(this,this.gameObject,this.context,null,{rend:this,foundMeshes:0,useMatrixWorldAutoUpdate:this.useInstanceMatrixWorldAutoUpdate()}),this._handles)return k.markAsInstancedRendered(this.gameObject,!0),!0}else if(this._handles!==null){for(let e of this._handles)e.updateInstanceMatrix(!0),e.add();return k.markAsInstancedRendered(this.gameObject,!0),!0}}else{if(this._handles)for(let e of this._handles)e.remove(this.destroyed);return!0}return!1}clearInstancingState(){this._isInstancingEnabled=!1,this._handles=void 0}useInstanceMatrixWorldAutoUpdate(){return!0}start(){if(this.enableInstancing&&!ro&&(this.setInstancingEnabled(!0),gt.markDirty(this.gameObject)),this.gameObject.frustumCulled=this.allowOcclusionWhenDynamic,this.isMultiMaterialObject(this.gameObject))for(let e=0;ee)?this.__internalDidAwakeAndStart&&this.setInstancingEnabled(!0):this.enabled&&this.applyStencil(),this.updateReflectionProbe(),oa.onEnabled.addEventListener(this.onReflectionProbeEnabled),oa.onDisabled.addEventListener(this.onReflectionProbeDisabled)}onDisable(){this.setVisibility(!1),oa.onEnabled.removeEventListener(this.onReflectionProbeEnabled),oa.onDisabled.removeEventListener(this.onReflectionProbeDisabled),this._handles&&this._handles.length>0&&this.setInstancingEnabled(!1)}onDestroy(){if(this._handles=null,this.isMultiMaterialObject(this.gameObject))for(let e of this.gameObject.children)this.context.removeBeforeRenderListener(e,this.onBeforeRenderThree);else this.context.removeBeforeRenderListener(this.gameObject,this.onBeforeRenderThree)}onReflectionProbeEnabled=()=>{this.updateReflectionProbe()};onReflectionProbeDisabled=e=>{this._reflectionProbe===e&&(this._reflectionProbe.unapply(this.gameObject),this._reflectionProbe=null)};onBeforeRender(){if(this.gameObject){if((this._probeAnchorLastFrame!==this.probeAnchor||this._reflectionProbe?.activeAndEnabled===!1)&&(this._reflectionProbe?.unapply(this.gameObject),this.updateReflectionProbe()),to==this.name&&this.gameObject instanceof x){this.gameObject.geometry.computeBoundingSphere();let e=wn(this.gameObject.geometry.boundingSphere.center).applyMatrix4(this.gameObject.matrixWorld);Ln.DrawWireSphere(e,this.gameObject.geometry.boundingSphere.radius,56831)}if(this.isMultiMaterialObject(this.gameObject)&&this.gameObject.children?.length>0)for(let e of this.gameObject.children)this.applySettings(e);else this.applySettings(this.gameObject);if(this.sharedMaterials?.changed&&(this.sharedMaterials.changed=!1,this.applyLightmapping()),this._handles?.length&&this.gameObject[Kt]===!0){this.gameObject[Kt]=!1;for(let e=this._handles.length-1;e>=0;e--)this._handles[e].updateInstanceMatrix();this.gameObject.matrixWorldNeedsUpdate=!1}if(this._handles&&this._handles.length<=0&&k.markAsInstancedRendered(this.gameObject,!1),this._isInstancingEnabled&&this._handles)for(let e=0;e{if(i.envMapIntensity!==void 0){let e=this.hasLightmap?Math.PI:1,t=this.context.scene.environmentIntensity;i.envMapIntensity=Math.max(0,t*this.context.sceneLighting.environmentIntensity/e)}if(this._lightmaps)for(let e of this._lightmaps)e.updateLightmapUniforms(i),e.applyLightmap()};onAfterRender(){if(this._isInstancingEnabled&&this._handles)for(let e=0;e=10&&(this.gameObject.matrixAutoUpdate=!1)}applyStencil(){Fi.applyStencil(this)}applySettings(e){e.receiveShadow=this.receiveShadows,this.shadowCastingMode==fo.On?e.castShadow=!0:e.castShadow=!1}_reflectionProbe=null;updateReflectionProbe(){this._reflectionProbe=null,this.reflectionProbeUsage!==ao.Off&&(this.startCoroutine(this._updateReflectionProbe(),Wn.LateUpdate),this._probeAnchorLastFrame=this.probeAnchor)}*_updateReflectionProbe(){let e=this.probeAnchor||this.gameObject,t=!!this.probeAnchor;this._reflectionProbe=oa.get(e,this.context,t,this.probeAnchor)}setVisibility(e){if(!this.isMultiMaterialObject(this.gameObject))wi(this.gameObject,e);else for(let t of this.gameObject.children)this.isMeshOrSkinnedMesh(t)&&wi(t,e)}isMultiMaterialObject(e){return e.type===`Group`}isMeshOrSkinnedMesh(e){return e.type===`Mesh`||e.type===`SkinnedMesh`}};eo([E()],B.prototype,`receiveShadows`,void 0),eo([E()],B.prototype,`shadowCastingMode`,void 0),eo([E()],B.prototype,`lightmapIndex`,void 0),eo([E(C)],B.prototype,`lightmapScaleOffset`,void 0),eo([E()],B.prototype,`enableInstancing`,void 0),eo([E()],B.prototype,`renderOrder`,void 0),eo([E()],B.prototype,`allowOcclusionWhenDynamic`,void 0),eo([E(S)],B.prototype,`probeAnchor`,void 0),eo([E()],B.prototype,`reflectionProbeUsage`,void 0);var lo=class extends B{},uo=class extends lo{_needUpdateBoundingSphere=!1;awake(){super.awake(),no&&console.log(`SkinnedMeshRenderer for "`+this.name+`"`,this),this.allowOcclusionWhenDynamic=!1;for(let e of this.sharedMeshes)e.parent?.updateWorldMatrix(!1,!0),this.markBoundsDirty()}onAfterRender(){if(super.onAfterRender(),this._needUpdateBoundingSphere){for(let e of this.sharedMeshes)if(e instanceof Ie){this._needUpdateBoundingSphere=!1;try{let t=e.geometry,n=ar(e);n&&(e.geometry=n),e.computeBoundingSphere(),e.geometry=t}catch(t){console.error(`Error updating bounding sphere for ${e.name}`,t)}}}if(no){for(let e of this.sharedMeshes)if(e instanceof Ie&&e.boundingSphere){let t=wn(e.boundingSphere.center).applyMatrix4(e.matrixWorld);Ln.DrawWireSphere(t,e.boundingSphere.radius,`red`)}}}markBoundsDirty(){this._needUpdateBoundingSphere=!0}},fo;(function(e){e[e.Off=0]=`Off`,e[e.On=1]=`On`,e[e.TwoSided=2]=`TwoSided`,e[e.ShadowsOnly=3]=`ShadowsOnly`})(fo||={});function po(){`OffscreenCanvas`in globalThis||(globalThis.OffscreenCanvas=class{canvas;constructor(e,t){return this.canvas=document.createElement(`canvas`),this.canvas.width=e,this.canvas.height=t,this.canvas.convertToBlob=(e,t)=>new Promise(n=>{this.canvas.toBlob(n,e,t)}),this.canvas}})}var mo=D(`debugprogress`);function ho(e){e||=new Date;let t=e.getMonth()+1,n=e.getDate(),r=e.getHours(),i=e.getMinutes(),a=e.getSeconds(),o=(t<10?`0`:``)+t,s=(n<10?`0`:``)+n,c=(r<10?`0`:``)+r,l=(i<10?`0`:``)+i,u=(a<10?`0`:``)+a;return e.getFullYear()+o+s+`-`+c+l+u}var V=class{static start(e,t){typeof t==`string`&&(t={parentScope:t});let n=new _o(e,t);go.set(e,n)}static report(e,t){let n=go.get(e);if(!n){console.warn(`Reporting progress for non-existing scope`,e);return}typeof t==`string`&&(t={message:t,autoStep:!0}),n.report(t)}static end(e){let t=go.get(e);t&&(t.end(),go.delete(e))}},go=new Map,_o=class{scopeLabel;parentScope;childScopes=[];parentDepth=0;lastStep=0;lastAutoStepWeight=1;lastTotalSteps=0;onProgress;showLogs=!1;selfProgress=0;totalProgress=0;selfReports=0;totalReports=0;constructor(e,t){this.parentScope=t?.parentScope?go.get(t.parentScope):void 0,this.parentScope&&(this.parentScope.childScopes.push(this),this.parentDepth=this.parentScope.parentDepth+1),this.scopeLabel=` `.repeat(this.parentDepth*2)+e,this.showLogs=t?.logTimings??!!mo,this.showLogs&&console.time(this.scopeLabel),this.onProgress=t?.onProgress}report(e,t=!1){if(e){if(e.totalSteps!==void 0&&(this.lastTotalSteps=e.totalSteps),e.currentStep!==void 0&&(this.lastStep=e.currentStep),e.autoStep!==void 0){if(e.currentStep===void 0){this.lastStep===void 0&&(this.lastStep=0);let t=typeof e.autoStep==`number`?e.autoStep:1;this.lastStep+=this.lastAutoStepWeight,this.lastAutoStepWeight=t,e.currentStep=this.lastStep}e.totalSteps=this.lastTotalSteps}e.progress===void 0?e.currentStep!==void 0&&e.totalSteps!==void 0&&(this.selfProgress=e.currentStep/e.totalSteps):this.selfProgress=e.progress}if(this.childScopes.length>0){let e=0,t=0;for(let n of this.childScopes)e+=n.selfProgress,t+=1;t>0&&(e/=t);let n=this.lastAutoStepWeight/(this.lastTotalSteps??1);this.totalProgress=this.selfProgress+e*n}else this.totalProgress=this.selfProgress;this.selfProgress=Math.min(1,this.selfProgress),this.totalProgress=Math.min(1,this.totalProgress);let n=(this.totalProgress*100).toFixed(3)+`%`;this.childScopes.length>0&&(n+=` (`+(this.selfProgress*100).toFixed(3)+`% self)`),e?.message&&(n=e.message+` – `+n),this.lastStep!==void 0&&this.lastTotalSteps!==void 0&&(n=`Step `+(this.lastStep+(this.lastAutoStepWeight==1?``:`–`+(this.lastStep+this.lastAutoStepWeight))+`/`+this.lastTotalSteps)+` `+n),t||this.selfReports++,this.totalReports++,this.showLogs&&console.timeLog(this.scopeLabel,n),this.onProgress&&this.onProgress(this.totalProgress),this.parentScope&&this.parentScope.report(void 0,!0)}end(){this.report({progress:1,autoStep:!0},!0),this.showLogs&&(console.timeLog(this.scopeLabel,`Total reports: `+this.totalReports,`Self reports: `+this.selfReports),console.timeEnd(this.scopeLabel));let e=!1;for(let t of this.childScopes)if(!(t.selfProgress>=1)){e=!0;break}e&&console.warn(`Progress end with child scopes that are still running`,this),this.onProgress=void 0}},H=`{let t=e.type___needle,n=r.get(t)||new Map;if(r.set(t,n),!n.has(e)){let r=`${t}${n.size?`_${n.size}`:``}`;n.set(e,r)}return n.get(e)},a=e.colorNode?yo(e.colorNode):[],o=e.colorNode?`color3f inputs:diffuseColor.connect = ${H}/${t}/${i(a.values().next().value)}.outputs:out>`:``,s=e.roughnessNode?yo(e.roughnessNode):[],c=e.roughnessNode?`float inputs:roughness.connect = ${H}/${t}/${i(s.values().next().value)}.outputs:out>`:``,l=e.normalNode?yo(e.normalNode):[],u=e.normalNode?`float3 inputs:normal.connect = ${H}/${t}/${i(l.values().next().value)}.outputs:out>`:``,d=e.metalnessNode?yo(e.metalnessNode):[],f=e.metalnessNode?`float inputs:metallic.connect = ${H}/${t}/${i(d.values().next().value)}.outputs:out>`:``,p=So(new Set([...a,...s,...l,...d]),t,n,i);return console.debug(p),` + + def Material "${t}" ${e.name?`( + displayName = "${e.name}" + )`:``} + { + token outputs:mtlx:surface.connect = ${H}/${t}/N_mtlxsurface.outputs:surface> + + def Shader "N_mtlxsurface" + { + uniform token info:id = "ND_UsdPreviewSurface_surfaceshader" + ${o} + ${c} + ${u} + ${f} + token outputs:surface + } + + ${p} + + }`}function yo(e){let t=e=>{if(e.nodeType)return e.nodeType;switch(e.type){case`TimerNode`:return`float`;case`TextureNode`:return;case`ConvertNode`:return e.convertTo;default:return}},n=e=>{let n=new Set,r=e=>{if(!(!e.isNode||n.has(e))){e.nodeType___needle||=t(e),e.shaderNode?(e.type___needle=`ShaderCallNodeInternal`,e.shaderNodeLayoutName___needle=e.shaderNode.layout.name.slice(3)):e.type___needle=e.type,n.add(e);for(let t in e)e[t]?.isNode&&(r(e[t]),e.nodeType___needle||=e[t].nodeType___needle),Array.isArray(e[t])&&e[t].forEach(t=>{t.isNode&&(r(t),e.nodeType___needle||=t.nodeType___needle)})}};return r(e),n},r=e=>{if(e.type===`ConvertNode`){if(e.convertTo===e.node.nodeType___needle)return!0;if(e.node.type===`ConstNode`){if(e.convertTo===`vec4`&&e.node.value.isVector4||e.convertTo===`vec3`&&e.node.value.isVector3||e.convertTo===`vec2`&&e.node.value.isVector2||e.convertTo===`color`&&e.node.value.isColor||e.convertTo===`float`&&typeof e.node.value==`number`)return!0}else if(e.node.type==`SplitNode`&&e.convertTo==`float`&&e.node.components.length===1)return!0}return!1},i=e=>{for(;a(e);)e=!e.node&&e.shaderNode?e.inputNodes[0]:e.node??e.aNode??e.bNode??e.cNode;return e},a=e=>!e||r(e)||[`UniformNode`,`UniformGroupNode`,`ShaderNodeInternal`].includes(e.type___needle)||e.type___needle===void 0,o=(e,t)=>{for(let n of t)for(let t in n)if(n[t]?.isNode&&n[t]===e||Array.isArray(n[t])&&n[t].find(t=>t.isNode&&t===e))return{parent:n,label:t};return null},s=(e,t)=>{if(e.shaderNode)e.inputNodes[0]=i(e.inputNodes[0]);else if(Array.isArray(e.nodes))for(let t=0;t{e[t]&&a(e[t])&&(e[t]=i(e[t]))})},c=e=>{e.type===`MathNode`&&e.method===`mix`&&(e.cNode.nodeType___needle=`float`,e.cNode.type===`ConvertNode`&&(e.cNode.convertTo=`float`))},l=(e,t)=>{t.label===`cNode`&&t.parent.type===`MathNode`&&t.parent.method===`mix`||(t.parent.type===`JoinNode`?e.nodeType___needle=`float`:e.nodeType___needle=t.parent.nodeType___needle)},u=e=>e?.type===`ConvertNode`&&e.nodeType___needle===`color`&&e.node.nodeType___needle===`vec4`,d=(e,t)=>{e.convertTo=`vec3`,e.nodeType___needle=`vec3`;let n={type:`ConvertNode`,convertTo:`color`,node:e,isNode:!0,nodeType___needle:`color`,type___needle:`ConvertNode`},r=o(e,t);return r?.parent&&(r.parent[r.label]=n),n},f=e=>e?.type===`ConvertNode`&&e.node.type===`TextureNode`&&e.nodeType___needle!==e.node.nodeType___needle;return(e=>{let t=new Set;for(let n of e)if(!a(n)){if(c(n),n.type==`SplitNode`){let t=o(n,e);if(n.components.length===1)n.nodeType___needle=`float`;else if(t)n.nodeType___needle=t.parent.nodeType___needle;else throw Error(`SplitNode without parent found, this should not happen`)}if(s(n,[`node`,`aNode`,`bNode`,`cNode`]),n.type==`ConstNode`&&n.nodeType==null&&l(n,o(n,e)),u(n)&&t.add(d(n,e)),f(n)){n.node.nodeType___needle=n.convertTo;let t=o(n,e);t?.parent&&(t.parent[t.label]=n.node),n=n.node}t.add(n)}return t})(n(e))}function bo(e,t){switch(t){case`float4`:return e.isVector4?`(${e.x}, ${e.y}, ${e.z}, ${e.w})`:`(${e}, ${e}, ${e}, ${e})`;case`float3`:return e.isVector3?`(${e.x}, ${e.y}, ${e.z})`:`(${e}, ${e}, ${e})`;case`float2`:return e.isVector2?`(${e.x}, ${e.y})`:`(${e}, ${e})`;case`color3f`:return e.isColor?`(${e.r}, ${e.g}, ${e.b})`:`(${e}, ${e}, ${e})`;default:return e.isVector4||e.isVector3||e.isVector2?`${e.x}`:e.isColor?`${e.r}`:`${e}`}}function xo(e,t,n,r){let i=` `,a=e=>({float:`float`,vec2:`vector2`,vec3:`vector3`,vec4:`vector4`,color:`color3`})[e]||`float`,o=e=>({float:`float`,vec2:`float2`,vec3:`float3`,vec4:`float4`,color:`color3f`})[e]||`float`,s=e.type___needle,c=e.nodeType___needle,l=a(c),u=o(c),d=``,f=[];switch(s){case`UniformGroupNode`:case`UniformNode`:return``;case`TimerNode`:d=`time_float`;break;case`ConstNode`:d=`constant_`+l,f.push(`${u} inputs:value = ${bo(e.value,u)}`);break;case`JoinNode`:d=`combine`+e.nodes.length+`_`+l;let i=1;for(let r of e.nodes)f.push(`float inputs:in${i++}.connect = ${H}/${t}/${n(r)}.outputs:out>`);break;case`ConvertNode`:d=`convert_`+a(e.node.nodeType___needle)+`_`+l,e.node&&f.push(`${o(e.node.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`);break;case`MathNode`:d=e.method+`_`+l,e.aNode&&!e.bNode&&f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),e.aNode&&e.bNode&&!e.cNode&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:in1.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:in2.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`)),e.aNode&&e.bNode&&e.cNode&&e.method==`clamp`&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:low.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`),f.push(`${o(e.cNode.nodeType___needle)} inputs:high.connect = ${H}/${t}/${n(e.cNode)}.outputs:out>`)),e.aNode&&e.bNode&&e.cNode&&e.method==`mix`&&(f.push(`${o(e.aNode.nodeType___needle)} inputs:fg.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`),f.push(`${o(e.bNode.nodeType___needle)} inputs:bg.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`float inputs:mix.connect = ${H}/${t}/${n(e.cNode)}.outputs:out>`));break;case`OperatorNode`:let s=``;switch(e.op){case`*`:s=`multiply`;break;case`/`:s=`divide`;break;case`+`:s=`add`;break;case`-`:s=`subtract`;break}if(d=s+`_`+l,e.aNode&&!e.bNode&&f.push(`${o(e.aNode.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),e.aNode&&e.bNode){let r=o(e.aNode.nodeType___needle),i=o(e.bNode.nodeType___needle);(r===`color3f`&&i===`float`||i===`float`&&i===`color3f`)&&(d=s+`_color3FA`),f.push(`${r} inputs:in1.connect = ${H}/${t}/${n(e.aNode)}.outputs:out>`),f.push(`${i} inputs:in2.connect = ${H}/${t}/${n(e.bNode)}.outputs:out>`)}break;case`TextureNode`:e.uvNode?(d=`tiledimage_`+l,f.push(`float2 inputs:texcoord.connect = ${H}/${t}/${n(e.uvNode)}.outputs:out>`)):d=`image_`+l;let c=e._value,p=Ts.includes(c.format),m=Co(c);f.push(`asset inputs:file = @textures/${m}.${p?`png`:`jpg`}@`),r[m]={texture:c,scale:void 0};break;case`NormalMapNode`:u=`float3`,d=`normalmap`,f.push(`${u} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`);break;case`AttributeNode`:d=`geompropvalue_`+l,f.push(`string inputs:geomprop = "st"`);break;case`ShaderCallNodeInternal`:d=e.shaderNodeLayoutName___needle+`_`+l,f.push(`${u} inputs:in.connect = ${H}/${t}/${n(e.inputNodes[0])}.outputs:out>`);break;case`SplitNode`:d=`swizzle_`+a(e.node.nodeType___needle)+`_`+l,f.push(`${o(e.node.nodeType___needle)} inputs:in.connect = ${H}/${t}/${n(e.node)}.outputs:out>`),f.push(`string inputs:channels = "${e.components}"`);break}return` + ${i}def Shader "${n(e)}" + ${i}{ + ${i}uniform token info:id = "ND_${d}" + ${i}${u} outputs:out + ${i}${f.length>0?f.join(` + `):``} + ${i}} + `}function So(e,t,n,r){let i=``;for(let a of e)i+=xo(a,t,r,n);return i}function Co(e){return wo(e.name)+`_`+(e.source?.id??e.id)}function wo(e){return e=e.replace(/[^a-zA-Z0-9_]/g,``),e.match(/^[a-zA-Z_]/)||(e=`_`+e),e}function To(e){return e=e.replace(`"`,`\\"`),e}function Eo(e){if(e.length===0)return null;let t=e.map(e=>{let t=[];for(;e.parent;)t.unshift(e.parent),e=e.parent;return t});return t[0].findLast(e=>t.every(t=>t.includes(e)))||null}function Do(e){let t=Eo(e),n=new Set;for(let r of e){let i=r.parent;for(;i&&i!==t;)e.includes(i)||n.add(i),i=i.parent}return n}var Oo=new r,ko=new Ue,Ao=new r(1,1,1),jo=class e{static USDObject_export_id=0;uuid;name;type;extraSchemas=[];displayName;visibility;getMatrix(){if(!this.transform)return new b;let{position:e,quaternion:t,scale:n}=this.transform,r=new b;return r.compose(e||Oo,t||ko,n||Ao),r}setMatrix(e){if(!e||!(e instanceof b)){this.transform=null;return}let t=new r,n=new Ue,i=new r;e.decompose(t,n,i),this.transform={position:t,quaternion:n,scale:i}}get matrix(){return this.getMatrix()}set matrix(e){this.setMatrix(e)}transform=null;_isDynamic;get isDynamic(){return this._isDynamic}set isDynamic(e){this._isDynamic=e}geometry;material;camera;parent;skinnedMesh;children=[];animations;_eventListeners;needsTranslate=!1;needsOrient=!1;needsScale=!1;static createEmptyParent(t){let n=new e(h.generateUUID(),t.name+`_empty_`+ e.USDObject_export_id++,t.transform),r=t.parent;return r&&r.add(n),n.add(t),n.isDynamic=!0,t.transform=null,n}static createEmpty(){let t=new e(h.generateUUID(),`Empty_`+ e.USDObject_export_id++);return t.isDynamic=!0,t}constructor(e,t,n=null,r=null,i=null,a=null,o=null,s=null){this.uuid=e,this.name=wo(t),this.displayName=t,n?this.transform={position:n.position?.clone()||null,quaternion:n.quaternion?.clone()||null,scale:n.scale?.clone()||null}:this.transform=null,this.geometry=r,this.material=i,this.camera=a,this.parent=null,this.children=[],this._eventListeners={},this._isDynamic=!1,this.skinnedMesh=o,this.animations=s}is(e){return e?this.uuid===e.uuid:!1}isEmpty(){return!this.geometry}clone(){let t=new e(h.generateUUID(),this.name,this.transform,this.geometry,this.material);return t.isDynamic=this.isDynamic,t}deepClone(){let e=this.clone();for(let t of this.children)t&&e.add(t.deepClone());return e}getPath(){let e=this.parent,t=this.name;for(;e;)t=(e.parent?e.name:e.name+`/Scenes/Scene`)+`/`+t,e=e.parent;return``}add(e){e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e)}remove(e){let t=this.children.indexOf(e);t>=0&&(e.parent===this&&(e.parent=null),this.children.splice(t,1))}addEventListener(e,t){this._eventListeners[e]||(this._eventListeners[e]=[]),this._eventListeners[e].push(t)}removeEventListener(e,t){if(!this._eventListeners[e])return;let n=this._eventListeners[e].indexOf(t);n>=0&&this._eventListeners[e].splice(n,1)}onSerialize(e,t){let n=this._eventListeners.serialize;n&&n.forEach(n=>n(e,t))}},Mo=class extends jo{stageLength;get isDocumentRoot(){return!0}get isDynamic(){return!1}constructor(){super(void 0,`StageRoot`,null,null,null,null),this.children=[],this.stageLength=200}add(e){e.parent=this,this.children.push(e)}remove(e){let t=this.children.indexOf(e);t>=0&&(e.parent===this&&(e.parent=null),this.children.splice(t,1))}traverse(e,t=null){if(t===null?t=this:e(t),t.children)for(let n of t.children)this.traverse(e,n)}findById(e){let t=!1;function n(r){if(!t){if(r.uuid===e)return t=!0,r;if(r.children)for(let e of r.children){if(!e)continue;let t=n(e);if(t)return t}}}return n(this)}buildHeader(e){let t=e.extensions?.find(e=>e?.extensionName===`animation`),n=e.extensions?.find(e=>e?.extensionName===`Behaviour`),r=e.extensions?.find(e=>e?.extensionName===`Physics`),i=t?.getStartTimeCode()??0,a=t?.getEndTimeCode()??0,o=``,s=t?.registeredClips;if(s)for(let e of s)o+=`\t# Animation: ${e.name}, start=${t.getStartTimeByClip(e)*60}, length=${e.duration*60}\n`;let c=o;return`#usda 1.0 +( + customLayerData = { + string creator = "Needle Engine ${ut}" + dictionary Needle = { + bool animations = ${+!!t} + bool interactive = ${+!!n} + bool physics = ${+!!r} + bool quickLookCompatible = ${+!!e.quickLookCompatible} + } + } + defaultPrim = "${wo(this.name)}" + metersPerUnit = 1 + upAxis = "Y" + startTimeCode = ${i} + endTimeCode = ${a} + timeCodesPerSecond = 60 + framesPerSecond = 60 + doc = """Generated by Needle Engine USDZ Exporter ${ut}""" +${c} +) +`}},No=` +`,Po=`({ar:{anchoring:{type:`plane`},planeAnchoring:{alignment:`horizontal`}},quickLookCompatible:!1,extensions:[],maxTextureSize:4096,exportInvisible:!1}),Ro=class{debug;pruneUnusedNodes;sceneAnchoringOptions=Lo();extensions=[];keepObject;beforeWritingDocument;constructor(){this.debug=!1,this.pruneUnusedNodes=!0}async parse(e,t=Lo()){t=Object.assign({},t),this.sceneAnchoringOptions=t;let n=new Io(e,this,t);this.extensions=n.extensions;let r=n.files,i=`model.usda`;r[i]=null,n.materials;let a=n.textures;V.report(`export-usdz`,`Invoking onBeforeBuildDocument`),await Wo(n,`onBeforeBuildDocument`),V.report(`export-usdz`,`Done onBeforeBuildDocument`),V.report(`export-usdz`,`Reparent bones to common ancestor`);let o=[],s=new Set;e?.traverse(e=>{if(!(!t.exportInvisible&&!e.visible)&&e instanceof Ie){let t=e.skeleton.bones,n=Eo(t);if(n){let t={object:e,originalParent:e.parent,newParent:n};o.push(t),s.add(t.object.uuid),t.newParent&&s.add(t.newParent.uuid),t.originalParent&&s.add(t.originalParent.uuid)}}});for(let e of o){let{object:t,originalParent:n,newParent:r}=e;r.add(t)}V.report(`export-usdz`,`Traversing hierarchy`),e&&zo(e,n.document,n,this.keepObject),V.report(`export-usdz`,`Invoking onAfterBuildDocument`),await Wo(n,`onAfterBuildDocument`);let c=n.extensions.find(e=>e.extensionName===`Behaviour`)?.getAllTargetUuids()??new Set;if(this.pruneUnusedNodes){let e={allBehaviorTargets:c,debug:!1,boneReparentings:s,quickLookCompatible:n.quickLookCompatible};this.debug&&Bo(n.document,`Hierarchy BEFORE pruning`,e),Vo(n.document,e),this.debug&&Bo(n.document,`Hierarchy AFTER pruning`)}else this.debug&&console.log(`Pruning of empty nodes is disabled. This may result in a larger USDZ file.`);V.report(`export-usdz`,{message:`Parsing document`,autoStep:10}),await Ho(n,t),V.report(`export-usdz`,`Invoking onAfterSerialize`),await Wo(n,`onAfterSerialize`);for(let e of o){let{object:t,originalParent:n,newParent:r}=e;n&&n.add(t)}n.exporter?.beforeWritingDocument?.();let l=n.document.buildHeader(n)+` +`+n.output;this.debug&&console.debug(l),r[i]=ur(l),n.output=``,V.report(`export-usdz`,{message:`Exporting textures`,autoStep:10}),V.start(`export-usdz-textures`,{parentScope:`export-usdz`,logTimings:!1});let u=new p({antialias:!1,alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0}),d=Object.keys(a).length;V.report(`export-usdz-textures`,{totalSteps:d*3,currentStep:0});let f=async e=>{let n=a[e],i=n.texture,o=Ts.includes(i.format),s={imageData:i.image};V.report(`export-usdz-textures`,{message:`read back texture`,autoStep:!0});let c=n.scale!==void 0&&n.scale.x!==1&&n.scale.y!==1&&n.scale.z!==1&&n.scale.w!==1;(i.isCompressedTexture||i.isRenderTargetTexture||c)&&(s=await Xo(i,t.maxTextureSize,u,n.scale)),V.report(`export-usdz-textures`,{message:`convert texture to canvas`,autoStep:!0});let l=await Qo(s.imageBitmap||s.imageData,t.maxTextureSize).catch(e=>{console.error(`Error converting texture to canvas`,i,e)});if(l){V.report(`export-usdz-textures`,{message:`convert canvas to blob`,autoStep:!0});let t=await l.convertToBlob({type:o?`image/png`:`image/jpeg`,quality:.95});r[`textures/${e}.${o?`png`:`jpg`}`]=new Uint8Array(await t.arrayBuffer())}else console.warn("Can`t export texture: ",i)};for(let e in a)await f(e);u.dispose(),V.end(`export-usdz-textures`);let m=0;for(let e in r){let t=r[e],n=34+e.length;m+=n;let i=m&63;if(i!==4){let n=64-i;r[e]=[t,{extra:{12345:new Uint8Array(n)}}]}m=t.length}return V.report(`export-usdz`,`zip archive`),fr(r,{level:0})}};function zo(e,t,n,r){if(!n.exportInvisible&&!e.visible)return;let i,a,o,s={position:e.position,quaternion:e.quaternion,scale:e.scale};if(e.position.x===0&&e.position.y===0&&e.position.z===0&&(s.position=null),e.quaternion.x===0&&e.quaternion.y===0&&e.quaternion.z===0&&e.quaternion.w===1&&(s.quaternion=null),e.scale.x===1&&e.scale.y===1&&e.scale.z===1&&(s.scale=null),(e instanceof x||e instanceof Ie)&&(a=e.geometry,o=e.material),r&&!r(e)&&(a=void 0,o=void 0),(e instanceof x||e instanceof Ie)&&o&&typeof o==`object`&&(o instanceof Te||o instanceof v||o.isMeshPhysicalNodeMaterial||o instanceof Ne&&o.type===`MeshLineMaterial`)){let t=ns(e),n=e instanceof Ie?e:null;i=new jo(e.uuid,t,s,a,o,void 0,n,e.animations)}else if(e instanceof be||e instanceof Ae){let t=ns(e);i=new jo(e.uuid,t,s,void 0,void 0,e)}else{let t=ns(e);i=new jo(e.uuid,t,s,void 0,void 0,void 0,void 0,e.animations)}if(i){if(i.displayName=e.userData?.name||e.name,i.visibility=e.visible?void 0:`invisible`,t&&t.add(i),t=i,n.extensions)for(let t of n.extensions)t.onExportObject&&t.onExportObject.call(t,e,i,n)}else{let n=ns(e),r=new jo(e.uuid,n,{position:e.position,quaternion:e.quaternion,scale:e.scale});t&&t.add(r),t=r}for(let i of e.children)zo(i,t,n,r)}function Bo(e,t,...n){let r={},i=0;function a(e,t){i++;let n=e.displayName||e.name;n+=` (`+e.uuid+`)`,(e.geometry||e.material||e.camera||e.skinnedMesh)&&(n+=` (`+(e.geometry?`geo, `:``)+(e.material?`mat, `:``)+(e.camera?`cam, `:``)+(e.skinnedMesh?`skin, `:``)+`)`),t[n]={};let r={object:e};e.material&&(r.mat=!0),e.geometry&&(r.geo=!0),e.camera&&(r.cam=!0),e.skinnedMesh&&(r.skin=!0),t[n]._self=r;for(let r of e.children)r&&a(r,t[n])}a(e,r),console.log(t+` (`+i+` nodes)`,r,...n)}function Vo(e,t){let n=!0,r=[],i=[];if(e.children.length===0)n=!0;else{let a=[...e.children];for(let e of a)if(e){let a=Vo(e,t);t.debug&&(a?r.push(e):i.push(e)),n&&=a}}let a=t.allBehaviorTargets.has(e.uuid),o=e.geometry||e.material||e.camera&&!t.quickLookCompatible||e.skinnedMesh||!1,s=t.boneReparentings.has(e.uuid),c=n&&!a&&!o&&!s;return c?(t.debug&&console.log(`Pruned object:`,(e.displayName||e.name)+` (`+e.uuid+`)`,{isVisible:o,isBehaviorSourceOrTarget:a,allChildsWerePruned:n,isBoneReparenting:s,object:e,prunedChilds:r,keptChilds:i}),e.parent?.remove(e)):t.debug&&console.log(`Kept object:`,(e.displayName||e.name)+` (`+e.uuid+`)`,{isVisible:o,isBehaviorSourceOrTarget:a,allChildsWerePruned:n,isBoneReparenting:s,object:e,prunedChilds:r,keptChilds:i}),c}async function Ho(e,t){V.start(`export-usdz-resources`,`export-usdz`);let n=[];for(let t of e.document.children)Uo(t,e,n);let r=n.length;for(let e=0;e{n[e](),t()});V.end(`export-usdz-resources`);let i=new Fo,a=e.exporter.sceneAnchoringOptions.ar;i.beginBlock(`def Xform "${e.document.name}"`),i.beginBlock(`def Scope "Scenes" ( + kind = "sceneLibrary" + )`),i.beginBlock(`def Xform "Scene"`,`(`,!1),i.appendLine(`apiSchemas = ["Preliminary_AnchoringAPI"]`),i.appendLine(`customData = {`),i.appendLine(` bool preliminary_collidesWithEnvironment = 0`),i.appendLine(` string sceneName = "Scene"`),i.appendLine(`}`),i.appendLine(`sceneName = "Scene"`),i.closeBlock(`)`),i.beginBlock(),i.appendLine(`token preliminary:anchoring:type = "${a.anchoring.type}"`),a.anchoring.type===`plane`&&i.appendLine(`token preliminary:planeAnchoring:alignment = "${a.planeAnchoring.alignment}"`),a.anchoring.type===`image`&&i.appendLine(`rel preliminary:imageAnchoring:referenceImage = `),i.appendLine();let o=e=>{if(!e)return 0;let t=1;for(let n of e.children)t+=o(n);return t},s=o(e.document);V.start(`export-usdz-xforms`,`export-usdz`),V.report(`export-usdz-xforms`,{totalSteps:s,currentStep:1});for(let t of e.document.children)ss(t,i,e);V.end(`export-usdz-xforms`),V.report(`export-usdz`,`invoke onAfterHierarchy`),await Wo(e,`onAfterHierarchy`,i),i.closeBlock(),i.closeBlock(),V.report(`export-usdz`,`Building materials`);let c=ys(e.materials,e.textures,t.quickLookCompatible);i.appendLine(c),i.closeBlock(),V.report(`export-usdz`,`write to string`),e.output+=i.toString()}function Uo(e,t,n){if(!e)return;let r=e.geometry,i=e.material;if(r)if(i&&(`isMeshStandardMaterial`in i&&i.isMeshStandardMaterial||`isMeshBasicMaterial`in i&&i.isMeshBasicMaterial||i.type===`MeshLineMaterial`)){let i=`geometries/`+is(r,e.name)+`.usda`;i in t.files||n.push(()=>{let n=us(r,e.skinnedMesh?.skeleton?.bones,t.quickLookCompatible);t.files[i]=ts(n,t)})}else console.warn(`NeedleUSDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)`,i?.name);i&&t.materials.get(i.uuid)===void 0&&(t.materials[i.uuid]=i);for(let r of e.children)Uo(r,t,n)}async function Wo(e,t,n=null){if(e.extensions){for(let r of e.extensions)if(r&&typeof r[t]==`function`){let i=r[t].call(r,e,n);i instanceof Promise&&await i}}}var Go=null,Ko=null,qo,Jo,Yo;async function Xo(e,t=1/0,n=null,r=void 0){qo||=new He(2,2,1,1),Jo||=new Re({uniforms:{blitTexture:new Ke(e),flipY:new Ke(!1),scale:new Ke(new C(1,1,1,1))},vertexShader:` + varying vec2 vUv; + uniform bool flipY; + void main(){ + vUv = uv; + if (flipY) + vUv.y = 1. - vUv.y; + gl_Position = vec4(position.xy * 1.0,0.,.999999); + }`,fragmentShader:` + uniform sampler2D blitTexture; + uniform vec4 scale; + varying vec2 vUv; + + void main(){ + gl_FragColor = vec4(vUv.xy, 0, 1); + + #ifdef IS_SRGB + gl_FragColor = sRGBTransferOETF( texture2D( blitTexture, vUv) ); + #else + gl_FragColor = texture2D( blitTexture, vUv); + #endif + + gl_FragColor.rgba *= scale.rgba; + }`});let i=Jo.uniforms;i.blitTexture.value=e,i.flipY.value=!1,i.scale.value=new C(1,1,1,1),r!==void 0&&i.scale.value.copy(r),Jo.defines.IS_SRGB=e.colorSpace==ue,Jo.needsUpdate=!0,Yo||(Yo=new x(qo,Jo),Yo.frustumCulled=!1);let a=new be,o=new ne;o.add(Yo),n||=Go=new p({antialias:!1,alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});let s=Math.min(e.image.width,t),c=Math.min(e.image.height,t);Ko&&(Ko.width!==s||Ko.height!==c)&&(Ko.dispose(),Ko=null),Ko||=new u(s,c,{format:te,type:We,minFilter:m,magFilter:m}),n.setRenderTarget(Ko),n.setSize(s,c),n.clear(),n.render(o,a),Go&&=(Go.dispose(),null);let l=new Uint8ClampedArray(Ko.width*Ko.height*4);n.readRenderTargetPixels(Ko,0,0,Ko.width,Ko.height,l);let d=new ImageData(l,Ko.width,Ko.height,void 0);return{imageData:d,imageBitmap:await createImageBitmap(d,{premultiplyAlpha:`none`})}}function Zo(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas||typeof ImageBitmap<`u`&&e instanceof ImageBitmap}async function Qo(e,t=4096){let n=t/Math.max(e.width,e.height),r=e.width*Math.min(1,n),i=e.height*Math.min(1,n),a=new OffscreenCanvas(r,i),o={premultiplyAlpha:`none`};e.width!==r&&(o.resizeWidth=r),e.height!==i&&(o.resizeHeight=i);let s=await createImageBitmap(e,o),c=a.getContext(`bitmaprenderer`);return c&&c.transferFromImageBitmap(s),a}async function $o(e,t=void 0,n=!1,r=4096){if(Zo(e)){let i=r/Math.max(e.width,e.height),a=new OffscreenCanvas(e.width*Math.min(1,i),e.height*Math.min(1,i)),o=a.getContext(`2d`,{alpha:!0,premultipliedAlpha:!1});if(!o)throw Error(`Could not get canvas 2D context`);if(n===!0&&(o.translate(0,a.height),o.scale(1,-1)),o.drawImage(e,0,0,a.width,a.height),t!==void 0){let e=t.x,n=t.y,r=t.z,i=t.w,s=o.getImageData(0,0,a.width,a.height),c=s.data;for(let t=0;t\(\)\[\]§$%&\/\\\=\?\,\;]/g,``)+`_`+e.id}function rs(e){return wo(e.name||`bone_`+e.uuid)}function is(e,t){return wo(e.name||`Geometry`)+`_`+e.id}function as(e){return wo(e.name||`Material`)+`_`+e.id}function os(e,t){let n=rs(e),r=e.parent;for(;r&&r!==t;)n=rs(r)+`/`+n,r=r.parent;return n}function ss(e,t,n){if(e==null)return;V.report(`export-usdz-xforms`,{message:`buildXform `+e.displayName||e.name,autoStep:!0});let r=e.transform,i=e.geometry,a=e.material,o=e.camera,s=e.name;if(e.animations)for(let t of e.animations)n.animations.push(t);let c=i&&i.isBufferGeometry&&i.attributes.skinIndex!==void 0&&i.attributes.skinIndex.count>0,l=c?`SkelRoot`:`Xform`,u=[],d=a&&a instanceof v&&a.color&&a.color.r===1&&a.color.g===1&&a.color.b===1&&!a.map&&a.opacity===1&&i?.attributes.color;if(i?.attributes.color&&!d&&console.warn(`NeedleUSDZExporter: Geometry has vertex colors. Vertex colors will only be shown in QuickLook for unlit materials with white color and no texture. Otherwise, they will be ignored.`,e.displayName),t.appendLine(),i?(t.beginBlock(`def ${l} "${s}"`,`(`,!1),n.quickLookCompatible&&a&&a.side===2&&!c?t.appendLine(`prepend references = @./geometries/${is(i,s)}.usda@`):t.appendLine(`prepend references = @./geometries/${is(i,s)}.usda@`),d||u.push(`MaterialBindingAPI`),c&&u.push(`SkelBindingAPI`)):o&&!n.quickLookCompatible?t.beginBlock(`def Camera "${s}"`,`(`,!1):e.type===void 0?t.beginBlock(`def Xform "${s}"`,`(`,!1):t.beginBlock(`def ${e.type} "${s}"`),e.type===void 0&&(e.extraSchemas?.length&&u.push(...e.extraSchemas),u.length&&t.appendLine(`prepend apiSchemas = [${u.map(e=>`"${e}"`).join(`, `)}]`)),e.displayName&&t.appendLine(`displayName = "${To(e.displayName)}"`),(o||e.type===void 0)&&(t.closeBlock(`)`),t.beginBlock()),i&&a){if(!d){let e=as(a);t.appendLine(`rel material:binding = `)}!n.quickLookCompatible&&a.side===2&&(t.beginBlock(`over "Geometry" `),t.appendLine(`uniform bool doubleSided = 1`),t.closeBlock())}let f=!1;if(c?(t.appendLine(`rel skel:skeleton = `),t.appendLine(`rel skel:animationSource = `),f=!1):e.type===void 0&&r&&(f=f||r.position!==null||r.quaternion!==null||r.scale!==null,r.position&&(e.needsTranslate=!0,t.appendLine(`double3 xformOp:translate = (${W(r.position.x)}, ${W(r.position.y)}, ${W(r.position.z)})`)),r.quaternion&&(e.needsOrient=!0,t.appendLine(`quatf xformOp:orient = (${W(r.quaternion.w)}, ${W(r.quaternion.x)}, ${W(r.quaternion.y)}, ${W(r.quaternion.z)})`)),r.scale&&(e.needsScale=!0,t.appendLine(`double3 xformOp:scale = (${W(r.scale.x)}, ${W(r.scale.y)}, ${W(r.scale.z)})`))),e.visibility!==void 0&&t.appendLine(`token visibility = "${e.visibility}"`),o&&!n.quickLookCompatible&&(`isOrthographicCamera`in o&&o.isOrthographicCamera?(t.appendLine(`float2 clippingRange = (${o.near}, ${o.far})`),t.appendLine(`float horizontalAperture = ${((Math.abs(o.left)+Math.abs(o.right))*10).toPrecision(U)}`),t.appendLine(`float verticalAperture = ${((Math.abs(o.top)+Math.abs(o.bottom))*10).toPrecision(U)}`),t.appendLine(`token projection = "orthographic"`)):`isPerspectiveCamera`in o&&o.isPerspectiveCamera&&(t.appendLine(`float2 clippingRange = (${o.near.toPrecision(U)}, ${o.far.toPrecision(U)})`),t.appendLine(`float focalLength = ${o.getFocalLength().toPrecision(U)}`),t.appendLine(`float focusDistance = ${o.focus.toPrecision(U)}`),t.appendLine(`float horizontalAperture = ${o.getFilmWidth().toPrecision(U)}`),t.appendLine(`token projection = "perspective"`),t.appendLine(`float verticalAperture = ${o.getFilmHeight().toPrecision(U)}`))),e.onSerialize&&e.onSerialize(t,n),e.type===void 0){let n=[];e.needsTranslate&&n.push(`"xformOp:translate"`),e.needsOrient&&n.push(`"xformOp:orient"`),e.needsScale&&n.push(`"xformOp:scale"`),n.length&&t.appendLine(`uniform token[] xformOpOrder = [${n.join(`, `)}]`)}if(e.children){t.appendLine();for(let r of e.children)ss(r,t,n)}t.closeBlock()}function W(e){return Number.isInteger(e)?e.toString():e.toFixed(10)}function cs(e){let t=e.elements;return`( ${ls(t,0)}, ${ls(t,4)}, ${ls(t,8)}, ${ls(t,12)} )`}function ls(e,t){return`(${W(e[t+0])}, ${W(e[t+1])}, ${W(e[t+2])}, ${W(e[t+3])})`}function us(e,t=[],n=!0){return` +def "Geometry" +${ds(e,t,n)} +`}function ds(e,t=[],n=!0){let r=`Geometry`,i=e.attributes,a=i.position.count,o=t&&t.length>0,s=[],c=[],l=[],u=i.skinIndex;if(o){let e=[];for(let n of t)s.push({bone:n,index:t.indexOf(n)}),e.push(n.uuid);let n=1e4;for(;e.length0;)for(let n of s){let r=n.bone.children;for(let n of r)e.indexOf(n.uuid)===-1&&t.indexOf(n)!==-1&&(s.push({bone:n,index:t.indexOf(n)}),e.push(n.uuid))}n<=0&&console.error(`Failed to sort bones in skinned mesh`,s,t,e);for(let e of Do(t))s.push({bone:e,index:s.length});let r=s[0].bone.parent;s.sort((e,t)=>os(e.bone,r)>os(t.bone,r)?1:-1),s.map(e=>`"`+os(e.bone,r)+`"`).join(`, `);for(let e in s)c[s[e].index]=parseInt(e);let a=i.skinIndex;l=[];for(let e=0;e +) +{ + over "Geometry" + { + int[] faceVertexCounts = [${fs(e)+`, `+fs(e)}] + int[] faceVertexIndices = [${ps(e)+`, `+ps(e,!0)}] + } +} +`:``} +`}function fs(e){let t=e.index===null?e.attributes.position.count:e.index.count;return Array(Math.floor(t/3)).fill(3).join(`, `)}function ps(e,t=!1){let n=e.index,r=[];if(n!==null)for(let e=0;e0?`st`+e.channel:`st`;a.add(e.channel);let p=Ts.includes(e.format),m={1e3:`repeat`,1001:`clamp`,1002:`mirror`},h=e.repeat.clone(),g=e.offset.clone(),_=e.rotation,ee=Math.sin(_),te=Math.cos(_);g.y=1-g.y-h.y,n?(h.x===0&&(h.x=1e-4),h.y===0&&(h.y=1e-4),g.x/=h.x,g.y/=h.y,g.x+=ee/h.x,g.y+=te-1):(g.x+=ee*h.x,g.y+=(1-te)*h.y);let ne=as(i),v=h.x!=1||h.y!=1||g.x!=0||g.y!=0||_!=0,re=`${Po}/${ne}/${`uvReader_`+f}.outputs:result>`,ie=`${Po}/${ne}/Transform2d_${t}.outputs:result>`,ae=t!==`normal`&&o&&(o.r!==1||o.g!==1||o.b!==1||s!==1)||!1,oe=t===`normal`,y=i instanceof Te&&i.normalScale?i.normalScale.x*2:2,se=y.toFixed(U),ce=(y/2*-1).toFixed(U),b=(1-y).toFixed(U);return` + ${v?`def Shader "Transform2d_${t}" ( + sdrMetadata = { + string role = "math" + } + ) + { + uniform token info:id = "UsdTransform2d" + float2 inputs:in.connect = ${re} + float2 inputs:scale = ${ws(h)} + float2 inputs:translation = ${ws(g)} + float inputs:rotation = ${(_/Math.PI*180).toFixed(U)} + float2 outputs:result + } + `:``} + def Shader "${c}_${t}" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @textures/${l}.${p?`png`:`jpg`}@ + token inputs:sourceColorSpace = "${e.colorSpace===`srgb`?`sRGB`:`raw`}" + float2 inputs:st.connect = ${v?ie:re} + ${ae?` + float4 inputs:scale = (${o?o.r+`, `+o.g+`, `+o.b:`1, 1, 1`}, ${s}) + `:``} + ${oe?` + float4 inputs:scale = (${se}, ${se}, ${se}, 1) + float4 inputs:bias = (${ce}, ${ce}, ${b}, 0) + `:``} + token inputs:wrapS = "${m[e.wrapS]}" + token inputs:wrapT = "${m[e.wrapT]}" + float outputs:r + float outputs:g + float outputs:b + float3 outputs:rgb + ${i.transparent||i.alphaTest>0?`float outputs:a`:``} + }`}function Ss(e,t,r=!1){let i=as(e);if(e.colorWrite===!1||e.userData?.isShadowCatcherMaterial||e.userData?.isLightBlendMaterial){let t=e.userData.isLightBlendMaterial||e.userData.isShadowCatcherMaterial?`ND_realitykit_shadowreceiver_surfaceshader`:`ND_realitykit_occlusion_surfaceshader`;return` + + def Material "${i}" ${e.name?`( + displayName = "${e.name}" + )`:``} + { + token outputs:mtlx:surface.connect = ${Po}/${i}/Occlusion.outputs:out> + + def Shader "Occlusion" + { + uniform token info:id = "${t}" + token outputs:out + } + }`}let a=` `,o=[],s=[],c=new Set;if(e.isMeshPhysicalNodeMaterial===!0)return vo(e,i,t);let l=e.transparent||e.alphaTest?e.opacity:1,u=!1,d=!1;if(e instanceof Fe&&e.transmission!==void 0&&(l*=1-e.transmission*(1-e.roughness*.5)),e.map?(o.push(`${a}color3f inputs:diffuseColor.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:rgb>`),e instanceof v&&e.transparent&&e.alphaTest==0&&r?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0,o.push(`${a}float inputs:opacityThreshold = 1e-10`),d=!0):e.transparent?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0):e.alphaTest>0&&(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.map)}_diffuse.outputs:a>`),u=!0,o.push(`${a}float inputs:opacityThreshold = ${e.alphaTest}`),d=!0),s.push(xs(e.map,`diffuse`,r,t,e,c,e.color,l))):o.push(`${a}color3f inputs:diffuseColor = ${Cs(e.color)}`),e.alphaHash&&r&&(d?console.warn(`Opacity threshold for `+e.name+` was already connected. Skipping alphaHash opacity threshold.`):(o.push(`${a}float inputs:opacityThreshold = 0.0000000001`),d=!0)),e.aoMap&&(o.push(`${a}float inputs:occlusion.connect = ${Po}/${i}/${bs(e.aoMap)}_occlusion.outputs:r>`),s.push(xs(e.aoMap,`occlusion`,r,t,e,c))),e.alphaMap?(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.alphaMap)}_opacity.outputs:r>`),o.push(`${a}float inputs:opacityThreshold = 0.0000000001`),u=!0,d=!0,s.push(xs(e.alphaMap,`opacity`,r,t,e,c,new n(1,1,1),l))):(u?console.warn(`Opacity for `+e.name+` was already connected. Skipping default opacity.`):(o.push(`${a}float inputs:opacity = ${l}`),u=!0),e.alphaTest>0&&(d?console.warn(`Opacity threshold for `+e.name+` was already connected. Skipping default opacity threshold.`):(o.push(`${a}float inputs:opacityThreshold = ${e.alphaTest}`),d=!0))),e instanceof Te){if(e.emissiveMap){o.push(`${a}color3f inputs:emissiveColor.connect = ${Po}/${i}/${bs(e.emissiveMap)}_emissive.outputs:rgb>`);let n=e.emissive.clone();n.multiplyScalar(e.emissiveIntensity),s.push(xs(e.emissiveMap,`emissive`,r,t,e,c,n))}else if(e.emissive?.getHex()>0){let t=e.emissive.clone();t.multiplyScalar(e.emissiveIntensity),o.push(`${a}color3f inputs:emissiveColor = ${Cs(t)}`)}e.normalMap&&(o.push(`${a}normal3f inputs:normal.connect = ${Po}/${i}/${bs(e.normalMap)}_normal.outputs:rgb>`),s.push(xs(e.normalMap,`normal`,r,t,e,c))),e.roughnessMap&&e.roughness===1?(o.push(`${a}float inputs:roughness.connect = ${Po}/${i}/${bs(e.roughnessMap)}_roughness.outputs:g>`),s.push(xs(e.roughnessMap,`roughness`,r,t,e,c))):o.push(`${a}float inputs:roughness = ${e.roughness===void 0?1:e.roughness}`),e.metalnessMap&&e.metalness===1?(o.push(`${a}float inputs:metallic.connect = ${Po}/${i}/${bs(e.metalnessMap)}_metallic.outputs:b>`),s.push(xs(e.metalnessMap,`metallic`,r,t,e,c))):o.push(`${a}float inputs:metallic = ${e.metalness===void 0?0:e.metalness}`)}return e instanceof Fe&&(o.push(`${a}float inputs:clearcoat = ${e.clearcoat}`),o.push(`${a}float inputs:clearcoatRoughness = ${e.clearcoatRoughness}`),o.push(`${a}float inputs:ior = ${e.ior}`),!e.transparent&&!(e.alphaTest>0)&&e.transmissionMap&&(o.push(`${a}float inputs:opacity.connect = ${Po}/${i}/${bs(e.transmissionMap)}_transmission.outputs:r>`),s.push(xs(e.transmissionMap,`transmission`,r,t,e,c)))),c.size>2?console.warn(`USDZExporter: Material `+e.name+` uses more than 2 UV channels. Currently, only UV0 and UV1 are supported.`):c.size===2&&(!c.has(0)||!c.has(1))&&console.warn(`USDZExporter: Material `+e.name+` uses UV channels other than 0 and 1. Currently, only UV0 and UV1 are supported.`),` + + def Material "${i}" ${e.name?`( + displayName = "${To(e.name)}" + )`:``} + { + token outputs:surface.connect = ${Po}/${i}/PreviewSurface.outputs:surface> + + def Shader "PreviewSurface" + { + uniform token info:id = "UsdPreviewSurface" +${o.join(` +`)} + int inputs:useSpecularWorkflow = ${e instanceof v?`1`:`0`} + token outputs:surface + } +${s.length>0?` +${c.has(0)?` + def Shader "uvReader_st" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st" + float2 inputs:fallback = (0.0, 0.0) + float2 outputs:result + } +`:``} +${c.has(1)?` + def Shader "uvReader_st1" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st1" + float2 inputs:fallback = (0.0, 0.0) + float2 outputs:result + } +`:``} +${s.join(` +`)}`:``} + }`}function Cs(e){return`(${e.r}, ${e.g}, ${e.b})`}function ws(e){return`(${e.x}, ${e.y})`}var Ts=[1023,33777,33778,33779,35842,35843,37496,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,36492];D(`debugusdz`);var Es=class e{static global_id=0;id;trigger;action;exclusive=!1;makeExclusive(e){return this.exclusive=e,this}constructor(t,n,r){this.id=`Behavior_`+wo(t)+`_`+ e.global_id++,this.trigger=n,this.action=r}writeTo(e,t,n){if(!this.trigger||!this.action)return;n.beginBlock(`def Preliminary_Behavior "${this.id}"`);let r=``;if(Array.isArray(this.trigger)){r=`[`;for(let e=0;e`,e+1`;if(n.appendLine(`rel triggers = ${r}`),n.appendLine(`rel actions = <${this.action.id}>`),n.appendLine(`uniform bool exclusive = ${+!!this.exclusive}`),n.appendLine(),Array.isArray(this.trigger))for(let e of this.trigger)e.writeTo(t,n),n.appendLine();else this.trigger.writeTo(t,n);n.appendLine(),this.action.writeTo(t,n),n.closeBlock()}},Ds=new Set;function Os(e,t){let n=``;if(Array.isArray(e)){Ds.clear();let r=`[ `;for(let n=0;n{e.appendLine(`bool allowsDirectInput = `+ +!!t.direct),e.appendLine(`bool allowsIndirectInput = `+ +!!t.indirect),e.appendLine(`uniform token info:id = "RealityKit.InputTarget"`)},e.add(n)}var js=class{static __sceneStartTrigger;static sceneStartTrigger(){if(this.__sceneStartTrigger!==void 0)return this.__sceneStartTrigger;let e=new ks(void 0,`SceneStart`);return e.tokenId=`SceneTransition`,e.type=`enter`,this.__sceneStartTrigger=e,e}static tapTrigger(e,t={direct:!0,indirect:!0}){let n=new ks(e);if(Array.isArray(e)&&e.length>1)for(let n of e)n instanceof jo&&As(n,t);else e instanceof jo&&As(e,t);return n.tokenId=`TapGesture`,n}static isTapTrigger(e){return e?.tokenId===`TapGesture`}static proximityToCameraTrigger(e,t){let n=new ks(e);return n.tokenId=`ProximityToCamera`,n.distance=t,n}},Ms=class{static global_id=0;static getId(){return this.global_id++}id;actions;loops=0;performCount=1;type=`serial`;multiplePerformOperation=void 0;constructor(e,t){this.id=e,this.actions=t}addAction(e){return this.actions.push(e),this}makeParallel(){return this.type=`parallel`,this}makeSequence(){return this.type=`serial`,this}makeLooping(){return this.loops=1,this.performCount=0,this}makeRepeat(e){return this.performCount=e,this}writeTo(e,t){t.beginBlock(`def Preliminary_Action "${this.id}"`),t.beginArray(`rel actions`);for(let e of this.actions){if(!e)continue;let n=e===this.actions[this.actions.length-1];t.appendLine(`<`+e.id+`>`+(n?``:`, `))}t.closeArray(),t.appendLine(),t.appendLine(`token info:id = "Group"`),t.appendLine(`bool loops = ${this.loops}`),t.appendLine(`int performCount = ${this.loops>0?0:Math.max(0,this.performCount)}`),t.appendLine(`token type = "${this.type}"`),typeof this.multiplePerformOperation==`string`&&t.appendLine(`token multiplePerformOperation = "${this.multiplePerformOperation}"`),t.appendLine();for(let n of this.actions)n&&(n.writeTo(e,t),t.appendLine());t.closeBlock()}},Ns=class e{static global_id=0;id;tokenId;affectedObjects;easeType;motionType=void 0;duration;moveDistance;style;type;front;up;start;animationSpeed;reversed;pingPong;xFormTarget;audio;gain;auralMode;multiplePerformOperation;velocity;comment;animationName;clone(){let t=new e,n=t.id;return Object.assign(t,this),t.id=n,t}constructor(t,n){t&&(this.affectedObjects=t),n?this.id=n:this.id=`Action`,this.id+=`_`+ e.global_id++}writeTo(e,t){t.beginBlock(`def Preliminary_Action "${this.id}"`),this.comment&&t.appendLine(`# ${this.comment}`),this.affectedObjects&&(typeof this.affectedObjects!=`string`&&(this.affectedObjects=Os(this.affectedObjects,e)),t.appendLine(`rel affectedObjects = `+this.affectedObjects)),typeof this.duration==`number`&&(typeof this.animationSpeed==`number`&&this.animationSpeed!==1?t.appendLine(`double duration = ${this.duration/this.animationSpeed} `):t.appendLine(`double duration = ${this.duration} `)),this.easeType&&t.appendLine(`token easeType = "${this.easeType}"`),this.tokenId&&t.appendLine(`token info:id = "${this.tokenId}"`),this.tokenId===`ChangeScene`&&t.appendLine(`rel scene = `),this.motionType!==void 0&&t.appendLine(`token motionType = "${this.motionType}"`),typeof this.moveDistance==`number`&&t.appendLine(`double moveDistance = ${this.moveDistance} `),this.style&&t.appendLine(`token style = "${this.style}"`),this.type&&t.appendLine(`token type = "${this.type}"`),this.front&&t.appendLine(`vector3d front = (${this.front.x}, ${this.front.y}, ${this.front.z})`),this.up&&t.appendLine(`vector3d upVector = (${this.up.x}, ${this.up.y}, ${this.up.z})`),typeof this.start==`number`&&t.appendLine(`double start = ${this.start} `),typeof this.animationSpeed==`number`&&t.appendLine(`double animationSpeed = ${this.animationSpeed.toFixed(2)} `),typeof this.reversed==`boolean`&&t.appendLine(`bool reversed = ${this.reversed}`),typeof this.pingPong==`boolean`&&t.appendLine(`bool reverses = ${this.pingPong}`),this.xFormTarget&&(typeof this.xFormTarget!=`string`&&(this.xFormTarget=Os(this.xFormTarget,e)),t.appendLine(`rel xformTarget = ${this.xFormTarget}`)),typeof this.audio==`string`&&t.appendLine(`asset audio = @${this.audio}@`),typeof this.gain==`number`&&t.appendLine(`double gain = ${this.gain}`),typeof this.auralMode==`string`&&t.appendLine(`token auralMode = "${this.auralMode}"`),typeof this.multiplePerformOperation==`string`&&t.appendLine(`token multiplePerformOperation = "${this.multiplePerformOperation}"`),typeof this.velocity==`object`&&t.appendLine(`vector3d velocity = (${this.velocity.x}, ${this.velocity.y}, ${this.velocity.z})`),t.closeBlock()}},Ps=class e{x=0;y=0;z=0;constructor(e,t,n){this.x=e,this.y=t,this.z=n}static get up(){return new e(0,1,0)}static get right(){return new e(1,0,0)}static get forward(){return new e(0,0,1)}static get back(){return new e(0,0,-1)}static get zero(){return new e(0,0,0)}},G=class e{static sequence(...e){return new Ms(`Group_`+Ms.getId(),e).makeSequence()}static parallel(...e){return new Ms(`Group_`+Ms.getId(),e).makeParallel()}static fadeAction(e,t,n){let r=new Ns(e);return r.tokenId=`Visibility`,r.type=n?`show`:`hide`,r.duration=t,r.style=`basic`,r.motionType=`none`,r.moveDistance=0,r.easeType=`none`,r}static startAnimationAction(t,n,r=!1,i=!1){let a=new Ns(t);a.tokenId=`StartAnimation`;let o=n.start,s=n.duration,c=n.speed,l=n.clipName;if(a.comment=`Animation: ${l}, start=${o*60}, length=${s*60}, end=${(o+s)*60}`,a.animationName=l,a.start=o,a.duration=s,a.animationSpeed=c,a.reversed=r,a.pingPong=i,a.multiplePerformOperation=`allow`,r&&(a.start-=s),i){a.pingPong=!1;let t=a.clone();return t.reversed=!r,t.start=a.start,t.reversed&&(t.start-=s),e.sequence(a,t)}return a}static waitAction(e){let t=new Ns;return t.tokenId=`Wait`,t.duration=e,t.motionType=void 0,t}static lookAtCameraAction(e,t,n,r){let i=new Ns(e);return i.tokenId=`LookAtCamera`,i.duration=t===void 0?9999999999999:t,i.front=n??Ps.forward,i.up=r??Ps.up,i}static emphasize(e,t,n=`bounce`,r=1,i=`basic`){let a=new Ns(e);return a.tokenId=`Emphasize`,a.duration=t,a.style=i??`basic`,a.motionType=n,a.moveDistance=r,a}static transformAction(e,t,n,r,i=`inout`){let a=new Ns(e);return a.tokenId=`Transform`,a.duration=n,a.duration=Math.max(1e-6,n),a.type=r,a.easeType=n>0?i:`none`,Array.isArray(t)&&console.error(`Transform target must not be an array`,t),a.xFormTarget=t,a}static playAudioAction(e,t,n=`play`,r=1,i=`spatial`){let a=new Ns(e);return a.tokenId=`Audio`,a.type=n,a.audio=t,a.gain=r,a.auralMode=i,a.multiplePerformOperation=`allow`,a}static impulseAction(e,t){let n=new Ns(e);return n.tokenId=`Impulse`,n.velocity=t,n}},Fs=D(`debugusdzanimation`),Is=D(`debugusdzanimationserialization`),Ls=class e{_start;get start(){return this._start===void 0&&(this._start=this.ext.getStartTimeByClip(this.clip)),this._start}get duration(){return this.clip?.duration??K.restPoseClipDuration}get nearestAnimatedRoot(){return this._nearestAnimatedRoot}get clipName(){return this.clip?.name??`rest`}ext;root;_nearestAnimatedRoot=void 0;clip;speed;constructor(e,t,n){this.ext=e,this.root=t,this.clip=n,this._nearestAnimatedRoot=this.getNearestAnimatedRoot()}static isDescendantOf(e,t){let n=t;if(!n||!e)return!1;for(;n;){if(!n)return!1;if(n===e)return!0;n=n.parent}return!1}getNearestAnimatedRoot(){let t;try{for(let n of this.clip?.tracks??[]){let r=o.parseTrackName(n.name),i=o.findNode(this.root,r.nodeName);if(i)if(!t)t=i;else{if(i===t||e.isDescendantOf(t,i))continue;if(!e.isDescendantOf(i,t)){for(;!e.isDescendantOf(i,t)&&i.parent;)i=i.parent;e.isDescendantOf(i,t)||console.error(`USDZExporter: Animation clip targets multiple roots that are not parent/child. Please report a bug`,this.root,this.clip,t,i)}t=i}}}catch(e){console.error(`USDZExporter: Exception when trying to find nearest animated root. Please report a bug`,e),t=void 0}return t}},K=class e{clip;pos;rot;scale;root;target;duration=0;useRootMotion=!1;static frameRate=60;static animationDurationPadding=6/60;static restPoseClipDuration=6/60;constructor(t,n,r){if(this.root=t,this.target=n,this.clip=r,r?this.duration=r.duration:this.duration=e.restPoseClipDuration,r&&r.tracks){let e=Math.max(...r.tracks.map(e=>e.times[e.times.length-1]));e!==this.duration&&(console.warn(`USDZExporter: Animation clip duration does not match the maximum time value in the tracks.`,r,e,this.duration),this.duration=e)}let i=k.getComponent(t,kt);i&&(this.useRootMotion=i.applyRootMotion)}addTrack(e){if(!this.clip){console.error(`This is a rest clip but you're trying to add tracks to it – this is likely a bug`);return}e.name.endsWith(`position`)?this.pos=e:e.name.endsWith(`quaternion`)?this.rot=e:e.name.endsWith(`scale`)?this.scale=e:(e.name.endsWith(`activeSelf`)?console.warn(`[USDZ] Animation of enabled/disabled state is not supported for USDZ export and will NOT be exported: `+e.name+` on `+(this.root?.name??this.target.name)+`. Animate scale 0/1 instead.`):console.warn(`[USDZ] Animation track type not supported for USDZ export and will NOT be exported: `+e.name+` on `+(this.root?.name??this.target.name)+`. Only .position, .rotation, .scale are supported.`),T()&&kn(`[USDZ] Some animations can't be exported. See console for details.`))}getFrames(){return this.clip?Math.max(this.pos?.times?.length??0,this.rot?.times?.length??0,this.scale?.times?.length??0):2}getDuration(){return this.duration}getSortedTimesArray(e=!0,t=!0,n=!0){if(!this.clip)return[0,this.duration];let r=this.pos?.times,i=this.rot?.times,a=this.scale?.times,o=[];if(e&&r)for(let e of r)o.push(e);if(t&&i)for(let e of i)o.push(e);if(n&&a)for(let e of a)o.push(e);return o.includes(0)||o.push(0),o.sort((e,t)=>e-t),[...new Set(o)]}*getValues(t,n=!0,i=!0,a=!0){let o=new r,s=new Ue,c=new r(1,1,1),l=this.target,u=n?this.pos?.createInterpolant():void 0,d=i?this.rot?.createInterpolant():void 0,f=a?this.scale?.createInterpolant():void 0;u||o.set(l.position.x,l.position.y,l.position.z),d||s.set(l.quaternion.x,l.quaternion.y,l.quaternion.z,l.quaternion.w),f||c.set(l.scale.x,l.scale.y,l.scale.z),u&&u.valueSize!==3&&(u.valueSize=3),d&&d.valueSize!==4&&(d.valueSize=4),f&&f.valueSize!==3&&(f.valueSize=3);for(let n=0;n=t.length?(r=t[t.length-1],i=r+e.animationDurationPadding/2-1/60):(r=t[n],i=r),u){let e=u.evaluate(r);o.set(e[0],e[1],e[2])}if(d){let e=d.evaluate(r);s.set(e[0],e[1],e[2],e[3])}if(f){let e=f.evaluate(r);c.set(e[0],e[1],e[2])}if(this.useRootMotion&&l===this.root){let e=new b;e.compose(o,s,c),e.multiply(l.matrix),e.decompose(o,s,c)}yield{time:i,translation:o,rotation:s,scale:c,index:n}}}},Rs=class{get extensionName(){return`animation`}get animationData(){return this.dict}get registeredClips(){return this.clipToStartTime.keys()}get animatedRoots(){return this.rootTargetMap.keys()}get holdClipMap(){return this.clipToHoldClip}dict=new Map;rootTargetMap=new Map;rootAndClipToRegisteredAnimationMap=new Map;rootToRegisteredClip=new Map;lastClipEndTime=0;clipToStartTime=new Map;clipToHoldClip=new Map;serializers=[];injectRestPoses=!1;injectImplicitBehaviours=!1;constructor(e){this.injectRestPoses=e,this.injectImplicitBehaviours=e}getStartTimeCode(){return!this.injectRestPoses||this.rootAndClipToRegisteredAnimationMap.size===0?0:(K.restPoseClipDuration+K.animationDurationPadding)*60}getEndTimeCode(){let e=0;for(let[t,n]of this.rootAndClipToRegisteredAnimationMap){let t=n.start+n.duration;t>e&&(e=t)}return e*60}getClipCount(e){return this.rootToRegisteredClip.get(e)?.length??0??0}getStartTimeByClip(e){return e?this.clipToStartTime.has(e)?this.clipToStartTime.get(e):(console.error(`USDZExporter: Missing start time for clip – please report a bug.`,e),0):0}registerAnimation(e,t){if(!e)return null;this.rootTargetMap.has(e)||this.rootTargetMap.set(e,[]);let n=e.uuid+(t?.uuid??`-rest`);if(this.rootAndClipToRegisteredAnimationMap.has(n))return this.rootAndClipToRegisteredAnimationMap.get(n);Fs&&console.log(`registerAnimation`,e,t);let r=+!!this.injectRestPoses,i=(this.rootToRegisteredClip.get(e)?.length??0)+r,a=this.rootTargetMap.get(e),s=new Set(a);if(t&&t.tracks)for(let n of t.tracks){let r=o.parseTrackName(n.name),c=o.findNode(e,r.nodeName);if(!c){console.warn(`no object found for track`,n.name,`using `+e.name+` instead`);continue}this.dict.has(c)||this.dict.set(c,[]);let l=this.dict.get(c);if(!l){console.warn(`no transform data found for target `,c,`at slot `+i+`, this is likely a bug`);continue}s.delete(c),this.injectRestPoses&&!l[0]&&(console.log(`Injecting rest pose`,c,t,`at slot`,i),l[0]=new K(null,c,null));let u=l[i];u||(u=new K(e,c,t),l[i]=u),u.addTrack(n),a?.includes(c)||a?.push(c)}Fs&&console.log(`Unregistered nodes for this clip`,s,`clip`,t,`at slot`,i,`for root`,e,`targets`,a);for(let n of s){let r=this.dict.get(n);if(!r)continue;this.injectRestPoses&&!r[0]&&(console.warn(`Adding rest pose for `,n,t,`at slot`,i,`This is likely a bug, should have been added earlier.`),r[0]=new K(null,n,null));let a=r[i];a||(Fs&&console.log(`Adding padding clip for `,n,t,`at slot`,i),a=new K(e,n,t),r[i]=a)}let c=new Ls(this,e,t);if(this.rootAndClipToRegisteredAnimationMap.set(n,c),Fs&&console.log({root:e,clip:t,info:c}),t){let n=this.rootToRegisteredClip.get(e);if(n?n.push(t):this.rootToRegisteredClip.set(e,[t]),!this.clipToStartTime.get(t)){this.lastClipEndTime??=K.restPoseClipDuration;let e=this.lastClipEndTime+K.animationDurationPadding,n=e+t.duration,r=Math.round(e*60)/60,i=Math.round(n*60)/60;Math.abs(r-e)<.01&&(e=r),Math.abs(i-n)<.01&&(n=i),e=Math.ceil(e),n=e+t.duration,this.clipToStartTime.set(t,e),this.lastClipEndTime=n}}return c}onAfterHierarchy(e){Fs&&console.log(`Animation clips per animation target node`,this.dict)}onAfterBuildDocument(e){Fs&&console.log(`Animation data`,{dict:this.dict,rootTargetMap:this.rootTargetMap,rootToRegisteredClip:this.rootToRegisteredClip});for(let e of this.rootTargetMap.keys()){let t=this.rootTargetMap.get(e);if(!t)continue;let n,r=[];for(let i of t){let t=this.dict.get(i);if(!t){console.error(`No data found for target on USDZ export – please report a bug!`,i);continue}n===void 0&&(n=t?.length),n!==t?.length&&console.error(`Different array lengths for targets – please report a bug!`,t);for(let n=0;n{let r=e;typeof r.createAnimation==`function`&&r.createAnimation(this,t,n)},!1);let r=new zs(e,this);this.serializers.push(r),r.registerCallback(t)}},zs=class{model=void 0;object;animationData;ext;callback;constructor(e,t){this.object=e,this.animationData=t.animationData,this.ext=t}registerCallback(e){this.model&&this.callback&&this.model.removeEventListener(`serialize`,this.callback),this.callback||=this.onSerialize.bind(this),Is&&console.log(`REPARENT`,e),this.model=e,this.callback&&this.model.addEventListener(`serialize`,this.callback)}skinnedMeshExport(e,t,n){let r=this.model,i=this.animationData;if(r&&r.skinnedMesh){let a=r.skinnedMesh.skeleton,o=[],s=[],c=[];for(let e of a.bones){s.push(e),c.push(e.uuid);let t=a.boneInverses[a.bones.indexOf(e)];o.push({bone:e,inverse:t})}let l=1e4;for(;c.length0;)for(let e of s){let t=e.children;for(let e of t)if(c.indexOf(e.uuid)===-1&&a.bones.indexOf(e)!==-1){s.push(e),c.push(e.uuid);let t=a.boneInverses[a.bones.indexOf(e)];o.push({bone:e,inverse:t})}}l<=0&&console.error(`Failed to sort bones in skinned mesh`,r.skinnedMesh,a.bones,c);for(let e of Do(a.bones))o.push({bone:e,inverse:e.matrixWorld.clone().invert()});let u=o[0].bone.parent;u||console.error(`No bone parent found for skinned mesh during USDZ export`,r.skinnedMesh),o.sort((e,t)=>os(e.bone,u)>os(t.bone,u)?1:-1);function d(e){let t=[];for(let[n,r]of e){let e=`${n} : [`,i=[];for(let e of r)i.push(`(${W(e.x)}, ${W(e.y)}, ${W(e.z)})`);e=e.concat(i.join(`, `)),e=e.concat(`],`),t.push(e)}return t}function f(e){let t=[];for(let[n,r]of e){let e=`${n} : [`,i=[];for(let e of r)i.push(`(${W(e.w)}, ${W(e.x)}, ${W(e.y)}, ${W(e.z)})`);e=e.concat(i.join(`, `)),e=e.concat(`],`),t.push(e)}return t}function p(e){let t,r=!0,i=new Map;for(let[n,a]of e){t===void 0&&(t=a.length),t!==a.length&&(r=!1);let e=0;for(let t of a)e++,t||(i.has(n)||i.set(n,[]),i.get(n).push(e))}Fs&&console.log(`Bone count: `,e.size,`TransformData entries per bone: `,t,`Undefined bone entries: `,i),console.assert(r,`All bones should have the same number of TransformData entries`,e),console.assert(i.size===0,`All TransformData entries should be set`,i);let a=[];for(let[t,r]of e)for(let e=0;ee-t),e.rot.sort((e,t)=>e-t),e.scale.sort((e,t)=>e-t),e.pos=[...new Set(e.pos)],e.rot=[...new Set(e.rot)],e.scale=[...new Set(e.scale)];return a}function m(e,t,n){let r=new Map,i=new Map,a=new Map,o=t.length;for(let s of n){let n=e.get(s),c;n?console.assert(n.length===o,`We should have the same number of TransformData entries for each bone`,n,t):c=new K(null,s,null);for(let e=0;ee.clip?.uuid.substring(0,6)).join(` `));console.log(`getPerBoneTransformData +`+e.join(` +`))}for(let n of e){let e=i.get(n);e&&t.set(n,e)}return t}function ee(e){let t=_(e);return m(t,p(t),e)}let te=t.quickLookCompatible,ne=[],v=[],re=[],ie=[];for(let{bone:e}of o){if(te){let t=e.scale;t.x==0&&(t.x=1e-5),t.y==0&&(t.y=1e-5),t.z==0&&(t.z=1e-5),ne.push(new b().compose(e.position,e.quaternion,e.scale))}else ne.push(e.matrix.clone());v.push(e.position),re.push(e.quaternion),ie.push(e.scale)}let ae=o.map(e=>`"`+os(e.bone,u)+`"`).join(`, `),oe=o.map(e=>cs(e.inverse.clone().invert())).join(`, `);e.beginBlock(`def Skeleton "Rig"`),e.appendLine(`uniform matrix4d[] bindTransforms = [${oe}]`),e.appendLine(`uniform token[] joints = [${ae}]`),e.appendLine(`uniform token purpose = "guide"`),e.appendLine(`uniform matrix4d[] restTransforms = [${ne.map(e=>cs(e)).join(`, `)}]`);let y=ee(o.map(e=>e.bone));if(Fs){let e=1e7,t=0;for(let n of y.position?.keys()??[])e=Math.min(e,n),t=Math.max(t,n);console.log(`Time samples`,e,t,y)}if(e.beginBlock(`def SkelAnimation "_anim"`),e.appendLine(`uniform token[] joints = [${ae}]`),e.appendLine(`quatf[] rotations = [${g(re)}]`),y&&y.quaternion){e.beginBlock(`quatf[] rotations.timeSamples = {`,``);let t=f(y.quaternion);for(let n of t)e.appendLine(n);e.closeBlock()}if(e.appendLine(`half3[] scales = [${h(ie)}]`),y&&y.scale){e.beginBlock(`half3[] scales.timeSamples = {`,``);let t=d(y.scale);for(let n of t)e.appendLine(n);e.closeBlock()}if(e.appendLine(`float3[] translations = [${h(v)}]`),y&&y.position){e.beginBlock(`float3[] translations.timeSamples = {`,``);let t=d(y.position);for(let n of t)e.appendLine(n);e.closeBlock()}e.closeBlock(),e.closeBlock()}}onSerialize(e,t){if(!this.model)return;let n=this.animationData.get(this.object);if(n)for(let e=0;ee&&{position:e.pos,rotation:e.rot,scale:e.scale}[n])){switch(n){case`position`:a.needsTranslate=!0,e.beginBlock(`double3 xformOp:translate.timeSamples = {`,``);break;case`rotation`:a.needsOrient=!0,e.beginBlock(`quatf xformOp:orient.timeSamples = {`,``);break;case`scale`:a.needsScale=!0,e.beginBlock(`double3 xformOp:scale.timeSamples = {`,``);break}for(let a=0;ae.path===t.clip)){this.files.push({path:t.clip,name:a});let e=a.toLowerCase();r.quickLookCompatible&&!e.endsWith(`.mp3`)&&!e.endsWith(`.wav`)&&!e.endsWith(`.m4a`)&&console.error(`Audio file `+t.clip+` from `+t.name+` is not an MP3 or WAV file. QuickLook may not support playing it.`)}r.quickLookCompatible||n.addEventListener(`serialize`,(e,n)=>{e.appendLine(),e.beginBlock(`def SpatialAudio "${o}"`,`(`,!1),e.appendLine(`displayName = "${i}"`),e.closeBlock(`)`),e.beginBlock(),e.appendLine(`uniform asset filePath = @audio/${a}@`),e.appendLine(`uniform token auralMode = "${t.spatialBlend>0?`spatial`:`nonSpatial`}"`),e.appendLine(`uniform token playbackMode = "${t.loop?`loopFromStage`:`onceFromStart`}"`),e.appendLine(`uniform float gain = ${t.volume}`),e.closeBlock()})}}async onAfterSerialize(e){for(let t of this.files){let n=`audio/`+t.name;if(e.files[n]){Bs&&console.warn(`Audio file with name `+n+` already exists in the context. Skipping.`);continue}let r=await(await(await fetch(t.path)).blob()).arrayBuffer(),i=new Uint8Array(r);e.files[n]=i}}},q=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Hs=D(`debugusdzbehaviours`),Us=class extends N{object;target;duration=1;relativeMotion=!1;coroutine=null;targetPos=new r;targetRot=new Ue;targetScale=new r;onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Move `+(this.object?.name||`object`)+` to `+(this.target?.name||`target`)+` on click`,hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){let t=this.object?.getComponentsInChildren(vt);if(t)for(let e of t)e.resetVelocities(),e.resetForcesAndTorques();e.use(),this.coroutine&&this.stopCoroutine(this.coroutine),this.relativeMotion?this.coroutine=this.startCoroutine(this.moveRelative()):this.coroutine=this.startCoroutine(this.moveToTarget())}*moveToTarget(){if(!this.target||!this.object)return;let e=Yt(this.object).clone(),t=Yt(this.target).clone(),n=Rn(this.object).clone(),r=Rn(this.target).clone(),i=$t(this.object).clone(),a=$t(this.target).clone(),o=e.distanceTo(t),s=n.angleTo(r),c=i.distanceTo(a);if(o<.01&&s<.01&&c<.01){Xe(this.object,t),xt(this.object,r),mt(this.object,a),this.coroutine=null;return}let l=0,u=0;for(;l<1;)l+=this.context.time.deltaTime/this.duration,l>1&&(l=1),u=l<.5?4*l*l*l:1-(-2*l+2)**3/2,this.targetPos.lerpVectors(e,t,u),this.targetRot.slerpQuaternions(n,r,u),this.targetScale.lerpVectors(i,a,u),Xe(this.object,this.targetPos),xt(this.object,this.targetRot),mt(this.object,this.targetScale),yield;this.coroutine=null}*moveRelative(){if(!this.target||!this.object)return;let e=this.object.position.clone(),t=this.object.quaternion.clone(),n=this.object.scale.clone(),r=this.target.position.clone(),i=this.target.quaternion.clone(),a=this.target.scale.clone();r.applyQuaternion(this.object.quaternion),this.targetPos.copy(this.object.position).add(r),this.targetRot.copy(this.object.quaternion).multiply(i),this.targetScale.copy(this.object.scale).multiply(a);let o=0,s=0;for(;o<1;)o+=this.context.time.deltaTime/this.duration,o>1&&(o=1),s=o<.5?4*o*o*o:1-(-2*o+2)**3/2,this.object.position.lerpVectors(e,this.targetPos,s),this.object.quaternion.slerpQuaternions(t,this.targetRot,s),this.object.scale.lerpVectors(n,this.targetScale,s),yield;this.coroutine=null}beforeCreateDocument(e){if(this.target&&this.object&&this.gameObject){let t=new Es(`Move to `+this.target?.name,js.tapTrigger(this.gameObject),G.transformAction(this.object,this.target,this.duration,this.relativeMotion?`relative`:`absolute`));e.addBehavior(t)}}};q([E(S)],Us.prototype,`object`,void 0),q([E(S)],Us.prototype,`target`,void 0),q([E()],Us.prototype,`duration`,void 0),q([E()],Us.prototype,`relativeMotion`,void 0);var Ws=class e extends N{materialToSwitch;variantMaterial;fadeDuration=0;start(){this._objectsWithThisMaterial=this.objectsWithThisMaterial,T()&&this._objectsWithThisMaterial.length<=0&&console.warn(`ChangeMaterialOnClick: No objects found with material "`+this.materialToSwitch?.name+`"`)}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Change material to `+(this.variantMaterial?.name||`unknown material`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(e){this.context.input.setCursor(`pointer`)}onPointerExit(e){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){if(e.use(),this.variantMaterial)for(let e=0;e{if(e instanceof x)if(Array.isArray(e.material)){for(let t of e.material)if(t===this.materialToSwitch){this.objectsWithThisMaterial.push(e);break}}else (e.material===this.materialToSwitch||Mt(e.material,this.materialToSwitch))&&this.objectsWithThisMaterial.push(e)}),this._objectsWithThisMaterial):this._objectsWithThisMaterial}selfModel;targetModels;static _materialTriggersPerId={};static _startHiddenBehaviour=null;static _parallelStartHiddenActions=[];async beforeCreateDocument(t,n){this.targetModels=[],e._materialTriggersPerId={},e.variantSwitchIndex=0,this.materialToSwitch&&await P.assignTextureLOD(this.materialToSwitch,0),this.variantMaterial&&await P.assignTextureLOD(this.variantMaterial,0)}createBehaviours(t,n,r){this.objectsWithThisMaterial.find(e=>e.uuid===n.uuid)&&this.targetModels.push(n),this.gameObject.uuid===n.uuid&&(this.selfModel=n,this.materialToSwitch&&(e._materialTriggersPerId[this.materialToSwitch.uuid]||(e._materialTriggersPerId[this.materialToSwitch.uuid]=[]),e._materialTriggersPerId[this.materialToSwitch.uuid].push(this)))}afterCreateDocument(t,n){if(!this.materialToSwitch)return;let r=e._materialTriggersPerId[this.materialToSwitch.uuid];if(r){let e={};for(let t of r){let n=t.createVariants();n&&n.length>0&&(e[t.selfModel.uuid]=n)}for(let n of r){let r=[];for(let t in e)t!==n.selfModel.uuid&&r.push(...e[t]);n.createAndAttachBehaviors(t,e[n.selfModel.uuid],r)}}delete e._materialTriggersPerId[this.materialToSwitch.uuid]}createAndAttachBehaviors(t,n,r){let i=[],a=Math.max(0,this.fadeDuration);i.push(G.fadeAction([...this.targetModels,...r],a,!1)),i.push(G.fadeAction(n,a,!0)),t.addBehavior(new Es(`Select_`+this.selfModel.name,js.tapTrigger(this.selfModel),G.parallel(...i))),e._parallelStartHiddenActions.push(...n),e._startHiddenBehaviour||(e._startHiddenBehaviour=new Es(`StartHidden_`+this.selfModel.name,js.sceneStartTrigger(),G.fadeAction(e._parallelStartHiddenActions,a,!1)),t.addBehavior(e._startHiddenBehaviour))}static getMaterialName(e){return wo(e.name||`Material`)+`_`+e.id}static variantSwitchIndex=0;createVariants(){if(!this.variantMaterial)return null;let t=[];for(let n of this.targetModels){let r=n.clone();r.name+=`_Variant_`+ e.variantSwitchIndex+++`_`+e.getMaterialName(this.variantMaterial),r.displayName=r.displayName+`: Variant with material `+this.variantMaterial.name,r.material=this.variantMaterial,r.geometry=n.geometry,r.transform=n.transform,(!n.parent||!n.parent.isEmpty())&&jo.createEmptyParent(n),n.parent&&n.parent.add(r),t.push(r)}return t}};q([E(Ne)],Ws.prototype,`materialToSwitch`,void 0),q([E(Ne)],Ws.prototype,`variantMaterial`,void 0),q([E()],Ws.prototype,`fadeDuration`,void 0);var Gs=class e extends N{target;toggleOnClick=!1;targetState=!0;hideSelf=!0;onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),!this.toggleOnClick&&this.hideSelf&&(this.gameObject.visible=!1),this.target&&(this.target.visible=this.toggleOnClick?!this.target.visible:this.targetState)}selfModel;selfModelClone;targetModel;toggleModel;createBehaviours(e,t,n){t.uuid===this.gameObject.uuid&&(this.selfModel=t,this.selfModelClone=t.clone())}stateBeforeCreatingDocument=!1;targetStateBeforeCreatingDocument=!1;static clonedToggleIndex=0;static wasVisible=Symbol(`usdz_SetActiveOnClick_wasVisible`);static toggleClone=Symbol(`clone for toggling`);static reverseToggleClone=Symbol(`clone for reverse toggling`);beforeCreateDocument(){this.target&&(this.gameObject[e.wasVisible]===void 0&&(this.gameObject[e.wasVisible]=this.gameObject.activeSelf),this.target[e.wasVisible]===void 0&&(this.target[e.wasVisible]=this.target.activeSelf),this.stateBeforeCreatingDocument=this.gameObject[e.wasVisible],this.targetStateBeforeCreatingDocument=this.target[e.wasVisible],this.gameObject.visible=!0,this.target.visible=!0)}afterCreateDocument(t,n){if(!this.target)return;this.targetModel=n.document.findById(this.target.uuid);let r=this.selfModel;if(this.selfModel&&this.targetModel){let n=this.selfModel,i=this.targetState;if(this.toggleOnClick)if(i=!this.targetStateBeforeCreatingDocument,!this.selfModelClone.geometry)(!this.selfModel.parent||this.selfModel.parent.isEmpty())&&Mo.createEmptyParent(this.selfModel),this.toggleModel=this.selfModel.deepClone(),this.toggleModel.name+=`_toggle`,this.selfModel.parent.add(this.toggleModel);else{if(!this.gameObject[e.toggleClone]){let t=this.selfModelClone.clone();t.setMatrix(new b),t.name+=`_toggle`+ e.clonedToggleIndex++,r.add(t),this.gameObject[e.toggleClone]=t,console.warn(`USDZExport: Toggle `+this.gameObject.name+` doesn't have geometry. It will be deep cloned and nested behaviours will likely not work.`)}let t=this.gameObject[e.toggleClone];if(!this.gameObject[e.reverseToggleClone]){let t=this.selfModelClone.clone();t.setMatrix(new b),t.name+=`_toggleReverse`+ e.clonedToggleIndex++,r.add(t),this.gameObject[e.reverseToggleClone]=t}this.toggleModel=this.gameObject[e.reverseToggleClone],(!this.toggleModel.geometry||!t.geometry)&&console.error(`triggers without childs and without geometry won't work!`,this,r.geometry),n=t,r.geometry=null,r.material=null}if(!this.toggleModel){let e=[];this.hideSelf&&e.push(G.fadeAction(n,0,!1)),e.push(G.fadeAction(this.targetModel,0,i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`On`:`Off`),js.tapTrigger(n),e.length>1?G.parallel(...e):e[0]))}else if(this.toggleOnClick){let e=[];e.push(G.fadeAction(n,0,!1)),e.push(G.fadeAction(this.toggleModel,0,!0)),e.push(G.fadeAction(this.targetModel,0,i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`On`:`Off`),js.tapTrigger(n),G.parallel(...e)));let r=[];r.push(G.fadeAction(this.toggleModel,0,!1)),r.push(G.fadeAction(n,0,!0)),r.push(G.fadeAction(this.targetModel,0,!i)),t.addBehavior(new Es(`Toggle_`+n.name+`_ToggleTo`+(i?`Off`:`On`),js.tapTrigger(this.toggleModel),G.parallel(...r)))}let a=[];this.targetStateBeforeCreatingDocument||a.push(this.targetModel),this.stateBeforeCreatingDocument||a.push(r),this.toggleModel&&a.push(this.toggleModel),Ks.add(a,t)}}afterSerialize(t,n){this.gameObject[e.wasVisible]!==void 0&&(this.gameObject.visible=this.gameObject[e.wasVisible],delete this.gameObject[e.wasVisible]),this.target&&this.target[e.wasVisible]!==void 0&&(this.target.visible=this.target[e.wasVisible],delete this.target[e.wasVisible]),delete this.gameObject[e.toggleClone],delete this.gameObject[e.reverseToggleClone]}};q([E(S)],Gs.prototype,`target`,void 0),q([E()],Gs.prototype,`toggleOnClick`,void 0),q([E()],Gs.prototype,`targetState`,void 0),q([E()],Gs.prototype,`hideSelf`,void 0);var Ks=class e extends N{static _fadeBehaviour;static _fadeObjects=[];static add(t,n){let r=Array.isArray(t)?t:[t];for(let t of r)e._fadeObjects.includes(t)||(console.log(`adding hide on start`,t),e._fadeObjects.push(t));e._fadeBehaviour===void 0&&(e._fadeBehaviour=new Es(`HideOnStart`,js.sceneStartTrigger(),G.fadeAction(e._fadeObjects,0,!1)),n.addBehavior(e._fadeBehaviour))}start(){k.setActive(this.gameObject,!1)}createBehaviours(t,n,r){n.uuid===this.gameObject.uuid&&(this.wasVisible||e.add(n,t))}wasVisible=!1;beforeCreateDocument(){this.wasVisible=k.isActiveSelf(this.gameObject)}},qs=class extends N{target;duration=.5;motionType=`bounce`;onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Emphasize `+this.target?.name+` on click`,hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}beforeCreateDocument(){}createBehaviours(e,t,n){if(this.target&&t.uuid===this.gameObject.uuid){let t=new Es(`emphasize `+this.name,js.tapTrigger(this.gameObject),G.emphasize(this.target,this.duration,this.motionType,void 0,`basic`));e.addBehavior(t)}}afterCreateDocument(e,t){}};q([E()],qs.prototype,`target`,void 0),q([E()],qs.prototype,`duration`,void 0),q([E()],qs.prototype,`motionType`,void 0);var Js=class extends N{target;clip=``;toggleOnClick=!1;trigger=`tap`;ensureAudioSource(){if(!this.target){let e=this.gameObject.addComponent(I);e&&(this.target=e,e.spatialBlend=1,e.volume=1,e.loop=!1,e.preload=!0)}}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Play audio: `+(this.clip||this.target?.clip||`unknown clip`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),!(!this.target?.clip&&!this.clip)&&(this.ensureAudioSource(),this.target&&(this.target.isPlaying&&this.toggleOnClick?this.target.stop():(!this.toggleOnClick&&this.target.isPlaying&&this.target.stop(),this.clip?this.target.play(this.clip):this.target.play())))}createBehaviours(e,t,n){if(!(!this.target&&!this.clip)&&t.uuid===this.gameObject.uuid){let n=this.clip?this.clip:this.target?this.target.clip:void 0;if(!n||typeof n!=`string`)return;let r=this.target?this.target.gameObject:this.gameObject;Vs.getName(n);let i=this.target?this.target.volume:1,a=this.target&&this.target.spatialBlend==0?`nonSpatial`:`spatial`,o=!1;this.gameObject.traverse(e=>{e instanceof x&&e.visible&&(o=!0)}),o=!0;let s=e.addAudioClip(n),c=G.playAudioAction(r,s,`play`,i,a);this.target&&this.target.loop&&(c=G.sequence(c).makeLooping());let l=this.name?`_`+this.name:``;if(o&&this.trigger===`tap`){this.toggleOnClick&&(c.multiplePerformOperation=`stop`);let n=new Es(`playAudio`+l,js.tapTrigger(t),c);e.addBehavior(n)}if(this.target&&this.target.playOnAwake&&this.target.enabled)if(o&&this.trigger===`tap`)console.warn(`USDZExport: Audio sources that are played on tap can't also auto-play at scene start due to a QuickLook bug.`);else{let t=new Es(`playAudioOnStart`+l,js.sceneStartTrigger(),c);e.addBehavior(t)}}}};q([E(I)],Js.prototype,`target`,void 0),q([E(URL)],Js.prototype,`clip`,void 0),q([E()],Js.prototype,`toggleOnClick`,void 0);var Ys=class e extends N{animator;stateName;trigger=`tap`;animation;get target(){return this.animator?.gameObject||this.animation?.gameObject}onEnable(){this.context.accessibility.updateElement(this,{role:`button`,label:`Plays animation `+(this.stateName||``)+` on `+(this.target?this.target.name:``),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0})}onDestroy(){this.context.accessibility.removeElement(this)}onPointerEnter(){this.context.input.setCursor(`pointer`),this.context.accessibility.hover(this,`Click to play animation `+(this.stateName||``)+` on `+(this.target?this.target.name:``))}onPointerExit(){this.context.input.unsetCursor(`pointer`)}onPointerClick(e){e.use(),this.target&&this.stateName&&(this.context.accessibility.focus(this),this.animator?.play(this.stateName,0,0,.1))}selfModel;stateAnimationModel;animationSequence=[];animationLoopAfterSequence=[];randomOffsetNormalized=0;createBehaviours(e,t,n){t.uuid===this.gameObject.uuid&&(this.selfModel=t)}static animationActions=[];static rootsWithExclusivePlayback=new Set;afterSerialize(){if(e.rootsWithExclusivePlayback.size>1){let t=`Multiple root objects targeted by more than one animation. To work around QuickLook bug FB13410767, animations will be set as "exclusive" and activating them will stop other animations being marked as exclusive.`;T()&&kn(t),console.warn(t,...e.rootsWithExclusivePlayback)}e.animationActions=[],e.rootsWithExclusivePlayback=new Set}afterCreateDocument(t,n){if(this.animationSequence===void 0&&this.animationLoopAfterSequence===void 0||!this.stateAnimationModel||!this.target)return;let r=n.document,i=n.extensions.find(e=>e instanceof Rs);if(!i)return;let a=i.getClipCount(this.target)>1;a&&(T()&&console.warn(`Setting exclusive playback for `+this.target.name+`@`+this.stateName+` because it has `+i.getClipCount(this.target)+` animations. This works around QuickLook bug FB13410767.`),e.rootsWithExclusivePlayback.add(this.target));let o=this.name?this.name:``;r.traverse(n=>{if(n.uuid===this.target?.uuid){let i=e.getActionForSequences(r,n,this.animationSequence,this.animationLoopAfterSequence,this.randomOffsetNormalized),s=new Es(this.trigger+`_`+o+`_toPlayAnimation_`+this.stateName+`_on_`+this.target?.name,this.trigger==`tap`?js.tapTrigger(this.selfModel):js.sceneStartTrigger(),i);a&&s.makeExclusive(!0),t.addBehavior(s)}})}static getActionForSequences(t,n,r,i,a){let o=(t,n)=>{let r=e.animationActions.find(e=>e.affectedObjects==t&&e.start==n.start&&e.duration==n.duration&&e.animationSpeed==n.speed);return r||(r=G.startAnimationAction(t,n),e.animationActions.push(r)),r},s=G.sequence();if(r&&r.length>0)for(let e of r)s.addAction(o(n,e));if(i&&i.length>0){let e=s.actions.length==0?s:G.sequence();for(let t of i)e.addAction(o(n,t));e.makeLooping(),s!==e&&s.addAction(e)}return a&&a>0&&s.actions.unshift(G.waitAction(a)),s}static getAndRegisterAnimationSequences(e,t,n){if(!t)return;let r=t.getComponent(kt),i=t.getComponent(xr);if(!r&&!i)return;if(r&&!n)throw Error(`PlayAnimationOnClick: No stateName specified for animator `+r.name+` on `+t.name);let a=[],o=[];if(i){let n=e.registerAnimation(t,i.clip);n&&(i.loop?o.push(n):a.push(n));let r=0;if(i.minMaxOffsetNormalized){let e=i.minMaxOffsetNormalized.x,t=i.minMaxOffsetNormalized.y;r=(i.clip?.duration||1)*(e+Math.random()*(t-e))}return{animationSequence:a,animationLoopAfterSequence:o,randomTimeOffset:r}}let s=r?.runtimeAnimatorController,c=s?.findState(n),l=[],u=[];if(s&&c){let t=[];t.push(c);let r=!1;for(;t.length<100;){if(!c||c===null||!c.transitions||c.transitions.length===0){c.motion?.isLooping&&(r=!0);break}let e=c.transitions.find(e=>e.conditions.length===0),n=e?s.getState(e.destinationState,0):null;if(n&&t.includes(n)){c=n,r=!0;break}else if(e){if(c=n,!c)break;t.push(c)}else{r=c.motion?.isLooping??!1;break}}if(r&&c){let e=t.indexOf(c);l=t.slice(0,e),u=t.slice(e),Hs&&console.log(`found loop from `+n,`states until loop`,l,`states looping`,u)}else l=t,u=[],Hs&&console.log(`found no loop from `+n,`states`,l);if(!u.length){let t=l[l.length-1],n=t.motion?.clip;if(n){let r;if(e.holdClipMap.has(n))r=e.holdClipMap.get(n);else{let i=t.name+`_hold`;r=n.clone(),r.duration=1,r.name=i;let a=n.duration;r.tracks=n.tracks.map(e=>{let t=e.clone();t.times=new Float32Array([0,a]);let n=e.values.length,r=e.getValueSize(),i=e.values.slice(n-r,n);return t.values=new Float32Array(2*r),t.values.set(i,0),t.values.set(i,r),t}),r.name=i,e.holdClipMap.set(n,r)}if(r){let e={name:r.name,motion:{clip:r,isLooping:!1,name:r.name},speed:1,transitions:[],behaviours:[],hash:t.hash+1};u.push(e)}}}}if(l.length===1&&(!l[0].motion?.clip||l[0].motion?.clip.tracks?.length===0)){a=[];let n=e.registerAnimation(t,null);n&&a.push(n);return}if(l=l.filter(e=>e.motion?.clip&&e.motion?.clip.tracks?.length>0),u=u.filter(e=>e.motion?.clip&&e.motion?.clip.tracks?.length>0),l.length===0&&u.length===0){console.warn(`No clips found for state `+n+` on `+r?.name+`, can't export animation data`);return}let d=(n,i)=>{if(!t)return;let a=e.registerAnimation(t,n.motion.clip??null);a?(a.speed=n.speed,i.push(a)):console.warn(`Couldn't register animation for state `+n.name+` on `+r?.name)};if(l.length>0){a=[];for(let e of l)d(e,a)}if(u.length>0){o=[];for(let e of u)d(e,o)}let f=0;if(r&&s&&r.minMaxOffsetNormalized){let e=r.minMaxOffsetNormalized.x,t=r.minMaxOffsetNormalized.y;f=((l.length?l[0]:u.length?u[0]:null)?.motion.clip?.duration||1)*(e+Math.random()*(t-e))}return{animationSequence:a,animationLoopAfterSequence:o,randomTimeOffset:f}}createAnimation(t,n,r){if(!this.target||!this.animator&&!this.animation)return;let i=e.getAndRegisterAnimationSequences(t,this.target,this.stateName);i&&(this.animationSequence=i.animationSequence,this.animationLoopAfterSequence=i.animationLoopAfterSequence,this.randomOffsetNormalized=i.randomTimeOffset,this.stateAnimationModel=n)}};q([E(kt)],Ys.prototype,`animator`,void 0),q([E()],Ys.prototype,`stateName`,void 0);var Xs=class extends N{getType(){}target;getDuration(){}};q([E(S)],Xs.prototype,`target`,void 0);var Zs=class extends N{target};q([E(Xs)],Zs.prototype,`target`,void 0);var Qs=class extends Xs{type=ec.Hide;duration=1;getType(){switch(this.type){case ec.Hide:return`hide`;case ec.Show:return`show`}}getDuration(){return this.duration}};q([E()],Qs.prototype,`type`,void 0),q([E()],Qs.prototype,`duration`,void 0);var $s=class extends Zs{},ec;(function(e){e[e.Show=0]=`Show`,e[e.Hide=1]=`Hide`})(ec||={});var tc;function nc(e){tc=e}function rc(){if(!tc)return null;let e=tc.find();return e?{handler:e,created:!1}:{handler:tc.create(),created:!0}}var ic=100,ac=200,oc=300,sc=class e{static _instance;static create(){return new e}static getOrCreate(){return this._instance||=this.create(),this._instance}get isSecureConnection(){return window.location.protocol===`https:`}get quicklookButton(){return this._quicklookButton}_quicklookButton;get arButton(){return this._arButton}_arButton;get vrButton(){return this._vrButton}_vrButton;get sendToQuestButton(){return this._sendToQuestButton}_sendToQuestButton;get qrButton(){return un.getOrCreate().createQRCode()}createQuicklookButton(){if(this._quicklookButton)return this._quicklookButton;let e=document.createElement(`button`);this._quicklookButton=e,e.dataset.needle=`quicklook-button`;let t=A.supportsQuickLookAR(),n=`View in AR`;A.isVisionOS()?n=`View in AR`:(t||A.isiOS())&&(n=`Open in Quicklook`),e.innerText=n,e.prepend(Ze(`view_in_ar`)),Ft.setElementPriority(e,ac);let r=!1,i=null;return e.addEventListener(`click`,()=>{let t=rc();t&&(i=t.handler,r=t.created),r&&i&&(i.objectToExport=Xt.Current.scene),i?(e.classList.add(`this-mode-is-requested`),i.exportAndOpen().then(()=>{e.classList.remove(`this-mode-is-requested`)}).catch(t=>{e.classList.remove(`this-mode-is-requested`),console.error(t)})):console.warn(`No USDZExporter component found in the scene`)}),this.hideElementDuringXRSession(e),e}createARButton(e){if(this._arButton)return this._arButton;let t=`immersive-ar`,n=document.createElement(`button`);return this._arButton=n,n.classList.add(`webxr-button`),n.dataset.needle=`webxr-ar-button`,n.innerText=`Enter AR`,n.prepend(Ze(`view_in_ar`)),n.title=`Click to start an AR session`,n.addEventListener(`click`,()=>j.start(t,e)),Ft.setElementPriority(n,oc),this.updateSessionSupported(n,t),this.listenToXRSessionState(n,t),this.hideElementDuringXRSession(n),this.isSecureConnection||(n.disabled=!0,n.title=`WebXR requires a secure connection (HTTPS)`),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>this.updateSessionSupported(n,t)),n}createVRButton(e){if(this._vrButton)return this._vrButton;let t=`immersive-vr`,n=document.createElement(`button`);return this._vrButton=n,n.classList.add(`webxr-button`),n.dataset.needle=`webxr-vr-button`,n.innerText=`Enter VR`,n.prepend(Ze(`panorama_photosphere`)),n.title=`Click to start a VR session`,n.addEventListener(`click`,()=>j.start(t,e)),Ft.setElementPriority(n,ic),this.updateSessionSupported(n,t),this.listenToXRSessionState(n,t),this.hideElementDuringXRSession(n),this.isSecureConnection||(n.disabled=!0,n.title=`WebXR requires a secure connection (HTTPS)`),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>this.updateSessionSupported(n,t)),n}createSendToQuestButton(){if(this._sendToQuestButton)return this._sendToQuestButton;let e=document.createElement(`button`);return this._sendToQuestButton=e,e.dataset.needle=`webxr-sendtoquest-button`,e.innerText=`Open on Quest`,e.prepend(Ze(`share_windows`)),e.title=`Click to send this page to the Oculus Browser on your Quest`,e.addEventListener(`click`,()=>{let e=`https://oculus.com/open_url/?url=`+encodeURIComponent(window.location.href);window.open(e)??vn(`This page doesn't allow popups. Please paste `+e+` into your browser.`)}),this.listenToXRSessionState(e),this.hideElementDuringXRSession(e),A.isMozillaXR()||navigator.xr?.addEventListener(`devicechange`,()=>{navigator.xr?.isSessionSupported(`immersive-vr`)?e.style.display=`none`:e.style.display=``}),e}createQRCode(){return un.getOrCreate().createQRCode()}updateSessionSupported(e,t){if(!(t===`immersive-ar`&&A.isiOS()&&!A.isVisionOS())){if(!(`xr`in navigator)){e.style.display=`none`;return}j.isSessionSupported(t).then(n=>{e.style.display=n?``:`none`,T()&&!n&&console.log(`[WebXR] "`+t+`" is not supported on this device. Make sure your server runs using HTTPS and you have a device connected that supports `+t)})}}hideElementDuringXRSession(e){et(t=>{e[`previous-display`]=e.style.display,e.style.setProperty(`display`,`none`,`important`)}),qn(t=>{e[`previous-display`]!=null&&(e.style.display=e[`previous-display`])})}listenToXRSessionState(e,t){t&&(j.onSessionRequestStart(n=>{n.mode===t?e.classList.add(`this-mode-is-requested`):(e[`was-disabled`]=e.disabled,e.disabled=!0,e.classList.add(`other-mode-is-requested`))}),j.onSessionRequestEnd(t=>{e.classList.remove(`this-mode-is-requested`),e.classList.remove(`other-mode-is-requested`),e.disabled=e[`was-disabled`]}))}},J=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},cc=D(`debugspriterenderer`),lc=D(`wireframe`),uc=class e{static cache={};static getOrCreateGeometry(t){if(t.__cached_geometry)return t.__cached_geometry;if(t.guid&&e.cache[t.guid])return cc&&console.log(`Take cached geometry for sprite`,t.guid),e.cache[t.guid];let n=new ie;t.__cached_geometry=n;let r=new Float32Array(t.triangles.length*3),i=new Float32Array(t.triangles.length*2);for(let e=0;e=this.spriteSheet.sprites.length)return;let n=this.spriteSheet.sprites[t],r=n?.texture;if(r&&(pc(r),!n.__hasLoadedProgressive)){n.__hasLoadedProgressive=!0;let t=r;P.assignTextureLOD(r,0).then(r=>{r instanceof xe&&(n.texture=r,e?.map===t&&(e.map=r,e.needsUpdate=!0))})}}};J([E(gc)],_c.prototype,`spriteSheet`,void 0),J([E()],_c.prototype,`index`,void 0);var vc=class extends N{drawMode=dc.Simple;size={x:1,y:1};color;sharedMaterial;transparent=!0;cutoutThreshold=0;castShadows=!1;renderOrder=0;toneMapped=!0;set texture(e){if(!this._spriteSheet)return;let t=this._spriteSheet.spriteSheet?.sprites[this.spriteIndex];t&&(t.texture=e,this.updateSprite())}addSprite(e,t=!1){if(this._spriteSheet||=_c.create(),!this._spriteSheet.spriteSheet)return-1;this._spriteSheet.spriteSheet?.sprites.push(e);let n=this._spriteSheet.spriteSheet?.sprites.length-1;return t&&(this.spriteIndex=n),n}get sprite(){return this._spriteSheet}set sprite(e){if(e!==this._spriteSheet)if(typeof e==`number`){let t=Math.round(e);cc&&console.log(`[SpriteSheet] Set index to `+t+` (was `+this.spriteIndex+`)`,e),this.spriteIndex=t}else e instanceof mc?(this._spriteSheet||=_c.create(),this._spriteSheet.sprite!=e&&(this._spriteSheet.sprite=e),this.updateSprite()):e!=this._spriteSheet&&(this._spriteSheet=e,this.updateSprite())}set spriteIndex(e){this._spriteSheet&&(this._spriteSheet.index=e,this.updateSprite())}get spriteIndex(){return this._spriteSheet?.index??0}get spriteFrames(){return this._spriteSheet?.spriteSheet?.sprites.length??0}_spriteSheet;_currentSprite;awake(){this._currentSprite=void 0,this._spriteSheet?this._spriteSheet=this._spriteSheet.clone():this._spriteSheet=_c.create(),cc&&console.log(`Awake`,this.name,this,this.sprite)}start(){this._currentSprite?this.gameObject&&this.gameObject.add(this._currentSprite):this.updateSprite()}updateSprite(e=!1){if(!this.__didAwake&&!e)return!1;let t=this._spriteSheet;if(!t?.spriteSheet?.sprites)return console.warn(`SpriteRenderer has no data or spritesheet assigned...`),!1;let r=t.spriteSheet.sprites[this.spriteIndex];if(!r)return cc&&console.warn(`Sprite not found`,this.spriteIndex,t.spriteSheet.sprites),!1;if(this._currentSprite)this._currentSprite.geometry=uc.getOrCreateGeometry(r),this._currentSprite.material.map=r.texture;else{let e=new v({color:16777215,side:2});if(lc&&(e.wireframe=!0),this.color&&(e.color||=new n,e.color.copy(this.color),e.opacity=this.color.alpha),e.transparent=!0,e.toneMapped=this.toneMapped,e.depthWrite=!1,r.texture&&!e.wireframe){let t=r.texture;t[hc]!==void 0&&t[hc]!==this&&this.spriteFrames>1&&(t=r.texture=t.clone()),t[hc]=this,e.map=t}this.sharedMaterial=e,this._currentSprite=new x(uc.getOrCreateGeometry(r),e),this._currentSprite.renderOrder=Math.round(this.renderOrder),P.assignTextureLOD(e,0)}return this._currentSprite.parent!==this.gameObject&&(this.drawMode===dc.Tiled&&this._currentSprite.scale.set(this.size.x,this.size.y,1),this.gameObject&&this.gameObject.add(this._currentSprite)),this._currentSprite&&this._currentSprite.layers.set(this.layer),this.sharedMaterial&&(this.sharedMaterial.alphaTest=this.cutoutThreshold,this.sharedMaterial.transparent=this.transparent),this._currentSprite.castShadow=this.castShadows,t?.update(this.sharedMaterial),!0}};J([E()],vc.prototype,`drawMode`,void 0),J([E(fc)],vc.prototype,`size`,void 0),J([E(tn)],vc.prototype,`color`,void 0),J([E(Ne)],vc.prototype,`sharedMaterial`,void 0),J([E()],vc.prototype,`transparent`,void 0),J([E()],vc.prototype,`cutoutThreshold`,void 0),J([E()],vc.prototype,`castShadows`,void 0),J([E()],vc.prototype,`renderOrder`,void 0),J([E()],vc.prototype,`toneMapped`,void 0),J([E(_c)],vc.prototype,`sprite`,null);var yc=D(`debugwebxr`),bc=new b().makeRotationY(Math.PI),xc=class e extends N{static _eventListeners={};static onPlaced(e){let t=`placed`;return this._eventListeners[t]||(this._eventListeners[t]=[]),this._eventListeners[t].push(e),()=>{let n=this._eventListeners[t].indexOf(e);n>=0&&this._eventListeners[t].splice(n,1)}}static _hasPlaced=!1;static get hasPlaced(){return this._hasPlaced}get arScale(){return this._arScale}set arScale(e){this._arScale=Math.max(1e-6,e),this.onSetScale()}_arScale=1;invertForward=!1;customReticle;arTouchTransform=!0;autoPlace=!1;autoCenter=!1;useXRAnchor=!1;_isPlacing=!0;_startOffset=new b;_createdPlacementObject=null;_reparentedComponents=[];_placementScene=new ne;_reticle=[];_hits=[];_placementStartTime=-1;_rigPlacementMatrix;_anchor=null;userInput;onEnable(){this.customReticle?.preload()}supportsXR(e){return e===`immersive-ar`}onEnterXR(t){yc&&console.log(`ENTER WEBXR: SessionRoot start...`),this._anchor=null,e._hasPlaced=!1,this.gameObject.updateMatrixWorld(),this._startOffset.copy(this.gameObject.matrixWorld);let n=new S;this._createdPlacementObject=n,n.name=`AR Session Root`,this._placementScene.name=`AR Placement Scene`,this._placementScene.children.length=0;for(let e=this.context.scene.children.length-1;e>=0;e--){let t=this.context.scene.children[e];this._placementScene.add(t)}if(this.context.scene.add(n),this.autoCenter){let e=fn(this._placementScene.children),t=e.getCenter(new r),n=e.getSize(new r),i=new b;i.makeTranslation(t.x,t.y-n.y*.5,t.z),this._startOffset.multiply(i)}this._reparentedComponents.length=0,this._reparentedComponents.push({comp:this,originalObject:this.gameObject}),k.addComponent(n,this);for(let e of this._reticle)dn(e);this._reticle.length=0,this._isPlacing=!0,this.context.input.addEventListener(`pointerup`,this.onPlaceScene,{queue:ct.Early})}onLeaveXR(){this.context.input.removeEventListener(`pointerup`,this.onPlaceScene,{queue:ct.Early}),this.onRevertSceneChanges(),this._anchor=null,e._hasPlaced=!1,this._rigPlacementMatrix=void 0}onUpdateXR(e){if(e.xr.isTrackingImages){for(let e of this._reticle)e.visible=!1;return}if(this._isPlacing){let t=e.xr.rig?.gameObject;t&&t.parent!==this.context.scene&&this.context.scene.add(t);let n=!1;if(e.xr.isPassThrough&&e.xr.controllers.length>0&&!this.autoPlace)for(let t of e.xr.controllers){let r=t.getHitTest();r&&(n=!0,this.updateReticleAndHits(e.xr,t.index,r,e.xr.rigScale))}if(!n){let t=e.xr.getHitTest();t&&this.updateReticleAndHits(e.xr,0,t,e.xr.rigScale)}}else{if(this._anchor&&e.xr.referenceSpace){let t=e.xr.frame.getPose(this._anchor.anchorSpace,e.xr.referenceSpace);if(t&&this.context.time.frame%20==0){let n=e.xr.convertSpace(t.transform),r=this._reticle[0];r&&(r.position.copy(n.position),r.quaternion.copy(n.quaternion),this.onApplyPose(r))}}if(this.arTouchTransform?(this.userInput||=new Sc(this.context),this.userInput?.enable()):this.userInput?.disable(),this.arTouchTransform&&this.userInput?.hasChanged){if(e.xr.rig){let t=e.xr.rig.gameObject;this.userInput.applyMatrixTo(t.matrix,!0),t.matrix.decompose(t.position,t.quaternion,t.scale),this.userInput.factor=t.scale.x}this.userInput.reset()}}}updateReticleAndHits(e,t,n,r){this._hits[t]=n.hit;let i=this._reticle[t];if(!i){if(this.customReticle)if(this.customReticle.asset)i=Et(this.customReticle.asset);else{this.customReticle.loadAssetAsync();return}else i=new x(new ce(.07,.09,32).rotateX(-Math.PI/2),new v({side:2,depthTest:!1,depthWrite:!1,transparent:!0,opacity:1,color:15658734})),i.name=`AR Placement Reticle`;if(yc){let e=new _e(1);e.position.y+=.01,i.add(e)}this._reticle[t]=i,i.matrixAutoUpdate=!1,i.visible=!1}if(i.lastPos=i.lastPos||n.position.clone(),i.lastQuat=i.lastQuat||n.quaternion.clone(),i.position.copy(i.lastPos.lerp(n.position,this.context.time.deltaTime/.1)),i.lastPos.copy(i.position),i.quaternion.copy(i.lastQuat.slerp(n.quaternion,this.context.time.deltaTime/.05)),i.lastQuat.copy(i.quaternion),i.scale.set(r,r,r),this.customReticle&&this.applyViewBasedTransform(i),i.updateMatrix(),i.visible=!0,i.parent!==this.context.scene&&this.context.scene.add(i),this._placementStartTime<0&&(this._placementStartTime=this.context.time.realtimeSinceStartup),this.autoPlace)if(this.upVec.set(0,1,0).applyQuaternion(i.quaternion),this.upVec.dot(wn(0,1,0))>.9){let e=i[`autoplace:timer`]||0;e>=1?(i.visible=!1,this.onPlaceScene(null)):(e+=this.context.time.deltaTime,i[`autoplace:timer`]=e)}else i[`autoplace:timer`]=0}onPlaceScene=t=>{if(this._isPlacing==0||t?.used)return;let n=this._reticle[0];if(!n){console.warn(`No reticle to place...`);return}if(!n.visible&&!this.autoPlace){console.warn(`Reticle is not visible (can not place)`);return}if(j.active?.isTrackingImages){console.warn(`Scene Placement is disabled while images are being tracked`);return}let r=this._hits[0];if(t&&t.origin instanceof sn){let e=this._reticle[t.origin.index];e&&(n=e,r=this._hits[t.origin.index])}if(t&&(t.stopImmediatePropagation(),t.stopPropagation(),t.use()),this._isPlacing=!1,this.context.input.removeEventListener(`pointerup`,this.onPlaceScene),this.onRevertSceneChanges(),n.position.copy(n.lastPos),n.quaternion.copy(n.lastQuat),this.onApplyPose(n),e._hasPlaced=!0,this.useXRAnchor&&this.onCreateAnchor(j.active,r),this.context.xr)for(let e of this.context.xr.controllers)e.cancelHitTestSource()};onSetScale(){if(!e._hasPlaced)return;let t=j.active?.rig?.gameObject;if(t){let e=j.active?.rigScale||1,n=1/this._arScale*e,r=new b().makeScale(n,n,n).invert();t.matrix.premultiply(r),t.matrix.decompose(t.position,t.quaternion,t.scale)}}onRevertSceneChanges(){for(let e of this._reticle)e&&(e.visible=!1,e?.removeFromParent());this._reticle.length=0;for(let e=this._placementScene.children.length-1;e>=0;e--){let t=this._placementScene.children[e];this.context.scene.add(t)}this._createdPlacementObject?.removeFromParent();for(let e of this._reparentedComponents)k.addComponent(e.originalObject,e.comp)}async onCreateAnchor(e,t){if(t.createAnchor===void 0){console.warn(`Hit does not support creating an anchor`,t),T()&&kn(`Hit does not support creating an anchor`);return}else{let n=await t.createAnchor(e.viewerPose.transform);e.running&&n&&(this._anchor=n)}}upVec=new r(0,1,0);lookPoint=new r;worldUpVec=new r(0,1,0);applyViewBasedTransform(e){let t=this.context.mainCamera,n=e,r=t.worldPosition,i=n.worldPosition;this.upVec.set(0,1,0).applyQuaternion(e.quaternion);let a=t.worldPosition;a&&e.position.clone().sub(a).angleTo(this.upVec)30&&o<150||o<-30&&o>-150?(this.lookPoint.copy(e.position).add(this.upVec),this.lookPoint.y=e.position.y,e.lookAt(this.lookPoint)):(r.y=i.y,e.lookAt(r))}onApplyPose(e){let t=j.active?.rig?.gameObject;if(!t){console.warn(`No rig object to place`);return}let n=t.parent||this.context.scene;this._rigPlacementMatrix?this._rigPlacementMatrix?.decompose(t.position,t.quaternion,t.scale):this._rigPlacementMatrix=t.matrix.clone(),this.applyViewBasedTransform(e),e.updateMatrix(),this.context.scene.add(e),e.attach(t),e.removeFromParent(),t.scale.set(this.arScale,this.arScale,this.arScale),t.position.multiplyScalar(this.arScale),t.updateMatrix(),this.invertForward&&t.matrix.premultiply(bc),t.matrix.premultiply(this._startOffset),t.matrix.decompose(t.position,t.quaternion,t.scale),n.add(t)}},Sc=class e{static up=new r(0,1,0);static zero=new r(0,0,0);static one=new r(1,1,1);oneFingerDrag=!0;twoFingerRotate=!0;twoFingerScale=!0;factor=1;context;offset;plane;_scale=1;_hasChanged=!1;get scale(){return this._scale}constructor(t){this.context=t,this.offset=new b,this.plane=new fe,this.plane.setFromNormalAndCoplanarPoint(e.up,e.zero)}_enabled=!1;reset(){this._scale=1,this.offset.identity(),this._hasChanged=!0}get hasChanged(){return this._hasChanged}applyMatrixTo(e,t){this._hasChanged=!1,t?(this.offset.invert(),e.premultiply(this.offset)):e.multiply(this.offset)}currentlyUsedPointerIds=new Set;currentlyUnusedPointerIds=new Set;get isActive(){return this.currentlyUsedPointerIds.size<=0&&this.currentlyUnusedPointerIds.size>0}enable(){this._enabled||(this._enabled=!0,this.context.input.addEventListener(`pointerdown`,this.onPointerDownEarly,{queue:ct.Early}),this.context.input.addEventListener(`pointerdown`,this.onPointerDownLate,{queue:ct.Late}),this.context.input.addEventListener(`pointerup`,this.onPointerUpEarly,{queue:ct.Early}),window.addEventListener(`touchstart`,this.touchStart,{passive:!1}),window.addEventListener(`touchmove`,this.touchMove,{passive:!1}),window.addEventListener(`touchend`,this.touchEnd,{passive:!1}))}disable(){this._enabled&&(this._enabled=!1,this.context.input.removeEventListener(`pointerdown`,this.onPointerDownEarly,{queue:ct.Early}),this.context.input.removeEventListener(`pointerdown`,this.onPointerDownLate,{queue:ct.Late}),this.context.input.removeEventListener(`pointerup`,this.onPointerUpEarly,{queue:ct.Early}),window.removeEventListener(`touchstart`,this.touchStart),window.removeEventListener(`touchmove`,this.touchMove),window.removeEventListener(`touchend`,this.touchEnd))}onPointerDownEarly=e=>{this.isActive&&e.stopPropagation()};onPointerDownLate=e=>{e.used?this.currentlyUsedPointerIds.add(e.pointerId):this.currentlyUsedPointerIds.size<=0&&this.currentlyUnusedPointerIds.add(e.pointerId)};onPointerUpEarly=e=>{this.currentlyUsedPointerIds.delete(e.pointerId),this.currentlyUnusedPointerIds.delete(e.pointerId)};prev=new Map;_didMultitouch=!1;touchStart=e=>{if(!e.defaultPrevented)for(let t=0;t{e.touches.length<=0&&(this._didMultitouch=!1);for(let t=0;t{if(!e.defaultPrevented&&this.isActive){if(e.touches.length===1){if(this._didMultitouch)return;let t=e.touches[0],n=this.prev.get(t.identifier);if(!n||n.ignore)return;let r=this.getPositionOnPlane(t.clientX,t.clientY),i=r.x-n.x,a=r.z-n.z;if(i===0&&a===0)return;this.oneFingerDrag&&this.addMovement(i,a),n.x=r.x,n.z=r.z,n.screenx=t.clientX,n.screeny=t.clientY;return}else if(e.touches.length===2){this._didMultitouch=!0;let t=e.touches[0],n=e.touches[1],r=this.prev.get(t.identifier),i=this.prev.get(n.identifier);if(!r||!i)return;if(this.twoFingerRotate){let e=Math.atan2(t.clientY-n.clientY,t.clientX-n.clientX)-Math.atan2(r.screeny-i.screeny,r.screenx-i.screenx);Math.abs(e)>.001&&this.addRotation(e)}if(this.twoFingerScale){let e=t.clientX-n.clientX,a=t.clientY-n.clientY,o=Math.sqrt(e*e+a*a),s=r.screenx-i.screenx,c=r.screeny-i.screeny,l=o-Math.sqrt(s*s+c*c);Math.abs(l)>2&&this.addScale(l)}r.screenx=t.clientX,r.screeny=t.clientY,i.screenx=n.clientX,i.screeny=n.clientY}}};_raycaster=new _;_intersection=new r;_screenPos=new r;getPositionOnPlane(e,t){let n=this.context.mainCamera;return this._screenPos.x=e/window.innerWidth*2-1,this._screenPos.y=-(t/window.innerHeight)*2+1,this._screenPos.z=1,this._screenPos.unproject(n),this._raycaster.set(n.position,this._screenPos.sub(n.position)),this._raycaster.ray.intersectPlane(this.plane,this._intersection),this._intersection}addMovement(e,t){e/=this._scale,t/=this._scale,e*=this.factor,t*=this.factor,this.offset.elements[12]+=e,this.offset.elements[14]+=t,(e!==0||t!==0)&&(this._hasChanged=!0)}_tempMatrix=new b;addScale(e){e/=window.innerWidth,e*=-1,this._scale*=1+e,this._tempMatrix.makeScale(1-e,1-e,1-e),this.offset.premultiply(this._tempMatrix),e!==0&&(this._hasChanged=!0)}addRotation(e){e*=-1,this._tempMatrix.makeRotationY(e),this.offset.premultiply(this._tempMatrix),e!==0&&(this._hasChanged=!0)}},Cc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wc=D(`debugplayersync`),Tc=class e extends N{static async setupFrom(t,n){let r=w.getOrCreateFromUrl(t);if(!r.asset){let e=await r.loadAssetAsync();e&&k.getOrAddComponent(e,Dc)}let i=new e;i._internalInit(n),i.asset=r;let a=new S;return a.guid=t,k.addComponent(a,i),i}autoSync=!0;asset;onPlayerSpawned;_localInstance;awake(){this.watchTabVisible(),this.onPlayerSpawned||=new Ut}onEnable(){this.context.connection.beginListen(O.RoomStateSent,this.onJoinedRoom),this.context.connection.beginListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.beginListen(O.LeftRoom,this.destroyInstance),this.context.connection.isInRoom&&this.onJoinedRoom()}onDisable(){this.context.connection.stopListen(O.RoomStateSent,this.onJoinedRoom),this.context.connection.stopListen(O.JoinedRoom,this.onJoinedRoom),this.context.connection.stopListen(O.LeftRoom,this.destroyInstance)}onJoinedRoom=()=>{wc&&console.log(`PlayerSync.joinedRoom. autoSync is set to `+this.autoSync),this.autoSync&&this.getInstance()};async getInstance(){if(this._localInstance)return this._localInstance;if(wc&&console.log(`PlayerSync.createInstance`,this.asset?.url),!this.asset?.asset&&!this.asset?.url)return console.error(`PlayerSync: can not create an instance because "asset" is not set and or has no URL!`),null;this.gameObject.guid||console.warn(`PlayerSync: gameObject has no guid! This might cause issues with syncing the player state.`),this._localInstance=this.asset?.instantiateSynced({parent:this.gameObject,deleteOnDisconnect:!0},!0);let e=await this._localInstance;if(e){let t=k.getComponentsInChildren(e,Dc);if(wc&&console.log(`PlayerSync.createInstance: found ${t?.length} PlayerState components. Owner: ${this.context.connection.connectionId}`),t?.length){for(let e of t)e.owner=this.context.connection.connectionId;this.onPlayerSpawned?.invoke(e)}else this._localInstance=void 0,console.error(`Failed finding PlayerState on `+this.asset?.url+`: please make sure the asset has a PlayerState component!`),k.destroySynced(e)}else this._localInstance=void 0,console.warn(`PlayerSync: failed instantiating asset!`);return this._localInstance}destroyInstance=()=>{this._localInstance?.then(e=>{wc&&console.log(`PlayerSync.destroyInstance`,e),rn(e,this.context.connection,!0,{saveInRoom:!1})}),this._localInstance=void 0};watchTabVisible(){window.addEventListener(`visibilitychange`,e=>{if(document.visibilityState===`visible`)for(let e=Dc.all.length-1;e>=0;e--){let t=Dc.all[e];(!t.owner||!this.context.connection.userIsInRoom(t.owner))&&t.doDestroy()}})}};Cc([E()],Tc.prototype,`autoSync`,void 0),Cc([E(w)],Tc.prototype,`asset`,void 0),Cc([E(Ut)],Tc.prototype,`onPlayerSpawned`,void 0);var Ec;(function(e){e.OwnerChanged=`ownerChanged`})(Ec||={});var Dc=class e extends N{static _all=[];static get all(){return e._all}static _local=[];static get local(){return e._local}static getFor(t){if(t instanceof S)return k.getComponentInParent(t,e);if(t instanceof N)return k.getComponentInParent(t.gameObject,e)}static isLocalPlayer(t){return e.getFor(t)?.isLocalPlayer??!1}static _callbacks={};static addEventListener(e,t){return this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),t}static removeEventListener(e,t){if(!this._callbacks[e])return;let n=this._callbacks[e].indexOf(t);n>=0&&this._callbacks[e].splice(n,1)}static dispatchEvent(e,t){if(this._callbacks[e])for(let n of this._callbacks[e])n(t)}onOwnerChangeEvent=new Ut;onFirstOwnerChangeEvent=new Ut;hasOwner=!1;owner;dontDestroy=!1;get isLocalPlayer(){return this.owner===this.context.connection.connectionId}onOwnerChange(t,n){wc&&console.log(`PlayerSync.onOwnerChange: ${n} → ${t} (me: ${this.context.connection.connectionId})`);let r=e._local.indexOf(this);r>=0&&e._local.splice(r,1);let i={playerState:this,oldValue:n,newValue:t};if(this.hasOwner||(this.hasOwner=!0,this.onFirstOwnerChangeEvent?.invoke(i)),this.onOwnerChangeEvent?.invoke(i),this.owner===this.context.connection.connectionId){e._local.push(this);let t=new CustomEvent(`local-owner-changed`,{detail:i});this.dispatchEvent(t)}let a=new CustomEvent(`owner-changed`,{detail:i});this.dispatchEvent(a),e.dispatchEvent(Ec.OwnerChanged,a)}awake(){e.all.push(this),wc&&console.log(`Registered new PlayerState`,this.guid,e.all.length-1,e.all),this.context.connection.beginListen(O.UserLeftRoom,this.onUserLeftRoom)}async start(){wc&&console.log(`PLAYERSTATE.START, owner: `+this.owner,this.context.connection.usersInRoom([])),this.owner?(this.context.connection.isInRoom||await Sn(300),this.context.connection.userIsInRoom(this.owner)==0&&(wc&&console.log(`PlayerSync.start → doDestroy \"${this.name}\" because user \"${this.owner}\" is not in room anymore...`,`Currently in room:`,...this.context.connection.usersInRoom()),this.doDestroy())):this.owner||(wc&&console.warn(`PlayerState.start → owner is undefined!`,this.name),setTimeout(()=>{!this.destroyed&&!this.owner?this.dontDestroy?wc&&console.warn(`PlayerState.start → owner is still undefined but dontDestroy is set to true`,this.name):(wc&&console.warn(`PlayerState.start → owner is still undefined: destroying \"${this.name}\" instance now`),this.doDestroy()):wc&&console.log(`PlayerState.start → owner is assigned`,this.owner)},2e3))}doDestroy(){wc&&console.log(`PlayerSync.doDestroy → syncDestroy`,this.name),rn(this.gameObject,this.context.connection,!0,{saveInRoom:!1})}onDestroy(){if(wc&&console.warn(`PlayerState.onDestroy`,this.owner),this.context.connection.stopListen(O.UserLeftRoom,this.onUserLeftRoom),e.all.splice(e.all.indexOf(this),1),this.isLocalPlayer){let t=e._local.indexOf(this);t>=0&&e._local.splice(t,1)}}onUserLeftRoom=e=>{if(e.userId===this.owner){wc&&console.log(`PLAYERSYNC LEFT`,this.owner),this.doDestroy();return}}};Cc([Pr(Dc.prototype.onOwnerChange)],Dc.prototype,`owner`,void 0);var Oc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},kc=class extends N{position=`bottom`;showNeedleLogo=!1;showSpatialMenu;createFullscreenButton;createMuteButton;createQRCodeButton;onEnable(){this.applyOptions()}applyOptions(){this.context.menu.setPosition(this.position),this.context.menu.showNeedleLogo(this.showNeedleLogo),this.createFullscreenButton===!0&&this.context.menu.showFullscreenOption(!0),this.createMuteButton===!0&&this.context.menu.showAudioPlaybackOption(!0),this.showSpatialMenu===!0&&this.context.menu.showSpatialMenu(this.showSpatialMenu),this.createQRCodeButton===!0&&(A.isMobileDevice()||this.context.menu.showQRCodeButton(!0))}};Oc([E()],kc.prototype,`position`,void 0),Oc([E()],kc.prototype,`showNeedleLogo`,void 0),Oc([E()],kc.prototype,`showSpatialMenu`,void 0),Oc([E()],kc.prototype,`createFullscreenButton`,void 0),Oc([E()],kc.prototype,`createMuteButton`,void 0),Oc([E()],kc.prototype,`createQRCodeButton`,void 0);var Ac=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jc=D(`debugwebxr`),Mc=new Ue().setFromAxisAngle(new r(0,1,0),Math.PI),Nc=class extends N{head;leftHand;rightHand;_leftHandMeshes;_rightHandMeshes;_syncTransforms;async onEnterXR(e){if(!this.activeAndEnabled)return;jc&&console.warn(`AVATAR ENTER XR`,this.guid,this.sourceId,this,this.activeAndEnabled),this._syncTransforms&&(this._syncTransforms.length=0),await this.prepareAvatar();let t=Dc.getFor(this);if(t?.owner){let e=this.gameObject.addComponent(zr);e.avatar=this.gameObject,e.connectionId=t.owner,this.context.players.setPlayerView(t.owner,this.head?.asset,In.Headset)}else this.context.connection.isConnected?console.error(`No player state found for avatar`,this):t&&!this.context.connection.isConnected&&(t.dontDestroy=!0)}onLeaveXR(e){let t=this.gameObject.getComponent(zr);t&&t.destroy()}onUpdateXR(e){if(!this.activeAndEnabled)return;let t=Dc.isLocalPlayer(this);if(!t)return;let n=e.xr;if(n.rig&&n.rig.gameObject!==this.gameObject.parent&&(this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),this.gameObject.scale.set(1,1,1),n.rig.gameObject.add(this.gameObject)),this._syncTransforms&&t)for(let e of this._syncTransforms)e.fastMode=!0,e.isOwned()||e.requestOwnership();if(this.head&&this.context.mainCamera){let e=this.head.asset;if(e.position.copy(this.context.mainCamera.position),e.position.x*=-1,e.position.z*=-1,e.quaternion.copy(this.context.mainCamera.quaternion),e.quaternion.x*=-1,this.context.time.frameCount%10==0&&this.head.asset){let e=k.getComponentsInChildren(this.head.asset,fi);for(let t of e)t.enabled=!1,t.gameObject.visible=!1}}let r=e.xr.leftController,i=this.leftHand?.asset;r&&i?(i.position.copy(r.gripPosition),i.quaternion.copy(r.gripQuaternion),i.quaternion.multiply(Mc),i.visible=r.isTracking,this.updateHandVisibility(r,i,this._leftHandMeshes)):i&&i.visible&&(i.visible=!1);let a=e.xr.rightController,o=this.rightHand?.asset;a&&o?(o.position.copy(a.gripPosition),o.quaternion.copy(a.gripQuaternion),o.quaternion.multiply(Mc),o.visible=a.isTracking,this.updateHandVisibility(a,o,this._rightHandMeshes)):o&&o.visible&&(o.visible=!1)}onBeforeRender(){this.context.xr&&this.context.time.frame%10==0&&this.updateRemoteAvatarVisibility()}updateHandVisibility(e,t,n){if(n){let r=e.model&&e.model.visible&&e.model!==t;n.forEach(e=>{wi(e,!r)})}}updateRemoteAvatarVisibility(){if(this.context.connection.isConnected){let e=Dc.getFor(this);if(e&&e.isLocalPlayer==0){let t=j.getXRSync(this.context);if(t&&t.hasState(e.owner)){this.tryFindAvatarObjectsIfMissing();let n=this.leftHand?.asset;n&&(n.visible=t?.isTracking(e.owner,`left`)??!1);let r=this.rightHand?.asset;r&&(r.visible=t?.isTracking(e.owner,`right`)??!1)}if(this.head?.asset){let e=k.getComponentsInChildren(this.head.asset,fi);for(let t of e)t.enabled=!1,t.gameObject.visible=!0}}}}tryFindAvatarObjectsIfMissing(){if(!this.head||!this.leftHand||!this.rightHand){let e={head:this.head,leftHand:this.leftHand,rightHand:this.rightHand};_r.tryFindAvatarObjects(this.gameObject,this.sourceId||``,e),e.head&&(this.head=e.head),e.leftHand&&(this.leftHand=e.leftHand),e.rightHand&&(this.rightHand=e.rightHand)}}async prepareAvatar(){if(this.tryFindAvatarObjectsIfMissing(),this.head)this.head instanceof S&&(this.head=new w(``,this.sourceId,this.head));else{let e=new S;e.name=`Head`;let t=St.createPrimitive(Tt.Cube);e.add(t),this.gameObject.add(e),this.head=new w(``,this.sourceId,e),jc&&console.log(`Create head`,e)}if(this.rightHand)this.rightHand instanceof S&&(this.rightHand=new w(``,this.sourceId,this.rightHand));else{let e=new S;e.name=`Right Hand`,this.gameObject.add(e),this.rightHand=new w(``,this.sourceId,e),jc&&console.log(`Create right hand`,e)}if(this.leftHand)this.leftHand instanceof S&&(this.leftHand=new w(``,this.sourceId,this.leftHand));else{let e=new S;e.name=`Left Hand`,this.gameObject.add(e),this.leftHand=new w(``,this.sourceId,e),jc&&console.log(`Create left hand`,e)}await this.loadAvatarObjects(this.head,this.leftHand,this.rightHand),this._leftHandMeshes=[],this.leftHand.asset?.traverse(e=>{e?.isMesh&&this._leftHandMeshes.push(e)}),this._rightHandMeshes=[],this.rightHand.asset?.traverse(e=>{e?.isMesh&&this._rightHandMeshes.push(e)}),Dc.isLocalPlayer(this.gameObject)&&(this._syncTransforms=k.getComponentsInChildren(this.gameObject,Ot))}async loadAvatarObjects(e,t,n){let r=e.loadAssetAsync(),i=t.loadAssetAsync(),a=n.loadAssetAsync(),o=[];r&&o.push(r),i&&o.push(i),a&&o.push(a);let s=await Fn(o);jc&&console.log(`Avatar loaded results:`,s)}};Ac([E(w)],Nc.prototype,`head`,void 0),Ac([E(w)],Nc.prototype,`leftHand`,void 0),Ac([E(w)],Nc.prototype,`rightHand`,void 0);var Pc=D(`debugdecoders`),Fc=null;function Ic(){if(!Fc){let e=ir(null);Fc={dracoLoader:e.dracoLoader,ktx2Loader:e.ktx2Loader,meshoptDecoder:e.meshoptDecoder}}return Fc}function Lc(e){e!==void 0&&typeof e==`string`&&or(e)}function Rc(e){if(e!==void 0&&typeof e==`string`&&e!==`js`){let t=Ic();Pc&&console.log(`Setting draco decoder type to`,e),t.dracoLoader.setDecoderConfig({type:e})}}function zc(e){e!==void 0&&typeof e==`string`&&nr(e)}function Bc(e,t){let n=Ic();return t.renderer?n.ktx2Loader.detectSupport(t.renderer):console.warn(`No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail`),rr(e),e.dracoLoader||e.setDRACOLoader(n.dracoLoader),e.ktx2Loader||e.setKTX2Loader(n.ktx2Loader),e.meshoptDecoder||e.setMeshoptDecoder(n.meshoptDecoder),tr(e,{progressive:!0}),e}var Vc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Hc=D(`debugwebxr`),Uc=[],Wc=class extends N{createControllerModel=!0;createHandModel=!0;customLeftHand;customRightHand;static factory=new Xn;supportsXR(e){return e===`immersive-vr`||e===`immersive-ar`}_models=[];async onXRControllerAdded(e){if(!(e.xr.isVR||e.xr.isPassThrough))return;console.debug(`XR Controller Added`,e.controller.side,e.controller.index);let{controller:t}=e;if(this.createControllerModel||this.createHandModel){if(t.hand){if(this.createHandModel){let e=await this.loadHandModel(this,t);if(!e||!t.connected||!t.isHand){e?.handObject&&Bt(e.handObject,!1),e?.handObject?.destroy();return}this._models.push({controller:t,model:e.handObject,handmesh:e.handmesh}),this._models.sort((e,t)=>e.controller.index-t.controller.index),this.scene.add(e.handObject),t.model=e.handObject}}else if(this.createControllerModel){let e=await t.getModelUrl();if(e){let n=await this.loadModel(t,e);if(!n||!t.connected||t.isHand)return;this._models.push({controller:t,model:n}),this._models.sort((e,t)=>e.controller.index-t.controller.index),this.scene.add(n),n.traverse(e=>{e.layers.set(2),e.matrixAutoUpdate=!1,e.updateMatrix()}),t.model=n}else t.targetRayMode!==`transient-pointer`&&console.warn(`XRControllerModel: no model found for `+t.side)}}}onXRControllerRemoved(e){console.debug(`XR Controller Removed`,e.controller.side,e.controller.index);let t=this._models.findIndex(t=>t.controller===e.controller),n=this._models[t];n&&(this._models.splice(t,1),n.model&&=(Bt(n.model,!1),n.model.destroy(),void 0))}onBeforeXR(e,t){this.createHandModel&&(this.customLeftHand||this.customRightHand)&&(t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.includes(`hand-tracking`)||t.optionalFeatures.push(`hand-tracking`))}onLeaveXR(e){for(let e of this._models)e&&(e.model&&=(Bt(e.model,!1),e.model.destroy(),void 0),e.controller.model===e.model&&(e.controller.model=null));this._models.length=0}onBeforeRender(){if(j.active&&(Hc&&(Uc[0]=Date.now()),this.updateRendering(j.active),Hc)){let e=Date.now()-Uc[0];Uc.push(e),Uc.length>=30&&(Uc[0]=0,Uc.reduce((e,t)=>e+t,0)/Uc.length,Uc.length=0)}}updateRendering(e){for(let t=0;t{this.makeOccluder(e)}),n}async loadHandModel(e,t){let n=this.context,r=n.renderer.xr.getHand(t.index);r||(Hc?Ln.DrawLabel(t.rayWorldPosition,`No hand found for index `+t.index,.05,5):console.warn(`No hand found for index `+t.index));let i=new sr;Bc(i,n),await Ua(i,n,this.sourceId??``,this.sourceId??``);let a=Va(i),o=``,s=t.side===`left`?this.customLeftHand:this.customRightHand;s?(o=s.url.split(`.`).slice(0,-1).join(`.`),i.setPath(``)):(o=t.inputSource.handedness===`left`?`left`:`right`,i.setPath(`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/`));let c=new S;Bt(c);let l=new er(c,r,i.path,o,i,n=>{let r=a?.gltf;r?.scene.children?.length===0&&(r.scene.children[0]=n),a?.gltf&&ot().createBuiltinComponents(e.context,e.sourceId||o,a.gltf,null,a),n.traverse(e=>{e.layers.set(2),j.active?.isPassThrough&&!s&&this.makeOccluder(e),e instanceof x&&P.assignMeshLOD(e,0)}),t.connected||(Hc&&Ln.DrawLabel(t.rayWorldPosition,`Hand is loaded but not connected anymore`,.05,5),n.removeFromParent())});if(Hc&&c.add(new _e(.5)),t.inputSource.hand){Hc&&console.log(t.inputSource.hand);for(let e of t.inputSource.hand.values())if(r.joints[e.jointName]===void 0){let t=new ve;t.matrixAutoUpdate=!1,t.visible=!0,r.joints[e.jointName]=t,r.add(t)}}else Hc&&Ln.DrawLabel(t.rayWorldPosition,`No inputSource.hand found for index `+t.index,.05,5);return{handObject:c,handmesh:l}}makeOccluder(e){if(e instanceof x){let t=e.material;t instanceof Ne&&(t=e.material=t.clone(),t.depthWrite=!0,t.depthTest=!0,t.colorWrite=!1,e.receiveShadow=!1,e.renderOrder=-100)}}};Vc([E()],Wc.prototype,`createControllerModel`,void 0),Vc([E()],Wc.prototype,`createHandModel`,void 0),Vc([E(w)],Wc.prototype,`customLeftHand`,void 0),Vc([E(w)],Wc.prototype,`customRightHand`,void 0);var Gc=class extends N{},Kc=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},qc=D(`debugwebxr`),Jc=class extends N{movementSpeed=1.5;rotationStep=30;useTeleport=!0;usePinchToTeleport=!0;useTeleportTarget=!1;useTeleportFade=!1;showRays=!0;showHits=!0;isXRMovementHandler=!0;xrSessionMode=`immersive-vr`;_didApplyRotation=!1;_didTeleport=!1;onUpdateXR(e){let t=e.xr.rig;if(!t?.gameObject||e.xr.isPassThrough)return;let n=e.xr.leftController,r=e.xr.rightController;n&&this.onHandleMovement(n,t.gameObject),r&&(this.onHandleRotation(r,t.gameObject),this.useTeleport&&this.onHandleTeleport(r,t.gameObject))}onLeaveXR(e){for(let e of this._lines)e.removeFromParent();for(let e of this._hitDiscs)e?.removeFromParent()}onBeforeRender(){this.context.xr?.running&&(this.showRays&&this.renderRays(this.context.xr),this.showHits&&this.renderHits(this.context.xr))}onHandleMovement(e,t){let n=e.getStick(`xr-standard-thumbstick`);if(n.x!=0||n.y!=0){let r=wn(n.x,0,n.y);r.multiplyScalar(this.context.time.deltaTimeUnscaled*this.movementSpeed);let i=$t(t);r.multiplyScalar(i.x),r.applyQuaternion(e.xr.poseOrientation),r.y=0,r.applyQuaternion(t.worldQuaternion),T()&&Number.isNaN(r.x)&&console.error(`Stick movement resulted in NaN`,{stick:n,vec:r}),t.position.add(r),t.updateWorldMatrix(!1,!1);for(let e of t.children)e.updateWorldMatrix(!1,!1)}}onHandleRotation(e,t){if(e._isMxInk)return;let n=e.getStick(`xr-standard-thumbstick`).x;if(this._didApplyRotation)Math.abs(n)<.3&&(this._didApplyRotation=!1);else if(Math.abs(n)>.5){this._didApplyRotation=!0;let e=n>0?1:-1,r=Yt(this.context.mainCamera).clone();t.rotateY(e*Rt.toRadians(this.rotationStep));let i=Yt(this.context.mainCamera).clone().sub(r);i.y=0,t.position.sub(i)}}_teleportBuffer=[];onHandleTeleport(e,t){let n=0;if(e.hand&&this.usePinchToTeleport&&e.isTeleportGesture){let t=e.getPointerId(`primary`);if(t!=null&&this.context.input.getIsPointerIdInUse(t))return;let r=e.getGesture(`pinch`);r&&(n=r.value)}else n=e.getStick(`xr-standard-thumbstick`)?.y;if(this._didTeleport)(n>=0&&n<.4||n<0&&n>-.4)&&(this._didTeleport=!1);else if(n>.8){this._didTeleport=!0;let n=this.context.physics.raycastFromRay(e.ray)[0];if(n&&n.object instanceof $n){let e=n.normal?.dot(wn(0,1,0));if(e!==void 0&&e<.4)return}let i=n?.point;if(!i&&!this.useTeleportTarget){this._plane||=new fe(new r(0,1,0),0);let n=t.worldPosition;this._plane.setFromNormalAndCoplanarPoint(new r(0,1,0),n);let a=e.ray;i=n.clone(),this._plane.intersectLine(new ee(a.origin,wn(a.direction).multiplyScalar(1e4).add(a.origin)),i),i.distanceTo(n)>t.scale.x*10&&(i=null)}if(i){if(this.useTeleportTarget&&!k.getComponentInParent(n.object,Gc))return;let r=i.clone();if(qc&&Ln.DrawSphere(i,.025,16711680,5),this.context.mainCamera?.position){let e=this.context.xr?.getUserOffsetInRig();e&&(e.y=0,r.sub(e),qc&&Ln.DrawWireSphere(e.add(r),.025,65280,5))}this._teleportBuffer.push(t.matrix.clone()),this._teleportBuffer.length>10&&this._teleportBuffer.shift(),this.useTeleportFade?e.xr.fadeTransition()?.then(()=>{t.worldPosition=r}):t.worldPosition=r}}else if(n<-.8&&(this._didTeleport=!0,this._teleportBuffer.length>0)){let e=this._teleportBuffer.pop();e&&e.decompose(t.position,t.quaternion,t.scale)}}_plane=null;_lines=[];_hitDiscs=[];_hitDistances=[];_lastHitDistances=[];renderRays(e){for(let e=0;e=59?1:10;if((this.context.time.frame+n.index)%o!==0&&(i=!1),!i){let e=this._hitDiscs[t];e&&e.visible&&e.hit&&this.updateHitPointerPosition(n,e,e.hit.distance);continue}let s=this.context.physics.raycastFromRay(n.ray,{testObject:this.hitPointRaycastFilter,precise:!1}),c=s.find(e=>this.usePinchToTeleport&&n.isTeleportGesture?!0:this.isObjectWithInteractiveComponent(e.object));if(c||=s[0],r&&(r.controller=n,r.hit=c),this._hitDistances[t]=c?.distance||null,c){this._lastHitDistances[t]=c.distance;let i=e.rigScale??1;qc&&(Ln.DrawWireSphere(c.point,.025*i,16711680),Ln.DrawLabel(wn(0,.2,0).add(c.point),c.object.name,.02,0)),r||(r=this.createHitPointObject(),this._hitDiscs[t]=r),r.hit=c,r.visible=c.distance>i*.05;let a=.01*(i+c.distance),o=n.getButton(`primary`)?.pressed;o&&(a*=1.1),r.scale.set(a,a,a),r.layers.set(2);let s=r.material.opacity;if(s=o?1:c.distance<.15*i?.2:.6,r.material.opacity=Rt.lerp(r.material.opacity,s,this.context.time.deltaTimeUnscaled/.1),r.visible){if(c.normal){this.updateHitPointerPosition(n,r,c.distance);let e=c.normal.applyQuaternion(Rn(c.object));r.quaternion.setFromUnitVectors(Yc,e)}else this.updateHitPointerPosition(n,r,c.distance);r.parent!==this.context.scene&&this.context.scene.add(r)}}else this._hitDiscs[t]&&(this._hitDiscs[t].visible=!1)}}isObjectWithInteractiveComponent(e,t=0){return Ct(e)||e.isUI===!0?!0:e.isScene?!1:e.parent?this.isObjectWithInteractiveComponent(e.parent,t+1):!1}updateHitPointerPosition(e,t,n){let r=wn(e.rayWorldPosition);r.add(wn(0,0,n-.01).applyQuaternion(e.rayWorldQuaternion)),t.position.lerp(r,this.context.time.deltaTimeUnscaled/.05)}hitPointRaycastFilter=e=>e.type===`SkinnedMesh`?`continue in children`:!0;createHitPointObject(){let e=new x(new Ve(.3,6,6),new v({color:15658734,opacity:.7,transparent:!0,depthTest:!1,depthWrite:!1,side:2}));return e.layers.disableAll(),e.layers.enable(2),e}createRayLineObject(){let e=new Zn;e.layers.disableAll(),e.layers.enable(2);let t=new Yn;e.geometry=t;let n=new Float32Array(9);n.set([0,0,.02,0,0,.4,0,0,1]),t.setPositions(n);let r=new Float32Array(9);return r.set([1,1,1,.1,.1,.1,0,0,0]),t.setColors(r),e.material=new Qn({color:16777215,vertexColors:!0,worldUnits:!0,linewidth:.004,transparent:!0,depthWrite:!1,blending:2,dashed:!1}),e}};Kc([E()],Jc.prototype,`movementSpeed`,void 0),Kc([E()],Jc.prototype,`rotationStep`,void 0),Kc([E()],Jc.prototype,`useTeleport`,void 0),Kc([E()],Jc.prototype,`usePinchToTeleport`,void 0),Kc([E()],Jc.prototype,`useTeleportTarget`,void 0),Kc([E()],Jc.prototype,`useTeleportFade`,void 0),Kc([E()],Jc.prototype,`showRays`,void 0),Kc([E()],Jc.prototype,`showHits`,void 0);var Yc=new r(0,1,0),Y=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Xc=D(`debugwebxr`),Zc=D(`debugusdz`),X=class e extends N{createVRButton=!0;createARButton=!0;createSendToQuestButton=!0;createQRCode=!0;useDefaultControls=!0;showControllerModels=!0;showHandModels=!0;usePlacementReticle=!0;customARPlacementReticle;usePlacementAdjustment=!0;arScale=1;useXRAnchor=!1;autoPlace=!1;autoCenter=!1;useQuicklookExport=!1;useDepthSensing=!1;useSpatialGrab=!0;defaultAvatar;_playerSync;_createdComponentsInSession=[];_usdzExporter;static activeWebXRComponent=null;awake(){j.getXRSync(this.context)}onEnable(){window.location.protocol!==`https:`&&kn(`WebXR only works on secure connections (https).`),navigator.xr?.isSessionSupported(`immersive-ar`).catch(()=>!1).then(e=>{let t=A.isVisionOS()&&!e;(this.useQuicklookExport||t)&&(k.findObjectOfType($)||(Xc&&console.log(`WebXR: Adding USDZExporter`),this._usdzExporter=k.addComponent(this.gameObject,$),this._usdzExporter.objectToExport=this.context.scene,this._usdzExporter.autoExportAnimations=!0,this._usdzExporter.autoExportAudioSources=!0))}),this.handleCreatingHTML(),this.handleOfferSession(),this.defaultAvatar===!0&&(Xc&&console.warn(`WebXR: No default avatar set, using static default avatar`),this.defaultAvatar=new w(`https://cdn.needle.tools/static/avatars/DefaultAvatar.glb`)),this.defaultAvatar&&(this._playerSync=this.gameObject.getOrAddComponent(Tc),this._playerSync.autoSync=!1),this._playerSync&&typeof this.defaultAvatar!=`boolean`&&(this._playerSync.asset=this.defaultAvatar,this._playerSync.onPlayerSpawned?.removeEventListener(this.onAvatarSpawned),this._playerSync.onPlayerSpawned?.addEventListener(this.onAvatarSpawned))}onDisable(){this._usdzExporter?.destroy(),this.removeButtons()}async handleOfferSession(){return this.createVRButton&&await j.isVRSupported()&&this.createVRButton?j.offerSession(`immersive-vr`,`default`,this.context):this.createARButton&&await j.isARSupported()&&this.createARButton?j.offerSession(`immersive-ar`,`default`,this.context):!1}get session(){return j.active??null}get sessionMode(){return j.activeMode??null}get arSessionRoot(){return this._activeWebARSessionRoot}async enterVR(e){return j.start(`immersive-vr`,e,this.context)}async enterAR(e){return j.start(`immersive-ar`,e,this.context)}exitXR(){j.stop()}_exitXRMenuButton;_previousXRState=0;_spatialGrabRaycaster;_activeWebARSessionRoot=null;get isActiveWebXR(){return!e.activeWebXRComponent||e.activeWebXRComponent===this}onBeforeXR(t,n){if(!this.isActiveWebXR){console.warn(`WebXR: another WebXR component is already active (${e.activeWebXRComponent?.name}). This is ignored: ${this.name}`);return}if(this.activeAndEnabled===!1||this.destroyed){console.debug(`[WebXR] onBeforeXR called on disabled or destroyed component`);return}e.activeWebXRComponent=this,t==`immersive-ar`&&this.useDepthSensing&&(n.optionalFeatures=n.optionalFeatures||[],n.optionalFeatures.push(`depth-sensing`))}async onEnterXR(e){if(!this.isActiveWebXR)return;Xc&&console.log(`WebXR onEnterXR`),this._previousXRState=di.Global.Mask;let t=e.xr.isVR;if(di.Global.Set(t?ui.VR:ui.AR),e.xr.isAR){let e=k.findObjectOfType(xc,this.context,!1);if(!e)if(this.usePlacementReticle){let t=new S;for(let e of this.context.scene.children)t.add(e);this.context.scene.add(t),e=k.addComponent(t,xc),this._createdComponentsInSession.push(e)}else (Xc||T())&&console.warn(`WebXR: No WebARSessionRoot found in scene and usePlacementReticle is disabled in WebXR component.`);this._activeWebARSessionRoot=e,e&&(e.customReticle=this.customARPlacementReticle,e.arScale=this.arScale,e.arTouchTransform=this.usePlacementAdjustment,e.autoPlace=this.autoPlace,e.autoCenter=this.autoCenter,e.useXRAnchor=this.useXRAnchor)}this.useDefaultControls&&this.setDefaultMovementEnabled(!0),(this.showControllerModels||this.showHandModels)&&this.setDefaultControllerRenderingEnabled(!0),this.useSpatialGrab&&(this._spatialGrabRaycaster=k.findObjectOfType(cn)??void 0,this._spatialGrabRaycaster||=this.gameObject.addComponent(cn)),this.createLocalAvatar(e.xr),e.xr.isScreenBasedAR||(this._exitXRMenuButton=this.context.menu.appendChild({label:`Quit XR`,onClick:()=>this.exitXR(),icon:`exit_to_app`,priority:2e4}))}onUpdateXR(e){this.isActiveWebXR&&this._spatialGrabRaycaster&&(this._spatialGrabRaycaster.enabled=this.useSpatialGrab)}onLeaveXR(t){if(this._exitXRMenuButton?.remove(),this.isActiveWebXR){di.Global.Set(this._previousXRState),this._playerSync?.destroyInstance();for(let e of this._createdComponentsInSession)e.destroy();this._createdComponentsInSession.length=0,this._activeWebARSessionRoot=null,this.handleOfferSession(),jn(1).then(()=>e.activeWebXRComponent=null)}}setDefaultMovementEnabled(e){let t=this.gameObject.getComponent(Jc);return!t&&e&&(t=this.gameObject.addComponent(Jc),this._createdComponentsInSession.push(t)),t&&(t.enabled=e),t}setDefaultControllerRenderingEnabled(e){let t=this.gameObject.getComponent(Wc);return!t&&e&&(t=this.gameObject.addComponent(Wc),this._createdComponentsInSession.push(t),t.createControllerModel=this.showControllerModels,t.createHandModel,this.showHandModels),t&&(t.enabled=e),t}async createLocalAvatar(e){this._playerSync&&e.running&&typeof this.defaultAvatar!=`boolean`&&(this._playerSync.asset=this.defaultAvatar,await this._playerSync.getInstance())}onAvatarSpawned=e=>{Xc&&console.log(`WebXR.onAvatarSpawned`,e);let t=k.getComponentInChildren(e,Nc);t??=k.addComponent(e,Nc)};getButtonsContainer(){return this.getButtonsFactory()}getButtonsFactory(){return this._buttonFactory||=sc.getOrCreate(),this._buttonFactory}_buttonFactory;handleCreatingHTML(){if(this.createARButton||this.createVRButton||this.useQuicklookExport){if((A.isiOS()&&A.isSafari()||Zc)&&this.useQuicklookExport){let e=k.findObjectOfType($);if(!e||e&&e.allowCreateQuicklookButton){let e=this.getButtonsFactory().createQuicklookButton();this.addButton(e)}}if(this.createARButton){let e=this.getButtonsFactory().createARButton();this.addButton(e)}if(this.createVRButton){let e=this.getButtonsFactory().createVRButton();this.addButton(e)}}if(this.createSendToQuestButton&&!A.isQuest()&&j.isVRSupported().then(e=>{if(!e){let e=this.getButtonsFactory().createSendToQuestButton();this.addButton(e)}}),this.createQRCode){let e=Zt(kc);if(e&&e.createQRCodeButton===!1)T()&&console.warn(`WebXR: QRCode button is disabled in the Needle Menu component`);else if(!A.isMobileDevice()){let e=un.getOrCreate().createQRCode();this.addButton(e)}}}_buttons=[];addButton(e){this._buttons.push(e),this.context.menu.appendChild(e)}removeButtons(){for(let e of this._buttons)e.remove();this._buttons.length=0}};Y([E()],X.prototype,`createVRButton`,void 0),Y([E()],X.prototype,`createARButton`,void 0),Y([E()],X.prototype,`createSendToQuestButton`,void 0),Y([E()],X.prototype,`createQRCode`,void 0),Y([E()],X.prototype,`useDefaultControls`,void 0),Y([E()],X.prototype,`showControllerModels`,void 0),Y([E()],X.prototype,`showHandModels`,void 0),Y([E()],X.prototype,`usePlacementReticle`,void 0),Y([E(w)],X.prototype,`customARPlacementReticle`,void 0),Y([E()],X.prototype,`usePlacementAdjustment`,void 0),Y([E()],X.prototype,`arScale`,void 0),Y([E()],X.prototype,`useXRAnchor`,void 0),Y([E()],X.prototype,`autoPlace`,void 0),Y([E()],X.prototype,`autoCenter`,void 0),Y([E()],X.prototype,`useQuicklookExport`,void 0),Y([E()],X.prototype,`useDepthSensing`,void 0),Y([E()],X.prototype,`useSpatialGrab`,void 0),Y([E(w)],X.prototype,`defaultAvatar`,void 0);var Qc=D(`debugusdzbehaviours`),$c=class{get extensionName(){return`Behaviour`}behaviours=[];addBehavior(e){this.behaviours.push(e)}addAudioClip(e){if(!e||typeof e!=`string`)return``;let t=`audio/`+Vs.getName(e);return this.audioClips.push({clipUrl:e,filesKey:t}),t}behaviourComponents=[];behaviourComponentsCopy=[];audioClips=[];audioClipsCopy=[];targetUuids=new Set;getAllTargetUuids(){return this.targetUuids}onBeforeBuildDocument(e){if(!e.root)return Promise.resolve();let t=[];return e.root.traverse(n=>{k.foreachComponent(n,n=>{let r=n;if(typeof r.createBehaviours==`function`||typeof r.beforeCreateDocument==`function`||typeof r.afterCreateDocument==`function`||typeof r.afterSerialize==`function`){this.behaviourComponents.push(r);let n=r.beforeCreateDocument?.call(r,this,e);n instanceof Promise&&t.push(n)}},!1)}),Qc&&console.log(`onBeforeBuildDocument: all components`,this.behaviourComponents),Promise.all(t)}onExportObject(e,t,n){for(let e of this.behaviourComponents)e.createBehaviours?.call(e,this,t,n)}onAfterBuildDocument(e){for(let t of this.behaviourComponents)typeof t.afterCreateDocument==`function`&&t.afterCreateDocument(this,e);this.behaviourComponentsCopy=this.behaviourComponents.slice(),this.behaviourComponents.length=0,this.audioClipsCopy=this.audioClips.slice(),this.audioClips.length=0;let t=new Set,n=new Set,r=new Set,i=new Set,a=Qc,o=`graph LR +`,s=``;function c(e){if(e instanceof Ms){a&&(o+=`subgraph Group_${e.id}\n`);for(let t of e.actions)a&&(o+=`${e.id}[${e.id}] -- ${e.type},loops:${e.loops} --> ${t.id}[${t.id}]\n`),c(t);a&&(o+=`end +`)}else if(e instanceof Ns){e.tokenId===`StartAnimation`&&i.add(e);let t=e.tokenId;e.type!==void 0&&(t+=`:`+e.type);let r=e.affectedObjects;if(r)if(Array.isArray(r))for(let i of r)n.add(i),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${i.uuid}(("${i.displayName||i.name||i.uuid}"))\n`);else typeof r==`object`?(n.add(r),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${r.uuid}(("${r.displayName||r.name||r.uuid}"))\n`)):typeof r==`string`&&n.add({uuid:r});let o=e.xFormTarget;o&&(typeof o==`object`?(n.add(o),a&&(s+=`${e.id}[${e.id}\n${t}] -- ${t} --> ${o.uuid}(("${o.displayName||o.name||o.uuid}"))\n`)):typeof o==`string`&&n.add({uuid:o}))}}function l(e,n){if(Array.isArray(e))for(let t of e)l(t,n);else if(e instanceof ks){let r=e.tokenId;e.type!==void 0&&(r+=`:`+e.type),typeof e.targetId==`object`&&(t.add(e.targetId),a&&(s+=`${e.targetId.uuid}(("${e.targetId.displayName}")) --> ${e.id}[${e.id}\n${r}]\n`)),a&&(o+=`${e.id}((${e.id})) -- ${r} --> ${n.id}[${n.tokenId||n.id}]\n`)}}for(let e of this.behaviours)a&&(o+=`subgraph ${e.id}\n`),c(e.action),l(e.trigger,e.action),a&&(o+=`end +`);a&&(o+=` +`+s),a&&(console.log(`All USDZ behaviours`,this.behaviours),this.behaviours.length&&(console.warn(`The Mermaid graph can be pasted into https://massive-mermaid.glitch.me/ or https://mermaid.live/edit. It should be in your clipboard already!`),console.log(o),navigator.clipboard.writeText(o)));{let e=`gantt +title Animations +dateFormat X +axisFormat %s +`,t=Array.from(i),n=new Set;for(let r of t)if(r.affectedObjects&&typeof r.affectedObjects!=`string`){if(Array.isArray(r.affectedObjects))for(let e of r.affectedObjects)n.add(e);else n.add(r.affectedObjects);a&&(e+=`section ${r.animationName} (${r.id})\n`,e+=`${r.id} : ${r.start}, ${r.duration}s\n`)}a&&i.size&&console.log(e);let r=new Set;for(let e of n){e.getPath||console.error(`USDZExporter: Animation target object has no getPath method. This is likely a bug`,e);let t=e.getPath();t.startsWith(`<`)&&(t=t.substring(1)),t.endsWith(`>`)&&(t=t.substring(0,t.length-1)),r.add({path:t,obj:e})}let o=Array.from(r).sort((e,t)=>e.path.length-t.path.length),s=[];for(let e=0;ee.enabled),i=k.getComponents(e,vi).filter(e=>e.enabled&&!e.isTrigger),a=r.length>0?r[0]:null,o=i.length>0?i[0]:null;o&&!a&&(a=new vt,a.isKinematic=!0),a&&t.addEventListener(`serialize`,(e,t)=>{if(a){if(e.appendLine(),e.beginBlock(`def RealityKitComponent "RigidBody"`,`{`,!0),a.useGravity||e.appendLine(`bool gravityEnabled = 0`),e.appendLine(`uniform token info:id = "RealityKit.RigidBody"`),a.isKinematic&&e.appendLine(`token motionType = "Kinematic"`),e.beginBlock(`def RealityKitStruct "massFrame"`,`{`,!0),e.appendLine(`float m_mass = ${a.mass}`),e.beginBlock(`def RealityKitStruct "m_pose"`,`{`,!0),e.appendLine(`float3 position = (${a.centerOfMass.x}, ${a.centerOfMass.y}, ${a.centerOfMass.z})`),e.closeBlock(`}`),e.closeBlock(`}`),i.length>0){let t=i[0];e.beginBlock(`def RealityKitStruct "material"`,`{`,!0);let n=t.sharedMaterial;n&&n.dynamicFriction!==void 0&&e.appendLine(`double dynamicFriction = ${t.sharedMaterial?.dynamicFriction}`),n&&n.bounciness!==void 0&&e.appendLine(`double restitution = ${t.sharedMaterial?.bounciness}`),n&&n.staticFriction!==void 0&&e.appendLine(`double staticFriction = ${t.sharedMaterial?.staticFriction}`),e.closeBlock(`}`)}e.closeBlock(`}`)}}),o&&(t.addEventListener(`serialize`,(e,t)=>{e.beginBlock(`def RealityKitComponent "Collider"`,`{`,!0),e.appendLine(`uint group = 1`),e.appendLine(`uniform token info:id = "RealityKit.Collider"`),e.appendLine(`uint mask = 4294967295`);let n=o.isTrigger?`Trigger`:`Default`;if(e.appendLine(`token type = "${n}"`),e.beginBlock(`def RealityKitStruct "Shape"`,`{`,!0),o instanceof yi){let t=o;e.appendLine(`token shapeType = "Sphere"`),e.appendLine(`float radius = ${t.radius}`)}else if(o instanceof bi){let t=o;e.appendLine(`token shapeType = "Box"`),e.appendLine(`float3 extent = (${t.size.x}, ${t.size.y}, ${t.size.z})`)}else if(o instanceof Si){let t=o;e.appendLine(`token shapeType = "Capsule"`),e.appendLine(`float radius = ${t.radius}`),e.appendLine(`float height = ${t.height}`)}else if(o instanceof xi&&o.sharedMesh?.geometry){let t=o.sharedMesh.geometry;t.boundingBox||t.computeBoundingBox();let n=o.sharedMesh.geometry.boundingBox;n&&(e.appendLine(`token shapeType = "Box"`),e.appendLine(`float3 extent = (${n.max.x-n.min.x}, ${n.max.y-n.min.y}, ${n.max.z-n.min.z})`),console.log(`[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. MeshCollider will be exported as Box`,o))}else console.warn(`[USDZ] Only Box, Sphere, and Capsule colliders are supported in visionOS/iOS. Ignoring collider:`,o);e.beginBlock(`def RealityKitStruct "pose"`,`{`,!0),e.closeBlock(`}`),e.closeBlock(`}`),e.closeBlock(`}`)}),i.length>1&&console.log(`WARNING: Multiple colliders detected. visionOS / iOS can only support objects with a single collider, only exporting the first collider: `,o))}},tl;(function(e){e.singleLine=`singleLine`,e.hardBreaks=`hardBreaks`,e.flowing=`flowing`})(tl||={});var nl;(function(e){e.left=`left`,e.center=`center`,e.right=`right`,e.justified=`justified`})(nl||={});var rl;(function(e){e.top=`top`,e.middle=`middle`,e.lowerMiddle=`lowerMiddle`,e.baseline=`baseline`,e.bottom=`bottom`})(rl||={});var il=class{static global_id=0;static getId(){return this.global_id++}id;content=``;font=[];pointSize=144;width;height;depth;wrapMode;horizontalAlignment;verticalAlignment;material;setDepth(e){return this.depth=e,this}setPointSize(e){return this.pointSize=e,this}setHorizontalAlignment(e){return this.horizontalAlignment=e,this}setVerticalAlignment(e){return this.verticalAlignment=e,this}constructor(e){this.id=e}writeTo(e,t){t.beginBlock(`def Preliminary_Text "${this.id}"`,`(`,!1),t.appendLine(`prepend apiSchemas = ["MaterialBindingAPI"]`),t.closeBlock(`)`),t.beginBlock(),this.content&&t.appendLine(`string content = "${this.content}"`),(!this.font||this.font.length<=0)&&(this.font||=[],this.font?.push(`sans-serif`));let n=this.font.map(e=>`"${e}"`).join(`, `);t.appendLine(`string[] font = [ ${n} ]`),t.appendLine(`double pointSize = ${this.pointSize}`),typeof this.width==`number`&&t.appendLine(`double width = ${this.width}`),typeof this.height==`number`&&t.appendLine(`double height = ${this.height}`),typeof this.depth==`number`&&t.appendLine(`double depth = ${this.depth}`),this.wrapMode&&t.appendLine(`token wrapMode = "${this.wrapMode}"`),this.horizontalAlignment&&t.appendLine(`token horizontalAlignment = "${this.horizontalAlignment}"`),this.verticalAlignment&&t.appendLine(`token verticalAlignment = "${this.verticalAlignment}"`),this.material!==void 0&&t.appendLine(`rel material:binding = `),t.closeBlock()}},al=class{static singleLine(e,t,n){let r=new il(`text_`+il.getId());return r.content=e,t&&(r.pointSize=t),n&&(r.depth=n),r}static multiLine(e,t,n,r,i,a){let o=new il(`text_`+il.getId());return o.content=e,o.width=t,o.height=n,o.horizontalAlignment=r,o.verticalAlignment=i,a!==void 0&&(o.wrapMode=a),o}},ol=new b().makeRotationY(Math.PI),sl=new b().makeScale(-1,1,-1),cl=class{get extensionName(){return`text`}exportText(e,t,n){let r=k.getComponent(e,Cn);if(!r)return;let i=k.getComponent(e,Un),a=100,o=100;i&&(a=i.width,o=i.height);let s=ol.clone();i&&s.premultiply(sl),t.setMatrix(s);let c=r.color.clone();t.material=new Te({color:c,emissive:c}),t.addEventListener(`serialize`,(e,n)=>{let i=r.text;i=i.replace(/\r/g,``),i=i.replace(/\n/g,`\\n`);let s=al.multiLine(i,a,o,nl.center,rl.bottom,tl.flowing);this.setTextAlignment(s,r.alignment),this.setOverflow(s,r),t.material&&(s.material=t.material),s.pointSize=this.convertToTextSize(r.fontSize),s.depth=.001,s.writeTo(void 0,e)})}convertToTextSize(e){return 1/.0502*144*e}setOverflow(e,t){t.horizontalOverflow?e.wrapMode=tl.singleLine:e.wrapMode=tl.flowing}setTextAlignment(e,t){switch(t){case M.LowerLeft:case M.MiddleLeft:case M.UpperLeft:e.horizontalAlignment=nl.left;break;case M.LowerCenter:case M.MiddleCenter:case M.UpperCenter:e.horizontalAlignment=nl.center;break;case M.LowerRight:case M.MiddleRight:case M.UpperRight:e.horizontalAlignment=nl.right;break}switch(t){case M.LowerLeft:case M.LowerCenter:case M.LowerRight:e.verticalAlignment=rl.bottom;break;case M.MiddleLeft:case M.MiddleCenter:case M.MiddleRight:e.verticalAlignment=rl.middle;break;case M.UpperLeft:case M.UpperCenter:case M.UpperRight:e.verticalAlignment=rl.top;break}}},ll=class{get extensionName(){return`tmui`}onExportObject(e,t,r){let i=k.getComponent(e,An);if(i&&i.enabled&&i.renderMode===en.WorldSpace){let i=new cl,a=k.getComponent(e,Un),o=k.getComponent(e,xn),s=[];if(a){if(!k.isActiveSelf(e)){let t=k.isActiveSelf(e);k.setActive(e,!0),a.onEnable(),a.updateTransform(),s.push(()=>{a.onDisable(),k.setActive(e,t)})}e.traverse(e=>{if(!k.isActiveInHierarchy(e)){let t=k.isActiveSelf(e);k.setActive(e,!0);let n=k.getComponent(e,Hn);n&&(n.onEnable(),s.push(()=>{n.onDisable()}));let r=k.getComponent(e,Un);r&&(r.onEnable(),r.updateTransform(),r.onApplyTransform(),s.push(()=>{r.onDisable()}));let i=k.getComponent(e,Cn);i&&(i.onEnable(),s.push(()=>{i.onDisable()})),s.push(()=>{k.setActive(e,t)})}}),a.width,a.height;let c=jo.createEmpty(),l=a.shadowComponent;if(t.add(c),l){let e=l.matrix;c.setMatrix(e);let t=new Map,a=new Map;t.set(l,c),a.set(l,o?o.alpha:1),l.traverse(e=>{if(e===l)return;let o=jo.createEmpty();o.setMatrix(e.matrix);let s=e.parent,c=!!s&&typeof s.textContent==`string`&&s.textContent.length>0,u=a.get(s)||1,d=k.getComponent(e,xn);if(d&&(u*=d.alpha),e instanceof x&&c){let t=e[$e];t?i.exportText(t.gameObject,o,r):console.error(`Error when exporting UI: shadow component owner not found. This is likely a bug.`,e)}if(e instanceof x&&!c){let t=e.geometry.clone();t.scale(1,1,-1),this.flipWindingOrder(t),o.geometry=t;let r=new n,i=e.material.opacity;r.copy(e.material.color),o.material=new v({color:r,opacity:i*u,map:e.material.map,transparent:!0})}t.set(e,o),a.set(e,u);let f=t.get(s);if(!f){console.error(`Error when exporting UI: shadow component parent not found!`,e,e.parent);return}f.add(o)})}}for(let e of s)e()}}flipWindingOrder(e){let t=e.index.array;for(let e=0,n=t.length/3;e0&&console.log(`USDZ Animation Clips without behaviours`,n);for(let e of n)for(let n of e.clips)t.registerAnimation(e.root,n);return o}function fl(e,t){let n=k.getComponentsInChildren(e,I),r=k.getComponentsInChildren(e,Js),i=[],a=[];ul&&console.log({audioSources:n,playAudioOnClicks:r});for(let e of r){if(!e.target)continue;let t=n.indexOf(e.target);t>-1&&n.splice(t,1)}for(let t of n){if(!t||!t.clip||t.volume<=0||i.includes(t))continue;let n=new Js;n.target=t,n.name=`PlayAudioOnClick_implicitAtStart_`,n.trigger=`start`;let r=new S;k.addComponent(r,n),console.log(`implicit PlayAudioOnStart`,r,n),a.push(r),i.push(t),e.add(r)}return a}function pl(e){return new Es(`DisableAtStart`,js.sceneStartTrigger(),G.fadeAction(e,0,!1))}function ml(e,t){let n=e.domElement.shadowRoot.querySelector(`link[rel='ar']`);if(n)return n;let r=document.createElement(`div`);r.classList.add(`menu`),r.classList.add(`quicklook-menu`),r.style.display=`none`,r.style.visibility=`hidden`;let i=document.createElement(`button`);i.id=`open-in-ar`,t?(i.innerText=`View in AR`,i.title=`View this scene in AR. The scene will be exported to USDZ and opened with Apple's QuickLook.`):(i.innerText=`View in AR`,i.title=`Download this scene for AR. Open the downloaded USDZ file to view it in AR using Apple's QuickLook.`),r.appendChild(i);let a=document.createElement(`a`);a.id=`needle-usdz-link`,a.style.display=`none`,a.rel=`ar`,a.href=``,a.target=`_blank`,r.appendChild(a);let o=document.createElement(`img`);return o.id=`button`,a.appendChild(o),e.domElement.shadowRoot.appendChild(r),a}var Z=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Q=D(`debugusdz`),hl=D(`debugusdzpruning`),gl=class{callToAction;checkoutTitle;checkoutSubtitle;callToActionURL};Z([E()],gl.prototype,`callToAction`,void 0),Z([E()],gl.prototype,`checkoutTitle`,void 0),Z([E()],gl.prototype,`checkoutSubtitle`,void 0),Z([E()],gl.prototype,`callToActionURL`,void 0);var $=class e extends N{static beforeExport=new Ut;static afterExport=new Ut;static beforeLODExport=new Ut;objectToExport=void 0;autoExportAnimations=!0;autoExportAudioSources=!0;exportFileName=void 0;customUsdzFile=void 0;customBranding;anchoringType=`plane`;maxTextureSize=2048;planeAnchoringAlignment=`horizontal`;interactive=!0;physics=!0;allowCreateQuicklookButton=!0;quickLookCompatible=!0;extensions=[];link;button;start(){Q&&(console.log(`USDZExporter`,this),console.log(`Debug USDZ Mode. Press 'T' to export`),window.addEventListener(`keydown`,e=>{switch(e.key){case`t`:this.exportAndOpen();break}})),this.objectToExport||=this.gameObject,!this.objectToExport?.children?.length&&!this.objectToExport?.isMesh&&(this.objectToExport=this.context.scene)}onEnable(){let e=A.supportsQuickLookAR(),t=A.isiOS()||A.isiPad();!this.button&&(Q||e||t)&&(this.allowCreateQuicklookButton&&(this.button=this.createQuicklookButton()),this.lastCallback=this.quicklookCallback.bind(this),this.link=ml(this.context,e),this.link.addEventListener(`message`,this.lastCallback)),Q&&vn(`USDZ Exporter enabled: `+this.name),document.getElementById(`open-in-ar`)?.addEventListener(`click`,this.onClickedOpenInARElement),Tn.registerExporter(this)}onDisable(){this.button?.remove(),this.link?.removeEventListener(`message`,this.lastCallback),Q&&vn(`USDZ Exporter disabled: `+this.name),document.getElementById(`open-in-ar`)?.removeEventListener(`click`,this.onClickedOpenInARElement),Tn.unregisterExporter(this)}onClickedOpenInARElement=e=>{e.preventDefault(),this.exportAndOpen()};async exportAsync(){return this.exportAndOpen()}async exportAndOpen(){let t=this.exportFileName??this.objectToExport?.name??this.name;if(t+=`-`+ho(),zn()||(t!==``&&(t+=`-`),t+=`MadeWithNeedle`),this.link||=ml(this.context,A.supportsQuickLookAR()),this.customUsdzFile)return Q&&console.log(`Exporting custom usdz`,this.customUsdzFile),this.openInQuickLook(this.customUsdzFile,t),null;if(!this.objectToExport)return console.warn(`No object to export`,this),null;e.beforeExport.invoke({exporter:this});let n=await this.export(this.objectToExport).finally(()=>{e.afterExport.invoke({exporter:this})});return n?(Q&&console.log(`USDZ generation done. Downloading as `+t),this.openInQuickLook(n,t),n):(console.error(`USDZ generation failed. Please report a bug`,this),null)}async export(e){if(!e)return console.warn(`No object to export`),null;let t=this._currentExportTasks.get(e);if(t)return t;let n=this.internalExport(e);return n instanceof Promise?(this._currentExportTasks.set(e,n),n.then(t=>(this._currentExportTasks.delete(e),t)).catch(t=>(this._currentExportTasks.delete(e),console.error(`Error during USDZ export – please report a bug!`,t),null))):n}_currentExportTasks=new Map;_previousTimeScale=1;async internalExport(t){V.start(`export-usdz`,{onProgress:e=>{this.dispatchEvent(new CustomEvent(`export-progress`,{detail:{progress:e}}))}}),V.report(`export-usdz`,{message:`Starting export`,totalSteps:40,currentStep:0}),V.report(`export-usdz`,{message:`Load progressive textures`,autoStep:5}),V.start(`export-usdz-textures`,`export-usdz`);let n=k.getComponentsInChildren(t,vc);for(let e of n)e&&e.enabled&&e.updateSprite(!0);let r=k.getComponentsInChildren(t,B),i=[],a=0;for(let t of r){for(let n of t.sharedMeshes)if(n){let r=0,o={exporter:this,type:`mesh`,object:t.gameObject,mesh:n};if(e.beforeLODExport.invoke(o),o.overrideLevel!==void 0)if(o.overrideLevel===-1){Q&&console.warn(`Skipping LOD export for mesh due to overrideLevel -1`,t.gameObject,n);continue}else o.overrideLevel>=0&&(r=o.overrideLevel,Q&&console.log(`Overriding LOD level for mesh export to level `+r+` `+n.name));let s=P.assignMeshLOD(n,r);s instanceof Promise&&i.push(new Promise((e,t)=>{s.then(()=>{a++,V.report(`export-usdz-textures`,{message:`Loaded progressive mesh`,currentStep:a,totalSteps:i.length}),e()}).catch(e=>t(e))}))}for(let n of t.sharedMaterials)if(n){let r=0,o={exporter:this,type:`texture`,object:t.gameObject,material:n};if(e.beforeLODExport.invoke(o),o.overrideLevel!==void 0)if(o.overrideLevel===-1){Q&&console.warn(`Skipping LOD assignment due to overrideLevel -1`,t.gameObject,n);continue}else o.overrideLevel>=0&&(r=o.overrideLevel,Q&&console.log(`Overriding LOD level for texture export to level `+r+` `+n.name));let s=P.assignTextureLOD(n,r);s instanceof Promise&&i.push(new Promise((e,t)=>{s.then(()=>{a++,V.report(`export-usdz-textures`,{message:`Loaded progressive texture`,currentStep:a,totalSteps:i.length}),e()}).catch(e=>t(e))}))}}Q&&vn(`Progressive Loading: `+i.length),await Promise.all(i),Q&&vn(`Progressive Loading: done`),V.end(`export-usdz-textures`);let o=di.Global.Mask;di.Global.Set(ui.AR);let s=new Ro,c=new Rs(this.quickLookCompatible),l,u=[];this.interactive&&(u.push(new $c),u.push(new Vs),globalThis.NEEDLE_USE_RAPIER&&k.getComponentsInChildren(t,vt).length>0&&(this.physics?(l=new el,u.push(l)):T()&&console.warn(`USDZExporter: Physics export is disabled, but there are active Rigidbody components in the scene. They will not be exported.`)),u.push(new cl),u.push(new ll));let d=[c,...u,...this.extensions],f={self:this,exporter:s,extensions:d,object:t};V.report(`export-usdz`,`Invoking before-export`),this.dispatchEvent(new CustomEvent(`before-export`,{detail:f})),this.applyWebARSessionRoot(),this._previousTimeScale=this.context.time.timeScale,this.context.time.timeScale=0,V.report(`export-usdz`,`auto export animations and audio sources`);let p=[];this.autoExportAnimations&&p.push(...dl(t,c));let m=d.find(e=>e.extensionName===`Audio`);m&&this.autoExportAudioSources&&p.push(...fl(t,m)),s.debug=Q,s.pruneUnusedNodes=!hl;let h=Ka.instance.objs.map(e=>e.batchedMesh);s.keepObject=e=>{let t=!0,n=k.getComponent(e,B);return n&&!n.enabled&&(t=!1),t&&h.includes(e)&&(t=!1),t&&k.getComponentInParent(e,ki)&&(t=!1),t&&k.getComponentInParent(e,En)&&(t=!1),Q&&!t&&console.log(`USDZExporter: Discarding object`,e),t},s.beforeWritingDocument=()=>{if(T()&&c&&l){let e=c.animatedRoots;for(let t of e){let e=k.getComponentsInChildren(t,vt).filter(e=>e.enabled),n=k.getComponents(t,vi).filter(e=>e.enabled&&!e.isTrigger);(e.length>0||n.length>0)&&console.error(`An animated object has physics components in its child hierarchy. This can lead to undefined behaviour due to a bug in Apple's QuickLook (FB15925487). Remove the physics components from child objects or verify that you get the expected results.`,t)}}};let g=[];this.objectToExport&&this.quickLookCompatible&&this.interactive&&this.objectToExport.traverse(e=>{e.visible||g.push(e)});let _=d.find(e=>e.extensionName===`Behaviour`);this.interactive&&_&&g.length>0&&_.addBehavior(pl(g));let ee=!0;this.quickLookCompatible&&!this.interactive&&(ee=!1),this.anchoringType!==`plane`&&this.anchoringType!==`none`&&this.anchoringType!==`image`&&this.anchoringType!==`face`&&(this.anchoringType=`plane`),this.planeAnchoringAlignment!==`horizontal`&&this.planeAnchoringAlignment!==`vertical`&&this.planeAnchoringAlignment!==`any`&&(this.planeAnchoringAlignment=`horizontal`),V.report(`export-usdz`,`Invoking exporter.parse`);let te=await s.parse(this.objectToExport,{ar:{anchoring:{type:this.anchoringType},planeAnchoring:{alignment:this.planeAnchoringAlignment}},extensions:d,quickLookCompatible:this.quickLookCompatible,maxTextureSize:this.maxTextureSize,exportInvisible:ee}),ne=new Blob([te],{type:`model/vnd.usdz+zip`});this.revertWebARSessionRoot(),this.context.time.timeScale=this._previousTimeScale,V.report(`export-usdz`,`Invoking after-export`),this.dispatchEvent(new CustomEvent(`after-export`,{detail:f}));for(let e of p)k.destroy(e);return di.Global.Set(o),V.end(`export-usdz`),ne}openInQuickLook(e,t){let n=e instanceof Blob?URL.createObjectURL(e):e,r=this.buildQuicklookOverlay();Q&&console.log(`QuickLook Overlay`,r);let i=r.callToAction?encodeURIComponent(r.callToAction):``,a=r.checkoutTitle?encodeURIComponent(r.checkoutTitle):``,o=r.checkoutSubtitle?encodeURIComponent(r.checkoutSubtitle):``;this.link.href=n+`#callToAction=${i}&checkoutTitle=${a}&checkoutSubtitle=${o}&callToActionURL=${r.callToActionURL}`,this.lastCallback||(this.lastCallback=this.quicklookCallback.bind(this),this.link.addEventListener(`message`,this.lastCallback)),this.link.download=t+`.usdz`,this.link.click()}download(t,n){e.save(t,n)}static save(e,t){let n=document.createElement(`a`);n.style.display=`none`,document.body.appendChild(n),typeof e==`string`?n.href=e:n.href=URL.createObjectURL(e),n.download=t,n.click(),n.remove()}lastCallback;quicklookCallback(e){if(e?.data==`_apple_ar_quicklook_button_tapped`){Q&&kn(`Quicklook closed via call to action button`);var t=new CustomEvent(`quicklook-button-tapped`,{detail:this});if(this.dispatchEvent(t),!t.defaultPrevented){let e=new URLSearchParams(this.link.href);if(e){let t=e.get(`callToActionURL`);Q&&vn(`Quicklook url: `+t),t&&(zn()?globalThis.open(t,`_blank`):console.warn(`Quicklook closed: custom redirects require a Needle Engine Pro license: https://needle.tools/pricing`,t))}}}}buildQuicklookOverlay(){let e={};return this.customBranding&&Object.assign(e,this.customBranding),zn()||(console.log(`Custom Quicklook banner text requires pro license: https://needle.tools/pricing`),e.callToAction=`Close`,e.checkoutTitle=`🌵 Made with Needle`,e.checkoutSubtitle=`_`),(e.callToAction?.length||e.checkoutTitle?.length||e.checkoutSubtitle?.length)&&(e.callToAction?.length||(e.callToAction=`\0`),e.checkoutTitle?.length||(e.checkoutTitle=`\0`),e.checkoutSubtitle?.length||(e.checkoutSubtitle=`\0`)),this.dispatchEvent(new CustomEvent(`quicklook-overlay`,{detail:e})),e}static invertForwardMatrix=new b().makeRotationY(Math.PI);static invertForwardQuaternion=new Ue().setFromEuler(new ze(0,Math.PI,0));_rootSessionRootWasAppliedTo=null;_rootPositionBeforeExport=new r;_rootRotationBeforeExport=new Ue;_rootScaleBeforeExport=new r;getARScaleAndTarget(){if(!this.objectToExport)return{scale:1,_invertForward:!1,target:this.gameObject,sessionRoot:null};let e=k.findObjectOfType(X),t=k.getComponentInParent(this.objectToExport,xc);t||=k.getComponentInChildren(this.objectToExport,xc);let n=1,r=!1,i=this.objectToExport;return e?n=e.arScale:t&&(n=t.arScale,r=t.invertForward),{scale:1/n,_invertForward:r,target:i,sessionRoot:t?.gameObject??null}}applyWebARSessionRoot(){if(!this.objectToExport)return;let{scale:t,_invertForward:n,target:r,sessionRoot:i}=this.getARScaleAndTarget(),a=i?.matrixWorld.clone().invert();this._rootSessionRootWasAppliedTo=r,this._rootPositionBeforeExport.copy(r.position),this._rootRotationBeforeExport.copy(r.quaternion),this._rootScaleBeforeExport.copy(r.scale),r.scale.multiplyScalar(t),n&&r.quaternion.multiply(e.invertForwardQuaternion),r.updateMatrix(),r.updateMatrixWorld(!0),i&&a&&r.matrix.premultiply(a)}revertWebARSessionRoot(){if(!this.objectToExport||!this._rootSessionRootWasAppliedTo)return;let e=this._rootSessionRootWasAppliedTo;e.position.copy(this._rootPositionBeforeExport),e.quaternion.copy(this._rootRotationBeforeExport),e.scale.copy(this._rootScaleBeforeExport),e.updateMatrix(),e.updateMatrixWorld(!0),this._rootSessionRootWasAppliedTo=null}createQuicklookButton(){let e=sc.getOrCreate().createQuicklookButton();return e.parentNode||this.context.menu.appendChild(e),e}};Z([E(S)],$.prototype,`objectToExport`,void 0),Z([E()],$.prototype,`autoExportAnimations`,void 0),Z([E()],$.prototype,`autoExportAudioSources`,void 0),Z([E()],$.prototype,`exportFileName`,void 0),Z([E(URL)],$.prototype,`customUsdzFile`,void 0),Z([E(gl)],$.prototype,`customBranding`,void 0),Z([E()],$.prototype,`anchoringType`,void 0),Z([E()],$.prototype,`maxTextureSize`,void 0),Z([E()],$.prototype,`planeAnchoringAlignment`,void 0),Z([E()],$.prototype,`interactive`,void 0),Z([E()],$.prototype,`physics`,void 0),Z([E()],$.prototype,`allowCreateQuicklookButton`,void 0),Z([E()],$.prototype,`quickLookCompatible`,void 0),nc({find:()=>Zt($),create:()=>new $});var _l=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vl=class extends N{objectBounds=!1;color;isGizmo=!0;_gizmoObject=null;_boxHelper=null;onEnable(){this.isGizmo&&!yn||(this._gizmoObject||(this.objectBounds?this._gizmoObject=new ge(this.gameObject,this.color??16776960):(this.objectBounds=!1,this._gizmoObject=pn(this.color??16776960))),this.objectBounds?(this.scene.add(this._gizmoObject),this._boxHelper=this._gizmoObject,this.startCoroutine(this.syncObjectBounds(),Wn.OnBeforeRender)):this.gameObject.add(this._gizmoObject))}onDisable(){this._gizmoObject&&this.gameObject.remove(this._gizmoObject)}*syncObjectBounds(){for(;this._boxHelper;)this._boxHelper?.update(),yield}};_l([E()],vl.prototype,`objectBounds`,void 0),_l([E(n)],vl.prototype,`color`,void 0),_l([E()],vl.prototype,`isGizmo`,void 0);var yl=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bl=class extends N{get activeAndEnabled(){return!0}side=`none`;controller=!0;hands=!1;controlVisibility=!0;useGripSpace=!1;resetTransformAfterXRSession=!0;_startPosition=new r;_startRotation=new Ue;_startScale=new r;onEnterXR(e){this._startPosition.copy(this.gameObject.position),this._startRotation.copy(this.gameObject.quaternion),this._startScale.copy(this.gameObject.scale)}onUpdateXR(e){if(!this.enabled)return;let t=e.xr.getController(this.side);if(t){if(t.hand&&!this.hands){this.controlVisibility&&(this.gameObject.visible=!1);return}else if(!this.controller){this.controlVisibility&&(this.gameObject.visible=!1);return}this.controlVisibility&&(this.gameObject.visible=!0),this.useGripSpace||t.targetRayMode===`transient-pointer`?(this.gameObject.worldPosition=t.gripWorldPosition,this.gameObject.worldQuaternion=t.gripWorldQuaternion,this.gameObject.worldScale=wn(t.xr.rigScale,t.xr.rigScale,t.xr.rigScale).multiply(this._startScale)):(this.gameObject.worldPosition=t.rayWorldPosition,this.gameObject.worldQuaternion=t.rayWorldQuaternion,this.gameObject.worldScale=wn(t.xr.rigScale,t.xr.rigScale,t.xr.rigScale).multiply(this._startScale))}}onLeaveXR(e){this.resetTransformAfterXRSession&&(this.gameObject.position.copy(this._startPosition),this.gameObject.quaternion.copy(this._startRotation),this.gameObject.scale.copy(this._startScale))}};yl([E()],bl.prototype,`side`,void 0),yl([E()],bl.prototype,`controller`,void 0),yl([E()],bl.prototype,`hands`,void 0),yl([E()],bl.prototype,`controlVisibility`,void 0),yl([E()],bl.prototype,`useGripSpace`,void 0),yl([E()],bl.prototype,`resetTransformAfterXRSession`,void 0);function xl(e,t){let n=e.xr.getFrame();if(!n)return console.warn(`No XRFrame available`),!1;let r=n.session.enabledFeatures;if(r&&!r.some(e=>e===`camera-access`))return console.error(`No camera feed available - please request the 'camera-access' feature before starting WebXR or add the ARCameraBackground component to your scene. + +Example to request camera-access in global scope: +NeedleXRSession.onSessionRequestStart(evt => { + evt.init.optionalFeatures = evt.init.optionalFeatures || []; + evt.init.optionalFeatures.push('camera-access'); +}); +`),T()&&Nn(`No camera feed available - please request the 'camera-access' feature before starting WebXR or add the ARCameraBackground component to your scene`),!1;let i=n.getViewerPose(e.xr.getReferenceSpace());if(i)for(let r of i.views)if(`camera`in r&&r.camera){let i=e.xr.getBinding();if(i||=new XRWebGLBinding(n.session,e.getContext()),i){let n=null;if(`getCameraImage`in i){Cl(e,t);let a=e.properties.get(t);if(a)return n=i.getCameraImage(r.camera),a.__webglTexture=n,!0;console.warn(`No texture properties found for target texture`)}}else console.error(r.camera,e.xr)}else console.error(`NO CAMERA IN VIEW`);else console.error(e.xr.getReferenceSpace(),n);return!1}var Sl=new WeakMap;function Cl(e,t){let n=Sl.get(t)||new WeakSet;if(n.has(e))return;n.add(e),Sl.set(t,n),console.debug(`Initialize texture for camera feed`);let r=new v,i=new He,a=new ne;a.add(new x(i,r));let o=new be;r.map=t,e.render(a,o)}function wl(e,t,n,r=`image/webp`,i){return Tl({context:e,width:t,height:n,mimeType:r,camera:i})}function Tl(e){e||={};let{transparent:t=!1}=e,{mimeType:r,context:i,width:a,height:o,camera:s}=e;if(!i&&(i=Ht.Current,!i))return console.error(`Can not save screenshot: No needle-engine context found or provided.`),null;if(!s&&(s=i.mainCamera,!s))return console.error(`No camera found`),null;let c=i.renderer,l=c.xr.enabled&&c.xr.isPresenting;if(l&&i.currentFrameEvent!=Wn.EarlyUpdate)return console.warn(`Screenshot: defer to access XR frame`),new Promise(t=>{st(n=>{t(Tl(e))},Wn.EarlyUpdate,{once:!0})});let d=c.domElement,f=d.width,p=d.height;a||=f,o||=p;let m=a,h=o,g=window.devicePixelRatio||1,_=1;_=i.devicePixelRatio===`auto`||i.devicePixelRatio===`manual`?1:i.devicePixelRatio/window.devicePixelRatio,g*=_,a/=g,o/=g,a=Math.floor(a),o=Math.floor(o),c.xr.isPresenting&&c.xr.getFrame();let ee=c.xr.enabled;c.xr.enabled=!1,c.xr.isPresenting=!1,d.style.width=`${a}px`,d.style.height=`${o}px`;let te=c.getRenderTarget(),ne=c.getClearColor(new n),v=c.getClearAlpha(),re=i.scene.background,ie=`aspect`in s?s.aspect:null;try{let n=e.render_events!==!1,f=[];n&&(at(i.scene,B,f),f.forEach(e=>{if(e?.onBeforeRender(),e.isInstancingActive&&e.instances)for(let t=0;te.onAfterRender()),!r&&`download_filename`in e&&e.download_filename)switch(e.download_filename.split(`.`).pop()?.toLowerCase()){case`png`:r=`image/png`;break;case`jpg`:case`jpeg`:r=`image/jpeg`;break;case`webp`:r=`image/webp`;break}if(t&&e.trim===!0){let e=El(_);e&&(_=e)}if(`type`in e){if(e.type===`texture`)return g?(e.target&&(e.target.image=g?.texture.image,e.target.needsUpdate=!0),g.texture.offset.set(0,-1),g.texture.needsUpdate=!0,g.texture):(console.error(`No target texture found`),null);if(e.type===`blob`)return new Promise((e,t)=>{_.toBlob(t=>{e(t)},r)});if(e.type===`share`)return new Promise((t,n)=>{_.toBlob(n=>{if(n&&`share`in navigator){let i=`file_type`in e&&e.file_type||r;r||(i=`image/png`);let a=i?.split(`/`)[1]||`png`,o=new File([n],`filename`in e&&e.filename||`screenshot.${a}`,{type:i});return navigator.share({title:`title`in e?e.title:void 0,text:`text`in e?e.text:void 0,url:`url`in e?e.url:void 0,files:[o]}).catch(e=>{console.warn(`User cancelled share`,e.message)}).finally(()=>{t({blob:n,shared:!0})})}return{blob:n,shared:!1}},r)})}let ee=_.toDataURL(r);if(`download_filename`in e&&e.download_filename){let t=e.download_filename;if(A.isMobileDevice()&&typeof window<`u`){let e=t+`_screenshots`,n=t.split(`.`),r=n.pop()?.toLowerCase(),i=0;localStorage.getItem(e)&&(i=parseInt(sessionStorage.getItem(e)||`0`)),i>0&&(t=`${n.join()}-${i}.${r}`),i+=1,sessionStorage.setItem(e,i.toString())}Ol(ee,t)}return ee}finally{c.setRenderTarget(te),i.scene.background=re,c.setSize(f,p,!1),c.setClearColor(ne,v),ie!=null&&s instanceof be&&(s.aspect=ie,s.updateProjectionMatrix()),c.xr.enabled=ee,c.xr.isPresenting=l,l||i.updateSize(!0)}return null}function El(e){if(!(`document`in globalThis))return null;let t=document.createElement(`canvas`);t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);if(!n)return null;n.drawImage(e,0,0);let r=t.width,i=t.height,a=n.getImageData(0,0,r,i).data,o=i,s=r,c=0,l=0;for(let e=0;el&&(l=t),ec&&(c=e));let u=l-s+1,d=c-o+1,f=document.createElement(`canvas`),p=f.getContext(`2d`);return p?(f.width=u,f.height=d,p.drawImage(t,s,o,u,d,0,0,u,d),f):null}var Dl=null;function Ol(e,t){if(e){if(!e.startsWith(`data:image`)){console.error(`Can not save image: Data url is not an image`,e);return}Dl||=document.createElement(`a`),Dl.href=e,Dl.download=t,Dl.click()}}var kl;(function(e){let t=null,n=null,r=null,i=null,a=null;function o(e){let{renderer:o,width:s,height:l}=e,d=o.xr.enabled,f=o.getRenderTarget(),p=o.autoClear,m=s,h=l,g=s/l;(!r||r.width!==m||r.height!==h)&&(r??=new u(m,h,{colorSpace:ue}),r.width=m,r.height=h,r.samples=4,r.texture.repeat.y=-1,r.texture.offset.y=1),(!a||a.width!==m||a.height!==h)&&(a=document.createElement(`canvas`),a.width=m,a.height=h,a.style.position=`fixed`,a.style.top=`0px`,a.style.right=`0px`,a.style.width=`300px`,a.style.height=`${300/g}px`,a.style.zIndex=`1000`,a.style.pointerEvents=`none`,a.style.opacity=`1.0`,a.style.willChange=`contents`),t||=c({defines:{DECODE_VIDEO_TEXTURE:!0}}),n||=c(),i||=new xe,o.xr.updateCamera(e.camera),o.xr.enabled=!1,o.autoClear=!1,o.clear(),o.setSize(m,h),o.setRenderTarget(r),xl(e.renderer,i)||console.error(`Could not update texture from XR frame`);let _=k.findObjectOfType(Ml);return _?_.setTexture(i):(t.setTexture(i),o.render(t,e.camera)),o.clearDepth(),o.setSize(m,h),o.render(e.scene,e.camera),o.setRenderTarget(null),n.setTexture(r.texture),o.render(n,e.camera),a.getContext(`2d`,{alpha:!1}).drawImage(o.domElement,0,0,a.width,a.height),o.setRenderTarget(f),o.xr.enabled=d,o.autoClear=p,a}e.compositeWithCameraImage=o;function c(e){let t=e?.material||new Re({name:`BackgroundMaterial`,uniforms:s.clone(ye.background.uniforms),vertexShader:ye.background.vertexShader,fragmentShader:` +uniform sampler2D t2D; +varying vec2 vUv; + +void main() { + + vec4 texColor = texture2D( t2D, vUv ); + + #ifdef DECODE_VIDEO_TEXTURE + + // inline sRGB decode (TODO: Remove this code when https://crbug.com/1256340 is solved) + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + + #endif + + gl_FragColor = texColor; + #include + #include +} +`,defines:e?.defines,side:0,depthTest:!1,depthWrite:!1,fog:!1});Object.defineProperty(t,`map`,{get:function(){return this.threeTexture}});let n=new x(new He(2,2),t);return Qe(n,!1),n.geometry.deleteAttribute(`normal`),n.renderOrder=-1e6,n.setTexture=function(e){t.uniforms.t2D.value=e},n}e.makeFullscreenPlane=c})(kl||={});var Al=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jl=D(`debugarcamera`),Ml=class extends N{onBeforeXR(e,t){e===`immersive-ar`&&(t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.push(`camera-access`),jl&&console.warn(`Requesting camera-access`))}onEnterXR(e){e.xr.mode===`immersive-ar`&&(this.backgroundPlane&&(this.context.scene.add(this.backgroundPlane),this.backgroundPlane.visible=!1),this.backgroundPlane&&this.context.scene.add(this.backgroundPlane),this.context.pre_render_callbacks.push(this.preRender))}onLeaveXR(e){this.backgroundPlane&&this.backgroundPlane.removeFromParent();let t=this.context.pre_render_callbacks.indexOf(this.preRender);t>=0&&this.context.pre_render_callbacks.splice(t,1)}backgroundTint=new tn(1,1,1,1);get background(){return this.backgroundPlane}backgroundPlane;threeTexture;forceTextureInitialization=function(){let e=new v,t=new He,n=new ne;n.add(new x(t,e));let r=new be;return function(t,i){e.map=i,t.render(n,r),jl&&console.warn(`Force texture initialization`)}}();preRender=()=>{if(!(!this||!this.gameObject)&&this.context.renderer.xr.getFrame()){if(!this.threeTexture&&this.context.renderer&&(this.threeTexture=new xe,this.forceTextureInitialization(this.context.renderer,this.threeTexture)),this.backgroundPlane===void 0){let e=this.backgroundTint;this.backgroundPlane=kl.makeFullscreenPlane({material:new Re({name:`BackgroundMaterial`,uniforms:{...s.clone(ye.background.uniforms),tint:{value:new C(e.r,e.g,e.b,e.a)}},vertexShader:ye.background.vertexShader,fragmentShader:Nl,side:2,depthTest:!1,depthWrite:!1,fog:!1})})}this.backgroundPlane.parent!==this.scene&&this.scene.add(this.backgroundPlane),this.backgroundPlane.material instanceof Re&&this.backgroundPlane.material.uniforms.tint.value.set(this.backgroundTint.r,this.backgroundTint.g,this.backgroundTint.b,this.backgroundTint.a),this.updateFromFrame()}};onBeforeRender(e){this.updateFromFrame()}updateFromFrame(){this.threeTexture&&this.context.xr?.mode===`immersive-ar`&&(xl(this.context.renderer,this.threeTexture),this.setTexture(this.threeTexture))}setTexture(e){this.backgroundPlane&&(this.threeTexture=e,this.backgroundPlane.setTexture(this.threeTexture),this.backgroundPlane.visible=!0)}};Al([E(tn)],Ml.prototype,`backgroundTint`,void 0);var Nl=` +uniform sampler2D t2D; +uniform vec4 tint; + +varying vec2 vUv; + +void main() { + + vec4 texColor = texture2D( t2D, vUv ); + texColor.w = 1.0; + + // inline sRGB decode + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + + gl_FragColor = texColor * tint; + + #include + #include +} +`,Pl=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Fl=D(`debugimagetracking`),Il=class e{get url(){return this._trackedImage.image??``}get widthInMeters(){return this._trackedImage.widthInMeters??void 0}get bitmap(){return this._bitmap}get model(){return this._trackedImage}measuredSize;state;getPosition(e){return this.ensureTransformData(),e.copy(this._position),e}getQuaternion(e){return this.ensureTransformData(),e.copy(this._rotation),e}applyToObject(e,t=void 0){this.ensureTransformData();let n=e.position.distanceToSquared(this._position)/.05+e.quaternion.angleTo(this._rotation)/.05;t&&(t*=Math.max(1,n)),t===void 0||t>=1?(e.position.copy(this._position),e.quaternion.copy(this._rotation)):(t=Math.max(0,Math.min(1,t)),e.position.lerp(this._position,t),e.quaternion.slerp(this._rotation,t))}static _positionBuffer=new qe(()=>new r,20);static _rotationBuffer=new qe(()=>new Ue,20);_position;_rotation;ensureTransformData(){if(!this._position){this._position=e._positionBuffer.get(),this._rotation=e._rotationBuffer.get();let t=this._pose.transform,n=j.active.convertSpace(t);this._position.copy(n?.position),this._rotation.copy(n?.quaternion)}}_trackingComponent;_trackedImage;_bitmap;_pose;constructor(e,t,n,r,i,a){this._trackingComponent=e,this._trackedImage=t,this._bitmap=n,this.measuredSize=r,this.state=i,this._pose=a}},Ll=class{constructor(e){this.image=e.url,this.widthInMeters=e.widthInMeters,e.object instanceof S?this.object=new w({asset:e.object}):this.object=e.object,e.createObjectInstance!==void 0&&(this.createObjectInstance=e.createObjectInstance),e.imageDoesNotMove!==void 0&&(this.imageDoesNotMove=e.imageDoesNotMove),e.hideWhenTrackingIsLost!==void 0&&(this.hideWhenTrackingIsLost=e.hideWhenTrackingIsLost)}image;widthInMeters=.25;object;createObjectInstance=!1;imageDoesNotMove=!1;hideWhenTrackingIsLost=!0;getNameFromUrl(){if(this.image){let e=this.image.split(`/`);return e[e.length-1]}return null}};Pl([E(URL)],Ll.prototype,`image`,void 0),Pl([E()],Ll.prototype,`widthInMeters`,void 0),Pl([E(w)],Ll.prototype,`object`,void 0),Pl([E()],Ll.prototype,`createObjectInstance`,void 0),Pl([E()],Ll.prototype,`imageDoesNotMove`,void 0),Pl([E()],Ll.prototype,`hideWhenTrackingIsLost`,void 0);var Rl=class{exporter;component;isImageTrackingExtension=!0;get extensionName(){return`image-tracking`}constructor(e,t){this.exporter=e,this.component=t,Fl&&console.log(this),this.exporter.anchoringType=`image`}shouldExport=!0;filename=null;imageModel=null;onBeforeBuildDocument(e){this.shouldExport=this.exporter.extensions.filter(e=>{let t=e;return t.isImageTrackingExtension&&t.component.activeAndEnabled&&t.component.trackedImages?.length>0}).indexOf(this)===0,this.shouldExport&&this.component.trackedImages?.length>1&&(Fl||T())&&(kn(`USDZ: Only one tracked image is supported.`),console.warn(`USDZ: Only one tracked image is supported. Will choose the first one in the trackedImages list`))}onAfterHierarchy(e,t){if(!this.shouldExport)return;let n=A.getiOSVersion(),r=(n?parseInt(n.split(`.`)[0]):18)>=18?1:100;t.beginBlock(`def Preliminary_ReferenceImage "AnchoringReferenceImage"`),t.appendLine(`uniform asset image = @image_tracking/`+this.filename+`@`),t.appendLine(`uniform double physicalWidth = `+(this.imageModel.widthInMeters*r).toFixed(8)),t.closeBlock()}async onAfterSerialize(e){if(!this.shouldExport)return;let t=this.imageModel,n=await(await(await $o(Bl.get(t.image))).convertToBlob({type:`image/png`})).arrayBuffer();e.files[`image_tracking/`+this.filename]=new Uint8Array(n)}onExportObject(e,t,n){if(!this.shouldExport)return;let i=this.component;if(!i||!i.trackedImages?.length||!i.activeAndEnabled)return;let a=i.trackedImages[0];if(a.object?.asset===e){this.imageModel=a,this.filename=a.getNameFromUrl()||`marker.png`;let{scale:n,target:i}=this.exporter.getARScaleAndTarget(),o=e,s=new b;if(e!==i)for(;o&&o.parent&&o.parent!==i;)o=o.parent,s.premultiply(o.matrix);let c=s.clone().invert();t.setMatrix(c.scale(new r(n,n,n)))}}},zl=class extends N{setPrimaryImage(e){let t=this.trackedImages.indexOf(e);if(t>=0){let n=this.trackedImages[0];n!==e&&(this.trackedImages[0]=e,this.trackedImages[t]=n)}else console.warn(`[WebXRImageTracking] Can not set primary: image not found in 'trackedImages' array ${e.image}`)}addImage(e,t=!1){this.trackedImages.includes(e)||(this.trackedImages.push(e),Hl(e.image)),t&&this.setPrimaryImage(e)}trackedImages=[];smooth=!0;trackedImageIndexMap=new Map;get supported(){return this._supported}_supported=!0;awake(){if(Fl&&console.log(this),this.trackedImages)for(let e of this.trackedImages)e.image&&Hl(e.image)}onEnable(){$.beforeExport.addEventListener(this.onBeforeUSDZExport)}onDisable(){$.beforeExport.removeEventListener(this.onBeforeUSDZExport)}onBeforeUSDZExport=e=>{this.activeAndEnabled&&this.trackedImages?.length&&e.exporter.extensions.push(new Rl(e.exporter,this))};onBeforeXR(e,t){if(this.trackedImages){t.optionalFeatures=t.optionalFeatures||[],t.optionalFeatures.includes(`image-tracking`)||t.optionalFeatures.push(`image-tracking`),t.trackedImages||=[];for(let e of this.trackedImages)if(e.image?.length&&e.widthInMeters>0){let n=Bl.get(e.image);n&&(this.trackedImageIndexMap.set(t.trackedImages.length,e),t.trackedImages.push({image:n,widthInMeters:e.widthInMeters}))}}}onEnterXR(e){if(this.trackedImages){for(let e of this.trackedImages)if(e.object?.asset){let t=e.object.asset;t.userData||={};let n={visible:t.visible,parent:t.parent,matrix:t.matrix.clone()};t.userData[`image-tracking`]=n}}for(let e of this.imageToObjectMap.values())e.frames=0}onLeaveXR(e){if(!this.supported&&A.isAndroidDevice()&&kn(this.webXRIncubationsWarning),this.trackedImages){for(let e of this.trackedImages)if(e.object?.asset){let t=e.object.asset;if(t.userData){let e=t.userData[`image-tracking`];e&&(t.visible=e.visible,e.parent?.add(t),t.matrix.copy(e.matrix),t.matrix.decompose(t.position,t.quaternion,t.scale)),delete t.userData[`image-tracking`]}}}}imageToObjectMap=new Map;currentImages=[];webXRIncubationsWarning=`Image tracking is currently not supported on this device. On Chrome for Android, you can enable the chrome://flags/#webxr-incubations flag.`;onUpdateXR(e){this.currentImages.length=0;let t=e.xr.frame;if(!t)return;if(!(`getImageTrackingResults`in t)){this.didPrintWarning||(this.didPrintWarning=!0,console.log(this.webXRIncubationsWarning)),this._supported=!1,kn(this.webXRIncubationsWarning);return}else if(e.xr.session.enabledFeatures?.includes(`image-tracking`)===!1)return;else if(t.session&&typeof t.getImageTrackingResults==`function`){let e=t.getImageTrackingResults();if(e.length>0){let n=this.context.renderer.xr.getReferenceSpace();if(n){for(let r of e){let e=r.trackingState,i=r.index,a=this.trackedImageIndexMap.get(i);if(a){let i=t.getPose(r.imageSpace,n),o=new Il(this,a,r.image,r.measuredSize,e,i);this.currentImages.push(o)}else Fl&&console.warn(`No tracked image for index`,i)}if(this.currentImages.length>0)try{this.dispatchEvent(new CustomEvent(`image-tracking`,{detail:this.currentImages})),this.onImageTrackingUpdate(this.currentImages)}catch(e){console.error(e)}}}}let n=1e3;for(let[e,t]of this.imageToObjectMap){if(!t.object||!e||e.hideWhenTrackingIsLost===!1)continue;let r=!1;for(let i of this.currentImages)if(i.model===e){let a=Date.now()-t.lastTrackingTime;if(Fl&&vn(e.image+`, State: `+i.state+(e.imageDoesNotMove?` (static)`:``)+(a<=n?` (hysteresis)`:``)),e.imageDoesNotMove||i.state===`tracked`||a<=n){r=!0;break}}r||k.setActive(t.object,!1)}}onImageTrackingUpdate=e=>{let t=j.active;if(t)for(let n of e){let e=n.model,r=n.state===`tracked`;if(!e.object)continue;let i=this.imageToObjectMap.get(e);if(i===void 0)i={object:null,frames:0,lastTrackingTime:Date.now()},this.imageToObjectMap.set(e,i),e.object.loadAssetAsync().then(r=>{if(e.createObjectInstance&&r&&(r=k.instantiate(r)),r){i.object=r;for(let e of r.getComponentsInChildren(B))e.setInstancingEnabled(!1);t.rig?(t.rig.gameObject.add(r),n.applyToObject(r),r.activeSelf||k.setActive(r,!0)):console.warn(`XRImageTracking: missing XRRig`)}});else{if(i.frames++,r&&(i.lastTrackingTime=Date.now()),e.imageDoesNotMove&&i.frames>10||!i.object)continue;t.rig&&(t.rig.gameObject.add(i.object),n.applyToObject(i.object,this.smooth?this.context.time.deltaTimeUnscaled*3:void 0),i.object.activeSelf||k.setActive(i.object,!0))}}}};Pl([E(Ll)],zl.prototype,`trackedImages`,void 0),Pl([E()],zl.prototype,`smooth`,void 0);var Bl=new Map,Vl=new Map;async function Hl(e){if(Bl.has(e))return Vl.has(e)?Vl.get(e):Promise.resolve(!0);let t=new Promise(t=>{Bl.set(e,null);let n=document.createElement(`img`);n.src=e,n.addEventListener(`load`,async()=>{let r=await createImageBitmap(n);Bl.set(e,r),t(!0)})});return Vl.set(e,t),t.finally(()=>{Vl.delete(e)}),t}var Ul=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Wl=D(`debugplanetracking`),Gl=class extends N{dataTemplate;occluder=!0;initiateRoomCaptureIfNoData=!0;usePlaneData=!0;useMeshData=!0;runInVR=!0;get trackedPlanes(){return this._allPlanes.values()}get trackedMeshes(){return this._allMeshes.values()}onBeforeXR(e,t){e===`immersive-vr`&&!this.runInVR||(t.optionalFeatures=t.optionalFeatures||[],this.usePlaneData&&!t.optionalFeatures.includes(`plane-detection`)&&t.optionalFeatures.push(`plane-detection`),this.useMeshData&&!t.optionalFeatures.includes(`mesh-detection`)&&t.optionalFeatures.push(`mesh-detection`))}onEnterXR(e){for(let e of this._allPlanes.keys())this.removeData(e,this._allPlanes);for(let e of this._allMeshes.keys())this.removeData(e,this._allMeshes)}onLeaveXR(e){for(let e of this._allPlanes.keys())this.removeData(e,this._allPlanes);for(let e of this._allMeshes.keys())this.removeData(e,this._allMeshes)}onUpdateXR(e){if(!this.runInVR&&e.xr.isVR)return;let t=e.xr.rig;if(!t){console.warn(`No XR rig found, cannot parent tracked planes to it`);return}let n=e.xr.frame;if(!this.context.renderer.xr.getReferenceSpace())return;let r=n.detectedPlanes,i=n.detectedMeshes,a=r!==void 0&&r.size>0,o=i!==void 0&&i.size>0;if(this.initiateRoomCaptureIfNoData&&(!a&&!o&&this.firstTimeNoPlanesDetected<-10&&(this.firstTimeNoPlanesDetected=Date.now()),(a||o)&&(this.firstTimeNoPlanesDetected=-1),this.firstTimeNoPlanesDetected>0&&Date.now()-this.firstTimeNoPlanesDetected>2500&&`initiateRoomCapture`in n.session&&(n.session.initiateRoomCapture(),this.firstTimeNoPlanesDetected=-1)),r!==void 0&&this.processFrameData(e.xr,t.gameObject,n,r,this._allPlanes),i!==void 0&&this.processFrameData(e.xr,t.gameObject,n,i,this._allMeshes),Wl){let e=this.context.mainCameraComponent.gameObject.worldPosition;for(let t of this._allPlanes.values())!t.mesh||!t.mesh.visible||(this.bounds.makeEmpty(),t.mesh.traverse(e=>{e instanceof x&&this.bounds.expandByObject(e)}),this.bounds.getCenter(this.center),this.labelOffset.copy(e).sub(this.center).normalize().multiplyScalar(.1),Ln.DrawLabel(this.center.add(this.labelOffset),(t.xrData.semanticLabel||`plane`).toUpperCase()+` +`+t.xrData.lastChangedTime.toFixed(2),.02))}}bounds=new de;center=new r;labelOffset=new r;removeData(e,t){let n=t.get(e);if(!n)return;t.delete(e),Wl&&console.log(`Plane no longer tracked, id=`+n.id),n.mesh&&(n.mesh.removeFromParent(),n.mesh.traverse(e=>{let t=e.userData.normalsHelper;t?(t.dispose(),t.removeFromParent()):Wl&&console.warn(`No normals helper found for mesh`,n.mesh)}),dn(n.mesh,!0,!0));let r=new CustomEvent(`plane-tracking`,{detail:{type:`plane-removed`,context:n}});this.dispatchEvent(r)}_dataId=1;_allPlanes=new Map;_allMeshes=new Map;firstTimeNoPlanesDetected=-100;makeOccluder=(e,t,n=!1)=>{if(t){if(t instanceof Array){for(let r of t)this.makeOccluder(e,r,n);return}!n&&!t.name.toLowerCase().includes(`occlu`)||(t.colorWrite=!1,t.depthTest=!0,t.depthWrite=!0,t.transparent=!1,t.polygonOffset=!0,t.polygonOffsetFactor=1,t.polygonOffsetUnits=.1,e.renderOrder=-1e3)}};processFrameData(e,t,n,r,i){let a=this.context.renderer.xr.getReferenceSpace();if(a){for(let e of i.keys())r.has(e)||this.removeData(e,i);for(let e of r){let r=`planeSpace`in e?e.planeSpace:`meshSpace`in e?e.meshSpace:void 0;if(!r)continue;let o=n.getPose(r,a),s;if(i.has(e)){let t=i.get(e);if(s=t.mesh,t.timestamp{if(!(e instanceof x))return;let t=e.userData.normalsHelper;t&&t.update()}))}let n=new CustomEvent(`plane-tracking`,{detail:{type:`plane-updated`,context:t}});this.dispatchEvent(n)}}else{if(!this.dataTemplate){let e=new x;Wl?e.material=new Le:this.occluder?(e.material=new v,this.makeOccluder(e,e.material,!0)):e.material=new v({wireframe:!0,opacity:.5,transparent:!0,color:3355443}),this.dataTemplate=new w(``,``,e)}if(!this.dataTemplate.asset)this.dataTemplate.loadAssetAsync();else{let n=k.instantiate(this.dataTemplate.asset);if(n.name=`xr-tracked-plane`,s=n,Dt(n,!1),n instanceof x)Nt(n.geometry),n.geometry=this.createGeometry(e),this.makeOccluder(n,n.material,this.occluder&&!this.dataTemplate);else if(n instanceof ve)for(let t of n.children)t instanceof x&&(Nt(t.geometry),t.geometry=this.createGeometry(e),this.makeOccluder(t,t.material,this.occluder&&!this.dataTemplate));let r=n.getComponent(xi);if(r){let t=n;r.sharedMesh=t,r.convex=this.checkIfContextShouldBeConvex(t,e),r.onDisable(),r.onEnable()}n.matrixAutoUpdate=!1,n.matrixWorldNeedsUpdate=!0,t.add(n);let a={id:this._dataId++,xrData:e,timestamp:e.lastChangedTime,mesh:n,collider:r};i.set(e,a),Wl&&console.log(`New plane detected, id=`+a.id,a,{hasCollider:!!r,isGroup:n instanceof ve});try{let e=new CustomEvent(`plane-tracking`,{detail:{type:`plane-added`,context:a}});this.dispatchEvent(e)}catch(e){console.error(e)}}}s&&(o?(s.visible=!0,s.matrix.fromArray(o.transform.matrix),s.matrix.premultiply(this._flipForwardMatrix)):s.visible=!1,Wl&&s.traverse(e=>{if(e instanceof x)if(e.userData.normalsHelper)e.userData.normalsHelper.update();else{let t=new pr(e,.05,255);t.layers.disableAll(),t.layers.set(2),this.context.scene.add(t),e.userData.normalsHelper=t}}))}}}_flipForwardMatrix=new b().makeRotationY(Math.PI);checkIfContextShouldBeConvex(e,t){if(!e)return!0;if(e){let n=new de;n.expandByObject(e);let i=new r;n.getSize(i);let a=!0;return i.x>2&&i.y>2&&i.z>1.5&&(a=!1),a&&`semanticLabel`in t&&t.semanticLabel===`wall`&&(a=!0),a}return!0}createGeometry(e){return`polygon`in e?this.createPlaneGeometry(e.polygon):`vertices`in e&&`indices`in e?this.createMeshGeometry(e.vertices,e.indices):new ie}_verticesCache=new Map;createMeshGeometry(e,t){let n=e.toString()+`_`+t.toString();if(this._verticesCache.has(n))return this._verticesCache.get(n);let r=new ie;r.setIndex(new Ge(t,1)),r.setAttribute(`position`,new Ge(e,3));let i=[];for(let t=0;t{n.push(e.x,e.y,e.z),i.push(e.x,e.z)});let a=new r(n[0],n[1],n[2]),o=new r(n[3],n[4],n[5]),s=new r(n[6],n[7],n[8]),c=new r,l=new r;c.subVectors(o,a),l.subVectors(s,a),c.cross(l),c.normalize();let u=[];for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ql=D(`debugwebxr`),Jl=class extends N{priority=0;get isActive(){return this.activeAndEnabled&&this.gameObject.visible}setAsActiveXRRig(){j.active?.setRigActive(this)}setPriority(e){this.priority=e}awake(){if(ql){let e=new S;e.position.y+=.5,this.gameObject.add(e);let t=e.addNewComponent(vl);t&&(t.isGizmo=!1);let n=new _e(.5);this.gameObject.add(n)}}isXRRig(){return!0}supportsXR(e){return!0}_startScale;onEnterXR(e){this._startScale=this.gameObject.scale.clone(),e.xr.addRig(this),ql&&console.log(`WebXR: add Rig`,this.name,this.priority)}onLeaveXR(e){e.xr.removeRig(this),this._startScale&&this.gameObject&&this.gameObject.scale.copy(this._startScale)}};Kl([E()],Jl.prototype,`priority`,void 0);export{Ls as $,ei as $t,kc as A,Ba as At,Ws as B,bi as Bt,Gc as C,qa as Ct,Rc as D,Va as Dt,Lc as E,Ga as Et,mc as F,ma as Ft,Js as G,gi as Gt,qs as H,vi as Ht,_c as I,oa as It,Gs as J,di as Jt,Xs as K,mi as Kt,vc as L,Hi as Lt,Ec as M,xa as Mt,Tc as N,Sa as Nt,zc as O,Wa as Ot,xc as P,ba as Pt,Rs as Q,ni as Qt,gc as R,ki as Rt,Jc as S,$a as St,Bc as T,za as Tt,Ks as U,xi as Ut,Us as V,Si as Vt,Ys as W,yi as Wt,Qs as X,oi as Xt,$s as Y,ui as Yt,Vs as Z,ai as Zt,cl as _,po as _t,Il as a,Gr as an,js as at,$c as b,B as bt,Ol as c,Br as cn,Mo as ct,bl as d,Pr as dn,Ro as dt,qr as en,K as et,vl as f,I as fn,Xo as ft,al as g,ho as gt,ll as h,_r as hn,V as ht,Ll as i,Wr as in,Ms as it,Dc as j,Ma as jt,Nc as k,Ua as kt,wl as l,zr as ln,jo as lt,$ as m,xr as mn,wo as mt,Gl as n,Zr as nn,Ns as nt,Ml as o,Qr as on,ks as ot,gl as p,Cr as pn,$o as pt,Zs as q,fi as qt,zl as r,Xr as rn,Es as rt,kl as s,Ur as sn,Ps as st,Jl as t,R as tn,G as tt,Tl as u,Ir as un,Fo as ut,il as v,oo as vt,Wc as w,Ka as wt,X as x,uo as xt,el as y,lo as yt,sc as z,Ei as zt}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine-webxr.Cp-vkXLP.js.gz b/Needle/SampleScene/dist/assets/needle-engine-webxr.Cp-vkXLP.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2cd4e52b3f603954523fe088977058e8ade87bad GIT binary patch literal 95878 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 Zl9gEE8+(R5|0b*9{|gIn-pIEu1pv_+$#4Jw literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js b/Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js new file mode 100644 index 0000000..38af785 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js @@ -0,0 +1 @@ +import{n as e}from"./rolldown-runtime.CYVBeYYp.js";var t=class{constructor(e){if(this._retries=0,!Number.isInteger(e)||e<0)throw Error(`Backoff must be a positive integer`);this.backoff=e}get retries(){return this._retries}get current(){return this.backoff}next(){return this._retries++,this.backoff}reset(){this._retries=0}},n=class{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw Error(`Base must be a positive integer or zero`);if(t!==void 0&&(!Number.isInteger(t)||t<0))throw Error(`ExpMax must be a undefined, a positive integer or zero`);this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*2**this.i}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}},r=class{constructor(e,t,n){if(this.i=0,this._retries=0,e<0)throw Error(`Initial must be a positive number or zero`);if(t<0)throw Error(`Increment must be a positive number or zero`);if(n!==void 0&&n<0)throw Error(`Max must be undefined, a positive number or zero`);if(n!==void 0&&nthis.handleEvent(o.open,e),this.handleErrorEvent=e=>this.handleEvent(o.error,e),this.handleCloseEvent=e=>this.handleEvent(o.close,e),this.handleMessageEvent=e=>this.handleEvent(o.message,e),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:n?.retry?.maxRetries,instantReconnect:n?.retry?.instantReconnect,backoff:n?.retry?.backoff},listeners:{open:[...n?.listeners?.open??[]],close:[...n?.listeners?.close??[]],error:[...n?.listeners?.error??[]],message:[...n?.listeners?.message??[]],retry:[...n?.listeners?.retry??[]],reconnect:[...n?.listeners?.reconnect??[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){let r=e=>e.listener!==t||e.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(r)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(o.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(o.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(o.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(o.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(o.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(o.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(o.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(o.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){let n=this._options.listeners[e],r=[];n.forEach(({listener:e,options:n})=>{e(this,t),(n===void 0||n.once===void 0||!n.once)&&r.push({listener:e,options:n})}),this._options.listeners[e]=r}handleEvent(e,t){switch(e){case o.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case o.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){let e={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},t=new CustomEvent(o.reconnect,{detail:e});this.dispatchEvent(o.reconnect,t),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case o.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;let e=e=>{let t=new CustomEvent(o.retry,{detail:e});this.handleEvent(o.retry,t)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}},c=class{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{maxRetries:e})}),this}get maxRetries(){return this._options?.retry?.maxRetries}withInstantReconnect(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{instantReconnect:e})}),this}get instantReconnect(){return this._options?.retry?.instantReconnect}withBackoff(e){return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},this._options?.retry),{backoff:e})}),this}get backoff(){return this._options?.retry?.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){return this._options?.buffer}onOpen(e,t){return this.addListener(o.open,e,t),this}onClose(e,t){return this.addListener(o.close,e,t),this}onError(e,t){return this.addListener(o.error,e,t),this}onMessage(e,t){return this.addListener(o.message,e,t),this}onRetry(e,t){return this.addListener(o.retry,e,t),this}onReconnect(e,t){return this.addListener(o.reconnect,e,t),this}build(){return new s(this._url,this._protocols,this._options)}addListener(e,t,n){return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:this._options?.listeners?.open??[],close:this._options?.listeners?.close??[],error:this._options?.listeners?.error??[],message:this._options?.listeners?.message??[],retry:this._options?.listeners?.retry??[],reconnect:this._options?.listeners?.reconnect??[],[e]:[...this._options?.listeners?.[e]??[],{listener:t,options:n}]}}),this}},l=e({ArrayQueue:()=>i,ConstantBackoff:()=>t,ExponentialBackoff:()=>n,LinearBackoff:()=>r,RingQueue:()=>a,Websocket:()=>s,WebsocketBuilder:()=>c,WebsocketEvent:()=>o});export{l as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js.gz b/Needle/SampleScene/dist/assets/needle-engine.BJP2NBoC.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..9728ee72ca1590218e4a72f87cca30ed55d4e3fa GIT binary patch literal 2125 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 D5X2lD literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js b/Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js new file mode 100644 index 0000000..04c9d22 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js @@ -0,0 +1 @@ +import{$ as ee,$a as te,$i as ne,$n as re,$t as ie,A as ae,Aa as e,Ai as t,An as n,Ao as r,Ar as i,At as a,B as o,Ba as s,Bn as c,Bo as l,Br as u,Bt as d,C as f,Ca as p,Ci as m,Co as h,Ct as g,D as _,Da as v,Di as y,Do as b,Dr as x,E as S,Ea as C,Eo as w,Er as T,Et as E,Fa as D,Fi as O,Fn as k,Fo as A,Fr as j,Ft as M,G as N,Ga as P,Gi as F,Gn as I,Gt as L,H as R,Ha as z,Hi as B,Ho as V,Hr as H,Ht as U,Ia as W,Ii as G,In as K,Io as q,Ir as J,It as oe,J as se,Ja as ce,Ji as le,Jt as ue,K as de,Ka as fe,Ki as pe,Kn as me,Kr as he,L as ge,La as _e,Li as ve,Ln as ye,Lo as be,Lr as xe,Lt as Se,M as Ce,Ma as we,Mi as Te,Mn as Ee,Mo as De,Mr as Oe,Mt as ke,N as Ae,Na as je,Ni as Me,Nn as Ne,No as Pe,Nr as Fe,Nt as Ie,O as Le,Oa as Re,Oi as ze,Oo as Be,Or as Ve,Ot as He,P as Ue,Pa as We,Pi as Ge,Po as Ke,Pr as qe,Pt as Je,Q as Ye,Qa as Xe,Qi as Ze,Qr as Qe,Qt as $e,R as et,Ra as tt,Ri as nt,Rn as rt,Ro as it,Rt as at,S as ot,Sa as st,Si as ct,So as lt,St as ut,T as dt,Ta as ft,Ti as pt,To as mt,Tr as ht,Tt as gt,U as _t,Ua as vt,Ui as yt,Un as bt,Uo as xt,Ur as St,V as Ct,Va as wt,Vi as Tt,Vo as Et,Vr as Dt,Vt as Ot,Wa as kt,Wi as At,Wn as jt,Wo as Y,Wr as Mt,Wt as Nt,X as Pt,Xi as Ft,Xr as It,Xt as Lt,Y as Rt,Ya as X,Yi as zt,Yr as Bt,Z as Vt,Za as Ht,Zi as Ut,Zt as Wt,_ as Gt,_a as Kt,_i as qt,_n as Jt,_o as Yt,_r as Xt,_t as Zt,a as Qt,aa as $t,ai as en,ao as tn,ar as nn,b as rn,ba as an,bi as on,bn as sn,bo as cn,br as ln,bt as un,ca as dn,ci as fn,cn as pn,co as mn,cr as hn,ct as gn,d as _n,da as vn,di as yn,dn as bn,do as xn,dr as Sn,dt as Cn,ea as wn,en as Tn,eo as En,er as Dn,et as On,f as kn,fa as An,fi as jn,fn as Mn,fo as Nn,fr as Pn,ft as Fn,g as In,ga as Ln,gi as Rn,go as zn,gr as Bn,gt as Vn,h as Hn,ha as Un,hi as Wn,hn as Gn,ho as Kn,hr as qn,ht as Jn,i as Yn,ia as Xn,ii as Zn,in as Qn,io as $n,ir as er,it as tr,j as nr,ja as rr,ji as ir,jn as ar,jo as or,jr as sr,jt as cr,k as lr,ka as ur,ki as dr,kn as fr,ko as pr,kr as mr,kt as hr,l as gr,la as _r,li as vr,lo as yr,lr as br,lt as xr,ma as Sr,mi as Cr,mn as wr,mo as Tr,mr as Er,mt as Dr,n as Or,na as kr,nn as Ar,no as jr,nr as Mr,nt as Nr,o as Pr,oa as Fr,oi as Ir,on as Lr,oo as Rr,or as zr,ot as Z,p as Br,pa as Vr,pi as Hr,po as Ur,pr as Wr,pt as Gr,q as Kr,qa as qr,qi as Jr,qn as Yr,r as Xr,ra as Zr,ri as Qr,rn as $r,ro as ei,rr as ti,rt as ni,s as ri,sa as ii,si as ai,sn as oi,so as si,sr as ci,t as li,ta as ui,tn as di,to as fi,tr as pi,tt as mi,u as hi,ua as gi,ui as _i,un as vi,uo as yi,ur as bi,ut as xi,v as Si,va as Ci,vi as wi,vn as Ti,vo as Ei,vr as Di,vt as Oi,w as ki,wa as Ai,wi as ji,wo as Mi,wt as Ni,x as Pi,xa as Fi,xi as Ii,xn as Li,xo as Ri,xt as zi,y as Bi,ya as Vi,yi as Hi,yn as Ui,yo as Wi,yr as Gi,yt as Ki,z as qi,za as Ji,zi as Yi,zn as Xi,zo as Zi,zr as Qi,zt as $i}from"./needle-engine-ui.DC9_O2Mo.js";import{C as ea,E as ta,S as na,T as ra,_ as ia,a as aa,b as oa,c as sa,d as ca,f as la,g as ua,h as Q,i as da,l as fa,m as pa,n as ma,o as ha,p as ga,r as _a,s as va,u as ya,v as ba,w as xa,x as Sa,y as Ca}from"./needle-engine@5.0.3.js";import{n as wa}from"./gltf-progressive.U_EoiMHF.js";import{$ as Ta,A as Ea,At as Da,B as Oa,Bt as ka,C as Aa,Ct as ja,Dt as Ma,Et as Na,F as Pa,G as Fa,Gt as Ia,H as La,Ht as Ra,I as za,It as Ba,J as Va,Jt as Ha,K as Ua,Kt as Wa,L as Ga,Lt as Ka,M as qa,Mt as Ja,N as Ya,Ot as Xa,P as Za,Pt as Qa,Q as $a,Qt as eo,R as to,Rt as no,S as ro,St as io,Tt as ao,U as oo,Ut as so,V as co,Vt as lo,W as uo,Wt as fo,X as po,Xt as mo,Y as ho,Yt as go,Z as _o,Zt as vo,_ as yo,a as bo,an as xo,at as So,b as Co,bt as wo,c as To,cn as Eo,ct as Do,d as Oo,dn as ko,dt as Ao,en as jo,et as Mo,f as No,fn as Po,ft as Fo,g as Io,gt as Lo,h as Ro,hn as zo,ht as Bo,i as Vo,in as Ho,it as Uo,j as Wo,jt as Go,k as Ko,kt as qo,l as Jo,ln as Yo,lt as Xo,m as Zo,mn as Qo,mt as $o,n as es,nn as ts,nt as ns,o as rs,on as is,ot as as,p as os,pn as ss,pt as cs,q as ls,qt as us,r as ds,rn as fs,rt as ps,s as ms,sn as hs,t as gs,tn as _s,tt as vs,u as ys,un as bs,ut as xs,v as Ss,vt as Cs,w as ws,wt as Ts,x as Es,xt as Ds,y as Os,yt as ks,z as As}from"./needle-engine-webxr.Cp-vkXLP.js";import{$ as js,A as Ms,At as Ns,B as Ps,C as Fs,Ct as Is,D as Ls,Dt as Rs,E as zs,Et as Bs,F as Vs,G as Hs,I as Us,J as Ws,K as Gs,L as Ks,M as qs,Mt as Js,N as Ys,Nt as Xs,O as Zs,Ot as Qs,P as $s,R as ec,S as tc,St as nc,T as rc,Tt as ic,X as ac,Y as oc,Z as sc,_ as cc,a as lc,at as uc,b as dc,bt as fc,c as pc,ct as mc,d as hc,dt as gc,et as _c,f as vc,ft as yc,g as bc,gt as xc,h as Sc,ht as Cc,i as wc,it as Tc,j as Ec,jt as Dc,k as Oc,kt as kc,l as Ac,lt as jc,m as Mc,mt as Nc,n as Pc,nt as Fc,o as Ic,ot as Lc,p as Rc,pt as zc,q as Bc,r as Vc,rt as Hc,s as Uc,st as Wc,tt as Gc,u as Kc,ut as qc,v as Jc,vt as Yc,w as Xc,wt as Zc,x as Qc,xt as $c,y as el,z as tl}from"./needle-engine.extras.ChmId5tE.js";import{C as nl,D as rl,E as il,S as al,T as ol,_ as sl,a as cl,b as ll,c as ul,d as dl,f as fl,g as pl,h as ml,i as hl,l as gl,m as _l,n as vl,o as yl,p as bl,r as xl,s as Sl,t as Cl,u as wl,v as Tl,w as El,x as Dl,y as Ol}from"./needle-engine-particles.ByRryBGL.js";import{_ as kl,a as Al,b as jl,c as Ml,d as Nl,f as Pl,g as Fl,h as Il,i as Ll,l as Rl,m as zl,n as Bl,o as Vl,p as Hl,r as Ul,s as Wl,t as $,u as Gl,v as Kl,y as ql}from"./needle-engine.extras.X7Svjxj0.js";export{dr as $componentName,t as $physicsKey,vs as ActionBuilder,Ks as ActionCollection,ns as ActionModel,Qi as Addressables,Cc as AlignmentConstraint,jt as AmbientMode,Qo as Animation,il as AnimationCurve,$a as AnimationExtension,nc as AnimationTrackHandler,Ze as AnimationUtils,Ye as Animator,On as AnimatorConditionMode,ee as AnimatorController,mi as AnimatorControllerParameterType,Nr as AnimatorStateInfo,Il as Antialiasing,xe as Application,Lt as AssetDatabase,u as AssetReference,zs as Attractor,_o as AudioExtension,ss as AudioListener,Po as AudioSource,Is as AudioTrackHandler,Ko as Avatar,Wa as AvatarBlink_Simple,Ia as AvatarEyeLook_Rotation,aa as AvatarLoader,Yo as AvatarMarker,ha as AvatarModel,hs as Avatar_Brain_LookAt,vo as Avatar_MouthShapes,mo as Avatar_MustacheShake,Eo as Avatar_POI,o as Axes,Nc as AxesHelper,B as BUILD_TIME,Pi as BaseUIComponent,zc as BasicIKConstraint,Co as BehaviorExtension,ps as BehaviorModel,Z as Behaviour,Z as Component,Wn as BlobStorage,zl as BloomEffect,ka as BoxCollider,No as BoxGizmo,yc as BoxHelperComponent,Xr as Button,fr as ButtonsFactory,jo as CallDirection,Rt as CallInfo,f as Camera,dt as CameraTargetReachedEvent,ri as Canvas,Pr as CanvasGroup,lo as CapsuleCollider,Oa as ChangeMaterialOnClick,co as ChangeTransformOnClick,qc as CharacterController,gc as CharacterControllerInput,Hl as ChromaticAberration,te as CircularBuffer,ki as ClearFlags,Ic as ClickThrough,Qs as ClipExtrapolation,Ra as Collider,ir as Collision,Ct as CollisionDetectionMode,Nl as ColorAdjustments,yl as ColorBySpeedModule,Sl as ColorOverLifetimeModule,zt as ComponentLifecycleEvents,Mr as ConnectionEvents,Te as ContactPoint,no as ContactShadows,Jt as Context,Ti as ContextArgs,xt as ContextEvent,Y as ContextRegistry,Y as NeedleEngine,Zc as ControlTrackHandler,lc as CursorFollow,os as CustomBranding,Go as CustomShader,I as DefaultReflectionMode,uc as Deletable,Lc as DeleteBox,Gl as DepthOfField,Tc as DeviceFlag,En as DeviceUtilities,da as DocumentExtension,Fc as DragControls,Hc as DragMode,Bc as DropListener,Gs as Duplicatable,Rl as EffectWrapper,ul as EmissionModule,La as EmphasizeOnClick,ca as EngineLoadingView,fc as EnvironmentScene,Pt as EventList,Vt as EventListEvent,_ as EventSystem,Hs as EventTrigger,Cs as FieldWithDefault,Dt as FileReference,H as FileReferenceSerializer,js as FileSpawnModel,_c as File_Event,Ys as FixedJoint,Us as Fog,Ui as FrameEvent,yt as GENERATOR,gn as GameObject,vi as Gizmos,tl as GltfExport,Ps as GltfExportBox,gl as Gradient,Hn as Graphic,lr as GraphicRaycaster,$t as Graphics,Vs as GridHelper,gr as GridLayoutGroup,Kr as GroundProjectedEnv,Uo as GroupActionModel,Me as HideFlags,oo as HideOnStart,$s as HingeJoint,hi as HorizontalLayoutGroup,Qr as HostData,wc as HoverAnimation,Yn as Image,St as ImageReference,Mt as ImageReferenceSerializer,wl as InheritVelocityModule,ht as Input,T as InputEventQueue,x as InputEvents,Or as InputField,ja as InstanceHandle,Ts as InstancingHandler,ue as InstancingUtil,Zn as InstantiateEvent,en as InstantiateIdProvider,He as InstantiateOptions,Wc as Interactable,ms as InternalScreenshotUtils,ti as JoinedRoomResponse,Ve as KeyEventArgs,rl as Keyframe,Ms as LODGroup,Ec as LODModel,er as LeftRoomResponse,qs as Light,me as LightData,dl as LimitVelocityOverLifetimeModule,la as LoadingElementOptions,jc as LogStats,ce as LogType,pc as LookAt,N as LookAtConstraint,fl as MainModule,ic as MarkerTrackHandler,kc as MarkerType,In as MaskableGraphic,Ka as MaterialPropertyBlock,Ja as MaterialX,vt as Mathf,so as MeshCollider,ks as MeshRenderer,bl as MinMaxCurve,_l as MinMaxGradient,Tt as NEEDLE_ENGINE_FEATURE_FLAGS,Bn as NEEDLE_ENGINE_MODULES,wa as NEEDLE_progressive,mr as NEKeyboardEvent,i as NEPointerEvent,pa as NeedleButtonElement,sc as NeedleEngineModelLoader,ya as NeedleEngineWebComponent,Ea as NeedleMenu,ve as NeedlePatchesKey,Ao as NeedleUSDZExporter,Gn as NeedleXRController,Mn as NeedleXRSession,wr as NeedleXRSync,zo as NeedleXRUtils,Oc as NestedGltf,nn as NetworkConnection,_s as NetworkedStreamEvents,ts as NetworkedStreams,Zs as Networking,Ir as NewInstanceModel,ml as NoiseModule,ae as ObjectRaycaster,Oe as ObjectUtils,Ls as OffsetConstraint,kt as OneEuroFilter,P as OneEuroFilterXYZ,Uc as OpenURL,S as OrbitControls,Gt as Outline,zr as OwnershipEvent,ci as OwnershipModel,At as PUBLIC_KEY,_n as Padding,pl as ParticleBurst,cl as ParticleSubEmitter,Cl as ParticleSystem,vl as ParticleSystemBaseBehaviour,xl as ParticleSystemRenderer,sl as ParticleSystemShapeType,fs as PeerHandle,Pn as PeerNetworking,Lr as Physics,Os as PhysicsExtension,R as PhysicsMaterialCombine,Ml as PixelationEffect,uo as PlayAnimationOnClick,Fa as PlayAudioOnClick,$c as PlayableDirector,rc as PlayerColor,Wo as PlayerState,qa as PlayerStateEvent,Ya as PlayerSync,re as PlayerView,Dn as PlayerViewManager,Ce as PointerEventData,sr as PointerType,Kl as PostProcessingEffect,jl as PostProcessingEffectOrder,Bl as PostProcessingHandler,$ as PostProcessingManager,$ as Volume,Ua as PreliminaryAction,ls as PreliminaryTrigger,Gc as PreviewHelper,Fe as PrimitiveType,Bo as Progress,fi as PromiseAllWithErrors,jr as PromiseErrorResult,bn as RGBAColor,fa as RapierPhysics,Qt as RawImage,oi as RaycastOptions,Si as Rect,Bi as RectTransform,Ba as ReflectionProbe,Ta as RegisteredAnimationInfo,xc as RemoteSkybox,se as RenderTexture,ba as RenderTextureSerializer,wo as Renderer,Yr as RendererData,io as RendererLightmap,ge as Rigidbody,_t as RigidbodyConstraints,hn as RoomEvents,Tl as RotationBySpeedModule,Ol as RotationOverLifetimeModule,Qa as SceneLightSettings,Yc as SceneSwitcher,Fs as ScreenCapture,Wl as ScreenSpaceAmbientOcclusion,Vl as ScreenSpaceAmbientOcclusionN8,Vc as ScrollFollow,tc as SeeThrough,Cr as SendQueue,he as SerializationContext,Va as SetActiveOnClick,Qc as ShadowCatcher,ll as ShapeModule,Ge as ShapeOverlapResult,Al as SharpeningEffect,Dc as SignalAsset,Js as SignalReceiver,Xs as SignalReceiverEvent,Bs as SignalTrackHandler,rn as Size,Dl as SizeBySpeedModule,al as SizeOverLifetimeModule,Ds as SkinnedMeshRenderer,dc as SmoothFollow,nr as SpatialGrabRaycaster,li as SpatialHtml,Jc as SpatialTrigger,el as SpatialTriggerReceiver,cc as SpectatorCamera,fo as SphereCollider,pn as SphereIntersection,Sc as SplineContainer,bc as SplineData,ma as SplineUtils,Mc as SplineWalker,Pa as Sprite,za as SpriteData,Ga as SpriteRenderer,to as SpriteSheet,ni as StateMachineBehaviour,Ho as StreamEndedEvent,xo as StreamReceivedEvent,hl as SubEmitterSystem,Rc as SyncedCamera,vc as SyncedRoom,Ue as SyncedTransform,ho as TapGestureTrigger,Aa as TeleportTarget,Kc as TestRunner,hc as TestSimulateUserData,Br as Text,Io as TextBuilder,yo as TextExtension,nl as TextureSheetAnimationModule,Ll as TiltShiftEffect,bt as Time,Pl as ToneMappingEffect,Rs as TrackHandler,Ns as TrackType,El as TrailModule,Mo as TransformData,Ac as TransformGizmo,So as TriggerBuilder,as as TriggerModel,ne as TypeStore,Le as UIRaycastUtils,ot as UIRootComponent,Do as USDDocument,Xo as USDObject,xs as USDWriter,Zo as USDZExporter,Ss as USDZText,Ro as USDZUIExtension,Ca as UriSerializer,mc as UsageMarker,br as UserJoinedOrLeftRoomModel,F as VERSION,ec as VariantAction,ol as VelocityOverLifetimeModule,kn as VerticalLayoutGroup,Xc as VideoPlayer,Pc as ViewBox,pi as ViewDevice,Ul as Vignette,po as VisibilityAction,eo as Voip,ql as VolumeParameter,Fl as VolumeProfile,qe as WaitForFrames,j as WaitForPromise,J as WaitForSeconds,ei as Watch,rs as WebARCameraBackground,Za as WebARSessionRoot,Es as WebXR,As as WebXRButtonFactory,ds as WebXRImageTracking,Vo as WebXRImageTrackingModel,es as WebXRPlaneTracking,bo as WebXRTrackedImage,Oo as XRControllerFollow,ws as XRControllerModel,ro as XRControllerMovement,us as XRFlag,gs as XRRig,Ha as XRState,go as XRStateFlag,_a as __Ignore,Wt as __internalNotifyObjectDestroyed,pe as activeInHierarchyFieldName,$n as addAttributeChangeCallback,Dr as addComponent,ao as addCustomExtensionPlugin,Jn as addNewComponent,nt as addPatch,U as apply,xr as applyHMRChanges,Nt as applyPrototypeExtensions,ai as beginListenDestroy,fn as beginListenInstantiate,Xt as binaryIdentifierCasts,sn as build_scene_functions,Jr as builtinComponentKeyName,ga as calculateProgress01,X as clearBalloonMessages,X as clearOverlayMessages,oa as colorSerializer,Qe as compareAssociation,Sa as componentSerializer,Fr as copyTexture,tr as createMotion,bi as debugNet,Sn as debugOwner,Fo as decompressGpuTexture,tn as deepClone,Rr as delay,si as delayForFrames,Bt as deserializeObject,hr as destroy,Vn as destroyComponentInstance,Ws as determineMimeTypeFromExtension,$e as disposeObjectResources,is as disposeStream,le as editorGuidKeyName,Xn as enableSpatialConsole,na as euler,ea as eventListSerializer,va as exportAsGLTF,a as findByGuid,Zt as findObjectOfType,Oi as findObjectsOfType,ie as findResourceUsers,de as fitCamera,ii as fitObjectIntoVolume,cr as foreachComponent,ke as foreachComponentEnumerator,dn as forward,Ne as generateQRCode,vr as generateSeed,_r as getBoundingBox,Ji as getCameraController,Ki as getComponent,un as getComponentInChildren,zi as getComponentInParent,ut as getComponents,g as getComponentsInChildren,Ni as getComponentsInParent,Lo as getFormattedDate,n as getIconElement,ar as getIconTexture,y as getLoader,gt as getOrAddComponent,mn as getParam,gi as getParentHierarchyPath,yr as getPath,Wr as getPeerOptions,Er as getPeerjsInstance,Tn as getResourceUserCount,vn as getTempColor,An as getTempQuaternion,Vr as getTempVector,yi as getUrlParams,Sr as getVisibleInCustomShadowRendering,Un as getWorldDirection,Ln as getWorldEuler,Kt as getWorldPosition,Ci as getWorldQuaternion,Vi as getWorldRotation,an as getWorldScale,Rn as hasCommercialLicense,qt as hasIndieLicense,Ae as hasPointerEventComponent,wi as hasProLicense,ra as hideDebugConsole,cs as imageToCanvas,Ie as instantiate,Na as invokeLoadedImportPluginHooks,k as invokeXRSessionEnd,K as invokeXRSessionStart,Je as isActiveInHierarchy,M as isActiveSelf,xn as isAndroidDevice,Fi as isAnimationAction,O as isComponent,Nn as isDebugMode,Ur as isDesktop,oe as isDestroyed,fe as isDevEnvironment,di as isDisposed,sa as isExporting,G as isGLTFModel,Et as isHostedOnGlitch,xi as isHotReloadEnabled,Cn as isHotReloading,Tr as isIPad,Ee as isIconElement,V as isLocalNetwork,Kn as isMacOS,zn as isMobileDevice,Yt as isMozillaXR,Ei as isQuest,Ar as isResourceTrackingEnabled,Wi as isSafari,Se as isUsingInstancing,cn as isiOS,Ri as isiPad,Q as loadAsset,bs as loadPMREM,ua as loadSync,st as logHierarchy,p as lookAtInverse,Ai as lookAtObject,ft as lookAtScreenPoint,lt as makeId,h as makeIdFromRandomWords,$o as makeNameSafeForUSD,at as markAsInstancedRendered,Mi as microphonePermissionsGranted,mt as nameof,w as nameofFactory,xa as objectSerializer,ye as offXRSessionEnd,rt as offXRSessionStart,Hi as onAfterRender,on as onBeforeRender,Ii as onClear,ct as onDestroy,m as onInitialized,ji as onStart,pt as onUpdate,Xi as onXRSessionEnd,c as onXRSessionStart,ia as parseSync,C as placeOnSurface,v as postprocessFBXMaterials,et as prefix,b as pushState,Be as randomNumber,Di as registerBinaryType,Li as registerComponent,Ma as registerComponentExtension,kl as registerCustomEffectType,Xa as registerExportExtensions,qo as registerExtensions,Fn as registerHotReloadType,ze as registerLoader,_i as registerPrefabProvider,L as registerPrototypeExtensions,wn as registerType,pr as relativePathPrefix,r as removeAttributeChangeCallback,E as removeComponent,Da as removeCustomImportExtensionType,Yi as removePatch,or as resolveUrl,De as sanitizeString,To as saveImage,Jo as screenshot,ys as screenshot2,yn as sendDestroyed,Ft as serializable,It as serializeObject,Ut as serializeable,$i as setActive,Ht as setAllowBalloonMessages,Xe as setAllowOverlayMessages,s as setAutoFitEnabled,wt as setCameraController,d as setDestroyed,qr as setDevEnvironment,$r as setDisposable,Ot as setDontDestroy,Pe as setOrAddParamsToUrl,Ke as setParam,A as setParamWithoutReload,qn as setPeerOptions,Qn as setResourceTrackingEnabled,q as setState,Re as setVisibleInCustomShadowRendering,ur as setWorldEuler,e as setWorldPosition,rr as setWorldPositionXYZ,we as setWorldQuaternion,je as setWorldQuaternionXYZW,We as setWorldRotation,D as setWorldRotationXYZ,W as setWorldScale,ui as showBalloonError,kr as showBalloonMessage,Zr as showBalloonWarning,ta as showDebugConsole,_e as slerp,jn as syncDestroy,ko as syncField,Hr as syncInstantiate,tt as textureToCanvas,be as toSourceId,Gi as tryCastBinary,oc as tryDetermineMimetypeFromBinary,ac as tryDetermineMimetypeFromURL,it as tryFindObject,ln as tryGetGuid,Gr as unregisterHotReloadType,Zi as unwatchWrite,z as useForAutoFit,qi as validate,l as watchWrite}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js.gz b/Needle/SampleScene/dist/assets/needle-engine.BlkazeHq.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..540f4999abbb901d2b8e2694e7cfb79b7c4cd3fe GIT binary patch literal 7317 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 Z%{9LdvFyDte!X}_WWe/Math.PI*180)),p&&(y=y.map(e=>e>0));let b=new d(m,o.array,y,v);if(v===`CUBICSPLINE`&&c._createCubicSplineTrackInterpolant(b),h.push(b),m&&l.itemSize===4&&m.startsWith(`.materials.`)&&m.endsWith(`.color`)){let e=new Float32Array(y.length/4);for(let t=0,n=y.length/4;t{a!==null||e.type!==`Mesh`&&e.type!==`SkinnedMesh`||e.material&&(e.material.uuid===i||e.material.name===i)&&(a=e.material,a!==null&&(t.endsWith(`.map`)?a=a.map:t.endsWith(`.emissiveMap`)&&(a=a.emissiveMap)))}),a}else if(n.startsWith(`.nodes.`)||n.startsWith(`.lights.`)||n.startsWith(`.cameras.`)){let r=n.split(`.`),i;for(let t=1;t=0&&(t=e),i=i[t]}else{let t=e.getObjectByName(n);t&&(i=t)}}if(!i){let i=t(e,r[2]);return i||console.warn(d+`: Property binding not found`,n,e,e.name,r),i}return i}return t(e,n)}}export{p as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.D6xdy26G.js.gz b/Needle/SampleScene/dist/assets/needle-engine.D6xdy26G.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a810b2033ababb63c7bfdaa0147cc15ca7e9121e GIT binary patch literal 2824 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js b/Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js new file mode 100644 index 0000000..04b3d05 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js @@ -0,0 +1 @@ +import{a as e,i as t,n,r}from"./three-mesh-bvh.B-oXEGo2.js";export{e as MeshBVH,n as StaticGeometryGenerator,r as acceleratedRaycast,t as computeBoundsTree}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz b/Needle/SampleScene/dist/assets/needle-engine.dep.B3nA4wQ5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ecc824690728cbc3041e8542388aef1898860418 GIT binary patch literal 146 zcmV;D0B!#tiwFP!000023LT5V3c@fD1%IXVoJ8>2TR`f?ix%;^rcY8a*|OP+Mf&d& zPmedlOlfA(FEvyen5mAMY-D=~r`GK>3SbjTwD)&(-tz6x^WHs6+u`$XQKJ(|^w*=w z^<0#63OzVMW$lq6q%20Nq!93`0OOg~Kt+vK9yra5!t;{HG6=ABKlq~pDV+cS01%Tz AvH$=8 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/needle-engine.dep.BzZBR-mM.js b/Needle/SampleScene/dist/assets/needle-engine.dep.BzZBR-mM.js new file mode 100644 index 0000000..15483f3 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine.dep.BzZBR-mM.js @@ -0,0 +1 @@ +import{t as e}from"./needle-engine.D6xdy26G.js";export{e as GLTFAnimationPointerExtension}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js b/Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js new file mode 100644 index 0000000..3576f20 --- /dev/null +++ b/Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js @@ -0,0 +1 @@ +import{$ as ee,$t as te,A as ne,At as e,B as t,Bt as n,C as r,Ct as re,D as ie,Dt as ae,E as oe,Et as i,F as a,Ft as o,G as s,Gt as c,H as l,Ht as u,I as d,It as f,J as p,Jt as m,K as h,Kt as g,L as _,Lt as v,M as y,Mt as b,N as x,Nt as S,O as C,Ot as w,P as T,Pt as E,Q as D,Qt as O,R as k,Rt as A,S as j,St as M,T as N,Tt as P,U as F,Ut as I,V as L,Vt as R,W as z,Wt as B,X as V,Xt as H,Y as U,Yt as W,Z as G,Zt as K,_ as q,_t as se,a as ce,an as le,at as J,b as ue,bt as Y,c as de,cn as fe,ct as pe,d as me,dt as he,en as ge,et as _e,f as ve,ft as ye,g as be,gt as xe,h as Se,ht as X,i as Ce,in as we,it as Te,j as Ee,jt as De,k as Oe,kt as ke,l as Ae,ln as je,lt as Z,m as Me,mt as Ne,n as Pe,nn as Fe,nt as Ie,o as Le,on as Re,ot as Q,p as ze,pt as Be,q as Ve,qt as He,r as Ue,rn as We,rt as Ge,s as Ke,sn as qe,st as Je,t as Ye,tn as Xe,tt as Ze,u as Qe,ut as $e,v as et,vt as tt,w as nt,wt as rt,x as $,xt as it,y as at,yt as ot,z as st,zt as ct}from"./postprocessing.Wy71DpiM.js";export{Ye as ASCIIEffect,Pe as ASCIITexture,Ue as AdaptiveLuminanceMaterial,Ce as AdaptiveLuminancePass,ce as BlendFunction,Le as BlendMode,Ke as BloomEffect,Q as BlurPass,Q as KawaseBlurPass,de as BokehEffect,Ae as BokehMaterial,Qe as BoxBlurMaterial,me as BoxBlurPass,ve as BrightnessContrastEffect,ze as ChromaticAberrationEffect,Me as CircleOfConfusionMaterial,Se as ClearMaskPass,be as ClearPass,q as ColorAverageEffect,et as ColorChannel,at as ColorDepthEffect,_ as ColorEdgesMaterial,_ as EdgeDetectionMaterial,J as ConvolutionMaterial,J as KawaseBlurMaterial,ue as CopyMaterial,$ as CopyPass,$ as SavePass,j as DepthComparisonMaterial,r as DepthCopyMaterial,nt as DepthCopyMode,N as DepthCopyPass,N as DepthSavePass,oe as DepthDownsamplingMaterial,ie as DepthDownsamplingPass,C as DepthEffect,Oe as DepthMaskMaterial,ne as DepthOfFieldEffect,Ee as DepthPass,y as DepthPickingPass,x as DepthTestStrategy,T as Disposable,a as DotScreenEffect,d as DownsamplingMaterial,k as EdgeDetectionMode,st as Effect,t as EffectAttribute,L as EffectComposer,l as EffectMaterial,F as EffectPass,z as EffectShaderData,s as EffectShaderSection,s as Section,h as FXAAEffect,Ve as GammaCorrectionEffect,p as GaussKernel,U as GaussianBlurMaterial,V as GaussianBlurPass,G as GlitchEffect,D as GlitchMode,ee as GodRaysEffect,_e as GodRaysMaterial,Ze as GridEffect,Ie as HueSaturationEffect,Ge as ImmutableTimer,Te as Initializable,Je as KernelSize,pe as LUT1DEffect,Z as LUT3DEffect,Z as LUTEffect,$e as LUT3dlLoader,he as LUTCubeLoader,ye as LUTOperation,Be as LambdaPass,Ne as LensDistortionEffect,X as LookupTexture,X as LookupTexture3D,xe as LuminanceMaterial,se as LuminancePass,tt as MaskFunction,ot as MaskMaterial,Y as MaskPass,it as MipmapBlurPass,M as NoiseEffect,re as NoiseTexture,rt as NormalPass,i as OutlineEdgesMaterial,i as OutlineMaterial,P as OutlineEffect,ae as OverrideMaterialManager,w as Pass,ke as PixelationEffect,e as PredicationMode,De as RawImageData,b as RealisticBokehEffect,S as RenderPass,E as Resizable,o as Resizer,o as Resolution,f as SMAAAreaImageData,v as SMAAEffect,A as SMAAImageGenerator,ct as SMAAImageLoader,n as SMAAPreset,R as SMAASearchImageData,u as SMAAWeightsMaterial,I as SSAOEffect,B as SSAOMaterial,c as ScanlineEffect,g as Selection,He as SelectiveBloomEffect,m as SepiaEffect,W as ShaderPass,H as ShockWaveEffect,K as TetrahedralUpscaler,O as TextureEffect,te as TiltShiftBlurMaterial,ge as TiltShiftBlurPass,Xe as TiltShiftEffect,Fe as Timer,We as ToneMappingEffect,we as ToneMappingMode,le as UpsamplingMaterial,Re as VignetteEffect,qe as VignetteTechnique,fe as WebGLExtension,je as version}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz b/Needle/SampleScene/dist/assets/needle-engine.dep.DFJFZC0m.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..aef130b4c86ff0349df6e55ea3efb5a9449a285d GIT binary patch literal 1473 zcmV;y1wQ&8iwFP!000023T>B7bK*DJ6|SPmaK&u5?`vn+5E z%?39t*BD3hiZRO_Cea))VY$R@G<)2#OfZe6k15L!%%YiN#_|Gp(F}0Ma*F$Cwzy~6 zLlVs!5|$Ipqq)VLKsC2SZxL33^in#cMeXm-pAZ=7Dj8-oF1%LyiI8EgqT zr?vge*)*>i`IlTRom`-FE+KjB^S zPjI{d1jk($1jn8c!SfmrJbT^=UXo3aBohLAo(MsvOsF_4p<-}G*zp+(*vaV%_~26% z@FC|XV9zbFm(vn(;Nuc-knx3sDI^g7bc?5<|} z*srCMxzhmIZnjWUMv`b;w#P#Ky8ytecrTa$02 zGmmIMfp`U4*R^ypJDXQu9bL*>UdgO&d1%pDL-;dTC2A+D|0ZX;44b|!O69aais6o& zN8_1r%Hs~XJwZHlhuUbCS~jpB#;c;twOO|#>p%OsZ@+cb*_?Kb-cmv)Rbp+ zhl|d^BOW@b(`^%H-_kkxkOZd!tq<~G474w;SIfM<#|JhfsUvE(StjrgU$*_a#4&Ah zAJx5&e)mFfdRYaM2U1{MA?wM>eJiXDFzgtA#%HIKjmpRkR8Vpu9@9i7BaTM!+c13U z_3DW|a^gm+C{*7%C#`Bp)xNnk9kryHtvuVe))gw3k+{&PLaq&+-k8Up7S4{FOBBUXraN*@XKl-gGHOju z9&(Pf<#sc@r~G)62z8X{RJCVz!1P{yTor0fe5{sIv#4DApwr_wFAc>Z@LgxMb4n^&F`#*sj6Nv)X8GG9nWW*Rtia>3;F6>~{PdPm2lMIoM2s~T|mE!P$2 z@KUr*w+ppv#=ntjH8{1Q%&GjL^r_0p$)ARLi!~Q52cPRaBpba7CzsUvtB->|o$`95 zVNK)Zv5?<3?#Qy#W?i@W_?`1E%9%ctUtWrPc0B5}p%9uGzn{Q4r5mH)E5eGTi.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{A as t,Ar as n,At as r,D as i,Gn as a,Jt as o,Kn as s,Mr as c,Nr as l,Nt as u,P as d,Q as f,Qn as p,Qt as m,R as ee,S as h,T as g,Tn as te,Xt as _,Z as ne,Zn as re,Zt as v,_ as ie,_n as ae,a as oe,d as se,fn as y,fr as ce,gn as le,gr as ue,i as de,in as fe,jr as pe,jt as me,kr as b,kt as he,nr as ge,s as _e,st as ve,tr as ye,tt as be,u as xe,ur as Se,ut as Ce,vn as we,wn as x,x as Te,y as Ee,yn as De}from"./three@0.169.19.js";import{$i as S,A as C,Aa as Oe,An as ke,Ao as Ae,B as je,Br as Me,C as Ne,D as Pe,Di as Fe,Dr as Ie,E as Le,Ea as Re,F as ze,Fa as Be,Fo as Ve,G as He,Ho as Ue,I as We,Io as Ge,Ir as Ke,Jt as qe,Ka as w,Kr as T,L as E,Lo as Je,Ma as Ye,Mo as Xe,Mr as Ze,Ni as Qe,No as $e,Nr as et,Nt as tt,Ot as nt,P as rt,Q as it,Qi as at,S as ot,T as D,Ua as O,Uo as st,W as ct,Wo as lt,X as k,Xi as A,Z as ut,Zi as j,Zn as dt,_ as ft,_a as M,a as pt,ai as mt,ao as ht,at as gt,ba as _t,co as N,cr as P,ct as F,dn as vt,ea as I,eo as yt,f as bt,fi as xt,fn as St,g as Ct,h as wt,hi as Tt,i as Et,io as Dt,j as Ot,ja as kt,jo as At,k as jt,kt as L,l as Mt,la as Nt,ln as Pt,n as Ft,na as It,ni as Lt,o as Rt,oo as zt,ot as R,p as Bt,pa as z,q as Vt,r as B,ra as Ht,s as Ut,sa as Wt,sn as Gt,t as Kt,tr as qt,u as Jt,un as V,uo as Yt,va as Xt,vr as Zt,wa as Qt,wi as $t,x as en,xr as tn,y as nn,ya as rn,yn as an}from"./needle-engine-ui.DC9_O2Mo.js";import{d as on,l as sn}from"./three-examples.extras@0.169.19.js";import{$t as cn,A as ln,B as un,Bt as dn,C as fn,Ft as pn,G as mn,Gt as hn,H as gn,It as _n,J as vn,K as yn,Kt as bn,L as xn,Lt as Sn,N as Cn,Ot as wn,P as Tn,Qt as En,Rt as Dn,S as On,U as kn,Ut as An,V as jn,Vt as Mn,W as Nn,Wt as Pn,X as Fn,Xt as In,Y as Ln,Yt as Rn,Zt as zn,at as Bn,bt as Vn,cn as Hn,d as Un,dn as Wn,f as Gn,fn as Kn,j as qn,k as Jn,ln as Yn,lt as Xn,m as Zn,mn as Qn,n as $n,nn as er,o as tr,on as nr,pn as rr,q as ir,qt as ar,r as or,rt as sr,sn as cr,st as lr,t as ur,tn as dr,tt as fr,un as pr,w as mr,x as hr,xt as gr,yt as _r}from"./needle-engine-webxr.Cp-vkXLP.js";import{r as vr,t as yr}from"./needle-engine-particles.ByRryBGL.js";import{a as br,c as xr,d as Sr,f as Cr,h as wr,i as Tr,l as Er,m as Dr,o as Or,p as kr,r as Ar,s as jr,t as Mr,u as Nr}from"./needle-engine.extras.X7Svjxj0.js";var Pr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Fr=N(`debugsignals`),Ir=class{guid};Pr([A()],Ir.prototype,`guid`,void 0);var Lr=class{signal;reaction};Pr([A(Ir)],Lr.prototype,`signal`,void 0),Pr([A(k)],Lr.prototype,`reaction`,void 0);var Rr=class e extends R{static receivers={};static invoke(t){if(e.receivers[t]){let n=e.receivers[t];if(!n)return;for(let e of n)e.invoke(t)}}events;awake(){Fr&&console.log(`SignalReceiver awake`,this)}onEnable(){if(this.events)for(let t of this.events)e.receivers[t.signal.guid]||(e.receivers[t.signal.guid]=[]),e.receivers[t.signal.guid].push(this)}onDisable(){if(this.events){for(let t of this.events)if(e.receivers[t.signal.guid]){let n=e.receivers[t.signal.guid].indexOf(this);n>=0&&e.receivers[t.signal.guid].splice(n,1)}}}invoke(e){if(!this.events||!Array.isArray(this.events))return;let t=typeof e==`object`?e.guid:e;for(let e of this.events)if(e.signal.guid===t)try{if(!e.reaction){console.warn(`Missing reaction for signal`,e,this);continue}else if(!e.reaction.invoke){console.warn(`Missing invoke - possibly a serialization error`,e,this);continue}e.reaction.invoke()}catch(e){console.error(e)}}};Pr([A(Lr)],Rr.prototype,`events`,void 0);var zr;(function(e){e.Activation=`ActivationTrack`,e.Animation=`AnimationTrack`,e.Audio=`AudioTrack`,e.Control=`ControlTrack`,e.Marker=`MarkerTrack`,e.Signal=`SignalTrack`})(zr||={});var Br;(function(e){e[e.None=0]=`None`,e[e.Hold=1]=`Hold`,e[e.Loop=2]=`Loop`,e[e.PingPong=3]=`PingPong`,e[e.Continue=4]=`Continue`})(Br||={});var Vr;(function(e){e.Signal=`SignalEmitter`})(Vr||={});var Hr=N(`debugtimeline`),Ur=class{director;track;get muted(){return this.track.muted}set muted(e){e!==this.track.muted&&(this.track.muted=e,this.onMuteChanged?.call(this))}*forEachClip(e=!1){if(this.track?.clips)if(e)for(let e=this.track.clips.length-1;e>=0;e--)yield this.track.clips[e];else for(let e of this.track.clips)yield e}getClipTime(e,t){return t.clipIn+(e-t.start)*t.timeScale}getClipTimeNormalized(e,t){return(e-t.start)/t.duration}evaluateWeight(e,t,n,r=!0){if(t<0||t>=n.length)return 0;let i=n[t];if(r||e>=i.start&&e<=i.end){let t=1;if(i.easeInDuration>0){let n=Math.min((e-i.start)/i.easeInDuration,1);t*=n}if(i.easeOutDuration>0){let n=Math.min((i.end-e)/i.easeOutDuration,1);t*=n}return t}return 0}},Wr=class{clip;rootPositionOffset;rootQuaternionOffset;get hasOffsets(){return this.rootPositionOffset!==void 0||this.rootQuaternionOffset!==void 0}rootStartPosition;rootEndPosition;rootStartQuaternion;rootEndQuaternion;constructor(e){let t=e.getClip();this.clip=t;let r=e.getRoot(),i=r.name+`.position`,a=r.name+`.quaternion`;Hr&&console.log(t.name,t.tracks,i);for(let e of t.tracks)if(!(e.times.length<=0)){if(e.name.endsWith(i))this.rootStartPosition=new n().fromArray(e.values,0),this.rootEndPosition=new n().fromArray(e.values,e.values.length-3),this.rootPositionOffset=this.rootEndPosition.clone().sub(this.rootStartPosition),Hr&&console.log(this.rootPositionOffset);else if(e.name.endsWith(a)&&(this.rootStartQuaternion=new x().fromArray(e.values,0),this.rootEndQuaternion=new x().fromArray(e.values,e.values.length-4),this.rootQuaternionOffset=this.rootEndQuaternion.clone().multiply(this.rootStartQuaternion),Hr)){let e=new be().setFromQuaternion(this.rootQuaternionOffset);console.log(`ROT`,e)}}}},Gr=class extends Ur{models=[];trackOffset;target;mixer;clips=[];actions=[];weight=1;_actionOffsets=[];_didBind=!1;_animator=null;onDisable(){this.mixer?.stopAllAction()}onDestroy(){this.director.context.animations.unregisterAnimationMixer(this.mixer)}onStateChanged(){this._animator&>(this._animator.gameObject,this,this.director.enabled&&this.director.weight>0)}createHooks(e,t){if(t.tracks?.length<=0){console.warn(`No tracks in AnimationClip`,t);return}let n=!1,r=!1,i=t.tracks.find(e=>e.name.includes(`.position`)||e.name.includes(`.quaternion`))?.name.split(`.`);if(i){let a=i[i.length-2],o=a+`.position`,s=a+`.quaternion`;for(let i of t.tracks)!n&&i.name.endsWith(o)?(n=!0,this.createPositionInterpolant(t,e,i)):!r&&i.name.endsWith(s)&&(r=!0,this.createRotationInterpolant(t,e,i))}if(!n||!r){let i=this.mixer?.getRoot(),a=t.tracks[0],o=a.name.lastIndexOf(`.`),s=a.name.substring(0,o),l=s.substring(s.lastIndexOf(`.`)+1),u=i.getObjectByName(l);if(u){if(!n){let n=s+`.position`;Hr&&console.warn(`Create position track`,l,u);let r=new c(n,[0,t.duration],[0,0,0,0,0,0]);t.tracks.push(r),this.createPositionInterpolant(t,e,r)}else if(!r){let n=t.tracks[0].name.substring(0,o)+`.quaternion`;Hr&&console.warn(`Create quaternion track`,l,u);let r=new te(n,[0,t.duration],[0,0,0,1,0,0,0,1]);t.tracks.push(r),this.createRotationInterpolant(t,e,r)}}}}bind(){if(!this._didBind){this._didBind=!0,Hr&&console.log(this.models),this.mixer?this.target=this.mixer.getRoot():console.warn(`No mixer was assigned to animation track`);for(let e of this.actions){let t=new Wr(e);this._actionOffsets.push(t)}this.target&&(this._animator=F.getComponent(this.target,it)??null,this._animator&>(this._animator.gameObject,this,!0));for(let e of this.models){let t=e.asset,r=t.position,i=t.rotation;r&&r.x!==void 0&&(r.isVector3||(t.position=new n(r.x,r.y,r.z)),i.isQuaternion||(t.rotation=new x(i.x,i.y,i.z,i.w)))}this.ensureTrackOffsets()}}ensureTrackOffsets(){if(this.trackOffset){let e=this.trackOffset.position;e&&(e.isVector3||(this.trackOffset.position=new n(e.x,e.y,e.z)));let t=this.trackOffset.rotation;t&&(t.isQuaternion||(this.trackOffset.rotation=new x(t.x,t.y,t.z,t.w)))}}_useclipOffsets=!0;_totalOffsetPosition=new n;_totalOffsetRotation=new x;_totalOffsetPosition2=new n;_totalOffsetRotation2=new x;_summedPos=new n;_tempPos=new n;_summedRot=new x;_tempRot=new x;_clipRotQuat=new x;evaluate(e){if(this.track.muted||!this.mixer)return;this.bind(),this._totalOffsetPosition.set(0,0,0),this._totalOffsetRotation.set(0,0,0,1),this._totalOffsetPosition2.set(0,0,0),this._totalOffsetRotation2.set(0,0,0,1);let t=0,n=0,r=!1,i=!1,a=0;for(let o=0;o=s.start&&e<=s.end,d=s.preExtrapolationMode,f=s.postExtrapolationMode,p=oe)&&(m=!0,r=!0):o==0&&!m&&!i&&s.start>e&&d!==Br.None&&(!p||p.startte;)h-=te}else if(!u&&r)switch(f){case Br.Hold:h=this.getClipTime(s.end,s);break;case Br.Loop:h%=te;break;case Br.PingPong:let e=Math.floor(h/te)%2!=0;h%=te,e&&(h=te-h);break}s.reversed===!0?c.time=c.getClip().duration-h:c.time=h,c.timeScale=0;let _=Math.max(0,i);if(c.weight=_,a+=_,c.clampWhenFinished=!1,c.isRunning()||c.play(),this._useclipOffsets){let e=t==0?this._totalOffsetPosition:this._totalOffsetPosition2,r=t==0?this._totalOffsetRotation:this._totalOffsetRotation2;t<1&&(n=1-i),t+=1;let a=this._summedPos.set(0,0,0),s=this._tempPos.set(0,0,0),c=this._summedRot.identity(),u=this._tempRot.identity(),d=l.rotation;d&&(this._clipRotQuat.identity(),this._clipRotQuat.slerp(d,i));let f=this._actionOffsets[o];if(f.hasOffsets)for(let e=0;e{let e=r(),t=e.evaluate.bind(e);return e.evaluate=e=>{let n=t(e);if(i.set(n[0],n[1],n[2],n[3]),i.premultiply(this._totalOffsetRotation),a&&i.premultiply(a),this.director.animationCallbackReceivers)for(let t of this.director.animationCallbackReceivers)t?.onTimelineRotation?.call(t,this.director,this.target,e,i);return n[0]=i.x,n[1]=i.y,n[2]=i.z,n[3]=i.w,n},e}}createPositionInterpolant(e,t,r){let i=r.createInterpolant.bind(r),a=new n;this.ensureTrackOffsets();let o=this.trackOffset?.rotation,s=this.trackOffset?.position,c;r.createInterpolant=()=>{let n=i(),r=n.evaluate.bind(n);return n.evaluate=n=>{let i=r(n);if(a.set(i[0],i[1],i[2]),t.removeStartOffset&&(c===void 0?(c=null,c=this._actionOffsets.find(t=>t.clip===e)?.rootStartPosition?.clone()):c?.isVector3&&a.sub(c)),a.applyQuaternion(this._totalOffsetRotation),a.add(this._totalOffsetPosition),o&&a.applyQuaternion(o),s&&(a.x-=s.x,a.y+=s.y,a.z+=s.z),this.director.animationCallbackReceivers)for(let e of this.director.animationCallbackReceivers)e?.onTimelinePosition?.call(e,this.director,this.target,n,a);return i[0]=a.x,i[1]=a.y,i[2]=a.z,i},n}}},Kr=N(`mutetimeline`),qr=class e extends Ur{models=[];listener;audio=[];audioContextTimeOffset=[];lastTime=0;audioSource;_audioLoader=null;getAudioFilePath(e){let t=this.director.sourceId;return At(t,e)}onAllowAudioChanged(e){for(let t=0;t=a.start&&e<=a.end&&e.3?o.offset=a.clipIn+(e-a.start)*a.timeScale:o.offset=0,Hr&&console.log(`Timeline Audio (`+this.track.name+`) play with offset `+o.offset+` - `+a.asset.clip),o.play(r),a._didTriggerPlay=!0);else{let t=a.clipIn+(e-a.start)*a.timeScale,n=o.context.currentTime-o._startedAt+o.offset;Math.abs(t-n)>.3&&(o.offset=t,o.stop(),o.play(r))}let i=s.volume;if(this.track.volume!==void 0&&(i*=this.track.volume),t&&(i=0),a.easeInDuration>0){let t=Math.min((e-a.start)/a.easeInDuration,1);i*=t}if(a.easeOutDuration>0){let t=Math.min((a.end-e)/a.easeOutDuration,1);i*=t}o.setVolume(i*this.director.weight)}else a._didTriggerPlay=!1,this.director.isPlaying&&o.isPlaying&&o.stop()}this.lastTime=e}loadAudio(e,t=0,n=0){let r=null,i=e-n,a=e+t;for(let e of this.models)if(this.isInTimeRange(e,i,a)){let t=this.audio[this.models.indexOf(e)],n=this.handleAudioLoading(e,t);n!==null&&(r===null&&(r=[]),r.push(n))}return r===null?null:Promise.all(r)}isInTimeRange(e,t,n){return t<=e.start&&n>=e.end||t>=e.start&&t<=e.end||n>=e.start&&n<=e.end}static _audioBuffers=new Map;static dispose(){e._audioBuffers.clear()}handleAudioLoading(t,n){this._audioLoader||=new xe;let r=this.getAudioFilePath(t.asset.clip);if(e._audioBuffers.get(r)){let t=e._audioBuffers.get(r);return t.then(e=>{e&&n.setBuffer(e)}),t}Hr&&console.warn(`LOAD audio track`,r,this.director.sourceId);let i=new Promise((e,t)=>{this._audioLoader.load(r,t=>{n.setBuffer(t),e(t)},void 0,t=>{console.error(`Error loading audio`,t),e(null)})});return e._audioBuffers.set(r,i),i}},Jr=class extends Ur{models=[];needsSorting=!0;*foreachMarker(e=null){this.needsSorting&&this.sort();for(let t of this.models)t&&t.type===e&&(yield t)}onEnable(){this.needsSorting=!0}evaluate(e){this.needsSorting&&this.sort()}sort(){this.needsSorting=!1,this.models.sort((e,t)=>e.time-t.time)}},Yr=class extends Ur{models=[];didTrigger=[];receivers=[];evaluate(e){if(this.track.muted)return;let t=this.director.context.time.deltaTime*1.5;for(let n=0;n=1e-5&&e=0;e--){let t=this.models[e].asset;if(!t.sourceObject||typeof t.sourceObject!=`object`){console.log(`no source object, removing model`,e,t),this.models.splice(e,1);continue}else{let e=this.director.constructor,n=F.getComponent(t.sourceObject,e);this.timelines.push(n),n&&t.updateDirector&&(n.playOnAwake=!1)}}}_previousActiveModel=null;evaluate(e){this._previousActiveModel=null;for(let t=0;t=n.start&&e<=n.end){this._previousActiveModel=n;let i=this.getClipTime(e,n);if(r.controlActivation){let e=r.sourceObject;e.visible=!0}if(r.updateDirector){let e=this.timelines[t];e&&(e.isPlaying&&e.pause(),e.time=i,e.evaluate())}}else{let e=this._previousActiveModel?.asset;if(r.controlActivation){let t=r.sourceObject;e?.sourceObject!==t&&(t.visible=!1)}}}}},Zr=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Qr=N(`debugtimeline`),$r;(function(e){e[e.Hold=0]=`Hold`,e[e.Loop=1]=`Loop`,e[e.None=2]=`None`})($r||={});var ei;(function(e){e[e.None=0]=`None`,e[e.Hold=1]=`Hold`,e[e.Loop=2]=`Loop`,e[e.PingPong=3]=`PingPong`,e[e.Continue=4]=`Continue`})(ei||={});var ti=class e extends R{static createTrackFunctions={};static registerCreateTrack(e,t){this.createTrackFunctions[e]=t}playableAsset;playOnAwake;extrapolationMode=$r.Loop;get isPlaying(){return this._isPlaying}get isPaused(){return this._isPaused}get time(){return this._time}set time(e){typeof e==`number`&&!Number.isNaN(e)?this._time=e:(Qr||Ue())&&console.error(`INVALID TIMELINE.TIME VALUE`,e,this.name)}get duration(){return this._duration}set duration(e){this._duration=e}get weight(){return this._weight}set weight(e){this._weight=e}get speed(){return this._speed}set speed(e){this._speed=e}waitForAudio=!0;_visibilityChangeEvt;_clonedPlayableAsset=!1;_speed=1;awake(){Qr&&console.log(`[Timeline] Awake '${this.name}'`,this),this.rebuildGraph(),!this.isValid()&&(Qr||w())&&(Qr?console.warn(`PlayableDirector is not valid`,`Asset?`,this.playableAsset,`Tracks:`,this.playableAsset?.tracks,`IsArray?`,Array.isArray(this.playableAsset?.tracks),this):this.playableAsset?.tracks?.length?console.warn(`PlayableDirector is not valid`):console.warn(`PlayableDirector has no tracks`))}onEnable(){Qr&&console.log(`[Timeline] OnEnable`,this.name,this.playOnAwake);for(let e of this._audioTracks)e.onEnable?.();for(let e of this._customTracks)e.onEnable?.();for(let e of this._animationTracks)e.onEnable?.();this.playOnAwake&&this.play(),this._visibilityChangeEvt||=()=>{switch(document.visibilityState){case`hidden`:this.setAudioTracksAllowPlaying(!1);break;case`visible`:this.setAudioTracksAllowPlaying(!0);break}},window.addEventListener(`visibilitychange`,this._visibilityChangeEvt)}onDisable(){Qr&&console.log(`[Timeline] OnDisable`,this.name),this.stop();for(let e of this._audioTracks)e.onDisable?.();for(let e of this._customTracks)e.onDisable?.();for(let e of this._animationTracks)e.onDisable?.();this._visibilityChangeEvt&&window.removeEventListener(`visibilitychange`,this._visibilityChangeEvt)}onDestroy(){for(let e of this._allTracks)for(let t of e)t.onDestroy?.()}rebuildGraph(){this.isValid()&&(this.resolveBindings(),this.updateTimelineDuration(),this.setupAndCreateTrackHandlers())}async play(){if(!this.isValid())return;let e=this._isPaused==1;if(this._isPaused=!1,!this._isPlaying){if(this._isPlaying=!0,e&&this.invokePauseChangedMethodsOnTracks(),this.waitForAudio){let e=[];for(let t of this._audioTracks){let n=t.loadAudio(this._time,1,0);n&&e.push(n)}if(e.length>0&&(await Promise.all(e),!this._isPlaying))return;for(;this._audioTracks.length>0&&this._isPlaying&&!Kn.userInteractionRegistered&&this.waitForAudio;)await zt(200)}this.invokeStateChangedMethodsOnTracks(),this._internalUpdateRoutine=this.startCoroutine(this.internalUpdate(),an.LateUpdate)}}pause(){this.isValid()&&(this._isPlaying=!1,!this._isPaused&&(this._isPaused=!0,this.internalEvaluate(),this.invokePauseChangedMethodsOnTracks(),this.invokeStateChangedMethodsOnTracks()))}stop(){this._isStopping=!0;for(let e of this._audioTracks)e.stop();let e=this._isPaused==1,t=this._isPlaying;this._isPlaying&&(this._time=0,this._isPlaying=!1,this._isPaused=!1,this.internalEvaluate(),e&&this.invokePauseChangedMethodsOnTracks()),this._isPlaying=!1,this._isPaused=!1,e&&!t&&this.invokePauseChangedMethodsOnTracks(),t&&this.invokeStateChangedMethodsOnTracks(),this._internalUpdateRoutine&&this.stopCoroutine(this._internalUpdateRoutine),this._internalUpdateRoutine=null,this._isStopping=!1}evaluate(){this.internalEvaluate(!0)}isValid(){return this.playableAsset&&this.playableAsset.tracks&&Array.isArray(this.playableAsset.tracks)}*forEachTrack(){for(let e of this._allTracks)for(let t of e)yield t}get animationTracks(){return this._animationTracks}get audioTracks(){return this._audioTracks}get signalTracks(){return this._signalTracks}get markerTracks(){return this._markerTracks}*foreachMarker(e=null){for(let t of this._markerTracks)for(let n of t.foreachMarker(e))yield n}_guidsMap;resolveGuids(e){this._guidsMap=e}_isPlaying=!1;_internalUpdateRoutine;_isPaused=!1;_isStopping=!1;_time=0;_duration=0;_weight=1;_animationTracks=[];_audioTracks=[];_signalTracks=[];_markerTracks=[];_controlTracks=[];_customTracks=[];_tracksArray=[];get _allTracks(){return this._tracksArray.length=0,this._tracksArray.push(this._animationTracks),this._tracksArray.push(this._audioTracks),this._tracksArray.push(this._signalTracks),this._tracksArray.push(this._markerTracks),this._tracksArray.push(this._controlTracks),this._tracksArray.push(this._customTracks),this._tracksArray}invokePauseChangedMethodsOnTracks(){for(let e of this.forEachTrack())e.onPauseChanged?.call(e)}invokeStateChangedMethodsOnTracks(){for(let e of this.forEachTrack())e.onStateChanged?.call(e,this._isPlaying)}*internalUpdate(){for(;this._isPlaying&&this.activeAndEnabled;)!this._isPaused&&this._isPlaying&&(this._time+=this.context.time.deltaTime*this.speed,this.internalEvaluate()),yield}internalEvaluate(e=!1){if(!this.isValid())return;let t=this._time;switch(this.extrapolationMode){case $r.Hold:this._speed>0?t=Math.min(t,this._duration):this._speed<0&&(t=Math.max(t,0)),this._time=t;break;case $r.Loop:t%=this._duration,this._time=t;break;case $r.None:if(t>this._duration){this.stop();return}break}let n=this._time;for(let t of this.playableAsset.tracks)if(!t.muted)switch(t.type){case zr.Activation:if(!e&&!this._isPlaying)continue;for(let e=0;e=0;r--){let i=n.outputs[r];if(typeof i==`string`){this._guidsMap&&this._guidsMap[i]&&(i=this._guidsMap[i]);let e=F.findByGuid(i,t);typeof e!=`object`||!e?(n.outputs.splice(r,1),console.warn(`Failed to resolve binding`,i,n.name,n.type)):(Qr&&console.log(`Resolved binding`,i,`to`,e),n.outputs[r]=e)}else if(i===null){if(n.outputs.splice(r,1),e.createTrackFunctions[n.type])continue;n.type!==zr.Audio&&n.type!==zr.Control&&n.type!==zr.Marker&&n.type!==zr.Signal&&console.warn(`Missing binding`,i,n.name,n.type,this.name,this.playableAsset.name)}}if(n.type===zr.Control&&n.clips)for(let e=0;ethis._duration&&(this._duration=t.end);if(e.markers)for(let t of e.markers)t.time>this._duration&&(this._duration=t.time+.001)}}}setupAndCreateTrackHandlers(){if(this._animationTracks.length=0,this._audioTracks.length=0,this._signalTracks.length=0,!this.playableAsset)return;let t=F.findObjectOfType(rr,this.context);for(let n of this.playableAsset.tracks){let r=n.type,i=e.createTrackFunctions[r];if(i!=null){let e=i(this,n);if(typeof e.evaluate==`function`){e.director=this,e.track=n,this._customTracks.push(e);continue}}if(n.type===zr.Animation){if(!n.clips||n.clips.length<=0){Qr&&console.warn(`Animation track has no clips`,n);continue}for(let e=n.outputs.length-1;e>=0;e--){let t=n.outputs[e];if(t instanceof y){let e=F.getOrAddComponent(t,it);e&&(t=e)}let r=t?.gameObject?.animations;if(r){let e=new Gr;e.trackOffset=n.trackOffset,e.director=this,e.track=n;for(let i=0;ie.name===s)),Qr&&console.log(o,s,`→`,c),!c){console.warn(`Could not find animationClip for model`,a,n.name,this.name,this.playableAsset?.name,r,t);continue}t instanceof it&&t.runtimeAnimatorController&&(t.__internalDidAwakeAndStart||t.initializeRuntimeAnimatorController(),t.runtimeAnimatorController.mixer||t.runtimeAnimatorController.bind(t),e.mixer=t.runtimeAnimatorController.mixer),e.mixer||(e.mixer=new oe(t.gameObject),this.context.animations.registerAnimationMixer(e.mixer)),e.clips.push(c),e.mixer.uncacheAction(c),e.createHooks(a.asset,c);let l=e.mixer.clipAction(c);e.actions.push(l),e.models.push(a)}this._animationTracks.push(e)}}}else if(n.type===zr.Audio){if(!n.clips||n.clips.length<=0)continue;let e=new qr;e.director=this,e.track=n,e.audioSource=n.outputs.find(e=>e instanceof Kn),this._audioTracks.push(e),t||=this.context.mainCameraComponent?.gameObject.addComponent(rr),e.listener=t.listener;for(let t=0;t0){let t=F.getComponent(this.gameObject,Rr);t&&(e.receivers.push(t),this._signalTracks.push(e))}t!==null&&t.models.length>0&&this._markerTracks.push(t)}}else if(n.type===zr.Signal){let e=new Yr;if(e.director=this,e.track=n,n.markers)for(let t of n.markers)e.models.push(t),e.didTrigger.push(!1);for(let t of n.outputs)e.receivers.push(t);this._signalTracks.push(e)}else if(n.type===zr.Control){let e=new Xr;if(e.director=this,e.track=n,n.clips)for(let t of n.clips)e.models.push(t);e.resolveSourceObjects(this.context),this._controlTracks.push(e)}}}setAudioTracksAllowPlaying(e){for(let t of this._audioTracks)t.onAllowAudioChanged(e)}animationCallbackReceivers=[];registerAnimationCallback(e){this.animationCallbackReceivers.push(e)}unregisterAnimationCallback(e){let t=this.animationCallbackReceivers.indexOf(e);t!==-1&&this.animationCallbackReceivers.splice(t,1)}};Zr([A()],ti.prototype,`playOnAwake`,void 0),Zr([A()],ti.prototype,`extrapolationMode`,void 0);var ni={topLight:{intensity:500,position:[.418,16.199,.3]},room:{position:[-.757,13.219,.717],scale:[31.713,28.305,28.591]},boxes:[{position:[-10.906,2.009,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,.857,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]},{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:50,position:[-16.116,14.37,8.208],scale:[.1,2.428,2.739]},{intensity:50,position:[-16.109,18.021,-8.207],scale:[.1,2.425,2.751]},{intensity:17,position:[14.904,12.198,-1.832],scale:[.15,4.265,6.331]},{intensity:43,position:[-.462,8.89,14.52],scale:[4.38,5.441,.088]},{intensity:20,position:[3.235,11.486,-12.541],scale:[2.5,2,.1]},{intensity:100,position:[0,20,0],scale:[1,.1,1]}]},ri={topLight:{intensity:400,position:[.5,14,.5]},room:{position:[0,13.2,0],scale:[31.5,28.5,31.5]},boxes:[{position:[-10.906,-1,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,-.16,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]},{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:80,position:[-14,10,8],scale:[.1,2.5,2.5]},{intensity:80,position:[-14,14,-4],scale:[.1,2.5,2.5]},{intensity:23,position:[14,12,0],scale:[.1,5,5]},{intensity:16,position:[0,9,14],scale:[5,5,.1]},{intensity:80,position:[7,8,-14],scale:[2.5,2.5,.1]},{intensity:80,position:[-7,16,-14],scale:[2.5,2.5,.1]},{intensity:1,position:[0,20,0],scale:[.1,.1,.1]}]},ii=class extends p{constructor(e){super(),this.position.y=-3.5;let t=new Ee;t.deleteAttribute(`uv`);let n=new fe({metalness:0,side:1}),r=new fe({metalness:0}),i=e==`legacy`?ni:ri,a=new De(16777215,i.topLight.intensity,28,2);a.position.set(...i.topLight.position),this.add(a);let o=new v(t,n);o.position.set(...i.room.position),o.scale.set(...i.room.scale),this.add(o);for(let e of i.boxes){let n=new v(t,r);n.position.set(...e.position),n.rotation.set(0,e.rotation,0),n.scale.set(...e.scale),this.add(n)}for(let e of i.lights){let n=new v(t,this.createAreaLightMaterial(e.intensity));n.position.set(...e.position),n.scale.set(...e.scale),this.add(n)}}createAreaLightMaterial(e){let t=new m;return t.color.setScalar(e),t}};async function ai(t){let{NeedleEngineWebComponent:n}=await e(async()=>{let{NeedleEngineWebComponent:e}=await import(`./needle-engine.CE4b2dOg.js`);return{NeedleEngineWebComponent:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url);n.observedAttributes.includes(t)||n.observedAttributes.push(t)}var H=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},U=N(`debugsceneswitcher`),oi=N(`sceneswitcher:clearscene`),si=`scene`;function ci(){ai(si)}var li=Promise.resolve(!1),W=class extends R{autoLoadFirstScene=!0;scenes=[];loadingScene;queryParameterName=`scene`;useSceneName=!0;clamp=!0;useHistory=!0;useKeyboard=!0;useSwipe=!0;useSceneLighting=!0;useSceneBackground=!0;preloadNext=1;preloadPrevious=1;preloadConcurrent=2;createMenuButtons=!1;get currentIndex(){return this._currentIndex}get currentLoadingProgress(){return this._currentLoadingProgress}get currentlyLoadingScene(){return this._currentlyLoadingScene}get currentlyLoadedScene(){return this._currentScene}sceneLoadingStart=new k;sceneLoadingProgress=new k;sceneLoaded=new k;_currentIndex=-1;_currentScene=void 0;_currentSceneAsset=void 0;_engineElementOverserver=void 0;_preloadScheduler;_menuButtons;__lastSwitchScene;__lastSwitchScenePromise;awake(){this._currentScene=void 0,this._lastLoadingScene=void 0,this.__lastSwitchScenePromise=void 0,this.scenes===void 0&&(this.scenes=[]);for(let e of this.scenes)e&&!e.hasUrl&&e.asset instanceof y?F.remove(e.asset):e instanceof y&&F.remove(e);U&&console.log(`SceneSwitcher`,this)}async onEnable(){if(globalThis.addEventListener(`popstate`,this.onPopState),this.context.input.addEventListener(Ie.KeyDown,this.onInputKeyDown),this.context.input.addEventListener(Ie.PointerMove,this.onInputPointerMove),this.context.input.addEventListener(Ie.PointerUp,this.onInputPointerUp),this._engineElementOverserver||=new MutationObserver(e=>{for(let t of e)if(t.type===`attributes`&&t.attributeName===si){let e=this.context.domElement.getAttribute(si);e!==null&&this.trySelectSceneFromValue(e)}}),this._engineElementOverserver.observe(this.context.domElement,{attributes:!0}),this._preloadScheduler||=new di(this),this._preloadScheduler.maxLoadAhead=this.preloadNext,this._preloadScheduler.maxLoadBehind=this.preloadPrevious,this._preloadScheduler.maxConcurrent=this.preloadConcurrent,this._preloadScheduler.begin(2e3),this.autoLoadFirstScene&&this._currentIndex===-1&&!await this.tryLoadFromQueryParam()){let e=this.context.domElement.getAttribute(si);try{(e===null||!await this.trySelectSceneFromValue(e))&&this._currentIndex===-1&&this.select(0)}finally{}}this.createMenuButtons&&(this._menuButtons??=[],this._menuButtons.push(this.context.menu.appendChild({label:`Previous`,icon:`arrow_back_ios`,onClick:()=>this.selectPrev(),priority:-1005,class:`row2`})),this._menuButtons.push(this.context.menu.appendChild({label:`Next`,icon:`arrow_forward_ios`,iconSide:`right`,onClick:()=>this.selectNext(),priority:-1e3,class:`row2`})))}onDisable(){if(globalThis.removeEventListener(`popstate`,this.onPopState),this.context.input.removeEventListener(Ie.KeyDown,this.onInputKeyDown),this.context.input.removeEventListener(Ie.PointerMove,this.onInputPointerMove),this.context.input.removeEventListener(Ie.PointerUp,this.onInputPointerUp),this._preloadScheduler?.stop(),this._menuButtons){for(let e of this._menuButtons)e.remove();this._menuButtons=void 0}}onPopState=async e=>{if(!this.useHistory)return;let t=this.useHistory;try{this.useHistory=!1;let t=!1;if(this.queryParameterName&&(t=await this.tryLoadFromQueryParam()),!t){let t=e?.state;if(t&&t.startsWith(this.guid)){let e=t.substr(this.guid.length+2);U&&console.log(`PopState`,e),await this.trySelectSceneFromValue(e)}}}finally{this.useHistory=t}};normalizedSwipeThresholdX=.1;_didSwipe=!1;onInputPointerMove=e=>{if(this.useSwipe&&!this._didSwipe&&e.button===0&&e.pointerType===`touch`&&this.context.input.getPointerPressedCount()===1){let t=this.context.input.getPointerPositionDelta(e.button);if(t){let e=t.x/this.context.domWidth;e>=this.normalizedSwipeThresholdX?(this._didSwipe=!0,this.selectPrev()):e<=-this.normalizedSwipeThresholdX&&(this._didSwipe=!0,this.selectNext())}}};onInputPointerUp=e=>{e.button===0&&(this._didSwipe=!1)};onInputKeyDown=e=>{if(!this.useKeyboard||!this.scenes)return;let t=e.key.toLowerCase();if(!t)return;let n=parseInt(t)-1;if(n>=0){this.trySelectSceneFromValue(n);return}switch(t){case`arrowright`:case`d`:this.selectNext();break;case`arrowleft`:case`a`:this.selectPrev();break}};addScene(e){if(typeof e==`string`){let t=this.context.addressables.findAssetReference(e);return t||(t=new Me(e),this.context.addressables.registerAssetReference(t)),this.scenes.push(t),t}return this.scenes.push(e),e}selectNext(){return this.select(this._currentIndex+1)}selectPrev(){return this.select(this._currentIndex-1)}select(e){if(U&&console.log(`[SceneSwitcher] select`,e),typeof e==`object`&&console.warn(`[SceneSwitcher] Switching to "`+e+`" might not work. Please either use an index or a AssetReference (not a scene reference)`),typeof e==`string`){let t=this.scenes?.find(t=>t.url===e);if(!t){let t=Me.getOrCreate(this.sourceId??``,e,this.context);return this.switchScene(t)}if(t)e=this.scenes?.indexOf(t);else return li}if(!this.scenes?.length)return li;if(e<0){if(this.clamp)return li;e=this.scenes.length-1}else if(e>=this.scenes.length){if(this.clamp)return li;e=0}let t=this.scenes[e];return this.switchScene(t)}unload(){return this.__lastSwitchScene=void 0,this.__lastSwitchScenePromise=void 0,this.__unloadCurrentScene()}async reload(){if(this.__lastSwitchScene){let e=this.__lastSwitchScene;return this.__lastSwitchScene=void 0,this.switchScene(e)}return!1}async switchScene(e){if(!(e instanceof Me)){let t=typeof e;if(t===`string`||t===`number`)return this.select(e);if(e&&e instanceof y){let t=this.scenes?.indexOf(e);e=new Me(e.name,void 0,e),t>=0&&(this.scenes[t]=e)}else return console.warn(`[SceneSwitcher] Can't switch to scene of type ${t}`),!1}return e.url===this.sourceId?(console.warn(`[SceneSwitcher] Can't load own scene - prevent recursive loading`,this.sourceId),!1):this.__lastSwitchScene===e&&this.__lastSwitchScenePromise?this.__lastSwitchScenePromise:(this.__lastSwitchScene=e,this.__lastSwitchScenePromise=this.__internalSwitchScene(e),await this.__lastSwitchScenePromise)}async __unloadCurrentScene(){let e=this._currentScene;if(this._currentScene=void 0,e){U&&console.log(`[SceneSwitcher] UNLOAD`,e.url,`HasURL?: `+e.hasUrl);let t=this.tryGetSceneEventListener(e.asset);if(t?.sceneClosing){let e=t.sceneClosing();e instanceof Promise&&await e}e.hasUrl?(e.unload(),this._currentSceneAsset&&L(this._currentSceneAsset,!0,!1)):F.remove(this._currentSceneAsset)}}_currentlyLoadingScene;async __internalSwitchScene(e){await this.__unloadCurrentScene();let t=this._currentIndex=this.scenes?.indexOf(e)??-1;try{U&&console.debug(`${Date.now()} [SceneSwitcher] Loading scene start: ${e.url} (index: ${t})`),this._currentlyLoadingScene=e,this._currentLoadingProgress=new ProgressEvent(`progress`,{loaded:0,total:1});let n=new CustomEvent(`loadscene-start`,{detail:{scene:e,switcher:this,index:t}});this.dispatchEvent(n),this.sceneLoadingStart?.invoke(n.detail),await this.onStartLoading(),await e.loadAssetAsync((t,n)=>{if(U){let t=n.loaded/n.total,r=`[`+`=`.repeat(Math.floor(t*20))+`-`.repeat(20-Math.floor(t*20))+`]`;console.debug(`${Date.now()} [SceneSwitcher] Loading scene progress: ${(t*100).toFixed(1)} % ${r}`,e.url)}this._currentLoadingProgress=n,this.dispatchEvent(n),this.sceneLoadingProgress?.invoke(n)}).catch(console.error),await this.onEndLoading();let r=new CustomEvent(`loadscene-finished`,{detail:{scene:e,switcher:this,index:t}});if(this.dispatchEvent(r),this._currentLoadingProgress=void 0,this._currentlyLoadingScene=void 0,r.defaultPrevented)return U&&console.warn(`[SceneSwitcher] Adding loaded scene prevented:`,e,r),!1;if(!e.asset)return U&&console.warn(`[SceneSwitcher] Failed loading scene:`,e),!1;if(this._currentIndex===t){if(U&&console.log(`[SceneSwitcher] ADD`,e.url),this._currentScene=e,oi){let e=this.context.mainCameraComponent?.gameObject||this.context.mainCamera;e?.removeFromParent();let t=this.gameObject.removeFromParent();L(this.context.scene,!0,!0),this.context.scene=new p,this.context.scene.add(t),e&&this.context.scene.add(e)}if(e.asset.parent?this._currentSceneAsset=tt(e.asset,{parent:this.gameObject}):(this._currentSceneAsset=e.asset,F.add(e.asset,this.gameObject)),this.useSceneLighting&&this.context.sceneLighting.enable(e),this.useSceneBackground){let t=this.context.lightmaps.tryGetSkybox(e.url);t?(t.mapping!==306&&(t.mapping=303),this.context.scene.background=t):U&&console.warn(`[SceneSwitcher] Can't find skybox for scene `+e.url)}if(this.useHistory&&t>=0){let n=t.toString();if(this.useSceneName&&(e instanceof y?n=e.name:e.url&&(n=ui(e.url))),this.queryParameterName?.length)Ve(this.queryParameterName,n,this.useHistory);else{let e=history.state,n=this.guid+`::`+t;e!==n&&history.pushState(n,`unused`,location.href)}}let n=this.tryGetSceneEventListener(e.asset);if(n?.sceneOpened){let e=n.sceneOpened(this);e instanceof Promise&&await e}U&&console.debug(`${Date.now()} [SceneSwitcher] Loading scene finished: ${e.url} (index: ${t})`);let r=new CustomEvent(`scene-opened`,{detail:{scene:e,switcher:this,index:t}});return this.dispatchEvent(r),this.sceneLoaded?.invoke(this),!0}}catch(e){console.error(e)}return!1}preload(e){if(e>=0&&e=0&&t=0&&ee!=null),await this._loadingScenePromise,this._isCurrentlyLoading&&this.loadingScene?.asset)){U&&console.log(`Add loading scene`,this.loadingScene.url,this.loadingScene.asset);let e=this.loadingScene.asset;F.add(e,this.gameObject);let t=this.tryGetSceneEventListener(e);if(t?.sceneOpened){let e=t.sceneOpened(this);e instanceof Promise&&await e}}if(this._isCurrentlyLoading){let e=this.tryGetSceneEventListener(this.gameObject);if(e&&e.sceneOpened){let t=e.sceneOpened(this);t instanceof Promise&&await t}}}async onEndLoading(){if(this._isCurrentlyLoading=!1,this.loadingScene?.asset){U&&console.log(`Remove loading scene`,this.loadingScene.url);let e=this.loadingScene.asset,t=this.tryGetSceneEventListener(e);if(typeof t?.sceneClosing==`function`){let e=t.sceneClosing();e instanceof Promise&&await e}F.remove(e)}if(!this._isCurrentlyLoading){let e=this.tryGetSceneEventListener(this.gameObject);if(e&&e.sceneClosing){let t=e.sceneClosing();t instanceof Promise&&await t}}}tryGetSceneEventListener(e,t=0){if(!e)return null;let n=F.foreachComponent(e,e=>{let t=e;if(t.sceneClosing||t.sceneOpened)return t});if(t===0&&!n&&e.children.length)for(let n of e.children){let e=this.tryGetSceneEventListener(n,t+1);if(e)return e}return n||null}};H([A()],W.prototype,`autoLoadFirstScene`,void 0),H([A(Me)],W.prototype,`scenes`,void 0),H([A(Me)],W.prototype,`loadingScene`,void 0),H([A()],W.prototype,`queryParameterName`,void 0),H([A()],W.prototype,`useSceneName`,void 0),H([A()],W.prototype,`clamp`,void 0),H([A()],W.prototype,`useHistory`,void 0),H([A()],W.prototype,`useKeyboard`,void 0),H([A()],W.prototype,`useSwipe`,void 0),H([A()],W.prototype,`useSceneLighting`,void 0),H([A()],W.prototype,`useSceneBackground`,void 0),H([A()],W.prototype,`preloadNext`,void 0),H([A()],W.prototype,`preloadPrevious`,void 0),H([A()],W.prototype,`preloadConcurrent`,void 0),H([A()],W.prototype,`createMenuButtons`,void 0),H([A(k)],W.prototype,`sceneLoadingStart`,void 0),H([A(k)],W.prototype,`sceneLoadingProgress`,void 0),H([A(k)],W.prototype,`sceneLoaded`,void 0);function ui(e){let t=e.split(`/`).pop()?.split(`.`).shift();return t?.length?t:e}var di=class{maxLoadAhead;maxLoadBehind;maxConcurrent;_isRunning=!1;_switcher;_loadTasks=[];_maxConcurrentLoads=1;constructor(e,t=1,n=1,r=2){this._switcher=e,this.maxLoadAhead=t,this.maxLoadBehind=n,this.maxConcurrent=r}begin(e){if(this._isRunning)return;U&&console.log(`[SceneSwitcher] Preload scheduled`,{delay:e}),this._isRunning=!0;let t=-10,n,r,i=this._switcher.scenes,a=Date.now()+e,o=setInterval(()=>{if(this.allLoaded()&&(U&&console.log(`[SceneSwitcher] All scenes (pre-)loaded`),this.stop()),!this._isRunning){clearInterval(o);return}if(Date.now()s)return;let c=e?t+n:t-n;if(!(c<0)&&!(c<0||c>=i.length)&&!this._loadTasks.some(e=>e.index===c)){let n=i[c];U&&console.log(`[SceneSwitcher] Schedule preload scene`,{roomIndex:c,searchForward:e,lastRoom:t,currentIndex:this._switcher.currentIndex,tasks:this._loadTasks.length},n?.url),new fi(c,n,this._loadTasks)}},200)}stop(){this._isRunning=!1}canLoadNewScene(){return this._loadTasks.length=0&&this.tasks.splice(e,1)}},pi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},G=N(`debugskybox`);function mi(){ai(`background-image`),ai(`environment-image`)}var hi={studio:{url:`https://cdn.needle.tools/static/skybox/modelviewer-Neutral.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/modelviewer-Neutral-small.pmrem4x4.ktx2?pmrem`},"blurred-skybox":{url:`https://cdn.needle.tools/static/skybox/blurred-skybox.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/blurred-skybox-small.pmrem4x4.ktx2?pmrem`},"quicklook-ar":{url:`https://cdn.needle.tools/static/skybox/QuickLook-ARMode.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/QuickLook-ARMode-small.pmrem4x4.ktx2?pmrem`},quicklook:{url:`https://cdn.needle.tools/static/skybox/QuickLook-ObjectMode.pmrem4x4.ktx2?pmrem`,url_low:`https://cdn.needle.tools/static/skybox/QuickLook-ObjectMode-small.pmrem4x4.ktx2?pmrem`}};function gi(e,t,n,r,i){if(t===`transparent`||t?.startsWith(`rgb`)||t?.startsWith(`#`))return console.warn(`Needle Engine: Invalid ${i} value (${t}). Did you mean to set background-color instead?`),null;let a=new vi;a.sourceId=Je(t),a.allowDrop=!1,a.allowNetworking=!1,a.background=n,a.environment=r,F.addComponent(e.scene,a);let o=t=>{if(G&&console.log(i,`CHANGED TO`,t),t){if(typeof t!=`string`){console.warn(`Invalid attribute value for `+i);return}a.setSkybox(t)}else if(a.sourceId&&(r&&(e.sceneLighting.internalEnableReflection(a.sourceId)||(e.scene.environment=null)),n)){let t=e.lightmaps.tryGetSkybox(a.sourceId);e.scene.background=t}};return Dt(e.domElement,i,o),a.addEventListener(`destroy`,()=>{G&&console.log(`Destroyed attribute remote skybox`,i),Ae(e.domElement,i,o)}),a.setSkybox(t)}var _i=[];lt.registerCallback(st.ContextCreationStart,e=>{let t=e.context,n=t.domElement.getAttribute(`background-image`),r=t.domElement.getAttribute(`environment-image`);if(n){G&&console.log(`Creating RemoteSkybox to load background `+n);let e=gi(t,n,!0,!1,`background-image`);e&&_i.push(e)}if(r){G&&console.log(`Creating RemoteSkybox to load environment `+r);let e=gi(t,r,!1,!0,`environment-image`);e&&_i.push(e)}}),lt.registerCallback(st.ContextCreationStart,()=>Promise.all(_i).finally(()=>{_i.length=0}));var vi=class extends R{url=`studio`;allowDrop=!0;background=!0;environment=!0;allowNetworking=!0;_prevUrl;_prevLoadedEnvironment;_prevEnvironment=null;_prevBackground=null;onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.scene.environment=this._prevEnvironment,Ne.backgroundShouldBeTransparent(this.context)||(this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents(),this.context.mainCameraComponent?.applyClearFlags()}urlChangedSyncField(){this.allowNetworking&&this.url&&(this.isRemoteTexture(this.url)?this.setSkybox(this.url):G&&console.warn(`RemoteSkybox: Not setting skybox: ${this.url} is not a remote texture. If you want to set a local texture, set allowNetworking to false.`))}async setSkybox(e,t){if(!this.activeAndEnabled||(e=yi(e,this.environment,this.background),!e))return!1;if(t??=e,this.isValidTextureType(t)||console.warn(`Potentially invalid skybox URL: "`+t+`" on `+(this.name||this.gameObject?.name||`context`)),G&&console.log(`Set RemoteSkybox url: `+e),this._prevUrl===e&&this._prevLoadedEnvironment)return this.apply(),!0;this._prevLoadedEnvironment?.dispose(),this._prevLoadedEnvironment=void 0,this._prevUrl=e;let n=await pr(e,this.context.renderer);return n?!this.enabled||this.destroyed?(G&&console.warn(`RemoteSkybox: Component is disabled or destroyed`),!1):this._prevUrl===e?(this.url=e,this._prevLoadedEnvironment=n,this.apply(),!0):(G&&console.warn(`RemoteSkybox: URL changed while loading texture, aborting setSkybox`),!1):(G&&console.warn(`RemoteSkybox: Failed to load texture from url`,e),!1)}apply(){let e=this._prevLoadedEnvironment;if(e&&(e instanceof ee||e instanceof d||e.mapping==306||(e.mapping=304,e.needsUpdate=!0),!this.destroyed)){if(!this.context){console.warn(`RemoteSkybox: Context is not available - can not apply skybox.`);return}this.context.scene.background!==e&&(this._prevBackground=this.context.scene.background),this.context.scene.environment!==e&&(this._prevEnvironment=this.context.scene.environment),G&&console.log(`Set RemoteSkybox (`+(this.environment&&this.background?`environment and background`:this.environment?`environment`:this.background?`background`:`none`)+`)`,this.url,!Ne.backgroundShouldBeTransparent(this.context)),this.environment&&(this.context.scene.environment=e),this.background&&!Ne.backgroundShouldBeTransparent(this.context)&&(this.context.scene.background=e),this.context.mainCameraComponent?.backgroundBlurriness!==void 0&&(this.context.scene.backgroundBlurriness=this.context.mainCameraComponent.backgroundBlurriness)}}validProtocols=[`file:`,`blob:`,`data:`];validTextureTypes=[`.ktx2`,`.hdr`,`.exr`,`.jpg`,`.jpeg`,`.png`];isRemoteTexture(e){return e.startsWith(`http://`)||e.startsWith(`https://`)}isValidTextureType(e){for(let t of this.validTextureTypes)if(e.includes(t))return!0;for(let t of this.validProtocols)if(e.startsWith(t))return!0;return!1}registerDropEvents(){this.unregisterDropEvents(),this.context.domElement.addEventListener(`dragover`,this.onDragOverEvent),this.context.domElement.addEventListener(`drop`,this.onDrop)}unregisterDropEvents(){this.context.domElement.removeEventListener(`dragover`,this.onDragOverEvent),this.context.domElement.removeEventListener(`drop`,this.onDrop)}onDragOverEvent=e=>{if(this.allowDrop&&e.dataTransfer)for(let t of e.dataTransfer.types)(t===`text/uri-list`||t===`Files`)&&e.preventDefault()};onDrop=e=>{if(this.allowDrop&&e.dataTransfer){for(let t of e.dataTransfer.types)if(G&&console.log(t),t===`text/uri-list`){let n=e.dataTransfer.getData(t);G&&console.log(t,n);let r=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?.+)\.png/).exec(n)?.groups?.name;if(r||=new RegExp(/polyhaven\.com\/a\/(?.+)/).exec(n)?.groups?.name,G&&console.log(r),r){let t=`https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/`+r+`_1k.exr`;console.log(`[Remote Skybox] Setting skybox from url: ${t}`),e.preventDefault(),this.setSkybox(t);break}else if(this.isValidTextureType(n)){console.log(`[Remote Skybox] Setting skybox from url: `+n),e.preventDefault(),this.setSkybox(n);break}else{console.warn(`[RemoteSkybox] Unknown url ${n}. If you want to load a skybox from a url, make sure it is a valid image url. Url must end with${this.validTextureTypes.join(`, `)}.`);let t=new CustomEvent(`dropped-unknown-url`,{detail:{sender:this,event:e,url:n,apply:t=>{e.preventDefault(),this.setSkybox(t)}}});this.dispatchEvent(t)}}else if(t==`Files`){let n=e.dataTransfer.files.item(0);if(G&&console.log(t,n),!n)continue;if(!this.isValidTextureType(n.name)){console.warn(`[RemoteSkybox]: File \"${n.name}\" is not supported. Supported files are ${this.validTextureTypes.join(`, `)}`);return}e.preventDefault(),this.setSkybox(n.name);break}}}};pi([Wn(vi.prototype.urlChangedSyncField),A(URL)],vi.prototype,`url`,void 0),pi([A()],vi.prototype,`allowDrop`,void 0),pi([A()],vi.prototype,`background`,void 0),pi([A()],vi.prototype,`environment`,void 0),pi([A()],vi.prototype,`allowNetworking`,void 0);function yi(e,t,n){if(e==null)return null;let r=t&&!n,i=hi[e.toLowerCase()];return i?r?i.url_low:i.url:(typeof e==`string`&&e?.length&&(w()||G)&&(e.includes(`/`)||e.includes(`.`)||console.warn(`RemoteSkybox: Unknown magic skybox name "${e}". Valid names are: ${Object.keys(hi).map(e=>`"${e}"`).join(`, `)}`)),e)}var bi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},xi=class extends R{from;to;width=0;centered=!0;_centerPos;awake(){this._centerPos=new n}update(){if(!this.from||!this.to)return;let e=M(this.from).clone(),t=M(this.to).clone(),n=e.distanceTo(t);this._centerPos.copy(e),this._centerPos.add(t),this._centerPos.multiplyScalar(.5),Oe(this.gameObject,this.centered?this._centerPos:e),this.gameObject.lookAt(M(this.to).clone()),this.gameObject.scale.set(this.width,this.width,n)}};bi([A(F)],xi.prototype,`from`,void 0),bi([A(F)],xi.prototype,`to`,void 0);var Si=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ci=class extends R{length=1;depthTest=!0;isGizmo=!1;_axes=null;onEnable(){if(this.isGizmo&&!Lt)return;this._axes||=new se(this.length),this._axes.layers.disableAll(),this._axes.layers.set(this.layer),this.gameObject.add(this._axes);let e=this._axes.material;e&&e.depthTest!==void 0&&(e.depthTest=this.depthTest)}onDisable(){this._axes&&this.gameObject.remove(this._axes)}};Si([A()],Ci.prototype,`length`,void 0),Si([A()],Ci.prototype,`depthTest`,void 0),Si([A()],Ci.prototype,`isGizmo`,void 0);var wi=class extends R{from;to;hint;desiredDistance=1;onEnable(){}update(){if(!this.from||!this.to||!this.hint)return;let e=M(this.to).clone(),t=M(this.from).clone(),r=e.distanceTo(t),i=e.clone();i.sub(t);let a=t.clone();a.add(e),a.multiplyScalar(.5);let o=M(this.hint).clone();o.sub(a);let s=new n;s.crossVectors(o,i),s.crossVectors(i,s),s.normalize();let c=r*.5,l=Math.max(this.desiredDistance,c),u=Math.sqrt(l*l-c*c),d=s.clone();d.multiplyScalar(u),d.add(a),Oe(this.gameObject,d);let f=a.clone();f.sub(s),this.gameObject.lookAt(f)}},Ti=N(`gizmos`),Ei=N(`debugboxhelper`),Di=class e extends R{box=null;static testBox=new ie;_lastMatrixUpdateFrame=-1;static _position=new n;static _size=new n(.01,.01,.01);static _emptyObjectSize=new n(.01,.01,.01);isInBox(t){if(!t)return;if(this.box||=new ie,Nt([t],void 0,void 0,e.testBox),e.testBox.isEmpty()){let n=M(t,e._position);e.testBox.setFromCenterAndSize(n,e._emptyObjectSize)}this.updateBox();let n=this.box?.intersectsBox(e.testBox);return n&&Ei&&V.DrawWireBox3(e.testBox,16711680,5),n}intersects(e){return e?this.updateBox(!1).intersectsBox(e):!1}updateBox(t=!1){if(this.box||=new ie,t||this.context.time.frameCount!=this._lastMatrixUpdateFrame){let t=this._lastMatrixUpdateFrame<0;this._lastMatrixUpdateFrame=this.context.time.frameCount;let n=t,r=M(this.gameObject,e._position,n),i=_t(this.gameObject,e._size);this.box.setFromCenterAndSize(r,i)}return this.box}_helper=null;_color=null;awake(){this._helper=null,this._color=null,this.box=null}showHelper(e=null,t=!1){if(!(!Ti&&!t)){if(this._helper){e&&this._color?.set(e),this.gameObject.add(this._helper);return}this._helper=Pt(e),this.gameObject.add(this._helper)}}},Oi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ki=N(`debugcharactercontroller`),Ai=class extends R{center=new n(0,0,0);radius=.5;height=2;_rigidbody=null;get rigidbody(){return this._rigidbody?this._rigidbody:(this._rigidbody=this.gameObject.getComponent(E),this._rigidbody||=this.gameObject.addComponent(E),this.rigidbody)}_activeGroundCollisions;awake(){this._activeGroundCollisions=new Set}onEnable(){let e=this.rigidbody,t=this.gameObject.getComponent(Mn);t||=this.gameObject.addComponent(Mn),t.center.copy(this.center),t.radius=this.radius,t.height=this.height;let r=new n(0,0,1),i=new n(1,0,0),a=new n(0,1,0),o=this.gameObject.getWorldDirection(new n);o.y=0;let s=i.dot(o)<0?-1:1,c=r.angleTo(o)*s;this.gameObject.setRotationFromAxisAngle(a,c),e.lockRotationX=!0,e.lockRotationY=!0,e.lockRotationZ=!0}move(e){this.gameObject.position.add(e)}onCollisionEnter(e){(e.contacts.length==0||e.contacts.some(e=>e.normal.y>.2))&&(this._activeGroundCollisions.add(e),ki&&console.log(`Collision(${this._activeGroundCollisions.size}): ${e.contacts.map(e=>e.normal.y.toFixed(2)).join(`, `)} - ${this.isGrounded}`))}onCollisionExit(e){this._activeGroundCollisions.delete(e),ki&&console.log(`Collision(${this._activeGroundCollisions.size}) - ${this.isGrounded}`)}get isGrounded(){return this._activeGroundCollisions.size>0}_contactVelocity=new n;get contactVelocity(){this._contactVelocity.set(0,0,0);for(let e of this._activeGroundCollisions){let t=this.context.physics.engine?.getLinearVelocity(e.collider);t&&(this._contactVelocity.x+=t.x,this._contactVelocity.y+=t.y,this._contactVelocity.z+=t.z)}return this._contactVelocity}};Oi([A(n)],Ai.prototype,`center`,void 0),Oi([A()],Ai.prototype,`radius`,void 0),Oi([A()],Ai.prototype,`height`,void 0);var ji=class extends R{controller;movementSpeed=2;rotationSpeed=2;jumpForce=1;doubleJumpForce=2;animator;lookForward=!0;awake(){this._currentRotation=new x}update(){let e=this.context.input;e.isKeyPressed(`KeyW`)?this.moveInput.y+=1:e.isKeyPressed(`KeyS`)&&--this.moveInput.y,e.isKeyPressed(`KeyD`)?this.lookInput.x+=1:e.isKeyPressed(`KeyA`)&&--this.lookInput.x,this.jumpInput||=e.isKeyDown(`Space`)}move(e){this.moveInput.add(e)}look(e){this.lookInput.add(e)}jump(){this.jumpInput=!0}lookInput=new b(0,0);moveInput=new b(0,0);jumpInput=!1;onBeforeRender(){this.handleInput(this.moveInput,this.lookInput,this.jumpInput),this.lookInput.set(0,0),this.moveInput.set(0,0),this.jumpInput=!1}_currentSpeed=new n(0,0,0);_currentAngularSpeed=new n(0,0,0);_temp=new n(0,0,0);_jumpCount=0;_currentRotation;handleInput(e,t,r){if(this.controller?.isGrounded&&(this._jumpCount=0,this.doubleJumpForce>0&&this.animator?.setBool(`doubleJump`,!1)),this._currentSpeed.z+=e.y*this.movementSpeed*this.context.time.deltaTime,this.animator?.setBool(`running`,e.length()>.01),this.animator?.setBool(`jumping`,this.controller?.isGrounded===!0&&r),this._temp.copy(this._currentSpeed),this._temp.applyQuaternion(this.gameObject.quaternion),this.controller?this.controller.move(this._temp):this.gameObject.position.add(this._temp),this._currentAngularSpeed.y+=O.toRadians(-t.x*this.rotationSpeed)*this.context.time.deltaTime,this.lookForward&&Math.abs(this._currentAngularSpeed.y)<.01){let e=this.context.mainCameraComponent.forward;e.y=0,e.normalize(),this._currentRotation.setFromUnitVectors(new n(0,0,1),e),this.gameObject.quaternion.slerp(this._currentRotation,this.context.time.deltaTime*10)}if(this.gameObject.rotateY(this._currentAngularSpeed.y),this._currentSpeed.multiplyScalar(1-this.context.time.deltaTime*10),this._currentAngularSpeed.y*=1-this.context.time.deltaTime*10,this.controller&&r&&this.jumpForce>0){let e=this.controller?.isGrounded;if(this.doubleJumpForce>0&&!this.controller?.isGrounded&&this._jumpCount===1&&(e=!0,this.animator?.setBool(`doubleJump`,!0)),e){this._jumpCount+=1;let e=this.controller.rigidbody,t=this._jumpCount===2?this.doubleJumpForce:this.jumpForce;e.applyImpulse(new n(0,1,0).multiplyScalar(t))}}if(this.controller){let e=this.controller?.rigidbody.getVelocity().y;if(e<-1){this._raycastOptions.ray||(this._raycastOptions.ray=new a),this._raycastOptions.ray.origin.copy(M(this.gameObject)),this._raycastOptions.ray.direction.set(0,-1,0);let t=this.layer;this.gameObject.layers.disableAll(),this.gameObject.layers.set(2);let n=this.context.physics.raycast(this._raycastOptions);this.gameObject.layers.set(t),(n.length&&n[0].distance>2||e<-10)&&this.animator?.setBool(`falling`,!0)}else this.animator?.setBool(`falling`,!1)}}_raycastOptions=new Gt};Oi([A(Ai)],ji.prototype,`controller`,void 0),Oi([A()],ji.prototype,`movementSpeed`,void 0),Oi([A()],ji.prototype,`rotationSpeed`,void 0),Oi([A()],ji.prototype,`jumpForce`,void 0),Oi([A()],ji.prototype,`doubleJumpForce`,void 0),Oi([A(it)],ji.prototype,`animator`,void 0);var Mi=N(`logstats`),Ni=class extends R{onEnable(){console.log(this),Mi&&this.startCoroutine(this.run(),an.OnAfterRender)}*run(){for(;this.enabled;){let e=this.context.renderer.info;console.log(e.memory,e.render,e.programs),yield}}},Pi=class extends R{isUsed=!0;usedBy=null},Fi=class extends R{},Ii=N(`debugdeletable`),Li=class e extends Di{static _instances=[];onEnable(){e._instances.push(this)}onDisable(){let t=e._instances.indexOf(this);t>=0&&e._instances.splice(t,1)}},Ri=class extends R{update(){for(let e of Li._instances){let t=this.gameObject;if(e.isInBox(t)===!0){let t=F.getComponentInParent(this.gameObject,Pi);if(t)Ii&&console.warn(`DeleteBox: Not deleting object with usage marker`,this.guid,t);else{if(Ii)try{if(e.box){let t=e.box,n=Di.testBox;V.DrawWireBox3(t,16711680,5),V.DrawWireBox3(n,255,5),console.log(`DeleteBox: Destroying`,this.gameObject,{deleteBoxArea:t,deletedObjectArea:n})}else console.log(`DeleteBox: Destroying`,this.gameObject)}catch{}xt(this.gameObject,this.context.connection)}}}}},zi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Bi;(function(e){e[e.Never=0]=`Never`,e[e.Desktop=1]=`Desktop`,e[e.Mobile=2]=`Mobile`})(Bi||={});var Vi=class extends R{visibleOn;onEnable(){this.apply()}apply(){this.test()||F.setActive(this.gameObject,!1)}test(){return this.visibleOn<0?!0:yt.isMobileDevice()?(this.visibleOn&Bi.Mobile)!==0:(this.visibleOn&Bi.Desktop)!==0}};zi([A()],Vi.prototype,`visibleOn`,void 0);var Hi=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ui=N(`debugdrag`),Wi=[],K;(function(e){e[e.XZPlane=0]=`XZPlane`,e[e.Attached=1]=`Attached`,e[e.HitNormal=2]=`HitNormal`,e[e.DynamicViewAngle=3]=`DynamicViewAngle`,e[e.SnapToSurfaces=4]=`SnapToSurfaces`,e[e.None=5]=`None`})(K||={});var Gi=class e extends R{static get HasAnySelected(){return this._active>0}static _active=0;static get CurrentlySelected(){Wi.length=0;for(let e of this._instances)e._isDragging&&Wi.push(e);return Wi}static _instances=[];dragMode=K.DynamicViewAngle;snapGridResolution=0;keepRotation=!0;xrDragMode=K.Attached;xrKeepRotation=!1;xrDistanceDragFactor=1;showGizmo=!1;get draggedObject(){return this._targetObject}setTargetObject(e){this._targetObject=e;for(let t of this._dragHandlers.values())t.setTargetObject(e);let t=`_rigidbody-was-kinematic`;this._rigidbody?.[t]===!1&&(this._rigidbody.isKinematic=!1,this._rigidbody[t]=void 0),this._rigidbody=null,e&&(this._rigidbody=F.getComponentInChildren(e,E),this._rigidbody?.isKinematic===!1&&(this._rigidbody.isKinematic=!0,this._rigidbody[t]=!1))}_rigidbody=null;_targetObject=null;_dragHelper=null;static lastHovered;_draggingRigidbodies=[];_potentialDragStartEvt=null;_dragHandlers=new Map;_totalMovement=new n;_marker=null;_isDragging=!1;_didDrag=!1;awake(){this._potentialDragStartEvt=null,this._dragHandlers=new Map,this._totalMovement=new n,this._marker=null,this._isDragging=!1,this._didDrag=!1,this._dragHelper=null,this._draggingRigidbodies=[]}start(){this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onEnable(){e._instances.push(this),this.context.accessibility.updateElement(this,{role:`button`,label:`Drag `+(this.gameObject.name||`object`),hidden:!1})}onDisable(){this.context.accessibility.updateElement(this,{hidden:!0}),e._instances=e._instances.filter(e=>e!==this)}onDestroy(){this.context.accessibility.removeElement(this)}allowEdit(e=null){return this.context.connection.allowEditing}onPointerEnter(t){if(!this.allowEdit(this.gameObject)||t.mode!==`screen`||(t.event.mode===`tracked-pointer`||t.event.mode===`transient-pointer`?this.xrDragMode:this.dragMode)===K.None)return;let n=F.getComponentInParent(t.object,e);!n||n!==this||(e.lastHovered=t.object,this.context.domElement.style.cursor=`pointer`,this.context.accessibility.hover(this,`Draggable ${t.object?.name}`))}onPointerMove(e){(this._isDragging||this._potentialDragStartEvt!==null)&&e.use()}onPointerExit(t){this.allowEdit(this.gameObject)&&t.mode===`screen`&&e.lastHovered===t.object&&(this.context.domElement.style.cursor=`auto`)}onPointerDown(t){if(this.allowEdit(this.gameObject)&&!t.used&&(t.mode===`tracked-pointer`||t.mode===`transient-pointer`?this.xrDragMode:this.dragMode)!==K.None&&(e.lastHovered=t.object,t.button===0)){this._dragHandlers.size===0&&(this._didDrag=!1,this._totalMovement.set(0,0,0),this._potentialDragStartEvt=t),this._targetObject||this.setTargetObject(this.gameObject),e._active+=1;let n=new qi(this,this._targetObject);if(this._dragHandlers.set(t.event.space,n),n.onDragStart(t),this._dragHandlers.size===2){let e=this._dragHandlers.values(),n=e.next().value,r=e.next().value;if(n instanceof qi&&r instanceof qi){let e=new Ki(this,this._targetObject,n,r);this._dragHandlers.set(this.gameObject,e),e.onDragStart(t)}else console.error(`Attempting to construct a MultiTouchDragHandler with invalid DragPointerHandlers. This is likely a bug.`,{a:n,b:r})}t.use(),this.context.accessibility.updateElement(this,{role:`button`,label:`Dragging `+(this.gameObject.name||`object`),hidden:!1,busy:!0}),this.context.accessibility.focus(this)}}onPointerUp(t){if(Ui&&V.DrawLabel(t.point??this.gameObject.worldPosition,`POINTERUP:`+t.pointerId+`, `+t.button,.03,3),!this.allowEdit(this.gameObject)||t.button!==0)return;this._potentialDragStartEvt=null;let n=this._dragHandlers.get(t.event.space),r=this._dragHandlers.get(this.gameObject);r&&(r.handlerA===n||r.handlerB===n)&&(this._dragHandlers.delete(this.gameObject),r.onDragEnd(t)),n&&(e._active>0&&--e._active,this.setTargetObject(null),n.onDragEnd&&n.onDragEnd(t),this._dragHandlers.delete(t.event.space),this._dragHandlers.size===0&&this.onLastDragEnd(t),t.use()),this.context.accessibility.unfocus(this),this.context.accessibility.updateElement(this,{busy:!1})}update(){for(let e of this._dragHandlers.values())e.collectMovementInfo&&e.collectMovementInfo(),e.getTotalMovement&&this._totalMovement.add(e.getTotalMovement());if(this._potentialDragStartEvt){if(!this._didDrag)if(this._totalMovement.length()>3e-4)this._didDrag=!0;else return;let e=this._potentialDragStartEvt;this._potentialDragStartEvt=null,this.onFirstDragStart(e)}for(let e of this._dragHandlers.values())e.onDragUpdate&&e.onDragUpdate(this._dragHandlers.size);this._dragHelper&&this._dragHelper.hasSelected&&this.onAnyDragUpdate()}onFirstDragStart(t){if(!t||!t.object)return;let n=F.getComponentInParent(t.object,e);if(!n||n!==this&&n._isDragging)return;let r=this._targetObject||this.gameObject;if(!r)return;this._isDragging=!0;let i=F.getComponentInChildren(r,rt);Ui&&console.log(`DRAG START`,i,r),i&&(i.fastMode=!0,i?.requestOwnership()),this._marker=F.addComponent(r,Pi),this._draggingRigidbodies.length=0;let a=F.getComponentsInChildren(r,E);a&&this._draggingRigidbodies.push(...a),r.matrixAutoUpdate===!1&&!globalThis[`DragControls:MatrixWarningShown`]&&(globalThis[`DragControls:MatrixWarningShown`]=!0,console.warn(`Dragging an object with matrixAutoUpdate=false can lead to unexpected behavior. Consider enabling matrixAutoUpdate or updating the matrix manually during dragging.`))}onAnyDragUpdate(){if(!this._dragHelper)return;this._dragHelper.showGizmo=this.showGizmo,this._dragHelper.onUpdate(this.context);for(let e of this._draggingRigidbodies)e.wakeUp(),e.resetVelocities(),e.resetForcesAndTorques();let e=this._targetObject||this.gameObject;qe.markDirty(e)}onLastDragEnd(e){if(!this||!this._isDragging)return;this._isDragging=!1;for(let e of this._draggingRigidbodies)e.setVelocity(e.smoothedVelocity.multiplyScalar(this.context.time.deltaTime));if(this._draggingRigidbodies.length=0,this._targetObject=null,e?.object){let t=F.getComponentInChildren(e.object,rt);t&&(t.fastMode=!1)}if(this._marker&&this._marker.destroy(),!this._dragHelper)return;let t=this._dragHelper.selected;Ui&&console.log(`DRAG END`,t,t?.visible),this._dragHelper.setSelected(null,this.context)}};Hi([A()],Gi.prototype,`dragMode`,void 0),Hi([A()],Gi.prototype,`snapGridResolution`,void 0),Hi([A()],Gi.prototype,`keepRotation`,void 0),Hi([A()],Gi.prototype,`xrDragMode`,void 0),Hi([A()],Gi.prototype,`xrKeepRotation`,void 0),Hi([A()],Gi.prototype,`xrDistanceDragFactor`,void 0),Hi([A()],Gi.prototype,`showGizmo`,void 0);var Ki=class{handlerA;handlerB;context;settings;gameObject;_handlerAAttachmentPoint=new n;_handlerBAttachmentPoint=new n;_followObject;_manipulatorObject;_deviceMode;_followObjectStartWorldQuaternion=new x;constructor(e,t,n,r){this.context=e.context,this.settings=e,this.gameObject=t,this.handlerA=n,this.handlerB=r,this._followObject=new y,this._manipulatorObject=new y,this.context.scene.add(this._manipulatorObject);let i=St.active?.rig?.gameObject;if(!this.handlerA||!this.handlerB||!this.handlerA.hitPointInLocalSpace||!this.handlerB.hitPointInLocalSpace){console.error(`Invalid: MultiTouchDragHandler needs two valid DragPointerHandlers with hitPointInLocalSpace set.`);return}if(this._tempVec1.copy(this.handlerA.hitPointInLocalSpace),this._tempVec2.copy(this.handlerB.hitPointInLocalSpace),this.gameObject.localToWorld(this._tempVec1),this.gameObject.localToWorld(this._tempVec2),i&&(i.worldToLocal(this._tempVec1),i.worldToLocal(this._tempVec2)),this._initialDistance=this._tempVec1.distanceTo(this._tempVec2),this._initialDistance<.02?(Ui&&console.log(`Finding alternative drag attachment points since initial distance is too low: `+this._initialDistance.toFixed(2)),this.handlerA.followObject.parent.getWorldPosition(this._tempVec1),this.handlerB.followObject.parent.getWorldPosition(this._tempVec2),this._handlerAAttachmentPoint.copy(this._tempVec1),this._handlerBAttachmentPoint.copy(this._tempVec2),this.gameObject.worldToLocal(this._handlerAAttachmentPoint),this.gameObject.worldToLocal(this._handlerBAttachmentPoint),this._initialDistance=this._tempVec1.distanceTo(this._tempVec2),this._initialDistance<.001&&(console.warn(`Not supported right now – controller drag points for multitouch are too close!`),this._initialDistance=1)):(this._handlerAAttachmentPoint.copy(this.handlerA.hitPointInLocalSpace),this._handlerBAttachmentPoint.copy(this.handlerB.hitPointInLocalSpace)),this._tempVec3.lerpVectors(this._tempVec1,this._tempVec2,.5),this._initialScale.copy(t.scale),Ui){this._followObject.add(new se(2)),this._manipulatorObject.add(new se(5));let e=e=>`${e.x.toFixed(2)}, ${e.y.toFixed(2)}, ${e.z.toFixed(2)}`;V.DrawLine(this._tempVec1,this._tempVec2,65535,0,!1),V.DrawLabel(this._tempVec3,`A:B `+this._initialDistance.toFixed(2)+` +`+e(this._tempVec1)+` +`+e(this._tempVec2),.03,5)}}onDragStart(e){this.gameObject.add(this._followObject),this._followObject.matrixAutoUpdate=!1,this._followObject.matrix.identity(),this._deviceMode=e.mode,this._followObjectStartWorldQuaternion.copy(this._followObject.worldQuaternion),this.alignManipulator(),this._manipulatorObject.attach(this._followObject),this._manipulatorPosOffset.copy(this._followObject.position),this._manipulatorRotOffset.copy(this._followObject.quaternion),this._manipulatorScaleOffset.copy(this._followObject.scale)}onDragEnd(e){if(!this.handlerA||!this.handlerB){console.error(`onDragEnd called on MultiTouchDragHandler without valid handlers. This is likely a bug.`);return}this.handlerA.recenter(),this.handlerB.recenter(),this._manipulatorObject.removeFromParent(),this._followObject.removeFromParent(),this._manipulatorObject.destroy(),this._followObject.destroy()}_manipulatorPosOffset=new n;_manipulatorRotOffset=new x;_manipulatorScaleOffset=new n;_tempVec1=new n;_tempVec2=new n;_tempVec3=new n;tempLookMatrix=new _;_initialScale=new n;_initialDistance=0;alignManipulator(){if(!this.handlerA||!this.handlerB){console.error(`alignManipulator called on MultiTouchDragHandler without valid handlers. This is likely a bug.`,this);return}if(!this.handlerA.followObject||!this.handlerB.followObject){console.error(`alignManipulator called on MultiTouchDragHandler without valid follow objects. This is likely a bug.`,this.handlerA,this.handlerB);return}this._tempVec1.copy(this._handlerAAttachmentPoint),this._tempVec2.copy(this._handlerBAttachmentPoint),this.handlerA.followObject.localToWorld(this._tempVec1),this.handlerB.followObject.localToWorld(this._tempVec2),this._tempVec3.lerpVectors(this._tempVec1,this._tempVec2,.5),this._manipulatorObject.position.copy(this._tempVec3);let e=this.context.mainCamera;this.tempLookMatrix.lookAt(this._tempVec3,this._tempVec2,e.worldUp),this._manipulatorObject.quaternion.setFromRotationMatrix(this.tempLookMatrix);let t=this._tempVec1.distanceTo(this._tempVec2);this._manipulatorObject.scale.copy(this._initialScale).multiplyScalar(t/this._initialDistance),this._manipulatorObject.updateMatrix(),this._manipulatorObject.updateMatrixWorld(!0),Ui&&(V.DrawLabel(this._tempVec3.clone().add(new n(0,.2,0)),`A:B `+t.toFixed(2),.03),V.DrawLine(this._tempVec1,this._tempVec2,65280,0,!1))}onDragUpdate(){this.alignManipulator(),this._followObject.position.copy(this._manipulatorPosOffset),this._followObject.quaternion.copy(this._manipulatorRotOffset),this._followObject.scale.copy(this._manipulatorScaleOffset);let e=this.gameObject,t=this._followObject;if(!e){console.error(`MultiTouchDragHandler has no dragged object. This is likely a bug.`);return}t.updateMatrix(),t.updateMatrixWorld(!0);let n=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`?this.settings.xrKeepRotation:this.settings.keepRotation;if(this.settings.snapGridResolution>0){let e=this._followObject.worldPosition,t=this.settings.snapGridResolution;e.x=Math.round(e.x/t)*t,e.y=Math.round(e.y/t)*t,e.z=Math.round(e.z/t)*t,this._followObject.worldPosition=e,this._followObject.updateMatrix()}n&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion,this._followObject.updateMatrix());let r=O.clamp01(this.context.time.deltaTime*30*1),i=e.worldPosition;i.lerp(t.worldPosition,r),e.worldPosition=i;let a=e.worldQuaternion;a.slerp(t.worldQuaternion,r),e.worldQuaternion=a;let o=e.worldScale;o.lerp(t.worldScale,r),e.worldScale=o,e.matrixAutoUpdate===!1&&e.updateMatrix()}setTargetObject(e){this.gameObject=e}},qi=class{getTotalMovement(){return this._totalMovement}get followObject(){return this._followObject}get hitPointInLocalSpace(){return this._hitPointInLocalSpace}context;gameObject;settings;_lastRig=void 0;_followObject;_totalMovement=new n;_totalMovementAlongRayDirection=0;_grabStartDistance=0;_deviceMode;_followObjectStartPosition=new n;_followObjectStartQuaternion=new x;_followObjectStartWorldQuaternion=new x;_lastDragPosRigSpace;_tempVec=new n;_tempMat=new _;_hitPointInLocalSpace=new n;_hitNormalInLocalSpace=new n;_bottomCenter=new n;_backCenter=new n;_backBottomCenter=new n;_bounds=new ie;_dragPlane=new ae(new n(0,1,0));_draggedOverObject=null;_draggedOverObjectLastSetUp=null;_draggedOverObjectLastNormal=new n;_draggedOverObjectDuration=0;setTargetObject(e){this.gameObject=e}constructor(e,t){this.settings=e,this.context=e.context,this.gameObject=t,this._followObject=new y}recenter(){if(!this._followObject.parent){console.warn(`Error: space follow object doesn't have parent but recenter() is called. This is likely a bug`);return}if(!this.gameObject){console.warn(`Error: space follow object doesn't have a gameObject`);return}let e=this._followObject.parent;this.gameObject.add(this._followObject),this._followObject.matrixAutoUpdate=!1,this._followObject.position.set(0,0,0),this._followObject.quaternion.set(0,0,0,1),this._followObject.scale.set(1,1,1),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0),e.attach(this._followObject),this._followObjectStartPosition.copy(this._followObject.position),this._followObjectStartQuaternion.copy(this._followObject.quaternion),this._followObjectStartWorldQuaternion.copy(this._followObject.worldQuaternion),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let t=this._hitPointInLocalSpace.clone();this.gameObject.localToWorld(t),this._grabStartDistance=t.distanceTo(e.worldPosition);let r=(St.active?.rig?.gameObject)?.worldScale.x||1;this._grabStartDistance/=r,this._totalMovementAlongRayDirection=0,this._lastDragPosRigSpace=void 0,Ui&&(V.DrawLine(t,e.worldPosition,65280,.5,!1),V.DrawLabel(e.worldPosition.add(new n(0,.1,0)),this._grabStartDistance.toFixed(2),.03,.5))}onDragStart(e){if(!this.gameObject){console.warn(`Error: space follow object doesn't have a gameObject`);return}if(e.event.space.add(this._followObject),this._lastDragPosRigSpace=void 0,e.point&&e.normal)this._hitPointInLocalSpace.copy(e.point),this.gameObject.worldToLocal(this._hitPointInLocalSpace),this._hitNormalInLocalSpace.copy(e.normal);else if(e){let t=e.event.space,n=t.worldPosition;this.gameObject.worldToLocal(n),this._hitPointInLocalSpace.copy(n);let r=t.worldUp;this._tempMat.copy(this.gameObject.matrixWorld).invert(),r.transformDirection(this._tempMat),this._hitNormalInLocalSpace.copy(r)}this.recenter(),this._totalMovement.set(0,0,0),this._deviceMode=e.mode;let t=this._followObject.parent.worldForward,r=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`?this.settings.xrDragMode:this.settings.dragMode,i=this._hitPointInLocalSpace.clone();switch(this.gameObject.localToWorld(i),r){case K.XZPlane:let e=new n(0,1,0);this.gameObject.parent&&e.transformDirection(this.gameObject.parent.matrixWorld.clone().invert()),this._dragPlane.setFromNormalAndCoplanarPoint(e,i);break;case K.HitNormal:let r=this._hitNormalInLocalSpace.clone();r.transformDirection(this.gameObject.matrixWorld),this._dragPlane.setFromNormalAndCoplanarPoint(r,i);break;case K.Attached:this._dragPlane.setFromNormalAndCoplanarPoint(t,i);break;case K.DynamicViewAngle:this.setPlaneViewAligned(i,!0);break;case K.SnapToSurfaces:this.setPlaneViewAligned(i,!1);break;case K.None:break}let a=this.gameObject.parent,o=this.gameObject.position.clone(),s=this.gameObject.quaternion.clone(),c=this.gameObject.scale.clone(),l=this.gameObject.matrixWorld.clone();a&&a.remove(this.gameObject),this.gameObject.position.set(0,0,0),this.gameObject.quaternion.set(0,0,0,1),this.gameObject.scale.set(1,1,1);let u=Nt([this.gameObject]);u.expandByPoint(this.gameObject.worldPosition);let d=new n;u.getCenter(d);let f=new n;u.getSize(f),this._bottomCenter.copy(d.clone().add(new n(0,-f.y/2,0))),this._backCenter.copy(d.clone().add(new n(0,0,f.z/2))),this._backBottomCenter.copy(d.clone().add(new n(0,-f.y/2,f.z/2))),this._bounds.copy(u),a&&a.add(this.gameObject),this.gameObject.position.copy(o),this.gameObject.quaternion.copy(s),this.gameObject.scale.copy(c),this.gameObject.matrixWorld.copy(l),this._draggedOverObject=null,this._draggedOverObjectLastSetUp=null,this._draggedOverObjectLastNormal.set(0,1,0),this._draggedOverObjectDuration=0}collectMovementInfo(){if(!this._followObject.parent)return;let e=this._followObject.parent;this._followObject.updateMatrix();let t=e.worldPosition,n=St.active?.rig?.gameObject;n&&n.worldToLocal(t),(this._lastDragPosRigSpace===void 0||n!=this._lastRig)&&(this._lastDragPosRigSpace=t.clone(),this._lastRig=n),this._tempVec.copy(t).sub(this._lastDragPosRigSpace);let r=e.worldForward;if(n&&(this._tempMat.copy(n.matrixWorld).invert(),r.transformDirection(this._tempMat)),this._totalMovementAlongRayDirection+=r.dot(this._tempVec),this._tempVec.x=Math.abs(this._tempVec.x),this._tempVec.y=Math.abs(this._tempVec.y),this._tempVec.z=Math.abs(this._tempVec.z),this._totalMovement.add(this._tempVec),this._lastDragPosRigSpace.copy(t),Ui){let e=t;n&&(e=e.clone(),e.transformDirection(n.matrixWorld)),V.DrawRay(e,r,255)}}onDragUpdate(e){if(e>1)return;let t=this.gameObject;if(!t||!this._followObject){console.warn(`Warning: DragPointerHandler doesn't have a dragged object. This is likely a bug.`);return}let r=this._followObject.parent;if(!r){console.warn(`Warning: DragPointerHandler doesn't have a drag source. This is likely a bug.`);return}this._followObject.updateMatrix();let i=r.worldPosition,o=r.worldForward,s=this._deviceMode===`tracked-pointer`||this._deviceMode===`transient-pointer`,c=s?this.settings.xrKeepRotation:this.settings.keepRotation,l=s?this.settings.xrDragMode:this.settings.dragMode;if(l===K.None)return;c&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion),this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let u=1,d=2;if(s&&this._grabStartDistance>.5){let e=1+this._totalMovementAlongRayDirection*(2*this.settings.xrDistanceDragFactor);u=Math.max(0,e),u=u*u*u}else this._grabStartDistance<=.5&&(d=3);this._followObject.position.copy(this._followObjectStartPosition),c||this._followObject.quaternion.copy(this._followObjectStartQuaternion),this._followObject.position.multiplyScalar(u),this._followObject.updateMatrix();let f=this._hasLastSurfaceHitPoint;this._hasLastSurfaceHitPoint=!1;let p=new a(i,o);if(l==K.SnapToSurfaces){let e=this.context.physics.raycastFromRay(p,{testObject:e=>e!==this.followObject&&e!==r&&e!==t});if(e.length>0){let t=e[0];if(this._draggedOverObject===t.object?this._draggedOverObjectDuration+=this.context.time.deltaTime:(this._draggedOverObject=t.object,this._draggedOverObjectDuration=0),t.face){this._hasLastSurfaceHitPoint=!0,this._lastSurfaceHitPoint.copy(t.point);let e=this._draggedOverObjectDuration>=.15,n=this._totalMovement.length()>=.001,r=z(t.normal||t.face.normal).applyQuaternion(t.object.worldQuaternion);if((e||n)&&(this._draggedOverObjectLastSetUp!==this._draggedOverObject||this._draggedOverObjectLastNormal.dot(r)<.999999||this.context.time.frame%60==0)){this._draggedOverObjectLastSetUp=this._draggedOverObject,this._draggedOverObjectLastNormal.copy(t.face.normal);let e=z(),n=z();this._bounds.getCenter(e),this._bounds.getSize(n),e.sub(n.multiplyScalar(.5).multiply(r)),this._hitPointInLocalSpace.copy(e),this._hitNormalInLocalSpace.copy(t.face.normal),this._bounds.getCenter(e),this._bounds.getSize(n),e.add(n.multiplyScalar(.5).multiply(t.face.normal));let i=z(this._hitPointInLocalSpace).add(e);this._followObject.localToWorld(i);let a=t.point;this._dragPlane.setFromNormalAndCoplanarPoint(r,a)}else if(!(e||n))return}}else f&&this.gameObject&&this.setPlaneViewAligned(this.gameObject.worldPosition,!1)}if(l!==K.Attached&&p.intersectPlane(this._dragPlane,this._tempVec)){this._followObject.worldPosition=this._tempVec,this._followObject.updateMatrix(),this._followObject.updateMatrixWorld(!0);let e=z(this._hitPointInLocalSpace);this._followObject.localToWorld(e),Ui&&V.DrawLine(e,this._tempVec,65535,0,!1),this._followObject.worldPosition=this._tempVec.multiplyScalar(2).sub(e),this._followObject.updateMatrix(),this._followObject.updateMatrix()}if(this.settings.snapGridResolution>0){let e=this._followObject.worldPosition,t=this.settings.snapGridResolution;e.x=Math.round(e.x/t)*t,e.y=Math.round(e.y/t)*t,e.z=Math.round(e.z/t)*t,this._followObject.worldPosition=e,this._followObject.updateMatrix()}c&&(this._followObject.worldQuaternion=this._followObjectStartWorldQuaternion,this._followObject.updateMatrix());let m=O.clamp01(this.context.time.deltaTime*10*d),ee=O.clamp01(this.context.time.deltaTime*10*.5*d),h=t.worldPosition;h.lerp(this._followObject.worldPosition,m),t.worldPosition=h;let g=t.worldQuaternion;if(g.slerp(this._followObject.worldQuaternion,ee),t.worldQuaternion=g,t.matrixAutoUpdate===!1&&t.updateMatrix(),Ui){let e=this._hitPointInLocalSpace.clone();t.localToWorld(e),V.DrawSphere(e,.02,16711680);let r=this._hitNormalInLocalSpace.clone();r.applyQuaternion(g),V.DrawRay(e,r,16711680),V.DrawLabel(h.add(new n(0,.25,0)),`Distance: ${this._totalMovement.length().toFixed(2)}\n + Along Ray: ${this._totalMovementAlongRayDirection.toFixed(2)}\n + Session: ${!!St.active}\n + Device: ${this._deviceMode}\n + `,.03);let i=this._bottomCenter.clone(),a=this._backCenter.clone(),o=this._backBottomCenter.clone();t.localToWorld(i),t.localToWorld(a),t.localToWorld(o),V.DrawSphere(i,.01,65280,0,!1),V.DrawSphere(a,.01,255,0,!1),V.DrawSphere(o,.01,16711935,0,!1),V.DrawLine(i,o,65535,0,!1),V.DrawLine(o,a,65535,0,!1)}}onDragEnd(e){console.assert(this._followObject.parent===e.event.space,`Drag end: _followObject is not parented to the space object`),this._followObject.removeFromParent(),this._followObject.destroy(),this._lastDragPosRigSpace=void 0}_hasLastSurfaceHitPoint=!1;_lastSurfaceHitPoint=new n;setPlaneViewAligned(e,t){if(!this._followObject.parent)return!1;let n=this._followObject.parent.worldForward,r=z(0,1,0),i=n,a=r.angleTo(i),o=.5;return t&&(a>Math.PI/2+o||ae!==this._selected;let r=this._context.physics.raycastFromRay(t,n);for(let e=0;e{s instanceof y&&s.scale.set(1,e,1)}}}e.addPreview=r;function i(e){let n=t.get(e);n&&(t.delete(e),n.removeFromParent())}e.removePreview=i})(Xi||={});var Zi=[],Qi=[],$i;(function(e){function t(e,t){let n={name:t?.name,priority:t?.priority??0,callback:e};return Zi.push(n),Zi.sort((e,t)=>e.priority===t.priority?0:e.priority>t.priority?-1:1),()=>{let e=Zi.indexOf(n);e>=0&&Zi.splice(e,1)}}e.onCreateCustomModelLoader=t;function n(e){return Qi.push(e),()=>{let t=Qi.indexOf(e);t>=0&&Qi.splice(t,1)}}e.onDetermineModelMimetype=n})($i||={});var q=N(`debugfileformat`);function ea(e){switch((e.split(`.`).pop()||e).toUpperCase()){case`GLTF`:return`model/gltf+json`;case`VRM`:return`model/vrm`;case`GLB`:return`model/gltf-binary`;case`FBX`:return`model/fbx`;case`USD`:return`model/vnd.usd+zip`;case`USDA`:return`model/vnd.usda+zip`;case`USDZ`:return`model/vnd.usdz+zip`;case`OBJ`:return`model/obj`;default:return null}}async function ta(e,t){let{useExtension:n=!0}=t;if(n){let t=new URL(e,globalThis.location.href),n=null,r=t.searchParams.get(`filetype`);switch(r&&(n=r.toUpperCase()),n?.length||(n=t.pathname.split(`.`).pop()?.toUpperCase()),q&&console.warn(`[Needle Engine] Try to use file extension to determine type: '${n}'`),n){case`GLTF`:return`model/gltf+json`;case`VRM`:return`model/vrm`;case`GLB`:return`model/gltf-binary`;case`FBX`:return`model/fbx`;case`USD`:return`model/vnd.usd+zip`;case`USDA`:return`model/vnd.usda+zip`;case`USDZ`:return`model/vnd.usdz+zip`;case`OBJ`:return`model/obj`;case`MTLX`:return`application/materialx+xml`}}let r=e;if(!e.startsWith(`blob:`)){let t=new URL(e,globalThis.location.href);t.searchParams.append(`range`,`true`),e=t.toString()}let i=await fetch(e,{method:`GET`,headers:{range:`bytes=0-32`}}).catch(e=>null);if(i?.ok){let e=na(r,await i.arrayBuffer(),i);return q&&console.log(`[Needle Engine] Determined file type from header: `+e),e}return`unknown`}function na(e,t,n){if(t.byteLength<4)return`unknown`;let r=new Uint8Array(t);q&&q&&console.warn(`[Needle Engine] Trying to determine file type from binary data +`,`"`+new TextDecoder().decode(t)+`" +`,r);let i=new TextDecoder().decode(t).replace(/\s/g,``);if(i[0]===`{`&&i[1]===`"`)return q&&console.debug(`GLTF detected`),`model/gltf+json`;if(r[0]==103&&r[1]==108&&r[2]==84&&r[3]==70&&(r[4]==10||r[4]===2))return q&&console.debug(`GLTF .bin detected`),`model/gltf+json`;if(r[0]==103&&r[1]==108&&r[2]==84&&r[3]==70&&r[4]==98)return q&&console.debug(`GLB detected`),`model/gltf-binary`;if(r[0]==80&&r[1]==75&&r[2]==3&&r[3]==4)return q&&console.debug(`USDZ detected`),`model/vnd.usdz+zip`;if(r[0]==80&&r[1]==88&&r[2]==82&&r[3]==45&&r[4]==85&&r[5]==83&&r[6]==68&&r[7]==67)return q&&console.debug(`Binary USD detected`),`model/vnd.usd`;if(r[0]==35&&r[1]==117&&r[2]==115&&r[3]==100&&r[4]==97)return q&&console.debug(`ASCII USD detected`),`model/vnd.usda`;if(r[0]==75&&r[1]==97&&r[2]==121&&r[3]==100&&r[4]==97&&r[5]==114&&r[6]==97&&r[7]==32)return q&&console.debug(`Binary FBX detected`),`model/fbx`;if(r[0]==59&&r[1]==32&&r[2]==70&&r[3]==66&&r[4]==88&&r[5]==32)return q&&console.debug(`ASCII FBX detected`),`model/fbx`;if(r[0]==35&&r[1]==32&&r[2]==66&&r[3]==108&&r[4]==101&&r[5]==110&&r[6]==100&&r[7]==101&&r[8]==114&&r[9]==32||r[0]==35&&r[1]==32&&r[2]==65&&r[3]==108&&r[4]==105&&r[5]==97&&r[6]==115&&r[7]==32&&r[8]==79&&r[9]==66&&r[10]==74)return q&&console.debug(`OBJ detected`),`model/obj`;if(n.headers.has(`content-type`)){let e=n.headers.get(`content-type`);if(e?.startsWith(`image/`))return q&&console.debug(`Image detected, not a model file`),`unsupported`;switch(q&&console.debug(`Content-Type: `+e),e){case`model/gltf+json`:case`model/gltf-binary`:case`model/vrm`:case`model/vnd.usdz+zip`:case`model/vnd.usd+zip`:case`model/vnd.usd`:case`model/vnd.usda+zip`:case`model/vnd.usda`:case`model/vnd.usdc`:case`model/fbx`:case`model/vnd.autodesk.fbx`:case`model/obj`:case`application/materialx+xml`:return e;case`text/plain`:break}}if(r[0]==118&&r[1]==32||r[0]==102&&r[1]==32)return q&&console.debug(`OBJ detected (the file has no header and starts with vertex or face)`),`obj`;if(r[0]==35&&r[1]==32&&r[2]==70&&r[3]==105&&r[4]==108&&r[5]==101&&r[6]==32&&r[7]==101&&r[8]==120&&r[9]==112&&r[10]==111&&r[11]==114&&r[12]==116&&r[13]==101&&r[14]==100&&r[15]==32&&r[16]==98&&r[17]==121&&r[18]==32&&r[19]==90&&r[20]==66&&r[21]==114&&r[22]==117&&r[23]==115&&r[24]==104)return q&&console.debug(`OBJ detected (exported by ZBrush)`),`obj`;if(r[0]==109&&r[1]==116&&r[2]==108&&r[3]==108&&r[4]==105&&r[5]==98)return q&&console.debug(`OBJ detected (mtllib)`),`obj`;for(let t of Qi){let i=t({url:e,response:n,contentType:n.headers.get(`content-type`),bytes:r});if(i)return q&&console.debug(`Mimetype callback returned: ${i}`),i}if(w()||q){let e=new TextDecoder().decode(t.slice(0,Math.min(t.byteLength,32)));q&&console.warn(`Could not determine file type.\n\nConsider registering a custom loader via the 'onCreateCustomModelLoader' callback: 'NeedleEngineModelLoader.onCreateCustomModelLoader(args => { })'\n\nContent-Type: \"${n.headers.get(`content-type`)}\"\n\"Text: \"${e}\"\nBinary:`,r)}else q&&console.debug(`Could not determine file type from binary data`);return`unknown`}var ra=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},J=N(`debugdroplistener`),ia;(function(e){e.FileDropped=`file-dropped`,e.ObjectAdded=`object-added`})(ia||={});var aa=class extends CustomEvent{constructor(e){super(ia.ObjectAdded,{detail:e})}},oa=`blob`,sa=class extends R{dropArea;fitIntoVolume=!1;fitVolumeSize=new n(1,1,1);placeAtHitPosition=!0;useNetworking=!1;onDropped=new k;loadFromURL(e,t){return this.addFromUrl(e,{screenposition:new b,point:t?.point,size:t?.size},!1)}forgetObjects(){this.removePreviouslyAddedObjects(!1)}awake(){for(let e of this.gameObject.children)this.dropArea&&e.contains(this.dropArea)||this._addedObjects.push(e)}onEnable(){this.context.renderer.domElement.addEventListener(`dragover`,this.onDrag),this.context.renderer.domElement.addEventListener(`drop`,this.onDrop),window.addEventListener(`paste`,this.handlePaste),this.context.connection.beginListen(`droplistener`,this.onNetworkEvent),w()&&this.dropArea&&(this.dropArea.getComponentInChildren(Vn)||console.warn(`[DropListener] The assigned DropArea does not seem to have a renderer/mesh. Drag and Drop events will not be detected.`))}onDisable(){this.context.renderer.domElement.removeEventListener(`dragover`,this.onDrag),this.context.renderer.domElement.removeEventListener(`drop`,this.onDrop),window.removeEventListener(`paste`,this.handlePaste),this.context.connection.stopListen(`droplistener`,this.onNetworkEvent)}onNetworkEvent=e=>{if(!this.useNetworking){J&&console.debug(`[DropListener] Ignoring networked event because networking is disabled`,e);return}if(e.guid?.startsWith(this.guid)){let t=e.url;if(console.debug(`[DropListener] Received networked event`,e),t)if(Array.isArray(t))for(let n of t)this.addFromUrl(n,{screenposition:new b,point:e.point,size:e.size},!0);else this.addFromUrl(t,{screenposition:new b,point:e.point,size:e.size},!0)}};handlePaste=e=>{this.context.connection.allowEditing!==!1&&(e.defaultPrevented||navigator.clipboard.readText().then(e=>{if(e&&(e.startsWith(`http`)||e.startsWith(`https`)||e.startsWith(`blob`))){let t={screenposition:new b(this.context.input.mousePosition.x,this.context.input.mousePosition.y)};this.testIfIsInDropArea(t)&&this.addFromUrl(e,t,!1)}}).catch(console.warn))};onDrag=e=>{J&&console.debug(`DropListener Drag`,e,this.context.connection.allowEditing),this.context.connection.allowEditing!==!1&&e.preventDefault()};onDrop=async e=>{if(J&&console.debug(`DropListener Drop`,e,this.context.connection.allowEditing),this.context.connection.allowEditing===!1||!e?.dataTransfer||e[`droplistener:handled`])return;e.preventDefault();let t={screenposition:new b(e.offsetX,e.offsetY)};if(this.dropArea&&this.testIfIsInDropArea(t)===!1)return;e[`droplistener:handled`]=!0;let n=e.dataTransfer.items;if(!n)return;let r=[];for(let e in n){let i=n[e];if(i.kind===`file`){let e=i.getAsFile();if(!e)continue;r.push(e)}else i.kind===`string`&&i.type==`text/plain`&&i.getAsString(e=>{this.addFromUrl(e,t,!1)})}r.length>0&&await this.addFromFiles(r,t)};async addFromUrl(e,t,n){J&&console.log(`dropped url`,e);try{if(e.startsWith(`https://github.com/`)){let t=e.split(`/`);e=`https://raw.githubusercontent.com/${t[3]}/${t[4]}/${t[6]}/${t.slice(7).join(`/`)}`}else e.startsWith(`https://polyhaven.com/a`)&&(e=ca(e));if(!e)return null;let r=e.toLowerCase();if(r.endsWith(`.hdr`)||r.endsWith(`.hdri`)||r.endsWith(`.exr`)||r.endsWith(`.png`)||r.endsWith(`.jpg`)||r.endsWith(`.jpeg`))return console.warn(`Fileformat is not supported: ${r}`),null;this.removePreviouslyAddedObjects();let i=await la.loadFileFromURL(new URL(e),{guid:this.guid,context:this.context,parent:this.gameObject,point:t.point,size:t.size});if(i&&this._addedObjects.length<=0)return t.url=e,this.onObjectLoaded(i,t,n)}catch{console.warn(`String is not a valid URL`,e)}return null}_abort=null;async addFromFiles(e,t){if(J&&console.log(`Add files`,e),Array.isArray(e)&&e.length){this.deleteDropEvent(),this.removePreviouslyAddedObjects(),Ve(oa,null),this._abort?.abort(`New files dropped`),this._abort=new AbortController;for(let n of e){if(!n)continue;if(n.type.startsWith(`image/`)){J&&console.warn(`Ignoring dropped image file`,n.name,n.type);continue}else if(n.name.endsWith(`.bin`)){J&&console.warn(`Ignoring dropped binary file`,n.name,n.type);continue}console.debug(`Load file `+n.name+` + `+n.type);let e=await la.loadFile(n,this.context,{guid:this.guid});if(e){this.dispatchEvent(new CustomEvent(ia.FileDropped,{detail:n})),t.file=n;let r=this.onObjectLoaded(e,t,!1);r&&this.context.connection.isConnected&&this.useNetworking&&(console.debug(`Uploading dropped file to blob storage`),Tt.upload(n,{abort:this._abort?.signal}).then(t=>{t?.download_url&&this._addedObjects.includes(r)&&this.sendDropEvent(t.download_url,r,e.contentMD5)}).catch(console.warn));break}}}}_addedObjects=[];_addedModels=[];removePreviouslyAddedObjects(e=!0){if(e)for(let e of this._addedObjects)e.parent===this.gameObject&&e.destroy();this._addedObjects.length=0,this._addedModels.length=0}onObjectLoaded(e,t,r){let{model:i,contentMD5:a}=e;if(J&&console.log(`Dropped ${this.gameObject.name}`,i),!i?.scene)return console.warn(`No object specified to add to scene`,i),null;this.removePreviouslyAddedObjects();let o=i.scene;o.position.copy(this.gameObject.worldPosition);let s=_t(this.gameObject),c=new n(0,0,0);s.x=Math.abs(s.x),s.y=Math.abs(s.y),s.z=Math.abs(s.z);let l=o.scale.clone(),u=new ie().setFromCenterAndSize(new n(0,this.fitVolumeSize.y*s.y*.5,0).add(this.gameObject.worldPosition),this.fitVolumeSize.clone().multiply(s));if(J&&V.DrawWireBox3(u,255,5),this.fitIntoVolume&&(Wt(o,u,{position:!this.placeAtHitPosition}),l=o.scale.clone().divide(s),c=o.worldPosition.clone().sub(this.gameObject.worldPosition).divide(s),J&&V.DrawSphere(c,.1,16711680,5)),this.gameObject.attach(o),o.position.copy(c),o.quaternion.identity(),o.scale.copy(l),J&&V.DrawArrow(this.gameObject.worldPosition,o.getWorldPosition(new n),65280,5),this._addedObjects.push(o),this._addedModels.push(i),this.placeAtHitPosition&&t&&t.screenposition){o.visible=!1;let e=this.context.physics.raycast({screenPoint:this.context.input.convertScreenspaceToRaycastSpace(t.screenposition.clone())});if(o.visible=!0,e&&e.length>0)for(let t of e){let e=t.point.clone();J&&console.log(`Place object at hit`,t),Re(o,e);break}}at.autoplayAnimations(i);let d=new aa({sender:this,gltf:i,model:i,object:o,contentMD5:a,dropped:t.file||(t.url?new URL(t.url):void 0)});return this.dispatchEvent(d),this.onDropped?.invoke(d.detail),!r&&t.url?.startsWith(`http`)&&this.context.connection.isConnected&&o&&this.sendDropEvent(t.url,o,a),o}async sendDropEvent(e,t,r){if(!this.useNetworking){J&&console.debug(`[DropListener] Ignoring networked event because networking is disabled`,e);return}if(this.context.connection.isConnected){console.debug(`Sending drop event "`+t.name+`"`,e);let i=Nt([t]),a={name:t.name,guid:this.guid,url:e,point:t.worldPosition.clone(),size:i.getSize(new n),contentMD5:r};this.context.connection.send(`droplistener`,a)}}deleteDropEvent(){this.context.connection.sendDeleteRemoteState(this.guid)}testIfIsInDropArea(e){let t=this.context.input.convertScreenspaceToRaycastSpace(e.screenposition.clone()),n=this.context.physics.raycast({screenPoint:t,recursive:!0,testObject:e=>!this._addedObjects.some(t=>t.contains(e))});if(!n.length)return w()&&console.log(`Dropped outside of drop area for DropListener \"${this.name}\".`),!1;let r=n[0];return!!(this.dropArea&&this.dropArea.contains(r.object))}};ra([A(y)],sa.prototype,`dropArea`,void 0),ra([A()],sa.prototype,`fitIntoVolume`,void 0),ra([A(n)],sa.prototype,`fitVolumeSize`,void 0),ra([A()],sa.prototype,`placeAtHitPosition`,void 0),ra([A()],sa.prototype,`useNetworking`,void 0),ra([A(k)],sa.prototype,`onDropped`,void 0);function ca(e){if(!e.startsWith(`https://polyhaven.com/`))return e;let t=new URL(e).pathname.split(`/`).pop(),n=`https://dl.polyhaven.org/file/ph-assets/Models/gltf/4k/${t}/${t}_4k.gltf`;return console.log(`Resolved polyhaven asset url`,e,`→`,n),n}var la;(function(e){async function t(e,t,n){let r=n.guid,i=new mt(r),a=new Blob([e],{type:e.type||ea(e.name)||void 0}),o=URL.createObjectURL(a),s=await Fe().loadSync(t,o,e.name,i).catch(t=>(console.error(`Failed to load file "${e.name}" (${e.type}):`,t),null));return URL.revokeObjectURL(o),s?new Promise((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onloadend=async e=>{let n=r.result;return t({model:s,contentMD5:Tt.hashMD5(n)})}}):(console.warn(`Failed to load "${e.name}" (${e.type})`),null)}e.loadFile=t;async function n(e,t){return new Promise(async(n,r)=>{let i=new mt(t.guid),a=e.toString();J&&V.DrawWireSphere(t.point,.1,16711680,3);let o=Xi.addPreview({guid:t.guid,parent:t.parent,position:t?.point,size:t?.size}),s=await Fe().loadSync(t.context,a,a,i,e=>{o.onProgress(e.loaded/e.total)}).catch(console.warn);if(s){let e=await fetch(a).then(e=>e.arrayBuffer()),r=Tt.hashMD5(e);J?setTimeout(()=>Xi.removePreview(t.guid),3e3):Xi.removePreview(t.guid),n({model:s,contentMD5:r})}else J?setTimeout(()=>Xi.removePreview(t.guid),3e3):Xi.removePreview(t.guid),console.warn(`Unsupported file type: `+e.toString())})}e.loadFileFromURL=n})(la||={});var ua=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},da=class e extends R{parent=null;object=null;limitCount=60;_currentCount=0;_startPosition=null;_startQuaternion=null;start(){if(this._currentCount=0,this._startPosition=null,this._startQuaternion=null,this.object||=this.gameObject,this.object){if(this.object===this.gameObject){let t=new mt(this.guid);this.object=F.instantiate(this.object,{idProvider:t,keepWorldPosition:!1}),F.getComponent(this.object,e)?.destroy();let n=this.object.getComponentInChildren(Gi);n||(n=this.object.addComponent(Gi,{dragMode:K.SnapToSurfaces}),n.guid=t.generateUUID());let r=F.getComponent(n.gameObject,rt);r||(r=n.gameObject.addComponent(rt),r.guid=t.generateUUID())}this.object.visible=!1;let t=this.gameObject.getComponent(Gi);t&&(t.enabled=!1),this._startPosition=this.object.position?.clone()??new n(0,0,0),this._startQuaternion=this.object.quaternion?.clone()??new x(0,0,0,1)}this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onEnable(){this.startCoroutine(this.cloneLimitIntervalFn())}_forwardPointerEvents=new Map;onPointerEnter(e){e.used||this.object&&this.context.connection.allowEditing&&e.button===0&&this.context.input.setCursor(`pointer`)}onPointerExit(e){e.used||this.object&&this.context.connection.allowEditing&&e.button===0&&this.context.input.unsetCursor(`pointer`)}onPointerDown(e){if(e.used||!this.object||!this.context.connection.allowEditing||e.button!==0)return;let t=this.handleDuplication();if(t){let n=F.getComponent(t,Gi);n?(n.onPointerDown(e),this._forwardPointerEvents.set(e.event.space,n)):w()&&console.warn(`Duplicated object (${t.name}) does not have DragControls`)}else this._currentCount>=this.limitCount?console.warn(`[Duplicatable] Limit of ${this.limitCount} objects created within a few seconds reached. Please wait a moment before creating more objects.`):console.warn(`[Duplicatable] Could not duplicate object.`)}onPointerUp(e){if(e.used)return;let t=this._forwardPointerEvents.get(e.event.space);t&&(t.onPointerUp(e),this._forwardPointerEvents.delete(e.event.space))}*cloneLimitIntervalFn(){for(;this.activeAndEnabled&&!this.destroyed;)this._currentCount>0?--this._currentCount:this._currentCount<0&&(this._currentCount=0),yield Ke(1)}handleDuplication(){if(!this.object||this.limitCount>0&&this._currentCount>=this.limitCount||this.object===this.gameObject)return null;if(F.isDestroyed(this.object))return this.object=null,null;this.object.matrixAutoUpdate===!1&&(this.object.updateMatrix(),w()&&(console.warn(`Object "${this.object.name}" has matrixAutoUpdate disabled. This can cause duplicated objects to have incorrect position/rotation/scale. Consider enabling matrixAutoUpdate or calling updateMatrix() before duplication.`),Ht(`Duplicatable: Object has matrixAutoUpdate disabled`))),this.object.visible=!0,this._startPosition&&this.object.position.copy(this._startPosition),this._startQuaternion&&this.object.quaternion.copy(this._startQuaternion);let e=new nt;this.parent||=this.gameObject.parent,this.parent&&(e.parent=this.parent.guid??this.parent.userData?.guid,e.keepWorldPosition=!0),e.position=this.worldPosition,e.rotation=this.worldQuaternion,e.context=this.context,this._currentCount+=1;let t=F.instantiateSynced(this.object,e);return console.assert(t!==this.object,`Duplicated object is original`),this.object.visible=!1,this._startPosition&&this.object.position.clone().copy(this._startPosition),this._startQuaternion&&this.object.quaternion.clone().copy(this._startQuaternion),t}};ua([A(y)],da.prototype,`parent`,void 0),ua([A(y)],da.prototype,`object`,void 0),ua([A()],da.prototype,`limitCount`,void 0);var fa;(function(e){e[e.PointerEnter=0]=`PointerEnter`,e[e.PointerExit=1]=`PointerExit`,e[e.PointerDown=2]=`PointerDown`,e[e.PointerUp=3]=`PointerUp`,e[e.PointerClick=4]=`PointerClick`})(fa||={});var pa=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ma=class{eventID;callback=new k};pa([A()],ma.prototype,`eventID`,void 0),pa([A(k)],ma.prototype,`callback`,void 0);var ha=class extends R{triggers=[];invoke(e){if(this.triggers)for(let t of this.triggers)t.eventID===e&&t.callback?.invoke()}hasTrigger(e){return this.triggers?.some(t=>t.eventID===e)??!1}shouldChangeCursor(){return this.hasTrigger(fa.PointerClick)||this.hasTrigger(fa.PointerDown)||this.hasTrigger(fa.PointerUp)}onPointerClick(e){this.invoke(fa.PointerClick)}onPointerEnter(e){this.shouldChangeCursor()&&this.context.input.setCursor(`pointer`),this.invoke(fa.PointerEnter)}onPointerExit(e){this.shouldChangeCursor()&&this.context.input.unsetCursor(`pointer`),this.invoke(fa.PointerExit)}onPointerDown(e){this.invoke(fa.PointerDown)}onPointerUp(e){this.invoke(fa.PointerUp)}};pa([A(ma)],ha.prototype,`triggers`,void 0);var ga=class{constructor(e){this.writer=e,this.name=`EXT_mesh_gpu_instancing`}writeNode(e,t){if(e.constructor.name!==`InstancedMesh`)return;let r=this.writer,i=r.extensionsUsed,a={};t.extensions=t.extensions||{},t.extensions[this.name]=a;let o=new _,s=[],c=[],l=[];for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Sa=N(`debuggltfexport`),Ca=class extends Di{sceneRoot},wa=class e extends R{binary=!0;objects=[];ext;async exportNow(t,n){Sa&&console.log(`Exporting objects as glTF`,this.objects),t||=`scene`,(!this.objects||this.objects.length<=0)&&(this.objects=[this.context.scene]);let r={binary:this.binary,pivot:e.calculateCenter(this.objects),...n},i=await this.export(this.objects,r).catch(e=>(console.error(e),!1));return i===!1?!1:(this.binary?t.endsWith(`.glb`)||(t+=`.glb`):t.endsWith(`.gltf`)||(t+=`.gltf`),this.binary?e.saveArrayBuffer(i,t):e.saveJson(i,t),!0)}async export(t,n){if(!t||t.length<=0){console.warn(`No objects set to export`);return}let r=new sn;r.register(e=>new ga(e)),r.register(e=>new ya(e)),wn(r,this.context),e.filterTopmostParent(t);let i={trs:!1,onlyVisible:!0,truncateDrawRange:!1,binary:!0,maxTextureSize:1/0,embedImages:!0,includeCustomExtensions:!0,animations:n?.animations||e.collectAnimations(t),...n},a=[],o=new y;n?.pivot&&o.position.sub(n.pivot),Sa&&console.log(`EXPORT`,t),t.forEach(e=>{e&&ba(e)&&(o.children.push(e),e.matrixAutoUpdate=!1,e.matrix.copy(e.matrixWorld),F.getComponentsInChildren(e,Vn).forEach(e=>{F.isActiveInHierarchy(e.gameObject)&&e.setInstancingEnabled(!1)}),e.traverse(e=>{if(!ba(e)){let t=e.parent;e.removeFromParent(),a.push(()=>{t&&t.add(e)})}}))});let s=new T(o);return n?.needleComponents&&(this.ext=new pn),this.ext&&(this.ext.registerExport(r),this.ext.context=s),new Promise((e,t)=>{Sa&&console.log(`Starting glTF export.`);try{r?.parse(o,t=>{c(),e(t)},e=>{c(),t(e)},i)}catch(e){console.error(e),t(e)}finally{a.forEach(e=>e()),Sa&&console.log(`Finished glTF export.`)}});function c(){t.forEach(e=>{e&&(e.matrixAutoUpdate=!0,F.getComponentsInChildren(e,Vn).forEach(e=>{F.isActiveInHierarchy(e.gameObject)&&e.setInstancingEnabled(!1)}))})}}static saveArrayBuffer(e,t){this.save(new Blob([e],{type:`application/octet-stream`}),t)}static saveJson(e,t){this.save(`data: text/json;charset=utf-8,`+encodeURIComponent(JSON.stringify(e)),t)}static save(e,t){let n=document.createElement(`a`);n.style.display=`none`,document.body.appendChild(n),typeof e==`string`?n.href=e:n.href=URL.createObjectURL(e),n.download=t,n.click(),n.remove()}static collectAnimations(e,t){t||=[];for(let n of e)n&&n.traverseVisible(e=>{e.animations&&e.animations.length>0&&t.push(...e.animations)});return t}static calculateCenter(e,t){let r=t||new n;return r.set(0,0,0),e.forEach(e=>{r.add(M(e))}),r.divideScalar(e.length),r}static filterTopmostParent(e){if(!(e.length<=0))for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ka;(function(e){e[e.Linear=1]=`Linear`,e[e.Exponential=2]=`Exponential`,e[e.ExponentialSquared=3]=`ExponentialSquared`})(ka||={});var Aa=class extends R{get fog(){return this._fog||=new ve(0,0,50),this._fog}get mode(){return ka.Linear}set near(e){this.fog.near=e}get near(){return this.fog.near}set far(e){this.fog.far=e}get far(){return this.fog.far}set color(e){this.fog.color.copy(e)}get color(){return this.fog.color}_fog;onEnable(){this.scene.fog=this.fog}onDisable(){this.scene.fog===this._fog&&(this.scene.fog=null)}};Oa([A()],Aa.prototype,`near`,null),Oa([A()],Aa.prototype,`far`,null),Oa([A(t)],Aa.prototype,`color`,null);var ja=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ma=class extends R{isGizmo=!1;color0;color1;gridHelper;size;divisions;offset;onEnable(){if(this.isGizmo&&!Lt)return;let e=this.size,n=this.divisions;this.gridHelper||(this.gridHelper=new Ce(e,n,this.color0??new t(.4,.4,.4),this.color1??new t(.6,.6,.6)),this.offset!==void 0&&(this.gridHelper.position.y+=this.offset)),this.gridHelper&&this.gameObject.add(this.gridHelper)}onDisable(){this.gridHelper&&=(this.gameObject.remove(this.gridHelper),null)}};ja([A()],Ma.prototype,`isGizmo`,void 0),ja([A(t)],Ma.prototype,`color0`,void 0),ja([A(t)],Ma.prototype,`color1`,void 0);var Na=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Pa=class extends R{connectedBody;get rigidBody(){return this._rigidBody}_rigidBody=null;onEnable(){this._rigidBody||=this.gameObject.getComponent(E),this.rigidBody&&this.connectedBody&&this.startCoroutine(this.create())}*create(){yield,this.rigidBody&&this.connectedBody&&this.activeAndEnabled&&this.createJoint(this.rigidBody,this.connectedBody)}};Na([A(E)],Pa.prototype,`connectedBody`,void 0);var Fa=class extends Pa{createJoint(e,t){this.context.physics.engine?.addFixedJoint(e,t)}},Ia=class extends Pa{anchor;axis;createJoint(e,t){this.axis&&this.anchor&&this.context.physics.engine?.addHingeJoint(e,t,this.anchor,this.axis)}};Na([A(n)],Ia.prototype,`anchor`,void 0),Na([A(n)],Ia.prototype,`axis`,void 0);var La=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a};function Ra(e){return e*Math.PI/180}var za=300,Ba=N(`debuglights`),Va;(function(e){e[e.Spot=0]=`Spot`,e[e.Directional=1]=`Directional`,e[e.Point=2]=`Point`,e[e.Area=3]=`Area`,e[e.Rectangle=3]=`Rectangle`,e[e.Disc=4]=`Disc`})(Va||={});var Ha;(function(e){e[e.Realtime=4]=`Realtime`,e[e.Baked=2]=`Baked`,e[e.Mixed=1]=`Mixed`})(Ha||={});var Ua;(function(e){e[e.None=0]=`None`,e[e.Hard=1]=`Hard`,e[e.Soft=2]=`Soft`})(Ua||={});var Y=class extends R{type=0;get range(){return this._range}set range(e){this._range=e,this.light&&(this.light.type===`SpotLight`||this.light.type===`PointLight`)&&`distance`in this.light&&(this.light.distance=e)}_range=1;get spotAngle(){return this._spotAngle}set spotAngle(e){this._spotAngle=e,this.light&&this.light.type===`SpotLight`&&`angle`in this.light&&(this.light.angle=Ra(e/2))}_spotAngle=30;get innerSpotAngle(){return this._innerSpotAngle}set innerSpotAngle(e){if(this._innerSpotAngle=e,this.light&&this.light.type===`SpotLight`&&`penumbra`in this.light){let t=this.spotAngle,n=1-Ra(e/2)/Ra(t/2);this.light.penumbra=n}}_innerSpotAngle=10;set color(e){this._color=e,this.light!==void 0&&(this.light.color=e)}get color(){return this.light?this.light.color:this._color}_color=new t(16777215);set shadowNearPlane(e){if(e!==this._shadowNearPlane&&(this._shadowNearPlane=e,this.light?.shadow?.camera!==void 0)){let t=this.light.shadow.camera;t.near=e}}get shadowNearPlane(){return this._shadowNearPlane}_shadowNearPlane=.1;set shadowBias(e){e!==this._shadowBias&&(this._shadowBias=e,this.light?.shadow?.bias!==void 0&&(this.light.shadow.bias=e,this.light.shadow.needsUpdate=!0))}get shadowBias(){return this._shadowBias}_shadowBias=0;set shadowNormalBias(e){e!==this._shadowNormalBias&&(this._shadowNormalBias=e,this.light?.shadow?.normalBias!==void 0&&(this.light.shadow.normalBias=e,this.light.shadow.needsUpdate=!0))}get shadowNormalBias(){return this._shadowNormalBias}_shadowNormalBias=0;_overrideShadowBiasSettings=!1;set shadows(e){this._shadows=e,this.light&&(this.light.castShadow=e!==Ua.None,this.updateShadowSoftHard())}get shadows(){return this._shadows}_shadows=1;lightmapBakeType=Ha.Realtime;set intensity(e){this._intensity=e,this.light&&(this.light.intensity=e),Ba&&console.log(`Set light intensity to `+this._intensity,e,this)}get intensity(){return this._intensity}_intensity=-1;get shadowDistance(){let e=this.light;return e?.shadow?e.shadow.camera.far:-1}set shadowDistance(e){this._shadowDistance=e;let t=this.light;if(t?.shadow){let n=t.shadow.camera;n.far=e,n.updateProjectionMatrix()}}_shadowDistance;shadowWidth;shadowHeight;get shadowResolution(){let e=this.light;return e?.shadow?e.shadow.mapSize.x:-1}set shadowResolution(e){if(e===this._shadowResolution)return;this._shadowResolution=e;let t=this.light;t?.shadow&&(t.shadow.mapSize.set(e,e),t.shadow.needsUpdate=!0)}_shadowResolution=void 0;get isBaked(){return this.lightmapBakeType===Ha.Baked}get selfIsLight(){if(this.gameObject.isLight===!0)return!0;switch(this.gameObject.type){case`SpotLight`:case`PointLight`:case`DirectionalLight`:return!0}return!1}light=void 0;getWorldPosition(e){return this.light?this.type===Va.Directional?this.light.getWorldPosition(e).multiplyScalar(1):this.light.getWorldPosition(e):e}awake(){this.color=new t(this.color??16777215),Ba&&console.log(this.name,this)}onEnable(){Ba&&console.log(`ENABLE LIGHT`,this.name),this.createLight(),!this.isBaked&&(this.light&&(this.light.visible=!0,this.light.intensity=this._intensity,Ba&&console.log(`Set light intensity to `+this.light.intensity,this.name),this.selfIsLight||this.light.parent!==this.gameObject&&this.gameObject.add(this.light)),this.type===Va.Directional&&this.startCoroutine(this.updateMainLightRoutine(),an.LateUpdate))}onDisable(){Ba&&console.log(`DISABLE LIGHT`,this.name),this.light&&(this.selfIsLight?this.light.intensity=0:this.light.visible=!1)}createLight(){let e=this.selfIsLight;if(e&&!this.light)switch(this.light=this.gameObject,this.light.name=this.name,this._intensity=this.light.intensity,this.type){case Va.Directional:this.setDirectionalLight(this.light);break}else if(!this.light)switch(this.type){case Va.Directional:let e=new ne(this.color,this.intensity*Math.PI);if(e.position.set(0,0,-za*.5).applyQuaternion(this.gameObject.quaternion),this.gameObject.add(e.target),kt(e.target,0,0,0),this.light=e,this.gameObject.position.set(0,0,0),this.gameObject.rotation.set(0,0,0),Ba){let e=new f(this.light,.2,this.color);this.context.scene.add(e)}break;case Va.Spot:let t=new ce(this.color,this.intensity*Math.PI,this.range,Ra(this.spotAngle/2),1-Ra(this.innerSpotAngle/2)/Ra(this.spotAngle/2),2);t.position.set(0,0,0),t.rotation.set(0,0,0),this.light=t;let n=t.target;t.add(n),n.position.set(0,0,this.range),n.rotation.set(0,0,0);break;case Va.Point:this.light=new De(this.color,this.intensity*Math.PI,this.range);break}if(this.light){if(this._intensity>=0?this.light.intensity=this._intensity:this._intensity=this.light.intensity,this.shadows===Ua.None?this.light.castShadow=!1:this.light.castShadow=!0,this.light.shadow){this._shadowResolution!==void 0&&this._shadowResolution>4?(this.light.shadow.mapSize.width=this._shadowResolution,this.light.shadow.mapSize.height=this._shadowResolution):(this.light.shadow.mapSize.width=2048,this.light.shadow.mapSize.height=2048),Ba&&console.log(`Override shadow bias?`,this._overrideShadowBiasSettings,this.shadowBias,this.shadowNormalBias),this.light.shadow.bias=this.shadowBias,this.light.shadow.normalBias=this.shadowNormalBias,this.updateShadowSoftHard();let e=this.light.shadow.camera;if(e.near=this.shadowNearPlane,this._shadowDistance!==void 0&&typeof this._shadowDistance==`number`?e.far=this._shadowDistance:e.far=za*Math.abs(this.gameObject.scale.z),this.gameObject.scale.set(1,1,1),this.shadowWidth!==void 0)e.left=-this.shadowWidth/2,e.right=this.shadowWidth/2;else{let t=this.gameObject.scale.x;e.left*=t,e.right*=t}if(this.shadowHeight!==void 0)e.top=this.shadowHeight/2,e.bottom=-this.shadowHeight/2;else{let t=this.gameObject.scale.y;e.top*=t,e.bottom*=t}this.light.shadow.needsUpdate=!0,Ba&&this.context.scene.add(new g(e))}this.isBaked?this.light.removeFromParent():e||this.gameObject.add(this.light)}}*updateMainLightRoutine(){for(;;){this.type===Va.Directional&&((!this.context.mainLight||this.intensity>this.context.mainLight.intensity)&&(this.context.mainLight=this),yield);break}}static allowChangingRendererShadowMapType=!0;updateShadowSoftHard(){this.light&&this.light.shadow&&(this.shadows===Ua.Soft||(this.light.shadow.radius=1,this.light.shadow.blurSamples=1))}onEnterXR(e){this.applyXRScale(e.xr.rigScale)}onUpdateXR(e){this.applyXRScale(e.xr.rigScale)}onLeaveXR(e){this.applyXRScale(1)}applyXRScale(e){this.light&&(this.light.intensity=this._intensity/e,`distance`in this.light&&(this.light.distance=this._range/e))}setDirectionalLight(e){e.add(e.target),e.target.position.set(0,0,-1)}};La([A()],Y.prototype,`type`,void 0),La([A()],Y.prototype,`range`,null),La([A()],Y.prototype,`spotAngle`,null),La([A()],Y.prototype,`innerSpotAngle`,null),La([A(t)],Y.prototype,`color`,null),La([A()],Y.prototype,`shadowNearPlane`,null),La([A()],Y.prototype,`shadowBias`,null),La([A()],Y.prototype,`shadowNormalBias`,null),La([A()],Y.prototype,`shadows`,null),La([A()],Y.prototype,`lightmapBakeType`,void 0),La([A()],Y.prototype,`intensity`,null),La([A()],Y.prototype,`shadowDistance`,null),La([A()],Y.prototype,`shadowResolution`,null),new n(0,0,0);var Wa=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ga=N(`debuglods`),Ka=N(`nolods`),qa;(function(e){e[e.None=0]=`None`,e[e.CrossFade=1]=`CrossFade`,e[e.SpeedTree=2]=`SpeedTree`})(qa||={});var Ja=class{screenRelativeTransitionHeight;distance;renderers};Wa([A()],Ja.prototype,`screenRelativeTransitionHeight`,void 0),Wa([A()],Ja.prototype,`distance`,void 0),Wa([A(Vn)],Ja.prototype,`renderers`,void 0);var Ya=class{model;get renderers(){return this.model.renderers}constructor(e){this.model=e}},Xa=class extends R{lodModels=[];_lods=[];_settings=[];_lodsHandler;start(){if(Ga&&console.log(`LODGROUP`,this.name,this.lodModels,this),!Ka&&!this._lodsHandler&&this.gameObject&&this.lodModels&&Array.isArray(this.lodModels)){let e=[];for(let t of this.lodModels){let n=new Ya(t);this._lods.push(n);for(let t of n.renderers)e.includes(t)||e.push(t)}this._lodsHandler=[];for(let t=0;t=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Qa=N(`debugnestedgltf`),$a=class extends R{filePath;loaded=new k;loadAssetInParent=!0;_isLoadingOrDoneLoading=!1;listenToProgress(e){this.filePath?.beginListenDownload(e)}preload(){return this.filePath?.preload()||null}async start(){if(this._isLoadingOrDoneLoading)return;Qa&&console.log(this,this.guid);let e=this.gameObject.parent;if(e&&this.filePath){this._isLoadingOrDoneLoading=!0;let t=new nt;t.idProvider=new mt(this.hash(this.guid)),t.parent=this.loadAssetInParent===!1?this.gameObject:e,this.gameObject.updateMatrix();let n=this.gameObject.matrix;Qa&&console.log(`Load nested:`,this.filePath?.url??this.filePath,this.gameObject.position);let r=await this.filePath?.instantiate?.call(this.filePath,t);Qa&&console.log(`Nested loaded:`,this.filePath?.url??this.filePath,r),r&&this.loadAssetInParent!==!1&&(r.matrixAutoUpdate=!1,r.matrix.identity(),r.applyMatrix4(n),r.matrixAutoUpdate=!0,r.layers.disableAll(),r.layers.set(this.layer),this.loaded.invoke({component:this,instance:r,asset:this.filePath})),Qa&&console.log(`Nested loading done:`,this.filePath?.url??this.filePath,r)}}onDestroy(){this.filePath?.unload()}hash(e){let t=0;for(let n=0;n=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},to=N(`debugnet`),no=class e extends R{url=null;urlParameterName=null;localhost=null;awake(){to&&console.log(this),this.context.connection.registerProvider(this)}getWebsocketUrl(){let t=this.url?e.GetUrl(this.url,this.localhost):null;if(this.urlParameterName){let e=N(this.urlParameterName);e&&typeof e==`string`&&(t=e)}if(!t)return null;let n=RegExp(`(((https?)|(?wss?))://)?(www.)?(?.+)`,`gm`).exec(t);return n?.groups?n?.groups.socket_prefix?t:`wss://`+n?.groups.url:null}static GetUrl(t,n){let r=t,i=e.IsLocalNetwork()&&n;if(i&&(r=n),t?.startsWith(`/`)){let e=i?r:window.location.origin;e?.endsWith(`/`)&&t.startsWith(`/`)&&(t=t.substring(1)),r=e+t}return r}static IsLocalNetwork(e=window.location.hostname){return Ue(e)}};eo([A()],no.prototype,`url`,void 0),eo([A()],no.prototype,`urlParameterName`,void 0),eo([A()],no.prototype,`localhost`,void 0);var ro=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},io=class extends R{referenceSpace;from;affectPosition=!1;affectRotation=!1;alignLookDirection=!1;levelLookDirection=!1;levelPosition=!1;positionOffset=new n(0,0,0);rotationOffset=new n(0,0,0);offset=new n(0,0,0);update(){if(!this.from)return;var e=M(this.from),t=Xt(this.from);this.offset.copy(this.positionOffset);let r=this.offset.length();if(this.referenceSpace&&this.offset.transformDirection(this.referenceSpace.matrixWorld).multiplyScalar(r),e.add(this.offset),this.levelPosition&&this.referenceSpace){let t=new ae(this.gameObject.up,0),r=M(this.referenceSpace);t.setFromNormalAndCoplanarPoint(this.gameObject.up,r);let i=new n(0,0,0);t.projectPoint(e,i),e.copy(i)}this.affectPosition&&Oe(this.gameObject,e);let i=new be(this.rotationOffset.x,this.rotationOffset.y,this.rotationOffset.z),a=new x().setFromEuler(i);this.affectRotation&&Ye(this.gameObject,t.multiply(a));let o=new n;this.from.getWorldDirection(o).multiplyScalar(50),this.levelLookDirection&&(o.y=0),this.alignLookDirection&&this.gameObject.lookAt(o)}};ro([A(F)],io.prototype,`referenceSpace`,void 0),ro([A(F)],io.prototype,`from`,void 0),ro([A(n)],io.prototype,`positionOffset`,void 0),ro([A(n)],io.prototype,`rotationOffset`,void 0);var ao=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},oo=class extends R{strength=1;radius=2;targets=[];update(){let e=this.gameObject.worldPosition,t=-this.strength*this.context.time.deltaTime;this.targets?.forEach(n=>{if(!n)return;let r=n.gameObject.worldPosition.sub(e),i=r.length();if(i>this.radius)return;let a=t;i>1?a/=i*i:a/=Math.max(.05,i),n.applyImpulse(r.multiplyScalar(a))})}};ao([A()],oo.prototype,`strength`,void 0),ao([A()],oo.prototype,`radius`,void 0),ao([A(E)],oo.prototype,`targets`,void 0);var so=class e extends R{_didAssignPlayerColor=!1;onEnable(){this.context.connection.beginListen(P.JoinedRoom,this.tryAssignColor),this._didAssignPlayerColor||this.startCoroutine(this.waitForConnection())}onDisable(){this.context.connection.stopListen(P.JoinedRoom,this.tryAssignColor)}*waitForConnection(){for(;!this.destroyed&&this.activeAndEnabled&&(yield Ke(.2),!this.tryAssignColor()););}tryAssignColor=()=>{let e=F.getComponentInParent(this.gameObject,qn);if(e&&e.owner)return this._didAssignPlayerColor=!0,this.assignUserColor(e.owner),!0;let t=F.getComponentInParent(this.gameObject,Yn);return t?.connectionId?(this._didAssignPlayerColor=!0,this.assignUserColor(t.connectionId),!0):!1};assignUserColor(t){let n=e.hashCode(t),r=e.colorFromHashCode(n);if(this.gameObject.type===`Mesh`){let e=this.gameObject;this.assignColor(r,t,e)}else if(this.gameObject.children)for(let e of this.gameObject.children){let n=e;n.material&&n.material.color&&this.assignColor(r,t,n)}}assignColor(e,t,n){let r=n.material;r&&(r._playerMaterial!==t&&(r=r.clone(),r._playerMaterial=t,n.material=r),r.color=e)}static hashCode(e){var t=0,n,r;if(e.length===0)return t;for(n=0;n>16,r=(e&65280)>>8,i=e&255;return new t(n/255,r/255,i/255)}};function co(){return new Promise((e,t)=>{let n=()=>{n!=null&&(document.removeEventListener(`pointerdown`,n),document.removeEventListener(`click`,n),document.removeEventListener(`dragstart`,n),document.removeEventListener(`touchstart`,n),e())};document.addEventListener(`pointerdown`,n),document.addEventListener(`click`,n),document.addEventListener(`dragstart`,n),document.addEventListener(`touchstart`,n)})}async function lo(e){await co(),e()}var uo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},X=N(`debugvideo`),fo;(function(e){e[e.None=0]=`None`,e[e.AdjustHeight=1]=`AdjustHeight`,e[e.AdjustWidth=2]=`AdjustWidth`})(fo||={});var po;(function(e){e[e.VideoClip=0]=`VideoClip`,e[e.Url=1]=`Url`})(po||={});var mo;(function(e){e[e.None=0]=`None`,e[e.AudioSource=1]=`AudioSource`,e[e.Direct=2]=`Direct`,e[e.APIOnly=3]=`APIOnly`})(mo||={});var ho;(function(e){e[e.CameraFarPlane=0]=`CameraFarPlane`,e[e.CameraNearPlane=1]=`CameraNearPlane`,e[e.RenderTexture=2]=`RenderTexture`,e[e.MaterialOverride=3]=`MaterialOverride`})(ho||={});var Z=class extends R{playOnAwake=!0;aspectMode=fo.None;clip=null;source=po.Url;get url(){return this._url}set url(e){let t=this._url!==e;this.__didAwake?t&&this.setClipURL(e??``):this._url=e}_url=null;renderMode=ho.MaterialOverride;targetMaterialProperty;targetMaterialRenderer;targetTexture;time=0;_playbackSpeed=1;get playbackSpeed(){return this._videoElement?.playbackRate??this._playbackSpeed}set playbackSpeed(e){this._playbackSpeed=e,this._videoElement&&(this._videoElement.playbackRate=e)}_isLooping=!1;get isLooping(){return this._videoElement?.loop??this._isLooping}set isLooping(e){this._isLooping=e,this._videoElement&&(this._videoElement.loop=e)}get currentTime(){return this._videoElement?.currentTime??this.time}set currentTime(e){this._videoElement?this._videoElement.currentTime=e:this.time=e}get isPlaying(){let e=this._videoElement;return!!(e&&(e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>e.HAVE_CURRENT_DATA||e.srcObject&&e.srcObject.active))}get crossOrigin(){return this._videoElement?.crossOrigin??this._crossOrigin}set crossOrigin(e){this._crossOrigin=e,this._videoElement&&(e===null?this._videoElement.removeAttribute(`crossorigin`):this._videoElement.setAttribute(`crossorigin`,e))}get videoMaterial(){return!this._videoMaterial&&!this.create(!1)?null:this._videoMaterial}get videoTexture(){return!this._videoTexture&&!this.create(!1)?null:this._videoTexture}get videoElement(){return!this._videoElement&&!this.create(!1)?null:this._videoElement}requestPictureInPicture(){return this._videoElement?this._videoElement.requestPictureInPicture():null}get muted(){return this._videoElement?.muted??this._muted}set muted(e){this._muted=e,this._videoElement&&(this._videoElement.muted=e)}_muted=!1;get currentVideo(){return this.clip}set audioOutputMode(e){e!==this._audioOutputMode&&(e===mo.AudioSource&&w()&&console.warn(`VideoAudioOutputMode.AudioSource is not yet implemented`),this._audioOutputMode=e,this.updateVideoElementSettings())}get audioOutputMode(){return this._audioOutputMode}_audioOutputMode=mo.Direct;playInBackground=!0;_crossOrigin=`anonymous`;_videoElement=null;_videoTexture=null;_videoMaterial=null;_isPlaying=!1;wasPlaying=!1;preloadVideo(){X&&console.log(`Video Preload: `+this.name,this.clip),this.create(!1)}preload(){this.preloadVideo()}setVideo(e){this.clip=e,this.source=po.VideoClip,this._videoElement?(this._videoElement.srcObject=e,this._isPlaying&&this.play(),this.updateAspect()):this.create(this.playOnAwake)}setClipURL(e){this._url!==e&&(this._url=e,this.source=po.Url,X&&console.log(`set url`,e),this._videoElement?e.endsWith(`.m3u8`)||e.includes(`.m3u`)?this.ensureM3UCanBePlayed():(this._videoElement.src=e,this._isPlaying&&(this.stop(),this.play())):this.create(this.playOnAwake))}onEnable(){X&&console.log(`VideoPlayer.onEnable`,po[this.source],this.clip,this.url,this),window.addEventListener(`visibilitychange`,this.visibilityChanged),this.playOnAwake===!0?this.create(!0):this.preloadVideo(),this.screenspace?this._overlay?.start():this._overlay?.stop()}onDisable(){window.removeEventListener(`visibilitychange`,this.visibilityChanged),this._overlay?.stop(),this.pause()}visibilityChanged=e=>{switch(document.visibilityState){case`hidden`:this.playInBackground||(this.wasPlaying=this._isPlaying,this.pause());break;case`visible`:this.wasPlaying&&!this._isPlaying&&this.play();break}};onDestroy(){this._videoElement&&=(this.videoElement?.remove(),null),this._videoTexture&&=(this._videoTexture.dispose(),null)}_receivedInput=!1;constructor(){super(),lo(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],N(`videoscreenspace`)&&window.addEventListener(`keydown`,e=>{e.key===`f`&&(this.screenspace=!this.screenspace)})}_playErrors=0;play(){if(this._videoElement||this.create(!1),!this._videoElement){X&&console.warn(`Can not play: no video element found`,this);return}if(!(this._isPlaying&&!this._videoElement?.ended&&!this._videoElement?.paused)){if(this._isPlaying=!0,this._receivedInput||(this._videoElement.muted=!0),this.handleBeginPlaying(!1),this.shouldUseM3U){this.ensureM3UCanBePlayed();return}X&&console.log(`Video Play()`,this.clip,this._videoElement,this.time),this._videoElement.currentTime=this.time,this._videoElement.play().catch(e=>{this._playErrors++<10?console.error(e):this._playErrors===10&&console.error(`Multiple errors playing video, further errors will be suppressed. Use 'debugvideo' param to see all errors.`),X&&console.error(`Error playing video`,e,`CODE=`+e.code,this.videoElement?.src,this),setTimeout(()=>{this._isPlaying&&!this.destroyed&&this.activeAndEnabled&&this.play()},1e3)}),X&&console.log(`play`,this._videoElement,this.time)}}stop(){this._isPlaying=!1,this.time=0,this._videoElement&&(this._videoElement.currentTime=0,this._videoElement.pause(),X&&console.log(`STOP`,this))}pause(){this.time=this._videoElement?.currentTime??0,this._isPlaying=!1,this._videoElement?.pause(),X&&console.log(`PAUSE`,this,this.currentTime)}create(e){let t;switch(this.source){case po.VideoClip:t=this.clip;break;case po.Url:t=this.url,!t?.length&&typeof this.clip==`string`&&(t=this.clip);break}return t?(this._videoElement||(X&&console.warn(`Create VideoElement`,this),this._videoElement=this.createVideoElement(),this.context.domElement.shadowRoot.prepend(this._videoElement),this.updateVideoElementStyles()),typeof t==`string`?(X&&console.log(`Set Video src`,t),this._videoElement.src=t):(X&&console.log(`Set Video srcObject`,t),this._videoElement.srcObject=t),this._videoTexture||=new l(this._videoElement),this._videoTexture.flipY=!1,this._videoTexture.colorSpace=re,e&&this.handleBeginPlaying(e),X&&console.log(`Video: handle playing done...`,t,e),!0):(X&&console.warn(`No video source set`,this),!1)}updateAspect(){this.aspectMode!==fo.None&&this.startCoroutine(this.updateAspectImpl())}_overlay=null;get screenspace(){return this._overlay?.enabled??!1}set screenspace(e){if(e){if(!this._videoTexture)return;this._overlay||=new go(this.context),this._overlay.add(this._videoTexture)}else this._overlay?.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=e)}_targetObjects;createVideoElement(){let e=document.createElement(`video`);return this._crossOrigin&&e.setAttribute(`crossorigin`,this._crossOrigin),X&&console.log(`created video element`,e),e}handleBeginPlaying(e){if(!this.activeAndEnabled||!this._videoElement)return;this._targetObjects.length=0;let t=this.gameObject;switch(this.renderMode){case ho.MaterialOverride:t=this.targetMaterialRenderer?.gameObject,t||=F.getComponent(this.gameObject,Vn)?.gameObject;break;case ho.RenderTexture:console.error(`VideoPlayer renderTexture not implemented yet. Please use material override instead`);return}if(!t){console.error(`Missing target for video material renderer`,this.name,ho[this.renderMode],this);return}let n=t.material;if(n){this._targetObjects.push(t),n!==this._videoMaterial&&(this._videoMaterial=n.clone(),t.material=this._videoMaterial);let e=this._videoMaterial;if(!this.targetMaterialProperty)X&&e.map===void 0&&console.warn(`The target material does not have a 'map' property, video might not render correctly.`),e.map=this._videoTexture;else switch(this.targetMaterialProperty){default:X&&e[this.targetMaterialProperty]===void 0&&console.warn(`The target material does not have a '${this.targetMaterialProperty}' property, video might not render correctly.`),e.map=this._videoTexture;break}}else{console.warn(`Can not play video, no material found, this might be a multimaterial case which is not supported yet`);return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),e&&(this.shouldUseM3U&&this.ensureM3UCanBePlayed(),this.play())}updateVideoElementSettings(){if(!this._videoElement)return;this._videoElement.loop=this._isLooping,this._videoElement.currentTime=this.currentTime,this._videoElement.playbackRate=this._playbackSpeed,this._videoElement.playsInline=!0;let e=!this._receivedInput||this.audioOutputMode===mo.None;!e&&this._muted&&(e=!0),this._videoElement.muted=e,this.playOnAwake&&(this._videoElement.autoplay=!0)}updateVideoElementStyles(){this._videoElement&&(this._videoElement.style.userSelect=`none`,this._videoElement.style.visibility=`hidden`,this._videoElement.style.display=`none`,this.updateAspect())}_updateAspectRoutineId=-1;*updateAspectImpl(){let e=++this._updateAspectRoutineId,t=this.clip;for(;e===this._updateAspectRoutineId&&this.aspectMode!==fo.None&&this.clip&&t===this.clip&&this._isPlaying;){if(!t||typeof t==`string`)return;let e;for(let n of t.getVideoTracks()){let t=n.getSettings();if(t&&t.width&&t.height){e=t.width/t.height;break}else e=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(e===void 0){for(let e=0;e<10;e++)yield;if(!this.isPlaying)break;continue}if(e===void 0){yield;continue}for(let t of this._targetObjects){let n=1;if(t.parent){let e=_t(t.parent);n=e.x/e.y}switch(this.aspectMode){case fo.AdjustHeight:t.scale.y=1/e*t.scale.x*n;break;case fo.AdjustWidth:t.scale.x=e*t.scale.y*n;break}}for(let e=0;e<3;e++)yield}}get shouldUseM3U(){return this.url!=null&&(this.url.endsWith(`.m3u8`)||this.url.endsWith(`.m3u`))&&this.source===po.Url}ensureM3UCanBePlayed(){if(!this.shouldUseM3U)return;let e=document.head.querySelector(`script[data-hls_library]`);e?globalThis.Hls?this.onHlsAvailable():e.addEventListener(`load`,this.onHlsAvailable):(X&&console.log(`HLS: load script`),e=document.createElement(`script`),e.dataset.hls_library=`hls.js`,e.src=`https://cdn.jsdelivr.net/npm/hls.js@1`,e.addEventListener(`load`,this.onHlsAvailable),document.head.append(e))}_hls;onHlsAvailable=()=>{X&&console.log(`HLS: available`,this.clip),!(!this.shouldUseM3U||!this.url)&&(this._hls||=new Hls,this.videoElement.autoplay=!0,this._hls.loadSource(this.url),this._hls.attachMedia(this.videoElement),this._videoElement?.play(),X&&console.log(`HLS: loaded`,this.clip))}};uo([A()],Z.prototype,`playOnAwake`,void 0),uo([A()],Z.prototype,`aspectMode`,void 0),uo([A(URL)],Z.prototype,`clip`,void 0),uo([A()],Z.prototype,`source`,void 0),uo([A(URL)],Z.prototype,`url`,null),uo([A()],Z.prototype,`renderMode`,void 0),uo([A()],Z.prototype,`targetMaterialProperty`,void 0),uo([A(Vn)],Z.prototype,`targetMaterialRenderer`,void 0),uo([A(ue)],Z.prototype,`targetTexture`,void 0),uo([A()],Z.prototype,`time`,void 0),uo([A()],Z.prototype,`playbackSpeed`,null),uo([A()],Z.prototype,`isLooping`,null),uo([A()],Z.prototype,`audioOutputMode`,null);var go=class{context;constructor(e){this.context=e,this._input=new _o(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;let t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){if(this._isInScreenspaceMode||this._videos.length<0)return;let e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=Ze.createPrimitive(et.Quad,{material:new vo(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}let t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();let n=t.material;n?.reset(),this._input?.enable(n)}stop(){this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&(this._input?.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){let e=this._screenspaceModeQuad?.material;e&&(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}_videos=[];_screenspaceModeQuad;_isInScreenspaceMode=!1;_input},_o=class{_onResizeScreenFn;_onKeyUpFn;_onMouseWheelFn;context;overlay;constructor(e){this.overlay=e,this.context=e.context}_material;enable(e){this._material=e,window.addEventListener(`resize`,this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener(`keyup`,this._onKeyUpFn=e=>{e.key===`Escape`&&this.overlay.stop()}),window.addEventListener(`wheel`,this._onMouseWheelFn=t=>{this.overlay.enabled&&(e.zoom+=t.deltaY*5e-4,t.preventDefault())},{passive:!1});let t=new b;window.addEventListener(`mousemove`,n=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){let r=new b(n.movementX,n.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener(`pointermove`,n=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(n.movementX,n.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let n=0;window.addEventListener(`touchstart`,e=>{if(e.touches.length<2){this.context.time.time-n<.3&&this.overlay.stop(),n=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener(`touchmove`,e=>{if(!this._isPinching||!this._material)return;let t=e.touches[0],n=e.touches[1],r=t.clientX-n.clientX,i=t.clientY-n.clientY,a=Math.sqrt(r*r+i*i);if(this._lastPinch!==0){let e=a-this._lastPinch;this._material.zoom-=e*.004}this._lastPinch=a}),window.addEventListener(`touchend`,()=>{this._isPinching=!1})}_isPinching=!1;_lastPinch=0;disable(){this._onResizeScreenFn&&=(window.removeEventListener(`resize`,this._onResizeScreenFn),void 0),this._onKeyUpFn&&=(window.removeEventListener(`keyup`,this._onKeyUpFn),void 0),this._onMouseWheelFn&&=(window.removeEventListener(`wheel`,this._onMouseWheelFn),void 0)}},vo=class extends ye{set screenAspect(e){this.uniforms.screenAspect.value=e,this.needsUpdate=!0}set offset(e){let t=this.uniforms.offsetScale.value;t.x=e.x,t.y=e.y,this.uniforms.offsetScale.value=t,this.needsUpdate=!0}_offset=new b;get offset(){let e=this.uniforms.offsetScale.value;return this._offset.set(e.x,e.y),this._offset}set zoom(e){let t=this.uniforms.offsetScale.value;e<.001&&(e=.001),t.z=e,this.needsUpdate=!0}get zoom(){return this.uniforms.offsetScale.value.z}reset(){this.offset=this.offset.set(0,0),this.zoom=1,this.needsUpdate=!0}constructor(e){super(),this.uniforms={map:{value:e},screenAspect:{value:1},offsetScale:{value:new pe(0,0,1,1)}},this.vertexShader=` + uniform sampler2D map; + uniform float screenAspect; + uniform vec4 offsetScale; + varying vec2 vUv; + + void main() { + + gl_Position = vec4( position , 1.0 ); + vUv = uv; + vUv.y = 1. - vUv.y; + + // fit into screen + ivec2 res = textureSize(map, 0); + float videoAspect = float(res.x) / float(res.y); + float aspect = videoAspect / screenAspect; + if(aspect >= 1.0) + { + vUv.y = vUv.y * aspect; + float offset = (1. - aspect) * .5; + vUv.y = vUv.y + offset; + } + else + { + vUv.x = vUv.x / aspect; + float offset = (1. - 1. / aspect) * .5; + vUv.x = vUv.x + offset; + } + + vUv.x -= .5; + vUv.y -= .5; + + vUv.x *= offsetScale.z; + vUv.y *= offsetScale.z; + vUv.x += offsetScale.x; + vUv.y += offsetScale.y; + + vUv.x += .5; + vUv.y += .5; + } + + `,this.fragmentShader=` + uniform sampler2D map; + varying vec2 vUv; + void main() { + if(vUv.x < 0. || vUv.x > 1. || vUv.y < 0. || vUv.y > 1.) + gl_FragColor = vec4(0., 0., 0., 1.); + else + { + vec4 texcolor = texture2D(map, vUv); + gl_FragColor = texcolor; + } + } + `}},yo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Q=N(`debugscreensharing`),bo;(function(e){e[e.Screen=0]=`Screen`,e[e.Camera=1]=`Camera`,e[e.Canvas=2]=`Canvas`,e[e.Microphone=3]=`Microphone`})(bo||={});var xo;(function(e){e[e.Idle=0]=`Idle`,e[e.Sending=1]=`Sending`,e[e.Receiving=2]=`Receiving`})(xo||={});var So=class extends R{allowStartOnClick=!0;onPointerEnter(){this.context.connection.allowEditing!=0&&this.allowStartOnClick&&this.context.input.setCursor(`pointer`)}onPointerExit(){this.context.connection.allowEditing!=0&&this.allowStartOnClick&&this.context.input.unsetCursor(`pointer`)}onPointerClick(e){if(this.context.connection.allowEditing!=0&&this.allowStartOnClick&&!(e&&e.pointerId!==0)){if(this.isReceiving&&this.videoPlayer?.isPlaying){this.videoPlayer&&(this.videoPlayer.screenspace=!this.videoPlayer.screenspace);return}if(this.isSending){this.close();return}this.share()}}autoConnect=!1;set videoPlayer(e){this._videoPlayer&&(this.isSending||this.isReceiving)&&this._videoPlayer.stop(),this._videoPlayer=e,this._videoPlayer&&this._currentStream&&(this.isSending||this.isReceiving)&&this._videoPlayer.setVideo(this._currentStream)}get videoPlayer(){return this._videoPlayer}_videoPlayer;_audioSource;get screenspace(){return this.videoPlayer?.screenspace??!1}set screenspace(e){this.videoPlayer&&(this.videoPlayer.screenspace=e)}device=`Screen`;deviceName;deviceFilter;get currentScream(){return this._currentStream}get currentMode(){return this._currentMode}get isSending(){return this._currentStream?.active&&this._currentMode===xo.Sending}get isReceiving(){if(this._currentMode===xo.Receiving){if(!this._currentStream||this._currentStream.active===!1)return!1;let e=this._currentStream.getTracks();for(let t of e)if(t.readyState===`live`)return!0}return!1}get requiresVideoPlayer(){return this.device!==`Microphone`}_net;_requestOpen=!1;_currentStream=null;_currentMode=xo.Idle;awake(){typeof this.device==`number`&&(this.device=bo[this.device]),Q&&console.log(`Screensharing`,this.name,this),Kn.registerWaitForAllowAudio(()=>{this._videoPlayer&&this._currentStream&&this._currentMode===xo.Receiving&&(this._videoPlayer.playInBackground=!0,this._videoPlayer.setVideo(this._currentStream))}),this._net=new er(this)}onEnable(){this._net?.enable(),this._net?.addEventListener(dr.StreamReceived,this.onReceiveStream),this._net?.addEventListener(dr.StreamEnded,this.onCallEnded),this.context.connection.beginListen(P.JoinedRoom,this.onJoinedRoom),this.autoConnect&&zt(1e3).then(()=>(this.enabled&&this.autoConnect&&!this.isReceiving&&!this.isSending&&this.context.connection.isInRoom&&this.share(),0))}onDisable(){this._net?.removeEventListener(dr.StreamReceived,this.onReceiveStream),this._net?.removeEventListener(dr.StreamEnded,this.onCallEnded),this.context.connection.stopListen(P.JoinedRoom,this.onJoinedRoom),this._net?.disable(),this.close()}onJoinedRoom=async()=>{await zt(1e3),this.autoConnect&&!this.isSending&&!this.isReceiving&&this.context.connection.isInRoom&&this.share()};_ensureVideoPlayer(){let e=new Z;e.aspectMode=fo.AdjustWidth,F.addComponent(this.gameObject,e),this._videoPlayer=e}_activeShareRequest=null;async share(e){return this._activeShareRequest?this._activeShareRequest:(this._activeShareRequest=this.internalShare(e),this._activeShareRequest.then(()=>this._activeShareRequest=null))}async internalShare(e){if(this.context.connection.isInRoom===!1){console.warn(`Can not start screensharing: requires network connection`),w()&&Ht(`Can not start screensharing: requires network connection. Add a SyncedRoom component or join a room first.`);return}if(e?.device&&(this.device=e.device),!this.videoPlayer&&this.requiresVideoPlayer&&(this._videoPlayer||=F.getComponent(this.gameObject,Z)??void 0,this.videoPlayer||this._ensureVideoPlayer(),!this.videoPlayer)){console.warn(`Can not share video without a videoPlayer assigned`);return}this._requestOpen=!0;try{let t=e?.constraints??{echoCancellation:!0,autoGainControl:!1},n={video:t,audio:t},r=n.video;switch(r!==void 0&&typeof r!=`boolean`&&(r.width||={max:1920},r.height||={max:1920},r.aspectRatio||={ideal:1.7777777778},r.frameRate||={ideal:24},r.facingMode||={ideal:`user`}),this.device){case`Camera`:this.tryShareUserCamera(n,e);break;case`Screen`:{if(!navigator.mediaDevices.getDisplayMedia){console.error(`No getDisplayMedia support`);return}let e=await navigator.mediaDevices.getDisplayMedia(n);this._requestOpen?this.setStream(e,xo.Sending):nr(e)}break;case`Canvas`:let t=this.context.renderer.domElement.captureStream(0);this.setStream(t,xo.Sending);break;case`Microphone`:{if(!navigator.mediaDevices.getUserMedia){console.error(`No getDisplayMedia support`);return}n.video=!1;let e=await navigator.mediaDevices.getUserMedia(n);this._requestOpen?this.setStream(e,xo.Sending):nr(e)}break;default:console.error(`Can not start screen sharing: Unknown device type`,this.device)}}catch(e){if(e.name===`NotAllowedError`){console.log(`Selection cancelled`),this._requestOpen=!1;return}console.error(`Error opening video`,e)}}close(){this._requestOpen=!1,this._currentStream&&=(Q&&console.warn(`Close current stream / disposing resources, stream was active?`,this._currentStream.active),this._net?.stopSendingStream(this._currentStream),nr(this._currentStream),this._currentMode=xo.Idle,null)}setStream(e,t){if(e===this._currentStream||(this.close(),!e))return;this._currentStream=e,this._requestOpen=!0,this._currentMode=t;let n=this.device!==`Microphone`,r=t===xo.Sending;n?(this._videoPlayer||this._ensureVideoPlayer(),this._videoPlayer?this._videoPlayer.setVideo(e):console.error(`No video player assigned for video stream`)):(this._audioSource||(this._audioSource=new Kn,this._audioSource.spatialBlend=0,this._audioSource.volume=1,this.gameObject.addComponent(this._audioSource)),r||(Q&&console.log(`PLAY`,e.getAudioTracks()),this._audioSource.volume=1,this._audioSource?.play(e))),r&&this._net?.startSendingStream(e),r&&(this._videoPlayer&&(this._videoPlayer.muted=!0),this._audioSource?.stop());for(let t of e.getTracks())t.addEventListener(`ended`,()=>{Q&&console.log(`Track ended`,t),this.close()}),Q&&t.kind===`video`&&console.log(r?`Video →`:`Video ←`,t.getSettings())}onReceiveStream=e=>{e.stream?.active===!0&&this.setStream(e.stream,xo.Receiving)};onCallEnded=e=>{Q&&console.log(`CALL ENDED`,this.isReceiving,this?.screenspace),this.isReceiving&&(this.screenspace=!1)};async tryShareUserCamera(e,t){let n=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`videoinput`);Q&&console.log(`Request camera. These are your kind:videoinput devices: +`,n);let r=!1;for(let i of n)try{if(!this._requestOpen){Q&&console.log(`Camera selection cancelled`);break}if(i.kind!==`videoinput`){Q&&console.log(`Skipping non-video device`,i);continue}let n=i.deviceId;if(t?.deviceId!=null||t?.deviceFilter!=null){if(t?.deviceId!==void 0&&n!==t.deviceId){Q&&console.log(`Skipping device due to options.deviceId: `+i.label+`; `+i.deviceId);continue}if(t?.deviceFilter&&t.deviceFilter(i)===!1){Q&&console.log(`Skipping device due to options.deviceFilter: `+i.label+`; `+i.deviceId);continue}}else if(this.deviceFilter)if(this.deviceFilter(i)===!1){Q&&console.log(`Skipping device due to ScreenShare.deviceFilter: `+i.label+`; `+i.deviceId);continue}else Q&&console.log(`Selected device by filter`,i);else if(this.deviceName){let e=i.label.toLowerCase(),t=this.deviceName.toLowerCase(),n=e.includes(t),r=i.deviceId===this.deviceName;if(!n&&!r){Q&&console.log(`Skipping device due to ScreenShare.deviceName: `+i.label+`; `+i.deviceId);continue}else Q&&console.log(`Selected device by name`,i)}e.video!==!1&&((e.video===void 0||typeof e.video==`boolean`)&&(e.video={}),e.video.deviceId=n),r=!0;let a=await navigator.mediaDevices.getUserMedia(e).catch(e=>(console.error(`Failed to get user media`,e),null));if(a===null)continue;this._requestOpen?(this.setStream(a,xo.Sending),Q&&console.log(`Selected camera`,i)):(nr(a),Q&&console.log(`Camera selection cancelled`));break}catch(e){if(e.message===`Failed to allocate videosource`||e.message===`Could not start video source`){Ht(`Failed to start video: Try another camera (Code `+e.code+`)`),console.warn(e);continue}else console.error(`Failed to get user media`,e.message,e.code,e)}!r&&w()&&(Ht(`No camera found for sharing. Please connect a camera (see console for more information)`),console.warn(`No camera found for sharing. Please connect a camera`,n,this.deviceName,`Using deviceFilter? `+this.deviceFilter!=null,`Using options? `+t!=null,`Using deviceName? `+this.deviceName!=null,`Using options.deviceId? `+t?.deviceId!=null,`Using options.deviceFilter? `+t?.deviceFilter!=null))}};yo([A()],So.prototype,`allowStartOnClick`,void 0),yo([A()],So.prototype,`autoConnect`,void 0),yo([A(Z)],So.prototype,`videoPlayer`,null),yo([A()],So.prototype,`device`,void 0),yo([A()],So.prototype,`deviceName`,void 0);var Co=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},wo=N(`debugseethrough`),To=0,Eo=class extends R{referencePoint=null;fadeDuration=.05;minAlpha=0;useAlphaHash=!0;set needsUpdate(e){this._needsUpdate=e}get needsUpdate(){return this._needsUpdate}overrideAlpha=-1;autoUpdate=!0;_referencePointVector=new n;_referencePointDir=new n;_distance=0;_renderer=null;_needsUpdate=!0;_id=To++;onEnable(){this._needsUpdate=!0,this._renderer=null}onDisable(){}update(){if(this._needsUpdate?(this._needsUpdate=!1,this._renderer=this.gameObject.getComponentsInChildren(Vn),this.updateDirection()):this.autoUpdate&&(this.context.time.frame+this._id)%20==0&&this.updateDirection(),!this.autoUpdate||!this.referencePoint)return;let e=this._referencePointDir.dot(this.context.mainCamera.worldForward)>.2;if(wo&&this.referencePoint){let t=this.gameObject.worldPosition;V.DrawArrow(z(t),t.sub(this._referencePointDir),e?16711680:65280),V.DrawWireSphere(this.referencePoint.worldPosition,.05,255)}e?this.updateAlpha(this.minAlpha,this.fadeDuration):this.updateAlpha(1,this.fadeDuration)}updateDirection(){this.referencePoint??=this.context.scene,this._referencePointVector.copy(this.gameObject.worldPosition.sub(this.referencePoint.worldPosition)),this._distance=this._referencePointVector.length(),this._referencePointDir.copy(this._referencePointVector).multiply(z(1,.5,1)).normalize()}updateAlpha(e,t=this.fadeDuration){this.overrideAlpha!==void 0&&this.overrideAlpha!==-1&&(e=this.overrideAlpha),this._renderer?.forEach(n=>{e<.9?n.gameObject.raycastAllowed=!1:n.gameObject.raycastAllowed=!0;let r=n.sharedMaterials;if(!r)return;let i=Sn.get(n.gameObject),a=i.getOverride(`opacity`)?.value??r[0].opacity??1,o=O.lerp(a,e,t<=0?1:this.context.time.deltaTime/t);o>=.99?o=1:o<=.01&&(o=0),i.setOverride(`alphaHash`,this.useAlphaHash),i.setOverride(`opacity`,o),i.setOverride(`transparent`,o>=.99999?!1:!this.useAlphaHash)})}};Co([A(y)],Eo.prototype,`referencePoint`,void 0),Co([A()],Eo.prototype,`fadeDuration`,void 0),Co([A()],Eo.prototype,`minAlpha`,void 0),Co([A()],Eo.prototype,`useAlphaHash`,void 0),Co([A()],Eo.prototype,`overrideAlpha`,void 0),Co([A()],Eo.prototype,`autoUpdate`,void 0);var Do=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Oo;(function(e){e[e.ShadowMask=0]=`ShadowMask`,e[e.Additive=1]=`Additive`,e[e.Occluder=2]=`Occluder`})(Oo||={});var ko=class extends R{mode=Oo.ShadowMask;shadowColor=new vt(0,0,0,1);targetMesh;start(){if(this.gameObject instanceof v)this.gameObject instanceof v&&this.gameObject.material&&(this.gameObject.material=this.gameObject.material.clone(),this.targetMesh=this.gameObject,this.targetMesh.receiveShadow=!0);else{let e=Ze.createPrimitive(et.Quad,{name:`ShadowCatcher`,material:new fe({color:10066329,roughness:1,metalness:0,transparent:!0})});e.receiveShadow=!0,e.geometry.rotateX(-Math.PI/2),this.gameObject.add(e),this.targetMesh=e}if(!this.targetMesh){console.warn(`ShadowCatcher: no mesh to apply shadow catching to. Groups are currently not supported.`);return}switch(this.targetMesh.layers.set(2),this.mode){case Oo.ShadowMask:this.applyShadowMaterial();break;case Oo.Additive:this.applyLightBlendMaterial();break;case Oo.Occluder:this.applyOccluderMaterial();break}}applyLightBlendMaterial(){if(!this.targetMesh)return;let e=this.targetMesh.material;e.blending=2,this.applyMaterialOptions(e),e.onBeforeCompile=e=>{e.fragmentShader=e.fragmentShader.replace(`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;`,`vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + // diffuse-only lighting with overdrive to somewhat compensate + // for the loss of indirect lighting and to make it more visible. + vec3 direct = (reflectedLight.directDiffuse + reflectedLight.directSpecular) * 6.6; + float max = max(direct.r, max(direct.g, direct.b)); + + // early out - we're simply returning direct lighting and some alpha based on it so it can + // be blended onto the scene. + gl_FragColor = vec4(direct, max); + return; + `)},e.userData.isLightBlendMaterial=!0}applyShadowMaterial(){if(this.targetMesh)if(this.targetMesh.material.type!==`ShadowMaterial`){let e=new ge;e.color=this.shadowColor,e.opacity=this.shadowColor.alpha,this.applyMaterialOptions(e),this.targetMesh.material=e,e.userData.isShadowCatcherMaterial=!0}else{let e=this.targetMesh.material;e.color=this.shadowColor,e.opacity=this.shadowColor.alpha,this.applyMaterialOptions(e),e.userData.isShadowCatcherMaterial=!0}}applyOccluderMaterial(){if(this.targetMesh){let e=this.targetMesh.material;if(!e){let t=new m;this.targetMesh.material=t,e=t}e.depthWrite=!0,e.stencilWrite=!0,e.colorWrite=!1,this.gameObject.renderOrder=-100}}applyMaterialOptions(e){e&&(e.depthWrite=!1,e.stencilWrite=!1)}};Do([A()],ko.prototype,`mode`,void 0),Do([A(vt)],ko.prototype,`shadowColor`,void 0);var Ao=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},jo=class e extends R{target=null;followFactor=.1;rotateFactor=.1;positionAxes=je.All;flipForward=!1;static _invertForward=new x().setFromAxisAngle(new n(0,1,0),Math.PI);_firstUpdate=!0;onBeforeRender(){this.updateNow(!1)}updateNow(t){if(!(!this.target||this.target===this.gameObject)){if(this.followFactor>0){let e=M(this.target),n=this._firstUpdate||t?1:O.clamp01(this.context.time.deltaTime*this.followFactor),r=this.worldPosition;this.positionAxes&je.X&&(r.x=O.lerp(r.x,e.x,n)),this.positionAxes&je.Y&&(r.y=O.lerp(r.y,e.y,n)),this.positionAxes&je.Z&&(r.z=O.lerp(r.z,e.z,n)),this.worldPosition=r}if(this.rotateFactor>0){let n=Xt(this.target);this.flipForward&&n.premultiply(e._invertForward);let r=this._firstUpdate||t?1:O.clamp01(this.context.time.deltaTime*this.rotateFactor);this.worldQuaternion=this.worldQuaternion.slerp(n,r)}this._firstUpdate=!1}}};Ao([A(y)],jo.prototype,`target`,void 0),Ao([A()],jo.prototype,`followFactor`,void 0),Ao([A()],jo.prototype,`rotateFactor`,void 0),Ao([A()],jo.prototype,`positionAxes`,void 0);var Mo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},No=N(`debugspatialtrigger`),Po=new r,Fo=new r;function Io(e,t){return Po.mask=e,Fo.mask=t,Po.test(Fo)}var Lo=class extends R{triggerMask=0;onEnter;onStay;onExit;start(){No&&console.log(this.name,this.triggerMask,this)}update(){this.currentIntersected.length=0;for(let e of Ro.triggers)Io(e.triggerMask,this.triggerMask)&&e.test(this.gameObject)&&this.currentIntersected.push(e);for(let e=this.lastIntersected.length-1;e>=0;e--){let t=this.lastIntersected[e];this.currentIntersected.indexOf(t)<0&&(this.onExitTrigger(t),this.lastIntersected.splice(e,1))}for(let e of this.currentIntersected)this.lastIntersected.indexOf(e)<0&&this.onEnterTrigger(e),this.onStayTrigger(e);this.lastIntersected.length=0,this.lastIntersected.push(...this.currentIntersected)}currentIntersected=[];lastIntersected=[];onEnterTrigger(e){No&&console.log(`ENTER TRIGGER`,this.name,e.name,this,e),e.raiseOnEnterEvent(this),this.onEnter?.invoke()}onExitTrigger(e){No&&console.log(`EXIT TRIGGER`,this.name,e.name),e.raiseOnExitEvent(this),this.onExit?.invoke()}onStayTrigger(e){e.raiseOnStayEvent(this),this.onStay?.invoke()}};Mo([A()],Lo.prototype,`triggerMask`,void 0),Mo([A(k)],Lo.prototype,`onEnter`,void 0),Mo([A(k)],Lo.prototype,`onStay`,void 0),Mo([A(k)],Lo.prototype,`onExit`,void 0);var Ro=class e extends R{static triggers=[];triggerMask;boxHelper;start(){No&&console.log(this.name,this.triggerMask,this)}onEnable(){e.triggers.push(this),this.boxHelper||(this.boxHelper=F.addComponent(this.gameObject,Di),this.boxHelper?.showHelper(null,No))}onDisable(){e.triggers.splice(e.triggers.indexOf(this),1)}test(e){return this.boxHelper?this.boxHelper.isInBox(e)??!1:!1}raiseOnEnterEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onEnterTrigger(this)},!1)}raiseOnStayEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onStayTrigger(this)},!1)}raiseOnExitEvent(e){F.foreachComponent(this.gameObject,t=>{t!==e&&t instanceof Lo&&t.onExitTrigger(this)},!1)}};Mo([A()],Ro.prototype,`triggerMask`,void 0);var zo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Bo;(function(e){e[e.FirstPerson=0]=`FirstPerson`,e[e.ThirdPerson=1]=`ThirdPerson`})(Bo||={});var Vo=N(`debugspectator`),Ho=class extends R{cam=null;useKeys=!0;_mode=Bo.FirstPerson;get mode(){return this._mode}set mode(e){this._mode=e}get isSpectating(){return this._handler?.currentTarget!==void 0}isSpectatingUser(e){return this.target?.userId===e}isFollowedBy(e){return this.followers?.includes(e)}get followers(){return this._networking.followers}stopSpectating(){if(this.context.isInXR){this.followSelf();return}this.target=void 0}get localId(){return this.context.connection.connectionId??`local`}set target(e){if(this._handler){let t=this._handler.currentTarget?.userId,n=this.context.players.getPlayerView(this.localId);e===void 0||this.context.isInXR===!1&&n?.currentObject===e.currentObject?this._handler.currentTarget!==void 0&&(this._handler.disable(),F.setActive(this.gameObject,!1),this.orbit&&(this.orbit.enabled=!0),this._networking.onSpectatedObjectChanged(e,t)):this._handler.currentTarget!==e&&(this._handler.set(e),F.setActive(this.gameObject,!0),this.orbit&&(this.orbit.enabled=!1),this._networking.onSpectatedObjectChanged(e,t))}}get target(){return this._handler?.currentTarget}requestAllFollowMe(){this._networking.onRequestFollowMe()}get isSpectatingSelf(){return this.isSpectating&&this.target?.currentObject===this.context.players.getPlayerView(this.localId)?.currentObject}orbit=null;_handler;eventSub_WebXRRequestStartEvent=null;eventSub_WebXRStartEvent=null;eventSub_WebXREndEvent=null;_debug;_networking;awake(){if(this._debug=new Go(this.context,this),this._networking=new Jo(this.context,this),this._networking.awake(),F.setActive(this.gameObject,!1),this.cam=F.getComponent(this.gameObject,Ne),!this.cam){console.warn(`SpectatorCamera: Spectator camera needs camera component on the same object.`,this);return}!this._handler&&this.cam&&(this._handler=new Uo(this.context,this.cam,this)),this.orbit=F.getComponent(this.context.mainCamera,Le)}onDestroy(){this.stopSpectating(),this._handler?.destroy(),this._networking?.destroy()}isSupportedPlatform(){let e=window.navigator.userAgent,t=/Windows NT/.test(e)&&/Edg/.test(e)&&!/Win64/.test(e);return yt.isDesktop()&&!yt.isMobileDevice()&&!t}onBeforeXR(e){this.isSupportedPlatform()&&F.setActive(this.gameObject,!0)}onEnterXR(e){this.isSupportedPlatform()&&(Vo&&console.log(this.context.mainCamera),this.context.mainCamera&&this.followSelf())}onLeaveXR(e){this.context.removeCamera(this.cam),F.setActive(this.gameObject,!1),this._handler?.set(void 0),this._handler?.disable(),this.isSpectatingSelf&&this.stopSpectating(),this.orbit&&(this.orbit.enabled=!0)}followSelf(){this.target=this.context.players.getPlayerView(this.context.connection.connectionId),this.target||=(this.context.players.setPlayerView(this.localId,this.context.mainCamera,qt.Headset),this.context.players.getPlayerView(this.localId)),Vo&&console.log(`Follow self`,this.target)}onAfterRender(){if(!this.cam)return;let e=this.context.renderer,n=e.xr.enabled;if(!e.xr.isPresenting&&!this._handler?.currentTarget)return;this._handler?.update(this._mode);let r=e.getRenderTarget(),i=null,a=e.state;if(!r||r.isXRRenderTarget===!0){if(!e.state.bindFramebuffer||!a.bindXRFramebuffer)return;i=e._framebuffer,a.bindXRFramebuffer(null)}this.setAvatarFlagsBeforeRender();let o=this.context.mainCameraComponent;if(o){let t=o.backgroundColor;t&&e.setClearColor(t,t.alpha),this.cam.backgroundColor=t,this.cam.clearFlags=o.clearFlags,this.cam.nearClipPlane=o.nearClipPlane,this.cam.farClipPlane=o.farClipPlane}else e.setClearColor(new t(1,1,1));e.setRenderTarget(null),e.xr.enabled=!1;let s=this.cam?.threeCamera;this.context.updateAspect(s);let c=e.xr.isPresenting;e.xr.isPresenting=!1,e.setSize(this.context.domWidth,this.context.domHeight),e.render(this.context.scene,s),e.xr.isPresenting=c,e.xr.enabled=n,r?e.setRenderTarget(r):a.bindXRFramebuffer&&a.bindXRFramebuffer(i),this.resetAvatarFlags()}setAvatarFlagsBeforeRender(){let e=this._mode===Bo.FirstPerson;for(let t of Yn.instances)if(t.avatar&&`isLocalAvatar`in t.avatar&&`flags`in t.avatar){let n=Rn.All;this.isSpectatingSelf&&(n=e&&t.avatar.isLocalAvatar?Rn.FirstPerson:Rn.ThirdPerson);let r=t.avatar.flags;if(!r)continue;for(let e of r)e.UpdateVisible(n)}}resetAvatarFlags(){for(let e of Yn.instances)if(e.avatar&&`flags`in e.avatar){let t=e.avatar.flags;if(!t)continue;for(let n of t)`isLocalAvatar`in e.avatar&&e.avatar?.isLocalAvatar?n.UpdateVisible(Rn.FirstPerson):n.UpdateVisible(Rn.ThirdPerson)}}};zo([A()],Ho.prototype,`useKeys`,void 0);var Uo=class{context;cam;spectator;follow;target;view;currentObject;get currentTarget(){return this.view}constructor(e,t,n){this.context=e,this.cam=t,this.spectator=n}set(e){let t=e?.currentObject;if(!t){this.spectator.stopSpectating();return}t!==this.currentObject&&(this.currentObject=t,this.view=e,this.follow||=F.addComponent(this.cam.gameObject,jo),this.target||=new y,t.add(this.target),this.follow.enabled=!0,this.follow.target=this.target,Vo&&console.log(`FOLLOW`,t),this.context.isInXR?this.context.removeCamera(this.cam):this.context.setCurrentCamera(this.cam))}disable(){Vo&&console.log(`STOP FOLLOW`,this.currentObject),this.view=void 0,this.currentObject=void 0,this.context.removeCamera(this.cam),this.follow&&(this.follow.enabled=!1)}destroy(){this.target?.removeFromParent(),this.follow&&F.destroy(this.follow)}update(e){if(this.currentTarget?.isConnected===!1||this.currentTarget?.removed===!0){Vo&&console.log(`Target disconnected or timeout`,this.currentTarget),this.spectator.stopSpectating();return}this.currentTarget&&this.currentTarget?.currentObject!==this.currentObject&&(Vo&&console.log(`Target changed`,this.currentObject,`to`,this.currentTarget.currentObject),this.set(this.currentTarget));let t=this.context.mainCamera;if(t){let e=this.cam.threeCamera;(e.near!==t.near||e.far!==t.far)&&(e.near=t.near,e.far=t.far,e.updateProjectionMatrix())}let n=this.follow?.target;if(!(!n||!this.follow)){switch(e){case Bo.FirstPerson:this.view?.viewDevice===qt.Browser?(this.follow.followFactor=50,this.follow.rotateFactor=50):(this.follow.followFactor=5,this.follow.rotateFactor=5),n.position.set(0,0,0);break;case Bo.ThirdPerson:this.follow.followFactor=3,this.follow.rotateFactor=2,n.position.set(0,.5,1.5);break}this.follow.flipForward=!1,this.view?.viewDevice===qt.Browser?n.quaternion.identity():n.quaternion.copy(Wo)}}},Wo=new x().setFromAxisAngle(new n(0,1,0),Math.PI),Go=class{context;spectator;constructor(e,t){this.context=e,this.spectator=t,console.log(`[Spectator Camera] Click other avatars or cameras to follow them. Press ESC to exit spectator mode.`),this.context.domElement.addEventListener(`keydown`,e=>{this.spectator.useKeys&&e.key===`Escape`&&this.spectator.stopSpectating()});let n=0;this.context.input.addEventListener(Ie.PointerDown,e=>{n=this.context.time.time}),this.context.input.addEventListener(Ie.PointerUp,e=>{let t=this.context.time.time-n;t>1?this.spectator.stopSpectating():this.context.input.getPointerClicked(0)&&t<.3&&this.trySelectObject()})}trySelectObject(){let e=new Gt;e.setMask(16777215);let t=this.context.physics.raycast(e);if(Vo&&console.log(...t),t?.length)for(let e of t){if(e.distance<.2)continue;let t=e.object,n=qn.getFor(t),r=n?.owner;if(r||=F.getComponentInParent(t,Yn)?.connectionId,r){let e=this.context.players.getPlayerView(r);this.spectator.target=e,Vo&&console.log(`spectate`,r,n);break}}}},Ko=class{guid;dontSave=!0;targetUserId;stoppedFollowing;constructor(e,t,n){this.guid=e,this.targetUserId=t,this.stoppedFollowing=n}},qo=class{guid;userId;constructor(e,t){this.guid=e.guid,this.userId=t}},Jo=class{followers=[];context;spectator;_followerEventMethod;_requestFollowMethod;_joinedRoomMethod;constructor(e,t){this.context=e,this.spectator=t,this._followerEventMethod=this.onFollowerEvent.bind(this),this._requestFollowMethod=this.onRequestFollowEvent.bind(this),this._joinedRoomMethod=this.onUserJoinedRoom.bind(this)}awake(){this.context.connection.beginListen(`spectator-follower-changed`,this._followerEventMethod),this.context.connection.beginListen(`spectator-request-follow`,this._requestFollowMethod),this.context.connection.beginListen(P.JoinedRoom,this._joinedRoomMethod),this.context.domElement.addEventListener(`keydown`,e=>{this.spectator.useKeys&&(e.key===`f`?this.onRequestFollowMe():e.key===`Escape`&&this.onRequestFollowMe(!0))})}destroy(){this.context.connection.stopListen(`spectator-follower-changed`,this._followerEventMethod),this.context.connection.stopListen(`spectator-request-follow`,this._requestFollowMethod),this.context.connection.stopListen(P.JoinedRoom,this._joinedRoomMethod)}onSpectatedObjectChanged(e,t){if(Vo&&console.log(this.context.connection.connectionId,`onSpectatedObjectChanged`,e,t),this.context.connection.connectionId){let n=e?.userId===void 0,r=n?t:e?.userId,i=new Ko(this.context.connection.connectionId,r,n);this.context.connection.send(`spectator-follower-changed`,i)}}onRequestFollowMe(e=!1){if(Vo&&console.log(`Request follow`,this.context.connection.connectionId),this.context.connection.connectionId){this.spectator.stopSpectating();let t=e?void 0:this.context.connection.connectionId,n=new qo(this.spectator,t);this.context.connection.send(`spectator-request-follow`,n)}}onUserJoinedRoom(){N(`followme`)&&this.onRequestFollowMe()}onFollowerEvent(e){let t=e.targetUserId,n=e.guid;if(Vo&&console.log(e),t===this.context.connection.connectionId)if(e.stoppedFollowing){let e=this.followers.indexOf(n);e!==-1&&(this.followers.splice(e,1),this.removeDisconnectedFollowers(),console.log(n,`unfollows you`,this.followers.length))}else this.followers.includes(n)||(this.followers.push(n),this.removeDisconnectedFollowers(),console.log(n,`follows you`,this.followers.length))}removeDisconnectedFollowers(){for(let e=this.followers.length-1;e>=0;e--){let t=this.followers[e];this.context.connection.userIsInRoom(t)===!1&&this.followers.splice(e,1)}}_lastRequestFollowUser;onRequestFollowEvent(e){if(this._lastRequestFollowUser=e,e.userId===this.context.connection.connectionId)this.spectator.stopSpectating();else if(e.userId===void 0)this.spectator.stopSpectating();else{let t=this.context.players.getPlayerView(e.userId);if(t)this.spectator.target=t;else return Vo&&console.warn(`Could not find view`,e.userId),this.enforceFollow(),!1}return!0}_enforceFollowInterval;enforceFollow(){this._enforceFollowInterval||=setInterval(()=>{this._lastRequestFollowUser===void 0||this._lastRequestFollowUser.userId&&this.spectator.isFollowedBy(this._lastRequestFollowUser.userId)?(clearInterval(this._enforceFollowInterval),this._enforceFollowInterval=void 0):(Vo&&console.log(`REQUEST FOLLOW AGAIN`,this._lastRequestFollowUser.userId),this.onRequestFollowEvent(this._lastRequestFollowUser))},1e3)}},Yo=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Xo=N(`debugsplines`),Zo=class{position=new n;rotation=new x;tangentIn=new n;tangentOut=new n};Yo([j(n)],Zo.prototype,`position`,void 0),Yo([j(x)],Zo.prototype,`rotation`,void 0),Yo([j(n)],Zo.prototype,`tangentIn`,void 0),Yo([j(n)],Zo.prototype,`tangentOut`,void 0);var Qo=class extends R{addKnot(e){if(e instanceof Zo)this.spline.push(e),this._isDirty=!0;else{let t=new Zo;t.position.copy(e.position),this.spline.push(t),this._isDirty=!0}return this}removeKnot(e){if(typeof e==`number`)this.spline.splice(e,1),this._isDirty=!0;else{let t=this.spline.indexOf(e);t!==-1&&(this.spline.splice(t,1),this._isDirty=!0)}return this}getPointAt(e,t){if(!this.curve)return new n;let r=this.curve.getPointAt(O.clamp01(e),t),i=this.gameObject.matrixWorld??void 0;return i&&r.applyMatrix4(i),r}markDirty(){this._isDirty=!0}getTangentAt(e,t){if(!this.curve)return t??new n;let r=this.gameObject.worldQuaternion;return this.curve.getTangentAt(O.clamp01(e),t).applyQuaternion(r)}set closed(e){this._closed=e,this._isDirty=!0}get closed(){return this._closed}_closed=!1;spline=[];set debug(e){e&&!this._builtCurve&&this.buildCurve(),this._debugLine&&(this._debugLine.visible=e)}get curve(){return this._curve}get isDirty(){return this._isDirty}_isDirty=!1;_curve=null;_builtCurve=!1;_debugLine=null;awake(){Xo&&(console.log(`[Spline] ${this.name}`,this),this.buildCurve())}update(){this._isDirty&&this.buildCurve(!0),this._debugLine&&this._debugLine.parent!==this.gameObject&&this.gameObject.add(this._debugLine)}buildCurve(e=!1){if(!(this._builtCurve&&!e)){if(this._builtCurve=!0,!this.spline){console.error(`[Spline] Can not build curve, no spline data`,this.name);return}this._isDirty=!1,this._curve=$o(this.spline,this.closed),this.buildDebugCurve()}}buildDebugCurve(){if(Xo&&this.spline&&this._curve){this._debugLine?.removeFromParent(),this._debugLine=null;let e=new u({color:6684927}),t=this.spline.length*10,n=this._curve.getPoints(t);this._debugLine=new me(new h().setFromPoints(n),e),this.gameObject?.add(this._debugLine)}}};Yo([j()],Qo.prototype,`closed`,null),Yo([j(Zo)],Qo.prototype,`spline`,void 0);function $o(e,t){let r=e.map(e=>new n(-e.position.x,e.position.y,e.position.z));r.length===1&&r.push(r[0]);let a=e.reduce((e,t)=>e+Math.abs(t.tangentOut.x)+Math.abs(t.tangentOut.y)+Math.abs(t.tangentOut.z),0)/e.length;return new i(r,t,`catmullrom`,O.clamp(O.remap(a,0,.3,0,.5),0,1))}var es=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ts=class extends R{spline=null;object=void 0;useLookAt=!0;lookAt=null;clamp=!1;get position01(){return this._position01}set position01(e){this._position01=e,this._needsUpdate=!0}reset(){this._position01=0}autoRun=!0;duration=10;pullStrength=1;_position01=0;_needsUpdate=!1;start(){this.object===void 0&&(this.object=this.gameObject),this.updateFromPosition()}onEnable(){window.addEventListener(`pointerdown`,this.onUserInput,{passive:!0}),this.context.domElement.addEventListener(`wheel`,this.onUserInput,{passive:!0})}onDisable(){window.removeEventListener(`pointerdown`,this.onUserInput),this.context.domElement.removeEventListener(`wheel`,this.onUserInput)}onUserInput=()=>{this.object?.contains(this.context.mainCamera)&&(this._needsUpdate=!1,this._performedUpdates+=999)};update(){this.autoRun&&(this._needsUpdate=!0,this._position01+=this.context.time.deltaTime/this.duration),this._needsUpdate&&(this._needsUpdate=!1,this.updateFromPosition())}updateFromPosition(){if(!this.spline||!this.spline.curve||!this.object)return;this.clamp?this._position01=O.clamp01(this._position01):this._position01%=1;let e=this._position01>=1?1:this._position01%1,t=this.spline.getPointAt(e);if(this.pullStrength>=1)this.object.worldPosition=t;else if(this._position01!==this._lastPosition01&&(this._performedUpdates=0),this._requiredUpdates=Math.round(100/this.pullStrength),this._performedUpdates=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},is=`SCAM`;Zt(is,ns.getRootAsSyncedCameraModel);var as=new tn,os=class{userId;guid;constructor(e,t){this.guid=t,this.userId=e}send(e,t){if(e){as.clear();let n=as.createString(this.guid),r=as.createString(this.userId);ns.startSyncedCameraModel(as),ns.addGuid(as,n),ns.addUserId(as,r);let i=M(e),a=rn(e);ns.addPos(as,ct.createVec3(as,i.x,i.y,i.z)),ns.addRot(as,ct.createVec3(as,a.x,a.y,a.z));let o=ns.endSyncedCameraModel(as);as.finish(o,is),t.sendBinary(as.asUint8Array())}}},ss=class e extends R{static instances=[];getCameraObject(e){let t=this.userToCamMap[e];return t?this.remoteCams[t].obj:null}cameraPrefab=null;_lastWorldPosition;_lastWorldQuaternion;_model=null;_needsUpdate=!0;_lastUpdateTime=0;remoteCams={};userToCamMap={};_camTimeoutInSeconds=10;_receiveCallback=null;async awake(){this._lastWorldPosition=this.worldPosition.clone(),this._lastWorldQuaternion=this.worldQuaternion.clone(),this.cameraPrefab&&(`uri`in this.cameraPrefab&&(this.cameraPrefab=await this.cameraPrefab.instantiate(this.gameObject)),this.cameraPrefab&&`isObject3D`in this.cameraPrefab&&(this.cameraPrefab.visible=!1))}onEnable(){this._receiveCallback=this.context.connection.beginListenBinary(is,this.onReceivedRemoteCameraInfoBin.bind(this))}onDisable(){this.context.connection.stopListenBinary(is,this._receiveCallback)}update(){for(let t in this.remoteCams){let n=this.remoteCams[t],r=this.context.time.realtimeSinceStartup-n.lastUpdate;if(!n||r>this._camTimeoutInSeconds){w()&&console.log(`Remote cam timeout`,t),n?.obj&&F.destroy(n.obj),delete this.remoteCams[t],n&&delete this.userToCamMap[n.userId],e.instances.push(n),this.context.players.removePlayerView(n.userId,qt.Browser);continue}}if(this.context.isInXR)return;let t=this.context.mainCamera;if(t===null){this.enabled=!1;return}if(!this.context.connection.isConnected||this.context.connection.connectionId===null)return;this._model===null&&(this._model=new os(this.context.connection.connectionId,this.context.connection.connectionId+`_camera`));let n=M(t),r=Xt(t);(n.distanceTo(this._lastWorldPosition)>.001||r.angleTo(this._lastWorldQuaternion)>.01)&&(this._needsUpdate=!0),this._lastWorldPosition.copy(n),this._lastWorldQuaternion.copy(r),!((!this._needsUpdate||this.context.time.frameCount%2!=0)&&!(this.context.time.realtimeSinceStartup-this._lastUpdateTime>this._camTimeoutInSeconds*.5))&&(this._lastUpdateTime=this.context.time.realtimeSinceStartup,this._needsUpdate=!1,this._model.send(t,this.context.connection),this.context.isInXR||this.context.players.setPlayerView(this.context.connection.connectionId,t,qt.Browser))}onReceivedRemoteCameraInfoBin(t){let n=t.guid();if(!n)return;let r=t.userId();if(!r||!this.context.connection.userIsInRoom(r)||!this.cameraPrefab)return;let i=this.remoteCams[n];if(!i)if(`isObject3D`in this.cameraPrefab){let t=new nt;t.context=this.context;let a=F.instantiate(this.cameraPrefab,t);i=this.remoteCams[n]={obj:a,lastUpdate:this.context.time.realtimeSinceStartup,userId:r},i.obj.visible=!0,this.gameObject.add(a),this.userToCamMap[r]=n,e.instances.push(i);let o=F.getOrAddComponent(a,Yn);o.connectionId=r,o.avatar=a}else return;let a=i.obj;this.context.players.setPlayerView(r,a,qt.Browser),i.lastUpdate=this.context.time.realtimeSinceStartup,qe.markDirty(a);let o=t.pos();o&&kt(a,o.x(),o.y(),o.z());let s=t.rot();s&&Be(a,s.x(),s.y(),s.z())}};rs([A([y,Me])],ss.prototype,`cameraPrefab`,void 0);var cs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},ls=`view`,us=N(`debugsyncedroom`),ds=class extends R{roomName=``;urlParameterName=`room`;joinRandomRoom;requireRoomParameter=!1;autoRejoin=!0;createJoinButton=!0;createViewOnlyButton=!1;get currentRoomName(){return N(ls)||N(this.urlParameterName)}_lastJoinedRoom;set roomPrefix(e){this._roomPrefix=e}get roomPrefix(){return this._roomPrefix}_roomPrefix=``;awake(){this.joinRandomRoom===void 0&&this.roomName?.length<=0&&(this.joinRandomRoom=!0),us&&console.log(`SyncedRoom roomName:${this.roomName}, urlParamName:${this.urlParameterName}, joinRandomRoom:${this.joinRandomRoom}`)}onEnable(){let e=N(ls);if(e&&typeof e==`string`&&e.length>0){console.log(`Join as viewer`),this.context.connection.joinRoom(e,!0);return}if(this.tryJoinRoom(),this.createJoinButton){let e=this.createRoomButton();this.context.menu.appendChild(e)}this.createViewOnlyButton&&this.onEnableViewOnlyButton()}onDisable(){this._roomButton?.remove(),this.onDisableViewOnlyButton(),this.roomName&&this.roomName.length>0&&this.context.connection.leaveRoom(this.roomName)}onDestroy(){this.destroyRoomButton()}tryJoinRandomRoom(){this.setRandomRoomUrlParameter(),this.tryJoinRoom()}tryJoinRoom(e=0){e===void 0&&(e=0);let t=!1;if(this.urlParameterName?.length>0){let n=N(this.urlParameterName);if(n&&(typeof n==`string`||typeof n==`number`))t=!0,this.roomName=Xe(n.toString());else if(this.joinRandomRoom&&(console.debug(`No room name found in url, generating random one`),this.setRandomRoomUrlParameter(),e<1))return this.tryJoinRoom(e+1)}else this.joinRandomRoom&&(this.roomName===null||this.roomName===void 0||this.roomName.length<=0)&&(this.roomName=this.generateRoomName());return this.requireRoomParameter&&!t?((us||w())&&console.warn(`[SyncedRoom] Missing required room parameter "`+this.urlParameterName+`" in url - will not connect. +To allow joining a room without a query parameter you can set "requireRoomParameter" to false.`),!1):(this.context.connection.isConnected||this.context.connection.connect(),this._lastJoinedRoom=this.roomName,this._roomPrefix&&(this.roomName=this._roomPrefix+this.roomName),this.roomName.length<=0?(console.warn(`[SyncedRoom] Room name is not set so we can not join a networked room. +Please choose one of the following options to fix this: +A) Set a room name in the SyncedRoom component +B) Set a room name in the URL parameter "?`+this.urlParameterName+`=my_room" +C) Set "joinRandomRoom" to true`),!1):(us&&console.log(`Join `+this.roomName),this._userWantsToBeInARoom=!0,this.context.connection.joinRoom(this.roomName),!0))}_lastPingTime=0;_lastRoomTime=-1;_userWantsToBeInARoom=!1;update(){this.context.connection.isConnected&&(this.context.time.time-this._lastPingTime>3&&(this._lastPingTime=this.context.time.time,this.context.connection.sendPing()),this.context.connection.isInRoom&&(this._lastRoomTime=this.context.time.time)),this._lastRoomTime>0&&this.context.time.time-this._lastRoomTime>.3&&(this._lastRoomTime=-1,this.autoRejoin?this._userWantsToBeInARoom&&(console.log(`Disconnected from networking backend - attempt reconnecting now`),this.tryJoinRoom()):w()&&console.warn(`You are not connected to a room anymore (possibly because the tab was inactive for too long and the server kicked you?)`))}getViewOnlyUrl(){if(this.context.connection.isConnected&&this.context.connection.currentRoomViewId){let e=window.location.search,t=new URLSearchParams(e);return t.has(this.urlParameterName)&&t.delete(this.urlParameterName),t.set(ls,this.context.connection.currentRoomViewId),window.location.origin+window.location.pathname+`?`+t.toString()}return null}setRandomRoomUrlParameter(){let e=Yt(),t=this.generateRoomName();N(this.urlParameterName)?e.set(this.urlParameterName,t):e.append(this.urlParameterName,t),Ge(t,e)}generateRoomName(){let e=``;for(let t=0;t<6;t++)e+=Math.floor(Math.random()*10).toFixed(0);return e}_roomButton;_roomButtonIconJoin;_roomButtonIconLeave;createRoomButton(){if(this._roomButton)return this._roomButton;let e=document.createElement(`button`);return this._roomButton=e,e.classList.add(`create-room-button`),e.setAttribute(`priority`,`90`),e.onclick=()=>{if(this.context.connection.isInRoom)this.urlParameterName&&Ve(this.urlParameterName,null),this.context.connection.leaveRoom(),this._userWantsToBeInARoom=!1;else{if(this.urlParameterName){let e=N(this.urlParameterName);(!e||e===!0)&&(this._lastJoinedRoom?Ve(this.urlParameterName,this._lastJoinedRoom):this.setRandomRoomUrlParameter())}this.tryJoinRoom()}},this._roomButtonIconJoin=ke(`group`),this._roomButtonIconLeave=ke(`group_off`),this.updateRoomButtonState(),this.context.connection.beginListen(P.JoinedRoom,this.updateRoomButtonState),this.context.connection.beginListen(P.LeftRoom,this.updateRoomButtonState),e}updateRoomButtonState=()=>{this._roomButton&&(this.context.connection.isInRoom?(this._roomButton.title=`Leave the networked room`,this._roomButton.textContent=`Leave Room`,this._roomButtonIconJoin?.remove(),this._roomButton.prepend(this._roomButtonIconLeave)):(this._roomButton.title=`Create or join a networked room`,this._roomButton.textContent=`Join Room`,this._roomButtonIconLeave?.remove(),this._roomButton.prepend(this._roomButtonIconJoin)))};destroyRoomButton(){this.context.connection.stopListen(P.JoinedRoom,this.updateRoomButtonState),this.context.connection.stopListen(P.LeftRoom,this.updateRoomButtonState)}_viewOnlyButton;onEnableViewOnlyButton(){this.context.connection.isConnected?this.onCreateViewOnlyButton():(this.context.connection.stopListen(P.JoinedRoom,this.onCreateViewOnlyButton),this.context.connection.beginListen(P.JoinedRoom,this.onCreateViewOnlyButton))}onDisableViewOnlyButton(){this.context.connection.stopListen(P.JoinedRoom,this.onCreateViewOnlyButton),this._viewOnlyButton?.remove()}onCreateViewOnlyButton=()=>{if(!this._viewOnlyButton){let e=document.createElement(`button`);this._viewOnlyButton=e,e.classList.add(`view-only-button`),e.setAttribute(`priority`,`90`),e.onclick=()=>{let e=this.getViewOnlyUrl();e?.length?navigator.canShare({url:e})?navigator.share({url:e})?.catch(e=>{console.warn(e)}):(navigator.clipboard.writeText(e),It(`View only URL copied to clipboard`)):Ht(`Could not create view only URL`)},e.title=`Copy the view only URL: A page accessed by the view only URL can not be modified by visiting users.`,e.textContent=`Share View URL`,e.prepend(ke(`visibility`))}this.context.menu.appendChild(this._viewOnlyButton)}};cs([A()],ds.prototype,`roomName`,void 0),cs([A()],ds.prototype,`urlParameterName`,void 0),cs([A()],ds.prototype,`joinRandomRoom`,void 0),cs([A()],ds.prototype,`requireRoomParameter`,void 0),cs([A()],ds.prototype,`autoRejoin`,void 0),cs([A()],ds.prototype,`createJoinButton`,void 0),cs([A()],ds.prototype,`createViewOnlyButton`,void 0),cs([A()],ds.prototype,`roomPrefix`,null);function fs(){let e=N(`testwindowcount`)||0;e&&e>0&&ps(e)}function ps(e){if(N(`testwindow`))return null;let t=new URL(window.location.href);$e(t.searchParams,cn,1),$e(t.searchParams,`testwindow`,1);let n=t.toString(),r=[];window.onbeforeunload=()=>{for(let e of r)e.close()};let i=.05,a=0,o=0;for(let t=0;t=window.innerWidth&&(o+=1,a=0);let e=a*(128*(1+i))+window.screenLeft,s=o*(128*(1+i))+window.screenTop+90+60*o;a+=1;let c=window.open(n,`test window `+t,`popup=yes width=128 height=128 top=${s} left=${e}`);if(!c){console.warn(`Failed to open window`);continue}r.push(c),c.onload=()=>{c.onbeforeunload=()=>{for(let e=0;e{});else{this.models=[];for(let e=0;e=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},vs=class extends R{isGizmo=!1;translationSnap=1;rotationSnapAngle=15;scaleSnap=.25;get control(){return this._control}_control;orbit;onEnable(){if(!(this.isGizmo&&!Lt)&&this.context.mainCamera&&(this._control||(this._control=new on(this.context.mainCamera,this.context.renderer.domElement),this._control.enabled=!0,this._control.getRaycaster().layers.set(2),this._control.size=1,(`_root`in this._control?this._control._root:this._control).traverse(e=>{let t=e;if(t.layers.set(2),t){let e=t.material;e&&(e.opacity=.3)}}),this.orbit=F.getComponentInParent(this.context.mainCamera,Le)??void 0),this._control)){let e=this._control.getHelper();this.context.scene.add(e),this._control.attach(this.gameObject),this._control?.addEventListener(`dragging-changed`,this.onControlChangedEvent),window.addEventListener(`keydown`,this.windowKeyDownListener),window.addEventListener(`keyup`,this.windowKeyUpListener)}}onDisable(){this._control?.getHelper()?.removeFromParent(),this._control?.removeEventListener(`dragging-changed`,this.onControlChangedEvent),window.removeEventListener(`keydown`,this.windowKeyDownListener),window.removeEventListener(`keyup`,this.windowKeyUpListener)}enableSnapping(){this._control&&(this._control.setTranslationSnap(this.translationSnap),this._control.setRotationSnap(o.degToRad(this.rotationSnapAngle)),this._control.setScaleSnap(this.scaleSnap))}disableSnapping(){this._control&&(this._control.setTranslationSnap(null),this._control.setRotationSnap(null),this._control.setScaleSnap(null))}onControlChangedEvent=e=>{let t=this.orbit;if(t&&(t.enabled=!e.value),e.value){let e=this.gameObject.getComponentInParent(rt);e&&(e.fastMode=!0,e.requestOwnership())}else{let e=this.gameObject.getComponentInParent(rt);e&&(e.fastMode=!1)}};windowKeyDownListener=e=>{if(this.enabled&&this._control)switch(e.keyCode){case 81:this._control.setSpace(this._control.space===`local`?`world`:`local`);break;case 16:this.enableSnapping();break;case 87:this._control.setMode(`translate`);break;case 69:this._control.setMode(`rotate`);break;case 82:this._control.setMode(`scale`);break;case 187:case 107:this._control.setSize(this._control.size+.1);break;case 189:case 109:this._control.setSize(Math.max(this._control.size-.1,.1));break;case 88:this._control.showX=!this._control.showX;break;case 89:this._control.showY=!this._control.showY;break;case 90:this._control.showZ=!this._control.showZ;break;case 32:this._control.enabled=!this._control.enabled;break}};windowKeyUpListener=e=>{if(this.enabled)switch(e.keyCode){case 16:this.disableSnapping();break}}};_s([A()],vs.prototype,`isGizmo`,void 0),_s([A()],vs.prototype,`translationSnap`,void 0),_s([A()],vs.prototype,`rotationSnapAngle`,void 0),_s([A()],vs.prototype,`scaleSnap`,void 0);var ys=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},bs=class e extends R{target;invertForward=!1;keepUpDirection=!0;copyTargetRotation=!1;static flipYQuat=new x().setFromAxisAngle(new n(0,1,0),Math.PI);onBeforeRender(){let t=this.target;if(t||(t=this.context.mainCamera,w()&&!this.__did_warn&&(this.__did_warn=!0,console.debug(`[LookAt] No target set on ${this.name}, using main camera as target.`))),!t)return;let n=this.copyTargetRotation;(this.context.isInVR||this.context.isInPassThrough)&&(n=!1),Qt(this.gameObject,t,this.keepUpDirection,n),this.invertForward&&this.gameObject.quaternion.multiply(e.flipYQuat)}createBehaviours(e,t,n){if(t.uuid===this.gameObject.uuid){let n=t;if(this.keepUpDirection){let e=Xn.createEmptyParent(t);n=e;let r=this.invertForward?-1:1;e.setMatrix(e.getMatrix().multiply(new _().makeRotationZ(Math.PI/2*r))),t.setMatrix(t.getMatrix().multiply(new _().makeRotationZ(-Math.PI/2*r)))}let r=new sr(`lookat `+this.name,Bn.sceneStartTrigger(),fr.lookAtCameraAction(n,void 0,this.invertForward?lr.back:lr.forward,this.keepUpDirection?lr.up:lr.zero));e.addBehavior(r)}}};ys([A(y)],bs.prototype,`target`,void 0),ys([A()],bs.prototype,`invertForward`,void 0),ys([A()],bs.prototype,`keepUpDirection`,void 0),ys([A()],bs.prototype,`copyTargetRotation`,void 0);var xs=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ss;(function(e){e[e.NewTab=0]=`NewTab`,e[e.SameTab=1]=`SameTab`,e[e.NewWindow=2]=`NewWindow`})(Ss||={});var Cs=class extends R{url;mode=Ss.NewTab;clickable=!0;async open(){if(!this.url){console.warn(`OpenURL: URL is not set, can't open.`,this);return}this._validateUrl();let e=this.url;switch(!e.startsWith(`mailto:`)&&e.includes(`@`)&&(e=`mailto:`+e),this.mode){case Ss.NewTab:yt.isSafari(),globalThis.open(e,`_blank`);break;case Ss.SameTab:yt.isSafari()&&yt.isiOS()?globalThis.open(e,`_top`):globalThis.open(e,`_self`);break;case Ss.NewWindow:yt.isSafari()?globalThis.open(e,`_top`):globalThis.open(e,`_new`);break}}start(){this.gameObject.getComponentInParent(C)||this.gameObject.addComponent(C)}onPointerEnter(e){!e.used&&this.clickable&&this.context.input.setCursor(`pointer`)}onPointerExit(){this.clickable&&this.context.input.unsetCursor(`pointer`)}onPointerClick(e){this.clickable&&!e.used&&this.url?.length&&this.open()}_validateUrl(){this.url&&this.url.startsWith(`www.`)&&(w()&&console.warn(`URL is not valid, adding https:// to the start of the URL`,this.url),this.url=`https://`+this.url)}};xs([A()],Cs.prototype,`url`,void 0),xs([A()],Cs.prototype,`mode`,void 0),xs([A()],Cs.prototype,`clickable`,void 0),$t(e=>{if(t(e.domElement.getAttribute(`clickthrough`))){let n=e.scene.addComponent(ws);Dt(e.domElement,`clickthrough`,()=>{n.enabled=t(e.domElement.getAttribute(`clickthrough`))})}function t(e){return e!==null&&e!==`0`&&e!==`false`}});var ws=class extends R{_previousPointerEvents=`all`;onEnable(){this.context.input.addEventListener(`pointerdown`,this.onPointerEvent),this.context.input.addEventListener(`pointermove`,this.onPointerEvent,{queue:100}),window.addEventListener(`touchstart`,this.onTouchStart,{passive:!0}),window.addEventListener(`touchend`,this.onTouchEnd,{passive:!0}),this._previousPointerEvents=this.context.domElement.style.pointerEvents}onDisable(){this.context.input.removeEventListener(`pointerdown`,this.onPointerEvent),this.context.input.removeEventListener(`pointermove`,this.onPointerEvent),window.removeEventListener(`touchstart`,this.onTouchStart),window.removeEventListener(`touchend`,this.onTouchEnd),this.context.domElement.style.pointerEvents=this._previousPointerEvents}onPointerEnter(){}onPointerEvent=e=>{e.pointerId>0||(e.intersections?.length<=0?this.context.domElement.style.pointerEvents=`none`:this.context.domElement.style.pointerEvents=`all`)};_touchDidHitAnything=!1;onTouchStart=e=>{let t=e.touches[0];if(!t)return;let n=t.clientX/window.innerWidth*2-1,r=-(t.clientY/window.innerHeight)*2+1;this.context.physics.raycast({screenPoint:new b(n,r)}).length>0&&(this._touchDidHitAnything=!0)};onTouchEnd=e=>{let t=this._touchDidHitAnything;this._touchDidHitAnything=!1,setTimeout(()=>{t&&(this.context.domElement.style.pointerEvents=`all`)},100)}},Ts=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Es=N(`debugcursor`),Ds=class extends R{static NAME=`CursorFollow`;damping=0;useFullPage=!0;keepDistance=!0;snapToSurface=!1;_distance=-1;updateDistance(e=!1){!e&&this.keepDistance&&this._distance!==-1||(this._distance=this.gameObject.worldPosition.distanceTo(this.context.mainCamera.worldPosition))}awake(){this._distance=-1}onEnable(){this._distance=-1,window.addEventListener(`pointermove`,this._onPointerMove)}onDisable(){window.removeEventListener(`pointermove`,this._onPointerMove)}_ndc_x=0;_ndc_y=0;_onPointerMove=e=>{if(!this.useFullPage)return;let t=e.clientX,n=e.clientY,r=this.context.domX,i=this.context.domY,a=this.context.domWidth,o=this.context.domHeight;this._ndc_x=(t-r)/a*2-1,this._ndc_y=-(n-i)/o*2+1};lateUpdate(){this.updateDistance();let e=this.useFullPage?this._ndc_x:this.context.input.mousePositionRC.x,t=this.useFullPage?this._ndc_y:this.context.input.mousePositionRC.y,n=this.context.mainCamera,r=n.worldPosition,i=z(e,t,1).unproject(n);i.sub(r).normalize();let a=z(i).multiplyScalar(this._distance).add(r),o=a;if(this.damping>0){let e=this.gameObject.worldPosition;e.lerp(a,this.context.time.deltaTime/this.damping),this.gameObject.worldPosition=e,o=e}else this.gameObject.worldPosition=a;if(this.snapToSurface){Os.origin=o,Os.direction=i.multiplyScalar(-1);let e=this.context.physics.raycastFromRay(Os);if(e?.length){let t=e[0];this.damping>0?this.gameObject.worldPosition=o.lerp(t.point,this.context.time.deltaTime/this.damping):this.gameObject.worldPosition=t.point,Es&&V.DrawLine(t.point,t.normal.add(t.point),65280)}}}};Ts([A()],Ds.prototype,`damping`,void 0),Ts([A()],Ds.prototype,`useFullPage`,void 0),Ts([A()],Ds.prototype,`keepDistance`,void 0),Ts([A()],Ds.prototype,`snapToSurface`,void 0);var Os=new a,ks=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},As=class extends R{type=`linear`;duration=.1;scaleFactor=1.1;hovered=null;idle=null;animation=null;start(){this.idle||=at.emptyClip(),(!this.hovered||!(this.hovered instanceof de))&&(this.hovered=at.createScaleClip({type:`linear`,duration:this.duration||.1,scale:this.gameObject.scale,scaleFactor:this.scaleFactor||1.1})),this.animation??=this.gameObject.addComponent(Qn),this.animation.playAutomatically=!1,this.playIdle()}onEnable(){this.animation&&(this.animation.enabled=!0),this.playIdle()}onDisable(){this.animation&&(this.animation.enabled=!1),this.playIdle()}onPointerEnter(){this.playHover()}onPointerExit(){this.playIdle()}playIdle(){this.idle&&this.animation?.play(this.idle,{exclusive:!0,fadeDuration:.1,loop:!0})}playHover(){this.hovered&&this.animation?.play(this.hovered,{exclusive:!0,fadeDuration:.1,loop:!1,clampWhenFinished:!0})}};ks([A()],As.prototype,`type`,void 0),ks([A()],As.prototype,`duration`,void 0),ks([A()],As.prototype,`scaleFactor`,void 0),ks([A(de)],As.prototype,`hovered`,void 0),ks([A(de)],As.prototype,`idle`,void 0),As=ks([I],As);var js=Object.defineProperty,Ms=(e,t,n)=>t in e?js(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$=(e,t,n)=>(Ms(e,typeof t==`symbol`?t:t+``,n),n);(function(){class e{}class t extends e{constructor(e){super(),$(this,`value`),this.value=e}}class n extends e{constructor(e){super(),$(this,`value`),this.value=e}}class r extends e{constructor(e){super(),$(this,`value`),this.value=e}}class i extends e{constructor(e,t=`unrestricted`){super(),$(this,`type`),$(this,`value`),this.value=e,this.type=t}}class a extends e{constructor(e){super(),$(this,`value`),this.value=e}}class o extends e{}class s extends e{constructor(e){super(),$(this,`value`),this.value=e}}class c extends e{}class l extends e{constructor(e){super(),$(this,`value`),this.value=e}}class u extends e{constructor(e,t=`integer`){super(),$(this,`value`),$(this,`type`),this.value=e,this.type=t}}class d extends e{constructor(e){super(),$(this,`value`),this.value=e}}class f extends e{constructor(e,t,n){super(),$(this,`value`),$(this,`type`),$(this,`unit`),this.value=e,this.type=t,this.unit=n}}class p extends e{}class m extends e{}class ee extends e{}class h extends e{}class g extends e{}class te extends e{}class _ extends e{}class ne extends e{}class re extends e{}class v extends e{}class ie extends e{}class ae extends e{}class oe{constructor(e){$(this,`input`),$(this,`index`,0),this.input=e}consume(){let e=this.input.codePointAt(this.index);return e!==void 0&&(this.index+=String.fromCodePoint(e).length),e}reconsume(e){e!==void 0&&(this.index-=String.fromCodePoint(e).length)}peek(){let e=[],t=this.index;for(let n=0;n<3&&t=48&&e<=57}function le(e){return ce(e)||e>=65&&e<=70||e>=97&&e<=102}function ue(e){return function(e){return function(e){return e>=65&&e<=90}(e)||function(e){return e>=97&&e<=122}(e)}(e)||function(e){return e>=128}(e)||e===95}function de(e){return ue(e)||ce(e)||e===45}function fe(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function pe(e,t){return e===92&&!se(t)}function me(e,t,n){return e===45?ue(t)||t===45||pe(t,n):!!ue(e)||e===92&&pe(e,t)}function b(e,t,n){return e===43||e===45?ce(t)||t===46&&ce(n):ce(e===46?t:e)}function he(e){let t=e.consume();if(le(t)){let n=[t];for(;le(...e.peek())&&n.length<5;)n.push(e.consume());y(...e.peek())&&e.consume();let r=parseInt(String.fromCodePoint(...n),16);return r===0||r>1114111?65533:r}return t===void 0?65533:t}function ge(e,t){let n=new a(``);for(;;){let r=e.consume();if(r===t||r===void 0)return n;if(r===10)return e.reconsume(r),new o;if(r===92){let t=e.peek()[0];t===void 0||(se(t)?e.consume():n.value+=String.fromCodePoint(he(e)))}else n.value+=String.fromCodePoint(r)}}function _e(e){let t=``;for(;;){let n=e.consume();if(de(n))t+=String.fromCodePoint(n);else{if(!pe(...e.peek()))return e.reconsume(n),t;t+=String.fromCodePoint(he(e))}}}function ve(e){let t=function(e){let t=`integer`,n=``;for([43,45].includes(e.peek()[0])&&(n+=String.fromCodePoint(e.consume()));ce(...e.peek());)n+=String.fromCodePoint(e.consume());if(e.peek()[0]===46&&ce(e.peek()[1]))for(n+=String.fromCodePoint(e.consume(),e.consume()),t=`number`;ce(...e.peek());)n+=String.fromCodePoint(e.consume());return[69,101].includes(e.peek()[0])&&([45,43].includes(e.peek()[1])&&ce(e.peek()[2])?(n+=String.fromCodePoint(e.consume(),e.consume(),e.consume()),t=`number`):ce(e.peek()[1])&&(n+=String.fromCodePoint(e.consume(),e.consume()),t=`number`)),{value:parseFloat(n),type:t}}(e);return me(...e.peek())?new f(t.value,t.type,_e(e)):e.peek()[0]===37?(e.consume(),new d(t.value)):new u(t.value,t.type)}function ye(e){for(;;){let t=e.consume();if(t===41||t===void 0)return;pe(...e.peek())&&he(e)}}function be(e){let r=_e(e);if(r.match(/url/i)&&e.peek()[0]===40){for(e.consume();y(e.peek()[0])&&y(e.peek()[1]);)e.consume();return[34,39].includes(e.peek()[0])||y(e.peek()[0])&&[34,39].includes(e.peek()[1])?new n(r):function(e){let t=new s(``);for(;y(...e.peek());)e.consume();for(;;){let n=e.consume();if(n===41||n===void 0)return t;if(y(n)){for(;y(...e.peek());)e.consume();return e.peek()[0]===41||e.peek()[0]===void 0?(e.consume(),t):(ye(e),new c)}if([34,39,40].includes(n)||fe(n))return ye(e),new c;if(n===92){if(!pe(...e.peek()))return ye(e),new c;t.value+=he(e)}else t.value+=String.fromCodePoint(n)}}(e)}return e.peek()[0]===40?(e.consume(),new n(r)):new t(r)}function xe(e){let t=e.consume(),n=e.peek();if(y(t)){for(;y(...e.peek());)e.consume();return new p}if(t===34)return ge(e,t);if(t===35){if(de(n[0])||pe(...n)){let t=new i;return me(...n)&&(t.type=`id`),t.value=_e(e),t}return new l(String.fromCodePoint(t))}return t===39?ge(e,t):t===40?new re:t===41?new v:t===43?b(...n)?(e.reconsume(t),ve(e)):new l(String.fromCodePoint(t)):t===44?new te:t===45?b(...e.peek())?(e.reconsume(t),ve(e)):e.peek()[0]===45&&e.peek()[1]===62?(e.consume(),e.consume(),new ee):me(...e.peek())?(e.reconsume(t),be(e)):new l(String.fromCodePoint(t)):t===46?b(...e.peek())?(e.reconsume(t),ve(e)):new l(String.fromCodePoint(t)):t===58?new h:t===59?new g:t===60?n[0]===33&&n[1]===45&&n[2]===45?(e.consume(),e.consume(),e.consume(),new m):new l(String.fromCodePoint(t)):t===64?me(...n)?new r(_e(e)):new l(String.fromCodePoint(t)):t===91?new _:t===92?pe(...n)?(e.reconsume(t),be(e)):new l(String.fromCodePoint(t)):t===93?new ne:t===123?new ie:t===125?new ae:ce(t)?(e.reconsume(t),ve(e)):ue(t)?(e.reconsume(t),be(e)):t===void 0?void 0:new l(String.fromCodePoint(t))}let Se=new Set([`px`,`deg`,`s`,`hz`,`dppx`,`number`,`fr`]);function Ce(e){return Se.has(e.toLowerCase())}function we(e,t){if([`x`,`y`].includes(e))return e;if(!t)throw Error(`To determine the normalized axis the computedStyle of the source is required.`);let n=t.writingMode==`horizontal-tb`;if(e===`block`)e=n?`y`:`x`;else{if(e!==`inline`)throw TypeError(`Invalid axis “${e}”`);e=n?`x`:`y`}return e}function x(e){let t=[],n=0;function r(){let t=0,r=n;for(;n(e.has(n[t])?e.get(n[t]).push(n):e.set(n[t],[n]),e)),new Map)}function Ee(e,t){let n=[],r=[];for(let i of e)t(i)?n.push(i):r.push(i);return[n,r]}function De(e,t={}){function n(e){return Array.from(e).map((e=>De(e,t)))}if(e instanceof CSSUnitValue){if(e.unit===`percent`&&t.percentageReference){let n=e.value/100*t.percentageReference.value,r=t.percentageReference.unit;return new CSSUnitValue(n,r)}let n=e.toSum();if(n&&n.values.length===1&&(e=n.values[0]),e instanceof CSSUnitValue&&e.unit===`em`&&t.fontSize&&(e=new CSSUnitValue(e.value*t.fontSize.value,t.fontSize.unit)),e instanceof CSSKeywordValue){if(e.value===`e`)return new CSSUnitValue(Math.E,`number`);if(e.value===`pi`)return new CSSUnitValue(Math.PI,`number`)}return e}if(!e.operator)return e;switch(e.operator){case`sum`:e=new CSSMathSum(...n(e.values));break;case`product`:e=new CSSMathProduct(...n(e.values));break;case`negate`:e=new CSSMathNegate(De(e.value,t));break;case`clamp`:e=new CSSMathClamp(De(e.lower,t),De(e.value,t),De(e.upper,t));break;case`invert`:e=new CSSMathInvert(De(e.value,t));break;case`min`:e=new CSSMathMin(...n(e.values));break;case`max`:e=new CSSMathMax(...n(e.values))}if(e instanceof CSSMathMin||e instanceof CSSMathMax){let t=Array.from(e.values);if(t.every((e=>e instanceof CSSUnitValue&&e.unit!==`percent`&&Ce(e.unit)&&e.unit===t[0].unit))){let n=Math[e.operator].apply(Math,t.map((({value:e})=>e)));return new CSSUnitValue(n,t[0].unit)}}if(e instanceof CSSMathMin||e instanceof CSSMathMax){let t=Array.from(e.values),[n,r]=Ee(t,(e=>e instanceof CSSUnitValue&&e.unit!==`percent`)),i=Array.from(Te(n,`unit`).values());if(i.some((e=>e.length>0))){let t=i.map((t=>{let n=Math[e.operator].apply(Math,t.map((({value:e})=>e)));return new CSSUnitValue(n,t[0].unit)}));e=e instanceof CSSMathMin?new CSSMathMin(...t,...r):new CSSMathMax(...t,...r)}return t.length===1?t[0]:e}if(e instanceof CSSMathNegate)return e.value instanceof CSSUnitValue?new CSSUnitValue(0-e.value.value,e.value.unit):e.value instanceof CSSMathNegate?e.value.value:e;if(e instanceof CSSMathInvert)return e.value instanceof CSSMathInvert?e.value.value:e;if(e instanceof CSSMathSum){let t=function(e){let t=e.filter((e=>e instanceof CSSUnitValue));return[...e.filter((e=>!(e instanceof CSSUnitValue))),...Array.from(Te(t,`unit`).entries()).map((([e,t])=>{let n=t.reduce(((e,{value:t})=>e+t),0);return new CSSUnitValue(n,e)}))]},n=[];for(let t of e.values)t instanceof CSSMathSum?n.push(...t.values):n.push(t);return n=t(n),n.length===1?n[0]:new CSSMathSum(...n)}if(e instanceof CSSMathProduct){let t=[];for(let n of e.values)n instanceof CSSMathProduct?t.push(...n.values):t.push(n);let[n,r]=Ee(t,(e=>e instanceof CSSUnitValue&&e.unit===`number`));if(n.length>1){let e=n.reduce(((e,{value:t})=>e*t),1);t=[new CSSUnitValue(e,`number`),...r]}if(t.length===2){let e,n;for(let r of t)r instanceof CSSUnitValue&&r.unit===`number`?e=r:r instanceof CSSMathSum&&[...r.values].every((e=>e instanceof CSSUnitValue))&&(n=r);if(e&&n)return new CSSMathSum(...[...n.values].map((t=>new CSSUnitValue(t.value*e.value,t.unit))))}if(t.every((e=>e instanceof CSSUnitValue&&Ce(e.unit)||e instanceof CSSMathInvert&&e.value instanceof CSSUnitValue&&Ce(e.value.unit)))){let e=new CSSMathProduct(...t).toSum();if(e&&e.values.length===1)return e.values[0]}return new CSSMathProduct(...t)}return e}let S=[`percent`,`length`,`angle`,`time`,`frequency`,`resolution`,`flex`],C={fontRelativeLengths:{units:new Set([`em`,`rem`,`ex`,`rex`,`cap`,`rcap`,`ch`,`rch`,`ic`,`ric`,`lh`,`rlh`])},viewportRelativeLengths:{units:new Set([`vw`,`lvw`,`svw`,`dvw`,`vh`,`lvh`,`svh`,`dvh`,`vi`,`lvi`,`svi`,`dvi`,`vb`,`lvb`,`svb`,`dvb`,`vmin`,`lvmin`,`svmin`,`dvmin`,`vmax`,`lvmax`,`svmax`,`dvmax`])},absoluteLengths:{units:new Set([`cm`,`mm`,`Q`,`in`,`pt`,`pc`,`px`]),compatible:!0,canonicalUnit:`px`,ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set([`deg`,`grad`,`rad`,`turn`]),compatible:!0,canonicalUnit:`deg`,ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set([`s`,`ms`]),compatible:!0,canonicalUnit:`s`,ratios:{s:1,ms:.001}},frequency:{units:new Set([`hz`,`khz`]),compatible:!0,canonicalUnit:`hz`,ratios:{hz:1,khz:1e3}},resolution:{units:new Set([`dpi`,`dpcm`,`dppx`]),compatible:!0,canonicalUnit:`dppx`,ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},Oe=new Map;for(let e of Object.values(C))if(e.compatible)for(let t of e.units)Oe.set(t,e);function ke(e){return Oe.get(e)}function Ae(e,t){let n={...e};for(let e of Object.keys(t))n[e]?n[e]+=t[e]:n[e]=t[e];return n}function je(e){return e===`number`?{}:e===`percent`?{percent:1}:C.absoluteLengths.units.has(e)||C.fontRelativeLengths.units.has(e)||C.viewportRelativeLengths.units.has(e)?{length:1}:C.angle.units.has(e)?{angle:1}:C.time.units.has(e)?{time:1}:C.frequency.units.has(e)?{frequency:1}:C.resolution.units.has(e)?{resolution:1}:e===`fr`?{flex:1}:null}function Me(e){if(e instanceof CSSUnitValue){let{unit:t,value:n}=e,r=ke(e.unit);return r&&t!==r.canonicalUnit&&(n*=r.ratios[t],t=r.canonicalUnit),t===`number`?[[n,{}]]:[[n,{[t]:1}]]}if(e instanceof CSSMathInvert){if(!(e.value instanceof CSSUnitValue))throw Error(`Not implemented`);let t=Me(e.value);if(t===null||t.length>1)return null;let n=t[0],r={};for(let[e,t]of Object.entries(n[1]))r[e]=-1*t;return t[0]=[1/n[0],r],t}if(e instanceof CSSMathProduct){let t=[[1,{}]];for(let n of e.values){let e=Me(n),r=[];if(e===null)return null;for(let n of t)for(let t of e)r.push([n[0]*t[0],Ae(n[1],t[1])]);t=r}return t}throw Error(`Not implemented`)}function Ne(e,t){if(je(t)===null)throw SyntaxError(`The string did not match the expected pattern.`);let n=Me(e);if(!n)throw TypeError();if(n.length>1)throw TypeError(`Sum has more than one item`);let r=function(e,t){let n=e.unit,r=e.value,i=ke(n),a=ke(t);return!a||i!==a?null:new CSSUnitValue(r*a.ratios[n]/a.ratios[t],t)}(Pe(n[0]),t);if(r===null)throw TypeError();return r}function Pe(e){let[t,n]=e,r=Object.entries(n);if(r.length>1)return null;if(r.length===0)return new CSSUnitValue(t,`number`);let i=r[0];return i[1]===1?new CSSUnitValue(t,i[0]):null}function Fe(e,...t){if(t&&t.length)throw Error(`Not implemented`);let n=Me(e).map((e=>Pe(e)));if(n.some((e=>e===null)))throw TypeError(`Type error`);return new CSSMathSum(...n)}function Ie(e,t){if(e.percentHint&&t.percentHint&&e.percentHint!==t.percentHint)return null;let n={...e,percentHint:e.percentHint??t.percentHint};for(let e of S)t[e]&&(n[e]??(n[e]=0),n[e]+=t[e]);return n}class Le{constructor(e,t){$(this,`name`),$(this,`values`),this.name=e,this.values=t}}class Re{constructor(e,t){$(this,`value`),$(this,`associatedToken`),this.value=e,this.associatedToken=t}}function ze(e){if(Array.isArray(e))return e;if(typeof e==`string`)return function(e){let t=new oe(e),n=[];for(;;){let e=xe(t);if(e===void 0)return n;n.push(e)}}(e);throw TypeError(`Invalid input type `+typeof e)}function Be(e){let t=e.shift();return t instanceof ie||t instanceof _||t instanceof re?function(e,t){let n;if(t instanceof ie)n=ae;else if(t instanceof re)n=v;else{if(!(t instanceof _))return;n=ne}let r=new Re([],t);for(;;){let t=e.shift();if(t instanceof n||t===void 0)return r;e.unshift(t),r.value.push(Be(e))}}(e,t):t instanceof n?function(e,t){let n=new Le(e.value,[]);for(;;){let e=t.shift();if(e instanceof v||e===void 0)return n;t.unshift(e),n.values.push(Be(t))}}(t,e):t}function Ve(e){if(e instanceof re||e instanceof v)return 6;if(e instanceof l)switch(e.value){case`*`:case`/`:return 4;case`+`:case`-`:return 2}}function He(e){return e[e.length-1]}function Ue(e,t,n){let r=[`+`,`-`].includes(e.value)?`ADDITION`:`MULTIPLICATION`,i=t.type===r?t.values:[t],a=n.type===r?n.values:[n];return e.value===`-`?a[0]={type:`NEGATE`,value:a[0]}:e.value===`/`&&(a[0]={type:`INVERT`,value:a[0]}),{type:r,values:[...i,...a]}}function We(e){if(e.type===`ADDITION`)return new CSSMathSum(...e.values.map((e=>We(e))));if(e.type===`MULTIPLICATION`)return new CSSMathProduct(...e.values.map((e=>We(e))));if(e.type===`NEGATE`)return new CSSMathNegate(We(e.value));if(e.type===`INVERT`)return new CSSMathInvert(We(e.value));if(e instanceof Re)return Ge(new Le(`calc`,e.value));if(e instanceof t){if(e.value===`e`)return new CSSUnitValue(Math.E,`number`);if(e.value===`pi`)return new CSSUnitValue(Math.PI,`number`);throw SyntaxError(`Invalid math expression`)}return Ke(e)}function Ge(e){if(e.name===`min`||e.name===`max`){let t=e.values.filter((e=>!(e instanceof p||e instanceof te))).map((e=>De(Ge(new Le(`calc`,e)))));return e.name===`min`?new CSSMathMin(...t):new CSSMathMax(...t)}if(e.name!==`calc`)return null;let n=We(function(e){let n=[],r=[];for(;e.length;){let i=e.shift();if(i instanceof u||i instanceof f||i instanceof d||i instanceof Le||i instanceof Re||i instanceof t)r.push(i);else if(i instanceof l&&[`*`,`/`,`+`,`-`].includes(i.value)){for(;n.length&&!(He(n)instanceof re)&&Ve(He(n))>Ve(i);){let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}n.push(i)}else if(i instanceof re)n.push(i);else if(i instanceof v){if(!n.length)return null;for(;!(He(n)instanceof re);){let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}if(!(He(n)instanceof re))return null;n.pop()}else if(!(i instanceof p))return null}for(;n.length;){if(He(n)instanceof re)return null;let e=n.pop(),t=r.pop(),i=r.pop();r.push(Ue(e,i,t))}return r[0]}([...e.values])),r;try{r=De(n)}catch{new CSSStyleSheet().insertRule(`error`,0)}return r instanceof CSSUnitValue?new CSSMathSum(r):r}function Ke(e){return e instanceof Le&&[`calc`,`min`,`max`,`clamp`].includes(e.name)?Ge(e):e instanceof u&&e.value===0&&!e.unit?new CSSUnitValue(0,`px`):e instanceof u?new CSSUnitValue(e.value,`number`):e instanceof d?new CSSUnitValue(e.value,`percent`):e instanceof f?new CSSUnitValue(e.value,e.unit):void 0}function qe(e){let t=function(e){let t=ze(e);for(;t[0]instanceof p;)t.shift();if(t[0]===void 0)return null;let n=Be(t);for(;t[0]instanceof p;)t.shift();return t[0]===void 0?n:null}(e);return t===null&&new CSSStyleSheet().insertRule(`error`,0),t instanceof u||t instanceof d||t instanceof f||t instanceof Le||new CSSStyleSheet().insertRule(`error`,0),t instanceof f&&je(t.unit)===null&&new CSSStyleSheet().insertRule(`error`,0),Ke(t)}(function(){let e=new WeakMap;function t(e){let t=[];for(let r=0;re.type())).reduce(Ie)}},CSSMathNegate:class extends r{constructor(e){super([arguments[0]],`negate`,`-`)}get value(){return e.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends r{constructor(e){super([1,arguments[0]],`invert`,`calc`,` / `)}get value(){return e.get(this).values[1]}type(){return function(e){let t={};for(let n of S)t[n]=-1*e[n];return t}(e.get(this).values[1].type())}},CSSMathMax:class extends r{constructor(){super(arguments,`max`)}},CSSMathMin:class extends r{constructor(){super(arguments,`min`)}}};if(!window.CSS&&!Reflect.defineProperty(window,`CSS`,{value:{}}))throw Error(`Error installing CSSOM support`);window.CSSUnitValue||`number.percent.em.ex.px.cm.mm.in.pt.pc.Q.vw.vh.vmin.vmax.rems.ch.deg.rad.grad.turn.ms.s.Hz.kHz.dppx.dpi.dpcm.fr`.split(`.`).forEach((e=>{if(!Reflect.defineProperty(CSS,e,{value:t=>new CSSUnitValue(t,e)}))throw Error(`Error installing CSS.${e}`)}));for(let[e,t]of Object.entries(i))if(!(e in window)&&!Reflect.defineProperty(window,e,{value:t}))throw Error(`Error installing CSSOM support for ${e}`)})();let w=`block`,T=new WeakMap,E=new WeakMap,Je=[`entry`,`exit`,`cover`,`contain`,`entry-crossing`,`exit-crossing`];function Ye(e){return e===document.scrollingElement?document:e}function Xe(e){$e(e);let t=T.get(e).animations;if(t.length===0)return;let n=e.currentTime;for(let e=0;e{for(let e of t.timelineRefs){let t=e.deref();t&&Xe(t)}t.updateScheduled=!1})),!0)}function it(e,t){let n=T.get(e),r=n.source;if(r!=t){if(r){let t=E.get(r);if(t){t.timelineRefs.delete(e);let n=Array.from(t.timelineRefs).filter((e=>e.deref()===void 0));for(let e of n)t.timelineRefs.delete(e);t.timelineRefs.size===0&&(t.disconnect(),E.delete(r))}}if(n.source=t,t){let r=E.get(t);if(!r){r={timelineRefs:new Set,sourceMeasurements:tt(t)},E.set(t,r);let e=new ResizeObserver((e=>{for(let t of e)rt(n.source)}));e.observe(t);for(let n of t.children)e.observe(n);let i=new MutationObserver((e=>{for(let t of e)rt(t.target)}));i.observe(t,{attributes:!0,attributeFilter:[`style`,`class`]});let a=()=>{r.sourceMeasurements.scrollLeft=t.scrollLeft,r.sourceMeasurements.scrollTop=t.scrollTop;for(let e of r.timelineRefs){let t=e.deref();t&&Xe(t)}};Ye(t).addEventListener(`scroll`,a),r.disconnect=()=>{e.disconnect(),i.disconnect(),Ye(t).removeEventListener(`scroll`,a)}}r.timelineRefs.add(new WeakRef(e))}}}function at(e,t){let n=T.get(e).animations;for(let e=0;e{Xe(e)}))}class D{constructor(e){if(T.set(this,{source:null,axis:w,anonymousSource:e?e.anonymousSource:null,anonymousTarget:e?e.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),it(this,e&&e.source!==void 0?e.source:document.scrollingElement),e&&e.axis!==void 0&&e.axis!=w){if(!et(e.axis))throw TypeError(`Invalid axis`);T.get(this).axis=e.axis}Xe(this)}set source(e){it(this,e),Xe(this)}get source(){return T.get(this).source}set axis(e){if(!et(e))throw TypeError(`Invalid axis`);T.get(this).axis=e,Xe(this)}get axis(){return T.get(this).axis}get duration(){return CSS.percent(100)}get phase(){let e=this.source;if(!e)return`inactive`;let t=getComputedStyle(e);return t.display==`none`?`inactive`:e==document.scrollingElement||t.overflow!=`visible`&&t.overflow!=`clip`?`active`:`inactive`}get currentTime(){let e=this.source;if(!e||!e.isConnected||this.phase==`inactive`)return null;let t=getComputedStyle(e);if(t.display===`inline`||t.display===`none`)return null;let n=this.axis,r=Ze(e,n),i=function(e,t){let n=E.get(e).sourceMeasurements,r=getComputedStyle(e).writingMode==`horizontal-tb`;return t===`block`?t=r?`y`:`x`:t===`inline`&&(t=r?`x`:`y`),t===`y`?n.scrollHeight-n.clientHeight:t===`x`?n.scrollWidth-n.clientWidth:void 0}(e,n);return i>0?CSS.percent(100*r/i):CSS.percent(100)}get __polyfill(){return!0}}function O(e,t){let n=e.parentElement;for(;n!=null;){if(t(n))return n;n=n.parentElement}}function st(e,t){switch(e){case`root`:return document.scrollingElement;case`nearest`:return ut(t);case`self`:return t;default:throw TypeError(`Invalid ScrollTimeline Source Type.`)}}function ct(e){switch(getComputedStyle(e).display){case`block`:case`inline-block`:case`list-item`:case`table`:case`table-caption`:case`flow-root`:case`flex`:case`grid`:return!0}return!1}function lt(e){let t=getComputedStyle(e);return t.transform!=`none`||t.perspective!=`none`||t.willChange==`transform`||t.willChange==`perspective`||t.filter!=`none`||t.willChange==`filter`||t.backdropFilter!=`none`}function k(e){return getComputedStyle(e).position!=`static`||lt(e)}function A(e){switch(getComputedStyle(e).position){case`static`:case`relative`:case`sticky`:return O(e,ct);case`absolute`:return O(e,k);case`fixed`:return O(e,lt)}}function ut(e){if(e&&e.isConnected){for(;e=A(e);)switch(getComputedStyle(e)[`overflow-x`]){case`auto`:case`scroll`:case`hidden`:return e==document.body&&getComputedStyle(document.scrollingElement).overflow==`visible`?document.scrollingElement:e}return document.scrollingElement}}function j(e,t){let n=T.get(e),r=n.subjectMeasurements,i=E.get(n.source).sourceMeasurements;return e.phase===`inactive`?null:e instanceof pt?dt(t,i,r,n.axis,n.inset):null}function dt(e,t,n,r,i){let a=t.direction==`rtl`||t.writingMode==`vertical-rl`,o,s,c={fontSize:n.fontSize};we(r,t)===`x`?(o=n.offsetWidth,s=n.left,c.scrollPadding=[t.scrollPaddingLeft,t.scrollPaddingRight],a&&(s+=t.scrollWidth-t.clientWidth,c.scrollPadding=[t.scrollPaddingRight,t.scrollPaddingLeft]),c.containerSize=t.clientWidth):(o=n.offsetHeight,s=n.top,c.scrollPadding=[t.scrollPaddingTop,t.scrollPaddingBottom],c.containerSize=t.clientHeight);let l=function(e,t){let n={start:0,end:0};if(!e)return n;let[r,i]=[e.start,e.end].map(((e,n)=>e===`auto`?t.scrollPadding[n]===`auto`?0:parseFloat(t.scrollPadding[n]):Qe(e,{percentageReference:CSS.px(t.containerSize),fontSize:CSS.px(parseFloat(t.fontSize))})));return{start:r,end:i}}(i,c),u=s-c.containerSize+l.end,d=s+o-l.start,f=u+o,p=d-o,m=Math.min(f,p),ee=Math.max(f,p),h,g,te=o>c.containerSize-l.start-l.end;switch(e){case`cover`:h=u,g=d;break;case`contain`:h=m,g=ee;break;case`entry`:h=u,g=m;break;case`exit`:h=ee,g=d;break;case`entry-crossing`:h=u,g=te?ee:m;break;case`exit-crossing`:h=te?m:ee,g=d}return{start:h,end:g}}function ft(e,t){if(e instanceof pt){let{rangeName:n,offset:r}=t;return M(j(e,n),r,j(e,`cover`),e.subject)}if(e instanceof D){let{axis:n,source:r}=e,{sourceMeasurements:i}=E.get(r),a;return a=we(n,i)===`x`?i.scrollWidth-i.clientWidth:i.scrollHeight-i.clientHeight,Qe(t,{percentageReference:CSS.px(a)})/a}unsupportedTimeline(e)}function M(e,t,n,r){if(!e||!n)return 0;let i=getComputedStyle(r);return(Qe(t,{percentageReference:CSS.px(e.end-e.start),fontSize:CSS.px(parseFloat(i.fontSize))})+e.start-n.start)/(n.end-n.start)}let pt=class extends D{constructor(e){super(e);let t=T.get(this);t.subject=e&&e.subject?e.subject:void 0,e&&e.inset&&(t.inset=function(e){if(!e)return{start:0,end:0};let t;if(t=typeof e==`string`?x(e).map((t=>{if(t===`auto`)return`auto`;try{return CSSNumericValue.parse(t)}catch{throw TypeError(`Could not parse inset "${e}"`)}})):Array.isArray(e)?e:[e],t.length===0||t.length>2)throw TypeError(`Invalid inset`);for(let e of t){if(e===`auto`)continue;let t=e.type();if(t.length!==1&&t.percent!==1)throw TypeError(`Invalid inset`)}return{start:t[0],end:t[1]??t[0]}}(e.inset)),t.subject&&(new ResizeObserver((()=>{rt(t.source)})).observe(t.subject),new MutationObserver((()=>{rt(t.source)})).observe(t.subject,{attributes:!0,attributeFilter:[`class`,`style`]})),$e(this),t.subjectMeasurements=nt(t.source,t.subject),Xe(this)}get source(){return $e(this),T.get(this).source}set source(e){throw Error(`Cannot set the source of a view timeline`)}get subject(){return T.get(this).subject}get axis(){return T.get(this).axis}get currentTime(){let e=Ze(this.source,this.axis);if(e==null)return null;let t=j(this,`cover`);if(!t)return null;let n=(e-t.start)/(t.end-t.start);return CSS.percent(100*n)}get startOffset(){return CSS.px(j(this,`cover`).start)}get endOffset(){return CSS.px(j(this,`cover`).end)}},mt=document.getAnimations,ht=window.Element.prototype.getAnimations,gt=window.Element.prototype.animate,_t=window.Animation;class N{constructor(){this.state=`pending`,this.nativeResolve=this.nativeReject=null,this.promise=new Promise(((e,t)=>{this.nativeResolve=e,this.nativeReject=t}))}resolve(e){this.state=`resolved`,this.nativeResolve(e)}reject(e){this.state=`rejected`,this.promise.catch((()=>{})),this.nativeReject(e)}}function P(e){e.readyPromise=new N,requestAnimationFrame((()=>{(e.timeline?.currentTime??null)!==null&&(Nt(e),e.pendingTask!==`play`||e.startTime===null&&e.holdTime===null?e.pendingTask===`pause`&&bt(e):yt(e))}))}function F(){return new DOMException(`The user aborted a request`,`AbortError`)}function vt(e,t){if(t===null)return t;if(typeof t!=`number`)throw new DOMException(`Unexpected value: ${t}. Cannot convert to CssNumberish`,`InvalidStateError`);let n=e.rangeDuration??100,r=Et(e),i=r?n*t/r:0;return CSS.percent(i)}function I(e,t){if(e.timeline){if(t===null)return t;if(t.unit===`percent`){let n=e.rangeDuration??100,r=Et(e);return t.value*r/n}throw new DOMException(`CSSNumericValue must be a percentage for progress based animations.`,`NotSupportedError`)}{if(t==null||typeof t==`number`)return t;let e=t.to(`ms`);if(e)return e.value;throw new DOMException(`CSSNumericValue must be either a number or a time value for time based animations.`,`InvalidStateError`)}}function yt(e){let t=I(e,e.timeline.currentTime);if(e.holdTime!=null)Ct(e),e.animation.playbackRate==0?e.startTime=t:(e.startTime=t-e.holdTime/e.animation.playbackRate,e.holdTime=null);else if(e.startTime!==null&&e.pendingPlaybackRate!==null){let n=(t-e.startTime)*e.animation.playbackRate;Ct(e);let r=e.animation.playbackRate;r==0?(e.holdTime=null,e.startTime=t):e.startTime=t-n/r}e.readyPromise&&e.readyPromise.state==`pending`&&e.readyPromise.resolve(e.proxy),Tt(e,!1,!1),Dt(e),e.pendingTask=null}function bt(e){let t=I(e,e.timeline.currentTime);e.startTime!=null&&e.holdTime==null&&(e.holdTime=(t-e.startTime)*e.animation.playbackRate),Ct(e),e.startTime=null,e.readyPromise.resolve(e.proxy),Tt(e,!1,!1),Dt(e),e.pendingTask=null}function xt(e){if(!e.finishedPromise||e.finishedPromise.state!=`pending`||e.proxy.playState!=`finished`)return;e.finishedPromise.resolve(e.proxy),e.animation.pause();let t=new CustomEvent(`finish`,{detail:{currentTime:e.proxy.currentTime,timelineTime:e.proxy.timeline.currentTime}});Object.defineProperty(t,`currentTime`,{get:function(){return this.detail.currentTime}}),Object.defineProperty(t,`timelineTime`,{get:function(){return this.detail.timelineTime}}),requestAnimationFrame((()=>{queueMicrotask((()=>{e.animation.dispatchEvent(t)}))}))}function St(e){return e.pendingPlaybackRate===null?e.animation.playbackRate:e.pendingPlaybackRate}function Ct(e){e.pendingPlaybackRate!==null&&(e.animation.playbackRate=e.pendingPlaybackRate,e.pendingPlaybackRate=null)}function wt(e){if(!e.timeline)return null;let t=I(e,e.timeline.currentTime);if(t===null||e.startTime===null)return null;let n=(t-e.startTime)*e.animation.playbackRate;return n==-0&&(n=0),n}function Tt(e,t,n){if(!e.timeline)return;let r=t?I(e,e.proxy.currentTime):wt(e);if(r&&e.startTime!=null&&!e.proxy.pending){let n=St(e),i=Et(e),a=e.previousCurrentTime;n>0&&r>=i&&e.previousCurrentTime!=null?((a===null||a0)&&(a=0),e.holdTime=t?r:a):n!=0&&(t&&e.holdTime!==null&&(e.startTime=function(e,t){if(!e.timeline)return null;let n=I(e,e.timeline.currentTime);return n==null?null:n-t/e.animation.playbackRate}(e,e.holdTime)),e.holdTime=null)}Dt(e),e.previousCurrentTime=I(e,e.proxy.currentTime),e.proxy.playState==`finished`?(e.finishedPromise||=new N,e.finishedPromise.state==`pending`&&(n?xt(e):Promise.resolve().then((()=>{xt(e)})))):(e.finishedPromise&&e.finishedPromise.state==`resolved`&&(e.finishedPromise=new N),e.animation.playState!=`paused`&&e.animation.pause())}function Et(e){let t=function(e){let t=e.proxy.effect.getTiming();return e.normalizedTiming||t}(e),n=t.delay+t.endDelay+t.iterations*t.duration;return Math.max(0,n)}function Dt(e){if(e.timeline)if(e.startTime!==null){let t=e.timeline.currentTime;if(t==null)return;Ot(e,(I(e,t)-e.startTime)*e.animation.playbackRate)}else e.holdTime!==null&&Ot(e,e.holdTime)}function Ot(e,t){let n=e.timeline,r=e.animation.playbackRate,i=n.currentTime&&n.currentTime.value==(r<0?0:100)?r<0?.001:-.001:0;e.animation.currentTime=t+i}function kt(e,t){if(!e.timeline)return;let n=e.proxy.playState==`paused`&&e.proxy.pending,r=!1,i=I(e,e.proxy.currentTime);St(e)==0&&i==null&&(e.holdTime=0),i??(e.autoAlignStartTime=!0),(e.proxy.playState===`finished`||n)&&(e.holdTime=null,e.startTime=null,e.autoAlignStartTime=!0),e.holdTime&&(e.startTime=null),e.pendingTask&&(e.pendingTask=null,r=!0),(e.holdTime!==null||e.autoAlignStartTime||n||e.pendingPlaybackRate!==null)&&(e.readyPromise&&!r&&(e.readyPromise=null),Dt(e),e.readyPromise||P(e),e.pendingTask=`play`,ot(e.timeline,e.animation,At.bind(e.proxy)),Tt(e,!1,!1))}function At(e){let t=L.get(this);if(!t)return;if(e==null)return void(t.proxy.playState!==`paused`&&t.animation.playState!=`idle`&&t.animation.cancel());Nt(t),t.pendingTask&&requestAnimationFrame((()=>{t.pendingTask!==`play`||t.startTime===null&&t.holdTime===null?t.pendingTask===`pause`&&bt(t):yt(t)}));let n=this.playState;(n==`running`||n==`finished`)&&(Ot(t,(I(t,e)-I(t,this.startTime))*this.playbackRate),Tt(t,!1,!1))}function jt(e){e.specifiedTiming=null}let L=new WeakMap;window.addEventListener(`pagehide`,(e=>{L=new WeakMap}),!1);let Mt=new WeakMap;function Nt(e){if(!e.autoAlignStartTime||!e.timeline||!e.timeline.currentTime||e.proxy.playState===`idle`||e.proxy.playState===`paused`&&e.holdTime!==null)return;let t=e.rangeDuration,n,r;try{n=CSS.percent(100*function(e){if(!e.animationRange)return 0;let t=e.animationRange.start===`normal`?Ft(e.timeline):e.animationRange.start;return ft(e.timeline,t)}(e))}catch(t){n=CSS.percent(0),e.animationRange.start=`normal`,console.warn(`Exception when calculating start offset`,t)}try{r=CSS.percent(100*(1-function(e){if(!e.animationRange)return 0;let t=e.animationRange.end===`normal`?It(e.timeline):e.animationRange.end;return 1-ft(e.timeline,t)}(e)))}catch(t){r=CSS.percent(100),e.animationRange.end=`normal`,console.warn(`Exception when calculating end offset`,t)}e.rangeDuration=r.value-n.value,e.startTime=I(e,St(e)>=0?n:r),e.holdTime=null,e.rangeDuration!==t&&jt(e)}function Pt(e){throw Error(`Unsupported timeline class`)}function Ft(e){return e instanceof ViewTimeline?{rangeName:`cover`,offset:CSS.percent(0)}:e instanceof D?CSS.percent(0):void Pt()}function It(e){return e instanceof ViewTimeline?{rangeName:`cover`,offset:CSS.percent(100)}:e instanceof D?CSS.percent(100):void Pt()}function Lt(e,t){if(!t)return{start:`normal`,end:`normal`};let n={start:Ft(e),end:It(e)};if(e instanceof ViewTimeline){let e=x(t),r=[],i=[];if(e.forEach((e=>{if(Je.includes(e))r.push(e);else try{i.push(CSSNumericValue.parse(e))}catch{throw TypeError(`Could not parse range "${t}"`)}})),r.length>2||i.length>2||i.length==1)throw TypeError(`Invalid time range or unsupported time range format.`);return r.length&&(n.start.rangeName=r[0],n.end.rangeName=r.length>1?r[1]:r[0]),i.length>1&&(n.start.offset=i[0],n.end.offset=i[1]),n}if(e instanceof D){let e=t.split(` `);if(e.length!=2)throw TypeError(`Invalid time range or unsupported time range format.`);return n.start=CSSNumericValue.parse(e[0]),n.end=CSSNumericValue.parse(e[1]),n}Pt()}function Rt(e,t,n){if(!t||t===`normal`)return`normal`;if(e instanceof ViewTimeline){let e=`cover`,r=n===`start`?CSS.percent(0):CSS.percent(100);if(t instanceof Object)t.rangeName!==void 0&&(e=t.rangeName),t.offset!==void 0&&(r=t.offset);else{let n=x(t);n.length===1?Je.includes(n[0])?e=n[0]:r=De(CSSNumericValue.parse(n[0]),{}):n.length===2&&(e=n[0],r=De(CSSNumericValue.parse(n[1]),{}))}if(!Je.includes(e))throw TypeError(`Invalid range name`);return{rangeName:e,offset:r}}if(e instanceof D)return CSSNumericValue.parse(t);Pt()}class zt{constructor(e,t,n={}){let r=t instanceof D,i=e instanceof _t?e:new _t(e,r?void 0:t);Mt.set(i,this),L.set(this,{animation:i,timeline:r?t:void 0,playState:r?`idle`:null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:r?Lt(t,n[`animation-range`]):null,proxy:this})}get effect(){let e=L.get(this);return e.timeline?(e.effect||=function(e){let t=e.animation.effect,n=t.updateTiming,r={apply:function(n){t.getTiming();let r=n.apply(t);if(e.timeline){let t=e.duration??100;r.localTime=vt(e,r.localTime),r.endTime=vt(e,r.endTime),r.activeDuration=vt(e,r.activeDuration);let n=Et(e),i=r.iterations?(n-r.delay-r.endDelay)/r.iterations:0;r.duration=n?CSS.percent(t*i/n):CSS.percent(0),e.timeline.currentTime===void 0&&(r.localTime=null)}return r}},i={apply:function(r,i){if(e.specifiedTiming)return e.specifiedTiming;e.specifiedTiming=r.apply(t);let a,o=Object.assign({},e.specifiedTiming);if(o.duration===1/0)throw TypeError(`Effect duration cannot be Infinity when used with Scroll Timelines`);return(o.duration===null||o.duration===`auto`||e.autoDurationEffect)&&e.timeline&&(e.autoDurationEffect=!0,o.delay=0,o.endDelay=0,a=o.iterations?1e5:0,o.duration=o.iterations?(a-o.delay-o.endDelay)/o.iterations:0,o.duration<0&&(o.duration=0,o.endDelay=a-o.delay),n.apply(t,[o])),e.normalizedTiming=o,e.specifiedTiming}},a={apply:function(n,r,i){if(i&&i.length){if(e.timeline&&i[0]){let t=i[0],n=t.duration;if(n===1/0)throw TypeError(`Effect duration cannot be Infinity when used with Scroll Timelines`);if(t.iterations===1/0)throw TypeError(`Effect iterations cannot be Infinity when used with Scroll Timelines`);n!==void 0&&n!==`auto`&&(e.autoDurationEffect=null)}e.specifiedTiming&&n.apply(t,[e.specifiedTiming]),n.apply(t,i),jt(e)}}},o=new Proxy(t,{get:function(e,n){let r=e[n];return typeof r==`function`?r.bind(t):r},set:function(e,t,n){return e[t]=n,!0}});return o.getComputedTiming=new Proxy(t.getComputedTiming,r),o.getTiming=new Proxy(t.getTiming,i),o.updateTiming=new Proxy(t.updateTiming,a),o}(e),e.effect):e.animation.effect}set effect(e){let t=L.get(this);t.animation.effect=e,t.effect=null,t.autoDurationEffect=null}get timeline(){let e=L.get(this);return e.timeline||e.animation.timeline}set timeline(e){let t=L.get(this),n=this.timeline;if(n==e)return;let r=this.playState,i=this.currentTime,a,o=Et(t);a=i===null?null:o===0?0:I(t,i)/o;let s=n instanceof D,c=e instanceof D,l=this.pending;if(s&&at(t.timeline,t.animation),c)return t.timeline=e,Ct(t),t.autoAlignStartTime=!0,t.startTime=null,t.holdTime=null,r!==`running`&&r!==`finished`||(t.readyPromise&&t.readyPromise.state!==`resolved`||P(t),t.pendingTask=`play`,ot(t.timeline,t.animation,At.bind(this))),r===`paused`&&a!==null&&(t.holdTime=a*o),l&&(t.readyPromise&&t.readyPromise.state!=`resolved`||P(t),t.pendingTask=r==`paused`?`pause`:`play`),t.startTime!==null&&(t.holdTime=null),void Tt(t,!1,!1);if(t.animation.timeline!=e)throw TypeError(`Unsupported timeline: `+e);if(at(t.timeline,t.animation),t.timeline=null,s)switch(i!==null&&(t.animation.currentTime=a*Et(t)),r){case`paused`:t.animation.pause();break;case`running`:case`finished`:t.animation.play()}}get startTime(){let e=L.get(this);return e.timeline?vt(e,e.startTime):e.animation.startTime}set startTime(e){let t=L.get(this);if(e=I(t,e),!t.timeline)return void(t.animation.startTime=e);t.autoAlignStartTime=!1,I(t,t.timeline.currentTime)==null&&t.startTime!=null&&(t.holdTime=null,Dt(t));let n=I(t,this.currentTime);Ct(t),t.startTime=e,t.startTime!==null&&t.animation.playbackRate!=0?t.holdTime=null:t.holdTime=n,t.pendingTask&&(t.pendingTask=null,t.readyPromise.resolve(this)),Tt(t,!0,!1),Dt(t)}get currentTime(){let e=L.get(this);return e.timeline?e.holdTime==null?vt(e,wt(e)):vt(e,e.holdTime):e.animation.currentTime}set currentTime(e){let t=L.get(this);t.timeline?(function(e,t){if(t==null&&e.currentTime!==null)throw TypeError();t=I(e,t),e.autoAlignStartTime=!1,e.holdTime!==null||e.startTime===null||e.timeline.phase===`inactive`||e.animation.playbackRate===0?e.holdTime=t:e.startTime=I(e,e.timeline.currentTime)-t/e.animation.playbackRate,e.timeline.phase===`inactive`&&(e.startTime=null),e.previousCurrentTime=null}(t,e),t.pendingTask==`pause`&&(t.holdTime=I(t,e),Ct(t),t.startTime=null,t.pendingTask=null,t.readyPromise.resolve(this)),Tt(t,!0,!1)):t.animation.currentTime=e}get playbackRate(){return L.get(this).animation.playbackRate}set playbackRate(e){let t=L.get(this);if(!t.timeline)return void(t.animation.playbackRate=e);t.pendingPlaybackRate=null;let n=this.currentTime;t.animation.playbackRate=e,n!==null&&(this.currentTime=n)}get playState(){let e=L.get(this);if(!e.timeline)return e.animation.playState;let t=I(e,this.currentTime);return t===null&&e.startTime===null&&e.pendingTask==null?`idle`:e.pendingTask==`pause`||e.startTime===null&&e.pendingTask!=`play`?`paused`:t!=null&&(e.animation.playbackRate>0&&t>=Et(e)||e.animation.playbackRate<0&&t<=0)?`finished`:`running`}get rangeStart(){return L.get(this).animationRange?.start??`normal`}set rangeStart(e){let t=L.get(this);if(!t.timeline)return t.animation.rangeStart=e;t.timeline instanceof D&&(t.animationRange.start=Rt(t.timeline,e,`start`),Nt(t),Dt(t))}get rangeEnd(){return L.get(this).animationRange?.end??`normal`}set rangeEnd(e){let t=L.get(this);if(!t.timeline)return t.animation.rangeEnd=e;t.timeline instanceof D&&(t.animationRange.end=Rt(t.timeline,e,`end`),Nt(t),Dt(t))}get replaceState(){return L.get(this).animation.pending}get pending(){let e=L.get(this);return e.timeline?!!e.readyPromise&&e.readyPromise.state==`pending`:e.animation.pending}finish(){let e=L.get(this);if(!e.timeline)return void e.animation.finish();let t=St(e),n=Et(e);if(t==0)throw new DOMException(`Cannot finish Animation with a playbackRate of 0.`,`InvalidStateError`);if(t>0&&n==1/0)throw new DOMException(`Cannot finish Animation with an infinite target effect end.`,`InvalidStateError`);Ct(e);let r=t<0?0:n;this.currentTime=vt(e,r);let i=I(e,e.timeline.currentTime);e.startTime===null&&i!==null&&(e.startTime=i-r/e.animation.playbackRate),e.pendingTask==`pause`&&e.startTime!==null&&(e.holdTime=null,e.pendingTask=null,e.readyPromise.resolve(this)),e.pendingTask==`play`&&e.startTime!==null&&(e.pendingTask=null,e.readyPromise.resolve(this)),Tt(e,!0,!0)}play(){let e=L.get(this);e.timeline?kt(e):e.animation.play()}pause(){let e=L.get(this);e.timeline?this.playState!=`paused`&&(e.animation.currentTime===null&&(e.autoAlignStartTime=!0),e.pendingTask==`play`?e.pendingTask=null:e.readyPromise=null,e.readyPromise||P(e),e.pendingTask=`pause`,ot(e.timeline,e.animation,At.bind(e.proxy))):e.animation.pause()}reverse(){let e=L.get(this),t=St(e),n=I(e,this.currentTime),r=Et(e)==1/0,i=t!=0&&(t<0||n>0||!r);if(!e.timeline||!i)return i&&(e.pendingPlaybackRate=-St(e)),void e.animation.reverse();if(e.timeline.phase==`inactive`)throw new DOMException(`Cannot reverse an animation with no active timeline`,`InvalidStateError`);this.updatePlaybackRate(-t),kt(e)}updatePlaybackRate(e){let t=L.get(this);if(t.pendingPlaybackRate=e,!t.timeline)return void t.animation.updatePlaybackRate(e);let n=this.playState;if(!t.readyPromise||t.readyPromise.state!=`pending`)switch(n){case`idle`:case`paused`:Ct(t);break;case`finished`:let n=I(t,t.timeline.currentTime),r=n===null?null:(n-t.startTime)*t.animation.playbackRate;t.startTime=e==0?n:n!=null&&r!=null?(n-r)/e:null,Ct(t),Tt(t,!1,!1),Dt(t);break;default:kt(t)}}persist(){L.get(this).animation.persist()}get id(){return L.get(this).animation.id}set id(e){L.get(this).animation.id=e}cancel(){let e=L.get(this);e.timeline?(this.playState!=`idle`&&(function(e){e.pendingTask&&(e.pendingTask=null,Ct(e),e.readyPromise.reject(F()),P(e),e.readyPromise.resolve(e.proxy))}(e),e.finishedPromise&&e.finishedPromise.state==`pending`&&e.finishedPromise.reject(F()),e.finishedPromise=new N,e.animation.cancel()),e.startTime=null,e.holdTime=null,at(e.timeline,e.animation)):e.animation.cancel()}get onfinish(){return L.get(this).animation.onfinish}set onfinish(e){L.get(this).animation.onfinish=e}get oncancel(){return L.get(this).animation.oncancel}set oncancel(e){L.get(this).animation.oncancel=e}get onremove(){return L.get(this).animation.onremove}set onremove(e){L.get(this).animation.onremove=e}get finished(){let e=L.get(this);return e.timeline?(e.finishedPromise||=new N,e.finishedPromise.promise):e.animation.finished}get ready(){let e=L.get(this);return e.timeline?(e.readyPromise||(e.readyPromise=new N,e.readyPromise.resolve(this)),e.readyPromise.promise):e.animation.ready}addEventListener(e,t,n){L.get(this).animation.addEventListener(e,t,n)}removeEventListener(e,t,n){L.get(this).animation.removeEventListener(e,t,n)}dispatchEvent(e){L.get(this).animation.dispatchEvent(e)}}function R(e,t){let n=t.timeline;n instanceof D&&delete t.timeline;let r=gt.apply(this,[e,t]),i=new zt(r,n);return n instanceof D&&(r.pause(),L.get(i).animationRange={start:Rt(n,t.rangeStart,`start`),end:Rt(n,t.rangeEnd,`end`)},i.play()),i}function Bt(e){for(let t=0;t=r.sheetSrc.length));){if(this.lookAhead(`/*`,r)){for(;this.lookAhead(`/*`,r);)this.eatComment(r),this.eatWhitespace(r);continue}let e=this.parseQualifiedRule(r);e&&(t?this.parseKeyframesAndSaveNameMapping(e,r):this.handleScrollTimelineProps(e,r))}return r.sheetSrc}getAnimationTimelineOptions(e,t){for(let n=this.cssRulesWithTimelineName.length-1;n>=0;n--){let r=this.cssRulesWithTimelineName[n];try{if(t.matches(r.selector)&&(!r[`animation-name`]||r[`animation-name`]==e))return{"animation-timeline":r[`animation-timeline`],"animation-range":r[`animation-range`]}}catch{}}return null}getAnonymousScrollTimelineOptions(e,t){let n=this.anonymousScrollTimelineOptions.get(e);return n?{anonymousSource:n.source,anonymousTarget:t,source:st(n.source??`nearest`,t),axis:n.axis?n.axis:`block`}:null}getScrollTimelineOptions(e,t){let n=this.getAnonymousScrollTimelineOptions(e,t);if(n)return n;for(let n=this.sourceSelectorToScrollTimeline.length-1;n>=0;n--){let r=this.sourceSelectorToScrollTimeline[n];if(r.name==e){let e=this.findPreviousSiblingOrAncestorMatchingSelector(t,r.selector);if(e)return{source:e,...r.axis?{axis:r.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(e,t){let n=e;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling||n.parentElement}return null}getAnonymousViewTimelineOptions(e,t){let n=this.anonymousViewTimelineOptions.get(e);return n?{subject:t,axis:n.axis?n.axis:`block`,inset:n.inset?n.inset:`auto`}:null}getViewTimelineOptions(e,t){let n=this.getAnonymousViewTimelineOptions(e,t);if(n)return n;for(let n=this.subjectSelectorToViewTimeline.length-1;n>=0;n--){let r=this.subjectSelectorToViewTimeline[n];if(r.name==e){let e=this.findPreviousSiblingOrAncestorMatchingSelector(t,r.selector);if(e)return{subject:e,axis:r.axis,inset:r.inset}}}return null}handleScrollTimelineProps(e,t){if(e.selector.includes(`@keyframes`))return;let n=e.block.contents.includes(`animation-name:`),r=e.block.contents.includes(`animation-timeline:`),i=e.block.contents.includes(`animation:`);if(this.saveSourceSelectorToScrollTimeline(e),this.saveSubjectSelectorToViewTimeline(e),!r&&!n&&!i)return;let a=[],o=[],s=!1;r&&(a=this.extractScrollTimelineNames(e.block.contents)),n&&(o=this.extractMatches(e.block.contents,B.ANIMATION_NAME)),r&&n||(i&&this.extractMatches(e.block.contents,B.ANIMATION).forEach((t=>{let n=this.extractAnimationName(t);n&&r&&o.push(n),r&&(this.hasDuration(t)||(this.hasAutoDuration(t)&&(e.block.contents=e.block.contents.replace(`auto`,` `)),e.block.contents=e.block.contents.replace(t,` 1s `+t),s=!0))})),s&&this.replacePart(e.block.startIndex,e.block.endIndex,e.block.contents,t)),this.saveRelationInList(e,a,o)}saveSourceSelectorToScrollTimeline(e){let t=e.block.contents.includes(`scroll-timeline:`),n=e.block.contents.includes(`scroll-timeline-name:`),r=e.block.contents.includes(`scroll-timeline-axis:`);if(!t&&!n)return;let i=[];if(t){let t=this.extractMatches(e.block.contents,B.SCROLL_TIMELINE);for(let n of t){let t=this.split(n),r={selector:e.selector,name:``};t.length==1?r.name=t[0]:t.length==2&&(Ht.includes(t[0])?(r.axis=t[0],r.name=t[1]):(r.axis=t[1],r.name=t[0])),i.push(r)}}if(n){let t=this.extractMatches(e.block.contents,B.SCROLL_TIMELINE_NAME);for(let n=0;nHt.includes(e))),a.length!=t.length)throw Error(`Invalid axis`)}for(let e=0;eHt.includes(e))),s.length!=t.length)throw Error(`Invalid axis`)}for(let e=0;e{return t=e,B.TIME.exec(t);var t})).length>=1}hasAutoDuration(e){return e.split(` `).filter((e=>e===`auto`)).length>=1}saveRelationInList(e,t,n){let r=[];e.block.contents.includes(`animation-range:`)&&(r=this.extractMatches(e.block.contents,B.ANIMATION_TIME_RANGE));let i=Math.max(t.length,n.length,r.length);for(let a=0;ae.trim())).forEach((e=>{if(function(e){return(e.startsWith(`scroll`)||e.startsWith(`view`))&&e.includes(`(`)}(e)){let t=this.saveAnonymousTimelineName(e);n.push(t)}else n.push(e)})),n}saveAnonymousTimelineName(e){let t=`:t`+ this.nextAnonymousTimelineNameIndex++;return e.startsWith(`scroll(`)?this.anonymousScrollTimelineOptions.set(t,this.parseAnonymousScrollTimeline(e)):this.anonymousViewTimelineOptions.set(t,this.parseAnonymousViewTimeline(e)),t}parseAnonymousScrollTimeline(e){let t=B.ANONYMOUS_SCROLL_TIMELINE.exec(e);if(!t)return null;let n=t[1],r={};return n.split(` `).forEach((e=>{Ht.includes(e)?r.axis=e:Ut.includes(e)&&(r.source=e)})),r}parseAnonymousViewTimeline(e){let t=B.ANONYMOUS_VIEW_TIMELINE.exec(e);if(!t)return null;let n=t[1],r={};return n.split(` `).forEach((e=>{Ht.includes(e)?r.axis=e:r.inset=r.inset?`${r.inset} ${e}`:e})),r}extractAnimationName(e){return this.findMatchingEntryInContainer(e,this.keyframeNamesSelectors)}findMatchingEntryInContainer(e,t){let n=e.split(` `).filter((e=>t.has(e)));return n?n[0]:null}parseIdentifier(e){B.IDENTIFIER.lastIndex=e.index;let t=B.IDENTIFIER.exec(e.sheetSrc);if(!t)throw this.parseError(e,`Expected an identifier`);return e.index+=t[0].length,t[0]}parseKeyframesAndSaveNameMapping(e,t){if(e.selector.startsWith(`@keyframes`)){let n=this.replaceKeyframesAndGetMapping(e,t);e.selector.split(` `).forEach(((e,t)=>{t>0&&this.keyframeNamesSelectors.set(e,n)}))}}replaceKeyframesAndGetMapping(e,t){function n(e){return Je.some((t=>e.startsWith(t)))}let r=e.block.contents,i=function(e){let t=0,n=-1,r=-1,i=[];for(let a=0;a{let t=e.split(` `).map((e=>e.trim())).filter((e=>e!=``)).join(` `),r=a.size;a.set(r,t),c.push(`${r}%`),n(t)&&(o=!0)})),s.push(c.join(`,`)),e==i.length-1?s.push(r.substring(i[e].end)):s.push(r.substring(i[e].end,i[e+1].start))}return o?(e.block.contents=s.join(``),this.replacePart(e.block.startIndex,e.block.endIndex,e.block.contents,t),a):new Map}parseQualifiedRule(e){let t=e.index,n=this.parseSelector(e).trim();if(n)return{selector:n,block:this.eatBlock(e),startIndex:t,endIndex:e.index}}removeEnclosingDoubleQuotes(e){let t=+(e[0]==`"`),n=e[e.length-1]==`"`?e.length-1:e.length;return e.substring(t,n)}assertString(e,t){if(e.sheetSrc.substr(e.index,t.length)!=t)throw this.parseError(e,`Did not find expected sequence ${t}`);e.index+=t.length}replacePart(e,t,n,r){if(r.sheetSrc=r.sheetSrc.slice(0,e)+n+r.sheetSrc.slice(t),r.index>=t){let i=r.index-t;r.index=e+n.length+i}}eatComment(e){this.assertString(e,`/*`),this.eatUntil(`*/`,e,!0),this.assertString(e,`*/`)}eatBlock(e){let t=e.index;this.assertString(e,`{`);let n=1;for(;n!=0;)this.lookAhead(`/*`,e)?this.eatComment(e):(e.sheetSrc[e.index]===`{`?n++:e.sheetSrc[e.index]===`}`&&n--,this.advance(e));let r=e.index;return{startIndex:t,endIndex:r,contents:e.sheetSrc.slice(t,r)}}advance(e){if(e.index++,e.index>e.sheetSrc.length)throw this.parseError(e,`Advanced beyond the end`)}parseError(e,t){return Error(`(${e.name?e.name:``}): ${t}`)}eatUntil(e,t,n=!1){let r=t.index;for(;!this.lookAhead(e,t);)this.advance(t);return n&&(t.sheetSrc=t.sheetSrc.slice(0,r)+` `.repeat(t.index-r)+t.sheetSrc.slice(t.index)),t.sheetSrc.slice(r,t.index)}parseSelector(e){let t=e.index;if(this.eatUntil(`{`,e),t===e.index)throw Error(`Empty selector`);return e.sheetSrc.slice(t,e.index)}eatWhitespace(e){B.WHITE_SPACE.lastIndex=e.index;let t=B.WHITE_SPACE.exec(e.sheetSrc);t&&(e.index+=t[0].length)}lookAhead(e,t){return t.sheetSrc.substr(t.index,e.length)==e}peek(e){return e.sheetSrc[e.index]}extractMatches(e,t,n=`,`){return t.exec(e)[1].trim().split(n).map((e=>e.trim()))}split(e){return e.split(` `).map((e=>e.trim())).filter((e=>e!=``))}};function Gt(e,t,n,r,i,a){let o=tt(t),s=nt(t,n);return M(dt(e,o,s,r,i),a,dt(`cover`,o,s,r,i),n)}function Kt(e,t,n){let r=Wt.getAnimationTimelineOptions(t,n);if(!r)return null;let i=r[`animation-timeline`];if(!i)return null;let a=Wt.getScrollTimelineOptions(i,n)||Wt.getViewTimelineOptions(i,n);return a?(a.subject&&function(e,t){let n=ut(t.subject),r=t.axis||t.axis;function i(e,i){let a=null;for(let[o,s]of e)if(o==100*i.offset){if(s==`from`)a=0;else if(s==`to`)a=100;else{let e=s.split(` `);a=e.length==1?parseFloat(e[0]):100*Gt(e[0],n,t.subject,r,t.inset,CSS.percent(parseFloat(e[1])))}break}return a}let a=Wt.keyframeNamesSelectors.get(e.animationName);if(a&&a.size){let t=[];e.effect.getKeyframes().forEach((e=>{let n=i(a,e);n!==null&&n>=0&&n<=100&&(e.offset=n/100,t.push(e))}));let n=t.sort(((e,t)=>e.offsett.offset)));e.effect.setKeyframes(n)}}(e,a),{timeline:a.source?new D(a):new pt(a),animOptions:r}):null}function qt(){if(CSS.supports(`animation-timeline: --works`))return!0;(function(){function e(e){if(e.innerHTML.trim().length===0||`aphrodite`in e.dataset)return;let t=Wt.transpileStyleSheet(e.innerHTML,!0);t=Wt.transpileStyleSheet(t,!1),e.innerHTML=t}function t(e){e.type!=`text/css`&&e.rel!=`stylesheet`||!e.href||new URL(e.href,document.baseURI).origin==location.origin&&fetch(e.getAttribute(`href`)).then((async t=>{let n=await t.text(),r=Wt.transpileStyleSheet(n,!0);if(r=Wt.transpileStyleSheet(n,!1),r!=n){let t=new Blob([r],{type:`text/css`}),n=URL.createObjectURL(t);e.setAttribute(`href`,n)}}))}new MutationObserver((n=>{for(let r of n)for(let n of r.addedNodes)n instanceof HTMLStyleElement&&e(n),n instanceof HTMLLinkElement&&t(n)})).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll(`style`).forEach((t=>e(t))),document.querySelectorAll(`link`).forEach((e=>t(e)))})();let e=CSS.supports;CSS.supports=t=>(t=t.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,`--supported-property:`),e(t)),window.addEventListener(`animationstart`,(e=>{e.target.getAnimations().filter((t=>t.animationName===e.animationName)).forEach((t=>{let n=Kt(t,t.animationName,e.target);if(n)if(!n.timeline||t instanceof zt)t.timeline=n.timeline;else{let e=new zt(t,n.timeline,n.animOptions);t.pause(),e.play()}}))}))}(function(){if(!qt()){if(!Reflect.defineProperty(window,`ScrollTimeline`,{value:D}))throw Error(`Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window`);if(!Reflect.defineProperty(window,`ViewTimeline`,{value:pt}))throw Error(`Error installing ViewTimeline polyfill: could not attach ViewTimeline to window`);if(!Reflect.defineProperty(Element.prototype,`animate`,{value:R}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element`);if(!Reflect.defineProperty(window,`Animation`,{value:zt}))throw Error(`Error installing Animation constructor.`);if(!Reflect.defineProperty(Element.prototype,`getAnimations`,{value:z}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element`);if(!Reflect.defineProperty(document,`getAnimations`,{value:Vt}))throw Error(`Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document`)}})()})();var Ns=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},Ps=N(`debugscroll`),Fs=class extends R{target=null;damping=0;invert=!1;htmlSelector=null;mode=`window`;changed=new k;get currentValue(){return this._current_value}_current_value=0;_target_value=0;_appliedValue=-1;_needsUpdate=!1;_firstUpdate=!1;awake(){this._firstUpdate=!0}onEnable(){window.addEventListener(`wheel`,this.updateCurrentScrollValue,{passive:!0}),this._appliedValue=-1,this._needsUpdate=!0}onDisable(){window.removeEventListener(`wheel`,this.updateCurrentScrollValue)}lateUpdate(){if(this.updateCurrentScrollValue(),this._target_value>=0&&(this.damping>0&&!this._firstUpdate?(this._current_value=O.lerp(this._current_value,this._target_value,this.context.time.deltaTime/this.damping),Math.abs(this._current_value-this._target_value)<.001&&(this._current_value=this._target_value)):this._current_value=this._target_value),this._needsUpdate||this._current_value!==this._appliedValue){this._appliedValue=this._current_value,this._needsUpdate=!1;let e=!1;if(this.changed.listenerCount>0){let t={type:`change`,value:this._current_value,component:this,preventDefault:()=>{t.defaultPrevented=!0},defaultPrevented:!1};this.changed.invoke(t),e=t.defaultPrevented}if(!e){let e=this.invert?1-this._current_value:this._current_value;Array.isArray(this.target)?this.target.forEach(t=>t&&this.applyScroll(t,e)):this.target&&this.applyScroll(this.target,e),Ps&&this.context.time.frame%30==0&&console.debug(`[ScrollFollow] ${this._current_value.toFixed(5)} — ${(this._target_value*100).toFixed(0)}%, targets [${Array.isArray(this.target)?this.target.length:1}]`)}this._firstUpdate=!1}}_lastSelectorValue=null;_lastSelectorElement=null;updateCurrentScrollValue=()=>{switch(this.mode){case`window`:if(this.htmlSelector?.length){if(this.htmlSelector!==this._lastSelectorValue&&(this._lastSelectorElement=document.querySelector(this.htmlSelector),this._lastSelectorValue=this.htmlSelector),this._lastSelectorElement){let e=this._lastSelectorElement.getBoundingClientRect();this._target_value=-e.top/(e.height-window.innerHeight);break}}else if(!(window.document.body.scrollHeight<=window.innerHeight)){let e=window.document.body.scrollHeight-window.innerHeight;this._target_value=window.scrollY/(e||1)}break}(isNaN(this._target_value)||!isFinite(this._target_value))&&(this._target_value=-1)};applyScroll(e,t){if(e)if(e instanceof ti)this.handleTimelineTarget(e,t),e.isPlaying&&e.pause(),e.evaluate();else if(e instanceof it)e.setFloat(`scroll`,t);else if(e instanceof Qn)e.time=t*e.duration;else if(e instanceof Kn){if(!e.duration)return;e.time=t*e.duration}else if(e instanceof ts)e.position01=t;else if(e instanceof Y)e.intensity=t;else if(e instanceof y){let n=e;n[`needle:scrollbounds`]===void 0&&(n[`needle:scrollbounds`]=Nt(e)||null);let r=n[`needle:scrollbounds`];r&&(e.position.y=-r.min.y-t*(r.max.y-r.min.y))}else `scroll`in e&&(typeof e.scroll==`number`?e.scroll=t:typeof e.scroll==`function`&&e.scroll(t))}handleTimelineTarget(e,t){let n=e.duration,r=Is.get(e);if(!r){r=[],Is.set(e,r);let t=0;for(let n of e.foreachMarker(`ScrollMarker`)){let e=t++;if(n.element===void 0||n.needsUpdate===!0||n.element&&!n.element?.parentNode){n.needsUpdate=!1;try{if(n.element=Bs(e),Ps&&console.debug(`ScrollMarker #${e} (${n.time.toFixed(2)}) found`,n.element),!n.element){(Ps||w())&&console.warn(`No HTML element found for ScrollMarker: ${n.name} (index ${e})`);continue}}catch(e){n.element=null,console.error(`ScrollMarker selector is not valid: `+n.name+` +`,e)}}n.element&&r.push(n)}r.length<=0&&document.querySelectorAll(`[data-timeline-marker]`).forEach(e=>{let t=e.getAttribute(`data-timeline-marker`),n=parseFloat(t||`NaN`);isNaN(n)?(w()||Ps)&&console.warn(`[ScrollFollow] data-timeline-marker attribute is not a valid number. Supported are numbers only (e.g.

n;l`C=8?Ll)=r2UK#c-3_*moTcmTeH?tnR+Wr&w?rGbyTz`$vyz%}GJE!uy z%uT0pn;aL)bcCZ4wLD&Z!6GIR2F0MEQUMJ?2dKq_iX&fX!;=MzkkI#IJTm^r9`DUD z)T*<4qQpJaUo`{dp2B*3hUdRKcoE}lNp$4ZYw(d49eH(ayv0;=Ojn9>*?XcP`Jd;A zJ_PMplwDGJV_`F~j7KSm@|?wI%#G(=Z(Es@m|MN5fZeUjJWntFgzWIA z5AqH@n8Ss|2pDV3J1CkeW$*#tM~tuv)K-7!4*vyC!}bIktJk1Gd;OYT`L&8RI~m~c zNHFeG0C_az84o5`gD9)Ey$A2hik`pNL3q}a?m$NOvyN7??7kSQ;tE0(SqLQ>@eRMR zqNYbZa+mcZHZX#2q~rV|jgt%MK5GQ$?apveok0lTvuI?wOBVr=#fom{vo6 z7!!8ZMP6|K-$@Gm+ui6Lf zd-AoM&FwY*z+rF04b91IEoagZ590iiveKhGf5rCqR~<{EbYdfDxIVFjm{*Rxsl^_) z-PgYJ^dBe_e39MyuhD~7y&tyn?|&U|QwSN|gV~=!!_Ie}7MSV7wT;t`7JQ17dj-U= zv`>jLiPoy#llOX;V`;7qbzss0=Cz7p7#!p z9F559n11+&+ys0Xc~eLuUrrj8Z-RBv~(u+kCvTW8ArXECt zSVo~$oZ`Rm1X7}MnJ1UQgc4WLD6`qSvA(O%ZT3o;RAxdy+!CdJxCLl3SebY`X4wPTt#_b?BjZ8-dQ_ZU)%p1js_E@`Wep+f2Z*ORkr^s+yC{qs56NC z_G-7~aIxASbnmK-EI8=ygPF$vfJi=3%AF>+ehy*ttLpem3vLgV%lLAM>4%M&Id(wrecTZI0a^N0!?C!Rs%b6S?eoL$K@3r9EL#TI{$8Y<)SN`Bdg zu2N!j^~dlwi*D*a;_iPo5zp8dHPh!oR{m`T5il+jD`HxSut*g-I$+Du+U|?q?$P1? z8blm$ZzP?~VEVn}7uPZWw+V!QR&bjtGJcipzKmq|rPtw90a5#p7%an<69vntw@CQM zaFTo4&HvYlUXDxomlVJrEb!F&J8`=e;Ynr49k%P! z#k$v&z5jA=_r=$n(EsV1&@ZM8`MRfmy$M~hxsScCa_;k>TTtt5I#*efUB*de>DN2cuXm=C?n5=3|L?sqt*kEtf7SyqO8l?hxsEPxvbbMT$$=C4 z#@fNgl!HiRv{Uzh{7Y4c%D?v%^Yxta^;Y-mIpvFZVhun_mZp?^Cyvse#gQZ>5}pO#cK)=omnbrmKNrJy!!J@eIY%^I~NNvLtTT^@T zSAEV`eNGMWRQK2O zw3Tus>d^AB47Sq0{XbV(nWt&uC@PQk_ICfd))HU!j9>MPU-gXt3_YXCLu~yZ@{q5d z-~YKs`3n{eVv`g9Gb|L4)c)@C^VhTL|JYgeFElMsy!3zB7yCa`oF1idl4sSSmMfyx zitx)b2BrO{MM^eKllyyHyGMtouU=bL3gX4cf7QQ(}1e(NS;r)!Gr>oBiu7O^1y*+ouff_44={Dq7z>^19a$t>I(1 zDi%8r>TB2c8&*H&@jYJ*dHvWHCO_4LdHb@VHyz1SEVlDuwn3a9+J^az4VE4X=| z+e&;M{lI5DvChPSXE>3{BH6ns{CO&)tn|4<^l8qmHRcyIKg6bYqU@dLtMIg6h-JYX zk64`3N&%Uv7mO_vl0Hpx${zaA$OMMVIk#E!x;KsPD%?xY4p>~Q$&V9oIbQZHWnILoJ=WoQvv@5 zCH7=0{N@b30Qi>H7NRSchiJSs3NJvp6EtsNzxzd>cM(haGYjGW*`a>^XGQbBNH6zK z70QdSAUnY=C+E(s=vL?UIvS2?C!rr2=ZV+;_Pg)CTWUY`3nFGr7HAjbDjKQcnRpv5%RwSfGzV{KYU*l1a+F7+bAvLDmCNZ8}Kos zc8v0ZrE@D|=-XgRk@XG8DiVJkaB)4+xrHAk&?2#Jav}Q=_D0=eLDYRl=a&C0K~>3h zaCrd>GUW8UHfj4sL7eMOAbp)sYR<{5Yt$^}49d!T9!Hr;%!Z=9b1Of}#HcfB=fbo< z>)fiZ5-c;P7MN-7*12VdZM6-|%&7%tT+VfF<%bKZAm`~t=k`3k*s$qv=_y@!in+Tq zVg_2z(~C`=utb+J3HfR*7ZWs{b#9}pGw23#WvkBdi72$s(lctNsy7m&;kJMxGs%dh zBg*oaWRU~1jsQHDJ8>i3oG*dTaKZGuBX`F5lzNdXDkw*1KN*nc(+xX ze+$x7>khIYy%LK?1s8j$2z~(i1TIX}6(+R59x)lFy)))Yt%p%6kmCMihDe6Jv;m2fqTW&oiEhx<#S!?m{k}wOh zlLWW;8d~R8oCmYcM&cdsw79rTc3OrMN_JXYk|aAVl;6lsONw1&r*)oQocM&FLV?mL z>-^EOUr8iVEU(Citb&NR=bxiLhR8v7T0(>)J1r%8k)4(!Bk@s4Fd0#jiZl0%eo<79 z)qM7+dbDO__kv)|f`9&K)iJ|e1nu_sPrh$M0U7s3mRMe_!;uaKR*fMY$Dtsw2Mi)M zs7KM~M~W#FlAV?*aNY-H3XI9fBrId`^AlLbxuh0-Mj(Sa3>y9m1p(`odIWwpyczQE zpI=DI0=jyH${+`LCB%=dAK!h}!mR{mZfw;ZG-CKychLy@t@lQ!lRUYOc^alG;^`7*GPq@E5|$BnAtJ1>}*`{q0^4N~0*#EQD^Ig?Rt5$o49#`AbP ze1`ulE!>ti^cos4t^=!Sz%W45@`Telo?J%*#_deG2}93Ykh7@&j!S|@6SuYU4at`_ z96g2tP{oYgj_J}hoihr!9b6xunRuvFOjYZiG>qrNF=MgAOD7J&$gS3QO&BBecytv6Nqvw=?59_`v1)l`dB;O|xHhOv5Z9mM5OhO5+ea znBbxP3bo5()e)egTZYL;#ZuNc?M2buNm_Cb51bAqEh!VVWCpoaeo)3*P-&&5W#-gz zhraDuRu5x$nx4`rS*NfhZP;7hSY+ zYbVx>d*dDh317l)Y@F(=s;MO4M#M3xpdwmMbt`6xTBJC!P@I{vLY+AJ7Bj0(gY=os zZ`~oy8@oy1wVOLpe%Z?2v)p^?`;V8%eiF1F?u!w)}SAA znhdhWb9&oPlPqUr7^g=`P7=aMOj44OJ{gj6&|X~n*1wI zfS2owb93WBHt!`td$Ik*Cl%S>iR`6CpJd|^Wgbk7F{Cj`$k2zik+tH?>~rvFQ6yhQ z7c{u#I!`K9o_WD@ucC|1c$iZbWUBeqsFR7@I1#yhGq=xkL3n)|JZkf=3z|@H-rkAf z@R6zXetI>E7~LEvsMZaTwEF4j#-si%qxqO64IEobBvx0WZVDDF^7O~Uy;J`8eP-D^YQsPWojlO#-f{m z@{cTs{VB-hXvaw&P>tlp4sCHetH+|qID>gS6Ca~Nl+%MKxu98ae8Lm2`CcE0=EmcA z5HRZbMVh=C4by0_9u0>e$b0^6kh!9|R1KGl0DK^!OvqDpWG9<}Sa`dXf|_-vf( zjTRaX!jOLqqCAqUKF;YCh{%%Jr|0Jx&4WZ#lP|3e0#;nmyn$TFvndF`adw48aMV>r zFr$jM>mo)*K#OQJ8s6~B+9yy>vaLK=Bw`!XZFlo$NjGmc{p|$j*1-f$EwG~Pq~*XB z>xkxW-u~+4P~ao{cLV=@vUX|SBYECNE8yyGJ*Y+VcFJHX5W!2mT&YTp} z?>Qsg30*v-r9MJqZy(xNv;C0fetmFrOAl%8mj^eueDCIv3puNt29uj1GY}J*g)uZ2 zB?Z~ZZHpzm{Z;PSU$}>a1xFtHvwgOcmrep^4&@iExcJLQL*n4bi@(tL?BwN>AT|#z zIjUuHC2jgBlBGl18m1Rs$n`4qVpxkq@jH$6VG6#6jVNivx_E;Nkc~)IXncr=!^VIv z=t8m#_A}(?3mP1sbd7Dkn?EzR`DRn?w-YC*3WSsk5enspV;4_JGe7YQdGMeg8kdPT z>A>ULBBx6iegW^_HY5jV#V$UrLq}yk9z7~Dj&;{d$A+288^Wd_2%q42ex~YG*^~In5E6MIwR_Hh=o^}YswK5P~r|W#KAvKactyu45RnG*6)-R}Z!N(QxQdzfc``ofrz1 zHLbm9#Tj_Rdeonrd*soE^teyY8yis`L7rcLlHg^H#+Qp5IQ&rrNX;pem;ISM`=9os z{v{o3B?J0VDrOnY#=~4Fhnd#-;>av^p7R#c9RwY9!AdG(r&&Krz#)Wvh}eLC#pm85k3M6*K1N4D(p>6xkuNiYF9Vx?7W-$6 zM(-LX5T%j}a-klsKzky!zN4E%jmA?iS!nx3eD1-;OT>Y9<8v<#7!I=8Oil>&k2ed0 zDk9ZRm!}%TEBJs`g4pMHO@sWnebS}RQalAOkvK^Gt})gHIo4Q@)fCRFh^I7)MZa4f z0}EoDp@jvQBZ8f>hLMmYSgaTWPbtl50ln@f&!R3L8VizUw6e0&?$T%ZF*{j}0@g_a z)@&Epxz$W#S2Ir(0Qh)j0THc`X~rkx7nnAeoRk-!GRf}E+ z3xXa_`Oavk@p8NLWA2u-(#pIK0s$l!hj{-qApEPB3_63NJRY%YacZw)ka0j4mPi!P zW}Bn|JC09C7O>;!1c)}(M4Nqx^S%(XY+`8{ee!SnQAQi*oj9N*4VLEfg@musE@q56 zali!CFD#KX$eYmQ0y~aDYr#v3AT9z1a;5AZ9qAKXTj2ZvXI-|h=MlBf~3ig z+tB)=+jbPt1t^ghfWCgj^g{Ap{KY!Kq7Ftgs zdDLu^>%d!RFPvkUcI#>L9166a&X34Va6W&za6W%kVh|}Zh!_~e#e8%;Y|@kF>3nqD zhacDT(QyVpZsw!ovB5p!q9DIKY|Vf9=`m3{4%!RDNrUDiogX*(Nau&<5MO+jA=(>5 znei{6NAph;#ZCLbYVm4*Uj2#QoCBLWVp0EHrvY61T?39|jW}zJ6CNXZ5aO3MZ+IS~YvPPU3?F<@WllonKB_<@{Jiek?@H~-9siXLc^0_^_8A-jxH5YK7 zCsI*`xG5FOXuhRT3pXar-d?RtzsSH2y5DeZMXVzTNf0CAu=gn7q{Y8{5H_?;37lDP zli(Ic*P;BZi=*qnVTTWttZ{uB9}v&rzeP^bm7Tb72jh41M?pX<2LqC%A%vij9|1kJGhT;#95!w+%)ZgL&%H7(^F^T+7PPaN)k?+%f~i$!z>pny*speCmvW&4j(KlFC_%x2C{UswXI8CaUPj zPIsr*;Y1;83}>jpX+qW*7llpe*3QG%gEB8ut3{*~*=2m5OYP_**bmGT2^Lj5DOj5^ zeJD=EQ6ur;1lSB{VHq-kRlEVX{ZPR34&a={SEaje&H-4E$a7*GERrZ-3vFzq8w1F> zx#T!Lc}BZ_vl;XB=ur?Xv>_upS;@Qp!a@X;-)u$%sx02!K?&H4SAuA6&Wi#xSiOoq zdJ$>E6-u<-V}2YwTI4bzA4ob6wqtZ5LA^j?G_}}G1?E%5sg7xrw*(w6KW5GJw7^U(*Lh_R;o&9vJG4%Y2AgD3tgSbUU? zHiuE}#bl90q`#2D|0MHG9mua0=(*Rq@6CNrW<~ec3CMpBS6D2G(C{%^%|YYLN4cWPFkb4GL`5A_tz*` zgdGK3n840K7|Ej!T#iGeZKu&dZXRi}&(aGn99nGX6f*nzB<^pYYRuK)eNrAX`%FJuMW0%(m{M4Q&w3)`YH&U zu)*MElnjPeVZ(;B&&^4+LyGLwReDX!HRbuQ4^Q>bk9+5)%a%BX^;_8pxA2@SSwJsn zUIo#XdHYJ{MT6{MNeW*564@dQDVXVLrMlp z;fC=A3S2=stJ2#F1A(h3i7qHJJ-jIE2)gdGG|To_d=V!>7$s?PbCr%W;Yjcy&M(&) z9nd6?qoKCA7)AM|@-~1;AG1E)w-euwX_mjF;ByK0{^*+G-{Rl3>?Y~EN9L}@3D!MsqZS*$RUTq(p?yMd44z|{|Pj}aLdO>)4Dl#~aOjr>9 z_S^Aqzn%Q{TdVWiZ;wO5Sa3iudLKt#cpNqp)(lTV5?+LUH-t~D7PBBc{vAGBjADoh zFZ}JdR!G9o$MTT|^1J7)c8-6yS~+PR|MuJC&WS(oht1IYWqog>>92+w7^H+GW_~mD zRy)7_*78aae9SoZT224A-%k8he|4r}--JF%S#TW6muy3#er6#F&(efum^KPea1CWF zn6if?cXzujq&Yly-<-vGt%-+>@mbbq@fkh!a&c>qdz#^` z2&FwskzoRDCF^K4uy+PA&$Cl`=v0jyCnsH-KU-}8jTtSPtw;!l-{AD-4TTCrg-5f= z{N$LOw5)~-J}UFTRBkVyp}j<%?F^xm=!v+_$R9U#>V zaLKc~JL*!Ayjo6D^aDMQlfiB}Q1(qb50hknjK+B%a0rab`~XZ9)F^{ zVmOu`qGS(`f6E?UknlA0RT5*sdn6PGi)u@cSc`t7eb~^&6$NaT_RZox57c?{oKr}r zu^uI$OG21j!w5h-{6>*4ms^SbPJX;}LQ)*N_+FOZxOI2(<0mQ@=#41yRHw*7-<}kx zC6<8a=JanZ2<)AEVT)gzS}Po-6iM(#MPN2~81PuL?RQgVh&V#B@pSR(nv0-FOj>%3 z0p$j3Ept=?wRd-Ra_xO?3G4kRX=t>YFdE>yR+K^Tg^E%9Ta z&HwVtQ~4XLVx@?Mmrb;ly`w{#r-@{iIt7;5^E9E)Z{!{zbZCy5Sb=c*m+^4GsDfh% zuS|=Kaj@8ppDD%@OZ9QY^uA_Juoefcv zGr5tSp=$6by?nxfD+@IoGIY+4xIMK=OeaQt?!fBqg5vBlkQC}T(N}DC^f+%e!K96q zp!bFtjLYq#+lJjwT>j4{IsSyoy|c zHbK>s^~{jTeKBn`J(a@$OfP0ZE9|RN8H-)0s`l(?bb#Flc~)!p#@zIVC*aGKol7S* zTjF-{G`Uvo8A+T^Kp>O1Mq2tuQBg}|xb95uMxS`X#?_E#7N!3nF0k};Pp@FH5v z!-hOA?Wq{InlV%X=n8^_fC)9X&sC=dlv`oyz(`%zZ$ugI^B|@Ca{3ay>>^b_+7K9B zHkwyIvOn7q4M}!MrPTH<$@BA(G_Ae+%F1T&gK zBqP@&01(bjD*RpV*H6v;z(56&r3{NJx&*ShF!(b3xzH8mzCAhOPrL(xT75zOg4Qyc zF*nY}xn=XLY*MVw(UYQ(&RVhSwoy9PckkOz9>7c;s%-{JfpIqDX2|=RH$FsJ@_%#A zYoWWUr_c{!6!w}2W{Z=H)^3{6vRnsxC~G%YR}OW1t)b8G%B@sy`F^LOKRUb19Y3&y zK+6$cbmA$aD@>vcdVm|c5T6k~!m(^6=fg1sZ_Pr?f0VZ_XnI9+cJtu%RRz6qM*Gn? zqt%OEHd(#sRW3qSe!$t^(LtvRrFGacfN#Y7Q7CqE9G#ex5AKb1<@};zI@b)rnpDbv zK}yQ9a}aUI?^H{NMmJJbQS$oSkU3x|R*Khwo=mHy7PqtuziY zMs|&hf1`K7EnmQ$MPgvA(ic66x`Lp$Ah74M5L7>69=tC$pu;?}fMnw{3kX%L4?9)Jw-65BdsQQl*+=Q&`*FnRKta(} zr&Kg*L=_n3UCv9xp*|qMGyB>frWwuheR%xlD8)bf()XAH?lW`1)Ep@pvT4W=S7}4m z8l<^5WMDllKKjgmtfDI9b8{XGK6s2QlD6*?R@Ji#N9n2k@0Jmhln}$ph;gG;mZzgK z?j+D+RYpPIk8QIPLBlPPVYCeqO8}0UgL5s-kqz6KQXE-dEF_S~%-|>kCIkEO8Cm{r z`RNZ!-#>l&!|yp^LA$-U{Pf9pKm5@C9Ytm_qcMAxE63b+H>DzCgeE-7_i$A!nurdhtd$|!C z#FM2Tp8W9bcS}EfJMS$m{_tJg z@!<`T%B}l5WxmO+u~$RmBjk@>C>&qF;%K#6>JE;sNf@_kr~T&hLigw#Q2R)J}(4uyP+5#+NyY)1pC=Bnia3HTFJ{idCy6H z!joT9Gad1a=^IY6D1MWRbSlXuT!jwa-92jaG)_);clZ$}>gO1Ki?WNns3a_&7=}F6 zoSfBb=0UFS%+e{-CP!f?;tZMKl4E+Jc;;E2 zg4m{;yf&p*-4u^@9_8s7h!-?iv9`uVUxuy6?c;_8x37B#N4+3LPireMlmEk8VbBAYKEOYeR1*T{2n*-90gOjDM;O;ucnqiJ zGZmP!--2EUfX54 z;kPoa7L4-IA`v%~T!Ab#K|FYO7!N`sUc&jvn$5z$$CDZ*1eZicjO2h13h4V)>+ubZ z+1$iiK=~b~4)B9g1s8YI1cU$S?zxW?h_?1yNN4bH$N`ep3^h0{LKTj*8LDt{<*kUv z@=9-v@b^Dt_QcVtZzulN@SFz+DI8#S!6MFHAQ?FIIc*g4AW;d!Do=?^w|a-BLNY@c zpUV~v3P;CLiuUpRs1s+SDDPkPuECt*79(heqD)x$5M&;Rgp&>jrLAV+enSpicg4?J zMyrui9BtUR+-tXTLx#XpSnw- zK^)PZ-^g3(I3JC%%&Pg}wA`^+Ga~#FH5{exBF3Gr0w7T3VjdVd zN@t1jXokLGltC>o*HG{=7e||o1dREV$cj6CltjauPbz9eD^9>BI-~mi6*y|Nr(;c@ zaMJUJVC>xg5Kc%5Sp8auw4`-5j)#CH2&TdJ8)cGptFhfliV3a4Im!X8gmu{fn4g%m z=(!deYcl$tltEgdtbw$6p9-^;RXr2CykUiA(vOS?0~Y#K!|I}PPZ_-6lQV8qdRT#F|<<*_U=5K?jxLtTU7V--{IoO zR5(eqAO_Sh)>a^|Q;__vEEVFR3hJLCKY12KREPx;iua?`^5|NnB*lil4B8`8jFXBx zuLjeQvjNu2u>AELc3BX&vLqgjDCns46`hK}AlHfyqC8QB1Lk*P2te`yWMb285(9DN z^ka@Fdp=D2@2uQtFxV8;UdEI~tbZw_u!@?X0irGbVxPxI0;`KhnRfd}a_nK(aC!hY zMT0yE<5C5W?oAB=K-7^Nev!#CWv*ILog~3+QKjkOC;!+u`9~mEM z1>I*s0t$Hx1A^BX?%UC?xdQxyF zYSWSQ?oRezAEdkBra*(+oCo;MI=2PEcOdZ>V!d-)6r69uO2;G&0%KB79N4WBn6wVX zKN!*cR!DW7C#`RJ8GceEVv(hcCkW~ai-NF6LI)}vjYYimSea!?I*NTV0An)Rh&fei zC2ORYnKAWJd1+`S1pwBPeI_|41tYGnVX~M95k&A4XoGbM-yC(oSR&bNznh!OAy#$3 zYBRC3c=aIh39~a0QlNVRVHOUVb1L7gKb4!8?iD9=9S+`dZIi){2lS)qwkDRC0S-)X z9nsW&I%ZH3X7L1~_`mGuH`;JP?`p>lk*s>61P87n@{7g^P|W&0FtVN|pia3jGWxvQ zQ5xjc!nieHbDK=;*i%f2xC$h?ujgKP7y3Rb2D!5qLINn;ND*G{qYspw$b28QiOh7m zGWjfj?$k`;TcR9|)f1OV^U8Ljiw^@@Sqhe-16oS68Zko4gUmQti2XSRM{;oG{BVy+ zKB8BniWydcI@D7KvLF!hWdzUTf;J=RgIs9d`Blm}{8`6!cyD8+tp#GSw>g5UEpjPm zHLwvuwKhNLmGDF0jT2TYX#rod?2St9ZCcQ=jnF~rkq&VoR0-$ia`QKIrHm4Jm%%AR zjyZuK7JM)fv${x7a8G=a^89_H4_;(UcQn8-B~ps>!f$TVq7gK{xs3}M(2XfUF(&qK zf|N`esB&wwyNz^p+zrg2iG>4XP%Ep=yZ@Q^H^)3_w6>G;B5RZAQYDc8P& z)naro?o$t3b^Tx^Z@L^IaTb_Q7Ja`{NolfWzkcC5i$|sSy-}HrfZurfuLI$LIjc;zF)*oq{cp+)PZsCU| z{*np;K|!a-f-@#+gg&akH}1i94uOwX?kqw0F`T%&2qa{BuT{XrCd(&JOtR%auWP$U z$=uj%WEr38Xq0E#=Q#J9ZDMG4iqhOT{Lq=Wn(fc8q5N7RFAYZ7FuJ|*r*1dXmqyGt zXJDf%ZRyI3Ny>84Lip1#yAK~fq}A(G z2lJ9=4U7V_J8`XY(|RnEOk(sJmV;YMB8C&4F4@V6Zm^RO-ByPcGG12IbXC)+ige3L zOCb%IL5T1)gZhjyMx3*lVxJ66M$a!#``U6N56;ly0V6vcFP^M=L(Z^MpU|dqMqOz8 z9g&ftw}XmSZt?S&^Yfv@&x?Y*yU)aL4&%`*vj60H|2(s7Ol(e!Dc5KCDe`iy)Kx2P zmF29o88(7O*o=u*w`LW`42;7@hNiL}Cp^;=o`?yDBTRlgJX!Tbu&=P)T5K#d!X~uV z3Y!q9bJ%S99g#0ntLB~YdGD9!eeE7Q^OjVgly~MTsSOliQk^TGK0{TkB!&^A{TQ#V z@Cw45qRGPDC07S>XcZSP*lrbBIkd#z6XAU*g}G9lQ-Q0dvF2-S`j0=2AjZVCrrVAha1oDL?f+1+){`69R??1 zJpJ0ZJ)mg#flobwsLkKLYV_fL0Nne&xuu2W_blHpd}JE{Z`&(<}% zJFtSe2{|5qc0u2}VgzMkcNmrFqY;(q@x@&ZX*Xut+1&`zKACCJ-Fry;5c*^v;qIah zy3kUEek)5^?)mDRL^fG)D=xeYD-`NQv6r{_TLHe$E#(SwL6t$cfe@{ko}0r^EcVlW za2|piGjWTC1~Yiom1Xfo5(;I9w72zuC|f+wOK@@ega^bCQ<l_mh zk(`uTiQ)&A51#LzoEo@dxwxH6Kip(4YJ2V&Q@+2ZTb2u5qYW*vwCsUIPx$tLs3mS))UcaFN<+~OSEJbCKx7WY*A)=Og$iK?{1|qr1AGINt57@QURrWK!hCC{uoO2>4pw512S04J zT4@Yh12<(>WfG%IPI##VN_k0e0K^A{SVbX-%?E3YytKx_O~$QNYBtV;1-~kvZl;`A zab|a|3p{oIKKaC|YAOj>*!Drh0A;-bGJtam5l<;|orQwZ$%$^-ypgUlz7cmAY0{^> zDHXBKNE5fvQdgI^hS5zr&gJH~Ef%9`9t&0|#)@=#0AG#vTMxc`EJle0QDC{gA9&&h za#KtuKXChaGl45Q!b3@a%ot5_vy@@_Q;`ccYr`>U_whU&!72X$0{;Pi6R{yn|GCy5 z8Px4U5k;rKsXD;wspjc9Vh{#zpb~D;w+wawAT^ko#Vr#*6k~zUuIs5^8CZ6NG?Q9t)@r5Feg_*?E7Ge z3q#(!xQXJhKr10z?_-9Qs%Y-i>?tl)R!lp7c4k_)FzJ>PsmR!I9?=e zvP70o$a@wXFSNd_P6BU`6beREYp_Mul8e4 z74T)*$4e*Vt#Rfu?LS{I|E=6Dh2TQP(tJ}>RViI9Q>vIOeX>SV%V=+bN88)ZoF0 z1-ISXoZZ~I_P|^dR`kJ?U1Syo*{+fg^wACWSvc(}Ep>ozsXaOtkIe{)h~r&M?}=ia z9`(T{l3r5=hV3iT=IN2P(c-2O$I@>r@lUiR4)@E-6`#%#7YRP%q-82Z3s2-P0=TA< zd636gz_?3GVqv?ndf?@LhcD7~2t#c!Yo2<Y#S=lrt3dnoq=P5ngfqh2 zFZ6p(h7gtTO?_LiUeGGEOa={+m-)sTc&Kv_Y#c)}v!c7@g?Y*yMnZ7*0+SHM_T}R3 z8>0rD#nw6h)bliq&E2oq^1^5Y78xNK#vI0&FYRqlc>MX~wM-BT<{Q?+Up^VAvbcu6 zf&1S)^U1kNAIl8*;ggZd;A`+3)`A~Cc`4J;o6sj$8nQ^a)G$TLg$5>4UKvo9L!X>l zP$1>nf&wWw78FQ1iw!VOLZ5uJz(C5O1qM>qEijPsL8V+pIrQ$xOn`=ZX2O%u=aY>7 zq#+r{KEdxzj`i2#a|;kUkeRO#zvuGvIbwArKVJh{$V*w1e_pA&{QFW>=HC}a?d6cX zGHNe}P2S^Y^!4$bOMLb5KucK~PPgYmf>k|X2u zNl1G9Q>ZsX^2s}7J|+qF6%w)96_b=27h#PN&wl6gDv3e;i&5{Zb=QyDBmu_FWjA$% zCZ(6D9nZlGy&KdML-78hdSECsn+4tX>^^_fuW7JP##?l%V-W2(Fe)io9EUF-$hnZT6RgF>Fgl~dlJS?E5*gsi-4?y_V1107a6oV(E?rkhq8jLg?vmD1D zw7q%Srm)#Ujy5G^zOZ$W=k&Pc+?dL1Z_%E*6OT#6SH*xbw8zwQEo3M35WyJ+(}(ii zd1@%xt>Ol%geAFCKpQ4z){Rr_2sSK+7{FR;}!hXAOEt7A} zYYns;Ugdu}PD8HV5HXGhj%z|e%XNr`byLpOhFx*{x29g12(u6Ir%yvFFVMuheYt5e z37;iPxRthLc5PbLS6VKr@DAD{RNcNM@Is5(Mqwby^#nCWm6&!ujsaH%QZQ7w!&Sjx zP%s$pmQzaS(PH6iqoB;T z`PO1#RR&2RSbU@5x3okQMDcrVlofOxmKOQwsQ< z@U9gl#PIu^ai9&@VH}=bBX@Uw_1njt&TVuo?A=SS6-^FZ4^*|ujM2!mD1^Yg72n4= zP8>Sdqv5bFo(IW;+rr@}=Y}dy3#OvG{p=L z9mHf5f3qIO@s|Qd#^n~L3+1p@v3^pW2Q-h(fab!$n8DRq8pPm!CY;Suy<#!2hrEQh zoPwF8+xR%a9q7b}|3%XKOccL2;!cQVYRBti=plbiUDA83{PUExxbbjWw|edu+Bo~VY(!x0 z{caLO1ZGngJSq5@awLVSNGPND;}rP8${VpEgr_4Zcw<#bv{;oy<-H&cOwVCZEXJ-m z6~y8;*jK9Amp~(asEhLdFVv4%$+Z6`FS6(4k30F}cll#wMgDsBOk2 z$Ul6_c62s^w(!uwp{OyB);!JmgQgRs=85!TF$e4fqS4Ita_@qs;9l{12;sahInb*)sm z3|XUCDUWqE?L_ql!YQ;^>Fx#s4(u}-zwXt9x0(i75Out?OvBk!8YZ($xTdC68?#xE zcG5>dkj>3`&;=d5sc6>K^RprX(uY{$VT?-vp_!3Wd6nZZ+;NwT}F*g_b z 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 U)`G^8G&MA>0c9>;K9ThW07>++Q2+n{ literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js b/Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js new file mode 100644 index 0000000..c985f4f --- /dev/null +++ b/Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js @@ -0,0 +1,5 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./three@0.169.19.js","./rolldown-runtime.CYVBeYYp.js"])))=>i.map(i=>d[i]); +import{d as e}from"./materialx.CnHmG--Y.js";import{Ar as t,F as n,S as r,St as i,Xt as a,Yt as o,Zt as s,_ as c,_r as l,gr as u,in as d,k as f,lr as p,x as m,xt as h}from"./three@0.169.19.js";import{S as g,b as _,x as v,y as ee}from"./three-examples@0.169.19.js";var te=`3.4.0-beta.3`;globalThis.GLTF_PROGRESSIVE_VERSION=te,console.debug(`[gltf-progressive] version ${te}`);var y=`https://www.gstatic.com/draco/versioned/decoders/1.5.7/`,b=`https://cdn.needle.tools/static/three/0.179.1/basis2/`,ne=y,re=b,ie=new URL(y+`draco_decoder.js`);ie.searchParams.append(`range`,`true`),fetch(ie,{method:`GET`,headers:{Range:`bytes=0-1`}}).catch(e=>{console.debug(`Failed to fetch remote Draco decoder from ${y} (offline: ${typeof navigator<`u`?navigator.onLine:`unknown`})`),y===ne&&oe(`./include/draco/`),b===re&&se(`./include/ktx2/`)}).finally(()=>{ce()});var ae=()=>({dracoDecoderPath:y,ktx2TranscoderPath:b});function oe(e){y=e,w&&w[C]!=y?(console.debug(`Updating Draco decoder path to `+e),w[C]=y,w.setDecoderPath(y),w.preload()):console.debug(`Setting Draco decoder path to `+e)}function se(e){b=e,E&&E.transcoderPath!=b?(console.debug(`Updating KTX2 transcoder path to `+e),E.setTranscoderPath(b),E.init()):console.debug(`Setting KTX2 transcoder path to `+e)}function x(e){return ce(),e?E.detectSupport(e):e!==null&&console.warn(`No renderer provided to detect ktx2 support - loading KTX2 textures might fail`),{dracoLoader:w,ktx2Loader:E,meshoptDecoder:T}}function S(e){e.dracoLoader||e.setDRACOLoader(w),e.ktx2Loader||e.setKTX2Loader(E),e.meshoptDecoder||e.setMeshoptDecoder(T)}var C=Symbol(`dracoDecoderPath`),w,T,E;function ce(){w||(w=new _,w[C]=y,w.setDecoderPath(y),w.setDecoderConfig({type:`js`}),w.preload()),E||(E=new ee,E.setTranscoderPath(b),E.init()),T||=v}var D=new WeakMap;function O(e,t){let n=D.get(e);n=n?Object.assign(n,t):t,D.set(e,n)}var le=g.prototype.load;function ue(...e){let t=D.get(this),n=e[0],r=new URL(n,window.location.href);if(r.hostname.endsWith(`needle.tools`)){let e=t?.progressive===void 0?!0:t.progressive,i=t?.usecase?t.usecase:`default`;e?this.requestHeader.Accept=`*/*;progressive=allowed;usecase=${i}`:this.requestHeader.Accept=`*/*;usecase=${i}`,n=r.toString()}return e[0]=n,le?.call(this,...e)}g.prototype.load=ue,k(`debugprogressive`);function k(e){if(typeof window>`u`)return!1;let t=new URL(window.location.href).searchParams.get(e);return t==null||t===`0`||t===`false`?!1:t===``?!0:t}function de(e,t){if(t===void 0||e===void 0||t.startsWith(`./`)||t.startsWith(`http`)||t.startsWith(`data:`)||t.startsWith(`blob:`))return t;let n=e.lastIndexOf(`/`);if(n>=0){let r=e.substring(0,n+1);for(;r.endsWith(`/`)&&t.startsWith(`/`);)t=t.substring(1);return r+t}return t}function A(){return j===void 0?(j=/iPhone|iPad|iPod|Android|IEMobile/i.test(navigator.userAgent),k(`debugprogressive`)&&console.log(`[glTF Progressive]: isMobileDevice`,j),j):j}var j;function fe(){if(typeof window>`u`)return!1;let e=new URL(window.location.href),t=e.hostname===`localhost`||/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e.hostname);return e.hostname===`127.0.0.1`||t}var pe=class{maxConcurrent;_running=new Map;_queue=[];debug=!1;constructor(e,t={}){this.maxConcurrent=e,this.debug=t.debug??!1,window.requestAnimationFrame(this.tick)}tick=()=>{this.internalUpdate(),setTimeout(this.tick,10)};slot(e){return this.debug&&console.debug(`[PromiseQueue]: Requesting slot for key ${e}, running: ${this._running.size}, waiting: ${this._queue.length}`),new Promise(t=>{this._queue.push({key:e,resolve:t})})}add(e,t){this._running.has(e)||(this._running.set(e,t),t.finally(()=>{this._running.delete(e),this.debug&&console.debug(`[PromiseQueue]: Promise finished now running: ${this._running.size}, waiting: ${this._queue.length}. (finished ${e})`)}),this.debug&&console.debug(`[PromiseQueue]: Added new promise, now running: ${this._running.size}, waiting: ${this._queue.length}. (added ${e})`))}internalUpdate(){let e=this.maxConcurrent-this._running.size;for(let t=0;t0;t++){this.debug&&console.debug(`[PromiseQueue]: Running ${this._running.size} promises, waiting for ${this._queue.length} more.`);let{key:e,resolve:t}=this._queue.shift();t({use:t=>this.add(e,t)})}}};function me(e){let t=e.image?.width??0,n=e.image?.height??0,r=e.image?.depth??1,i=Math.floor(Math.log2(Math.max(t,n,r)))+1,a=he(e);return t*n*r*a*(1-.25**i)/.75}function he(e){let t=4,n=e.format;n===1024||n===1025?t=1:n===1026||n===1027?t=2:n===1022||n===1029?t=3:(n===1023||n===1033)&&(t=4);let r=1,i=e.type;return i===1009||i===1010?r=1:i===1011||i===1012?r=2:i===1013||i===1014||i===1015?r=4:i===1016&&(r=2),t*r}var ge=typeof window>`u`&&typeof document>`u`,M=Symbol(`needle:raycast-mesh`);function N(e){return e?.[M]instanceof r?e[M]:null}function _e(e,t){if((e.type===`Mesh`||e.type===`SkinnedMesh`)&&!N(e)){let n=ye(t);n.userData={isRaycastMesh:!0},e[M]=n}}function ve(e=!0){if(e){if(P)return;let e=P=s.prototype.raycast;s.prototype.raycast=function(t,n){let r=this,i=N(r),a;i&&r.isMesh&&(a=r.geometry,r.geometry=i),e.call(this,t,n),a&&(r.geometry=a)}}else{if(!P)return;s.prototype.raycast=P,P=null}}var P=null;function ye(e){let t=new r;for(let n in e.attributes)t.setAttribute(n,e.getAttribute(n));return t.setIndex(e.getIndex()),t}var F=[],I=k(`debugprogressive`),L=void 0,R=-1;if(I){function e(){R+=1,R>=6&&(R=-1),console.log(`Toggle LOD level [${R}]`)}window.addEventListener(`keyup`,t=>{t.key===`p`&&e(),t.key===`w`&&(L=!L,console.log(`Toggle wireframe [${L}]`));let n=parseInt(t.key);!isNaN(n)&&n>=0&&(R=n,console.log(`Set LOD level to [${R}]`))})}function be(e){if(I&&L!==void 0)if(Array.isArray(e))for(let t of e)be(t);else e&&`wireframe`in e&&(e.wireframe=L===!0)}var z=[],xe=0,Se=A()?2:10;function Ce(e){if(z.length{let{WebGLRenderer:t}=await e(async()=>{let{WebGLRenderer:e}=await import(`./three@0.169.19.js`).then(e=>e.Rr);return{WebGLRenderer:e}},__vite__mapDeps([0,1]),import.meta.url);return new t})(),await this._webglRenderer);let a=x(i).ktx2Loader.workerConfig;t instanceof URL?t=t.toString():t.startsWith(`file:`)?t=URL.createObjectURL(new Blob([t])):!t.startsWith(`blob:`)&&!t.startsWith(`http:`)&&!t.startsWith(`https:`)&&(t=new URL(t,window.location.href).toString());let o={type:`load`,url:t,dracoDecoderPath:r.dracoDecoderPath,ktx2TranscoderPath:r.ktx2TranscoderPath,ktx2LoaderConfig:a};return this._debug&&console.debug(`[Worker] Sending load request`,o),this.worker.postMessage(o),new Promise(e=>{this._running.push({url:t.toString(),resolve:e})})}_debug=!1;constructor(e,t){this.worker=e,this._debug=t.debug??!1,e.onmessage=e=>{let t=e.data;switch(this._debug&&console.log(`[Worker] EVENT`,t),t.type){case`loaded-gltf`:for(let e of this._running)if(e.url===t.result.url){Te(t.result),e.resolve(t.result);let n=e.url;n.startsWith(`blob:`)&&URL.revokeObjectURL(n)}}},e.onerror=e=>{console.error(`[Worker] Error in gltf-progressive worker:`,e)},e.postMessage({type:`init`})}};function Te(e){for(let n of e.geometries){let e=n.geometry,i=new r;if(i.name=e.name||``,e.index){let t=e.index;i.setIndex(B(t))}for(let t in e.attributes){let n=e.attributes[t],r=B(n);i.setAttribute(t,r)}if(e.morphAttributes)for(let t in e.morphAttributes){let n=e.morphAttributes[t].map(e=>B(e));i.morphAttributes[t]=n}if(i.morphTargetsRelative=e.morphTargetsRelative??!1,i.boundingBox=new c,i.boundingBox.min=new t(e.boundingBox?.min.x,e.boundingBox?.min.y,e.boundingBox?.min.z),i.boundingBox.max=new t(e.boundingBox?.max.x,e.boundingBox?.max.y,e.boundingBox?.max.z),i.boundingSphere=new p(new t(e.boundingSphere?.center.x,e.boundingSphere?.center.y,e.boundingSphere?.center.z),e.boundingSphere?.radius),e.groups)for(let t of e.groups)i.addGroup(t.start,t.count,t.materialIndex);e.userData&&(i.userData=e.userData),n.geometry=i}for(let t of e.textures){let e=t.texture,r=null;if(e.isCompressedTexture){let t=e.mipmaps;r=new n(t,e.image?.width||e.source?.data?.width||-1,e.image?.height||e.source?.data?.height||-1,e.format,e.type,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.anisotropy,e.colorSpace)}else r=new u(e.image,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),r.mipmaps=e.mipmaps,r.channel=e.channel,r.source.data=e.source.data,r.flipY=e.flipY,r.premultiplyAlpha=e.premultiplyAlpha,r.unpackAlignment=e.unpackAlignment,r.matrix=new o(...e.matrix.elements);if(!r){console.error(`[Worker] Failed to create new texture from received data. Texture is not a CompressedTexture or Texture.`);continue}t.texture=r}return e}function B(e){let t=e;if(`isInterleavedBufferAttribute`in e&&e.isInterleavedBufferAttribute){let n=e.data,r=n.array;t=new i(new h(r,n.stride),e.itemSize,r.byteOffset,e.normalized),t.offset=e.offset}else `isBufferAttribute`in e&&e.isBufferAttribute&&(t=new m(e.array,e.itemSize,e.normalized),t.usage=e.usage,t.gpuType=e.gpuType,t.updateRanges=e.updateRanges);return t}var Ee=k(`gltf-progressive-worker`);k(`gltf-progressive-reduce-mipmaps`);var V=k(`gltf-progressive-gc`),H=Symbol(`needle-progressive-texture`),U=`NEEDLE_progressive`,W=class e{get name(){return U}static getMeshLODExtension(e){let t=this.getAssignedLODInformation(e);return t?.key?this.lodInfos.get(t.key):null}static getPrimitiveIndex(e){return this.getAssignedLODInformation(e)?.index??-1}static getMaterialMinMaxLODsCount(e,t){let n=this,r=`LODS:minmax`,i=e[r];if(i!=null)return i;if(t||={min_count:1/0,max_count:0,lods:[]},Array.isArray(e)){for(let n of e)this.getMaterialMinMaxLODsCount(n,t);return e[r]=t,t}if(I===`verbose`&&console.log(`getMaterialMinMaxLODsCount`,e),e.type===`ShaderMaterial`||e.type===`RawShaderMaterial`){let n=e;for(let e of Object.keys(n.uniforms)){let r=n.uniforms[e].value;r?.isTexture===!0&&a(r,t)}}else if(e.isMaterial)for(let n of Object.keys(e)){let r=e[n];r?.isTexture===!0&&a(r,t)}else I&&console.warn(`[getMaterialMinMaxLODsCount] Unsupported material type: ${e.type}`);return e[r]=t,t;function a(e,t){let r=n.getAssignedLODInformation(e);if(r){let e=n.lodInfos.get(r.key);if(e&&e.lods){t.min_count=Math.min(t.min_count,e.lods.length),t.max_count=Math.max(t.max_count,e.lods.length);for(let n=0;n{if(Array.isArray(e)){let t=i.index||0;e=e[t]}return t[`LOD:requested level`]===n&&(delete t[`LOD:requested level`],e&&r!=e&&(e?.isBufferGeometry?t.geometry=e:I&&console.error(`Invalid LOD geometry`,e))),e}).catch(e=>(console.error(`Error loading mesh LOD`,t,e),null))}else I&&console.error(`Invalid call to assignMeshLOD: Request mesh LOD but the object is not a mesh`,t);return Promise.resolve(null)}static assignTextureLOD(e,t=0){if(!e)return Promise.resolve(null);if(e.isMesh===!0){let n=e;if(Array.isArray(n.material)){let e=[];for(let r of n.material){let n=this.assignTextureLOD(r,t);e.push(n)}return Promise.all(e).then(e=>{let t=[];for(let n of e)Array.isArray(n)&&t.push(...n);return t})}else return this.assignTextureLOD(n.material,t)}if(e.isMaterial===!0){let n=e,r=[],i=[];if(n.uniforms&&(n.isRawShaderMaterial||n.isShaderMaterial===!0)){let e=n;for(let a of Object.keys(e.uniforms)){let o=e.uniforms[a].value;if(o?.isTexture===!0){let s=this.assignTextureLODForSlot(o,t,n,a).then(t=>(t&&e.uniforms[a].value!=t&&(e.uniforms[a].value=t,e.uniformsNeedUpdate=!0),t));r.push(s),i.push(a)}}}else for(let e of Object.keys(n)){let a=n[e];if(a?.isTexture===!0){let o=this.assignTextureLODForSlot(a,t,n,e);r.push(o),i.push(e)}}return Promise.all(r).then(e=>{let r=[];for(let a=0;a{if(Array.isArray(e))return console.warn(`Progressive: Got an array of textures for a texture slot, this should not happen...`),null;if(e?.isTexture===!0){if(e!=t&&r&&i){let t=r[i];if(t&&!I){let i=this.getAssignedLODInformation(t);if(i&&i?.level(console.error(`Error loading LOD`,t,e),null)):Promise.resolve(null)}parser;url;constructor(e){let t=e.options.path;I&&console.log(`Progressive extension registered for`,t),this.parser=e,this.url=t}_isLoadingMesh;loadMesh=t=>{if(this._isLoadingMesh)return null;let n=this.parser.json.meshes[t]?.extensions?.[U];return n?(this._isLoadingMesh=!0,this.parser.getDependency(`mesh`,t).then(t=>(this._isLoadingMesh=!1,t&&e.registerMesh(this.url,n.guid,t,n.lods?.length,0,n),t))):null};afterRoot(t){return I&&console.log(`AFTER`,this.url,t),this.parser.json.textures?.forEach((t,n)=>{if(t?.extensions){let r=t?.extensions[U];if(r){if(!r.lods){I&&console.warn(`Texture has no LODs`,r);return}let t=!1;for(let i of this.parser.associations.keys())i.isTexture===!0&&this.parser.associations.get(i)?.textures===n&&(t=!0,e.registerTexture(this.url,i,r.lods?.length,n,r));t||this.parser.getDependency(`texture`,n).then(t=>{t&&e.registerTexture(this.url,t,r.lods?.length,n,r)})}}}),this.parser.json.meshes?.forEach((t,n)=>{if(t?.extensions){let r=t?.extensions[U];if(r&&r.lods){for(let t of this.parser.associations.keys())if(t.isMesh){let i=this.parser.associations.get(t);i?.meshes===n&&e.registerMesh(this.url,r.guid,t,r.lods.length,i.primitives,r)}}}}),null}static registerTexture=(t,n,r,i,a)=>{if(!n){I&&console.error(`!! gltf-progressive: Called register texture without texture`);return}if(I){let e=n.image?.width||n.source?.data?.width||0,t=n.image?.height||n.source?.data?.height||0;console.log(`> gltf-progressive: register texture[${i}] "${n.name||n.uuid}", Current: ${e}x${t}, Max: ${a.lods[0]?.width}x${a.lods[0]?.height}, uuid: ${n.uuid}`,a,n)}n.source&&(n.source[H]=a);let o=a.guid;e.assignLODInformation(t,n,o,r,i),e.lodInfos.set(o,a),e.lowresCache.set(o,new WeakRef(n))};static registerMesh=(t,n,r,i,a,o)=>{let s=r.geometry;if(!s){I&&console.warn(`gltf-progressive: Register mesh without geometry`);return}s.userData||={},I&&console.log(`> Progressive: register mesh `+r.name,{index:a,uuid:r.uuid},o,r),e.assignLODInformation(t,s,n,i,a),e.lodInfos.set(n,o);let c=e.lowresCache.get(n)?.deref();c?c.push(r.geometry):c=[r.geometry],e.lowresCache.set(n,new WeakRef(c)),i>0&&!N(r)&&_e(r,s);for(let e of F)e.onRegisteredNewMesh?.(r,o)};static dispose(e){if(e){this.lodInfos.delete(e);let t=this.lowresCache.get(e);if(t){let n=t.deref();if(n){if(n.isTexture){let e=n;this.textureRefCounts.delete(e.uuid),e.dispose()}else if(Array.isArray(n))for(let e of n)e.dispose()}this.lowresCache.delete(e)}for(let[t,n]of this.cache)t.includes(e)&&(this._disposeCacheEntry(n),this.cache.delete(t))}else{this.lodInfos.clear();for(let[,e]of this.lowresCache){let t=e.deref();if(t){if(t.isTexture){let e=t;this.textureRefCounts.delete(e.uuid),e.dispose()}else if(Array.isArray(t))for(let e of t)e.dispose()}}this.lowresCache.clear();for(let[,e]of this.cache)this._disposeCacheEntry(e);this.cache.clear(),this.textureRefCounts.clear()}}static _disposeCacheEntry(e){if(e instanceof WeakRef){let t=e.deref();t&&(t.isTexture&&this.textureRefCounts.delete(t.uuid),t.dispose())}else e.then(e=>{if(e)if(Array.isArray(e))for(let t of e)t.dispose();else e.isTexture&&this.textureRefCounts.delete(e.uuid),e.dispose()}).catch(()=>{})}static lodInfos=new Map;static cache=new Map;static lowresCache=new Map;static textureRefCounts=new Map;static _resourceRegistry=new FinalizationRegistry(t=>{let n=e.cache.get(t);(I||V)&&console.debug(`[gltf-progressive] Memory: Resource GC'd\n${t}`),n instanceof WeakRef&&(n.deref()||(e.cache.delete(t),(I||V)&&console.log(`[gltf-progressive] ↪ Cache entry deleted (GC)`)))});static trackTextureUsage(e){let t=e.uuid,n=this.textureRefCounts.get(t)||0;this.textureRefCounts.set(t,n+1),I===`verbose`&&console.log(`[gltf-progressive] Track texture ${t}, refCount: ${n} → ${n+1}`)}static untrackTextureUsage(e){let t=e.uuid,n=this.textureRefCounts.get(t);if(!n)return(I===`verbose`||V)&&i(`[gltf-progressive] Memory: Untrack untracked texture (dispose immediately)`,0),e.dispose(),!0;let r=n-1;if(r<=0)return this.textureRefCounts.delete(t),(I||V)&&i(`[gltf-progressive] Memory: Dispose texture`,r),e.dispose(),!0;return this.textureRefCounts.set(t,r),I===`verbose`&&i(`[gltf-progressive] Memory: Untrack texture`,r),!1;function i(r,i){let a=e.image?.width||e.source?.data?.width||0,o=e.image?.height||e.source?.data?.height||0,s=a&&o?`${a}x${o}`:`N/A`,c=`N/A`;a&&o&&(c=`~${(me(e)/(1024*1024)).toFixed(2)} MB`),console.log(`${r} — ${e.name} ${s} (${c}), refCount: ${n} → ${i}\n${t}`)}}static workers=[];static _workersIndex=0;static async getOrLoadLOD(t,n){let i=I==`verbose`,a=this.getAssignedLODInformation(t);if(!a)return I&&console.warn(`[gltf-progressive] No LOD information found: ${t.name}, uuid: ${t.uuid}, type: ${t.type}`,t),null;let o=a?.key,s;if(t.isTexture===!0){let e=t;e.source&&e.source[H]&&(s=e.source[H])}if(s||=e.lodInfos.get(o),!s)I&&console.warn(`Can not load LOD ${n}: no LOD info found for \"${o}\" ${t.name}`,t.type,e.lodInfos);else{if(n>0){let e=!1,t=Array.isArray(s.lods);if(t&&n>=s.lods.length?e=!0:t||(e=!0),e){let e=this.lowresCache.get(o);if(e){let t=e.deref();if(t)return t;this.lowresCache.delete(o),I&&console.log(`[gltf-progressive] Lowres cache entry was GC'd: ${o}`)}return null}}let c=Array.isArray(s.lods)?s.lods[n]?.path:s.lods;if(!c)return I&&!s[`missing:uri`]&&(s[`missing:uri`]=!0,console.warn(`Missing uri for progressive asset for LOD `+n,s)),null;let d=de(a.url,c);if(d.endsWith(`.glb`)||d.endsWith(`.gltf`)){if(!s.guid)return console.warn(`missing pointer for glb/gltf texture`,s),null;let c=d+`_`+s.guid,l=await this.queue.slot(d),f=this.cache.get(c);if(f!==void 0)if(i&&console.log(`LOD ${n} was already loading/loaded: ${c}`),f instanceof WeakRef){let e=f.deref();if(e){let n=e,i=!1;if(n instanceof u&&t instanceof u?n.image?.data||n.source?.data?n=this.copySettings(t,n):i=!0:n instanceof r&&t instanceof r&&(n.attributes.position?.array||(i=!0)),!i)return n}this.cache.delete(c),I&&console.log(`[gltf-progressive] Re-loading GC'd/disposed resource: ${c}`)}else{let e=await f.catch(e=>(console.error(`Error loading LOD ${n} from ${d}\n`,e),null)),i=!1;if(e==null||(e instanceof u&&t instanceof u?e.image?.data||e.source?.data?e=this.copySettings(t,e):(i=!0,this.cache.delete(c)):e instanceof r&&t instanceof r&&(e.attributes.position?.array||(i=!0,this.cache.delete(c)))),!i)return e}if(!l.use)return I&&console.log(`LOD ${n} was aborted: ${d}`),null;let p=s,m=new Promise(async(r,s)=>{if(Ee){let i=await(await Ce({})).load(d);if(i.textures.length>0)for(let s of i.textures){let i=s.texture;return e.assignLODInformation(a.url,i,o,n,void 0),t instanceof u&&(i=this.copySettings(t,i)),i&&(i.guid=p.guid),r(i)}if(i.geometries.length>0){let t=[];for(let r of i.geometries){let i=r.geometry;e.assignLODInformation(a.url,i,o,n,r.primitiveIndex),t.push(i)}return r(t)}return r(null)}let l=new g;S(l),I&&(await new Promise(e=>setTimeout(e,1e3)),i&&console.warn(`Start loading (delayed) `+d,p.guid));let f=d;if(p&&Array.isArray(p.lods)){let e=p.lods[n];e.hash&&(f+=`?v=`+e.hash)}let m=await l.loadAsync(f).catch(e=>(console.error(`Error loading LOD ${n} from ${d}\n`,e),r(null)));if(!m)return r(null);let h=m.parser;i&&console.log(`Loading finished `+d,p.guid);let _=0;if(m.parser.json.textures){let s=!1;for(let e of m.parser.json.textures){if(e?.extensions){let t=e?.extensions[U];if(t?.guid&&t.guid===p.guid){s=!0;break}}_++}if(s){let s=await h.getDependency(`texture`,_);return s&&e.assignLODInformation(a.url,s,o,n,void 0),i&&console.log(`change "`+t.name+`" → "`+s.name+`"`,d,_,s,c),t instanceof u&&(s=this.copySettings(t,s)),s&&(s.guid=p.guid),r(s)}else I&&console.warn(`Could not find texture with guid`,p.guid,m.parser.json)}if(_=0,m.parser.json.meshes){let t=!1;for(let e of m.parser.json.meshes){if(e?.extensions){let n=e?.extensions[U];if(n?.guid&&n.guid===p.guid){t=!0;break}}_++}if(t){let t=await h.getDependency(`mesh`,_);if(i&&console.log(`Loaded Mesh \"${t.name}\"`,d,_,t,c),t.isMesh===!0){let i=t.geometry;return e.assignLODInformation(a.url,i,o,n,0),r(i)}else{let i=[];for(let r=0;r{r.forEach(r=>{r.add(e,t,n)})};ready;get awaitedCount(){return this._addedCount}get resolvedCount(){return this._resolvedCount}get currentlyAwaiting(){return this._awaiting.length}_resolve;_signal;_frame_start;_frames_to_capture;_resolved=!1;_addedCount=0;_resolvedCount=0;_awaiting=[];_maxPromisesPerObject=1;constructor(e,t){let n=Math.max(t.frames??2,2);this._frame_start=t.waitForFirstCapture?void 0:e,this._frames_to_capture=n,this.ready=new Promise(e=>{this._resolve=e}),this.ready.finally(()=>{this._resolved=!0,this._awaiting.length=0}),this._signal=t.signal,this._signal?.addEventListener(`abort`,()=>{this.resolveNow()}),this._maxPromisesPerObject=Math.max(1,t.maxPromisesPerObject??1)}_currentFrame=0;update(e){this._currentFrame=e,this._frame_start===void 0&&this._addedCount>0&&(this._frame_start=e),(this._signal?.aborted||this._awaiting.length===0&&this._frame_start!==void 0&&e>this._frame_start+this._frames_to_capture)&&this.resolveNow()}_seen=new WeakMap;add(e,t,n){if(this._resolved){I&&console.warn(`PromiseGroup: Trying to add a promise to a resolved group, ignoring.`);return}if(!(this._frame_start!==void 0&&this._currentFrame>this._frame_start+this._frames_to_capture)){if(this._maxPromisesPerObject>=1)if(this._seen.has(t)){let e=this._seen.get(t);if(e>=this._maxPromisesPerObject){I&&console.warn(`PromiseGroup: Already awaiting object ignoring new promise for it.`);return}this._seen.set(t,e+1)}else this._seen.set(t,1);this._awaiting.push(n),this._addedCount++,n.finally(()=>{this._resolvedCount++,this._awaiting.splice(this._awaiting.indexOf(n),1)})}}resolveNow(){this._resolved||this._resolve?.({awaited_count:this._addedCount,resolved_count:this._resolvedCount,cancelled:this._signal?.aborted??!1})}},K=k(`debugprogressive`),Oe=k(`noprogressive`),q=Symbol(`Needle:LODSManager`),J=Symbol(`Needle:LODState`),Y=Symbol(`Needle:CurrentLOD`),X={mesh_lod:-1,texture_lod:-1},Z=class e{static debugDrawLine;static getObjectLODState(e){return e[J]}static addPlugin(e){F.push(e)}static removePlugin(e){let t=F.indexOf(e);t>=0&&F.splice(t,1)}static get(t,n){if(t[q])return console.debug(`[gltf-progressive] LODsManager already exists for this renderer`),t[q];let r=new e(t,{engine:`unknown`,...n});return t[q]=r,r}renderer;context;projectionScreenMatrix=new a;get plugins(){return F}overrideLodLevel=void 0;targetTriangleDensity=2e5;skinnedMeshAutoUpdateBoundsInterval=30;updateInterval=`auto`;#e=1;pause=!1;manual=!1;_newPromiseGroups=[];_promiseGroupIds=0;awaitLoading(e){let t=this._promiseGroupIds++,n=new G(this.#r,{...e});this._newPromiseGroups.push(n);let r=performance.now();return n.ready.finally(()=>{let i=this._newPromiseGroups.indexOf(n);i>=0&&(this._newPromiseGroups.splice(i,1),fe()&&performance.measure(`LODsManager:awaitLoading`,{start:r,detail:{id:t,name:e?.name,awaited:n.awaitedCount,resolved:n.resolvedCount}}))}),n.ready}_postprocessPromiseGroups(){if(this._newPromiseGroups.length!==0)for(let e=this._newPromiseGroups.length-1;e>=0;e--)this._newPromiseGroups[e].update(this.#r)}_lodchangedlisteners=[];addEventListener(e,t){e===`changed`&&this._lodchangedlisteners.push(t)}removeEventListener(e,t){if(e===`changed`){let e=this._lodchangedlisteners.indexOf(t);e>=0&&this._lodchangedlisteners.splice(e,1)}}constructor(e,t){this.renderer=e,this.context={...t}}#t;#n=new f;#r=0;#i=0;#a=0;#o=0;_fpsBuffer=[60,60,60,60,60];enable(){if(this.#t)return;console.debug(`[gltf-progressive] Enabling LODsManager for renderer`);let e=0;this.#t=this.renderer.render;let t=this;x(this.renderer),this.renderer.render=function(n,r){let i=t.renderer.getRenderTarget();(i==null||`isXRRenderTarget`in i&&i.isXRRenderTarget)&&(e=0,t.#r+=1,t.#i=t.#n.getDelta(),t.#a+=t.#i,t._fpsBuffer.shift(),t._fpsBuffer.push(1/t.#i),t.#o=t._fpsBuffer.reduce((e,t)=>e+t)/t._fpsBuffer.length,K&&t.#r%200==0&&console.log(`FPS`,Math.round(t.#o),`Interval:`,t.#e));let a=e++;t.#t.call(this,n,r),t.onAfterRender(n,r,a)}}disable(){this.#t&&=(console.debug(`[gltf-progressive] Disabling LODsManager for renderer`),this.renderer.render=this.#t,void 0)}update(e,t){this.internalUpdate(e,t)}onAfterRender(e,t,n){if(this.pause)return;let r=this.renderer.renderLists.get(e,0).opaque,i=!0;if(r.length===1){let e=r[0].material;(e.name===`EffectMaterial`||e.name===`CopyShader`)&&(i=!1)}if((t.parent&&t.parent.type===`CubeCamera`||n>=1&&t.type===`OrthographicCamera`)&&(i=!1),i){if(Oe||(this.updateInterval===`auto`?this.#o<40&&this.#e<10?(this.#e+=1,K&&console.warn(`↓ Reducing LOD updates`,this.#e,this.#o.toFixed(0))):this.#o>=60&&this.#e>1&&(--this.#e,K&&console.warn(`↑ Increasing LOD updates`,this.#e,this.#o.toFixed(0))):this.#e=this.updateInterval,this.#e>0&&this.#r%this.#e!=0))return;this.internalUpdate(e,t),this._postprocessPromiseGroups()}}internalUpdate(e,t){let n=this.renderer.renderLists.get(e,0),r=n.opaque;this.projectionScreenMatrix.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);let i=this.targetTriangleDensity;for(let n of r){if(n.material&&(n.geometry?.type===`BoxGeometry`||n.geometry?.type===`BufferGeometry`)&&(n.material.name===`SphericalGaussianBlur`||n.material.name==`BackgroundCubeMaterial`||n.material.name===`CubemapFromEquirect`||n.material.name===`EquirectangularToCubeUV`)){K&&(n.material[`NEEDLE_PROGRESSIVE:IGNORE-WARNING`]||(n.material[`NEEDLE_PROGRESSIVE:IGNORE-WARNING`]=!0,console.warn(`Ignoring skybox or BLIT object`,n,n.material.name,n.material.type)));continue}switch(n.material.type){case`LineBasicMaterial`:case`LineDashedMaterial`:case`PointsMaterial`:case`ShadowMaterial`:case`MeshDistanceMaterial`:case`MeshDepthMaterial`:continue}if(K===`color`&&n.material&&!n.object.progressive_debug_color){n.object.progressive_debug_color=!0;let e=new d({color:Math.random()*16777215});n.object.material=e}let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}let a=n.transparent;for(let n of a){let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}let o=n.transmissive;for(let n of o){let r=n.object;(r instanceof s||r.isMesh)&&this.updateLODs(e,t,r,i)}}updateLODs(e,t,n,r){n.userData||={};let i=n[J];if(i||(i=new ke,n[J]=i),i.frames++<2)return;for(let r of F)r.onBeforeUpdateLOD?.(this.renderer,e,t,n);let a=this.overrideLodLevel===void 0?R:this.overrideLodLevel;a>=0?(X.mesh_lod=a,X.texture_lod=a):(this.calculateLodLevel(t,n,i,r,X),X.mesh_lod=Math.round(X.mesh_lod),X.texture_lod=Math.round(X.texture_lod)),X.mesh_lod>=0&&this.loadProgressiveMeshes(n,X.mesh_lod),n.material&&X.texture_lod>=0&&this.loadProgressiveTextures(n.material,X.texture_lod,a),I&&n.material&&!n.isGizmo&&be(n.material);for(let r of F)r.onAfterUpdatedLOD?.(this.renderer,e,t,n,X);i.lastLodLevel_Mesh=X.mesh_lod,i.lastLodLevel_Texture=X.texture_lod}loadProgressiveTextures(e,t,n){if(!e)return;if(Array.isArray(e)){for(let n of e)this.loadProgressiveTextures(n,t);return}let r=!1;if((e[Y]===void 0||t=0&&(r=e[Y]!=n,t=n),r){e[Y]=t;let n=W.assignTextureLOD(e,t).then(n=>{this._lodchangedlisteners.forEach(n=>n({type:`texture`,level:t,object:e}))});G.addPromise(`texture`,e,n,this._newPromiseGroups)}}loadProgressiveMeshes(e,t){if(!e)return Promise.resolve(null);let n=e[Y]!==t,r=e[`DEBUG:LOD`];if(r!=null&&(n=e[Y]!=r,t=r),n){e[Y]=t;let n=e.geometry,r=W.assignMeshLOD(e,t).then(r=>(r&&e[Y]==t&&n!=e.geometry&&this._lodchangedlisteners.forEach(n=>n({type:`mesh`,level:t,object:e})),r));return G.addPromise(`mesh`,e,r,this._newPromiseGroups),r}return Promise.resolve(null)}_sphere=new p;_tempBox=new c;_tempBox2=new c;tempMatrix=new a;_tempWorldPosition=new t;_tempBoxSize=new t;_tempBox2Size=new t;static corner0=new t;static corner1=new t;static corner2=new t;static corner3=new t;static _tempPtInside=new t;static isInside(e,t){let n=e.min,r=e.max,i=(n.x+r.x)*.5,a=(n.y+r.y)*.5;return this._tempPtInside.set(i,a,n.z).applyMatrix4(t).z<0}static skinnedMeshBoundsFrameOffsetCounter=0;static $skinnedMeshBoundsOffset=Symbol(`gltf-progressive-skinnedMeshBoundsOffset`);calculateLodLevel(t,n,r,i,a){if(!n){a.mesh_lod=-1,a.texture_lod=-1;return}if(!t){a.mesh_lod=-1,a.texture_lod=-1;return}let o=11,s=!1;if(K&&n[`DEBUG:LOD`]!=null)return n[`DEBUG:LOD`];let c=W.getMeshLODExtension(n.geometry)?.lods,l=W.getPrimitiveIndex(n.geometry),u=c&&c.length>0,d=W.getMaterialMinMaxLODsCount(n.material),f=d.min_count!==1/0&&d.min_count>=0&&d.max_count>=0;if(!u&&!f){a.mesh_lod=0,a.texture_lod=0;return}u||(s=!0,o=0);let p=this.renderer.domElement.clientHeight||this.renderer.domElement.height,m=n.geometry.boundingBox;if(n.type===`SkinnedMesh`){let t=n;if(!t.boundingBox)t.computeBoundingBox();else if(this.skinnedMeshAutoUpdateBoundsInterval>0){if(!t[e.$skinnedMeshBoundsOffset]){let n=e.skinnedMeshBoundsFrameOffsetCounter++;t[e.$skinnedMeshBoundsOffset]=n}let n=t[e.$skinnedMeshBoundsOffset];if((r.frames+n)%this.skinnedMeshAutoUpdateBoundsInterval===0){let e=N(t),n=t.geometry;e&&(t.geometry=e),t.computeBoundingBox(),t.geometry=n}}m=t.boundingBox}if(m){let u=t;if(n.geometry.attributes.color&&n.geometry.attributes.color.count<100&&n.geometry.boundingSphere){this._sphere.copy(n.geometry.boundingSphere),this._sphere.applyMatrix4(n.matrixWorld);let e=t.getWorldPosition(this._tempWorldPosition);if(this._sphere.containsPoint(e)){a.mesh_lod=0,a.texture_lod=0;return}}if(this._tempBox.copy(m),this._tempBox.applyMatrix4(n.matrixWorld),u.isPerspectiveCamera&&e.isInside(this._tempBox,this.projectionScreenMatrix)){a.mesh_lod=0,a.texture_lod=0;return}if(this._tempBox.applyMatrix4(this.projectionScreenMatrix),this.renderer.xr.enabled&&u.isPerspectiveCamera&&u.fov>70){let e=this._tempBox.min,t=this._tempBox.max,n=e.x,i=e.y,a=t.x,o=t.y,s=1.5,c=(e.x+t.x)*.5,l=(e.y+t.y)*.5;n=(n-c)*2+c,i=(i-l)*2+l,a=(a-c)*2+c,o=(o-l)*2+l;let u=n<0&&a>0?0:Math.min(Math.abs(e.x),Math.abs(t.x)),d=i<0&&o>0?0:Math.min(Math.abs(e.y),Math.abs(t.y)),f=Math.max(u,d);r.lastCentrality=(s-f)*(s-f)*(s-f)}else r.lastCentrality=1;let d=this._tempBox.getSize(this._tempBoxSize);d.multiplyScalar(.5),screen.availHeight>0&&p>0&&d.multiplyScalar(p/screen.availHeight),t.isPerspectiveCamera?d.x*=t.aspect:t.isOrthographicCamera;let f=t.matrixWorldInverse,h=this._tempBox2;h.copy(m),h.applyMatrix4(n.matrixWorld),h.applyMatrix4(f);let g=h.getSize(this._tempBox2Size),_=Math.max(g.x,g.y);if(Math.max(d.x,d.y)!=0&&_!=0&&(d.z=g.z/Math.max(g.x,g.y)*Math.max(d.x,d.y)),r.lastScreenCoverage=Math.max(d.x,d.y,d.z),r.lastScreenspaceVolume.copy(d),r.lastScreenCoverage*=r.lastCentrality,K&&e.debugDrawLine){let t=this.tempMatrix.copy(this.projectionScreenMatrix);t.invert();let n=e.corner0,r=e.corner1,i=e.corner2,a=e.corner3;n.copy(this._tempBox.min),r.copy(this._tempBox.max),r.x=n.x,i.copy(this._tempBox.max),i.y=n.y,a.copy(this._tempBox.max),n.z=r.z=i.z=a.z=(n.z+a.z)*.5,n.applyMatrix4(t),r.applyMatrix4(t),i.applyMatrix4(t),a.applyMatrix4(t),e.debugDrawLine(n,r,255),e.debugDrawLine(n,i,255),e.debugDrawLine(r,a,255),e.debugDrawLine(i,a,255)}let v=999;if(c&&r.lastScreenCoverage>0)for(let e=0;e0&&fe()&&!t.densities&&!globalThis[`NEEDLE:MISSING_LOD_PRIMITIVE_DENSITIES`]&&(window[`NEEDLE:MISSING_LOD_PRIMITIVE_DENSITIES`]=!0,console.warn(`[Needle Progressive] Detected usage of mesh without primitive densities. This might cause incorrect LOD level selection: Consider re-optimizing your model by updating your Needle Integration, Needle glTF Pipeline or running optimization again on Needle Cloud.`)),n=0;i--){let c=d.lods[i];if(!(e&&c.max_height>=2048)&&!(A()&&c.max_height>4096)&&(c.max_height>o||!s&&i===0)){if(s=!0,a.texture_lod=i,K&&a.texture_lod{e.forEach(e=>{e.addedNodes.forEach(e=>{e instanceof HTMLElement&&e.tagName.toLowerCase()===`model-viewer`&&Ie(e)})})}),$.observe(document,{childList:!0,subtree:!0}))}function Me(){return typeof customElements>`u`?null:customElements.get(`model-viewer`)||(customElements.whenDefined(`model-viewer`).then(()=>{console.debug(`[gltf-progressive] model-viewer defined`),je()}),null)}function Ne(){typeof document>`u`||document.querySelectorAll(`model-viewer`).forEach(e=>{Ie(e)})}var Pe=new WeakSet,Fe=0;function Ie(e){if(!e||Pe.has(e))return null;Pe.add(e),console.debug(`[gltf-progressive] found new model-viewer...`+ ++Fe+` +`,e.getAttribute(`src`));let t=null,n=null,r=null;for(let i=e;i!=null;i=Object.getPrototypeOf(i)){let a=Object.getOwnPropertySymbols(i),o=a.find(e=>e.toString()==`Symbol(renderer)`),s=a.find(e=>e.toString()==`Symbol(scene)`),c=a.find(e=>e.toString()==`Symbol(needsRender)`);!t&&o!=null&&(t=e[o].threeRenderer),!n&&s!=null&&(n=e[s]),!r&&c!=null&&(r=e[c])}if(t&&n){console.debug(`[gltf-progressive] setup model-viewer`);let n=Z.get(t,{engine:`model-viewer`});Z.addPlugin(new Le),n.enable(),n.addEventListener(`changed`,()=>{r?.call(e)}),e.addEventListener(`model-visibility`,t=>{t.detail.visible&&r?.call(e)}),e.addEventListener(`load`,()=>{i()});function i(){if(r){let t=0,n=setInterval(()=>{if(t++>5){clearInterval(n);return}r?.call(e)},300)}}return()=>{n.disable()}}return null}var Le=class{_didWarnAboutMissingUrl=!1;onBeforeUpdateLOD(e,t,n,r){this.tryParseMeshLOD(t,r),this.tryParseTextureLOD(t,r)}getUrl(e){if(!e)return null;let t=e.getAttribute(`src`);return t||=e.src,t||(this._didWarnAboutMissingUrl||console.warn(`No url found in modelviewer`,e),this._didWarnAboutMissingUrl=!0),t}tryGetCurrentGLTF(e){return e._currentGLTF}tryGetCurrentModelViewer(e){return e.element}tryParseTextureLOD(e,t){if(t[Q]==1)return;t[Q]=!0;let n=this.tryGetCurrentGLTF(e),r=this.tryGetCurrentModelViewer(e),i=this.getUrl(r);if(i&&n&&t.material){let e=t.material;if(Array.isArray(e))for(let t of e)r(t);else r(e);function r(e){if(e[Q]==1)return;e[Q]=!0,e.userData&&(e.userData.LOD=-1);let t=Object.keys(e);for(let r=0;rnew W(e));let a=Z.get(n);return i?.enableLODsManager!==!1&&a.enable(),a}if(je(),!ge){let e={gltfProgressive:{useNeedleProgressive:Re,LODsManager:Z,configureLoader:O,getRaycastMesh:N,useRaycastMeshes:ve}};if(!globalThis.Needle)globalThis.Needle=e;else for(let t in e)globalThis.Needle[t]=e[t]}export{O as a,se as c,S as i,W as n,x as o,N as r,oe as s,Z as t}; \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js.gz b/Needle/SampleScene/dist/assets/gltf-progressive.U_EoiMHF.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..761f2fd2f08b5703ffa95a788045ed0cfb00b4db GIT binary patch literal 13752 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 literal 0 HcmV?d00001 diff --git a/Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js b/Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js new file mode 100644 index 0000000..b84431f --- /dev/null +++ b/Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js @@ -0,0 +1,3576 @@ +(function(){var e=(function(){"use strict";var e=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb`,t=`b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb`,n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=`object`)return{supported:!1};var i=WebAssembly.validate(n)?t:e,a,o=WebAssembly.instantiate(s(i),{}).then(function(e){a=e.instance,a.exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),n=0;n96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})(),t={url:self.location.href}; +/** +* @license +* Copyright 2010-2024 Three.js Authors +* SPDX-License-Identifier: MIT +*/ +let n=`169.19`,r=1e3,i=1001,a=1002,o=1003,s=1004,c=1006,l=1008,u=1009,d=1015,f=1016,p=1022,m=1023,h=1028,g=1030,_=33776,v=33777,y=33778,b=33779,x=37492,S=37496,ee=37808,te=37812,ne=36492,re=2300,ie=2301,ae=2302,oe=2400,se=2401,ce=2402,C=`srgb`,w=`srgb-linear`,le=`display-p3-linear`,ue=`linear`,de=`srgb`,fe=`rec709`,pe=7680,me=35044,he=2e3;var ge=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){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let n=this._listeners[e];if(n!==void 0){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let t=this._listeners[e.type];if(t!==void 0){e.target=this;let n=t.slice(0);for(let t=0,r=n.length;t>8&255]+T[e>>16&255]+T[e>>24&255]+`-`+T[t&255]+T[t>>8&255]+`-`+T[t>>16&15|64]+T[t>>24&255]+`-`+T[n&63|128]+T[n>>8&255]+`-`+T[n>>16&255]+T[n>>24&255]+T[r&255]+T[r>>8&255]+T[r>>16&255]+T[r>>24&255]).toLowerCase()}function xe(e,t,n){return Math.max(t,Math.min(n,e))}function Se(e,t){return(e%t+t)%t}function Ce(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)}function we(e,t,n){return e===t?0:(n-e)/(t-e)}function Te(e,t,n){return(1-n)*e+n*t}function Ee(e,t,n,r){return Te(e,t,1-Math.exp(-n*r))}function De(e,t=1){return t-Math.abs(Se(e,t*2)-t)}function Oe(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))}function ke(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(e*6-15)+10))}function Ae(e,t){return e+Math.floor(Math.random()*(t-e+1))}function je(e,t){return e+Math.random()*(t-e)}function Me(e){return e*(.5-Math.random())}function Ne(e){e!==void 0&&(_e=e);let t=_e+=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 Pe(e){return e*ve}function Fe(e){return e*ye}function Ie(e){return(e&e-1)==0&&e!==0}function Le(e){return 2**Math.ceil(Math.log(e)/Math.LN2)}function Re(e){return 2**Math.floor(Math.log(e)/Math.LN2)}function ze(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:console.warn(`THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: `+i)}}function Be(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 E(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.`)}}let Ve={DEG2RAD:ve,RAD2DEG:ye,generateUUID:be,clamp:xe,euclideanModulo:Se,mapLinear:Ce,inverseLerp:we,lerp:Te,damp:Ee,pingpong:De,smoothstep:Oe,smootherstep:ke,randInt:Ae,randFloat:je,randFloatSpread:Me,seededRandom:Ne,degToRad:Pe,radToDeg:Fe,isPowerOfTwo:Ie,ceilPowerOfTwo:Le,floorPowerOfTwo:Re,setQuaternionFromProperEuler:ze,normalize:E,denormalize:Be};var D=class e{constructor(t=0,n=0){e.prototype.isVector2=!0,this.x=t,this.y=n}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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(xe(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}},O=class e{constructor(t,n,r,i,a,o,s,c,l){e.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l)}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(He.makeScale(e,t)),this}rotate(e){return this.premultiply(He.makeRotation(-e)),this}translate(e,t){return this.premultiply(He.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)}};let He=new O;function Ue(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}function We(e){return document.createElementNS(`http://www.w3.org/1999/xhtml`,e)}let Ge=new O().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Ke=new O().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),qe={[w]:{transfer:ue,primaries:fe,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e,fromReference:e=>e},[C]:{transfer:de,primaries:fe,luminanceCoefficients:[.2126,.7152,.0722],toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[le]:{transfer:ue,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.applyMatrix3(Ke),fromReference:e=>e.applyMatrix3(Ge)},"display-p3":{transfer:de,primaries:`p3`,luminanceCoefficients:[.2289,.6917,.0793],toReference:e=>e.convertSRGBToLinear().applyMatrix3(Ke),fromReference:e=>e.applyMatrix3(Ge).convertLinearToSRGB()}},Je=new Set([w,le]),Ye={enabled:!0,_workingColorSpace:w,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!Je.has(e))throw Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(this.enabled===!1||t===n||!t||!n)return e;let r=qe[t].toReference,i=qe[n].fromReference;return i(r(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return qe[e].primaries},getTransfer:function(e){return e===``?ue:qe[e].transfer},getLuminanceCoefficients:function(e,t=this._workingColorSpace){return e.fromArray(qe[t].luminanceCoefficients)}};function Xe(e){return e<.04045?e*.0773993808:(e*.9478672986+.0521327014)**2.4}function Ze(e){return e<.0031308?e*12.92:1.055*e**.41666-.055}let Qe;var $e=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>`u`)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Qe===void 0&&(Qe=We(`canvas`)),Qe.width=e.width,Qe.height=e.height;let n=Qe.getContext(`2d`);e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=Qe}return t.width>2048||t.height>2048?(console.warn(`THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons`,e),t.toDataURL(`image/jpeg`,.6)):t.toDataURL(`image/png`)}static sRGBToLinear(e){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap){let t=We(`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;e0&&(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 r:e.x-=Math.floor(e.x);break;case i:e.x=e.x<0?0:1;break;case a: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 r:e.y-=Math.floor(e.y);break;case i:e.y=e.y<0?0:1;break;case a: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++}};it.DEFAULT_IMAGE=null,it.DEFAULT_MAPPING=300,it.DEFAULT_ANISOTROPY=4;var k=class e{constructor(t=0,n=0,r=0,i=1){e.prototype.isVector4=!0,this.x=t,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,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}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)s&&e>_?e_?s=0?1:-1,r=1-t*t;if(r>2**-52){let i=Math.sqrt(r),a=Math.atan2(i,t*n);e=Math.sin(e*a)/i,o=Math.sin(o*a)/i}let i=o*n;if(s=s*e+d*i,c=c*e+f*i,l=l*e+p*i,u=u*e+m*i,e===1-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:console.warn(`THREE.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<2**-52?(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(xe(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){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,r=this._y,i=this._z,a=this._w,o=a*e._w+n*e._x+r*e._y+i*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=i,this;let s=1-o*o;if(s<=2**-52){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*r+t*this._y,this._z=e*i+t*this._z,this.normalize(),this}let c=Math.sqrt(s),l=Math.atan2(c,o),u=Math.sin((1-t)*l)/c,d=Math.sin(t*l)/c;return this._w=a*u+this._w*d,this._x=n*u+this._x*d,this._y=r*u+this._y*d,this._z=i*u+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),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}},A=class e{constructor(t=0,n=0,r=0){e.prototype.isVector3=!0,this.x=t,this.y=n,this.z=r}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(lt.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(lt.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=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,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 ct.copy(this).projectOnVector(e),this.sub(ct)}reflect(e){return this.sub(ct.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(xe(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}};let ct=new A,lt=new st;var ut=class{constructor(e=new A(1/0,1/0,1/0),t=new A(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,ft),ft.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(bt),xt.subVectors(this.max,bt),mt.subVectors(e.a,bt),ht.subVectors(e.b,bt),gt.subVectors(e.c,bt),_t.subVectors(ht,mt),vt.subVectors(gt,ht),yt.subVectors(mt,gt);let t=[0,-_t.z,_t.y,0,-vt.z,vt.y,0,-yt.z,yt.y,_t.z,0,-_t.x,vt.z,0,-vt.x,yt.z,0,-yt.x,-_t.y,_t.x,0,-vt.y,vt.x,0,-yt.y,yt.x,0];return!wt(t,mt,ht,gt,xt)||(t=[1,0,0,0,1,0,0,0,1],!wt(t,mt,ht,gt,xt))?!1:(St.crossVectors(_t,vt),t=[St.x,St.y,St.z],wt(t,mt,ht,gt,xt))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,ft).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(ft).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:(dt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),dt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),dt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),dt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),dt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),dt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),dt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),dt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(dt),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)}};let dt=[new A,new A,new A,new A,new A,new A,new A,new A],ft=new A,pt=new ut,mt=new A,ht=new A,gt=new A,_t=new A,vt=new A,yt=new A,bt=new A,xt=new A,St=new A,Ct=new A;function wt(e,t,n,r,i){for(let a=0,o=e.length-3;a<=o;a+=3){Ct.fromArray(e,a);let o=i.x*Math.abs(Ct.x)+i.y*Math.abs(Ct.y)+i.z*Math.abs(Ct.z),s=t.dot(Ct),c=n.dot(Ct),l=r.dot(Ct);if(Math.max(-Math.max(s,c,l),Math.min(s,c,l))>o)return!1}return!0}let Tt=new ut,Et=new A,Dt=new A;var Ot=class{constructor(e=new A,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?Tt.setFromPoints(e).getCenter(n):n.copy(t);let r=0;for(let t=0,i=e.length;tthis.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;Et.subVectors(e,this.center);let t=Et.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(Et,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):(Dt.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Et.copy(e.center).add(Dt)),this.expandByPoint(Et.copy(e.center).sub(Dt))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};let kt=new A,At=new A,jt=new A,Mt=new A,Nt=new A,Pt=new A,Ft=new A;var It=class{constructor(e=new A,t=new A(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,kt)),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=kt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(kt.copy(this.origin).addScaledVector(this.direction,t),kt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){At.copy(e).add(t).multiplyScalar(.5),jt.copy(t).sub(e).normalize(),Mt.copy(this.origin).sub(At);let i=e.distanceTo(t)*.5,a=-this.direction.dot(jt),o=Mt.dot(this.direction),s=-Mt.dot(jt),c=Mt.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(At).addScaledVector(jt,d),f}intersectSphere(e,t){kt.subVectors(e.center,this.origin);let n=kt.dot(this.direction),r=kt.dot(kt)-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 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=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=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,kt)!==null}intersectTriangle(e,t,n,r,i){Nt.subVectors(t,e),Pt.subVectors(n,e),Ft.crossVectors(Nt,Pt);let a=this.direction.dot(Ft),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Mt.subVectors(this.origin,e);let s=o*this.direction.dot(Pt.crossVectors(Mt,Pt));if(s<0)return null;let c=o*this.direction.dot(Nt.cross(Mt));if(c<0||s+c>a)return null;let l=-o*Mt.dot(Ft);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)}},j=class e{constructor(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g){e.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)}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 e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,r=1/Lt.setFromMatrixColumn(e,0).length(),i=1/Lt.setFromMatrixColumn(e,1).length(),a=1/Lt.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(zt,e,Bt)}lookAt(e,t,n){let r=this.elements;return Ut.subVectors(e,t),Ut.lengthSq()===0&&(Ut.z=1),Ut.normalize(),Vt.crossVectors(n,Ut),Vt.lengthSq()===0&&(Math.abs(n.z)===1?Ut.x+=1e-4:Ut.z+=1e-4,Ut.normalize(),Vt.crossVectors(n,Ut)),Vt.normalize(),Ht.crossVectors(Ut,Vt),r[0]=Vt.x,r[4]=Ht.x,r[8]=Ut.x,r[1]=Vt.y,r[5]=Ht.y,r[9]=Ut.y,r[2]=Vt.z,r[6]=Ht.z,r[10]=Ut.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],ee=r[8],te=r[12],ne=r[1],re=r[5],ie=r[9],ae=r[13],oe=r[2],se=r[6],ce=r[10],C=r[14],w=r[3],le=r[7],ue=r[11],de=r[15];return i[0]=a*x+o*ne+s*oe+c*w,i[4]=a*S+o*re+s*se+c*le,i[8]=a*ee+o*ie+s*ce+c*ue,i[12]=a*te+o*ae+s*C+c*de,i[1]=l*x+u*ne+d*oe+f*w,i[5]=l*S+u*re+d*se+f*le,i[9]=l*ee+u*ie+d*ce+f*ue,i[13]=l*te+u*ae+d*C+f*de,i[2]=p*x+m*ne+h*oe+g*w,i[6]=p*S+m*re+h*se+g*le,i[10]=p*ee+m*ie+h*ce+g*ue,i[14]=p*te+m*ae+h*C+g*de,i[3]=_*x+v*ne+y*oe+b*w,i[7]=_*S+v*re+y*se+b*le,i[11]=_*ee+v*ie+y*ce+b*ue,i[15]=_*te+v*ae+y*C+b*de,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];return p*(+i*s*u-r*c*u-i*o*d+n*c*d+r*o*f-n*s*f)+m*(+t*s*f-t*c*d+i*a*d-r*a*f+r*c*l-i*s*l)+h*(+t*c*u-t*o*f-i*a*u+n*a*f+i*o*l-n*c*l)+g*(-r*o*l-t*s*u+t*o*d+r*a*u-n*a*d+n*s*l)}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],_=u*h*c-m*d*c+m*s*f-o*h*f-u*s*g+o*d*g,v=p*d*c-l*h*c-p*s*f+a*h*f+l*s*g-a*d*g,y=l*m*c-p*u*c+p*o*f-a*m*f-l*o*g+a*u*g,b=p*u*s-l*m*s-p*o*d+a*m*d+l*o*h-a*u*h,x=t*_+n*v+r*y+i*b;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/x;return e[0]=_*S,e[1]=(m*d*i-u*h*i-m*r*f+n*h*f+u*r*g-n*d*g)*S,e[2]=(o*h*i-m*s*i+m*r*c-n*h*c-o*r*g+n*s*g)*S,e[3]=(u*s*i-o*d*i-u*r*c+n*d*c+o*r*f-n*s*f)*S,e[4]=v*S,e[5]=(l*h*i-p*d*i+p*r*f-t*h*f-l*r*g+t*d*g)*S,e[6]=(p*s*i-a*h*i-p*r*c+t*h*c+a*r*g-t*s*g)*S,e[7]=(a*d*i-l*s*i+l*r*c-t*d*c-a*r*f+t*s*f)*S,e[8]=y*S,e[9]=(p*u*i-l*m*i-p*n*f+t*m*f+l*n*g-t*u*g)*S,e[10]=(a*m*i-p*o*i+p*n*c-t*m*c-a*n*g+t*o*g)*S,e[11]=(l*o*i-a*u*i-l*n*c+t*u*c+a*n*f-t*o*f)*S,e[12]=b*S,e[13]=(l*m*r-p*u*r+p*n*d-t*m*d-l*n*h+t*u*h)*S,e[14]=(p*o*r-a*m*r-p*n*s+t*m*s+a*n*h-t*o*h)*S,e[15]=(a*u*r-l*o*r+l*n*s-t*u*s-a*n*d+t*o*d)*S,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,i=Lt.set(r[0],r[1],r[2]).length(),a=Lt.set(r[4],r[5],r[6]).length(),o=Lt.set(r[8],r[9],r[10]).length();this.determinant()<0&&(i=-i),e.x=r[12],e.y=r[13],e.z=r[14],Rt.copy(this);let s=1/i,c=1/a,l=1/o;return Rt.elements[0]*=s,Rt.elements[1]*=s,Rt.elements[2]*=s,Rt.elements[4]*=c,Rt.elements[5]*=c,Rt.elements[6]*=c,Rt.elements[8]*=l,Rt.elements[9]*=l,Rt.elements[10]*=l,t.setFromRotationMatrix(Rt),n.x=i,n.y=a,n.z=o,this}makePerspective(e,t,n,r,i,a,o=he){let s=this.elements,c=2*i/(t-e),l=2*i/(n-r),u=(t+e)/(t-e),d=(n+r)/(n-r),f,p;if(o===2e3)f=-(a+i)/(a-i),p=-2*a*i/(a-i);else if(o===2001)f=-a/(a-i),p=-a*i/(a-i);else throw Error(`THREE.Matrix4.makePerspective(): Invalid coordinate system: `+o);return s[0]=c,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=l,s[9]=d,s[13]=0,s[2]=0,s[6]=0,s[10]=f,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,r,i,a,o=he){let s=this.elements,c=1/(t-e),l=1/(n-r),u=1/(a-i),d=(t+e)*c,f=(n+r)*l,p,m;if(o===2e3)p=(a+i)*u,m=-2*u;else if(o===2001)p=i*u,m=-1*u;else throw Error(`THREE.Matrix4.makeOrthographic(): Invalid coordinate system: `+o);return s[0]=2*c,s[4]=0,s[8]=0,s[12]=-d,s[1]=0,s[5]=2*l,s[9]=0,s[13]=-f,s[2]=0,s[6]=0,s[10]=m,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[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}};let Lt=new A,Rt=new j,zt=new A(0,0,0),Bt=new A(1,1,1),Vt=new A,Ht=new A,Ut=new A,Wt=new j,Gt=new st;var Kt=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(xe(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(-xe(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(xe(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(-xe(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(xe(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(-xe(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:console.warn(`THREE.Euler: .setFromRotationMatrix() encountered an unknown order: `+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Wt.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Wt,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Gt.setFromEuler(this),this.setFromQuaternion(Gt,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}};Kt.DEFAULT_ORDER=`XYZ`;var qt=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type=`InstancedMesh`,r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type=`BatchedMesh`,r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));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;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(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.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(i)):r.set(0,0,0)}static getBarycoord(e,t,n,r,i){un.subVectors(r,t),dn.subVectors(n,t),fn.subVectors(e,t);let a=un.dot(un),o=un.dot(dn),s=un.dot(fn),c=dn.dot(dn),l=dn.dot(fn),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,pn)===null?!1:pn.x>=0&&pn.y>=0&&pn.x+pn.y<=1}static getInterpolation(e,t,n,r,i,a,o,s){return this.getBarycoord(e,t,n,r,pn)===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,pn.x),s.addScaledVector(a,pn.y),s.addScaledVector(o,pn.z),s)}static getInterpolatedAttribute(e,t,n,r,i,a){return bn.setScalar(0),xn.setScalar(0),Sn.setScalar(0),bn.fromBufferAttribute(e,t),xn.fromBufferAttribute(e,n),Sn.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(bn,i.x),a.addScaledVector(xn,i.y),a.addScaledVector(Sn,i.z),a}static isFrontFacing(e,t,n,r){return un.subVectors(n,t),dn.subVectors(e,t),un.cross(dn).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 un.subVectors(this.c,this.b),dn.subVectors(this.a,this.b),un.cross(dn).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;mn.subVectors(r,n),hn.subVectors(i,n),_n.subVectors(e,n);let s=mn.dot(_n),c=hn.dot(_n);if(s<=0&&c<=0)return t.copy(n);vn.subVectors(e,r);let l=mn.dot(vn),u=hn.dot(vn);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(mn,a);yn.subVectors(e,i);let f=mn.dot(yn),p=hn.dot(yn);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(hn,o);let h=l*p-f*u;if(h<=0&&u-l>=0&&f-p>=0)return gn.subVectors(i,r),o=(u-l)/(u-l+(f-p)),t.copy(r).addScaledVector(gn,o);let g=1/(h+m+d);return a=m*g,o=d*g,t.copy(n).addScaledVector(mn,a).addScaledVector(hn,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};let wn={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},Tn={h:0,s:0,l:0},En={h:0,s:0,l:0};function Dn(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 N=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=C){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ye.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Ye.workingColorSpace){return this.r=e,this.g=t,this.b=n,Ye.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Ye.workingColorSpace){if(e=Se(e,1),t=xe(t,0,1),n=xe(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=Dn(i,r,e+1/3),this.g=Dn(i,r,e),this.b=Dn(i,r,e-1/3)}return Ye.toWorkingColorSpace(this,r),this}setStyle(e,t=C){function n(t){t!==void 0&&parseFloat(t)<1&&console.warn(`THREE.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:console.warn(`THREE.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);console.warn(`THREE.Color: Invalid hex color `+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=C){let n=wn[e.toLowerCase()];return n===void 0?console.warn(`THREE.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=Xe(e.r),this.g=Xe(e.g),this.b=Xe(e.b),this}copyLinearToSRGB(e){return this.r=Ze(e.r),this.g=Ze(e.g),this.b=Ze(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=C){return Ye.fromWorkingColorSpace(P.copy(this),e),Math.round(xe(P.r*255,0,255))*65536+Math.round(xe(P.g*255,0,255))*256+Math.round(xe(P.b*255,0,255))}getHexString(e=C){return(`000000`+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ye.workingColorSpace){Ye.fromWorkingColorSpace(P.copy(this),t);let n=P.r,r=P.g,i=P.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+(r0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){console.warn(`THREE.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.6,type:`Material`,generator:`Material.toJSON`}};n.uuid=this.uuid,n.type=this.type,this.name!==``&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==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.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.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++}},An=class extends kn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type=`MeshBasicMaterial`,this.color=new N(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 Kt,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}};let F=new A,jn=new D;var Mn=class{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError(`THREE.BufferAttribute: array should be a Typed Array.`);this.isBufferAttribute=!0,this.name=``,this.array=e,this.itemSize=t,this.count=e===void 0?0:e.length/t,this.normalized=n,this.usage=me,this.updateRanges=[],this.gpuType=d,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;r0&&(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;t0&&(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={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let 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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2))&&(Un.copy(i).invert(),Wn.copy(e.ray).applyMatrix4(Un),!(n.boundingBox!==null&&Wn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Wn)))}_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;in.far?null:{distance:l,point:$n.clone(),object:e}}function nr(e,t,n,r,i,a,o,s,c,l){e.getVertexPosition(s,qn),e.getVertexPosition(c,Jn),e.getVertexPosition(l,Yn);let u=tr(e,t,n,r,qn,Jn,Yn,Qn);if(u){let e=new A;Cn.getBarycoord(Qn,qn,Jn,Yn,e),i&&(u.uv=Cn.getInterpolatedAttribute(i,s,c,l,e,new D)),a&&(u.uv1=Cn.getInterpolatedAttribute(a,s,c,l,e,new D)),o&&(u.normal=Cn.getInterpolatedAttribute(o,s,c,l,e,new A),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));let t={a:s,b:c,c:l,normal:new A,materialIndex:0};Cn.getNormal(qn,Jn,Yn,t.normal),u.face=t,u.barycoord=e}return u}function rr(e){let t={};for(let n in e){t[n]={};for(let r in e[n]){let i=e[n][r];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn(`UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().`),t[n][r]=null):t[n][r]=i.clone():Array.isArray(i)?t[n][r]=i.slice():t[n][r]=i}}return t}function ir(e){let t={};for(let n=0;n1?null:t.copy(e.start).addScaledVector(n,i)}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||hr.getNormalMatrix(e),r=this.coplanarPoint(pr).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)}};let _r=new Ot,vr=new A;var yr=class{constructor(e=new gr,t=new gr,n=new gr,r=new gr,i=new gr,a=new gr){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=he){let n=this.planes,r=e.elements,i=r[0],a=r[1],o=r[2],s=r[3],c=r[4],l=r[5],u=r[6],d=r[7],f=r[8],p=r[9],m=r[10],h=r[11],g=r[12],_=r[13],v=r[14],y=r[15];if(n[0].setComponents(s-i,d-c,h-f,y-g).normalize(),n[1].setComponents(s+i,d+c,h+f,y+g).normalize(),n[2].setComponents(s+a,d+l,h+p,y+_).normalize(),n[3].setComponents(s-a,d-l,h-p,y-_).normalize(),n[4].setComponents(s-o,d-u,h-m,y-v).normalize(),t===2e3)n[5].setComponents(s+o,d+u,h+m,y+v).normalize();else if(t===2001)n[5].setComponents(o,u,m,v).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(),_r.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),_r.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(_r)}intersectsSprite(e){return _r.center.set(0,0,0),_r.radius=.7071067811865476,_r.applyMatrix4(e.matrixWorld),this.intersectsSphere(_r)}intersectsSphere(e){let t=this.planes,n=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,vr.y=r.normal.y>0?e.max.y:e.min.y,vr.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(vr)<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)}};let L={alphahash_fragment:`#ifdef USE_ALPHAHASH + if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; +#endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH + const float ALPHA_HASH_SCALE = 0.05; + float hash2D( vec2 value ) { + return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); + } + float hash3D( vec3 value ) { + return hash2D( vec2( hash2D( value.xy ), value.z ) ); + } + float getAlphaHashThreshold( vec3 position ) { + float maxDeriv = max( + length( dFdx( position.xyz ) ), + length( dFdy( position.xyz ) ) + ); + float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv ); + vec2 pixScales = vec2( + exp2( floor( log2( pixScale ) ) ), + exp2( ceil( log2( pixScale ) ) ) + ); + vec2 alpha = vec2( + hash3D( floor( pixScales.x * position.xyz ) ), + hash3D( floor( pixScales.y * position.xyz ) ) + ); + float lerpFactor = fract( log2( pixScale ) ); + float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y; + float a = min( lerpFactor, 1.0 - lerpFactor ); + vec3 cases = vec3( + x * x / ( 2.0 * a * ( 1.0 - a ) ), + ( x - 0.5 * a ) / ( 1.0 - a ), + 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) ) + ); + float threshold = ( x < ( 1.0 - a ) ) + ? ( ( x < a ) ? cases.x : cases.y ) + : cases.z; + return clamp( threshold , 1.0e-6, 1.0 ); + } +#endif`,alphamap_fragment:`#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`,alphamap_pars_fragment:`#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,alphatest_fragment:`#ifdef USE_ALPHATEST + #ifdef ALPHA_TO_COVERAGE + diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); + if ( diffuseColor.a == 0.0 ) discard; + #else + if ( diffuseColor.a < alphaTest ) discard; + #endif +#endif`,alphatest_pars_fragment:`#ifdef USE_ALPHATEST + uniform float alphaTest; +#endif`,aomap_fragment:`#ifdef USE_AOMAP + float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; + reflectedLight.indirectDiffuse *= ambientOcclusion; + #if defined( USE_CLEARCOAT ) + clearcoatSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_SHEEN ) + sheenSpecularIndirect *= ambientOcclusion; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) + float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); + reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); + #endif +#endif`,aomap_pars_fragment:`#ifdef USE_AOMAP + uniform sampler2D aoMap; + uniform float aoMapIntensity; +#endif`,batching_pars_vertex:`#ifdef USE_BATCHING + #if ! defined( GL_ANGLE_multi_draw ) + #define gl_DrawID _gl_DrawID + uniform int _gl_DrawID; + #endif + uniform highp sampler2D batchingTexture; + uniform highp usampler2D batchingIdTexture; + mat4 getBatchingMatrix( const in float i ) { + int size = textureSize( batchingTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } + float getIndirectIndex( const in int i ) { + int size = textureSize( batchingIdTexture, 0 ).x; + int x = i % size; + int y = i / size; + return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r ); + } +#endif +#ifdef USE_BATCHING_COLOR + uniform sampler2D batchingColorTexture; + vec3 getBatchingColor( const in float i ) { + int size = textureSize( batchingColorTexture, 0 ).x; + int j = int( i ); + int x = j % size; + int y = j / size; + return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb; + } +#endif`,batching_vertex:`#ifdef USE_BATCHING + mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); +#endif`,begin_vertex:`vec3 transformed = vec3( position ); +#ifdef USE_ALPHAHASH + vPosition = vec3( position ); +#endif`,beginnormal_vertex:`vec3 objectNormal = vec3( normal ); +#ifdef USE_TANGENT + vec3 objectTangent = vec3( tangent.xyz ); +#endif`,bsdfs:`float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( specularColor, 1.0, dotVH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} // validated`,iridescence_fragment:`#ifdef USE_IRIDESCENCE + const mat3 XYZ_TO_REC709 = mat3( + 3.2404542, -0.9692660, 0.0556434, + -1.5371385, 1.8760108, -0.2040259, + -0.4985314, 0.0415560, 1.0572252 + ); + vec3 Fresnel0ToIor( vec3 fresnel0 ) { + vec3 sqrtF0 = sqrt( fresnel0 ); + return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 ); + } + vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) ); + } + float IorToFresnel0( float transmittedIor, float incidentIor ) { + return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor )); + } + vec3 evalSensitivity( float OPD, vec3 shift ) { + float phase = 2.0 * PI * OPD * 1.0e-9; + vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 ); + vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 ); + vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 ); + vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var ); + xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) ); + xyz /= 1.0685e-7; + vec3 rgb = XYZ_TO_REC709 * xyz; + return rgb; + } + vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) { + vec3 I; + float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) ); + float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) ); + float cosTheta2Sq = 1.0 - sinTheta2Sq; + if ( cosTheta2Sq < 0.0 ) { + return vec3( 1.0 ); + } + float cosTheta2 = sqrt( cosTheta2Sq ); + float R0 = IorToFresnel0( iridescenceIOR, outsideIOR ); + float R12 = F_Schlick( R0, 1.0, cosTheta1 ); + float T121 = 1.0 - R12; + float phi12 = 0.0; + if ( iridescenceIOR < outsideIOR ) phi12 = PI; + float phi21 = PI - phi12; + vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR ); + vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 ); + vec3 phi23 = vec3( 0.0 ); + if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI; + if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI; + if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI; + float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2; + vec3 phi = vec3( phi21 ) + phi23; + vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 ); + vec3 r123 = sqrt( R123 ); + vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 ); + vec3 C0 = R12 + Rs; + I = C0; + vec3 Cm = Rs - T121; + for ( int m = 1; m <= 2; ++ m ) { + Cm *= r123; + vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi ); + I += Cm * Sm; + } + return max( I, vec3( 0.0 ) ); + } +#endif`,bumpmap_pars_fragment:`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vBumpMapUv ); + vec2 dSTdy = dFdy( vBumpMapUv ); + float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) ); + vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,clipping_planes_fragment:`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,common:`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,colorspace_fragment:`gl_FragColor = linearToOutputTexel( gl_FragColor );`,colorspace_pars_fragment:` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,envmap_fragment:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,envmap_physical_pars_fragment:`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,envmap_vertex:`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,fog_vertex:`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,fog_pars_vertex:`#ifdef USE_FOG + varying float vFogDepth; +#endif`,fog_fragment:`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,fog_pars_fragment:`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,lights_lambert_fragment:`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,lights_toon_fragment:`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,lights_fragment_begin:` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,map_fragment:`#ifdef USE_MAP +#ifdef USE_MIPMAP_BIAS + vec4 sampledDiffuseColor = texture2D( map, vMapUv, mipmapBias ); +#else + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); +#endif + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,map_pars_fragment:`#ifdef USE_MAP + uniform sampler2D map; + +#ifdef USE_MIPMAP_BIAS + uniform float mipmapBias; +#endif +#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,map_particle_pars_fragment:`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,metalnessmap_fragment:`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,morphinstance_vertex:`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,normal_fragment_maps:`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,normal_vertex:`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,opaque_fragment:`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,dithering_pars_fragment:`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,roughnessmap_fragment:`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,shadowmask_pars_fragment:`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,skinbase_vertex:`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,skinning_vertex:`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,skinnormal_vertex:`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,specularmap_fragment:`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,tonemapping_pars_fragment:`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,uv_pars_fragment:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_pars_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,uv_vertex:`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,background_vert:`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,background_frag:`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,backgroundCube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,cube_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,cube_frag:`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,depth_vert:`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,depth_frag:`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,distanceRGBA_vert:`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,distanceRGBA_frag:`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,equirect_vert:`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,equirect_frag:`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,linedashed_vert:`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,linedashed_frag:`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,meshbasic_vert:`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,meshbasic_frag:`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,meshlambert_vert:`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshlambert_frag:`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshmatcap_vert:`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,meshmatcap_frag:`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,meshnormal_vert:`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,meshnormal_frag:`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,meshphong_vert:`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,meshphong_frag:`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,meshphysical_vert:`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,meshphysical_frag:`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,meshtoon_vert:`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,meshtoon_frag:`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,points_vert:`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,points_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,shadow_vert:`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,shadow_frag:`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,sprite_vert:`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,sprite_frag:`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`},R={common:{diffuse:{value:new N(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new O},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new O}},envmap:{envMap:{value:null},envMapRotation:{value:new O},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new O}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new O}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new O},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new O},normalScale:{value:new D(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new O},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new O}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new O}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new O}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new N(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new N(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0},uvTransform:{value:new O}},sprite:{diffuse:{value:new N(16777215)},opacity:{value:1},center:{value:new D(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new O},alphaMap:{value:null},alphaMapTransform:{value:new O},alphaTest:{value:0}}},br={basic:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.fog]),vertexShader:L.meshbasic_vert,fragmentShader:L.meshbasic_frag},lambert:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.fog,R.lights,{emissive:{value:new N(0)}}]),vertexShader:L.meshlambert_vert,fragmentShader:L.meshlambert_frag},phong:{uniforms:ir([R.common,R.specularmap,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.fog,R.lights,{emissive:{value:new N(0)},specular:{value:new N(1118481)},shininess:{value:30}}]),vertexShader:L.meshphong_vert,fragmentShader:L.meshphong_frag},standard:{uniforms:ir([R.common,R.envmap,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.roughnessmap,R.metalnessmap,R.fog,R.lights,{emissive:{value:new N(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:L.meshphysical_vert,fragmentShader:L.meshphysical_frag},toon:{uniforms:ir([R.common,R.aomap,R.lightmap,R.emissivemap,R.bumpmap,R.normalmap,R.displacementmap,R.gradientmap,R.fog,R.lights,{emissive:{value:new N(0)}}]),vertexShader:L.meshtoon_vert,fragmentShader:L.meshtoon_frag},matcap:{uniforms:ir([R.common,R.bumpmap,R.normalmap,R.displacementmap,R.fog,{matcap:{value:null}}]),vertexShader:L.meshmatcap_vert,fragmentShader:L.meshmatcap_frag},points:{uniforms:ir([R.points,R.fog]),vertexShader:L.points_vert,fragmentShader:L.points_frag},dashed:{uniforms:ir([R.common,R.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:L.linedashed_vert,fragmentShader:L.linedashed_frag},depth:{uniforms:ir([R.common,R.displacementmap]),vertexShader:L.depth_vert,fragmentShader:L.depth_frag},normal:{uniforms:ir([R.common,R.bumpmap,R.normalmap,R.displacementmap,{opacity:{value:1}}]),vertexShader:L.meshnormal_vert,fragmentShader:L.meshnormal_frag},sprite:{uniforms:ir([R.sprite,R.fog]),vertexShader:L.sprite_vert,fragmentShader:L.sprite_frag},background:{uniforms:{uvTransform:{value:new O},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:L.background_vert,fragmentShader:L.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new O}},vertexShader:L.backgroundCube_vert,fragmentShader:L.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:L.cube_vert,fragmentShader:L.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:L.equirect_vert,fragmentShader:L.equirect_frag},distanceRGBA:{uniforms:ir([R.common,R.displacementmap,{referencePosition:{value:new A},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:L.distanceRGBA_vert,fragmentShader:L.distanceRGBA_frag},shadow:{uniforms:ir([R.lights,R.fog,{color:{value:new N(0)},opacity:{value:1}}]),vertexShader:L.shadow_vert,fragmentShader:L.shadow_frag}};br.physical={uniforms:ir([br.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new O},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new O},clearcoatNormalScale:{value:new D(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new O},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new O},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new O},sheen:{value:0},sheenColor:{value:new N(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new O},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new O},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new O},transmissionSamplerSize:{value:new D},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new O},attenuationDistance:{value:0},attenuationColor:{value:new N(0)},specularColor:{value:new N(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new O},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new O},anisotropyVector:{value:new D},anisotropyMap:{value:null},anisotropyMapTransform:{value:new O}}]),vertexShader:L.meshphysical_vert,fragmentShader:L.meshphysical_frag};var xr=class extends cr{constructor(e=-1,t=1,n=1,r=-1,i=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type=`OrthographicCamera`,this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=i,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,i,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=i,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2,i=n-e,a=n+e,o=r+t,s=r-t;if(this.view!==null&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;i+=e*this.view.offsetX,a=i+e*this.view.width,o-=t*this.view.offsetY,s=o-t*this.view.height}this.projectionMatrix.makeOrthographic(i,a,o,s,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};let Sr=(1+Math.sqrt(5))/2,Cr=1/Sr;-Sr,-Cr,-Cr;var wr=class extends it{constructor(e,t,n,r,i,a,s,c,l,u=1026){if(u!==1026&&u!==1027)throw Error(`DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat`);n===void 0&&u===1026&&(n=1014),n===void 0&&u===1027&&(n=1020),super(null,r,i,a,s,c,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=s===void 0?o:s,this.minFilter=c===void 0?o:c,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}},Tr=class extends M{constructor(){super(),this.isGroup=!0,this.type=`Group`}},Er=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e===void 0?0:e.length/t,this.usage=me,this.updateRanges=[],this.version=0,this.uuid=be()}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;r0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er)return;ai.applyMatrix4(e.matrixWorld);let s=t.ray.origin.distanceTo(ai);if(!(st.far))return{distance:s,point:oi.clone().applyMatrix4(e.matrixWorld),index:i,face:null,faceIndex:null,barycoord:null,object:e}}let li=new A,ui=new A;var di=class extends si{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;e0){let n=e[t[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei.far)return;a.push({distance:c,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:o})}}var bi=class extends it{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=o,this.minFilter=o,this.generateMipmaps=!1,this.needsUpdate=!0}},xi=class extends it{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}},Si=class extends xi{constructor(e,t,n,r,a,o){super(e,t,n,a,o),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=i,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}},Ci=class extends xi{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}},wi=class extends kn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:``},this.type=`MeshStandardMaterial`,this.color=new N(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new N(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new D(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Kt,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap=`round`,this.wireframeLinejoin=`round`,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:``},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ti=class extends wi{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:``,PHYSICAL:``},this.type=`MeshPhysicalMaterial`,this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new D(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,`reflectivity`,{get:function(){return xe(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new N(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new N(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new N(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:``,PHYSICAL:``},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}};function Ei(e,t,n){return!e||!n&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT==`number`?new t(e):Array.prototype.slice.call(e)}function Di(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Oi(e){function t(t,n){return e[t]-e[n]}let n=e.length,r=Array(n);for(let e=0;e!==n;++e)r[e]=e;return r.sort(t),r}function ki(e,t,n){let r=e.length,i=new e.constructor(r);for(let a=0,o=0;o!==r;++a){let r=n[a]*t;for(let n=0;n!==t;++n)i[o++]=e[r+n]}return i}function Ai(e,t,n,r){let i=1,a=e[0];for(;a!==void 0&&a[r]===void 0;)a=e[i++];if(a===void 0)return;let o=a[r];if(o!==void 0)if(Array.isArray(o))do o=a[r],o!==void 0&&(t.push(a.time),n.push.apply(n,o)),a=e[i++];while(a!==void 0);else if(o.toArray!==void 0)do o=a[r],o!==void 0&&(t.push(a.time),o.toArray(n,n.length)),a=e[i++];while(a!==void 0);else do o=a[r],o!==void 0&&(t.push(a.time),n.push(o)),a=e[i++];while(a!==void 0)}var ji=class{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r===void 0?new t.constructor(n):r,this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,r=t[n],i=t[n-1];validate_interval:{seek:{let a;linear_scan:{forward_scan:if(!(e=i)){let o=t[1];e=i)break seek}a=n,n=0;break linear_scan}break validate_interval}for(;n>>1;et;)--a;if(++a,i!==0||a!==r){i>=a&&(a=Math.max(a,1),i=a-1);let e=this.getValueSize();this.times=n.slice(i,a),this.values=this.values.slice(i*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error(`THREE.KeyframeTrack: Invalid value size in track.`,this),e=!1);let n=this.times,r=this.values,i=n.length;i===0&&(console.error(`THREE.KeyframeTrack: Track is empty.`,this),e=!1);let a=null;for(let t=0;t!==i;t++){let r=n[t];if(typeof r==`number`&&isNaN(r)){console.error(`THREE.KeyframeTrack: Time is not a valid number.`,this,t,r),e=!1;break}if(a!==null&&a>r){console.error(`THREE.KeyframeTrack: Out of order keys.`,this,t,r,a),e=!1;break}a=r}if(r!==void 0&&Di(r))for(let t=0,n=r.length;t!==n;++t){let n=r[t];if(isNaN(n)){console.error(`THREE.KeyframeTrack: Value is not a valid number.`,this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===ae,i=e.length-1,a=1;for(let o=1;o0){e[a]=e[i];for(let e=i*n,r=a*n,o=0;o!==n;++o)t[r+o]=t[e+o];++a}return a===e.length?(this.times=e,this.values=t):(this.times=e.slice(0,a),this.values=t.slice(0,a*n)),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Fi.prototype.TimeBufferType=Float32Array,Fi.prototype.ValueBufferType=Float32Array,Fi.prototype.DefaultInterpolation=ie;var Ii=class extends Fi{constructor(e,t,n){super(e,t,n)}};Ii.prototype.ValueTypeName=`bool`,Ii.prototype.ValueBufferType=Array,Ii.prototype.DefaultInterpolation=re,Ii.prototype.InterpolantFactoryMethodLinear=void 0,Ii.prototype.InterpolantFactoryMethodSmooth=void 0;var Li=class extends Fi{};Li.prototype.ValueTypeName=`color`;var Ri=class extends Fi{};Ri.prototype.ValueTypeName=`number`;var zi=class extends ji{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(r-t),c=e*o;for(let e=c+o;c!==e;c+=4)st.slerpFlat(i,0,a,c-o,a,c,s);return i}},Bi=class extends Fi{InterpolantFactoryMethodLinear(e){return new zi(this.times,this.values,this.getValueSize(),e)}};Bi.prototype.ValueTypeName=`quaternion`,Bi.prototype.InterpolantFactoryMethodSmooth=void 0;var Vi=class extends Fi{constructor(e,t,n){super(e,t,n)}};Vi.prototype.ValueTypeName=`string`,Vi.prototype.ValueBufferType=Array,Vi.prototype.DefaultInterpolation=re,Vi.prototype.InterpolantFactoryMethodLinear=void 0,Vi.prototype.InterpolantFactoryMethodSmooth=void 0;var Hi=class extends Fi{};Hi.prototype.ValueTypeName=`vector`;var Ui=class{constructor(e=``,t=-1,n=[],r=2500){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=be(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,r=1/(e.fps||1);for(let e=0,i=n.length;e!==i;++e)t.push(Gi(n[e]).scale(r));let i=new this(e.name,e.duration,t,e.blendMode);return i.uuid=e.uuid,i}static toJSON(e){let t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=n.length;e!==r;++e)t.push(Fi.toJSON(n[e]));return r}static CreateFromMorphTargetSequence(e,t,n,r){let i=t.length,a=[];for(let e=0;e1){let e=a[1],t=r[e];t||(r[e]=t=[]),t.push(n)}}let a=[];for(let e in r)a.push(this.CreateFromMorphTargetSequence(e,r[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error(`THREE.AnimationClip: No animation in JSONLoader data.`),null;let n=function(e,t,n,r,i){if(n.length!==0){let a=[],o=[];Ai(n,a,o,r),a.length!==0&&i.push(new e(t,a,o))}},r=[],i=e.name||`default`,a=e.fps||30,o=e.blendMode,s=e.length||-1,c=e.hierarchy||[];for(let e=0;e{t&&t(i),this.manager.itemEnd(e)},0),i;if(Yi[e]!==void 0){Yi[e].push({onLoad:t,onProgress:n,onError:r});return}Yi[e]=[],Yi[e].push({onLoad:t,onProgress:n,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?`include`:`same-origin`}),o=this.mimeType,s=this.responseType;fetch(a).then(t=>{if(t.status===200||t.status===0){if(t.status===0&&console.warn(`THREE.FileLoader: HTTP Status 0 received.`),typeof ReadableStream>`u`||t.body===void 0||t.body.getReader===void 0)return t;let n=Yi[e],r=t.body.getReader(),i=t.headers.get(`X-File-Size`)||t.headers.get(`Content-Length`),a=i?parseInt(i):0,o=a!==0,s=0,c=new ReadableStream({start(e){t();function t(){r.read().then(({done:r,value:i})=>{if(r)e.close();else{s+=i.byteLength;let r=new ProgressEvent(`progress`,{lengthComputable:o,loaded:s,total:a});for(let e=0,t=n.length;e{e.error(t)})}}});return new Response(c)}else throw new Xi(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(s){case`arraybuffer`:return e.arrayBuffer();case`blob`:return e.blob();case`document`:return e.text().then(e=>new DOMParser().parseFromString(e,o));case`json`:return e.json();default:if(o===void 0)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(n);return e.arrayBuffer().then(e=>r.decode(e))}}}).then(t=>{Ki.add(e,t);let n=Yi[e];delete Yi[e];for(let e=0,r=n.length;e{let n=Yi[e];if(n===void 0)throw this.manager.itemError(e),t;delete Yi[e];for(let e=0,r=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},Qi=class extends Ji{constructor(e){super(e)}load(e,t,n,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Ki.get(e);if(a!==void 0)return i.manager.itemStart(e),setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a;let o=We(`img`);function s(){l(),Ki.add(e,this),t&&t(this),i.manager.itemEnd(e)}function c(t){l(),r&&r(t),i.manager.itemError(e),i.manager.itemEnd(e)}function l(){o.removeEventListener(`load`,s,!1),o.removeEventListener(`error`,c,!1)}return o.addEventListener(`load`,s,!1),o.addEventListener(`error`,c,!1),e.slice(0,5)!==`data:`&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),i.manager.itemStart(e),o.src=e,o}},$i=class extends Ji{constructor(e){super(e)}load(e,t,n,r){let i=new it,a=new Qi(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(e){i.image=e,i.needsUpdate=!0,t!==void 0&&t(i)},n,r),i}},ea=class extends M{constructor(e,t=1){super(),this.isLight=!0,this.type=`Light`,this.color=new N(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}};let ta=new j,na=new A,ra=new A;var ia=class{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new D(512,512),this.map=null,this.mapPass=null,this.matrix=new j,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new yr,this._frameExtents=new D(1,1),this._viewportCount=1,this._viewports=[new k(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,n=this.matrix;na.setFromMatrixPosition(e.matrixWorld),t.position.copy(na),ra.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(ra),t.updateMatrixWorld(),ta.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ta),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(ta)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},aa=class extends ia{constructor(){super(new fr(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,n=ye*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,i=e.distance||t.far;(n!==t.fov||r!==t.aspect||i!==t.far)&&(t.fov=n,t.aspect=r,t.far=i,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},oa=class extends ea{constructor(e,t,n=0,r=Math.PI/3,i=0,a=2){super(e,t),this.isSpotLight=!0,this.type=`SpotLight`,this.position.copy(M.DEFAULT_UP),this.updateMatrix(),this.target=new M,this.distance=n,this.angle=r,this.penumbra=i,this.decay=a,this.map=null,this.shadow=new aa}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};let sa=new j,ca=new A,la=new A;var ua=class extends ia{constructor(){super(new fr(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new D(4,2),this._viewportCount=6,this._viewports=[new k(2,1,1,1),new k(0,1,1,1),new k(3,1,1,1),new k(1,1,1,1),new k(3,0,1,1),new k(1,0,1,1)],this._cubeDirections=[new A(1,0,0),new A(-1,0,0),new A(0,0,1),new A(0,0,-1),new A(0,1,0),new A(0,-1,0)],this._cubeUps=[new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,0,1),new A(0,0,-1)]}updateMatrices(e,t=0){let n=this.camera,r=this.matrix,i=e.distance||n.far;i!==n.far&&(n.far=i,n.updateProjectionMatrix()),ca.setFromMatrixPosition(e.matrixWorld),n.position.copy(ca),la.copy(n.position),la.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(la),n.updateMatrixWorld(),r.makeTranslation(-ca.x,-ca.y,-ca.z),sa.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(sa)}},da=class extends ea{constructor(e,t,n=0,r=2){super(e,t),this.isPointLight=!0,this.type=`PointLight`,this.distance=n,this.decay=r,this.shadow=new ua}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},fa=class extends ia{constructor(){super(new xr(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},pa=class extends ea{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type=`DirectionalLight`,this.position.copy(M.DEFAULT_UP),this.updateMatrix(),this.target=new M,this.shadow=new fa}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},ma=class{static decodeText(e){if(console.warn(`THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.`),typeof TextDecoder<`u`)return new TextDecoder().decode(e);let t=``;for(let n=0,r=e.length;n`u`&&console.warn(`THREE.ImageBitmapLoader: createImageBitmap() not supported.`),typeof fetch>`u`&&console.warn(`THREE.ImageBitmapLoader: fetch() not supported.`),this.options={premultiplyAlpha:`none`}}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=``),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let i=this,a=Ki.get(e);if(a!==void 0){if(i.manager.itemStart(e),a.then){a.then(n=>{t&&t(n),i.manager.itemEnd(e)}).catch(e=>{r&&r(e)});return}return setTimeout(function(){t&&t(a),i.manager.itemEnd(e)},0),a}let o={};o.credentials=this.crossOrigin===`anonymous`?`same-origin`:`include`,o.headers=this.requestHeader;let s=fetch(e,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(i.options,{colorSpaceConversion:`none`}))}).then(function(n){return Ki.add(e,n),t&&t(n),i.manager.itemEnd(e),n}).catch(function(t){r&&r(t),Ki.remove(e),i.manager.itemError(e),i.manager.itemEnd(e)});Ki.add(e,s),i.manager.itemStart(e)}};let ga=`\\[\\]\\.:\\/`,_a=RegExp(`[`+ga+`]`,`g`);``+ga;let va=`[^`+ga.replace(`\\.`,``)+`]`,ya=RegExp(`^((?:[^\\[\\]\\.:\\/]+[\\/:])*)`+`(WCOD+)?`.replace(`WCOD`,va)+`(?:\\.([^\\[\\]\\.:\\/]+)(?:\\[(.+)\\])?)?\\.([^\\[\\]\\.:\\/]+)(?:\\[(.+)\\])?$`),ba=[`material`,`materials`,`bones`,`map`];var xa=class{constructor(e,t,n){let r=n||z.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,i=n.length;r!==i;++r)n[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},z=class e{constructor(t,n,r){this.path=n,this.parsedPath=r||e.parseTrackName(n),this.node=e.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,n,r){return t&&t.isAnimationObjectGroup?new e.Composite(t,n,r):new e(t,n,r)}static sanitizeNodeName(e){return e.replace(/\s/g,`_`).replace(_a,``)}static parseTrackName(e){let t=ya.exec(e);if(t===null)throw Error(`PropertyBinding: Cannot parse trackName: `+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(`.`);if(r!==void 0&&r!==-1){let e=n.nodeName.substring(r+1);ba.indexOf(e)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=e)}if(n.propertyName===null||n.propertyName.length===0)throw Error(`PropertyBinding: can not parse propertyName from trackName: `+e);return n}static findNode(e,t){if(t===void 0||t===``||t===`.`||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(e,r){for(let i=0;i>>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)}let Ca=(...e)=>Sa(e);function wa(e,t=!1){let n=[];e.isNode===!0&&(n.push(e.id),e=e.getSelf());for(let{property:r,childNode:i}of Ta(e))n.push(n,Sa(r.slice(0,-4)),i.getCacheKey(t));return Sa(n)}function*Ta(e,t=!1){for(let n in e){if(n.startsWith(`_`)===!0)continue;let r=e[n];if(Array.isArray(r)===!0)for(let e=0;ee.charCodeAt(0)).buffer}let Aa={VERTEX:`vertex`,FRAGMENT:`fragment`},B={NONE:`none`,FRAME:`frame`,RENDER:`render`,OBJECT:`object`},ja=[`x`,`y`,`z`,`w`],Ma=0;var V=class extends ge{static get type(){return`Node`}constructor(e=null){super(),this.nodeType=e,this.updateType=B.NONE,this.updateBeforeType=B.NONE,this.updateAfterType=B.NONE,this.uuid=Ve.generateUUID(),this.version=0,this._cacheKey=null,this._cacheKeyVersion=0,this.global=!1,this.isNode=!0,Object.defineProperty(this,`id`,{value:Ma++})}set needsUpdate(e){e===!0&&this.version++}get type(){return this.constructor.type}onUpdate(e,t){return this.updateType=t,this.update=e.bind(this.getSelf()),this}onFrameUpdate(e){return this.onUpdate(e,B.FRAME)}onRenderUpdate(e){return this.onUpdate(e,B.RENDER)}onObjectUpdate(e){return this.onUpdate(e,B.OBJECT)}onReference(e){return this.updateReference=e.bind(this.getSelf()),this}getSelf(){return this.self||this}updateReference(){return this}isGlobal(){return this.global}*getChildren(){for(let{childNode:e}of Ta(this))yield e}dispose(){this.dispatchEvent({type:`dispose`})}traverse(e){e(this);for(let t of this.getChildren())t.traverse(e)}getCacheKey(e=!1){return e||=this.version!==this._cacheKeyVersion,(e===!0||this._cacheKey===null)&&(this._cacheKey=wa(this,e),this._cacheKeyVersion=this.version),this._cacheKey}getScope(){return this}getHash(){return this.uuid}getUpdateType(){return this.updateType}getUpdateBeforeType(){return this.updateBeforeType}getUpdateAfterType(){return this.updateAfterType}getElementType(e){let t=this.getNodeType(e);return e.getElementType(t)}getNodeType(e){let t=e.getNodeProperties(this);return t.outputNode?t.outputNode.getNodeType(e):this.nodeType}getShared(e){let t=this.getHash(e);return e.getNodeFromHash(t)||this}setup(e){let t=e.getNodeProperties(this),n=0;for(let e of this.getChildren())t[`node`+ n++]=e;return null}analyze(e){if(e.increaseUsage(this)===1){let t=e.getNodeProperties(this);for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}generate(e,t){let{outputNode:n}=e.getNodeProperties(this);if(n&&n.isNode===!0)return n.build(e,t)}updateBefore(){console.warn(`Abstract function.`)}updateAfter(){console.warn(`Abstract function.`)}update(){console.warn(`Abstract function.`)}build(e,t=null){let n=this.getShared(e);if(this!==n)return n.build(e,t);e.addNode(this),e.addChain(this);let r=null,i=e.getBuildStage();if(i===`setup`){this.updateReference(e);let t=e.getNodeProperties(this);if(t.initialized!==!0){e.stack.nodes.length,t.initialized=!0,t.outputNode=this.setup(e),t.outputNode!==null&&e.stack.nodes.length;for(let n of Object.values(t))n&&n.isNode===!0&&n.build(e)}}else if(i===`analyze`)this.analyze(e);else if(i===`generate`)if(this.generate.length===1){let n=this.getNodeType(e),i=e.getDataFromNode(this);r=i.snippet,r===void 0?(r=this.generate(e)||``,i.snippet=r):i.flowCodes!==void 0&&e.context.nodeBlock!==void 0&&e.addFlowCodeHierarchy(this,e.context.nodeBlock),r=e.format(r,n,t)}else r=this.generate(e,t)||``;return e.removeChain(this),r}getSerializeChildren(){return Ta(this)}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 this[n]=t[e.inputNodes[n]]}}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.6,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}},Na=class extends V{static get type(){return`ArrayElementNode`}constructor(e,t){super(),this.node=e,this.indexNode=t,this.isArrayElementNode=!0}getNodeType(e){return this.node.getElementType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,`uint`)} ]`}},Pa=class extends V{static get type(){return`ConvertNode`}constructor(e,t){super(),this.node=e,this.convertTo=t}getNodeType(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)}},Fa=class extends V{static get type(){return`TempNode`}constructor(e){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)}},Ia=class extends Fa{static get type(){return`JoinNode`}constructor(e=[],t=null){super(t),this.nodes=e}getNodeType(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=this.nodes,i=e.getComponentType(n),a=[];for(let t of r){let n=t.build(e),r=e.getComponentType(t.getNodeType(e));r!==i&&(n=e.format(n,r,i)),a.push(n)}let o=`${e.getType(n)}( ${a.join(`, `)} )`;return e.format(o,n,t)}};let La=ja.join(``);var Ra=class extends V{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(ja.indexOf(t)+1,e);return e}getComponentType(e){return e.getComponentType(this.node.getNodeType(e))}getNodeType(e){return e.getTypeFromLength(this.components.length,this.getComponentType(e))}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===La.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}},za=class extends Fa{static get type(){return`SetNode`}constructor(e,t,n){super(),this.sourceNode=e,this.components=t,this.targetNode=n}getNodeType(e){return this.sourceNode.getNodeType(e)}generate(e){let{sourceNode:t,components:n,targetNode:r}=this,i=this.getNodeType(e),a=e.getTypeFromLength(n.length,r.getNodeType(e)),o=r.build(e,a),s=t.build(e,i),c=e.getTypeLength(i),l=[];for(let e=0;ee.replace(/r|s/g,`x`).replace(/g|t/g,`y`).replace(/b|p/g,`z`).replace(/a|q/g,`w`),Ga=e=>Wa(e).split(``).sort().join(``),Ka={setup(e,t){return e(_o(t.shift()),...t)},get(e,t,n){if(typeof t==`string`&&e[t]===void 0){if(e.isStackNode!==!0&&t===`assign`)return(...e)=>(null.assign(n,...e),n);if(Ua.has(t)){let r=Ua.get(t);return e.isStackNode?(...e)=>n.add(r(...e)):(...e)=>r(n,...e)}else if(t===`self`)return e;else if(t.endsWith(`Assign`)&&Ua.has(t.slice(0,t.length-6))){let r=Ua.get(t.slice(0,t.length-6));return e.isStackNode?(...e)=>n.assign(e[0],r(...e)):(...e)=>n.assign(r(n,...e))}else if(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0)return t=Wa(t),W(new Ra(n,t));else if(/^set[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Ga(t.slice(3).toLowerCase()),n=>W(new za(e,t,n));else if(/^flip[XYZWRGBASTPQ]{1,4}$/.test(t)===!0)return t=Ga(t.slice(4).toLowerCase()),()=>W(new Ba(W(e),t));else if(t===`width`||t===`height`||t===`depth`)return t===`width`?t=`x`:t===`height`?t=`y`:t===`depth`&&(t=`z`),W(new Ra(e,t));else if(/^\d+$/.test(t)===!0)return W(new Na(n,new Ha(Number(t),`uint`)))}return Reflect.get(e,t,n)},set(e,t,n,r){return typeof t==`string`&&e[t]===void 0&&(/^[xyzwrgbastpq]{1,4}$/.test(t)===!0||t===`width`||t===`height`||t===`depth`||/^\d+$/.test(t)===!0)?(r[t].assign(n),!0):Reflect.set(e,t,n,r)}},qa=new WeakMap,Ja=new WeakMap,Ya=function(e,t=null){let n=Ea(e);if(n===`node`){let t=qa.get(e);return t===void 0&&(t=new Proxy(e,Ka),qa.set(e,t),qa.set(t,t)),t}else if(t===null&&(n===`float`||n===`boolean`)||n&&n!==`shader`&&n!==`string`)return W(po(e,t));else if(n===`shader`)return K(e);return e},Xa=function(e,t=null){for(let n in e)e[n]=W(e[n],t);return e},Za=function(e,t=null){let n=e.length;for(let r=0;rW(r===null?e:Object.assign(e,r));return t===null?(...t)=>i(new e(...vo(t))):n===null?(...n)=>i(new e(t,...vo(n))):(n=W(n),(...r)=>i(new e(t,...vo(r),n)))},$a=function(e,...t){return W(new e(...vo(t)))};var eo=class extends V{constructor(e,t){super(),this.shaderNode=e,this.inputNodes=t}getNodeType(e){return this.shaderNode.nodeType||this.getOutputNode(e).getNodeType(e)}call(e){let{shaderNode:t,inputNodes:n}=this,r=e.getNodeProperties(t);if(r.onceOutput)return r.onceOutput;let i=null;if(t.layout){let r=Ja.get(e.constructor);r===void 0&&(r=new WeakMap,Ja.set(e.constructor,r));let a=r.get(t);a===void 0&&(a=W(e.buildFunctionNode(t)),r.set(t,a)),e.currentFunctionNode!==null&&e.currentFunctionNode.includes.push(a),i=W(a.call(n))}else{let r=t.jsFunc;i=W(n===null?r(e):r(n,e))}return t.once&&(r.onceOutput=i),i}getOutputNode(e){let t=e.getNodeProperties(this);return t.outputNode===null&&(t.outputNode=this.setupOutput(e)),t.outputNode}setup(e){return this.getOutputNode(e)}setupOutput(e){return e.addStack(),e.stack.outputNode=this.call(e),e.removeStack()}generate(e,t){return this.getOutputNode(e).build(e,t)}},to=class extends V{constructor(e,t){super(t),this.jsFunc=e,this.layout=null,this.global=!0,this.once=!1}setLayout(e){return this.layout=e,this}call(e=null){return _o(e),W(new eo(this,e))}setup(){return this.call()}};let no=[!1,!0],ro=[0,1,2,3],io=[-1,-2],ao=[.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],oo=new Map;for(let e of no)oo.set(e,new Ha(e));let so=new Map;for(let e of ro)so.set(e,new Ha(e,`uint`));let co=new Map([...so].map(e=>new Ha(e.value,`int`)));for(let e of io)co.set(e,new Ha(e,`int`));let lo=new Map([...co].map(e=>new Ha(e.value)));for(let e of ao)lo.set(e,new Ha(e));for(let e of ao)lo.set(-e,new Ha(-e));let uo={bool:oo,uint:so,ints:co,float:lo},fo=new Map([...oo,...lo]),po=(e,t)=>fo.has(e)?fo.get(e):e.isNode===!0?e:new Ha(e,t),mo=e=>{try{return e.getNodeType()}catch{return}},U=function(e,t=null){return(...n)=>{if((n.length===0||![`bool`,`float`,`int`,`uint`].includes(e)&&n.every(e=>typeof e!=`object`))&&(n=[Da(e,...n)]),n.length===1&&t!==null&&t.has(n[0]))return W(t.get(n[0]));if(n.length===1){let t=po(n[0],e);return mo(t)===e?W(t):W(new Pa(t,e))}return W(new Ia(n.map(e=>po(e)),e))}},ho=e=>e==null?null:e.nodeType||e.convertTo||(typeof e==`string`?e:null);function go(e,t){return new Proxy(new to(e,t),Ka)}let W=(e,t=null)=>Ya(e,t),_o=(e,t=null)=>new Xa(e,t),vo=(e,t=null)=>new Za(e,t),G=(...e)=>new Qa(...e),yo=(...e)=>new $a(...e),K=(e,t)=>{let n=new go(e,t),r=(...e)=>{let t;return _o(e),t=e[0]&&e[0].isNode?[...e]:e[0],n.call(t)};return r.shaderNode=n,r.setLayout=e=>(n.setLayout(e),r),r.once=()=>(n.once=!0,r),r};H(`toGlobal`,e=>(e.global=!0,e));let bo=(...e)=>null.If(...e);function xo(e){return e}H(`append`,xo);let So=new U(`color`),q=new U(`float`,uo.float),Co=new U(`int`,uo.ints),wo=new U(`uint`,uo.uint),To=new U(`bool`,uo.bool),J=new U(`vec2`),Eo=new U(`ivec2`),Do=new U(`uvec2`),Oo=new U(`bvec2`),Y=new U(`vec3`),ko=new U(`ivec3`),Ao=new U(`uvec3`),jo=new U(`bvec3`),Mo=new U(`vec4`),No=new U(`ivec4`),Po=new U(`uvec4`),Fo=new U(`bvec4`),Io=new U(`mat2`),Lo=new U(`mat3`),Ro=new U(`mat4`);H(`toColor`,So),H(`toFloat`,q),H(`toInt`,Co),H(`toUint`,wo),H(`toBool`,To),H(`toVec2`,J),H(`toIVec2`,Eo),H(`toUVec2`,Do),H(`toBVec2`,Oo),H(`toVec3`,Y),H(`toIVec3`,ko),H(`toUVec3`,Ao),H(`toBVec3`,jo),H(`toVec4`,Mo),H(`toIVec4`,No),H(`toUVec4`,Po),H(`toBVec4`,Fo),H(`toMat2`,Io),H(`toMat3`,Lo),H(`toMat4`,Ro),H(`element`,G(Na)),H(`convert`,(e,t)=>W(new Pa(W(e),t)));var zo=class extends V{static get type(){return`UniformGroupNode`}constructor(e,t=!1,n=1){super(`string`),this.name=e,this.version=0,this.shared=t,this.order=n,this.isUniformGroup=!0}set needsUpdate(e){e===!0&&this.version++}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}};let Bo=e=>new zo(e),Vo=((e,t=0)=>new zo(e,!0,t))(`render`),Ho=Bo(`object`);var Uo=class extends Va{static get type(){return`UniformNode`}constructor(e,t=null){super(e,t),this.isUniformNode=!0,this.name=``,this.groupNode=Ho}label(e){return this.name=e,this}setGroup(e){return this.groupNode=e,this}getGroup(){return this.groupNode}getUniformHash(e){return this.getHash(e)}onUpdate(e,t){let n=this.getSelf();return e=e.bind(n),super.onUpdate(t=>{let r=e(t,n);r!==void 0&&(this.value=r)},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.label),s=e.getPropertyName(o);return e.context.label!==void 0&&delete e.context.label,e.format(s,n,t)}};let Wo=(e,t)=>{let n=ho(t||e);return W(new Uo(e&&e.isNode===!0?e.node&&e.node.value||e.value:e,n))};var Go=class extends V{static get type(){return`PropertyNode`}constructor(e,t=null,n=!1){super(e),this.name=t,this.varying=n,this.isPropertyNode=!0}getHash(e){return this.name||super.getHash(e)}isGlobal(){return!0}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)}};let Ko=(e,t)=>W(new Go(e,t)),qo=yo(Go,`vec4`,`DiffuseColor`);H(`assign`,G(class extends Fa{static get type(){return`AssignNode`}constructor(e,t){super(),this.targetNode=e,this.sourceNode=t}hasDependencies(){return!1}getNodeType(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 ja.join(``).slice(0,n)!==t.components}return!1}generate(e,t){let{targetNode:n,sourceNode:r}=this,i=this.needsSplitAssign(e),a=n.getNodeType(e),o=n.context({assign:!0}).build(e),s=r.build(e,a),c=r.getNodeType(e),l=e.getDataFromNode(this),u;if(l.initialized===!0)t!==`void`&&(u=o);else if(i){let r=e.getVarFromNode(this,null,a),i=e.getPropertyName(r);e.addLineFlowCode(`${i} = ${s}`,this);let c=n.node.context({assign:!0}).build(e);for(let t=0;t(t=t.length>1||t[0]&&t[0].isNode===!0?vo(t):_o(t[0]),W(new Jo(W(e),t))));var X=class e extends Fa{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>`||n===`<<`)return e.getIntegerType(a);if(n===`!`||n===`==`||n===`&&`||n===`||`||n===`^^`)return`bool`;if(n===`<`||n===`>`||n===`<=`||n===`>=`){let n=t?e.getTypeLength(t):Math.max(e.getTypeLength(a),e.getTypeLength(o));return n>1?`bvec${n}`:`bool`}else return a===`float`&&e.isMatrix(o)?o:e.isMatrix(a)&&e.isVector(o)?e.getVectorFromMatrix(a):e.isVector(a)&&e.isMatrix(o)?e.getVectorFromMatrix(o):e.getTypeLength(o)>e.getTypeLength(a)?o:a}generate(e,t){let n=this.op,r=this.aNode,i=this.bNode,a=this.getNodeType(e,t),o=null,s=null;a===`void`?o=s=a:(o=r.getNodeType(e),s=i===void 0?null:i.getNodeType(e),n===`<`||n===`>`||n===`<=`||n===`>=`||n===`==`?e.isVector(o)?s=o:o!==s&&(o=s=`float`):n===`>>`||n===`<<`?(o=a,s=e.changeComponentType(s,`uint`)):e.isMatrix(o)&&e.isVector(s)?s=e.getVectorFromMatrix(o):o=e.isVector(o)&&e.isMatrix(s)?e.getVectorFromMatrix(s):s=a);let c=r.build(e,o),l=i===void 0?null:i.build(e,s),u=e.getTypeLength(t),d=e.getFunctionOperator(n);if(t!==`void`)return n===`<`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} < ${l} )`,a,t):n===`<=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`lessThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} <= ${l} )`,a,t):n===`>`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThan`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} > ${l} )`,a,t):n===`>=`&&u>1?e.useComparisonMethod?e.format(`${e.getMethod(`greaterThanEqual`,t)}( ${c}, ${l} )`,a,t):e.format(`( ${c} >= ${l} )`,a,t):n===`!`||n===`~`?e.format(`(${n}${c})`,o,t):d?e.format(`${d}( ${c}, ${l} )`,a,t):e.format(`( ${c} ${n} ${l} )`,a,t);if(o!==`void`)return d?e.format(`${d}( ${c}, ${l} )`,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}};let Yo=G(X,`+`),Xo=G(X,`-`),Zo=G(X,`*`),Qo=G(X,`/`),$o=G(X,`%`),es=G(X,`==`),ts=G(X,`!=`),ns=G(X,`<`),rs=G(X,`>`),is=G(X,`<=`),as=G(X,`>=`),os=G(X,`&&`),ss=G(X,`||`),cs=G(X,`!`),ls=G(X,`^^`),us=G(X,`&`),ds=G(X,`~`),fs=G(X,`|`),ps=G(X,`^`),ms=G(X,`<<`),hs=G(X,`>>`);H(`add`,Yo),H(`sub`,Xo),H(`mul`,Zo),H(`div`,Qo),H(`modInt`,$o),H(`equal`,es),H(`notEqual`,ts),H(`lessThan`,ns),H(`greaterThan`,rs),H(`lessThanEqual`,is),H(`greaterThanEqual`,as),H(`and`,os),H(`or`,ss),H(`not`,cs),H(`xor`,ls),H(`bitAnd`,us),H(`bitNot`,ds),H(`bitOr`,fs),H(`bitXor`,ps),H(`shiftLeft`,ms),H(`shiftRight`,hs),H(`remainder`,(...e)=>(console.warn(`TSL.OperatorNode: .remainder() has been renamed to .modInt().`),$o(...e)));var Z=class e extends Fa{static get type(){return`MathNode`}constructor(e,t,n=null,r=null){super(),this.method=e,this.aNode=t,this.bNode=n,this.cNode=r}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}getNodeType(t){let n=this.method;return n===e.LENGTH||n===e.DISTANCE||n===e.DOT?`float`:n===e.CROSS?`vec3`:n===e.ALL?`bool`:n===e.EQUALS?t.changeComponentType(this.aNode.getNodeType(t),`bool`):n===e.MOD?this.aNode.getNodeType(t):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=this.cNode,l=t.renderer.isWebGLRenderer===!0;if(r===e.TRANSFORM_DIRECTION){let e=o,r=s;t.isMatrix(e.getNodeType(t))?r=Mo(Y(r),0):e=Mo(Y(e),0);let i=Zo(e,r).xyz;return As(i).build(t,n)}else if(r===e.NEGATE)return t.format(`( - `+o.build(t,a)+` )`,i,n);else if(r===e.ONE_MINUS)return Xo(1,o).build(t,n);else if(r===e.RECIPROCAL)return Qo(1,o).build(t,n);else if(r===e.DIFFERENCE)return Rs(Xo(o,s)).build(t,n);else{let u=[];return r===e.CROSS||r===e.MOD?u.push(o.build(t,i),s.build(t,i)):l&&r===e.STEP?u.push(o.build(t,t.getTypeLength(o.getNodeType(t))===1?`float`:a),s.build(t,a)):l&&(r===e.MIN||r===e.MAX)||r===e.MOD?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)):(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}};Z.ALL=`all`,Z.ANY=`any`,Z.EQUALS=`equals`,Z.RADIANS=`radians`,Z.DEGREES=`degrees`,Z.EXP=`exp`,Z.EXP2=`exp2`,Z.LOG=`log`,Z.LOG2=`log2`,Z.SQRT=`sqrt`,Z.INVERSE_SQRT=`inversesqrt`,Z.FLOOR=`floor`,Z.CEIL=`ceil`,Z.NORMALIZE=`normalize`,Z.FRACT=`fract`,Z.SIN=`sin`,Z.COS=`cos`,Z.TAN=`tan`,Z.ASIN=`asin`,Z.ACOS=`acos`,Z.ATAN=`atan`,Z.ABS=`abs`,Z.SIGN=`sign`,Z.LENGTH=`length`,Z.NEGATE=`negate`,Z.ONE_MINUS=`oneMinus`,Z.DFDX=`dFdx`,Z.DFDY=`dFdy`,Z.ROUND=`round`,Z.RECIPROCAL=`reciprocal`,Z.TRUNC=`trunc`,Z.FWIDTH=`fwidth`,Z.BITCAST=`bitcast`,Z.TRANSPOSE=`transpose`,Z.ATAN2=`atan2`,Z.MIN=`min`,Z.MAX=`max`,Z.MOD=`mod`,Z.STEP=`step`,Z.REFLECT=`reflect`,Z.DISTANCE=`distance`,Z.DIFFERENCE=`difference`,Z.DOT=`dot`,Z.CROSS=`cross`,Z.POW=`pow`,Z.TRANSFORM_DIRECTION=`transformDirection`,Z.MIX=`mix`,Z.CLAMP=`clamp`,Z.REFRACT=`refract`,Z.SMOOTHSTEP=`smoothstep`,Z.FACEFORWARD=`faceforward`;let gs=q(Math.PI);Math.PI*2;let _s=G(Z,Z.ALL),vs=G(Z,Z.ANY),ys=G(Z,Z.EQUALS),bs=G(Z,Z.RADIANS),xs=G(Z,Z.DEGREES),Ss=G(Z,Z.EXP),Cs=G(Z,Z.EXP2),ws=G(Z,Z.LOG),Ts=G(Z,Z.LOG2),Es=G(Z,Z.SQRT),Ds=G(Z,Z.INVERSE_SQRT),Os=G(Z,Z.FLOOR),ks=G(Z,Z.CEIL),As=G(Z,Z.NORMALIZE),js=G(Z,Z.FRACT),Ms=G(Z,Z.SIN),Ns=G(Z,Z.COS),Ps=G(Z,Z.TAN),Fs=G(Z,Z.ASIN),Is=G(Z,Z.ACOS),Ls=G(Z,Z.ATAN),Rs=G(Z,Z.ABS),zs=G(Z,Z.SIGN),Bs=G(Z,Z.LENGTH),Vs=G(Z,Z.NEGATE),Hs=G(Z,Z.ONE_MINUS),Us=G(Z,Z.DFDX),Ws=G(Z,Z.DFDY),Gs=G(Z,Z.ROUND),Ks=G(Z,Z.RECIPROCAL),qs=G(Z,Z.TRUNC),Js=G(Z,Z.FWIDTH);Z.BITCAST;let Ys=G(Z,Z.TRANSPOSE),Xs=G(Z,Z.ATAN2),Zs=G(Z,Z.MIN),Qs=G(Z,Z.MAX),$s=G(Z,Z.MOD),ec=G(Z,Z.STEP),tc=G(Z,Z.REFLECT),nc=G(Z,Z.DISTANCE),rc=G(Z,Z.DIFFERENCE),ic=G(Z,Z.DOT),ac=G(Z,Z.CROSS),oc=G(Z,Z.POW),sc=G(Z,Z.POW,2),cc=G(Z,Z.POW,3),lc=G(Z,Z.POW,4),uc=G(Z,Z.TRANSFORM_DIRECTION),dc=e=>Zo(zs(e),oc(Rs(e),1/3)),fc=e=>ic(e,e),pc=G(Z,Z.MIX),mc=(e,t=0,n=1)=>W(new Z(Z.CLAMP,W(e),W(t),W(n))),hc=e=>mc(e),gc=G(Z,Z.REFRACT),_c=G(Z,Z.SMOOTHSTEP),vc=G(Z,Z.FACEFORWARD),yc=K(([e])=>js(Ms($s(ic(e.xy,J(12.9898,78.233)),gs)).mul(43758.5453)));H(`all`,_s),H(`any`,vs),H(`equals`,ys),H(`radians`,bs),H(`degrees`,xs),H(`exp`,Ss),H(`exp2`,Cs),H(`log`,ws),H(`log2`,Ts),H(`sqrt`,Es),H(`inverseSqrt`,Ds),H(`floor`,Os),H(`ceil`,ks),H(`normalize`,As),H(`fract`,js),H(`sin`,Ms),H(`cos`,Ns),H(`tan`,Ps),H(`asin`,Fs),H(`acos`,Is),H(`atan`,Ls),H(`abs`,Rs),H(`sign`,zs),H(`length`,Bs),H(`lengthSq`,fc),H(`negate`,Vs),H(`oneMinus`,Hs),H(`dFdx`,Us),H(`dFdy`,Ws),H(`round`,Gs),H(`reciprocal`,Ks),H(`trunc`,qs),H(`fwidth`,Js),H(`atan2`,Xs),H(`min`,Zs),H(`max`,Qs),H(`mod`,$s),H(`step`,ec),H(`reflect`,tc),H(`distance`,nc),H(`dot`,ic),H(`cross`,ac),H(`pow`,oc),H(`pow2`,sc),H(`pow3`,cc),H(`pow4`,lc),H(`transformDirection`,uc),H(`mix`,(e,t,n)=>pc(t,n,e)),H(`clamp`,mc),H(`refract`,gc),H(`smoothstep`,(e,t,n)=>_c(t,n,e)),H(`faceForward`,vc),H(`difference`,rc),H(`saturate`,hc),H(`cbrt`,dc),H(`transpose`,Ys),H(`rand`,yc);let bc=G(class extends V{static get type(){return`ConditionalNode`}constructor(e,t,n=null){super(),this.condNode=e,this.ifNode=t,this.elseNode=n}getNodeType(e){let t=this.ifNode.getNodeType(e);if(this.elseNode!==null){let n=this.elseNode.getNodeType(e);if(e.getTypeLength(n)>e.getTypeLength(t))return n}return t}setup(e){let t=this.condNode.cache(),n=this.ifNode.cache(),r=this.elseNode?this.elseNode.cache():null,i=e.context.nodeBlock;e.getDataFromNode(n).parentNodeBlock=i,r!==null&&(e.getDataFromNode(r).parentNodeBlock=i);let a=e.getNodeProperties(this);a.condNode=t,a.ifNode=n.context({nodeBlock:n}),a.elseNode=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=t!==`void`,c=s?Ko(n).build(e):``;r.nodeProperty=c;let l=i.build(e,`bool`);e.addFlowCode(`\n${e.tab}if ( ${l} ) {\n\n`).addFlowTab();let u=a.build(e,n);if(u&&=s?c+` = `+u+`;`:`return `+u+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+u+` + +`+e.tab+`}`),o!==null){e.addFlowCode(` else { + +`).addFlowTab();let t=o.build(e,n);t&&=s?c+` = `+t+`;`:`return `+t+`;`,e.removeFlowTab().addFlowCode(e.tab+` `+t+` + +`+e.tab+`} + +`)}else e.addFlowCode(` + +`);return e.format(c,n,t)}});H(`select`,bc),H(`cond`,(...e)=>(console.warn(`TSL.ConditionalNode: cond() has been renamed to select().`),bc(...e)));let xc=G(class extends V{static get type(){return`ContextNode`}constructor(e,t={}){super(),this.isContextNode=!0,this.node=e,this.value=t}getScope(){return this.node.getScope()}getNodeType(e){return this.node.getNodeType(e)}analyze(e){this.node.build(e)}setup(e){let t=e.getContext();e.setContext({...e.context,...this.value});let n=this.node.build(e);return e.setContext(t),n}generate(e,t){let n=e.getContext();e.setContext({...e.context,...this.value});let r=this.node.build(e,t);return e.setContext(n),r}});H(`context`,xc),H(`label`,(e,t)=>xc(e,{label:t}));let Sc=G(class extends V{static get type(){return`VarNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.global=!0,this.isVarNode=!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}generate(e){let{node:t,name:n}=this,r=e.getVarFromNode(this,n,e.getVectorType(this.getNodeType(e))),i=e.getPropertyName(r),a=t.build(e,r.type);return e.addLineFlowCode(`${i} = ${a}`,this),i}});H(`temp`,Sc),H(`toVar`,(...e)=>Sc(...e).append());let Cc=G(class extends V{static get type(){return`VaryingNode`}constructor(e,t=null){super(),this.node=e,this.name=t,this.isVaryingNode=!0}isGlobal(){return!0}getHash(e){return this.name||super.getHash(e)}getNodeType(e){return this.node.getNodeType(e)}setupVarying(e){let t=e.getNodeProperties(this),n=t.varying;if(n===void 0){let r=this.name,i=this.getNodeType(e);t.varying=n=e.getVaryingFromNode(this,r,i),t.node=this.node}return n.needsInterpolation||=e.shaderStage===`fragment`,n}setup(e){this.setupVarying(e)}analyze(e){return this.setupVarying(e),this.node.analyze(e)}generate(e){let t=e.getNodeProperties(this),n=this.setupVarying(e);if(t.propertyName===void 0){let r=this.getNodeType(e),i=e.getPropertyName(n,Aa.VERTEX);e.flowNodeFromShaderStage(Aa.VERTEX,this.node,r,i),t.propertyName=i}return e.getPropertyName(n)}});H(`varying`,Cc);let wc=`WorkingColorSpace`,Tc=`OutputColorSpace`;function Ec(e){let t=null;return e===`srgb-linear`?t=`Linear`:e===`srgb`&&(t=`sRGB`),t}function Dc(e,t){return Ec(e)+`To`+Ec(t)}var Oc=class extends Fa{static get type(){return`ColorSpaceNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.source=t,this.target=n}getColorSpace(e,t){return t===wc?Ye.workingColorSpace:t===Tc?e.context.outputColorSpace||e.renderer.outputColorSpace:t}setup(e){let{renderer:t}=e,{colorNode:n}=this,r=this.getColorSpace(e,this.source),i=this.getColorSpace(e,this.target);if(r===i)return n;let a=Dc(r,i),o=null,s=t.nodes.library.getColorSpaceFunction(a);return s===null?(console.error(`ColorSpaceNode: Unsupported Color Space configuration.`,a),o=n):o=Mo(s(n.rgb),n.a),o}};let kc=e=>W(new Oc(W(e),wc,Tc)),Ac=e=>W(new Oc(W(e),Tc,wc)),jc=(e,t)=>W(new Oc(W(e),wc,t)),Mc=(e,t)=>W(new Oc(W(e),t,wc));H(`toOutputColorSpace`,kc),H(`toWorkingColorSpace`,Ac),H(`workingToColorSpace`,jc),H(`colorSpaceToWorking`,Mc);let Nc=class extends Na{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}};var Pc=class extends V{static get type(){return`ReferenceBaseNode`}constructor(e,t,n=null,r=null){super(),this.property=e,this.uniformType=t,this.object=n,this.count=r,this.properties=e.split(`.`),this.reference=n,this.node=null,this.group=null,this.updateType=B.OBJECT}setGroup(e){return this.group=e,this}element(e){return W(new Nc(this,W(e)))}setNodeType(e){let t=Wo(null,e).getSelf();this.group!==null&&t.setGroup(this.group),this.node=t}getNodeType(e){return this.node===null&&(this.updateReference(e),this.updateValue()),this.node.getNodeType(e)}getValueFromReference(e=this.reference){let{properties:t}=this,n=e[t[0]];for(let e=1;eW(new Fc(e,t,n));var Lc=class extends Fa{static get type(){return`ToneMappingNode`}constructor(e,t=zc,n=null){super(`vec3`),this.toneMapping=e,this.exposureNode=t,this.colorNode=n}getCacheKey(){return Ca(super.getCacheKey(),this.toneMapping)}setup(e){let t=this.colorNode||e.context.color,n=this.toneMapping;if(n===0)return t;let r=null,i=e.renderer.nodes.library.getToneMappingFunction(n);return i===null?(console.error(`ToneMappingNode: Unsupported Tone Mapping configuration.`,n),r=t):r=Mo(i(t.rgb,this.exposureNode),t.a),r}};let Rc=(e,t,n)=>W(new Lc(e,W(t),W(n))),zc=Ic(`toneMappingExposure`,`float`);H(`toneMapping`,(e,t,n)=>Rc(t,n,e));var Bc=class extends Va{static get type(){return`BufferAttributeNode`}constructor(e,t=null,n=0,r=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferStride=n,this.bufferOffset=r,this.usage=me,this.instanced=!1,this.attribute=null,this.global=!0,e&&e.isBufferAttribute===!0&&(this.attribute=e,this.usage=e.usage,this.instanced=e.isInstancedBufferAttribute)}getHash(e){if(this.bufferStride===0&&this.bufferOffset===0){let t=e.globalCache.getData(this.value);return t===void 0&&(t={node:this},e.globalCache.setData(this.value,t)),t.node.uuid}return this.uuid}getNodeType(e){return this.bufferType===null&&(this.bufferType=e.getTypeFromAttribute(this.attribute)),this.bufferType}setup(e){if(this.attribute!==null)return;let t=this.getNodeType(e),n=this.value,r=e.getTypeLength(t),i=this.bufferStride||r,a=this.bufferOffset,o=n.isInterleavedBuffer===!0?n:new Er(n,i),s=new Or(o,r,a);o.setUsage(this.usage),this.attribute=s,this.attribute.isInstancedBufferAttribute=this.instanced}generate(e){let t=this.getNodeType(e),n=e.getBufferAttributeFromNode(this,t),r=e.getPropertyName(n),i=null;return e.shaderStage===`vertex`||e.shaderStage===`compute`?(this.name=r,i=r):i=Cc(this).build(e,t),i}getInputType(){return`bufferAttribute`}setUsage(e){return this.usage=e,this.attribute&&this.attribute.isBufferAttribute===!0&&(this.attribute.usage=e),this}setInstanced(e){return this.instanced=e,this}};let Vc=(e,t,n,r)=>W(new Bc(e,t,n,r));H(`toAttribute`,e=>Vc(e.value));var Hc=class extends V{static get type(){return`ComputeNode`}constructor(e,t,n=[64]){super(`void`),this.isComputeNode=!0,this.computeNode=e,this.count=t,this.workgroupSize=n,this.dispatchCount=0,this.version=1,this.updateBeforeType=B.OBJECT,this.updateDispatchCount()}dispose(){this.dispatchEvent({type:`dispose`})}set needsUpdate(e){e===!0&&this.version++}updateDispatchCount(){let{count:e,workgroupSize:t}=this,n=t[0];for(let e=1;eW(new Hc(W(e),t,n)));var Uc=class extends V{static get type(){return`CacheNode`}constructor(e,t=!0){super(),this.node=e,this.parent=t,this.isCacheNode=!0}getNodeType(e){return this.node.getNodeType(e)}build(e,...t){let n=e.getCache(),r=e.getCacheFromNode(this,this.parent);e.setCache(r);let i=this.node.build(e,...t);return e.setCache(n),i}};H(`cache`,(e,...t)=>W(new Uc(W(e),...t))),H(`bypass`,G(class extends V{static get type(){return`BypassNode`}constructor(e,t){super(),this.isBypassNode=!0,this.outputNode=e,this.callNode=t}getNodeType(e){return this.outputNode.getNodeType(e)}generate(e){let t=this.callNode.build(e,`void`);return t!==``&&e.addLineFlowCode(t,this),this.outputNode.build(e)}}));var Wc=class extends V{static get type(){return`RemapNode`}constructor(e,t,n,r=q(0),i=q(1)){super(),this.node=e,this.inLowNode=t,this.inHighNode=n,this.outLowNode=r,this.outHighNode=i,this.doClamp=!0}setup(){let{node:e,inLowNode:t,inHighNode:n,outLowNode:r,outHighNode:i,doClamp:a}=this,o=e.sub(t).div(n.sub(t));return a===!0&&(o=o.clamp()),o.mul(i.sub(r)).add(r)}};let Gc=G(Wc,null,null,{doClamp:!1}),Kc=G(Wc);H(`remap`,Gc),H(`remapClamp`,Kc);let qc=G(class extends V{static get type(){return`ExpressionNode`}constructor(e=``,t=`void`){super(t),this.snippet=e}generate(e,t){let n=this.getNodeType(e),r=this.snippet;if(n===`void`)e.addLineFlowCode(r,this);else return e.format(`( ${r} )`,n,t)}});H(`discard`,e=>(e?bc(e,qc(`discard`)):qc(`discard`)).append());var Jc=class extends Fa{static get type(){return`RenderOutputNode`}constructor(e,t,n){super(`vec4`),this.colorNode=e,this.toneMapping=t,this.outputColorSpace=n,this.isRenderOutput=!0}setup({context:e}){let t=this.colorNode||e.color,n=(this.toneMapping===null?e.toneMapping:this.toneMapping)||0,r=(this.outputColorSpace===null?e.outputColorSpace:this.outputColorSpace)||``;return n!==0&&(t=t.toneMapping(n)),r!==``&&r!==Ye.workingColorSpace&&(t=t.workingToColorSpace(r)),t}};H(`renderOutput`,(e,t=null,n=null)=>W(new Jc(W(e),t,n)));var Yc=class extends V{static get type(){return`AttributeNode`}constructor(e,t=null){super(t),this.global=!0,this._attributeName=e}getHash(e){return this.getAttributeName(e)}getNodeType(e){let t=this.nodeType;if(t===null){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):Cc(this).build(e,n)}else return console.warn(`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}};let Xc=(e,t)=>W(new Yc(e,t)),Zc=e=>Xc(`uv`+(e>0?e:``),`vec2`),Qc=G(class extends V{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)}}),$c=G(class extends Uo{static get type(){return`MaxMipLevelNode`}constructor(e){super(0),this._textureNode=e,this.updateType=B.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))}}});var el=class extends Uo{static get type(){return`TextureNode`}constructor(e,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.sampler=!0,this.updateMatrix=!1,this.updateType=B.NONE,this.referenceNode=null,this._value=e,this._matrixUniform=null,this.setUpdateMatrix(t===null)}set value(e){this.referenceNode?this.referenceNode.value=e:this._value=e}get value(){return this.referenceNode?this.referenceNode.value:this._value}getUniformHash(){return this.value.uuid}getNodeType(){return this.value.isDepthTexture===!0?`float`:this.value.type===1014?`uvec4`:this.value.type===1013?`ivec4`:`vec4`}getInputType(){return`texture`}getDefaultUV(){return Zc(this.value.channel)}updateReference(){return this.value}getTransformedUV(e){return this._matrixUniform===null&&(this._matrixUniform=Wo(this.value.matrix)),this._matrixUniform.mul(Y(e,1)).xy}setUpdateMatrix(e){return this.updateMatrix=e,this.updateType=e?B.FRAME:B.NONE,this}setupUV(e,t){let n=this.value;return e.isFlipY()&&(n.isRenderTargetTexture===!0||n.isFramebufferTexture===!0||n.isDepthTexture===!0)&&(t=this.sampler?t.flipY():t.setY(Co(Qc(this,this.levelNode).y).sub(t.y).sub(1))),t}setup(e){let t=e.getNodeProperties(this);t.referenceNode=this.referenceNode;let n=this.uvNode;(n===null||e.context.forceUVContext===!0)&&e.context.getUV&&(n=e.context.getUV(this)),n||=this.getDefaultUV(),this.updateMatrix===!0&&(n=this.getTransformedUV(n)),n=this.setupUV(e,n);let r=this.levelNode;r===null&&e.context.getTextureLevel&&(r=e.context.getTextureLevel(this)),t.uvNode=n,t.levelNode=r,t.biasNode=this.biasNode,t.compareNode=this.compareNode,t.gradNode=this.gradNode,t.depthNode=this.depthNode}generateUV(e,t){return t.build(e,this.sampler===!0?`vec2`:`ivec2`)}generateSnippet(e,t,n,r,i,a,o,s){let c=this.value,l;return l=r?e.generateTextureLevel(c,t,n,r,a):i?e.generateTextureBias(c,t,n,i,a):s?e.generateTextureGrad(c,t,n,s,a):o?e.generateTextureCompare(c,t,n,o,a):this.sampler===!1?e.generateTextureLoad(c,t,n,a):e.generateTexture(c,t,n,a),l}generate(e,t){let n=e.getNodeProperties(this),r=this.value;if(!r||r.isTexture!==!0)throw Error(`TextureNode: Need a three.js texture.`);let i=super.generate(e,`property`);if(t===`sampler`)return i+`_sampler`;if(e.isReference(t))return i;{let a=e.getDataFromNode(this),o=a.propertyName;if(o===void 0){let{uvNode:t,levelNode:r,biasNode:s,compareNode:c,depthNode:l,gradNode:u}=n,d=this.generateUV(e,t),f=r?r.build(e,`float`):null,p=s?s.build(e,`float`):null,m=l?l.build(e,`int`):null,h=c?c.build(e,`float`):null,g=u?[u[0].build(e,`vec2`),u[1].build(e,`vec2`)]:null,_=e.getVarFromNode(this);o=e.getPropertyName(_);let v=this.generateSnippet(e,i,d,f,p,m,h,g);e.addLineFlowCode(`${o} = ${v}`,this),a.snippet=v,a.propertyName=o}let s=o,c=this.getNodeType(e);return e.needsToWorkingColorSpace(r)&&(s=Mc(qc(s,c),r.colorSpace).setup(e).build(e,c)),e.format(s,c,t)}}setSampler(e){return this.sampler=e,this}getSampler(){return this.sampler}uv(e){let t=this.clone();return t.uvNode=W(e),t.referenceNode=this.getSelf(),W(t)}blur(e){let t=this.clone();return t.biasNode=W(e).mul($c(t)),t.referenceNode=this.getSelf(),W(t)}level(e){let t=this.clone();return t.levelNode=W(e),t.referenceNode=this.getSelf(),W(t)}size(e){return Qc(this,e)}bias(e){let t=this.clone();return t.biasNode=W(e),t.referenceNode=this.getSelf(),W(t)}compare(e){let t=this.clone();return t.compareNode=W(e),t.referenceNode=this.getSelf(),W(t)}grad(e,t){let n=this.clone();return n.gradNode=[W(e),W(t)],n.referenceNode=this.getSelf(),W(n)}depth(e){let t=this.clone();return t.depthNode=W(e),t.referenceNode=this.getSelf(),W(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()}clone(){let e=new this.constructor(this.value,this.uvNode,this.levelNode,this.biasNode);return e.sampler=this.sampler,e}};let tl=G(el),nl=Wo(`float`).label(`cameraNear`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.near),rl=Wo(`float`).label(`cameraFar`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.far),il=Wo(`mat4`).label(`cameraViewMatrix`).setGroup(Vo).onRenderUpdate(({camera:e})=>e.matrixWorldInverse);var al=class e extends V{static get type(){return`Object3DNode`}constructor(e,t=null){super(),this.scope=e,this.object3d=t,this.updateType=B.OBJECT,this._uniformNode=new Uo(null)}getNodeType(){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`}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 A,r.value.setFromMatrixPosition(n.matrixWorld);else if(i===e.SCALE)r.value=r.value||new A,r.value.setFromMatrixScale(n.matrixWorld);else if(i===e.DIRECTION)r.value=r.value||new A,n.getWorldDirection(r.value);else if(i===e.VIEW_POSITION){let e=t.camera;r.value=r.value||new A,r.value.setFromMatrixPosition(n.matrixWorld),r.value.applyMatrix4(e.matrixWorldInverse)}}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`),this._uniformNode.build(t)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}};al.WORLD_MATRIX=`worldMatrix`,al.POSITION=`position`,al.SCALE=`scale`,al.VIEW_POSITION=`viewPosition`,al.DIRECTION=`direction`,al.DIRECTION,al.WORLD_MATRIX,al.POSITION,al.SCALE,al.VIEW_POSITION;var ol=class extends al{static get type(){return`ModelNode`}constructor(e){super(e)}update(e){this.object3d=e.object,super.update(e)}};ol.DIRECTION;let sl=yo(ol,ol.WORLD_MATRIX);ol.POSITION,ol.SCALE,ol.VIEW_POSITION;let cl=Wo(new O).onObjectUpdate(({object:e},t)=>t.value.getNormalMatrix(e.matrixWorld)),ll=il.mul(sl).toVar(`modelViewMatrix_2`),ul=Xc(`position`,`vec3`).varying(`positionLocal`),dl=ll.mul(ul).xyz.varying(`v_positionView`),fl=dl.negate().varying(`v_positionViewDirection`).normalize().toVar(`positionViewDirection`),pl=q(yo(class extends V{static get type(){return`FrontFacingNode`}constructor(){super(`bool`),this.isFrontFacingNode=!0}generate(e){let{renderer:t,material:n}=e;return t.coordinateSystem===2e3&&n.side===1?`false`:e.getFrontFacing()}})).mul(2).sub(1),ml=Xc(`normal`,`vec3`),hl=K(e=>e.geometry.hasAttribute(`normal`)===!1?(console.warn(`TSL.NormalNode: Vertex attribute "normal" not found on geometry.`),Y(0,1,0)):ml,`vec3`).once()().toVar(`normalLocal`),gl=dl.dFdx().cross(dl.dFdy()).normalize().toVar(`normalFlat`),_l=K(e=>{let t;return t=e.material.flatShading===!0?gl:Cc(yl(hl),`v_normalView`).normalize(),t},`vec3`).once()().toVar(`normalView`),vl=K(e=>e.context.setupNormal(),`vec3`).once()().mul(pl).toVar(`transformedNormalView`),yl=K(([e],t)=>{let n=t.renderer.nodes.modelNormalViewMatrix;if(n!==null)return n.transformDirection(e);let r=cl.mul(e);return il.transformDirection(r)}),bl=Wo(0).onReference(({material:e})=>e).onRenderUpdate(({material:e})=>e.refractionRatio),xl=fl.negate().reflect(vl),Sl=fl.negate().refract(vl,bl),Cl=xl.transformDirection(il).toVar(`reflectVector`),wl=Sl.transformDirection(il).toVar(`reflectVector`),Tl=G(class extends el{static get type(){return`CubeTextureNode`}constructor(e,t=null,n=null,r=null){super(e,t,n,r),this.isCubeTextureNode=!0}getInputType(){return`cubeTexture`}getDefaultUV(){let e=this.value;return e.mapping===301?Cl:e.mapping===302?wl:(console.error(`THREE.CubeTextureNode: Mapping "%s" not supported.`,e.mapping),Y(0,0,0))}setUpdateMatrix(){}setupUV(e,t){let n=this.value;return e.renderer.coordinateSystem===2001||!n.isRenderTargetTexture?Y(t.x.negate(),t.yz):t}generateUV(e,t){return t.build(e,`vec3`)}});var El=class extends Uo{static get type(){return`BufferNode`}constructor(e,t,n=0){super(e,t),this.isBufferNode=!0,this.bufferType=t,this.bufferCount=n}getElementType(e){return this.getNodeType(e)}getInputType(){return`buffer`}};let Dl=(e,t,n)=>W(new El(e,t,n));var Ol=class extends Na{static get type(){return`UniformArrayElementNode`}constructor(e,t){super(e,t),this.isArrayBufferElementNode=!0}generate(e){let t=super.generate(e),n=this.getNodeType();return e.format(t,`vec4`,n)}},kl=class extends El{static get type(){return`UniformArrayNode`}constructor(e,t=null){super(null,`vec4`),this.array=e,this.elementType=t,this._elementType=null,this._elementLength=0,this.updateType=B.RENDER,this.isArrayBufferNode=!0}getElementType(){return this.elementType||this._elementType}getElementLength(){return this._elementLength}update(){let{array:e,value:t}=this,n=this.getElementLength(),r=this.getElementType();if(n===1)for(let n=0;nW(new kl(e,t));var jl=class extends Na{static get type(){return`ReferenceElementNode`}constructor(e,t){super(e,t),this.referenceNode=e,this.isReferenceElementNode=!0}getNodeType(){return this.referenceNode.uniformType}generate(e){let t=super.generate(e),n=this.referenceNode.getNodeType(),r=this.getNodeType();return e.format(t,n,r)}},Ml=class extends V{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=B.OBJECT}element(e){return W(new jl(this,W(e)))}setGroup(e){return this.group=e,this}label(e){return this.name=e,this}setNodeType(e){let t=null;t=this.count===null?Array.isArray(this.getValueFromReference())?Al(null,e):e===`texture`?tl(null):e===`cubeTexture`?Tl(null):Wo(null,e):Dl(null,e,this.count),this.group!==null&&t.setGroup(this.group),this.name!==null&&t.label(this.name),this.node=t.getSelf()}getNodeType(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;eW(new Ml(e,t,n));var Pl=class extends Ml{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}};let Fl=(e,t,n)=>W(new Pl(e,t,n)),Il=K(e=>(e.geometry.hasAttribute(`tangent`)===!1&&e.geometry.computeTangents(),Xc(`tangent`,`vec4`)))(),Ll=Il.xyz.toVar(`tangentLocal`),Rl=ll.mul(Mo(Ll,0)).xyz.varying(`v_tangentView`).normalize().toVar(`tangentView`),zl=Lo(Rl,Cc((e=>e.mul(Il.w).xyz)(_l.cross(Rl)),`v_bitangentView`).normalize().toVar(`bitangentView`),_l),Bl=K(e=>{let{eye_pos:t,surf_norm:n,mapN:r,uv:i}=e,a=t.dFdx(),o=t.dFdy(),s=i.dFdx(),c=i.dFdy(),l=n,u=o.cross(l),d=l.cross(a),f=u.mul(s.x).add(d.mul(c.x)),p=u.mul(s.y).add(d.mul(c.y)),m=f.dot(f).max(p.dot(p)),h=pl.mul(m.inverseSqrt());return Yo(f.mul(r.x,h),p.mul(r.y,h),l.mul(r.z)).normalize()}),Vl=G(class extends Fa{static get type(){return`NormalMapNode`}constructor(e,t=null){super(`vec3`),this.node=e,this.scaleNode=t,this.normalMapType=0}setup(e){let{normalMapType:t,scaleNode:n}=this,r=this.node.mul(2).sub(1);n!==null&&(r=Y(r.xy.mul(n),r.z));let i=null;return t===1?i=yl(r):t===0&&(i=e.hasGeometryAttribute(`tangent`)===!0?zl.mul(r).normalize():Bl({eye_pos:dl,surf_norm:_l,mapN:r,uv:Zc()})),i}}),Hl=K(({textureNode:e,bumpScale:t})=>{let n=t=>e.cache().context({getUV:e=>t(e.uvNode||Zc()),forceUVContext:!0}),r=q(n(e=>e));return J(q(n(e=>e.add(e.dFdx()))).sub(r),q(n(e=>e.add(e.dFdy()))).sub(r)).mul(t)}),Ul=K(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(pl),u=l.sign().mul(r.x.mul(s).add(r.y.mul(c)));return l.abs().mul(n).sub(u).normalize()}),Wl=G(class extends Fa{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 Ul({surf_pos:dl,surf_norm:_l,dHdxy:Hl({textureNode:this.textureNode,bumpScale:e})})}}),Gl=new Map;var Q=class e extends V{static get type(){return`MaterialNode`}constructor(e){super(),this.scope=e}getCache(e,t){let n=Gl.get(e);return n===void 0&&(n=Fl(e,t),Gl.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?Y():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:q(1);else if(r===e.SPECULAR_INTENSITY){let e=this.getFloat(r);i=n.specularMap?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=Vl(this.getTexture(`normal`),this.getCache(`normalScale`,`vec2`)),i.normalMapType=n.normalMapType):i=n.bumpMap?Wl(this.getTexture(`bump`).r,this.getFloat(`bumpScale`)):_l;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?Vl(this.getTexture(r),this.getCache(r+`Scale`,`vec2`)):_l;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(.07,1)}else if(r===e.ANISOTROPY)if(n.anisotropyMap&&n.anisotropyMap.isTexture===!0){let e=this.getTexture(r);i=Io(Kl.x,Kl.y,Kl.y.negate(),Kl.x).mul(e.rg.mul(2).sub(J(1)).normalize().mul(e.b))}else i=Kl;else if(r===e.IRIDESCENCE_THICKNESS){let e=Nl(`1`,`float`,n.iridescenceThicknessRange);if(n.iridescenceThicknessMap){let t=Nl(`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_MAP)i=this.getTexture(r).r.sub(1).mul(this.getFloat(`aoMapIntensity`)).add(1);else{let e=this.getNodeType(t);i=this.getCache(r,e)}return i}};Q.ALPHA_TEST=`alphaTest`,Q.COLOR=`color`,Q.OPACITY=`opacity`,Q.SHININESS=`shininess`,Q.SPECULAR=`specular`,Q.SPECULAR_STRENGTH=`specularStrength`,Q.SPECULAR_INTENSITY=`specularIntensity`,Q.SPECULAR_COLOR=`specularColor`,Q.REFLECTIVITY=`reflectivity`,Q.ROUGHNESS=`roughness`,Q.METALNESS=`metalness`,Q.NORMAL=`normal`,Q.CLEARCOAT=`clearcoat`,Q.CLEARCOAT_ROUGHNESS=`clearcoatRoughness`,Q.CLEARCOAT_NORMAL=`clearcoatNormal`,Q.EMISSIVE=`emissive`,Q.ROTATION=`rotation`,Q.SHEEN=`sheen`,Q.SHEEN_ROUGHNESS=`sheenRoughness`,Q.ANISOTROPY=`anisotropy`,Q.IRIDESCENCE=`iridescence`,Q.IRIDESCENCE_IOR=`iridescenceIOR`,Q.IRIDESCENCE_THICKNESS=`iridescenceThickness`,Q.IOR=`ior`,Q.TRANSMISSION=`transmission`,Q.THICKNESS=`thickness`,Q.ATTENUATION_DISTANCE=`attenuationDistance`,Q.ATTENUATION_COLOR=`attenuationColor`,Q.LINE_SCALE=`scale`,Q.LINE_DASH_SIZE=`dashSize`,Q.LINE_GAP_SIZE=`gapSize`,Q.LINE_WIDTH=`linewidth`,Q.LINE_DASH_OFFSET=`dashOffset`,Q.POINT_WIDTH=`pointWidth`,Q.DISPERSION=`dispersion`,Q.LIGHT_MAP=`light`,Q.AO_MAP=`ao`,Q.ALPHA_TEST,Q.COLOR,Q.SHININESS,Q.EMISSIVE,Q.OPACITY,Q.SPECULAR,Q.SPECULAR_INTENSITY,Q.SPECULAR_COLOR,Q.SPECULAR_STRENGTH,Q.REFLECTIVITY,Q.ROUGHNESS,Q.METALNESS,Q.CLEARCOAT,Q.CLEARCOAT_ROUGHNESS,Q.ROTATION,Q.SHEEN,Q.SHEEN_ROUGHNESS,Q.ANISOTROPY,Q.IRIDESCENCE,Q.IRIDESCENCE_IOR,Q.IRIDESCENCE_THICKNESS,Q.TRANSMISSION,Q.THICKNESS,Q.IOR,Q.ATTENUATION_DISTANCE,Q.ATTENUATION_COLOR,Q.LINE_SCALE,Q.LINE_DASH_SIZE,Q.LINE_GAP_SIZE,Q.LINE_WIDTH,Q.LINE_DASH_OFFSET,Q.POINT_WIDTH,Q.DISPERSION,Q.LIGHT_MAP,Q.AO_MAP;let Kl=Wo(new D).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))});var ql=class e extends V{static get type(){return`IndexNode`}constructor(e){super(`uint`),this.scope=e,this.isInstanceIndexNode=!0}generate(t){let n=this.getNodeType(t),r=this.scope,i;if(r===e.VERTEX)i=t.getVertexIndex();else if(r===e.INSTANCE)i=t.getInstanceIndex();else if(r===e.DRAW)i=t.getDrawIndex();else if(r===e.INVOCATION_LOCAL)i=t.getInvocationLocalIndex();else if(r===e.INVOCATION_SUBGROUP)i=t.getInvocationSubgroupIndex();else if(r===e.SUBGROUP)i=t.getSubgroupIndex();else throw Error(`THREE.IndexNode: Unknown scope: `+r);let a;return a=t.shaderStage===`vertex`||t.shaderStage===`compute`?i:Cc(this).build(t,n),a}};ql.VERTEX=`vertex`,ql.INSTANCE=`instance`,ql.SUBGROUP=`subgroup`,ql.INVOCATION_LOCAL=`invocationLocal`,ql.INVOCATION_SUBGROUP=`invocationSubgroup`,ql.DRAW=`draw`,ql.VERTEX,ql.INSTANCE,ql.SUBGROUP,ql.INVOCATION_SUBGROUP,ql.INVOCATION_LOCAL,ql.DRAW;var Jl=class extends V{static get type(){return`LoopNode`}constructor(e=[]){super(),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=`):a!==void 0&&i===void 0&&(i=`0`,c=`<`),c===void 0&&(c=Number(i)>Number(a)?`>=`:`<`));let u={start:i,end:a},d=u.start,f=u.end,p=``,m=``,h=``;l||=s===`int`||s===`uint`?c.includes(`<`)?`++`:`--`:c.includes(`<`)?`+= 1.`:`-= 1.`,p+=e.getVar(s,o)+` = `+d,m+=o+` `+c+` `+f,h+=o+` `+l;let g=`for ( ${p}; ${m}; ${h} )`;e.addFlowCode((t===0?` +`:``)+e.tab+g+` { + +`).addFlowTab()}let i=r.build(e,`void`),a=t.returnsNode?t.returnsNode.build(e):``;e.removeFlowTab().addFlowCode(` +`+e.tab+i);for(let t=0,n=this.params.length-1;tW(new Jl(vo(e,`int`))).append(),Xl,Zl;var Ql=class e extends V{static get type(){return`ScreenNode`}constructor(e){super(),this.scope=e,this.isViewportNode=!0}getNodeType(){return this.scope===e.VIEWPORT?`vec4`:`vec2`}getUpdateType(){let t=B.NONE;return(this.scope===e.SIZE||this.scope===e.VIEWPORT)&&(t=B.RENDER),this.updateType=t,t}update({renderer:t}){let n=t.getRenderTarget();this.scope===e.VIEWPORT?n===null?(t.getViewport(Zl),Zl.multiplyScalar(t.getPixelRatio())):Zl.copy(n.viewport):n===null?t.getDrawingBufferSize(Xl):(Xl.width=n.width,Xl.height=n.height)}setup(){let t=this.scope,n=null;return n=t===e.SIZE?Wo(Xl||=new D):t===e.VIEWPORT?Wo(Zl||=new k):J(tu.div(eu)),n}generate(t){if(this.scope===e.COORDINATE){let e=t.getFragCoord();if(t.isFlipY()){let n=t.getNodeProperties(eu).outputNode.build(t);e=`${t.getType(`vec2`)}( ${e}.x, ${n}.y - ${e}.y )`}return e}return super.generate(t)}};Ql.COORDINATE=`coordinate`,Ql.VIEWPORT=`viewport`,Ql.SIZE=`size`,Ql.UV=`uv`;let $l=yo(Ql,Ql.UV),eu=yo(Ql,Ql.SIZE),tu=yo(Ql,Ql.COORDINATE),nu=yo(Ql,Ql.VIEWPORT);nu.zw,nu.xy;let ru=new D;var iu=class extends el{static get type(){return`ViewportTextureNode`}constructor(e=$l,t=null,n=null){n===null&&(n=new bi,n.minFilter=l),super(n,e,t),this.generateMipmaps=!1,this.isOutputTextureNode=!0,this.updateBeforeType=B.FRAME}updateBefore(e){let t=e.renderer;t.getDrawingBufferSize(ru);let n=this.value;(n.image.width!==ru.width||n.image.height!==ru.height)&&(n.image.width=ru.width,n.image.height=ru.height,n.needsUpdate=!0);let r=n.generateMipmaps;n.generateMipmaps=this.generateMipmaps,t.copyFramebufferToTexture(n),n.generateMipmaps=r}clone(){let e=new this.constructor(this.uvNode,this.levelNode,this.value);return e.generateMipmaps=this.generateMipmaps,e}};let au=null,ou=G(class extends iu{static get type(){return`ViewportDepthTextureNode`}constructor(e=$l,t=null){au===null&&(au=new wr),super(e,t,au)}});var su=class e extends V{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=du().assign(r)):n===e.DEPTH?i=t.isPerspectiveCamera?lu(dl.z,nl,rl):cu(dl.z,nl,rl):n===e.LINEAR_DEPTH&&(i=r===null?cu(dl.z,nl,rl):t.isPerspectiveCamera?cu(uu(r,nl,rl),nl,rl):r),i}};su.DEPTH_BASE=`depthBase`,su.DEPTH=`depth`,su.LINEAR_DEPTH=`linearDepth`;let cu=(e,t,n)=>e.add(t).div(t.sub(n)),lu=(e,t,n)=>t.add(e).mul(n).div(n.sub(t).mul(e)),uu=(e,t,n)=>t.mul(n).div(n.sub(t).mul(e).sub(n)),du=G(su,su.DEPTH_BASE),fu=yo(su,su.DEPTH);ou(),fu.assign=e=>du(e);var pu=class e extends V{static get type(){return`ClippingNode`}constructor(t=e.DEFAULT){super(),this.scope=t}setup(t){super.setup(t);let n=t.clippingContext,{localClipIntersection:r,localClippingCount:i,globalClippingCount:a}=n,o=a+i,s=r?o-i:o;return this.scope===e.ALPHA_TO_COVERAGE?this.setupAlphaToCoverage(n.planes,o,s):this.setupDefault(n.planes,o,s)}setupAlphaToCoverage(e,t,n){return K(()=>{let r=Al(e),i=Ko(`float`,`distanceToPlane`),a=Ko(`float`,`distanceToGradient`),o=Ko(`float`,`clipOpacity`);o.assign(1);let s;if(Yl(n,({i:e})=>{s=r.element(e),i.assign(dl.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),o.mulAssign(_c(a.negate(),a,i)),o.equal(0).discard()}),n{s=r.element(t),i.assign(dl.dot(s.xyz).negate().add(s.w)),a.assign(i.fwidth().div(2)),e.mulAssign(_c(a.negate(),a,i).oneMinus())}),o.mulAssign(e.oneMinus())}qo.a.mulAssign(o),qo.a.equal(0).discard()})()}setupDefault(e,t,n){return K(()=>{let r=Al(e),i;if(Yl(n,({i:e})=>{i=r.element(e),dl.dot(i.xyz).greaterThan(i.w).discard()}),n{i=r.element(t),e.assign(dl.dot(i.xyz).greaterThan(i.w).and(e))}),e.discard()}})()}};pu.ALPHA_TO_COVERAGE=`alphaToCoverage`,pu.DEFAULT=`default`,1/Math.PI,Y(.04),q(1);let mu=K(([e,t])=>{let n=e.toVar();n.assign(Zo(2,n).sub(1));let r=Y(n,1).toVar();return bo(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`}]});K(({texture:e,uv:t})=>{let n=1e-4,r=Y().toVar();return bo(t.x.lessThan(n),()=>{r.assign(Y(1,0,0))}).ElseIf(t.y.lessThan(n),()=>{r.assign(Y(0,1,0))}).ElseIf(t.z.lessThan(n),()=>{r.assign(Y(0,0,1))}).ElseIf(t.x.greaterThan(1-n),()=>{r.assign(Y(-1,0,0))}).ElseIf(t.y.greaterThan(1-n),()=>{r.assign(Y(0,-1,0))}).ElseIf(t.z.greaterThan(1-n),()=>{r.assign(Y(0,0,-1))}).Else(()=>{let n=.01,i=e.uv(t.add(Y(-n,0,0))).r.sub(e.uv(t.add(Y(n,0,0))).r),a=e.uv(t.add(Y(0,-n,0))).r.sub(e.uv(t.add(Y(0,n,0))).r),o=e.uv(t.add(Y(0,0,-n))).r.sub(e.uv(t.add(Y(0,0,n))).r);r.assign(Y(i,a,o))}),r.normalize()});let hu=(1+Math.sqrt(5))/2,gu=1/hu;-hu,-gu,-gu;let _u=mu(Zc(),Xc(`faceIndex`)).normalize();Y(_u.x,_u.y.negate(),_u.z);var vu=class{constructor(e,t,n=null,r=``,i=!1){this.type=e,this.name=t,this.count=n,this.qualifier=r,this.isConst=i}};vu.isNodeFunctionInput=!0;var yu=class e extends Uo{static get type(){return`TimerNode`}constructor(t=e.LOCAL,n=1,r=0){super(r),this.scope=t,this.scale=n,this.updateType=B.FRAME}update(t){let n=this.scope,r=this.scale;n===e.LOCAL?this.value+=t.deltaTime*r:n===e.DELTA?this.value=t.deltaTime*r:n===e.FRAME?this.value=t.frameId:this.value=t.time*r}serialize(e){super.serialize(e),e.scope=this.scope,e.scale=this.scale}deserialize(e){super.deserialize(e),this.scope=e.scope,this.scale=e.scale}};yu.LOCAL=`local`,yu.GLOBAL=`global`,yu.DELTA=`delta`,yu.FRAME=`frame`;let bu=(e,t=0)=>W(new yu(yu.LOCAL,e,t));var xu=class e extends V{static get type(){return`OscNode`}constructor(t=e.SINE,n=bu()){super(),this.method=t,this.timeNode=n}getNodeType(e){return this.timeNode.getNodeType(e)}setup(){let t=this.method,n=W(this.timeNode),r=null;return t===e.SINE?r=n.add(.75).mul(Math.PI*2).sin().mul(.5).add(.5):t===e.SQUARE?r=n.fract().round():t===e.TRIANGLE?r=n.add(.5).fract().mul(2).sub(1).abs():t===e.SAWTOOTH&&(r=n.fract()),r}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}};xu.SINE=`sine`,xu.SQUARE=`square`,xu.TRIANGLE=`triangle`,xu.SAWTOOTH=`sawtooth`,xu.SINE,xu.SQUARE,xu.TRIANGLE,xu.SAWTOOTH,new gr,new A,new A,new A,new j,new A(0,0,-1),new k,new A,new A,new k,new D,new at,$l.flipX();var Su=class e extends V{static get type(){return`SceneNode`}constructor(t=e.BACKGROUND_BLURRINESS,n=null){super(),this.scope=t,this.scene=n}setup(t){let n=this.scope,r=this.scene===null?t.scene:this.scene,i;return n===e.BACKGROUND_BLURRINESS?i=Nl(`backgroundBlurriness`,`float`,r):n===e.BACKGROUND_INTENSITY?i=Nl(`backgroundIntensity`,`float`,r):console.error(`THREE.SceneNode: Unknown scope:`,n),i}};Su.BACKGROUND_BLURRINESS=`backgroundBlurriness`,Su.BACKGROUND_INTENSITY=`backgroundIntensity`,Su.BACKGROUND_BLURRINESS,Su.BACKGROUND_INTENSITY;let Cu=new D;var wu=class extends el{static get type(){return`PassTextureNode`}constructor(e,t){super(t),this.passNode=e,this.setUpdateMatrix(!1)}setup(e){return e.object.isQuadMesh&&this.passNode.build(e),super.setup(e)}clone(){return new this.constructor(this.passNode,this.value)}},Tu=class extends wu{static get type(){return`PassMultipleTextureNode`}constructor(e,t,n=!1){super(e,null),this.textureName=t,this.previousTexture=n}updateTexture(){this.value=this.previousTexture?this.passNode.getPreviousTexture(this.textureName):this.passNode.getTexture(this.textureName)}setup(e){return this.updateTexture(),super.setup(e)}clone(){return new this.constructor(this.passNode,this.textureName,this.previousTexture)}},Eu=class e extends Fa{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 wr;i.isRenderTargetTexture=!0,i.name=`depth`;let a=new at(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:f,...r});a.texture.name=`output`,a.depthTexture=i,this.renderTarget=a,this.updateBeforeType=B.FRAME,this._textures={output:a.texture,depth:i},this._textureNodes={},this._linearDepthNodes={},this._viewZNodes={},this._previousTextures={},this._previousTextureNodes={},this._cameraNear=Wo(0),this._cameraFar=Wo(0),this._mrt=null,this.isPassNode=!0}setMRT(e){return this._mrt=e,this}getMRT(){return this._mrt}isGlobal(){return!0}getTexture(e){let t=this._textures[e];return t===void 0&&(t=this.renderTarget.texture.clone(),t.isRenderTargetTexture=!0,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(),t.isRenderTargetTexture=!0,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&&(this._textureNodes[e]=t=W(new Tu(this,e)),this._textureNodes[e].updateTexture()),t}getPreviousTextureNode(e=`output`){let t=this._previousTextureNodes[e];return t===void 0&&(this._textureNodes[e]===void 0&&this.getTextureNode(e),this._previousTextureNodes[e]=t=W(new Tu(this,e,!0)),this._previousTextureNodes[e].updateTexture()),t}getViewZNode(e=`depth`){let t=this._viewZNodes[e];if(t===void 0){let n=this._cameraNear,r=this._cameraFar;this._viewZNodes[e]=t=uu(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=cu(i,n,r)}return t}setup({renderer:t}){return this.renderTarget.samples=this.options.samples===void 0?t.samples:this.options.samples,t.backend.isWebGLBackend===!0&&(this.renderTarget.samples=0),this.renderTarget.depthTexture.isMultisampleRenderTargetTexture=this.renderTarget.samples>1,this.scope===e.COLOR?this.getTextureNode():this.getLinearDepthNode()}updateBefore(e){let{renderer:t}=e,{scene:n,camera:r}=this;this._pixelRatio=t.getPixelRatio();let i=t.getSize(Cu);this.setSize(i.width,i.height);let a=t.getRenderTarget(),o=t.getMRT();this._cameraNear.value=r.near,this._cameraFar.value=r.far;for(let e in this._previousTextures)this.toggleTexture(e);t.setRenderTarget(this.renderTarget),t.setMRT(this._mrt),t.render(n,r),t.setRenderTarget(a),t.setMRT(o)}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget.setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget.dispose()}};Eu.COLOR=`color`,Eu.DEPTH=`depth`,new class extends Map{get(e,t=null,...n){if(this.has(e))return super.get(e);if(t!==null){let r=t(...n);return this.set(e,r),r}}},K(({depthTexture:e,shadowCoord:t})=>tl(e,t.xy).compare(t.z)),K(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>tl(e,t).compare(n),i=Nl(`mapSize`,`vec2`,n).setGroup(Vo),a=Nl(`radius`,`float`,n).setGroup(Vo),o=J(1).div(i),s=o.x.negate().mul(a),c=o.y.negate().mul(a),l=o.x.mul(a),u=o.y.mul(a),d=s.div(2),f=c.div(2),p=l.div(2),m=u.div(2);return Yo(r(t.xy.add(J(s,c)),t.z),r(t.xy.add(J(0,c)),t.z),r(t.xy.add(J(l,c)),t.z),r(t.xy.add(J(d,f)),t.z),r(t.xy.add(J(0,f)),t.z),r(t.xy.add(J(p,f)),t.z),r(t.xy.add(J(s,0)),t.z),r(t.xy.add(J(d,0)),t.z),r(t.xy,t.z),r(t.xy.add(J(p,0)),t.z),r(t.xy.add(J(l,0)),t.z),r(t.xy.add(J(d,m)),t.z),r(t.xy.add(J(0,m)),t.z),r(t.xy.add(J(p,m)),t.z),r(t.xy.add(J(s,u)),t.z),r(t.xy.add(J(0,u)),t.z),r(t.xy.add(J(l,u)),t.z)).mul(1/17)}),K(({depthTexture:e,shadowCoord:t,shadow:n})=>{let r=(t,n)=>tl(e,t).compare(n),i=Nl(`mapSize`,`vec2`,n).setGroup(Vo),a=J(1).div(i),o=a.x,s=a.y,c=t.xy,l=js(c.mul(i).add(.5));return c.subAssign(l.mul(a)),Yo(r(c,t.z),r(c.add(J(o,0)),t.z),r(c.add(J(0,s)),t.z),r(c.add(a),t.z),pc(r(c.add(J(o.negate(),0)),t.z),r(c.add(J(o.mul(2),0)),t.z),l.x),pc(r(c.add(J(o.negate(),s)),t.z),r(c.add(J(o.mul(2),s)),t.z),l.x),pc(r(c.add(J(0,s.negate())),t.z),r(c.add(J(0,s.mul(2))),t.z),l.y),pc(r(c.add(J(o,s.negate())),t.z),r(c.add(J(o,s.mul(2))),t.z),l.y),pc(pc(r(c.add(J(o.negate(),s.negate())),t.z),r(c.add(J(o.mul(2),s.negate())),t.z),l.x),pc(r(c.add(J(o.negate(),s.mul(2))),t.z),r(c.add(J(o.mul(2),s.mul(2))),t.z),l.x),l.y)).mul(1/9)}),K(({depthTexture:e,shadowCoord:t})=>{let n=q(1).toVar(),r=tl(e).uv(t.xy).rg,i=ec(t.z,r.x);return bo(i.notEqual(q(1)),()=>{let e=t.z.sub(r.x),a=Qs(0,r.y.mul(r.y)),o=a.div(a.add(e.mul(e)));o=mc(Xo(o,.3).div(.6499999999999999)),n.assign(mc(Qs(i,o)))}),n}),K(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=q(0).toVar(),a=q(0).toVar(),o=e.lessThanEqual(q(1)).select(q(0),q(2).div(e.sub(1))),s=e.lessThanEqual(q(1)).select(q(0),q(-1));return Yl({start:Co(0),end:Co(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(q(e).mul(o)),l=r.uv(Yo(tu.xy,J(0,c).mul(t)).div(n)).x;i.addAssign(l),a.addAssign(l.mul(l))}),i.divAssign(e),a.divAssign(e),J(i,Es(a.sub(i.mul(i))))}),K(({samples:e,radius:t,size:n,shadowPass:r})=>{let i=q(0).toVar(),a=q(0).toVar(),o=e.lessThanEqual(q(1)).select(q(0),q(2).div(e.sub(1))),s=e.lessThanEqual(q(1)).select(q(0),q(-1));return Yl({start:Co(0),end:Co(e),type:`int`,condition:`<`},({i:e})=>{let c=s.add(q(e).mul(o)),l=r.uv(Yo(tu.xy,J(c,0).mul(t)).div(n));i.addAssign(l.x),a.addAssign(Yo(l.y.mul(l.y),l.x.mul(l.x)))}),i.divAssign(e),a.divAssign(e),J(i,Es(a.sub(i.mul(i))))}),Y(1.6605,-.1246,-.0182),Y(-.5876,1.1329,-.1006),Y(-.0728,-.0083,1.1187),Y(.6274,.0691,.0164),Y(.3293,.9195,.088),Y(.0433,.0113,.8956),G(class extends V{constructor(e){super(),this.scope=e}generate(e){let{scope:t}=this,{renderer:n}=e;n.backend.isWebGLBackend===!0?e.addFlowCode(`\t// ${t}Barrier \n`):e.addLineFlowCode(`${t}Barrier()`,this)}});var Du=class extends Fa{static get type(){return`AtomicFunctionNode`}constructor(e,t,n,r=null){super(`uint`),this.method=e,this.pointerNode=t,this.valueNode=n,this.storeNode=r}getInputType(e){return this.pointerNode.getNodeType(e)}getNodeType(e){return this.getInputType(e)}generate(e){let t=this.method,n=this.getNodeType(e),r=this.getInputType(e),i=this.pointerNode,a=this.valueNode,o=[];o.push(`&${i.build(e,r)}`),o.push(a.build(e,r));let s=`${e.getMethod(t,n)}( ${o.join(`, `)} )`;if(this.storeNode!==null){let t=this.storeNode.build(e,r);e.addLineFlowCode(`${t} = ${s}`,this)}else e.addLineFlowCode(s,this)}};Du.ATOMIC_LOAD=`atomicLoad`,Du.ATOMIC_STORE=`atomicStore`,Du.ATOMIC_ADD=`atomicAdd`,Du.ATOMIC_SUB=`atomicSub`,Du.ATOMIC_MAX=`atomicMax`,Du.ATOMIC_MIN=`atomicMin`,Du.ATOMIC_AND=`atomicAnd`,Du.ATOMIC_OR=`atomicOr`,Du.ATOMIC_XOR=`atomicXor`,G(Du);var Ou=class{constructor(e,t,n=``,r=``){this.type=e,this.inputs=t,this.name=n,this.precision=r}getCode(){console.warn(`Abstract function.`)}};if(Ou.isNodeFunction=!0,typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`register`,{detail:{revision:n}})),typeof window<`u`){try{t&&(window.__THREE__IMPORTS__||(window.__THREE__IMPORTS__=[]),window.__THREE__IMPORTS__.push({url:self.location.href,revision:n}))}catch{}window.__THREE__?(console.warn(`WARNING: Multiple instances of Three.js being imported. Existing: `+window.__THREE__+`, new: 169.19`),console.warn(window.__THREE__IMPORTS__)):window.__THREE__=n}let ku=new WeakMap;var Au=class extends Ji{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new Zi(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,C,n).catch(n)}decodeDracoFile(e,t,n,r,i=w,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ku.has(e)){let t=ku.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ku.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new Hn;e.index&&t.setIndex(new Mn(e.index.array,1));for(let n=0;n{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=ju.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=o.num_components(),c=n.num_points()*s,l=c*i.BYTES_PER_ELEMENT,u=a(e,i),d=e._malloc(l);t.GetAttributeDataArrayForAllPoints(n,o,u,l,d);let f=new i(e.HEAPF32.buffer,d,c).slice();return e._free(d),{name:r,array:f,itemSize:s}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}function Mu(e,t){if(t===0)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===2||t===1){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e=2.0 are supported.`));return}this.json=i,this.jsonErrorData=a;let l=new Dd(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&s[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}l.setExtensions(o),l.setPlugins(s),l.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function Pu(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let $={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`};var Fu=class{constructor(e){this.parser=e,this.name=$.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},Yu=class{constructor(e){this.parser=e,this.name=$.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: WebP required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Xu=class{constructor(e){this.parser=e,this.name=$.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return this.detectSupport().then(function(i){if(i)return n.loadTextureImage(e,a.source,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw Error(`THREE.GLTFLoader: AVIF required by asset but unsupported.`);return n.loadTexture(e)})}detectSupport(){return this.isSupported||=new Promise(function(e){let t=new Image;t.src=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=`,t.onload=t.onerror=function(){e(t.height===1)}}),this.isSupported}},Zu=class{constructor(e){this.name=$.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Qu=class{constructor(e){this.name=$.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==cd.TRIANGLES&&e.mode!==cd.TRIANGLE_STRIP&&e.mode!==cd.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new j,n=new A,a=new st,s=new A(1,1,1),c=new Qr(e.geometry,e.material,r);for(let e=0;e0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:`image/png`}let Ed=new j;var Dd=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Pu,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new $i(this.options.manager):this.textureLoader=new ha(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Zi(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return vd(i,a,r),yd(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=ud[n.magFilter]||1006,t.minFilter=ud[n.minFilter]||1008,t.wrapS=dd[n.wrapS]||1e3,t.wrapT=dd[n.wrapT]||1e3,t.anisotropy=4,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new it(e);t.needsUpdate=!0,n(t)}),t.load(ma.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),yd(e,a),e.userData.mimeType=a.mimeType||Td(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[$.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[$.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[$.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new pi,kn.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new $r,kn.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return wi}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},c=[];if(s[$.KHR_MATERIALS_UNLIT]){let e=r[$.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),c.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new N(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],w),o.opacity=e[3]}n.baseColorTexture!==void 0&&c.push(t.assignTexture(o,`map`,n.baseColorTexture,C)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),c.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=2);let l=i.alphaMode||gd.OPAQUE;if(l===gd.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,l===gd.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==An&&(c.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new D(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==An&&(c.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==An){let e=i.emissiveFactor;o.emissive=new N().setRGB(e[0],e[1],e[2],w)}return i.emissiveTexture!==void 0&&a!==An&&c.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,C)),Promise.all(c).then(function(){let n=new a(o);return i.name&&(n.name=i.name),yd(n,i),t.associations.set(n,{materials:e}),i.extensions&&vd(r,n,i),n})}createUniqueName(e){let t=z.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[$.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return kd(n,e,t)})}let a=[];for(let n=0,o=e.length;n0&&xd(d,i),d.name=t.createUniqueName(i.name||`mesh_`+e),yd(d,i),u.extensions&&vd(r,d,u),t.assignFinalMaterial(d),c.push(d)}for(let n=0,r=c.length;n1?new Tr:t.length===1?t[0]:new M,o!==t[0])for(let e=0,n=t.length;e{let t=new Map;for(let[e,n]of r.associations)(e instanceof kn||e instanceof it)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];md[i.path]===md.weights?e.traverse(function(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}):s.push(o);let c;switch(md[i.path]){case md.weights:c=Ri;break;case md.rotation:c=Bi;break;case md.position:case md.scale:c=Hi;break;default:switch(n.itemSize){case 1:c=Ri;break;default:c=Hi;break}break}let l=r.interpolation===void 0?ie:hd[r.interpolation],u=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}};let jd=1000066e3;var Md=class{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let n=this._offset,r=0;for(;this._dataView.getUint8(this._offset)!==t&&re.arrayBuffer()).then(e=>WebAssembly.instantiate(e,zd)).then(this._init):WebAssembly.instantiate(Buffer.from(Vd,`base64`),zd).then(this._init),Id)}_init(e){Ld=e.instance,zd.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!Ld)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=Ld.exports.malloc(n);Rd.set(e,r),t||=Number(Ld.exports.ZSTD_findDecompressedSize(r,n));let i=Ld.exports.malloc(t),a=Ld.exports.ZSTD_decompress(i,t,r,n),o=Rd.slice(i,i+a);return Ld.exports.free(r),Ld.exports.free(i),o}};let Vd=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`,Hd=new WeakMap,Ud=0,Wd;var Gd=class e extends Ji{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Ad,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync(`texture-compression-etc1`),etc2Supported:await e.hasFeatureAsync(`texture-compression-etc2`),dxtSupported:await e.hasFeatureAsync(`texture-compression-bc`),bptcSupported:await e.hasFeatureAsync(`texture-compression-bptc`),pvrtcSupported:await e.hasFeatureAsync(`texture-compression-pvrtc`)},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:e.hasFeature(`texture-compression-etc1`),etc2Supported:e.hasFeature(`texture-compression-etc2`),dxtSupported:e.hasFeature(`texture-compression-bc`),bptcSupported:e.hasFeature(`texture-compression-bptc`),pvrtcSupported:e.hasFeature(`texture-compression-pvrtc`)}:this.workerConfig={astcSupported:e.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:e.extensions.has(`WEBGL_compressed_texture_astc`)&&e.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:e.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:e.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:e.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:e.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:e.extensions.has(`WEBGL_compressed_texture_pvrtc`)||e.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},this}init(){if(!this.transcoderPending){let t=new Zi(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new Zi(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(` +`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),Ud>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),Ud++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new Zi(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Hd.has(e))return Hd.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:u,dfdFlags:d}}=e;if(n===`error`)return Promise.reject(r);let f;if(t.faceCount===6)f=new Ci(i,s,u);else{let e=i[0].mipmaps;f=t.layerCount>1?new Si(e,a,o,t.layerCount,s,u):new xi(e,a,o,s,u)}return f.minFilter=i[0].mipmaps.length===1?c:l,f.magFilter=c,f.generateMipmaps=!1,f.needsUpdate=!0,f.colorSpace=Xd(t),f.premultiplyAlpha=!!(d&1),f}async _createTexture(e,t={}){let n=Fd(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return Yd(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return Hd.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Ud--}};Gd.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},Gd.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},Gd.EngineFormat={RGBAFormat:m,RGBA_ASTC_4x4_Format:ee,RGB_BPTC_UNSIGNED_Format:36495,RGBA_BPTC_Format:ne,RGBA_ETC2_EAC_Format:S,RGBA_PVRTC_4BPPV1_Format:35842,RGBA_S3TC_DXT5_Format:b,RGB_ETC1_Format:36196,RGB_ETC2_Format:x,RGB_PVRTC_4BPPV1_Format:35840,RGBA_S3TC_DXT1_Format:v},Gd.EngineType={UnsignedByteType:u,HalfFloatType:f,FloatType:d},Gd.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o{let t=new Bd;await t.init(),e(t)}),n=await Wd);let r=[];for(let i=0;i>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,c=e.levels[i],l;if(e.supercompressionScheme===0)l=c.levelData;else if(e.supercompressionScheme===2)l=n.decode(c.levelData,c.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let u;u=Jd[t]===1015?new Float32Array(l.buffer,l.byteOffset,l.byteLength/Float32Array.BYTES_PER_ELEMENT):Jd[t]===1016?new Uint16Array(l.buffer,l.byteOffset,l.byteLength/Uint16Array.BYTES_PER_ELEMENT):Jd[t]===35902||Jd[t]===35899?new Uint32Array(l.buffer,l.byteOffset,l.byteLength/Uint32Array.BYTES_PER_ELEMENT):l,r.push({data:u,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(Kd.has(qd[t]))a=e.pixelDepth===0?new Br(r[0].data,e.pixelWidth,e.pixelHeight):new ot(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?s:o,a.magFilter=o,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new xi(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?l:c,a.magFilter=c}return a.mipmaps=r,a.type=Jd[t],a.format=qd[t],a.colorSpace=Xd(e),a.needsUpdate=!0,Promise.resolve(a)}function Xd(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?C:w:t.colorPrimaries===10?t.transferFunction===2?`display-p3`:`display-p3-linear`:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),``)}self.onmessage=e=>{let t=e.data;switch(t.type){case`init`:break;case`load`:tf(t);break;default:console.error(`[Worker] Unknown message type:`,t.type);break}},self.onerror=e=>{console.error(`[Worker] Error:`,e)};function Zd(e){self.postMessage(e)}let Qd=null,$d=null,ef=null;async function tf(t){Qd??=new Nu,Qd.setMeshoptDecoder(e),$d??=new Au,$d.setDecoderConfig({type:`js`}),$d.setDecoderPath(t.dracoDecoderPath),Qd.setDRACOLoader($d),ef??=new Gd,ef.workerConfig=t.ktx2LoaderConfig,ef.setTranscoderPath(t.ktx2TranscoderPath),Qd.setKTX2Loader(ef),Qd.load(t.url,e=>{let n={type:`loaded-gltf`,result:{url:t.url,geometries:[],textures:[]}};nf(e,n),Zd(n)})}function nf(e,t){let{result:n}=t;for(let t of e.parser.associations.keys()){let r=e.parser.associations.get(t);if(r)if(`isTexture`in t&&t.isTexture){let i=t,a=e.parser.json.textures[r.textures??-1];n.textures.push({texture:i,textureIndex:r.textures??-1,extensions:a?.extensions??{}})}else if(`isMesh`in t&&t.isMesh){let i=t,a=r.meshes??-1,o=r.primitives??-1,s=e.parser.json.meshes[a];n.geometries.push({geometry:i.geometry,meshIndex:a,primitiveIndex:o,extensions:s?.extensions??{}})}else `isMaterial`in t&&t.isMaterial}}})(); \ No newline at end of file diff --git a/Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz b/Needle/SampleScene/dist/assets/gltf-progressive.worker-DbINgLUC.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a235d334843a063a5139a6b6a43c0257557f1ba GIT binary patch literal 140931 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